{"version":3,"file":"app.198a0bac579b0b826e29.js","mappings":"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,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,GAAIf,IAAK,IAC3B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,GAAIf,IAAK,IAC3B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,GAAIf,IAAK,IAC3B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,GAAIf,IAAK,IAC3B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,IAC1B,CAAC8jc,KAAM,KAAM/ic,IAAK,EAAGf,IAAK,GAC1B,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AC,EAQAC,EAOAC,EAWAC,EAMAC,EAeAC,GA/GZ,SAAYR,GACR,kBACA,kBACA,2BACH,CAJD,CAAYA,IAAAA,EAAM,KAMlB,SAAYC,GACX,qDACG,oEACA,+DACA,sEACA,mEACA,wEACA,oEACA,0DACA,iEACA,8DACA,+CACA,4DACA,sEACA,mDACA,qCACA,qCACA,2CACA,+CACA,mCACA,mDACA,iCACA,4BACA,kCACA,yCACA,0CACA,4CACA,wCACA,gDACA,0CACA,sDACA,6CACA,uCACA,gCACA,yBACA,+BACA,kCACA,6BACA,yCACA,gDACA,gDACA,gFACA,+DACA,kEACH,CA5CD,CAAYA,IAAAA,EAAgB,KA8C5B,SAAYC,GACR,kBACA,cACA,cACA,gBACA,kBACA,kBACA,kBACA,oBACA,iBACH,CAVD,CAAYA,IAAAA,EAAY,KAYxB,SAAYC,GACR,qCACA,kCACA,0BACA,gCACA,2CACH,CAND,CAAYA,IAAAA,EAAiB,KAQ7B,SAAYC,GACR,mCACA,uCACA,mCACA,+BACH,CALD,CAAYA,IAAAA,EAA2B,KAOvC,SAAYC,GACR,sDACA,uCACA,8CACA,wDACA,qCACA,6EACA,iFACA,qDACH,CATD,CAAYA,IAAAA,EAAiB,KAW7B,SAAYC,GACR,uEACA,uDACA,0DACH,CAJD,CAAYA,IAAAA,EAAoB,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,CAAC9mR,OAAQ,UAAWI,YAAa,GAChD,iBAAkB,CAACjiO,EAAG,+bC1UnB,MAAM4of,EAET,WAAAz4e,CAAY5Y,GACRd,OAAOyJ,OAAO5I,KAAMC,EACxB,EAGA,GADC,EAAAg2D,sCAID,GADC,EAAAA,wCAID,IADC,IAAAnW,eAAc,oCAIf,G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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 'ace-builds/src-noconflict/mode-json';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Guid } from '../../Common/Guid';\r\nimport {Event} from 'Core/Common/Event'\r\n\r\nexport class SignalRNotificationManager extends Event {\r\n private _signalRHub: HubConnection;\r\n\r\n private static instance: SignalRNotificationManager;\r\n private static allowInstantiation: boolean;\r\n private _debugEditor: any;\r\n private _scriptDebugEditor: any;\r\n public ImageCache: any = {};\r\n\r\n constructor() {\r\n super();\r\n if (!SignalRNotificationManager.allowInstantiation) {\r\n throw new Error('Use SignalRNotificationManager.Instance instead');\r\n }\r\n this.Init();\r\n }\r\n\r\n public SetScriptDebugEditor(debugEditor) {\r\n this._scriptDebugEditor = debugEditor;\r\n if (this._scriptDebugEditor) {\r\n this._scriptDebugEditor.session.setMode('ace/mode/json');\r\n this._scriptDebugEditor.session.setUseWorker(false);\r\n }\r\n }\r\n\r\n public SetDebugEditor(debugEditor) {\r\n this._debugEditor = debugEditor;\r\n if (this._debugEditor) {\r\n this._debugEditor.session.setMode('ace/mode/json');\r\n this._debugEditor.session.setUseWorker(false);\r\n }\r\n }\r\n\r\n private Init() {\r\n this.AddEvent('PASTE_IMAGE');\r\n this._signalRHub = new HubConnectionBuilder()\r\n .withUrl('/api/signalRHub', {accessTokenFactory: () => CookieManager.GetAuthToken(), skipNegotiation: true, transport: HttpTransportType.WebSockets})\r\n .withAutomaticReconnect()\r\n .build();\r\n\r\n this._signalRHub.on('ShowDebugLog', (message) => {\r\n if (this._debugEditor) {\r\n this._debugEditor.session.insert({\r\n row: this._debugEditor.session.getLength(),\r\n column: 0\r\n }, \"\\n\" + message);\r\n\r\n this._debugEditor.scrollToLine(this._debugEditor.session.getLength(), true, true, function () {\r\n });\r\n this._debugEditor.gotoLine(this._debugEditor.session.getLength(), 0, true);\r\n }\r\n });\r\n\r\n this._signalRHub.on('ConsoleLog', (message) => {\r\n if (this._scriptDebugEditor) {\r\n this._scriptDebugEditor.session.insert({\r\n row: this._scriptDebugEditor.session.getLength(),\r\n column: 0\r\n }, \"\\n\" + message);\r\n\r\n this._scriptDebugEditor.scrollToLine(this._scriptDebugEditor.session.getLength(), true, true, function () {});\r\n this._scriptDebugEditor.gotoLine(this._scriptDebugEditor.session.getLength(), 0, true);\r\n }\r\n });\r\n\r\n this._signalRHub.on('ConsoleImage', (title, image) => this.Trigger('PASTE_IMAGE', { title: title, image: image }));\r\n\r\n this._signalRHub.on('ShowProgress', message => {\r\n $(\"#dw-progress\").html(`

    ${message}

    `);\r\n });\r\n\r\n this._signalRHub.on('ShowNotification', (message, notificationType: NotificationTypes) => {\r\n if (notificationType === NotificationTypes.Warning) {\r\n new Notifier(null).Warning(message);\r\n } else if (notificationType === NotificationTypes.Failed) {\r\n new Notifier(null).Failed(message);\r\n } else {\r\n new Notifier(null).Success(message);\r\n }\r\n });\r\n\r\n this._signalRHub.on('EvaluateFunction', (code, params, objectId) => {\r\n if (objectId) {\r\n PubSub.publishSync(PUB_SUB_EVENTS.EXECUTE_SCRIPT, { Code: code, Params: params, ObjectId: objectId });\r\n return;\r\n }\r\n this.EvalFunction(code, params);\r\n });\r\n\r\n this._signalRHub.on('ShowMessage', message => {\r\n new Notifier(null).Show({ Message: message, Type: new MessageTypes().Success, ZIndex: 1000000 });\r\n });\r\n }\r\n\r\n private SkipRows(skipValue: number){\r\n for(var indx = 0; indx { await FunctionBuilder.Execute(code, param) })();\r\n\t}\r\n\r\n static get Instance(): SignalRNotificationManager {\r\n if (SignalRNotificationManager.instance == null) {\r\n SignalRNotificationManager.allowInstantiation = true;\r\n SignalRNotificationManager.instance = new SignalRNotificationManager();\r\n SignalRNotificationManager.allowInstantiation = false;\r\n }\r\n\r\n return SignalRNotificationManager.instance;\r\n }\r\n\r\n SetToken() {\r\n const token = CookieManager.GetAuthToken();\r\n $.ajaxSetup({headers: {\"Authorization\": `Bearer ${token}`}});\r\n }\r\n\r\n Start(): P.Promise {\r\n let deferredResult = P.defer();\r\n this.Stop().finally(()=>{\r\n BlockUI.Block();\r\n\r\n Promise\r\n .all([\r\n this._signalRHub.start()\r\n ])\r\n .then(() => {\r\n BlockUI.Unblock();\r\n deferredResult.resolve(null);\r\n });\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n Stop() {\r\n return this._signalRHub.stop();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport DropdownTemplate from 'Core/Components/TranslationFieldEditor/TranslationEditorDropdownTemplate.html';\r\n\r\nimport { TranslationManager } from 'Core/Components/Translation/TranslationManager';\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\nimport { TranslationItem } from \"Core/Components/TranslationFieldEditor/TranslationItem\";\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport {MobileChecker} from \"../../Common/MobileChecker\";\r\n\r\nexport class TranslationFieldEditor extends Event {\r\n\tprivate _translationItems: KnockoutObservableArray;\r\n\tprivate _activeTranslationItem: KnockoutObservable;\r\n\tprivate _translationMaxSize: number;\r\n\r\n\tprivate _opened: KnockoutObservable;\r\n\tprivate _subscription: any;\r\n\tprivate _zIndex: number;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._zIndex = ZIndexManager.Instance.NextValue;\r\n\r\n\t\tthis._translationItems = ko.observableArray([]);\r\n\r\n\t\tthis._activeTranslationItem = ko.observable(null);\r\n\r\n\t\tthis._opened = ko.observable(false);\r\n\r\n\t\tthis._translationMaxSize = 0;\r\n\t}\r\n\r\n\tget TranslationItemsList() {\r\n\t\treturn this._translationItems();\r\n\t}\r\n\r\n\tget ActiveTranslation() {\r\n\t\treturn this._activeTranslationItem();\r\n\t}\r\n\r\n\tGetTranslationMaxSize(): number {\r\n\t\treturn this._translationMaxSize > 0 ? this._translationMaxSize : -1;\r\n\t}\r\n\r\n\tLoadTranslationItems() {\r\n\t\tconst translationItems = TranslationManager.Instance.Languages.map(language => new TranslationItem(language));\r\n\t\ttranslationItems.forEach(item => item.On(\"TranslationChanged\", this, eventArgs => this.Trigger(\"TranslationChanged\", eventArgs.data)));\r\n\t\tthis._translationItems(translationItems);\r\n\t\tthis._activeTranslationItem(translationItems[0]);\r\n\t\tthis.SubscribeOnValueChanges(translationItems[0].Language.Id);\r\n\t}\r\n\r\n\tSubscribeOnValueChanges(id: number) {\r\n if (this._subscription) {\r\n \tthis._subscription.dispose();\r\n\t\t}\r\n\t\tif (id === this._activeTranslationItem().Language.Id) {\r\n this._subscription = this._activeTranslationItem().Value.subscribe((newValue) => {\r\n this.Trigger('TranslationSelected', {\r\n LanguageId: this._activeTranslationItem().Language.Id,\r\n Value: newValue\r\n });\r\n })\r\n\t\t}\r\n\t}\r\n\r\n\tSetTranslations(translations: ITranslationValue[], defaultValue: string) {\r\n\t\tif (translations) {\r\n\t\t\ttranslations.forEach(translation => this.SetTranslation(translation));\r\n\t\t}\r\n\r\n\t\tthis.SetTranslation({\r\n\t\t\tLanguageId: TranslationManager.Instance.GetDefaultLanguage().Id,\r\n\t\t\tValue: defaultValue\r\n\t\t});\r\n\t}\r\n\r\n\tSetTranslationMaxSize(translationMaxSize: number) {\r\n\t\tthis._translationMaxSize = translationMaxSize;\r\n\t}\r\n\r\n\tSetActiveTranslation(languageId: number) {\r\n\t\tconst translationItem = this.GetTranslationById(languageId);\r\n\t\tthis._activeTranslationItem(translationItem);\r\n\t\tthis.SubscribeOnValueChanges(translationItem.Language.Id);\r\n\t}\r\n\r\n\tSetValue(value: string) {\r\n\t\tif (this._activeTranslationItem()) {\r\n\t\t\tthis._activeTranslationItem().Value(value);\r\n\t\t}\r\n\t}\r\n\r\n\tGetTranslations(withDefault: boolean = true): ITranslationValue[] {\r\n\t\tconst defaultLanguage = TranslationManager.Instance.GetDefaultLanguage();\r\n\t\tlet translations = withDefault ? this._translationItems() : this._translationItems().filter(item => item.Language.Id !== defaultLanguage.Id);\r\n\r\n\t\treturn translations.map(translation => {\r\n\t\t\treturn {\r\n\t\t\t\tLanguageId: translation.Language.Id,\r\n\t\t\t\tValue: translation.Value()\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tGetDefaultTranslation(): ITranslationValue {\r\n\t\tconst defaultLanguage = TranslationManager.Instance.GetDefaultLanguage();\r\n\t\tconst translation = this.GetTranslationById(defaultLanguage.Id);\r\n\r\n\t\treturn {\r\n\t\t\tLanguageId: translation.Language.Id,\r\n\t\t\tValue: translation.Value()\r\n\t\t};\r\n\t}\r\n\r\n\tGetTranslationById(id: number) : TranslationItem {\r\n\t\treturn _.find(this._translationItems(), item => item.Language.Id === id);\r\n\t}\r\n\r\n\tToggle() {\r\n\t\tthis._opened(!this._opened());\r\n\t\tif (this._opened()) {\r\n\t\t\tthis.SetFocus();\r\n\t\t}\r\n\t}\r\n\r\n\t// Add to focus the first blank item\r\n\tSetFocus() {\r\n\t\tlet focusEmptyElement = _.find(this._translationItems(), item => item.Value() === null );\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tfocusEmptyElement && focusEmptyElement.IsFocused(!isMobile);\r\n\t}\r\n\r\n\tSelectTranslation(translation: TranslationItem) {\r\n\t\tthis._activeTranslationItem(translation);\r\n\t\tthis.SubscribeOnValueChanges(translation.Language.Id);\r\n\r\n this.Trigger('TranslationSelected', {\r\n\t\t\tLanguageId: translation.Language.Id,\r\n\t\t\tValue: translation.Value()\r\n\t\t});\r\n\r\n\t\tthis.Toggle();\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DropdownTemplate;\r\n\t}\r\n\r\n\tAfterRender(el): void {\r\n\t}\r\n\r\n\tprivate SetTranslation(translation: ITranslationValue) {\r\n\t\tconst translationItem = _.find(this._translationItems(), item => item.Language.Id === translation.LanguageId);\r\n\t\ttranslationItem.SetTranslation(translation.Value);\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\n\r\nexport class TranslationItem extends Event {\r\n\tValue: KnockoutObservable;\r\n\tIsFocused: KnockoutObservable;\r\n\r\n\tconstructor(public Language: LanguageModel) {\r\n\t\tsuper();\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis.IsFocused = ko.observable(false);\r\n\r\n\t\tthis.Value.subscribe(value => this.Trigger(\"TranslationChanged\", this));\r\n\t}\r\n\r\n\tSetTranslation(value: string) {\r\n\t\tthis.Value(value);\r\n\t}\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\nimport {Label} from \"../../Controls/Label/Label\";\r\n\r\nvar manager = TranslationManager.Instance;\r\n\r\nexport class NOTIFICATIONS {\r\n\r\n\t//#region Common\r\n\t@enumerable static get PERMISSION_IS_DENIED() { return manager.GetLocalizedString( 1270 ) }\t\t\t\t\t//Permission is denied\r\n\t@enumerable static get RECORD_SAVED() { return manager.GetLocalizedString( 20 ) }\t\t\t\t\t\t\t //Record saved\r\n\t@enumerable static get RECORD_REMOVED() { return manager.GetLocalizedString( 21 ) }\t\t\t\t\t\t\t//Record removed\r\n\t@enumerable static get NOT_ALLOWED_ACTION() { return manager.GetLocalizedString(708) }\t\t\t\t\t\t//Not allowed action\r\n @enumerable static get RECORD_DISABLED() { return manager.GetLocalizedString(900) }\t\t\t\t\t\t\t//Record disabled\r\n @enumerable static get RECORD_CREATED() { return manager.GetLocalizedString( 22 ) }\t\t\t\t\t\t\t//Record has been created\r\n\t@enumerable static get RECORD_UPDATED() { return manager.GetLocalizedString( 23 ) }\t\t\t\t\t\t\t//Record updated\r\n\t@enumerable static get RECORD_NOT_FOUND() { return manager.GetLocalizedString( 960 ) }\t\t\t\t\t\t//Record not found\r\n\t@enumerable static get REFERENCE_TABLE_NOT_SET() { return manager.GetLocalizedString( 961 ) }\t\t\t\t\t//Reference table not set\r\n\t@enumerable static get INVALID_REFERENCE_TABLE() { return manager.GetLocalizedString( 964 ) }\t\t\t\t\t//Invalid reference table\r\n\t@enumerable static get REFERENCE_WAS_SET() { return manager.GetLocalizedString(989) }\t\t\t\t\t\t\t//Reference was set\r\n\t@enumerable static get REFERENCE_WAS_UNSET() { return manager.GetLocalizedString(990) }\t\t\t\t\t\t//Reference was unset\r\n\t@enumerable static get TABLE_NOT_FOUND() { return manager.GetLocalizedString( 962 ) }\t\t\t\t\t\t\t//Table not found\r\n\t@enumerable static get ENTITY_NAME_WAS_NOT_FOUND() { return manager.GetLocalizedString( 843 ) }\t\t\t\t//Entity {entityName} was not found\r\n\t@enumerable static get NO_PENDING_CHANGES() { return manager.GetLocalizedString( 37 ) }\t\t\t\t\t\t//No pending changes\r\n\t@enumerable static get DATA_SAVED() { return manager.GetLocalizedString( 40 ) }\t\t\t\t\t\t\t\t//Data saved\r\n\t@enumerable static get DATA_IS_NOT_SAVED() { return manager.GetLocalizedString( 41 ) }\t\t\t\t\t\t//Error saving data\r\n\t@enumerable static get ERROR_DELETING_RECORD() { return manager.GetLocalizedString( 49 ) }\t\t\t\t\t//Error deleting record\r\n\t@enumerable static get ERROR_GETTING_CONTROL_OPTIONS() { return manager.GetLocalizedString( 1242 ) }\t\t//Error getting {controlName} control options\r\n\t@enumerable static get SOMETHING_WENT_WRONG() { return manager.GetLocalizedString( 61 ) }\t\t\t\t\t\t//Something went wrong\r\n\t@enumerable static get SUB_TYPE_NOT_FOUND() { return manager.GetLocalizedString(82) }\t\t\t\t\t\t//Sub types not found\r\n\t@enumerable static get TYPES_NOT_FOUND() { return manager.GetLocalizedString(1136) }\t\t\t\t\t\t//Types not found\r\n\t@enumerable static get INCORECT_PASSWORD_LENGTH() { return manager.GetLocalizedString( 98 ) }\t\t\t\t\t//Incorrect length of password. Please enter at least {MinimumLength} symbols\r\n\t@enumerable static get IS_REQUIRED() { return manager.GetLocalizedString( 909 ) }\t\t\t\t\t\t\t\t//is required\r\n\t@enumerable static get MINIMUM_LENGTH_OF_THIS_FIELD() { return manager.GetLocalizedString( 1002 ) }\t\t\t//Minimum length of this field is\r\n\t@enumerable static get MAXIMUM_LENGTH_OF_THIS_FIELD() { return manager.GetLocalizedString( 1003 ) }\t\t\t//Maximum length of this field is\r\n\t@enumerable static get INCORRECT_URL_PLEASE_TYPE_FULL_URL_LIKE() { return manager.GetLocalizedString( 1004 ) }//Incorrect URL. Please type full URL like http://spheeres.com\r\n\t@enumerable static get OBJECT_HAS_BEEN_COPIED() {return manager.GetLocalizedString(1058)}\t\t\t\t\t\t//{object} has been copied\r\n\t@enumerable static get OBJECT_HAS_BEEN_REMOVED() {return manager.GetLocalizedString(1059)}\t\t\t\t\t\t//{object} has been removed\r\n\t@enumerable static get EDITSCREEN_CANNOT_BE_USED_AS_A_HOME_SCREEN() {return manager.GetLocalizedString(1061)}\t//EditScreen cannot be used as a home screen\r\n\t@enumerable static get CANNOT_OPEN_THE_HOME_SCREEN_SUBJECTENTITY_ENTTY_SCREEN() {return manager.GetLocalizedString(1062)}\t//Cannot open the Home Screen: {subjectEntity} entity screen\r\n\t@enumerable static get HOME_SCREEN_SUBJECT_ENTITY() {return manager.GetLocalizedString(1064)}\t\t\t\t\t//Home Screen: {subjectEntity}\r\n\t@enumerable static get ALLOWED_FILE_EXTENSIONS_ARE_EXTENSIONS() { return manager.GetLocalizedString(996) }\t//Allowed file extensions are {FileExtensions}\r\n\t@enumerable static get CANNOT_UPLOAD_FILES() { return manager.GetLocalizedString(1079) }\t\t\t\t\t//Cannot upload files: {Files}\r\n\t@enumerable static get YOU_ARE_NOT_ALLOWED_TO_PERFORM_THIS_ACTION() { return manager.GetLocalizedString(1100) }\t\t\t\t\t//You are not allowed to perform this action\r\n\t@enumerable static get ERROR_GETTING_LIFESTATUSES() { return manager.GetLocalizedString(379) }\t\t\t\t//Error getting lifestatuses for entity {EntityName}\r\n\t@enumerable static get LINK_HAS_BEEN_COPIED() { return manager.GetLocalizedString(1441)};\t\t\t\t\t\t//Link has been copied\r\n\t@enumerable static get COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES() { return manager.GetLocalizedString(1517)};\t//Could not proceed, please, create the link between {entity1} and {entity2}\r\n\r\n\t@enumerable static get INVALID_USER() { return manager.GetLocalizedString( 1220 ) }\r\n\t@enumerable static get INVALID_DATABASE() { return manager.GetLocalizedString( 1221 ) }\r\n\t@enumerable static get ACCESS_DENIED() { return manager.GetLocalizedString( 1222 ) }\r\n\t@enumerable static get LICENSE_WILL_BE_EXPIRED() { return manager.GetLocalizedString( 1422 ) }\t\t\t\t//License will be expired on {date}. Please, contact your licensor.\r\n\t//#endregion\r\n\r\n\t//#region LoginPage\r\n\t@enumerable static get FORM_INVALID() { return manager.GetLocalizedString( 1394, 'Please, fill in all required fields' ) }\t\t\t\t\t\t// Please, fill in all required fields\r\n\t@enumerable static get RESET_PASSWORD_SENT() { return manager.GetLocalizedString(1396, 'Reset password link has been sent to your e-mail') }\t\t//Reset password link has been sent to your e-mail\r\n\t@enumerable static get ERROR_USER_ALLOWANCE() { return manager.GetLocalizedString(1397, 'Error getting user allowance') }\t\t\t\t\t\t\t//Error getting user allowance\r\n\t@enumerable static get ERROR_USER_DATA() { return manager.GetLocalizedString(1400, 'Error getting user data') }\t\t\t\t\t\t\t\t\t//Error getting user data\r\n\r\n\t@enumerable static get ENTER_CURRENT_PASSWORD() { return manager.GetLocalizedString( 1417, 'Please, enter current password' ) }\t\t\t\t\t// Please, enter current password\r\n\t@enumerable static get ENTER_NEW_PASSWORD() { return manager.GetLocalizedString(1418, 'Please, enter new password') }\t\t\t\t\t\t\t\t//Please, enter new password\r\n\t@enumerable static get ENTER_AT_LEAST_MORE_CHARACTERS() { return manager.GetLocalizedString(1419, 'Please, enter at least {minLength} characters') }\t\t//Please, enter at least {minLength} characters\r\n\t@enumerable static get CONFIRM_NEW_PASSWORD() { return manager.GetLocalizedString(1420, 'Please, confirm new password') }\t\t\t\t\t\t\t//Please, confirm new password\r\n\t@enumerable static get PASSWORDS_ARE_NOT_SAME() { return manager.GetLocalizedString(1421, 'Passwords are not same') }\t\t\t\t\t\t\t\t//Passwords are not same\r\n\t//#endregion\r\n\r\n\t//#region UserMenu\r\n\t@enumerable static get CONTACT_SCREEN_NOT_FOUND() { return manager.GetLocalizedString( 10 ) }\t\t\t\t\t// Contact screen not found\r\n\t//#endregion\r\n\r\n\t//#region Kanban Board\r\n\t@enumerable static get STATUS_UPDATED() { return manager.GetLocalizedString( 19 ) }\t\t\t\t\t\t\t// Status updated\r\n\t@enumerable static get NO_LINKED_RECORDS() { return manager.GetLocalizedString( 570 ) }\t\t\t\t\t\t// No linked records -- need to check to another place\r\n\t//#endregion\r\n\r\n\t//#region Follow up\r\n\t@enumerable static get NEXT_STATUS_NOT_AVAILABLE() { return manager.GetLocalizedString( 531 ) } \t\t\t\t//Next status is not available. Please contact superuser\r\n\t//#endregion\r\n\r\n\t//#region TimeWriting\r\n\t@enumerable static get CHANGES_APPLIED() { return manager.GetLocalizedString( 24 ) }\t\t\t\t\t\t\t//Changes applied\r\n\t@enumerable static get TIME_OVERFLOW() { return manager.GetLocalizedString( 44 ) }\t\t\t\t\t\t\t//Time overflow\r\n\t@enumerable static get ROW_EDITOR_NOT_FOUND() { return manager.GetLocalizedString( 45 ) }\t\t\t\t\t\t//Row editor not found for reservation\r\n @enumerable static get FREEZE_TIME_NOT_SPECIFIED() { return manager.GetLocalizedString(901) }\t\t\t\t\t\t//Freeze time not specified\r\n @enumerable static get FILL_REQUIRED_DATA() { return manager.GetLocalizedString(902) }\t\t\t\t\t\t//Fill required data\r\n @enumerable static get DURATION_IS_TOO_LONG() { return manager.GetLocalizedString(903) }\t\t\t\t\t\t//Duration is too long\r\n @enumerable static get TO_DATE_IS_LESS_THAN_FROM() { return manager.GetLocalizedString(988) }\t\t\t\t\t\t//To date is less than from date\r\n\t@enumerable static get ONLY_FOLLOWING_TYPES_ARE_ALLOWED() { return manager.GetLocalizedString(993) }\t\t\t\t//Only following types are allowed: {LowestLevelTypes}\r\n\t//#endregion\r\n\r\n //#region Agenda\r\n\t@enumerable static get EVENT_UPDATED() { return manager.GetLocalizedString( 25 ) }\t\t\t\t\t\t\t//Event updated\r\n\t@enumerable static get EDIT__ONLY_APPOINTMENT_EVENTS() { return manager.GetLocalizedString( 116 ) }\t\t\t//You can edit only Appointment Events\r\n\t@enumerable static get SELECT_ONLY_WITHIN_DAY() { return manager.GetLocalizedString( 156 ) }\t\t\t\t\t//You can select only within day\r\n\t@enumerable static get BOOKED_TIME_RECORD_WAS_CREATED_SUCCESSFULLY() { return manager.GetLocalizedString( 898 ) }\t\t\t\t\t//Booked time record was created successfully\r\n\t@enumerable static get ATTENDEES_CANNOT_BE_ADDED_DUE_TO_MISSING_LINK_LIST() { return manager.GetLocalizedString( 1196 ) }\t\t\t//Attendees cannot be added due to missing LinkList\r\n\t//#endregion\r\n\r\n\t//#region Password\r\n\t@enumerable static get PASSWORD_REVOKED() { return manager.GetLocalizedString( 26 ) }\t\t\t\t\t\t\t//Password has been revoked\r\n\t@enumerable static get PASSWORD_RESET() { return manager.GetLocalizedString( 27 ) }\t\t\t\t\t\t\t//Password has been reset\r\n\t//#endregion\r\n\r\n\t//#region Mail\r\n\t@enumerable static get EMAIL_WAS_SENT() { return manager.GetLocalizedString( 28 ) }\t\t\t\t\t\t\t//Email was sent\r\n\t@enumerable static get PLEASE_ADD_ACCOUNT() { return manager.GetLocalizedString( 29 ) }\t\t\t\t\t\t//Please, add at least one correct account\r\n\t@enumerable static get PLEASE_SELECT_ANY_EMAIL() { return manager.GetLocalizedString( 30 ) }\t\t\t\t\t//Please select any mail\r\n\t@enumerable static get MARKED_AS_READ() { return manager.GetLocalizedString( 31 ) }\t\t\t\t\t\t\t//Successfully marked as read\r\n\t@enumerable static get MARKED_AS_UNREAD() { return manager.GetLocalizedString( 32 ) }\t\t\t\t\t\t\t//Successfully marked as unread\r\n\t@enumerable static get PLEASE_ADD_RECIPIENT() { return manager.GetLocalizedString( 33 ) }\t\t\t\t\t\t//Please, specify at least one recipient\r\n\t@enumerable static get OUT_TYPE_NOT_FOUND() { return manager.GetLocalizedString( 87 ) }\t\t\t\t\t\t//Out type not found\r\n\t@enumerable static get IN_TYPE_NOT_FOUND() { return manager.GetLocalizedString( 88 ) }\t\t\t\t\t\t//In type not found\r\n\t//#endregion\r\n\r\n\t//#region SelectUser\r\n\t@enumerable static get SELECTION_APPLIED() { return manager.GetLocalizedString( 34 ) }\t\t\t\t\t\t//Selection applied\r\n\t//#endregion\r\n\r\n\t//#region Link list\r\n\t@enumerable static get RECORD_ALREADY_EXISTS() { return manager.GetLocalizedString( 35 ) }\t\t\t\t\t//Record already exists\r\n\t@enumerable static get RECORD_WAS_AUTOLINKED() { return manager.GetLocalizedString( 36 ) }\t\t\t\t\t//Record was autolinked\r\n\t@enumerable static get USER_SHOULD_BE_LINKED() { return manager.GetLocalizedString(86) }\t\t\t\t\t\t//At least one user should be linked\r\n\t@enumerable static get LINKS_TO_ENTITIES_MUST_BE_CREATED() { return manager.GetLocalizedString(1302) }\t\t//Link(s) to Entities must be created\r\n\t//#endregion\r\n\r\n\t//#region Screenshot\r\n\t@enumerable static get CREATING_SCREENSHOT() { return manager.GetLocalizedString( 38 ) }\t\t\t\t\t\t//Creating screenshot\r\n\t@enumerable static get SCREENSHOT_CREATED() { return manager.GetLocalizedString( 39 ) }\t\t\t\t\t\t//Screenshot was successfully created\r\n\t@enumerable static get MAIL_ADDRESS_FOR_GLOBAL_NOT_FOUND() { return manager.GetLocalizedString( 78 ) }\t\t//Mail address for ${GlobalVariable} can not be empty\r\n\t//#endregion\r\n\r\n\t//#region Migration tool\r\n\t@enumerable static get PROVIDE_SQL_SCRIPT() { return manager.GetLocalizedString( 42 ) }\t\t\t\t\t\t//Provide SQL script\r\n\t@enumerable static get SELECT_DATABASE() { return manager.GetLocalizedString( 43 ) }\t\t\t\t\t\t\t//Select at least one database\r\n\r\n\t@enumerable static get PLEASE_ADD_YOUR_EMAIL() { return manager.GetLocalizedString( 46 ) }\t\t\t\t\t//Please, add your mail\r\n\t@enumerable static get PLEASE_ADD_EMAIL() { return manager.GetLocalizedString( 47 ) }\t\t\t\t\t\t\t//Please, add email\r\n\t//#endregion\r\n\r\n\t//#region SecurityEditor\r\n\t@enumerable static get TYPE_IS_NOT_SUPPORTED() { return manager.GetLocalizedString( 48 ) }\t\t\t\t\t//This type is not supported\r\n\t//#endregion\r\n\r\n\t//#region Basket\r\n\t@enumerable static get RECORD_ADDED_TO_BASKET() { return manager.GetLocalizedString( 50 ) }\t\t\t\t\t//Record added to basket\r\n\t@enumerable static get PLEASE_CREATE_OR_SELECT_BASKET_RECORD() { return manager.GetLocalizedString( 51 ) }\t//Please create or select basket record\r\n\t@enumerable static get PLEASE_SELECT_BASKET_RECORD() { return manager.GetLocalizedString( 52 ) }\t\t\t\t //Please select basket record\r\n\t@enumerable static get RECORD_REMOVED_FROM_BASKET() { return manager.GetLocalizedString( 53 ) }\t\t\t\t//Record removed from basket\r\n\t//#endregion\r\n\r\n\t//#region ButtonFavorite\r\n\t@enumerable static get PLEASE_SELECT_ANY_RECORD() { return manager.GetLocalizedString( 54 ) }\t\t\t\t\t//Please select any record\r\n\t//#endregion\r\n\r\n\t//#region CanvasDesginer\r\n\t@enumerable static get CANVAS_UPDATED() { return manager.GetLocalizedString( 55 ) }\t\t\t\t\t\t\t//Canvas successfully updated\r\n\t@enumerable static get PLEASE_SAVE_CANVAS_BEFORE_EXECUTE() { return manager.GetLocalizedString( 56 ) }\t\t//Please save canvas data before execute\r\n\t@enumerable static get PLEASE_SELECT_SOURCE_AND_DESTINATION() { return manager.GetLocalizedString( 57 ) }\t//Please select both source and destination before executing\r\n\t@enumerable static get DATAWIZARD_EXECUTED() { return manager.GetLocalizedString( 58 ) }\t\t\t\t\t//DataWizard executed\r\n\t@enumerable static get ROLLBACK_APPLIED() { return manager.GetLocalizedString( 1245 ) }\t\t\t\t\t\t//Rollback applied successfully\r\n\t\r\n\t//#endregion\r\n\r\n\t//#region Drop\r\n\t@enumerable static get ONLY_ONE_FILE_WAS_SAVED() { return manager.GetLocalizedString( 59 ) }\t\t\t\t//Only one file from set was saved\r\n\t@enumerable static get DOCUMENT_UPLOADED() { return manager.GetLocalizedString( 60 ) }\t\t\t\t\t\t//Document successfully uploaded\r\n\t@enumerable static get OVERAL_FILE_SIZE_EXCEEDED() { return manager.GetLocalizedString( 91 ) }\t\t\t\t//Overall files size limit exceeded\r\n\t@enumerable static get ALLOWED_FILE_SIZE_EXCEEDED() { return manager.GetLocalizedString( 92 ) }\t\t\t\t//File size limit per file has been exceeded\r\n @enumerable static get EMPTY_SIZE_FILES_RESTRICTION() { return manager.GetLocalizedString( 745 ) }\t\t\t//Empty files could not be uploaded\r\n @enumerable static get ALLOWED_FILES_SIZE_EXCEEDED() { return manager.GetLocalizedString( 1049 ) }\t\t\t//It is allowed to upload only {size} MB per upload session\r\n @enumerable static get ALLOWED_FILES_AMOUNT_EXCEEDED() { return manager.GetLocalizedString( 1050 ) }\t\t//It is allowed to upload only {amount} files\r\n\t//#endregion\r\n\r\n //#region FormDesigner\r\n\t@enumerable static get SCREEN_UPDATED() { return manager.GetLocalizedString( 62 ) }\t\t\t\t\t\t\t//Screen successfully updated\r\n\t@enumerable static get SCREEN_REFRESHED() { return manager.GetLocalizedString( 63 ) }\t\t\t\t\t\t\t//Screen refreshed\r\n\t@enumerable static get PLEASE_PROVIDE_NAME() { return manager.GetLocalizedString( 64 ) }\t\t\t\t\t\t//Please provide a name\r\n\t@enumerable static get SAVE_ONLY_ONE_FILE() { return manager.GetLocalizedString( 513 ) }\t\t\t\t\t\t//In case of multiple files loading only one file from set will be saved\r\n\t//#endregion\r\n\r\n\t//#region Grid\r\n\t@enumerable static get ERROR_GET_GRID_DATA() { return manager.GetLocalizedString( 66 ) }\t\t\t\t\t\t//Error getting grid data\r\n\t@enumerable static get QUERY_BUILDER_NOT_FOUND() { return manager.GetLocalizedString( 67 ) }\t\t\t\t\t//QueryBuilderControl was not found\r\n\t@enumerable static get GRID_SUBJECT_NOT_FOUND() { return manager.GetLocalizedString( 68 ) }\t\t\t\t\t //Grid subject not found\r\n\t@enumerable static get RECORDS_LINKED() { return manager.GetLocalizedString( 69 ) }\t\t\t\t\t\t\t //Records linked\r\n\t@enumerable static get NO_SELECTED_RECORDS() { return manager.GetLocalizedString( 70 ) }\t\t\t\t\t\t//No selected records\r\n\t@enumerable static get NO_EDITABLE_COLUMNS() { return manager.GetLocalizedString( 81 ) }\t\t\t\t\t\t//No editable columns\r\n\t@enumerable static get ERROR_DELETE_GRID_DATA() { return manager.GetLocalizedString( 363 ) }\t\t\t\t\t//Error deleting grid data {ErrorMessage}\r\n\t@enumerable static get GRID_CELL_HYPERLINK_TOOLTIP() { return manager.GetLocalizedString( 540 ) }\t\t\t\t//Click to open record, hold CTRL button to open in popup\r\n\t@enumerable static get NOT_APPLICABLE_FOR_LIST_SCREEN() {return manager.GetLocalizedString( 705 )}\t\t\t // Not applicable for List screen\r\n\t@enumerable static get SORT_BY_COLUMN_TO_ENABLE_SORTING() {return manager.GetLocalizedString( 706 )}\t\t\t// Sort by this column to enable sorting\r\n @enumerable static get SOME_RECORDS_ARE_LOCKED() { return manager.GetLocalizedString(1146) }\t\t\t // Some records on the page are locked\r\n @enumerable static get NOTHING_TO_COPY() { return manager.GetLocalizedString(1170) }\t\t\t // Nothing to copy\r\n @enumerable static get LINK_RECORDS_NOT_FOUND() { return manager.GetLocalizedString(1171) }\t\t\t // Link records not found\r\n @enumerable static get USE_LINK_ADDLINK_OR_ADDQUERY_BUTTONS_TO_COPY() { return manager.GetLocalizedString(1172) }\t\t\t // Use Link, Add&Link, or Add Query buttons to copy\r\n\t@enumerable static get INVALID_RECORD_ID() { return manager.GetLocalizedString(1200) }\t\t\t\t\t\t\t//Invalid record ID\r\n\t//#endregion\r\n\r\n //#region Generic button\r\n\t@enumerable static get PARAM_IS_EMPTY() {return manager.GetLocalizedString( 812 )}\t\t\t \t\t\t// Cannot run the function - {ParamName} is empty\r\n\t@enumerable static get SELECT_RECORDS_TO_PROCESS() {return manager.GetLocalizedString( 951 )}\t\t\t \t// Select records to process\r\n\t//#endregion\r\n\r\n\t//#region Add query button\r\n\t@enumerable static get NO_QUERIES_FOUND() { return manager.GetLocalizedString( 1077 ) }\t\t\t\t\t\t\t// No queries found\r\n\t//#endregion\r\n\r\n\t//#region QueryBuilder\r\n\t@enumerable static get PLEASE_SELECT_ANY_FIELD() { return manager.GetLocalizedString( 71 ) }\t\t\t\t\t//Please select any field\r\n\t//#endregion\r\n\r\n\t//#region Lookup editor\r\n\t@enumerable static get CD_TABLE_NOT_FOUND() { return manager.GetLocalizedString( 72 ) }\t\t\t\t\t\t//CD_Table id not found\r\n\t@enumerable static get PLEASE_SELECT_ENTITY() { return manager.GetLocalizedString( 73 ) }\t\t\t\t\t\t//Please, select entity\r\n\t@enumerable static get SAVE_OR_DISCARD_CHANGES() { return manager.GetLocalizedString( 75 ) }\t\t\t\t\t//Save or discard changes before next step, please\r\n\t@enumerable static get ALL_RECORDS_SAVED() { return manager.GetLocalizedString( 76 ) }\t\t\t\t\t\t//All records saved\r\n\t@enumerable static get NO_PRIMARY_KEY() { return manager.GetLocalizedString( 77 ) }\t\t\t\t\t\t\t//There is no primary key field\r\n\t@enumerable static get SELECT_ANY_OPTION() { return manager.GetLocalizedString( 102 ) }\t\t\t\t\t\t//Select any option\r\n\t//#endregion\r\n\r\n\t//#region DataRole\r\n\t@enumerable static get DATA_ROLE_IS_NOT_SUPPORTED() { return manager.GetLocalizedString( 79 ) }\t\t\t\t//Current data role is not supported\r\n\t//#endregion\r\n\r\n\t//#region Field security\r\n\t@enumerable static get PLEASE_UPDATE_VIEW() { return manager.GetLocalizedString( 80 ) }\t\t\t\t\t\t//Please, update views after saving\r\n\t//#endregion\r\n\r\n\t//#region Camera\r\n\t@enumerable static get ERROR_CAMERA_INITIALIZATION() { return manager.GetLocalizedString( 83 ) }\t\t\t\t//Error camera initialization: {ErrorMessage}\r\n\t@enumerable static get GET_USER_MEDIA_IS_NOT_SUPPORTED() { return manager.GetLocalizedString( 84 ) }\t\t\t//getUserMedia not supported\r\n\t@enumerable static get PLEASE_TAKE_PHOTO() { return manager.GetLocalizedString( 85 ) }\t\t\t\t\t\t//Please, take the photo!\r\n\t//#endregion\r\n\r\n\t//#region Environment manager\r\n\t@enumerable static get CONFIGURATION_SAVED() { return manager.GetLocalizedString( 89 ) }\t\t\t\t\t\t//Database configuration saved\r\n\t@enumerable static get DATABASE_DELETED() { return manager.GetLocalizedString( 90 ) }\t\t\t\t\t\t\t//Database deleted\r\n\t@enumerable static get DATABASE_NOT_FOUND() { return manager.GetLocalizedString( 355 ) }\t\t\t\t\t\t//Databases not found\r\n\t@enumerable static get CONFIRMATION_FOR_COPY_ENVIROMENT() { return manager.GetLocalizedString( 1309 ) }\t\t//Are you sure that you want to copy the current environment? The operation will take a lot of time and could not be reverted.\r\n\t@enumerable static get ENVIROMENT_WAS_CREATED() { return manager.GetLocalizedString( 1310 ) }\t\t\t\t\t//New application {Environment} was created\r\n\t//#endregion\r\n\r\n\t//#region PortletSpace\r\n\t@enumerable static get PORTLET_SPACE_UPDATED() { return manager.GetLocalizedString( 510 ) }\t\t\t\t\t//Portlet space updated\r\n\t@enumerable static get MORE() { return manager.GetLocalizedString( 548 ) }\t\t\t\t\t\t\t\t\t//More dropdown\r\n\t@enumerable static get DELETE() { return manager.GetLocalizedString( 549 ) }\t\t\t\t\t\t\t\t\t//Delete button\r\n\t@enumerable static get PORTLET_SPACE_INFO() { return manager.GetLocalizedString( 550 ) }\t\t\t\t\t\t//Portlet space info\r\n\t@enumerable static get PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 551 ) }\t\t\t\t\t\t//Portlet space name\r\n\t@enumerable static get USE_AS_MAIN() { return manager.GetLocalizedString( 552 ) }\t\t\t\t\t\t\t\t//Use as main\r\n\t@enumerable static get CREATE_NEW() { return manager.GetLocalizedString( 555 ) }\t\t\t\t\t\t\t\t//Create new button\r\n\t@enumerable static get PLEASE_ENTER_PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 557 ) }\t\t\t//Please, enter a portlet space name\r\n\t@enumerable static get PORTLET_SPACE_WILL_BE_DELETED() { return manager.GetLocalizedString( 559 ) }\t\t\t//Portlet space will be deleted\r\n\t//#endregion\r\n\r\n\t//#region FileUpload\r\n\t@enumerable static get FILE_SIZE_IS_TOO_BIG() { return manager.GetLocalizedString( 93 ) }\t\t\t\t\t//File is too big. Max filesize {MaxFileSize}MiB\r\n\t//#endregion\r\n\r\n\t//#region License\r\n\t@enumerable static get LOGO_UPDATED() { return manager.GetLocalizedString( 115 ) }\t\t\t\t\t\t\t//Logo updated successful\r\n\t//#endregion\r\n\r\n\t//#region Profile card\r\n\t@enumerable static get CURRENT_PASSWORD_IS_REQUIRED() { return manager.GetLocalizedString( 94 ) }\t\t\t\t//Field CurrentPassword is required\r\n\t@enumerable static get NEW_PASSWORD_IS_REQUIRED() { return manager.GetLocalizedString( 95 ) }\t\t\t\t\t//Field NewPassword is required\r\n\t@enumerable static get RE_TYPE_PASSWORD_NOT_MATCH() { return manager.GetLocalizedString( 96 ) }\t\t\t\t//Re-type password do not match\r\n\t@enumerable static get PASSWORD_CHANGED() { return manager.GetLocalizedString( 97, 'Password changed' ) }\t\t\t\t\t\t\t//Password changed\r\n\t//#endregion\r\n\r\n\t//#region Theme builder\r\n\t@enumerable static get THEME_SAVED() { return manager.GetLocalizedString( 99 ) }\t\t\t\t\t\t\t\t//Theme saved\r\n\t//#endregion\r\n\r\n\t//#region Consultscreen\r\n\t@enumerable static get SECURITY_RESET_DONE() { return manager.GetLocalizedString( 100 ) }\t\t\t\t\t\t//Security reset done\r\n\t@enumerable static get CLICK_TO_SEE_ALL_RECORDS_IN_THE_LIST() { return manager.GetLocalizedString(1117) }\t\t//Click to see all records in the list\r\n\t@enumerable static get THE_NUMBER_OF_RECORDS_EXCEEDS_THE_CONFIGURED_LIMIT() { return manager.GetLocalizedString(1123)}\t\t//The number of records to show exceeds the configured limit\r\n\t//#endregion\r\n\r\n\t//#region Control editor\r\n\t@enumerable static get PLEASE_SET_ALL_PROPERTIES() { return manager.GetLocalizedString( 101 ) }\t\t\t\t//Please set all properties\r\n\t//#endregion\r\n\r\n\t//#region FieldCollection\r\n\t@enumerable static get VIEWS_UPDATED() { return manager.GetLocalizedString( 103 ) }\t\t\t\t\t\t\t//Views updated\r\n\t@enumerable static get SAVED() { return manager.GetLocalizedString( 104 ) }\t\t\t\t\t\t\t\t\t//Saved\r\n\t//#endregion\r\n\r\n\t//#region UserVarManager\r\n\t@enumerable static get WRONG_ARGS() { return manager.GetLocalizedString( 105 ) }\t\t\t\t\t\t\t\t//Wrong args while adding to recent, record was not added\r\n\t//#endregion\r\n\r\n\t//#region TypeScreen\r\n\t@enumerable static get TYPE_IS_NOT_AVAILABLE() { return manager.GetLocalizedString( 107 ) }\t\t\t\t\t//{TypeName} is not available. Please contact your SuperUser\r\n\t//#endregion\r\n\r\n\t//#region Search screen\r\n\t@enumerable static get RECORD_IS_SEARCH_ONLY() { return manager.GetLocalizedString( 108 ) }\t\t\t\t\t//Record is search only\r\n\t@enumerable static get NO_SEARCHABLE_FIELDS() { return manager.GetLocalizedString( 109 ) }\t\t\t\t\t//Searchable fields not found. Please, select at least one on Database Designer\r\n\t@enumerable static get NO_DATA_FOUND_WITH_APPLIED_FILTER() { return manager.GetLocalizedString(1105) }\t\t//No data found with applied filter.Default search was used.\r\n\t//#endregion\r\n\r\n //#region ListScreen\r\n\t@enumerable static get EDIT_SCREEN_NOT_EXISTS() { return manager.GetLocalizedString( 110 ) }\t\t\t\t\t//Edit screen for this type doesn't exist\r\n\t//#endregion\r\n\r\n\t//#region FormDesigner\r\n\t@enumerable static get ENTITY_ALREADY_ADDED() { return manager.GetLocalizedString( 111 ) }\t\t\t\t\t//Entity already added\r\n\t@enumerable static get NEW_CONTROL_CREATED() { return manager.GetLocalizedString( 112 ) }\t\t\t\t\t\t//New control has been created\r\n\t@enumerable static get FIELD_ALREADY_ADDED() { return manager.GetLocalizedString( 114 ) }\t\t\t\t\t\t//Current field has already been added\r\n\t@enumerable static get ONLY_CUSTOM_FIELDS_ALLOWED() { return manager.GetLocalizedString( 1347 ) }\t\t\t\t//Only custom fields of $Time allowed\r\n\t@enumerable static get FIELD_FROM_ENTITY_NAME_IS_ALREADY_PRESENT() { return manager.GetLocalizedString( 1348 ) }\t\t//Field from {entityName} is already present\r\n\t//#endregion\r\n\r\n\t//#region DatabaseDesigner\r\n\t@enumerable static get LINK_TABLE_COULD_NOT_BE_REVERSED() { return manager.GetLocalizedString( 452 ) }\t\t//Link table for SYS table could not be reversed\r\n\t@enumerable static get NO_CHANGES_TO_UPDATE_IN_DATABASE() { return manager.GetLocalizedString( 467 ) }\t\t//There are no changes to update in the database\r\n\t@enumerable static get REPLACE_EXISTING_VIEW() { return manager.GetLocalizedString( 618 ) }\t\t\t\t\t//The existing view will be replaced with a new one. Process?\r\n\t@enumerable static get EMPTY_CHECKLIST_FIELD() { return manager.GetLocalizedString( 925 ) }\t\t\t\t\t//Checklist element name cannot be empty\r\n\t@enumerable static get SELECT_A_LOOKUP() { return manager.GetLocalizedString( 1355 ) }\t\t\t\t\t\t//Select a lookup\r\n\t//#endregion\r\n\r\n\t//#region Lifestatus designer\r\n\t@enumerable static get LIFESTATUS_FLOW_LOADED() { return manager.GetLocalizedString( 453 ) }\t\t\t\t\t//Type lifestatus flow succesfully loaded\r\n\t@enumerable static get ERROR_BUILDING_LIFE_CYCLE() { return manager.GetLocalizedString( 454 ) }\t\t\t\t//Error building life cycle\r\n\t@enumerable static get YOUR_FLAG_IMAGE_WAS_UPLOADED_SUCCESSFULLY() { return manager.GetLocalizedString( 502 ) } //Your flag image was uploaded successfully!\r\n\t@enumerable static get INCORRECT_PASSWORD() { return manager.GetLocalizedString( 518 ) }; // Wrong password\r\n\t@enumerable static get PLEASE_CREATE_ALL_THREE_TRANSITIONS_FOR_A_TEST_NODE() { return manager.GetLocalizedString( 1265 ) }; // Please, create all three transitions for a Test node {TestNodeName}\r\n\t@enumerable static get THE_NEW_DEFAULT_RETIRED_STATUS() { return manager.GetLocalizedString( 1436 ) }; // The {name} is new default retired status\r\n\t@enumerable static get THERE_IS_NOT_DEFAULT_RETIRED_STATUS() { return manager.GetLocalizedString( 1438 ) }; // There is no default retired status\r\n\t@enumerable static get SELECT_STATUS_FOR_SUB_FLOW() { return manager.GetLocalizedString( 1445 ) }; \t\t// Please, select Status for SubFlow\r\n\t//#endregion\r\n\r\n\t//#region Personal Settings\r\n\t@enumerable static get GLOBALS_UPDATED() { return manager.GetLocalizedString( 508 ) }\t\t\t\t\t\t\t//Type lifestatus flow succesfully loaded\r\n\t@enumerable static get INVALID_CULTURE() { return manager.GetLocalizedString( 904 ) }\t\t\t\t\t\t\t//Invalid culture: {currentCulture}. Setting default culture: {localCulture}\r\n\t@enumerable static get INVALID_DESKTOP_LANGUAGE() { return manager.GetLocalizedString( 1248 ) }\t\t\t\t//Invalid desktop language: {currentDesktopLanguage}. Setting default desktop language: {defaultDesktopLanguage}\r\n\t//#endregion\r\n\r\n\t//#region Progressbar\r\n\t@enumerable static get TITLE_CONVERTED_TYPE_OF_RECORD() { return manager.GetLocalizedString( 542 ) }\t\t\t//Type of record being converted. Please, save record firstly\r\n //#endregion\r\n\r\n\t//#region BulkEmail\r\n\t@enumerable static get TABLE_IS_NOT_SELECTED() { return manager.GetLocalizedString( 352 ) }\t\t\t//Template table is not selected for control\r\n\t@enumerable static get MAILING_CONFIGURED() { return manager.GetLocalizedString( 354 ) }\t\t\t\t\t//Mailing configured\r\n\t@enumerable static get BULK_EDIT_RECORD_NUMBER_WILL_BE_EDITED() { return manager.GetLocalizedString( 1224 ) }\t//Bulk Edit: {records} records will be edited\r\n\t@enumerable static get EDIT_ALL_RECORD_NUMBER_WILL_BE_EDITED() { return manager.GetLocalizedString( 1235 ) }\t//Edit All: {records} records will be edited\r\n\t//#endregion\r\n\r\n\t//#region Outlook Add-In\r\n\t@enumerable static get FORM_FOR_EMAIL_NOT_CONFIGURED() { return manager.GetLocalizedString( 699 ) }\t\t\t\t\t//Forms for emails are not configured on this system. Contact your superuser\r\n\t@enumerable static get CANNOT_LINK_RECORD() { return manager.GetLocalizedString( 1072 ) }\t\t\t\t\t//Spheeres Link: cannot link record\r\n\t//#endregion\r\n\r\n\t//#region Finacial Dashboard\r\n\t@enumerable static get QUERY_EXPRESSION_WAS_NOT_CREATED() { return manager.GetLocalizedString(758)}; //Query expression was not created\r\n\t@enumerable static get DOCUMENTS_HAS_BEEN_SENT_TO_FINANCIAL_PROCESSOR() { return manager.GetLocalizedString(759)}; //Documents has been sent to Financial Processor\r\n\t//#endregion\r\n\r\n\t//#region Clean Database Modal\r\n\t@enumerable static get NO_CLEANING_OPTION_SELECTED() { return manager.GetLocalizedString(764)};\t\t\t\t//Please, select what you would like to clean\r\n\t//#endregion\r\n\r\n\t//#region Scheduler\r\n\t@enumerable static get INVALID_SCHEDULER_SUBJECT() { return manager.GetLocalizedString(884) };\t\t\t\t//Invalid scheduler subject specified\r\n\t//#endregion\r\n\r\n\t//#region ProductConfigurator\r\n\t@enumerable static get ERROR_GETTING_CONFIGURED_PRODUCTS() { return manager.GetLocalizedString(974) }; //Error getting configured products\r\n\t@enumerable static get ERROR_GETTING_ROOT_PRODUCTS(){ return manager.GetLocalizedString((975))}; //Error getting root products\r\n\t@enumerable static get ERROR_GETTING_NESTED_PRODUCTS(){ return manager.GetLocalizedString((976))};\t\t//Error getting nested products\r\n\t@enumerable static get ERROR_GETTING_PRODUCT_INFO(){ return manager.GetLocalizedString((977))};\t\t//Error getting product info\r\n\t@enumerable static get ERROR_GETTING_CONFIGURED_PRODUCT(){ return manager.GetLocalizedString((978))};\t\t//Error getting configured product\r\n\t@enumerable static get ERROR_GETTING_GROUPS_PRODUCTS(){ return manager.GetLocalizedString((979))};\t\t//Error getting group's products\r\n\t@enumerable static get ERROR_CREATING_CONFIGURATION(){ return manager.GetLocalizedString((980))};\t\t//Error creating configuration\r\n\t@enumerable static get ERROR_UPDATING_CONFIGURATION(){ return manager.GetLocalizedString((981))};\t\t//Error updating configuration\r\n\t@enumerable static get CLICK_TO_SEE_ALL_COLORS() { return manager.GetLocalizedString((1119))};\t\t//Click to see all colors\r\n\t@enumerable static get CLICK_TO_SEE_ALL_IMAGES() { return manager.GetLocalizedString((1120))};\t\t//Click to see all images\r\n\t@enumerable static get YOU_DONT_HAVE_ANY_OF_REQUIRED_BUSINESS_ROLES() {return manager.GetLocalizedString((1197))};\t\t//You don't have any of required business roles\r\n\t@enumerable static get PLEASE_FILL_ALL_DATA() {return manager.GetLocalizedString((1442))};\t\t//Please, fill all data\r\n\t@enumerable static get PROPERTY_VALUE_SHOULD_HAVE_THE_UNIQUE_NAME() {return manager.GetLocalizedString((1498))};\t\t//Property value should have the unique Name\r\n\t//#endregion\r\n\r\n\t//#region Document control\r\n\t@enumerable static get CHECKIN_IS_NOT_ALLOWED() { return manager.GetLocalizedString(1051) } \t\t\t\t\t//Cannot CheckIn: Assemblies must be checked in via SolidWorks\r\n\t//#endregion\r\n\r\n\t//#region Planner\r\n\t@enumerable static get UNLINK_QUERY_RECORD() { return manager.GetLocalizedString(1071) } \t//This will unlink the existing record. Continue?\r\n\t@enumerable static get COPY_PLANNER_DATA() { return manager.GetLocalizedString(1154) } \t\t//Selected rows/columns already contain planning data. Overwrite?\r\n\t@enumerable static get SELECT_PERIOD() { return manager.GetLocalizedString(1157) } \t\t\t//Select {periodName}s to copy to\r\n\t@enumerable static get SELECT_PLANNER_ROWS() { return manager.GetLocalizedString(1158) } \t//Select rows to copy to\r\n\t//#endregion\r\n\r\n\t//#region Timer\r\n\t@enumerable static get ERROR_READING_TIMER_STATE() { return manager.GetLocalizedString(1131) }\t\t//Error reading timer state\r\n\t@enumerable static get ERROR_GETTING_ACTIVE_TIMERS() { return manager.GetLocalizedString(1132) }\t\t//Error getting active timers\r\n\t@enumerable static get ERROR_STARTING_TIMER() { return manager.GetLocalizedString(1133) }\t\t//Error starting timer\r\n\t@enumerable static get ERROR_STOPPING_TIMER() { return manager.GetLocalizedString(1134) }\t\t//Error stopping timer\r\n\t@enumerable static get ERROR_SETTING_OVERTIME() { return manager.GetLocalizedString(1135) }\t\t//Error setting overtime\r\n\t@enumerable static get GOOGLE_KEY_IS_NOT_VALID() { return manager.GetLocalizedString(1431) }\t\t//Please, check Google maps API key global. The current API key is not valid\r\n\t//#endregion\r\n\r\n\t//#region Planner\r\n\t@enumerable static get NO_ANY_VIEW_OPTIONS() { return manager.GetLocalizedString(1432) }\t\t\t//Please, select at least one option in properties - Month, Week, Day\r\n\t//#endregion\t\r\n\r\n\r\n\t//#region Dropdown control\r\n\t@enumerable static get ERROR_GETTING_DROPDOWN_DATA() { return manager.GetLocalizedString(1433) }\t\t\t//Error getting dropdown data for {fieldName}\r\n\t//#endregion\t\r\n\r\n\t//#region Report issue\r\n\t@enumerable static get ISSUE_HAS_BEEN_SENT_TO_SUPPORT_TEAM() { return manager.GetLocalizedString(1463) }\t\t\t\t//Issue has been sent to support team\r\n\t@enumerable static get SCREENSHOT_CAN_BE_MADE_ONLY_USING_HTTPS() { return manager.GetLocalizedString(1464) }\t\t\t//Screenshot can be made only using https\r\n\t//#endregion\r\n\r\n\t//#region Memo\r\n\t@enumerable static get WRONG_FORMAT_IN_MEMO_TIMESTAMP_FORMAT_GLOBAL() { return manager.GetLocalizedString( 1503 ) }\t\t//Wrong format {formatValue} in Memo Timestamp Format global, e.g. {defaultFormatValue}\r\n\t//#endregion\r\n\r\n}\r\n\r\nexport class LABELS {\r\n\t//#region Common\r\n\t@enumerable static get SEND() { return manager.GetLocalizedString( 1521 ) }\t\t\t\t\t\t\t\t//Send\r\n\t@enumerable static get NO_IMAGE() { return manager.GetLocalizedString( 1271 ) }\t\t\t\t\t\t\t\t//No image\r\n\t@enumerable static get ID() { return manager.GetLocalizedString( 119 ) }\t\t\t\t\t\t\t\t\t\t//Id\r\n\t@enumerable static get NAME() { return manager.GetLocalizedString( 120 ) }\t\t\t\t\t\t\t\t\t//Name\r\n\t@enumerable static get TYPE() { return manager.GetLocalizedString( 121 ) }\t\t\t\t\t\t\t\t\t//Type\r\n\t@enumerable static get MESSAGE() { return manager.GetLocalizedString( 469 ) }\t\t\t\t\t\t\t\t\t//Message\r\n\t@enumerable static get SUCCESSFUL() { return manager.GetLocalizedString( 470 ) }\t\t\t\t\t\t\t\t//Successful\r\n\t@enumerable static get WARNINGS() { return manager.GetLocalizedString( 471 ) }\t\t\t\t\t\t\t\t//Warnings\r\n\t@enumerable static get ERRORS() { return manager.GetLocalizedString( 472 ) }\t\t\t\t\t\t\t\t\t//Errors\r\n\t@enumerable static get RESULTS() { return manager.GetLocalizedString(749)}\t\t\t\t\t\t\t\t\t//Results\r\n\t@enumerable static get PROCESS() { return manager.GetLocalizedString( 754 ) }\t\t\t\t\t\t\t\t\t//Process\r\n\t@enumerable static get SEARCH_TERM() { return manager.GetLocalizedString( 122 ) }\t\t\t\t\t\t\t\t//Search Term\r\n\t@enumerable static get ROOT() { return manager.GetLocalizedString( 126 ) }\t\t\t\t\t\t\t\t\t//Root\r\n\t@enumerable static get SEARCH() { return manager.GetLocalizedString(123) }\t\t\t\t\t\t\t\t\t//Search\r\n\t@enumerable static get SEARCH_BY_NAME() { return manager.GetLocalizedString(393) }\t\t\t\t\t\t\t//Search by name\r\n\t@enumerable static get SETTINGS() { return manager.GetLocalizedString(1065) }\t\t\t\t\t\t\t\t\t//Settings\r\n @enumerable static get NEW() { return manager.GetLocalizedString( 140 ) }\t\t\t\t\t\t\t\t\t\t//New\r\n\t@enumerable static get SEARCH_WITH_DOTS() { return manager.GetLocalizedString( 144 ) }\t\t\t\t\t\t//Search...\r\n\t@enumerable static get SEARCH_GRID() { return manager.GetLocalizedString( 1106 ) }\t\t\t\t\t\t\t//Search text\r\n\t@enumerable static get ADD() { return manager.GetLocalizedString( 124 ) }\t\t\t\t\t\t\t\t\t\t//Add\r\n\t@enumerable static get CANCEL() { return manager.GetLocalizedString( 125, 'Cancel' ) }\t\t\t//Cancel\r\n\t@enumerable static get DELETE() { return manager.GetLocalizedString( 145 ) }\t\t\t\t\t\t\t\t\t//Delete\r\n\t@enumerable static get SAVE_CHANGES() { return manager.GetLocalizedString( 146 ) }\t\t\t\t\t\t\t//Save changes\r\n\t@enumerable static get SAVE_AND_CLOSE() { return manager.GetLocalizedString( 1504 ) }\t\t\t\t\t\t\t//Save & Close\r\n\t@enumerable static get ALL() { return manager.GetLocalizedString( 127 ) }\t\t\t\t\t\t\t\t\t\t//All\r\n\t@enumerable static get SHOW() { return manager.GetLocalizedString( 147 ) }\t\t\t\t\t\t\t\t\t//Show\r\n\t@enumerable static get SAVE() { return manager.GetLocalizedString( 148 ) }\t\t\t\t\t\t\t\t\t//Save\r\n\t@enumerable static get EDIT() { return manager.GetLocalizedString( 150 ) }\t\t\t\t\t\t\t\t\t//Edit\r\n\t@enumerable static get LIST() { return manager.GetLocalizedString( 151 ) }\t\t\t\t\t\t\t\t\t//List\r\n\t@enumerable static get RETURN() { return manager.GetLocalizedString( 152 ) }\t\t\t\t\t\t\t\t\t//Return\r\n\t@enumerable static get CREATE() { return manager.GetLocalizedString( 164 ) }\t\t\t\t\t\t\t\t\t//Create\r\n\t@enumerable static get RESET() { return manager.GetLocalizedString( 165 ) }\t\t\t\t\t\t\t\t\t//Reset\r\n\t@enumerable static get ENTITIES() { return manager.GetLocalizedString( 172 ) }\t\t\t\t\t\t\t\t//Entities\r\n\t@enumerable static get REVERT() { return manager.GetLocalizedString( 218 ) }\t\t\t\t\t\t\t\t\t//Revert\r\n\t@enumerable static get OK() { return manager.GetLocalizedString( 223, 'Ok' ) }\t\t\t\t\t//Ok\r\n\t@enumerable static get ACCEPT() { return manager.GetLocalizedString( 236 ) }\t\t\t\t\t\t\t\t\t//Accept\r\n\t@enumerable static get FROM() { return manager.GetLocalizedString( 228 ) }\t\t\t\t\t\t\t\t\t//From\r\n\t@enumerable static get SUBJECT() { return manager.GetLocalizedString( 230 ) }\t\t\t\t\t\t\t\t\t//Subject\r\n\t@enumerable static get DISCARD() { return manager.GetLocalizedString( 278 ) }\t\t\t\t\t\t\t\t\t//Discard\r\n\t@enumerable static get DESCRIPTION() { return manager.GetLocalizedString( 231 ) }\t\t\t\t\t\t\t\t//Description\r\n\t@enumerable static get DEFAULT() { return manager.GetLocalizedString( 304 ) }\t\t\t\t\t\t\t\t\t//Default\r\n\t@enumerable static get VALUE() { return manager.GetLocalizedString( 569 ) }\t\t\t\t\t\t\t\t\t//Value\r\n\t@enumerable static get YES() { return manager.GetLocalizedString( 358 ) }\t\t\t\t\t\t\t\t\t\t//Yes\r\n\t@enumerable static get NO() { return manager.GetLocalizedString( 359 ) }\t\t\t\t\t\t\t\t\t\t//No\r\n\t@enumerable static get NO_NAME() { return manager.GetLocalizedString( 1315 ) }\t\t\t\t\t\t\t\t//No Name\r\n\t@enumerable static get GROUP() { return manager.GetLocalizedString( 203 ) }\t\t\t\t\t\t\t\t\t//Group\r\n\t@enumerable static get RUN_QUERY() { return manager.GetLocalizedString( 492 ) }\t\t\t\t\t\t\t\t//Run query\r\n\t@enumerable static get RUN() { return manager.GetLocalizedString( 594 ) }\t\t\t\t\t\t\t\t\t\t//Run\r\n\t@enumerable static get TEST() { return manager.GetLocalizedString( 619 ) }\t\t\t\t\t\t\t\t\t//Test\r\n\t@enumerable static get RE_CREATE() { return manager.GetLocalizedString( 620 ) }\t\t\t\t\t\t\t\t//Re-create\r\n\t@enumerable static get NO_RECORD() { return manager.GetLocalizedString(680) }\t\t\t\t\t\t\t\t\t//No record\r\n\t@enumerable static get RECORD_DISABLED() { return manager.GetLocalizedString(900) }\t\t\t\t\t\t\t//Record disabled\r\n @enumerable static get DONE() { return manager.GetLocalizedString(855) }\t\t\t\t\t\t\t\t \t\t//Done\r\n\t@enumerable static get PAGE() { return manager.GetLocalizedString(922) }\t\t\t\t\t\t\t\t \t\t//Page\r\n\t@enumerable static get EMPTY() { return manager.GetLocalizedString(928) }\t\t\t\t\t\t\t\t \t\t//Empty\r\n\t@enumerable static get EMPTY_VALUE() { return manager.GetLocalizedString(1081) }\t\t\t\t\t\t\t\t//(empty)\r\n\t@enumerable static get DELTA() { return manager.GetLocalizedString( 931 ) }\t\t\t\t\t\t\t\t\t//Delta\r\n\t@enumerable static get IS_REQUIRED() { return manager.GetLocalizedString( 909 ) }\t\t\t\t\t\t\t\t//is required\r\n\t@enumerable static get VALUES() { return manager.GetLocalizedString( 936 ) }\t\t\t\t\t\t\t\t\t//values\r\n\t@enumerable static get REVERSE() { return manager.GetLocalizedString( 937 ) }\t\t\t\t\t\t\t\t\t//reverse\r\n\t@enumerable static get COPY() { return manager.GetLocalizedString(673) };\t\t\t\t\t\t\t\t\t\t//Copy\r\n\t@enumerable static get NEXT() { return manager.GetLocalizedString(941) };\t\t\t\t\t\t\t\t\t\t//Next\r\n\t@enumerable static get NEXT_NEXT() { return manager.GetLocalizedString(942) };\t\t\t\t\t\t\t\t\t//Next Next\r\n\t@enumerable static get USE() { return manager.GetLocalizedString(943) };\t\t\t\t\t\t\t\t\t\t//Use\r\n\t@enumerable static get DISTRIBUTE() { return manager.GetLocalizedString(944) };\t\t\t\t\t\t\t\t//Distribute\r\n\t@enumerable static get DAY() { return manager.GetLocalizedString(948) };\t\t\t\t\t\t\t\t\t\t//Day\r\n\t@enumerable static get MONTH() { return manager.GetLocalizedString(949) };\t\t\t\t\t\t\t\t\t//Month\r\n\t@enumerable static get THIS_FIELD_IS_REQUIRED() { return manager.GetLocalizedString( 966 ) }\t\t\t\t\t//This field is required\r\n\t@enumerable static get CHANGE() { return manager.GetLocalizedString( 712 ) }\t\t\t\t\t\t\t\t\t//Change\r\n\t@enumerable static get FEATURE_TYPE_IS_NOT_SET() { return manager.GetLocalizedString( 982 ) } //Feature type is not set\r\n\t@enumerable static get UPLOAD() { return manager.GetLocalizedString( 984 ) } \t\t\t\t//Upload\r\n\t@enumerable static get OKAY() { return manager.GetLocalizedString( 985 ) } \t\t\t\t\t//Okay\r\n\t@enumerable static get UPLOAD_FILES() { return manager.GetLocalizedString( 986 ) } \t\t\t//Upload files\r\n\t@enumerable static get TOTAL() { return manager.GetLocalizedString( 200 ) }\t\t\t\t\t\t\t\t //Total\r\n\t@enumerable static get COUNT() { return manager.GetLocalizedString( 1518 ) }\t\t\t\t\t\t\t\t //Count\r\n\t@enumerable static get SHOW_MORE() { return manager.GetLocalizedString( 1089 ) }\t\t\t\t\t\t\t\t //Show More\r\n\t@enumerable static get NEW_RECORD() { return manager.GetLocalizedString( 149 ) }\t\t\t\t\t\t\t\t//New Record\r\n\t@enumerable static get SHOW_IN_MENU() { return manager.GetLocalizedString( 1140 ) }\t\t\t\t\t\t\t//Show in menu\r\n\t@enumerable static get SHOW_IN_PORTLET() { return manager.GetLocalizedString( 1496 ) }\t\t\t\t\t\t\t//Show in portlet\r\n\t@enumerable static get LOCKED_BY_SUPER_USER() { return manager.GetLocalizedString( 1176 ) }\t\t\t\t\t//Locked by superuser\r\n\t@enumerable static get NO_RECORD_SELECTED() { return manager.GetLocalizedString( 1225 ) }\t\t\t\t\t\t//No record selected.\r\n\t@enumerable static get RECORD_LINK() { return manager.GetLocalizedString( 1233 ) }\t\t\t\t\t\t\t\t//Record link.\r\n\t@enumerable static get SPHEERES_LINK() { return manager.GetLocalizedString( 1234 ) }\t\t\t\t\t\t\t//Spheeres link\r\n\t@enumerable static get ROLLBACK() { return manager.GetLocalizedString(1251) }\t\t\t\t\t\t\t\t\t\t//Rollback\r\n\t@enumerable static get MEMOS() { return manager.GetLocalizedString(1316) }\t\t\t\t\t\t\t\t\t\t//Memos\r\n\t@enumerable static get CLICK_TO_NAVIGATE_TO_SPECIAL_SCREEN() { return manager.GetLocalizedString(1319) }\t\t//Click to navigate to Special screen\r\n\t@enumerable static get REPLY() { return manager.GetLocalizedString(1325) }\t\t\t\t\t\t\t\t\t//Reply\r\n\t@enumerable static get CC() { return manager.GetLocalizedString(1326) }\t\t\t\t\t\t\t\t\t\t//сс\r\n\t@enumerable static get BCC() { return manager.GetLocalizedString(1327) }\t\t\t\t\t\t\t\t\t\t//bcc\r\n\t@enumerable static get EMAIL_SUBJECT() { return manager.GetLocalizedString(1328) }\t\t\t\t\t\t\t//Email Subject\r\n\t@enumerable static get E_MAIL() { return manager.GetLocalizedString(1330) }\t\t\t\t\t\t\t\t\t//e-mail\r\n\t@enumerable static get FORWARD() { return manager.GetLocalizedString(1332) }\t\t\t\t\t\t\t\t\t//Forward\r\n\t@enumerable static get REPLY_TO_ALL() { return manager.GetLocalizedString(1331) }\t\t\t\t\t\t\t\t//Reply to all\r\n\t@enumerable static get TO_() { return manager.GetLocalizedString(1335) }\t\t\t\t\t\t\t\t\t\t//to\r\n\t@enumerable static get REPORT_HOURS() { return manager.GetLocalizedString(1410) }\t\t\t\t\t\t\t\t\t//Report hours\r\n\t@enumerable static get SKIP() { return manager.GetLocalizedString(1411) }\t\t\t\t\t\t\t\t\t\t//Skip\r\n\t// #endregion\r\n\r\n\t//#region Gallery Buttons\r\n\t@enumerable static get ZOOM_IN() { return manager.GetLocalizedString( 1091 ) }\t\t\t\t\t\t\t\t //Zoom In\r\n\t@enumerable static get ZOOM_OUT() { return manager.GetLocalizedString( 1092 ) }\t\t\t\t\t\t\t\t //Zoom Out\r\n\t@enumerable static get ACTUAL_SIZE() { return manager.GetLocalizedString( 1093 ) }\t\t\t\t\t\t\t\t //Actual size\r\n\t@enumerable static get ROTATE_FLIP() { return manager.GetLocalizedString( 1094 ) }\t\t\t\t\t\t\t\t //Rotate/flip to initial position\r\n\t@enumerable static get PREVIOUS() { return manager.GetLocalizedString( 1095 ) }\t\t\t\t\t\t\t\t //Previous\r\n\t@enumerable static get ROTATE_LEFT() { return manager.GetLocalizedString( 1096 ) }\t\t\t\t\t\t\t\t //Rotate left\r\n\t@enumerable static get ROTATE_RIGHT() { return manager.GetLocalizedString( 1097 ) }\t\t\t\t\t\t\t\t //Rotate right\r\n\t@enumerable static get FLIP_HORIZONTALLY() { return manager.GetLocalizedString( 1098 ) }\t\t\t\t\t\t\t\t //Flip horizontally\r\n\t@enumerable static get FLIP_VERTICALLY() { return manager.GetLocalizedString( 1099 ) }\t\t\t\t\t\t\t\t //Flip vertically\r\n\t@enumerable static get ANNOTATIONS() { return manager.GetLocalizedString( 1191 ) }\t\t\t\t\t\t\t\t //Annotations\r\n\t//#endregion\r\n\r\n\t//#region OnOf toggler\r\n\t@enumerable static get ON() { return manager.GetLocalizedString( 153 ) }\t\t\t\t\t\t\t\t\t\t//On\r\n\t@enumerable static get OFF() { return manager.GetLocalizedString( 154 ) }\t\t\t\t\t\t\t\t\t\t//Of\r\n\t//#endregion\r\n\r\n\t//#region UserMenu\r\n\t@enumerable static get MY_SETTINGS() { return manager.GetLocalizedString( 1 ) }\t\t\t\t\t\t\t\t//My Settings\r\n\t@enumerable static get MY_CONTACT_PAGE() { return manager.GetLocalizedString( 2 ) }\t\t\t\t\t\t\t//My Contact Page\r\n\t@enumerable static get MY_DAILY_STUFF() { return manager.GetLocalizedString( 3 ) }\t\t\t\t\t\t\t//My Daily Stuff\r\n\t@enumerable static get DEDUPLICATION() { return manager.GetLocalizedString( 4 ) }\t\t\t\t\t\t\t\t//Deduplication\r\n\t@enumerable static get DOWNLOAD_CLIENT() { return manager.GetLocalizedString( 5 ) }\t\t\t\t\t\t\t//Download Сlient\r\n\t@enumerable static get DOWNLOAD_MAIL_PLUGIN_32() { return manager.GetLocalizedString( 678 ) }\t\t\t\t\t//Download Mail Plugin(32-bit)\r\n\t@enumerable static get DOWNLOAD_MAIL_PLUGIN_64() { return manager.GetLocalizedString( 679 ) }\t\t\t\t\t//Download Mail Plugin(64-bit)\r\n\t@enumerable static get LOCK_SCREEN() { return manager.GetLocalizedString( 6 ) }\t\t\t\t\t\t\t\t//Lock Screen\r\n\t@enumerable static get LOG_OUT() { return manager.GetLocalizedString( 7 ) }\t\t\t\t\t\t\t\t\t//Log Out\r\n\t@enumerable static get HELP() { return manager.GetLocalizedString( 8 ) }\t\t\t\t\t\t\t\t\t\t//Help\r\n\t@enumerable static get REPORT_ISSUE() { return manager.GetLocalizedString( 1080 ) }\t\t\t\t\t\t\t//Report issue\r\n\t@enumerable static get ABOUT() { return manager.GetLocalizedString(9) }\t\t\t\t\t\t\t\t\t\t//About\r\n\t@enumerable static get LOCKED() { return manager.GetLocalizedString(1349) }\t\t\t\t\t\t\t\t\t//Locked\r\n\t@enumerable static get NOT() { return manager.GetLocalizedString(1350) }\t\t\t\t\t\t\t\t\t\t//Not\r\n\r\n\t@enumerable static get DOWNLOADS() { return manager.GetLocalizedString(697) }\t\t\t\t\t\t\t\t\t//Downloads\r\n\r\n\t@enumerable static get REQUIRED_NET_FRAMEWORK() { return manager.GetLocalizedString(698) }\t\t\t\t\t\t//*Required Microsoft .NET Framevork version: 4.5.2+\r\n\t@enumerable static get CLICK_TO_START() { return manager.GetLocalizedString(1519) }\t\t\t\t\t\t//Click to start\r\n\t\r\n\t//#endregion\r\n\r\n\t//#region Deduplication\r\n\t@enumerable static get DEDUPLICATE() { return manager.GetLocalizedString( 1428 ) }\t\t\t\t\t\t\t//Deduplicate\r\n\t@enumerable static get DEDUPLICATE_ALL() { return manager.GetLocalizedString( 1429 ) }\t\t\t\t\t\t//Deduplicate All\r\n\t@enumerable static get MATCH_ALL() { return manager.GetLocalizedString( 1427 ) }\t\t\t\t\t\t\t\t//Match All\r\n\t@enumerable static get MINIMAL_MATCH_RATE() { return manager.GetLocalizedString( 1430 ) }\t\t\t\t\t\t//Minimal match rate\r\n\t@enumerable static get DELETE_ALL() { return manager.GetLocalizedString( 1447 ) }\t\t\t\t\t\t\t\t//Delete All\r\n\t@enumerable static get CLICK_TO_DELETE_ALL_MATCH_LINKS() { return manager.GetLocalizedString( 1448 ) }\t\t//Click to delete all match links for the current entity\r\n\t//#endregion\r\n\r\n\t//#region Main menu\r\n\t@enumerable static get DESIGNERS() { return manager.GetLocalizedString( 11 ) }\t\t\t\t\t\t\t\t//Designers\r\n\t@enumerable static get LOOKUP_EDITOR() { return manager.GetLocalizedString( 12 ) }\t\t\t\t\t\t\t//Lookup editor\r\n\t@enumerable static get DATABASE_DESIGNER() { return manager.GetLocalizedString( 13 ) }\t\t\t\t\t\t//Database Designer\r\n\t@enumerable static get FORM_DESIGNER() { return manager.GetLocalizedString( 14 ) }\t\t\t\t\t\t\t//Form Designer\r\n\t@enumerable static get CANVAS_DESIGNER() { return manager.GetLocalizedString( 15 ) }\t\t\t\t\t\t\t//Canvas Designer\r\n\t@enumerable static get NETWORK_DESIGNER() { return manager.GetLocalizedString( 1295 ) }\t\t\t\t\t\t\t//Network Designer\r\n\t@enumerable static get FUNCTION_DESIGNER() { return manager.GetLocalizedString( 590 ) }\t\t\t\t\t\t\t//Function Designer\r\n\t@enumerable static get FIELD_COLLECTION_DESIGNER() { return manager.GetLocalizedString( 16 ) }\t\t\t\t//FieldCollection Designer\r\n\t@enumerable static get SYSTEM() { return manager.GetLocalizedString( 17 ) }\t\t\t\t\t\t\t\t\t//SYSTEM\r\n\t@enumerable static get ENVIRONMENT_MANAGER() { return manager.GetLocalizedString( 18 ) }\t\t\t\t\t\t//Environment Manager\r\n\t@enumerable static get TRANSLATION_EDITOR() { return manager.GetLocalizedString( 509 ) }\t\t\t\t\t\t//Translation Editor\r\n\t//#endregion\r\n\r\n\t//#region Record sharing\r\n\t@enumerable static get PRIMARY_GROUP() { return manager.GetLocalizedString( 607 ) }\t\t\t\t\t\t\t//Primary group\r\n\t@enumerable static get SELECT_GROUP() { return manager.GetLocalizedString( 608 ) } //select group\r\n\t@enumerable static get CLICK_TO_LOCK_GROUP() { return manager.GetLocalizedString( 1483 ) }\t\t\t\t\t//Click to lock this group for this profile\r\n\t@enumerable static get GROUP_IS_LOCKED() { return manager.GetLocalizedString( 1484 ) }\t\t\t\t\t\t//The group is locked to this profile\r\n\t@enumerable static get USED_IN_PROFILES() { return manager.GetLocalizedString( 1485 ) }\t\t\t\t\t\t//Used in {profile list separate by come} profile(s)\r\n\t//#endregion\r\n\r\n\t//#region Search screen\r\n\t@enumerable static get RECENT() { return manager.GetLocalizedString( 117 ) }\t\t\t\t\t\t\t\t\t//Recent\r\n\t@enumerable static get FAVORITES() { return manager.GetLocalizedString( 118 ) }\t\t\t\t\t\t\t\t//Favorites\r\n\t@enumerable static get ONLY_LAST_90() { return manager.GetLocalizedString( 128 ) }\t\t\t\t\t\t\t//Only last 90 days\r\n\t@enumerable static get ONLY_LAST_90_ARE_SHOWN() { return manager.GetLocalizedString( 576 ) }\t\t\t\t\t//Only records modified last 90 days are shown. Click to show all records\r\n\t@enumerable static get ONLY_LAST_90_ARE_INACTIVE() { return manager.GetLocalizedString( 577 ) }\t\t\t\t//All records are shown. Click to show records modified last 90 days\r\n\t@enumerable static get ENABLE_FILTER() { return manager.GetLocalizedString( 565 ) }\t\t\t\t\t\t\t//Enable filter\r\n\t@enumerable static get LIFESTATUS() { return manager.GetLocalizedString( 129 ) }\t\t\t\t\t\t\t\t//Life Status\r\n\t@enumerable static get MODE() { return manager.GetLocalizedString( 130 ) }\t\t\t\t\t\t\t\t\t//Mode\r\n\t@enumerable static get FAST_SEARCH() { return manager.GetLocalizedString( 131 ) }\t\t\t\t\t\t\t\t//Fast search\r\n\t@enumerable static get PHONETIC_SEARCH() { return manager.GetLocalizedString( 132 ) }\t\t\t\t\t\t\t//Phonetic search\r\n\t@enumerable static get SEARCH_MODES() { return manager.GetLocalizedString( 133 ) }\t\t\t\t\t\t\t//Search modes\r\n\t@enumerable static get SEARCH_FIELDS() { return manager.GetLocalizedString( 134 ) }\t\t\t\t\t\t\t//Search fields\r\n\t@enumerable static get SEARCH_SCREEN_PAGINATION() { return manager.GetLocalizedString( 135 ) }\t\t\t\t//Showing {StartRecordNumber} to {EndRecordNumber} of {TotalRecords} rows\r\n\t@enumerable static get TOTAL_SEARCH() { return manager.GetLocalizedString( 536 ) }\t\t\t\t\t\t\t//Total search\r\n\t@enumerable static get TYPES() { return manager.GetLocalizedString( 566 ) }\t\t\t\t\t\t\t\t\t//Total search\r\n\t@enumerable static get NO_RECORDS_FOUND() { return manager.GetLocalizedString( 957 ) }\t\t\t\t\t\t//No records found\r\n\t@enumerable static get REMOVE_DUPLICATES() { return manager.GetLocalizedString(1052)};\t\t\t\t\t\t//Remove duplicates\r\n\t@enumerable static get MERGE() { return manager.GetLocalizedString(1053)};\t\t\t\t\t\t\t\t\t//Merge\r\n\r\n\t@enumerable static get OFF_FILTER_BY_RELATIONS() { return manager.GetLocalizedString( 768 ) }\t\t\t\t\t//Filter off. Click to Filter by relations\r\n\t@enumerable static get FILTER_BY_RELATIONS() { return manager.GetLocalizedString( 769 ) }\t\t\t\t\t\t//Filtered by relations. Click to filter by main relations\r\n\t@enumerable static get FILTER_BY_MAIN_RELATIONS() { return manager.GetLocalizedString( 770 ) }\t\t\t\t//Filtered by main relations. Click to turn off the filter\r\n\t@enumerable static get NO_RELATION_TYPE() { return manager.GetLocalizedString( 774 ) }\t\t\t\t //No relation type\r\n\t@enumerable static get SELECT_TWO_RECORDS() { return manager.GetLocalizedString( 1016 ) }\t\t\t\t\t\t//Select two records and click this button to merge them\r\n\t@enumerable static get FILTER_BY_LINKING_CONDITIONS() { return manager.GetLocalizedString( 1110 ) }\t\t\t\t\t\t//Filtered by the condition. Click to turn off the filter\r\n\t@enumerable static get FILTER_BY_MAIN_RELATIONS2() { return manager.GetLocalizedString( 1111 ) }\t\t\t\t//Filtered by main relations. Click to filter by the condition\r\n\t@enumerable static get ONLY_LINKED_DOCUMENTS_ARE_SHOWN() { return manager.GetLocalizedString( 1508 ) }\t\t//Only linked documents are shown\r\n\t@enumerable static get CLICK_TO_START_BARCODE_SCANNING() { return manager.GetLocalizedString( 1249 ) }\t\t\t//Click to start barcode scanning\r\n\t@enumerable static get CLICK_TO_START_BULK_BARCODE_SCANNING() { return manager.GetLocalizedString( 1250 ) }\t//Click to start bulk barcode scanning\r\n\t@enumerable static get VALUE_CANNOT_BE_CONVERTED_TO_BARCODE() { return manager.GetLocalizedString( 1403 ) }\t//Value cannot be converted to barcode\r\n\t@enumerable static get SPECIAL_CHARACTERS() { return manager.GetLocalizedString( 1303 ) }\t\t\t\t\t\t//Special characters: \\nUse \"&\" to search for value1 AND value2 \\nUse \"|\" to search for value1 OR value2 \\nUse \"-\" to search for value1 AND NOT value2 \\nUse double quotes \"\" to search for the exact value \\n\\nUse \"\\\" to search with special characters listed above \\nExample: \\& \\- \\| \\\"\r\n\t//#endregion\r\n\r\n\t//#region Fast Filters\r\n\t@enumerable static get FILTERING_OPTIONS_NOT_FOUND() { return manager.GetLocalizedString( 584 ) }\t\t\t\t//Filtering options not found\r\n\t@enumerable static get MIN() { return manager.GetLocalizedString( 585 ) }\t\t\t\t\t\t\t\t\t\t//Min\r\n\t@enumerable static get MAX() { return manager.GetLocalizedString( 586 ) }\t\t\t\t\t\t\t\t\t\t//Max\r\n\t@enumerable static get CLEAR_DATE() { return manager.GetLocalizedString( 587 ) }\t\t\t\t\t\t\t\t//Clear date\r\n\t@enumerable static get CHANGE_DATE() { return manager.GetLocalizedString( 588 ) }\t\t\t\t\t\t\t\t//Change date\r\n\t@enumerable static get FILTER_RANGE_ERROR() { return manager.GetLocalizedString( 589 ) }\t\t\t\t\t\t//Value must be within the range {MinValue} and {MaxValue}\r\n\t//#endregion\r\n\r\n\t//#region Grid\r\n\t@enumerable static get DEFAULT_VIEW() { return manager.GetLocalizedString( 136 ) }\t\t\t\t\t\t\t//Default View\r\n\t@enumerable static get TABLEVIEW_NEW() { return manager.GetLocalizedString( 137 ) }\t\t\t\t\t\t\t//TableView New\r\n\t@enumerable static get TABLEVIEW_EDIT() { return manager.GetLocalizedString( 138 ) }\t\t\t\t\t\t\t//TableView Edit\r\n\t@enumerable static get LOCK_TABLEVIEW() { return manager.GetLocalizedString( 1356 ) }\t\t\t\t\t\t\t//Lock TableView\r\n\t@enumerable static get UNLOCK_TABLEVIEW() { return manager.GetLocalizedString( 1357 ) }\t\t\t\t\t\t//Unlock TableView\r\n\t@enumerable static get TABLEVIEW_COPY() { return manager.GetLocalizedString( 558 ) }\t\t\t\t\t\t\t//TableView Copy\r\n\t@enumerable static get TABLEVIEW_DELETE() { return manager.GetLocalizedString( 139 ) }\t\t\t\t\t\t//TableView Delete\r\n\t@enumerable static get ADD_AND_LINK() { return manager.GetLocalizedString( 141 ) }\t\t\t\t\t\t\t//Add & Link {EntityName}\r\n\t@enumerable static get EXPORT_TO_CSV() { return manager.GetLocalizedString( 493 ) }\t\t\t\t\t\t\t//Export to CSV\r\n\t@enumerable static get EXPORT_TO_EXCEL() { return manager.GetLocalizedString( 494 ) }\t\t\t\t\t\t\t//Export to EXCEL\r\n\t@enumerable static get LINK() { return manager.GetLocalizedString( 142 ) }\t\t\t\t\t\t\t\t\t//Link {entityName}\r\n\t@enumerable static get LINK_PARENT() { return manager.GetLocalizedString( 1137 ) }\t\t\t\t\t\t\t\t//Link Parent\r\n\t@enumerable static get ADD_QUERY() { return manager.GetLocalizedString( 143 ) }\t\t\t\t\t\t\t\t//Add Query\r\n\t@enumerable static get SHOW_ALL_COLUMNS() { return manager.GetLocalizedString( 582 ) }\t\t\t\t\t//Show all columns\r\n\t@enumerable static get HIDE_COLUMNS_BY_PRIORITY() { return manager.GetLocalizedString(583) }\t\t\t//Hide columns by priority\r\n\t@enumerable static get SHOW_RETIRED() { return manager.GetLocalizedString(661) }\t\t\t\t\t\t//Show retired\r\n\t@enumerable static get HIDE_RETIRED() { return manager.GetLocalizedString(662) }\t\t\t\t\t\t//Hide retired\r\n\t@enumerable static get EDIT_ALL() { return manager.GetLocalizedString(1000) }\t\t\t\t\t\t\t//Edit all\r\n\t@enumerable static get SAVE_ALL() { return manager.GetLocalizedString(1001) }\t\t\t\t\t\t\t//Save all\r\n\t@enumerable static get LINKED_RECORD_IS_RETIRED() { return manager.GetLocalizedString(1142) }\t\t\t//Linked record is retired\r\n\t@enumerable static get LINKED_RECORD_REQUIRED() { return manager.GetLocalizedString(1446) }\t\t\t//Linked record required\r\n\t@enumerable static get NO_ANY_CUSTOM_FIELDS() { return manager.GetLocalizedString(1143) }\t\t\t\t//Link table does not have any Custom fields\r\n\r\n\t@enumerable static get SELECT_LINK() { return manager.GetLocalizedString(938) }\t\t\t\t\t\t //Select a link\r\n\t@enumerable static get COPY_LATEST() { return manager.GetLocalizedString(1169) }\t\t\t\t\t\t//Copy latest\r\n\t@enumerable static get SCAN_AND_LINK() { return manager.GetLocalizedString(1246) }\t\t\t\t\t\t//Scan & Link\r\n\t@enumerable static get EDIT_SORT_DESCRIPTION() { return manager.GetLocalizedString(1340) }\t\t\t\t//Click to edit the description\r\n\t@enumerable static get SORT_REMOVE_DESCRIPTION() { return manager.GetLocalizedString(1342) }\t\t\t//Click to remove the description\r\n\t@enumerable static get SORT_ADD_NEW_DESCRIPTION() { return manager.GetLocalizedString(1343) }\t\t\t//Click to add a new description\r\n\t@enumerable static get CLICK_TO_PROGRESS() { return manager.GetLocalizedString(1513) }\t\t\t//Click to progress\r\n\r\n\t//#endregion\r\n\r\n //#region Kanban board\r\n\t@enumerable static get KANBAN_SEARCH() { return manager.GetLocalizedString(748) }\t\t\t\t\t\t// Kanban Search\r\n\t@enumerable static get KANBAN_TYPE_HIERARCHY_VIOLATION() { return manager.GetLocalizedString(1219) }\t// Cannot create a new record: Type hierarchy violation\r\n\t//#endregion\r\n\r\n\t//#region Screens\r\n\t@enumerable static get PREVIOUS_RECORD() { return manager.GetLocalizedString( 538 ) }\t\t\t\t\t\t\t//Next record\r\n\t@enumerable static get NEXT_RECORD() { return manager.GetLocalizedString( 539 ) }\t\t\t\t\t\t\t\t//Previous record\r\n\t@enumerable static get FOLLOW_LIST() { return manager.GetLocalizedString( 564 ) }\t\t\t\t\t\t\t\t//Follow List\r\n\t//#endregion\t\r\n\r\n\t//#region Make personal\r\n\t@enumerable static get MAKE_PERSONAL() { return manager.GetLocalizedString( 155 ) }\t\t\t\t\t\t\t//Make personal\r\n\t//#endregion\r\n\r\n\t//#region Product configurator\r\n\t@enumerable static get THERE_ARE_NO_PRODUCTS_FOUND() { return manager.GetLocalizedString( 959 ) }\t\t\t//There are no products found\r\n\t@enumerable static get THERE_ARE_NO_PRODUCT_PARTS_FOUND() { return manager.GetLocalizedString( 963 ) }\t\t//There are no product parts found\r\n\t@enumerable static get NO_GROUP_NAME() { return manager.GetLocalizedString( 965 ) }\t\t\t\t\t\t\t//No group name\r\n\t@enumerable static get CLASS_NOT_SELECTED() { return manager.GetLocalizedString( 832 ) }\t\t\t\t\t//Class not selected\r\n\t@enumerable static get CLASS_RECORD_SHOULD_BE_SELECTED() { return manager.GetLocalizedString(973) }\t\t\t//Record of type \"Class\" should be selected\r\n\t@enumerable static get INCLUSIVE_PRODUCTS() { return manager.GetLocalizedString(1102) }\t\t\t\t\t\t//Inclusive products\r\n\t@enumerable static get INCOMPATIBLE_PRODUCTS() { return manager.GetLocalizedString(1103) }\t\t\t\t\t//Incompatible products\r\n\t@enumerable static get DECLINE() { return manager.GetLocalizedString(1104) }\t\t\t\t\t\t //Decline\r\n\t@enumerable static get NOT_SELECTED() { return manager.GetLocalizedString((1118))};\t\t\t\t\t\t\t//Not Selected\r\n\t@enumerable static get SHOW_ALTERNATIVES() { return manager.GetLocalizedString((1145))};\t\t\t\t\t//Show alternatives\r\n\t@enumerable static get ORDERED_PRODUCTS() { return manager.GetLocalizedString((1147))};\t\t\t\t\t\t//Ordered products\r\n\t@enumerable static get SELECT_PRODUCT() { return manager.GetLocalizedString((1148)) };\t\t\t\t\t\t//Select product\r\n\t@enumerable static get CHOOSE_CONFIGURATION() { return manager.GetLocalizedString((1149)) };\t\t\t\t//Choose configuration\r\n\t@enumerable static get NEW_CONFIGURATION() { return manager.GetLocalizedString((1150))};\t\t\t\t\t//New configuration\r\n\t@enumerable static get ALTERATION() { return manager.GetLocalizedString((1151))};\t\t\t\t\t\t\t//Alteration\r\n\t@enumerable static get NEW_PRODUCT() { return manager.GetLocalizedString((1152)) };\t\t\t\t\t\t\t//New product\r\n\t@enumerable static get PRICES() { return manager.GetLocalizedString((1162)) };\t\t\t\t\t\t\t\t//Prices\r\n\t@enumerable static get INCOMPATIBLE_WITH() { return manager.GetLocalizedString((1167)) };\t\t\t\t\t//Incompatible with:\r\n\t@enumerable static get ADD_NEW() { return manager.GetLocalizedString((1168)) };\t\t\t\t\t\t\t\t//Add new\r\n\t@enumerable static get OTHER() { return manager.GetLocalizedString((1203)) };\t\t\t\t\t\t\t\t//Other\r\n\t@enumerable static get PRODUCT_DOES_NOT_EXIST() { return manager.GetLocalizedString((1186))};\t\t\t\t//Product does not exist\r\n\t@enumerable static get PRODUCTS_DO_NOT_EXIST() { return manager.GetLocalizedString((1187))};\t\t\t\t//There are products that do not exist\r\n\t@enumerable static get CANT_RESOLVE_CONFLICTS_FOR_NESTED_DEFAULT_PRODUCTS() { return manager.GetLocalizedString((1199)) };\t//Can't resolve conflicts between nested default products:\r\n\t@enumerable static get EXTRA_PRODUCTS() { return manager.GetLocalizedString((1239))};\t\t\t\t\t\t//Extra Products\r\n\t@enumerable static get ADD_AS_EXTRA_PRODUCT() { return manager.GetLocalizedString((1505)) };\t\t\t\t//Add as Extra Product\r\n\t@enumerable static get UNDEFINED() { return manager.GetLocalizedString((1479))};\t\t\t\t\t\t\t//Undefined\r\n\t@enumerable static get PRODUCT_LIST_IS_EMPTY() { return manager.GetLocalizedString((1297))};\t\t\t\t//Product list is empty\r\n\t@enumerable static get USE_DESCRIPTION() { return manager.GetLocalizedString((1311))};\t\t\t\t\t\t//Use description\r\n\t@enumerable static get ALTERNATIVE_PRICE() { return manager.GetLocalizedString((1467))};\t\t\t\t\t\t\t\t\t\t\t\t\t//Alternative Price\r\n\t@enumerable static get COULD_NOT_CALCULATE_ALTERNATIVE_PRICE() { return manager.GetLocalizedString((1468))};\t\t\t\t\t\t\t\t//Could not calculate Alternative Price\r\n\t@enumerable static get THE_TRANSLATION_ALTERNATIVE_PRICE_WITH_CODE_WILL_BE_USED_ON_PCF() { return manager.GetLocalizedString((1469))};\t\t//The translation \"Alternative Price\" with code {CODE} will be used on PCF\r\n\t@enumerable static get IMPOSSIBLE_TO_SELECT() { return manager.GetLocalizedString(1474) };\t\t\t//Impossible to select. More than one record was found\r\n\t//#endregion\r\n\r\n\t//#region Canvas designer\r\n\t@enumerable static get EXECUTE() { return manager.GetLocalizedString( 157 ) }\t\t\t\t\t\t\t\t\t//Execute\r\n\t@enumerable static get ENABLE_SOCKET_VALIDATION() { return manager.GetLocalizedString( 158 ) }\t\t\t\t//Enable sockets validation\r\n\t//#endregion\r\n\r\n\t//Function designer\r\n\t@enumerable static get IN() { return manager.GetLocalizedString( 877 ) }\t\t\t\t\t\t\t\t \t//In\r\n\t@enumerable static get OUT() { return manager.GetLocalizedString( 878 ) }\t\t\t\t\t\t\t\t \t//Out\r\n\t@enumerable static get METHODS() { return manager.GetLocalizedString( 591 ) }\t\t\t\t\t\t\t\t //Methods\r\n\r\n\r\n\t//Environment manager\r\n\t@enumerable static get DATABASES() { return manager.GetLocalizedString(1181) }\t\t\t\t\t\t\t\t//Databases\r\n\t@enumerable static get GUEST_PAGE() { return manager.GetLocalizedString(1182) }\t\t\t\t\t\t\t\t//Guest Page\r\n\t@enumerable static get DATABASE_LIST() { return manager.GetLocalizedString( 159 ) }\t\t\t\t\t\t\t//List of databases in CyberConfig\r\n\t@enumerable static get DATABASE_NAME() { return manager.GetLocalizedString( 160, 'Database Name' ) }\t\t\t\t\t\t\t//Database name\r\n\t@enumerable static get SERFER_INFO() { return manager.GetLocalizedString( 161 ) }\t\t\t\t\t\t\t\t//Server info\r\n\t@enumerable static get DATABASE_TYPE() { return manager.GetLocalizedString( 162 ) }\t\t\t\t\t\t\t//Database type\r\n\t@enumerable static get CYBER_APP_USER() { return manager.GetLocalizedString( 163 ) }\t\t\t\t\t\t\t//CyberApp User\r\n\t@enumerable static get DB_SERVER_NAME() { return manager.GetLocalizedString( 166 ) }\t\t\t\t\t\t\t//DB servername\r\n\t@enumerable static get LOGIN_NAME() { return manager.GetLocalizedString( 167, 'Username' ) }\t\t//Login name\r\n\t@enumerable static get PASSWORD() { return manager.GetLocalizedString( 168, 'Password' ) }\t\t//Password\r\n\t@enumerable static get ENVIRONMENTS() { return manager.GetLocalizedString( 1307 ) }\t\t\t\t\t\t\t//Environments\r\n\t@enumerable static get NEW_DATABASE_NAME() { return manager.GetLocalizedString( 1308 ) }\t\t\t\t\t\t//New database name\r\n\t@enumerable static get SPECIAL_CHARACTERS_NOT_ALLOWED() { return manager.GetLocalizedString( 1312 ) }\t\t\t//You can use only alphabetic characters, numbers and \"_\" without space\r\n\t@enumerable static get NEW_ENVIRONMENT_WILL_BE_COPIED() { return manager.GetLocalizedString( 1313 ) }\t\t\t//A new environment will be copied from current one. Enter a name for a new environment\r\n\r\n\t//FormDesigner\r\n\t@enumerable static get PREVIEW() { return manager.GetLocalizedString( 169 ) }\t\t\t\t\t\t\t\t\t//Preview\r\n\t@enumerable static get REFRESH() { return manager.GetLocalizedString( 170 ) }\t\t\t\t\t\t\t\t\t//Refresh\r\n\t@enumerable static get MENU_START() { return manager.GetLocalizedString( 171 ) }\t\t\t\t\t\t\t\t//Menu start\r\n\r\n\t@enumerable static get TEMPLATE() { return manager.GetLocalizedString( 173 ) }\t\t\t\t\t\t\t\t//Template\r\n\t@enumerable static get CREATE_NEW_PLANNERTAB() { return manager.GetLocalizedString( 914 ) }\t\t\t\t//Create new PlannerTab\r\n\t@enumerable static get ADD_SUB_LEVEL_PLANNER() { return manager.GetLocalizedString( 915 ) }\t\t\t\t//Add sub level planner\r\n\t@enumerable static get DELETE_PLANNER_LEVEL() { return manager.GetLocalizedString( 916 ) }\t\t\t\t\t//Remove planner level\r\n\t@enumerable static get CONTROLS() { return manager.GetLocalizedString( 923 ) }\t\t\t\t\t\t\t//Controls\r\n\t@enumerable static get REMOVE_CONTROL() { return manager.GetLocalizedString( 924 ) }\t\t\t\t\t\t//Remove control\r\n\t@enumerable static get EDIT_SUB_TABLE() { return manager.GetLocalizedString( 1494 ) }\t\t\t\t\t\t//Edit the Sub-table view\r\n\r\n\t//Dashboard\r\n\t@enumerable static get LAYOUT() { return manager.GetLocalizedString( 1259 ) }\t\t\t\t\t\t\t\t//Layout\r\n\t@enumerable static get ADD_SUBFORM() { return manager.GetLocalizedString( 1260 ) }\t\t\t\t\t\t\t//Add subform\r\n\t@enumerable static get APPLY() { return manager.GetLocalizedString( 1261 ) }\t\t\t\t\t\t\t\t//Apply\r\n\r\n\t//Control editor\r\n\t@enumerable static get LABEL_POSITION() { return manager.GetLocalizedString( 174 ) }\t\t\t\t\t\t\t//Label position\r\n @enumerable static get CONTROL_DESCRIPTION() { return manager.GetLocalizedString( 175 ) }\t\t\t\t\t\t//Control description\r\n\t@enumerable static get FIELD() { return manager.GetLocalizedString( 176 ) }\t\t\t\t\t\t\t\t\t//Field\r\n\t@enumerable static get ENTITY() { return manager.GetLocalizedString( 177 ) }\t\t\t\t\t\t\t\t\t//Entity\r\n\t@enumerable static get MASK() { return manager.GetLocalizedString( 178 ) }\t\t\t\t\t\t\t\t\t//Mask\r\n\t@enumerable static get SUB_ENTITY() { return manager.GetLocalizedString( 179 ) }\t\t\t\t\t\t\t\t//SubEntity\r\n @enumerable static get MEMO_DESCRIPTION() { return manager.GetLocalizedString( 646 ) }\t\t\t\t\t//Put description here\r\n @enumerable static get USE_FIELD_NAME() { return manager.GetLocalizedString(875) }\t\t\t\t\t //Use field name\r\n\t@enumerable static get SUBJECT_ENTITY() { return manager.GetLocalizedString(1475) }\t\t\t\t\t //Subject entity\r\n\t@enumerable static get SUBJECT_FIELD() { return manager.GetLocalizedString(1477) }\t\t\t\t\t //Subject field\r\n\t@enumerable static get SCREEN_SUBJECT() { return manager.GetLocalizedString(1478) }\t\t\t\t\t //Screen subject\r\n\t@enumerable static get TODO_ENTITY() { return manager.GetLocalizedString(1216) }\t\t\t\t\t\t// Todo entity\r\n\t@enumerable static get TODO_TYPE() { return manager.GetLocalizedString(1217) }\t\t\t\t\t\t\t// Todo type\r\n\t@enumerable static get TODO_FIELD() { return manager.GetLocalizedString(1218) }\t\t\t\t\t\t// Todo field\r\n\r\n //QueryBuilder\r\n\t@enumerable static get SELECT_TABLE_AND_FIELDS() { return manager.GetLocalizedString( 180 ) }\t\t\t\t//Select Table & Fields, Sort and Group\r\n\t@enumerable static get FILTERS() { return manager.GetLocalizedString( 181 ) }\t\t\t\t\t\t\t\t//Filters\r\n\t@enumerable static get COLUMN_ORDER_AND_SETTINGS() { return manager.GetLocalizedString( 182 ) }\t\t\t\t//Column Order & Settings\r\n\t@enumerable static get QUERY_RESULT() { return manager.GetLocalizedString( 183 ) }\t\t\t\t\t\t\t//Query Result\r\n\t@enumerable static get FIELDS() { return manager.GetLocalizedString( 184 ) }\t\t\t\t\t\t\t\t//Fields\r\n\t@enumerable static get OPTIONS() { return manager.GetLocalizedString( 185 ) }\t\t\t\t\t\t\t\t//Options\r\n\t@enumerable static get JOIN_TYPE() { return manager.GetLocalizedString( 186 ) }\t\t\t\t\t\t\t\t//Join type\r\n\t@enumerable static get MAIN_OPTIONS() { return manager.GetLocalizedString( 187 ) }\t\t\t\t\t\t\t//Main options\r\n\t@enumerable static get NORMAL() { return manager.GetLocalizedString( 188 ) }\t\t\t\t\t\t\t\t//Normal\r\n\t@enumerable static get EXCLUSIVE() { return manager.GetLocalizedString( 189 ) }\t\t\t\t\t\t\t\t//Exclusive\r\n\t@enumerable static get INCLUSIVE() { return manager.GetLocalizedString( 190 ) }\t\t\t\t\t\t\t\t//Inclusive\r\n\t@enumerable static get MAIN_ONLY() { return manager.GetLocalizedString( 191 ) }\t\t\t\t\t\t\t\t//Main only\r\n\t@enumerable static get EXCLUDE_MAIN() { return manager.GetLocalizedString( 192 ) }\t\t\t\t\t\t\t//Exclude Main\r\n\t@enumerable static get SELECT_ALL() { return manager.GetLocalizedString( 193 ) }\t\t\t\t\t\t\t//Select All\r\n\t@enumerable static get AND() { return manager.GetLocalizedString( 194 ) }\t\t\t\t\t\t\t\t\t//And\r\n\t@enumerable static get OR() { return manager.GetLocalizedString( 195 ) }\t\t\t\t\t\t\t\t\t//Or\r\n\t@enumerable static get ADD_RULE() { return manager.GetLocalizedString( 196 ) }\t\t\t\t\t\t\t\t//Add rule\r\n\t@enumerable static get ADD_GROUP() { return manager.GetLocalizedString( 197 ) }\t\t\t\t\t\t\t\t//Add group\r\n\t@enumerable static get FORMAT() { return manager.GetLocalizedString( 198 ) }\t\t\t\t\t\t\t\t//Format\r\n\t@enumerable static get DISPLAY_PRIORITY() { return manager.GetLocalizedString( 199 ) }\t\t\t\t\t\t//Display priority\r\n\t@enumerable static get SUBTOTAL() { return manager.GetLocalizedString( 939 ) } \t\t\t\t\t\t\t//Subtotal\r\n\t@enumerable static get AVERAGE() { return manager.GetLocalizedString( 201 ) }\t\t\t\t\t\t\t\t//Average\r\n\t@enumerable static get WRAP_FROM_HERE() { return manager.GetLocalizedString( 202 ) }\t\t\t\t\t\t//Wrap from here\r\n\t@enumerable static get CROSS_TABLE() { return manager.GetLocalizedString( 541 ) }\t\t\t\t\t\t\t//Cross table\r\n\t@enumerable static get SCREEN() { return manager.GetLocalizedString( 666 ) }\t\t\t\t\t\t\t\t//Screen\r\n\t@enumerable static get SELECT_CUSTOM_SCREEN() { return manager.GetLocalizedString( 667 ) }\t\t\t\t\t//select the custom screen...\r\n\t@enumerable static get CUSTOM_SCREEN() { return manager.GetLocalizedString( 668 ) }\t\t\t\t\t\t\t//Custom screen\r\n\t@enumerable static get INVERSE() { return manager.GetLocalizedString(714) }\t\t\t\t\t\t\t\t\t//Custom screen\t\t\t\t\t\t\t//Custom screen\r\n\t@enumerable static get LINK_DIRECTION() { return manager.GetLocalizedString(1074) }\t\t\t\t\t\t\t//Link direction\r\n\t@enumerable static get LEFT_TO_RIGHT() { return manager.GetLocalizedString(1075) }\t\t\t\t\t\t\t//Left to right\r\n\t@enumerable static get RIGHT_TO_LEFT() { return manager.GetLocalizedString(1076) }\t\t\t\t\t\t\t//Right to left\r\n\t@enumerable static get TEMPLATE_SCREEN() { return manager.GetLocalizedString(1208) }\t\t\t\t\t\t//Template screen\r\n\t@enumerable static get SELECT_TEMPLATE_SCREEN() { return manager.GetLocalizedString(1209) }\t\t\t\t\t//select the template screen...\r\n\t@enumerable static get BOTH() { return manager.GetLocalizedString(1238) }\t\t\t\t\t\t\t //Both\r\n\t@enumerable static get ARROW() { return manager.GetLocalizedString(1272) }\t\t\t\t\t\t\t //Arrow\r\n\t@enumerable static get SELECT_FIRST() { return manager.GetLocalizedString(1509) }\t\t\t\t\t\t\t //Select first\r\n\t@enumerable static get RECORDS() { return manager.GetLocalizedString(1510) }\t\t\t\t\t\t\t //records\r\n\r\n\t//Link List\r\n\t@enumerable static get OWNER_IS_PLANNER() { return manager.GetLocalizedString(709) }\t\t\t\t\t\t//Owner is a planner. Click to disable planning\r\n\t@enumerable static get OWNER_IS_NOT_PLANNER() { return manager.GetLocalizedString(710) }\t\t\t\t\t//Owner is not a planner. Click to enable planning\r\n\r\n\t//Drop\r\n\t@enumerable static get DROP_DOCUMENT_HERE() { return manager.GetLocalizedString( 204 ) }\t\t\t\t\t\t//Drop documents here\r\n\t@enumerable static get DROP_EXCEL_DOCUMENT_HERE() { return manager.GetLocalizedString( 1252 ) }\t\t\t\t//Drop Excel documents here\r\n\t@enumerable static get SELECT_A_TYPE_FOR_ALL_RECORDS() { return manager.GetLocalizedString( 897 ) }\t\t\t//Select a type for all records\r\n\t@enumerable static get HAVE_TO_OPEN_RECORD() { return manager.GetLocalizedString( 1078 ) }\t\t\t//You have to open record for uploading document\r\n\t@enumerable static get ROWS_AFFECTED() { return manager.GetLocalizedString( 1236 ) }\t\t\t\t\t\t//rows affected\r\n\t@enumerable static get MISSING_FIELDS() { return manager.GetLocalizedString( 1237 ) }\t\t\t\t\t\t//Missing fields\r\n\t@enumerable static get CANNOT_UPLOAD_MULTIPLE_FILES() { return manager.GetLocalizedString( 1254 ) }\t\t\t//Cannot upload multiple files for import\r\n\t@enumerable static get MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED() { return manager.GetLocalizedString( 1266 ) } // Maximum amount of linked documents reached\r\n\t@enumerable static get MAXIMUM_LINKED_DOCUMENTS_REACHED_ONLY_FILES_WERE_UPLOADED() { return manager.GetLocalizedString( 1267 ) } // Maximum linked documents reached. Only {filesAmount} files were uploaded\r\n\r\n\t//Image\r\n\t@enumerable static get UPLOAD_IMAGE() { return manager.GetLocalizedString( 205 ) }\t\t\t\t\t\t\t//Upload image\r\n\t@enumerable static get SNAP_PHOTO() { return manager.GetLocalizedString( 1269 ) }\t\t\t\t\t\t\t\t//Snap Photo\r\n\r\n\t//Canvas Designer\r\n\r\n\t@enumerable static get DISABLE_ON_DELETE() { return manager.GetLocalizedString( 593 ) }\t\t\t\t\t\t//Disable on delete\r\n\t@enumerable static get IGNORE_MISSING_SUB_KEY() { return manager.GetLocalizedString( 905 ) }\t\t\t\t\t//Ignore missing subkeys\r\n\r\n\t//Document\r\n\t@enumerable static get DOWNLOAD() { return manager.GetLocalizedString( 632 ) }\r\n\t@enumerable static get CHECKOUT() { return manager.GetLocalizedString( 633 ) }\r\n\t@enumerable static get CHECKIN() { return manager.GetLocalizedString( 634 ) }\r\n\t@enumerable static get LOCK() { return manager.GetLocalizedString( 635 ) }\r\n\t@enumerable static get UNLOCK() { return manager.GetLocalizedString( 636 ) }\r\n\t@enumerable static get ENABLE_VERSION() { return manager.GetLocalizedString( 637 ) }\r\n\t@enumerable static get PRINT_ON_DESKTOP() { return manager.GetLocalizedString( 1520 ) }\r\n\t@enumerable static get DISABLE_VERSION() { return manager.GetLocalizedString(638) }\r\n\t@enumerable static get NO_DATA_AVAILABLE() { return manager.GetLocalizedString(649) }\r\n\t@enumerable static get GENERATE_PDF() { return manager.GetLocalizedString(892) }\r\n\t@enumerable static get SAVE_PDF() { return manager.GetLocalizedString(1470) }\t\t\t\t\t\t\t\t\t//Save PDF\r\n\r\n\t//Field security\r\n\t@enumerable static get USER() { return manager.GetLocalizedString( 206 ) }\t\t\t\t\t\t\t\t\t//User\r\n\t@enumerable static get FIELD_COLLECTION() { return manager.GetLocalizedString( 207 ) }\t\t\t\t\t\t//Field Collection\r\n\t@enumerable static get DATA_PROTECTION_OFFICER() { return manager.GetLocalizedString( 208 ) }\t\t\t\t\t//Data Protection Officer\r\n\t@enumerable static get VAULT_OWNER() { return manager.GetLocalizedString( 209 ) }\t\t\t\t\t\t\t\t//Vault Owner\r\n\t@enumerable static get SAFE_OVNER() { return manager.GetLocalizedString( 210 ) }\t\t\t\t\t\t\t\t//Safe Owner\r\n\t@enumerable static get DISCLOSURE_OFFICER() { return manager.GetLocalizedString( 211 ) }\t\t\t\t\t\t//Disclosure Officer\r\n\t@enumerable static get PUBLICATION_OFFICER() { return manager.GetLocalizedString( 212 ) }\t\t\t\t\t\t//Publication Officer\r\n\t@enumerable static get DEPUTY() { return manager.GetLocalizedString( 213 ) }\t\t\t\t\t\t\t\t\t//Deputy\r\n\t@enumerable static get COLLECTION_NAME() { return manager.GetLocalizedString( 912 ) }\t\t\t\t\t\t\t//Collection name\r\n\r\n\t//Field collection designer\r\n\t@enumerable static get UPDATE_VIEWS() { return manager.GetLocalizedString( 216 ) }\t\t\t\t\t\t\t//Update views\r\n\t@enumerable static get DATA_ROLE() { return manager.GetLocalizedString( 217 ) }\t\t\t\t\t\t\t\t//DataRole\r\n\t@enumerable static get TYPE_OF_TYPE() { return manager.GetLocalizedString( 220 ) }\t\t\t\t\t\t\t//TypeOfType\r\n\r\n\t//Formats\r\n\t@enumerable static get DUTCH_POSTAL_CODE_MUST_BE_FULFILLED() { return manager.GetLocalizedString(930) }\t// Dutch postal code must be fulfilled completely\r\n\r\n\t//Select user\r\n\t@enumerable static get NEW_SELECTION() { return manager.GetLocalizedString( 221 ) }\t\t\t\t\t\t\t//New selection\r\n\t@enumerable static get REMEMBER_ME() { return manager.GetLocalizedString( 222 ) }\t\t\t\t\t\t\t//Remember me\r\n\t@enumerable static get SELECT_USER() { return manager.GetLocalizedString(627) }\r\n\t@enumerable static get NONE() { return manager.GetLocalizedString(660) }\t\t\t\t\t\t\t\t\t//None\r\n\r\n\t//Tag\r\n\t@enumerable static get NO_AVAILABLE_TAGS() { return manager.GetLocalizedString( 224 ) }\t\t\t\t\t\t//No available tags\r\n\t@enumerable static get SELECT_TAG() { return manager.GetLocalizedString( 225 ) }\t\t\t\t\t\t\t\t//Select a tag\r\n\t@enumerable static get BOOK() { return manager.GetLocalizedString( 473 ) }\t\t\t\t\t\t\t\t\t//Book\r\n\t@enumerable static get NO_TAGS_SELECTED() { return manager.GetLocalizedString( 474 ) }\t\t\t\t\t\t//No tags selected\r\n\t@enumerable static get NO_TAGS_AVAILABLE_FOR_ENTITY() { return manager.GetLocalizedString( 475 ) }\t\t\t//No tags available for this entity\r\n\r\n\t//TemplateDesigner\r\n\t@enumerable static get OPEN_IN_DESKTOP() { return manager.GetLocalizedString( 226 ) }\t\t\t\t\t\t\t//Open in Desktop\r\n\t@enumerable static get QUERY() { return manager.GetLocalizedString( 227 ) }\t\t\t\t\t\t\t\t\t//Query\r\n\t@enumerable static get TEMPLATES() { return manager.GetLocalizedString( 1124 ) }\t\t\t\t\t\t\t//Templates\r\n\t@enumerable static get CREATE_TEMPLATE_IN() { return manager.GetLocalizedString( 1125 ) }\t\t\t\t\t//Create a template in\r\n\t@enumerable static get UPDATE_TEMPLATE_IN() { return manager.GetLocalizedString( 1126 ) }\t\t\t\t\t//Update the template in\r\n\r\n\t//TimeWritting\r\n\t@enumerable static get TO() { return manager.GetLocalizedString( 229 ) }\t\t\t\t\t\t\t\t\t\t//To\r\n\t@enumerable static get TIME() { return manager.GetLocalizedString( 232 ) }\t\t\t\t\t\t\t\t\t//Time\r\n\t@enumerable static get OVW() { return manager.GetLocalizedString( 233 ) }\t\t\t\t\t\t\t\t\t\t//Ovw\r\n\t@enumerable static get PAY() { return manager.GetLocalizedString( 234 ) }\t\t\t\t\t\t\t\t\t\t//Pay\r\n\t@enumerable static get HOUR() { return manager.GetLocalizedString( 610 ) }\t\t\t\t\t\t\t\t\t//Hour\r\n\t@enumerable static get ADD_LINE() { return manager.GetLocalizedString( 235 ) }\t\t\t\t\t\t\t\t//Add line\r\n\t@enumerable static get WEEK() { return manager.GetLocalizedString( 237 ) }\t\t\t\t\t\t\t\t\t//Week\r\n\t@enumerable static get BOOKED() { return manager.GetLocalizedString( 238 ) }\t\t\t\t\t\t\t\t\t//Booked\r\n\t@enumerable static get SALDO() { return manager.GetLocalizedString( 239 ) }\t\t\t\t\t\t\t\t\t//Saldo\r\n\t@enumerable static get YEAR() { return manager.GetLocalizedString( 240 ) }\t\t\t\t\t\t\t\t\t//Year\r\n\t@enumerable static get CURRENT_YEAR() { return manager.GetLocalizedString( 241 ) }\t\t\t\t\t\t\t//Current year\r\n\t@enumerable static get NORM_40() { return manager.GetLocalizedString( 242 ) }\t\t\t\t\t\t\t\t\t//Norm 40\r\n\t@enumerable static get FROM_40() { return manager.GetLocalizedString( 243 ) }\t\t\t\t\t\t\t\t\t//from 40\r\n\t@enumerable static get SELECT__RESERVATION_SUBJECT() { return manager.GetLocalizedString( 560 ) }\t\t\t\t//Select reservation subject\r\n\t@enumerable static get SPECIFY_RESERVATION_DESCRIPTION() { return manager.GetLocalizedString( 561 ) }\t\t\t//Specify reservation description\r\n\t@enumerable static get DESCRIPTION_MIN_LENGTH() { return manager.GetLocalizedString( 562 ) }\t\t\t\t\t//description min length is 3\r\n\t@enumerable static get DESCRIPTION_MAX_LENGTH() { return manager.GetLocalizedString( 563 ) }\t\t\t\t\t//description max length is 80\r\n\t@enumerable static get YEARVIEW() { return manager.GetLocalizedString( 623 ) }\t\t\t\t\t\t\t\t//Yearview\r\n\t@enumerable static get DISSAPROVED() { return manager.GetLocalizedString( 624 ) }\t\t\t\t\t\t\t\t//DISSAPROVED\r\n\t@enumerable static get YEAR_OVERVIEW() { return manager.GetLocalizedString( 625 ) }\t\t\t\t\t\t\t//Year overview\r\n\t@enumerable static get NORM_40_HOURS() { return manager.GetLocalizedString( 626 ) }\t\t\t\t\t\t\t//Norm 40 HOURS\r\n\r\n @enumerable static get COMMENT() { return manager.GetLocalizedString( 650 ) }\t\t\t\t\t\t\t //Comment\r\n @enumerable static get DISAP_REASON() { return manager.GetLocalizedString( 651 ) }\t\t\t\t\t\t\t//Disapprove reason\r\n @enumerable static get DISAP_OVERVIEW() { return manager.GetLocalizedString( 652 ) }\t\t\t\t\t\t//Disapproved booked hours overview\r\n @enumerable static get BOOKED_COUNTER() { return manager.GetLocalizedString( 653 ) }\t\t\t\t\t\t//Booked counter\r\n @enumerable static get WEEK_DISAP_RECORDS() { return manager.GetLocalizedString( 654 ) }\t\t\t\t\t//This week has disapproved booked time record(s)\r\n @enumerable static get BACK() { return manager.GetLocalizedString( 655 ) }\t\t\t\t\t\t\t //Back\r\n @enumerable static get RECOLRD_IS_DISAP() { return manager.GetLocalizedString( 656 ) }\t\t\t\t\t\t//This booked time record is disapproved\r\n @enumerable static get DISAPPROVED() { return manager.GetLocalizedString( 657 ) }\t\t\t\t\t\t\t//Disapproved\r\n @enumerable static get REASON() { return manager.GetLocalizedString( 658 ) }\t\t\t\t\t\t\t//Reason\r\n @enumerable static get DURATION() { return manager.GetLocalizedString( 659 ) }\t\t\t\t\t\t\t//Duration\r\n\t@enumerable static get WRITING_TIME_FOR_FUTURE_NOT_ALLOWED() { return manager.GetLocalizedString( 760 ) }\t//Writing time for future days is not allowed\r\n\r\n\t//FlowMemo\r\n\t@enumerable static get CLICK_TO_ADD_A_NEW_MEMO() { return manager.GetLocalizedString( 1314 ) }\t//Click to add a new memo\r\n\r\n\r\n\t//Portlets\r\n\r\n @enumerable static get MAIN_PORTLET() { return manager.GetLocalizedString(592) }\t\t\t\t\t\t\t//Main portlet\r\n\r\n //message for mathing\r\n @enumerable static get NOT_AVAILABLE_CURRENT_ENTITY() { return manager.GetLocalizedString(647) }\r\n @enumerable static get NOT_AVAILABLE_LINKED_ENTITY() { return manager.GetLocalizedString(648) }\r\n\r\n\r\n\t//Agenda\r\n\t@enumerable static get ADD_TODO() { return manager.GetLocalizedString( 244 ) }\t\t\t\t\t\t\t\t//Add ToDo\r\n\t@enumerable static get REMOVE_AFTER_DROP() { return manager.GetLocalizedString( 245 ) }\t\t\t\t\t\t//remove after drop\r\n\t@enumerable static get TODO() { return manager.GetLocalizedString( 246 ) }\t\t\t\t\t\t\t\t\t//ToDo\r\n\t@enumerable static get AGENDA_TODAY() { return manager.GetLocalizedString( 611 ) }\t\t\t\t\t\t\t//TODAY\r\n\t@enumerable static get AGENDA_MONTH() { return manager.GetLocalizedString( 612 ) }\t\t\t\t\t\t\t//MONTH\r\n\t@enumerable static get AGENDA_WORK_WEEK() { return manager.GetLocalizedString( 614 ) }\t\t\t\t\t\t//WORK_WEEK\r\n\t@enumerable static get AGENDA_DAY() { return manager.GetLocalizedString( 615 ) } \t\t\t\t\t\t\t//DAY\r\n @enumerable static get AGENDA_WEEK() { return manager.GetLocalizedString(237) }\t\t\t\t\t\t\t //WEEk\r\n\t@enumerable static get AGENDA_LIST() { return manager.GetLocalizedString( 1506 ) }\t\t\t\t\t\t\t//LIST\r\n\t@enumerable static get AGENDA_USERS() { return manager.GetLocalizedString( 1511 ) }\t\t\t\t\t\t\t//USERS\r\n\t@enumerable static get AGENDA_TIMELINE_WEEK() { return manager.GetLocalizedString( 1516 ) }\t\t\t\t\t//TIMELINE WEEK\r\n\r\n\t@enumerable static get SPECIAL_DAY() { return manager.GetLocalizedString( 113 ) }\t\t\t\t\t\t //Special day\r\n @enumerable static get REQUEST_LEAVE() { return manager.GetLocalizedString(968) }\t\t\t\t\t \t\t//Request leave\r\n\t@enumerable static get REPORT_ILLNESS() { return manager.GetLocalizedString( 967 ) }\t\t\t\t\t \t//Report illness\r\n\t@enumerable static get RECURRENT() { return manager.GetLocalizedString( 983 ) }\t\t\t\t\t \t\t //Recurrent\r\n\t@enumerable static get CLICK_TO_RESCHEDULE() { return manager.GetLocalizedString(881)} //Click to reschedule the appointment\r\n\t@enumerable static get STARTING_DATE_IS_OUT_OF_FREEZE_TIME() {return manager.GetLocalizedString(885)} //Starting date is out of freeze time\r\n\t@enumerable static get BOOK_TIME() { return manager.GetLocalizedString( 896 ) }\t\t\t\t\t\t//Book time\r\n\t@enumerable static get CANNOT_ACCEPT_APPOINTMENT() { return manager.GetLocalizedString( 929 ) }\t\t\t//Cannot book time\r\n\t@enumerable static get RECURRENCE_PATTERN() { return manager.GetLocalizedString( 987 ) }\t\t\t\t//Recurrence pattern\r\n\t@enumerable static get STARTING_DATE() { return manager.GetLocalizedString( 945 ) }\t\t\t\t\t\t//Starting date\r\n\t@enumerable static get MONTHS() { return manager.GetLocalizedString( 946 ) }\t\t\t\t\t\t\t\t//Months\r\n\t@enumerable static get WEEKS() { return manager.GetLocalizedString( 950 ) }\t\t\t\t\t\t\t\t//Weeks\r\n\t@enumerable static get WEEK_PLANNING() { return manager.GetLocalizedString( 947 ) }\t\t\t\t\t\t//Week planning\r\n\t@enumerable static get ATTENDEES() { return manager.GetLocalizedString( 1195 ) }\t\t\t\t\t\t//Attendees\r\n\t@enumerable static get AGENDA_NO_EVENTS_TO_DISPLAY() { return manager.GetLocalizedString( 1507 ) }\t\t\t//No events to display\r\n\r\n\t//Mail\r\n\t@enumerable static get SEND_EMAIL() { return manager.GetLocalizedString( 247 ) }\t\t\t\t\t\t\t\t//Send e-mail\r\n\t@enumerable static get ACTIONS() { return manager.GetLocalizedString( 248 ) }\t\t\t\t\t\t\t\t\t//Actions\r\n\t@enumerable static get MARK_AS_READ() { return manager.GetLocalizedString( 249 ) }\t\t\t\t\t\t\t//Mark as Read\r\n\t@enumerable static get MARK_AS_UNREAD() { return manager.GetLocalizedString( 250 ) }\t\t\t\t\t\t\t//Mark as Unread\r\n\t@enumerable static get ADDRESS() { return manager.GetLocalizedString( 251 ) }\t\t\t\t\t\t\t\t\t//Address\r\n\t@enumerable static get TOPIC() { return manager.GetLocalizedString( 252 ) }\t\t\t\t\t\t\t\t\t//Topic\r\n\t@enumerable static get DATE() { return manager.GetLocalizedString( 253 ) }\t\t\t\t\t\t\t\t\t//Date\r\n\t@enumerable static get OF() { return manager.GetLocalizedString( 254 ) }\t\t\t\t\t\t\t\t\t\t//of\r\n\t@enumerable static get ADD_FROM() { return manager.GetLocalizedString( 1333 ) }\t\t\t\t\t\t\t\t//Add from\r\n\r\n\t//Documents\r\n\t@enumerable static get OPEN_DOCUMENT_IN_SPHEERES() { return manager.GetLocalizedString(926) }\t\t\t\t\t//Opening in the Spheeres client...\r\n\r\n\r\n\t//My settings\r\n\t@enumerable static get PROFILE() { return manager.GetLocalizedString( 255 ) }\t\t\t\t\t\t\t\t\t//Profile\r\n\t@enumerable static get THEMES() { return manager.GetLocalizedString( 256 ) }\t\t\t\t\t\t\t\t\t//Themes\r\n\t@enumerable static get PERSONAL_SETTINGS() { return manager.GetLocalizedString( 257 ) }\t\t\t\t\t\t//Personal settings\r\n\t@enumerable static get NETWORK() { return manager.GetLocalizedString( 1298 ) }\t\t\t\t\t\t\t\t//Network\r\n\t@enumerable static get LICENSE_HOLDER() { return manager.GetLocalizedString( 258 ) }\t\t\t\t\t\t\t//License Holder\r\n\r\n\t//Profile\r\n\t@enumerable static get CURRENT_PASSWORD() { return manager.GetLocalizedString( 259, 'Current password' ) }\t\t\t\t\t\t//Current Password\r\n\t@enumerable static get NEW_PASSWORD() { return manager.GetLocalizedString( 260, 'New password' ) }\t//New Password\r\n\t@enumerable static get RETYPE_NEW_PASSWORD() { return manager.GetLocalizedString( 261 ) }\t\t\t\t\t\t//Re-type New Password\r\n\r\n\t//Network\r\n\t@enumerable static get THERE_ARE_NO_REMOTE_DATABASE_CONNECTIONS() { return manager.GetLocalizedString( 1299 ) }\t\t\t\t\t//There are no remote database connections\r\n\r\n\t//License holder\r\n\t@enumerable static get LICENSE_INFO() { return manager.GetLocalizedString( 262 ) }\t\t\t\t\t\t\t//License Info\r\n\t@enumerable static get LICENSE_EXPIRATION_DATE() { return manager.GetLocalizedString( 264 ) }\t\t\t\t\t//Expiration Date\r\n\t@enumerable static get MAXIMUM_USERS_ALLOWED() { return manager.GetLocalizedString( 265 ) }\t\t\t\t\t//Maximum users allowed\r\n\t@enumerable static get MAXIMUM_CONNECT_USERS_ALLOWED() { return manager.GetLocalizedString( 1290) }\t\t\t//Maximum connect users allowed\r\n\t@enumerable static get MAXIMUM_REMOTE_USERS_ALLOWED() { return manager.GetLocalizedString( 1291) }\t\t\t//Maximum remote users allowed\r\n\t@enumerable static get MAXIMUM_LIMITED1_USERS_ALLOWED() { return manager.GetLocalizedString( 1292) }\t\t\t//Maximum limited1 users allowed\r\n\t@enumerable static get MAXIMUM_LIMITED2_USERS_ALLOWED() { return manager.GetLocalizedString( 1293) }\t\t\t//Maximum limited2 users allowed\r\n\t@enumerable static get MAXIMUM_LIMITED3_USERS_ALLOWED() { return manager.GetLocalizedString( 1294) }\t\t\t//Maximum limited3 users allowed\r\n\t@enumerable static get MAXIMUM_PORTAL_USERS_ALLOWED() { return manager.GetLocalizedString( 1107 ) }\t\t\t//Maximum portal users allowed\r\n\t@enumerable static get MAXIMUM_GDPR_USERS_ALLOWED() { return manager.GetLocalizedString( 1112 ) }\t\t\t\t//Maximum GDPR users allowed\r\n\t@enumerable static get MAXIMUM_ROLE() { return manager.GetLocalizedString( 266 ) }\t\t\t\t\t\t\t//Maximum role\r\n\r\n\t//Themes\r\n\t@enumerable static get REFRESH_PAGE_ALERT() { return manager.GetLocalizedString( 267 ) }\t\t\t\t\t\t//If you want to be sure your changes applied , please refresh the page!\r\n\t@enumerable static get PREFF_F5_BUTTON_ALERT() { return manager.GetLocalizedString( 268 ) }\t\t\t\t\t//Press refresh button in browser or \"F5\" button on the keyboard\r\n\t@enumerable static get BASIC_THEME_OPTIONS() { return manager.GetLocalizedString( 269 ) }\t\t\t\t\t\t//BASIC THEME OPTIONS\r\n\t@enumerable static get THEME_STYLE() { return manager.GetLocalizedString( 270 ) }\t\t\t\t\t\t\t\t//Theme Style\r\n\t@enumerable static get BORDERS_THEME() { return manager.GetLocalizedString( 271 ) }\t\t\t\t\t\t\t//Borders Theme\r\n\t@enumerable static get SIDEBAR_POSITION() { return manager.GetLocalizedString( 272 ) }\t\t\t\t\t\t//Sidebar Position\r\n\t@enumerable static get SIDEBAR_STYLE() { return manager.GetLocalizedString( 273 ) }\t\t\t\t\t\t\t//Sidebar Style\r\n\t@enumerable static get SIDEBAR_MODE() { return manager.GetLocalizedString( 274 ) }\t\t\t\t\t\t\t//Sidebar Mode\r\n\t@enumerable static get BASIS_THEME_COLOR() { return manager.GetLocalizedString( 275 ) }\t\t\t\t\t\t//BASIS THEME COLOR\r\n\t@enumerable static get CUSTOM_THEMES() { return manager.GetLocalizedString( 276 ) }\t\t\t\t\t\t\t//CUSTOM THEMES\r\n\t@enumerable static get SHOW_PREVIEW() { return manager.GetLocalizedString( 277 ) }\t\t\t\t\t\t\t//Show preview\r\n\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_SIDEBAR() { return manager.GetLocalizedString( 279 ) }\t\t\t\t\t\t\t\t//Background color for sidebar\r\n\t@enumerable static get HEADER_BACKGROUND_COLOR() { return manager.GetLocalizedString( 280 ) }\t\t\t\t\t\t\t\t\t\t//Header background color\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_HEADER_TEXT() { return manager.GetLocalizedString( 281 ) }\t\t\t\t\t\t\t//Background color for header text\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM() { return manager.GetLocalizedString( 282 ) }\t\t\t\t\t\t//Background color for hovered menu item\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM_SECOND_LEVEL_ITEM() { return manager.GetLocalizedString( 283 ) }\t//Background color for hovered menu second level item\r\n\t@enumerable static get BACKGROUND_COLOR_FOR_THEME_SQUARE() { return manager.GetLocalizedString( 284 ) }\t\t\t\t\t\t\t//Background color for theme square\r\n\r\n\t@enumerable static get COLOR_FOR_HEADER_TEXT() { return manager.GetLocalizedString( 285 ) }\t\t\t\t\t\t\t\t\t\t//Color for header text\r\n\t@enumerable static get COLOR_FOR_BORDERS_BETWEEN_MENU_LINKS() { return manager.GetLocalizedString( 286 ) }\t\t\t\t\t\t//Color for borders between menu links\r\n\t@enumerable static get TEXT_COLOR_FOR_SIDEBAR_MENU() { return manager.GetLocalizedString( 287 ) }\t\t\t\t\t\t\t\t\t//Text color for sidebar menu\r\n\t@enumerable static get ACTIVE_LINK_COLOR() { return manager.GetLocalizedString( 288 ) }\t\t\t\t\t\t\t\t\t\t\t//Active link color\r\n\t@enumerable static get MENU_2_LEVEL_ACTIVE_LINK_COLOR() { return manager.GetLocalizedString( 289 ) }\t\t\t\t\t\t\t\t//Menu 2 level active link color\r\n\t@enumerable static get CONTROLS_TEXT_COLOR() { return manager.GetLocalizedString( 290 ) }\t\t\t\t\t\t\t\t\t\t\t//Controls text color\r\n\t@enumerable static get CONTROLS_BACKGROUND_COLOR() { return manager.GetLocalizedString( 291 ) }\t\t\t\t\t\t\t\t\t//Controls background color\r\n\t@enumerable static get CONTROLS_BACKGROUND_BORDER_COLOR() { return manager.GetLocalizedString( 292 ) }\t\t\t\t\t\t\t//Controls background border color\r\n\r\n\t@enumerable static get TABLE_HEADER_TEXT_COLOR() { return manager.GetLocalizedString( 293 ) }\t\t\t\t\t\t\t\t\t\t//Table header text color\r\n\t@enumerable static get TABLE_HEADER_BACKGROUND_COLOR() { return manager.GetLocalizedString( 294 ) }\t\t\t\t\t\t\t\t//Table header background color\r\n\t@enumerable static get TAB_BORDER_COLOR() { return manager.GetLocalizedString( 295 ) }\t\t\t\t\t\t\t\t\t\t\t//Tab border color\r\n\t@enumerable static get ACTIVE_TAB_LEVEL_BACKGROUND_COLOR() { return manager.GetLocalizedString( 296 ) }\t\t\t\t\t\t\t//Active tab label background color\r\n\t@enumerable static get ACTIVE_TAB_LEVEL_TEXT_COLOR() { return manager.GetLocalizedString( 297 ) }\t\t\t\t\t\t\t\t\t//Active tab label text color\r\n\r\n\t@enumerable static get SQUARE_CORNERS() { return manager.GetLocalizedString( 298 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Square corners\r\n\t@enumerable static get ROUNDER_CORNERS() { return manager.GetLocalizedString( 299 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Rounded corners\r\n\r\n\t@enumerable static get WITH_BORDERS() { return manager.GetLocalizedString( 300 ) }\t\t\t\t\t\t\t\t\t\t\t\t//With borders\r\n\t@enumerable static get WITHOUT_BORDERS() { return manager.GetLocalizedString( 301 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Without borders\r\n\r\n\t@enumerable static get LEFT() { return manager.GetLocalizedString( 302 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Left\r\n\t@enumerable static get RIGHT() { return manager.GetLocalizedString( 303 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Right\r\n\r\n\t@enumerable static get LIGHT() { return manager.GetLocalizedString( 305 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Light\r\n\r\n\t@enumerable static get FIXED() { return manager.GetLocalizedString( 306 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Fixed\r\n\r\n\t//Color selector\r\n\t@enumerable static get NO_COLOR() { return manager.GetLocalizedString( 308 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//no-color\r\n\r\n\t//Database designer\r\n\t@enumerable static get SHOW_DELETED() { return manager.GetLocalizedString( 309 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Show deleted\r\n\t@enumerable static get UPDATE_DATABASE() { return manager.GetLocalizedString( 310 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Update Database\r\n\t@enumerable static get LANGUAGES() { return manager.GetLocalizedString( 311 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Languages\r\n\t@enumerable static get UPDATE_DATABASE_ALERT() { return manager.GetLocalizedString( 312 ) }\t\t\t\t\t\t\t\t\t\t//You need to update database.\r\n\t@enumerable static get ENABLED() { return manager.GetLocalizedString( 907 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Enabled\r\n\t@enumerable static get KIND_NAME() { return manager.GetLocalizedString( 908 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Kind Name\r\n\t@enumerable static get SHOW_MODE() { return manager.GetLocalizedString( 910 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Show Mode\r\n\t@enumerable static get KINDS() { return manager.GetLocalizedString( 911 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Kinds\r\n\t@enumerable static get TYPE_SECURITY() { return 'Business Roles\\'s Type Security' }\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Type Security\r\n\t@enumerable static get ACTIONS_CHECK_LIST() { return manager.GetLocalizedString( 918 ) }\t\t\t\t\t\t\t\t\t\t\t//Checklist\r\n\t@enumerable static get ALLOW_CUSTOM_VALUE() { return manager.GetLocalizedString( 927 ) }\t\t\t\t\t\t\t\t\t\t\t//Allow custom value\r\n\t@enumerable static get FILTER_SUBTABLE() { return manager.GetLocalizedString( 1201 ) }\t\t\t\t\t\t\t\t\t\t\t//Filter Sub Table\r\n\t@enumerable static get FILTER_BY_K_SEQ() { return manager.GetLocalizedString( 1263 ) }\t\t\t\t\t\t\t\t\t\t\t//Filter by K_SEQ\r\n\t@enumerable static get ONE_PARENT() { return manager.GetLocalizedString( 1214 ) }\t\t\t\t\t\t\t\t\t\t\t\t//One parent\r\n\r\n\r\n\t//Clean Database Modal\r\n\t@enumerable static get CLEAN_DATABASE() { return manager.GetLocalizedString( 514 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Clean Database.\r\n\t@enumerable static get USER_TABLES() { return manager.GetLocalizedString(761)}\t\t\t\t\t\t\t\t\t\t\t\t\t//User tables\r\n\t@enumerable static get SYS_TABLES() { return manager.GetLocalizedString(762)}\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SYS tables\r\n\t@enumerable static get REMOVE_EXAMPLES() { return manager.GetLocalizedString(763)}\t\t\t\t\t\t\t\t\t\t\t\t//Remove examples\r\n\t@enumerable static get DELETED_FIELDS() { return manager.GetLocalizedString(1323)}\t\t\t\t\t\t\t\t\t\t\t\t//Deleted fields\r\n\t@enumerable static get DELETED_TABLES() { return manager.GetLocalizedString(1324)}\t\t\t\t\t\t\t\t\t\t\t\t//Deleted tables\r\n\r\n\t@enumerable static get SUB() { return manager.GetLocalizedString( 314 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SUB\r\n\t@enumerable static get SCREENS() { return manager.GetLocalizedString( 315 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//SCREENS\r\n\r\n\t@enumerable static get TABLE_NAME() { return manager.GetLocalizedString( 316 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Table name\r\n\t@enumerable static get SUBJECT_AREA() { return manager.GetLocalizedString( 317 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Subject area\r\n\t@enumerable static get DISABLE() { return manager.GetLocalizedString( 318 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Disable\r\n\r\n\t@enumerable static get FIELD_NAME() { return manager.GetLocalizedString( 319 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field Name\r\n\t@enumerable static get FIELD_TYPE() { return manager.GetLocalizedString( 320 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field Type\r\n\t@enumerable static get SIZE() { return manager.GetLocalizedString( 321 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Size\r\n\t@enumerable static get LOOKUP() { return manager.GetLocalizedString( 322 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Lookup\r\n\t@enumerable static get SORT() { return manager.GetLocalizedString( 323 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Sort\r\n\t@enumerable static get PROPERTIES() { return manager.GetLocalizedString( 1006 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Properties\r\n\t@enumerable static get FIELD_FLAGS() { return manager.GetLocalizedString( 1007 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field Flags\r\n\r\n\t@enumerable static get FLAGS() { return manager.GetLocalizedString( 324 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Flags\r\n\t@enumerable static get VALIDATE() { return manager.GetLocalizedString( 325 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Validate\r\n\t@enumerable static get VIRTUAL() { return manager.GetLocalizedString( 326 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Virtual\r\n\t@enumerable static get ALIAS_DEFINITION() { return manager.GetLocalizedString( 327 ) }\t\t\t\t\t\t\t\t\t\t\t//Alias definition\r\n\r\n\t@enumerable static get DELETED() { return manager.GetLocalizedString( 1014 ) } \t\t\t\t\t\t\t\t\t\t\t\t\t\t//Deleted\r\n\r\n\t@enumerable static get FIELD_SIZE() { return manager.GetLocalizedString( 1010 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Field size\r\n\t@enumerable static get DEFAULT_VALUE() { return manager.GetLocalizedString( 1011 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Default value\r\n\r\n\t@enumerable static get SYSTEM_FLAG() { return manager.GetLocalizedString( 382 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//System\r\n\t@enumerable static get HIDDEN_FLAG() { return manager.GetLocalizedString( 329 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Hidden\r\n\t@enumerable static get REQUIRED_FLAG() { return manager.GetLocalizedString( 330 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Required\r\n\t@enumerable static get READ_ONLY_FLAG() { return manager.GetLocalizedString( 331 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Read only\r\n\t@enumerable static get SEARCH_FLAG() { return manager.GetLocalizedString( 332 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Search field\r\n\t@enumerable static get TRANSLATE_FLAG() { return manager.GetLocalizedString( 334 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Translate\r\n @enumerable static get UNIQUE_FLAG() { return manager.GetLocalizedString(1243) }\t\t\t\t\t\t\t\t\t\t\t\t //Unique\r\n\r\n @enumerable static get MATCHING() { return manager.GetLocalizedString( 1012 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Matching\r\n\t@enumerable static get CUSTOM_VALUES_ALLOWED() { return manager.GetLocalizedString( 1013 ) }\t\t\t\t\t\t\t\t\t\t//Custom values allowed\r\n\r\n\t@enumerable static get TABLE() { return manager.GetLocalizedString( 336 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Table\r\n\t@enumerable static get MERGE_VIEW() { return manager.GetLocalizedString( 1502 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Merge view\r\n\t@enumerable static get SERACH_SCREEN_IF_ALERT() { return manager.GetLocalizedString( 337 ) }\t\t\t\t\t\t\t\t\t\t//Validate\r\n\t@enumerable static get USER_CALCULATED_EXPRESSION() { return manager.GetLocalizedString( 338 ) }\t\t\t\t\t\t\t\t\t//Use Calculated Expression\r\n\t@enumerable static get DEPENDS_ON() { return manager.GetLocalizedString( 339 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Depends On\r\n\t@enumerable static get FILL_FROM() { return manager.GetLocalizedString( 340 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Fill from\r\n\r\n\t@enumerable static get NOT_SET() { return manager.GetLocalizedString( 1005 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Not set\r\n\r\n\t@enumerable static get STATUS_DESIGNER() { return manager.GetLocalizedString( 341 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Status designer\r\n\t@enumerable static get ADD_NODE() { return manager.GetLocalizedString( 342 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Add node\r\n\t@enumerable static get GENERAL() { return manager.GetLocalizedString( 343 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//General\r\n\r\n\t@enumerable static get KIND() { return manager.GetLocalizedString( 344 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Kind\r\n\t@enumerable static get ICON() { return manager.GetLocalizedString( 345 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Icon\r\n\t@enumerable static get TABLE_DEFAULT() { return manager.GetLocalizedString( 346 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Table default\r\n @enumerable static get FLOW_FOLDER() { return manager.GetLocalizedString(1189) }\t\t\t\t\t\t\t\t\t\t\t\t//Flow folder\r\n\t@enumerable static get NEXT_STATUS() { return manager.GetLocalizedString(1354) }\t\t\t\t\t\t\t\t\t\t\t\t//Next status\r\n\r\n @enumerable static get CD_FIELD() { return manager.GetLocalizedString( 458 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//CD Field\r\n\t@enumerable static get USER_DB_FIELD() { return manager.GetLocalizedString( 459 ) }\t\t\t\t\t\t\t\t\t\t\t\t//User DB field\r\n\t@enumerable static get TABLES() { return manager.GetLocalizedString( 460 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Tables\r\n\t@enumerable static get CLICK_TO_EXPAND_COLLAPSE() { return manager.GetLocalizedString( 461 ) }\t\t\t\t\t\t\t\t\t//click to expand/collapse\r\n\t@enumerable static get COLUMNS() { return manager.GetLocalizedString( 462 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Columns\r\n\t@enumerable static get PRIMARY_KEY_ON_COLUMNS() { return manager.GetLocalizedString( 463 ) }\t\t\t\t\t\t\t\t\t\t//Primary KEY on columns\r\n\t@enumerable static get INDEX_COLUMN() { return manager.GetLocalizedString( 464 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Index column\r\n\t@enumerable static get COLUMN() { return manager.GetLocalizedString( 465 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Column\r\n\t@enumerable static get UPDATE() { return manager.GetLocalizedString( 466 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Update\r\n\t@enumerable static get SEQUENCE_NAME() { return manager.GetLocalizedString( 511 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Sequence name\r\n\t@enumerable static get UNIQIUE_SEQUENCE_NAME() { return manager.GetLocalizedString( 512 ) }\t\t\t\t\t\t\t\t\t\t//Make sure sequence name is unqiue\r\n\t@enumerable static get DOWNLOAD_METADATA() { return manager.GetLocalizedString( 515 ) }\t\t\t\t\t\t\t\t\t\t\t//Download metadata\r\n\t@enumerable static get CLICK_TO_DOWNLOAD_METADATA() { return manager.GetLocalizedString( 516 ) }\t\t\t\t\t\t\t\t\t//Click to download xsd file with database structure for Crystal Report\r\n\t@enumerable static get VIEW_EDITOR() { return manager.GetLocalizedString( 621 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//View Editor\r\n\t@enumerable static get VIEW() { return manager.GetLocalizedString( 622 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//View\r\n\t@enumerable static get DYNAMIC_VIEW() { return manager.GetLocalizedString( 970 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Dynamic view\r\n\t@enumerable static get RECIPE_VERSION() { return manager.GetLocalizedString( 1322 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Recipe Version\r\n\t@enumerable static get RECORD_ID() { return manager.GetLocalizedString( 672 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Record Id\r\n\t@enumerable static get VALIDATION() { return manager.GetLocalizedString( 906 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Validation\r\n\t@enumerable static get CANNOT_MAKE_AN_ACTIVE_VERSION_INACTIVE() { return manager.GetLocalizedString( 1337 ) }\t\t\t\t\t\t//Cannot make an active version inactive\r\n\r\n\r\n\t@enumerable static get CLICK_TO_SET_SEQUENCE_VALUE() { return manager.GetLocalizedString( 886 ) }\t\t\t\t\t\t\t\t\t//Click to set sequence value\r\n\r\n\r\n\t//Table Editor\r\n\t@enumerable static get ADD_RELATION_TYPE_TOOLTIP() { return manager.GetLocalizedString( 606 ) }\t\t\t\t\t\t\t\t\t\t\t//Add relation types\r\n\r\n\t//Tab\r\n\t@enumerable static get SHOW_ALL() { return manager.GetLocalizedString( 448 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Show all\r\n\t@enumerable static get HIDE() { return manager.GetLocalizedString( 449 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Hide\r\n\t@enumerable static get NEW_TAB() { return manager.GetLocalizedString( 664 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//New Tab\r\n\r\n //Portlet\r\n\t@enumerable static get EDIT_PORTLETSPACE() { return manager.GetLocalizedString( 450 ) }\t\t\t\t\t\t\t\t\t\t\t//Edit PortletSpace\r\n\r\n\t//multiple portlets spaces\r\n\t@enumerable static get MORE() { return manager.GetLocalizedString( 548 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//More dropdown\r\n\t@enumerable static get PORTLET_SPACE_INFO() { return manager.GetLocalizedString( 550 ) }\t\t\t\t\t\t\t\t\t\t\t//Portlet space info\r\n\t@enumerable static get PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 551 ) }\t\t\t\t\t\t\t\t\t\t\t//Portlet space name\r\n\t@enumerable static get USE_AS_MAIN() { return manager.GetLocalizedString( 552 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Use as main\r\n\r\n\t@enumerable static get CREATE_NEW() { return manager.GetLocalizedString( 555 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Create new {entityName}\r\n\t@enumerable static get EDIT_BUTTON() { return manager.GetLocalizedString( 556 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Edit button\r\n\t@enumerable static get PLEASE_ENTER_PORTLET_SPACE_NAME() { return manager.GetLocalizedString( 557 ) }\t\t\t\t\t\t\t\t//Please, enter a portlet space name\r\n\t@enumerable static get PORTLET_SPACE_WILL_BE_DELETED() { return manager.GetLocalizedString( 559 ) }\t\t\t\t\t\t\t\t//Portlet space will be deleted\r\n\t@enumerable static get CONFIRMATION_FOR_UNSAVED_CHANGES() { return manager.GetLocalizedString( 567 ) }\t\t\t\t\t\t\t//All unsaved changes will be lost. Save changes?\r\n\t@enumerable static get PORTLET_SPACE_WAS_UPDATED() { return manager.GetLocalizedString( 568 ) }\t\t\t\t\t\t\t\t\t//Portlet Space was updated\r\n\t@enumerable static get SELECT_EXISTING_PORTLET_SPACE() { return manager.GetLocalizedString( 1512 ) }\t\t\t\t\t\t\t\t//Select existing portlet space\r\n\t@enumerable static get EXPAND() { return manager.GetLocalizedString( 639 ) }\r\n\t@enumerable static get COLLAPSE() { return manager.GetLocalizedString( 640 ) }\r\n\t@enumerable static get PORTLET_SETTINGS() { return manager.GetLocalizedString( 641 ) }\r\n\t@enumerable static get MINIMIZE() { return manager.GetLocalizedString( 643 ) }\r\n\t@enumerable static get MAXIMIZE() { return manager.GetLocalizedString( 644 ) }\r\n\r\n\t//Buttons\r\n\t@enumerable static get HISTORY() { return manager.GetLocalizedString( 628 ) }\r\n\t@enumerable static get RESET_SECURITY() { return manager.GetLocalizedString( 629 ) }\r\n\t@enumerable static get SPECIAL() { return manager.GetLocalizedString( 630 ) }\r\n\t@enumerable static get ADD_TO_FAVORITES() { return manager.GetLocalizedString( 631 ) }\r\n\t@enumerable static get COPY_WITH_RELATIONS() { return manager.GetLocalizedString(715) }\t\t\t\t\t\t\t\t\t\t\t\t//Copy with relations\r\n\t@enumerable static get CONSULT() { return manager.GetLocalizedString( 969 ) }\r\n\t@enumerable static get DASHBOARD() { return manager.GetLocalizedString( 1255 ) }\r\n\t@enumerable static get CTRL_S_SAVE() { return manager.GetLocalizedString( 1262 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Click or press Ctrl + S to Save the changes\r\n\r\n\t//Icon manager\r\n\t@enumerable static get SELECT_ICON() { return manager.GetLocalizedString( 451 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Select icon\r\n\r\n\t//Make example\r\n\t@enumerable static get MAKE_EXAMPLE() { return manager.GetLocalizedString( 537 ) }\t\t\t\t\t\t\t\t\t//Make example\r\n\r\n\t//Recent And Favorites panel\r\n\t@enumerable static get NO_RECORDS_MESSAGE() { return manager.GetLocalizedString( 543 ) }\t\t\t\t\t\t\t//There is no records yet\r\n\t@enumerable static get NO_NAME_RECORD() { return manager.GetLocalizedString( 544 ) }\t\t\t\t\t\t\t\t//no name record\r\n\r\n\t@enumerable static get PARENT() { return manager.GetLocalizedString( 545 ) }\t\t\t\t\t//Child\r\n\t@enumerable static get CHILD() { return manager.GetLocalizedString( 546 ) }\t\t\t\t\t//Parent\r\n\t@enumerable static get ITSELF() { return manager.GetLocalizedString( 547 ) }\t\t\t\t\t//Itself\r\n\r\n\t//Help pages\r\n\t@enumerable static get DOCUMENTATION() { return manager.GetLocalizedString( 595 ) }\t\t\t\t\t\t\t\t//Documentation\r\n\t@enumerable static get THERE_IS_NO_DESCRIPTION_AVAILABLE() { return manager.GetLocalizedString( 596 ) }\t\t\t//There is no description available\r\n\t@enumerable static get CONTROL() { return manager.GetLocalizedString( 1008 ) }\t\t\t\t\t\t\t\t\t//Control\r\n\t@enumerable static get DASH() { return manager.GetLocalizedString( 1015 ) }\t\t\t\t\t\t\t\t\t\t//Dash\r\n @enumerable static get STATUS_FLOW() { return manager.GetLocalizedString( 1063 ) }\t\t\t\t\t\t\t\t//Status Flow\r\n @enumerable static get SETTING_THE_STATUS_RUNS() { return manager.GetLocalizedString( 1066 ) }\t\t\t\t\t//Setting the status runs the DataWizard\r\n @enumerable static get FOLLOW_UP_DOES_NOT_CREATE_AN_ACTION() { return manager.GetLocalizedString( 1067 ) }\t\t//FollowUp does not create an action\r\n @enumerable static get DURATION_IS_SET() { return manager.GetLocalizedString( 1068 ) }\t\t\t\t\t\t\t//Duration of the related action is automatically set to\r\n @enumerable static get DEADLINE_IS_SET() { return manager.GetLocalizedString( 1069 ) }\t\t\t\t\t\t\t//Deadline of the related action is automatically set to\r\n\t@enumerable static get BUSINESS_ROLES() { return manager.GetLocalizedString(1070) }\t\t\t\t\t\t\t\t//Business roles\r\n\t@enumerable static get FUNCTIONS() { return manager.GetLocalizedString(1175) }\t\t\t\t\t\t\t\t\t//Functions\r\n\r\n\t//Notifications\r\n\t@enumerable static get NOTIFIER_SUCCESS() { return manager.GetLocalizedString( 10 ) };\t\t\t\t\t\t//Success\r\n\t@enumerable static get NOTIFIER_WARNING() { return manager.GetLocalizedString( 47 ) }; //Attention\r\n\t@enumerable static get NOTIFIER_FAIL() { return manager.GetLocalizedString( 65 ) };\t\t\t\t\t\t//Oops\r\n\r\n\t//BulkEmail\r\n\t@enumerable static get BULK_EMAIL() { return manager.GetLocalizedString( 263 ) };\t\t\t\t\t\t\t//Bulk Email\r\n\t@enumerable static get RECIPIENTS() { return manager.GetLocalizedString(333) };\t\t\t\t\t\t\t\t//Recipients\r\n\t@enumerable static get ADDRESS_FIELD() { return manager.GetLocalizedString(335) };\t\t\t\t\t\t\t//Address field\r\n\t@enumerable static get MAILING_TEMPLATE() { return manager.GetLocalizedString(350) };\t\t\t\t\t\t//Mailing template\r\n\t@enumerable static get REQUEST_TEMPLATE() { return manager.GetLocalizedString(671) };\t\t\t\t\t\t//Request template\r\n\t@enumerable static get CONFIGURE() { return manager.GetLocalizedString(351) };\t\t\t\t\t\t\t\t//Configure\r\n\t@enumerable static get START() { return manager.GetLocalizedString(669) };\t\t\t\t\t\t\t\t\t//Start\r\n\t@enumerable static get STOP() { return manager.GetLocalizedString(670) };\t\t\t\t\t\t\t\t\t//Stop\r\n\r\n\t//FollowUp\r\n\t@enumerable static get FOLLOW_UP() { return manager.GetLocalizedString(1268) }\t\t\t\t\t\t\t\t\t\t\t//Follow Up\r\n\t@enumerable static get EXIST_ACTIVE_ACTIONS() { return manager.GetLocalizedString(663) }\t\t\t //There are other active actions. Could not proceed to the next lifestatus.\r\n @enumerable static get RECORD_IS_DISABLED() { return manager.GetLocalizedString(1204) }\t\t\t //Record is disabled.\r\n @enumerable static get ACTIVE_ACTIONS_NOT_FOUND() { return manager.GetLocalizedString(1205) }\t\t\t //Active ACTIONS record not found.\r\n \r\n //Actiion check list\r\n\t@enumerable static get THERE_ARE_NO_NEXT_STATUSES_WITH_CHECK_LIST() {return manager.GetLocalizedString(919)};\r\n\t@enumerable static get CHECKLIST_UPDATED() {return manager.GetLocalizedString(920)};\r\n\r\n\t//Scheduler\r\n @enumerable static get SCHEDULER_FREE_CAPACITY() { return manager.GetLocalizedString( 674 ) }; //Free capacity\r\n @enumerable static get SCHEDULER_COMMON_FREE_TIME() { return manager.GetLocalizedString( 675 ) }; //Common free time\r\n\t@enumerable static get PERIOD() { return manager.GetLocalizedString( 765 ) };\t\t\t\t\t\t\t\t\t\t\t\t//Period\r\n\t@enumerable static get STARTING() { return manager.GetLocalizedString( 766 ) };\t\t\t\t\t\t\t\t\t\t\t//Starting\r\n @enumerable static get AGENDA_IS_NOT_CONNECTED() { return manager.GetLocalizedString( 676 ) }; //AGENDA is not connected to this table\r\n\t@enumerable static get AGENDA_IS_NOT_AVAILABLE() { return manager.GetLocalizedString(677) }; //AGENDA is not available due to security settings\r\n\t@enumerable static get SCHEDULER_NOT_FOUND() { return manager.GetLocalizedString(853) }; //Scheduler not found\r\n\t@enumerable static get RE_PLANNING() { return manager.GetLocalizedString(854) }; //Re-planning\r\n\t@enumerable static get RE_PLAN_APPOINTMENT_TO_PERIOD() { return manager.GetLocalizedString(880) }; //Click to schedule the appointment for this period\r\n\t@enumerable static get NUMBER_WEEKS() { return manager.GetLocalizedString(899)};\t\t\t\t\t\t\t\t\t\t\t//number Weeks \"W\"\r\n\t@enumerable static get SUBJECT_TOOLTIP() { return manager.GetLocalizedString(1056)};\t\t\t\t\t\t\t\t\t\t//Set the number of periods to 2 to show linked {entityname} records\r\n\r\n\t@enumerable static get NO_POSSIBLE_TO_CREATE_APPOINTMENT_IN_THE_PAST() {return manager.GetLocalizedString(681)};\t\t//No possible to create an appointment in the past\r\n\r\n\t//Invoicing\r\n\t@enumerable static get PLEASE_SELECT_DATA_SOURCE() { return manager.GetLocalizedString(682) };\t\t\t\t\t\t\t// Please, select data source\r\n\t@enumerable static get PLEASE_SELECT_WAITING_FOR_INVOICE_LIFESTATUS() { return manager.GetLocalizedString(683) };\t\t// Please, select ready for invoice lifestatus\r\n\t@enumerable static get PLEASE_SELECT_INVOICE_ENTITY() { return manager.GetLocalizedString(684) };\t\t\t\t\t\t// Please, select invoice entity\r\n\t@enumerable static get PLEASE_SELECT_OUTPUT_RECORD_TYPE() { return manager.GetLocalizedString(685) };\t\t\t\t\t// Please, select output record type\r\n @enumerable static get RECORD_FOR_TABLE_CREATED() { return manager.GetLocalizedString(686) };\t\t\t\t\t\t\t// {table} record has been created\r\n\t@enumerable static get DATA_SOURCE() { return manager.GetLocalizedString(701) };\t\t\t\t\t\t\t\t\t\t// Data Source\r\n\t@enumerable static get WAITING_FOR_INVOICING_LIFESTATUS() { return manager.GetLocalizedString(702) };\t\t\t\t\t// Wating for invoicing lifestatus\r\n\t@enumerable static get INVOICE_ENTITY() { return manager.GetLocalizedString(703) };\t\t\t\t\t\t\t\t\t\t// Invoice entity\r\n\t@enumerable static get INVOICE_TYPE() { return manager.GetLocalizedString(704) };\t\t\t\t\t\t\t\t\t\t// Invoice type\r\n\r\n\t//Lifestatus Designer\r\n @enumerable static get CONFIRM() { return manager.GetLocalizedString(716) };\t\t\t\t\t\t\t\t\t// Confirm\r\n @enumerable static get DISABLE_NODE() { return manager.GetLocalizedString(717) };\t\t\t\t\t\t\t\t// Are you sure you want to disable this node?\r\n @enumerable static get LINKS_WILL_BE_DELETED() { return manager.GetLocalizedString(718) };\t\t\t\t\t\t// Please, note that all related links will be deleted.\r\n @enumerable static get REMOVE_THIS_LINK() { return manager.GetLocalizedString(719) };\t\t\t\t\t\t\t\t\t\t// Are you sure you want to remove this link?\r\n @enumerable static get UNDO() { return manager.GetLocalizedString(720) };\t\t\t\t\t\t\t\t\t\t// UNDO\r\n @enumerable static get REDO() { return manager.GetLocalizedString(721) };\t\t\t\t\t\t\t\t\t\t// Redo\r\n @enumerable static get PRINT() { return manager.GetLocalizedString(722) };\t\t\t\t\t\t\t\t\t\t// Print\r\n @enumerable static get AUTO_LAYOUT() { return manager.GetLocalizedString(723) };\t\t\t\t\t\t\t\t// Auto-layout\r\n @enumerable static get TOGGLE_FULL_SCREEN() { return manager.GetLocalizedString(724) };\t\t\t\t\t\t// Toggle full screen\r\n @enumerable static get ROTATE() { return manager.GetLocalizedString(725) };\t\t\t\t\t\t\t\t\t// Rotate\r\n @enumerable static get ONLIFESTATUSTRIGGER() { return manager.GetLocalizedString(726) };\t\t\t\t\t\t// OnLifestatusSet Trigger\r\n @enumerable static get PRESENTATION() { return manager.GetLocalizedString(727) };\t\t\t\t\t\t\t\t// Presentation\r\n @enumerable static get FILL() { return manager.GetLocalizedString(728) };\t\t\t\t\t\t\t\t\t\t// Fill\r\n @enumerable static get OUTLINE() { return manager.GetLocalizedString(729) };\t\t\t\t\t\t// Outline\r\n @enumerable static get FONT_SIZE() { return manager.GetLocalizedString(730) };\t\t\t\t\t\t// Font size\r\n @enumerable static get FONT_THICKNESS() { return manager.GetLocalizedString(731) };\t\t\t\t\t\t// Font thickness\r\n @enumerable static get FONT_COLOR() { return manager.GetLocalizedString(732) };\t\t\t\t\t\t// Font color\r\n @enumerable static get TRANSITION() { return manager.GetLocalizedString(733) };\t\t\t\t\t\t// Transition\r\n @enumerable static get APPROVAL() { return manager.GetLocalizedString(734) };\t\t\t\t\t\t// Approval\r\n @enumerable static get CONNECTION_TYPE() { return manager.GetLocalizedString(735) };\t\t\t\t\t\t// Connection type\r\n @enumerable static get CONNECTION_STYLE() { return manager.GetLocalizedString(736) };\t\t\t\t\t\t// Connection style\r\n @enumerable static get LINE_THICKNESS() { return manager.GetLocalizedString(737) };\t\t\t\t\t\t// Line thickness\r\n @enumerable static get LINE_STYLE() { return manager.GetLocalizedString(738) };\t\t\t\t\t\t// Line style\r\n @enumerable static get COLOR() { return manager.GetLocalizedString(739) };\t\t\t\t\t\t// Color\r\n @enumerable static get ENABLE() { return manager.GetLocalizedString(740) };\t\t\t\t\t\t// Enable\r\n @enumerable static get NEXT_ALLOWED() { return manager.GetLocalizedString(741) };\t\t\t\t\t\t// Next Allowed\r\n @enumerable static get SOLID() { return manager.GetLocalizedString(742) };\t\t\t\t\t\t// Solid\r\n @enumerable static get DOTTED() { return manager.GetLocalizedString(743) };\t\t\t\t\t\t// Dotted\r\n @enumerable static get DASHED() { return manager.GetLocalizedString(744) };\t\t\t\t\t\t// Dashed\r\n\t@enumerable static get BOLD() { return manager.GetLocalizedString(746) };\t\t\t\t\t\t// Bold\r\n\t@enumerable static get INVALID_LIFESTATUS_NAME() { return manager.GetLocalizedString(747) };\t\t// Invalid lifestatus name: Start\r\n\t@enumerable static get ADVANCED_MODE() { return manager.GetLocalizedString(773) };\t\t// Advanced mode\r\n\t@enumerable static get TIME_FRAME() { return manager.GetLocalizedString(775) };\t\t// Time Frame\r\n\t@enumerable static get DURATION_ELAPSED() { return manager.GetLocalizedString(776) };\t\t// Duration elapsed\r\n\t@enumerable static get DEADLINE_ELAPSED() { return manager.GetLocalizedString(777) };\t\t// Deadline elapsed\r\n\t@enumerable static get NO_ACTION_NODE() { return manager.GetLocalizedString(876) };\t\t// No action node\r\n\t@enumerable static get SKIP_ACTION_CREATION_ON_FOLLOW_UP() { return manager.GetLocalizedString(882) };\t\t// Skip action creation on follow up\r\n\t@enumerable static get CREATE_A_TRIGGER() { return manager.GetLocalizedString( 1048 ) }; // Create a trigger to run functions when the status is set\r\n\t@enumerable static get MULTIPLE_ACTIONS() { return manager.GetLocalizedString(1144) };\t\t\t\t// Multiple actions\r\n\t@enumerable static get SELECTED() { return manager.GetLocalizedString(1183) };\t\t\t\t\t\t\t\t\t\t\t//Selected\r\n\t@enumerable static get ICON_NOT_SELECTED() { return manager.GetLocalizedString(1184) };\t\t\t\t\t\t\t\t//Icon not selected\r\n\t@enumerable static get HIDE_LIFESTATUS_NAME() { return manager.GetLocalizedString(1185) };\t\t\t\t\t\t\t\t//Hide lifestatus name\r\n\t@enumerable static get REFERENCE_FLOW() { return manager.GetLocalizedString(1304) };\t\t\t\t\t\t\t//Reference Flow\r\n\r\n\t//Financial Dashboard\r\n\t@enumerable static get LEDGER() { return manager.GetLocalizedString(750)};\t\t\t\t\t// Ledger\r\n\t@enumerable static get ACCOUNTS() { return manager.GetLocalizedString(751)};\t\t\t\t\t// Accounts\r\n\t@enumerable static get NO_CONTROLS_OF_TYPE_INVOICING() { return manager.GetLocalizedString(752)}; //There are no controls of type Invoicing\r\n\t@enumerable static get READY_FOR_INVOICING_DATA() { return manager.GetLocalizedString(753)}; //Ready for invoicing data\r\n\t@enumerable static get INVOICED() { return manager.GetLocalizedString(755)}; //Invoiced\r\n\t@enumerable static get READY_FOR_PROCESSING_DATA() { return manager.GetLocalizedString(756)}; //Ready for processing data\r\n\t@enumerable static get SELECT_FINANCIAL_PROCESSOR() { return manager.GetLocalizedString(757)}; //Select Financial Processor\r\n\r\n\t//User Allowance\r\n\t@enumerable static get OVERRIDE_SECURITY() { return manager.GetLocalizedString(863)}; \t\t\t\t\t\t//Override security\r\n\t@enumerable static get CHANGE_RECORD_SECURITY() { return manager.GetLocalizedString(864)}; \t\t\t\t\t//Change record security\r\n\t@enumerable static get NATIVE_SQL() { return manager.GetLocalizedString(865)}; \t\t\t\t\t\t\t\t//Native SQL\r\n\t@enumerable static get PLANNING() { return manager.GetLocalizedString(866)}; \t\t\t\t\t\t\t\t\t//Planning\r\n\t@enumerable static get MAKE_PERSONAL_LABEL() { return manager.GetLocalizedString(867)}; \t\t\t\t\t\t//Make personal\r\n\t@enumerable static get EXPORT_DATA() { return manager.GetLocalizedString(868)}; \t\t\t\t\t\t\t\t//Export data1\r\n\t@enumerable static get MAKE_EXAMPLE_LABLE() { return manager.GetLocalizedString(869)}; \t\t\t\t\t\t//Make example\r\n\r\n\t//User Security\r\n\t@enumerable static get SUPER_USER() { return manager.GetLocalizedString( 870 )};\t\t\t\t\t\t\t\t//SuperUser\r\n\t@enumerable static get DESIGNER_LEVEL1() { return manager.GetLocalizedString( 871 )};\t\t\t\t\t\t\t\t//Designer Level 1\r\n\t@enumerable static get DESIGNER_LEVEL2() { return manager.GetLocalizedString( 872 )};\t\t\t\t\t\t\t\t//Designer Level 2\r\n\t@enumerable static get DESIGNER_LEVEL3() { return manager.GetLocalizedString( 873 )};\t\t\t\t\t\t\t\t//Designer Level 3\r\n\t@enumerable static get NETWORK_MANAGER() { return manager.GetLocalizedString( 1273)};\t\t\t\t\t\t\t\t//Network Manager\r\n\t@enumerable static get US() { return manager.GetLocalizedString( 874 )};\t\t\t\t\t\t\t\t\t\t//US\r\n\r\n\r\n\t@enumerable static get FINANCIAL() { return manager.GetLocalizedString( 893 )};\t\t\t\t\t\t\t\t//Financial\r\n\r\n\t//General properties\r\n\t@enumerable static get PLEASE_SPECIFY_THE_URL() { return manager.GetLocalizedString( 953 ) }\t\t\t\t//Please, specify the url\r\n\t@enumerable static get DROP_REPORT_HERE() { return manager.GetLocalizedString( 954 ) }\t\t\t\t\t\t//Drop report here\r\n\r\n\t//Planner level control\r\n\r\n\t@enumerable static get LINK_UNDERLYING_RECORD() { return manager.GetLocalizedString( 913 )};\t\t\t\t\t//Click to link a {UnderlyingSubject} record\r\n\t@enumerable static get ADD_AND_LINK_UNDERLYING_RECORD() { return manager.GetLocalizedString( 917 )};\t\t\t//Click to add & link a {UnderlyingSubject} record\r\n\t@enumerable static get PROJECT_MANAGER() { return manager.GetLocalizedString( 972 )};\t\t\t\t\t\t\t//Project manager\r\n\t\r\n\t@enumerable\tstatic get OVERWRITE() { return manager.GetLocalizedString( 1155 )};\t\t\t\t\t\t\t\t\t\t\t//Overwrite\r\n\t\r\n\t@enumerable\tstatic get SKIP_EXISTING() { return manager.GetLocalizedString( 1156 )};\t\t\t\t\t\t\t\t\t\t//Skip existing\r\n\r\n\t@enumerable\tstatic get COPY_PLANNER_DATA() { return manager.GetLocalizedString(1159) }; //Copy planning data\r\n\t\r\n\t@enumerable static get COPY_PERIOD() { return manager.GetLocalizedString(1160) }; \t//Copy {periodName}\r\n\r\n\t@enumerable static get CONFIRM_SELECTION() { return manager.GetLocalizedString(1161) }; \t//Confirm selection\r\n\r\n\t//#region Deletion modes\r\n\t@enumerable static get ON_DELETE() { return manager.GetLocalizedString(1232) };\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//On delete\r\n\t@enumerable static get DISABLING_A_RECORD_WITH_A_CUSTOM_LIFESTATUS_IS_NOT_ALLOWED() { return manager.GetLocalizedString(1229) }; \t\t\t\t//Disabling a record with a custom lifestatus is not allowed\r\n\t//#endregion\r\n\r\n\t//#region Undefined\r\n\t@enumerable static get NOTIFICATIONS_LABEL() { return manager.GetLocalizedString( 778 )};\t\t\t\t\t\t//Notifications\r\n\t@enumerable static get TABLE_VIEW_LABEL() { return manager.GetLocalizedString(779)}; \t\t\t\t\t\t\t//TableView\r\n\t@enumerable static get GRID_BULK_EDIT() { return manager.GetLocalizedString(781)}; \t\t\t\t\t\t\t//Bulk edit\r\n\t@enumerable static get SEND_BY_EMAIL() { return manager.GetLocalizedString(782)}; \t\t\t\t\t\t\t//Send by email\r\n\t@enumerable static get EDIT_RECORD_LABEL() { return manager.GetLocalizedString(783)}; \t\t\t\t\t\t//Edit record\r\n\t@enumerable static get ACCESS_DENIED_LABEL() { return manager.GetLocalizedString(784)}; \t\t\t\t\t\t//Access denied\r\n\t@enumerable static get UNLINK_RECORD_LABEL() { return manager.GetLocalizedString(785)}; \t\t\t\t\t\t//Unlink record\r\n\t@enumerable static get UNLINK_MANY_RECORDS_LABEL() { return manager.GetLocalizedString(1424)}; \t\t\t\t//Unlink many records\r\n\t@enumerable static get UNLINK_LABEL() { return manager.GetLocalizedString(1425)}; \t\t\t\t\t\t\t//Unlink\r\n\t@enumerable static get UNLINK_ALL_SELECTED_LABEL() { return manager.GetLocalizedString(1426)}; \t\t\t\t//Unlink all selected\r\n\t@enumerable static get ENABLE_RECORD_LABEL() { return manager.GetLocalizedString(786)}; \t\t\t\t\t\t//Enable record\r\n\t@enumerable static get DISABLE_RECORD_LABEL() { return manager.GetLocalizedString(787)}; \t\t\t\t\t\t//Disable record\r\n\t@enumerable static get ADD_TO_BASKET_LABEL() { return manager.GetLocalizedString(788)}; \t\t\t\t\t\t//Add to basket\r\n\t@enumerable static get REMOVE_FROM_BASKET_LABEL() { return manager.GetLocalizedString(789)}; \t\t\t\t\t//Remove from basket\r\n\t@enumerable static get PLANNER_LABEL() { return manager.GetLocalizedString(790)}; \t\t\t\t\t\t\t//Planner\r\n\t@enumerable static get SELECT_VALUE_LABEL() { return manager.GetLocalizedString(792)}; \t\t\t\t\t\t//Select value ...\r\n\t@enumerable static get OWNER_LABEL() { return manager.GetLocalizedString(793)}; \t\t\t\t\t\t\t\t//Owner\r\n\t@enumerable static get ADD_NEW_LINK_LABEL() { return manager.GetLocalizedString(794)}; \t\t\t\t\t\t//Add new link\r\n\t@enumerable static get REMOVE_LINK_LABEL() { return manager.GetLocalizedString(795)}; \t\t\t\t\t\t//Remove link\r\n\t@enumerable static get EDIT_LINK_LABEL() { return manager.GetLocalizedString(796)}; \t\t\t\t\t\t\t//Edit link\r\n\t@enumerable static get TABLE_TEXT_NON_HAS_FIELDS() { return manager.GetLocalizedString(797)}; \t\t\t\t//Link table does not have any Custom fields\r\n\t@enumerable static get RECORD_VIEWED_LABEL() { return manager.GetLocalizedString(791)}; \t\t\t\t\t\t//Record viewed\r\n\t@enumerable static get RECORD_EDITED_LABEL() { return manager.GetLocalizedString(798)}; \t\t\t\t\t\t//Record edited\r\n\t@enumerable static get RECORD_DELETED_LABEL() { return manager.GetLocalizedString(799)}; \t\t\t\t\t\t//Record deleted\r\n\t@enumerable static get LINK_CREATED_LABEL() { return manager.GetLocalizedString(800)}; \t\t\t\t\t\t//Link created\r\n\t@enumerable static get LINK_EDITED_LABEL() { return manager.GetLocalizedString(801)}; \t\t\t\t\t\t//Link edited\r\n\t@enumerable static get LINK_DELETED_LABEL() { return manager.GetLocalizedString(802)}; \t\t\t\t\t\t//Link deleted\r\n\t@enumerable static get GLOBAL_SETTINGS_LABEL() { return manager.GetLocalizedString(803)}; \t\t\t\t\t//Global settings\r\n\t@enumerable static get NO_EXAMPLE_LABEL() { return manager.GetLocalizedString(804)}; \t\t\t\t\t\t\t//No example\r\n\t@enumerable static get CLUSTERED_FLAG() { return manager.GetLocalizedString(805)}; \t\t\t\t\t\t\t//Clustered\r\n\t@enumerable static get FIELD_MATCHING_LABEL() { return manager.GetLocalizedString(806)}; \t\t\t\t\t\t//Field matching\r\n\t@enumerable static get LINKED_ENTITY_LABEL() { return manager.GetLocalizedString(807)}; \t\t\t\t\t\t//Linked entity\r\n\t@enumerable static get CURRENT_ENTITY_LABEL() { return manager.GetLocalizedString(808)}; \t\t\t\t\t\t//Current entity\r\n\t@enumerable static get SELECT_FORMAT_LABEL() { return manager.GetLocalizedString(809)}; \t\t\t\t\t\t//Select format\r\n\t@enumerable static get SELECT_LABEL() { return manager.GetLocalizedString(810)}; \t\t\t\t\t\t\t\t//Select\r\n\t@enumerable static get ACCOUNT_NAME_LABEL() { return manager.GetLocalizedString(811)}; \t\t\t\t\t\t//Account Name\r\n\t@enumerable static get ACTIVE_LABEL() { return manager.GetLocalizedString(813)}; \t\t\t\t\t\t\t\t//Active\r\n\t@enumerable static get ARCHIVE_LABEL() { return manager.GetLocalizedString(814)}; \t\t\t\t\t\t\t//Archive\r\n\t@enumerable static get REVOKE_LABEL() { return manager.GetLocalizedString(815)}; \t\t\t\t\t\t\t\t//Revoke\r\n\t@enumerable static get RLANNED_LABEL() { return manager.GetLocalizedString(816)}; \t\t\t\t\t\t\t//Planned\r\n\t@enumerable static get ACQUIRED_LABEL() { return manager.GetLocalizedString(817)}; \t\t\t\t\t\t\t//Acquired\r\n\t@enumerable static get MAINTAINED_LABEL() { return manager.GetLocalizedString(818)}; \t\t\t\t\t\t\t//Maintained\r\n\t@enumerable static get OPERATIONAL_LABEL() { return manager.GetLocalizedString(819)}; \t\t\t\t\t\t//Operational\r\n\t@enumerable static get RETIRED_LABEL() { return manager.GetLocalizedString(820)}; \t\t\t\t\t\t\t//Retired\r\n\t@enumerable static get SECURITY_EDITOR_LABEL() { return manager.GetLocalizedString(821)}; \t\t\t\t\t//Security Editor\r\n\t@enumerable static get SECURITY_LABEL() { return manager.GetLocalizedString(822)}; \t\t\t\t\t\t\t//Security\r\n\t@enumerable static get PASS_OWNER_LABEL() { return manager.GetLocalizedString(823)}; \t\t\t\t\t\t\t//Pass owner\r\n\t@enumerable static get PASS_INHERITANCE_SETTINGS_LABEL() { return manager.GetLocalizedString(1178)}\t\t\t//Pass inheritance settings\r\n\t@enumerable static get USER_USER_GROUP_LABEL() { return manager.GetLocalizedString(824)}; \t\t\t\t\t//User/User group\r\n\t@enumerable static get RIGHTS_LABEL() { return manager.GetLocalizedString(825)}; \t\t\t\t\t\t\t\t//Rights\r\n\t@enumerable static get OPTIONALS_RIGHTS_LABEL() { return manager.GetLocalizedString(826)}; \t\t\t\t\t//Optional Rights\r\n\t@enumerable static get DO_NOT_PASS_SECURITY_LABEL() { return manager.GetLocalizedString(827)}; \t\t\t\t//Do not pass security\r\n\t@enumerable static get PASS_RIGHTS_LABEL() { return manager.GetLocalizedString(828)}; \t\t\t\t\t\t//Pass rights\r\n\t@enumerable static get PASS_OPTIONAL_RIGHTS_LABEL() { return manager.GetLocalizedString(829)}; \t\t\t\t//Pass optional rights\r\n\t@enumerable static get REFUSE_PASSED_SECURITY_LABEL() { return manager.GetLocalizedString(830)}; \t\t\t\t//Refuse passed security\r\n\t@enumerable static get CLOSE_LABEL() { return manager.GetLocalizedString(831)}; \t\t\t\t\t\t\t\t//Close\r\n\t@enumerable static get ROW_LABEL() { return manager.GetLocalizedString(833)}; \t\t\t\t\t\t\t\t//Row\r\n\t@enumerable static get REMOVE_LABEL() { return manager.GetLocalizedString(834)}; \t\t\t\t\t\t\t\t//Remove\r\n\t@enumerable static get PASTE_VARIABLE_LABEL() { return manager.GetLocalizedString(835)}; \t\t\t\t\t\t//Paste variable\r\n\t@enumerable static get DO_YOU_WANT_TO_CREATE_LABEL() { return manager.GetLocalizedString(836)}; \t\t\t\t//Do you want to create a link?\r\n\t@enumerable static get NO_ACCESS_LABEL() { return manager.GetLocalizedString(837)}; \t\t\t\t\t\t\t//No Access\r\n\t@enumerable static get SEARCH_ONLY_LABEL() { return manager.GetLocalizedString(838)}; \t\t\t\t\t\t//Search Only\r\n\t@enumerable static get EDITDELETE_LABEL() { return manager.GetLocalizedString(839)}; \t\t\t\t\t\t\t//Edit/Delete\r\n\t@enumerable static get EDIT_DELETE_SECURITY_LABEL() { return manager.GetLocalizedString(840)}; \t\t\t\t//Edit/Delete/Security\r\n\t@enumerable static get FULL_ACCESS_LABEL() { return manager.GetLocalizedString(841)}; \t\t\t\t\t\t//Full Access\r\n\t@enumerable static get SELECT_RIGHTS() { return manager.GetLocalizedString(992)}; \t\t\t\t\t\t\t//Select Rights\r\n\t@enumerable static get EDIT_CODE_LABEL() { return manager.GetLocalizedString(842)}; \t\t\t\t\t\t\t//Edit code\r\n\t@enumerable static get ADD_DEFAULT_SECURITY() { return manager.GetLocalizedString(955) };\t\t\t\t\t\t//Add default security\r\n\t@enumerable static get SELECT_SECURITY_PROFILE() { return manager.GetLocalizedString(1206) };\t\t\t\t\t//Select security profile\r\n\t@enumerable static get PLEASE_SELECT_THE_PROFILE() { return manager.GetLocalizedString(1207) };\t\t\t\t\t//Please, select the profile\r\n\t@enumerable static get NO_ALTERNATIVE_ENTITIES_WERE_SELECTED() { return manager.GetLocalizedString(958) };\t\t//No alternative entities were selected\r\n\t@enumerable static get SWITCH_TO_THE_DASH_TYPE() { return manager.GetLocalizedString(1009) };\t\t\t\t\t// Switch to the dash type to add a field\r\n\r\n\t@enumerable static get FILL_LOOKUP() { return manager.GetLocalizedString(887)}; \t\t\t\t\t\t\t\t//Fill lookup\r\n\t@enumerable static get MAKE_A_BACK_LINK() { return manager.GetLocalizedString(888)}; \t\t\t\t\t\t\t//Make a back link\r\n\t@enumerable static get BUTTON_NAME() { return manager.GetLocalizedString(889)}; \t\t\t\t\t\t\t\t//Button Name\r\n\t@enumerable static get SUB_TABLE_VIEW() { return manager.GetLocalizedString(890)}; \t\t\t\t\t\t\t//Sub table view\r\n\t@enumerable static get INTENTION() { return manager.GetLocalizedString(891)}; \t\t\t\t\t\t\t\t//Intention\r\n\t@enumerable static get NO_RECORDS_TO_SELECT() { return manager.GetLocalizedString(952)}; \t\t\t\t\t\t//No records to select\r\n\t@enumerable static get CLICK_TO_COPY_URL() { return manager.GetLocalizedString(1440)};\t\t\t\t\t\t//Click to copy URL\r\n\t//#endregion\r\n\t\r\n\t//#region Cluster Settings\r\n\t@enumerable static get CLUSTER_SETTINGS() {return manager.GetLocalizedString(932)}\t\t\t\t\t\t\t\t\t\t\t\t\t//Cluster Settings\r\n\t@enumerable static get COPY_CLUSTER_MODE_DESCRIPTION() {return manager.GetLocalizedString(933)}\t\t\t\t\t\t\t\t\t\t//The value of the clustered field is copied\r\n\t@enumerable static get DEFAULT_CLUSTER_MODE_DESCRIPTION() {return manager.GetLocalizedString(934)}\t\t\t\t\t\t\t\t\t//The default value of the field is used (empty if not set)\r\n\t@enumerable static get DELTA_CLUSTER_MODE_DESCRIPTION() {return manager.GetLocalizedString(935)}\t\t\t\t\t\t\t\t\t\t//The delta of calculation between the sum of the current values and the sum of the next values, Sum(QuantityCurrent) - Sum(QuantityNext),\r\n\t@enumerable static get INVALID_FIELD_DATA() {return manager.GetLocalizedString(971)}\t\t\t\t\t\t\t//Invalid field data\r\n\t//#endregion\r\n\r\n\t//#region Book\r\n\t@enumerable static get BOOK_CANNOT_BE_RENDERED_ON_THE_BOOK_PAGE() {return manager.GetLocalizedString(1113)}\t\t//Book cannot be rendered on the book page\r\n\t@enumerable static get THERE_ARE_NO_PAGES() {return manager.GetLocalizedString(1114)}\t\t\t\t\t\t\t//There are no pages\r\n\t@enumerable static get SCREEN_NOT_FOUND_FOR_THE_PAGE() {return manager.GetLocalizedString(1115)}\t\t\t\t//Screen not found for the page\r\n\t@enumerable static get ERROR_GETTING_BOOK_PAGE() {return manager.GetLocalizedString(1122)}\t\t\t\t\t\t//Error getting book page\r\n\t//#endregion\r\n\r\n\t//#region Timer\r\n\t@enumerable static get TIMER() {return manager.GetLocalizedString(1127)}\t\t\t\t\t\t\t\t\t\t//Timer\r\n\t@enumerable static get ACTIVE_TIMERS() {return manager.GetLocalizedString(1128)}\t\t\t\t\t\t\t\t//Active Timers\r\n\t@enumerable static get START_TIMER() {return manager.GetLocalizedString(1466)}\t\t\t\t\t\t\t\t//Start timer\r\n\t@enumerable static get CLICK_TO_SHOW_ACTIVE_TIMERS() {return manager.GetLocalizedString(1129)}\t\t\t\t//Click to show active timers\r\n\t@enumerable static get SET_THE_MAXIMUM_DURATION_TO_HOURS() {return manager.GetLocalizedString(1130)}\t\t\t//Set the maximum duration to ${hours} hours\r\n\t@enumerable static get NO_ACTIVE_TIMERS() {return manager.GetLocalizedString(1139)}\t\t\t\t\t\t\t//No active timers\r\n\t@enumerable static get STOP_THE_TIMER_FOR() {return manager.GetLocalizedString(1491)}\t\t\t\t\t\t\t//Stop the timer for \"{recordName}\"?\r\n\t@enumerable static get STOP_THE_TIMER_FOR_BEFORE_LOGOUT() {return manager.GetLocalizedString(1492)}\t\t\t//Stop the timer for \"{recordName}\" before Logout?\r\n\t@enumerable static get THE_TIMER_FOR_STARTED_AUTOMATICALLY() {return manager.GetLocalizedString(1493)}\t\t//The timer for \"{recordName}\" started automatically\r\n\t//#endregion\r\n\r\n //#region Menu Queries\r\n @enumerable static get MENU_QUERIES() { return manager.GetLocalizedString( 1141 ) }\t\t\t\t\t\t\t //Menu Queries\r\n\t//#endregion\r\n\r\n\t//#region Decimal\r\n @enumerable static get DECIMAL_DIGITS_VALIDATION_MESSAGE() { return manager.GetLocalizedString(1153) }\t\t//Value must have at most {decimalDigits} digits in decimal part and at most {totalDigits} digits in total\r\n\t//#endregion\r\n\r\n //#region ProgressBar\r\n @enumerable static get DRAG_N_DROP_FLOWFOLDER() { return manager.GetLocalizedString(1190) } //Drag-n-drop grid records to add them to the folder\r\n\t@enumerable static get STATUS_SELECTOR() { return manager.GetLocalizedString( 1514 ) }\t\t\t//Status Selector\r\n\r\n\t//#endregion\r\n\r\n\t//#region Chart\r\n\t@enumerable static get SERIES() { return manager.GetLocalizedString(1244) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Series\r\n\t@enumerable static get NO_VALID_SUBTABLE_VIEW() { return manager.GetLocalizedString(1247) }\t\t\t\t\t\t\t\t\t\t//No valid subtable view\r\n\t//#endregion\r\n\r\n\t//#region Network Designer\r\n\t@enumerable static get ACCESS_RECORD_EXISTS() { return manager.GetLocalizedString(1296) }\t\t\t\t\t\t\t\t\t\t//This access record already exists\r\n\t@enumerable static get PLEASE_SELECT_USER() { return manager.GetLocalizedString(1300) }\t\t\t\t\t\t\t\t\t\t//Please, select user\r\n\t@enumerable static get PLEASE_SPECIFY_REMOTE_USER() { return manager.GetLocalizedString(1301) }\t\t\t\t\t\t\t\t//Please, specify remote user\r\n\t//#endregion\r\n\r\n\t//#region Translation editor\r\n\t@enumerable static get FILTER_BY_TYPE() { return manager.GetLocalizedString(1423) }\t\t\t\t\t\t\t\t\t\t\t//Filter by type\r\n\t//#endregion\r\n\r\n\t//#region Login Page\r\n\t@enumerable static get LOGIN() { return manager.GetLocalizedString(1398, 'Login') }\t\t\t\t\t\t\t\t//Login\r\n\t@enumerable static get RESET_PASSWORD() { return manager.GetLocalizedString(1399, 'Reset password') }\t\t\t\t//Reset password\r\n\t@enumerable static get ENTER_LOGIN() { return manager.GetLocalizedString(1401, 'Please, enter a login') }\t\t\t\t//Please, enter a login\r\n\t@enumerable static get ENTER_PASSWORD() { return manager.GetLocalizedString(1402, 'Please, enter a password') }\t\t\t\t//Please, enter a password\r\n\t@enumerable static get SELECT_DATABASE() { return manager.GetLocalizedString(1404, 'Please, select database') }\t\t\t\t//Please, select database\r\n\r\n\t@enumerable static get PASSWORD_EXPIRED() { return manager.GetLocalizedString(1405, 'Your password is expired') }\t\t\t//Your password is expired\r\n\t@enumerable static get CONFIRM_NEW_PASSWORD() { return manager.GetLocalizedString(1408, 'Confirm new password') }\t\t\t//Confirm new password\r\n\t@enumerable static get PASSWORD_EXPIRED_IN() { return manager.GetLocalizedString(1409, 'Your password will be expired in {amount} day(s)') }\t\t\t//Your password will be expired in {amount} day(s)\r\n\t//#endregion\r\n\r\n\t//#region Recipe Editor\r\n\t@enumerable static get RECIPE_NAME() { return manager.GetLocalizedString(1336) }\t\t\t\t\t\t\t\t\t\t\t\t//Recipe Name\r\n\t@enumerable static get LOCKED_THE_ROOT_NODE_IS_LINKED_TO_THE_LOCK_ENTITY() { return manager.GetLocalizedString(1345) }\t\t//Locked. The root node is linked to the lock entity\r\n\t@enumerable static get WILL_BE_APPLICABLE_DURING_UNLINKING_OF_ANY_PART_OF_RECIPE() { return manager.GetLocalizedString(1346) }\t//Will be applicable during Unlinking of any part of the recipe on any screen\r\n\t//#endregion\r\n\r\n\t@enumerable static get GENERATE_DOCUMENT_FROM_TEMPLATE() { return manager.GetLocalizedString(1434) } //Generate a document from a template\r\n\r\n\t//#region Report issue\r\n\t@enumerable static get SEND_TICKET() { return manager.GetLocalizedString(1450) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Send ticket\r\n\t@enumerable static get CREATE_TICKET() { return manager.GetLocalizedString(1451) }\t\t\t\t\t\t\t\t\t\t\t\t//Create ticket\r\n\t@enumerable static get SUMMARY() { return manager.GetLocalizedString(1452) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Summary\r\n\t@enumerable static get SUMMARY_IS_REQUIRED() { return manager.GetLocalizedString(1453) }\t\t\t\t\t\t\t\t\t\t\t//Summary is required\r\n\t@enumerable static get SUMMARY_SHOULD_HAVE_MAXIMUM_80_CHARACTERS() { return manager.GetLocalizedString(1454) }\t\t\t\t\t//Summary should have maximum 80 characters\r\n\t@enumerable static get CATEGORY() { return manager.GetLocalizedString(1455) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Category\r\n\t@enumerable static get CATEGORY_IS_REQUIRED() { return manager.GetLocalizedString(1456) }\t\t\t\t\t\t\t\t\t\t\t//Category is required\r\n\t@enumerable static get URGENCY() { return manager.GetLocalizedString(1457) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Urgency\r\n\t@enumerable static get URGENCY_IS_REQUIRED() { return manager.GetLocalizedString(1458) }\t\t\t\t\t\t\t\t\t\t\t//Urgency is required\r\n\t@enumerable static get REPORT_ISSUE_DESCRIPTION_PLACEHOLDER() { return manager.GetLocalizedString(1459) }\t\t\t\t\t\t\t//What exactly goes wrong?\\nWhat are the steps to reproduce the issue?\\nDoes it happen with all records or only with this one?\\nCan other users reproduce the issue?\\nThe more details, the better.\r\n\t@enumerable static get DESCRIPTION_IS_REQUIRED() { return manager.GetLocalizedString(1460) }\t\t\t\t\t\t\t\t\t\t//Description is required\r\n\t@enumerable static get DESCRIPTION_SHOULD_HAVE_AT_LEAST_50_CHARACTERS() { return manager.GetLocalizedString(1461) }\t\t\t\t//Description should have at least 50 characters\r\n\t@enumerable static get DESCRIPTION_SHOULD_HAVE_MAXIMUM_2000_CHARACTERS() { return manager.GetLocalizedString(1462) }\t\t\t\t//Description should have maximum 2000 characters\r\n\t@enumerable static get SWITCH_TO_VERSION() { return manager.GetLocalizedString(1480) }\t\t\t\t\t\t\t\t\t\t\t\t//Switch to this version\r\n\t//#endregion\r\n}\r\n\r\n//#region\r\nexport class CONFIRMATIONS {\r\n\t@enumerable static get ARE_YOUR_SURE_TO_DELETE_RECORDS() { return manager.GetLocalizedString(347) }\t\t\t\t\t\t\t\t//Are you sure that you want to delete record(s)?\r\n\t@enumerable static get ARE_YOUR_SURE_TO_DISABLE_RECORDS() { return manager.GetLocalizedString(711) }\t\t\t\t\t\t\t//Record(s) could not be deleted. Record(s) will be disabled.Proceed?\r\n\t@enumerable static get ALL_RELATED_DATA_WILL_BE_LOST_CONTINUE() { return manager.GetLocalizedString(1228) }\t\t\t\t\t\t//All related data will be lost. Continue?\r\n\t@enumerable static get DELETION_NOT_ALLOWED_DUE_TO_EXISTING_RELATED_RECORDS() { return manager.GetLocalizedString(1230) }\t\t//Deletion not allowed due to existing related records\r\n\r\n\t@enumerable static get FIELD_WILL_BE_REMOVED_FROM_NEXT_FIELD_COLLECTION() { return manager.GetLocalizedString( 348 ) }\t\t\t//Field will be removed from next field collections: {DeletedFields}\r\n\t@enumerable static get ALL_CHANGES_WILL_BE_LOST() { return manager.GetLocalizedString(349) }\t\t\t\t\t\t\t\t\t//All unsaved changes will be lost. Save changes?\r\n\t@enumerable static get DELETE_DATABASE_CONFIGURATION() { return manager.GetLocalizedString( 353 ) }\t\t\t\t\t\t\t\t//Delete database configuration?\r\n\t@enumerable static get CLOSE() { return manager.GetLocalizedString( 356 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t\t//Close?\r\n\t@enumerable static get DISCARD() { return manager.GetLocalizedString( 357 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Discard?\r\n\t@enumerable static get SEND() { return manager.GetLocalizedString( 1329 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Send\r\n\r\n\t@enumerable static get FUNCTION_PACKAGE_DELETION() { return manager.GetLocalizedString( 597 ) };\t\t\t\t\t\t\t\t//Current function package and all related data will be deleted. Proceed?\r\n\t@enumerable static get SUBFORM_AND_ITS_CONTROLS_WILL_BE_DELETED() { return manager.GetLocalizedString( 1264 ) }\t\t\t\t\t//Subform and its controls will be deleted. Proceed?\r\n\t@enumerable static get DO_YOU_WANT_TO_STOP_RECORD_NAME() { return manager.GetLocalizedString( 1318 ) }\t\t\t\t\t\t\t//Do you want to stop {recordName}?\r\n\r\n\r\n\t@enumerable static get UNLINK_RECORD() { return manager.GetLocalizedString( 360 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Unlink record?\r\n\t@enumerable static get UNLINK_USER() { return manager.GetLocalizedString( 361 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Unlink user?\r\n\t@enumerable static get CONTINUE() { return manager.GetLocalizedString( 364 ) }\t\t\t\t\t\t\t\t\t\t\t\t\t//Do you want to continue?\r\n\t@enumerable static get CURRENT_RECORD_WILL_BE_DISABLED() { return manager.GetLocalizedString( 365 ) }\t\t\t\t\t\t\t\t//Current record will be disabled and new one will be created. Proceed?\r\n\t@enumerable static get CANVAS_DATA_HAS_BEEN_CHANGED() { return manager.GetLocalizedString( 366 ) }\t\t\t\t\t\t\t\t//Canvas data has been changed. Are you sure that you want to execute?\r\n\t@enumerable static get SAVE_CHANGES() { return manager.GetLocalizedString( 367 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Save changes?\r\n\t@enumerable static get DELETE_SCREEN() { return manager.GetLocalizedString( 368 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Are you sure that you want to delete this screen?\r\n\t@enumerable static get RESET_SCREEN() { return manager.GetLocalizedString( 369 ) }\t\t\t\t\t\t\t\t\t\t\t\t//Reset screen?\r\n\t@enumerable static get REVERSE_LINK_TABLE() { return manager.GetLocalizedString( 455 ) }\t\t\t\t\t\t\t\t\t\t\t//Do you want to reverse link table?\r\n\t@enumerable static get RELATION_WILL_BE_REMOVED_FROM_LINK_LIST() { return manager.GetLocalizedString( 456 ) }\t\t\t\t\t\t//Link table reversing will remove relations from linklist control on {EntityName} edit screen. Proceed?\r\n\t@enumerable static get DO_YOU_WANT_TO_DELETE() { return manager.GetLocalizedString( 457 ) }\t\t\t\t\t\t\t\t\t\t//Do you want to delete\r\n\t@enumerable static get ARE_SURE_TO_CHANGE_LIFESTATUS() { return manager.GetLocalizedString( 519 ) };\t\t\t\t\t\t\t\t//Are sure you want to proceed from {fromstatus} to {tostatus}?\r\n\t@enumerable static get ARE_SURE_TO_CHECKIN_DOCUMENT() { return manager.GetLocalizedString( 578 ) };\t\t\t\t\t\t\t\t//Document status will be changed to \"Checkout\". Proceed?\r\n\t@enumerable static get DEDUPLICATION_RECORDS_DELETION() { return manager.GetLocalizedString( 598 ) };\t\t\t\t\t\t\t\t//{matchQuantity} records will be deleted. Proceed?\r\n\t@enumerable static get CONFIRM_ASSEMBLY_CHECKOUT() { return manager.GetLocalizedString( 1101 ) };\t\t\t\t\t\t\t\t//This would change the status of all records listed below. Do you want to continue?\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_DELETE_VERSION() { return manager.GetLocalizedString( 1334 ) };\t\t\t\t\t//Are you sure you want to delete version {VersionName}?\r\n\t@enumerable static get YOU_CAN_LOSE_UNSAVED_DATA_IF_YOU_LEAVE() { return manager.GetLocalizedString( 1473 ) };\t\t\t\t\t//You can lose unsaved data in the current Spreadsheet if You leave the current tab without saving. Proceed?\r\n\r\n\r\n\t@enumerable static get ARE_SURE_TO_CHANGE_CLASS() { return manager.GetLocalizedString( 642 ) };\t\t\t\t\t\t\t\t\t//Are you sure you want to change the class?\r\n\t@enumerable static get ARE_SURE_TO_UPDATE_VERSION() { return manager.GetLocalizedString( 780 ) };\t\t\t\t\t\t\t\t\t//Are you sure you want to update the version?\r\n\r\n\t@enumerable static get TWO_FA_IS_ENABLED_BUT_NOT_CONFIGURED() { return manager.GetLocalizedString( 1413, 'Two-Factor Authentication (2FA) is enabled but not configured on your account.' ) } //Two-Factor Authentication (2FA) is enabled but not configured on your account.\r\n\t@enumerable static get SCAN_QR_CODE_WITH_TWO_FA() { return manager.GetLocalizedString( 1414, 'Scan the following QR code with your two-factor authenticator device.' ) } //Scan the following QR code with your two-factor authenticator device.\r\n\t@enumerable static get FOLLOW_TO_CONFIGURE_TWO_FA() { return manager.GetLocalizedString( 1415, 'Please follow the instructions below to configure 2FA.' ) } \t\t\t\t//Please follow the instructions below to configure 2FA.\r\n\t@enumerable static get ENTER_CODE_FROM_TWO_FA_DEVICE() { return manager.GetLocalizedString( 1416, 'Enter 6-digit code from your two-factor authenticator device:' ) } //Enter 6-digit code from your two-factor authenticator device:\r\n\r\n\t@enumerable static get PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM() { return manager.GetLocalizedString( 520 ) };\t\t\t\t\t\t//Please, type your password to confirm\r\n\t@enumerable static get ENTER_YOUR_PASSWORD_TO_CONTINUE_CLEANING_TABLES() { return manager.GetLocalizedString( 1231 ) };\t\t\t//Selected tables will be cleared. This action cannot be undone. Enter your password to continue\r\n\t@enumerable static get LINK_RECORD_WITH_NEXT_RELATION_TYPE() { return manager.GetLocalizedString( 571 ) };\t\t\t\t\t\t//New link with next relation will be created. Proceed?\r\n\r\n\t@enumerable static get CAN_CAUSE_DUPLICATION_OF_ALIAS() { return manager.GetLocalizedString(883) };\t\t\t\t\t\t\t\t//In the future, this can cause duplication of aliases. Proceed?\r\n\t@enumerable static get SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE() { return manager.GetLocalizedString(994) }; \t\t\t\t\t//Records of the selected and preceding days will no longer be editable. Continue?\t\t\t\t\t\t\t\t//In the future, this can cause duplication of aliases. Proceed?\r\n\r\n\t@enumerable static get RESET_LINK_SENT() { return manager.GetLocalizedString(1395, 'Reset link will be sent to the e-mail assigned to {userName}. Proceed?') }\t\t\t//Reset link will be sent to the e-mail assigned to {userName}. Proceed?\r\n\t@enumerable static get CREATE_NEW_ONE() { return manager.GetLocalizedString(1406, 'Please, create a new one') }\t\t//Please, create a new one\r\n\t@enumerable static get DO_YOU_WANT_TO_COPY() { return manager.GetLocalizedString( 1060 ) }\t\r\n\t\r\n\t@enumerable static get SELECT_CELL_SUBJECT() { return manager.GetLocalizedString( 1174 ) } //Select a subject to link to new plannings\r\n\t@enumerable static get THE_TIMER_IS_ALREADY_STARTED() { return manager.GetLocalizedString( 1317 ) } //The timer is already started. Do you want to stop it and start new?\r\n\t@enumerable static get REMOVE_SORT_DESCRIPTION() { return manager.GetLocalizedString( 1339 ) } //Are you sure you want to remove the description?\r\n\t@enumerable static get UNREPORTED_TIME() { return manager.GetLocalizedString( 1412 ) } \t\t\t\t\t\t\t\t\t//You have unreported {X} hour(s) during {Y} day(s)\r\n\t@enumerable static get GENERATE_DOCUMENT_FROM_TEMPLATE() { return manager.GetLocalizedString( 1435 ) } \t\t\t\t\t\t\t\t//Do you want to generate a document using ${template.Name} template for ${nameField.FieldValue || ''} record?\r\n\t@enumerable static get DEFAULT_RETIRED_STATUS_NOW() { return manager.GetLocalizedString( 1437 ) } \t\t\t\t//The {oldstatus} is default retired status now. Do you want to change it to {newstatus}?\r\n\t@enumerable static get ALL_CHILD_RECORDS_WILL_BE_MOVED_TO_THE_RETIRED_STATUSES() { return manager.GetLocalizedString( 1439 ) } \t\t//All child records will be moved to the {RetiredStatuses}. Proceed?\r\n\r\n\t//#region Deduplication\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_DELETE_ALL_MATCH_RECORDS() { return manager.GetLocalizedString( 1449 ) }\t\t\t\t//Are you sure you want to delete all match records?\r\n\t//#endregion\r\n\r\n\t//#region Document\r\n\t@enumerable static get SAVE_CHANGES_IN_FILE() { return manager.GetLocalizedString(1471) }\t\t\t\t\t//Save changes in {fileName}?\r\n\t@enumerable static get ARE_YOU_SURE_YOU_WANT_TO_SAVE_THE_CHANGES_TO_FILE_AND_CLOSE() { return manager.GetLocalizedString( 1472 ) }\t\t\t\t//Are you sure you want to save the changes to {fileName} and close?\r\n\t//#endregion\r\n\r\n\t@enumerable static get SWITCH_TO_VERSION() { return manager.GetLocalizedString( 1481 ) }\t\t\t\t//Do you want to switch to this version?\r\n\r\n\tstatic get DELETE_DW_PACKAGE() { return manager.GetLocalizedString( 1499 ) } //Are you sure you want to delete DWPackage?\t\r\n}\r\n//#endregion","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class LanguageInfoModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nexport interface ITranslation {\r\n\t[code: number]: string;\r\n}\r\n\r\nexport class TranslationStore {\r\n\tstatic Get(): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetTranslations',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetTranslationsForDb(params: { DbName: string, Language: string }): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetTranslationsForDb',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t}).fail((data)=>{\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLanguages() {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserApi/GetLanguages',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","export class LanguageModel {\r\n\tconstructor(public Id: number,\r\n\t\t\t\tpublic Name: string,\r\n\t\t\t\tpublic ShortName: string,\r\n\t\t\t\tpublic Flag: string,\r\n\t\t\t\tpublic Enabled: boolean,\r\n\t\t\t\tpublic IsDefault: boolean) {\r\n\t}\r\n\r\n\tUpdate(language: LanguageModel) {\r\n\t\tthis.Id = language.Id;\r\n\t\tthis.Name = language.Name;\r\n\t\tthis.ShortName = language.ShortName;\r\n\t\tthis.Flag = language.Flag;\r\n\t\tthis.Enabled = language.Enabled;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {TranslationStore, ITranslation} from \"Core/Components/Translation/Stores/TranslationStore/TranslationStore\";\r\n\r\nimport {LanguageResponseModel} from \"Core/Components/Translation/Stores/TranslationStore/LanguageResponseModel\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {ITranslationValue} from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nexport class TranslationManager {\r\n\tprivate static instance: TranslationManager;\r\n\tprivate static allowInstantiation: boolean;\r\n\tprivate _translations: ITranslation;\r\n\tprivate _languages: LanguageModel[];\r\n\r\n\tconstructor() {\r\n\t\tif (!TranslationManager.allowInstantiation) {\r\n\t\t\tthrow new Error(\"Use TranslationManager.Instance instead\");\r\n\t\t}\r\n\t\tthis._translations = [];\r\n\t\tthis._languages = [];\r\n\t}\r\n\r\n\tstatic get Instance(): TranslationManager {\r\n\t\tif (TranslationManager.instance == null) {\r\n\t\t\tTranslationManager.allowInstantiation = true;\r\n\t\t\tTranslationManager.instance = new TranslationManager();\r\n\t\t\tTranslationManager.allowInstantiation = false;\r\n\t\t}\r\n\r\n\t\treturn TranslationManager.instance;\r\n\t}\r\n\r\n\tget Languages() {\r\n\t\treturn this._languages;\r\n\t}\r\n\r\n\tUpdateLanguages(activeLanguages: number[]) {\r\n\t\tconst currentActiveLanguages = activeLanguages.sort();\r\n\t\tcurrentActiveLanguages.splice(0, 0, this.GetDefaultLanguage().Id);\r\n\r\n\t\tconst cachedLanguages = this._languages.map(l => l.Id).sort();\r\n\t\tconst languagesAreUpToDate = JSON.stringify(cachedLanguages) === JSON.stringify(activeLanguages.sort());\r\n\r\n\t\tif(!languagesAreUpToDate) {\r\n\t\t\treturn this.LoadLanguages();\r\n\t\t}\r\n\r\n\t\tconst deferred = P.defer();\r\n\t\tdeferred.resolve(null);\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tGetCurrentLanguage() {\r\n\t\tconst desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\t\treturn this.GetLanguageByShortName(desktopLanguage);\r\n\t}\r\n\r\n\tGetLanguageById(id: number) {\r\n\t\treturn _.find(this._languages, language => language.Id === id);\r\n\t}\r\n\r\n\tGetLanguageByShortName(shortname: string) {\r\n\t\treturn _.find(this._languages, language => language.ShortName === shortname);\r\n\t}\r\n\r\n\tGetDefaultLanguage() {\r\n\t\treturn new LanguageModel(\r\n\t\t\t0,\r\n\t\t\t'Default',\r\n\t\t\t'DEFAULT',\r\n\t\t\t'/img/Custom/language-default-icon.png',\r\n\t\t\ttrue,\r\n\t\t\ttrue\r\n\t\t);\r\n\t}\r\n\r\n\tGetTranslation(value: string, translations: ITranslationValue[]) {\r\n\t\tconst currentLanguage = this.GetCurrentLanguage();\r\n\t\tconst currentTranslation = _.find(translations, translation => translation.LanguageId === currentLanguage.Id);\r\n\t\tconst translatedValue = currentTranslation && currentTranslation.Value || value;\r\n\t\tconst language = currentTranslation && currentTranslation.Value && currentLanguage || this.GetDefaultLanguage();\r\n\r\n\t\treturn {\r\n\t\t\tValue: value,\r\n\t\t\tTranslatedValue: translatedValue,\r\n\t\t\tLanguage: language\r\n\t\t};\r\n\t}\r\n\r\n\tAddLanguage(language: LanguageModel) {\r\n\t\tthis._languages.push(language);\r\n\t}\r\n\r\n\tDeleteLanguage(id: number) {\r\n\t\tconst languageToRemoveIndex = _.findIndex(this._languages, language => language.Id === id);\r\n\r\n\t\tif (languageToRemoveIndex > -1) {\r\n\t\t\tthis._languages.splice(languageToRemoveIndex, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateLanguage(language: LanguageModel) {\r\n\t\tconst languageToUpdate = _.find(this._languages, language => language.Id === language.Id);\r\n\r\n\t\tif (languageToUpdate) {\r\n\t\t\tlanguageToUpdate.Update(language);\r\n\t\t}\r\n\t}\r\n\r\n\tLoadTranslations(): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tTranslationStore.Get()\r\n\t\t\t.then(translations => {\r\n\t\t\t\tthis._translations = translations;\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tLoadTranslationsForDb(dbName: string, language: string): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tTranslationStore.GetTranslationsForDb({\r\n\t\t\tDbName: dbName,\r\n\t\t\tLanguage: language\r\n\t\t})\r\n\t\t\t.then(translations => {\r\n\t\t\t\tthis._translations = translations;\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail((err)=>{\r\n\t\t\t\tdeferredResult.reject({ message: err.message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tLoadLanguages() {\r\n\t\tBlockUI.Block();\r\n\t\tconst promise = TranslationStore.GetLanguages();\r\n\r\n\t\tpromise.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(languages => {\r\n\t\t\tthis.SaveLanguages(languages);\r\n\t\t\t\r\n\t\t});\r\n\r\n\t\treturn promise;\r\n\t}\r\n\r\n\tGetLocalizedString(code: number, defaultValue: string = null) {\r\n\t\tvar localeString = this._translations[code];\r\n\t\treturn localeString || defaultValue || `${code}`;\r\n\t}\r\n\r\n\tprivate SaveLanguages(languagesFromServer: LanguageResponseModel[]) {\r\n\t\tthis._languages = languagesFromServer.map(language => this.MapToLanguageModel(language));\r\n\t\tthis._languages.splice(0, 0, this.GetDefaultLanguage());\r\n\t}\r\n\r\n\tprivate MapToLanguageModel(language: LanguageResponseModel) {\r\n\t\treturn new LanguageModel(language.K_Language,\r\n\t\t\tlanguage.Name,\r\n\t\t\tlanguage.ShortName,\r\n\t\t\tlanguage.FlagBase64,\r\n\t\t\tlanguage.Enabled,\r\n\t\t\tfalse\r\n\t\t);\r\n\t}\r\n}","import { Notifier } from \"Core/Common/Notifier\";\r\nimport { ON_CLUSTERED_PIVOT_FINISHED, ON_LINK_EDITOR_GRID_SAVE, ON_LINK_EDITOR_UNLINK } from \"./Triggers\";\r\nimport { IExecuteClusteredPivotFinishedTriggerDto, IExecuteLinkEditorGridSaveTriggerDto, IExecuteLinkEditorUnlinkTriggerDto, IParamModel, TriggerStore } from \"./TriggerStore\";\r\n\r\nexport interface IOnLinkEditorGridSaveTrigger {\r\n LeftEntityId: number;\r\n RightEntityId: number;\r\n RelationTypeId: number;\r\n GridEntityId: number;\r\n}\r\n\r\nexport interface IOnLinkEditorUnlinkTrigger {\r\n LeftEntityId: number;\r\n RightEntityId: number;\r\n RelationTypeId: number;\r\n GridEntityId: number;\r\n}\r\n\r\nexport interface IOnClusteredPivotFinishedTrigger{\r\n MainEntityId: number,\r\n MainRecordId: number,\r\n RelatedEntityId: number,\r\n RelatedRecordId: number,\r\n NewKSeq: number,\r\n OldKSeq: number,\r\n ControlId: number\r\n}\r\n\r\nexport class TriggerManager {\r\n constructor(){\r\n\r\n }\r\n\r\n public static ExecuteOnClickTrigger(){\r\n\r\n }\r\n\r\n public static async ExecuteOnLinkEditorGridSaveTrigger(options: IOnLinkEditorGridSaveTrigger, objectId: string){ \r\n let triggerParams: Array = [\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.LEFT_ENTITY_ID, Value: options.LeftEntityId },\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.RIGHT_ENTITY_ID, Value: options.RightEntityId },\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.RELATION_TYPE_ID, Value: options.RelationTypeId },\r\n { Name: ON_LINK_EDITOR_GRID_SAVE.GRID_ENTITY_ID, Value: options.GridEntityId }\r\n ]\r\n\r\n let request: IExecuteLinkEditorGridSaveTriggerDto = {\r\n Name: ON_LINK_EDITOR_GRID_SAVE.NAME,\r\n ObjectId: objectId,\r\n Params: triggerParams\r\n }\r\n\r\n return await TriggerStore.ExecuteLinkEditorGridSaveTrigger(request).fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n \r\n public static async ExecuteOnLinkEditorUnlinkTrigger(options: IOnLinkEditorUnlinkTrigger, objectId: string){ \r\n let triggerParams: Array = [\r\n { Name: ON_LINK_EDITOR_UNLINK.LEFT_ENTITY_ID, Value: options.LeftEntityId },\r\n { Name: ON_LINK_EDITOR_UNLINK.RIGHT_ENTITY_ID, Value: options.RightEntityId },\r\n { Name: ON_LINK_EDITOR_UNLINK.RELATION_TYPE_ID, Value: options.RelationTypeId },\r\n { Name: ON_LINK_EDITOR_UNLINK.GRID_ENTITY_ID, Value: options.GridEntityId }\r\n ]\r\n\r\n let request: IExecuteLinkEditorUnlinkTriggerDto = {\r\n Name: ON_LINK_EDITOR_UNLINK.NAME,\r\n ObjectId: objectId,\r\n Params: triggerParams\r\n }\r\n\r\n return await TriggerStore.ExecuteLinkEditorUnlinkTrigger(request).fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n public static async OnClusteredPivotFinished(options: IOnClusteredPivotFinishedTrigger, objectId: string, triggerId: number){\r\n let triggerParams: Array = [\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.MAIN_RECORD_ID, Value: options.MainRecordId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.MAIN_ENTITY_ID, Value: options.MainEntityId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.RELATED_RECORD_ID, Value: options.RelatedRecordId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.RELATED_ENTITY_ID, Value: options.RelatedEntityId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.CONTROL_ID, Value: options.ControlId },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.NEW_K_SEQ, Value: options.NewKSeq },\r\n { Name: ON_CLUSTERED_PIVOT_FINISHED.OLD_K_SEQ, Value: options.OldKSeq }\r\n ];\r\n\r\n let request: IExecuteClusteredPivotFinishedTriggerDto = {\r\n Id: triggerId,\r\n ObjectId: objectId,\r\n Params: triggerParams\r\n }\r\n\r\n return await TriggerStore.ExecuteClusteredPivotFinishedTrigger(request).fail((err) => new Notifier().Failed(err.message));\r\n }\r\n}","export const ON_LINK_EDITOR_GRID_SAVE = {\r\n NAME: 'OnLinkEditorGridSave',\r\n LEFT_ENTITY_ID: 'LeftEntityId',\r\n RIGHT_ENTITY_ID: 'RightEntityId',\r\n RELATION_TYPE_ID: 'RelationTypeId',\r\n GRID_ENTITY_ID: 'GridEntityId'\r\n}\r\n\r\nexport const ON_CLUSTERED_PIVOT_FINISHED = {\r\n NAME: 'OnClusteredPivotFinished',\r\n MAIN_ENTITY_ID: 'MainEntityId',\r\n MAIN_RECORD_ID: 'MainRecordId',\r\n RELATED_ENTITY_ID: 'RelatedEntityId',\r\n RELATED_RECORD_ID: 'RelatedRecordId',\r\n NEW_K_SEQ: 'NewKSeq',\r\n OLD_K_SEQ: 'OldKSeq',\r\n CONTROL_ID: 'ControlId',\r\n}\r\n\r\nexport const ON_LINK_EDITOR_UNLINK = {\r\n NAME: 'OnLinkEditorUnlink',\r\n LEFT_ENTITY_ID: 'LeftEntityId',\r\n RIGHT_ENTITY_ID: 'RightEntityId',\r\n RELATION_TYPE_ID: 'RelationTypeId',\r\n GRID_ENTITY_ID: 'GridEntityId'\r\n}","import { P } from 'Core/Common/Promise';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\n\r\nexport interface IParamModel {\r\n\tName: string;\r\n\tValue: string | number;\r\n}\r\n\r\nexport interface IExecuteTriggerRequestModel {\r\n\tId: number;\r\n\tName: string;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IExecuteLinkEditorGridSaveTriggerDto {\r\n\tName: string;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IExecuteLinkEditorUnlinkTriggerDto {\r\n\tName: string;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IExecuteClusteredPivotFinishedTriggerDto {\r\n\tId: number;\r\n\tParams: Array;\r\n\tObjectId: string;\r\n}\r\n\r\nexport class TriggerStore {\r\n\tpublic static ExecuteClickTrigger(params: IExecuteTriggerRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteClickTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tpublic static ExecuteLinkEditorGridSaveTrigger(params: IExecuteLinkEditorGridSaveTriggerDto): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteLinkEditorGridSaveTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tpublic static ExecuteLinkEditorUnlinkTrigger(params: IExecuteLinkEditorUnlinkTriggerDto): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteLinkEditorUnlinkTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tpublic static ExecuteClusteredPivotFinishedTrigger(params: IExecuteClusteredPivotFinishedTriggerDto): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TriggerApi/ExecuteClusteredPivotFinishedTrigger',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(() => {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\"\r\n\r\nexport enum ControlTypes { Search };\r\n\r\nexport enum KeyCodes { Enter = 13 };\r\n\r\nexport enum RenderModes { View, Edit, Design, ToolBar, Search, List, HelpView, GridRow };\r\n\r\nexport enum PortletRenderModes {View, Edit, Design};\r\n\r\nexport const LABEL_POSITIONS = {\r\n\tNoLabel: 'NoLabel',\r\n\tFullWidth: 'FullWidth'\r\n};\r\n\r\nexport const FONT_STYLES = {\r\n\tBOLD: 'bold',\r\n\tNORMAL: '400',\r\n\tUNDERLINE: 'underline',\r\n\tITALIC: 'italic'\r\n}\r\n\r\nexport const PASSWORD = {\r\n\tMinimumLength: 8,\r\n\tDefaultValue: 'Empty'\r\n};\r\n\r\nexport const CARD_SCREEN_PROPERTY_TYPE = {\r\n\tSCREEN_WIDTH: 'CardScreenWidthType',\r\n\tSCREEN_BACKGROUND_COLOR: 'CardScreenBackgroundColorType',\r\n\tFONT_COLOR: 'CardScreenFontColorType',\r\n\tFONT_WEIGHT: 'CardScreenFontWeightType',\r\n\tFONT_FAMILY: 'CardScreenFontFamilyType',\r\n\tFONT_STYLE: 'CardScreenFontStyleType',\r\n};\r\n\r\nexport const SCREEN_PROPERTY_TYPE = {\r\n\tSCREEN_BACKGROUND_COLOR: 'ScreenBackgroundColorType',\r\n\tSCREEN_HEADER_BACKGROUND_COLOR: 'ScreenHeaderBackgroundColorType'\r\n}\r\n\r\nexport const SYSTEM_FIELDS = ['F_TYPE', 'CREATEDATE', 'CREATEDBY', 'F_LIFESTATUS', 'CHANGEDATE', 'CHANGEDBY'];\r\n\r\nexport const SYSTEM_FIELD_NAMES = {\r\n\tF_TYPE: 'F_TYPE',\r\n\tF_KIND: 'F_KIND',\r\n\tCREATEDATE: 'CREATEDATE',\r\n\tCREATEDBY: 'CREATEDBY',\r\n\tF_LIFESTATUS: 'F_LIFESTATUS',\r\n\tCHANGEDATE: 'CHANGEDATE',\r\n\tCHANGEDBY: 'CHANGEDBY'\r\n};\r\n\r\nexport const SYSTEM_TABLE_NAMES = {\r\n\tSYS_SEQUENCES: \"SYS_SEQUENCES\",\r\n\tSYS_USERS: \"SYS_USERS\",\r\n\tSYS_LOCKS: \"SYS_LOCKS\",\r\n\tSYS_GLOBALS: \"SYS_GLOBALS\",\r\n\tSYS_RIGHTS: \"SYS_RIGHTS\",\r\n\tSYS_SECURITY: \"SYS_SECURITY\",\r\n\tSYS_SESSIONS: \"SYS_SESSIONS\",\r\n\tSYS_THESAURI: \"SYS_THESAURI\",\r\n\tSYS_OBJECTS: \"SYS_OBJECTS\",\r\n\tSYS_QUEUES: \"SYS_QUEUES\",\r\n\tSYS_THINGS: \"SYS_THINGS\"\r\n};\r\n\r\nexport const LIFESTATUS = {\r\n\tENABLED: -1,\r\n\tDISABLED: 0\r\n};\r\n\r\nexport const LIFE_STATUS_GROUPS = {\r\n\tPLANNED: 1000,\r\n\tACQUIRED: 2000,\r\n\tOPERATIONAL: 3000,\r\n\tMAINTAINED: 4000,\r\n\tRETIRED: 5000,\r\n\tEXAMPLE: 6000,\r\n\tERROR: 7000\r\n};\r\n\r\nexport const TABLE_TYPES = {\r\n\tEntity: 'Entity',\r\n\tSub: 'Sub',\r\n\tLink: 'Link',\r\n\tLookup: 'Lookup'};\r\n\r\nexport const FIELD_TYPES = {\r\n\tYesNo: 'YesNo',\r\n\tText: 'Text',\r\n\tCurrency: 'Currency',\r\n\tDate: 'Date',\r\n\tDateTime: 'DateTime',\r\n\tInteger: 'Integer',\r\n\tBinary: 'Binary',\r\n\tGuid: 'Guid',\r\n\tDocument: 'Document',\r\n\tImage: 'Image',\r\n\tRadio: 'Radio',\r\n\tMultiSelect:'MultiSelect',\r\n\tIcon: 'Icon',\r\n\tType: 'Type',\r\n\tTime: 'Time',\r\n\tPKey: 'PKey',\r\n\tFlagCheck: 'FlagCheck',\r\n\tLookup: 'Lookup',\r\n\tSort: 'Sort',\r\n\tMemo: 'Memo',\r\n\tPassword: 'Password',\r\n\tColor: 'Color',\r\n\tDecimal: 'Decimal',\r\n\tAlias: 'Alias',\r\n\tTimeSpan: 'TimeSpan',\r\n\tReference: 'Reference',\r\n\tSpim: 'SPIM',\r\n\tProperty: 'Property'\r\n};\r\n\r\nexport var FIELD_TYPE_TO_CONTROL = {\r\n\t'YesNo': 'Checkbox',\r\n\t'Text': 'Text',\r\n\t'Currency': 'Currency',\r\n\t'Date': 'DateTime',\r\n\t'DateTime': 'DateTime',\r\n\t'Integer': 'Text',\r\n\t'Binary': 'Text',\r\n\t'Guid': 'Text',\r\n\t'Document': 'Document',\r\n\t'Image': 'Image',\r\n\t'Radio': 'RadioButton',\r\n\t'MultiSelect': 'MultiSelect',\r\n\t'Icon': 'Text',\r\n\t'Type': 'Text',\r\n\t'Time': 'DateTime',\r\n\t'TimeSpan': 'DateTime',\r\n\t'PKey': 'Text',\r\n\t'FlagCheck': 'FlagCheck',\r\n\t'Lookup': 'Dropdown',\r\n\t'Sort': 'Text',\r\n\t'Memo': 'Memo',\r\n\t'Password': 'Password',\r\n\t'Color': 'ColorSelector',\r\n\t'Decimal': 'Text',\r\n\t'Alias': 'Alias',\r\n\t'Reference': 'Text',\r\n\t'SPIM': 'Spim'\r\n};\r\n\r\nexport const SortGroups = {\r\n\tHeader: 'Header',\r\n\tOptionalHeader: 'OptionalHeader',\r\n\tCustom: 'Custom',\r\n\tOptionalFooter: 'OptionalFooter',\r\n\tFooter: 'Footer',\r\n\tUndefined: 'Undefined',\r\n\r\n\tGetSortGroup: (sort: number) => {\r\n\t\tif (_.include(_.range(1000, 1999), sort)) {\r\n\t\t\treturn SortGroups.Header;\r\n\t\t}\r\n\t\tif (_.include(_.range(2000, 2999), sort)) {\r\n\t\t\treturn SortGroups.OptionalHeader;\r\n\t\t}\r\n\t\tif (_.include(_.range(3000, 7999), sort)) {\r\n\t\t\treturn SortGroups.Custom;\r\n\t\t}\r\n\t\tif (_.include(_.range(8000, 8999), sort)) {\r\n\t\t\treturn SortGroups.OptionalFooter;\r\n\t\t}\r\n\t\tif (_.include(_.range(9000, 9999), sort)) {\r\n\t\t\treturn SortGroups.Footer;\r\n\t\t}\r\n\t\tif (_.include([0], sort)) {\r\n\t\t\treturn SortGroups.Undefined;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\tInCustom: (sort: number) => SortGroups.GetSortGroup(sort) === SortGroups.Custom\r\n};\r\n\r\nexport const EVENTS = {\r\n\tON_RECORD_SELECTED: 'OnRecordSelected',\r\n\tON_ROW_CLICK: 'OnRowClick',\r\n\tON_TAB_CLICK: 'OnTabClick',\r\n\tON_PLANNER_PAGE_CLICK: 'OnPlannerPageClick',\r\n\tON_SELECT_CHANGED: 'OnSelectChanged',\r\n\tON_PAGE_CHANGED: 'OnPageChanged',\r\n\tON_AFTER_RENDER: 'OnAfterRender',\r\n\tON_CLOSE: 'OnClose',\r\n\tON_DATA_SAVED: 'OnDataSaved',\r\n\tON_TREE_NODE_SELECTED: 'OnTreeNodeSelected',\r\n\tQUERY_BUILDER: {\r\n\t\tON_ENTTIY_SELECTED: 'OnEntitySelected'\r\n\t},\r\n\tPORTLETS: {\r\n\t\tRUNTIME_SETTINGS_APPLIED: 'RuntimeSettingsApplied',\r\n\t\tRUNTIME_SETTINGS_UPDATED: 'RuntimeSettingsUpdated',\r\n\t\tPORTLET_BAR: {\r\n\t\t\tCONTROL_BUTTONS: {\r\n\t\t\t\tREMOVE_BUTTON_CLICKED: 'RemoveButtonClicked',\r\n\t\t\t\tCOLLAPSE_BUTTON_CLICKED: 'CollapseButtonClicked',\r\n\t\t\t\tEXPAND_BUTTON_CLICKED: 'ExpandButtonClicked',\r\n\t\t\t\tRELOAD_BUTTON_CLICKED: 'ReloadButtonClicked',\r\n\t\t\t\tSETTINGS_BUTTON_CLICKED: 'SettingsButtonClicked'\r\n\t\t\t}\r\n\t\t},\r\n\t\tEXPLORER_LOADED: 'OnExplorerLoaded',\r\n\t\tNEW_PORTLET_ADDED: 'NewPortletAdded',\r\n\t\tPORTLET_POSITION_CHANGED: 'PortletPositionChanged'\r\n\t}\r\n} \r\n\r\nexport var NotTypedScreenTypes = [ScreenTypes.ListScreen, ScreenTypes.SpecialScreen, ScreenTypes.Dashboard, ScreenTypes.QueryScreen, ScreenTypes.Portlet, ScreenTypes.CardScreen, ScreenTypes.StepsScreen];\r\n\r\nexport const CONTROL_TYPES =\r\n{\r\n Text: 'Text',\r\n Dropdown: 'Dropdown',\r\n ButtonEdit: 'ButtonEdit',\r\n ButtonDelete: 'ButtonDelete',\r\n\tButtonListScreen: 'ButtonListScreen',\r\n\tButtonSpecialScreen: 'ButtonSpecialScreen',\r\n\tButtonDashboardScreen: 'ButtonDashboardScreen',\r\n ButtonGoogleMaps: 'ButtonGoogleMaps',\r\n\tButtonFollowUp: 'ButtonFollowUp',\r\n\tHistory: 'History',\r\n Tab: 'Tab',\r\n TabPage: 'TabPage',\r\n Image: 'Image',\r\n MultiSelect: 'MultiSelect',\r\n Checkbox: 'Checkbox',\r\n DateTime: 'DateTime',\r\n Drop: 'Drop',\r\n RadioButton: 'RadioButton',\r\n Grid: 'Grid',\r\n Group: 'Group',\r\n PortletBar: 'PortletBar',\r\n Label: 'Label',\r\n Memo: 'Memo',\r\n Document: 'Document',\r\n ButtonReturn: 'ButtonReturn',\r\n Kanban: 'Kanban',\r\n SelectUser: 'SelectUser',\r\n ButtonPrint: 'ButtonPrint',\r\n ButtonLinkedIn: 'ButtonLinkedIn',\r\n ButtonTree: 'ButtonTree',\r\n ButtonSecurityReset: 'ButtonSecurityReset',\r\n Password: 'Password',\r\n ColorSelector: 'ColorSelector',\r\n FlagCheck: 'FlagCheck',\r\n Agenda: 'Agenda',\r\n Mail: 'Mail',\r\n\tScheduler:'Scheduler',\r\n LinkList: 'LinkList',\r\n DatabaseDesigner: 'DatabaseDesigner',\r\n\tFormDesigner: 'FormDesigner',\r\n\tCanvasDesigner: 'CanvasDesigner',\r\n\tFunctionDesigner: 'FunctionDesigner',\r\n LifestatusDesigner: 'LifestatusDesigner',\r\n QueryBuilder: 'QueryBuilder',\r\n TableSecurity: 'TableSecurity',\r\n\tTypeSecurity: 'TypeSecurity',\r\n RecordSecurity: 'RecordSecurity',\r\n UserSecurity: 'UserSecurity',\r\n UserAllowance: 'UserAllowance',\r\n RecordSharing: 'RecordSharing',\r\n ButtonFavorite: 'ButtonFavorite',\r\n Search: 'Search',\r\n ButtonCancel: 'ButtonCancel',\r\n ButtonSave: 'ButtonSave',\r\n TimeWriting: 'TimeWriting',\r\n ButtonTemplate: 'ButtonTemplate',\r\n\tTemplateDesigner: 'TemplateDesigner',\r\n\tRssFeed: 'RssFeed',\r\n\tAlias: 'Alias',\r\n\tCrystalViewer: 'CrystalViewer',\r\n\tTag: 'Tag',\r\n\tFieldSecurity: 'FieldSecurity',\r\n ButtonConsultScreen: 'ButtonConsultScreen',\r\n\tButtonAdd: 'ButtonAdd',\r\n\tBasket: 'Basket',\r\n\tQueryResult: 'QueryResult',\r\n\tPortletSpace: 'PortletSpace',\r\n\tTimeSpan: 'TimeSpan',\r\n\tGanttChart: 'GanttChart',\r\n\tBulkEmail: 'BulkEmail',\r\n GenericButton: 'GenericButton',\r\n\tInvoicing: 'Invoicing',\r\n\tFinancialDashboard: 'FinancialDashboard',\r\n\tButtonCopy: 'ButtonCopy',\r\n\tCurrency: 'Currency',\r\n\tPlanner: 'Planner',\r\n\tPlannerPage: 'PlannerPage',\r\n\tPlannerLevel: 'PlannerLevel',\r\n\tIFrame: 'IFrame',\r\n\tProductConfigurator: 'ProductConfigurator',\r\n\tSpim: 'Spim',\r\n\tSpimCopy: 'SPIMCopy',\r\n\tBook: 'Book',\r\n\tTimer: 'Timer',\r\n\tSignature: 'Signature',\r\n\tSpreadsheet: 'Spreadsheet',\r\n\tChart: 'Chart',\r\n\tRecipeEditor: 'RecipeEditor',\r\n\tMaps: 'Maps',\r\n\tIFrameExtension: 'IFrameExtension',\r\n\tStep: 'Step',\r\n\tStepPage: 'StepPage',\r\n\tButtonPlan: 'ButtonPlan'\r\n};\r\n\r\nexport const SIMPLE_CONTROLS = [\r\n\tCONTROL_TYPES.Text,\r\n\tCONTROL_TYPES.DateTime,\r\n\tCONTROL_TYPES.Dropdown,\r\n\tCONTROL_TYPES.Memo,\r\n\tCONTROL_TYPES.Checkbox,\r\n\tCONTROL_TYPES.FlagCheck,\r\n\tCONTROL_TYPES.ColorSelector,\r\n\tCONTROL_TYPES.RadioButton,\r\n\tCONTROL_TYPES.MultiSelect,\r\n\tCONTROL_TYPES.Currency\r\n];\r\n\r\nexport const SECURITY_CONTROLS = [\r\n\tCONTROL_TYPES.TableSecurity,\r\n\tCONTROL_TYPES.TypeSecurity,\r\n\tCONTROL_TYPES.RecordSecurity,\r\n\tCONTROL_TYPES.RecordSharing,\r\n\tCONTROL_TYPES.UserSecurity,\r\n\tCONTROL_TYPES.UserAllowance,\r\n\tCONTROL_TYPES.Password,\r\n\tCONTROL_TYPES.FieldSecurity\r\n];\r\n\r\nexport const DEFAULT_ICONS = {\r\n\tAgenda: {\r\n\t\tName: \"fa fa-calendar-check-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tDrop: {\r\n\t\tName: \"fa fa-newspaper-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n Id: null\r\n\t},\r\n\tTag: {\r\n\t\tName: \"fa fa-tags\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n Id: null\r\n\t},\r\n\tQueryBuilder: {\r\n\t\tName: null,\r\n\t\tFontName: null,\r\n\t\tImage: \"data:image/png;base64,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\",\r\n\t\tIsIcon: false,\r\n\t\tIsImage: true,\r\n Id: null\r\n\t},\r\n\tInvoicing: {\r\n\t\tName: \"fa fa-calculator\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tProductConfigurator: {\r\n\t\tName: \"fa fa-industry\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tScheduler: {\r\n\t\tName: \"fa fa-calendar-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tTimeWriting: {\r\n\t\tName: \"glyphicon glyphicon-time\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tBulkMail: {\r\n\t\tName: \"fa fa-envelope\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tBasket: {\r\n\t\tName: \"fa fa-shopping-basket\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tButtonTemplate: {\r\n\t\tName: \"fa fa-file\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tDocument: {\r\n\t\tName: \"fa fa-file-text-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tKanban: {\r\n\t\tName: \"fa fa-compress\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tMail: {\r\n\t\tName: \"fa fa-envelope-o\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t},\r\n\tGantt: {\r\n\t\tName: \"fa fa-bar-chart\",\r\n\t\tFontName: \"fa fa-3x fa-stack\",\r\n\t\tImage: null,\r\n\t\tIsIcon: true,\r\n\t\tIsImage: false,\r\n\t\tId: null\r\n\t}\r\n};\r\n\r\nexport enum FONT_NAME {\r\n FONT_AWESOME = 'fontawesome-webfont',\r\n SIMPLE_LINE = 'Simple-Line-Icons',\r\n SOCIAL_ICONS = 'Social-Icons',\r\n GRAPHICAL = 'Graphical'\r\n}\r\n\r\nexport enum ICON_NAME {\r\n\tEMPTY_ICON = 'empty-icon'\r\n}\r\n\r\nexport const CLUSTERED_MODES = {\r\n\tCOPY: {\r\n\t\tValue: 0\r\n\t},\r\n\tDEFAULT: {\r\n\t\tValue: 1\r\n\t},\r\n\tDELTA: {\r\n\t\tValue: 2\r\n\t}\r\n};\r\n\r\nexport const DELETION_MODES = {\r\n\tASK: {\r\n\t\tId: 0,\r\n\t\tName: 'Ask'\r\n\t},\r\n\tPRESERVE: {\r\n\t\tId: 1,\r\n\t\tName: 'Preserve'\r\n\t},\r\n\tDELETE: {\r\n\t\tId: 2,\r\n\t\tName: 'Delete'\r\n\t}\r\n};","export const AGENDA_TYPES = {\r\n\tTodo: 'Todo',\r\n\tAppointment: 'Appointment',\r\n\tTask: 'Task',\r\n\tSpecialDay: 'SpecialDay',\r\n\tHoliday: 'Holiday',\r\n\tIllness: 'Illness',\r\n\tRecurrent: 'Recurrent'\r\n};\r\n\r\nexport const AGENDA_LIFE_STATUSES = {\r\n\tRequested: 'Requested',\r\n\tConfirmed: 'Confirmed',\r\n\tDenied: 'Denied'\r\n};\r\n","import {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\n\r\nexport enum ClusterModes {\r\n None,\r\n Copy,\r\n Default,\r\n Delta,\r\n Use,\r\n Next,\r\n NextNext\r\n}\r\n\r\nexport class ClusterModeTranlsation {\r\n static GetTranslation(clusterMode: ClusterModes) {\r\n switch (clusterMode) {\r\n case ClusterModes.Copy:\r\n return LABELS.COPY;\r\n case ClusterModes.Default:\r\n return LABELS.DEFAULT;\r\n case ClusterModes.Delta:\r\n return LABELS.DELTA;\r\n case ClusterModes.Use:\r\n return LABELS.USE;\r\n case ClusterModes.Next:\r\n return LABELS.NEXT;\r\n case ClusterModes.NextNext:\r\n return LABELS.NEXT_NEXT;\r\n }\r\n }\r\n}\r\n","export const DATE_FORMATS = {\r\n\tSHORT_DATE: {Name: 'Short Date', Format: 'YYYY-MM-DD', MomentFormat: 'L'},\r\n\tLONG_DATE: {Name: 'Long Date', Format: 'dddd, YYYY-MM-DD', MomentFormat: 'dddd, L'},\r\n LONG_DATE_SHORT_WEEK: {Name: 'Long Date', Format: 'dd, YYYY-MM-DD', MomentFormat: 'dd, L'},\r\n\tLONG_TIME: {Name: 'Long Time', Format: 'HH:mm:ss', MomentFormat: 'HH:mm:ss'},\r\n\tTIME: {Name: 'Time', Format: 'HH:mm', MomentFormat: 'HH:mm'},\r\n\tDATE_TIME: {Name: 'DateTime', Format: 'YYYY-MM-DD HH:mm', MomentFormat: 'L HH:mm'},\r\n\tFULL_DATETIME: {Name: 'FullDateTime', Format: 'YYYY-MM-DD HH:mm:ss', MomentFormat: 'dddd, L HH:mm:ss'},\r\n\tWEEKDAY_FULLNAME: {Name: 'WeekdayFullName', Format: 'dddd', MomentFormat: 'dddd'},\r\n WEEKDAY_SHORTNAME: {Name: 'WeekdayShortName', Format: 'dd', MomentFormat: 'dd'},\r\n\tSAVE_FORMAT: {Name: 'Save Format', Format: 'YYYY-MM-DD HH:mm:ss', MomentFormat: 'L HH:mm:ss'},\r\n\tSAVE_FORMAT_FULL: {Name: 'Save Format Full', Format: 'YYYY-MM-DDTHH:mm:ss', MomentFormat: 'L HH:mm:ss'},\r\n\tTIME_SPAN: {Name: 'Time Span', Format: 'H:mm', MomentFormat: 'H:mm'},\r\n\tTIME_SPAN_LONG: {Name: 'Time Span Long', Format: 'H:mm:ss', MomentFormat: 'H:mm:ss'},\r\n\tSHORT_DATE_SHORT_WEEK: {Name: 'Short Date Short Week', Format: 'DD MMM', MomentFormat: 'DD MMM'},\r\n\tMONTH_AND_YEAR: {name: 'Month and Year', Format: 'MMMM, YYYY', MomentFormat: 'MMMM, YYYY'},\r\n\tDD_MMM: {name: 'Short date and Short Month', Format: 'DD-MMM', MomentFormat: 'DD-MMM'},\r\n\tDD_MM: {name: 'Short date and number Month', Format: 'DD-MM', MomentFormat: 'DD-MM'},\r\n\tDAY_OF_WEK_ddd: {name: 'Sun Mon ... Fri Sat', Format: 'ddd', MomentFormat: 'ddd'},\r\n\tWEEK_OF_YEAR_WW: {name: 'Week of Year - 1 2 ... 52 53', Format: 'WW', MomentFormat: 'WW'},\r\n\tMMM_YYYY: {name: 'Short Month and number Year', Format: 'MMM-YYYY', MomentFormat: 'MMM-YYYY'},\r\n\tMM_YY: {name: 'Number Month and Short Year', Format: 'MM-YY', MomentFormat: 'MM-YY'},\r\n\tYYYY_WW: {name: 'Full Year and Week of Year', Format: 'YYYY-WW', MomentFormat: 'GGGG-[W]WW'},\r\n\tDD_MMM_YYYY: {Name: 'Name DD-MMM-YYYY', Format: 'DD-MMM-YYYY', MomentFormat: 'DD-MMM-YYYY'},\r\n\tONLY_A_YEAR: {name: 'Only a Year', Format: 'YYYY', MomentFormat: 'YYYY'},\r\n};","export const FollowupModes = {\r\n EDIT_CURRENT: 'Edit current',\r\n EDIT_NEW: 'Edit new',\r\n EDIT_CURRENT_AND_NEW: 'Edit current and new',\r\n DIRECT_STATUS_UPDATE: 'Direct status update'\r\n};","export const RECORD_SECURITY_WORDS = {\r\n\tNoAccess: 0,\r\n\tSearchOnly: 1,\r\n\tReadOnly: 3,\r\n\tEdit: 7,\r\n\tEditDelete: 15,\r\n\tEditDeleteSecurity: 263,\r\n\tFullAccess: 271\r\n};","export const SECURITY_LEVELS = {\r\n\tNO: 0,\r\n\tSHARING_READY: 2,\r\n\tSHARED: 4,\r\n\tPLANNER: 8,\r\n\tOWNER: 512,\r\n\r\n\tSECURITY_PASS: -2,\r\n\r\n\tget NEW_OWNER() {\r\n\t\treturn SECURITY_LEVELS.SHARED + SECURITY_LEVELS.OWNER;\r\n\t}\r\n};","export enum TABLE_SECURITY_WORDS {\r\n SHOW = 2,\r\n EDIT = 4,\r\n DELETE = 8,\r\n CREATE = 1024\r\n};","export const TRIGGER_ACTIONS = {\r\n\tON_CLICK: 'OnClick',\r\n\tON_CLUSTERED_PIVOT_FINISHED: 'OnClusteredPivotFinished'\r\n};","export const USER_ALLOWANCE = {\r\n\tOVERRIDE_SECURITY: 1,\r\n\tCHANGE_RECORD_SECURITY: 2,\r\n\tNATIVE_SQL: 4,\r\n\tPLANNING: 8,\r\n\tMAKE_PERSONAL: 32,\r\n\tEXPORT_DATA: 64,\r\n\tMAKE_EXAMPLE: 128,\r\n\r\n\tHasValue: (value: number, userAllowance: number) => (value & userAllowance) === value,\r\n\tPlanningAllowed: (userAllowance: number) => (USER_ALLOWANCE.PLANNING & userAllowance) === USER_ALLOWANCE.PLANNING\r\n};","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {AgendaItemModel, AgendaItemPerDay} from 'Core/Controls/Agenda/Models/AgendaItemModel';\r\nimport {PlanningItemModel} from 'Core/Controls/Agenda/Models/PlanningItemModel'\r\nimport OperationResult from 'Core/Results/ResultModels/OperationResult';\r\nimport {IGetTypesRequestModel} from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nexport interface IGetAgendaDataRequestModel {\r\n ControlId: number;\r\n UsersId: Array;\r\n StartDate: string;\r\n EndDate: string;\r\n GetScheduleRequestModel: IGetScheduleRequestModel;\r\n GetSpecialDaysRequestModel: IGetSpecialDaysRequestModel;\r\n GetTableTypesModel: IGetTypesRequestModel;\r\n}\r\n\r\nexport interface ICreatePlanningAppointmentRequest {\r\n PlanningId: number;\r\n StartDate: string;\r\n UserId?: number;\r\n}\r\n\r\nexport interface IBookPlanningRequest {\r\n AgendaTableId: number;\r\n PlanningId: number;\r\n StartDate: string;\r\n}\r\n\r\nexport interface IAcceptAppointmentModel {\r\n AgendaTableId: number;\r\n AppointmentId: number;\r\n ScreenSubjectEntityId?: number;\r\n ScreenSubjectRecordId?: number;\r\n}\r\n\r\nexport interface IGetScheduleRequestModel {\r\n StartDate: string;\r\n EndDate: string;\r\n UsersId: number[];\r\n}\r\n\r\nexport interface IGetSpecialDaysRequestModel {\r\n StartDate: string;\r\n EndDate: string;\r\n UsersId: number[];\r\n}\r\n\r\nexport interface IGetUserAllowanceRequestModel {\r\n TableId: number;\r\n SecurityWord: number;\r\n}\r\n\r\nexport interface ICopyFieldDataRequestModel {\r\n Name: string;\r\n Value: string;\r\n}\r\n\r\nexport interface ICopyRecordRequestModel {\r\n TableId: number;\r\n TableTypeId?: number;\r\n RecordId: number;\r\n\tStarting: string;\r\n\tAppointmentAttendeesId: number[];\r\n}\r\n\r\nexport interface ICreateAppointmentFromTodoRequestModel {\r\n AgendaEntityId: number;\r\n TodoItemId: number;\r\n Starting: string;\r\n Duration: string;\r\n\tRemoveTodo: boolean;\r\n\tAppointmentAttendeesId: number[];\r\n}\r\n\r\nexport class AgendaDataStore {\r\n static GetData(params: IGetAgendaDataRequestModel): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/GetAgenda\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data.ResultObject);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetUnreportedTime(): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/GetUnreportedTime\",\r\n type: \"POST\"\r\n }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(data);\r\n }).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n;\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateAgenda(params: AgendaItemModel): P.Promise> {\r\n var deferredResult = P.defer>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/UpdateAgenda\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateAppointmentFromTodo(params: ICreateAppointmentFromTodoRequestModel): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/CreateAppointmentFromTodo\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data);\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreatePlanningAppointment(params: ICreatePlanningAppointmentRequest): P.Promise {\r\n var deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/CreatePlanningAppointment\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n new Notifier().Failed('Error creating appointment');\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreatePlanningAppointments(planningId: number, userId?: number): P.Promise {\r\n const deferredResult = P.defer();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/CreatePlanningAppointments\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: { PlanningId: planningId, UserId: userId}\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n new Notifier().Failed('Error creating appointments');\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static BookPlanning(params: IBookPlanningRequest): P.Promise> {\r\n var deferredResult = P.defer>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"/api/AgendaApi/BookPlanning\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n }).fail(() => {\r\n new Notifier().Failed('Error booking planning');\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static AcceptAppointment(params: IAcceptAppointmentModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/AcceptAppointment',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n });\r\n }\r\n\r\n static GetSchedule(params: IGetScheduleRequestModel) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/GetSchedule',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetSpecialDays(params: IGetSpecialDaysRequestModel) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/AgendaApi/GetSpecialDays',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetUserAllowance(params: IGetUserAllowanceRequestModel) {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/TableSecurityApi/IsUserAllowedTo',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CopyRecord(params: ICopyRecordRequestModel): any {\r\n const deferred = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/AgendaApi/CopyAppointment',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: params\r\n })\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error copying appointment')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export class ConfigStructModel {\r\n Groups: Array;\r\n\r\n constructor() {\r\n this.Groups = [];\r\n }\r\n\r\n static Deserialize(jsonConfig: any) {\r\n return jsonConfig;\r\n }\r\n}\r\n\r\nexport class GroupStructModel {\r\n Name: string;\r\n Screens: string[];\r\n ParentControls: string[];\r\n Properties: Array;\r\n\r\n constructor() {\r\n \tthis.Screens = [];\r\n this.Properties = [];\r\n }\r\n}\r\n\r\n\r\nexport class PropertyStructModel {\r\n Name: string;\r\n\tType: string;\r\n\tValueRequired: boolean;\r\n PropertyManager: string;\r\n\tDefaultValue: any;\r\n\tOptions: Array;\r\n Source: ISource;\r\n Params: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.Options = [];\r\n\t}\r\n}\r\n\r\ninterface IPropertyOption {\r\n\tName: string;\r\n\tValue: any;\r\n}\r\n\r\ninterface ISource {\r\n TableName: string;\r\n Value: string;\r\n DisplayValue: string;\r\n}","import { ConfigStructModel } from \"Core/GeneralProperties/Models/ConfigStructModel\";\r\nimport { ConfigModel } from \"Core/GeneralProperties/Models/ConfigModel\";\r\nimport { IControl } from 'Core/Controls/IControl';\r\n\r\nexport class GeneralProperties {\r\n\tprivate _configStruct: ConfigStructModel;\r\n\tprivate _isConfigStructOk: boolean;\r\n\r\n\tprivate _config: ConfigModel;\r\n\tprivate _isConfigOk: boolean;\r\n\r\n\tconstructor(jsonConfig: any, properties: any, control: IControl) {\r\n\t\tthis.Init(jsonConfig, properties, control);\r\n\t}\r\n\r\n\tget ConfigStruct() {\r\n\t\treturn this._configStruct;\r\n\t}\r\n\r\n\tget Config() {\r\n\t\treturn this._config;\r\n\t}\r\n\r\n\tprivate Init(jsonConfig: any, properties: any, control: IControl) {\r\n\t\tthis.InitConfigStruct(jsonConfig);\r\n\r\n\t\tthis.InitConfig(properties, control);\r\n\t}\r\n\r\n\tprivate InitConfigStruct(jsonConfig: any) {\r\n\t\ttry {\r\n\t\t\tthis._configStruct = jsonConfig ? ConfigStructModel.Deserialize(jsonConfig) : null;\r\n\t\t\tthis._isConfigStructOk = true;\r\n\t\t} catch (e) {\r\n\t\t\tthis._configStruct = new ConfigStructModel();\r\n\t\t\tconsole.error(e.message);\r\n\t\t\tthis._isConfigStructOk = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate InitConfig(properties: any, control: IControl) {\r\n\t\tif (!this._configStruct || !this._isConfigStructOk) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._config = new ConfigModel(this._configStruct, properties, control);\r\n\t}\r\n} ","import { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { URL } from 'Core/Common/Url';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface GetHideIfConditionValueDto {\r\n\tControlId: number;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tConditionValues: Array\r\n}\r\n\r\nexport class BaseControlStore {\r\n\tstatic GetHideIfConditionValue(params: GetHideIfConditionValueDto): P.Promise {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tRequest\r\n\t\t\t.For(URL.CONTROLS.GET_HIDE_IF_CONDITION_VALUE)\r\n\t\t\t.Post(params)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {FlagResolver} from \"Core/Common/FlagResolver\";\r\nimport {FieldFlags} from \"Core/Common/Enums/FieldFlags\";\r\n\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\n\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant'\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {IForm, IControlParam, IScreen} from 'Core/Screens/IScreen'\r\nimport {Event} from 'Core/Common/Event'\r\nimport {Guid} from 'Core/Common/Guid'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel'\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel'\r\nimport clone from 'clone'\r\nimport {Icon} from 'Core/Icon/Icon'\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties'\r\nimport {ConfigModel} from 'Core/GeneralProperties/Models/ConfigModel'\r\n\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {IWebSizeValue} from \"Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\n\r\nimport DesignTemplate from 'Core/Controls/BaseControl/Templates/DesignWrapper.html'\r\nimport StaticDesignTemplate from 'Core/Controls/BaseControl/Templates/StaticDesignWrapper.html'\r\nimport {BaseControlStore} from 'Core/Controls/BaseControl/BaseControlStore'\r\nimport PredefinedDesignTemplate from 'Core/Controls/BaseControl/Templates/PredefinedDesignWrapper.html'\r\nimport {IconModel} from \"./Models/IconModel\";\r\nimport {TranslationModel} from \"./Models/TranslationModel\";\r\nimport {ITooltipConfig} from \"../../KnockoutExtentions/TooltipExtention\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport { IDynamicFieldData, IGetDynamicDependsOnValue, RecordStore } from 'Core/Common/Stores/RecordStore';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { IControlAttachedField, IScreenVariable } from 'Core/Screens/BaseScreen';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\nimport { QueryConditionItemModel } from '../Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { GENERAL_PROPERTIES } from 'Core/GeneralProperties/Managers/Constants';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { QueryConditionGroupModel } from '../Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\nimport { ConditionBuilder } from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\n\r\nimport DataLoadTemplate from 'Core/Controls/BaseControl/Templates/DataLoadTemplate.html'\r\n\r\nko.templates['Core/Controls/BaseControl/Templates/DesignWrapper'] = DesignTemplate;\r\nko.templates['Core/Controls/BaseControl/Templates/StaticDesignWrapper'] = StaticDesignTemplate;\r\nko.templates['Core/Controls/BaseControl/Templates/PredefinedDesignWrapper'] = PredefinedDesignTemplate;\r\nko.templates['Core/Controls/BaseControl/Templates/DataLoadTemplate'] = DataLoadTemplate;\r\n\r\nexport interface IControlValue {\r\n SubjectRecordId: number;\r\n SubjectEntityId: number;\r\n Data?: ControlDataModel;\r\n Datas?: Array;\r\n RecordSpecsModel: RecordSpecsModel;\r\n}\r\n\r\nexport interface ITranslationValue {\r\n Value: string;\r\n TranslatedValue: string;\r\n Language: LanguageModel;\r\n}\r\n\r\nconst focusableControls = [CONTROL_TYPES.Text];\r\n\r\nexport abstract class BaseControl extends Event implements IControl {\r\n protected _model: KnockoutObservable;\r\n protected _renderMode: KnockoutObservable;\r\n protected _form: IForm;\r\n protected _subControls: KnockoutObservableArray;\r\n protected _guid: string;\r\n protected _isRendered: KnockoutObservable;\r\n protected _display: KnockoutObservable;\r\n protected _el: HTMLElement;\r\n protected _parentControl: IControl;\r\n protected _isWrapped: KnockoutObservable;\r\n protected _icon: KnockoutObservable;\r\n protected _defaultIcon: Icon;\r\n protected _isStatic: boolean;\r\n private _generalProperties: ConfigModel;\r\n protected _isActive: KnockoutObservable;\r\n protected _originalModel: string;\r\n protected _isValid: KnockoutObservable;\r\n protected _isVisible: KnockoutObservable;\r\n protected _isRequired: boolean;\r\n protected _isReadonly: boolean;\r\n protected _getCurrentName: any;\r\n protected _errorMessage: KnockoutObservable;\r\n protected IsFocused: KnockoutObservable;\r\n protected _help: HelpBook;\r\n protected _isIconVisible: boolean;\r\n protected _labels = LABELS;\r\n protected _initWithDefault: boolean;\r\n protected _webSizeValue: IWebSizeValue;\r\n\tprotected Label: KnockoutObservable;\r\n\tprotected HelpPageLabel: KnockoutObservable;\r\n protected DescriptionToolTip: KnockoutObservable;\r\n protected _resetDependsOnValue: KnockoutObservable;\r\n protected _isDataLoading: KnockoutObservable;\r\n protected _conditionScreenData: Map;\r\n protected _isHideIfDataLoading: KnockoutObservable;\r\n protected _gridRow: any;\r\n\r\n protected _enabled: KnockoutObservable;\r\n protected _backgroundColor: KnockoutObservable;\r\n protected _color: KnockoutObservable;\r\n protected _borderColor: KnockoutObservable;\r\n protected _border: KnockoutObservable;\r\n protected _style: KnockoutComputed<{}>;\r\n protected HideCaption: KnockoutObservable;\r\n protected HideCaptionFromProperty: KnockoutObservable;\r\n\r\n CreateControl: (params: IControlParam) => IControl;\r\n\r\n GetTemplateName: KnockoutComputed;\r\n \r\n\r\n\r\n constructor(params: IControlParam, config: JSON = null) {\r\n super();\r\n this._model = ko.observable(params.Model);\r\n this._form = params.Form;\r\n this._parentControl = params.ParentControl;\r\n this.CreateControl = params.CreateControl;\r\n\r\n this._model.subscribe(() => {\r\n if(this._model().Icon){\r\n this._icon(new Icon(this._model().Icon));\r\n }\r\n\r\n if(config){\r\n this.InitProperties(config);\r\n } \r\n\r\n if (this.Properties) {\r\n this.ApplyProperties();\r\n }\r\n });\r\n\r\n if(config){\r\n this.InitProperties(config);\r\n }\r\n\r\n this._guid = Guid.NewGuid();\r\n this._conditionScreenData = new Map();\r\n this._isWrapped = ko.observable(false);\r\n this._isStatic = params.IsStatic || params.Model.Predefined || false;\r\n this._isRequired = this.GetIsRequired();\r\n this._isReadonly = this.GetIsReadOnly();\r\n this._renderMode = ko.observable(params.RenderMode);\r\n this._subControls = ko.observableArray();\r\n this.InitSubControls();\r\n this._display = ko.observable('');\r\n this._isRendered = ko.observable(false);\r\n this._isActive = ko.observable(false);\r\n this._isValid = ko.observable(true);\r\n this._isVisible = ko.observable(true);\r\n this._el = null;\r\n this._getCurrentName = '';\r\n this._icon = ko.observable(null);\r\n this._errorMessage = ko.observable('');\r\n this._help = HelpBook.Instance;\r\n this._isIconVisible = GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_CONTROL_ICONS) !== '0';\r\n this._webSizeValue = null;\r\n this._resetDependsOnValue = ko.observable(params.Model.ResetDependsOnValue);\r\n this._isDataLoading = ko.observable(false);\r\n this._isHideIfDataLoading = ko.observable(false);\r\n\r\n\t\tthis.Label = ko.observable(this.GetLabel());\r\n this.DescriptionToolTip = ko.observable(null);\r\n this.InitShowIfCondition();\r\n\r\n this._originalModel = ko.toJSON(this._model,\r\n (key, value) => {\r\n if (key === 'SubControls') {\r\n return [];\r\n }\r\n return value;\r\n });\r\n\r\n this.IsFocused = ko.observable(false).extend({throttle:200});\r\n\r\n this._subControls.subscribe((subControls) => {\r\n _.each(subControls,\r\n (control, index) => {\r\n control.SetSort(index * 10);\r\n });\r\n });\r\n\r\n this.GetTemplateName = ko.computed(() => {\r\n if(this._isHideIfDataLoading()){\r\n return 'Core/Controls/BaseControl/Templates/DataLoadTemplate';\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n if (this._model().Predefined) {\r\n return 'Core/Controls/BaseControl/Templates/PredefinedDesignWrapper';\r\n }\r\n\r\n if (this._isStatic) {\r\n return 'Core/Controls/BaseControl/Templates/StaticDesignWrapper';\r\n }\r\n\r\n return 'Core/Controls/BaseControl/Templates/DesignWrapper';\r\n }\r\n\r\n let template = RenderModes[this._renderMode()];\r\n let templateName = `Core/Controls/${this.GetType()}/Templates/${template}`;\r\n\r\n return templateName;\r\n });\r\n\r\n //TODO use one model for icon\r\n this._model().Fields.map((field) => {\r\n if (field.EntityTypeName === 'Link' || this.CheckEntityTypeByName(field.EntityName)) {\r\n field.RelatedField = true;\r\n }\r\n\r\n if (field.EntityTypeName === 'Sub') {\r\n field.SubTableField = true;\r\n }\r\n\r\n return field;\r\n });\r\n var field = _.first(this._model().Fields);\r\n if (field) {\r\n if (this._model().IsComplexControl) {\r\n if (field.EntityIcon) {\r\n this._icon(new Icon(field.EntityIcon));\r\n }\r\n } else {\r\n if (field.FieldIcon) {\r\n this._icon(new Icon(field.FieldIcon));\r\n }\r\n }\r\n }\r\n\r\n this.AddEvent(\"READY\");\r\n this.AddEvent(\"AFTER_RENDER\");\r\n this.AddEvent(\"CONTROL_MODIFY\");\r\n\r\n if (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) {\r\n if (this._form) {\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]) {\r\n this._isReadonly = false;\r\n }\r\n }\r\n }\r\n\r\n this._enabled = ko.observable(false)\r\n this._backgroundColor = ko.observable(null);\r\n this._color = ko.observable(null);\r\n this._borderColor = ko.observable(null);\r\n this._border = ko.observable(false);\r\n this._style = ko.computed(() => {\r\n return null;\r\n });\r\n this.HideCaption = ko.observable(null);\r\n this.HideCaptionFromProperty = ko.observable(null);\r\n }\r\n\r\n public PostInit(){\r\n this.UpdateShowIfValue();\r\n };\r\n\r\n private InitShowIfCondition(){\r\n if(this.HideIfCondition){\r\n this.Screen?.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n var screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this.HideIfCondition);\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n this.UpdateShowIfValue();\r\n }\r\n });\r\n }\r\n }\r\n\r\n UpdateShowIfValue(){\r\n if(!this.HideIfCondition){\r\n return;\r\n }\r\n this._isHideIfDataLoading(true);\r\n BlockUI.Block({ Target: this._el });\r\n BaseControlStore.GetHideIfConditionValue({\r\n ControlId: this.GetControlId(),\r\n SubjectEntityId: this.Screen.GetEntityId(),\r\n SubjectRecordId: this.Screen.GetRecordId(),\r\n ConditionValues: this.MapConditionValues()\r\n })\r\n .always(()=>{\r\n this._isHideIfDataLoading(false);\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(result=> {\r\n this._isVisible(!result);\r\n });\r\n }\r\n\r\n UpdateVariable(controlField: IControlAttachedField, value: string | number){\r\n this.Screen && this.Screen.UpdateVariable(controlField, value);\r\n }\r\n\r\n protected abstract ApplyProperties();\r\n\r\n private InitProperties(config: any){\r\n this._generalProperties = new GeneralProperties(config, this._model().Properties, this).Config;\r\n }\r\n\r\n set BackgroundColor(value: string){};\r\n\r\n get BackgroundColor(): string{\r\n return null;\r\n };\r\n\r\n SetData(data: ControlDataModel) {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n ControlModify() {\r\n this.Trigger('CONTROL_MODIFY', {Control: this});\r\n }\r\n\r\n private CheckEntityTypeByName(entityName: string): boolean {\r\n if (!entityName) return false;\r\n\r\n if (entityName.indexOf('SYS_') !== -1 || entityName.indexOf('CD_') !== -1) {\r\n return entityName.split('').filter(item => item === '_').length > 1;\r\n } else {\r\n return entityName.indexOf('_') !== -1;\r\n }\r\n }\r\n\r\n IsJsonString(str){\r\n try {\r\n JSON.parse(str);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n SetIsWrapped(isWrapped) {\r\n this._isWrapped(isWrapped);\r\n }\r\n\r\n SetWebSizeValue(value: IWebSizeValue){\r\n this._webSizeValue = value;\r\n }\r\n\r\n SetIsVisible(isVisible: boolean) {\r\n this._isVisible(isVisible);\r\n }\r\n\r\n GetIsVisible() {\r\n return this._isVisible();\r\n }\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n SetFocus(hasFocus: boolean): void {\r\n let isMobile = MobileChecker.IsMobile();\r\n this.IsFocused(isMobile ? false : hasFocus);\r\n }\r\n\r\n TrySetFocus(): boolean {\r\n let focusable = this.IsFocusable();\r\n\r\n if (focusable) {\r\n this.SetFocus(true);\r\n }\r\n\r\n return focusable;\r\n }\r\n\r\n GetDefaultName() {\r\n return \"Default name\";\r\n }\r\n\r\n GetDesignTemplateName(): string {\r\n return `Core/Controls/${this.GetType()}/Templates/${RenderModes[RenderModes.Design]}`;\r\n }\r\n\r\n private InitSubControls() {\r\n _.each(this._model().SubControls, (controlModel: ControlModel) => {\r\n var params: IControlParam = {\r\n Model: controlModel,\r\n Form: this._form,\r\n RenderMode: this._renderMode(),\r\n ParentControl: this\r\n };\r\n\r\n var control = this.CreateControl(params);\r\n if (control) {\r\n this._subControls.push(control);\r\n }\r\n });\r\n }\r\n\r\n get Guid(): string {\r\n return this._guid;\r\n }\r\n\r\n get IsStatic(): boolean {\r\n return this._isStatic;\r\n }\r\n\r\n GetControlId(): number {\r\n return this._model().Id;\r\n }\r\n\r\n GetControlTypeName(): string {\r\n return this._model().TypeName;\r\n }\r\n\r\n GetControlTypeTranslatedName(): string {\r\n return this._model().TypeTranslatedName ? this._model().TypeTranslatedName : this._model().TypeName;\r\n }\r\n\r\n GetFieldId(): number {\r\n var field = _.first(this._model().Fields);\r\n return field ? field.Id : null;\r\n }\r\n\r\n GetFieldModel(): AttachedFieldModel {\r\n return this.FieldModel;\r\n }\r\n\r\n HasOneField(): boolean {\r\n return this._model().Fields.length === 1;\r\n }\r\n\r\n GetDefaultIcon(): Icon {\r\n return this._defaultIcon;\r\n }\r\n\r\n SetDefaultIcon(icon: Icon) {\r\n this._defaultIcon = icon;\r\n\r\n if (!this._icon()) {\r\n this._icon(this._defaultIcon);\r\n }\r\n }\r\n\r\n get IsDisabledByCondition(): boolean {\r\n return this._model().IsDisabledByCondition;\r\n }\r\n\r\n get IsMailEnabled(): boolean {\r\n return this._model().IsMailEnabled;\r\n }\r\n\r\n get FieldModel(): AttachedFieldModel {\r\n return _.first(this._model().Fields);\r\n }\r\n\r\n get FormatName() {\r\n const fieldModel = _.first(this._model().Fields);\r\n\r\n return fieldModel ? (fieldModel.FormatName || '') : '';\r\n }\r\n\r\n\r\n get Name(): string {\r\n var name = this._model().Name;\r\n var self = this;\r\n if (this._model().NameTranslations) {\r\n _.each(self._model().NameTranslations, item => {\r\n if (item.Selected && item.Translation && item.Translation !== '' && item.Translation !== null) {\r\n name = item.Translation;\r\n return;\r\n }\r\n });\r\n }\r\n return name;\r\n }\r\n\r\n set Name(value: string) {\r\n this._model().Name = value;\r\n }\r\n\r\n get NameTranslations(): TranslationModel[] {\r\n return this._model().NameTranslations;\r\n }\r\n\r\n set NameTranslations(translations: TranslationModel[]) {\r\n this._model().NameTranslations = translations;\r\n }\r\n\r\n get Icon(): IconModel {\r\n return this._icon();\r\n }\r\n\r\n SetFontName(fontName: string) {\r\n this._icon().FontName = fontName;\r\n }\r\n\r\n get LabelPosition(): string {\r\n return this._model().LabelPosition;\r\n }\r\n\r\n get ExampleAlias(): string {\r\n return this._model().ExampleAlias;\r\n }\r\n\r\n get Description(): string {\r\n return this._model().Description;\r\n }\r\n\r\n get Properties(): any {\r\n return this._model().Properties;\r\n }\r\n\r\n SetProperties(properties): void {\r\n this._model().Properties = properties;\r\n }\r\n\r\n get Model(): ControlModel {\r\n return this._model();\r\n }\r\n\r\n get IsEditScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsEditScreenExist : false;\r\n }\r\n\r\n get IsListScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsListScreenExist : false;\r\n }\r\n\r\n get IsSpecialScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsSpecialScreenExist : false;\r\n }\r\n\r\n get IsDashboardScreenExist() : boolean {\r\n return this._form ? this._form.GetScreen().IsDashboardScreenExist : false;\r\n }\r\n\r\n get IsConsultScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsConsultScreenExist : false;\r\n }\r\n\r\n get IsStepsScreenExist(): boolean {\r\n return this._form ? this._form.GetScreen().IsStepsScreenExist : false;\r\n }\r\n\r\n IsFocusable(): boolean {\r\n return (focusableControls.indexOf(this.GetType()) >= 0) && !this.GetCombinedReadOnly();\r\n }\r\n\r\n get GeneralProperties(): ConfigModel {\r\n return this._generalProperties;\r\n }\r\n\r\n ChangeProperty(type: string, value) {\r\n if (this._generalProperties && this.Properties) {\r\n this._generalProperties.SetPropertyValue(type, value);\r\n }\r\n }\r\n\r\n GetSubControls(): Array {\r\n return this._subControls();\r\n }\r\n\r\n GetAllSubControls(): Array {\r\n var subControls = [];\r\n subControls = subControls.concat(this.GetSubControls());\r\n _.each(subControls, subControl => {\r\n subControls = subControls.concat(subControl.GetAllSubControls());\r\n\r\n });\r\n return subControls;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n\r\n }\r\n\r\n SetDefaultValue(value: IControlValue): void {\r\n this.SetValue(value);\r\n this._initWithDefault = true;\r\n }\r\n\r\n\r\n SetRenderMode(renderMode: RenderModes): void {\r\n this._renderMode(renderMode);\r\n }\r\n\r\n GetRenderMode(): RenderModes {\r\n return this._renderMode();\r\n }\r\n\r\n SetReadOnly(readOnly: boolean): void {\r\n }\r\n\r\n GetType(): string {\r\n return this._model().TypeName;\r\n }\r\n\r\n GetIsReadOnly(): boolean {\r\n return this._model().IsReadOnly;\r\n }\r\n\r\n GetCombinedReadOnly() {\r\n return this._isReadonly || this.FieldModel.IsSystem;\r\n }\r\n\r\n GetIsRequired(): boolean {\r\n return this._model().IsRequired;\r\n }\r\n\r\n AfterRender(el: Array): void {\r\n if (el) {\r\n this._el = el[0];\r\n\t\t}\r\n\r\n this.CreateDescriptionToolTip();\r\n\r\n this._isRendered(true);\r\n this.Trigger('AFTER_RENDER');\r\n }\r\n\r\n AddStyle(name: string, value: string) {\r\n if (name === 'display') {\r\n this._display(value);\r\n }\r\n }\r\n\r\n IsDataControl(): boolean {\r\n return false;\r\n }\r\n\r\n IsLazyLoadData(): boolean {\r\n return false;\r\n }\r\n\r\n GetForm(): IForm {\r\n return this._form;\r\n }\r\n\r\n SetForm(form: IForm) {\r\n return this._form = form;\r\n }\r\n\r\n SetParentControl(control: IControl) {\r\n return this._parentControl = control;\r\n }\r\n\r\n AddSubControl(control: IControl) {\r\n this._subControls.push(control);\r\n }\r\n\r\n SetGuid(guid: string) {\r\n this._guid = guid;\r\n }\r\n\r\n GetGuid() {\r\n return this._guid;\r\n }\r\n\r\n Clone(): IControl {\r\n var model = clone(this._model());\r\n var controlParams: IControlParam = {\r\n Model: model,\r\n Form: this._form,\r\n ParentControl: this._parentControl,\r\n RenderMode: this._renderMode()\r\n }\r\n return this.CreateControl(controlParams);\r\n }\r\n\r\n ToDesignedControl(): IControl {\r\n var model = clone(this._model());\r\n model.Id = 0;\r\n var controlParams: IControlParam = {\r\n Model: model,\r\n Form: this._form,\r\n ParentControl: this._parentControl,\r\n RenderMode: RenderModes.Design\r\n }\r\n return this.CreateControl(controlParams);\r\n }\r\n\r\n RemoveControl(control: IControl) {\r\n this._subControls.remove(control);\r\n (this.GetForm().GetScreen() as any).OnControlRemoved(control);\r\n }\r\n\r\n GetValue(): any {}\r\n\r\n GetTranslations() {\r\n return [];\r\n }\r\n\r\n GetDefaultTranslation() {\r\n return null;\r\n }\r\n\r\n Deserialize() {\r\n return null;\r\n }\r\n\r\n GetModel(): ControlModel {\r\n return this._model();\r\n }\r\n\r\n SetModel(model: ControlModel) {\r\n this._model(model);\r\n }\r\n\r\n GetParentControl(): IControl {\r\n return this._parentControl;\r\n }\r\n\r\n ModelHasMutated() {\r\n this._model.valueHasMutated();\r\n }\r\n\r\n GetWidthSize(): string{\r\n let widthSizeValue = '';\r\n\r\n if (this.Model && this.Model.TypeName === 'Group'){\r\n if (this._webSizeValue){\r\n if (this._isWrapped()){\r\n widthSizeValue = `calc(${this._webSizeValue.Value}${this._webSizeValue.Unit.Value} - 5px)`;\r\n } else {\r\n widthSizeValue = `${this._webSizeValue.Value}${this._webSizeValue.Unit.Value}`;\r\n }\r\n } else {\r\n if (this._isWrapped()){\r\n widthSizeValue = \"calc(100% - 5px)\";\r\n } else {\r\n widthSizeValue = \"100%\";\r\n }\r\n }\r\n }\r\n return widthSizeValue;\r\n }\r\n\r\n GetWrapperClass(): string {\r\n var classes = '';\r\n\r\n if (this._isWrapped() && this.Model.TypeName === 'Memo') {\r\n classes += 'wrapped-image wrapped-memo ';\r\n } else if(this._isWrapped() && this.Model.TypeName === 'Group'){\r\n\r\n if (this._webSizeValue &&\r\n this._webSizeValue.Value == 100 &&\r\n this._webSizeValue.Unit.Value == '%'){\r\n classes += 'not-wrapped-group ';\r\n } else {\r\n classes += 'wrapped-group ';\r\n }\r\n\r\n } else if (this._isWrapped()) {\r\n classes += 'wrapped-image ';\r\n }\r\n\r\n if(this.Model.TypeName === 'Tab'){\r\n classes += 'tab-container ';\r\n }\r\n\r\n if(this.Model.TypeName === CONTROL_TYPES.Tag) {\r\n classes += 'tag-control-container ';\r\n }\r\n\r\n if (this.Model.TypeName === 'Memo') {\r\n classes += 'memo-container ';\r\n }\r\n\r\n if (this._model().IsParentControl) {\r\n classes += 'parent-control';\r\n }\r\n\r\n if (this._model().IsFieldAttached) {\r\n classes += 'field-attached';\r\n }\r\n\r\n if (this._model().IsParentForFields) {\r\n classes += 'parent-for-fields';\r\n }\r\n\r\n if (this._model().IsBlobFieldAttached) {\r\n classes += 'blob-field-attached';\r\n }\r\n if (this._model().IsLookupFieldAttached) {\r\n classes += 'lookup-field-attached';\r\n }\r\n\r\n if (this._model().IsColorFieldAttached) {\r\n classes += 'color-field-attached';\r\n }\r\n\r\n if (this._model().IsMultiSelectFieldAttached) {\r\n classes += 'multi-select-field-attached';\r\n }\r\n\r\n if (this._model().IsComplexControl) {\r\n classes += 'is-complex-control';\r\n }\r\n\r\n if (this.Model.TypeName === CONTROL_TYPES.ButtonEdit\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonDelete\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonListScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonSpecialScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonDashboardScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonReturn\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonSecurityReset\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonFavorite\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonTemplate\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonConsultScreen\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonAdd\r\n || this.Model.TypeName === CONTROL_TYPES.GenericButton\r\n || this.Model.TypeName === CONTROL_TYPES.ButtonCopy\r\n || this.Model.TypeName === CONTROL_TYPES.History\r\n || this.Model.TypeName === CONTROL_TYPES.Timer\r\n ){\r\n classes += 'templateButtonsGroup';\r\n }\r\n\r\n return classes;\r\n }\r\n\r\n HasSubControl(typeName: string): boolean {\r\n return _.some(this.Model.SubControls, (control: ControlModel)=> control.TypeName === typeName);\r\n }\r\n\r\n GetWrapper(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._initWithDefault;\r\n }\r\n\r\n GetIsActive(): boolean {\r\n return this._isActive();\r\n }\r\n\r\n SetIsActive(value: boolean) {\r\n this._isActive(value);\r\n }\r\n\r\n GetSort(): number {\r\n return this._model().Sort;\r\n }\r\n\r\n SetSort(value: number) {\r\n this._model().Sort = value;\r\n }\r\n\r\n get IsNew(): boolean {\r\n return this._model().Id === 0 || this._model().Id === null;\r\n }\r\n\r\n IsValid(): boolean {\r\n return true;\r\n }\r\n\r\n IsPropertiesValid(): boolean {\r\n if (this._generalProperties) {\r\n return this._generalProperties.IsValid();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n IsPropertiesValidToSave(): boolean {\r\n if (this._generalProperties) {\r\n return this._generalProperties.IsValidToSave();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n GetPropertiesErrors(): string[] {\r\n if (this._generalProperties) {\r\n return this._generalProperties.GetPropertiesErrors();\r\n }\r\n\r\n return [];\r\n }\r\n\r\n IsTranslatable() {\r\n return FlagResolver.ContainsFlag(FieldFlags.Translate, this._model().FieldFlag);\r\n }\r\n\r\n GetTranslation(data: ControlDataModel): ITranslationValue {\r\n return TranslationManager.Instance.GetTranslation(data.DisplayValue, data.Translations);\r\n }\r\n\r\n GetIcon() {\r\n return this._model().Icon;\r\n }\r\n\r\n UpdateLabel() {\r\n this.Label(this.GetLabel());\r\n }\r\n\r\n protected GetLabel(): string {\r\n if (this._model().UseFieldName && (this._model().IsFieldAttached || this._model().IsLookupFieldAttached || this._model().IsMultiSelectFieldAttached)) {\r\n let fieldAttached = _.first(this._model().Fields);\r\n if (fieldAttached) {\r\n this._getCurrentName = fieldAttached.FieldNameTranslation;\r\n }\r\n } else {\r\n var translationList = this._model().NameTranslations;\r\n _.each(translationList, item => {\r\n\r\n if (item.Selected && item.Translation !== '' && item.Translation !== null) {\r\n this._getCurrentName = item.Translation;\r\n } else if (item.Selected) {\r\n this._getCurrentName = this._model().Label;\r\n }\r\n });\r\n\r\n if (!translationList.length) {\r\n return this._model().TranslatedName || this._model().Label;\r\n }\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Label;\r\n }\r\n\t}\r\n\r\n CreateDescriptionToolTip() {\r\n\t this.DescriptionToolTip({\r\n\t\t content: this.DescriptionToolTipContent,\r\n\t\t onlyOnOverflow: true,\r\n\t\t position: { x: 'left', y: 'center' },\r\n\t\t outside: 'x',\r\n\t\t addClass: 'ellipsis-tooltip'\r\n\t });\r\n }\r\n\r\n get DescriptionToolTipContent(): string {\r\n\t const controlDescriptionTranslationModel = _.find(this._model().DescriptionTranslations, item => item.Selected && item.Translation !== '' && item.Translation !== null);\r\n\t const controlDescription = controlDescriptionTranslationModel\r\n\t\t ? controlDescriptionTranslationModel.Translation\r\n\t\t : this.Description;\r\n\r\n\t if (controlDescription) {\r\n\t\t return controlDescription;\r\n\t }\r\n\r\n\t const fieldAttached = _.first(this._model().Fields);\r\n\t\tif (fieldAttached) {\r\n\t\t return fieldAttached.MemoTranslation || fieldAttached.Memo;\r\n\t }\r\n\r\n\t return null;\r\n }\r\n\r\n public SetIsRequired(isRequired: boolean) {\r\n this._isRequired = isRequired;\r\n this._model().IsRequired = isRequired;\r\n }\r\n\r\n Dispose() {\r\n\r\n }\r\n\r\n get Screen(): IScreen {\r\n return this._form ? this._form.GetScreen() : null;\r\n }\r\n\r\n get EnableResetDependOnValue(): boolean {\r\n return this.FieldModel && this.FieldModel.DynamicFields.length > 0 && this.FieldModel.FilledById != 0;\r\n }\r\n\r\n protected GetDynamicFieldsData(): Array{\r\n let dynamicFieldValues: Array = [];\r\n if(!this._form){\r\n return dynamicFieldValues;\r\n }\r\n\r\n _.each(this._form.GetScreen().GetAllControls(), (control) => {\r\n if([CONTROL_TYPES.Text, CONTROL_TYPES.Dropdown, CONTROL_TYPES.MultiSelect, CONTROL_TYPES.DateTime].indexOf(control.GetType()) >= 0){\r\n dynamicFieldValues.push(\r\n {\r\n FieldId: control.GetFieldModel().Id, Value: control.GetValue()\r\n }\r\n );\r\n } \r\n });\r\n\r\n if(this.IsLinkEditor && (this.Screen as any).RelationTypeField){\r\n dynamicFieldValues.push(\r\n {\r\n FieldId: (this.Screen as any).RelationTypeField.Id, Value: (this.Screen as any).RelationTypeId\r\n }\r\n );\r\n }\r\n\r\n return dynamicFieldValues;\r\n }\r\n\r\n protected CalculateDependOnValue(): P.Promise {\r\n\r\n this._isDataLoading(true);\r\n\r\n const deferredResult = P.defer();\r\n\r\n if (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n let screen = this._form.GetScreen() as any;\r\n let requestModel: IGetDynamicDependsOnValue = {\r\n SubjectRecordId: screen._mainRecordId,\r\n SubjectEntityId: screen._mainEntityId,\r\n RelatedEntityId: screen._relatedEntityId,\r\n RelatedRecordId: screen._relatedRecordId,\r\n KSeq: screen._kSeq,\r\n ScreenData: this.GetDynamicFieldsData(),\r\n FieldId: this.FieldModel.Id\r\n };\r\n\r\n RecordStore.GetDynamicDependsOnValues(requestModel)\r\n .always(()=>{\r\n this._isDataLoading(false);\r\n })\r\n .then((data) => {\r\n const dependsOnValue = (data.ResultObject && data.ResultObject.Value) || null;\r\n deferredResult.resolve(dependsOnValue);\r\n if (this._resetDependsOnValue()) {\r\n this._resetDependsOnValue(false);\r\n }\r\n }).fail((error) => {\r\n let notifier = new Notifier(null);\r\n notifier.Failed(error.message);\r\n });\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n get IsConsultScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsConsultScreen;\r\n }\r\n\r\n get IsListScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsListScreen;\r\n }\r\n\r\n get IsEditScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsEditScreen;\r\n }\r\n\r\n\r\n get IsProcessCardPageScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsProcessCardPageScreen;\r\n }\r\n get IsQueryScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsQueryScreen;\r\n }\r\n\r\n get IsLinkEditor(): boolean {\r\n return this._form && this._form.GetScreen().IsLinkEditor;\r\n }\r\n\r\n get IsLIsSpecialScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsSpecialScreen;\r\n }\r\n \r\n get IsPortlet(): boolean {\r\n return this._form && this._form.GetScreen().IsPortlet;\r\n }\r\n\r\n get IsEditMode(): boolean {\r\n return this._renderMode() === RenderModes.Edit;\r\n }\r\n\r\n get IsViewMode(): boolean {\r\n return this._renderMode() === RenderModes.View;\r\n }\r\n get IsHelpMode(): boolean {\r\n return this._renderMode() === RenderModes.HelpView;\r\n }\r\n\r\n get IsRunTime(){\r\n return this._form && this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar;\r\n }\r\n\r\n get IsDesignTime(){\r\n return this._renderMode() === RenderModes.Design;\r\n }\r\n\r\n get Fields(): Array{\r\n return this._model().Fields;\r\n }\r\n\r\n HasDynamicField(id: number): boolean{\r\n return !!_.find(this.FieldModel.DynamicFields, (field) => field === id );\r\n }\r\n\r\n MapConditionValues(): Array{\r\n let result: Array = [];\r\n \r\n if(this._conditionScreenData){\r\n this._conditionScreenData.forEach((value, key)=> {\r\n let res: IConditionValueDto = {\r\n Guid: key,\r\n Value: value\r\n } \r\n result.push(res);\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n SetConditionScreenData(conditions: Array, value: string){\r\n _.each(conditions, condition=> this._conditionScreenData.set(condition.Column.Guid, value));\r\n }\r\n\r\n get HideIfCondition(): QueryConditionGroupModel{\r\n let conditionString = this.GeneralProperties?.GetPropertyValue(GENERAL_PROPERTIES.HIDE_IF_CONDITION);\r\n if(!conditionString){\r\n return null;\r\n }\r\n \r\n let jsonObj = JSON.parse(conditionString);\r\n let condition = GenericDeserialize(jsonObj, QueryConditionGroupModel);\r\n if(condition.HasAnyConditions){\r\n return condition;\r\n }\r\n return null;\r\n }\r\n\r\n ForceFocus(){\r\n\r\n }\r\n\r\n SetGridRow(gridRow: any) {\r\n this._gridRow = gridRow;\r\n this._renderMode(RenderModes.GridRow);\r\n }\r\n\r\n RenderByTargetId(target: string){\r\n let container = document.getElementById(target);\r\n ko.cleanNode(container);\r\n ko.applyBindings(this, container);\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\nexport class AttachedFieldModel {\r\n\r\n\t@deserialize\r\n\tFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFieldNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tAllowCustomValue: boolean;\r\n\r\n\t@deserialize\r\n\tAllowCreatingRecords: boolean;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeName: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeId: number;\r\n\r\n\t@deserialize\r\n\tPrimaryKeyName: string;\r\n\r\n\t@deserialize\r\n TableTypeId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserialize\r\n\tValFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tValFieldFormatName: string;\r\n\r\n\t@deserialize\r\n\tValFieldSize: number;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValTableName: string;\r\n\r\n\t@deserialize\r\n\tFilledById: number;\r\n\r\n\t@deserialize\r\n\tDependsOnId: number;\r\n\r\n\t@deserialize\r\n\tValTableType: string;\r\n\r\n\t//TODO remove\r\n\t@deserialize\r\n\tAllowInsert: boolean;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tFieldIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tFormatName: string;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tIsReadOnly: boolean;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tIsVirtual: boolean;\r\n\r\n\t@deserialize\r\n\tIsSystem: boolean;\r\n\r\n\t@deserialize\r\n\tIsInteger: boolean;\r\n\r\n\t@deserialize\r\n\tIsDecimal: boolean;\r\n\r\n\t@deserialize\r\n\tIsText: boolean;\r\n\r\n\t@deserialize\r\n\tIsDate: boolean;\r\n\r\n\t@deserialize\r\n\tIsDatetime: boolean;\r\n\r\n\t@deserialize\r\n\tRelatedField: boolean;\r\n\r\n\t@deserialize\r\n\tPropertyFieldId: number;\r\n\r\n\t@deserialize\r\n\tDynamicFields: Array;\r\n\r\n\t@deserialize\r\n\tSubTableField: boolean;\r\n\r\n\t@deserialize\r\n\tFilterByField: number;\r\n\r\n\t@deserialize\r\n\tLinkRequired: boolean;\r\n\r\n\t@deserialize\r\n\tHasFilter: boolean;\r\n\r\n\tLinkRequiredObservable: KnockoutObservable;\r\n\r\n\tHasDefaultValue: boolean;\r\n\tHasLinkEditorVisibility: boolean;\r\n\tFullWidth: boolean;\r\n\tFontStyles: Array<{Id: number, Name: string}>;\r\n\tFontColor: string;\r\n\r\n\tget FullName(){\r\n\t\treturn this.FieldNameTranslation || this.Name;\r\n\t}\r\n\r\n\tconstructor(init?: Partial) {\t\t\r\n\t\tthis.FormatName = '';\r\n\t\tthis.Sort = 0;\r\n\t\tthis.DynamicFields = [];\r\n\t\tObject.assign(this, init); \r\n\t\tthis.LinkRequiredObservable = ko.observable(false);\r\n\t}\r\n\r\n\tpublic static OnDeserialized(instance: AttachedFieldModel, json: any) : void {\r\n\t\tinstance.LinkRequiredObservable = ko.observable(!!instance.LinkRequired);\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\n\r\nimport {TriggerModel} from 'Core/Controls/BaseControl/Models/TriggerModel';\r\n\r\nexport class ControlModel {\r\n private _isInitializedControl: boolean;\r\n\r\n constructor(init?: Partial) {\r\n this.Fields = [];\r\n this.SubControls = [];\r\n this.NameTranslations = [];\r\n this.DescriptionTranslations = [];\r\n this.Sort = 0;\r\n this.Triggers = [];\r\n this._isInitializedControl = true;\r\n Object.assign(this, init);\r\n }\r\n\r\n SetInitializedControl(value: boolean){\r\n this._isInitializedControl = value;\r\n }\r\n get InitializedControl(): boolean {\r\n return this._isInitializedControl;\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string; \r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameMaxSize: number;\r\n\r\n @deserialize\r\n FieldNameTranslation;\r\n\r\n @deserializeAs(Number)\r\n ToolBars: Array;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n EntityName: string;\r\n\r\n @deserialize\r\n EntityTypeName: string;\r\n\r\n SubTableId: number;\r\n\r\n @deserialize\r\n LabelPosition: string;\r\n\r\n @deserialize\r\n LabelPositionValue: number;\r\n\r\n @deserialize\r\n Properties: any;\r\n\r\n @deserializeAs(ControlModel)\r\n SubControls: Array;\r\n\r\n @deserializeAs(AttachedFieldModel)\r\n Fields: Array;\r\n\r\n @deserializeAs(TranslationModel)\r\n NameTranslations: Array;\r\n\r\n @deserializeAs(TranslationModel)\r\n DescriptionTranslations: Array;\r\n\r\n @deserialize\r\n IsParentControl: boolean;\r\n\r\n @deserialize\r\n IsFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsParentForFields: boolean;\r\n\r\n @deserialize\r\n IsBlobFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsLookupFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsMultiSelectFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsComplexControl: boolean;\r\n\r\n @deserialize\r\n IsColorFieldAttached: boolean;\r\n\r\n @deserialize\r\n IsReadOnly: boolean;\r\n\r\n @deserialize\r\n IsRequired: boolean;\r\n\r\n @deserialize\r\n Predefined: boolean;\r\n\r\n @deserialize\r\n Sort: number;\r\n\r\n @deserialize\r\n Description: string;\r\n\r\n @deserialize\r\n ExampleAlias: string;\r\n\r\n @deserialize\r\n FieldFlag: number;\r\n\r\n @deserialize\r\n IsMailEnabled: boolean;\r\n\r\n @deserializeAs(TriggerModel)\r\n Triggers: Array;\r\n\r\n @deserialize\r\n HasSpreadsheetData: boolean;\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n\r\n @deserialize\r\n RecordLifeStatusId: number;\r\n\r\n @deserialize\r\n DestinationTypeId: number;\r\n\r\n @deserialize\r\n UseFieldName: boolean;\r\n\r\n\r\n @deserialize\r\n IsDisabledByCondition: boolean;\r\n\r\n @deserialize\r\n IsAutoStartByCondition: boolean;\r\n\r\n @deserialize\r\n IsLinkedDocumentsAmountLimitReached: boolean;\r\n\r\n @deserialize\r\n TitleFieldId: number;\r\n\r\n @deserialize\r\n KanbanSubjectId: number;\r\n\r\n @deserialize\r\n TodoEntityId: number;\r\n\r\n @deserialize\r\n TodoTypeId: number;\r\n\r\n @deserialize\r\n ScreenId: number;\r\n\r\n @deserialize\r\n TodoTypeName: string;\r\n\r\n @deserialize\r\n TodoFieldId: number;\r\n\r\n\tResetDependsOnValue: boolean;\r\n\r\n\tSkipTimeShifting: boolean;\r\n\r\n @deserialize\r\n SubFlowTypeId: number;\r\n\r\n SetBackgroundColor(color: string) {\r\n if (!this.Properties) {\r\n this.Properties = {};\r\n }\r\n\r\n this.Properties.BackgroundColor = color;\r\n }\r\n\r\n static OnDeserialized(instance: ControlModel, json: any): void {\r\n try {\r\n if (json.Properties) {\r\n instance.Properties = JSON.parse(json.Properties);\r\n }\r\n } catch (err) {\r\n }\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\nexport class IconModel {\r\n\r\n\tconstructor(init?: Partial) {\r\n\t\tObject.assign(this, init);\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n\r\n\t@deserialize\r\n\tIsIcon: boolean;\r\n\r\n\t@deserialize\r\n\tIsImage: boolean;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\tstatic GetClasses(fontName, name):string {\r\n let classes:string = '';\r\n if (fontName === FONT_NAME.FONT_AWESOME) {\r\n classes = `${classes} fa`;\r\n } else if (fontName === FONT_NAME.SOCIAL_ICONS) {\r\n classes = `${classes} socicon-btn`;\r\n }\r\n classes = `${classes} ${name}`;\r\n\r\n return classes;\r\n }\r\n}\r\n\r\n","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {serialize} from 'libs/cerialize';\r\nimport {serializeAs} from 'libs/cerialize';\r\n\r\nexport class LanguageModel {\r\n\t@deserialize\r\n\t@serialize\r\n\tK_Language: number;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tShortName: string;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tEnabled: number;\r\n\r\n\t@deserialize\r\n\tFlagBase64: string;\r\n\r\n\tconstructor(k_Language?: number, name?: string, shortName?: string, enabled?: number, flagBase64?: string) {\r\n\t\tthis.K_Language = k_Language;\r\n\t\tthis.Name = name;\r\n\t\tthis.ShortName = shortName;\r\n\t\tthis.Enabled = enabled;\r\n\t\tthis.FlagBase64 = flagBase64;\r\n\t}\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {serialize} from 'libs/cerialize';\r\nimport {serializeAs} from 'libs/cerialize';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport * as ko from \"knockout\";\r\n\r\nexport class TranslationModel {\r\n\r\n\tIsFocusedItem: KnockoutObservable;\r\n\r\n\tconstructor(){\r\n\t\tthis.IsFocusedItem = ko.observable(false);\r\n\t}\r\n\r\n\t@deserializeAs(LanguageModel)\r\n\t@serializeAs(LanguageModel)\r\n\tLanguage: LanguageModel;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tTranslation: string;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tSelected: boolean;\r\n\r\n\tget IsDefault() {\r\n\t\treturn this.Language.K_Language === -1;\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { TriggerParamModel } from 'Core/Controls/BaseControl/Models/TriggerParamModel';\r\n\r\nexport class TriggerModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Params = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tAction: string;\r\n\r\n\t@deserializeAs(TriggerParamModel)\r\n\tParams: Array;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class TriggerParamModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class LifestatusModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tApprovalName: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n}\r\n\r\nexport class LifecycleModel {\r\n\t@deserializeAs(LifestatusModel)\r\n\tCurrentLifeStatus: LifestatusModel;\r\n\r\n\t@deserializeAs(LifestatusModel)\r\n\tLifeStatuses: Array;\r\n}\r\n\r\nexport class BasketRecordModel {\r\n\tconstructor() {\r\n\t\tthis.Records = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tIsDeletingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsEditingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tRecords: Array;\r\n\r\n\t@deserializeAs(LifecycleModel)\r\n\tLifeStatuses: LifecycleModel;\r\n}\r\n\r\nexport class BasketDataModel {\r\n\tconstructor() {\r\n\t\tthis.Records = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tIsAddingRecordAllowed: boolean;\r\n\r\n\t@deserializeAs(BasketRecordModel)\r\n\tRecords: Array;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport {BasketDataModel} from 'Core/Controls/Basket/Models/BasketDataModel';\r\n\r\nexport interface IGetBasketControlDataRequestModel {\r\n\tControlId: number;\r\n\tSubjectEntityId: number;\r\n};\r\n\r\nexport interface IRemoveFromBasketRequestModel {\r\n\tBasketEntityId: number;\r\n\tBasketRecordId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n}\r\n\r\nexport interface INextStatusRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tLifestatusId: number;\r\n}\r\n\r\nexport class BasketStore {\r\n\tstatic GetData(params: IGetBasketControlDataRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/BasketApi/GetData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic RemoveFromBasket(params: IRemoveFromBasketRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/BasketApi/RemoveFromBasket',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateStatus(params: INextStatusRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/BasketApi/UpdateStatus',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): BasketDataModel {\r\n\t\tvar model = GenericDeserialize(jsonObject.ResultObject, BasketDataModel);\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {BasketRecordModel} from 'Core/Controls/Basket/Models/BasketDataModel';\r\nimport {FollowUpLifeStatuses} from 'Core/Controls/ButtonFollowUp/FollowUpLifeStatuses';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport { FollowUpOptionModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel\";\r\n\r\nexport class BasketRecord extends Event {\r\n\tprivate _records: KnockoutObservableArray;\r\n\tprivate _isSelected: KnockoutObservable;\r\n\tprivate _recordsCount: KnockoutComputed;\r\n\tprivate _nextStatusSelector: FollowUpLifeStatuses;\r\n\tprivate _recordId: number;\r\n\tprivate _typeId: number;\r\n\tprivate _title: string;\r\n\r\n\tconstructor(model: BasketRecordModel, entityId: number) {\r\n\t\tsuper();\r\n\t\tthis.AddEvent('LIFESTATUS_CHOOSEN');\r\n\t\tthis._recordId = model.Id;\r\n\t\tthis._typeId = model.TypeId;\r\n\t\tthis._title = model.Name;\r\n\t\tthis._records = ko.observableArray(model.Records);\r\n\t\tthis._isSelected = ko.observable(false);\r\n\t\tthis._recordsCount = ko.computed(() => {\r\n\t\t\treturn this._records().length;\r\n\t\t});\r\n \r\n if (model.LifeStatuses && model.LifeStatuses.CurrentLifeStatus && model.LifeStatuses.LifeStatuses.length > 0) {\r\n\t\t\tthis._nextStatusSelector = new FollowUpLifeStatuses();\r\n\r\n\t\t\tconst followUpOption = new FollowUpOptionModel();\r\n\t\t\tfollowUpOption.LifeStatuses = model.LifeStatuses;\r\n\t\t\tthis._nextStatusSelector.Init(followUpOption, null, null);\r\n\r\n\t\t\tthis._nextStatusSelector.On('LIFESTATUS_CHOOSEN', this, (eventargs) => {\r\n\t\t\t\tif (eventargs.data.LifeStatus.Id) {\r\n\t\t\t\t\tthis.Trigger('LIFESTATUS_CHOOSEN', {LifestatusId: eventargs.data.LifeStatus.Id});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget RecordId(): number {\r\n\t\treturn this._recordId;\r\n\t}\r\n\r\n\tget TypeId(): number {\r\n\t\treturn this._typeId;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn this._title;\r\n\t}\r\n\r\n\tget Records(): KnockoutObservableArray {\r\n\t\treturn this._records;\r\n\t}\r\n\r\n\tSetIsSelected(value: boolean) {\r\n\t\tthis._isSelected(value);\r\n\t}\r\n\r\n\tget IsSelected(): KnockoutObservable {\r\n\t\treturn this._isSelected;\r\n\t}\r\n\r\n\tget RecordsCount(): KnockoutComputed {\r\n\t\treturn this._recordsCount;\r\n\t}\r\n\r\n\tget NextStatusSelector(): FollowUpLifeStatuses {\r\n\t\treturn this._nextStatusSelector;\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { DEFAULT_ICONS } from \"Core/Constant\";\r\n\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { RenderModes } from 'Core/Constant';\r\nimport { TypeScreen } from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { BasketStore } from 'Core/Controls/Basket/Stores/BasketStore';\r\nimport { EVENTS as TYPE_SCREEN_EVENTS } from 'Core/Screens/TypeScreen/Events';\r\nimport { EVENTS as EDIT_SCREEN_EVENTS } from 'Core/Screens/EditScreen/Events';\r\nimport { RecordLinker } from 'Core/Components/RecordLinker/RecordLinker';\r\nimport { EVENTS } from 'Core/Controls/Basket/Events';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { BasketRecord } from 'Core/Controls/Basket/BasketRecord';\r\nimport { BasketDataModel } from 'Core/Controls/Basket/Models/BasketDataModel';\r\nimport { BasketRecordModel } from 'Core/Controls/Basket/Models/BasketDataModel';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport Config from 'Core/Controls/Basket/Configs/basket-config.json';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Basket/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Basket/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Basket/Templates/Design.html';\r\nimport { LOCK_EVENTS, LockManager } from \"Core/Components/Locker/LockManager\";\r\nimport { BaseControl } from \"../BaseControl/BaseControl\";\r\n\r\nko.templates['Core/Controls/Basket/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Basket/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Basket/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Basket/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Basket extends BaseControl {\r\n private _records: KnockoutObservableArray;\r\n private _selectedRecord: KnockoutObservable;\r\n private _enableAddButton: KnockoutObservable;\r\n private _selectedRecordId: number;\r\n private _gridEntityId: number;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, Config); \r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Basket));\r\n this.AddEvent(EVENTS.BASKET_SELECTED);\r\n this._records = ko.observableArray([]);\r\n this._selectedRecord = ko.observable(null);\r\n this._enableAddButton = ko.observable(false);\r\n this._selectedRecord.subscribe((newValue) => {\r\n if (newValue) {\r\n this._selectedRecordId = newValue.RecordId;\r\n this.Trigger(EVENTS.BASKET_SELECTED, { Records: newValue.Records() });\r\n UserVarsManager.Instance.SaveBasket(this.GetFieldModel().EntityId, newValue.RecordId, this._gridEntityId);\r\n } else {\r\n this.Trigger(EVENTS.BASKET_SELECTED, { Records: [] });\r\n UserVarsManager.Instance.SaveBasket(this.GetFieldModel().EntityId, 0, this._gridEntityId);\r\n }\r\n });\r\n }\r\n\r\n NewRecord() {\r\n if (this._enableAddButton()) {\r\n const typeScreen = new TypeScreen(this.GetFieldModel().EntityId, 0, false, false, null);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n\t\t\t\tnew Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n this.CreateRecord(typeId, kindId);\r\n });\r\n typeScreen.Show();\r\n }\r\n }\r\n\r\n async CreateRecord(typeId: number, kindId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetFieldModel().EntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: 0,\r\n LoadAsExample: false\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, eventArgs => {\r\n this._selectedRecordId = eventArgs.data.RecordId;\r\n this.LoadData();\r\n });\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n LoadData(subjectEntityId: number = null) {\r\n BlockUI.Block({ Target: this._el });\r\n\r\n this._records([]);\r\n if (!this._gridEntityId) {\r\n this._gridEntityId = subjectEntityId;\r\n }\r\n\r\n if (!this._selectedRecordId) {\r\n var selectedRecord = UserVarsManager.Instance.GetBasket(this.GetFieldModel().EntityId, this._gridEntityId);\r\n if (selectedRecord) {\r\n this._selectedRecordId = selectedRecord;\r\n }\r\n }\r\n\r\n BasketStore.GetData({ ControlId: this.GetControlId(), SubjectEntityId: this._gridEntityId })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .fail((error) => {\r\n var notifier = new Notifier();\r\n notifier.Failed(error.message);\r\n })\r\n .then((data: BasketDataModel) => {\r\n this._enableAddButton(data.IsAddingRecordAllowed);\r\n _.each(data.Records, (record: BasketRecordModel) => {\r\n var basketRecord = new BasketRecord(record, this._gridEntityId);\r\n this._records.push(basketRecord);\r\n\r\n if (basketRecord.RecordId === this._selectedRecordId) {\r\n this.SelectRecord(basketRecord);\r\n }\r\n\r\n basketRecord.On('LIFESTATUS_CHOOSEN', this, (eventargs) => {\r\n this.UpdateStatus(eventargs.data.LifestatusId);\r\n });\r\n });\r\n });\r\n }\r\n\r\n UpdateStatus(lifestatusId: number) {\r\n BlockUI.Block();\r\n BasketStore.UpdateStatus({\r\n EntityId: this.GetFieldModel().EntityId,\r\n RecordId: this._selectedRecord().RecordId,\r\n LifestatusId: lifestatusId\r\n }).then(() => {\r\n this.LoadData();\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail((error) => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n });\r\n }\r\n\r\n async EditRecord(basketRecord: BasketRecord) {\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(this.GetFieldModel().EntityId, basketRecord.RecordId)\r\n .then(async () => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetFieldModel().EntityId,\r\n TableTypeId: basketRecord.TypeId,\r\n RecordId: basketRecord.RecordId,\r\n LoadAsExample: false\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.EntityId === this.GetFieldModel().EntityId &&\r\n eventArgs.data.RecordId === basketRecord.RecordId) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On(SCREEN_EVENTS.MODAL_CLOSE, this, () => {\r\n LockManager.Instance.ReleaseLock(this.GetFieldModel().EntityId, basketRecord.RecordId);\r\n });\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, eventArgs => this.LoadData());\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, eventArgs => this.RemoveRecord(eventArgs.data.RecordId));\r\n screen.ShowInModal();\r\n });\r\n }).always(() => BlockUI.Unblock());\r\n }\r\n\r\n RemoveRecord(recordId: number) {\r\n if (this._selectedRecord() && this._selectedRecord().RecordId === recordId) {\r\n this._selectedRecord(null);\r\n }\r\n\r\n var deletedRecord = _.find(this._records(), (item: BasketRecord) => {\r\n return item.RecordId === recordId\r\n });\r\n if (deletedRecord) {\r\n this._records.splice(this._records.indexOf(deletedRecord), 1);\r\n }\r\n }\r\n\r\n get Records(): KnockoutObservableArray {\r\n return this._records;\r\n }\r\n\r\n get SelectedRecord(): KnockoutObservable {\r\n return this._selectedRecord;\r\n }\r\n\r\n SelectRecord(basketRecord: BasketRecord) {\r\n if (this._selectedRecord()) {\r\n this._selectedRecord().SetIsSelected(false);\r\n }\r\n basketRecord.SetIsSelected(true);\r\n this._selectedRecord(basketRecord);\r\n }\r\n\r\n AddRecordToBasket(recordId: number, entityId: number): P.Promise {\r\n var deferredResult = P.defer();\r\n var notifier = new Notifier();\r\n\r\n if (this._selectedRecord()) {\r\n BlockUI.Block();\r\n RecordLinker.LinkRecord({\r\n MainTableId: this._model().EntityId,\r\n MainRecordId: this._selectedRecord().RecordId,\r\n LinkedTableId: entityId,\r\n LinkedRecordId: recordId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n this._selectedRecord().Records.push(recordId);\r\n notifier.Success(NOTIFICATIONS.RECORD_ADDED_TO_BASKET);\r\n deferredResult.resolve(result.ResultObject.Sequence);\r\n });\r\n } else {\r\n notifier.Warning(NOTIFICATIONS.PLEASE_CREATE_OR_SELECT_BASKET_RECORD);\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n RemoveRecordFromBasket(recordId: number, entityId: number): P.Promise {\r\n var deferredResult = P.defer();\r\n var notifier = new Notifier();\r\n\r\n if (this._selectedRecord()) {\r\n BlockUI.Block();\r\n BasketStore.RemoveFromBasket({\r\n BasketEntityId: this._model().EntityId,\r\n BasketRecordId: this._selectedRecord().RecordId,\r\n RelatedEntityId: entityId,\r\n RelatedRecordId: recordId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then(() => {\r\n this._selectedRecord().Records.splice(this._selectedRecord().Records.indexOf(recordId), 1);\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED_FROM_BASKET);\r\n deferredResult.resolve(null);\r\n }).fail((error) => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n });\r\n } else {\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_BASKET_RECORD);\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n get EnableAddButton(): KnockoutObservable {\r\n return this._enableAddButton;\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","export var EVENTS = {\r\n\tBASKET_SELECTED: 'BASKET_SELECTED'\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport AddButtonConfig from \"Core/Controls/ButtonAdd/Configs/add-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonAdd/Templates/View.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonAdd/Templates/Design.html'\r\nimport ToolbarTemplate from 'Core/Controls/ButtonAdd/Templates/ToolBar.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonAdd/Templates/HelpView.html'\r\n\r\nko.templates['Core/Controls/ButtonAdd/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/ButtonAdd/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class ButtonAdd extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, AddButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger('ADD_RECORD');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data && value.Data.Rights) {\r\n\t\t\tvar condition = value.Data.Rights.IsAddingRecordAllowed && value.Data.Rights.IsRecordSecurityOk && this.IsEditScreenExist;\r\n\t\t\tthis._enabled(condition);\r\n\t\t}\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","export class MenuItemModel {\r\n\tconstructor(public Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic TranslatedName: string) {\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { Deserialize, GenericDeserialize } from '../../../../libs/cerialize';\r\n\r\nexport interface CopyRecordsDto {\r\n\tSubjectEntityId: Number;\r\n\tSubjectRecordId: Number;\r\n\tSubjectTypeId: Number;\r\n\r\n\tEntityIdToCopy: Number;\r\n\r\n\tRecordsToCopy: Array;\r\n\r\n\tCopyRelations: boolean,\r\n\tIsLinkToSource: boolean;\r\n\tCopyToTypeId: number;\r\n\tAliasSuffix: string;\r\n}\r\n\r\nexport interface RecordToCopyDto {\r\n\tId: Number;\r\n\tTypeId: Number;\r\n}\r\n\r\nexport class ButtonCopyApi {\r\n\r\n\tstatic CopyRecords(params: CopyRecordsDto): P.Promise>{\r\n\t\tlet deferredResult = P.defer>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ScreenFormApi/CopyRecords',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, Array));\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { CONTROL_TYPES } from './../../Constant';\r\nimport * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport {Behavior} from 'Core/Controls/ButtonCopy/Constants/Behavior';\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {MenuItemModel} from 'Core/Controls/ButtonCopy/Models/MenuItemModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel'\r\nimport type { Grid } from 'Core/Controls/Grid/Grid';\r\n\r\nimport CopyButtonConfig from \"Core/Controls/ButtonCopy/Configs/copy-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonCopy/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonCopy/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonCopy/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/ButtonCopy/Templates/ToolBar.html'\r\nimport { Notifier } from '../../Common/Notifier';\r\nimport { NOTIFICATIONS } from '../../Components/Translation/Locales';\r\nimport { ButtonCopyApi, CopyRecordsDto } from './Stores/ButtonCopyApi';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\n\r\nko.templates['Core/Controls/ButtonCopy/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/ButtonCopy/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class ButtonCopy extends BaseControl {\r\n\tprivate _menuItems: KnockoutObservableArray;\r\n private _config: any;\r\n\tprivate _mainRecordId: number;\r\n\tprivate _linkToSource: KnockoutObservable;\r\n\tprivate _behavior: KnockoutObservable;\r\n\tprivate _type: KnockoutObservable;\r\n\tprivate _aliasSuffix: KnockoutObservable;\r\n\r\n\tprivate _buttonClassName: KnockoutObservable;\r\n\tprivate _iconModel = IconModel;\r\n\tprivate _isCopyingInGrid: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, CopyButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\r\n this._linkToSource = ko.observable(false);\r\n this._behavior = ko.observable(null);\r\n this._type = ko.observable(null);\r\n this._aliasSuffix = ko.observable('');\r\n\t\tthis._isCopyingInGrid = false;\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tthis._icon(this._model().Icon);\r\n\t\tthis._buttonClassName = ko.observable(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name));\r\n\t\tthis._icon.subscribe(() => {\r\n\t\t\tthis._buttonClassName(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name))\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n \r\n\t\tlet copyMenuItem = new MenuItemModel(0, 'Copy', this._labels.COPY);\r\n\t\tlet copyWithRelationMenuItem = new MenuItemModel(1, 'Copy with relation', this._labels.COPY_WITH_RELATIONS);\r\n\r\n\t\tthis._menuItems = ko.observableArray([copyMenuItem, copyWithRelationMenuItem]);\r\n\t}\r\n\r\n\tget MenuItems(): KnockoutObservableArray {\r\n\t\treturn this._menuItems;\r\n\t}\r\n\r\n\tClick(menuItem: MenuItemModel) {\r\n\t\t\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tif(menuItem.Id === 0){\r\n\t\t\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\t\t\tthis.CopyInGrid({ linkToSource: this._linkToSource() });\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tscreen.Trigger('COPY_RECORD', { linkToSource: this._linkToSource() })\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\t\t\tthis.CopyInGrid({ copyRelations: true, linkToSource: this._linkToSource() });\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tscreen.Trigger('COPY_RECORD_WITH_RELATIONS', { linkToSource: this._linkToSource() });\r\n\t\t\t\t\t}\r\n\t\t\t\t} \r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ClickRootCopyBtn(data?, event?): void {\r\n\t\tconst screen = this._form.GetScreen();\r\n\t\tif(this.IsInGrid && !this._isCopyingInGrid){\r\n\t\t\tthis.Grid.EnableRecordSelection();\r\n\t\t\tthis._isCopyingInGrid = true;\t\r\n\t\t\tevent.stopPropagation();\r\n\t\t}else if (this._help.IsHelpButtonPressed()) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else if (this._behavior() === Behavior.Copy) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\tthis.CopyInGrid({ linkToSource: this._linkToSource() });\r\n\t\t\t}else{\r\n\t\t\t\tscreen && screen.Trigger('COPY_RECORD', { linkToSource: this._linkToSource() });\r\n\t\t\t}\r\n\t\t} else if (this._behavior() === Behavior.CopyWithRelations) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\tthis.CopyInGrid({ copyRelations: true, linkToSource: this._linkToSource() });\r\n\t\t\t}else{\r\n\t\t\t\tscreen && screen.Trigger('COPY_RECORD_WITH_RELATIONS', { linkToSource: this._linkToSource() });\r\n\t\t\t}\r\n\t\t} else if (this._behavior() === Behavior.CopyToType && this._type()) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tif(this._isCopyingInGrid){\r\n\t\t\t\tthis.CopyInGrid({ copyRelations: true, copyToType: this._type(), linkToSource: this._linkToSource(), aliasSuffix: this._aliasSuffix() });\r\n\t\t\t}else{\r\n\t\t\t\tscreen && screen.Trigger('COPY_TO_TYPE', { linkToSource: this._linkToSource(), copyToType: this._type(), aliasSuffix: this._aliasSuffix() });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync CopyInGrid({ copyRelations = false, linkToSource = false, copyToType = 0, aliasSuffix = '' }: { copyRelations?: boolean, linkToSource?: boolean, copyToType?: number, aliasSuffix?: string }){\r\n\t\tlet selectedRecords = this.Grid.GetSelectRecords();\r\n\t\tlet recordsToCopy = _.map(selectedRecords, (selectedRecord) => {\r\n\t\t\treturn {\r\n\t\t\t\tId: selectedRecord.RecordId,\r\n\t\t\t\tTypeId: selectedRecord.RecordTypeId\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif(recordsToCopy.length != 0){\r\n\t\t\tBlockUI.Block();\r\n\t\t\tlet params: CopyRecordsDto = {\r\n\t\t\t\tSubjectEntityId: this.Screen.GetEntityId(),\r\n\t\t\t\tSubjectRecordId: this.Screen.GetRecordId(),\r\n\t\t\t\tSubjectTypeId: this.Screen.GetTableTypeId(),\r\n\t\t\t\tEntityIdToCopy: this.GridEntityId,\r\n\t\t\t\tRecordsToCopy: recordsToCopy,\r\n\t\t\t\tCopyRelations: copyRelations,\r\n\t\t\t\tIsLinkToSource: linkToSource,\r\n\t\t\t\tCopyToTypeId: copyToType,\r\n\t\t\t\tAliasSuffix: aliasSuffix\r\n\t\t\t};\r\n\r\n\t\t\tawait ButtonCopyApi.CopyRecords(params).always(()=>BlockUI.Unblock()).fail((err)=>Notifier.Failed(err.message));\r\n\r\n\t\t\tthis.Grid.DisableRecordSelection();\r\n\t\t\tthis._isCopyingInGrid = false;\r\n\r\n\t\t\tthis.Screen.Refresh();\r\n\t\t}else{\r\n\t\t\tNotifier.Warning(NOTIFICATIONS.NO_SELECTED_RECORDS);\r\n\t\t};\r\n\t}\r\n\r\n\tget GridEntityId(): number{\r\n\t\tif(this.IsConsultScreen || this.IsEditScreen){\r\n\t\t\treturn this.Grid.GetGridSubject().Entity.Metadata.Id;\r\n\t\t}\r\n\t\tif(this.IsListScreen){\r\n\t\t\treturn this.Screen.GetEntityId();\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget Grid(): Grid{\r\n\t\tif(this._parentControl?.GetType() === CONTROL_TYPES.Grid){\r\n\t\t\treturn this._parentControl as Grid;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif(this.IsInGrid){\r\n\t\t\tthis._enabled(true);\r\n\t\t}else if (value.Data && value.Data.Rights && !value.RecordSpecsModel?.IsNewRecord) {\r\n\t\t\tthis._enabled(value.Data.Rights.IsAddingRecordAllowed && value.Data.Rights.IsEditingAllowed && value.Data.Rights.IsRecordSecurityOk);\r\n\t\t} else if (value.RecordSpecsModel.IsNewRecord) {\r\n\t\t\tthis._enabled(true);\r\n\t\t} \r\n\t}\r\n\r\n\tget IsInGrid(): boolean {\r\n\t\treturn this._parentControl?.GetType() === CONTROL_TYPES.Grid;\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n \tthis.AssignProperty('General', 'LinkToSource', this._linkToSource);\r\n \tthis.AssignProperty('General', 'Behavior', this._behavior);\r\n\t\t\tthis.AssignProperty('General', 'Type', this._type);\r\n\t\t\tthis.AssignProperty('General', 'AliasSuffix', this._aliasSuffix);\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n\t\t\t\t\t\tconst propertyValue = property[propertyName].hasOwnProperty('Value')\r\n\t\t\t\t\t\t\t? property[propertyName].Value\r\n\t\t\t\t\t\t\t: property[propertyName];\r\n\t\t\t\t\t\tpropertyHolder(propertyValue);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n} ","// Module\nvar code = \" Copy \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \\\"\\\" \";\n// Exports\nexport default code;","export const Behavior = {\r\n Copy: 'Copy',\r\n CopyWithRelations: 'CopyWithRelations',\r\n Both: 'Both',\r\n CopyToType: 'CopyToType'\r\n};","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport {GeneralProperties} from '../../GeneralProperties/GeneralProperties';\r\nimport SpecialScreenButtonConfig\r\n from 'Core/Controls/ButtonDashboardScreen/Configs/dashboard-screen-button-config.json';\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport ViewTemplate from './Templates/View.html';\r\nimport DesignTemplate from './Templates/Design.html';\r\nimport HelpViewTemplate from './Templates/HelpView.html';\r\nimport ToolBarTemplate from './Templates/Toolbar.html';\r\n\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonDashboardScreen/Templates/View\"] = ViewTemplate;\r\n\r\nexport class ButtonDashboardScreen extends BaseControl {\r\n private _config: any;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, SpecialScreenButtonConfig);\r\n\r\n this._enabled = ko.observable(this.IsDashboardScreenExist);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n OnClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n } else if(this._enabled()){\r\n const screen = this._form.GetScreen();\r\n screen.Trigger(\"SHOW_DASHBOARD_SCREEN\");\r\n }\r\n }\r\n\r\n private Init() {\r\n this.ApplyProperties();\r\n }\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport DeleteButtonConfig from \"Core/Controls/ButtonDelete/Configs/delete-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonDelete/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonDelete/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonDelete/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/ButtonDelete/Templates/ToolBar.html'\r\n\r\nko.templates['Core/Controls/ButtonDelete/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonDelete/Templates/Design'] = DesignTemplate;\r\n\r\nexport class ButtonDelete extends BaseControl {\r\n\tprivate _mainRecordId: number;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, DeleteButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void { \r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.IsDisabledByCondition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar screen = this._form.GetScreen();\r\n\t\tif (screen) {\r\n\t\t\tscreen.Trigger('DELETE_RECORD');\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord) {\r\n\t\t\tthis._model().IsDisabledByCondition = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (value.Data && value.Data.Rights) {\r\n\t\t\tvar enabledCondition = value.Data.Rights.IsDeletingAllowed && value.Data.Rights.IsRecordSecurityOk;\r\n\t\t\tthis._model().IsDisabledByCondition = !enabledCondition;\r\n\t\t}\r\n\t}\r\n\r\n\tSetHideCaption(data: boolean) {\r\n\t\tthis.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n\t}\r\n\r\n\tGetHideCaption(): boolean {\r\n\t\treturn this.HideCaption();\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n\t\t\tthis.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n\t\t\tthis.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n} ","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport EditButtonConfig from \"Core/Controls/ButtonEdit/Configs/edit-button-config.json\";\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonEdit/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/ButtonEdit/Templates/HelpView.html\"\r\nimport DesignTemplate from \"Core/Controls/ButtonEdit/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/ButtonEdit/Templates/ToolBar.html\"\r\n\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonEdit/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonEdit extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, EditButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties()\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger('EDIT_RECORD');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data && value.Data.Rights) {\r\n\t\t\tvar condition = value.Data.Rights.IsEditingAllowed && value.Data.Rights.IsRecordSecurityOk && this.IsEditScreenExist;\r\n\t\t\tthis._enabled(condition);\r\n\t\t}\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport FavoriteButtonConfig from \"Core/Controls/ButtonFavorite/Configs/favorite-button-config.json\";\r\nimport ViewTemplate from \"Core/Controls/ButtonFavorite/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonFavorite/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonFavorite/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonFavorite/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFavorite/Templates/ToolBar\"] = ToolBarTemplate;\r\nexport class ButtonFavorite extends BaseControl {\r\n\tprivate _isFavorite: KnockoutObservable;\r\n\tprivate _isEnabled: KnockoutObservable;\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, FavoriteButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis._isFavorite = ko.observable(false);\r\n\t\tthis._isEnabled = ko.observable(false);\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tvar self = this;\r\n\t\t\tif (this._isEnabled()) {\r\n\t\t\t\tif (self._isFavorite()) {\r\n\t\t\t\t\tUserVarsManager.Instance.RemoveFromFavorites(\r\n\t\t\t\t\t\tscreen.GetRecordId(),\r\n\t\t\t\t\t\tscreen.GetEntityId(),\r\n\t\t\t\t\t\tscreen.GetTableTypeId()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tself._isFavorite(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tUserVarsManager.Instance.AddToFavorites(\r\n\t\t\t\t\t\tscreen.GetRecordId(),\r\n\t\t\t\t\t\tscreen.GetEntityId(),\r\n\t\t\t\t\t\tscreen.GetTableTypeId()\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tself._isFavorite(true);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tNotifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tvar screen = this._form.GetScreen();\r\n\t\tlet isRecordOnScreen = screen.GetRecordId() !== 0;\r\n\t\tthis._isEnabled(isRecordOnScreen);\r\n\r\n\t\tvar isInFavorites = UserVarsManager.Instance.IsInFavorites(\r\n\t\t\tscreen.GetRecordId(),\r\n\t\t\tscreen.GetEntityId(),\r\n\t\t\tscreen.GetTableTypeId()\r\n\t\t);\r\n\t\tthis._isFavorite(isInFavorites);\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" Favorite \";\n// Exports\nexport default code;","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FlowOperationModel} from \"../Response/FlowOperationModel\";\r\nimport * as ko from 'knockout'\r\n\r\nexport class FlowRecordModel {\r\n EntityId:number;\r\n RecordId: number;\r\n TypeId: number;\r\n Id: number;\r\n Icon: IconModel;\r\n Name: string;\r\n FlowOperations: FlowOperationModel[];\r\n FlowOperationsSelectID: number;\r\n FlowOperationsSelect: KnockoutObservable\r\n\r\n constructor() {\r\n this.FlowOperations = [];\r\n this.FlowOperationsSelect = ko.observable(null);\r\n }\r\n Init(){\r\n this.FlowOperationsSelect(_.find(this.FlowOperations, select => select.Id == this.FlowOperationsSelectID ));\r\n }\r\n}","import * as ko from 'knockout'\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {FlowRecordModel} from \"Core/Components/ProgressBar/Models/View/FlowRecordModel\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport type {IDeleteFlowRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IDeleteFlowRecordRequestModel\";\r\nimport type {IUpdateFlowRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IUpdateFlowRecordRequestModel\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\nimport Template from 'Core/Controls/ButtonFollowUp/Templates/FlowFolderView.html';\r\nko.templates['Core/Controls/ButtonFollowUp/Templates/FlowFolderView'] = Template;\r\n\r\nexport class FlowFolder extends Event{\r\n private _isFlowFolder: boolean;\r\n private _flowFolder: KnockoutObservableArray\r\n private _entityId: number;\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this._isFlowFolder = null;\r\n this._flowFolder = ko.observableArray([]);\r\n this._entityId = null;\r\n\r\n this.Trigger('CLOSE_FOLLOW_UP_LIFE_STATUSES');\r\n }\r\n\r\n Init(isFlowFolder:boolean, entityId, flowFolderModel?: FlowFolderModel ){\r\n this._isFlowFolder = isFlowFolder;\r\n\r\n if (this._isFlowFolder){\r\n this._entityId = entityId;\r\n this.FlowFolderInit(flowFolderModel);\r\n }\r\n }\r\n\r\n FlowFolderInit(flowFolderModel: FlowFolderModel){\r\n if (!!flowFolderModel){\r\n _.each(flowFolderModel.FlowItems, item => {\r\n let flowRecordModel = new FlowRecordModel();\r\n flowRecordModel.EntityId = item.EntityId;\r\n flowRecordModel.RecordId = item.RecordId;\r\n flowRecordModel.TypeId = item.TypeId;\r\n flowRecordModel.Id = item.Id;\r\n flowRecordModel.Icon = this.SelectIcon(item.Icon);\r\n flowRecordModel.Name = item.Name;\r\n flowRecordModel.FlowOperationsSelectID = item.FlowOperationId;\r\n\r\n flowRecordModel.FlowOperations = flowFolderModel.FlowOperations;\r\n flowRecordModel.Init();\r\n this._flowFolder.push(flowRecordModel);\r\n })\r\n }\r\n\r\n }\r\n\r\n SelectIcon(model: IconModel): Icon {\r\n if (model && model.Id > 0) {\r\n return new Icon(model);\r\n }\r\n\r\n const defaultIconModel = new IconModel();\r\n\r\n defaultIconModel.Name = 'fa-file';\r\n defaultIconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n defaultIconModel.IsIcon = true;\r\n defaultIconModel.IsImage = false;\r\n\r\n return new Icon(defaultIconModel);\r\n }\r\n\r\n Click(data, event) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n this.Close();\r\n }\r\n\r\n ChangedOperations(value, flowModel, event){\r\n if (event.originalEvent) { //user changed\r\n const params: IUpdateFlowRecordRequestModel = {\r\n EntityId: this._entityId,\r\n FlowRecordId: flowModel.Id,\r\n FlowOperationId: value().Id\r\n }\r\n FlowFolderStore.UpdateFlowRecord(params)\r\n .then(result => result);\r\n }\r\n }\r\n\r\n DeleteFlowFolderItem(flowRecord){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: `${CONFIRMATIONS.DO_YOU_WANT_TO_DELETE}?`,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n })\r\n\r\n const params: IDeleteFlowRecordRequestModel = {\r\n EntityId: this._entityId,\r\n FlowRecordId: flowRecord.Id\r\n }\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n FlowFolderStore.DeleteFlowRecord(params)\r\n .then(()=> {\r\n this._flowFolder.splice(this._flowFolder().findIndex(record => record.Id == flowRecord.Id), 1)\r\n })\r\n .fail(error => {})\r\n })\r\n confirmationDialog.Show();\r\n }\r\n\r\n Close() {\r\n this.Trigger('CLOSE_FOLLOW_UP_LIFE_STATUSES',{data: null})\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/ButtonFollowUp/Templates/FlowFolderView';\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {MemoOperationModel} from \"../Response/MemoOperationModel\";\r\n\r\nexport class MemoRecordModel {\r\n EntityId: number;\r\n RecordId: number;\r\n Memo: KnockoutObservable;\r\n MemoPlaintext?: string;\r\n MemoTranslations: KnockoutObservableArray;\r\n Kseq?: number;\r\n FlowMemosOperations: MemoOperationModel[];\r\n FlowMemosOperationsSelectID: number;\r\n FlowMemosOperationsSelect: KnockoutObservable\r\n\r\n constructor() {\r\n this.Memo = ko.observable(null);\r\n this.MemoTranslations = ko.observableArray([]);\r\n\r\n this.FlowMemosOperations = [];\r\n this.FlowMemosOperationsSelect = ko.observable(null);\r\n }\r\n\r\n Init(){\r\n this.FlowMemosOperationsSelect(_.find(this.FlowMemosOperations, select => select.Id == this.FlowMemosOperationsSelectID ));\r\n }\r\n}","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport _ from \"underscore\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {LABELS, CONFIRMATIONS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {IDeleteMemoRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IDeleteMemoRecordRequestModel\";\r\nimport {FlowFolderMemosModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderMemosModel\";\r\nimport {MemoRecordModel} from \"Core/Components/ProgressBar/Models/View/MemoRecordModel\";\r\nimport {ICreateMemoRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/ICreateMemoRecordRequestModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {IUpdateFlowMemoRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IUpdateFlowMemoRecordRequestModel\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\n\r\nimport AddMemoTemplate from \"Core/Controls/ButtonFollowUp/Templates/AddMemo.html\";\r\nimport MemoItems from 'Core/Controls/ButtonFollowUp/Templates/MemoItems.html';\r\nimport {BlockUI, TranslationManager} from '../Grid/BaseGrid/Index';\r\nimport {IUpdateFlowOperationRecordRequestModel} from \"Core/Components/ProgressBar/Models/Request/IUpdateFlowOperationRecordRequestModel\";\r\nimport {TranslationFieldEditor} from \"../../Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {TranslationModel} from \"../BaseControl/Models/TranslationModel\";\r\nimport {LanguageModel} from \"../BaseControl/Models/LanguageModel\";\r\nimport {GlobalManager, GLOBALS} from \"../../GlobalManager/GlobalManager\";\r\n\r\n\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/AddMemo\"] = AddMemoTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/MemoItems\"] = MemoItems;\r\n\r\nexport class FlowFolderMemos extends Event {\r\n private _modal: Modal;\r\n private _guid: string;\r\n private _memoEditor: any;\r\n private _memo: KnockoutObservable;\r\n private _initialMemo: KnockoutObservable;\r\n private _isEditMode: KnockoutObservable;\r\n private _entityId: number;\r\n private _editMemoEntityId: KnockoutObservable;\r\n private _editMemoIndex: KnockoutObservable;\r\n private _editMemoKseq: KnockoutObservable;\r\n private _oldEditMemo: KnockoutObservable;\r\n private _isMemoTranslatable: boolean;\r\n private _recordId: number;\r\n private _selectedValueId: number;\r\n private _flowFolderMemoArrays: KnockoutObservableArray;\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _labels = LABELS;\r\n private _originalValue: string;\r\n private _oldMemoTranslations: KnockoutObservableArray;\r\n\r\n constructor(flowFolderMemosModel: FlowFolderMemosModel, screenParams: ScreenParamsModel) {\r\n super();\r\n this._guid = Guid.NewGuid();\r\n this._memo = ko.observable(null);\r\n this._initialMemo = ko.observable(null);\r\n this._isEditMode = ko.observable(null);\r\n this._editMemoEntityId = ko.observable(null);\r\n this._editMemoIndex = ko.observable(null);\r\n this._editMemoKseq = ko.observable(null);\r\n this._oldEditMemo = ko.observable(null);\r\n this._isMemoTranslatable = flowFolderMemosModel.IsMemoTranslatable;\r\n this._recordId = screenParams.RecordId;\r\n this._entityId = screenParams.EntityId;\r\n this._flowFolderMemoArrays = ko.observableArray([]);\r\n this._oldMemoTranslations = ko.observableArray([]);\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n this.Trigger('DELETE_FLOW_FOLDER_MEMO_RECORD');\r\n this.Trigger('CREATE_FLOW_FOLDER_MEMO_RECORD');\r\n this.Trigger('CHANGE_FLOW_FOLDER_MEMO_RECORD');\r\n this.FlowFolderMemosInit(flowFolderMemosModel);\r\n }\r\n\r\n GetTemplate() {\r\n return MemoItems;\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n FlowFolderMemosInit(flowFolderMemosModel: FlowFolderMemosModel){\r\n if (!!flowFolderMemosModel){\r\n _.each(flowFolderMemosModel.MemoItems, memoItem => {\r\n let memoRecordModel = new MemoRecordModel();\r\n memoRecordModel.Kseq = memoItem.Kseq;\r\n memoRecordModel.RecordId = memoItem.RecordId;\r\n memoRecordModel.EntityId = memoItem.EntityId;\r\n\r\n memoRecordModel.Memo(memoItem.Memo);\r\n memoRecordModel.MemoTranslations(memoItem.MemoTranslations);\r\n\r\n memoRecordModel.FlowMemosOperationsSelectID = memoItem.FlowMemosOperationId;\r\n memoRecordModel.FlowMemosOperations = memoItem.FlowMemosOperations;\r\n\r\n memoRecordModel.Init();\r\n\r\n this._flowFolderMemoArrays.push(memoRecordModel);\r\n });\r\n }\r\n }\r\n\r\n ShowInModal() {\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'addMemoModal',\r\n width: '60vw',\r\n height: '60vh',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.CloseMemoModal.bind(self, false));\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n ShowInMemoModal() {\r\n this.AddMemoMod();\r\n this.ShowInModal();\r\n\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n let memoTranslations = [], translations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n _.each(translations, translation => {\r\n\r\n const selectedLanguage = TranslationManager.Instance.GetLanguageById(translation.LanguageId);\r\n\r\n let translationModel = new TranslationModel();\r\n translationModel.Translation = translation.Value;\r\n translationModel.Language = new LanguageModel(selectedLanguage.Id, selectedLanguage.Name, selectedLanguage.ShortName, Number(selectedLanguage.Enabled), selectedLanguage.Flag);\r\n translationModel.Selected = desktopLanguage === selectedLanguage.ShortName;\r\n\r\n memoTranslations.push(translationModel);\r\n });\r\n\r\n this._oldMemoTranslations(memoTranslations);\r\n }\r\n\r\n CloseMemoModal(isSave: boolean) {\r\n let newMemo = this._isMemoTranslatable ? this._translationFieldEditor.GetDefaultTranslation().Value : this._memo();\r\n let oldMemo = this._oldEditMemo();\r\n\r\n let currentTranslations = this._translationFieldEditor.GetTranslations(false), translationsHaveChanges = false, oldMemoTranslations = this._oldMemoTranslations();\r\n _.each(currentTranslations, translation => {\r\n if(translation.Value || oldMemoTranslations[currentTranslations.indexOf(translation)].Translation){\r\n if(translation.Value != oldMemoTranslations[currentTranslations.indexOf(translation)].Translation) {\r\n translationsHaveChanges = true;\r\n }\r\n }\r\n });\r\n\r\n if (!isSave && (newMemo !== oldMemo || translationsHaveChanges)){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n if (this._modal) {\r\n this.Trigger('CHANGE_FLOW_FOLDER_MEMO_RECORD');\r\n this._modal.Close();\r\n }\r\n });\r\n confirmationDialog.Show();\r\n\r\n } else {\r\n if (this._modal) {\r\n this.Trigger('CHANGE_FLOW_FOLDER_MEMO_RECORD');\r\n this._modal.Close();\r\n }\r\n }\r\n }\r\n\r\n private GetLanguages() {\r\n if (this._isMemoTranslatable) {\r\n if (this._translationFieldEditor.TranslationItemsList.length == 0) {\r\n this._translationFieldEditor.LoadTranslationItems();\r\n }\r\n const languages = this._translationFieldEditor.TranslationItemsList.map(translation => translation.Language);\r\n const activeLanguage = this._translationFieldEditor.ActiveTranslation.Language;\r\n\r\n return {\r\n List: languages,\r\n Active: activeLanguage\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private OnChangeLanguage(id: number) {\r\n const selectedTranslation = this._translationFieldEditor.GetTranslationById(id);\r\n this._translationFieldEditor.SelectTranslation(selectedTranslation);\r\n\r\n const selectedValue = _.unescape(selectedTranslation.Value());\r\n this._memoEditor.setContent(selectedValue || '');\r\n this._memo(selectedValue);\r\n }\r\n\r\n EditMemo(data: MemoRecordModel) {\r\n this._isEditMode(true);\r\n\r\n this._editMemoEntityId(null);\r\n this._editMemoKseq(null);\r\n this._oldEditMemo(null);\r\n\r\n if (data.Memo){\r\n this._editMemoEntityId(data.EntityId);\r\n this._editMemoKseq(data.Kseq);\r\n this._oldEditMemo(data.Memo());\r\n this._oldMemoTranslations(data.MemoTranslations());\r\n this.SetMemo(data);\r\n }\r\n this.ShowInModal();\r\n }\r\n\r\n AddMemoMod(){\r\n this._isEditMode(false);\r\n this._memo(null);\r\n this._oldEditMemo('');\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/ButtonFollowUp/Templates/AddMemo';\r\n }\r\n\r\n AfterChangeMemo(content) {\r\n this._memo(content);\r\n\r\n const currentValue = this._memo();\r\n\r\n if (this._isMemoTranslatable) {\r\n this._translationFieldEditor.ActiveTranslation.Value(currentValue);\r\n }\r\n }\r\n\r\n AfterInitMemo(editor) {\r\n this._memoEditor = editor;\r\n this._memoEditor.setContent(this._memo() || '');\r\n }\r\n\r\n SetMemo(data) {\r\n if(data) {\r\n this._initialMemo(this._memo());\r\n this._originalValue = data.Memo() && _.unescape(data.Memo()) || '';\r\n\r\n let currentValue = this._originalValue;\r\n\r\n if (this._isMemoTranslatable) {\r\n\r\n if(!this._translationFieldEditor) {\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n }\r\n\r\n const memoTranslations = _.map(data.MemoTranslations(), (memoItem: TranslationModel) => {\r\n return {\r\n LanguageId: memoItem.Language.K_Language,\r\n Value: memoItem.Translation\r\n }\r\n });\r\n\r\n const translation = TranslationManager.Instance.GetTranslation(data.Memo(), memoTranslations);\r\n\r\n currentValue = translation.TranslatedValue || translation.Value;\r\n\r\n this._translationFieldEditor.LoadTranslationItems();\r\n this._translationFieldEditor.SetTranslations(memoTranslations, data.Memo() === null ? '' : data.Memo());\r\n this._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n }\r\n\r\n this._memo(_.unescape(currentValue));\r\n\r\n if (this._memoEditor) {\r\n this._memoEditor.setContent(this._memo() || '');\r\n }\r\n }\r\n }\r\n\r\n GetUnescapeMemo(memo, memoTranslations): string {\r\n const flowMemoTranslations = _.map(memoTranslations(), (memoItem: TranslationModel) => {\r\n return {\r\n LanguageId: memoItem.Language.K_Language,\r\n Value: memoItem.Translation\r\n }\r\n });\r\n\r\n const translation = TranslationManager.Instance.GetTranslation(memo(), flowMemoTranslations);\r\n return _.unescape(translation.TranslatedValue);\r\n }\r\n\r\n GetOptionsMemoTooltip(content, translations){\r\n let isMobile = MobileChecker.IsMobile();\r\n\r\n let options = {};\r\n if (isMobile){\r\n options = {};\r\n } else {\r\n options = {\r\n content: this.GetUnescapeMemo(content, translations),\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x'\r\n };\r\n }\r\n\r\n return options;\r\n }\r\n\r\n get MemoHasChanges() {\r\n return this._memo() !== this._initialMemo();\r\n }\r\n\r\n SaveMemoData(data){\r\n const memo = this._isMemoTranslatable ? this._translationFieldEditor.GetDefaultTranslation().Value : this._memo(),\r\n desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n let memoTranslations = [], translations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n _.each(translations, translation => {\r\n\r\n const selectedLanguage = TranslationManager.Instance.GetLanguageById(translation.LanguageId);\r\n\r\n let translationModel = new TranslationModel();\r\n translationModel.Translation = translation.Value;\r\n translationModel.Language = new LanguageModel(selectedLanguage.Id, selectedLanguage.Name, selectedLanguage.ShortName, Number(selectedLanguage.Enabled), selectedLanguage.Flag);\r\n translationModel.Selected = desktopLanguage === selectedLanguage.ShortName;\r\n\r\n memoTranslations.push(translationModel);\r\n });\r\n\r\n if (this._isEditMode()){\r\n\r\n let params: IUpdateFlowMemoRecordRequestModel = {\r\n EntityId: this._editMemoEntityId(),\r\n Kseq: this._editMemoKseq(),\r\n Memo: memo,\r\n MemoTranslations: memoTranslations\r\n };\r\n this._editMemoIndex(null);\r\n\r\n let currentTranslations = this._translationFieldEditor.GetTranslations(false), translationsHaveChanges = false, oldMemoTranslations = this._oldMemoTranslations();\r\n _.each(currentTranslations, translation => {\r\n if(translation.Value !== oldMemoTranslations[currentTranslations.indexOf(translation)].Translation) {\r\n translationsHaveChanges = true;\r\n }\r\n });\r\n\r\n if (this._oldEditMemo() !== memo || translationsHaveChanges){\r\n BlockUI.Block();\r\n FlowFolderStore.UpdateFlowMemoRecord(params)\r\n .always(()=>BlockUI.Unblock())\r\n .then(data => {\r\n this._editMemoIndex(this._flowFolderMemoArrays().findIndex(record => record.Kseq == this._editMemoKseq()));\r\n _.each(this._flowFolderMemoArrays(), (record, index)=> {\r\n if (index === this._editMemoIndex()){\r\n record.Memo(memo);\r\n record.MemoTranslations(memoTranslations);\r\n }\r\n });\r\n this.CloseMemoModal(true);\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n })\r\n } else {\r\n new Notifier().Warning('No changes');\r\n }\r\n\r\n } else {\r\n\r\n let params: ICreateMemoRecordRequestModel = {\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n Memo: memo,\r\n MemoTranslations: memoTranslations\r\n };\r\n\r\n FlowFolderStore.CreateFlowMemo(params)\r\n .then( data => {\r\n if (data){\r\n BlockUI.Block();\r\n FlowFolderStore.GetFlowMemo({EntityId: this._entityId, Kseq: data})\r\n .always(()=>BlockUI.Unblock())\r\n .then(memoData => {\r\n let memoRecordModel = new MemoRecordModel();\r\n memoRecordModel.RecordId = memoData.RecordId;\r\n memoRecordModel.EntityId = memoData.EntityId;\r\n memoRecordModel.Kseq = memoData.Kseq;\r\n\r\n memoRecordModel.Memo(memoData.Memo);\r\n memoRecordModel.MemoPlaintext = memoData.MemoPlaintext;\r\n memoRecordModel.MemoTranslations(memoData.MemoTranslations);\r\n\r\n memoRecordModel.FlowMemosOperations = memoData.FlowMemosOperations;\r\n memoRecordModel.FlowMemosOperationsSelectID = memoData.FlowMemosOperationId;\r\n\r\n this._flowFolderMemoArrays.unshift(memoRecordModel);\r\n this.CloseMemoModal(true);\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n })\r\n }\r\n\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n })\r\n }\r\n }\r\n\r\n ChangedMemosOperations(value, flowMemoModel, event){\r\n if (event.originalEvent) { //user changed\r\n const params: IUpdateFlowOperationRecordRequestModel = {\r\n EntityId: this._entityId,\r\n Kseq: flowMemoModel.Kseq,\r\n FlowMemosOperationId: value().Id\r\n }\r\n\r\n BlockUI.Block();\r\n FlowFolderStore.UpdateFlowOperationRecord(params)\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n DeleteMemoItem(memoRecord){\r\n const params: IDeleteMemoRecordRequestModel = {\r\n EntityId: memoRecord.EntityId,\r\n Kseq: memoRecord.Kseq\r\n }\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: `${CONFIRMATIONS.DO_YOU_WANT_TO_DELETE}?`,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n FlowFolderStore.DeleteFlowMemo(params)\r\n .then(data => {\r\n this._flowFolderMemoArrays.splice(this._flowFolderMemoArrays().findIndex(record => record.Kseq === params.Kseq), 1);\r\n this.Trigger('DELETE_FLOW_FOLDER_MEMO_RECORD', {data: null});\r\n new Notifier().Success(LABELS.RECORD_DELETED_LABEL);\r\n })\r\n });\r\n confirmationDialog.Show();\r\n }\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {MutationObserverConfig, RepositionModalObserver} from \"Core/Common/RepositionModalObserver\";\r\nimport {LifeStatusGroupEnum, LifeStatusGroups} from \"Core/Common/Enums/LifeStatusGroups\";\r\nimport {PromptDialog, Types} from 'Core/Components/Dialogs/PromptDialog/PromptDialog';\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n\tConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog'\r\n\r\nimport {LifeStatusSimpleModel} from \"./Models/LifestatusSimpleModel\";\r\nimport {FollowUpOptionModel} from \"./Models/FollowUpOptionModel\";\r\nimport {LIFE_STATUS_GROUPS} from \"../../Constant\";\r\n\r\nimport {FlowFolderMemos} from \"Core/Controls/ButtonFollowUp/FlowFolderMemos\";\r\n\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {FlowFolderMemosModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderMemosModel\";\r\nimport {FlowFolder} from \"./FlowFolder\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\n\r\nimport LifeStatuses from \"Core/Controls/ButtonFollowUp/Templates/LifeStatuses.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/LifeStatuses\"] = LifeStatuses;\r\n\r\nexport class FollowUpLifeStatuses extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _options: KnockoutObservableArray;\r\n\tprivate _selectedOption: KnockoutObservable;\r\n\tprivate _childOption: FollowUpOptionModel;\r\n\tprivate _selectedParentOption: KnockoutObservable;\r\n\tprivate _parentOption: FollowUpOptionModel;\r\n\tprivate _caption: KnockoutObservable;\r\n private _clickedChildId: KnockoutObservable;\r\n\tprivate _labels = LABELS;\r\n\tprivate _isFlowFolder: boolean;\r\n\tprivate _isFollowUpDisabled: boolean;\r\n\tprivate _disabledReason: string;\r\n\tprivate _entityId: number;\r\n\tprivate _recordId: number;\r\n\tprivate _retireChildren: boolean;\r\n\tprivate _flowFolder: FlowFolder;\r\n\tprivate _flowFolderMemos: KnockoutObservable;\r\n\tprivate _observer: RepositionModalObserver;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._options = ko.observableArray([]);\r\n\t\tthis._selectedOption = ko.observable(null);\r\n\t\tthis._caption = ko.observable(null);\r\n\t\tthis._selectedParentOption = ko.observable(null);\r\n this._clickedChildId = ko.observable(null);\r\n this._isFlowFolder = null;\r\n\t\tthis._isFollowUpDisabled = null;\r\n\t\tthis._disabledReason = null;\r\n\t\tthis._entityId = null;\r\n\t\tthis._recordId = null;\r\n\t\tthis._retireChildren = false;\r\n\t\tthis._flowFolder = null;\r\n\t\tthis._flowFolderMemos = ko.observable(null);\r\n\t\tthis._observer = null;\r\n\r\n\t\tthis.AddEvent('LIFESTATUS_CHOOSEN');\r\n\t\tthis.AddEvent('PARENT_LIFESTATUS_CHOOSEN');\r\n\t\tthis.AddEvent('CHILD_LIFESTATUS_CHOOSEN');\r\n this.AddEvent('DONE');\r\n\r\n }\r\n\r\n get IsCurrentDisabled(){\r\n\t\treturn this._selectedParentOption() || this._selectedOption().LifeStatuses.CurrentLifeStatus.IsFollowUpDisabled;\r\n\t}\r\n\r\n\tFlowMemoTab(){\r\n\t\tBlockUI.Block();\r\n\t\tFlowFolderStore.GetFlowMemos({EntityId: this._entityId, RecordId: this._recordId})\r\n\t\t\t.always(()=>BlockUI.Unblock())\r\n\t\t\t.then(data => {\r\n\t\t\t\tlet flowFolderMemosModel = new FlowFolderMemosModel();\r\n\r\n\t\t\t\tflowFolderMemosModel.IsMemoTranslatable = data.IsMemoTranslatable;\r\n\t\t\t\tflowFolderMemosModel.MemoItems = data.MemoItemModels;\r\n\r\n\t\t\t\tthis._flowFolderMemos(new FlowFolderMemos(flowFolderMemosModel, {EntityId: this._entityId, RecordId: this._recordId}));\r\n\t\t\t\tthis._flowFolderMemos().On('DELETE_FLOW_FOLDER_MEMO_RECORD', this, (eventArgs)=> {\r\n\t\t\t\t\tif (this._modal){\r\n\t\t\t\t\t\tthis._modal.OneRepositionModal();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\tthis._flowFolderMemos().On('CHANGE_FLOW_FOLDER_MEMO_RECORD', this, (eventArgs)=> {\r\n\t\t\t\t\tif (this._modal){\r\n\t\t\t\t\t\tthis._modal.OneRepositionModal();\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tlet self = this;\r\n\t\tthis._modal = new Modal({\r\n\t\t\tminWidth: 350,\r\n\t\t\tminHeight: 150,\r\n\t\t\tmaxHeight: '85vh',\r\n\t\t\tmaxWidth: '60vw',\r\n\t\t\tcloseOnClick: 'overlay',\r\n\t\t\tblockScroll: true,\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\tonOpen: function () {\r\n\t\t\t\tconst target: HTMLElement = this.wrapper.find('.jBox-content')[0];\r\n\t\t\t\tconst mutationObserverConfig: MutationObserverConfig = {\r\n\t\t\t\t\tattributes: true,\r\n\t\t\t\t\tchildList: true,\r\n\t\t\t\t\tcharacterData: true,\r\n\t\t\t\t\tsubtree: true,\r\n\t\t\t\t}\r\n\t\t\t\tself._observer = new RepositionModalObserver(target, mutationObserverConfig);\r\n\t\t\t}\r\n\t\t}, false);\r\n\t\tthis._modal.One('CLOSE', this, () => { this.Close() });\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\r\n\t}\r\n\r\n\tClose() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._observer && this._observer.Disconnect();\r\n\t\t\tthis._modal.Close();\r\n\t\t\tthis.Off(\"LIFESTATUS_CHOOSEN\");\r\n\t\t\tthis.Off(\"PARENT_LIFESTATUS_CHOOSEN\");\r\n\t\t\tthis.Off(\"CHILD_LIFESTATUS_CHOOSEN\");\r\n\t\t\tthis.Off(\"DONE\");\r\n\t\t\tif (this._selectedParentOption() === this._parentOption){\r\n\t\t\t\tthis._clickedChildId(null);\r\n\t\t\t\tthis._selectedParentOption(null);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tInitFlowFolder(isFlowFolder: boolean, _entityId: number, flowFolderModel?: FlowFolderModel, followUpData?: LifeStatusesGeneralModel){\r\n\t\tthis._isFlowFolder = isFlowFolder;\r\n\r\n\t\tif (followUpData) {\r\n\t\t\tthis._isFollowUpDisabled = followUpData.IsFollowUpDisabled;\r\n\t\t\tthis._disabledReason = followUpData.DisabledReason;\r\n\t\t}\r\n\r\n\t\tif (this._isFlowFolder) {\r\n\t\t\tthis._flowFolder = new FlowFolder();\r\n\t\t\tthis._flowFolder.Init(this._isFlowFolder, this._entityId, flowFolderModel);\r\n\t\t\tthis._flowFolder.On('CLOSE_FOLLOW_UP_LIFE_STATUSES', this, (eventArgs)=> {\r\n\t\t\t\tthis.Close();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tInit(childOption: FollowUpOptionModel, parentOption: FollowUpOptionModel, screenParams: ScreenParamsModel) {\r\n\t\tif (screenParams){\r\n\t\t\tthis._recordId = screenParams.RecordId;\r\n\t\t\tthis._entityId = screenParams.EntityId;\r\n\t\t}\r\n\t\tthis._options([childOption, parentOption]);\r\n\t\tthis._childOption = childOption;\r\n\t\tif (parentOption) {\r\n\t\t\tthis._parentOption = parentOption;\r\n }\r\n\t\tif (this._childOption) {\r\n\t\t\tthis._selectedOption(this._childOption);\r\n\t\t}\r\n\t}\r\n\r\n\tClick(data, event) {\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tSelectCurrent(disable?: boolean) {\r\n\t\tif(disable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.UpdateLifeStatus(this._selectedOption().LifeStatuses.CurrentLifeStatus);\r\n }\r\n\r\n\tPickLifeStatus(lifeStatus: LifeStatusSimpleModel, disable?: boolean) {\r\n\t\tif(disable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (LifeStatusGroups.GetLifeStatusGroup(lifeStatus.Sort) === LifeStatusGroupEnum.Retired) {\r\n\t\t\tthis.CheckRetiredChildrenAndApproval(lifeStatus);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.CheckApprovalAndUpdateLifeStatus(lifeStatus);\r\n\t}\r\n\r\n\tset Caption(value: string) {\r\n\t\tthis._caption(value);\r\n\t}\r\n\r\n\tget Caption():string {\r\n\t\treturn this._caption();\r\n\t}\r\n\r\n\tCheckApprovalAndUpdateLifeStatus(lifeStatus: LifeStatusSimpleModel) {\r\n\t\tconst confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n\t\t\t.replace('{fromstatus}', this._selectedOption().LifeStatuses.CurrentLifeStatus.Name)\r\n\t\t\t.replace('{tostatus}', lifeStatus.Name);\r\n\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: confirmationText,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.UpdateLifeStatus(lifeStatus);\r\n\t\t\t});\r\n\r\n\t\tif (lifeStatus.Id === this._selectedOption().LifeStatuses.CurrentLifeStatus.Id) {\r\n\t\t\tthis.UpdateLifeStatus(lifeStatus);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst approvalName = lifeStatus.ApprovalName || 'Off';\r\n\t\tswitch (approvalName) {\r\n\t\t\tcase 'Off':\r\n\t\t\t\tthis.UpdateLifeStatus(lifeStatus);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'Password':\r\n\t\t\t\tconst passwordPrompt = new PromptDialog(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tType: Types.Password,\r\n\t\t\t\t\t\tLabel: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n\t\t\t\t\t\tValue: '',\r\n\t\t\t\t\t\tMinHeight: 200,\r\n\t\t\t\t\t\tRequired: true,\r\n\t\t\t\t\t\tRequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n\t\t\t\t\t\tShowNotification: false,\r\n\t\t\t\t\t\tCloseOnSave: false\r\n\t\t\t\t\t});\r\n\t\t\t\tpasswordPrompt.Show();\r\n\r\n\t\t\t\tpasswordPrompt.On('Save', this,\r\n\t\t\t\t\t(eventargs) => {\r\n\t\t\t\t\t\tconst password = eventargs.data.value;\r\n\t\t\t\t\t\tif (password) {\r\n\t\t\t\t\t\t\tBlockUI.Block();\r\n\r\n\t\t\t\t\t\t\tFollowUpStore.ConfirmPassword({password: password})\r\n\t\t\t\t\t\t\t\t.always(() => {\r\n\t\t\t\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.then((response) => {\r\n\t\t\t\t\t\t\t\t\tif (response) {\r\n\t\t\t\t\t\t\t\t\t\tpasswordPrompt.Hide();\r\n\t\t\t\t\t\t\t\t\t\tthis.UpdateLifeStatus(lifeStatus, password);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\tpasswordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.fail(error => {\r\n\t\t\t\t\t\t\t\t\tnew Notifier().Failed(error);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Yes/No':\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tCheckRetiredChildrenAndApproval(lifeStatus: LifeStatusSimpleModel) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst entityId = this._entityId || (this._selectedOption().LifeStatuses.ActionSubjectRecord\r\n\t\t\t&& this._selectedOption().LifeStatuses.ActionSubjectRecord.EntityId);\r\n\t\tconst recordId = this._recordId || (this._selectedOption().LifeStatuses.ActionSubjectRecord\r\n\t\t\t&& this._selectedOption().LifeStatuses.ActionSubjectRecord.RecordId);\r\n\r\n\t\tFollowUpStore.CheckRetiredChildren({\r\n\t\t\tParentEntityId: entityId,\r\n\t\t\tParentRecordId: recordId\r\n\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tif (!data.ChildrenToRetireExist) {\r\n\t\t\t\t\tthis.CheckApprovalAndUpdateLifeStatus(lifeStatus);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst retiredStatuses = data.RetiredStatuses.join(', ');\r\n\t\t\t\tconst confirmationText = CONFIRMATIONS.ALL_CHILD_RECORDS_WILL_BE_MOVED_TO_THE_RETIRED_STATUSES\r\n\t\t\t\t\t.replace('{RetiredStatuses}', retiredStatuses);\r\n\r\n\t\t\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\t\tText: confirmationText,\r\n\t\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\t\t\tTextDecline: LABELS.NO\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tthis._retireChildren = data.ChildrenToRetireExist;\r\n\t\t\t\t\t\tthis.CheckApprovalAndUpdateLifeStatus(lifeStatus);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnew Notifier().Failed(error);\r\n\t\t\t});\r\n\t}\r\n\r\n\tUpdateLifeStatus(lifeStatus: LifeStatusSimpleModel, password?) {\r\n\t\t//Current follow up functionality was disabled according to CYB-15142\r\n\t\t/*if (this._parentOption) {\r\n\t\t\tif (this._selectedParentOption() === this._parentOption) {\r\n\t\t\t\tthis.Trigger('PARENT_LIFESTATUS_CHOOSEN', { Option: this._parentOption, LifeStatus: lifeStatus, Password: password });\r\n\t\t\t\tthis._modal.Close();\r\n\t\t\t} else {\r\n\t\t\t\tif (lifeStatus.Sort === LIFESTATUS_GROUPS.RETIRED) {\r\n\t\t\t\t\tthis._selectedParentOption(this._parentOption);\r\n\t\t\t\t\tthis._clickedChildId(lifeStatus.Id);\r\n\t\t\t\t\tthis.Trigger('CHILD_LIFESTATUS_CHOOSEN',\r\n\t\t\t\t\t\t{ Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.Trigger('LIFESTATUS_CHOOSEN', { Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password });\r\n\t\t\t\t\tthis._modal.Close();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.Trigger('LIFESTATUS_CHOOSEN', { Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password });\r\n\t\t\tthis._modal.Close();\r\n\t\t}*/\r\n\r\n\t\tthis.Trigger('LIFESTATUS_CHOOSEN', { Option: this._selectedOption(), LifeStatus: lifeStatus, Password: password, RetireChildren: this._retireChildren });\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/ButtonFollowUp/Templates/LifeStatuses';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { ActionModel } from \"Core/Controls/Kanban/Models/StatusModel\";\r\nimport { LifeStatusSimpleModel } from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\n\r\nexport class FollowUpBaseRecordModel {\r\n\tconstructor(password?: string) {\r\n\t\tthis.ConfirmationPassword = password;\r\n\t}\r\n\t\r\n\t@deserialize\r\n LifeStatusId: number;\r\n\r\n CurrentLifeStatus: LifeStatusSimpleModel;\r\n\r\n LifeStatusSort?: number;\r\n\r\n LifeStatusName?: string;\r\n\r\n LifeStatusNoActionNode: boolean;\r\n\r\n Actions?: Array;\r\n\r\n ConfirmationPassword?: string;\r\n\r\n RetireChildren?: boolean;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {LifeStatusesModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesModel\";\r\n\r\nexport class FollowUpOptionModel {\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserializeAs(LifeStatusesModel)\r\n\tLifeStatuses: LifeStatusesModel;\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { ActionSubjectRecordModel } from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {FollowUpBaseRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpBaseRecordModel\";\r\n\r\nexport class FollowUpParentRecordModel extends FollowUpBaseRecordModel {\r\n\tconstructor(password?: string) {\r\n\t\tsuper(password);\r\n\t}\r\n\tParentActionSubject?: ActionSubjectRecordModel;\r\n}\r\n","import * as ko from 'knockout';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {ActionModel} from \"Core/Controls/Kanban/Models/StatusModel\";\r\nimport {FollowUpParentRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel \";\r\nimport {FollowUpBaseRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpBaseRecordModel\";\r\n\r\nexport class FollowUpRecordModel extends FollowUpBaseRecordModel {\r\n constructor(password?: string) {\r\n super(password);\r\n }\r\n\r\n FollowUpParentRecord?: FollowUpParentRecordModel;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class SubjectActionModel {\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n KindId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { LifeStatusesModel } from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesModel\";\r\nimport { SubjectActionModel } from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\n\r\nexport class LifeStatusesGeneralModel {\r\n\t@deserializeAs(LifeStatusesModel)\r\n\tParent: LifeStatusesModel;\r\n\r\n\t@deserializeAs(LifeStatusesModel)\r\n Child: LifeStatusesModel;\r\n\r\n @deserializeAs(Boolean)\r\n IsManyActions: Boolean;\r\n\r\n @deserializeAs(SubjectActionModel)\r\n SubjectAction: SubjectActionModel;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class ActionCheckListItemDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslation: string;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n Value: any;\r\n\r\n @deserialize\r\n Required: boolean;\r\n\r\n @deserialize\r\n ValField: number;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {ActionCheckListItemDto} from \"./ActionCheckListItemDto\";\r\n\r\nexport class ActionCheckListDto {\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n LifeStatusName: string;\r\n\r\n @deserialize\r\n LifeStatusMemo: string;\r\n\r\n @deserialize\r\n LifeStatusMemoTranslation: string;\r\n\r\n @deserialize\r\n LifeStatusApprovalName: string;\r\n\r\n @deserialize\r\n LifeStatusNoActionNode: boolean;\r\n\r\n @deserialize\r\n LifeStatusMultipleActions: boolean;\r\n\r\n @deserialize\r\n LifeStatusTranslatedName: string;\r\n\r\n @deserialize\r\n LifeStatusSort: number;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n\r\n @deserializeAs(ActionCheckListItemDto)\r\n CheckItems: ActionCheckListItemDto[];\r\n\r\n constructor() {\r\n this.CheckItems = [];\r\n }\r\n}","import {deserializeAs} from 'libs/cerialize';\r\n\r\nimport {LifeStatusSimpleModel} from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {ActionCheckListDto} from \"Core/Components/ActionCheckList/Models/Dto/ActionCheckListDto\";\r\n\r\nexport class LifeStatusesModel {\r\n @deserializeAs(LifeStatusSimpleModel)\r\n CurrentLifeStatus: LifeStatusSimpleModel;\r\n\r\n @deserializeAs(LifeStatusSimpleModel)\r\n LifeStatuses: Array;\r\n\r\n @deserializeAs(ActionSubjectRecordModel)\r\n ActionSubjectRecord: ActionSubjectRecordModel;\r\n\r\n @deserializeAs(ActionCheckListDto)\r\n CheckLists: Array;\r\n}","import * as ko from 'knockout';\r\nimport { deserialize } from 'libs/cerialize';\r\n\r\nexport class LifeStatusSimpleModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n Sort: number;\r\n\r\n @deserialize\r\n NoActionNode: boolean;\r\n\r\n @deserialize\r\n MultipleActions: boolean;\r\n\r\n\t@deserialize\r\n\tApprovalName: string;\r\n\r\n\t@deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n Memo: string;\r\n\r\n @deserialize\r\n MemoTranslation: string;\r\n\r\n @deserialize\r\n NodeTypeId: number;\r\n\r\n @deserialize\r\n NodeTypeName: string;\r\n\r\n @deserialize\r\n FollowupModeId: number;\r\n\r\n @deserialize\r\n FollowupModeName: string;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n\r\n @deserialize\r\n StepsScreenId: number;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {CheckRetiredChildrenResponseModel} from \"Core/Controls/ButtonFollowUp/Models/CheckRetiredChildrenResponseModel\";\r\n\r\nexport interface ICheckRetiredChildrenRequestModel {\r\n\tParentEntityId: number;\r\n\tParentRecordId: number;\r\n}\r\n\r\nexport class FollowUpStore {\r\n static GetStatuses(params: { EntityId: number; RecordId: number; ActionEntityId?: number}): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.FOLLOWUP.GET_NEXT_LIFESTATUSES,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tconst model = GenericDeserialize(data.ResultObject, LifeStatusesGeneralModel);\r\n\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ConfirmPassword(params: any): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.FOLLOWUP.CONFIRM_PASSWORD,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data.IsSuccessfull);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CheckRetiredChildren(params: ICheckRetiredChildrenRequestModel): P.Promise {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.FOLLOWUP.CHECK_RETIRED_CHILDREN,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport ListButtonConfig from \"Core/Controls/ButtonListScreen/Configs/list-button-config.json\";\r\n\r\nimport 'Core/Controls/ButtonListScreen/Templates/Edit.html';\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonListScreen/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonListScreen/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonListScreen/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonListScreen/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonListScreen/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonListScreen extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ListButtonConfig);\r\n\r\n\t\tthis._enabled = ko.observable(this.IsListScreenExist);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n } \r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger(\"SHOW_LIST_SCREEN\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport {SelectUserStore} from 'Core/Controls/SelectUser/Stores/SelectUserStore';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport Config from \"Core/Controls/ButtonPlan/config.json\";\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonPlan/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/ButtonPlan/Templates/HelpView.html\"\r\nimport DesignTemplate from \"Core/Controls/ButtonPlan/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/ButtonPlan/Templates/ToolBar.html\"\r\nimport { TableStore } from '../../Common/Stores/TableStore';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\nimport { CONTROL_TYPES, GridStore, NOTIFICATIONS, Notifier, ScreenTypes } from '../Grid/BaseGrid/Index';\r\nimport { RecordLinker } from '../../Components/RecordLinker/RecordLinker';\r\nimport { RenderModes } from '../../Constant';\r\n\r\n\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/GridRow\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPlan/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonPlan extends BaseControl {\r\n\tprivate _businessRoleId: KnockoutObservable;\r\n\tprivate _exampleAppointmentId: KnockoutObservable;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis._businessRoleId = ko.observable(0);\r\n\t\tthis._exampleAppointmentId = ko.observable(0);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\r\n this._renderMode.subscribe((newValue)=>{ \r\n if(newValue === RenderModes.GridRow && this._model().SubFlowTypeId != 0){ \r\n this._isVisible(this._gridRow.RecordTypeId == this._model().SubFlowTypeId);\r\n }\r\n });\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n this._enabled(true);\r\n\r\n this.AddEvent('SELECT_USERS_BY_BUSINESS_ROLE');\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n this.ShowAgendaScreen();\r\n\t\t}\r\n\t}\r\n\r\n async ShowAgendaScreen(){\r\n BlockUI.Block();\r\n let agenda = await TableStore.Get({ TableName: \"AGENDA\" });\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetScreenByScreenType(agenda.Id, ScreenTypes.SpecialScreen);\r\n\r\n if (screen.ScreenDoesNotExistError) {\r\n Notifier.Failed(screen.ScreenDoesNotExistErrorMessage);\r\n }else{\r\n if (this._businessRoleId()) {\r\n const selectUserByBusinessRoleModel = await SelectUserStore.GetSelectUsersByBusinessRole(agenda.Id, Number(this._businessRoleId()));\r\n screen.Trigger('SELECT_USERS_BY_BUSINESS_ROLE', { SelectUserByBusinessRoleModel: selectUserByBusinessRoleModel });\r\n }\r\n\r\n if (this._exampleAppointmentId()) {\r\n const recordExists = await RecordStore.RecordExists({ TableId: agenda.Id, RecordId: this._exampleAppointmentId() });\r\n if (recordExists) {\r\n screen.ExampleAppointmentId = this._exampleAppointmentId();\r\n }\r\n }\r\n\r\n screen.On('RECORD_CREATED', this, async (eventArgs)=>{\r\n await this.LinkAgenda(eventArgs.data.RecordId,agenda.Id);\r\n await this.SwitchToSubFlowStatus();\r\n this.Screen.Refresh();\r\n screen.Close();\r\n });\r\n\r\n screen.ShowInModal();\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n get SubjectEntityId(): number {\r\n if(this.IsInGrid){\r\n return this._gridRow.EntityId;\r\n };\r\n\r\n return this.Screen.GetEntityId();\r\n }\r\n\r\n get SubjectRecordId(): number {\r\n if(this.IsInGrid){\r\n return this._gridRow.RecordId;\r\n };\r\n\r\n return this.Screen.GetRecordId();\r\n }\r\n\r\n get IsInGrid(): boolean {\r\n return this._parentControl && this._parentControl.GetType() === CONTROL_TYPES.Grid;\r\n }\r\n\r\n async LinkAgenda(agendaRecordId: number, agendaEntityId: number){\r\n await RecordLinker.LinkRecord({ MainTableId: this.SubjectEntityId, MainRecordId: this.SubjectRecordId, LinkedTableId: agendaEntityId, LinkedRecordId: agendaRecordId })\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n Notifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n .replace('{entity1}', this.Screen.GetEntityName())\r\n .replace('{entity2}', 'AGENDA'));\r\n }\r\n });\r\n }\r\n\r\n async SwitchToSubFlowStatus(){\r\n let subFlowId = this.GeneralProperties.GetPropertyValue(\"SubFlow\");\r\n if(subFlowId && !isNaN(subFlowId.Value)){\r\n await GridStore.SwitchToNextStatus({ EntityId: this.SubjectEntityId, RecordId: this.SubjectRecordId, NextStatusId: subFlowId.Value});\r\n } \r\n }\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('General', 'BusinessRole', this._businessRoleId);\r\n this.AssignProperty('General', 'ExampleAppointment', this._exampleAppointmentId);\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n const propertyValue = property[propertyName].hasOwnProperty('Value')\r\n ? property[propertyName].Value\r\n : property[propertyName];\r\n propertyHolder(propertyValue);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\nimport { CHECKBOX_PROPERTIES } from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport SpecialScreenButtonConfig from \"Core/Controls/ButtonSpecialScreen/Configs/special-screen-button-config.json\";\r\n\r\nimport DesignTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/Toolbar.html\";\r\nimport ViewTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonSpecialScreen/Templates/HelpView.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSpecialScreen/Templates/View\"] = ViewTemplate;\r\n\r\nexport class ButtonSpecialScreen extends BaseControl {\r\n\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, SpecialScreenButtonConfig);\r\n\r\n\t\tthis._enabled = ko.observable(this.IsSpecialScreenExist || this.IsStepsScreenExist);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n this.ApplyProperties();\r\n\t}\r\n\r\n SetHideCaption(data: boolean) {\r\n this.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n }\r\n\r\n GetHideCaption(): boolean {\r\n return this.HideCaption();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n this.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tOnClick() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else if(this._enabled()) {\r\n\t\t\tconst screen = this._form.GetScreen();\r\n\t\t\tconst screenType = this.IsSpecialScreenExist ? ScreenTypes.SpecialScreen : ScreenTypes.StepsScreen;\r\n\r\n\t\t\tscreen.Trigger(\"SHOW_SPECIAL_SCREEN\", { ScreenType: screenType });\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"
    \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { TypeScreen } from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { ButtonTemplateStore, IMergeAndSaveRequestModel, IGetTemplatesRequestModel } from 'Core/Controls/ButtonTemplate/Stores/ButtonTemplateStore';\r\nimport { ComplexControl } from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport { RequiredFieldModel } from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { FIELD_TYPES, TABLE_TYPES, CONTROL_TYPES, SYSTEM_FIELD_NAMES } from 'Core/Constant';\r\nimport { TemplateModel } from 'Core/Controls/ButtonTemplate/Models/TemplateModel';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { Grid } from 'Core/Controls/Grid/Grid';\r\nimport { EVENTS as TYPE_SCREEN_EVENTS } from 'Core/Screens/TypeScreen/Events';\r\nimport { ComposeMail } from 'Core/Controls/Mail/ComposeMail';\r\nimport { RecordLinker } from 'Core/Components/RecordLinker/RecordLinker';\r\nimport { MailStore } from '../Mail/Stores/MailStore';\r\nimport { MailTabModel } from '../Mail/Models/MailTabModel';\r\nimport { COMPOSER_EVENTS } from 'Core/Controls/Mail/Events';\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { AttachedFieldModel } from '../BaseControl/Models/AttachedFieldModel';\r\nimport { RecordStore } from 'Core/Common/Stores/RecordStore';\r\nimport { LABELS, NOTIFICATIONS, CONFIRMATIONS } from 'Core/Components/Translation/Locales';\r\nimport { JBoxDropDown } from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport { ZIndexManager } from \"Core/Common/ZIndexManager\";\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { DEFAULT_ICONS } from \"Core/Constant\";\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport TemplateButtonConfig from \"Core/Controls/ButtonTemplate/Configs/template-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonTemplate/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/ButtonTemplate/Templates/HelpView.html';\r\nimport DesignTemplate from 'Core/Controls/ButtonTemplate/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/ButtonTemplate/Templates/ToolBar.html';\r\nimport GridRowTemplate from 'Core/Controls/ButtonTemplate/Templates/GridRow.html';\r\nimport DropdownTemplate from 'Core/Controls/ButtonTemplate/Templates/Dropdown.html';\r\nimport DropdownSubMenuTemplate from 'Core/Controls/ButtonTemplate/Templates/DropdownSubMenu.html';\r\nimport {MobileChecker} from \"../../Common/MobileChecker\";\r\n\r\nko.templates['Core/Controls/ButtonTemplate/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/GridRow'] = GridRowTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonTemplate/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nconst INTERNAL_MAIL_CLIENT = 'Internal';\r\n\r\nexport class ButtonTemplate extends ComplexControl {\r\n\tprivate _typeScreen: TypeScreen;\r\n\tprivate _items: KnockoutObservableArray;\r\n\tprivate _selectedItem: KnockoutObservable;\r\n\tprivate _hasData: KnockoutObservable;\r\n\tprivate _mails: KnockoutObservableArray;\r\n\tprivate _button: HTMLElement;\r\n\tprivate _buttonId: string;\r\n\r\n private _config: any;\r\n\tprivate _tooltip: KnockoutObservable;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\tprivate _dropDownSubmenu: JBoxDropDown;\r\n\tprivate _currentHtmlTemplate:\tKnockoutObservable;\r\n\tprivate _isMobile: MobileChecker;\r\n\tprivate _dropDownOpened: boolean;\r\n\tprivate _dropDownSubmenuOpen: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, TemplateButtonConfig);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._selectedItem = ko.observable(null);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._mails = ko.observableArray([]);\r\n\t\tthis._buttonId = Guid.NewGuid();\r\n this._currentHtmlTemplate = ko.observable(null);\r\n this._border = ko.observable(false);\r\n\t\tthis._tooltip = ko.observable(LABELS.GENERATE_DOCUMENT_FROM_TEMPLATE);\r\n\t\tthis._isMobile = MobileChecker.IsMobile();\r\n\t\tthis._dropDownOpened = false;\r\n\t\tthis._dropDownSubmenuOpen = false;\r\n this._style = ko.computed(() => {\r\n \treturn {\r\n\t\t\t\tbackgroundColor: this._backgroundColor(),\r\n\t\t\t\tcolor: this._color(),\r\n\t\t\t\tborder: this._border() ? `1px` : '0',\r\n\t\t\t\tborderColor: this._borderColor(),\r\n\t\t\t\tborderStyle: 'initial'\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.ButtonTemplate));\r\n this.ApplyProperties();\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('TEMPLATE', FIELD_TYPES.Document, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\t}\r\n\r\n\tprivate InitButtonTemplateDropdown(target) {\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: target,\r\n\t\t\tbindTarget: target,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"js-button-template-dropdown\",\r\n\t\t\t\tcloseOnClick: this._isMobile ? 'body' : true,\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tpointer: \"center\",\r\n\t\t\t\tmaxWidth: 380,\r\n\t\t\t\tmaxHeight: this._isMobile ? 170 : undefined,\r\n\t\t\t\tonCloseComplete: () => {\r\n\t\t\t\t\tthis._dropDownOpened = false;\r\n\t\t\t\t},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"center\",\r\n\t\t\t\t\ty: \"bottom\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: DropdownTemplate as any });\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitButtonTemplateDropdownSubmenu(target) {\r\n\t\tthis._dropDownSubmenu = new JBoxDropDown({\r\n\t\t\ttarget: target,\r\n\t\t\tbindTarget: target,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"js-button-template-dropdown-submenu\",\r\n\t\t\t\tcloseOnClick: true,\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tcloseOnMouseleave: true,\r\n\t\t\t\tpointer: \"top\",\r\n\t\t\t\tmaxWidth: 300,\r\n\t\t\t\tmaxHeight: this._isMobile ? 170 : undefined,\r\n\t\t\t\tonCloseComplete: () => {\r\n\t\t\t\t\tif (!this._isMobile) {\r\n\t\t\t\t\t\t$(\"body\").off('mousemove.jBoxButtonTemplate');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._dropDownSubmenuOpen = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: this._isMobile ? \"left\" : \"right\",\r\n\t\t\t\t\ty: \"center\"\r\n\t\t\t\t},\r\n\t\t\t\toutside: 'x',\r\n\t\t\t\toffset: { x: 0, y: 0 }\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDownSubmenu.SetContent({ content: DropdownSubMenuTemplate as any });\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {\r\n\t\t\t\tif (!this._isMobile) {\r\n\t\t\t\t\t$(\"body\").on(\"mousemove.jBoxButtonTemplate\", (event) => {\r\n\t\t\t\t\t\tif (!event.target.closest(\".dropdown-submenu-button-template\") && !event.target.closest(\".js-button-template-dropdown-submenu\")) {\r\n\t\t\t\t\t\t\tthis.HideDropdownSubmenu();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tMergeAndSave(\r\n\t\ttemplate: TemplateModel,\r\n\t\tdestinationEntityId: number,\r\n\t\tdestinationTypeId: number,\r\n\t\tsaveIntoSubject: boolean = false,\r\n\t\tmail: MailTabModel,\r\n\t\tsaveDestinationTypeId: boolean = false\r\n\t) {\r\n\t\tlet requestModel: IMergeAndSaveRequestModel = {\r\n\t\t\tSubjectEntityId: this.SubjectEntityId,\r\n\t\t\tSubjectRecordId: this.SubjectRecordId,\r\n\t\t\tRecordId: template.Id,\r\n\t\t\tControlId: this.GetControlId(),\r\n\t\t\tDestinationEntityId: destinationEntityId,\r\n\t\t\tDestinationTypeId: destinationTypeId,\r\n\t\t\tSaveDestinationTypeId: saveDestinationTypeId,\r\n\t\t\tSaveIntoSubject: saveIntoSubject,\r\n\t\t\tMailAddress: mail ? mail.Login : null,\r\n\t\t\tClient: mail ? mail.Client : null\r\n\t\t};\r\n\r\n\t\tif (mail && (mail.Client === null || mail.Client === '')){\r\n\t\t\tmail.Client = INTERNAL_MAIL_CLIENT;\r\n\t\t}\r\n\r\n\r\n\t\tBlockUI.Block({ Target: this._button });\r\n\t\tButtonTemplateStore\r\n\t\t\t.MergeAndSave(requestModel)\r\n\t\t\t.fail(err => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(this._button))\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (this._parentControl) {\r\n\t\t\t\t\tif (this._parentControl instanceof Grid) {\r\n\t\t\t\t\t\tthis._parentControl.LoadData();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (saveDestinationTypeId) {\r\n\t\t\t\t\t\tthis.LoadData();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (mail && mail.Client === INTERNAL_MAIL_CLIENT) {\r\n\t\t\t\t\t_.each(result.ResultObject, (item: any) => {\r\n\t\t\t\t\t\tlet composeMail = new ComposeMail({ SubjectEntityId: this.SubjectEntityId, SubjectRecordId: this.SubjectRecordId, SubjectTypeId: this.SubjectTypeId });\r\n\r\n\t\t\t\t\t\t_.each(item.Recipients, (item: any) => {\r\n\t\t\t\t\t\t\tif (item.Mail) {\r\n\t\t\t\t\t\t\t\tcomposeMail.AddMailWithRecord(item.Mail, item.TableId, item.RecordId);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tcomposeMail.AddBody(item.Content);\r\n\t\t\t\t\t\tcomposeMail.AddScreen(this._form.GetScreen());\r\n\t\t\t\t\t\tif(item.CC){\r\n\t\t\t\t\t\t\t_.each(item.CC.split(','), (cc: string) => composeMail.AddMailCC('', cc))\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(item.BCC){\r\n\t\t\t\t\t\t\t_.each(item.BCC.split(','), (bcc: string) => composeMail.AddMailBCC('', bcc))\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tcomposeMail.AddSubject(item.Subject || template.Name);\r\n\t\t\t\t\t\tcomposeMail.ShowInModal(mail.MailConnectionId);\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._form.GetScreen().Refresh();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tSelectTemplate(template: TemplateModel, mail: MailTabModel) {\r\n\t\tif (this._parentControl && this._parentControl.GetType() === CONTROL_TYPES.Grid) {\t\t\t\r\n\t\t\tlet destinationEntityId = this.GetDestinationEntityId(template);\r\n\r\n\t\t\tif (destinationEntityId) {\r\n\t\t\t\tif (mail) {\r\n\t\t\t\t\tthis.MergeAndSave(template, destinationEntityId, 0, false, mail);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (template.EntityTypeId) {\r\n\t\t\t\t\t\tthis.MergeAndSave(template, destinationEntityId, template.EntityTypeId, false, mail);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.ShowTypeScreen(template, mail, destinationEntityId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.MergeAndSave(template, 0, 0, true, mail);\r\n\t\t}\r\n\t}\r\n\r\n\tGetDestinationEntityId(template: TemplateModel){\r\n\t\tif(this._gridRow){\r\n\t\t\treturn template.DestinationEntityId;\r\n\t\t}\r\n\t\tvar gridSubjectField = _.find(this._parentControl.GetModel().Fields, (field) => field.EntityTypeName !== EntityTypes[EntityTypes.Link] );\r\n\t\treturn gridSubjectField?.EntityId;\r\n\t}\r\n\r\n\tShowTypeScreen(template: TemplateModel, mail: MailTabModel, entityId: number){\r\n\t\tvar typeScreen = new TypeScreen(entityId, 0, false, false);\r\n\t\ttypeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED,\r\n\t\t\tthis,\r\n\t\t\t(eventArgs) => {\r\n\t\t\t\tthis.MergeAndSave(template, entityId, eventArgs.data.TypeId, false, mail, true);\r\n\t\t\t});\r\n\r\n\t\ttypeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND,\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.MergeAndSave(template, entityId, 0, false, mail);\r\n\t\t\t});\r\n\r\n\t\ttypeScreen.Show();\r\n\t}\t\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.SubjectRecordId !== 0 || this._gridRow) {\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tget SubjectRecordId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.RecordId;\r\n\t\t}\r\n\t\treturn this._form.GetScreen().GetRecordId();\r\n\t}\r\n\r\n\tget SubjectEntityId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.EntityId;\r\n\t\t}\r\n\t\treturn this._form.GetScreen().GetEntityId();\r\n\t}\r\n\r\n\tget SubjectTypeId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.TypeId;\r\n\t\t}\r\n\t\treturn this._form.GetScreen().GetTableTypeId();\r\n\t}\r\n\r\n\tget ContextEntityId(): number {\r\n\t\tif(this._gridRow){\r\n\t\t\treturn this._gridRow.EntityId;\r\n\t\t}\r\n\t\treturn this._parentControl && this._parentControl.GetType() === CONTROL_TYPES.Grid\r\n\t\t? this._parentControl.GetModel().EntityId\r\n\t\t: this._form.GetScreen().GetEntityId();\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tconst requestModel: IGetTemplatesRequestModel = {\r\n\t\t\tSubjectEntityId: this.SubjectEntityId,\r\n\t\t\tObjectEntityId: this.ContextEntityId,\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\r\n\t\tButtonTemplateStore\r\n\t\t\t.GetData(requestModel)\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet selectedTemplate = this.GeneralProperties.GetPropertyValue('DocumentTemplate');\r\n\t\t\t\t\r\n\t\t\t\tif(selectedTemplate){\r\n\t\t\t\t\tdata = [_.find(data, (template)=> template.Id === selectedTemplate)];\r\n\t\t\t\t}\t\t\t\t\r\n\r\n\t\t\t\tthis._items(data);\r\n\t\t\t\tthis._hasData(this._items().length > 0);\r\n\t\t\t});\r\n\r\n\r\n\t\tMailStore.GetMailTabs()\r\n\t\t\t.then((tabs: any) => {\r\n\t\t\t\t_.map(tabs, (tab: any) => {\r\n\t\t\t\t\tlet mail = new MailTabModel();\r\n\t\t\t\t\tmail.Login = tab.Login;\r\n\t\t\t\t\tmail.MailConnectionId = tab.MailConnectionId;\r\n\t\t\t\t\tmail.Client = tab.Client;\r\n\t\t\t\t\tthis._mails.push(mail);\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.always(() => this._button? BlockUI.Unblock(): null)\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n\r\n\tShowTemplateHelp(data, event): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tevent.stopPropagation();\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t}\r\n\r\n\t\tlet target = event.target.closest(\".template-btn\");\r\n\r\n\t\tif (this._dropDown) {\r\n\t\t\tif (this._dropDownOpened) {\r\n\t\t\t\tthis._dropDown.Close();\r\n\t\t\t\tthis._dropDownOpened = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis._dropDown.Open(target);\r\n\t\t\t\tthis._dropDownOpened = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.InitButtonTemplateDropdown(target);\r\n\t\t\tthis._dropDown.Open(target);\r\n\t\t\tthis._dropDownOpened = true;\r\n\t\t}\r\n\t}\r\n\r\n\tShowDropdownSubmenu(element, template): void {\r\n\t\tlet target = element.closest(\".dropdown-submenu-button-template\");\r\n\r\n\t\tif (this._isMobile) {\r\n\t\t\tif (this._dropDownSubmenu) {\r\n\t\t\t\tif (this._dropDownSubmenuOpen) {\r\n\t\t\t\t\tthis._dropDownSubmenu.Close();\r\n\t\t\t\t\tthis._dropDownSubmenuOpen = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._dropDownSubmenu.Open(element);\r\n\t\t\t\t\tthis._dropDownSubmenuOpen = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.InitButtonTemplateDropdownSubmenu(element);\r\n\t\t\t\tthis._dropDownSubmenu.Open(element);\r\n\t\t\t\tthis._dropDownSubmenuOpen = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._currentHtmlTemplate(template);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this._dropDownSubmenu) {\r\n\t\t\tthis._dropDownSubmenu.Open(target);\r\n\t\t} else {\r\n\t\t\tthis.InitButtonTemplateDropdownSubmenu(target);\r\n\t\t\tthis._dropDownSubmenu.Open(target);\r\n\t\t}\r\n\r\n\t\tthis._currentHtmlTemplate(template);\r\n\t}\r\n\r\n\tHideDropdownSubmenu(): void {\r\n\t\tif (this._dropDownSubmenu instanceof JBoxDropDown) {\r\n\t\t\tthis._dropDownSubmenu.Close();\r\n\t\t}\r\n\t}\r\n\r\n\tget Items(): KnockoutObservableArray {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tget Mails(): KnockoutObservableArray {\r\n\t\treturn this._mails;\r\n\t}\r\n\r\n\tAfterRender(el: Array) {\r\n\t\tthis._button = document.getElementById(this._buttonId);\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tasync MergeAndSaveForGridRow(){\r\n\r\n\t\tBlockUI.Block();\r\n\t\tlet record = await RecordStore.GetRecord({ TableId: this.SubjectEntityId, RecordId: this.SubjectRecordId });\r\n\t\tBlockUI.Unblock();\r\n\r\n\t\tlet template = _.first(this._items());\r\n\t\tlet mail = _.first(this._mails());\r\n\t\tif(!template){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet nameField = _.find(record.Fields, (field: any) => field.FieldName === 'NAME');\r\n\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.GENERATE_DOCUMENT_FROM_TEMPLATE.replace('{templateName}', template.Name).replace('{recordName}', nameField.FieldValue || ''),\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\tTextDecline: LABELS.NO\r\n\t\t});\r\n\r\n\t\tif(template.TypeName != 'html'){\r\n\t\t\tmail = null;\r\n\t\t}\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, ()=>this.SelectTemplate(template, mail));\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n} ","// Module\nvar code = \" Template \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \" \";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class TemplateModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeId: number;\r\n\r\n\t@deserialize\r\n\tDestinationEntityId: number;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {TemplateModel} from 'Core/Controls/ButtonTemplate/Models/TemplateModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nexport interface IMergeAndSaveRequestModel {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tRecordId: number;\r\n\tControlId: number;\r\n\tDestinationEntityId: number;\r\n\tDestinationTypeId: number;\r\n\tSaveDestinationTypeId: boolean;\r\n\tSaveIntoSubject: boolean;\r\n\tMailAddress: string;\r\n\tClient: string;\r\n}\r\n\r\nexport interface IGetTemplatesRequestModel {\r\n\tSubjectEntityId: number;\r\n\tObjectEntityId: number;\r\n\tControlId: number;\r\n}\r\n\r\nexport class ButtonTemplateStore {\r\n\tstatic GetData(params: IGetTemplatesRequestModel): P.Promise> {\r\n\t\tvar deferredResult = P.defer>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\tcacheRequest: true,\r\n\t\t\t\turl: URL.CONTROLS.BUTTON_TEMPLATE.GET_TEMPLATES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultObject, TemplateModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MergeAndSave(params: IMergeAndSaveRequestModel): P.Promise {\r\n\t\tvar deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.BUTTON_TEMPLATE.MERGE_AND_SAVE,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tif (data.IsServerError) {\r\n\t\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\t\t\tnotifier.Failed(data.ErrorMessage);\r\n\t\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","export const EVENTS = {\r\n BACK_TO_DATA_SELECTOR: 'BACK_TO_DATA_SELECTOR',\r\n SHOW_FUNCTION_DESIGNER: 'SHOW_FUNCTION_DESIGNER',\r\n CLOSED_FUNCTION_DESIGNER: 'CLOSED_FUNCTION_DESIGNER',\r\n\tDEFAULT_VALUE_CHANGED: 'DEFAULT_VALUE_CHANGED',\r\n METHOD_SELECTED: 'METHOD_SELECTED',\r\n EDIT_QUERY: 'EDIT_QUERY',\r\n SHOW_FUNCTION_DESIGNER_REQUESTED: 'SHOW_FUNCTION_DESIGNER_REQUESTED'\r\n}","import { Modal } from \"Core/Common/Modal\";\r\nimport * as ko from 'knockout';\r\nimport Template from 'Core/Controls/CanvasDesigner/Templates/MethodsList.html';\r\nimport {CanvasItemModel} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport {Event} from 'Core/Common/Event'\r\nimport {EVENTS} from \"../Shapes/Views/ParamView/Events\";\r\n\r\nko.templates['Core/Controls/CanvasDesigner/Templates/MethodsList'] = Template;\r\n\r\nexport class MethodsList extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _methods: Array;\r\n\r\n\tconstructor(methods: Array) {\r\n\t\tsuper();\r\n\t\tthis._methods = methods;\r\n\t\tthis.AddEvent(EVENTS.METHOD_SELECTED);\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tlet modal = new Modal({\r\n\t\t\twidth: '350',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\r\n\t\tthis._modal = modal\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(this, modal.Wrapper);\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tClose(){\r\n\t\tif(this._modal){\r\n\t\t\tthis._modal.Close();\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/CanvasDesigner/Templates/MethodsList';\r\n\t}\r\n\r\n\tAfterRender(){}\r\n\r\n\tSelectMethod(item: CanvasItemModel){\r\n\t\tthis.Trigger(EVENTS.METHOD_SELECTED, { Id: item.Id })\r\n\t}\r\n}","// Module\nvar code = \"
    Name
    \";\n// Exports\nexport default code;","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nDia.Link.define('cyberThing.Arrow', {\r\n\ttype: 'cyberThing.Arrow',\r\n\trouter: {\r\n\t\tname: 'normal'\r\n\t},\r\n\tconnector: {\r\n\t\tname: 'normal'\r\n\t},\r\n\tattrs: {\r\n\t\t'.marker-source': {\r\n\t\t\td: 'M 10 0 L 0 5 L 10 10 z',\r\n\t\t\tstroke: 'transparent',\r\n\t\t\tfill: '#222138',\r\n\t\t\ttransform: 'scale(0.001)'\r\n\t\t},\r\n\t\t'.marker-target': {\r\n\t\t\td: 'M 10 0 L 0 5 L 10 10 z',\r\n\t\t\tstroke: 'transparent',\r\n\t\t\tfill: '#222138',\r\n\t\t\ttransform: 'scale(1)'\r\n\t\t},\r\n\t\t'.connection': {\r\n\t\t\tstroke: '#222138',\r\n\t\t\tstrokeDasharray: '0',\r\n\t\t\tstrokeWidth: 1,\r\n\t\t\tfill: 'none'\r\n\t\t},\r\n\t\t'.connection-wrap': {\r\n\t\t\tfill: 'none'\r\n\t\t}\r\n\t},\r\n\ttoolMarkup: [\r\n\t\t'',\r\n '',\r\n\t\t'',\r\n\t\t'',\r\n\t\t'Remove link.',\r\n\t\t'',\r\n\t\t''\r\n\t].join('')\r\n});","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Image.define('cyberThing.DecoratedRect',\r\n\t{\r\n\t\ttype: 'cyberThing.DecoratedRect',\r\n\t\tsize: { width: 53, height: 42 },\r\n\t\tattrs: {\r\n\t\t\timage: {\r\n\t\t\t\twidth: 53,\r\n\t\t\t\theight: 42,\r\n\t\t\t\t'xlink:href': './assets/image-icon1.svg'\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\ttext: '',\r\n\t\t\t\t'font-family': 'Roboto Condensed',\r\n\t\t\t\t'font-weight': 'Normal',\r\n\t\t\t\t'font-size': 9,\r\n\t\t\t\tdisplay: '',\r\n\t\t\t\tstroke: '#000',\r\n\t\t\t\t'stroke-width': 0,\r\n\t\t\t\t'fill': '#222138'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.DataSelector',\r\n\t{\r\n\t\ttype: 'cyberThing.DataSelector',\r\n\t\tsize: { width: 220, height: 710 }\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Table',\r\n\t{\r\n\t\ttype: 'cyberThing.Table',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Trigger',\r\n\t{\r\n\t\ttype: 'cyberThing.Trigger',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.JSFunction',\r\n\t{\r\n\t\ttype: 'cyberThing.JSFunction',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.APIMethod',\r\n\t{\r\n\t\ttype: 'cyberThing.APIMethod',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.CSharpFunction',\r\n\t{\r\n\t\ttype: 'cyberThing.CSharpFunction',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.devs.Model.define('cyberThing.Param', {\r\n\tports: {\r\n\t\tgroups: {\r\n\t\t\t'in': {\r\n\t\t\t\tmarkup: '',\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'.port-body': {\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tstrokeWidth: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'.port-label': {\r\n\t\t\t\t\t\tfontSize: 11,\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tfontWeight: 800\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tlabel: {\r\n\t\t\t\t\tposition: {\r\n\t\t\t\t\t\tname: 'left',\r\n\t\t\t\t\t\targs: {\r\n\t\t\t\t\t\t\ty: 0\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\ttype: 'in'\r\n\t\t\t},\r\n\t\t\t'out': {\r\n\t\t\t\tmarkup: '',\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'.port-body': {\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tstrokeWidth: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'.port-label': {\r\n\t\t\t\t\t\tfontSize: 11,\r\n\t\t\t\t\t\tfill: '#61549C',\r\n\t\t\t\t\t\tfontWeight: 800\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tlabel: {\r\n\t\t\t\t\tposition: {\r\n\t\t\t\t\t\tname: 'right',\r\n\t\t\t\t\t\targs: {\r\n\t\t\t\t\t\t\ty: 0\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\ttype: 'out'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Source',\r\n\t{\r\n\t\ttype: 'cyberThing.Source',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Destination',\r\n\t{\r\n\t\ttype: 'cyberThing.Destination',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\n\r\nshapes.basic.Rect.define('cyberThing.Group',\r\n\t{\r\n\t\ttype: 'cyberThing.Group',\r\n\t\tattrs: {\r\n\t\t\trect: {\r\n\t\t\t\tstroke: 'none',\r\n\t\t\t\t'fill-opacity': 0.3\r\n\t\t\t},\r\n\t\t\ttext: {\r\n\t\t\t\tfill: '#383838'\r\n\t\t\t}\r\n\t\t},\r\n\t\ttoolMarkup: ['',\r\n\t\t\t'',\r\n\t\t\t'',\r\n\t\t\t'Remove',\r\n\t\t\t'',\r\n\t\t\t''].join(''),\r\n\t}\r\n);","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/DecoratedRect';\r\n\r\nvar iconTemplate = V('');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass DecoratedRectView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.DecoratedRectView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.vel.append(iconTemplate.clone());\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Table';\r\n\r\nvar template = V('</g>');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass TableView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.TableView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(template.clone());\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet toggleIcon = '\\uf062';\r\n\t\tlet propertyIcons = '';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ttoggleIcon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.attrs.IsSearchExisting){\r\n\t\t\tpropertyIcons += '\\uf069';\r\n\t\t}\r\n\r\n\t\tif (this.model.attributes.attrs.UseMatching) {\r\n\t\t\tpropertyIcons += '\\uf24e';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.icons': {\r\n\t\t\t\t'ref-x': 0.9,\r\n\t\t\t\t'ref-y': 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\ttext: propertyIcons\r\n\t\t\t},\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: toggleIcon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\n\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Trigger';\r\n\r\nvar template = V('<g class=\"rotatable\"><g class=\"scalable\"><rect/></g><text class=\"shape-label\"/><text class=\"toggle-icon fa\"/><title/></g>');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass TriggerView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvar padding = { top: 25, left: 10, right: 20, bottom: 10 };\r\n\r\njoint.shapes.cyberThing.TriggerView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(template.clone());\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/JSFunction';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nconst _labels = LABELS;\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' +\r\n\t\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>` +\r\n\t\t'<text class=\"toggle-icon fa\"/><title/>' +\r\n\t\t'</g>');\r\n}\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass JSFunctionView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.JSFunctionView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.recordId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.template = getTemplate();\r\n\t\tthis.vel.append(this.template);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.isCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/APIMethod';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nconst _labels = LABELS;\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' +\r\n\t\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>` +\r\n\t\t'<text class=\"toggle-icon fa\"/><title/>' +\r\n\t\t'</g>');\r\n}\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass APIMethodView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.APIMethodView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.template = getTemplate();\r\n\t\tthis.vel.append(this.template);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.recordId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/CSharpFunction';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nconst _labels = LABELS;\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' +\r\n\t\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>` +\r\n\t\t'<text class=\"toggle-icon fa\"/><title/>' +\r\n\t\t'</g>');\r\n}\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass CSharpFunctionView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.CSharpFunctionView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 15;\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.template = getTemplate();\r\n\t\tthis.vel.append(this.template);\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.recordId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icon = '\\uf062';\r\n\r\n\t\tif(this.model.attributes.attrs.IsCollapsed){\r\n\t\t\ticon = '\\uf063';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.toggle-icon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 0,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n});","const Palette_945d60 = '#945d60';\r\nconst Palette_383838 = '#383838';\r\nexport enum TextColour {\r\n\tSource = Palette_945d60,\r\n\tDestination = Palette_945d60,\r\n\tTable = Palette_383838,\r\n\tTrigger = Palette_383838,\r\n\tJSFunction = Palette_383838,\r\n\tCSharpFunction = Palette_383838,\r\n\tAPIMethod = Palette_383838,\r\n\tParam = '#fff'\r\n}","const Num_16 = 16;\r\nconst Num_18 = 18;\r\nexport enum FontSize {\r\n\tSource = Num_16,\r\n\tDestination = Num_16,\r\n\tTable = Num_18,\r\n\tTrigger = Num_18,\r\n\tJSFunction = Num_18,\r\n\tAPIMethod = Num_18,\r\n\tCSharpFunction = Num_18,\r\n\tParam = 13\r\n}","const Palette_945d60 = '#945d60';\r\nconst Palette_CCCCCC = '#CCCCCC';\r\nexport enum BackgroundColour {\r\n\tSource = Palette_945d60,\r\n\tDestination = Palette_945d60,\r\n\tTable = Palette_CCCCCC,\r\n\tGroup = Palette_CCCCCC,\r\n\tTrigger = Palette_CCCCCC,\r\n\tJSFunction = Palette_CCCCCC,\r\n\tCSharpFunction = Palette_CCCCCC,\r\n\tAPIMethod = Palette_CCCCCC,\r\n\tParam = '#EAC67A'\r\n}","const Palette_383838 = '#383838';\r\nexport enum BorderColour {\r\n\tSource = Palette_383838,\r\n\tDestination = Palette_383838,\r\n\tTable = Palette_383838,\r\n\tTrigger = Palette_383838,\r\n\tJSFunction = Palette_383838,\r\n\tAPIMethod = Palette_383838,\r\n\tCSharpFunction = Palette_383838,\r\n\tParam = '#A1ACB2',\r\n\tGroup = Palette_383838\r\n}","const Num_190 = 190;\r\nconst Num_205 = 205;\r\nexport enum CanvasShapeWidth {\r\n\tZone = Num_205,\r\n\tNode = Num_190,\r\n\tParam = 160,\r\n\tFunctionNode = 355,\r\n\tFunctionZone = 375,\r\n\tSource = Num_205,\r\n\tDestination = Num_205,\r\n\tTrigger = Num_190,\r\n\tJSFunction = Num_190,\r\n\tCSharpFunction = Num_190,\r\n\tTable = Num_190\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\n\r\nimport { ICanvasItemSizeObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemSizeObject';\r\nimport { IPorts } from 'Core/Controls/CanvasDesigner/Interfaces/IPorts';\r\nimport { ICanvasItemPositionObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject';\r\nimport { IOriginalCanvasItemSize } from 'Core/Controls/CanvasDesigner/Interfaces/IOriginalCanvasItemSize';\r\nimport { TextColour } from 'Core/Controls/CanvasDesigner/Enums/TextColour';\r\nimport { FontSize } from 'Core/Controls/CanvasDesigner/Enums/FontSize';\r\nimport { BackgroundColour } from 'Core/Controls/CanvasDesigner/Enums/BackgroundColour';\r\nimport { CanvasModelState } from 'Core/Controls/CanvasDesigner/Enums/CanvasModelState';\r\nimport { BorderColour } from 'Core/Controls/CanvasDesigner/Enums/BorderColour';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nimport {\r\n\tCanvasItemModel,\r\n\tCanvasLinkModel,\r\n\tCanvasModel,\r\n\tCanvasIconModel,\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\n\r\nfunction wrapText({\r\n\ttext,\r\n\twrapWidth,\r\n\tresultWidth,\r\n\twrapHeight,\r\n\tattributes\r\n}: {\r\n\ttext: string;\r\n\twrapWidth: number;\r\n\tresultWidth: number;\r\n\twrapHeight: number;\r\n\tattributes: joint.attributes.NativeSVGAttributes;\r\n}) {\r\n\tif(!text){\r\n\t\treturn text;\r\n\t}\r\n\tconst wrappedText = joint.util.breakText(text, { width: wrapWidth, height: wrapHeight }, attributes);\r\n\tif (text !== wrappedText) {\r\n\t\treturn `${joint.util.breakText(text, { width: resultWidth, height: wrapHeight }, attributes)}...`;\r\n\t}\r\n\treturn text;\r\n}\r\n\r\nexport class BasicCanvasItemViewModel {\r\n\tapiPackageId: number;\r\n\tid: number | string;\r\n\treplicationId: string;\r\n\trecordId: number;\r\n\tguid: string;\r\n\ttype: string;\r\n\tsize: ICanvasItemSizeObject;\r\n\tdefaultSize: ICanvasItemSizeObject;\r\n\tattrs: any;\r\n\tports: IPorts;\r\n\tposition: ICanvasItemPositionObject;\r\n\tangle: number;\r\n\tz: number;\r\n\tstate: number;\r\n\tnewlyCreated: boolean;\r\n\tinPorts: Array<string>;\r\n\toutPorts: Array<string>;\r\n\tsocketType: string;\r\n\tsort: number\r\n\tname: string;\r\n\ttranslatedName: string;\r\n\toriginalName: string;\r\n\tprotocolId: number;\r\n\tshapeId: number;\r\n\tshapeName: string;\r\n\tsideId: number;\r\n\tsideName: string;\r\n\tshapeSize: number;\r\n\tcollapsible: boolean;\r\n\ttoggled: boolean = false;\r\n\toriginalSize: IOriginalCanvasItemSize = null;\r\n\tgeneralProperties: any;\r\n\thidden: boolean = false;\r\n\ttabsArePresent: boolean = false;\r\n\ticon: CanvasIconModel;\r\n\ticonSize: ICanvasItemSizeObject;\r\n\tprotocolName: string;\r\n\tdefaultValue: string;\r\n\tproperties: string;\r\n\r\n\tconstructor(model: CanvasItemModel, defaultSize?: ICanvasItemSizeObject) {\r\n\t\tthis.id = model.Guid;\r\n\t\tthis.replicationId = model.ReplicationId;\r\n\t\tthis.recordId = model.Id;\r\n\t\tthis.guid = model.Guid;\r\n\t\tthis.type = `cyberThing.${model.TypeName}`;\r\n\t\tthis.size = defaultSize;\r\n\t\tthis.defaultSize = defaultSize;\r\n\t\tthis.originalName = model.Name;\r\n\t\tthis.position = { 'x': model.X, 'y': model.Y };\r\n\t\tthis.sort = model.Sort;\r\n\t\tthis.angle = 0;\r\n\t\tthis.z = model.Z;\r\n\t\tthis.state = model.State;\r\n\t\tthis.name = model.Name;\r\n\t\tthis.translatedName = model.TranslatedName;\r\n\t\tthis.protocolId = model.ProtocolId;\r\n\t\tthis.shapeId = model.ShapeId;\r\n\t\tthis.sideId = model.SideId;\r\n\t\tthis.shapeName = model.ShapeName;\r\n\t\tthis.sideName = model.SideName;\r\n\t\tthis.shapeSize = model.Size\r\n\t\tthis.newlyCreated = true;\r\n\t\tthis.collapsible = model.Collapsible;\r\n\t\tthis.icon = model.Icon;\r\n\t\tthis.attrs = this.GetDefaultAttrs(model);\r\n\t\tthis.protocolName = model.ProtocolName;\r\n\t\tthis.defaultValue = model.DefaultValue;\r\n\t\tthis.properties = model.Properties;\r\n\r\n\t\tconst properties = JSON.parse(this.properties);\r\n\r\n\t\tthis.apiPackageId = model.APIPackageId;\r\n\t}\r\n\r\n\tprivate GetDefaultAttrs(model) {\r\n\r\n\t\tconst initialName = model.TranslatedName || model.Name;\r\n\t\tlet name = initialName;\r\n\t\tconst hasIcon = model.Icon && model.Icon.IsImage || model.Icon && model.Icon.IsIcon;\r\n\r\n\t\tconst fontSettings = {\r\n\t\t\t\"font-size\": FontSize[model.TypeName],\r\n\t\t\t\"font-family\": \"Roboto Condensed\",\r\n\t\t\t\"font-weight\": 500\r\n\t\t};\r\n\r\n\t\tif (model.TypeName === CANVAS_TYPES.SOURCE || model.TypeName === CANVAS_TYPES.DESTINATION) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 110 : 135,\r\n\t\t\t\tresultWidth: hasIcon ? 95 : 120,\r\n\t\t\t\twrapHeight: 20,\r\n\t\t\t\tattributes: fontSettings\r\n\t\t\t});\r\n\t\t} else if (\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.TABLE ||\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.TRIGGER ||\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.JS_FUNCTION ||\r\n\t\t\tmodel.TypeName === CANVAS_TYPES.CSHARP_FUNCTION\r\n\t\t) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 115 : 145,\r\n\t\t\t\tresultWidth: hasIcon ? 100 : 130,\r\n\t\t\t\twrapHeight: 25,\r\n\t\t\t\tattributes: fontSettings\r\n\t\t\t});\r\n\t\t} else if (model.TypeName === CANVAS_TYPES.PARAM) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 105 : 130,\r\n\t\t\t\tresultWidth: hasIcon ? 95 : 120,\r\n\t\t\t\twrapHeight: 20,\r\n\t\t\t\tattributes: { // from css class \"label\"\r\n\t\t\t\t\t\"font-size\": 13,\r\n\t\t\t\t\t\"font-family\": '\"Open Sans\", sans-serif',\r\n\t\t\t\t\t\"font-weight\": 300\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (model.TypeName === CANVAS_TYPES.GROUP) {\r\n\t\t\tname = wrapText({\r\n\t\t\t\ttext: initialName,\r\n\t\t\t\twrapWidth: hasIcon ? 110 : 135,\r\n\t\t\t\tresultWidth: hasIcon ? 95 : 120,\r\n\t\t\t\twrapHeight: 20,\r\n\t\t\t\tattributes: { ...fontSettings, \"font-size\": 14 }\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttitle: { text: `${initialName}, ${model.Id}` },\r\n\t\t\t\".icons\": {\r\n\t\t\t\t\"text\": \"\",\r\n\t\t\t\t\"fill\": \"black\"\r\n\t\t\t},\r\n\t\t\t\".shape-label\":\r\n\t\t\t{\r\n\t\t\t\t\"fill\": TextColour[model.TypeName],\r\n\t\t\t\t\"text\": name,\r\n\t\t\t\t...fontSettings,\r\n\t\t\t\t\"stroke-width\": 0,\r\n\t\t\t\t\"y-alignment\": \"middle\"\r\n\t\t\t},\r\n\t\t\t\".\":\r\n\t\t\t{\r\n\t\t\t\t\"data-tooltip-position\": \"left\",\r\n\t\t\t\t\"data-tooltip-position-selector\": \".joint-stencil\",\r\n\r\n\t\t\t},\r\n\t\t\t\".body\":\r\n\t\t\t{\r\n\t\t\t\t\"stroke\": BorderColour[model.TypeName],\r\n\t\t\t\t\"fill\": BackgroundColour[model.TypeName],\r\n\t\t\t\t\"rx\": 0,\r\n\t\t\t\t\"ry\": 0,\r\n\t\t\t\t\"stroke-width\": 0.5,\r\n\t\t\t\t\"stroke-dasharray\": \"0\",\r\n\t\t\t\t\"shape-type\": model.ShapeId,\r\n\t\t\t\t\"protocol\": model.ProtocolId,\r\n\t\t\t\t\"size\": model.Size\r\n\t\t\t},\r\n\t\t\t\"rect\":\r\n\t\t\t{\r\n\t\t\t\t\"stroke\": BorderColour[model.TypeName],\r\n\t\t\t\t\"fill\": BackgroundColour[model.TypeName],\r\n\t\t\t\t\"width\": 30,\r\n\t\t\t\t\"height\": 50,\r\n\t\t\t\t\"stroke-width\": 0.5,\r\n\t\t\t\t\"stroke-dasharray\": \"0\"\r\n\t\t\t},\r\n\t\t\t'.tool-options': {\r\n\t\t\t\t'data-tooltip-class-name': 'small',\r\n\t\t\t\t'data-tooltip': initialName,\r\n\t\t\t\t'data-tooltip-position': 'left'\r\n\t\t\t},\r\n\r\n\t\t};\r\n\t}\r\n}","export class Utils {\r\n\tpublic static GetRandomArbitrary(min, max){\r\n\t\treturn Math.random() * (max - min) + min;\r\n\t};\r\n}","import { BasicCanvasItemViewModel } from 'Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel';\r\nimport { CanvasItemModel, CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { ICanvasItemPositionObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject';\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class SourceViewModel extends BasicCanvasItemViewModel {\r\n\r\n\tparent: number | string = 0;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\tattrs: any;\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.SOURCE], height: 420 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(30, 60);\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.EndPointUrl){\r\n\t\t\t\tthis.attrs.EndPointUrl = jsonProperties.EndPointUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.CallbackUrl){\r\n\t\t\t\tthis.attrs.CallbackUrl = jsonProperties.CallbackUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientId){\r\n\t\t\t\tthis.attrs.ClientId = jsonProperties.ClientId;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientSecret){\r\n\t\t\t\tthis.attrs.ClientSecret = jsonProperties.ClientSecret;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.SecretKey){\r\n\t\t\t\tthis.attrs.SecretKey = jsonProperties.SecretKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Login){\r\n\t\t\t\tthis.attrs.Login = jsonProperties.Login;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Password){\r\n\t\t\t\tthis.attrs.Password = jsonProperties.Password;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Division){\r\n\t\t\t\tthis.attrs.Division = jsonProperties.Division;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.QueryString){\r\n\t\t\t\tthis.attrs.QueryString = jsonProperties.QueryString;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from 'Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel';\r\nimport { CanvasItemModel, CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { ICanvasItemPositionObject } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject';\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class DestinationViewModel extends BasicCanvasItemViewModel {\r\n\r\n\tparent: number | string = 0;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\tattrs: any;\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.DESTINATION], height: 420 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(30, 60);\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.EndPointUrl){\r\n\t\t\t\tthis.attrs.EndPointUrl = jsonProperties.EndPointUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.CallbackUrl){\r\n\t\t\t\tthis.attrs.CallbackUrl = jsonProperties.CallbackUrl;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientId){\r\n\t\t\t\tthis.attrs.ClientId = jsonProperties.ClientId;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ClientSecret){\r\n\t\t\t\tthis.attrs.ClientSecret = jsonProperties.ClientSecret;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.SecretKey){\r\n\t\t\t\tthis.attrs.SecretKey = jsonProperties.SecretKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Login){\r\n\t\t\t\tthis.attrs.Login = jsonProperties.Login;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Password){\r\n\t\t\t\tthis.attrs.Password = jsonProperties.Password;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.Division){\r\n\t\t\t\tthis.attrs.Division = jsonProperties.Division;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { CanvasItemModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { JsonHubProtocol } from \"@microsoft/signalr\";\r\n\r\nexport class TableViewModel extends BasicCanvasItemViewModel {\r\n\tattrs: any;\r\n\tisCollapsed: boolean;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { 'width': CanvasShapeWidth['Node'], 'height': 30 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && !_.isNull(jsonProperties.Rappid) && !_.isUndefined(jsonProperties.Rappid) && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.UseMatching) {\r\n\t\t\t\tthis.attrs.UseMatching = jsonProperties.UseMatching;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.SkipCondition) {\r\n\t\t\t\tthis.attrs.SkipCondition = jsonProperties.SkipCondition;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.IsCheckOwnerProfile) {\r\n\t\t\t\tthis.attrs.IsCheckOwnerProfile = jsonProperties.IsCheckOwnerProfile;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.AddDaysToStart) {\r\n\t\t\t\tthis.attrs.AddDaysToStart = jsonProperties.AddDaysToStart;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.AddDaysToEnd) {\r\n\t\t\t\tthis.attrs.AddDaysToEnd = jsonProperties.AddDaysToEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.ODataFilter) {\r\n\t\t\t\tthis.attrs.ODataFilter = jsonProperties.ODataFilter;\r\n\t\t\t}\r\n\r\n\t\t\tif (jsonProperties && jsonProperties.ExcludeCancelled) {\r\n\t\t\t\tthis.attrs.ExcludeCancelled = jsonProperties.ExcludeCancelled;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {\r\n\t\t}\r\n\t}\r\n}","export const PORT_ATTRIBUTES = {\r\n\t\"groups\":\r\n\t{\r\n\t\t\"in\":\r\n\t\t{\r\n\t\t\t\"markup\": \"<circle class=\\\"port-body\\\" r=\\\"10\\\"/>\",\r\n\t\t\t\"attrs\":\r\n\t\t\t{\r\n\t\t\t\t\".port-body\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"strokeWidth\": 0,\r\n\t\t\t\t\t\"stroke\": \"#000\",\r\n\t\t\t\t\t\"r\": 10,\r\n\t\t\t\t\t\"magnet\": true\r\n\t\t\t\t},\r\n\t\t\t\t\".port-label\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fontSize\": 11,\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"fontWeight\": 800\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"label\":\r\n\t\t\t{\r\n\t\t\t\t\"position\": {\r\n\t\t\t\t\t\"name\": \"left\",\r\n\t\t\t\t\t\"args\": {\r\n\t\t\t\t\t\t\"y\": 0\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"type\": \"in\",\r\n\t\t\t\"position\": {\r\n\t\t\t\t\"name\": \"left\"\r\n\t\t\t}\r\n\t\t},\r\n\t\t\"out\":\r\n\t\t{\r\n\t\t\t\"markup\": \"<circle class=\\\"port-body\\\" r=\\\"10\\\"/>\",\r\n\t\t\t\"attrs\":\r\n\t\t\t{\r\n\t\t\t\t\".port-body\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"strokeWidth\": 0,\r\n\t\t\t\t\t\"stroke\": \"#000\",\r\n\t\t\t\t\t\"r\": 10,\r\n\t\t\t\t\t\"magnet\": true\r\n\t\t\t\t},\r\n\t\t\t\t\".port-label\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"fontSize\": 11,\r\n\t\t\t\t\t\"fill\": \"#5e738b\",\r\n\t\t\t\t\t\"fontWeight\": 800\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"label\":\r\n\t\t\t{\r\n\t\t\t\t\"position\":\r\n\t\t\t\t{\r\n\t\t\t\t\t\"name\": \"right\",\r\n\t\t\t\t\t\"args\": {\r\n\t\t\t\t\t\t\"y\": 0\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t\"type\": \"out\",\r\n\t\t\t\"position\": {\r\n\t\t\t\t\"name\": \"right\"\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t\"items\": [\r\n\t\t{ \"id\": \"in1\", \"group\": \"in\", \"attrs\": { \".port-label\": { \"text\": \"\" } } },\r\n\t\t{ \"id\": \"out\", \"group\": \"out\", \"attrs\": { \".port-label\": { \"text\": \"\" } } }\r\n\t]\r\n};","export const SIDES = {\r\n\tIN: 'IN',\r\n\tOUT: 'OUT'\r\n}","import { BasicCanvasItemViewModel } from './BasicCanvasItemViewModel';\r\nimport { CanvasItemModel, CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { PORT_ATTRIBUTES } from 'Core/Controls/CanvasDesigner/Constants/PortAttributes';\r\nimport { SIDES } from 'Core/Controls/CanvasDesigner/Constants/Sides';\r\nimport { SHAPES } from 'Core/Controls/CanvasDesigner/Constants/Shapes';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\n\r\nexport class ParamViewModel extends BasicCanvasItemViewModel {\r\n\r\n\tparent: number | string = 0;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\trelatedIconId: string;\r\n\tchildSocketsIds: Array<number> = [];\r\n\tattrs: any;\r\n\tports: any;\r\n\tinPorts: Array<string> = [];\r\n\toutPorts: Array<string> = [];\r\n\r\n\tuseSubKey: boolean;\r\n\tfilledFromField: number;\r\n\tfilledFromTable: number;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { 'width': CanvasShapeWidth['Param'], 'height': 30 });\r\n\r\n\t\tthis.useSubKey = false;\r\n\r\n\t\tthis.z = Utils.GetRandomArbitrary(80, 100);\r\n\t\tthis.ports = PORT_ATTRIBUTES;\r\n\r\n\t\tif (model.SideName === SIDES.IN) {\r\n\t\t\tthis.inPorts.push('');\r\n\t\t}\r\n\r\n\t\tif (model.SideName === SIDES.OUT) {\r\n\t\t\tthis.outPorts.push('');\r\n\t\t}\r\n\r\n\t\tif (model.ShapeName === SHAPES.LINK_FIELD) {\r\n\t\t\tthis.attrs.rect.fill = '#B8C4CC';\r\n\t\t}\r\n\r\n\t\tthis.filledFromField = model.FilledFromField;\r\n\t\tthis.filledFromTable = model.FilledFromTable;\t\t\r\n\t\tthis.InitProperties(model.Properties)\r\n\t}\r\n\r\n\tSetPorts(type, port): void {\r\n\t\tthis[`${type}Ports`].push(port);\r\n\t}\r\n\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties && jsonProperties.UseSubKey){\r\n\t\t\t\tthis.useSubKey = jsonProperties.UseSubKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsRecordIdentifier){\r\n\t\t\t\tthis.attrs.IsRecordIdentifier = jsonProperties.IsRecordIdentifier;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchBySubKey){\r\n\t\t\t\tthis.attrs.IsSearchBySubKey = jsonProperties.IsSearchBySubKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.UseSubKey){\r\n\t\t\t\tthis.attrs.UseSubKey = jsonProperties.UseSubKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.FileLocation){\r\n\t\t\t\tthis.attrs.FileLocation = jsonProperties.FileLocation;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.UsePrimaryKey){\r\n\t\t\t\tthis.attrs.UsePrimaryKey = jsonProperties.UsePrimaryKey;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.ImageFileLocation){\r\n\t\t\t\tthis.attrs.ImageFileLocation = jsonProperties.ImageFileLocation;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.FilledFrom){\r\n\t\t\t\tthis.attrs.FilledFrom = jsonProperties.FilledFrom;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","export const SHAPES = {\r\n\tDESTINATION_DB: 'DestinationDB',\r\n\tSOURCE_DB: 'SourceDB',\r\n\tLINK_FIELD: 'LinkField'\r\n};","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"../Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class JSFunctionViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"Core/Controls/CanvasDesigner/Models/BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"Core/Controls/CanvasDesigner/Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"Core/Controls/CanvasDesigner/Models/CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class TriggerViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"../Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class CSharpFunctionViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsBulkSet){\r\n\t\t\t\tthis.attrs.IsBulkSet = jsonProperties.IsBulkSet;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","export enum CanvasModelState { NoChanges, New, Changed, Deleted }","import { CanvasModelState } from 'Core/Controls/CanvasDesigner/Enums/CanvasModelState';\r\nimport { ICanvasLinkTargets } from 'Core/Controls/CanvasDesigner/Interfaces/ICanvasLinkTargets';\r\nimport { CanvasLinkModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\n\r\nexport class ArrowViewModel {\r\n\tid: string;\r\n\ttype: string = 'cyberThing.Arrow';\r\n\tstate: number = CanvasModelState.NoChanges;\r\n\tsource: ICanvasLinkTargets;\r\n\ttarget: ICanvasLinkTargets;\r\n\tvertices: Array<string>;\r\n\r\n\tconstructor(link: CanvasLinkModel) {\r\n\t\tthis.vertices = [];\r\n\t\tthis.id = link.CanvasItem1Guid + '' + link.CanvasItem2Guid;\r\n\r\n\t\tthis.source = {\r\n\t\t\tid: link.CanvasItem1Guid,\r\n\t\t\tselector: '.port-body'\r\n\t\t};\r\n\r\n\t\tthis.target = {\r\n\t\t\tid: link.CanvasItem2Guid,\r\n\t\t\tselector: '.port-body'\r\n\t\t};\r\n\r\n\t\tthis.InitProperties(link.Properties);\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.Rappid && jsonProperties.Rappid.vertices){\r\n\t\t\t\tthis.vertices = jsonProperties.Rappid.vertices\r\n\t\t\t}\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { ICanvasItemPositionObject } from \"../Interfaces/ICanvasItemPositionObject\";\r\nimport { CanvasItemModel, CanvasLinkModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\n\r\nexport class APIMethodViewModel extends BasicCanvasItemViewModel {\r\n\tparent: number | string;\r\n\tembeddingInvalid: boolean = false;\r\n\tembedded: boolean = true;\r\n\tembeds: Array<number | string> = [];\r\n\tparentedNode: boolean = true;\r\n\tchildSocketsIds: Array<number> = [];\r\n\trelatedIconId: string;\r\n\tattrs: any;\r\n\ttoggled: boolean;\r\n\tsourceType: string;\r\n\tconnectedNode: number | string;\r\n\tinitialPosition: ICanvasItemPositionObject;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { width: CanvasShapeWidth[CANVAS_TYPES.TRIGGER], height: 35 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t\tthis.attrs.cursor = 'grab';\r\n\t\tthis.attrs.IsCollapsed = false;\r\n\t\tthis.InitProperties(model.Properties);\r\n\t}\r\n\r\n\tSetEmbedds(link: CanvasLinkModel): void {\r\n\t\tthis.embeds.push(link.CanvasItem2Id || link.CanvasItem2Guid);\r\n\t}\r\n\r\n\tSetSize(size): void {\r\n\t\tthis.size = { 'width': size.width, 'height': size.height };\r\n\t}\r\n\r\n\tSetPosition(position: ICanvasItemPositionObject): void {\r\n\t\tthis.position = position;\r\n\t}\r\n\r\n\tSetParentId(link: CanvasLinkModel): void {\r\n\t\tthis.parent = link.CanvasItem1Id || link.CanvasItem1Guid;\r\n\t}\r\n\r\n\tprivate InitProperties(properties: string){\r\n\t\ttry {\r\n\t\t\tlet jsonProperties = JSON.parse(properties);\r\n\t\t\tif(jsonProperties.hasOwnProperty('Rappid') && jsonProperties.Rappid.hasOwnProperty('isCollapsed')){\r\n\t\t\t\tthis.attrs.IsCollapsed = jsonProperties.Rappid.isCollapsed;\r\n\t\t\t}\r\n\r\n\t\t\tif(jsonProperties && jsonProperties.IsSearchExisting){\r\n\t\t\t\tthis.attrs.IsSearchExisting = jsonProperties.IsSearchExisting;\r\n\t\t\t}\r\n\r\n\t\t}catch (e) {}\r\n\t}\r\n}","import { BasicCanvasItemViewModel } from \"./BasicCanvasItemViewModel\";\r\nimport { CanvasItemModel } from \"./CanvasModel\";\r\nimport { Utils } from 'Core/Controls/CanvasDesigner/Utils';\r\nimport { CanvasShapeWidth } from \"../Enums/CanvasShapeWidth\";\r\n\r\nexport class GroupViewModel extends BasicCanvasItemViewModel {\r\n\tattrs: any;\r\n\r\n\tconstructor(model: CanvasItemModel) {\r\n\t\tsuper(model, { 'width': CanvasShapeWidth.Table, 'height': 30 });\r\n\t\tthis.z = Utils.GetRandomArbitrary(60, 80);\r\n\t}\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\n\r\nexport var GridLayout = {\r\n\r\n\tlayout: function (graphOrCells, opt) {\r\n\r\n\t\tvar graph;\r\n\r\n\t\tif (graphOrCells instanceof joint.dia.Graph) {\r\n\t\t\tgraph = graphOrCells;\r\n\t\t} else {\r\n\t\t\tgraph = (new joint.dia.Graph()).resetCells(graphOrCells, { dry: true });\r\n\t\t}\r\n\r\n\t\t// This is not needed anymore.\r\n\t\tgraphOrCells = null;\r\n\r\n\t\topt = opt || {};\r\n\r\n\t\tvar elements = graph.getElements();\r\n\r\n\t\telements = _.sortBy(elements, (item: any) => { return item.get('name'); });\r\n\t\telements = _.sortBy(elements, (item: any) => { return item.get('sort'); });\r\n\r\n\t\t// number of columns\r\n\t\tvar columns = opt.columns || 1;\r\n\t\tvar rows = Math.ceil(elements.length / columns);\r\n\t\t// shift the element horizontally by a given amount\r\n\t\tvar dx = opt.dx || 0;\r\n\r\n\t\t// shift the element vertically by a given amount\r\n\t\tvar dy = opt.dy || 0;\r\n\t\t// position the elements in the centre of a grid cell\r\n\t\tvar centre = opt.centre === undefined || opt.centre !== false;\r\n\r\n\t\t// resize the elements to fit a grid cell & preserves ratio\r\n\t\tvar resizeToFit = !!opt.resizeToFit;\r\n\r\n\t\t// coordinates of the most top-left element.\r\n\t\tvar marginX = opt.marginX || 0;\r\n\t\tvar marginY = opt.marginY || 0;\r\n\r\n\t\t// width of a column\r\n\t\tvar columnWidths = [];\r\n\t\tvar columnWidth = opt.columnWidth;\r\n\t\tif (columnWidth === 'compact') {\r\n\r\n\t\t\tfor (var cIndex = 0; cIndex < columns; cIndex++) {\r\n\t\t\t\tvar elementsAtColumn = this._elementsAtColumn(elements, cIndex, columns);\r\n\t\t\t\tcolumnWidths.push(this._maxDim(elementsAtColumn, 'width') + dx);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (!columnWidth || joint.util.isString(columnWidth)) {\r\n\t\t\t\tcolumnWidth = this._maxDim(elements, 'width') + dx;\r\n\t\t\t}\r\n\t\t\tfor (var i = 0; i < columns; i++) {\r\n\t\t\t\tcolumnWidths.push(columnWidth);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar columnsX = this._accumulate(columnWidths, marginX);\r\n\r\n\t\tvar rowHeights = [];\r\n\t\telements.forEach(function(element, index) {\r\n\t\t\trowHeights.push(element.get('size').height + dy);\r\n\t\t});\r\n\r\n\t\tvar rowsY = this._accumulate(rowHeights, marginY);\r\n\r\n\t\tgraph.startBatch('layout');\r\n\r\n\t\telements.forEach(function (element, index) {\r\n\t\t\tvar cIndex = index % columns;\r\n\t\t\tvar rIndex = Math.floor(index / columns);\r\n\t\t\tvar cx = 0;\r\n\t\t\tvar cy = 0;\r\n\t\t\telement.position(columnsX[cIndex] + dx, rowsY[rIndex] + dy, opt);\r\n\t\t});\r\n\r\n\t\tgraph.stopBatch('layout');\r\n\t},\r\n\r\n\t_maxDim: function (elements, dimension) {\r\n\t\treturn elements.reduce(function (max, el) {\r\n\t\t\treturn Math.max(el.get('size')[dimension], max);\r\n\t\t}, 0);\r\n\t},\r\n\r\n\t_elementsAtRow: function (elements, rowIndex, numberOfColumns) {\r\n\t\tvar elementsAtRow = [];\r\n\t\tvar i = numberOfColumns * rowIndex;\r\n\t\tvar n = i + numberOfColumns;\r\n\t\tfor (; i < n; i++) {\r\n\t\t\telementsAtRow.push(elements[i]);\r\n\t\t}\r\n\t\treturn elementsAtRow;\r\n\t},\r\n\r\n\t_elementsAtColumn: function (elements, columnIndex, numberOfColumns) {\r\n\t\tvar elementsAtColumn = [];\r\n\t\tvar i = columnIndex;\r\n\t\tvar n = elements.length;\r\n\t\tfor (; i < n; i += numberOfColumns) {\r\n\t\t\telementsAtColumn.push(elements[i]);\r\n\t\t}\r\n\t\treturn elementsAtColumn;\r\n\t},\r\n\r\n\t_accumulate: function (array, baseVal) {\r\n\t\treturn array.reduce(function (res, val, i) {\r\n\t\t\tres.push(res[i] + val);\r\n\t\t\treturn res;\r\n\t\t}, [baseVal || 0]);\r\n\t}\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {CANVAS_TYPES} from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport {\r\n CanvasItemModel,\r\n CanvasLinkModel,\r\n CanvasModel,\r\n CanvasIconModel,\r\n ShapeModel,\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport {SourceViewModel} from 'Core/Controls/CanvasDesigner/Models/SourceViewModel';\r\nimport {DestinationViewModel} from 'Core/Controls/CanvasDesigner/Models/DestinationViewModel';\r\nimport {TableViewModel} from 'Core/Controls/CanvasDesigner/Models/TableViewModel';\r\nimport {ParamViewModel} from 'Core/Controls/CanvasDesigner/Models/ParamViewModel';\r\nimport {JSFunctionViewModel} from 'Core/Controls/CanvasDesigner/Models/JSFunctionViewModel';\r\nimport {TriggerViewModel} from 'Core/Controls/CanvasDesigner/Models/TriggerViewModel';\r\nimport {CSharpFunctionViewModel} from 'Core/Controls/CanvasDesigner/Models/CSharpFunctionViewModel';\r\nimport {ArrowViewModel} from 'Core/Controls/CanvasDesigner/Models/ArrowViewModel';\r\nimport {APIMethodViewModel} from 'Core/Controls/CanvasDesigner/Models/APIMethodViewModel';\r\nimport {GroupViewModel} from 'Core/Controls/CanvasDesigner/Models/GroupViewModel';\r\n\r\nimport {GridLayout} from 'Core/Controls/CanvasDesigner/GridLayout';\r\nimport {SIDES} from \"../Constants/Sides\";\r\nimport {P} from 'Core/Common/Promise';\r\nimport {EVENTS} from \"Core/Controls/CanvasDesigner/Shapes/Views/ParamView/Events\";\r\nimport {CanvasModelState} from \"../Enums/CanvasModelState\";\r\nimport {Event} from \"../../../Common/Event\";\r\nimport {QueryBuilder} from \"../../../../QueryBuilder/QueryBuilder\";\r\nimport {EVENTS as QUERY_BUILDER_EVENTS} from \"../../../../QueryBuilder/Events\";\r\nimport {Modal} from \"../../../Common/Modal\";\r\nimport * as ko from \"knockout\";\r\nimport {GenericDeserialize} from \"../../../../libs/cerialize\";\r\nimport {QueryExpressionModel} from \"../../Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\nimport {CanvasDesignerStore} from \"../Stores/CanvasDesignerStore\";\r\nimport {BlockUI} from \"../../../Common/BlockUi\";\r\n\r\nexport class ShapeFactory extends Event {\r\n private _graph: joint.dia.Graph;\r\n private _paper: joint.dia.Paper;\r\n private _paperScroller: joint.ui.PaperScroller;\r\n private _root: CanvasItemModel;\r\n\r\n constructor(graph: joint.dia.Graph, paper: joint.dia.Paper, paperScroller: joint.ui.PaperScroller) {\r\n super();\r\n this._graph = graph;\r\n this._paper = paper;\r\n this._paperScroller = paperScroller;\r\n this.AddEvent(EVENTS.BACK_TO_DATA_SELECTOR);\r\n this.AddEvent(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED);\r\n }\r\n\r\n public InitRoot(model: CanvasModel){\r\n this._root = _.find(model.CanvasItems, (item)=> item.TypeName === CANVAS_TYPES.DW_PACKAGE);\r\n }\r\n\r\n get Root(): CanvasItemModel{\r\n return this._root;\r\n }\r\n\r\n public BuildShapes(model: CanvasModel): P.Promise<any> {\r\n const deferredResult = P.defer<any>();\r\n let sourceShape: Dia.Element = null;\r\n let destinationShape: Dia.Element = null;\r\n let cells = [];\r\n let embeds = [];\r\n let arrows = [];\r\n let renderElements = [];\r\n let groups = [];\r\n\r\n _.each(model.CanvasItems, (item) => {\r\n if (item.State === CanvasModelState.Deleted) {\r\n return;\r\n }\r\n\r\n if (item.TypeName === CANVAS_TYPES.PARAM) {\r\n let parent = this.GetParentByTypes(model, item, [CANVAS_TYPES.TABLE, CANVAS_TYPES.JS_FUNCTION, CANVAS_TYPES.API_METHOD, CANVAS_TYPES.CSHARP_FUNCTION, CANVAS_TYPES.TRIGGER]);\r\n if (parent) {\r\n let isCollapsed = false;\r\n try {\r\n let properties = JSON.parse(parent.Properties);\r\n if (properties.hasOwnProperty('Rappid') && properties.Rappid.hasOwnProperty('isCollapsed')) {\r\n isCollapsed = properties.Rappid.isCollapsed;\r\n }\r\n } catch (e) {\r\n }\r\n if (!isCollapsed) {\r\n renderElements.push(item)\r\n }\r\n } else {\r\n renderElements.push(item)\r\n }\r\n } else {\r\n renderElements.push(item);\r\n }\r\n });\r\n\r\n let dataSelectors = _.filter(this._graph.getCells(), (item) => {\r\n return item instanceof joint.shapes.cyberThing.DataSelector;\r\n });\r\n\r\n cells = cells.concat(dataSelectors);\r\n\r\n this._graph.removeCells(dataSelectors);\r\n\r\n this._paper.on('render:done', () => {\r\n this._graph.addCells(arrows);\r\n\r\n if (deferredResult.status === P.Status.Unfulfilled) {\r\n\r\n if (sourceShape) {\r\n let position = sourceShape.get('position');\r\n this.BuildLayout(sourceShape);\r\n sourceShape.position(position.x, position.y, {deep: true});\r\n }\r\n\r\n if (destinationShape) {\r\n let position = destinationShape.get('position');\r\n this.BuildLayout(destinationShape);\r\n destinationShape.position(position.x, position.y, {deep: true});\r\n }\r\n\r\n _.each(groups, (group) => {\r\n let position = group.get('position');\r\n this.BuildLayout(group);\r\n group.position(position.x, position.y, {deep: true});\r\n group.on('change:position', (element) => {\r\n let position = element.get('position');\r\n let canvasItem1Id = element.get('recordId');\r\n let canvasItem1Guid = element.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n if (canvasItem) {\r\n canvasItem.X = position.x;\r\n canvasItem.Y = position.y;\r\n }\r\n if (canvasItem.State != CanvasModelState.New && canvasItem.State != CanvasModelState.Deleted) {\r\n canvasItem.State = CanvasModelState.Changed;\r\n }\r\n });\r\n });\r\n\r\n _.each(cells, (cell: any) => {\r\n cell.attr('./visibility', 'visible');\r\n });\r\n\r\n deferredResult.resolve(null);\r\n this._paper.off('render:done');\r\n this._paperScroller.scroll(0, 0);\r\n }\r\n });\r\n\r\n renderElements = _.sortBy(renderElements, (item) => {\r\n return item.Sort\r\n });\r\n\r\n let params = _.filter(renderElements, (item) => {\r\n return item.TypeName === CANVAS_TYPES.PARAM\r\n });\r\n let renderParams = [];\r\n\r\n _.each(params, (item) => {\r\n\r\n let parent = this.GetParentByType(model, item, CANVAS_TYPES.GROUP)\r\n if (parent) {\r\n renderParams.push(item);\r\n }\r\n\r\n if (item.SideName === SIDES.IN) {\r\n let parent = this.GetParentByType(model, item, CANVAS_TYPES.SOURCE)\r\n if (!parent) {\r\n renderParams.push(item);\r\n }\r\n }\r\n\r\n if (item.SideName === SIDES.OUT) {\r\n let parent = this.GetParentByType(model, item, CANVAS_TYPES.DESTINATION)\r\n if (!parent) {\r\n renderParams.push(item);\r\n }\r\n }\r\n });\r\n\r\n _.each(renderParams, (param) => {\r\n if (param.TypeName === CANVAS_TYPES.PARAM) {\r\n let paramViewModel = new shapes.cyberThing.Param(new ParamViewModel(param));\r\n cells.push(paramViewModel);\r\n\r\n paramViewModel.on(EVENTS.DEFAULT_VALUE_CHANGED, (value: string) => {\r\n\r\n let canvasItem1Id = paramViewModel.get('recordId');\r\n let canvasItem1Guid = paramViewModel.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n if (canvasItem) {\r\n canvasItem.DefaultValue = value;\r\n }\r\n\r\n if (canvasItem.State != CanvasModelState.New && canvasItem.State != CanvasModelState.Deleted) {\r\n canvasItem.State = CanvasModelState.Changed;\r\n }\r\n });\r\n }\r\n });\r\n\r\n _.each(renderElements, (item) => {\r\n let view = this.GetViewModel(item);\r\n if (view) {\r\n cells.push(view);\r\n\r\n if (view instanceof shapes.cyberThing.Source) {\r\n sourceShape = view;\r\n\r\n view.on(EVENTS.BACK_TO_DATA_SELECTOR, () => {\r\n\r\n let canvasItem1Id = view.get('recordId');\r\n let canvasItem1Guid = view.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n this.DeleteItem(model, canvasItem, view.getEmbeddedCells());\r\n\r\n this.Trigger(EVENTS.BACK_TO_DATA_SELECTOR, {Type: CANVAS_TYPES.SOURCE});\r\n\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n\r\n });\r\n\r\n view.on(EVENTS.EDIT_QUERY, (query: JSON) => {\r\n let queryBuilder = new QueryBuilder(true, false, false, true);\r\n queryBuilder.EditFreeQuery(GenericDeserialize<QueryExpressionModel>(query, QueryExpressionModel), false);\r\n\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => {\r\n modal.Close();\r\n });\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n BlockUI.Block();\r\n this.GetByQuery(eventArgs.data.QueryText, CANVAS_TYPES.SOURCE)\r\n .then((result) => {\r\n let canvasItem1Guid = view.get('guid');\r\n let dataSourceModel = _.find(model.CanvasItems, (item) => {\r\n return item.Guid === canvasItem1Guid;\r\n });\r\n\r\n let dataSourceToTableLinks = _.filter(model.CanvasLinks, (link) => link.CanvasItem1Guid === dataSourceModel.Guid);\r\n\r\n let paramToParamLinks = [];\r\n _.each(dataSourceToTableLinks, (dataSourceToTableLink) => {\r\n let tableModel = _.find(model.CanvasItems, (param) => param.Guid === dataSourceToTableLink.CanvasItem2Guid);\r\n\r\n let tableToParamLinks = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem1Guid === tableModel.Guid && !!child;\r\n });\r\n\r\n _.each(tableToParamLinks, (tableToParamLink) => {\r\n\r\n let links = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem1Guid === tableToParamLink.CanvasItem2Guid && !!child;\r\n });\r\n paramToParamLinks.push(...links);\r\n });\r\n });\r\n\r\n _.each(result.CanvasItems, (newQueryParam) => {\r\n let newQueryParamProperties = this.GetProperties(newQueryParam.Properties);\r\n\r\n let existsQueryParam = _.find(model.CanvasItems, (item) => {\r\n return item.SideName === newQueryParam.SideName\r\n && this.GetProperties(item.Properties).QueryColumnGuid === newQueryParamProperties.QueryColumnGuid\r\n && item.Name === newQueryParam.Name;\r\n }\r\n );\r\n\r\n if (existsQueryParam) {\r\n newQueryParamProperties.UseSubKey = this.GetProperties(existsQueryParam.Properties).UseSubKey;\r\n newQueryParam.Properties = JSON.stringify(newQueryParamProperties);\r\n }\r\n });\r\n\r\n let newLinks = [];\r\n\r\n _.each(paramToParamLinks, (link: CanvasLinkModel) => {\r\n let queryParam = _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem1Guid);\r\n let properties = this.GetProperties(queryParam.Properties);\r\n\r\n let newQueryParam = _.find(result.CanvasItems, (item) => item.SideName === 'OUT'\r\n && this.GetProperties(item.Properties).QueryColumnGuid === properties.QueryColumnGuid\r\n && item.Name === queryParam.Name\r\n );\r\n\r\n if (newQueryParam) {\r\n let newLink = new CanvasLinkModel();\r\n newLink.CanvasItem1Id = newQueryParam.Id;\r\n newLink.CanvasItem1Guid = newQueryParam.Guid;\r\n newLink.CanvasItem2Id = link.CanvasItem2Id;\r\n newLink.CanvasItem2Guid = link.CanvasItem2Guid;\r\n newLink.State = CanvasModelState.New;\r\n newLink.Properties = link.Properties;\r\n newLinks.push(newLink);\r\n\r\n\r\n let parent = this.GetParentByType(model, queryParam, CANVAS_TYPES.GROUP);\r\n\r\n if (!parent) {\r\n parent = this.GetParentByType(model, _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem2Guid), CANVAS_TYPES.GROUP);\r\n }\r\n\r\n if (parent) {\r\n newLink.RootRecordId = parent.Id;\r\n newLink.RootRecordGuid = parent.Guid;\r\n } else {\r\n newLink.RootRecordId = this._root.Id;\r\n newLink.RootRecordGuid = this._root.Guid;\r\n }\r\n\r\n }\r\n });\r\n\r\n this.DeleteItem(model, dataSourceModel, view.getEmbeddedCells());\r\n\r\n model.CanvasItems.push(...result.CanvasItems);\r\n model.CanvasLinks.push(...result.CanvasLinks, ...newLinks);\r\n this.BuildShapes(model)\r\n .fail(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n BlockUI.Unblock();\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n });\r\n });\r\n\r\n modal.Close();\r\n\r\n });\r\n\r\n let modal = new Modal({});\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(queryBuilder, modal.Wrapper);\r\n modal.Show();\r\n });\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, (packageId: number) => {\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: packageId });\r\n });\r\n\r\n }\r\n\r\n if (view instanceof shapes.cyberThing.Destination) {\r\n destinationShape = view;\r\n\r\n view.on(EVENTS.BACK_TO_DATA_SELECTOR, () => {\r\n\r\n let canvasItem1Id = view.get('recordId');\r\n let canvasItem1Guid = view.get('guid');\r\n\r\n let canvasItem = _.find(model.CanvasItems, (item) => {\r\n return item.Id == canvasItem1Id && item.Guid === canvasItem1Guid;\r\n });\r\n\r\n this.DeleteItem(model, canvasItem, view.getEmbeddedCells());\r\n\r\n this.Trigger(EVENTS.BACK_TO_DATA_SELECTOR, {Type: CANVAS_TYPES.DESTINATION});\r\n\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n });\r\n\r\n view.on(EVENTS.EDIT_QUERY, (query: JSON) => {\r\n let queryBuilder = new QueryBuilder(true, false, false, true);\r\n\r\n if(query){\r\n queryBuilder.EditFreeQuery(GenericDeserialize<QueryExpressionModel>(query, QueryExpressionModel), false);\r\n }else{\r\n queryBuilder.NewFreeQuery();\r\n }\r\n\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => {\r\n modal.Close();\r\n });\r\n queryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n BlockUI.Block();\r\n this.GetByQuery(eventArgs.data.QueryText, CANVAS_TYPES.DESTINATION)\r\n .then((result) => {\r\n let canvasItem1Guid = view.get('guid');\r\n let dataSourceModel = _.find(model.CanvasItems, (item) => {\r\n return item.Guid === canvasItem1Guid;\r\n });\r\n\r\n let dataSourceToTableLinks = _.filter(model.CanvasLinks, (link) => link.CanvasItem1Guid === dataSourceModel.Guid);\r\n\r\n let paramToParamLinks = [];\r\n _.each(dataSourceToTableLinks, (dataSourceToTableLink) => {\r\n let tableModel = _.find(model.CanvasItems, (param) => param.Guid === dataSourceToTableLink.CanvasItem2Guid);\r\n\r\n let tableToParamLinks = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem1Guid === tableModel.Guid && !!child;\r\n });\r\n\r\n _.each(tableToParamLinks, (tableToParamLink) => {\r\n\r\n let links = _.filter(model.CanvasLinks, (link) => {\r\n let child = _.find(model.CanvasItems, (item) => item.Guid === link.CanvasItem2Guid && item.TypeName === CANVAS_TYPES.PARAM);\r\n return link.CanvasItem2Guid === tableToParamLink.CanvasItem2Guid && !!child;\r\n });\r\n paramToParamLinks.push(...links);\r\n });\r\n });\r\n\r\n _.each(result.CanvasItems, (newQueryParam) => {\r\n let newQueryParamProperties = this.GetProperties(newQueryParam.Properties);\r\n\r\n let existsQueryParam = _.find(model.CanvasItems, (item) => {\r\n return item.SideName === newQueryParam.SideName\r\n && this.GetProperties(item.Properties).QueryColumnGuid === newQueryParamProperties.QueryColumnGuid\r\n && item.Name === newQueryParam.Name;\r\n }\r\n );\r\n\r\n if (existsQueryParam) {\r\n newQueryParamProperties.UseSubKey = this.GetProperties(existsQueryParam.Properties).UseSubKey;\r\n newQueryParam.Properties = JSON.stringify(newQueryParamProperties);\r\n }\r\n });\r\n\r\n let newLinks = [];\r\n\r\n _.each(paramToParamLinks, (link: CanvasLinkModel) => {\r\n let queryParam = _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem2Guid);\r\n let properties = this.GetProperties(queryParam.Properties);\r\n\r\n let newQueryParam = _.find(result.CanvasItems, (item) => item.SideName === 'IN'\r\n && this.GetProperties(item.Properties).QueryColumnGuid === properties.QueryColumnGuid\r\n && item.Name === queryParam.Name\r\n );\r\n\r\n if (newQueryParam) {\r\n let newLink = new CanvasLinkModel();\r\n newLink.CanvasItem2Id = newQueryParam.Id;\r\n newLink.CanvasItem2Guid = newQueryParam.Guid;\r\n newLink.CanvasItem1Id = link.CanvasItem1Id;\r\n newLink.CanvasItem1Guid = link.CanvasItem1Guid;\r\n newLink.State = CanvasModelState.New;\r\n newLink.Properties = link.Properties;\r\n newLinks.push(newLink);\r\n\r\n\r\n let parent = this.GetParentByType(model, queryParam, CANVAS_TYPES.GROUP);\r\n\r\n if (!parent) {\r\n parent = this.GetParentByType(model, _.find(model.CanvasItems, (param) => param.Guid === link.CanvasItem2Guid), CANVAS_TYPES.GROUP);\r\n }\r\n\r\n if (parent) {\r\n newLink.RootRecordId = parent.Id;\r\n newLink.RootRecordGuid = parent.Guid;\r\n } else {\r\n newLink.RootRecordId = this._root.Id;\r\n newLink.RootRecordGuid = this._root.Guid;\r\n }\r\n\r\n }\r\n });\r\n\r\n this.DeleteItem(model, dataSourceModel, view.getEmbeddedCells());\r\n\r\n model.CanvasItems.push(...result.CanvasItems);\r\n model.CanvasLinks.push(...result.CanvasLinks, ...newLinks);\r\n this.BuildShapes(model)\r\n .fail(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n BlockUI.Unblock();\r\n this._graph.removeCells([view as joint.dia.Cell]);\r\n });\r\n });\r\n\r\n modal.Close();\r\n\r\n });\r\n\r\n let modal = new Modal({});\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(queryBuilder, modal.Wrapper);\r\n modal.Show();\r\n });\r\n\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, (packageId: number) => {\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: packageId });\r\n });\r\n }\r\n\r\n\t\t\t\tif (view instanceof shapes.cyberThing.Group) {\r\n\t\t\t\t\tgroups.push(view);\r\n\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, (packageId: number) => {\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: packageId });\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n if (view instanceof shapes.cyberThing.CSharpFunction || view instanceof shapes.cyberThing.JSFunction|| view instanceof shapes.cyberThing.APIMethod) {\r\n view.on(EVENTS.SHOW_FUNCTION_DESIGNER, () => { \r\n let parent = this._graph.getCell(view.get('parent'));\r\n this.Trigger(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, { PackageId: parent.attributes.apiPackageId, FunctionId: view.attributes.recordId });\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n \r\n\t\t\t}\r\n\t\t});\r\n\r\n this._graph.resetCells(cells);\r\n\r\n _.each(model.CanvasLinks, (link: CanvasLinkModel) => {\r\n if (link.State === CanvasModelState.Deleted) {\r\n return;\r\n }\r\n let parent = this._graph.getCell(link.CanvasItem1Guid);\r\n let child = this._graph.getCell(link.CanvasItem2Guid);\r\n\r\n if (parent && child) {\r\n if (parent instanceof shapes.cyberThing.Table && child instanceof shapes.cyberThing.Table) {\r\n\r\n } else if (parent instanceof shapes.cyberThing.Param && child instanceof shapes.cyberThing.Param) {\r\n let arrowViewModel = new ArrowViewModel(link);\r\n let arrowShape = new shapes.cyberThing.Arrow(arrowViewModel);\r\n arrows.push(arrowShape);\r\n } else {\r\n embeds.push({parent: parent, child: child});\r\n }\r\n }\r\n });\r\n\r\n _.each(embeds, (item) => {\r\n item.parent.embed(item.child);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n GetProperties(properties: string) {\r\n if (properties && properties != '') {\r\n return JSON.parse(properties);\r\n }\r\n return {}\r\n }\r\n\r\n public DeleteItem(\r\n model: CanvasModel,\r\n item: CanvasItemModel,\r\n embeddedCells: Array<any>\r\n ) {\r\n if (item.State === CanvasModelState.New) {\r\n model.CanvasItems.splice(model.CanvasItems.indexOf(item), 1);\r\n } else {\r\n item.State = CanvasModelState.Deleted;\r\n }\r\n\r\n let linksToDelete = _.filter(model.CanvasLinks, (link: CanvasLinkModel) => {\r\n return (link.CanvasItem1Guid === item.Guid || link.CanvasItem2Guid === item.Guid);\r\n });\r\n\r\n _.each(linksToDelete, (link: CanvasLinkModel) => {\r\n if (link.State === CanvasModelState.New) {\r\n model.CanvasLinks.splice(model.CanvasLinks.indexOf(link), 1);\r\n } else {\r\n link.State = CanvasModelState.Deleted;\r\n }\r\n });\r\n\r\n _.each(embeddedCells, (cell) => {\r\n let canvasItemGuid = cell.get('guid');\r\n\r\n let item = _.find(model.CanvasItems, (item: CanvasItemModel) => {\r\n return item.Guid === canvasItemGuid;\r\n });\r\n\r\n if (item) {\r\n if (item.State === CanvasModelState.New) {\r\n model.CanvasItems.splice(model.CanvasItems.indexOf(item), 1);\r\n } else {\r\n item.State = CanvasModelState.Deleted;\r\n }\r\n }\r\n\r\n let linksToDelete = _.filter(model.CanvasLinks, (link: CanvasLinkModel) => {\r\n return (link.CanvasItem1Guid === canvasItemGuid || link.CanvasItem2Guid === canvasItemGuid);\r\n });\r\n\r\n _.each(linksToDelete, (link: CanvasLinkModel) => {\r\n if (link.State === CanvasModelState.New) {\r\n model.CanvasLinks.splice(model.CanvasLinks.indexOf(link), 1);\r\n } else {\r\n link.State = CanvasModelState.Deleted;\r\n }\r\n\r\n let child = _.find(model.CanvasItems, (item: CanvasItemModel) => {\r\n return item.Guid === link.CanvasItem2Guid;\r\n });\r\n\r\n let parent = _.find(model.CanvasItems, (item: CanvasItemModel) => {\r\n return item.Guid === link.CanvasItem1Guid;\r\n });\r\n\r\n\r\n if (child && child.TypeName === CANVAS_TYPES.PARAM && ((parent && parent.TypeName != CANVAS_TYPES.PARAM) || _.isEmpty(parent))) {\r\n if (child.State === CanvasModelState.New) {\r\n model.CanvasItems.splice(model.CanvasItems.indexOf(child, 1), 1);\r\n } else {\r\n child.State = CanvasModelState.Deleted;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n private GetViewModel(canvasItem: CanvasItemModel) {\r\n let view = null\r\n if (canvasItem.TypeName === CANVAS_TYPES.SOURCE) {\r\n view = new shapes.cyberThing.Source(new SourceViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.DESTINATION) {\r\n view = new shapes.cyberThing.Destination(new DestinationViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.TABLE) {\r\n view = new shapes.cyberThing.Table(new TableViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.JS_FUNCTION) {\r\n view = new shapes.cyberThing.JSFunction(new JSFunctionViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.CSHARP_FUNCTION) {\r\n view = new shapes.cyberThing.CSharpFunction(new CSharpFunctionViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.API_METHOD) {\r\n view = new shapes.cyberThing.APIMethod(new APIMethodViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.TRIGGER) {\r\n view = new shapes.cyberThing.Trigger(new TriggerViewModel(canvasItem));\r\n }\r\n\r\n if (canvasItem.TypeName === CANVAS_TYPES.GROUP) {\r\n view = new shapes.cyberThing.Group(new GroupViewModel(canvasItem));\r\n }\r\n\r\n return view;\r\n }\r\n\r\n private GetParentByTypes(model: CanvasModel, item: CanvasItemModel, typeNames: Array<string>): CanvasItemModel {\r\n let result = null;\r\n _.each(typeNames, (typeName) => {\r\n let parent = this.GetParentByType(model, item, typeName);\r\n if (parent) {\r\n result = parent;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n GetParentByType(model: CanvasModel, item: CanvasItemModel, typeName: string): CanvasItemModel {\r\n let result = null;\r\n let parentLinks = _.filter(model.CanvasLinks, (link) => {\r\n return link.CanvasItem2Guid === item.Guid && link.CanvasItem2Id === item.Id\r\n });\r\n\r\n _.each(parentLinks, (parentLink) => {\r\n let parents = _.filter(model.CanvasItems, (canvasItem) => {\r\n return canvasItem.Id === parentLink.CanvasItem1Id && canvasItem.Guid === parentLink.CanvasItem1Guid;\r\n });\r\n\r\n _.each(parents, (parent) => {\r\n if (parent.TypeName === CANVAS_TYPES.PARAM) {\r\n return;\r\n }\r\n\r\n if (parent.TypeName === typeName) {\r\n result = parent;\r\n } else {\r\n let parentParent = this.GetParentByType(model, parent, typeName);\r\n if (parentParent) {\r\n result = parentParent;\r\n }\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n public static GetRoot(cell: any, graph: joint.dia.Graph) {\r\n let parentId = cell.get('parent');\r\n\r\n if (!parentId) {\r\n return null;\r\n }\r\n\r\n let parent = graph.get('cells').get(parentId);\r\n\r\n if (!parent.get('parent')) {\r\n return parent;\r\n } else {\r\n return this.GetRoot(parent, graph);\r\n }\r\n }\r\n\r\n public BuildLayout(cell: any) {\r\n let embeddeds = cell.getEmbeddedCells();\r\n embeddeds = _.sortBy(embeddeds, (item: any) => {\r\n return item.get('sort')\r\n });\r\n\r\n if (embeddeds.length > 0) {\r\n\r\n _.each(embeddeds, (embedded) => {\r\n this.BuildLayout(embedded);\r\n });\r\n\r\n GridLayout.layout(embeddeds, {\r\n parentRelative: true,\r\n deep: true,\r\n dy: 5,\r\n resizeToFit: true\r\n });\r\n\r\n cell.fitEmbeds({\r\n padding: {\r\n top: 25,\r\n left: 10,\r\n right: 20,\r\n bottom: 10\r\n }, deep: true\r\n });\r\n }\r\n }\r\n\r\n GetByQuery(query: string, canvasType: string): P.Promise<CanvasModel> {\r\n const deferredResult = P.defer<CanvasModel>();\r\n CanvasDesignerStore\r\n .GetNodesByQuery(query, this._root.Guid, canvasType)\r\n .always(() => {\r\n }).then((result) => {\r\n deferredResult.resolve(result);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n public Expand(cellView: any, model: CanvasModel, graph: joint.dia.Graph, paper: joint.dia.Paper) {\r\n let cells = [];\r\n let canvasItem1Id = cellView.model.get('recordId');\r\n let canvasItem1Guid = cellView.model.get('guid');\r\n let arrows = [];\r\n let items = [];\r\n let params = _.filter(model.CanvasLinks, (link) => {\r\n return link.CanvasItem1Guid === canvasItem1Guid && link.CanvasItem1Id === canvasItem1Id;\r\n });\r\n\r\n _.each(params, (param) => {\r\n let itemModel = _.find(model.CanvasItems, (item) => {\r\n return item.Id === param.CanvasItem2Id && item.Guid === param.CanvasItem2Guid;\r\n });\r\n\r\n if (itemModel) {\r\n if (itemModel.TypeName === CANVAS_TYPES.PARAM) {\r\n\r\n items.push(itemModel);\r\n\r\n if (itemModel.SideName === SIDES.IN) {\r\n let parent = this.GetParentByType(model, itemModel, CANVAS_TYPES.SOURCE)\r\n if (!parent) {\r\n cells.push(new shapes.cyberThing.Param(new ParamViewModel(itemModel)));\r\n }\r\n }\r\n\r\n if (itemModel.SideName === SIDES.OUT) {\r\n let parent = this.GetParentByType(model, itemModel, CANVAS_TYPES.DESTINATION)\r\n if (!parent) {\r\n cells.push(new shapes.cyberThing.Param(new ParamViewModel(itemModel)));\r\n }\r\n }\r\n } else {\r\n let view = this.GetViewModel(itemModel);\r\n if (view) {\r\n cells.push(view);\r\n }\r\n }\r\n }\r\n });\r\n\r\n paper.on('render:done', () => {\r\n paper.off('render:done');\r\n\r\n graph.addCells(arrows);\r\n\r\n _.each(cells, (cell: any) => {\r\n cell.attr('./visibility', 'visible');\r\n });\r\n\r\n let parent = ShapeFactory.GetRoot(cellView.model, graph);\r\n if (parent) {\r\n let position = parent.get('position');\r\n GridLayout.layout(cellView.model.getEmbeddedCells(), {\r\n parentRelative: true,\r\n deep: true,\r\n dy: 5,\r\n resizeToFit: true\r\n });\r\n\r\n cellView.model.fitEmbeds({\r\n padding: {\r\n top: 25,\r\n left: 10,\r\n right: 20,\r\n bottom: 10\r\n }, deep: true\r\n });\r\n\r\n GridLayout.layout(parent.getEmbeddedCells(), {\r\n parentRelative: true,\r\n deep: true,\r\n dy: 5,\r\n resizeToFit: true\r\n });\r\n\r\n parent.fitEmbeds({\r\n padding: {\r\n top: 25,\r\n left: 10,\r\n right: 20,\r\n bottom: 10\r\n }, deep: true\r\n });\r\n\r\n parent.position(position.x, position.y, {deep: true});\r\n }\r\n });\r\n\r\n graph.addCells(cells);\r\n\r\n _.each(cells, (item) => {\r\n cellView.model.embed(item);\r\n });\r\n\r\n _.each(items, (itemModel) => {\r\n let links = _.filter(model.CanvasLinks, (link) => {\r\n return (link.CanvasItem1Id === itemModel.Id && link.CanvasItem1Guid === itemModel.Guid) || (link.CanvasItem2Id === itemModel.Id && link.CanvasItem2Guid === itemModel.Guid);\r\n });\r\n\r\n _.each(links, (link: CanvasLinkModel) => {\r\n let parent = graph.getCell(link.CanvasItem1Guid);\r\n let child = graph.getCell(link.CanvasItem2Guid);\r\n\r\n if (parent && child) {\r\n if (parent instanceof shapes.cyberThing.Table && child instanceof shapes.cyberThing.Table) {\r\n\r\n } else if (parent instanceof shapes.cyberThing.Param && child instanceof shapes.cyberThing.Param) {\r\n let arrowViewModel = new ArrowViewModel(link);\r\n let arrowShape = new shapes.cyberThing.Arrow(arrowViewModel);\r\n arrows.push(arrowShape);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Param';\r\nimport {EVENTS} from \"../ParamView/Events\";\r\nimport { ShapeFactory } from '../../../Views/ShapeFactory';\r\n\r\nlet generalTemplate = V('<g class= \"rotatable\"><rect class=\"body\"/><text class=\"label shape-label\"/><text class=\"icons fa\"/><title/></g>');\r\n\r\nlet constantTemplate = V('<g class= \"rotatable\"><rect class=\"body\"/>' +\r\n\t'<foreignObject class=\"fobj\" id=\"v-9\" width=\"160\" height=\"30\">' +\r\n\t' <input xmlns=\"http://www.w3.org/1999/xhtml\" type=\"text\" id=\"defaultValueEditor\" style=\"width: 160px; height:30px;\" />' +\r\n\t'</foreignObject>'+\r\n\t'</g>');\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass ParamView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.ParamView = Dia.ElementView.extend({\r\n\r\n\ttemplate: {},\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(0, 0, { parentRelative: true });\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0.5;\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\r\n\t\tif(this.model.attributes.shapeName === 'Constant'){\r\n\t\t\tthis.template = constantTemplate.clone();\r\n\t\t}else{\r\n\t\t\tthis.template = generalTemplate.clone();\r\n\t\t}\r\n\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(this.template);\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet icons = '';\r\n\r\n\t\tif(this.model.attributes.attrs.UseSubKey){\r\n\t\t\ticons = '\\uf112';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.attrs.IsRecordIdentifier){\r\n\t\t\ticons += '\\uf084';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.attrs.IsSearchBySubKey){\r\n\t\t\ticons += '\\uf002';\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.filledFromField){\r\n\t\t\ticons += '\\uf08e';\r\n\t\t}\r\n\t\tif(this.model.attributes.attrs.FilledFrom){\r\n\r\n\t\t\tlet root = ShapeFactory.GetRoot(this.model, this.paper.model);\r\n\t\t\troot.get('replicationId');\r\n\r\n\t\t\tlet filledFrom = this.model.attributes.attrs.FilledFrom[root.get('replicationId')] || '';\r\n\t\t\tif(filledFrom != ''){\r\n\t\t\t\ticons += '\\uf058';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.icons': {\r\n\t\t\t\t'ref-x': 0.84,\r\n\t\t\t\trefY2: 5,\r\n\t\t\t\ttext: icons\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tbindEvents: function(){\r\n\t\tlet self = this;\r\n\r\n\t\tlet defaultValueEditor = this.template.findOne('#defaultValueEditor');\r\n\t\tif(defaultValueEditor && defaultValueEditor.node){\r\n\t\t\t$(defaultValueEditor.node).val(this.model.attributes.defaultValue);\r\n\t\t\t$(defaultValueEditor.node).on('click', ()=>{\r\n\t\t\t\t$(defaultValueEditor.node).focus();\r\n\t\t\t});\r\n\r\n\t\t\t$(defaultValueEditor.node).on(\"input\", function(){\r\n\t\t\t\tself.model.trigger(EVENTS.DEFAULT_VALUE_CHANGED, $(this).val());\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n});","export const DATA_TYPES = {\r\n\tDATABASE: {Name: 'Database', Icon: 'fa fa-database'},\r\n\tSPREADSHEET: {Name: 'Spreadsheet', Icon: 'fa fa-file-excel-o'},\r\n\tQUERY: {Name: 'Query', Icon: 'fa fa-code'},\r\n\tAPI: {Name: 'API', Icon: 'fa fa-server'},\r\n\tTRIGGER: {Name: 'Trigger', Icon: 'fa fa-bolt'},\r\n\tDW_PACKAGE: {Name: 'DwPackage', Icon: 'fa fa-cube'},\r\n\tEXACT_ONLINE: {Name: 'ExactOnline', Icon: 'fa fa-bicycle'},\r\n\tEWS: {Name: 'EWS', Icon: 'fa fa-envelope'},\r\n\tOCI_PUNCH_OUT: {Name: 'OCI PunchOut', Icon: 'icon-boxing-glove'},\r\n\tMS_ACCESS: {Name: 'MS Access', Icon: 'fa fa-align-justify'},\r\n\tDESKTOP_FOLDER: { Name: 'Desktop folder', Icon: 'fa fa-folder-open'}\r\n}\r\n\r\nexport enum DataTypes {\r\n\tCyberbase,\r\n\tDatabase,\r\n\tFile,\r\n\tService,\r\n\tQuery,\r\n\tApiPackage,\r\n\tTrigger,\r\n\tDwPackage,\r\n\tExactOnline,\r\n\tEWS,\r\n\tOCIPunchOut,\r\n\tMsAccess,\r\n\tDesktopFolder\r\n}","import {dia as Dia, V} from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Source';\r\nimport {DataTypes, DATA_TYPES} from 'Core/Controls/CanvasDesigner/Constants/DataTypes';\r\nimport {EVENTS} from \"./ParamView/Events\";\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nconst _labels = LABELS;\r\nlet properties = null;\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n namespace shapes {\r\n namespace cyberThing {\r\n class SourceView extends Dia.ElementView {\r\n }\r\n }\r\n }\r\n}\r\nconst getBackButtonTemplate = () => {\r\n\r\n let shapeLabel = '<text class=\"shape-label\"/>';\r\n if (properties && properties.DataType === 5) {\r\n shapeLabel = '<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n ' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n ` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n ' </div>' +\r\n `</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>`;\r\n }\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n '<g class=\"scalable\"><rect/></g>' + shapeLabel + '<title/>' +\r\n\t\t'<foreignObject class=\"fobj back\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>' +\r\n ((properties && properties.DataType === DataTypes.ApiPackage) ? '' : `<text class=\"propertyIcon fa ${properties && properties.DataType === 10 ? 'icon-boxing-glove' : ''}\"></text>`) +\r\n\t\t'</g>');\r\n};\r\n\r\nconst getEditQueryButtonTemplate = () => {\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g><text class=\"shape-label\"/><title/>' +\r\n\t\t'<foreignObject class=\"back\" id=\"v-9\" width=\"50\" height=\"21\">' +\r\n\t\t` <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" title=\"${_labels.EDIT}\" style=\"padding-top: 2px\" display=\"none\" xml:space=\"preserve\">` +\r\n\t\t` <a class=\"stateButton\" id=\"editQueryButton\" title=\"${_labels.EDIT}\"><i class=\"fa fa-edit\"></i></a>` +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>'+\r\n '<text class=\"propertyIcon fa\"></text>' +\r\n\t\t'</g>');\r\n};\r\n\r\njoint.shapes.cyberThing.SourceView = Dia.ElementView.extend({\r\n template: {},\r\n query: {},\r\n\r\n initialize: function () {\r\n joint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n this.model.position(100, 100);\r\n this.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n this.model.get('attrs')['.shape-label'].refY2 = 10;\r\n this.model.get('attrs')['.back'] = {'ref-y': 0, 'ref-x': 0, refY2: 0, refX2: 160};\r\n\r\n this.model.attr('./visibility', 'hidden');\r\n\r\n this.template = getBackButtonTemplate();\r\n this.initProperties();\r\n\r\n this.bindEvents();\r\n },\r\n\r\n renderMarkup: function () {\r\n this.initIcons();\r\n this.vel.append(this.template);\r\n },\r\n\r\n initIcons: function(){\r\n let properties = JSON.parse(this.model.attributes.properties);\r\n let icon;\r\n\r\n switch (properties.DataType) {\r\n case DataTypes.Cyberbase : icon = \"\\uf1c0\";\r\n break;\r\n case DataTypes.File : icon = \"\\uf1c3\";\r\n break;\r\n case DataTypes.ApiPackage: icon = \"\\uf233\";\r\n break;\r\n case DataTypes.Query: icon = \"\\uf121\";\r\n break;\r\n case DataTypes.Trigger: icon = \"\\uf0e7\";\r\n break;\r\n case DataTypes.DwPackage: icon = \"\\uf1b2\";\r\n break;\r\n case DataTypes.ExactOnline: icon = \"\\uf206\";\r\n break;\r\n case DataTypes.EWS: icon = \"\\uf0e0\";\r\n break;\r\n case DataTypes.OCIPunchOut: icon = \"\\ue900\";\r\n break;\r\n case DataTypes.MsAccess: icon = \"\\uf039\";\r\n break;\r\n case DataTypes.DesktopFolder: icon = \"\\uf07c\";\r\n break;\r\n\r\n default: icon = 'null';\r\n }\r\n\r\n this.model.attr({\r\n '.propertyIcon': {\r\n \"ref-y\": 0,\r\n refY2: 10,\r\n \"ref-x\": 10,\r\n refX2: 10,\r\n text: icon\r\n }\r\n });\r\n\r\n },\r\n\r\n initProperties: function () {\r\n try {\r\n properties = JSON.parse(this.model.attributes.properties);\r\n\r\n if (properties.DataType === DataTypes.Query) {\r\n this.template = getEditQueryButtonTemplate();\r\n this.query = properties.Query;\r\n } else if (properties.DataType === DataTypes.Trigger) {\r\n this.model.attr({\r\n '.shape-label': {\r\n text: DATA_TYPES.TRIGGER.Name\r\n }\r\n });\r\n }\r\n } catch (e) {\r\n }\r\n },\r\n\r\n bindEvents: function () {\r\n let backButton = this.template.findOne('#backButton');\r\n if (backButton && backButton.node) {\r\n $(backButton.node).on('click', () => {\r\n this.model.trigger(EVENTS.BACK_TO_DATA_SELECTOR);\r\n });\r\n }\r\n\r\n let functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n _.each(functionDesignerButtons, (button : any) => {\r\n if (button && button.node) {\r\n $(button.node).on('click', () => {\r\n this.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.apiPackageId);\r\n });\r\n }\r\n });\r\n\r\n let editQueryButton = this.template.find('#editQueryButton')[0];\r\n if (editQueryButton && editQueryButton.node) {\r\n $(editQueryButton.node).on('click', () => {\r\n this.model.trigger(EVENTS.EDIT_QUERY, this.query);\r\n });\r\n }\r\n }\r\n});","import { dia as Dia, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Destination';\r\nimport {EVENTS} from \"./ParamView/Events\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport { DataTypes } from '../../Constants/DataTypes';\r\n\r\nconst _labels = LABELS;\r\nlet properties = null;\r\n\r\nconst backButtonTemplate = () => {\r\n\r\n\tlet shapeLabel = '<text class=\"shape-label\"/>';\r\n\tif (properties && properties.DataType === 5) {\r\n\t\tshapeLabel = '<foreignObject class=\"fobj\" id=\"v-9\" width=\"40\" height=\"21\">' +\r\n\t\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t\t` <a class=\"stateButton\" id=\"showFunctionDesigner\" title=\"${_labels.FUNCTION_DESIGNER}\"><i class=\"fa fa-external-link\"></i></a>` +\r\n\t\t\t' </div>' +\r\n\t\t\t`</foreignObject><a title=\"${_labels.FUNCTION_DESIGNER}\"><text class=\"shape-label\"/></a>`;\r\n\t}\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g>' + shapeLabel + '<title/>' +\r\n\t\t'<foreignObject class=\"fobj back\" id=\"v-9\" width=\"36\" height=\"21\">' +\r\n\t\t' <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" style=\"padding-top: 2px; padding-left: 25px\" display=\"none\" xml:space=\"preserve\">' +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>'+\r\n\t\t((properties && properties.DataType === DataTypes.ApiPackage) ? '' :'<text class=\"propertyIcon fa\"></text>') +\r\n\t\t'</g>');\r\n};\r\n\r\nconst getEditQueryButtonTemplate = () => {\r\n\r\n\treturn V('<g class=\"rotatable\">' +\r\n\t\t'<g class=\"scalable\"><rect/></g><text class=\"shape-label\"/><title/>' +\r\n\t\t'<foreignObject class=\"back\" id=\"v-9\" width=\"50\" height=\"21\">' +\r\n\t\t` <div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"content\" title=\"${_labels.EDIT}\" style=\"padding-top: 2px\" display=\"none\" xml:space=\"preserve\">` +\r\n\t\t` <a class=\"stateButton\" id=\"editQueryButton\" title=\"${_labels.EDIT}\"><i class=\"fa fa-edit\"></i></a>` +\r\n\t\t` <a class=\"stateButton\" id=\"backButton\" title=\"${_labels.BACK}\"><i class=\"fa fa-arrow-left\"></i></a>` +\r\n\t\t' </div>' +\r\n\t\t'</foreignObject>'+\r\n '<text class=\"propertyIcon fa\"></text>' +\r\n\t\t'</g>');\r\n};\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass DestinationView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.DestinationView = Dia.ElementView.extend({\r\n\ttemplate: {},\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.model.position(1050, 100);\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 10;\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t\tthis.model.get('attrs')['.back'] = { 'ref-y': 0, 'ref-x': 0, refY2: 0, refX2: 160 };\r\n\r\n\t\tthis.template = backButtonTemplate();\r\n\t\tthis.initProperties();\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.initIcons();\r\n\t\tthis.vel.append(this.template);\r\n\t},\r\n\r\n\tinitProperties: function () {\r\n\t\ttry {\r\n\t\t\tproperties = JSON.parse(this.model.attributes.properties);\r\n\r\n\t\t\tif (properties.DataType === DataTypes.Query) {\r\n this.template = getEditQueryButtonTemplate();\r\n this.query = properties.Query;\r\n } \r\n\r\n\t\t} catch (e) {\r\n\t\t}\r\n\t},\r\n\r\n\tinitIcons: function(){\r\n\t\tlet properties = JSON.parse(this.model.attributes.properties);\r\n\t\tlet icon;\r\n\r\n\t\tswitch (properties.DataType) {\r\n case DataTypes.Cyberbase : icon = \"\\uf1c0\";\r\n break;\r\n case DataTypes.File : icon = \"\\uf1c3\";\r\n break;\r\n case DataTypes.ApiPackage: icon = \"\\uf233\";\r\n break;\r\n case DataTypes.Query: icon = \"\\uf121\";\r\n break;\r\n case DataTypes.Trigger: icon = \"\\uf0e7\";\r\n break;\r\n case DataTypes.DwPackage: icon = \"\\uf1b2\";\r\n break;\r\n\t\t\tcase DataTypes.ExactOnline: icon = \"\\uf206\";\r\n break;\r\n\t\t\tcase DataTypes.EWS: icon = \"\\uf0e0\";\r\n break;\r\n\t\t\tcase DataTypes.DesktopFolder: icon = \"\\uf07c\";\r\n break;\r\n\r\n default: icon = 'null';\r\n\t\t}\r\n\r\n\t\tthis.model.attr({\r\n\t\t\t'.propertyIcon': {\r\n\t\t\t\t\"ref-y\": 0,\r\n\t\t\t\trefY2: 10,\r\n\t\t\t\t\"ref-x\": 10,\r\n\t\t\t\trefX2: 10,\r\n\t\t\t\ttext: icon\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tbindEvents: function(){\r\n\t\tlet backButton = this.template.findOne('#backButton');\r\n\t\tif(backButton && backButton.node){\r\n\t\t\t$(backButton.node).on('click', ()=>{\r\n\t\t\t\tthis.model.trigger(EVENTS.BACK_TO_DATA_SELECTOR);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.apiPackageId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet editQueryButton = this.template.find('#editQueryButton')[0];\r\n if (editQueryButton && editQueryButton.node) {\r\n $(editQueryButton.node).on('click', () => {\r\n this.model.trigger(EVENTS.EDIT_QUERY, this.query);\r\n });\r\n }\r\n\t}\r\n});","export const EVENTS = {\r\n\tSPREADSHEET_SELECTED: 'SPREADSHEET_SELECTED',\r\n\tENTITY_SELECTED: 'ENTITY_SELECTED',\r\n\tAPI_PACKAGE_SELECTED: 'API_PACKAGE_SELECTED',\r\n\tTRIGGER_SELECTED: 'TRIGGER_SELECTED',\r\n\tQUERY_SELECTED: 'QUERY_SELECTED',\r\n\tDW_PACKAGE_SELECTED: 'DW_PACKAGE_SELECTED',\r\n\tEXACT_ONLINE_ENTITY_SELECTED: 'EXACT_ONLINE_ENTITY_SELECTED',\r\n\tEWS_ENTITY_SELECTED: 'EWS_ENTITY_SELECTED',\r\n\tOCI_PUNCH_OUT_SELECTED: 'OCI_PUNCH_OUT_SELECTED',\r\n\tMS_ACCESS_ENTITY_SELECTED: 'MS_ACCESS_ENTITY_SELECTED',\r\n\tDESKTOP_FOLDER_SELECTED: 'DESKTOP_FOLDER_SELECTED'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport { TriggerDto } from './Dto/TriggerDto';\r\n\r\nexport class TriggerGroupViewModel {\r\n \r\n Group: string;\r\n \r\n Triggers: Array<TriggerDto>;\r\n\r\n IsExpanded: KnockoutObservable<boolean>;\r\n\r\n constructor(group: string, triggers: Array<TriggerDto>){\r\n this.Group = group;\r\n this.IsExpanded = ko.observable(false);\r\n this.Triggers = _.filter(triggers, (trigger) => trigger.Group == group);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport Template from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate.html'\r\nimport { DATA_TYPES } from 'Core/Controls/CanvasDesigner/Constants/DataTypes';\r\n\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from 'QueryBuilder/Events';\r\nimport { Event } from 'Core/Common/Event'\r\nimport { EVENTS } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { CanvasDesignerStore } from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { CanvasItemModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { QueryBuilder } from 'QueryBuilder/QueryBuilder';\r\nimport { CANVAS_TYPES } from \"Core/Controls/CanvasDesigner/Constants/CanvasTypes\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { MsAccessSchemaDto } from 'Core/Controls/CanvasDesigner/Models/Dto/MsAccessSchemaDto';\r\nimport { MsAccessTableDto } from 'Core/Controls/CanvasDesigner/Models/Dto/MsAccessTableDto';\r\nimport { TriggerDto } from 'Core/Controls/CanvasDesigner/Models/Dto/TriggerDto';\r\nimport { TriggerGroupViewModel } from 'Core/Controls/CanvasDesigner/Models/TriggerGroupViewModel';\r\n\r\nko.templates['Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate'] = Template;\r\n\r\nexport class DataSelector extends Event {\r\n\r\n\tprivate _labels = LABELS;\r\n\tprivate _data_types = DATA_TYPES;\r\n\r\n\tTitle: string;\r\n\tDataTypes: KnockoutObservableArray<string>;\r\n\tIsEnabled: KnockoutObservable<boolean>;\r\n\tNextStep: KnockoutObservable<boolean>;\r\n\tSelectedDataType: KnockoutObservable<string>;\r\n\tTriggers: KnockoutObservableArray<TriggerGroupViewModel>;\r\n\tFunctionPackages: KnockoutObservableArray<CanvasItemModel>;\r\n\tDataWizardPackages: KnockoutObservableArray<CanvasItemModel>;\r\n\tEntities: KnockoutObservableArray<any>;\r\n\tExactOnlineEntities: KnockoutObservableArray<string>;\r\n\tEWSEntities: KnockoutObservableArray<string>;\r\n\r\n\tIsShowFileUpload: KnockoutObservable<boolean>;\r\n\tIsShowTriggerList: KnockoutObservable<boolean>;\r\n\tIsShowFunctionPackageList: KnockoutObservable<boolean>;\r\n\tIsShowEntityList: KnockoutObservable<boolean>;\r\n\tIsShowNewQueryButton: KnockoutObservable<boolean>;\r\n\tIsShowDwPackageList: KnockoutObservable<boolean>;\r\n\tIsShowExactOnlineEntityList: KnockoutObservable<boolean>;\r\n\tIsShowEWSEntityList: KnockoutObservable<boolean>;\r\n\tIsShowMsAccessEntityList: KnockoutObservable<boolean>;\r\n\tMsAccessSchema: KnockoutObservable<MsAccessSchemaDto>;\r\n\r\n\tconstructor(title: string, dataTypes: Array<string>) {\r\n\t\tsuper();\r\n\t\tthis.Title = title;\r\n\t\tthis.DataTypes = ko.observableArray(dataTypes);\r\n\t\tthis.IsEnabled = ko.observable(false);\r\n\t\tthis.NextStep = ko.observable(false);\r\n\t\tthis.IsShowFileUpload = ko.observable(false);\r\n\t\tthis.IsShowTriggerList = ko.observable(false);\r\n\t\tthis.IsShowFunctionPackageList = ko.observable(false);\r\n\t\tthis.IsShowDwPackageList = ko.observable(false);\r\n\t\tthis.IsShowEntityList = ko.observable(false);\r\n\t\tthis.IsShowNewQueryButton = ko.observable(false);\r\n\t\tthis.IsShowExactOnlineEntityList = ko.observable(false);\r\n\t\tthis.IsShowEWSEntityList = ko.observable(false);\r\n\t\tthis.IsShowMsAccessEntityList = ko.observable(false);\r\n\t\tthis.MsAccessSchema = ko.observable(null);\r\n\r\n\t\tthis.SelectedDataType = ko.observable('');\r\n\t\tthis.Triggers = ko.observableArray([]);\r\n\t\tthis.FunctionPackages = ko.observableArray([]);\r\n\t\tthis.Entities = ko.observableArray([]);\r\n\t\tthis.DataWizardPackages = ko.observableArray([]);\r\n\t\tthis.ExactOnlineEntities = ko.observableArray([]);\r\n\t\tthis.EWSEntities = ko.observableArray([]);\r\n\r\n\t\tthis.AddEvent(EVENTS.SPREADSHEET_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.TRIGGER_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.API_PACKAGE_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.QUERY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.DW_PACKAGE_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.EXACT_ONLINE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.EWS_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.OCI_PUNCH_OUT_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.MS_ACCESS_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.DESKTOP_FOLDER_SELECTED);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorTemplate';\r\n\t}\r\n\r\n\tAfterRender() {}\r\n\r\n\tRender(target: HTMLElement) {\r\n\t\tko.cleanNode(target);\r\n\t\tko.applyBindings(this, target);\r\n\t}\r\n\r\n\tSetIsEnabled(value: boolean) {\r\n\t\tthis.IsEnabled(value);\r\n\t}\r\n\r\n\tasync SelectDataType(dataType: string) {\r\n\r\n\t\tthis.SelectedDataType(dataType);\r\n\r\n\t\tif (dataType == DATA_TYPES.OCI_PUNCH_OUT.Name) {\r\n\t\t\tthis.Trigger(EVENTS.OCI_PUNCH_OUT_SELECTED);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif (dataType == DATA_TYPES.DATABASE.Name) {\r\n\t\t\tthis.ShowEntityList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.SPREADSHEET.Name) {\r\n\t\t\tthis.ShowFileUpload();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.QUERY.Name) {\r\n\t\t\tthis.ShowQueryNewQueryButton();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.API.Name) {\r\n\t\t\tthis.ShowFunctionPackageList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.TRIGGER.Name) {\r\n\t\t\tthis.ShowTriggerList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.DW_PACKAGE.Name) {\r\n\t\t\tthis.ShowDWPackageList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.EXACT_ONLINE.Name) {\r\n\t\t\tthis.ShowExactOnlineEntityList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.EWS.Name) {\r\n\t\t\tthis.ShowEWSEntityList();\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.MS_ACCESS.Name) {\r\n\t\t\tthis.MsAccessSchema(await this.GetMSAccessFilePath());\r\n\t\t\tthis.Title = this.MsAccessSchema().Path;\r\n\t\t\tthis.IsShowMsAccessEntityList(true);\r\n\t\t}\r\n\r\n\t\tif (dataType == DATA_TYPES.DESKTOP_FOLDER.Name) {\r\n\t\t\tlet path = await this.GetDesktopFolderPath();\r\n\t\t\tif(path && path != ''){\r\n\t\t\t\tthis.Trigger(EVENTS.DESKTOP_FOLDER_SELECTED, { Path: path });\r\n\t\t\t}else{\r\n\t\t\t\treturn;\r\n\t\t\t}\t\t\t\r\n\t\t}\r\n\r\n\t\tthis.NextStep(true);\r\n\t}\r\n\r\n\tasync GetDesktopFolderPath(): Promise<string>{\r\n\t\tBlockUI.Block();\r\n\r\n\t\tlet result = await CanvasDesignerStore.GetDesktopFolderPath()\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail(err => Notifier.Failed(err.message));\r\n\r\n\t\treturn result.Path;\r\n\t}\r\n\r\n\tasync GetMSAccessFilePath(): Promise<MsAccessSchemaDto>{\r\n\t\tBlockUI.Block();\r\n\r\n\t\tlet result = await CanvasDesignerStore.GetMsAccessSchema()\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail(err => Notifier.Failed(err.message));\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tShowEWSEntityList(){\r\n\t\tBlockUI.Block();\r\n\t\t\r\n\t\tCanvasDesignerStore.GetEWSEntities()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\t\t\t\t\r\n\t\t\t\tthis.EWSEntities(result);\r\n\t\t\t\tthis.IsShowEWSEntityList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowExactOnlineEntityList(){\r\n\t\tBlockUI.Block();\r\n\t\t\r\n\t\tCanvasDesignerStore.GetExactOnlineEntities()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.ExactOnlineEntities(result);\r\n\t\t\t\tthis.IsShowExactOnlineEntityList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowDWPackageList(){\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetDataWizardPackages()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataWizardPackages(result);\r\n\t\t\t\tthis.IsShowDwPackageList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowTriggerList() {\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetTriggers()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.PrepareTriggerData(result);\r\n\t\t\t\tthis.IsShowTriggerList(true);\r\n\t\t});\r\n\t}\r\n\r\n\tToggle(triggerGroup: TriggerGroupViewModel){\r\n\t\ttriggerGroup.IsExpanded(!triggerGroup.IsExpanded());\r\n\t}\r\n\r\n\tprivate PrepareTriggerData(triggers: Array<TriggerDto>){\r\n\t\tlet groups = ['General', 'GenericButton', 'Grid', 'LifeStatus', 'Other'];\r\n\t\t_.each(groups, (group)=>{\r\n\t\t\tthis.Triggers.push(new TriggerGroupViewModel(group, triggers));\t\r\n\t\t});\r\n\t}\r\n\r\n\tShowFunctionPackageList() {\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetFunctionPackages()\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.FunctionPackages(result);\r\n\t\t\t\tthis.IsShowFunctionPackageList(true);\r\n\t\t\t});\r\n\t}\r\n\r\n\tShowQueryBuilder() {\r\n\t\tlet queryBuilder = new QueryBuilder(true, false, false, true);\r\n\t\tqueryBuilder.NewFreeQuery();\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => { modal.Close(); });\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n\t\t\tmodal.Close();\r\n\t\t\tthis.Trigger(EVENTS.QUERY_SELECTED, { Query: eventArgs.data.QueryText });\r\n\t\t});\r\n\r\n\t\tlet modal = new Modal({});\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(queryBuilder, modal.Wrapper);\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tShowQueryNewQueryButton() {\r\n\t\tthis.IsShowNewQueryButton(true);\r\n\t}\r\n\r\n\tShowFileUpload() {\r\n\t\tthis.IsShowFileUpload(true);\r\n\t}\r\n\r\n\tShowEntityList() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tCanvasDesignerStore.GetEntities({ IncludeDeleted: this.Title === CANVAS_TYPES.SOURCE })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.IsShowFileUpload(false);\r\n\t\t\t\tthis.IsShowTriggerList(false);\r\n\t\t\t\tthis.IsShowFunctionPackageList(false);\r\n\t\t\t\tthis.IsShowEntityList(true);\r\n\t\t\t\tthis.Entities(result);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSelectTrigger(trigger: CanvasItemModel) {\r\n\t\tthis.Trigger(EVENTS.TRIGGER_SELECTED, { Id: trigger.Id });\r\n\t}\r\n\r\n\r\n\tSelectEntity(trigger: CanvasItemModel) {\r\n\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, { Id: trigger.Id });\r\n\t}\r\n\r\n\tSelectPackage(apiPackage: CanvasItemModel) {\r\n\t\tthis.Trigger(EVENTS.API_PACKAGE_SELECTED, { Id: apiPackage.Id });\r\n\t}\r\n\r\n\tUploadFile(fileInput: HTMLInputElement) {\r\n\t\tlet file = fileInput.files[0];\r\n\t\tthis.Trigger(EVENTS.SPREADSHEET_SELECTED, { File: file });\r\n\t}\r\n\r\n\tSelectDataWizardPackage(dwPackage: CanvasItemModel){\r\n\t\tthis.Trigger(EVENTS.DW_PACKAGE_SELECTED, { Id: dwPackage.Id });\r\n\t}\r\n\r\n\tSelectExactOnlineEntity(name: string){\r\n\t\tthis.Trigger(EVENTS.EXACT_ONLINE_ENTITY_SELECTED, { Name: name });\r\n\t}\r\n\r\n\tSelectEWSEntity(name: string){\r\n\t\tthis.Trigger(EVENTS.EWS_ENTITY_SELECTED, { Name: name });\r\n\t}\r\n\r\n\tSelectMsAccessEntity(table: MsAccessTableDto){\r\n\t\tthis.Trigger(EVENTS.MS_ACCESS_ENTITY_SELECTED, { Table: table, Path: this.MsAccessSchema().Path });\r\n\t}\r\n\r\n\tBack() {\r\n\t\tthis.Entities([]);\r\n\t\tthis.Triggers([]);\r\n\t\tthis.ExactOnlineEntities([]);\r\n\t\tthis.DataWizardPackages([]);\r\n\t\tthis.EWSEntities([]);\r\n\t\tthis.MsAccessSchema(null);\r\n\r\n\t\tthis.IsShowFileUpload(false);\r\n\t\tthis.IsShowTriggerList(false);\r\n\t\tthis.IsShowFunctionPackageList(false);\r\n\t\tthis.IsShowEntityList(false);\r\n\t\tthis.NextStep(false);\r\n\t\tthis.IsShowNewQueryButton(false);\r\n\t\tthis.IsShowExactOnlineEntityList(false);\r\n\t\tthis.IsShowEWSEntityList(false);\r\n\t\tthis.IsShowDwPackageList(false);\r\n\t\tthis.IsShowMsAccessEntityList(false);\r\n\t}\r\n\r\n\tFormatTriggerTitle(triggerDto: TriggerDto){\r\n\t\treturn `${triggerDto.Name} ${triggerDto.Description}`;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"header\\\"> <!-- ko ifnot: NextStep --> <label data-bind=\\\"text: Title\\\"></label> <!--/ko--> <!-- ko if: NextStep --> <!-- ko if: IsShowEntityList --> <label> <i data-bind=\\\"class: _data_types.DATABASE.Icon\\\"></i> <!-- ko text: _data_types.DATABASE.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowFileUpload --> <label> <i data-bind=\\\"class: _data_types.SPREADSHEET.Icon\\\"></i> <!-- ko text: _data_types.SPREADSHEET.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowNewQueryButton --> <label> <i data-bind=\\\"class: _data_types.QUERY.Icon\\\"></i> <!-- ko text: _data_types.QUERY.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowFunctionPackageList --> <label> <i data-bind=\\\"class: _data_types.API.Icon\\\"></i> <!-- ko text: _data_types.API.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowTriggerList --> <label> <i data-bind=\\\"class: _data_types.TRIGGER.Icon\\\"></i> <!-- ko text: _data_types.TRIGGER.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowDwPackageList --> <label> <i data-bind=\\\"class: _data_types.DW_PACKAGE.Icon\\\"></i> <!-- ko text: _data_types.DW_PACKAGE.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowExactOnlineEntityList --> <label> <i data-bind=\\\"class: _data_types.EXACT_ONLINE.Icon\\\"></i> <!-- ko text: _data_types.EXACT_ONLINE.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowEWSEntityList --> <label> <i data-bind=\\\"class: _data_types.EWS.Icon\\\"></i> <!-- ko text: _data_types.EWS.Name --><!-- /ko --> </label> <!--/ko--> <!-- ko if: IsShowMsAccessEntityList --> <label> <i data-bind=\\\"class: _data_types.MS_ACCESS.Icon\\\"></i> <!-- ko text: _data_types.MS_ACCESS.Name --><!-- /ko --> </label> <!--/ko--> <!--/ko--> </div> <div> <!-- ko if: NextStep --> <a data-bind=\\\"attr:{title: _labels.BACK}, click: $data.Back.bind($data)\\\" class=\\\"backButton stateButton\\\"><i class=\\\"fa fa-arrow-left\\\"></i></a> <!--/ko--> <!-- ko ifnot: NextStep --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: DataTypes --> <li> <a data-bind=\\\"click: $parent.SelectDataType.bind($parent, $data.Name)\\\" class=\\\"optionLink\\\"> <i data-bind=\\\"class: $data.Icon\\\"></i> <!-- ko text: $data.Name --><!-- /ko --> </a> </li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: NextStep --> <!-- ko if: IsShowFileUpload --> <label data-bind=\\\"text: $data.SelectedDataType\\\"></label> <label class=\\\"fileInputLabel\\\" for=\\\"spreadSheetFile\\\">Path</label> <input data-bind=\\\"event: { change: $data.UploadFile.bind($data, $element) }\\\" accept=\\\".xlsx\\\" name=\\\"spreadsheet\\\" id=\\\"spreadSheetFile\\\" type=\\\"file\\\"/> <!--/ko--> <!-- ko if: IsShowTriggerList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: Triggers --> <li> <a data-bind=\\\"text: Group, click: $parent.Toggle.bind($parent, $data)\\\"> <span data-bind=\\\"text: Group\\\" class=\\\"entityName\\\"></span> </a> <div data-bind=\\\"visible: $data.IsExpanded\\\"> <!-- ko foreach: Triggers --> <a data-bind=\\\"click: $parents[1].SelectTrigger.bind($parents[1], $data)\\\" class=\\\"trigger\\\"><span data-bind=\\\"text: Name, tooltip: { content: $parents[1].FormatTriggerTitle($data) }\\\" class=\\\"entityName\\\"></span></a> <!--/ko--> </div> </li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowFunctionPackageList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: FunctionPackages --> <li><a data-bind=\\\"click: $parent.SelectPackage.bind($parent, $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!--/ko--> <!-- ko if: IsShowEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: Entities --> <li><a data-bind=\\\"click: $parent.SelectEntity.bind($parent, $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowNewQueryButton --> <ul id=\\\"optionsList\\\"> <li><a data-bind=\\\"click: $data.ShowQueryBuilder.bind($data)\\\"><span class=\\\"entityName\\\">NEW QUERY</span></a></li> </ul> <!--/ko--> <!-- ko if: IsShowDwPackageList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: DataWizardPackages --> <li><a data-bind=\\\"click: $parent.SelectDataWizardPackage.bind($parent, $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowExactOnlineEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: ExactOnlineEntities --> <li><a data-bind=\\\"click: $parent.SelectExactOnlineEntity.bind($parent, $data)\\\"><span data-bind=\\\"text: $data, tooltip: { content: $data }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowEWSEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko foreach: EWSEntities --> <li><a data-bind=\\\"click: $parent.SelectEWSEntity.bind($parent, $data)\\\"><span data-bind=\\\"text: $data, tooltip: { content: $data }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> </ul> <!--/ko--> <!-- ko if: IsShowMsAccessEntityList --> <ul id=\\\"optionsList\\\"> <!-- ko with: MsAccessSchema --> <!-- ko foreach: Tables --> <li><a data-bind=\\\"click: $parents[1].SelectMsAccessEntity.bind($parents[1], $data)\\\"><span data-bind=\\\"text: Name, tooltip: { content: Name }\\\" class=\\\"entityName\\\"></span></a></li> <!--/ko--> <!--/ko--> </ul> <!--/ko--> </div>\";\n// Exports\nexport default code;","import { dia as Dia, shapes, V } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport Template from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Templates/DataSelectorViewTemplate.html'\r\nimport { DataSelector } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/DataSelector';\r\nimport { EVENTS } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events';\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass DataSelectorView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\njoint.shapes.cyberThing.DataSelectorView = Dia.ElementView.extend({\r\n\r\n\ttemplate: Template,\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\t\tthis.$box = $(this.template);\r\n\r\n\t\tif (!this.model._events.remove) {\r\n\t\t\tthis.model.on('remove', this.removeBox, this);\r\n\t\t}\r\n\t},\r\n\r\n\trender: function () {\r\n\t\tjoint.dia.ElementView.prototype.render.apply(this, arguments);\r\n\t\tthis.paper.$el.prepend(this.$box);\r\n\t\tlet dataSelector = new DataSelector(this.model.title, this.model.dataTypes);\r\n\t\tdataSelector.Render(this.$box[0]);\r\n\t\tdataSelector.On(EVENTS.SPREADSHEET_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.SPREADSHEET_SELECTED, eventArgs.data.File);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.OCI_PUNCH_OUT_SELECTED, this, () => {\r\n\t\t\tthis.model.trigger(EVENTS.OCI_PUNCH_OUT_SELECTED);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.TRIGGER_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.TRIGGER_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.API_PACKAGE_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.API_PACKAGE_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.ENTITY_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.QUERY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.QUERY_SELECTED, eventArgs.data.Query);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.DW_PACKAGE_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.DW_PACKAGE_SELECTED, eventArgs.data.Id);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.EXACT_ONLINE_ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.EXACT_ONLINE_ENTITY_SELECTED, eventArgs.data.Name);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.EWS_ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.EWS_ENTITY_SELECTED, eventArgs.data.Name);\r\n\t\t});\r\n\r\n\t\tdataSelector.On(EVENTS.MS_ACCESS_ENTITY_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.MS_ACCESS_ENTITY_SELECTED, eventArgs.data.Table, eventArgs.data.Path);\r\n\t\t});\r\n\r\n\r\n\t\tdataSelector.On(EVENTS.DESKTOP_FOLDER_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.model.trigger(EVENTS.DESKTOP_FOLDER_SELECTED, eventArgs.data.Path);\r\n\t\t});\r\n\t\t\r\n\t\tthis.updateBox();\r\n\t\treturn this;\r\n\t},\r\n\r\n\tupdateBox: function () {\r\n\t\tlet bbox = this.model.getBBox();\r\n\t\tthis.$box.css({\r\n\t\t\twidth: bbox.width,\r\n\t\t\theight: bbox.height,\r\n\t\t\tleft: bbox.x,\r\n\t\t\ttop: bbox.y,\r\n\t\t\ttransform: 'rotate(' + (this.model.get('angle') || 0) + 'deg)'\r\n\t\t});\r\n\t},\r\n\r\n\tremoveBox: function () {\r\n\t\tthis.$box.remove();\r\n\t}\r\n});","// Module\nvar code = \"<div class=\\\"html-element\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div>\";\n// Exports\nexport default code;","import { dia as Dia, shapes, V, g } from 'libs/rappid/build/rappid';\r\nimport * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Models/Table';\r\nimport { EVENTS } from \"./ParamView/Events\";\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nconst _labels = LABELS;\r\n\r\n\r\ndeclare module 'libs/rappid/build/rappid' {\r\n\tnamespace shapes {\r\n\t\tnamespace cyberThing {\r\n\t\t\tclass GroupView extends Dia.ElementView { }\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst getTemplate = () => {\r\n\treturn V('<g class=\"rotatable\"><text class=\"shape-label\"/><g class=\"scalable\"><rect/></g></g>');\r\n}\r\n\r\njoint.shapes.cyberThing.GroupView = Dia.ElementView.extend({\r\n\r\n\tinitialize: function () {\r\n\t\tjoint.dia.ElementView.prototype.initialize.apply(this, arguments);\r\n\r\n\t\tif(this.model.attributes.position.x === 0){\r\n\t\t\tthis.model.attributes.position.x = 600;\r\n\t\t}\r\n\r\n\t\tif(this.model.attributes.position.y === 0){\r\n\t\t\tthis.model.attributes.position.y = 100;\r\n\t\t}\r\n\r\n\t\tthis.model.position(this.model.attributes.position.x, this.model.attributes.position.y);\r\n\r\n\t\tthis.model.attr('./visibility', 'hidden');\r\n\t\tthis.model.get('attrs')['.shape-label']['ref-y'] = 0;\r\n\t\tthis.model.get('attrs')['.shape-label'].refY2 = 10;\r\n\r\n\t\tthis.template = getTemplate();\r\n\r\n\t\tthis.bindEvents();\r\n\t},\r\n\r\n\trenderMarkup: function () {\r\n\t\tthis.vel.append(this.template);\r\n\t},\r\n\r\n\tbindEvents: function () {\r\n\r\n\t\tlet functionDesignerButtons = this.template.find('#showFunctionDesigner');\r\n\t\t_.each(functionDesignerButtons, (button: any) => {\r\n\t\t\tif (button && button.node) {\r\n\t\t\t\t$(button.node).on('click', () => {\r\n\t\t\t\t\tconst temp = this.model.attributes.apiPackageId;\r\n\t\t\t\t\tthis.model.trigger(EVENTS.SHOW_FUNCTION_DESIGNER, this.model.attributes.apiPackageId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\trender: function () {\r\n\r\n\t\tjoint.dia.ElementView.prototype.render.apply(this, arguments);\r\n\r\n\t\tthis.renderTools();\r\n\t\tthis.update();\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\trenderTools: function () {\r\n\r\n\t\tvar toolMarkup = this.model.toolMarkup || this.model.get('toolMarkup');\r\n\r\n\t\tif (toolMarkup) {\r\n\r\n\t\t\tvar nodes = V(toolMarkup);\r\n\t\t\tV(this.el).append(nodes);\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n});","import * as _ from 'underscore';\r\nimport { iconsArrayFA, iconsArraySI, iconsArraySoc } from 'Core/Controls/CanvasDesigner/Configuration/Icons';\r\nimport {\r\n\tCanvasItemModel,\r\n\tCanvasLinkModel,\r\n\tCanvasModel,\r\n\tCanvasIconModel,\r\n\tShapeModel,\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { SourceViewModel } from 'Core/Controls/CanvasDesigner/Models/SourceViewModel';\r\nimport { DestinationViewModel } from 'Core/Controls/CanvasDesigner/Models/DestinationViewModel';\r\nimport { TableViewModel } from 'Core/Controls/CanvasDesigner/Models/TableViewModel';\r\nimport { TriggerViewModel } from 'Core/Controls/CanvasDesigner/Models/TriggerViewModel';\r\nimport { JSFunctionViewModel } from 'Core/Controls/CanvasDesigner/Models/JSFunctionViewModel';\r\nimport { ParamViewModel } from 'Core/Controls/CanvasDesigner/Models/ParamViewModel';\r\nimport { ArrowViewModel } from 'Core/Controls/CanvasDesigner/Models/ArrowViewModel';\r\nimport { DecoratedRect } from 'Core/Controls/CanvasDesigner/Models/DecoratedRect';\r\nimport { CanvasShapeWidth } from 'Core/Controls/CanvasDesigner/Enums/CanvasShapeWidth';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\n\r\nexport class CanvasViewModel {\r\n\tCells: Array<SourceViewModel | TableViewModel | ParamViewModel | ArrowViewModel | DecoratedRect | TriggerViewModel | DestinationViewModel | JSFunctionViewModel>;\r\n\tCanvasLinks: Array<CanvasLinkModel>;\r\n\tNodes: Array<CanvasItemModel>;\r\n\ttabZonesEmbeds: any;\r\n\ttabsArePresent: boolean = false;\r\n\tfunctionsHeight: number;\r\n\tcombinedExistingHeight: number = 0;\r\n\tRecordId: number;\r\n\tShapes: Array<ShapeModel>;\r\n\tSource: SourceViewModel;\r\n\tDestination: DestinationViewModel;\r\n\r\n\tconstructor(model: CanvasModel, topPosition?: number) {\r\n\t\tthis.Cells = [];\r\n\t\tthis.CanvasLinks = model.CanvasLinks;\r\n\t\tthis.Nodes = [];\r\n\t\tthis.functionsHeight = topPosition;\r\n\t\tthis.Shapes = model.Shapes;\r\n\t\tthis.Init(model);\r\n\t}\r\n\r\n\tInit(model: CanvasModel) {\r\n\t\tmodel.CanvasItems.map((cell: CanvasItemModel) => {\r\n\t\t\tswitch (cell.TypeName) {\r\n\t\t\t\tcase CANVAS_TYPES.DW_PACKAGE:\r\n\t\t\t\t\tthis.RecordId = cell.Id;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.SOURCE:\r\n\t\t\t\t\tvar source = new SourceViewModel(cell);\r\n\t\t\t\t\tthis.Source = source;\r\n\t\t\t\t\tthis.Cells.push(source);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.DESTINATION:\r\n\t\t\t\t\tvar destination = new DestinationViewModel(cell);\r\n\t\t\t\t\tthis.Destination = destination;\r\n\t\t\t\t\tthis.Cells.push(destination);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.TABLE:\r\n\t\t\t\t\tthis.Nodes.push(cell);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.TRIGGER:\r\n\t\t\t\t\tthis.Cells.push(new TriggerViewModel(cell));\r\n\t\t\t\t\tthis.Nodes.push(cell);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.JS_FUNCTION:\r\n\t\t\t\t\tthis.Cells.push(new JSFunctionViewModel(cell));\r\n\t\t\t\t\tthis.Nodes.push(cell);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase CANVAS_TYPES.PARAM:\r\n\t\t\t\t\tthis.Cells.push(new ParamViewModel(cell));\r\n\t\t\t\t\tbreak;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t\r\n\t\tmodel.CanvasLinks.map((link: CanvasLinkModel) => {\r\n\t\t\tconst parentItem: any = _.findWhere(this.Cells, { id: link.CanvasItem1Id || link.CanvasItem1Guid });\r\n\t\t\tconst childItem: any = _.findWhere(this.Cells, { id: link.CanvasItem2Id || link.CanvasItem2Guid });\r\n\t\t\tif (!parentItem || !childItem) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst bothSocket = parentItem.type.split('.')[1] === CANVAS_TYPES.PARAM && childItem.type.split('.')[1] === CANVAS_TYPES.PARAM;\r\n\r\n\t\t\tif (!bothSocket) {\r\n\t\t\t\t\tparentItem.SetEmbedds(link);\r\n\t\t\t\t\tchildItem.SetParentId(link);\r\n\t\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport { DropdownDataStore } from 'Core/Controls/Dropdown/Stores/DropDownDataStore';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { RecordStore } from '../../../Common/Stores/RecordStore';\r\nimport { ShapeFactory } from '../Views/ShapeFactory';\r\nimport { BlockUI } from '../../../Common/BlockUi';\r\nexport class FunctionParamInspector {\r\n public static Build(shape: joint.shapes.cyberThing.ParamView, graph: Dia.Graph): joint.ui.Inspector{\r\n \r\n\t\tlet tableId = parseInt(shape.model.attributes.filledFromTable);\r\n\r\n\t\tif(Number.isNaN(tableId) || tableId == 0){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n const inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: shape.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'FilledFrom': {\r\n\t\t\t\t\t\ttype: 'filledFrom',\r\n\t\t\t\t\t\tlabel: 'Filled from',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n renderFieldContent: function(options, path, value) {\r\n\t\t\t\tlet fillFromValue = '';\r\n\t\t\t\tlet root = ShapeFactory.GetRoot(shape.model, graph);\r\n\t\t\t\tif(value){\r\n\t\t\t\t\tfillFromValue = value[root.get('replicationId')] || '';\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(path === 'attrs/FilledFrom'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\r\n const $searchButton = $(`\r\n <div class=\"field select-field\">\r\n <label>Fill from</label>\r\n <div class=\"form-control\">\r\n\t\t\t\t\t\t\t\t<input style=\"width: 90%;\" type=\"text\" value='${fillFromValue}'/>\r\n <a class=\"search-magnifier\"><span class=\"icon-magnifier\"></span></a>\r\n </div>\r\n </div>`\r\n\t\t\t\t\t)\r\n \r\n\t\t\t\t\t$buttonSet.append([$searchButton]);\r\n\r\n\t\t\t\t\t$searchButton.find('input').on(\"keyup change\", (evt)=>{\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/FilledFrom', (evt.target as HTMLInputElement).value);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$searchButton.find('.search-magnifier').on('click', function() {\r\n const searchScreen = new SearchScreen({ EntityId: shape.model.attributes.filledFromTable });\r\n searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n\r\n\t\t\t\t\t\tBlockUI.Block({ Target: $buttonSet[0] });\r\n RecordStore\r\n .GetRecord({ TableId: shape.model.attributes.filledFromTable, RecordId: evtArgs.data.RecordId })\r\n .always(()=>BlockUI.Unblock($buttonSet[0]))\r\n\t\t\t\t\t\t.then(record=>{\r\n const field = _.find(record.Fields, (field: any)=>field.FieldId === shape.model.attributes.filledFromField);\r\n let $fillValueInput = $searchButton.find('input');\r\n $fillValueInput.val(field.FieldValue);\r\n inspector.trigger('change:attrs/FilledFrom', field.FieldValue);\r\n });\r\n });\r\n searchScreen.Show();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n return inspector;\r\n }\r\n}","import * as joint from 'libs/rappid/build/rappid';\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Shapes';\r\nimport { FunctionParamInspector } from './FunctionParamInspector';\r\n\r\nexport class InspectorFactory {\r\n public static BuildInspector(shape: joint.shapes.cyberThing.ParamView, graph: Dia.Graph): joint.ui.Inspector {\r\n let parent = graph.get('cells').get(shape.model.get('parent'));\r\n\t\tif(parent instanceof shapes.cyberThing.CSharpFunction || parent instanceof shapes.cyberThing.JSFunction){\r\n return FunctionParamInspector.Build(shape, graph); \r\n }\r\n return null;\r\n }\t\r\n}\r\n","import * as joint from 'libs/rappid/build/rappid';\r\nimport 'Core/Controls/CanvasDesigner/Shapes/Shapes';\r\nimport { CanvasModelState } from 'Core/Controls/CanvasDesigner/Enums/CanvasModelState';\r\nimport { CanvasViewModel } from 'Core/Controls/CanvasDesigner/Models/CanvasViewModel';\r\nimport { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport { DataTypes, DATA_TYPES } from 'Core/Controls/CanvasDesigner/Constants/DataTypes';\r\nimport { EVENTS as DATA_SELECTOR_EVENTS } from 'Core/Controls/CanvasDesigner/Shapes/Views/DataSelectorView/Events';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { CanvasDesignerStore, IExactOnlineSettingDto } from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport {\r\n\tCanvasModel,\r\n\tCanvasLinkModel,\r\n\tCanvasItemModel\r\n} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { ShapeFactory } from 'Core/Controls/CanvasDesigner/Views/ShapeFactory';\r\nimport {GridLayout} from \"../GridLayout\";\r\nimport { EVENTS } from \"Core/Controls/CanvasDesigner/Shapes/Views/ParamView/Events\";\r\nimport {dia as Dia, shapes, dia} from 'libs/rappid/build/rappid';\r\nimport { Notifier } from '../../../Common/Notifier';\r\nimport { Tooltip } from '../../../Common/Tooltip';\r\nimport { ModelState } from '../../../Common/Enums/ModelState';\r\nimport { FileDownloader } from 'Core/Components/FileDownloader/FileDownloader';\r\nimport { MsAccessTableDto } from '../Models/Dto/MsAccessTableDto';\r\nimport { InspectorFactory } from '../Inspector/InspectorFactory';\r\n\r\nexport class CanvasManager {\r\n\tprivate _graph: joint.dia.Graph;\r\n\tprivate _paper: joint.dia.Paper;\r\n\tprivate _paperScroller: joint.ui.PaperScroller;\r\n\tprivate _viewModel: CanvasViewModel;\r\n\tprivate _dataModel: CanvasModel;\r\n\tprivate _dwPackage: CanvasItemModel;\r\n\tprivate _toogleExpanding: boolean;\r\n\tprivate _shapeFactory: ShapeFactory;\r\n\tprivate _inspector: joint.ui.Inspector;\r\n\tprivate _selectedCellView: any;\r\n\tprivate _arrowTooltip: Tooltip;\r\n\r\n\tprivate GetCellType(cell: joint.dia.Cell): string {\r\n\t\treturn cell.get('type').split('.')[1];\r\n\t}\r\n\r\n\tconstructor(dataModel: CanvasModel) {\r\n\t\tthis._viewModel = new CanvasViewModel(dataModel);\r\n\t\tthis._dataModel = dataModel;\r\n\t\tthis._toogleExpanding = false;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tGetShapeFactory() {\r\n\t\treturn this._shapeFactory;\r\n }\r\n\r\n\tget PackageName(){\r\n\t\tlet dwPackageItem = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\treturn item.TypeName === CANVAS_TYPES.DW_PACKAGE;\r\n\t\t});\r\n\t\tif(dwPackageItem){\r\n\t\t\treturn dwPackageItem.Name;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tget DestinationDataType(){\r\n\t\tlet dwPackageItem = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\treturn item.TypeName === CANVAS_TYPES.DESTINATION;\r\n\t\t});\r\n\t\tif(dwPackageItem){\r\n\t\t\tlet properties = JSON.parse(dwPackageItem.Properties);\r\n\t\t\tif(properties){\r\n\t\t\t\treturn properties.DataType;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis.InitializePaper();\r\n\t\tthis.PopulateGraph();\r\n\t}\r\n\r\n\tPopulateGraph() {\r\n\t\tthis._graph.clear();\r\n\t\tthis._shapeFactory.InitRoot(this._dataModel);\r\n\t\tthis._dwPackage = this._shapeFactory.Root;\r\n\t\tthis._shapeFactory.BuildShapes(this._dataModel)\r\n\t\t\t.then(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t});\r\n\r\n\t\tif (!this._viewModel.Source) {\r\n\t\t\tthis.AddDataSelector(CANVAS_TYPES.SOURCE);\r\n\t\t}\r\n\r\n\t\tif (!this._viewModel.Destination) {\r\n\t\t\tthis.AddDataSelector(CANVAS_TYPES.DESTINATION);\r\n\t\t}\r\n\t}\r\n\r\n\tInitializePaper() {\r\n\t\tconst graph = this._graph = new joint.dia.Graph;\r\n\r\n\t\tgraph.on('change:parent', (element: joint.dia.Cell, newParent, opt) => {});\r\n\r\n\t\tgraph.on('change', (element: joint.dia.Cell, newParent, opt) => {\r\n\t\t\telement.set('state', CanvasModelState.Changed);\r\n\t\t});\r\n\r\n\t\tgraph.on('remove', (element: joint.dia.Cell, collection, opt) => {\r\n\t\t\tlet source = element.get('source');\r\n\t\t\tlet target = element.get('target');\r\n\r\n\t\t\tif (source && target && !this._toogleExpanding) {\r\n\t\t\t\tlet link = _.find(this._dataModel.CanvasLinks, (item) => {\r\n\t\t\t\t\treturn ((item.CanvasItem1Id === source.id || item.CanvasItem1Guid === source.id) && (item.CanvasItem2Id === target.id || item.CanvasItem2Guid === target.id));\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (link && link.State === CanvasModelState.NoChanges) {\r\n\t\t\t\t\tlink.State = CanvasModelState.Deleted;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (link && link.State === CanvasModelState.New) {\r\n\t\t\t\t\tthis._dataModel.CanvasLinks.splice(this._dataModel.CanvasLinks.indexOf(link), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst paper = this._paper = new joint.dia.Paper({\r\n\t\t\tasync: { batchSize: 50 },\r\n\t\t\twidth: 1271,\r\n\t\t\theight: 700,\r\n\t\t\tgridSize: 5,\r\n\t\t\tdrawGrid: false,\r\n\t\t\tmodel: graph,\r\n\t\t\tembeddingMode: true,\r\n\t\t\tperpendicularLinks: false,\r\n\t\t\tclickThreshold: 1,\r\n\t\t\tdefaultLink: new joint.shapes.cyberThing.Arrow(),\r\n\t\t\tmultiLinks: false,\r\n\r\n\t\t\tinteractive: (cellView, evt) => {\r\n\t\t\t\tlet allowMovement = false;\r\n\r\n\t\t\t\tif(cellView instanceof joint.shapes.cyberThing.GroupView){\r\n\t\t\t\t\tallowMovement = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (cellView.model.isLink()) {\r\n\t\t\t\t\tallowMovement = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\telementMove: allowMovement,\r\n\t\t\t\t\taddLinkFromMagnet: true\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tvalidateEmbedding: (childview: any, parentview: any) => {\r\n\t\t\t\tif (this.GetCellType(childview.model) === 'Node' && this.GetCellType(parentview.model) === 'Zone') {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': false, 'embedded': true });\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (this.GetCellType(childview.model) === 'Param' && this.GetCellType(parentview.model) === 'Node') {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': false, 'embedded': true });\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (this.GetCellType(childview.model) === this.GetCellType(parentview.model)) {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': true, 'embedded': true });\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchildview.model.set({ 'embeddingInvalid': true, 'embedded': true });\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tvalidateConnection: (cellViewS: joint.dia.CellView, magnetS, cellViewT: joint.dia.CellView, magnetT, end, linkView) => {\r\n\t\t\t\t// Prevent linking from input ports;\r\n\t\t\t\tif (magnetS && magnetS.getAttribute('port-group') === 'in') return false;\r\n\t\t\t\t// Prevent linking from output ports to input ports within one element;\r\n\t\t\t\tif (cellViewS === cellViewT) return false;\r\n\t\t\t\t// Prevent linking to input ports;\r\n\t\t\t\treturn magnetT && magnetT.getAttribute('port-group') === 'in';\r\n\t\t\t},\r\n\t\t\tvalidateMagnet: (cellView: joint.dia.CellView, magnet) => {\r\n\t\t\t\t// Note that this is the default behaviour. Just showing it here for reference.\r\n\t\t\t\t// Disable linking interaction for magnets marked as passive (see below `.inPorts circle`).\r\n\t\t\t\treturn magnet.getAttribute('magnet') !== 'passive';\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpaper.on('link:pointermove', (link) => {});\r\n\r\n\t\tpaper.on('blank:pointerclick', () => {\r\n\t\t\tthis.HideInpector();\r\n\r\n\t\t\tif(this._inspector){\r\n\t\t\t\tthis._inspector.remove();\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif(this._selectedCellView){\r\n\t\t\t\tthis._selectedCellView.unhighlight();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpaper.on('cell:mouseover', (cellView: any, evt)=>{\r\n\r\n\t\t\tif(cellView.model instanceof joint.shapes.cyberThing.Arrow){\r\n\r\n\t\t\t\tvar scrollX = document.body.scrollLeft + document.documentElement.scrollLeft;\r\n\t\t\t\tvar scrollY = document.body.scrollTop + document.documentElement.scrollTop;\r\n\t\t\t\t$('#tooltip-container').offset({top: evt.clientY + scrollY + 10, left: evt.clientX + scrollX + 10 });\r\n\r\n\t\t\t\tif (cellView.sourceView instanceof joint.shapes.cyberThing.ParamView && cellView.targetView instanceof joint.shapes.cyberThing.ParamView) {\r\n\t\t\t\t\tlet sourceParent = graph.get('cells').get(cellView.sourceView.model.get('parent'));\r\n\t\t\t\t\tlet targetParent = graph.get('cells').get(cellView.targetView.model.get('parent'));\r\n\t\t\t\t\tlet content = `${sourceParent.get('originalName')}.${cellView.sourceView.model.get('originalName')} > ${targetParent.get('originalName')}.${cellView.targetView.model.get('originalName')}`;\r\n\t\t\t\t\tthis._arrowTooltip.SetContent(content);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$('#tooltip-container').trigger('mouseenter');\r\n\t\t\t}\r\n\r\n\t\t\tcellView.highlight(null, { highlighter: {\r\n\t\t\t\t\tname: 'addClass',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tclassName: 'highlighted'\r\n\t\t\t\t\t}\r\n\t\t\t\t}});\r\n\t\t});\r\n\r\n\t\tpaper.on('cell:mouseout', (cellView: any)=>{\r\n\r\n\t\t\tif(cellView.model instanceof joint.shapes.cyberThing.Arrow){\r\n\t\t\t\t$('#tooltip-container').trigger('mouseout');\r\n\t\t\t}\r\n\r\n\t\t\tcellView.unhighlight(null, { highlighter: {\r\n\t\t\t\t\tname: 'addClass',\r\n\t\t\t\t\toptions: {\r\n\t\t\t\t\t\tclassName: 'highlighted'\r\n\t\t\t\t\t}\r\n\t\t\t\t}});\r\n\t\t});\r\n\r\n\t\tpaper.on('link:pointerup', (link: any) => {\r\n\t\t\tif (link.sourceView instanceof joint.shapes.cyberThing.ParamView && link.targetView instanceof joint.shapes.cyberThing.ParamView) {\r\n\t\t\t\tlet linkModel = new CanvasLinkModel();\r\n\t\t\t\tlinkModel.CanvasItem1Id = link.sourceView.model.get('recordId');\r\n\t\t\t\tlinkModel.CanvasItem1Guid = link.sourceView.model.get('guid');\r\n\t\t\t\tlinkModel.CanvasItem2Id = link.targetView.model.get('recordId');\r\n\t\t\t\tlinkModel.CanvasItem2Guid = link.targetView.model.get('guid');\r\n\t\t\t\tlinkModel.State = CanvasModelState.New;\r\n\t\t\t\tlinkModel.RootRecordId = this._dwPackage.Id;\r\n\t\t\t\tlinkModel.RootRecordGuid = this._dwPackage.Guid;\r\n\r\n\t\t\t\tlet rightItemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Id === linkModel.CanvasItem2Id && item.Guid === linkModel.CanvasItem2Guid;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet leftItemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Id === linkModel.CanvasItem1Id && item.Guid === linkModel.CanvasItem1Guid;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet parent = this._shapeFactory.GetParentByType(this._dataModel, rightItemModel, CANVAS_TYPES.GROUP);\r\n\r\n\t\t\t\tif(!parent){\r\n\t\t\t\t\tparent = this._shapeFactory.GetParentByType(this._dataModel, leftItemModel, CANVAS_TYPES.GROUP);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(parent){\r\n\t\t\t\t\tlinkModel.RootRecordId = parent.Id;\r\n\t\t\t\t\tlinkModel.RootRecordGuid = parent.Guid;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tlinkModel.RootRecordId = this._dwPackage.Id;\r\n\t\t\t\t\tlinkModel.RootRecordGuid = this._dwPackage.Guid;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet existsLink = _.find(this._dataModel.CanvasLinks, (item) => {\r\n\t\t\t\t\treturn item.CanvasItem1Guid === linkModel.CanvasItem1Guid\r\n\t\t\t\t\t\t&& item.CanvasItem1Id === linkModel.CanvasItem1Id\r\n\t\t\t\t\t\t&& item.CanvasItem2Guid === linkModel.CanvasItem2Guid\r\n\t\t\t\t\t\t&& item.CanvasItem2Id === linkModel.CanvasItem2Id\r\n\t\t\t\t\t\t&& item.State != ModelState.Deleted\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(!existsLink){\r\n\t\t\t\t\tthis._dataModel.CanvasLinks.push(linkModel);\r\n\t\t\t\t\tthis.UpdateLinkProperties(link, linkModel);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.UpdateLinkProperties(link, existsLink);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tgraph.attributes.cells.remove(link.model.cid);\r\n\t\t\t\tlink.remove();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tpaper.on('cell:pointerdown', (cellView: any, evt: any) => {\r\n\t\t\tlet targetClass = evt.target.parentNode.getAttribute('class');\r\n\t\t\tif( targetClass=== 'fa fa-arrow-left' || targetClass === 'stateButton'){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\r\n\t\t\tif(this._inspector){\r\n\t\t\t\tthis._inspector.remove();\t\r\n\t\t\t\tthis._inspector = null;\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\tif(this._selectedCellView){\r\n\t\t\t\tthis._selectedCellView.unhighlight();\r\n\t\t\t}\r\n\r\n\t\t\tif(cellView instanceof joint.shapes.cyberThing.ParamView) {\r\n\t\t\t\tthis.RenderInspector(cellView);\r\n\t\t\t\tcellView.highlight();\r\n\t\t\t\tthis._selectedCellView = cellView;\r\n\t\t\t}\r\n\r\n\t\t\tif(cellView instanceof joint.shapes.cyberThing.GroupView) {\r\n\t\t\t\tlet className = evt.target.parentNode.getAttribute('class');\r\n\t\t\t\tswitch (className) {\r\n\t\t\t\t\tcase 'element-tool-remove':\r\n\t\t\t\t\t\tthis._shapeFactory.DeleteItem(this._dataModel, itemModel, cellView.model.getEmbeddedCells());\r\n\t\t\t\t\t\tthis._graph.removeCells(cellView.model.getEmbeddedCells());\r\n\t\t\t\t\t\tcellView.remove();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(\r\n\t\t\t\t(\r\n\t\t\t\t\t(cellView instanceof joint.shapes.cyberThing.SourceView || cellView instanceof joint.shapes.cyberThing.DestinationView)\r\n\t\t\t\t\t&&\r\n\t\t\t\t\t(itemModel.JsonProperties.DataType === DataTypes.ExactOnline || itemModel.JsonProperties.DataType === DataTypes.EWS || itemModel.JsonProperties.DataType === DataTypes.OCIPunchOut)\r\n\t\t\t\t)\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.TableView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.CSharpFunctionView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.TriggerView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.JSFunctionView\r\n\t\t\t\t|| cellView instanceof joint.shapes.cyberThing.APIMethodView){\r\n\t\t\t\tthis._toogleExpanding = true;\r\n\r\n\t\t\t\tif(evt.target.parentNode.getAttribute('class') === 'toggle-icon fa') {\r\n\t\t\t\t\tthis.ToggleCollapse(cellView, itemModel, graph, paper);\t\t\t\t\t\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.RenderInspector(cellView);\r\n\t\t\t\t\tcellView.highlight();\r\n\t\t\t\t\tthis._selectedCellView = cellView;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!this._inspector){\r\n\t\t\t\tthis.HideInpector();\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tthis._paperScroller = new joint.ui.PaperScroller({\r\n\t\t\tpadding: 10,\r\n\t\t\tpaper: paper,\r\n\t\t\tautoResizePaper: true\r\n\t\t});\r\n\r\n\t\tthis._shapeFactory = new ShapeFactory(this._graph, this._paper, this._paperScroller);\r\n\t\tthis._shapeFactory.On(EVENTS.BACK_TO_DATA_SELECTOR, this, (evtArgs)=>{\r\n\t\t\tthis.AddDataSelector(evtArgs.data.Type);\r\n\t\t});\r\n\r\n\t\t$('#paper-container').append(this._paperScroller.el);\t\t\r\n\t\t$('#tooltip-container').remove();\r\n\t\t$('body').append('<div id=\"tooltip-container\" style=\"position: absolute; top: 0px; left: 0px;\"></div>');\r\n\r\n\t\tthis._arrowTooltip = new Tooltip('#tooltip-container', \"test\", {\r\n\t\t\tposition: {x: 'right', y: 'center'},\r\n\t\t\toutside: 'x'\r\n\t\t});\r\n\r\n\t\tthis._paperScroller.render();\r\n\t\tthis._paperScroller.scroll(0,0);\r\n\t}\r\n\r\n\tHideInpector(){\r\n\t\tif(this._inspector){\r\n\t\t\tlet inputs = this._inspector.$el.find('input');\r\n\t\t\tinputs.trigger('change');\r\n\t\t}\r\n\r\n\t\t$(\"#paper-container\").animate({right: 0}, ()=>{\r\n\t\t\t$(\"#inspector-container\").hide();\r\n\t\t});\r\n\t}\r\n\r\n\tToggleCollapse(cellView: any, itemModel: CanvasItemModel, graph: joint.dia.Graph, paper: joint.dia.Paper){\r\n\t\tthis.UpdateItemProperties(cellView, itemModel);\r\n\t\tif (cellView.model.attributes.attrs.IsCollapsed) {\r\n\t\t\tthis._shapeFactory.Expand(cellView, this._dataModel, graph, paper);\r\n\t\t\tcellView.model.attributes.attrs.IsCollapsed = false;\r\n\t\t\tthis._toogleExpanding = false;\r\n\t\t} else {\r\n\t\t\tcellView.model.on('transition:end', () => {\r\n\t\t\t\tlet embeds = cellView.model.getEmbeddedCells();\r\n\t\t\t\tthis._graph.removeCells(embeds);\r\n\t\t\t\tthis._toogleExpanding = false;\r\n\r\n\t\t\t\tlet parent = ShapeFactory.GetRoot(cellView.model, this._graph);\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tlet position = parent.get('position');\r\n\r\n\t\t\t\t\t\tGridLayout.layout(parent.getEmbeddedCells(), {\r\n\t\t\t\t\t\t\tparentRelative: true,\r\n\t\t\t\t\t\t\tdeep: true,\r\n\t\t\t\t\t\t\tdy: 5,\r\n\t\t\t\t\t\t\tresizeToFit: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tparent.fitEmbeds({\r\n\t\t\t\t\t\t\tpadding: {\r\n\t\t\t\t\t\t\t\ttop: 25,\r\n\t\t\t\t\t\t\t\tleft: 10,\r\n\t\t\t\t\t\t\t\tright: 20,\r\n\t\t\t\t\t\t\t\tbottom: 10\r\n\t\t\t\t\t\t\t}, deep: true\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tparent.position(position.x, position.y, {deep: true});\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t\tcellView.off('transition:end');\r\n\t\t\t});\r\n\r\n\t\t\t_.each(cellView.model.getEmbeddedCells(), (cell: any) => {\r\n\t\t\t\tcell.attr('./visibility', 'hidden');\r\n\t\t\t});\r\n\r\n\t\t\tcellView.model.transition(\r\n\t\t\t\t'size/height',\r\n\t\t\t\tcellView.model.attributes.defaultSize.height,\r\n\t\t\t\t{\r\n\t\t\t\t\tduration: 250,\r\n\t\t\t\t\tdelay: 10,\r\n\t\t\t\t\ttimingFunction: joint.util.timing.linear,\r\n\t\t\t\t\tvalueFunction: joint.util.interpolate.number\r\n\t\t\t\t});\r\n\r\n\t\t\tcellView.model.attributes.attrs.IsCollapsed = true;\r\n\t\t}\r\n\t\tthis.ReRender(cellView);\r\n\t}\r\n\r\n\tBuildExactOnlineInspector(cellView): joint.ui.Inspector {\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ButtonTest': {\r\n\t\t\t\t\t\ttype: 'buttonTest',\r\n\t\t\t\t\t\tlabel: 'Test',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'EndPointUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'EndPointUrl',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'CallbackUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'CallbackUrl',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'ClientId': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'ClientId',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 4\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'ClientSecret': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'ClientSecret',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'SecretKey': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'SecretKey',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 6\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Login': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Login',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 6\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Password': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Password',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 7\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Division': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Division',\r\n\t\t\t\t\t\tgroup: 'ExactOnline',\r\n\t\t\t\t\t\tindex: 8\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'ExactOnline': {\r\n\t\t\t\t\tlabel: 'ExactOnline options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgetFieldValue: function(attribute, type) {\r\n\t\t\t\tif (type === 'buttonTest') {\r\n\t\t\t\t\treturn { value: $(attribute).data('result') };\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ButtonTest'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\t\t\t\t\tvar $testBtn = $('<a title=\"Test credentials\"><i class=\"fa fa-stack fa-2x fa-exclamation\"></i></a>');\r\n\t\t\t\t\tvar $createWebhookBtn = $('<a class=\"webhook-btn\" title=\"Create webhook\"><img src=\"img/Custom/webhook.png\"></i></a>');\r\n\t\t\t\t\tvar $exportBtn = $('<a title=\"Export settings\"><i class=\"fa fa-stack fa-2x fa-upload\"></i></a>');\r\n\t\t\t\t\tvar $importBtn = $('<a title=\"Import settings\"><i class=\"fa fa-stack fa-2x fa-download\"></i></a>');\r\n\t\t\t\t\tvar $uploadSettings = $('<input type=\"file\" style=\"display:none\"/>');\r\n\r\n\t\t\t\t\t$buttonSet.append([$exportBtn, $importBtn, $testBtn, $createWebhookBtn]);\r\n\r\n\t\t\t\t\t$testBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'test');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$createWebhookBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'webhook');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$exportBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'export');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$uploadSettings.on('change',()=>{\r\n\t\t\t\t\t\tvar input = $uploadSettings[0] as HTMLInputElement;\r\n\t\t\t\t\t\tif ( input.files && input.files[0] ) {\r\n\t\t\t\t\t\t\tlet file = input.files[0];\r\n\t\t\t\t\t\t\tlet fr = new FileReader();\r\n\t\t\t\t\t\t\tfr.onload = function () {\r\n\t\t\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'import', fr.result);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfr.readAsText(file);\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$importBtn.on('click', function() {\r\n\t\t\t\t\t\t$uploadSettings.click();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\tBuildOCIInspector(cellView): joint.ui.Inspector {\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ButtonTest': {\r\n\t\t\t\t\t\ttype: 'buttonTest',\r\n\t\t\t\t\t\tlabel: 'Test',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'EndPointUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'EndPointUrl',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'CallbackUrl': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'CallbackUrl',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'QueryString': {\r\n\t\t\t\t\t\ttype: 'textarea',\r\n\t\t\t\t\t\tlabel: 'QueryString',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 4\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Login': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Login',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 5\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Password': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Password',\r\n\t\t\t\t\t\tgroup: 'OCI',\r\n\t\t\t\t\t\tindex: 6\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'OCI': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgetFieldValue: function(attribute, type) {\r\n\t\t\t\tif (type === 'buttonTest') {\r\n\t\t\t\t\treturn { value: $(attribute).data('result') };\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ButtonTest'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\t\t\t\t\tvar $createWebhookBtn = $('<a><i class=\"fa fa-stack fa-2x fa-shopping-cart\"></i></a>');\r\n\t\t\t\t\tvar $exportBtn = $('<a title=\"Export settings\"><i class=\"fa fa-stack fa-2x fa-upload\"></i></a>');\r\n\t\t\t\t\tvar $importBtn = $('<a title=\"Import settings\"><i class=\"fa fa-stack fa-2x fa-download\"></i></a>');\r\n\t\t\t\t\tvar $uploadSettings = $('<input type=\"file\" style=\"display:none\"/>');\r\n\r\n\t\t\t\t\t$buttonSet.append([$exportBtn, $importBtn, $createWebhookBtn]);\r\n\r\n\t\t\t\t\t$createWebhookBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'createOCIWebhook');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$exportBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'export');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$uploadSettings.on('change',()=>{\r\n\t\t\t\t\t\tvar input = $uploadSettings[0] as HTMLInputElement;\r\n\t\t\t\t\t\tif ( input.files && input.files[0] ) {\r\n\t\t\t\t\t\t\tlet file = input.files[0];\r\n\t\t\t\t\t\t\tlet fr = new FileReader();\r\n\t\t\t\t\t\t\tfr.onload = function () {\r\n\t\t\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'import', fr.result);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfr.readAsText(file);\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$importBtn.on('click', function() {\r\n\t\t\t\t\t\t$uploadSettings.click();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\tBuildEWSInspector(cellView): joint.ui.Inspector {\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ButtonTest': {\r\n\t\t\t\t\t\ttype: 'buttonTest',\r\n\t\t\t\t\t\tgroup: 'EWS',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Login': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Login',\r\n\t\t\t\t\t\tgroup: 'EWS',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'Password': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Password',\r\n\t\t\t\t\t\tgroup: 'EWS',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'EWS': {\r\n\t\t\t\t\tlabel: 'EWS options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ButtonTest'){\r\n\t\t\t\t\tvar $buttonSet = $('<div>');\r\n\t\t\t\t\tvar $exportBtn = $('<a title=\"Export settings\"><i class=\"fa fa-stack fa-2x fa-upload\"></i></a>');\r\n\t\t\t\t\tvar $importBtn = $('<a title=\"Import settings\"><i class=\"fa fa-stack fa-2x fa-download\"></i></a>');\r\n\t\t\t\t\tvar $uploadSettings = $('<input type=\"file\" style=\"display:none\"/>');\r\n\r\n\t\t\t\t\t$buttonSet.append([$exportBtn, $importBtn]);\r\n\r\n\t\t\t\t\t$exportBtn.on('click', function() {\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'export');\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$uploadSettings.on('change',()=>{\r\n\t\t\t\t\t\tvar input = $uploadSettings[0] as HTMLInputElement;\r\n\t\t\t\t\t\tif ( input.files && input.files[0] ) {\r\n\t\t\t\t\t\t\tlet file = input.files[0];\r\n\t\t\t\t\t\t\tlet fr = new FileReader();\r\n\t\t\t\t\t\t\tfr.onload = function () {\r\n\t\t\t\t\t\t\t\tinspector.trigger('change:attrs/ButtonTest', 'import', fr.result);\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tfr.readAsText(file);\r\n\t\t\t\t\t\t}\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$importBtn.on('click', function() {\r\n\t\t\t\t\t\t$uploadSettings.click();\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\tGetItemByGuid(guid: string){\t\r\n\t\treturn _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\treturn item.Guid === guid;\r\n\t\t});\t\r\n\t}\r\n\r\n\tBuildFunctionInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsBulkSet': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Bulk set',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildTableInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsSearchExisting': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Search Existing',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'IsCheckOwnerProfile': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Check owner profile',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 3\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'UseMatching': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Enable matching',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'SkipCondition': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Skip condition',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 4\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildEWSTableInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'AddDaysToStart': {\r\n\t\t\t\t\t\ttype: 'number',\r\n\t\t\t\t\t\tlabel: 'Add days to start',\r\n\t\t\t\t\t\tgroup: 'Filters',\r\n\t\t\t\t\t\tindex: 0\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'AddDaysToEnd': {\r\n\t\t\t\t\t\ttype: 'number',\r\n\t\t\t\t\t\tlabel: 'Add days to end',\r\n\t\t\t\t\t\tgroup: 'Filters',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'ExcludeCancelled': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Filter on cancelled appointments',\r\n\t\t\t\t\t\tgroup: 'Filters',\r\n\t\t\t\t\t\tindex: 2\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Filters': {\r\n\t\t\t\t\tlabel: 'Filters',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildExactOnlineTableInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ODataFilter': {\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: '$filter',\r\n\t\t\t\t\t\tgroup: 'OData',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'OData': {\r\n\t\t\t\t\tlabel: 'OData',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildSourcePrimaryKeyInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'UseSubKey': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Use SubKey',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildDestinationPrimaryKeyInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'UsePrimaryKey': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Use Primary key',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildLookupInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsSearchBySubKey': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Search by SubKey',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildParamInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'IsRecordIdentifier': {\r\n\t\t\t\t\t\ttype: 'toggle',\r\n\t\t\t\t\t\tlabel: 'Record identifier',\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tBuildMemoParamInspector(cellView): joint.ui.Inspector{\r\n\t\tlet inspector = joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'ImageFileLocation': {\r\n\t\t\t\t\t\ttype: 'fileLocation',\r\n\t\t\t\t\t\tlabel: 'File type',\r\n\t\t\t\t\t\toptions: ['Base64', 'Curl', 'Desktop'],\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\trenderFieldContent: function(options, path, value) {\r\n\t\t\t\tif(path === 'attrs/ImageFileLocation'){\r\n\r\n\t\t\t\t\tlet $buttonSet = $('<div/>');\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet $imageCheckBox = $(`\r\n\t\t\t\t\t<div class=\"field select-field\">\r\n\t\t\t\t\t\t<label>Image</label>\r\n\t\t\t\t\t\t<input type=\"checkbox\">\r\n\t\t\t\t\t</div>`);\r\n\r\n\t\t\t\t\tlet $fileLocationSelect = $(`\r\n\t\t\t\t\t\t<div class=\"field select-field\">\r\n\t\t\t\t\t\t\t<label>File type</label>\r\n\t\t\t\t\t\t\t<select class=\"select\" data-type=\"select\">\r\n\t\t\t\t\t\t\t\t<option value=\"Base64\">Base64</option>\r\n\t\t\t\t\t\t\t\t<option value=\"Curl\">Curl</option>\r\n\t\t\t\t\t\t\t\t<option value=\"Desktop\">Desktop</option>\r\n\t\t\t\t\t\t\t</select>\r\n\t\t\t\t\t\t</div>`);\r\n\r\n\t\t\t\t\tif(!!value && value != ''){\r\n\t\t\t\t\t\t$imageCheckBox.find('input').prop('checked', true);\r\n\t\t\t\t\t\t$fileLocationSelect.find('select').val(value);\t\t\t\t\t\t\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t$fileLocationSelect.hide();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$buttonSet.append([$imageCheckBox, $fileLocationSelect]);\r\n\r\n\t\t\t\t\t$imageCheckBox.find('input').on('change', (evt)=>{\r\n\t\t\t\t\t\tif((evt.target as HTMLInputElement).checked){\r\n\t\t\t\t\t\t\t$fileLocationSelect.show();\r\n\t\t\t\t\t\t\tinspector.trigger('change:attrs/ImageFileLocation', $fileLocationSelect.find('select').val());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t$fileLocationSelect.hide();\r\n\t\t\t\t\t\t\t$fileLocationSelect.find('select').val('Base64');\r\n\t\t\t\t\t\t\tinspector.trigger('change:attrs/ImageFileLocation', null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$fileLocationSelect.find('select').on('change', (evt)=>{\r\n\t\t\t\t\t\tinspector.trigger('change:attrs/ImageFileLocation', (evt.target as HTMLInputElement).value);\t\t\t\t\t\t\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn $buttonSet;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn inspector;\r\n\t}\r\n\r\n\r\n\tBuildBinaryParamInspector(cellView): joint.ui.Inspector{\r\n\t\treturn joint.ui.Inspector.create('#inspector-container', {\r\n\t\t\tcell: cellView.model,\r\n\t\t\ttheme: 'default',\r\n\t\t\tinputs: {\r\n\t\t\t\tattrs: {\r\n\t\t\t\t\t'FileLocation': {\r\n\t\t\t\t\t\ttype: 'select',\r\n\t\t\t\t\t\tlabel: 'File type',\r\n\t\t\t\t\t\toptions: ['Base64', 'Curl', 'Desktop'],\r\n\t\t\t\t\t\tgroup: 'Options',\r\n\t\t\t\t\t\tindex: 1\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgroups: {\r\n\t\t\t\t'Options': {\r\n\t\t\t\t\tlabel: 'Options',\r\n\t\t\t\t\tindex: 1\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n\r\n\tRenderInspector(cellView){\r\n\t\tthis._inspector = null;\r\n\t\tlet root = ShapeFactory.GetRoot(cellView.model, this._graph);\r\n\r\n\t\tif(cellView instanceof joint.shapes.cyberThing.SourceView || cellView instanceof joint.shapes.cyberThing.DestinationView){\r\n\t\t\tlet canvasItemGuid = cellView.model.get('guid');\r\n\t\t\tlet itemModel = this.GetItemByGuid(canvasItemGuid);\r\n\r\n\t\t\tif(itemModel.JsonProperties.DataType === DataTypes.ExactOnline){\r\n\t\t\t\tthis._inspector = this.BuildExactOnlineInspector(cellView);\r\n\t\t\t}\r\n\r\n\t\t\tif(itemModel.JsonProperties.DataType === DataTypes.OCIPunchOut){\r\n\t\t\t\tthis._inspector = this.BuildOCIInspector(cellView);\r\n\t\t\t}\r\n\r\n\t\t\tif(itemModel.JsonProperties.DataType === DataTypes.EWS){\r\n\t\t\t\tthis._inspector = this.BuildEWSInspector(cellView);\r\n\t\t\t}\t\t\t\r\n\t\t}else if(cellView instanceof joint.shapes.cyberThing.CSharpFunctionView){\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tthis._inspector = this.BuildFunctionInspector(cellView);\r\n\t\t\t}\r\n\t\t}else if(cellView instanceof joint.shapes.cyberThing.TableView){\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase){\r\n\t\t\t\t\tthis._inspector = this.BuildTableInspector(cellView);\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Source){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.EWS){\r\n\r\n\t\t\t\t\tif(cellView.model.attributes.name === 'Appointment'){\r\n\t\t\t\t\t\tthis._inspector = this.BuildEWSTableInspector(cellView);\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.ExactOnline){\r\n\t\t\t\t\tthis._inspector = this.BuildExactOnlineTableInspector(cellView);\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else if(cellView.model.attributes.protocolName === 'PKey') {\r\n\t\t\t\r\n\t\t\tif(root instanceof shapes.cyberThing.Source){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase || parentModel.JsonProperties.DataType === DataTypes.Query){\r\n\t\t\t\t\tthis._inspector = this.BuildSourcePrimaryKeyInspector(cellView);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase){\r\n\t\t\t\t\tthis._inspector = this.BuildDestinationPrimaryKeyInspector(cellView);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else if(cellView.model.attributes.protocolName === 'Lookup' || cellView.model.attributes.protocolName === 'MultiSelect') {\r\n\t\t\tthis._inspector = this.BuildLookupInspector(cellView);\r\n\t\t}else if(cellView instanceof joint.shapes.cyberThing.ParamView){\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination){\r\n\t\t\t\tlet parentModel = this.GetItemByGuid(root.get('guid'));\r\n\t\t\t\tif(parentModel.JsonProperties.DataType === DataTypes.Cyberbase){\r\n\r\n\t\t\t\t\tif(cellView.model.attributes.protocolName === 'Binary'){\r\n\t\t\t\t\t\tthis._inspector = this.BuildBinaryParamInspector(cellView);\r\n\t\t\t\t\t}else if(cellView.model.attributes.protocolName === 'Memo'){\r\n\t\t\t\t\t\tthis._inspector = this.BuildMemoParamInspector(cellView);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis._inspector = this.BuildParamInspector(cellView);\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\t\r\n\r\n\t\t\tif(root instanceof shapes.cyberThing.Destination && !this._inspector){\r\n\t\t\t\tthis._inspector = InspectorFactory.BuildInspector(cellView, this._graph);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._inspector) {\r\n\t\t\tthis._inspector.on('change:attrs/IsSearchExisting', () => {\t\t\t\t\r\n\t\t\t\tthis.UpdateProperty(cellView, 'IsSearchExisting');\r\n\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsRecordIdentifier', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsRecordIdentifier');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsCheckOwnerProfile', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsCheckOwnerProfile');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsSearchBySubKey', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsSearchBySubKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis._inspector.on('change:attrs/UseMatching', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'UseMatching');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/UseSubKey', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'UseSubKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/UsePrimaryKey', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'UsePrimaryKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/IsBulkSet', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'IsBulkSet');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ImageFileLocation', (val) => {\t\t\r\n\t\t\t\tcellView.model.attributes.attrs['ImageFileLocation'] = val;\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ImageFileLocation');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ExcludeCancelled', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ExcludeCancelled');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/SkipCondition', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'SkipCondition');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\tthis._inspector.on('change:attrs/EndPointUrl', () => {\r\n\t\t\t\tlet itemModel = this.GetItemByGuid(cellView.model.get('guid'));\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'EndPointUrl');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/CallbackUrl', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'CallbackUrl');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ClientId', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ClientId');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ClientSecret', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ClientSecret');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/SecretKey', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'SecretKey');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/Login', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'Login');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/Password', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'Password');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/Division', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'Division');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/QueryString', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'QueryString');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/AddDaysToStart', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'AddDaysToStart');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/AddDaysToEnd', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'AddDaysToEnd');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ODataFilter', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'ODataFilter');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/FileLocation', () => {\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'FileLocation');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/FilledFrom', (val) => {\t\t\t\t\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tif(!cellView.model.attributes.attrs['FilledFrom']){\r\n\t\t\t\t\tcellView.model.attributes.attrs['FilledFrom'] = {};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet root = ShapeFactory.GetRoot(cellView.model, this._graph);\t\t\t\t\r\n\t\t\t\tcellView.model.attributes.attrs['FilledFrom'][root.get('replicationId')] = val;\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\t\t\t\tif (itemModel) {\r\n\t\t\t\t\tthis.UpdateProperty(cellView, 'FilledFrom');\r\n\t\t\t\t\tthis.ReRender(cellView);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.on('change:attrs/ButtonTest', (value, data) => {\r\n\r\n\t\t\t\tlet guid = cellView.model.get('guid');\r\n\t\t\t\tlet itemModel = _.find(this._dataModel.CanvasItems, (item) => {\r\n\t\t\t\t\treturn item.Guid === guid;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(value === 'test'){\r\n\t\t\t\t\tif (itemModel) {\r\n\t\t\t\t\t\tthis.CheckExactOnlineSettings(itemModel);\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value === 'webhook'){\r\n\t\t\t\t\tthis.SubscribeExactOnlineWebhook();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value === 'createOCIWebhook'){\r\n\t\t\t\t\tthis.GetProductCatalogUrl();\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(value === 'export'){\r\n\t\t\t\t\tthis.ExportSettings(itemModel);\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\tif(value === 'import'){\r\n\t\t\t\t\tthis.ImportSettings(itemModel, data, cellView);\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tthis._inspector.render();\r\n\r\n\t\t\t$(\"#paper-container\").animate({right: 320}, ()=>{\r\n\t\t\t\t$(\"#inspector-container\").show();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ImportSettings(item: CanvasItemModel, data: string, cell: any){\r\n\t\ttry{\r\n\t\t\tlet jsonData = JSON.parse(data);\r\n\t\t\tcell.model.attributes.attrs['EndPointUrl'] = jsonData.EndPointUrl;\r\n\t\t\tcell.model.attributes.attrs['CallbackUrl'] = jsonData.CallbackUrl;\r\n\t\t\tcell.model.attributes.attrs['ClientId'] = jsonData.ClientId;\r\n\t\t\tcell.model.attributes.attrs['ClientSecret'] = jsonData.ClientSecret;\r\n\t\t\tcell.model.attributes.attrs['Login'] = jsonData.Login;\r\n\t\t\tcell.model.attributes.attrs['Password'] = jsonData.Password;\r\n\t\t\tcell.model.attributes.attrs['SecretKey'] = jsonData.SecretKey;\r\n\t\t\tcell.model.attributes.attrs['QueryString'] = jsonData.QueryString;\r\n\r\n\t\t\tthis.UpdateProperty(cell, 'EndPointUrl');\r\n\t\t\tthis.UpdateProperty(cell, 'CallbackUrl');\r\n\t\t\tthis.UpdateProperty(cell, 'ClientId');\r\n\t\t\tthis.UpdateProperty(cell, 'ClientSecret');\r\n\t\t\tthis.UpdateProperty(cell, 'Login');\r\n\t\t\tthis.UpdateProperty(cell, 'Password');\r\n\t\t\tthis.UpdateProperty(cell, 'SecretKey');\r\n\t\t\tthis.UpdateProperty(cell, 'QueryString');\r\n\r\n\t\t\tthis._inspector.render();\r\n\t\t}catch{}\r\n\t}\r\n\r\n\tprivate ExportSettings(item: CanvasItemModel){\r\n\t\tlet properties = JSON.parse(item.Properties);\r\n\t\tlet settings: IExactOnlineSettingDto = {\r\n\t\t\tEndPointUrl: properties.EndPointUrl,\r\n\t\t\tCallbackUrl: properties.CallbackUrl,\r\n\t\t\tClientId: properties.ClientId,\r\n\t\t\tClientSecret: properties.ClientSecret,\r\n\t\t\tLogin: properties.Login,\r\n\t\t\tPassword: properties.Password,\r\n\t\t\tSecretKey: properties.SecretKey,\r\n\t\t\tQueryString: properties.QueryString\r\n\t\t};\r\n\r\n\t\tFileDownloader.DownloadBase64(btoa(JSON.stringify(settings, (key, value) => { if (value !== null) return value})), \"settings.json\");\r\n\t}\r\n\r\n\tprivate SubscribeExactOnlineWebhook(){\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.SubscribeExactOnlineWebhook(this._dwPackage.Id)\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then(()=>{\r\n\t\t\tnew Notifier().Success('OK');\r\n\t\t})\r\n\t\t.fail((err)=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate GetProductCatalogUrl(){\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.GetProductCatalogUrl(this._dwPackage.Id)\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then((url)=>{\r\n\t\t\twindow.open(url);\r\n\t\t})\r\n\t\t.fail((err)=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CheckExactOnlineSettings(item: CanvasItemModel){\r\n\t\tlet properties = JSON.parse(item.Properties);\r\n\t\tlet settings: IExactOnlineSettingDto = {\r\n\t\t\tEndPointUrl: properties.EndPointUrl,\r\n\t\t\tCallbackUrl: properties.CallbackUrl,\r\n\t\t\tClientId: properties.ClientId,\r\n\t\t\tClientSecret: properties.ClientSecret,\r\n\t\t\tLogin: properties.Login,\r\n\t\t\tPassword: properties.Password,\r\n\t\t\tSecretKey: properties.SecretKey,\r\n\t\t\tQueryString: properties.QueryString\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore.CheckExactOnlineSettings({Settings: settings})\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then(()=>{\r\n\t\t\tnew Notifier().Success('OK');\r\n\t\t})\r\n\t\t.fail((err)=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate ReRender(cellView: any){\r\n\t\tcellView.initIcons();\r\n\t}\r\n\r\n\tprivate UpdateProperty(cell: any, propertyName: string) {\r\n\t\tlet item = this.GetItemByGuid(cell.model.get('guid'));\r\n\r\n\t\tlet value = cell.model.attributes.attrs[propertyName];\r\n\t\ttry {\r\n\t\t\tlet properties = JSON.parse(item.Properties) || {};\r\n\t\t\tproperties[propertyName] = value;\r\n\t\t\titem.Properties = JSON.stringify(properties);\r\n\t\t} catch (e) {\r\n\t\t\tlet properties = {};\r\n\t\t\tproperties[propertyName] = value;\r\n\t\t\titem.Properties = JSON.stringify(properties);\r\n\t\t}\r\n\r\n\t\tif (item.State != CanvasModelState.New && item.State != CanvasModelState.Deleted) {\r\n\t\t\titem.State = CanvasModelState.Changed;\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateLinkProperties(link: any, linkModel: CanvasLinkModel){\r\n\t\tlet vertices = link.model.get('vertices');\r\n\t\ttry{\r\n\t\t\tlet properties = JSON.parse(link.Properties);\r\n\t\t\tif(!properties.Rappid){\r\n\t\t\t\tproperties.Rappid = {};\r\n\t\t\t}\r\n\t\t\tproperties.Rappid.vertices = vertices;\r\n\t\t\tlinkModel.Properties = JSON.stringify(properties);\r\n\t\t}catch (e) {\r\n\t\t\tlinkModel.Properties = JSON.stringify( { Rappid: { vertices: vertices } });\r\n\t\t}\r\n\r\n\t\tif(linkModel.State != CanvasModelState.New && linkModel.State != CanvasModelState.Deleted){\r\n\t\t\tlinkModel.State = CanvasModelState.Changed;\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateItemProperties(cell: any, itemModel: CanvasItemModel){\r\n\t\tlet isCollapsed = !cell.model.attributes.attrs.IsCollapsed;\r\n\r\n\t\ttry{\r\n\t\t\tlet properties = JSON.parse(itemModel.Properties);\r\n\t\t\tif(!properties.Rappid){\r\n\t\t\t\tproperties.Rappid = {};\r\n\t\t\t}\r\n\t\t\tproperties.Rappid.isCollapsed = isCollapsed;\r\n\t\t\titemModel.Properties = JSON.stringify(properties);\r\n\t\t}catch (e) {\r\n\t\t\titemModel.Properties = JSON.stringify( { Rappid: { isCollapsed: isCollapsed } });\r\n\t\t}\r\n\r\n\t\tif(itemModel.State != CanvasModelState.New && itemModel.State != CanvasModelState.Deleted){\r\n\t\t\titemModel.State = CanvasModelState.Changed;\r\n\t\t}\r\n\t}\r\n\r\n\tAddDataSelector(canvasType: string) {\r\n\r\n\t\tlet dataSelector = null;\r\n\t\tif (canvasType === CANVAS_TYPES.SOURCE) {\r\n\t\t\tdataSelector = _.extend(new joint.shapes.cyberThing.DataSelector({\r\n\t\t\t\tposition: { x: 100, y: 100 }\r\n\t\t\t}, {}),\r\n\t\t\t\t{\r\n\t\t\t\t\tdwType: canvasType,\r\n\t\t\t\t\ttitle: canvasType,\r\n\t\t\t\t\tdataTypes: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DATABASE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DATABASE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.SPREADSHEET.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.SPREADSHEET.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.QUERY.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.QUERY.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.API.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.API.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.TRIGGER.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.TRIGGER.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EXACT_ONLINE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EXACT_ONLINE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EWS.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EWS.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.OCI_PUNCH_OUT.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.OCI_PUNCH_OUT.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.MS_ACCESS.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.MS_ACCESS.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DESKTOP_FOLDER.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DESKTOP_FOLDER.Icon\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (canvasType === CANVAS_TYPES.DESTINATION) {\r\n\t\t\tdataSelector = _.extend(new joint.shapes.cyberThing.DataSelector({\r\n\t\t\t\tposition: { x: 1050, y: 100 }\r\n\t\t\t}, {}),\r\n\t\t\t\t{\r\n\t\t\t\t\tdwType: canvasType,\r\n\t\t\t\t\ttitle: canvasType,\r\n\t\t\t\t\tdataTypes: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DATABASE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DATABASE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.SPREADSHEET.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.SPREADSHEET.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.API.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.API.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DW_PACKAGE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DW_PACKAGE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EXACT_ONLINE.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EXACT_ONLINE.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.EWS.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.EWS.Icon\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tName: DATA_TYPES.DESKTOP_FOLDER.Name,\r\n\t\t\t\t\t\t\tIcon: DATA_TYPES.DESKTOP_FOLDER.Icon\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (dataSelector) {\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.OCI_PUNCH_OUT_SELECTED, () => {\r\n\t\t\t\tthis.GetByOCIPunchOut(canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.SPREADSHEET_SELECTED, (file: File) => {\r\n\t\t\t\tthis.GetBySpreadsheet(file, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.TRIGGER_SELECTED, (Id: number) => {\r\n\t\t\t\tthis.GetByTrigger(Id, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.API_PACKAGE_SELECTED, (Id: number) => {\r\n\t\t\t\tthis.GetFunctionsByPackage(Id, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.DW_PACKAGE_SELECTED, (Id: number) => {\r\n\t\t\t\tthis.GetDwPackageById(Id, canvasType).then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.ENTITY_SELECTED, (Id: number) => {\r\n\t\t\t\tBlockUI.Block();\r\n\t\t\t\tthis.GetByEntity(Id, canvasType)\r\n\t\t\t\t\t.fail(()=>{\r\n\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.QUERY_SELECTED, (Query: string) => {\r\n\t\t\t\tBlockUI.Block();\r\n\t\t\t\tthis.GetByQuery(Query, canvasType)\r\n\t\t\t\t\t.fail(()=>{\r\n\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.EXACT_ONLINE_ENTITY_SELECTED, (name: string) => {\r\n\t\t\t\tthis.GetByExactOnlineEntity(name, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.EWS_ENTITY_SELECTED, (name: string) => {\r\n\t\t\t\tthis.GetByEWSEntity(name, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.MS_ACCESS_ENTITY_SELECTED, (table: MsAccessTableDto, path: string) => {\t\t\t\t\r\n\t\t\t\tthis.GetByMsAccessEntity(table, path, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tdataSelector.on(DATA_SELECTOR_EVENTS.DESKTOP_FOLDER_SELECTED, (path: string) => {\t\t\t\t\r\n\t\t\t\tthis.GetByDesktopFolder(path, canvasType)\r\n\t\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis._graph.removeCells(dataSelector);\r\n\t\t\t\t\tthis.BuildShapes(result);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis._graph.addCell(dataSelector);\r\n\t\t}\r\n\t}\r\n\r\n\tBuildShapes(model: CanvasModel) {\r\n\t\tthis._dataModel.CanvasItems = this._dataModel.CanvasItems.concat(model.CanvasItems);\r\n\t\tthis._dataModel.CanvasLinks = this._dataModel.CanvasLinks.concat(model.CanvasLinks);\r\n\r\n\t\tthis._shapeFactory.BuildShapes(this._dataModel)\r\n\t\t\t.fail(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t}\r\n\r\n\tGetBySpreadsheet(file: File, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tvar convertedResult = null;\r\n\t\tconst reader = new FileReader();\r\n\t\treader.onload = () => {\r\n\t\t\tconvertedResult = btoa(reader.result as string);\r\n\t\t\tBlockUI.Block();\r\n\t\t\tCanvasDesignerStore\r\n\t\t\t\t.GetNodesBySpreadsheet(convertedResult, file.name, parentType, this._dwPackage.Id, this._dwPackage.Guid)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t}).then((result) => {\r\n\t\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t\t}).fail((err)=> Notifier.Failed(err.message));\r\n\t\t};\r\n\t\treader.readAsBinaryString(file);\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByTrigger(id: number, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetTrigger({ DwPackageGuid: this._dwPackage.Guid, TriggerId: id, ParentType: parentType})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tGetFunctionsByPackage(id: number, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetFunctionPackage({ DwPackageGuid: this._dwPackage.Guid, PackageId: id, ParentType: parentType })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tGetDwPackageById(id: number, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetDwPackageById({ DwPackageGuid: this._dwPackage.Guid, PackageId: id, ParentType: parentType })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\tdeferredResult.resolve(result);\r\n\t\t}).fail(err=>{\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByEntity(id: number, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByEntity(this._dwPackage.Guid, id, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByQuery(query: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByQuery(query, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByExactOnlineEntity(name: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByExactOnlineEntity(name, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByMsAccessEntity(table: MsAccessTableDto, path: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByMsAccessEntity(table, path, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t}).fail(err=>{\r\n\t\t\t\tNotifier.Failed(err.message);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\t\r\n\tGetByDesktopFolder(path: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByDesktopFolder(path, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t}).fail(err=>{\r\n\t\t\t\tNotifier.Failed(err.message);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByEWSEntity(name: string, canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetNodesByEWSEntity(name, this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tGetByOCIPunchOut(canvasType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.GetByOCIPunchOut(this._dwPackage.Guid, canvasType)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\t\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isDataLoading\\\" id=\\\"wrapper\\\"> <div class=\\\"canvasDesigner-screen form-designer\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"canvasDesigner-screen-content\\\"> <input id=\\\"formId\\\" type=\\\"hidden\\\" value=\\\"0\\\"/> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left formDesignerTitle\\\"> <!-- ko if: !$data._isForLifeStatusDesigner() --> <input data-bind=\\\"textInput: $data._searchTerm, hasFocus: true, enterKey: $data.Search.bind($data), attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"formBtnTitle search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <!-- /ko --> <button data-bind=\\\"enable: $data.CanvasRendered, click: Save\\\" class=\\\"btn green subFormControl\\\"><i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --></button> <!-- ko if: !$data._isForLifeStatusDesigner() --> <button data-bind=\\\"enable: $data.CanvasRendered, click: EditPackage\\\" class=\\\"btn yellow subFormControl\\\"><i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.EDIT --><!-- /ko --></button> <button data-bind=\\\"enable: $data.CanvasRendered, click: Delete\\\" class=\\\"btn red subFormControl\\\"><i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --></button> <button data-bind=\\\"visible: $data.CanvasRendered, click: Execute\\\" class=\\\"btn grey subFormControl\\\"> <!-- ko text: _labels.EXECUTE --><!-- /ko --></button> <!-- ko if: $data._showRollbackButton --> <button data-bind=\\\"visible: $data.CanvasRendered, click: ExecuteRollback, attr: { disabled: !$data._hasRollback() }\\\" class=\\\"btn grey subFormControl\\\">Rollback</button> <!-- /ko --> <!-- /ko --> <button data-bind=\\\"visible: $data.CanvasRendered, click: ShowFunctionList\\\" class=\\\"btn grey subFormControl\\\">Add function</button> <button data-bind=\\\"visible: $data.CanvasRendered, click: AddConstant\\\" class=\\\"btn grey subFormControl\\\">Add constant</button> <div data-bind=\\\"visible: $data.CanvasRendered\\\" class=\\\"custom-select additionalSettingsBtn\\\"> <div class=\\\"trigger formBtnTitle btn grey subFormControl\\\"> <span>Additional Settings</span> <span class=\\\"arrow-icon\\\"><i class=\\\"fa fa-angle-down\\\"></i></span> </div> <div class=\\\"custom-options\\\"> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _disableOnDelete\\\" type=\\\"checkbox\\\" id=\\\"defaultCheck1\\\"> <label class=\\\"form-check-label\\\" for=\\\"defaultCheck1\\\" data-bind=\\\"text: _labels.DISABLE_ON_DELETE\\\"></label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _ignoreMissingSubKeys\\\" type=\\\"checkbox\\\" id=\\\"IgnoreMissingSubKeysCheck\\\"> <label class=\\\"form-check-label\\\" for=\\\"IgnoreMissingSubKeysCheck\\\" data-bind=\\\"text: _labels.IGNORE_MISSING_SUB_KEY\\\">Ignore missing subKeys</label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _debugMode\\\" type=\\\"checkbox\\\" id=\\\"DebugMode\\\"> <label class=\\\"form-check-label\\\" for=\\\"DebugMode\\\">Debug mode</label> </div> </div> </div> </div> <div class=\\\"bar-right entity-heading\\\"> <div class=\\\"formDesignerTitle__Item formDesignerTitle__Item--right\\\"> <!-- ko ifnot: $data._isForLifeStatusDesigner --> <div data-bind=\\\"visible: $data.CanvasRendered\\\" class=\\\"lifestatus-bar well formDesignerTitle__packageName\\\"> <!-- ko text: $data._packageName --><!-- /ko --> </div> <!-- /ko --> <!-- ko if: $data._isForLifeStatusDesigner --> <div data-bind=\\\"visible: $data.CanvasRendered\\\"> <input data-bind=\\\"value: $data._packageName\\\" class=\\\"form-control\\\"> </div> <!-- /ko --> <div class=\\\"entity-icon-container\\\"> <span class=\\\"fa fa-exchange\\\" aria-hidden=\\\"true\\\"></span> </div> <div class=\\\"entity-name custom-color-option formDesignerTitle__entityName\\\"> <!-- ko text: _labels.CANVAS_DESIGNER --><!-- /ko --> </div> </div> </div> <!--<div class=\\\"edit-screen-block\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<div data-bind=\\\"visible: HasData\\\" class=\\\"portlet light row-no-padding\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div id=\\\"designScreenCanvas\\\" class=\\\"portlet-body\\\"></div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>--> </div> </div> </form> </div> <!-- ko if: _canvasSelected() --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div class=\\\"full-width-block\\\"> <div id=\\\"canvasContainer\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div id=\\\"theme-container\\\"></div> <div id=\\\"stencil-container\\\" class=\\\"hidden\\\"></div> <div id=\\\"papers-container\\\"> <div class=\\\"papers onTop\\\" id=\\\"paper-container\\\"></div> </div> <div id=\\\"toolbar-container\\\"></div> <div id=\\\"inspector-container\\\" class=\\\"canvas-designer-inspector\\\"></div> </div> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import { CANVAS_TYPES } from 'Core/Controls/CanvasDesigner/Constants/CanvasTypes';\r\nimport { CanvasModel } from './Models/CanvasModel';\r\nimport * as ko from 'knockout';\r\nimport 'pubsub';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {CanvasDesignerStore} from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport {CanvasDesignerMetadataModel} from 'Core/Controls/CanvasDesigner/Models/CanvasDesignerMetadataModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {MethodsList} from 'Core/Controls/CanvasDesigner/Views/MethodsList';\r\nimport {CanvasManager} from 'Core/Controls/CanvasDesigner/Views/CanvasManager';\r\nimport {CanvasItemModel, CanvasLinkModel} from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport {NOTIFICATIONS, CONFIRMATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport ViewTemplate from 'Core/Controls/CanvasDesigner/Templates/View.html';\r\nimport {FUNCTION_TYPES} from \"../FunctionDesigner/FunctionTypes\";\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from \"../../Screens/SearchScreen/Events\";\r\nimport {EVENTS} from \"./Shapes/Views/ParamView/Events\";\r\nimport {CanvasModelState} from \"./Enums/CanvasModelState\";\r\nimport {FunctionDesignerMethodModel} from \"../FunctionDesigner/Models/FunctionDesignerMethodModel\";\r\nimport {LockManager} from \"../../Components/Locker/LockManager\";\r\nimport {EVENTS as EDIT_SCREEN_EVENTS} from \"../../Screens/EditScreen/Events\";\r\nimport {EntityTypesStore} from \"../../Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {Modal} from \"../../Common/Modal\";\r\nimport {P} from \"../../Common/Promise\";\r\nimport {ControlModel} from \"../BaseControl/Models/ControlModel\";\r\nimport {FunctionDesigner} from \"../FunctionDesigner/FunctionDesigner\";\r\nimport {\r\n DecisionDialog,\r\n EVENTS as DECISION_DIALOG_EVENTS,\r\n Types as DecisionDialogTypes\r\n} from \"../../Components/Dialogs/DecisionDialog/DecisionDialog\";\r\n\r\n\r\nimport ace from 'ace-builds';\r\nimport 'ace-builds/src-noconflict/ext-language_tools';\r\nimport 'ace-builds/src-noconflict/mode-csharp';\r\nimport 'ace-builds/src-noconflict/mode-javascript';\r\nimport 'ace-builds/src-noconflict/snippets/text';\r\nimport 'ace-builds/src-noconflict/worker-javascript';\r\n\r\n\r\nimport { SignalRNotificationManager } from 'Core/Components/SignalR/SignalRNotificationManager';\r\nimport { DataTypes } from './Constants/DataTypes';\r\n\r\nimport AdditionalSettingsDropDownTemplate from 'Core/Controls/CanvasDesigner/Templates/AdditionalSettingsDropDown.html';\r\nimport { ModelState } from '../../Common/Enums/ModelState';\r\nko.templates['Core/Controls/CanvasDesigner/Templates/AdditionalSettingsDropDown'] = AdditionalSettingsDropDownTemplate;\r\n\r\nko.templates['Core/Controls/CanvasDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/CanvasDesigner/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class CanvasDesigner extends BaseControl {\r\n private _metadata: CanvasDesignerMetadataModel;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _recordId: number;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _canvas: CanvasManager;\r\n private _canvasRendered: KnockoutObservable<boolean>;\r\n private _canvasSelected: KnockoutObservable<boolean>;\r\n private _disableOnDelete: KnockoutObservable<boolean>;\r\n private _ignoreMissingSubKeys: KnockoutObservable<boolean>;\r\n private _dataModel: CanvasModel;\r\n private _packageName: KnockoutObservable<string>;\r\n private _debugMode: KnockoutObservable<boolean>;\r\n private _hasRollback: KnockoutObservable<boolean>;\r\n private _showRollbackButton: KnockoutObservable<boolean>;\r\n private _modal: Modal;\r\n\r\n validationIsActive: KnockoutObservable<boolean>;\r\n private _isForLifeStatusDesigner: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._searchTerm = ko.observable('');\r\n this._isReady = ko.observable(true);\r\n this._hasData = ko.observable(false);\r\n this._canvasRendered = ko.observable(false);\r\n this._canvasSelected = ko.observable(false);\r\n this.validationIsActive = ko.observable(false);\r\n this._disableOnDelete = ko.observable(false);\r\n this._ignoreMissingSubKeys = ko.observable(false);\r\n this._packageName = ko.observable('');\r\n this._debugMode = ko.observable(false);\r\n this._hasRollback = ko.observable(false);\r\n this._showRollbackButton = ko.observable(false);\r\n this._isDataLoading = ko.observable(false);\r\n this._isForLifeStatusDesigner = ko.observable(false);\r\n this._packageName.subscribe((newValue)=>{\r\n this.Root.Name = newValue;\r\n if(this.Root.State != ModelState.New){\r\n this.Root.State = ModelState.Changed;\r\n } \r\n });\r\n\r\n this.AddEvent('CANVAS_CREATED');\r\n this.AddEvent('ON_EDIT_CANVAS');\r\n this.AddEvent('ON_DELETE_CANVAS');\r\n this.AddEvent('CLOSE_MODAL');\r\n this.AddEvent('SAVE');\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n if(!this._isForLifeStatusDesigner()){\r\n CanvasDesignerStore.GetCanvasDesignerMetaData()\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier(this._el).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._metadata = result.ResultObject;\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n this._ignoreMissingSubKeys.subscribe((newValue) => {\r\n this.UpdateIgnoreSubKeyProperty(newValue);\r\n });\r\n\r\n this._debugMode.subscribe((newValue) => {\r\n this.UpdateDebugModeProperty(newValue);\r\n });\r\n }\r\n\r\n EditPackage() {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this._metadata.EntityId, this._recordId)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n RecordId: this._recordId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n this.Trigger('ON_EDIT_CANVAS', eventArgs.data);\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, this._recordId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, this._recordId);\r\n this.LoadScreenFor(this._recordId, true);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, this._recordId));\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n get Root(){\r\n return this._dataModel.CanvasItems.find(item=>item.TypeName === CANVAS_TYPES.DW_PACKAGE);\r\n }\r\n\r\n UpdateDebugModeProperty(value: boolean) {\r\n let root = _.find(this._dataModel.CanvasItems, (item) => {\r\n return item.Id == this._recordId;\r\n });\r\n\r\n if (root) {\r\n try {\r\n let properties = JSON.parse(root.Properties);\r\n if (properties.DebugMode === value) return;\r\n properties.DebugMode = value;\r\n root.Properties = JSON.stringify(properties);\r\n } catch (e) {\r\n root.Properties = JSON.stringify({DebugMode: value});\r\n }\r\n if (root.State != CanvasModelState.New && root.State != CanvasModelState.Deleted) {\r\n root.State = CanvasModelState.Changed;\r\n }\r\n }\r\n }\r\n\r\n ShowInModal(event) {\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'compose-email',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.PreventCloseModal.bind(self, self._modal, event));\r\n }\r\n });\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n PreventCloseModal(modal, event) {\r\n event.stopImmediatePropagation();\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.CLOSE,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n modal.Close();\r\n this.Trigger('CLOSE_MODAL', eventArgs.data);\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n UpdateIgnoreSubKeyProperty(value: boolean) {\r\n let root = _.find(this._dataModel.CanvasItems, (item) => {\r\n return item.Id == this._recordId;\r\n });\r\n\r\n if (root) {\r\n try {\r\n let properties = JSON.parse(root.Properties);\r\n if (properties.IgnoreMissingSubKey === value) return;\r\n properties.IgnoreMissingSubKey = value;\r\n root.Properties = JSON.stringify(properties);\r\n } catch (e) {\r\n root.Properties = JSON.stringify({IgnoreMissingSubKey: value});\r\n }\r\n if (root.State != CanvasModelState.New && root.State != CanvasModelState.Deleted) {\r\n root.State = CanvasModelState.Changed;\r\n }\r\n }\r\n }\r\n\r\n GetProperties() {\r\n let root = _.find(this._dataModel.CanvasItems, (item) => {\r\n return item.Id == this._recordId;\r\n });\r\n\r\n if (root) {\r\n try {\r\n return JSON.parse(root.Properties) || {};\r\n } catch (e) {\r\n return {};\r\n }\r\n }\r\n }\r\n\r\n private InitCanvas() {\r\n this._canvasSelected(true);\r\n $('#theme-container, #stencil-container, #papers-container, #inspector-container, .tabs-buttons-container').empty();\r\n $('#papers-container').append('<div class=\"papers\" id=\"paper-container\"></div>');\r\n this._canvas = new CanvasManager(this._dataModel);\r\n this._packageName(this._canvas.PackageName);\r\n\r\n this._canvas.GetShapeFactory().On(EVENTS.SHOW_FUNCTION_DESIGNER_REQUESTED, this, (evtArgs) => {\r\n if (this.HasChanges()) {\r\n const decisionDialog = new DecisionDialog({\r\n Text: LABELS.CONFIRMATION_FOR_UNSAVED_CHANGES,\r\n Type: DecisionDialogTypes.Question,\r\n });\r\n\r\n decisionDialog.On(DECISION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Save().then(() => this.ShowFunctionDesigner(evtArgs.data.PackageId, evtArgs.data.FunctionId));\r\n });\r\n decisionDialog.On(DECISION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this.ShowFunctionDesigner(evtArgs.data.PackageId, evtArgs.data.FunctionId);\r\n });\r\n decisionDialog.Show();\r\n } else {\r\n this.ShowFunctionDesigner(evtArgs.data.PackageId, evtArgs.data.FunctionId);\r\n }\r\n });\r\n }\r\n\r\n private ShowFunctionDesigner(packageId: number, functionId: number) {\r\n const controlModel = new ControlModel();\r\n controlModel.TypeName = CONTROL_TYPES.FunctionDesigner;\r\n\r\n const functionDesigner = new FunctionDesigner({\r\n Model: controlModel,\r\n Form: null,\r\n RenderMode: RenderModes.View\r\n });\r\n functionDesigner.GetPackage(packageId).then(()=>functionDesigner.SelectMethodById(functionId));\r\n functionDesigner.HideButtonContainer();\r\n functionDesigner._functionSelected(true);\r\n\r\n const modal = new Modal({});\r\n\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(functionDesigner, modal.Wrapper);\r\n\r\n modal.Show();\r\n\r\n modal.One(\"CLOSE\", this, (eventArgs: any) => {\r\n modal.Close();\r\n BlockUI.Block();\r\n this.LoadScreenFor(this._recordId);\r\n });\r\n }\r\n\r\n get HasData() {\r\n return this._hasData;\r\n }\r\n\r\n get Canvas() {\r\n return this._canvas;\r\n }\r\n\r\n Save(): P.Promise<any> {\r\n\r\n if(this._isForLifeStatusDesigner()){\r\n this.Trigger('SAVE', { dwPackage: this._dataModel });\r\n this._modal.Close();\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n let deferredResult = P.defer<any>();\r\n CanvasDesignerStore.SaveCanvas(this._dataModel)\r\n .then((result) => {\r\n new Notifier().Success(NOTIFICATIONS.CANVAS_UPDATED);\r\n this.LoadScreenFor(this._recordId);\r\n deferredResult.resolve(result);\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message);\r\n deferredResult.reject({message: err.message});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n ShowFunctionList() {\r\n BlockUI.Block();\r\n EntityTypesStore.GetTypes({\r\n EntityId: this._metadata.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n let apiPackageType = _.find(result.TableTypes, (item) => item.Name === FUNCTION_TYPES.API_PACKAGE);\r\n if (apiPackageType) {\r\n const searchScreen = new SearchScreen({\r\n EntityName: 'CD_CANVASES',\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true,\r\n ButtonAdd: false,\r\n SearchByTypes: [apiPackageType.Id]\r\n });\r\n\r\n searchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === FUNCTION_TYPES.API_PACKAGE) {\r\n this.ShowMethodList(eventArgs.data.RecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n });\r\n }\r\n\r\n ShowMethodList(apiPackageId: number) {\r\n CanvasDesignerStore.GetMethods(apiPackageId)\r\n .then((result: Array<CanvasItemModel>) => {\r\n let methodListModal = new MethodsList(result);\r\n methodListModal.On(EVENTS.METHOD_SELECTED, this, (evtArgs) => {\r\n this.AddFunction(evtArgs.data.Id);\r\n methodListModal.Close();\r\n });\r\n\r\n\r\n methodListModal.ShowInModal();\r\n });\r\n }\r\n\r\n AddFunction(id: number) {\r\n CanvasDesignerStore.GetFunctionGroup(this._recordId, id)\r\n .then((methodGroup: CanvasModel) => {\r\n this._canvas.BuildShapes(methodGroup);\r\n });\r\n }\r\n\r\n AddConstant() {\r\n BlockUI.Block();\r\n CanvasDesignerStore\r\n .GetConstantGroup(this._recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((data) => {\r\n this._canvas.BuildShapes(data);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message)\r\n });\r\n }\r\n\r\n Delete() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question,\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n BlockUI.Block();\r\n CanvasDesignerStore.DeleteCanvas({Id: this._recordId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.Trigger('ON_DELETE_CANVAS', eventArgs.data);\r\n new Notifier().Success(NOTIFICATIONS.RECORD_REMOVED);\r\n PubSub.publish('GO_TO_CANVAS_DESIGNER', null);\r\n })\r\n .fail(err => new Notifier().Failed(err.message));\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n ZoomInCanvas() {\r\n //this.Canvas.paperScroller.zoom(0.2, { max: 5, grid: 0.2 });\r\n }\r\n\r\n ZoomOutCanvas() {\r\n //this.Canvas.paperScroller.zoom(-0.2, { min: 0.2, grid: 0.2 });\r\n }\r\n\r\n EnableSocketsProtocolValidation() {\r\n this.validationIsActive(!this.validationIsActive());\r\n //this.Canvas.enableSocketsProtocolValidation();\r\n }\r\n\r\n CheckForChanges() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.CANVAS_DATA_HAS_BEEN_CHANGED,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n this.TriggerExecution();\r\n });\r\n\r\n if (this.HasChanges()) {\r\n confirmationDialog.Show();\r\n } else {\r\n this.TriggerExecution();\r\n }\r\n }\r\n\r\n Execute() {\r\n this.CheckForChanges();\r\n }\r\n\r\n TriggerExecution() {\r\n let modalHeight = this._debugMode() ? 800 : 100;\r\n let modal = new Modal(\r\n {\r\n closeButton: this._debugMode() ? 'box' : null,\r\n height: `'${modalHeight}'`,\r\n closeOnEsc: this._debugMode()\r\n }, false ); \r\n modal.On('CLOSE', this, ()=> SignalRNotificationManager.Instance.SetDebugEditor(null));\r\n\r\n let content = `<div class='row'>\r\n <div style='text-align: center; background-color: white; width: 800px;' id='dw-progress'>\r\n <h2>Execution...</h2>\r\n </div>\r\n </div>`;\r\n\r\n if(this._debugMode()){\r\n content +=`<div class='row'>\r\n <div id='dw-debugger' style='height: 500px; margin-right: 5px;'></div>\r\n </div>`;\r\n }\r\n\r\n modal.SetContent($(content));\r\n modal.Show();\r\n\r\n\t\tvar editor = ace.edit(document.getElementById('dw-debugger'));\r\n SignalRNotificationManager.Instance.SetDebugEditor(editor);\r\n\r\n CanvasDesignerStore\r\n .Execute({Id: this._recordId})\r\n .then(() => {\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.DATAWIZARD_EXECUTED);\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n this.CheckHasRollback();\r\n if(!this._debugMode()){\r\n modal.Close();\r\n } \r\n });\r\n }\r\n\r\n get CanvasRendered() {\r\n return this._canvasRendered;\r\n }\r\n\r\n SetRecordId(id) {\r\n this._recordId = id;\r\n }\r\n\r\n Search(): void {\r\n BlockUI.Block(); \r\n EntityTypesStore.GetTypes({\r\n EntityId: this._metadata.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n\r\n let dwPackage = _.find(result.TableTypes, (item) => item.Name === CANVAS_TYPES.DW_PACKAGE);\r\n if (dwPackage) {\r\n\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._metadata.EntityId,\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true,\r\n SearchByTypes: [dwPackage.Id]\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === CANVAS_TYPES.DW_PACKAGE) {\r\n this._canvasRendered(false);\r\n this._recordId = eventArgs.data.RecordId;\r\n BlockUI.Block();\r\n CanvasDesignerStore.GetCanvas({Id: this._recordId})\r\n .then((response) => {\r\n this._dataModel = response;\r\n this._ignoreMissingSubKeys(this.GetProperties().IgnoreMissingSubKey);\r\n this._debugMode(this.GetProperties().DebugMode);\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n this.CheckHasRollback();\r\n })\r\n .fail(err => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(err.message)\r\n });\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n searchScreen.On('NEW_RECORD',\r\n this,\r\n () => {\r\n this._canvasRendered(false);\r\n let typeScreen = new TypeScreen(this._metadata.EntityId, 0, true);\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n\t\t\t\t\t\t\t\tnew Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === CANVAS_TYPES.DW_PACKAGE) {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n this.NewRecord(typeId, kindId, exampleRecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n this.On('CANVAS_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n typeScreen.Show();\r\n });\r\n searchScreen.Show();\r\n }\r\n });\r\n }\r\n\r\n\r\n LoadScreenFor(recordId: number, resetCache: boolean = false) {\r\n this._isDataLoading(true);\r\n CanvasDesignerStore.GetCanvas({Id: recordId, ResetCache: resetCache})\r\n .always(()=>this._isDataLoading(false))\r\n .then((response) => {\r\n this._dataModel = response;\r\n this._ignoreMissingSubKeys(this.GetProperties().IgnoreMissingSubKey);\r\n this._debugMode(this.GetProperties().DebugMode);\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n\r\n NewRecord(tableTypeId: number, kinId: number, exampleRecordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kinId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = exampleRecordId;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.Trigger('CANVAS_CREATED');\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadScreenFor(eventArgs.data.RecordId);\r\n this._recordId = eventArgs.data.RecordId;\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n this.LoadScreenFor(null);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n private HasChanges() {\r\n const hasNewItem = _.find(this._dataModel.CanvasItems, (item: CanvasItemModel) => {\r\n return item.State !== CanvasModelState.NoChanges\r\n });\r\n\r\n if (hasNewItem) {\r\n return true;\r\n }\r\n\r\n const hasNewLink = _.find(this._dataModel.CanvasLinks, (item: CanvasLinkModel) => {\r\n return item.State !== CanvasModelState.NoChanges\r\n });\r\n\r\n return hasNewLink;\r\n }\r\n\r\n ExecuteRollback(){\r\n\t\r\n let modalHeight = this._debugMode() ? 800 : 100;\r\n let modal = new Modal(\r\n {\r\n closeButton: this._debugMode() ? 'box' : null,\r\n height: `'${modalHeight}'`,\r\n closeOnEsc: this._debugMode()\r\n }, false ); \r\n modal.On('CLOSE', this, ()=> SignalRNotificationManager.Instance.SetDebugEditor(null));\r\n\r\n let content = `<div class='row'>\r\n <div style='text-align: center; background-color: white; width: 800px;' id='dw-progress'>\r\n <h2>Rolling back...</h2>\r\n </div>\r\n </div>`;\r\n\r\n if(this._debugMode()){\r\n content +=`<div class='row'>\r\n <div id='dw-debugger' style='height: 500px; margin-right: 5px;'></div>\r\n </div>`;\r\n }\r\n\r\n modal.SetContent($(content));\r\n modal.Show();\r\n\r\n\t\tvar editor = ace.edit(document.getElementById('dw-debugger'));\r\n SignalRNotificationManager.Instance.SetDebugEditor(editor);\r\n \r\n BlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.ExecuteRollback(this._recordId)\r\n .then(()=>{\r\n\r\n if(!this._debugMode()){\r\n modal.Close();\r\n } \r\n\r\n new Notifier($(this._el)).Success(NOTIFICATIONS.ROLLBACK_APPLIED);\r\n this.CheckHasRollback();\r\n })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n\t}\r\n\r\n CheckHasRollback(){\r\n if(this._isForLifeStatusDesigner()){\r\n return;\r\n }\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.HasRollback(this._recordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).then((res)=>{\r\n this._showRollbackButton(this._canvas.DestinationDataType === DataTypes.Cyberbase);\r\n this._hasRollback(res);\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n\t}\r\n\r\n async BuildLifeStatusTriggerFlow(lifeStatusName: string){\r\n this._isForLifeStatusDesigner(true);\r\n let canvas = await CanvasDesignerStore.BuildLifeStatusTriggerFlow(lifeStatusName);\r\n this._dataModel = canvas;\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n this.CheckHasRollback();\r\n }\r\n\r\n set IsForLifeStatusDesigner(value: boolean){\r\n this._isForLifeStatusDesigner(value);\r\n }\r\n\r\n SetDataModel(canvas: CanvasModel){\r\n this._dataModel = canvas;\r\n this._canvasRendered(true);\r\n this.InitCanvas();\r\n this.CheckHasRollback();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"custom-options\\\"> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _disableOnDelete\\\" type=\\\"checkbox\\\" id=\\\"defaultCheck1\\\"> <label class=\\\"form-check-label\\\" for=\\\"defaultCheck1\\\" data-bind=\\\"text: _labels.DISABLE_ON_DELETE, attr: {'title': _labels.DISABLE_ON_DELETE}\\\"></label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _ignoreMissingSubKeys\\\" type=\\\"checkbox\\\" id=\\\"IgnoreMissingSubKeysCheck\\\"> <label class=\\\"form-check-label\\\" for=\\\"IgnoreMissingSubKeysCheck\\\" data-bind=\\\"text: _labels.IGNORE_MISSING_SUB_KEY, attr: {'title': _labels.IGNORE_MISSING_SUB_KEY}\\\">Ignore missing subKeys</label> </div> <div class=\\\"form-check inline formBtnTitle formBtnTitle--disableDel\\\"> <input class=\\\"form-check-input formBtnTitle__formCheckInput\\\" data-bind=\\\"checked: _debugMode\\\" type=\\\"checkbox\\\" id=\\\"DebugMode\\\"> <label class=\\\"form-check-label\\\" for=\\\"DebugMode\\\" data-bind=\\\"attr: {'title': 'Debug mode'}\\\">Debug mode</label> </div> </div>\";\n// Exports\nexport default code;","export const CANVAS_TYPES = {\r\n\tDW_PACKAGE: 'DWPackage',\r\n\tSOURCE: 'Source',\r\n\tTABLE: 'Table',\r\n\tPARAM: 'Param',\r\n\tDESTINATION: 'Destination',\r\n\tTRIGGER: 'Trigger',\r\n\tAPI_PACKAGE: 'APIPackage',\r\n\tAPI_METHOD: 'APIMethod',\r\n\tCSHARP_FUNCTION: 'CSharpFunction',\r\n\tJS_FUNCTION: 'JSFunction',\r\n\tGROUP: 'Group'\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\n\r\nexport class ShapeModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}\r\n\r\nexport class CanvasIconModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n\r\n\t@deserialize\r\n\tIsIcon: boolean;\r\n\r\n\t@deserialize\r\n\tIsImage: boolean;\r\n}\r\n\r\nexport class CanvasItemModel {\r\n\r\n\t@deserialize\r\n\tAPIPackageId: number;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tReplicationId: string;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatus: number;\r\n\r\n\t@deserialize\r\n\tProperties: string;\r\n\r\n\t@deserialize\r\n\tX: number;\r\n\r\n\t@deserialize\r\n\tY: number;\r\n\r\n\t@deserialize\r\n\tZ: number;\r\n\r\n\t@deserialize\r\n\tProtocolId: number;\r\n\r\n\t@deserialize\r\n\tProtocolName: string;\r\n\r\n\t@deserialize\r\n\tShapeId: number;\r\n\r\n\t@deserialize\r\n\tShapeName: string;\r\n\r\n\t@deserialize\r\n\tSideId: number;\r\n\r\n\t@deserialize\r\n\tSideName: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tCollapsible: boolean;\r\n\r\n\t@deserializeAs(CanvasIconModel)\r\n\tIcon: CanvasIconModel;\r\n\r\n\t@deserialize\r\n\tFilledFromField: number;\r\n\r\n\t@deserialize\r\n\tFilledFromTable: number;\r\n\r\n\t@deserialize\r\n\tState: number;\r\n\r\n\t@deserialize\r\n\tDefaultValue: string;\r\n\r\n\tget JsonProperties(){\r\n\t\treturn JSON.parse(this.Properties) || {};\r\n\t}\r\n}\r\n\r\nexport class CanvasLinkModel {\r\n\t@deserialize\r\n\tCanvasItem1Id: number;\r\n\r\n\t@deserialize\r\n\tCanvasItem2Id: number;\r\n\r\n\t@deserialize\r\n\tCanvasItem1Guid: string;\r\n\r\n\t@deserialize\r\n\tCanvasItem2Guid: string;\r\n\r\n\t@deserialize\r\n\tProperties: string;\r\n\r\n\t@deserialize\r\n\tState: number;\r\n\r\n\t@deserialize\r\n\tRootRecordId: number;\r\n\r\n\t@deserialize\r\n\tRootRecordGuid: string;\r\n}\r\n\r\nexport class CanvasModel {\r\n\t@deserializeAs(CanvasItemModel)\r\n\tCanvasItems: Array<CanvasItemModel>;\r\n\r\n\t@deserializeAs(CanvasLinkModel)\r\n\tCanvasLinks: Array<CanvasLinkModel>;\r\n\r\n\t@deserializeAs(ShapeModel)\r\n\tShapes: Array<ShapeModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.CanvasItems = [];\r\n\t\tthis.CanvasLinks = [];\r\n\t\tthis.Shapes = [];\r\n\t}\r\n}","import {deserialize, serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class MsAccessColumnDto {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n @deserialize\r\n\tType: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport { MsAccessColumnDto } from './MsAccessColumnDto';\r\n\r\nexport class MsAccessTableDto {\r\n\r\n\tconstructor(){\r\n\t\tthis.Columns = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(MsAccessColumnDto)\r\n\tColumns: Array<MsAccessColumnDto>;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport { MsAccessTableDto } from './MsAccessTableDto';\r\n\r\nexport class MsAccessSchemaDto {\r\n\t\r\n constructor(){\r\n this.Tables = [];\r\n }\r\n\r\n @deserializeAs(MsAccessTableDto)\r\n\tTables: Array<MsAccessTableDto>;\r\n\r\n @deserialize\r\n Path: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport { MsAccessColumnDto } from './MsAccessColumnDto';\r\n\r\nexport class DesktopFolderDto {\r\n\r\n\r\n\t@deserialize\r\n\tPath: string;\r\n}\r\n","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class TriggerDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n Description: string;\r\n\r\n @deserialize\r\n Group: string;\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport { EntitiesListModel } from 'Core/Controls/CanvasDesigner/Models/EntitiesListModel';\r\nimport { Deserialize, GenericDeserialize } from 'libs/cerialize';\r\nimport { CanvasModel, ShapeModel, CanvasItemModel } from 'Core/Controls/CanvasDesigner/Models/CanvasModel';\r\nimport { MsAccessSchemaDto } from 'Core/Controls/CanvasDesigner//Models/Dto/MsAccessSchemaDto';\r\nimport { MsAccessTableDto } from 'Core/Controls/CanvasDesigner//Models/Dto/MsAccessTableDto';\r\nimport { DesktopFolderDto } from 'Core/Controls/CanvasDesigner//Models/Dto/DesktopFolderDto';\r\nimport { TriggerDto } from 'Core/Controls/CanvasDesigner/Models/Dto/TriggerDto';\r\n\r\nexport interface IExactOnlineSettingDto{\r\n\tEndPointUrl: string;\r\n\tCallbackUrl: string;\r\n\tClientId: string;\r\n\tClientSecret: string;\r\n\tLogin: string;\r\n\tPassword: string;\r\n\tSecretKey: string;\r\n\tQueryString: string;\r\n}\r\n\r\nexport interface ICheckExactOnlineSettingsDto {\r\n\tSettings: IExactOnlineSettingDto;\r\n}\r\n\r\nexport interface IExecuteRequestModel {\r\n\tId: number;\r\n}\r\n\r\nexport interface IGetCanvasRequestModel {\r\n\tId: number;\r\n\tResetCache?: boolean;\r\n}\r\n\r\nexport interface IGetEntitiesRequestModel {\r\n\tIncludeDeleted: boolean;\r\n}\r\n\r\nexport interface IGetNodesByFunctionPackageRequestModel {\r\n\tId: number;\r\n\tShape: any;\r\n}\r\n\r\nexport interface IGetFunctionPackageRequestModel {\r\n\tDwPackageGuid: string;\r\n\tPackageId: number;\r\n\tParentType: string;\r\n}\r\n\r\nexport interface IGetTriggerRequestModel {\t\r\n\tDwPackageGuid: string;\r\n\tTriggerId: number;\r\n\tParentType: string;\r\n}\r\n\r\nexport class CanvasDesignerStore {\r\n\r\n\tstatic CheckExactOnlineSettings(params: ICheckExactOnlineSettingsDto): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/CanvasApi/CheckExactOnlineSettings',\r\n type: 'POST'\r\n },\r\n params: params\r\n };\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n deferredResult.resolve(null);\r\n }).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n\tstatic GetCanvasDesignerMetaData(): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetCanvasDesignerMetaData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteCanvas(canvasId: any): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/DeleteCanvas',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: canvasId\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveCanvas(canvas: CanvasModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/Save',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: canvas\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic SubscribeExactOnlineWebhook(packageId: number): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/SubscribeExactOnlineWebhook',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {dwPackageId: packageId}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetProductCatalogUrl(packageId: number): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetProductCatalogUrl',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {dwPackageId: packageId}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetEntities(params: IGetEntitiesRequestModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetEntities',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByEntity(dwPackageGuid: string, entityId, parentType): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByEntity',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { dwPackageGuid: dwPackageGuid, Id: entityId, ParentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByQuery(query: string, rootGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByQuery',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { query: query, rootGuid: rootGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByExactOnlineEntity(name: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByExactOnlineEntity',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { Name: name, DWPackageGuid: dwPackageGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByEWSEntity(name: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByEWSEntity',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { Name: name, DWPackageGuid: dwPackageGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByMsAccessEntity(table: MsAccessTableDto, path: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tRequest\r\n\t\t.For('api/CanvasApi/GetNodesByMsAccessEntity')\r\n\t\t.Post({ DWPackageGuid: dwPackageGuid, ParentType: parentType, Table: table, Path: path })\r\n\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)))\r\n\t\t.fail(data => deferredResult.reject({ message: JSON.parse(data.message).Message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\t\r\n\tstatic GetNodesByDesktopFolder( path: string, dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tRequest\r\n\t\t.For('api/CanvasApi/GetNodesByDesktopFolder')\r\n\t\t.Post({ DWPackageGuid: dwPackageGuid, ParentType: parentType, Path: path })\r\n\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)))\r\n\t\t.fail(data => deferredResult.reject({ message: JSON.parse(data.message).Message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetByOCIPunchOut(dwPackageGuid: string, parentType: string): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\t\t\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByOCIPunchOut',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DWPackageGuid: dwPackageGuid, parentType: parentType }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetConstantGroup(dwPackageId: number): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetConstantGroup',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DWPackageId: dwPackageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetFunctionGroup(dwPackageId: number, methodId: number): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetFunctionGroup',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DWPackageId: dwPackageId, MethodId: methodId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetNodesBySpreadsheet(file: string, fileName: string, parentType: string, dwPackageId: number, dwPackageGuid: string): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesBySpreadsheet',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { UploadFile: { Base64Data: file, Name: fileName }, parentType: parentType, dwPackageGuid: dwPackageGuid, dwPackageId: dwPackageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetCanvas(params: IGetCanvasRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetCanvas',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Execute(params: IExecuteRequestModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/Execute',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetFunctionPackages(): P.Promise<Array<CanvasItemModel>> {\r\n\t\tconst deferedResult = P.defer<Array<CanvasItemModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetPackages',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<Array<CanvasItemModel>>Deserialize(data.ResultObject, CanvasItemModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetDataWizardPackages(): P.Promise<Array<CanvasItemModel>> {\r\n\t\tconst deferedResult = P.defer<Array<CanvasItemModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetDataWizardPackages',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<Array<CanvasItemModel>>Deserialize(data.ResultObject, CanvasItemModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetEWSEntities(): P.Promise<Array<string>> {\r\n\t\tconst deferredResult = P.defer<Array<string>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetEWSEntities',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n deferredResult.resolve(Deserialize(result, String));\r\n }).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMsAccessSchema(): P.Promise<MsAccessSchemaDto> {\r\n\t\tconst deferredResult = P.defer<MsAccessSchemaDto>();\r\n\r\n Request\r\n\t\t.For('api/CanvasApi/GetMsAccessSchema')\r\n\t\t.Get()\r\n .then((result) => {\t\t\t\r\n deferredResult.resolve(GenericDeserialize(result, MsAccessSchemaDto));\r\n }).fail(data => {\r\n\t\t\t deferredResult.reject({ message: JSON.parse(data.message).Message });\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetDesktopFolderPath(): P.Promise<DesktopFolderDto> {\r\n\t\tconst deferredResult = P.defer<DesktopFolderDto>();\r\n\r\n Request\r\n\t\t.For('api/CanvasApi/GetDesktopFolderPath')\r\n\t\t.Get()\r\n .then((result) => {\t\t\t\r\n\t\t\tdeferredResult.resolve(GenericDeserialize(result, DesktopFolderDto));\r\n }).fail(data => {\r\n\t\t\t deferredResult.reject({ message: JSON.parse(data.message).Message });\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetExactOnlineEntities(): P.Promise<Array<string>> {\r\n\t\tconst deferredResult = P.defer<Array<string>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetExactOnlineEntities',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n Request.Send(requestParams)\r\n .then((result) => {\r\n deferredResult.resolve(Deserialize(result, String));\r\n }).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByPackage(params: IGetNodesByFunctionPackageRequestModel): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByPackage',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(data.ResultObject)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetNodesByPackage2(params: any): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetNodesByMethod',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(data.ResultObject)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetTriggers(): P.Promise<Array<TriggerDto>> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetTriggers',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferedResult.resolve(<Array<TriggerDto>>Deserialize(data, TriggerDto));\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetTrigger(params: IGetTriggerRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetTrigger',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetFunctionPackage(params: IGetFunctionPackageRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferedResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetFunctionPackage',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic GetDwPackageById(params: IGetFunctionPackageRequestModel): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/BuildByDwPackage',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<CanvasModel>Deserialize(data.ResultObject, CanvasModel))\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMethods(apiPackageId: number): P.Promise<Array<CanvasItemModel>> {\r\n\t\tconst deferedResult = P.defer<Array<CanvasItemModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/GetMethods',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: { ApiPackageId: apiPackageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferedResult.resolve(<Array<CanvasItemModel>>Deserialize(data.ResultObject, CanvasItemModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferedResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic ExecuteRollback(packageId: number): P.Promise<any> {\r\n\t\tconst deferedResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/ExecuteRollback',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: { DwPackageId: packageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\r\n\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic HasRollback(packageId: number): P.Promise<boolean> {\r\n\t\tconst deferedResult = P.defer<boolean>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/CanvasApi/HasRollback',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: { DwPackageId: packageId }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferedResult.resolve(result);\t\t\t\t\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferedResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });\r\n\r\n\t\treturn deferedResult.promise();\r\n\t}\r\n\r\n\tstatic BuildLifeStatusTriggerFlow(lifeStatusName: string, exampleTriggerId?: number): P.Promise<CanvasModel> {\r\n\t\tconst deferredResult = P.defer<CanvasModel>();\r\n\r\n\t\tRequest.For('api/CanvasApi/BuildLifeStatusTriggerFlow')\r\n\t\t.Get({ LifeStatusName: lifeStatusName, ExampleStatusId: exampleTriggerId })\r\n\t\t.then(data => deferredResult.resolve(<CanvasModel>Deserialize(data, CanvasModel)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","export const PROPERTIES = {\r\n\tSETTINGS: 'Settings',\r\n\tCHART_TYPE: 'ChartType',\r\n\tCHART_TITLE: 'ChartTitle',\r\n\tX_AXIS: 'XAxis',\r\n\tX_AXIS_LABEL: 'XAxisLabel',\r\n\tY_AXIS: 'YAxis',\r\n\tY_AXIS_LABEL: 'YAxisLabel',\r\n\tSORT_BY: 'SortBy',\r\n SERIES: 'Series'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam as ControlParam} from 'Core/Screens/IScreen';\r\nimport {EntityModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport DesignTemplate from 'Core/Controls/ComplexControl/Templates/Design.html'\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { CONTROL_TYPES } from '../../Constant';\r\n\r\n\r\nexport abstract class ComplexControl extends BaseControl {\r\n static designTemplate = DesignTemplate;\r\n private _isExpanded: KnockoutObservable<boolean>;\r\n protected _requiredFields: KnockoutObservableArray<RequiredFieldModel>;\r\n private _title: KnockoutObservable<string>;\r\n\r\n protected _enabled: KnockoutObservable<boolean>;\r\n protected _backgroundColor: KnockoutObservable<string>;\r\n protected _color: KnockoutObservable<string>;\r\n protected _borderColor: KnockoutObservable<string>;\r\n protected _border: KnockoutObservable<boolean>;\r\n protected _style: KnockoutComputed<{}>;\r\n IsEntitySelected: KnockoutObservable<boolean>;\r\n protected HideCaption: KnockoutObservable<boolean>;\r\n protected HideCaptionFromProperty: KnockoutObservable<boolean>;\r\n\r\n constructor(params: ControlParam, config: JSON = null) {\r\n super(params, config);\r\n this._model().IsComplexControl = true;\r\n this._requiredFields = ko.observableArray([]);\r\n this._isExpanded = ko.observable(false);\r\n this.IsEntitySelected = ko.observable(false);\r\n this._title = ko.observable('');\r\n this._style = ko.computed(() => {\r\n return null;\r\n });\r\n\r\n this._enabled = ko.observable(false);\r\n this._backgroundColor = ko.observable(null);\r\n this._color = ko.observable(null);\r\n this._borderColor = ko.observable(null);\r\n this._border = ko.observable(false);\r\n\r\n this._model.subscribe(() => {\r\n this.InitRequiredFields();\r\n });\r\n }\r\n\r\n protected abstract ApplyProperties();\r\n\r\n InitRequiredFields() {\r\n _.each(this._requiredFields(), (requiredField, index) => {\r\n const attachedField = _.find(this._model().Fields, (field) => field.Sort === index * 10);\r\n if (attachedField) {\r\n requiredField.AttachedField(attachedField);\r\n } else {\r\n requiredField.AttachedField(null);\r\n }\r\n });\r\n\r\n this._title(this.Name);\r\n \r\n this.InitIcon();\r\n\r\n this.IsEntitySelected(this._model().Fields.length > 0);\r\n }\r\n\r\n InitIcon(){\r\n if(this._model().Icon?.Id > 0 && this.GetControlTypeName() === CONTROL_TYPES.ButtonTemplate){\r\n this._icon(new Icon(this._model().Icon));\r\n return;\r\n }\r\n\r\n this._icon(this.GetDefaultIcon());\r\n\r\n var firstField = _.first(this._model().Fields);\r\n\r\n if (firstField) {\r\n if (firstField.EntityIcon) {\r\n this._icon(new Icon(firstField.EntityIcon));\r\n }\r\n }\r\n }\r\n\r\n Expand() {\r\n this._isExpanded(!this._isExpanded());\r\n }\r\n\r\n get IsExpanded(): KnockoutObservable<boolean> {\r\n return this._isExpanded;\r\n }\r\n\r\n get RequiredFields(): KnockoutObservableArray<RequiredFieldModel> {\r\n return this._requiredFields;\r\n }\r\n\r\n get Title(): KnockoutObservable<string> {\r\n return this._title;\r\n }\r\n\r\n IsDesignValid() {\r\n return _.filter(this._requiredFields(), field => !(field.AttachedField())).length === 0;\r\n }\r\n\r\n AutoSelectFieldsFromStruct(tablesStruct: any[]) {\r\n this._model().Fields = [];\r\n\r\n _.each(tablesStruct, tableStruct => {\r\n _.each(this._requiredFields(), (requiredField, index) => {\r\n if (requiredField.EntityType && requiredField.EntityType !== tableStruct.Type) {\r\n return;\r\n }\r\n\r\n const attachedField = _.find(tableStruct.Fields, (field: any) => {\r\n return field.Name === requiredField.DefaultName && field.Type === requiredField.Type;\r\n });\r\n\r\n if (attachedField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = attachedField.Id;\r\n attachedFieldModel.Name = attachedField.Name;\r\n attachedFieldModel.EntityName = tableStruct.Name;\r\n attachedFieldModel.EntityId = tableStruct.Id;\r\n attachedFieldModel.Sort = index * 10;\r\n attachedFieldModel.FieldTypeName = attachedField.Type;\r\n requiredField.AttachedField(attachedFieldModel);\r\n this._model().Fields.push(attachedFieldModel);\r\n }\r\n });\r\n });\r\n }\r\n\r\n AutoSelectFields(entityModels: Array<EntityModel>) {\r\n this._model().Fields = [];\r\n _.each(entityModels, (entityModel) => {\r\n _.each(this._requiredFields(), (requiredField, index) => {\r\n const tableFits = !requiredField.EntityType || requiredField.EntityType === entityModel.TypeName;\r\n const attachedField = tableFits && _.find(entityModel.Fields, entityField => {\r\n return entityField.FieldName === requiredField.DefaultName && entityField.FieldTypeName === requiredField.Type;\r\n });\r\n\r\n if (attachedField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = attachedField.FieldId;\r\n attachedFieldModel.Name = attachedField.FieldName;\r\n attachedFieldModel.EntityName = entityModel.EntityName;\r\n attachedFieldModel.EntityId = entityModel.EntityId;\r\n attachedFieldModel.EntityTypeName = entityModel.TypeName;\r\n attachedFieldModel.Sort = index * 10;\r\n attachedFieldModel.FieldTypeName = attachedField.FieldTypeName;\r\n requiredField.AttachedField(attachedFieldModel);\r\n this._model().Fields.push(attachedFieldModel);\r\n }\r\n });\r\n });\r\n\r\n }\r\n}\r\n","// Module\nvar code = \"<div data-bind=\\\"style: _style\\\" class=\\\"FormDesignerView complex-control form-designer-view drop-control-container form-standart-control new-control\\\"> <div class=\\\"portlet light drop-control-portlet\\\"> <div data-bind=\\\"click: Expand, preventBubble: ['click'], css: { expanded: _isExpanded() }\\\" class=\\\"collapse-button toggle-button\\\" data-button=\\\"collapse\\\"> <span data-button=\\\"collapse\\\" class=\\\"link-entity-arrow\\\"></span> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"portlet-title\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Title, style: {'color': _color}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control complex-control-input\\\" aria-describedby=\\\"sizing-addon1\\\" placeholder=\\\"\\\" readonly=\\\"readonly\\\"/> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsEntitySelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn setting-button\\\" type=\\\"button\\\">...</button> </span> </div> </div> <div data-bind=\\\"visible: IsExpanded\\\" class=\\\"portlet-content\\\"> <div class=\\\"\\\"> <!-- ko foreach: RequiredFields --> <div class=\\\"portlet-body\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: FieldName\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"\\\" aria-describedby=\\\"sizing-addon1\\\" readonly=\\\"readonly\\\"> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn\\\" type=\\\"button\\\">...</button> </span> </div> </div> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nexport class RequiredFieldModel {\r\n\t\r\n\tFieldName: KnockoutComputed<string>;\r\n\tIsSelected: KnockoutComputed<boolean>;\r\n\r\n\tconstructor(defaultName: string, typeName: string, entityTypeName: string, attachedField: AttachedFieldModel = null) {\r\n\t\tthis.DefaultName = defaultName;\r\n\t\tthis.Type = typeName;\r\n\t\tthis.EntityType = entityTypeName;\r\n\t\tthis.AttachedField = ko.observable(attachedField);\r\n\r\n\t\tthis.FieldName = ko.computed(() => {\r\n\t\t\treturn this.AttachedField() ? this.AttachedField().Name : this.DefaultName;\r\n\t\t});\r\n\r\n\t\tthis.IsSelected = ko.computed(() => {\r\n\t\t\treturn this.AttachedField() != null;\r\n\t\t});\r\n\t}\r\n\r\n\tDefaultName: string;\r\n\tType: string;\r\n\tEntityType: string;\r\n\tAttachedField: KnockoutObservable<AttachedFieldModel>;\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {\r\n\tRecordSharingModel,\r\n\tUserGroupModel,\r\n\tTableModel,\r\n\tRightsModel\r\n}from \"Core/Controls/RecordSharing/Models/RecordSharingModel\";\r\n\r\nexport class UserGroupViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tAllSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(model: UserGroupModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = !!model.Name && model.Name.trim().length > 0 ? model.Name : '(no name)';\r\n\t\tthis.AllSelected = ko.observable(false);\r\n\t}\r\n}\r\n\r\nexport class RightsViewModel {\r\n\tUserGroupId: number;\r\n\tIsShared: KnockoutObservable<boolean>;\r\n\tValue: number;\r\n\r\n\tconstructor(model: RightsModel) {\r\n\t\tthis.UserGroupId = model.UserGroupId;\r\n\t\tthis.IsShared = ko.observable(model.IsShared);\r\n\t\tthis.Value = 512;\r\n\t}\r\n}\r\n\r\nclass TableViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRights: KnockoutObservableArray<RightsViewModel>;\r\n\r\n\tconstructor(model: TableModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\r\n\t\tlet rights = model.Rights.map(right => new RightsViewModel(right));\r\n\t\tthis.Rights = ko.observableArray(rights);\r\n\t}\r\n}\r\n\r\nexport class RecordSharingViewModel {\r\n\tUserGroups: Array<UserGroupViewModel>;\r\n\tTables: Array<TableViewModel>;\r\n\r\n\tconstructor(model: RecordSharingModel) {\r\n\t\tthis.UserGroups = model.UserGroups.map(userGroup => new UserGroupViewModel(userGroup));\r\n\t\tthis.Tables = model.Tables.map(table => new TableViewModel(table));\r\n\t}\r\n}","import {RecordSharingViewModel, RightsViewModel} from \"Core/Controls/RecordSharing/Models/RecordSharingViewModel\";\r\n\r\nclass RightUnitModel {\r\n\tUserGroupId: number;\r\n\tTableId: number;\r\n\tRightsValue: number;\r\n\r\n\tconstructor(tableId: number, right: RightsViewModel) {\r\n\t\tthis.TableId = tableId;\r\n\t\tthis.UserGroupId = right.UserGroupId;\r\n\t\tthis.RightsValue = right.IsShared() ? right.Value : 0;\r\n\t}\r\n}\r\n\r\nexport class RecordSharingSerializedModel {\r\n\tSecurityProfileId: number;\r\n\tRightUnits: Array<RightUnitModel>;\r\n\r\n\tconstructor(securityProfileId: number, recordSharingViewModel: RecordSharingViewModel) {\r\n\t\tthis.SecurityProfileId = securityProfileId;\r\n\t\tthis.RightUnits= [];\r\n\r\n\t\trecordSharingViewModel.Tables.forEach(table => {\r\n\t\t\tlet tableRights = table.Rights().map(right => new RightUnitModel(table.Id, right));\r\n\t\t\tthis.RightUnits = this.RightUnits.concat(tableRights);\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\n\r\nimport ViewTemplate from \"Core/Controls/RecordSharing/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/RecordSharing/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/RecordSharing/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/RecordSharing/Templates/Design.html\"\r\n\r\nimport {RecordSharingModel} from \"Core/Controls/RecordSharing/Models/RecordSharingModel\"\r\nimport {RecordSharingViewModel} from \"Core/Controls/RecordSharing/Models/RecordSharingViewModel\"\r\nimport {RecordSharingSerializedModel} from \"Core/Controls/RecordSharing/Models/RecordSharingSerializedModel\"\r\nimport { RecordSharingStore } from \"Core/Controls/RecordSharing/Stores/RecordSharingStore\"\r\nimport { UserGroupViewModel } from \"Core/Controls/RecordSharing/Models/RecordSharingViewModel\"\r\n\r\n\r\nko.templates[\"Core/Controls/RecordSharing/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/RecordSharing/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/RecordSharing/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/RecordSharing/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nexport class RecordSharing extends BaseControl {\r\n\tprivate _profileId: number;\r\n\tprivate _data: KnockoutObservable<RecordSharingViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._profileId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tRecordSharingStore.GetRecordSharingScreen(value.SubjectRecordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet recordSharingModel: RecordSharingModel = result.ResultObject;\r\n\t\t\t\tlet recordSharingViewModel = new RecordSharingViewModel(recordSharingModel);\r\n\r\n\t\t\t\tthis._data(recordSharingViewModel);\r\n\r\n\t\t\t\t_.each(this._data().UserGroups, (userGroup) => {\r\n\t\t\t\t\tlet countCheckedValues = 0;\r\n\r\n\t\t\t\t\t_.each(this._data().Tables, (tableItem) => {\r\n\t\t\t\t\t\tconst selectedRight = _.findWhere(tableItem.Rights(), { UserGroupId: userGroup.Id });\r\n\t\t\t\t\t\tif (selectedRight && selectedRight.IsShared()) {\r\n\t\t\t\t\t\t\tcountCheckedValues++;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst isUserGroupChecked = countCheckedValues === this._data().Tables.length;\r\n\t\t\t\t\tuserGroup.AllSelected(isUserGroupChecked);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t\t\t_.each(table.Rights(), (right) => {\r\n\t\t\t\t\t\tright.IsShared.subscribe(() => {\r\n\t\t\t\t\t\t\tlet countCheckedValues = 0;\r\n\t\t\t\t\t\t\tconst selectedUserGroup = _.findWhere(this._data().UserGroups, { Id: right.UserGroupId });\r\n\r\n\t\t\t\t\t\t\t_.each(this._data().Tables, (tableItem) => {\r\n\t\t\t\t\t\t\t\tconst selectedRight = _.findWhere(tableItem.Rights(), { UserGroupId: selectedUserGroup.Id });\r\n\t\t\t\t\t\t\t\tif (selectedRight && selectedRight.IsShared()) {\r\n\t\t\t\t\t\t\t\t\tcountCheckedValues++;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tconst isUserGroupChecked = countCheckedValues === this._data().Tables.length;\r\n\t\t\t\t\t\t\tselectedUserGroup.AllSelected(isUserGroupChecked);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tCheckAll(userGroup: UserGroupViewModel) {\r\n\t\tthis.SelectAll(userGroup);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tSelectAll(userGroup: UserGroupViewModel) {\r\n\t\tconst isUserGroupChecked = !userGroup.AllSelected();\r\n\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t_.each(table.Rights(), (rightItem) => {\r\n\t\t\t\tif (rightItem.UserGroupId === userGroup.Id) {\r\n\t\t\t\t\trightItem.IsShared(isUserGroupChecked);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tDeserialize(): RecordSharingSerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn new RecordSharingSerializedModel(this._profileId, this._data());\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport class RecordSharingStore {\r\n\tstatic GetRecordSharingScreen(securityProfileId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/RecordSharingApi/GetRecordSharingScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: securityProfileId }\r\n\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable record-sharing table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: UserGroups --> <th class=\\\"security-th\\\" data-bind=\\\"text: Name\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsShared, value: Value\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable record-sharing table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: UserGroups --> <th class=\\\"security-th\\\"> <input class=\\\"security-group-input\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: $data.AllSelected(), attr: { id: 'userGroup' + Id }, click: $parents[1].CheckAll.bind($parents[1], $data)\\\"> <label class=\\\"security-group-label\\\" data-bind=\\\"text: Name, attr: { for: 'userGroup' + Id }, click: $parents[1].SelectAll.bind($parents[1], $data)\\\"></label> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsShared, value: Value\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: RoleUnits --> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: $data.TranslationUserSecurityRoleName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: RoleUnits --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: $data.IsUserInRole\\\" type=\\\"checkbox\\\" class=\\\"disabled\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { BaseControl, IControlValue } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nimport { UserRoles } from 'User/UserManager';\r\n\r\nimport ViewTemplate from \"Core/Controls/UserSecurity/Templates/View.html\";\r\nimport EditTemplate from \"Core/Controls/UserSecurity/Templates/Edit.html\";\r\nimport ToolBarTemplate from \"Core/Controls/UserSecurity/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/UserSecurity/Templates/Design.html\";\r\n\r\nimport { UserSecurityModel } from \"Core/Controls/UserSecurity/Models/UserSecurityModel\";\r\nimport { UserSecurityViewModel, RoleUnitViewModel } from \"Core/Controls/UserSecurity/Models/UserSecurityViewModel\";\r\nimport { UserSecuritySerializedModel } from \"Core/Controls/UserSecurity/Models/UserSecuritySerializedModel\";\r\nimport { UserSecurityStore } from \"Core/Controls/UserSecurity/Stores/UserSecurityStore\";\r\n\r\nko.templates[\"Core/Controls/UserSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/UserSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/UserSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/UserSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nlet UserTypes = {\r\n\tUser: \"User\",\r\n\tPortal: \"Portal\"\r\n}\r\n\r\nexport class UserSecurity extends BaseControl {\r\n\r\n\tprivate _userId: number;\r\n\tprivate _data: KnockoutObservable<UserSecurityViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties() {}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._userId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tUserSecurityStore.GetUserSecurityData(value.SubjectRecordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet userSecurityModel: UserSecurityModel = result.ResultObject;\r\n\t\t\t\tlet userSecurityViewModel = new UserSecurityViewModel(userSecurityModel.UserId,\r\n\t\t\t\t\tuserSecurityModel.UserName,\r\n\t\t\t\t\tuserSecurityModel.RoleUnits);\r\n\r\n\t\t\t\tif (value.RecordSpecsModel.IsNewRecord) {\r\n\t\t\t\t\tthis.SelectRole(userSecurityViewModel);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._data(userSecurityViewModel);\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tDeserialize(): UserSecuritySerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet userRolesKey = this._data()\r\n\t\t\t.RoleUnits\r\n\t\t\t.reduce((suma, current) => {\r\n\t\t\t\treturn current.IsUserInRole()\r\n\t\t\t\t\t? suma + current.RoleValue\r\n\t\t\t\t\t: suma;\r\n\t\t\t}, 0);\r\n\r\n\t\treturn new UserSecuritySerializedModel(this._userId, userRolesKey);\r\n\t}\r\n\r\n\tprivate SelectRole(userSecurityViewModel: UserSecurityViewModel) {\r\n\t\tlet recordType = this.GetForm().GetScreen().GetTableTypeName();\r\n\t\tif (recordType === UserTypes.User) {\r\n\t\t\tuserSecurityViewModel.SelectRole(recordType);\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {RoleUnitModel} from \"Core/Controls/UserSecurity/Models/UserSecurityModel\";\r\nimport {UserRoles} from 'User/UserManager';\r\n\r\nexport class UserSecurityViewModel {\r\n UserId: number;\r\n UserName: string;\r\n RoleUnits: RoleUnitViewModel[];\r\n\r\n constructor(userId: number, userName: string, roleUnits: RoleUnitModel[]) {\r\n this.UserId = userId;\r\n this.UserName = userName;\r\n\r\n const roleUnitsOrder = Object.values(UserRoles);\r\n this.RoleUnits = roleUnits\r\n .map(roleUnit => RoleUnitViewModel.Map(roleUnit))\r\n .sort((a, b) => roleUnitsOrder.indexOf(a.RoleValue) - roleUnitsOrder.indexOf(b.RoleValue));\r\n }\r\n\r\n SelectRole(roleName: string) {\r\n let selectedRole = _.find(this.RoleUnits, unit => unit.RoleName === roleName);\r\n if (selectedRole) {\r\n selectedRole.IsUserInRole(true);\r\n }\r\n }\r\n}\r\n\r\nexport class RoleUnitViewModel {\r\n RoleName: string;\r\n RoleValue: number;\r\n IsUserInRole: KnockoutObservable<boolean>;\r\n CouldBeChanged: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.IsUserInRole = ko.observable(false);\r\n this.CouldBeChanged = ko.observable(false);\r\n }\r\n\r\n //Translation for UserSecurity - Role\r\n get TranslationUserSecurityRoleName() {\r\n switch (this.RoleValue) {\r\n case UserRoles.User :\r\n return LABELS.USER;\r\n case UserRoles.SuperUser :\r\n return LABELS.SUPER_USER;\r\n case UserRoles.DataRole :\r\n return LABELS.DATA_ROLE;\r\n case UserRoles.DesignerLevel1 :\r\n return LABELS.DESIGNER_LEVEL1;\r\n case UserRoles.DesignerLevel2 :\r\n return LABELS.DESIGNER_LEVEL2;\r\n case UserRoles.DesignerLevel3 :\r\n return LABELS.DESIGNER_LEVEL3;\r\n case UserRoles.NetworkManager:\r\n return LABELS.NETWORK_MANAGER;\r\n case UserRoles.US :\r\n return LABELS.US;\r\n default :\r\n return this.RoleName;\r\n }\r\n }\r\n\r\n static Map(roleUnit: RoleUnitModel) {\r\n const viewModel = new RoleUnitViewModel();\r\n\r\n viewModel.RoleName = roleUnit.RoleName;\r\n viewModel.RoleValue = roleUnit.RoleValue;\r\n viewModel.IsUserInRole(roleUnit.IsUserInRole);\r\n viewModel.CouldBeChanged(roleUnit.CouldBeChanged);\r\n\r\n return viewModel;\r\n }\r\n}","export class UserSecuritySerializedModel {\r\n\tconstructor(\r\n\t\tpublic UserId: number,\r\n\t\tpublic SecurityRolesKey: number) {\r\n\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {UserSecurityModel} from \"Core/Controls/UserSecurity/Models/UserSecurityModel\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport class UserSecurityStore {\r\n\tstatic GetUserSecurityData(userId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserSecurityApi/GetUserSecurityScreen',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t},\r\n\t\t\tparams: { id: userId }\r\n\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: RoleUnits --> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: $data.TranslationUserSecurityRoleName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: RoleUnits --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: $data.IsUserInRole, value: $data.RoleValue, attr:{disabled: !$data.CouldBeChanged()}\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: Flags --> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: TranslationFlagName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td class=\\\"security-rights-td\\\" data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: Flags --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: UserHasFlag\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport ViewTemplate from \"Core/Controls/UserAllowance/Templates/View.html\";\r\nimport EditTemplate from \"Core/Controls/UserAllowance/Templates/Edit.html\";\r\nimport ToolBarTemplate from \"Core/Controls/UserAllowance/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/UserAllowance/Templates/Design.html\";\r\n\r\nimport {UserAllowanceModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceModel\";\r\nimport {UserAllowanceViewModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceViewModel\";\r\nimport {UserAllowanceSerializedModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceSerializedModel\";\r\nimport {UserAllowanceStore} from \"Core/Controls/UserAllowance/Stores/UserAllowanceStore\";\r\n\r\n\r\nko.templates[\"Core/Controls/UserAllowance/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/UserAllowance/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/UserAllowance/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/UserAllowance/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nexport class UserAllowance extends BaseControl {\r\n\tprivate _userProfileId: number;\r\n\tprivate _data: KnockoutObservable<UserAllowanceViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._userProfileId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tUserAllowanceStore.GetUserAllowanceScreen(value.SubjectRecordId)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet userAllowanceModel: UserAllowanceModel = result.ResultObject;\r\n\t\t\t\tlet userAllowanceViewModel = new UserAllowanceViewModel(userAllowanceModel);\r\n\r\n\t\t\t\tthis._data(userAllowanceViewModel);\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tDeserialize(): UserAllowanceSerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn new UserAllowanceSerializedModel(this._userProfileId, this._data());\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {UserAllowanceModel, FlagModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceModel\";\r\nimport {LABELS} from \"../../../Components/Translation/Locales\";\r\n\r\nclass FlagViewModel {\r\n\tName: string;\r\n\tValue: number;\r\n\tUserHasFlag: boolean;\r\n\r\n\tconstructor(model: FlagModel) {\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.Value = model.Value;\r\n\t\tthis.UserHasFlag = model.UserHasFlag;\r\n\t}\r\n\r\n\t//Translation for User Allowance - Flag Name\r\n\tget TranslationFlagName(){\r\n\t\tif(this.Value === 1){\r\n\t\t\treturn LABELS.OVERRIDE_SECURITY;\r\n\t\t}else if(this.Value === 2){\r\n\t\t\treturn LABELS.CHANGE_RECORD_SECURITY;\r\n\t\t}else if(this.Value === 4){\r\n\t\t\treturn LABELS.NATIVE_SQL;\r\n\t\t}else if(this.Value === 8){\r\n\t\t\treturn LABELS.PLANNING;\r\n\t\t}else if(this.Value === 32){\r\n\t\t\treturn LABELS.MAKE_PERSONAL_LABEL;\r\n\t\t}else if(this.Value === 64){\r\n\t\t\treturn LABELS.EXPORT_DATA;\r\n\t\t}else if(this.Value === 128){\r\n\t\t\treturn LABELS.MAKE_EXAMPLE_LABLE;\r\n\t\t}\r\n\r\n\t\treturn this.Name;\r\n\t}\r\n}\r\n\r\nexport class UserAllowanceViewModel {\r\n\tUserId: number;\r\n\tUserName: string;\r\n\tFlags: KnockoutObservableArray<FlagViewModel>;\r\n\r\n\tconstructor(model: UserAllowanceModel) {\r\n\t\tthis.UserId = model.UserId;\r\n\t\tthis.UserName = model.UserName;\r\n\r\n\t\tlet flags = model.Flags.map(flag => new FlagViewModel(flag));\r\n\t\tthis.Flags = ko.observableArray(flags);\r\n\t}\r\n}","import {UserAllowanceViewModel} from \"Core/Controls/UserAllowance/Models/UserAllowanceViewModel\";\r\n\r\nexport class UserAllowanceSerializedModel {\r\n\tUserId: number;\r\n\tUserAllowanceValue: number;\r\n\r\n\tconstructor(userId: number, userAllowanceViewModel: UserAllowanceViewModel) {\r\n\t\tthis.UserId = userId;\r\n\r\n\t\tlet rightsValue = 0;\r\n\r\n\t\tuserAllowanceViewModel.Flags().forEach(right => rightsValue += right.UserHasFlag ? right.Value : 0);\r\n\r\n\t\tthis.UserAllowanceValue = rightsValue;\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport class UserAllowanceStore {\r\n\tstatic GetUserAllowanceScreen(userId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/UserAllowanceApi/GetUserAllowanceScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: userId }\r\n\t\t\t})\r\n\t\t\t.then(result => deferredResult.resolve(result))\r\n\t\t\t.fail(error => console.log(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th><!-- ko text: $parent._labels.ACCOUNT_NAME_LABEL --><!-- /ko --></th> <!-- ko foreach: Flags --> <th data-bind=\\\"text: TranslationFlagName\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td data-bind=\\\"text: UserName\\\"></td> <!-- ko foreach: Flags --> <td> <input data-bind=\\\"checked: UserHasFlag, value: Value\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable table-security table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: Rights --> <th class=\\\"security-th\\\"> <div data-type=\\\"security-scope-group\\\" class=\\\"\\\"> <div class=\\\"\\\"> <label data-bind=\\\"text: $data.Name\\\"></label> </div> </div> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsChecked\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport enum Rights {\r\n\tShow = 2,\r\n\tEdit = 4,\r\n\tDelete = 8,\r\n\tCreate = 1024\r\n}\r\n\r\nexport class TalbeModel {\r\n\tId: number;\r\n\tName: string;\r\n}\r\n\r\nexport class RightModel {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tValue: number;\r\n\r\n\t@deserialize\r\n\tIsChecked: boolean;\r\n}\r\n\r\nexport class TableModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(RightModel)\r\n\tRights: Array<RightModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Rights = [];\r\n\t}\r\n}\r\n\r\nexport class TableSecurityModel {\r\n\t@deserializeAs(TableModel)\r\n\tTables: Array<TableModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Tables = [];\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\n\r\nimport ViewTemplate from \"Core/Controls/TableSecurity/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/TableSecurity/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/TableSecurity/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/TableSecurity/Templates/Design.html\"\r\n\r\nimport {TableSecurityModel} from \"Core/Controls/TableSecurity/Models/TableSecurityModel\";\r\nimport { TableSecurityViewModel, TableViewModel, RightViewModel, TableGroupViewModel} from \"Core/Controls/TableSecurity/Models/TableSecurityViewModel\";\r\nimport {TableSecuritySerializedModel} from \"Core/Controls/TableSecurity/Models/TableSecuritySerializedModel\";\r\nimport {TableSecurityStore} from \"Core/Controls/TableSecurity/Stores/TableSecurityStore\";\r\n\r\nko.templates[\"Core/Controls/TableSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/TableSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/TableSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/TableSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n\tOk,\r\n\tError\r\n}\r\n\r\nexport class TableSecurity extends BaseControl {\r\n\tprivate _userGroupId: number;\r\n\tprivate _data: KnockoutObservable<TableSecurityViewModel>;\r\n\tprivate _status: KnockoutObservable<Statuses>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._data = ko.observable(null);\r\n\t\tthis._status = ko.observable(Statuses.Ok);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._userGroupId = value.SubjectRecordId;\r\n\t\tBlockUI.Block();\r\n\t\tTableSecurityStore.GetTableSecurityScreen(value.SubjectRecordId)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tthis._status(Statuses.Error);\r\n\t\t\t\t\tthis._errorMessage(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet tableSecurityModel: TableSecurityModel = result.ResultObject;\r\n\t\t\t\tlet tableSecurityViewModel = new TableSecurityViewModel(tableSecurityModel);\r\n\r\n\t\t\t\tthis._data(tableSecurityViewModel);\r\n\r\n\t\t\t\t_.each(this._data().Rights, (right) => {\r\n\t\t\t\t\tlet countCheckedValues = 0;\r\n\t\t\t\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t\t\t\t_.each(table.Rights(), (rightItem) => {\r\n\t\t\t\t\t\t\tif (rightItem.IsChecked() && rightItem.TableGroupId === right.Id) {\r\n\t\t\t\t\t\t\t\tcountCheckedValues += 1;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (countCheckedValues === this._data().Tables.length) {\r\n\t\t\t\t\t\t\tright.AllSelected(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t\t\t_.each(table.Rights(), (right) => {\r\n\t\t\t\t\t\tright.IsChecked.subscribe((val) => {\r\n\t\t\t\t\t\t\tlet countCheckedValues = 0;\r\n\t\t\t\t\t\t\t_.each(this._data().Tables, (tableItem) => {\r\n\t\t\t\t\t\t\t\t_.each(tableItem.Rights(), (rightItem) => {\r\n\t\t\t\t\t\t\t\t\tif (right.TableGroupId === rightItem.TableGroupId && rightItem.IsChecked()) {\r\n\t\t\t\t\t\t\t\t\t\tcountCheckedValues += 1;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tif (countCheckedValues === this._data().Tables.length) {\r\n\t\t\t\t\t\t\t\t_.each(this._data().Rights, (tableGroup) => {\r\n\t\t\t\t\t\t\t\t\tif (tableGroup.Id === right.TableGroupId) {\r\n\t\t\t\t\t\t\t\t\t\ttableGroup.AllSelected(true);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t_.each(this._data().Rights, (tableGroup) => {\r\n\t\t\t\t\t\t\t\t\tif (tableGroup.Id === right.TableGroupId) {\r\n\t\t\t\t\t\t\t\t\t\ttableGroup.AllSelected(false);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._status(Statuses.Ok);\r\n\t\t\t}).always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tCheckAll(tableGroup: TableGroupViewModel) {\r\n\t\tthis.SelectAll(tableGroup);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tSelectAll(tableGroup: TableGroupViewModel) {\r\n\t\tlet tableChecking = !tableGroup.AllSelected();\r\n\t\t_.each(this._data().Tables, (table) => {\r\n\t\t\t_.each(table.Rights(), (rightItem) => {\r\n\t\t\t\tif (rightItem.TableGroupId === tableGroup.Id) {\r\n\t\t\t\t\trightItem.IsChecked(tableChecking);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tDeserialize(): TableSecuritySerializedModel {\r\n\t\tif (this._status() === Statuses.Error) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn new TableSecuritySerializedModel(this._userGroupId, this._data());\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { TableSecurityModel, TableModel, RightModel, Rights, TalbeModel } from \"Core/Controls/TableSecurity/Models/TableSecurityModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class TableGroupViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tAllSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(model: TalbeModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.AllSelected = ko.observable(false);\r\n\t}\r\n}\r\n\r\n\r\nexport class RightViewModel {\r\n\tTableGroupId: number;\r\n\tName: string;\r\n\tValue: number;\r\n\tIsChecked: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(right: RightModel) {\r\n\t\tthis.TableGroupId = right.Value;\r\n\t\tthis.Name = right.Name;\r\n\t\tthis.Value = right.Value;\r\n\t\tthis.IsChecked = ko.observable(right.IsChecked);\r\n\t}\r\n}\r\n\r\nexport class TableViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRights: KnockoutObservableArray<RightViewModel>;\r\n\r\n\tconstructor(table: TableModel) {\r\n\t\tthis.Id = table.Id;\r\n\t\tthis.Name = table.Name;\r\n\t\tlet rights = table.Rights.map(right => new RightViewModel(right));\r\n\t\tthis.Rights = ko.observableArray(rights);\r\n\t}\r\n}\r\n\r\nexport class TableSecurityViewModel {\r\n\tRights: Array<TableGroupViewModel>;\r\n\tTables: Array<TableViewModel>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: TableSecurityModel) {\r\n\t\tthis.Rights = [this._labels.SHOW, this._labels.EDIT, this._labels.DELETE, this._labels.CREATE]\r\n\t\t\t.map((rightsTranslation) =>\r\n\t\t\t\tnew TableGroupViewModel({\r\n\t\t\t\t\tName: rightsTranslation,\r\n\t\t\t\t\tId: this.GetRightsValue(rightsTranslation)\r\n\t\t\t\t}));\r\n\t\tthis.Tables = model.Tables.map(table => new TableViewModel(table));\r\n\t}\r\n\r\n\tprivate GetRightsValue(rightsTranslation: string) {\r\n\t\tconst rightsValue = [\r\n\t\t\t{\r\n\t\t\t\tTranslation: this._labels.SHOW,\r\n\t\t\t\tValue: Rights.Show\r\n\t\t\t}, {\r\n\t\t\t\tTranslation: this._labels.EDIT,\r\n\t\t\t\tValue: Rights.Edit\r\n\t\t\t}, {\r\n\t\t\t\tTranslation: this._labels.DELETE,\r\n\t\t\t\tValue: Rights.Delete\r\n\t\t\t}, {\r\n\t\t\t\tTranslation: this._labels.CREATE,\r\n\t\t\t\tValue: Rights.Create\r\n\t\t\t}];\r\n\t\treturn _.find(rightsValue, rights => rights.Translation === rightsTranslation).Value\r\n\t}\r\n}","import {TableSecurityViewModel, RightViewModel} from \"Core/Controls/TableSecurity/Models/TableSecurityViewModel\";\r\n\r\nclass RightUnitModel {\r\n\tconstructor(\r\n\t\tpublic TableId: number,\r\n\t\tpublic RightsValue: number) { }\r\n}\r\n\r\nexport class TableSecuritySerializedModel {\r\n\tUserGroupId: number;\r\n\tRightUnits: Array<RightUnitModel>;\r\n\r\n\tconstructor(userGroupId: number, tableSecurityViewModel: TableSecurityViewModel) {\r\n\t\tthis.UserGroupId = userGroupId;\r\n\r\n\t\tthis.RightUnits = tableSecurityViewModel.Tables.map(table => {\r\n\t\t\tconst tableId = table.Id;\r\n\t\t\tlet rightsValue = 0;\r\n\r\n\t\t\ttable.Rights().forEach(right => rightsValue += right.IsChecked() ? right.Value : 0);\r\n\r\n\t\t\treturn new RightUnitModel(tableId, rightsValue);\r\n\t\t});\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\ninterface ICheckRightsDto{\r\n\tTableId: number;\r\n\tSecurityWord: number;\r\n}\r\n\r\nexport class TableSecurityStore {\r\n\tstatic GetTableSecurityScreen(userGroupId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/TableSecurityApi/GetTableSecurityScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: userGroupId }\r\n\t\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic IsUserAllowedTo(request :ICheckRightsDto): P.Promise<boolean> {\r\n\t\tlet deferredResult = P.defer<boolean>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\tcacheRequest: true,\r\n\t\t\t\t\turl: '/api/TableSecurityApi/IsUserAllowedTo',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'POST'\r\n\t\t\t\t},\r\n\t\t\t\tparams: request\r\n\t\t\t}).then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-hover dataTable table-security table-striped\\\"> <thead> <tr> <th></th> <!-- ko foreach: Rights --> <th class=\\\"security-th\\\"> <div data-type=\\\"security-scope-group\\\" class=\\\"\\\"> <input class=\\\"security-group-input\\\" type=\\\"checkbox\\\" data-bind=\\\"checked: $data.AllSelected(), attr: { id: 'tableGroup' + $data.Id }, click: $parents[1].CheckAll.bind($parents[1], $data)\\\"> <label class=\\\"security-group-label\\\" data-bind=\\\"text: $data.Name, attr: { for: 'tableGroup' + $data.Id }, click: $parents[1].SelectAll.bind($parents[1], $data)\\\"></label> <!--<label data-bind=\\\"text: $data\\\"></label>--> </div> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: Tables --> <tr> <td data-bind=\\\"text: Name\\\"></td> <!-- ko foreach: Rights --> <td class=\\\"security-rights-td\\\"> <input data-bind=\\\"checked: IsChecked, value: Value\\\" type=\\\"checkbox\\\"/> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\nimport {TypeSecurityModel} from \"Core/Controls/TypeSecurity/Models/TypeSecurityModel\";\r\n\r\nexport class TypeSecurityStore {\r\n static GetTypeSecurityData(userId: number): P.Promise<TypeSecurityModel> {\r\n let deferredResult = P.defer<TypeSecurityModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TypeSecurityApi/GetTypeSecurityScreen',\r\n type: \"GET\"\r\n },\r\n params: { userId: userId }\r\n })\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error getting type security')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {TableModel} from \"Core/Controls/TypeSecurity/Models/TableModel\";\r\nimport {TypeModel} from \"./TypeModel\";\r\n\r\nexport class TypeSecurityViewModel {\r\n TablesView: TableViewModel[]\r\n constructor(tables: TableModel[]) {\r\n this.TablesView = tables.map((table: TableModel)=> {\r\n let tableView = new TableViewModel();\r\n tableView.Id = table.Id;\r\n tableView.Name = table.Name;\r\n tableView.NameTranslation = table.NameTranslation;\r\n tableView.DisplayName = table.NameTranslation || table.Name;\r\n\r\n tableView.TypesView = table.Types.map((tableType: TypeModel)=> {\r\n let tableTypeView: TypeViewModel = new TypeViewModel();\r\n tableTypeView.Id = tableType.Id;\r\n tableTypeView.Name = tableType.Name;\r\n tableTypeView.NameTranslation = tableType.NameTranslation;\r\n tableTypeView.DisplayName = tableType.NameTranslation || tableType.Name;\r\n tableTypeView.IsSelected(tableType.IsSelected);\r\n\r\n return tableTypeView;\r\n });\r\n\r\n tableView.NotTypes = !table.Types.length;\r\n tableView.NotSelectedTypes = table.Types.length && !_.some(table.Types, (type: TypeModel)=> type.IsSelected);\r\n tableView.SelectedAll(!table.Types.length || tableView.NotSelectedTypes);\r\n\r\n return tableView;\r\n })\r\n }\r\n}\r\n\r\nexport class TableViewModel {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n DisplayName: string;\r\n TypesView: Array<TypeViewModel>;\r\n NotSelectedTypes: boolean;\r\n NotTypes: boolean;\r\n SelectedAll: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.SelectedAll = ko.observable(null);\r\n }\r\n}\r\n\r\nexport class TypeViewModel {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n DisplayName: string;\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.IsSelected = ko.observable(null);\r\n }\r\n}","export class TypeSecuritySerializedModel {\r\n constructor(\r\n public UserId: number,\r\n public SelectedTypes: Array<number>) {\r\n }\r\n}","import * as ko from \"knockout\"\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {TypeSecurityStore} from \"Core/Controls/TypeSecurity/Stores/TypeSecurityStore\";\r\nimport {TypeSecurityModel} from \"Core/Controls/TypeSecurity/Models/TypeSecurityModel\";\r\n\r\nimport {\r\n TableViewModel,\r\n TypeSecurityViewModel,\r\n TypeViewModel\r\n} from \"Core/Controls/TypeSecurity/Models/TypeSecurityViewModel\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nimport {TypeSecuritySerializedModel} from \"./Models/TypeSecuritySerializedModel\";\r\nimport {TypeModel} from \"./Models/TypeModel\";\r\n\r\nimport ViewTemplate from \"Core/Controls/TypeSecurity/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/TypeSecurity/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/TypeSecurity/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/TypeSecurity/Templates/Design.html\"\r\nimport TypeSecurityDropdownTemplate from \"Core/Controls/TypeSecurity/Templates/TypeSecurityDropdownTemplate.html\";\r\n\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/TypeSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class TypeSecurity extends BaseControl {\r\n private _userId: number;\r\n private _data: KnockoutObservable<TypeSecurityViewModel>;\r\n private _typeData: KnockoutObservable<TableViewModel>;\r\n private _selectedTypes: Array<number>;\r\n private _dropDown: JBoxDropDown;\r\n private _allText: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._data = ko.observable(null);\r\n this._typeData = ko.observable(null);\r\n this._selectedTypes = [];\r\n this._dropDown = null;\r\n this._allText = this._labels.ALL;\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._userId = value.SubjectRecordId;\r\n\r\n BlockUI.Block();\r\n TypeSecurityStore.GetTypeSecurityData(value.SubjectRecordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result: TypeSecurityModel) => {\r\n let typeSecurityViewModel: TypeSecurityViewModel = new TypeSecurityViewModel(result.Tables);\r\n\r\n _.each(typeSecurityViewModel.TablesView, (table: TableViewModel)=> {\r\n _.each(table.TypesView, (typeView: TypeViewModel)=> {\r\n if (typeView.IsSelected()){\r\n this._selectedTypes.push(typeView.Id);\r\n table.SelectedAll(false);\r\n }\r\n })\r\n })\r\n this._data(typeSecurityViewModel);\r\n });\r\n }\r\n\r\n RemoveTypeItem(tablesView:TypeSecurityViewModel, typeItem:TypeViewModel) {\r\n let tableView = _.find(tablesView.TablesView, (table: TableViewModel)=> {\r\n return _.find(table.TypesView, (type)=>{\r\n return type.Id === typeItem.Id;\r\n })\r\n })\r\n\r\n typeItem.IsSelected(false);\r\n this._selectedTypes.splice(this._selectedTypes.indexOf(typeItem.Id), 1);\r\n\r\n tableView.SelectedAll(!_.some(tableView.TypesView, (type: TypeViewModel)=> type.IsSelected()));\r\n }\r\n SelectTypeItem(tableView:TableViewModel, typeItem:TypeViewModel): void {\r\n typeItem.IsSelected(true);\r\n this._selectedTypes.push(typeItem.Id);\r\n tableView.SelectedAll(false);\r\n }\r\n\r\n ShowTypeSecurityDropDown(tableView: TableViewModel, evt: MouseEvent){\r\n const target: any = evt.currentTarget;\r\n this._typeData(tableView);\r\n\r\n if (!this._dropDown) {\r\n this._dropDown = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: TypeSecurityDropdownTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._dropDown.Destroy()\r\n this._dropDown = null;\r\n },\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n\r\n this._dropDown.Toggle();\r\n }\r\n\r\n Deserialize(): TypeSecuritySerializedModel {\r\n return new TypeSecuritySerializedModel(this._userId, this._selectedTypes);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container type-security-control\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover table-type-security\\\"> <thead> <tr> <th><!-- ko text: '' --><!-- /ko --></th> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: 'Types'\\\"></th> </tr> </thead> <tbody> <!-- ko foreach: TablesView --> <tr> <td data-bind=\\\"text: DisplayName\\\"></td> <td class=\\\"security-rights-td type-security-td\\\"> <!-- ko if: NotTypes --> <span class=\\\"all-name\\\" data-bind=\\\"text: $parents[1]._allText\\\"></span> <!-- /ko --> <!-- ko if: !NotTypes --> <div class=\\\"type-security--multi-select\\\"> <div class=\\\"type-security--multi-options-list\\\"> <!-- ko foreach: TypesView --> <!-- ko if: IsSelected() --> <span class=\\\"multi-option-item type-security--multi-select_item\\\"> <span class=\\\"type-security--multi-select_remove-btn\\\" data-bind=\\\"click: $parents[2].RemoveTypeItem.bind($parents[2], $parents[1])\\\"> <i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"type-security--multi-select_name\\\" data-bind=\\\"text: DisplayName\\\"></span> </span> <!-- /ko --> <!-- /ko --> <!-- ko if: SelectedAll() --> <span class=\\\"all-text\\\" data-bind=\\\"text: $parents[1]._allText\\\"></span> <!-- /ko --> </div> <span class=\\\"btn default dropdown-search-icon type-security--multi-select_show-drop-down-btn\\\" data-bind=\\\"click: $parents[1].ShowTypeSecurityDropDown.bind($parents[1])\\\"> <i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent)\\\"> <table class=\\\"table table-striped table-hover table-type-security\\\"> <thead> <tr> <th><!-- ko text: '' --><!-- /ko --></th> <th class=\\\"security-rights-th\\\" data-bind=\\\"text: 'Types'\\\"></th> </tr> </thead> <tbody> <!-- ko foreach: TablesView --> <tr> <td data-bind=\\\"text: DisplayName\\\"></td> <td class=\\\"security-rights-td type-security-td\\\"> <!-- ko if: SelectedAll() --> <span class=\\\"all-name\\\" data-bind=\\\"text: $parents[1]._allText\\\"></span> <!-- /ko --> <!-- ko if: !SelectedAll() --> <!-- ko foreach: TypesView --> <!-- ko if: IsSelected() --> <span class=\\\"type-security-td__selected-name\\\" data-bind=\\\"text: DisplayName\\\"></span> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _typeData --> <!-- ko foreach: TypesView --> <div class=\\\"multi-select-item\\\" data-bind=\\\"css: {active: IsSelected(), disabled: IsSelected() }\\\"> <a data-bind=\\\"text: DisplayName, click: $parents[1].SelectTypeItem.bind($parents[1], $parent)\\\" href=\\\"javascript:;\\\"> </a> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"clearfix\\\"> <div class=\\\"form-group pull-right\\\"> <label><!-- ko text: $parent._labels.PRIMARY_GROUP --><!-- /ko --></label> <select class=\\\"form-control input-medium inline-block\\\" disabled=\\\"disabled\\\" data-bind=\\\"options: UserGroupSelector.UserGroups, optionsText: 'Name', value: UserGroupSelector.CurrentUserGroup\\\"></select> </div> </div> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent),\\r\\n\\t\\t\\t\\tsyncScroll: {topScroll: '.scroll-header-wrap', bottomScroll: '.scroll-body-wrap'}\\\"> <div class=\\\"sys-table clearfix\\\"> <div class=\\\"sys-table-header clearfix\\\"> <div class=\\\"table-name-column\\\"></div> <div class=\\\"scroll-header-wrap header-wrap clearfix\\\"> <div class=\\\"scroll-header\\\"> <!-- ko foreach: UserGroups --> <div class=\\\"table-name-column\\\"> <!-- ko if: $parents[1].GetIsVisibleReservationToggler($data) --> <!-- ko ifnot: IsReservationBanned --> <!-- ko ifnot: IsReserved --> <i class=\\\"fa fa-unlock transition\\\"></i> <!-- /ko --> <!-- ko if: IsReserved --> <i class=\\\"fa fa-lock transition\\\" data-bind=\\\"tooltip: { content: $parents[1]._labels.GROUP_IS_LOCKED }\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko if: IsReservationBanned --> <i data-bind=\\\"tooltip: { content: $parents[1].GetBanTitle($data) }\\\" class=\\\"fa fa-ban transition\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko text: TranslationGroupName --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <div class=\\\"sys-table-body clearfix\\\"> <div class=\\\"table-title\\\"> <!-- ko foreach: Tables --> <div data-bind=\\\"text: Name\\\" class=\\\"table-title-text\\\"></div> <!-- /ko --> </div> <div data-bind=\\\"customTable: {}\\\" class=\\\"table-body scroll-body-wrap\\\"> <!-- ko foreach: Tables --> <div class=\\\"sys-table-line clearfix\\\"> <!-- ko foreach: Rights --> <div class=\\\"body-column\\\"> <select data-bind=\\\"options: Options, optionsText: 'Translation', value: SelectedOption\\\" class=\\\"form-control input-medium\\\" disabled=\\\"disabled\\\"></select> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {\r\n RecordSecurityModel,\r\n UserGroupModel,\r\n RecordRightsModel,\r\n TableModel,\r\n RightUnitModel\r\n} from \"Core/Controls/RecordSecurity/Models/RecordSecurityModel\";\r\nimport {RecordSecurityRights} from \"Core/Common/Enums/RecordSecurityRights\";\r\nimport {LABELS} from \"../../../Components/Translation/Locales\";\r\n\r\nexport class UserGroupViewModel extends Event {\r\n Id: number;\r\n Name: string;\r\n ProfileReservationId: KnockoutObservable<number>;\r\n Options: Array<RecordRightsViewModel>;\r\n SelectedOption: KnockoutObservable<RecordRightsViewModel>;\r\n\r\n IsReserved: KnockoutComputed<boolean>;\r\n\r\n IsReservationBanned: boolean;\r\n\r\n UsesInGroups: Array<string>;\r\n\r\n constructor(profileId: number, model: UserGroupModel, options: Array<RecordRightsViewModel>, activeOption: RecordRightsViewModel) {\r\n super();\r\n\r\n this.Id = model.Id;\r\n this.Name = !!model.Name && model.Name.trim().length > 0 ? model.Name : '(no name)';\r\n this.Options = options;\r\n this.ProfileReservationId = ko.observable(model.ProfileReservationId);\r\n this.SelectedOption = ko.observable(activeOption);\r\n this.IsReserved = ko.computed(()=>{\r\n return this.ProfileReservationId() == profileId;\r\n });\r\n\r\n this.IsReservationBanned = model.UsesInGroups.length > 0;\r\n this.UsesInGroups = model.UsesInGroups;\r\n }\r\n\r\n //Translation for UserGroups\r\n get TranslationGroupName() {\r\n if (this.Id === 0) {\r\n return LABELS.OWNER_LABEL;\r\n }\r\n return this.Name;\r\n }\r\n\r\n private BlockCaption(option, item) {\r\n const index = this.Options.indexOf(item);\r\n ko.applyBindingsToNode(option, {disable: index === 0}, item);\r\n }\r\n}\r\n\r\nclass RecordRightsViewModel {\r\n constructor(public Name: string, public Value: number) {\r\n }\r\n}\r\n\r\nclass RightUnitViewModel extends Event {\r\n UserGroupId: number;\r\n Value: number;\r\n\r\n Options: Array<RecordRightsViewModel>;\r\n SelectedOption: KnockoutObservable<RecordRightsViewModel>;\r\n\r\n constructor(model: RightUnitModel, options: Array<RecordRightsViewModel>) {\r\n super();\r\n\r\n this.UserGroupId = model.UserGroupId;\r\n this.Value = model.Value;\r\n\r\n this.Options = options;\r\n\r\n let optionsReversed = options.slice().reverse();\r\n\r\n this.SelectedOption = ko.observable(_.find(optionsReversed, option => (option.Value & model.Value) === option.Value));\r\n this.SelectedOption.subscribe(newRights => this.Trigger('RightsChanged', {\r\n UserGroupId: this.UserGroupId,\r\n Value: newRights.Value\r\n }));\r\n }\r\n}\r\n\r\nclass TableViewModel extends Event {\r\n Id: number;\r\n Name: string;\r\n Rights: KnockoutObservableArray<RightUnitViewModel>;\r\n\r\n constructor(model: TableModel, rightOptions: Array<RecordRightsViewModel>) {\r\n super();\r\n\r\n this.Id = model.Id;\r\n this.Name = model.Name;\r\n\r\n let rights = model.Rights.map(right => {\r\n const rightUnit = new RightUnitViewModel(right, rightOptions);\r\n rightUnit.On('RightsChanged', this, eventArgs => this.Trigger('RightsChanged', eventArgs.data));\r\n return rightUnit;\r\n });\r\n\r\n this.Rights = ko.observableArray(rights);\r\n }\r\n}\r\n\r\nclass UserGroupSelectorItemViewModel {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}\r\n\r\nclass UserGroupSelectorViewModel {\r\n UserGroups: KnockoutObservableArray<UserGroupSelectorItemViewModel>;\r\n CurrentUserGroup: KnockoutObservable<UserGroupSelectorItemViewModel>;\r\n\r\n constructor(currentGroupId: number, userGroups: UserGroupModel[], tables: TableModel[]) {\r\n const groups = [new UserGroupSelectorItemViewModel(null, LABELS.SELECT_GROUP)];\r\n\r\n for (const table of tables) {\r\n const tableUserGroups = table.Rights\r\n .filter(rights => rights.UserGroupId > 0 && rights.Value > RecordSecurityRights.Instance.NoAccess.Value)\r\n .map(rights => rights.UserGroupId);\r\n\r\n for (const tableUserGroup of tableUserGroups) {\r\n const userGroupAdded = _.any(groups, userGroup => userGroup.Id === tableUserGroup);\r\n\r\n if (!userGroupAdded) {\r\n const userGroup = _.find(userGroups, userGroup => userGroup.Id === tableUserGroup);\r\n groups.push(new UserGroupSelectorItemViewModel(userGroup.Id, userGroup.Name));\r\n }\r\n }\r\n\r\n if (groups.length == userGroups.length) {\r\n break;\r\n }\r\n }\r\n\r\n this.UserGroups = ko.observableArray(groups);\r\n\r\n let currentGroupItem = _.find(groups, group => group.Id == currentGroupId)\r\n if (currentGroupItem) {\r\n this.CurrentUserGroup = ko.observable(currentGroupItem);\r\n return;\r\n }\r\n\r\n const currentGroup = _.find(userGroups, group => group.Id === currentGroupId);\r\n if (currentGroup) {\r\n currentGroupItem = new UserGroupSelectorItemViewModel(currentGroup.Id, currentGroup.Name);\r\n this.CurrentUserGroup = ko.observable(currentGroupItem);\r\n return;\r\n }\r\n\r\n this.CurrentUserGroup = ko.observable(groups[0]);\r\n }\r\n}\r\n\r\nexport class RecordSecurityViewModel {\r\n UserGroups: Array<UserGroupViewModel>;\r\n UserGroupSelector: UserGroupSelectorViewModel;\r\n\r\n Rights: Array<RecordRightsViewModel>;\r\n Tables: Array<TableViewModel>;\r\n\r\n constructor(profileId: number, model: RecordSecurityModel) {\r\n this.Rights = RecordSecurityRights.Instance.GetAll();\r\n this.Tables = model.Tables.map(table => {\r\n const tableView = new TableViewModel(table, this.Rights.slice(1));\r\n tableView.On('RightsChanged', this, eventArgs => {\r\n this.UpdateCurrentGroup(eventArgs.data);\r\n this.UpdateGeneralRightsSelector(eventArgs.data);\r\n });\r\n return tableView;\r\n });\r\n this.UserGroups = this.GetUserGroups(model, profileId);\r\n this.UserGroupSelector = new UserGroupSelectorViewModel(model.CurrentUserGroup, model.UserGroups, model.Tables);\r\n }\r\n\r\n private GetUserGroups(model, profileId: number) {\r\n return model.UserGroups.map(userGroup => {\r\n let activeGeneralOption = this.Rights[0];\r\n const rights = _.flatten(this.Tables.map(table => _.filter(table.Rights(), right => right.UserGroupId === userGroup.Id)));\r\n const rightsValues = _.map(rights, right => right.Value);\r\n const ifAllAreSame = () => {\r\n return (rightsValues[0] < 512)\r\n ? _.every(rightsValues, value => value === rightsValues[0] || value - 512 === rightsValues[0])\r\n : _.every(rightsValues, value => value === rightsValues[0] || value + 512 === rightsValues[0])\r\n };\r\n const allRightsAreSame = rightsValues.length > 0\r\n ? ifAllAreSame()\r\n : false;\r\n\r\n const checkValue = (right) => {\r\n return (rightsValues[0] < 512) ?\r\n right.Value - 512 === rightsValues[0]\r\n : right.Value + 512 === rightsValues[0]\r\n };\r\n\r\n if (allRightsAreSame) {\r\n activeGeneralOption = _.find(this.Rights, right => right.Value === rightsValues[0] || checkValue(right));\r\n }\r\n\r\n return new UserGroupViewModel(profileId, userGroup, this.Rights, activeGeneralOption);\r\n });\r\n }\r\n\r\n private UpdateGeneralRightsSelector(rights) {\r\n const userGroup = _.find(this.UserGroups, userGroup => userGroup.Id === rights.UserGroupId);\r\n\r\n const groupRights = _.flatten(_.map(this.Tables, table => _.filter(table.Rights(), right => right.UserGroupId === rights.UserGroupId)));\r\n const allRightsAreSame = _.every(groupRights, groupRight => groupRight.SelectedOption().Value == rights.Value);\r\n\r\n const rightsOptions = allRightsAreSame ? _.find(userGroup.Options, option => option.Value == rights.Value) : userGroup.Options[0];\r\n userGroup.SelectedOption(rightsOptions);\r\n }\r\n\r\n private UpdateCurrentGroup(rights) {\r\n const groupIndex = _.findIndex(this.UserGroupSelector.UserGroups(), userGroup => userGroup.Id === rights.UserGroupId);\r\n const userGroup = _.find(this.UserGroups, userGroup => userGroup.Id === rights.UserGroupId);\r\n const groupHasAnyRights = this.UserGroupHasAnyRights(rights.UserGroupId);\r\n\r\n if (rights.UserGroupId === 0) {\r\n return;\r\n }\r\n\r\n //Remove userGroup from dropdown if it does not have any rights\r\n if (groupIndex > -1 && !groupHasAnyRights) {\r\n this.UserGroupSelector.UserGroups.splice(groupIndex, 1);\r\n return;\r\n }\r\n\r\n //Add group to dropdown if it received first rights\r\n if (groupIndex == -1 && rights.Value > RecordSecurityRights.Instance.NoAccess.Value) {\r\n this.UserGroupSelector.UserGroups.push(new UserGroupSelectorItemViewModel(userGroup.Id, userGroup.Name));\r\n return;\r\n }\r\n }\r\n\r\n private UserGroupHasAnyRights(userGroupId: number) {\r\n const groupHasTableRights = (userGroupId: number, right: RightUnitViewModel) => {\r\n return right.UserGroupId === userGroupId && right.SelectedOption().Value > RecordSecurityRights.Instance.NoAccess.Value;\r\n };\r\n\r\n return _.any(this.Tables, table => _.any(table.Rights(), right => groupHasTableRights(userGroupId, right)));\r\n }\r\n}","import {RecordSecurityViewModel} from \"Core/Controls/RecordSecurity/Models/RecordSecurityViewModel\";\r\n\r\nclass RightUnitModel {\r\n\tconstructor(\r\n\t\tpublic UserGroupId: number,\r\n\t\tpublic TableId: number,\r\n\t\tpublic RightsValue: number) { }\r\n}\r\n\r\nexport class RecordSecuritySerializedModel {\r\n\tSecurityProfileId: number;\r\n\tRightUnits: Array<RightUnitModel>;\r\n\tCurrentUserGroup: number;\r\n\r\n\tProfileReservationGroups: Array<number>;\r\n\tProfileUnReservationGroups: Array<number>;\r\n\r\n\tconstructor(securityProfileId: number, recordSecurityViewModel: RecordSecurityViewModel) {\r\n\t\tthis.SecurityProfileId = securityProfileId;\r\n\t\tthis.CurrentUserGroup = recordSecurityViewModel.UserGroupSelector.CurrentUserGroup().Id;\r\n\t\tthis.RightUnits = [];\r\n\t\tthis.ProfileReservationGroups = _.map(_.filter(recordSecurityViewModel.UserGroups, (userGroup) => userGroup.ProfileReservationId() > 0), (group) => group.Id);\r\n\t\tthis.ProfileUnReservationGroups = _.map(_.filter(recordSecurityViewModel.UserGroups, (userGroup) => userGroup.ProfileReservationId() == 0 || userGroup.ProfileReservationId() == null), (group) => group.Id);\r\n\r\n\t\trecordSecurityViewModel.Tables.forEach(table => {\r\n\t\t\tlet tableRights = table.Rights().map(right => new RightUnitModel(right.UserGroupId, table.Id, right.SelectedOption().Value));\r\n\t\t\tthis.RightUnits = this.RightUnits.concat(tableRights);\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\"\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\n\r\nimport ViewTemplate from \"Core/Controls/RecordSecurity/Templates/View.html\"\r\nimport EditTemplate from \"Core/Controls/RecordSecurity/Templates/Edit.html\"\r\nimport ToolBarTemplate from \"Core/Controls/RecordSecurity/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/RecordSecurity/Templates/Design.html\"\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\n\r\nimport {RecordSecurityModel} from \"Core/Controls/RecordSecurity/Models/RecordSecurityModel\"\r\nimport {RecordSecurityViewModel, UserGroupViewModel} from \"Core/Controls/RecordSecurity/Models/RecordSecurityViewModel\"\r\nimport {RecordSecuritySerializedModel} from \"Core/Controls/RecordSecurity/Models/RecordSecuritySerializedModel\"\r\nimport {RecordSecurityStore} from \"Core/Controls/RecordSecurity/Stores/RecordSecurityStore\";\r\nimport { UserManager, UserRoles } from \"../../../User/UserManager\"\r\n\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/RecordSecurity/Templates/Design\"] = DesignTemplate;\r\n\r\nenum Statuses {\r\n Ok,\r\n Error\r\n}\r\n\r\nexport class RecordSecurity extends BaseControl {\r\n private _profileId: number;\r\n private _data: KnockoutObservable<RecordSecurityViewModel>;\r\n private _status: KnockoutObservable<Statuses>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this.Init();\r\n }\r\n\r\n private Init(): void {\r\n this._data = ko.observable(null);\r\n this._status = ko.observable(Statuses.Ok);\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._profileId = value.SubjectRecordId;\r\n BlockUI.Block();\r\n RecordSecurityStore.GetRecordSecurityScreen(value.SubjectRecordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n this._status(Statuses.Error);\r\n this._errorMessage(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let recordSecurityModel: RecordSecurityModel = result.ResultObject;\r\n let recordSecurityViewModel = new RecordSecurityViewModel(this.Screen.GetRecordId(), recordSecurityModel);\r\n\r\n this._data(recordSecurityViewModel);\r\n\r\n this._data().UserGroups.map((userGroup) => {\r\n userGroup.SelectedOption.subscribe((option) => {\r\n if (userGroup.Options.indexOf(option) == 0) {\r\n return;\r\n }\r\n\r\n const allRightsAreSetAlready = _.every(this._data().Tables, table => {\r\n const selectedRight = _.findWhere(table.Rights(), {UserGroupId: userGroup.Id});\r\n return selectedRight.SelectedOption().Value == option.Value;\r\n });\r\n\r\n if (allRightsAreSetAlready) {\r\n return;\r\n }\r\n\r\n this._data().Tables.map((tableITem) => {\r\n const selectedRight = _.findWhere(tableITem.Rights(), {UserGroupId: userGroup.Id});\r\n selectedRight && selectedRight.SelectedOption(option);\r\n });\r\n\r\n });\r\n });\r\n\r\n this._status(Statuses.Ok);\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n Deserialize(): RecordSecuritySerializedModel {\r\n if (this._status() === Statuses.Error) {\r\n return null;\r\n }\r\n\r\n return new RecordSecuritySerializedModel(this._profileId, this._data());\r\n }\r\n\r\n Reset() {\r\n\r\n }\r\n\r\n async Reserve(userGroup: UserGroupViewModel){\r\n if(!this.IsEditScreen){\r\n return;\r\n }\r\n if(this.IsConsultScreen){\r\n await RecordSecurityStore.ReserveGroup(this.Screen.GetRecordId(), userGroup.Id);\r\n }\r\n userGroup.ProfileReservationId(this.Screen.GetRecordId());\r\n }\r\n\r\n async UnReserve(userGroup: UserGroupViewModel){\r\n if(!this.IsEditScreen){\r\n return;\r\n }\r\n if(this.IsConsultScreen){\r\n await RecordSecurityStore.ReserveGroup(null, userGroup.Id);\r\n }\r\n userGroup.ProfileReservationId(null);\r\n }\r\n\r\n GetIsVisibleReservationToggler(userGroup: UserGroupViewModel){ \r\n return this.Screen.GetTableTypeName() === 'Profile' && userGroup.Name != 'Owner'\r\n &&\r\n UserManager.Instance.IsUserInRole(UserRoles.SuperUser)\r\n }\r\n\r\n GetBanTitle(userGroup: UserGroupViewModel){\r\n return this._labels.USED_IN_PROFILES.replace('{Profiles}', userGroup.UsesInGroups.join(', '));\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _data --> <div class=\\\"clearfix\\\"> <div class=\\\"form-group pull-right\\\"> <label><!-- ko text: $parent._labels.PRIMARY_GROUP--><!-- /ko --></label> <select class=\\\"form-control input-medium inline-block\\\" data-bind=\\\"options: UserGroupSelector.UserGroups, optionsText: 'Name', value: UserGroupSelector.CurrentUserGroup\\\"></select> </div> </div> <div class=\\\"table-container\\\" data-bind=\\\"click: $parent._help.ShowControlHelp.bind($parent._help, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tsyncScroll: {topScroll: '.scroll-header-wrap', bottomScroll: '.scroll-body-wrap'}\\\"> <div class=\\\"sys-table clearfix\\\"> <div class=\\\"sys-table-header clearfix scrollbar-padding\\\"> <div class=\\\"table-name-column\\\"></div> <div class=\\\"scroll-header-wrap header-wrap record-security-header clearfix\\\"> <div class=\\\"scroll-header\\\"> <!-- ko foreach: UserGroups --> <div class=\\\"table-name-column\\\"> <span> <!-- ko if: $parents[1].GetIsVisibleReservationToggler($data) --> <!-- ko ifnot: IsReservationBanned --> <!-- ko ifnot: IsReserved --> <a title=\\\"\\\" href=\\\"javascript:;\\\" data-bind=\\\"click: $parents[1].Reserve.bind($parents[1], $data), attr: { title: $parents[1]._labels.CLICK_TO_LOCK_GROUP}\\\"><i class=\\\"fa fa-unlock transition\\\"></i></a> <!-- /ko --> <!-- ko if: IsReserved --> <a title=\\\"\\\" href=\\\"javascript:;\\\" data-bind=\\\"click: $parents[1].UnReserve.bind($parents[1], $data), attr: { title: $parents[1]._labels.GROUP_IS_LOCKED}\\\"><i class=\\\"fa fa-lock transition\\\"></i></a> <!-- /ko --> <!-- /ko --> <!-- ko if: IsReservationBanned --> <i data-bind=\\\"attr: { title: $parents[1].GetBanTitle($data)}\\\" class=\\\"fa fa-ban transition\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko text: TranslationGroupName --><!-- /ko --> </span> <div class=\\\"body-column\\\"> <select style=\\\"width:180px\\\" data-bind=\\\"options: Options, optionsText: 'Translation', value: SelectedOption, optionsAfterRender: $data.BlockCaption.bind($data)\\\" class=\\\"form-control input-medium\\\"> </select> </div> </div> <!-- /ko --> </div> </div> </div> <div data-bind=\\\"scrollFixer: {}\\\" class=\\\"sys-table-body clearfix\\\"> <div class=\\\"table-title\\\"> <!-- ko foreach: Tables --> <div data-bind=\\\"text: Name\\\" class=\\\"table-title-text\\\"></div> <!-- /ko --> </div> <div data-bind=\\\"customTable: {}\\\" class=\\\"scroll-body-wrap table-body\\\"> <!-- ko foreach: Tables --> <div class=\\\"sys-table-line clearfix\\\"> <!-- ko foreach: Rights --> <div class=\\\"body-column\\\"> <select data-bind=\\\"options: Options, optionsText: 'Translation', value: SelectedOption\\\" class=\\\"form-control input-medium\\\"></select> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\"\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\n\r\nimport ViewTemplate from \"Core/Controls/LifestatusDesigner/Templates/View.html\"\r\nimport ToolBarTemplate from \"Core/Controls/LifestatusDesigner/Templates/ToolBar.html\"\r\nimport DesignTemplate from \"Core/Controls/LifestatusDesigner/Templates/Design.html\"\r\n\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/LifestatusDesigner/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class LifestatusDesigner extends BaseControl {\r\n\tprivate _value: KnockoutObservable<string>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._value = ko.observable(\"\");\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n\t\t\tthis._value(value.Data.Value);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-exchange\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"LifestatusDesigner\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport ViewTemplate from \"Core/Controls/DatabaseDesigner/Templates/View.html\";\r\nko.templates[\"Core/Controls/DatabaseDesigner/Templates/View\"] = ViewTemplate;\r\n\r\nimport ToolBarTemplate from \"Core/Controls/DatabaseDesigner/Templates/ToolBar.html\";\r\nko.templates[\"Core/Controls/DatabaseDesigner/Templates/ToolBar\"] = ToolBarTemplate;\r\n\r\nexport class DatabaseDesigner extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-database\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","export enum MailFolder {\r\n\tInbox,\r\n\tSent,\r\n\tDraft,\r\n\tCyberBox\r\n}","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\nimport {Detail} from 'Core/Controls/Mail/Detail';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MailStore, IMailListModelRequestModel} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {MailItemModel} from 'Core/Controls/Mail/Models/MailItemModel';\r\nimport {MailFolder} from 'Core/Controls/Mail/Enums/MailFolder';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {MAIL_LIST_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport MailListTemplate from 'Core/Controls/Mail/Templates/MailListTemplate.html';\r\n\r\nexport class MailList extends Event {\r\n\tprivate _selectAll: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _mailItems: KnockoutObservableArray<MailItemModel>;\r\n\tprivate _detailView: KnockoutObservable<Detail>;\r\n\tprivate _mailFolder: MailFolder;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(mailItems: Array<MailItemModel>, mailFolder: MailFolder, mailConnectionId) {\r\n\t\tsuper();\r\n\r\n\t\tthis._selectAll = ko.observable(false);\r\n\t\tthis._mailFolder = mailFolder;\r\n\t\tthis._mailItems = ko.observableArray(mailItems);\r\n\t\tthis.FormatDateCreated(this._mailItems());\r\n\t\tthis._detailView = ko.observable(null);\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis.AddEvent(MAIL_LIST_EVENTS.SAVE_TO_CYBER_BOX);\r\n\t\tthis.AddEvent(MAIL_LIST_EVENTS.LOAD_DATA);\r\n\r\n\t\tthis._mailItems().forEach(item => item.IsReadObservable(item.IsRead));\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn MailListTemplate;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn MailFolder[this._mailFolder];\r\n\t}\r\n\r\n\tSelectAll() {\r\n\t\tthis._mailItems().forEach(item => item.IsSelected(this._selectAll()));\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tMarkAsReadByGuid(guid: string): void {\r\n\t\tconst requestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tGuids: [guid],\r\n\t\t\tIsCyberBox: false\r\n\t\t};\r\n\r\n\t\tMailStore.MarkAsRead(requestModel)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis._mailItems().forEach(item => {\r\n\t\t\t\t\tif (item.Guid === guid) {\r\n\t\t\t\t\t\titem.IsReadObservable(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tMarkAsRead() {\r\n\t\tconst requestModel = this.GetActionModel();\r\n\r\n\t\tif (requestModel) {\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tMailStore.MarkAsRead(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis.Trigger(MAIL_LIST_EVENTS.LOAD_DATA);\r\n\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.MARKED_AS_READ);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tMarkAsUnRead() {\r\n\t\tconst requestModel = this.GetActionModel();\r\n\r\n\t\tif (requestModel) {\r\n\t\t\tBlockUI.Block();\r\n\t\t\tMailStore.MarkAsUnRead(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tthis.Trigger(MAIL_LIST_EVENTS.LOAD_DATA);\r\n\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.MARKED_AS_UNREAD);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate FormatDateCreated(mailitems: MailItemModel[]): void {\r\n\t\tconst dateNow: moment.Moment = moment();\r\n\r\n\t\tmailitems.forEach((item) => {\r\n\t\t\tconst date: moment.Moment = moment(item.DateTimeCreated);\r\n\t\t\tlet formattedDate: string;\r\n\r\n\t\t\tconst isToday: boolean = dateNow.format('L') === date.format('L');\r\n\r\n\t\t\tif (isToday) {\r\n\t\t\t\tformattedDate = date.format('LT');\r\n\t\t\t} else {\r\n\t\t\t\tconst isThisYear: boolean = dateNow.format('YYYY') === date.format('YYYY');\r\n\r\n\t\t\t\tif (!isThisYear) {\r\n\t\t\t\t\tformattedDate = date.format('L');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst _date: string = date.format('ll');\r\n\t\t\t\t\tconst yearSeparatorIndex: number = _date.indexOf(' ', 5);\r\n\r\n\t\t\t\t\tformattedDate = _date.slice(0, yearSeparatorIndex);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\titem.DateTimeCreated = formattedDate;\r\n\t\t});\r\n\t}\r\n\r\n\tDelete() {\r\n\t\tconst requestModel = this.GetActionModel();\r\n\r\n\t\tif (requestModel) {\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tMailStore.DeleteMails(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t\t})\r\n\t\t\t\t.then(() => {\r\n\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n\t\t\t\t\t_.each(requestModel.Guids,\r\n\t\t\t\t\t\t(guid) => {\r\n\t\t\t\t\t\t\tconst deleteItem = _.find(this._mailItems(), (item) => item.Guid === guid);\r\n\r\n\t\t\t\t\t\t\tif (deleteItem) {\r\n\t\t\t\t\t\t\t\tthis._mailItems.splice(this._mailItems.indexOf(deleteItem), 1);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.Trigger('LOAD_DATA', 'delete');\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tGetActionModel(): IMailListModelRequestModel {\r\n\t\tconst items = <any>this._mailItems();\r\n\t\tlet guids;\r\n\r\n\t\tconst selectedItems = _.filter(items, (mailItem: MailItemModel) => mailItem.IsSelected());\r\n\r\n\t\tif (selectedItems.length === 0) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_EMAIL);\r\n\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\tguids = selectedItems.map(item => item.Guid);\r\n\t\t}\r\n\r\n\t\tconst requestModel: IMailListModelRequestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tGuids: guids,\r\n\t\t\tIsCyberBox: false\r\n\t\t};\r\n\r\n\t\treturn requestModel;\r\n\t}\r\n\r\n\tSaveToCyberBox(itemData: MailItemModel) {\r\n\t\tthis.Trigger(MAIL_LIST_EVENTS.SAVE_TO_CYBER_BOX, itemData);\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"inbox-body\\\"> <div class=\\\"tabNamesBox\\\"> <!-- ko foreach: $parent._tabNames --> <span class=\\\"btn btn-default mail-control-tab-btn\\\" data-bind=\\\"text: Login,\\r\\n\\t\\t\\t \\t\\t\\t css: {'active': MailConnectionId === $parents[1]._mailConnectionId},\\r\\n\\t\\t\\t \\t\\t\\t click: $parents[1].SwitchTab.bind($parents[1], MailConnectionId)\\\"> </span> <!-- /ko --> </div> <div class=\\\"inbox-content table-responsive\\\"> <table class=\\\"table table-striped table-advance table-hover mailTableControl\\\"> <thead> <tr> <th colspan=\\\"4\\\" align=\\\"left\\\"> <label class=\\\"mt-checkbox mt-checkbox-single mt-checkbox-outline\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _selectAll, click: SelectAll\\\" class=\\\"mail-group-checkbox\\\"> <span></span> </label> <div class=\\\"mail-btn-group\\\"> <div class=\\\"btn-group input-actions\\\"> <a data-toggle=\\\"dropdown\\\" href=\\\"javascript:;\\\" class=\\\"btn blue btn-outline dropdown-toggle sbold\\\"> <!-- ko text: _labels.ACTIONS --><!-- /ko --> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul class=\\\"dropdown-menu\\\"> <li data-bind=\\\"click: $data.MarkAsRead.bind($data)\\\"> <a class=\\\"mark-as-read\\\"> <i class=\\\"fa fa-pencil\\\"></i> <!-- ko text: _labels.MARK_AS_READ --><!-- /ko --> </a> </li> <li data-bind=\\\"click: $data.MarkAsUnRead.bind($data)\\\"> <a class=\\\"mark-as-unread\\\"> <i class=\\\"fa fa-pencil-square\\\"></i> <!-- ko text: _labels.MARK_AS_UNREAD --><!-- /ko --> </a> </li> <li data-bind=\\\"click: $data.Delete.bind($data)\\\"> <a class=\\\"delete-selected-mail\\\"> <i class=\\\"fa fa-trash-o\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --> </a> </li> </ul> </div> <a data-bind=\\\"click: $parent.Compose.bind($parent)\\\" class=\\\"btn red compose-btn btn-block pull-left\\\" data-title=\\\"Compose\\\" href=\\\"javascript:;\\\"> <i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.SEND_EMAIL --><!-- /ko --> </a> </div> </th> <th class=\\\"pagination-control\\\" colspan=\\\"4\\\"> <div class=\\\"switch-buttons\\\"> <div class=\\\"btn-group\\\"> <button data-bind=\\\"click: $parent.SwitchItemPerPage.bind($parent, 10, $element), css: {'active': $parent.IsDefaultNumber(10)}\\\" type=\\\"button\\\" data-switch-toggle=\\\"state\\\" class=\\\"btn grey-mint btn-outline record-per-page-10\\\">10 </button> <button data-bind=\\\"click: $parent.SwitchItemPerPage.bind($parent, 25, $element), css: {'active': $parent.IsDefaultNumber(25)}\\\" type=\\\"button\\\" data-switch-set=\\\"state\\\" class=\\\"btn grey-mint btn-outline record-per-page-25\\\">25 </button> <button data-bind=\\\"click: $parent.SwitchItemPerPage.bind($parent, 50, $element), css: {'active': $parent.IsDefaultNumber(50)}\\\" type=\\\"button\\\" data-switch-set=\\\"state\\\" class=\\\"btn grey-mint btn-outline record-per-page-50\\\">50 </button> </div> </div> <div class=\\\"pagination-info-block\\\"> <span class=\\\"pagination-info\\\"> <span data-bind=\\\"text: $parent._firstMailIndex()\\\">1</span> - <span data-bind=\\\"text: $parent._lastMailIndex()\\\">30</span> <!-- ko text: _labels.OF --><!-- /ko --> <span data-bind=\\\"text: $parent._mailsCount()\\\">789</span> </span> <a data-bind=\\\"click: $parent.PrevPage.bind($parent)\\\" class=\\\"btn blue btn-outline\\\"> <i class=\\\"fa fa-angle-left\\\"></i> </a> <a data-bind=\\\"click: $parent.NextPage.bind($parent)\\\" class=\\\"btn blue btn-outline\\\"> <i class=\\\"fa fa-angle-right\\\"></i> </a> </div> </th> </tr> <tr> <td class=\\\"inbox-small-cells\\\"></td> <td class=\\\"view-message\\\"></td> <td class=\\\"view-message\\\">From</td> <td class=\\\"view-message\\\">Address</td> <td class=\\\"view-message hidden-xs\\\">Subject</td> <td class=\\\"view-message text-body\\\">Topic</td> <td class=\\\"view-message inbox-small-cells\\\"> <i class=\\\"fa fa-paperclip\\\"></i> </td> <td class=\\\"view-message\\\">Date</td> </tr> </thead> <tbody class=\\\"tab-key-navigation\\\"> <!-- ko foreach: _mailItems --> <tr data-bind=\\\"click: $parents[1].Detail.bind($parents[1]),\\r\\n\\t\\t\\t\\t\\t\\t enterKey: $parents[1].Detail.bind($parents[1], $data),\\r\\n\\t\\t\\t\\t\\t\\t css: {'unread': !IsReadObservable()}\\\" tabindex=\\\"1\\\" class=\\\"base-mail-item\\\"> <td class=\\\"inbox-small-cells\\\"> <label class=\\\"mt-checkbox mt-checkbox-single mt-checkbox-outline\\\"> <input data-bind=\\\"preventBubble: ['click'], checked: IsSelected\\\" type=\\\"checkbox\\\" value=\\\"1\\\" class=\\\"mail-checkbox\\\"> <span></span> </label> </td> <td class=\\\"inbox-small-cells\\\"> <!--<pre data-bind=\\\"text: TypeName\\\"></pre>--> <i data-bind=\\\"click: $parent.SaveToCyberBox.bind($parent), preventBubble: ['click']\\\" class=\\\"fa fa-floppy-o inbox-started save-to-cyberbox\\\"></i> </td> <td data-bind=\\\"text: FromName\\\" class=\\\"view-message\\\"></td> <td data-bind=\\\"text: FromAddress\\\" class=\\\"view-message\\\"></td> <td data-bind=\\\"text: Subject\\\" class=\\\"view-message hidden-xs subject-mail-data\\\"></td> <td data-bind=\\\"text: BodyText\\\" class=\\\"view-message text-body\\\"></td> <td class=\\\"view-message inbox-small-cells attachment-cell\\\"> <!--ko if: AttachmentsCount --> <i data-bind=\\\"text: AttachmentsCount\\\" class=\\\"fa fa-paperclip\\\"></i> <!-- /ko --> </td> <td class=\\\"view-message\\\"> <span class=\\\"mail-timestamp\\\" data-bind=\\\"text: DateTimeCreated\\\"> </span> </td> </tr> <!-- /ko --> </tbody> </table> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _mailItem --> <div class=\\\"inbox\\\"> <div class=\\\"inbox-body\\\"> <div class=\\\"inbox-header\\\"> </div> <div class=\\\"inbox-content\\\"> <!-- ko with: _mailItem --> <!--<a href=\\\"#\\\" class=\\\"inbox-anchor\\\"> Inbox </a>--> <div class=\\\"inbox-header inbox-view-header\\\"> <span class=\\\"\\\" data-bind=\\\"text: Subject\\\"></span> <div class=\\\"\\\"></div> </div> <div class=\\\"inbox-view-info\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-6 mail-info\\\"> <div class=\\\"\\\"> <div class=\\\"mail-info-label\\\">From:</div> <img class=\\\"inbox-author\\\" src=\\\"/img/Custom/Calendar-Time-256x256.png\\\"> <span data-bind=\\\"text: FromName\\\"></span> <span data-bind=\\\"text: FromAddress\\\"></span> <!--<span class=\\\"mail-timestamp\\\"--> <!--data-bind=\\\"text: $parent._dateTimeCreated\\\">--> <!--</span>--> </div> <div class=\\\"to-adresses\\\"> <div class=\\\"mail-info-label\\\">To:</div> <!-- ko foreach: $parent._toAdresses --> <span data-bind=\\\"text: $data\\\"></span> <!-- /ko --> </div> <!-- ko if: $parent._ccAdresses.length --> <div class=\\\"cc-adresses\\\"> <div class=\\\"mail-info-label\\\">cc:</div> <!-- ko foreach: $parent._ccAdresses --> <span data-bind=\\\"text: $data\\\"></span> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"col-md-6 inbox-info-btn pull-right\\\"> <div class=\\\"btn-group action-buttons\\\"> <span class=\\\"mail-timestamp pull-left sbold\\\" data-bind=\\\"text: $parent._dateTimeCreated\\\"> </span> <!-- ko if: $parent._mailComposer() --> <button data-bind=\\\"click: $parent.CancelAction.bind($parent)\\\" class=\\\"btn default\\\"> Cancel </button> <!-- /ko --> <!-- ko ifnot: $parent._mailComposer() --> <button data-bind=\\\"click: $parent.Forward.bind($parent)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-arrow-right\\\"></i><!--ko text: $parent._labels.FORWARD --><!--/ko--> </button> <button data-bind=\\\"click: $parent.Reply.bind($parent)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-reply\\\"></i><!--ko text: $parent._labels.REPLY --><!--/ko--> </button> <!-- ko if: $parent._recipientsCount > 1 --> <button data-bind=\\\"click: $parent.ReplyAll.bind($parent)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-reply\\\"></i><!--ko text: $parent._labels.REPLY_TO_ALL --><!--/ko--> </button> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <textarea data-bind=\\\"attr: { id: $parent._detailTinyGuid },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t tinymce : {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t \\t\\tisMailControl: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmin_height: '500',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoresize_min_height: '160',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoresize: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\theight: '100%',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tguid: $parent._detailTinyGuid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tafterChange: $parent.AfterDetailTinyChange.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tafterInit: $parent.AfterDetailTinyInit.bind($parent)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t\\t\\t</textarea> <hr> <div class=\\\"inbox-attached\\\"> <table class=\\\"table margin-top-10\\\" role=\\\"presentation\\\"> <tbody class=\\\"files\\\"> <!-- ko foreach: Attachments --> <tr class=\\\"template-download fade in\\\"> <td class=\\\"name\\\" style=\\\"padding-left:0!important\\\"> <span data-bind=\\\"text: Name\\\" style=\\\"background:rgba(204,204,204,.3);float:left;display:block;line-height:27px;padding:0 5px;margin:0\\\"></span> <a data-bind=\\\"click: $parents[1].Download.bind($parents[1], $data)\\\" class=\\\"btn default btn-sm\\\" data-type=\\\"\\\" data-url=\\\"\\\"> Download </a> </td> <!--<td class=\\\"delete\\\" width=\\\"10%\\\" align=\\\"right\\\"></td>--> </tr> <!-- /ko --> </tbody> </table> <!-- ko foreach: Attachments --> <!--<div class=\\\"margin-bottom-25\\\">\\r\\n\\t\\t\\t\\t\\t<div>\\r\\n\\t\\t\\t\\t\\t\\t<strong>\\r\\n\\t\\t\\t\\t\\t\\t\\t<pre data-bind=\\\"text: $data.Name\\\"></pre>\\r\\n\\t\\t\\t\\t\\t\\t</strong>\\r\\n\\t\\t\\t\\t\\t\\t<a data-bind=\\\"click: $parents[1].Download.bind($parents[1], $data)\\\" href=\\\"javascript:;\\\">Download</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>--> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: MailComposer --> <!--ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport 'lockr';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {MailStore, IDownloadAttachmentRequestModel} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {ComposeMail} from 'Core/Controls/Mail/ComposeMail';\r\nimport {MailItemExtendedModel} from 'Core/Controls/Mail//Models/MailItemExtendedModel';\r\nimport {COMPOSER_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {FileDownloader} from 'Core/Components/FileDownloader/FileDownloader';\r\n\r\nimport DetailTemplate from 'Core/Controls/Mail/Templates/DetailTemplate.html';\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport {LABELS} from \"../../Components/Translation/Locales\";\r\nimport { IComposerOptionsModel } from './Models/ComposerOptionsModel';\r\n\r\nko.templates['Core/Controls/Mail/Templates/DetailTemplate'] = DetailTemplate;\r\n\r\nexport class Detail extends Event {\r\n\tprivate _labels: LABELS;\r\n\tprivate _mailItem: MailItemExtendedModel;\r\n\tprivate _showReplyEditor: KnockoutObservable<boolean>;\r\n\tprivate _replyTinyGuid: string;\r\n\tprivate _detailTinyGuid: string;\r\n\tprivate _mailBody: KnockoutObservable<string>;\r\n\tprivate _subject: KnockoutObservable<string>;\r\n\tprivate _dateTimeCreated: KnockoutObservable<string>;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _modal: Modal;\r\n\tprivate _mailComposer: KnockoutObservable<ComposeMail>;\r\n\tprivate _recipientsCount: number;\r\n\tprivate _toAdresses: string[];\r\n\tprivate _ccAdresses: string[];\r\n\r\n\tconstructor(mailItem: MailItemExtendedModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._replyTinyGuid = Guid.NewGuid();\r\n\t\tthis._detailTinyGuid = Guid.NewGuid();\r\n\t\tthis._showReplyEditor = ko.observable(false);\r\n\t\tthis._mailComposer = ko.observable(null);\r\n\t\tthis._mailItem = mailItem;\r\n\t\tthis._mailConnectionId = null;\r\n\t\tthis._mailBody = ko.observable('');\r\n\t\tthis._subject = ko.observable('');\r\n\t\tthis._dateTimeCreated = ko.observable(this.FormatDateCreated(this._mailItem.DateTimeCreated));\r\n\t\tthis._labels = LABELS;\r\n\r\n\t\tthis.CountRecipients();\r\n\t}\r\n\r\n\t@enumerable get MailComposer(): KnockoutObservable<ComposeMail> {\r\n\t\treturn this._mailComposer;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DetailTemplate;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Mail/Templates/DetailTemplate';\r\n\t}\r\n\r\n\tShowInModal(mailConnectionId) {\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis._modal = new Modal();\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tCountRecipients() {\r\n\t\tconst destinationMails = [];\r\n\r\n\t\tthis._mailItem.DestinationMails.forEach((el) => {\r\n\t\t\tif (el.DestinationMails.length) {\r\n\t\t\t\tel.DestinationMails.map((destMail) => {\r\n\t\t\t\t\tdestinationMails.push(destMail.Mail);\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tdestinationMails.push(el.Address);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet recipients = destinationMails.concat(this._mailItem.Cc);\r\n\r\n\t\trecipients = _.uniq(recipients);\r\n\r\n\t\tthis._recipientsCount = recipients.length;\r\n\r\n\t\tconst ccAdresses = _.uniq(this._mailItem.Cc);\r\n\r\n\t\tconst toAdresses =\r\n\t\t\t_.uniq(destinationMails)\r\n\t\t\t.filter((el) => {\r\n\t\t\t\tlet isInCc = false;\r\n\r\n\t\t\t\tccAdresses.forEach((cc) => {\r\n\t\t\t\t\tif (cc === el) {\r\n\t\t\t\t\t\tisInCc = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn !isInCc;\r\n\t\t\t});\r\n\r\n\t\tthis._toAdresses = toAdresses;\r\n\t\tthis._ccAdresses = ccAdresses;\r\n\t}\r\n\r\n\tReply() {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: this._mailItem,\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tIsReply: true,\r\n\t\t\tDateTimeCreated: this._dateTimeCreated()\r\n\t\t};\r\n\r\n\t\tconst composer = new ComposeMail(composerOptions);\r\n\r\n\t\tthis._mailComposer(composer);\r\n\r\n\t\tcomposer.On(COMPOSER_EVENTS.DISCARD, this, (eventArgs) => this._mailComposer(null));\r\n\t\tcomposer.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => this._modal.Close());\r\n\t}\r\n\r\n\tReplyAll() {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: this._mailItem,\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tIsReplyAll: true,\r\n\t\t\tDateTimeCreated: this._dateTimeCreated()\r\n\t\t};\r\n\r\n\t\tconst composer = new ComposeMail(composerOptions);\r\n\r\n\t\tthis._mailComposer(composer);\r\n\r\n\t\tcomposer.On(COMPOSER_EVENTS.DISCARD, this, (eventArgs) => this._mailComposer(null));\r\n\t\tcomposer.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => this._modal.Close());\r\n\t}\r\n\r\n\tForward() {\r\n\t\tconst composerOptions: IComposerOptionsModel = {\r\n\t\t\tResponseMailItem: this._mailItem,\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tIsForward: true,\r\n\t\t\tDateTimeCreated: this._dateTimeCreated()\r\n\t\t};\r\n\r\n\t\tconst composer = new ComposeMail(composerOptions);\r\n\r\n\t\tthis._mailComposer(composer);\r\n\r\n\t\tcomposer.On(COMPOSER_EVENTS.DISCARD, this, (eventArgs) => this._mailComposer(null));\r\n\t\tcomposer.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => this._modal.Close());\r\n\t}\r\n\r\n\tCancelAction() {\r\n\t\tthis._mailComposer(null);\r\n\t}\r\n\r\n\tprivate FormatDateCreated(date) {\r\n\t\treturn moment(date).format('LLLL');\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tif (!this._mailItem.IsRead) {\r\n\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_WAS_READ, {guid: this._mailItem.Guid});\r\n\t\t}\r\n\t}\r\n\r\n\tAfterDetailTinyInit(editor) {\r\n\t\teditor.setContent(this._mailItem.Body || '');\r\n\t}\r\n\r\n\tAfterDetailTinyChange(content) {\r\n\t}\r\n\r\n\tDownload(attachment: any) {\r\n\t\tconst requestModel: IDownloadAttachmentRequestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tName: attachment.Name,\r\n\t\t\tGuid: this._mailItem.Guid\r\n\t\t};\r\n\r\n\t\tBlockUI.Block({ZIndex: ZIndexManager.Instance.NextValue});\r\n\t\tMailStore\r\n\t\t\t.DownloadAttachment(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tFileDownloader.DownloadBase64(data.ResultObject, attachment.Name);\r\n\t\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DEFAULT_ICONS} from \"Core/Constant\";\r\nimport {IControlParam, IScreen} from 'Core/Screens/IScreen';\r\nimport {MailStore} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {RenderModes, FIELD_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nimport {ComposeMail} from 'Core/Controls/Mail/ComposeMail';\r\nimport {MailList} from 'Core/Controls/Mail/MailList';\r\nimport {Detail} from 'Core/Controls/Mail/Detail';\r\nimport {MailItemModel} from 'Core/Controls/Mail/Models/MailItemModel';\r\nimport {GetMailsResponseModel} from 'Core/Controls/Mail/Models/GetMailsResponseModel';\r\nimport {GetTabsResponseModel} from 'Core/Controls/Mail/Models/GetTabsResponseModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {MailFolder} from 'Core/Controls/Mail/Enums/MailFolder';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\n\r\nimport {MailItemExtendedModel} from 'Core/Controls/Mail/Models/MailItemExtendedModel';\r\nimport {ScreenDataModel} from '../../ScreenManager/Models/ScreenDataModel';\r\nimport {ControlDataModel} from '../../ScreenManager/Models/ControlDataModel';\r\n\r\nimport {InsertOrUpdateRecordStore} from 'Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore';\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel';\r\nimport {ISendMailRequestModel} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {COMPOSER_EVENTS, MAIL_LIST_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {CONTROL_TYPES} from \"Core/Constant\";\r\nimport {LinkList} from \"Core/Controls/LinkList/LinkList\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\nimport {NewRelationModel} from \"Core/Controls/LinkList/Models/NewRelationModel\";\r\n\r\nimport {DocumentStore} from 'Core/Controls/Document/Stores/DocumentStore';\r\nimport { SECURITY_LEVELS } from \"Core/Constants/SecurityLevels\";\r\n\r\n\r\nimport ViewTemplate from 'Core/Controls/Mail/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Mail/Templates/ToolBar.html';\r\nimport EditTemplate from 'Core/Controls/Mail/Templates/Edit.html';\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/Controls/Mail/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Mail/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/Mail/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Mail/Templates/Edit'] = EditTemplate;\r\n\r\nenum MailTypes {\r\n\tIn,\r\n\tOut\r\n}\r\n\r\nexport class Mail extends ComplexControl {\r\n\tprivate _mailList: KnockoutObservable<MailList>;\r\n\tprivate _currentFolder: KnockoutObservable<MailFolder>;\r\n\tprivate _loadInProgress: boolean;\r\n\tprivate _mailItems: KnockoutObservableArray<MailItemModel>;\r\n\r\n\tprivate _recordNameField: AttachedFieldModel;\r\n\tprivate _recordTypeField: AttachedFieldModel;\r\n\tprivate _mailBodyField: AttachedFieldModel;\r\n\tprivate _mailFromField: AttachedFieldModel;\r\n\tprivate _mailGuidField: AttachedFieldModel;\r\n\r\n\tprivate _mailsCount: KnockoutObservable<number>;\r\n\tprivate _itemPerPage: KnockoutObservable<number>;\r\n\tprivate _currentPage: KnockoutObservable<number>;\r\n\tprivate _firstMailIndex: KnockoutObservable<number>;\r\n\tprivate _lastMailIndex: KnockoutObservable<number>;\r\n\tprivate _totalPage: KnockoutObservable<number>;\r\n\tprivate _tabNames: KnockoutObservable<object>;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _oldMailContentId: number;\r\n\tprivate _tabNumber: number;\r\n\tprivate _isLoad: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis._model().IsComplexControl = true;\r\n\t\tthis._currentFolder = ko.observable(MailFolder.Inbox);\r\n\t\tthis._mailsCount = ko.observable(0);\r\n\t\tthis._itemPerPage = ko.observable(10);\r\n\t\tthis._currentPage = ko.observable(1);\r\n\t\tthis._firstMailIndex = ko.observable(1);\r\n\t\tthis._lastMailIndex = ko.observable(0);\r\n\t\tthis._totalPage = ko.observable(0);\r\n\t\tthis._mailList = ko.observable(null);\r\n\t\tthis._isLoad = false;\r\n\t\tthis._mailConnectionId = 0;\r\n\t\tthis._tabNumber = 0;\r\n\t\tthis._tabNames = ko.observable(null);\r\n\t\tthis._mailItems = ko.observableArray([]);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Mail));\r\n\t\t//TODO save mail body as document\r\n\t\tif (this.GetRenderMode() === RenderModes.View) {\r\n\t\t\tthis._recordNameField = this._model().Fields[0];\r\n\t\t\tthis._recordTypeField = this._model().Fields[1];\r\n\t\t\t//this._mailBodyField = this._model().Fields[2];\r\n\t\t\tthis._mailFromField = this._model().Fields[2];\r\n\t\t\tthis._mailGuidField = this._model().Fields[3];\r\n\t\t\tthis.LoadTabs();\r\n\t\t\tthis._loadInProgress = true;\r\n\t\t}\r\n\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('BODY', FIELD_TYPES.Document, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('SERVERMAILID', FIELD_TYPES.Text, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\t}\r\n\r\n\t@enumerable get CurrentFolder(): string {\r\n\t\treturn MailFolder[this._currentFolder()];\r\n\t}\r\n\r\n\tCompose() {\r\n\t\tthis._currentFolder(null);\r\n\r\n\t\tconst composeMail = new ComposeMail({ResponseMailItem: null});\r\n\r\n\t\tcomposeMail.AddScreen(this._form.GetScreen());\r\n\t\tcomposeMail.ShowInModal(this._mailConnectionId);\r\n\r\n\t\t//composeMail.On(COMPOSER_EVENTS.EMAIL_SENT, this, (eventArgs) => {\r\n\t\t//\tthis.SaveEmail(eventArgs.data.Mail, eventArgs.data.Guid);\r\n\t\t//});\r\n\t}\r\n\r\n\tSaveEmail(sendMail: ISendMailRequestModel, Guid: string) {\r\n\r\n\t\t// TODO provide as complex control\r\n\t\tDocumentStore.GetDocumentEntityId().then(documentEntityId => {\r\n\t\t\tEntityTypesStore\r\n\t\t\t\t.GetTypes({\r\n\t\t\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\t\tParentTypeId: 0,\r\n\t\t\t\t\tWithRoot: false,\r\n\t\t\t\t\tOnlyEnabled: true\r\n\t\t\t\t})\r\n\t\t\t\t.then((entityTypes) => {\r\n\t\t\t\t\tconst outType = _.find(entityTypes.TableTypes, (type) => {\r\n\t\t\t\t\t\treturn type.Name === MailTypes[MailTypes.Out];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (outType) {\r\n\t\t\t\t\t\tconst dataModel = new DataModel();\r\n\r\n\t\t\t\t\t\tdataModel.EntityTypeId = outType.Id;\r\n\t\t\t\t\t\tdataModel.EntityId = this._form.GetScreen().GetEntityId();\r\n\r\n\t\t\t\t\t\tconst guidData = [];\r\n\r\n\t\t\t\t\t\tguidData.push(`${this._mailGuidField.EntityName}.${this._mailGuidField.Name}`);\r\n\t\t\t\t\t\tguidData.push(Guid);\r\n\t\t\t\t\t\tdataModel.FieldValueList.push(guidData);\r\n\r\n\t\t\t\t\t\tconst nameData = [];\r\n\r\n\t\t\t\t\t\tnameData.push(`${this._recordNameField.EntityName}.${this._recordNameField.Name}`);\r\n\t\t\t\t\t\tnameData.push(sendMail.Subject);\r\n\t\t\t\t\t\tdataModel.FieldValueList.push(nameData);\r\n\r\n\t\t\t\t\t\tconst bodyData = [];\r\n\r\n\t\t\t\t\t\tif (this._mailBodyField) {\r\n\t\t\t\t\t\t\tbodyData.push(`${this._mailBodyField.EntityName}.${this._mailBodyField.Name}`);\r\n\t\t\t\t\t\t\tbodyData.push(sendMail.Body);\r\n\t\t\t\t\t\t\tdataModel.FieldValueList.push(bodyData);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst fromMailData = [];\r\n\r\n\t\t\t\t\t\tfromMailData.push(`${this._mailFromField.EntityName}.${this._mailFromField.Name}`);\r\n\r\n\t\t\t\t\t\tlet fromMail = '';\r\n\r\n\t\t\t\t\t\t_.each(sendMail.Recipients, (recipient) => fromMail = `${recipient.Mail}`);\r\n\r\n\t\t\t\t\t\tfromMailData.push(fromMail);\r\n\t\t\t\t\t\tdataModel.FieldValueList.push(fromMailData);\r\n\r\n\t\t\t\t\t\tconst newRelations = [];\r\n\r\n\t\t\t\t\t\t_.each(sendMail.Attachements, (attachment) => {\r\n\t\t\t\t\t\t\tnewRelations.push({\r\n\t\t\t\t\t\t\t\tControlId: 0,\r\n\t\t\t\t\t\t\t\tRecordId: 0,\r\n\t\t\t\t\t\t\t\tRelatedEntityId: documentEntityId,\r\n\t\t\t\t\t\t\t\tRelatedRecordId: attachment.DocumentId\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tdataModel.LinklistChanges = {NewRelations: newRelations};\r\n\r\n\t\t\t\t\t\tInsertOrUpdateRecordStore.UpdateData(dataModel)\r\n\t\t\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\t\t\tnew Notifier().Success(NOTIFICATIONS.RECORD_SAVED);\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnew Notifier().Failed(NOTIFICATIONS.OUT_TYPE_NOT_FOUND);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tUpdatePagination() {\r\n\t\tthis._totalPage(Math.ceil(this._mailsCount() / this._itemPerPage()));\r\n\r\n\t\tthis._firstMailIndex(this._currentPage() * this._itemPerPage() - this._itemPerPage() + 1);\r\n\r\n\t\tlet expectedLastNumber = this._currentPage() * this._itemPerPage();\r\n\r\n\t\tif (expectedLastNumber < this._mailsCount()) {\r\n\t\t\tthis._lastMailIndex(expectedLastNumber);\r\n\t\t} else {\r\n\t\t\tthis._lastMailIndex(this._mailsCount());\r\n\t\t}\r\n\t}\r\n\r\n\tPrevPage() {\r\n\t\tlet expectedPage = this._currentPage() - 1;\r\n\r\n\t\tif (expectedPage >= 1) {\r\n\t\t\tthis._currentPage(this._currentPage() - 1);\r\n\t\t}\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tNextPage() {\r\n\t\tlet expectedPage = this._currentPage() + 1;\r\n\r\n\t\tif (expectedPage <= this._totalPage()) {\r\n\t\t\tthis._currentPage(this._currentPage() + 1);\r\n\t\t}\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tSwitchItemPerPage(number, element, bindedData) {\r\n\t\tthis._itemPerPage(number);\r\n\t\tthis._currentPage(1);\r\n\t\tthis._firstMailIndex(1);\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tIsDefaultNumber(number) {\r\n\t\treturn this._itemPerPage() === number;\r\n\t}\r\n\r\n\tLoadTabs() {\r\n\t\tlet self = this;\r\n\r\n\t\tthis.BlockUI();\r\n\r\n\t\tMailStore.GetMailTabs()\r\n\t\t\t.always(() => {\r\n\t\t\t\tself.UnblockUI();\r\n\t\t\t})\r\n\t\t\t.then((tabs: GetTabsResponseModel) => {\r\n\t\t\t\tthis._tabNames(tabs);\r\n\t\t\t\tlet count = 0;\r\n\t\t\t\tlet i;\r\n\r\n\t\t\t\tfor (i in tabs) {\r\n\t\t\t\t\tif (tabs.hasOwnProperty(i)) {\r\n\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._tabNumber >= count) {\r\n\t\t\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_ACCOUNT);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._mailConnectionId = tabs[this._tabNumber].MailConnectionId ?\r\n\t\t\t\t\t\ttabs[this._tabNumber].MailConnectionId :\r\n\t\t\t\t\t\ttabs[this._tabNumber + 1].MailConnectionId;\r\n\r\n\t\t\t\t\tthis.LoadData();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSwitchTab(mailConnectionId) {\r\n\t\tthis._oldMailContentId = this._mailConnectionId;\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis._currentPage(1);\r\n\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tthis.BlockUI();\r\n\r\n\t\tconst self = this;\r\n\r\n\t\tMailStore.GetMailFolder({\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tPageSize: this._itemPerPage(),\r\n\t\t\tPage: this._currentPage()\r\n\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tself.UnblockUI();\r\n\r\n\t\t\t\tthis._loadInProgress = false;\r\n\t\t\t})\r\n\t\t\t.then((mailItems: GetMailsResponseModel) => {\r\n\r\n\r\n\t\t\t\tthis._mailsCount(mailItems.TotalItems);\r\n\t\t\t\tthis.UpdatePagination();\r\n\t\t\t\tthis._totalPage(Math.ceil(this._mailsCount() / this._itemPerPage()));\r\n\t\t\t\tthis._mailItems(mailItems.Items);\r\n\r\n\t\t\t\tthis.InitView(this._mailItems);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tif (this._oldMailContentId) {\r\n\t\t\t\t\tthis._mailConnectionId = this._oldMailContentId;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._tabNumber = this._tabNumber + 1;\r\n\t\t\t\t\tthis.LoadTabs();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tBlockUI() {\r\n\t\tif (this._el) {\r\n\t\t\tBlockUI.Block({Target: this._el});\r\n\t\t} else {\r\n\t\t\tBlockUI.Block();\r\n\t\t}\r\n\t}\r\n\r\n\tUnblockUI() {\r\n\t\tif (this._el) {\r\n\t\t\tBlockUI.Unblock(this._el);\r\n\t\t} else {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}\r\n\t}\r\n\r\n\tInitView(mailItems: KnockoutObservableArray<MailItemModel>) {\r\n\t\tthis._mailList(new MailList(mailItems(), this._currentFolder(), this._mailConnectionId));\r\n\r\n\t\tthis._mailList().On(MAIL_LIST_EVENTS.LOAD_DATA, this, (eventArgs: any) => {\r\n\t\t\tif (!_.isEmpty(eventArgs.data)) {\r\n\t\t\t\tthis._isLoad = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\r\n\t\tthis._mailList().On(MAIL_LIST_EVENTS.SAVE_TO_CYBER_BOX, this, (eventArgs) => {\r\n\t\t\tconst mailItem = eventArgs.data as MailItemModel;\r\n\r\n\t\t\tBlockUI.Block();\r\n\r\n\t\t\tMailStore\r\n\t\t\t\t.GetMailById({\r\n\t\t\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\t\t\tGuid: mailItem.Guid,\r\n\t\t\t\t\tIsIncludeAttachmentContent: true\r\n\t\t\t\t})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tthis.SaveToEditScreen(data);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tShowEditScreen(screenData: ScreenDataModel, mailItemDetail: MailItemExtendedModel) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tEntityTypesStore\r\n\t\t\t.GetTypes({\r\n\t\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\tParentTypeId: 0,\r\n\t\t\t\tWithRoot: false,\r\n\t\t\t\tOnlyEnabled: true\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(async(entityTypes) => {\r\n\t\t\t\tconst inType = _.find(entityTypes.TableTypes, (type) => type.Name === MailTypes[MailTypes.In]);\r\n\t\t\t\tif (inType) {\r\n\t\t\t\t\t\r\n\t\t\t\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;;\r\n\r\n\t\t\t\t\tscreenManager.GetEditScreen({\r\n\t\t\t\t\t\tEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n\t\t\t\t\t\tTableTypeId: inType.Id\r\n\t\t\t\t\t}).always(() => {\r\n\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t}).fail((err) => {\r\n\t\t\t\t\t\tvar notifier = new Notifier();\r\n\t\t\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t\t\t}).then(screen => {\r\n\t\t\t\t\t\tscreen.ShowInModal();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tscreen.SetDefaultData(screenData, [CONTROL_TYPES.LinkList]);\r\n\t\t\t\t\t\tscreen.On('LINK_LIST_DATA_LOADED', this, () => {\r\n\t\t\t\t\t\t\tthis.LinkMailRelatedData(screen, mailItemDetail);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnew Notifier().Failed(NOTIFICATIONS.IN_TYPE_NOT_FOUND);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate LinkMailRelatedData(screen: IScreen, mailItemDetail: MailItemExtendedModel) {\r\n\t\t\r\n\t\tlet isLinkListExist = screen.HasControl(CONTROL_TYPES.LinkList);\r\n\r\n\t\tif (!isLinkListExist) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst linkList = screen.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n\r\n\t\tconst usersRelationModel = linkList.DataModel().UserRelation();\r\n\t\tmailItemDetail.MailRelatedData.Users.forEach(user => {\r\n\t\t\tconst existingLink = linkList.FindLinkByRecord(user.Id, usersRelationModel);\r\n\t\t\tif (existingLink) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet newRelation = new NewRelationModel();\r\n\t\t\tnewRelation.Name = user.Name;\r\n\t\t\tnewRelation.Id = user.Id;\r\n\t\t\tnewRelation.IsMain = false;\r\n\t\t\tnewRelation.Level = SECURITY_LEVELS.SHARED;\r\n\r\n\t\t\tlinkList.AddRecord(user.Id, usersRelationModel, newRelation);\r\n\t\t});\r\n\r\n\t\tmailItemDetail.MailRelatedData.Entities.forEach(entity => {\r\n\t\t\tconst relationModel = _.find(linkList.DataModel().Entities(), relatedEntity => {\r\n\t\t\t\treturn relatedEntity.EntityId === entity.Id;\r\n\t\t\t});\r\n\r\n\t\t\tif (!relationModel) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (entity.Items.length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst groupsById = _.groupBy(entity.Items, item => item.Id);\r\n\r\n\t\t\tfor (const groupIndex in groupsById) {\r\n\t\t\t\tconst item = groupsById[groupIndex][0];\r\n\t\t\t\tconst addressTypesId = groupsById[groupIndex].map(item => item.AddressTypeId).join(';');\r\n\r\n\t\t\t\tlet newRelation = new NewRelationModel();\r\n\t\t\t\tnewRelation.Name = item.Name;\r\n\t\t\t\tnewRelation.Id = item.Id;\r\n\t\t\t\tnewRelation.IsMain = false;\r\n\r\n\t\t\t\tconst guid = linkList.AddRecord(item.Id, relationModel, newRelation);\r\n\t\t\t\tlinkList.UpdateCustomDataByGuid(guid,\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tFieldId: entity.AddressTypeFieldId,\r\n\t\t\t\t\t\t\tFieldValue: addressTypesId\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tSaveToEditScreen(mailItemDetail: MailItemExtendedModel) {\r\n\t\tconst DOCUMENT_FIELD_ID = 680;\r\n\r\n\t\tconst screenData = new ScreenDataModel();\r\n\t\tconst nameControlData = new ControlDataModel();\r\n\r\n\t\tif (this._recordNameField) {\r\n\t\t\tnameControlData.FieldId = this._recordNameField.Id;\r\n\t\t\tnameControlData.Value = mailItemDetail.Subject;\r\n\t\t\tscreenData.ControlsData.push(nameControlData);\r\n\t\t}\r\n\r\n\t\tif (this._mailBodyField) {\r\n\t\t\tconst mailBodyControlData = new ControlDataModel();\r\n\r\n\t\t\tmailBodyControlData.FieldId = this._mailBodyField.Id;\r\n\t\t\tmailBodyControlData.Value = mailItemDetail.Body;\r\n\t\t\tscreenData.ControlsData.push(mailBodyControlData);\r\n\t\t}\r\n\r\n\t\tif (this._mailFromField) {\r\n\t\t\tconst mailFromControlData = new ControlDataModel();\r\n\r\n\t\t\tmailFromControlData.FieldId = this._mailFromField.Id;\r\n\t\t\tmailFromControlData.Value = mailItemDetail.FromAddress;\r\n\t\t\tscreenData.ControlsData.push(mailFromControlData);\r\n\t\t}\r\n\r\n\t\tif (this._mailGuidField) {\r\n\t\t\tconst serverMailIdControlData = new ControlDataModel();\r\n\r\n\t\t\tserverMailIdControlData.FieldId = this._mailGuidField.Id;\r\n\t\t\tserverMailIdControlData.Value = mailItemDetail.Guid;\r\n\t\t\tscreenData.ControlsData.push(serverMailIdControlData);\r\n\t\t}\r\n\r\n\t\tconst dropControlData = new ControlDataModel();\r\n\r\n\t\tdropControlData.FieldId = DOCUMENT_FIELD_ID;\r\n\r\n\t\tif (mailItemDetail.Attachments.length > 0) {\r\n\t\t\tconst dropControlValues = [];\r\n\r\n\t\t\t_.each(mailItemDetail.Attachments, (attachment) => {\r\n\t\t\t\tdropControlValues.push({FileName: attachment.Name, Content: attachment.Content});\r\n\t\t\t\tdropControlData.Values = dropControlValues;\r\n\t\t\t});\r\n\r\n\t\t\tscreenData.ControlsData.push(dropControlData);\r\n\t\t}\r\n\r\n\t\tthis.ShowEditScreen(screenData, mailItemDetail);\r\n\t}\r\n\r\n\tDetail(mailItem: MailItemModel) {\r\n\t\tthis.BlockUI();\r\n\r\n\t\tMailStore\r\n\t\t\t.GetMailById({\r\n\t\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\t\tGuid: mailItem.Guid,\r\n\t\t\t\tIsIncludeAttachmentContent: false\r\n\t\t\t})\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnblockUI();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tconst detail = new Detail(data);\r\n\r\n\t\t\t\tdetail.On(COMPOSER_EVENTS.EMAIL_WAS_READ, this, (eventArgs) => {\r\n\t\t\t\t\tthis._mailList().MarkAsReadByGuid(eventArgs.data.guid);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tdetail.ShowInModal(this._mailConnectionId);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._loadInProgress) {\r\n\t\t\tthis.BlockUI();\r\n\t\t} else {\r\n\t\t\tthis.UnblockUI();\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-envelope-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"afterRender: AfterRender, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"mail-base-container\\\"> <div class=\\\"inbox\\\"> <div class=\\\"row\\\"> <div class=\\\"mail-folder-root col-md-12\\\"> <!-- ko with: _mailList --> <!--ko template: {html: GetTemplate.bind($rawData), afterRender: AfterRender.bind($rawData)} --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","const Cultures = {\r\n 'nl-nl': 'nl'\r\n};\r\n\r\nexport class FullCalendarCultures {\r\n static Get(culture: string) {\r\n if (Cultures.hasOwnProperty(culture.toLowerCase())) {\r\n return Cultures[culture.toLowerCase()];\r\n }\r\n return culture;\r\n }\r\n}\r\n","import {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport class UserModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tUserName: string;\r\n\r\n\t@deserialize\r\n\tUserTypeName: string;\r\n\r\n\t@deserialize\r\n\tUserTypeNameTranslation: string;\r\n\r\n\tChecked: boolean;\r\n}\r\n\r\nexport class UserGroupModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tUserIds: Array<number>;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeNameTranslation: string;\r\n\r\n\tChecked: boolean | null;\r\n\r\n\tUsers?: Array<UserModel>\r\n}\r\n\r\nexport class SelectUserModel {\r\n\r\n\t@deserializeAs(UserModel)\r\n\tUsers: Array<UserModel>;\r\n\r\n\t@deserializeAs(UserGroupModel)\r\n\tUserGroups: Array<UserGroupModel>;\r\n}\r\n","import * as ko from \"knockout\";\r\nimport {SelectUserModel, UserModel, UserGroupModel } from \"Core/Controls/SelectUser/Models/SelectUserModel\";\r\n\r\nexport class SelectUserFormModel {\r\n\tUsers: Array<UserFormModel>;\r\n\tUserGroups: Array<UserGroupFormModel>;\r\n\r\n\tconstructor(model: SelectUserModel) {\r\n\t\tthis.Users = model.Users.map(user => new UserFormModel(user));\r\n\t\tthis.UserGroups = model.UserGroups.map(userGroup => new UserGroupFormModel(userGroup));\r\n\t}\r\n\r\n\tToSelectUserModel() {\r\n\t\tconst model = new SelectUserModel();\r\n\t\tmodel.Users = this.Users.map(user => user.ToUserModel());\r\n\t\tmodel.UserGroups = this.UserGroups.map(userGroup => userGroup.ToUserGroupModel());\r\n\r\n\t\treturn model;\r\n\t}\r\n}\r\n\r\nexport class UserFormModel {\r\n\tId: number;\r\n\tName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\tUserTypeName: string;\r\n\tUserTypeNameTranslation: string;\r\n\r\n\tconstructor(model: UserModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.Checked = ko.observable(model.Checked);\r\n\t\tthis.UserTypeName = model.UserTypeName;\r\n\t\tthis.UserTypeNameTranslation = model.UserTypeNameTranslation;\r\n\t}\r\n\r\n\tToUserModel() {\r\n\t\tconst user = new UserModel;\r\n\r\n\t\tuser.Id = this.Id;\r\n\t\tuser.Name = this.Name;\r\n\t\tuser.Checked = this.Checked();\r\n\t\tuser.UserTypeName = this.UserTypeName;\r\n\t\tuser.UserTypeNameTranslation = this.UserTypeNameTranslation;\r\n\r\n\t\treturn user;\r\n\t}\r\n}\r\n\r\nexport class UserGroupFormModel {\r\n\tId: number;\r\n\tName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\tTypeId: number;\r\n\tTypeName: string;\r\n\tTypeNameTranslation: string;\r\n\r\n\tconstructor(model: UserGroupModel) {\r\n\t\tthis.Id = model.Id;\r\n\t\tthis.Name = model.Name;\r\n\t\tthis.Checked = ko.observable(model.Checked);\r\n\t\tthis.TypeId = model.TypeId;\r\n\t\tthis.TypeName = model.TypeName;\r\n\t\tthis.TypeNameTranslation = model.TypeNameTranslation;\r\n\t}\r\n\r\n\tToUserGroupModel() {\r\n\t\tconst userGroup = new UserGroupModel();\r\n\r\n\t\tuserGroup.Id = this.Id;\r\n\t\tuserGroup.Name = this.Name;\r\n\t\tuserGroup.Checked = this.Checked();\r\n\t\tuserGroup.TypeId = this.TypeId;\r\n\t\tuserGroup.TypeName = this.TypeName;\r\n\t\tuserGroup.TypeNameTranslation = this.TypeNameTranslation;\r\n\r\n\t\treturn userGroup;\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgress,\\r\\n click: _help.ShowControlHelp.bind(_help, $data),\\r\\n css:{'small-appointments': $data._isSmallAppointments && $data._isInteractionWithUserSelect()}\\\" class=\\\"ConsultScreenView agenda-control-result form-standart-control\\\" style=\\\"display:block\\\"> <div class=\\\"portlet light portlet-fit bordered calendar\\\"> <!--\\r\\n <div class=\\\"portlet-title\\\">\\r\\n <div class=\\\"caption\\\">\\r\\n <i class=\\\"fa fa-3x fa-stack fa-calendar font-green\\\"></i>\\r\\n <span class=\\\"caption-subject font-green sbold uppercase\\\">Agenda</span>\\r\\n </div>\\r\\n </div>\\r\\n --> <div class=\\\"portlet-body\\\"> <div class=\\\"flex-container clearfix\\\"> <!-- BEGIN DRAGGABLE EVENTS PORTLET--> <!-- ko if: !$data._isReadonly --> <div data-bind=\\\"css: {'hidden-block': !_isVisibleTodoBlock()}\\\" class=\\\"todo-block transition\\\"> <div id=\\\"external-events\\\" class=\\\"external-events\\\"> <div class=\\\"margin-bottom-10\\\"> <div class=\\\"clearfix\\\"> <!-- ko foreach: TodoEvents --> <div data-bind=\\\"draggable: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thelper: 'clone',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstart: $parent.StartDrag.bind($parent, $data)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"todo-item clearfix external-event label label-default\\\" style=\\\"position:relative\\\"> <span data-bind=\\\"text: $parent.EventTitle($data)\\\"></span> <span data-bind=\\\"click: $parent.RemoveTodoItem.bind($parent, $data)\\\" class=\\\"remove\\\"> x </span> </div> <!-- /ko --> </div> </div> <form> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _checkedRemoveToDo\\\" class=\\\"group-checkable\\\"> <label for=\\\"drop-remove\\\" class=\\\"mt-checkbox mt-checkbox-single mt-checkbox-outline\\\"> <!-- ko text: _labels.REMOVE_AFTER_DROP --><!-- /ko --> </label> </form> <br/> <!-- ko with: _appointmentAttendees --> <div class=\\\"user-group-container\\\"> <span class=\\\"user-group-title\\\" data-bind=\\\"text: $parent._labels.ATTENDEES\\\"></span> <!-- ko foreach: Users --> <div class=\\\"user-group-item\\\"> <input data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"additional-icon fa fa-user\\\"></span> <span class=\\\"select-user-name\\\" data-bind=\\\"attr:{ title: Name }, text: Name\\\"></span> </div> <!-- /ko --> <!-- ko foreach: UserGroups --> <div class=\\\"user-group-item\\\"> <input data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"additional-icon fa fa-users\\\"></span> <span class=\\\"select-user-name\\\" data-bind=\\\"text: Name\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- END DRAGGABLE EVENTS PORTLET--> <div class=\\\"calendar-block transition\\\"> <!-- ko if: !$data._isReadonly --> <form class=\\\"todo-btn-block\\\" data-bind=\\\"\\\"> <label class=\\\"toggler-container\\\"> <input type=\\\"checkbox\\\" class=\\\"toggler\\\" data-bind=\\\"checked: _isVisibleTodoBlock\\\"> <span class=\\\"arrow-icon\\\"><i class=\\\"fa fa-angle-right\\\"></i></span> </label> </form> <!-- /ko --> <div class=\\\"agenda-wrapper\\\"> <form class=\\\"inline-form\\\"> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isToDoVisible\\\"> <a data-bind=\\\"click: AddNewTodo, tooltip: {content: _labels.ADD_TODO}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-check\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isSpecialDayVisible\\\"> <a data-bind=\\\"click: AddSpecialDay, tooltip: {content: _labels.SPECIAL_DAY}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-calendar\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isRequestLeaveVisible\\\"> <a data-bind=\\\"click: AddHoliday, tooltip: {content: _labels.REQUEST_LEAVE}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-calendar-minus-o\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isReportIllnessVisible\\\"> <a data-bind=\\\"click: AddIllness, tooltip: {content: _labels.REPORT_ILLNESS}\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-medkit\\\"></i> </a> </div> <div class=\\\"display-i-b\\\" data-bind=\\\"visible: _isRecurrentVisible\\\"> <a data-bind=\\\"click: AddRecurrent, tooltip: {content: _labels.RECURRENT}\\\" class=\\\"btn recurrent-btn btn-primary\\\"> <i class=\\\"fa fa-retweet\\\"></i> </a> </div> </form> <div id=\\\"agendaCalendar\\\" data-bind=\\\"fullCalendar: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: $data.GetFullCalendarOptions(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevents: $data._calendarEvents.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tresources: $data._owners,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbusinessHours: $data._businessHours.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tspecialDays: $data._specialDays.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tgroupByResource: $data._groupByResource\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"has-toolbar fc fc-ltr fc-unthemed\\\"> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {opened: ActionToggle, specialDay: SpecialDay}\\\" class=\\\"custom-agenda-event\\\"> <!-- ko ifnot: SpecialDay --> <div data-bind=\\\"style: TimeBeforeHeight, css:{'hidden': !TimeBefore}\\\" class=\\\"start-date\\\"></div> <!-- /ko --> <div class=\\\"event-main\\\" data-bind=\\\"css:{'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tcontent: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['mouseover']\\\" class=\\\"event-content line-clamp-overflowed\\\"></div> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"tippy: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Country+': ' +Title,\\r\\n\\t\\t\\t\\t\\t\\t\\ttheme: 'light',\\r\\n\\t\\t\\t\\t\\t\\t\\tfollowCursor: true\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"event-content entity-overflowed title\\\"> </div> <!-- /ko --> </div> <!-- ko if: Links --> <div class=\\\"agenda-links-container\\\"> <!-- ko foreach: Links --> <div data-bind=\\\"css: {'invited': Name === 'SYS_USERS'}\\\" class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"click: function(linkedRecord, event) { $parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event); }\\\" class=\\\"entity-link\\\"><span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span></div> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: SpecialDay --> <div data-bind=\\\"style: TimeAfterHeight, css:{'hidden': !TimeAfter}\\\" class=\\\"end-date\\\"></div> <!-- /ko --> </div> <!--ko if: !$data.Event.allDay && !$data.Event.specialDay --> <div class=\\\"actionMenuBox\\\" data-bind=\\\"css: {opened: ActionToggle}\\\"> <button class=\\\"btn btn-icon-only actionToggleMenu\\\" data-bind=\\\"click: Agenda.ActionToggleMenu.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\tcss: {opened: ActionToggle}\\\"> <!-- ko if: ActionToggle--> <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko ifnot: ActionToggle--> <i class=\\\"fa fa-bars\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </button> <!-- ko if: ActionToggle--> <button class=\\\"btn btn-icon-only btn-replanning\\\" data-bind=\\\"click: Agenda.GoToScheduler.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tcss: { 'disabled': !Editable},\\r\\n\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Agenda._labels.CLICK_TO_RESCHEDULE,\\r\\n\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor }\\\"><i class=\\\"fa fa-retweet\\\"></i></button> <!--ko if: !Accepted--> <button class=\\\"btn btn-icon-only accept-appointment\\\" data-bind=\\\"attr:{disabled: !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcss: {'hidden': !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: $data.PossibleToAccept() ? Agenda._labels.BOOK_TIME : Agenda._labels.STARTING_DATE_IS_OUT_OF_FREEZE_TIME,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: Agenda.AcceptAppointment.bind(Agenda, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></button> <!--/ko--> <!--ko if: !$data.PossibleToAccept() || $data.Accepting() --> <span class=\\\"btn btn-icon-only accept-appointment cursorDisabled\\\" data-bind=\\\"tooltip: {\\r\\n\\t\\t \\t\\t\\t\\tcontent: Agenda._labels.CANNOT_ACCEPT_APPOINTMENT,\\r\\n\\t\\t \\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t \\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></span> <!--/ko --> <!--ko if: $data.RecurrentRecordId --> <button class=\\\"btn btn-icon-only btn-recurrence-pattern\\\" data-bind=\\\"tooltip: {content: Agenda._labels.RECURRENCE_PATTERN},\\r\\n\\t\\t\\t\\t\\t style: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t click: Agenda.EditRecurrent.bind(Agenda, $data.RecurrentRecordId),\\r\\n\\t\\t\\t\\t\\t preventBubble: ['click']\\\"><i class=\\\"fa fa-refresh\\\"></i></button> <!--/ko --> <!--/ko --> </div> <!--/ko--> <!--ko if: !!Description && EnableTooltip --> <div class=\\\"custom-agenda-event__descriptionButton\\\"> <span class=\\\"info-circle\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: Description,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'right', y: 'center'},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'ellipsis-tooltip custom-agenda-event__descriptionTooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['mouseover']\\\"> <i class=\\\"fa fa-info\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\" class=\\\"custom-agenda-event custom-agenda-event--month\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n\\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"event-content\\\"></div> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"html: Country+': ' +Title\\\" class=\\\"event-content\\\"></div> <!-- /ko --> <div data-bind=\\\"html: StartTime\\\" class=\\\"event-content-left\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data.Event.planning--> <div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {opened: ActionToggle}\\\" class=\\\"custom-agenda-event\\\"> <div data-bind=\\\"style: TimeBeforeHeight, css:{'hidden': !TimeBefore}\\\" class=\\\"start-date\\\"></div> <div class=\\\"event-main\\\"> <div data-bind=\\\"html: Title, ellipsisTooltip: {content: Title}, preventBubble: ['mouseover']\\\" class=\\\"event-content entity-overflowed\\\"> </div> </div> <div class=\\\"agenda-links-container\\\"> <!-- ko foreach: Links --> <div class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"ellipsisTooltip: {content: Name},\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: function(linkedRecord, event) {$parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event);}\\\" class=\\\"entity-overflowed entity-link\\\"><span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: Users --> <div class=\\\"agenda-links-body clearfix invited\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"ellipsisTooltip: {content: $parents[1].Event.getUserTitle($data)},\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: function(linkedRecord, event) {$parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event);}\\\" class=\\\"entity-overflowed entity-link\\\"><span data-bind=\\\"text: $parents[1].Event.getUserTitle($data)\\\" class=\\\"underlined\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> </div> <div data-bind=\\\"style: TimeAfterHeight, css:{'hidden': !TimeAfter}\\\" class=\\\"end-date\\\"></div> </div> <div class=\\\"actionMenuBox\\\" data-bind=\\\"css: {opened: ActionToggle}\\\"> <button class=\\\"btn btn-icon-only actionToggleMenu\\\" data-bind=\\\"click: Agenda.ActionToggleMenu.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\tcss: {opened: ActionToggle}\\\"> <!-- ko if: ActionToggle--> <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko ifnot: ActionToggle--> <i class=\\\"fa fa-bars\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </button> <!-- ko if: ActionToggle--> <button type=\\\"button\\\" class=\\\"btn btn-icon-only btn-week\\\" data-bind=\\\"click: Agenda.ToggleAppointmentsWeekMenu,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: { opened: ShowAppointmentsWeekMenu() }\\\"> <i class=\\\"fa fa-caret-left\\\"></i> <i class=\\\"fa fa-plus\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-icon-only accept-appointment\\\" data-bind=\\\"visible: VisibleBookingsWeekButton,\\r\\n click: Agenda.ToggleBookingsWeekMenu,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: { opened: ShowBookingsWeekMenu() }\\\"> <i class=\\\"fa fa-caret-left\\\"></i> <i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i> </button> <!-- ko if: ShowAppointmentsWeekMenu--> <div class=\\\"week-menu appointments-week-menu\\\"> <!-- ko foreach: AppointmentsWeekButtons --> <div class=\\\"week-menu-btn\\\" data-bind=\\\"text: Name, click: $parent.Agenda.CreateAppointmentFromPlanner.bind($parent.Agenda, $parent, $data), css:{'disabled': Disabled}\\\"></div> <!--/ko --> <div class=\\\"week-menu-btn\\\" data-bind=\\\"text: Distribute, click: Agenda.DistributeAppointmentsForPlanning.bind(Agenda, $data), css: {'disabled': !$data.AppointmentsCanBeDistributed}\\\"></div> </div> <!--/ko --> <!-- ko if: ShowBookingsWeekMenu--> <div class=\\\"week-menu bookings-week-menu\\\"> <!-- ko foreach: BookingsWeekButtons --> <div class=\\\"tooltip-wrapper\\\" data-bind=\\\"tooltip: {content: $data.DisabledReason}\\\"> <div class=\\\"week-menu-btn\\\" data-bind=\\\"\\r\\n text: Name,\\r\\n click: $parent.Agenda.BookFromPlanner.bind($parent.Agenda, $parent, $data),\\r\\n css: {'disabled': Disabled}\\\"></div> </div> <!--/ko --> </div> <!--/ko --> <!--/ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <div class=\\\"agenda-links-container_tooltip\\\"> <!-- ko foreach: links --> <div data-bind=\\\"css: {'invited': Name === 'SYS_USERS'}\\\" class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"click: function(linkedRecord, event) { $parents[1].agenda.NavigateToLinkedRecord(linkedRecord, $parent, event); }\\\" class=\\\"entity-link entity-overflowed\\\"> <span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"fc-widget-content fc-list-item-time custom-agenda-event custom-agenda-event--list\\\" data-bind=\\\"css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <span class=\\\"fc-event-resource\\\" data-bind=\\\"text: ListModeTime\\\"></span> </td> <td class=\\\"fc-widget-content fc-list-item-marker custom-agenda-event custom-agenda-event--list\\\" data-bind=\\\"css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <span class=\\\"fc-event-dot\\\" data-bind=\\\"style: { backgroundColor: BackgroundColor }\\\"></span> </td> <td class=\\\"fc-widget-content fc-list-item-title custom-agenda-event custom-agenda-event--list\\\" data-bind=\\\"css: {specialDay: SpecialDay, 'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <div class=\\\"custom-agenda-list-event--title\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n \\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n \\t\\t\\t\\t\\t\\t\\tcontent: Title ? Title : '',\\r\\n \\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n \\t\\t\\t\\t\\t\\t\\t}\\r\\n \\t\\t\\t\\t\\t}\\\" class=\\\"event-content\\\"></div> <!-- <div data-bind=\\\"html: Title\\\" class=\\\"event-content\\\"></div>--> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"html: Country+': ' +Title\\\" class=\\\"event-content\\\"></div> <!-- /ko --> </div> <!--ko if: !!Description && EnableTooltip --> <div class=\\\"custom-agenda-event__descriptionButton\\\"> <span class=\\\"info-circle\\\" data-bind=\\\"\\r\\n tooltip: {\\r\\n content: Description,\\r\\n position: {x: 'right', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip custom-agenda-event__descriptionTooltip jBox-padding-5px'\\r\\n },\\r\\n style: { backgroundColor: BackgroundColor },\\r\\n preventBubble: ['mouseover']\\\"> <i class=\\\"fa fa-info\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!--/ko--> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { backgroundColor: BackgroundColor }, css: {opened: ActionToggle, specialDay: SpecialDay}\\\" class=\\\"custom-agenda-event custom-agenda-time-event\\\"> <!-- ko ifnot: SpecialDay --> <!--\\t<div data-bind=\\\"style: TimeBeforeHeight, css:{'hidden': !TimeBefore}\\\" class=\\\"start-date\\\"></div>--> <!-- /ko --> <div class=\\\"event-main\\\" data-bind=\\\"css:{'isIllness': IsIllness, 'isHoliday': IsHoliday}\\\"> <!-- ko ifnot: SpecialDay --> <!-- ko if: IsHoliday && IsHolidayIcon --> <div data-bind=\\\"tooltip: {content: HolidayTooltip}\\\" class=\\\"iconBox\\\"><i class=\\\"fa fa-question-circle\\\"></i></div> <!-- /ko --> <div data-bind=\\\"html: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\tellipsisTooltip: {\\r\\n \\t\\t\\t\\t\\t\\t\\t\\tcontent: Title,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['mouseover']\\\" class=\\\"event-content line-clamp-overflowed\\\"></div> <!-- /ko --> <!-- ko if: SpecialDay --> <div data-bind=\\\"tippy: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Country+': ' +Title,\\r\\n\\t\\t\\t\\t\\t\\t\\ttheme: 'light',\\r\\n\\t\\t\\t\\t\\t\\t\\tfollowCursor: true\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\\" class=\\\"event-content entity-overflowed title\\\"> </div> <!-- /ko --> </div> <!-- ko if: Links --> <div class=\\\"agenda-links-container\\\"> <!-- ko foreach: Links --> <div data-bind=\\\"css: {'invited': Name === 'SYS_USERS'}\\\" class=\\\"agenda-links-body clearfix\\\"> <span class=\\\"agenda-linked-icon\\\"> <!-- ko with: IconComponent --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </span> <span class=\\\"entity-name\\\"></span> <!-- ko foreach: LinkRecords --> <div data-bind=\\\"click: function(linkedRecord, event) { $parents[1].Agenda.NavigateToLinkedRecord(linkedRecord, $parent, event); }\\\" class=\\\"entity-link\\\"><span data-bind=\\\"text: NameTranslation || Name\\\" class=\\\"underlined\\\"></span></div> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: SpecialDay --> <!--\\t<div data-bind=\\\"style: TimeAfterHeight, css:{'hidden': !TimeAfter}\\\" class=\\\"end-date\\\"></div>--> <!-- /ko --> </div> <!--ko if: !$data.Event.allDay && !$data.Event.specialDay --> <div class=\\\"actionMenuBox\\\" data-bind=\\\"css: {opened: ActionToggle}\\\"> <button class=\\\"btn btn-icon-only actionToggleMenu\\\" data-bind=\\\"click: Agenda.ActionToggleMenu.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\tcss: {opened: ActionToggle}\\\"> <!-- ko if: ActionToggle--> <i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko ifnot: ActionToggle--> <i class=\\\"fa fa-bars\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </button> <!-- ko if: ActionToggle--> <button class=\\\"btn btn-icon-only btn-replanning\\\" data-bind=\\\"click: Agenda.GoToScheduler.bind(Agenda, $data, event),\\r\\n\\t\\t\\t\\t\\t\\tcss: { 'disabled': !Editable},\\r\\n\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: Agenda._labels.CLICK_TO_RESCHEDULE,\\r\\n\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor }\\\"><i class=\\\"fa fa-retweet\\\"></i></button> <!--ko if: !Accepted--> <button class=\\\"btn btn-icon-only accept-appointment\\\" data-bind=\\\"attr:{disabled: !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcss: {'hidden': !$data.PossibleToAccept() || $data.Accepting()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: $data.PossibleToAccept() ? Agenda._labels.BOOK_TIME : Agenda._labels.STARTING_DATE_IS_OUT_OF_FREEZE_TIME,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: Agenda.AcceptAppointment.bind(Agenda, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></button> <!--/ko--> <!--ko if: !$data.PossibleToAccept() || $data.Accepting() --> <span class=\\\"btn btn-icon-only accept-appointment cursorDisabled\\\" data-bind=\\\"tooltip: {\\r\\n\\t\\t \\t\\t\\t\\tcontent: Agenda._labels.CANNOT_ACCEPT_APPOINTMENT,\\r\\n\\t\\t \\t\\t\\t\\tposition: {\\r\\n\\t\\t\\t\\t\\t\\t\\tx: 'left',\\r\\n\\t\\t\\t\\t\\t\\t\\ty: 'center'\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\taddClass: 'jBox-padding-5px'\\r\\n\\t\\t \\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\tpreventBubble: ['click']\\\"><i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\"></i></span> <!--/ko --> <!--ko if: $data.RecurrentRecordId --> <button class=\\\"btn btn-icon-only btn-recurrence-pattern\\\" data-bind=\\\"tooltip: {content: Agenda._labels.RECURRENCE_PATTERN},\\r\\n\\t\\t\\t\\t\\t style: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t click: Agenda.EditRecurrent.bind(Agenda, $data.RecurrentRecordId),\\r\\n\\t\\t\\t\\t\\t preventBubble: ['click']\\\"><i class=\\\"fa fa-refresh\\\"></i></button> <!--/ko --> <!--/ko --> </div> <!--/ko--> <!--ko if: !!Description && EnableTooltip --> <div class=\\\"custom-agenda-event__descriptionButton\\\"> <span class=\\\"info-circle\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontent: Description,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'right', y: 'center'},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toutside: 'x',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taddClass: 'ellipsis-tooltip custom-agenda-event__descriptionTooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { backgroundColor: BackgroundColor },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['mouseover']\\\"> <i class=\\\"fa fa-info\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport * as _ from \"underscore\";\r\nimport 'fullcalendar';\r\nimport 'jquery';\r\n\r\nimport {AGENDA_LIFE_STATUSES, AGENDA_TYPES} from \"Core/Constants/AgendaTypes\";\r\nimport {LifeStatuses} from \"Core/Enums/LifeStatuses\";\r\nimport {P} from 'Core/Common/Promise';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {AgendaDataStore, ICreateAppointmentFromTodoRequestModel} from 'Core/Controls/Agenda/Stores/AgendaDataStore';\r\nimport {\r\n CONTROL_TYPES,\r\n DEFAULT_ICONS,\r\n FIELD_TYPES,\r\n RenderModes,\r\n SYSTEM_TABLE_NAMES,\r\n TABLE_TYPES,\r\n LIFE_STATUS_GROUPS\r\n} from 'Core/Constant';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {TableTypesModel} from 'Core/Screens/TypeScreen/Models/TableTypesModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {\r\n AgendaItemModel,\r\n AgendaItemPerDay,\r\n DaysSchedule,\r\n LinkRecord,\r\n LinkTableModel\r\n} from 'Core/Controls/Agenda/Models/AgendaItemModel';\r\nimport {UserEntityRelationsViewModel} from 'Core/Controls/LinkList/Models/LinkListRelationsViewModel';\r\nimport {PlanningItemModel, PlannerItemWeekButton, UserProgress} from 'Core/Controls/Agenda/Models/PlanningItemModel'\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {RecordStore} from 'Core/Screens/Stores/RecordStore';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {\r\n DeletionModeDialog,\r\n EVENTS as DELETION_MODE_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog';\r\nimport {DeletionModeModel} from \"Core/Screens/Models/DeletionModeModel\";\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\nimport {UserManager} from 'User/UserManager';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\nimport {FullCalendarCultures} from 'Core/FullCalendar/FullCalendarCultures';\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {Tab} from \"../Tab/Tab\";\r\nimport {TabPage} from \"../TabPage/TabPage\";\r\nimport {Scheduler} from \"../Scheduler/Scheduler\";\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport {TABLE_SECURITY_WORDS} from \"Core/Constants/TableSecurityWords\";\r\nimport {SECURITY_LEVELS} from \"Core/Constants/SecurityLevels\";\r\nimport {IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {UserVarsManager} from \"../../UserVarsManager/UserVarsManager\";\r\nimport {SelectUser} from '../SelectUser/SelectUser';\r\nimport {SelectUserFormModel} from 'Core/Controls/SelectUser/Models/SelectUserFormModel';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {NewRelationModel} from \"Core/Controls/LinkList/Models/NewRelationModel\";\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\n\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\nimport AgendaConfig from 'Core/Controls/Agenda/Configs/agenda-config.json';\r\nimport {PROPERTIES} from \"./Constants\";\r\nimport { ILinkedResources, IRePlanningData } from 'Core/Controls/Scheduler/Interfaces';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\n//Templates\r\nimport ViewTemplate from 'Core/Controls/Agenda/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Agenda/Templates/ToolBar.html';\r\nimport EventTemplate from 'Core/Controls/Agenda/Templates/EventTemplate.html';\r\nimport EventMonthTemplate from 'Core/Controls/Agenda/Templates/EventMonthTemplate.html';\r\nimport PlanningTemplate from 'Core/Controls/Agenda/Templates/PlanningTemplate.html';\r\nimport LinksTooltipTemplate from 'Core/Controls/Agenda/Templates/LinksTooltip.html';\r\nimport EventListTemplate from 'Core/Controls/Agenda/Templates/EventListTemplate.html';\r\nimport EventTimeTemplate from 'Core/Controls/Agenda/Templates/EventTimeTemplate.html';\r\nimport {TableTypeModel} from \"../../Screens/TypeScreen/Models/TableTypeModel\";\r\n\r\nko.templates['Core/Controls/Agenda/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/List'] = ViewTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventTemplate'] = EventTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventMonthTemplate'] = EventMonthTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/PlanningTemplate'] = PlanningTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/LinksTooltip'] = LinksTooltipTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventListTemplate.html'] = EventListTemplate;\r\nko.templates['Core/Controls/Agenda/Templates/EventTimeTemplate.html'] = EventTimeTemplate;\r\n\r\nconst FULL_CALENDAR_VIEW = {\r\n MONTH: 'month',\r\n AGENDA_WEEK: 'agendaWeek',\r\n AGENDA_FIVE_DAY: 'agendaFiveDay',\r\n AGENDA_DAY: 'agendaDay',\r\n AGENDA_LIST_WEEK : 'listWeek',\r\n AGENDA_TIME_LINE_WEEK: 'timelineWeek'\r\n};\r\nconst DEFAULT_APPOINTMENT_DURATION = 30;\r\n\r\n(moment as any).createFromInputFallback = config => {\r\n config._d = new Date(config._i);\r\n};\r\n\r\nfunction isMobileWidth() {\r\n return $(window).width() <= 700;\r\n}\r\n\r\nexport class Agenda extends ComplexControl {\r\n private _value: KnockoutObservable<string>;\r\n private _firstFreezeTimeDate: moment.Moment;\r\n private _loadInProgress: KnockoutObservable<boolean>;\r\n private _checkedRemoveToDo: KnockoutObservable<boolean>;\r\n private _calendarEvents: KnockoutObservableArray<any>;\r\n private _isVisibleTodoBlock: KnockoutObservable<boolean>;\r\n private _tablesTypes: TableTypesModel;\r\n private _allEvents: Array<AgendaItemModel>;\r\n private _plannings: Array<PlanningItemModel>;\r\n private _agendaItemsPerDay: Array<AgendaItemPerDay>;\r\n private _todoEvents: KnockoutObservableArray<AgendaItemModel>;\r\n private _recordTypeField: AttachedFieldModel;\r\n private _recordNameField: AttachedFieldModel;\r\n private _startDateField: AttachedFieldModel;\r\n private _eventColorField: AttachedFieldModel;\r\n private _timeBeforeField: AttachedFieldModel;\r\n private _timeAfterField: AttachedFieldModel;\r\n private _natureField: AttachedFieldModel;\r\n private _placeField: AttachedFieldModel;\r\n private _durationField: AttachedFieldModel;\r\n private _descriptionField: AttachedFieldModel;\r\n private _endingField: AttachedFieldModel;\r\n private _completenessField: AttachedFieldModel;\r\n private _enableTooltip: boolean;\r\n private _todoEventName: KnockoutObservable<string>;\r\n private _todoToAppointmentItem: AgendaItemModel;\r\n private _selectedUsers: number[];\r\n private _appointmentAttendees: KnockoutObservable<SelectUserFormModel>;\r\n private _showPlanned: boolean;\r\n private _owners: KnockoutObservableArray<any>;\r\n private _groupByResource: KnockoutObservable<boolean>;\r\n private _isInteractionWithUserSelect: KnockoutObservable<boolean>;\r\n private _timeoutId: number;\r\n private _disableDropEvtsBtwnDiffRes: boolean;\r\n private _selectedStartDate: string;\r\n private _selectedEndDate: string;\r\n private _viewRenderMode: string;\r\n private _appointmentEvents: Array<AgendaItemModel>;\r\n private _businessHours: any;\r\n private _specialDays: KnockoutObservableArray<any>;\r\n private _currentDay: any;\r\n private _isReturned: boolean;\r\n private _controlId: number;\r\n private _viewModels: KnockoutObservableArray<any>;\r\n private _isDataLoaded: boolean;\r\n protected _isRendered: KnockoutObservable<boolean>;\r\n private _agendaViewContainer: any;\r\n\r\n private _isToDoVisible: KnockoutObservable<boolean>;\r\n private _isSpecialDayVisible: KnockoutObservable<boolean>;\r\n private _isRequestLeaveVisible: KnockoutObservable<boolean>;\r\n private _isReportIllnessVisible: KnockoutObservable<boolean>;\r\n private _isRecurrentVisible: KnockoutObservable<boolean>;\r\n private _isSmallAppointments: boolean;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, AgendaConfig);\r\n\r\n this._calendarEvents = ko.observableArray([]);\r\n this._isVisibleTodoBlock = ko.observable(false);\r\n this._allEvents = [];\r\n this._todoEvents = ko.observableArray([]);\r\n this._todoEventName = ko.observable('');\r\n this._selectedUsers = [];\r\n this._appointmentAttendees = ko.observable(null);\r\n this._loadInProgress = ko.observable(false);\r\n this._checkedRemoveToDo = ko.observable(false);\r\n this._enableTooltip = true;\r\n this._owners = ko.observableArray([]);\r\n this._groupByResource = ko.observable(false);\r\n this._isInteractionWithUserSelect = ko.observable(null);\r\n this._timeoutId = null;\r\n this._disableDropEvtsBtwnDiffRes = false; //Disable drop events between different Resources/Groups/Owners\r\n this._viewRenderMode = FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY;\r\n this._appointmentEvents = [];\r\n this._viewModels = ko.observableArray([]);\r\n this._businessHours = ko.observable(false);\r\n this._specialDays = ko.observableArray([]);\r\n this._currentDay = new Date();\r\n this._isDataLoaded = false;\r\n this._isReturned = false;\r\n this._agendaViewContainer = null;\r\n this._controlId = params.Model.Id;\r\n this._isSmallAppointments = false;\r\n\r\n this.Init();\r\n }\r\n\r\n private Init(): void {\r\n if (this.GetRenderMode() !== RenderModes.Design && this.GetRenderMode() !== RenderModes.ToolBar) {\r\n [\r\n this._recordNameField,\r\n this._recordTypeField,\r\n this._natureField,\r\n this._placeField,\r\n this._startDateField,\r\n this._durationField,\r\n this._eventColorField,\r\n this._timeBeforeField,\r\n this._timeAfterField,\r\n this._descriptionField,\r\n this._endingField,\r\n this._completenessField\r\n ] = this._model().Fields;\r\n }\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_NATURE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_PLACE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('STARTING', FIELD_TYPES.DateTime, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('DURATION', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('COLOR', FIELD_TYPES.Color, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('TIMEBEFORE', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('TIMEAFTER', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('MEMO', FIELD_TYPES.Memo, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('ENDING', FIELD_TYPES.DateTime, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('COMPLETENESS', FIELD_TYPES.Decimal, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.ApplyProperties();\r\n this.InitRequiredFields();\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n const screen = this._form && this._form.GetScreen();\r\n\r\n screen.On('UsersSelectionChanged', this, eventArgs => {\r\n const uniqueGroupIds = _.uniq(_.pluck(eventArgs.data.SelectedUsersAndGroups, 'GroupId'));\r\n const uniqueUserIds = _.uniq(_.flatten(_.pluck(eventArgs.data.SelectedUsersAndGroups, 'UserIds')));\r\n\r\n this._selectedUsers = _.union(uniqueGroupIds, uniqueUserIds);\r\n if (this._selectedUsers && this._selectedUsers.length > 0) {\r\n this._selectedUsers = this._selectedUsers.filter(userId => userId !== null);\r\n }\r\n this._showPlanned = eventArgs.data.ShowPlanned;\r\n\r\n let appointmentAttendees = eventArgs.data.AppointmentAttendees;\r\n if (appointmentAttendees?.UserGroups.length === 0 && appointmentAttendees?.Users.length === 0) {\r\n appointmentAttendees = null;\r\n }\r\n this._appointmentAttendees(appointmentAttendees ? new SelectUserFormModel(appointmentAttendees) : null);\r\n\r\n if (this._selectedUsers.length === 0) {\r\n this._selectedUsers.push(UserManager.Instance.CurrentUser.Id);\r\n }\r\n\r\n if (this._selectedStartDate && this._selectedEndDate && this._isRendered()) {\r\n this.Clean(this._agendaViewContainer);\r\n this._isInteractionWithUserSelect(true);\r\n\r\n if (!this._appointmentAttendees()) {\r\n this._isInteractionWithUserSelect(false);\r\n }\r\n\r\n this.LoadData(this._isInteractionWithUserSelect());\r\n }\r\n });\r\n\r\n this.AddEvent('AGENDA_CHANGED');\r\n this.On('AGENDA_CHANGED', this, () => screen.Trigger('AGENDA_CHANGED'));\r\n\r\n if (this._selectedUsers.length === 0) {\r\n this._selectedUsers.push(UserManager.Instance.CurrentUser.Id);\r\n }\r\n }\r\n\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Agenda));\r\n }\r\n\r\n get IsWeekView() {\r\n return this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_WEEK;\r\n }\r\n\r\n get IsWorkWeekView() {\r\n return this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY;\r\n }\r\n\r\n ApplyProperties() {\r\n this._isToDoVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.TODO);\r\n this._isSpecialDayVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.SPECIAL_DAY);\r\n this._isRequestLeaveVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.REQUEST_LEAVE);\r\n this._isReportIllnessVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.REPORT_ILLNESS);\r\n this._isRecurrentVisible = this.GeneralProperties.GetPropertyValue(PROPERTIES.ADD_RECURRENT);\r\n this._isSmallAppointments = this.GeneralProperties.GetPropertyValue(PROPERTIES.SMALL_APPOINTMENTS);\r\n }\r\n\r\n SetLastDate() {\r\n const lastDate = UserVarsManager.Instance.GetAgendaDate(this._controlId);\r\n if (lastDate) {\r\n this._selectedStartDate = moment(lastDate).format();\r\n } else {\r\n this.SetDate(this._controlId, this._selectedStartDate);\r\n }\r\n }\r\n\r\n SetDate(controlId: number, date: string) {\r\n UserVarsManager.Instance.SetAgendaDate(controlId, date);\r\n const screen = this._form && this._form.GetScreen();\r\n const schedulers = screen.GetControlsByType(CONTROL_TYPES.Scheduler);\r\n\r\n _.each(schedulers, scheduler => {\r\n UserVarsManager.Instance.SetSchedulerDate(scheduler.GetControlId(), date);\r\n });\r\n }\r\n\r\n\r\n private Clean(element?: JQuery) {\r\n this._todoEvents([]);\r\n this._allEvents = [];\r\n this._calendarEvents([]);\r\n this._owners([]);\r\n this._businessHours = ko.observable(false);\r\n\r\n if (element){\r\n element.find('.fc-nonbusiness').remove();\r\n }\r\n }\r\n\r\n private SetSpecialDays(userSpecialDays: Array<any>) {\r\n if (userSpecialDays.length > 0 && this._viewRenderMode !== FULL_CALENDAR_VIEW.AGENDA_DAY) {\r\n let dataspecialDays = userSpecialDays[0].SpecialDays;\r\n let specialDays = [];\r\n _.each(dataspecialDays, (day: any) => {\r\n if (day.FreeDay) {\r\n let date = FormatConverter.FormatToDay(day.Date);\r\n let start = date.format(DATE_FORMATS.FULL_DATETIME.Format);\r\n let end = date.add(1, 'days').format(DATE_FORMATS.FULL_DATETIME.Format);\r\n specialDays.push({\r\n title: day.Name,\r\n start: start,\r\n end: end,\r\n rendering: 'background',\r\n backgroundColor: 'red',\r\n country: day.Country && day.Country.Name,\r\n allDay: false,\r\n specialDay: true\r\n })\r\n }\r\n\r\n if (this._viewRenderMode === FULL_CALENDAR_VIEW.MONTH) {\r\n _.each(specialDays, (value: any) => {\r\n value.allDay = true;\r\n });\r\n }\r\n });\r\n this._specialDays(specialDays);\r\n } else {\r\n this._specialDays([]);\r\n }\r\n }\r\n\r\n private SetUsersSchedule(usersSchedule: Array<any>) {\r\n if (usersSchedule.length === 1 && this._viewRenderMode !== FULL_CALENDAR_VIEW.AGENDA_DAY) {\r\n let daysSchedule = usersSchedule[0].DaysSchedule;\r\n let businessHours = [];\r\n _.each(daysSchedule, (day: DaysSchedule) => {\r\n const start = moment(FormatConverter.CorrectTimezone(day.Starting));\r\n const end = moment(FormatConverter.CorrectTimezone(day.Ending));\r\n const weekday = start.day();\r\n businessHours.push({\r\n dow: [weekday],\r\n start: start.format(DATE_FORMATS.TIME.Format),\r\n end: end.format(DATE_FORMATS.TIME.Format)\r\n });\r\n });\r\n this._businessHours = ko.observableArray(businessHours);\r\n\r\n } else {\r\n this._businessHours = ko.observable(false);\r\n }\r\n }\r\n\r\n private SetAgendaDayData(agendaItemsPerDay, tablesTypes, usersSchedule, userSpecialDays) {\r\n this._agendaItemsPerDay = agendaItemsPerDay;\r\n this._tablesTypes = tablesTypes;\r\n this._allEvents = [];\r\n this._agendaItemsPerDay.map((agendaPerDay) => {\r\n agendaPerDay.Item.SharedWith = {\r\n UserId: agendaPerDay.UserId,\r\n Name: agendaPerDay.Name\r\n };\r\n this._allEvents.push(agendaPerDay.Item);\r\n });\r\n\r\n _.each(this._agendaItemsPerDay, (item: any) => {\r\n let currentSpecialDay = _.find(userSpecialDays, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n item.FreeDay = false;\r\n\r\n if (currentSpecialDay && currentSpecialDay.SpecialDays.length) {\r\n let currentDay = _.find(currentSpecialDay.SpecialDays, (day: any) => {\r\n let date = FormatConverter.FormatToDay(day.Date, DATE_FORMATS.SHORT_DATE.Format);\r\n return this._currentDay === date;\r\n });\r\n\r\n if (currentDay) {\r\n item.FreeDay = currentDay.FreeDay;\r\n let date = FormatConverter.FormatToDay(currentDay.Date);\r\n\r\n item.SpecialDayStart = date.format(DATE_FORMATS.FULL_DATETIME.Format);\r\n item.SpecialDayEnd = date.add(1, 'days').format(DATE_FORMATS.FULL_DATETIME.Format);\r\n }\r\n }\r\n\r\n let current = _.find(usersSchedule, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n if (current && current.DaysSchedule.length) {\r\n const daySchedule = _.find(current.DaysSchedule, (schedule: any) => {\r\n const date = moment(schedule.Starting).format(DATE_FORMATS.SHORT_DATE.Format);\r\n return this._currentDay === date;\r\n });\r\n\r\n if (daySchedule) {\r\n const start = moment(FormatConverter.CorrectTimezone(daySchedule.Starting));\r\n const end = moment(FormatConverter.CorrectTimezone(daySchedule.Ending));\r\n\r\n item.Start = start.format(DATE_FORMATS.TIME.Format);\r\n item.End = end.format(DATE_FORMATS.TIME.Format);\r\n }\r\n }\r\n\r\n item.Rendering = 'background';\r\n item.BackgroundColor = 'red';\r\n });\r\n\r\n }\r\n\r\n private SetAgendaWeakOrWorkWeekData(agendaItemsPerDay, tablesTypes, usersSchedule, userSpecialDays) {\r\n this._agendaItemsPerDay = agendaItemsPerDay;\r\n this._tablesTypes = tablesTypes;\r\n this._allEvents = [];\r\n this._agendaItemsPerDay.map((agendaPerDay: AgendaItemPerDay) => {\r\n agendaPerDay.Item.SharedWith = {\r\n UserId: agendaPerDay.UserId,\r\n Name: agendaPerDay.Name\r\n };\r\n this._allEvents.push(agendaPerDay.Item);\r\n });\r\n\r\n _.each(this._agendaItemsPerDay, (item: AgendaItemPerDay) => {\r\n let currentSpecialDay = _.find(userSpecialDays, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n item.FreeDay = false;\r\n\r\n if (currentSpecialDay && currentSpecialDay.SpecialDays.length) {\r\n let currentDay = _.find(currentSpecialDay.SpecialDays, (day: any) => {\r\n let date = FormatConverter.FormatToDay(day.Date, DATE_FORMATS.SHORT_DATE.Format);\r\n return this._currentDay === date;\r\n });\r\n\r\n if (currentDay) {\r\n item.FreeDay = currentDay.FreeDay;\r\n let date = FormatConverter.FormatToDay(currentDay.Date);\r\n\r\n item.SpecialDayStart = date.format(DATE_FORMATS.FULL_DATETIME.Format);\r\n item.SpecialDayEnd = date.add(1, 'days').format(DATE_FORMATS.FULL_DATETIME.Format);\r\n }\r\n }\r\n\r\n let current = _.find(usersSchedule, (user: any) => {\r\n return item.UserId === user.UserId;\r\n });\r\n\r\n if (current && current.DaysSchedule.length) {\r\n const daySchedule = _.find(current.DaysSchedule, (schedule: any) => {\r\n const date = moment(schedule.Starting).format(DATE_FORMATS.SHORT_DATE.Format);\r\n\r\n return this._currentDay === date;\r\n });\r\n\r\n if (daySchedule) {\r\n const start = moment(FormatConverter.CorrectTimezone(daySchedule.Starting));\r\n const end = moment(FormatConverter.CorrectTimezone(daySchedule.Ending));\r\n\r\n item.Start = start.format(DATE_FORMATS.TIME.Format);\r\n item.End = end.format(DATE_FORMATS.TIME.Format);\r\n }\r\n }\r\n\r\n item.Rendering = 'background';\r\n item.BackgroundColor = 'red';\r\n });\r\n\r\n }\r\n\r\n GetShortDateFormat() {\r\n return DATE_FORMATS.SHORT_DATE['Format'];\r\n }\r\n\r\n GetMonthAndYearFormat() {\r\n return DATE_FORMATS.MONTH_AND_YEAR['Format'];\r\n }\r\n\r\n LoadData(groupByResource: boolean = false): P.Promise<any> {\r\n this.RemoveDuplicatesNonBusiness();\r\n\r\n this._loadInProgress(true);\r\n\r\n const params = {\r\n ControlId: this.GetControlId(),\r\n UsersId: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SubjectId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n StartDate: this._selectedStartDate,\r\n EndDate: this._selectedEndDate,\r\n\r\n GetScheduleRequestModel: {\r\n StartDate: FormatConverter.ShiftTimeZone(this._selectedStartDate),\r\n EndDate: FormatConverter.ShiftTimeZone(this._selectedEndDate),\r\n UsersId: this._selectedUsers\r\n },\r\n GetSpecialDaysRequestModel: {\r\n StartDate: this._selectedStartDate,\r\n EndDate: this._selectedEndDate,\r\n UsersId: this._selectedUsers\r\n },\r\n GetTableTypesModel: {\r\n EntityId: this.FieldModel.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n }\r\n };\r\n\r\n var deferredResult = P.defer<any>();\r\n\r\n AgendaDataStore.GetData(params)\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then((data: any) => {\r\n const {\r\n AGENDA_DAY,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_WEEK,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaDayOrListOrTime = [AGENDA_DAY, AGENDA_LIST_WEEK, AGENDA_TIME_LINE_WEEK].includes(this._viewRenderMode);\r\n const isAgendaWeakOrWorkWeek = [AGENDA_WEEK, AGENDA_FIVE_DAY].includes(this._viewRenderMode);\r\n\r\n this._firstFreezeTimeDate = moment(data.FirstFreezeTimeDate);\r\n\r\n let userSpecialDays = data.UserSpecialDays.UserSpecialDays;\r\n let usersSchedule = data.UserSchedule.UsersSchedule;\r\n\r\n this.SetSpecialDays(userSpecialDays);\r\n this.SetUsersSchedule(usersSchedule);\r\n\r\n this._allEvents = data.AgendaItems;\r\n\r\n if (isAgendaDayOrListOrTime) {\r\n const { AgendaItemsPerDay, TableTypes } = data;\r\n this.SetAgendaDayData(AgendaItemsPerDay, TableTypes, usersSchedule, userSpecialDays);\r\n if (this._isDataLoaded || !isMobileWidth()) {\r\n this.ShowToDoBlock();\r\n }\r\n } else if (isAgendaWeakOrWorkWeek){\r\n const { AgendaItemsPerDay, TableTypes } = data;\r\n this.SetAgendaWeakOrWorkWeekData(AgendaItemsPerDay, TableTypes, usersSchedule, userSpecialDays);\r\n } else {\r\n this._plannings = data.PlanningItems;\r\n this._tablesTypes = data.TableTypes;\r\n }\r\n this.mapOwnersList();\r\n this.PrepareData();\r\n this._isDataLoaded = true;\r\n deferredResult.resolve(null);\r\n this._groupByResource(groupByResource);\r\n this.CustomScrollToHour(8);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n this.Clean();\r\n deferredResult.reject({message: error.message});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n mapOwnersList() {\r\n let ids = [];\r\n let owners = {};\r\n\r\n const {\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaDayOrListOrTime = [AGENDA_DAY, AGENDA_LIST_WEEK, AGENDA_TIME_LINE_WEEK].includes(this._viewRenderMode);\r\n const isAgendaWeakOrWorkWeek = [AGENDA_WEEK, AGENDA_FIVE_DAY].includes(this._viewRenderMode);\r\n\r\n if (isAgendaDayOrListOrTime) {\r\n this._agendaItemsPerDay.forEach((el) => {\r\n ids.push(el.UserId);\r\n\r\n owners[el.UserId] = {\r\n id: el.UserId,\r\n title: el.Name,\r\n businessHours: {\r\n start: el.Start || '00:00',\r\n end: el.End || '00:00'\r\n },\r\n freeDay: el.FreeDay,\r\n start: el.SpecialDayStart,\r\n end: el.SpecialDayEnd\r\n };\r\n });\r\n\r\n } else if (isAgendaWeakOrWorkWeek) {\r\n\r\n this._agendaItemsPerDay.forEach((el) => {\r\n ids.push(el.UserId);\r\n\r\n owners[el.UserId] = {\r\n id: el.UserId,\r\n title: el.Name,\r\n businessHours: {\r\n start: el.Start || '00:00',\r\n end: el.End || '00:00'\r\n }\r\n // freeDay: el.FreeDay,\r\n // start: el.SpecialDayStart,\r\n // end: el.SpecialDayEnd\r\n };\r\n });\r\n\r\n } else {\r\n this._allEvents.forEach((el) => {\r\n ids.push(el.Owner.Id);\r\n owners[el.Owner.Id] = {'id': el.Owner.Id, 'title': el.Owner.Name};\r\n });\r\n }\r\n\r\n ids = _.uniq(ids);\r\n this._owners(ids.map((id) => owners[id]));\r\n\r\n\r\n if (this._timeoutId) {\r\n // console.log('clear Timeout - '+ this._timeoutId);\r\n clearTimeout(this._timeoutId);\r\n }\r\n if (isAgendaWeakOrWorkWeek) {\r\n const days = this._viewRenderMode === AGENDA_FIVE_DAY ? 5 :\r\n this._viewRenderMode === AGENDA_WEEK ? 7 : null;\r\n if (days) {\r\n let minColumnWidth = this._isSmallAppointments ? 20 : 100;\r\n this._timeoutId = setTimeout(() => {\r\n this.SetCellMinWidthOfDays(minColumnWidth, days);\r\n }, 200);\r\n // console.log('timeoutId - '+this._timeoutId)\r\n }\r\n } else if (this._viewRenderMode === AGENDA_DAY) {\r\n this._timeoutId = setTimeout(() => {\r\n this.SetCellMinWidthOfDays(200);\r\n }, 200);\r\n }\r\n }\r\n\r\n private RemoveDuplicatesNonBusiness() {\r\n if (this._groupByResource() && this._agendaViewContainer){\r\n const element = this._agendaViewContainer.find('.fc-time-grid-container .fc-content-skeleton');\r\n $(element).remove();\r\n }\r\n }\r\n\r\n private SetCellMinWidthOfDays(minColumnWidth: number, days: number = 1): void {\r\n const minColumnW: number = minColumnWidth;\r\n const numberOfDays = days;\r\n const $el = $(this._el);\r\n const elW = $el.width();\r\n const ownersQty = this._owners().length * numberOfDays;\r\n const minWidth = minColumnW * ownersQty;\r\n let agendaWeekWorkWekDay = $el.find('.fc-agendaFiveDay-view, .fc-agendaWeek-view, .fc-agendaDay-view');\r\n\r\n agendaWeekWorkWekDay.css('min-width', minWidth > elW ? minWidth + 'px' : 'unset');\r\n }\r\n\r\n private PrepareData() {\r\n const todoEvents: Array<AgendaItemModel> = [];\r\n const appointmentEvents: Array<AgendaItemModel> = [];\r\n\r\n const appoitmentType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n\r\n const todoType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Todo);\r\n\r\n const taskType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Task);\r\n\r\n const holidayType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Holiday);\r\n\r\n const illnessType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n\r\n const calendarEvents = [];\r\n\r\n if (this._allEvents.length > 0) {\r\n _.each(this._allEvents, event => {\r\n _.each(event.Values, value => {\r\n if (value.FieldTypeName === FIELD_TYPES.DateTime || value.FieldTypeName === FIELD_TYPES.Time) {\r\n value.Value = FormatConverter.CorrectTimezone(value.Value, false);\r\n }\r\n\r\n if (value.FieldTypeName === FIELD_TYPES.Color) {\r\n value.Value = ColorConverter.ToHex(value.Value);\r\n }\r\n\r\n if (value.FieldId === this._recordTypeField.Id) {\r\n if (parseInt(value.Value) === todoType.Id) {\r\n todoEvents.push(event);\r\n }\r\n\r\n if (parseInt(value.Value) === appoitmentType.Id || parseInt(value.Value) === taskType.Id) {\r\n appointmentEvents.push(event);\r\n }\r\n\r\n if (parseInt(value.Value) === holidayType.Id || parseInt(value.Value) === illnessType.Id) {\r\n const fullCalendarEventModel = this.GetFullCalendarHolidayAndIllnessEventModel(event);\r\n calendarEvents.push(fullCalendarEventModel);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n this._todoEvents(todoEvents);\r\n this._appointmentEvents = appointmentEvents;\r\n\r\n _.each(appointmentEvents, event => {\r\n const fullCalendarEventModel = this.GetFullCalendarEventModel(event);\r\n\r\n if (fullCalendarEventModel) {\r\n calendarEvents.push(fullCalendarEventModel);\r\n }\r\n });\r\n\r\n const {AGENDA_WEEK, AGENDA_FIVE_DAY} = FULL_CALENDAR_VIEW;\r\n const isAgendaWeekAndWorkWeek = [AGENDA_FIVE_DAY, AGENDA_WEEK].includes(this._viewRenderMode);\r\n if (isAgendaWeekAndWorkWeek) {\r\n _.each(this._plannings, event => {\r\n const fullCalendarEventModel = this.GetFullCalendarPlanningEventModel(event);\r\n calendarEvents.push(fullCalendarEventModel);\r\n });\r\n }\r\n\r\n this._calendarEvents(calendarEvents);\r\n }\r\n\r\n private GetHoliday(eventModel: AgendaItemModel): boolean {\r\n let typeIdValue = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n let holidayType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Holiday);\r\n\r\n return holidayType.Id === typeIdValue;\r\n }\r\n\r\n private GetLifeStatusName(eventModel: AgendaItemModel): string {\r\n return eventModel && !!eventModel.LifeStatusInfo && !!eventModel.LifeStatusInfo.LifeStatusName ? eventModel.LifeStatusInfo.LifeStatusName : null;\r\n }\r\n\r\n private GetCalendarEventColor(eventModel: AgendaItemModel, eventColor: string, defaultColor: string): string {\r\n const disabledColor = this.IsLifeStatusDisabled(eventModel) ? '#c6c6c6' : null;\r\n return disabledColor || eventColor || defaultColor;\r\n }\r\n\r\n private IsHolidayIcon(eventModel: AgendaItemModel): boolean {\r\n return this.GetLifeStatusName(eventModel) === AGENDA_LIFE_STATUSES.Requested;\r\n }\r\n\r\n private IsLifeStatusDisabled(eventModel: AgendaItemModel): boolean {\r\n return this.GetLifeStatusName(eventModel) === LifeStatuses.Disabled.Name;\r\n }\r\n\r\n private GetHolidayTranslatedTooltip(eventModel: AgendaItemModel): string {\r\n let tooltipText = null;\r\n if (eventModel && !!eventModel.LifeStatusInfo) {\r\n tooltipText = !!eventModel.LifeStatusInfo.LifeStatusTranslatedName ? eventModel.LifeStatusInfo.LifeStatusTranslatedName : eventModel.LifeStatusInfo.LifeStatusName;\r\n }\r\n return tooltipText;\r\n }\r\n\r\n private GetFullCalendarEventModel(eventModel: AgendaItemModel) {\r\n let fullCalendarEventModel = null;\r\n const nameValue = this.GetValueByFieldId(eventModel, this._recordNameField.Id);\r\n const nameTranslatedValue = this.GetTranslatedValueByFieldId(eventModel, this._recordNameField.Id);\r\n const typeIdValue = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n\r\n const illnessType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n\r\n const typeNameValue = _.find(this._tablesTypes.TableTypes, tableType => tableType.Id === typeIdValue).Name;\r\n const owner = eventModel.Owner.Name;\r\n const ownerId = eventModel.Owner.Id;\r\n const sharedWith = eventModel.SharedWith;\r\n const startDateValue = this.GetValueByFieldId(eventModel, this._startDateField.Id);\r\n const eventColorValue = this.GetValueByFieldId(eventModel, this._eventColorField.Id);\r\n const placeColorValue = this.GetValueByFieldId(eventModel, this._placeField.Id);\r\n const timeBeforeValue = this.GetValueByFieldId(eventModel, this._timeBeforeField.Id);\r\n const timeAfterValue = this.GetValueByFieldId(eventModel, this._timeAfterField.Id);\r\n const durationValue = this.GetValueByFieldId(eventModel, this._durationField.Id);\r\n const descriptionValue = this.GetValueByFieldId(eventModel, this._descriptionField.Id);\r\n const translatedDescriptionValue = this.GetTranslatedValueByFieldId(eventModel, this._descriptionField.Id);\r\n const endingValue = this.GetValueByFieldId(eventModel, this._endingField.Id);\r\n\r\n const calendarEventColor = this.GetCalendarEventColor(eventModel, eventColorValue, placeColorValue);\r\n\r\n const startDate = moment(startDateValue);\r\n const timeBefore = moment(timeBeforeValue);\r\n const timeAfter = moment(timeAfterValue);\r\n const duration = moment(durationValue);\r\n const hoursDuration = moment.duration(duration.hours(), 'hours');\r\n const minutesDuration = moment.duration(duration.minutes(), 'minutes');\r\n\r\n let endDate = moment(startDate).add(hoursDuration);\r\n endDate = endingValue ? moment(endingValue) : moment(endDate).add(minutesDuration);\r\n\r\n const isAllDay = typeNameValue === AGENDA_TYPES.Task;\r\n\r\n let start = timeBeforeValue ? this.ShiftBackDate(startDate, timeBefore) : startDate;\r\n let end = timeAfterValue ? this.ShiftForwardDate(endDate, timeAfter) : endDate;\r\n\r\n if (isAllDay) {\r\n //end date is exclusive according to library\r\n end.add(1, 'days').add(-1, 'seconds');\r\n }\r\n\r\n if (nameValue && startDateValue) {\r\n fullCalendarEventModel = {\r\n id: this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? null : eventModel.RecordId,\r\n eventRecordId: eventModel.RecordId,\r\n title: nameTranslatedValue || nameValue,\r\n owner: owner,\r\n start: start.format(),\r\n end: end.format(),\r\n allDay: isAllDay,\r\n color: calendarEventColor,\r\n timeBefore: this.FormatTime(timeBeforeValue),\r\n timeBeforeHeigth: this.TimeShiftHeight(timeBefore),\r\n timeAfterHeigth: this.TimeShiftHeight(timeAfter),\r\n timeAfter: this.FormatTime(timeAfterValue),\r\n description: translatedDescriptionValue || descriptionValue,\r\n accepted: eventModel.Accepted,\r\n possibleToAccept: ko.observable(eventModel.PossibleToAccept),\r\n recurrentRecordId: eventModel.RecurrentRecordId,\r\n links: eventModel.Links,\r\n resourceId: sharedWith && sharedWith.UserId || ownerId,\r\n editable: eventModel.Editable && typeNameValue === AGENDA_TYPES.Appointment && !this.IsLifeStatusDisabled(eventModel),\r\n editableWithDisabledLifeStatus: eventModel.Editable && typeNameValue === AGENDA_TYPES.Appointment && this.IsLifeStatusDisabled(eventModel),\r\n isIllness: illnessType.Id === typeIdValue,\r\n isHoliday: this.GetHoliday(eventModel),\r\n isHolidayIcon: this.GetHoliday(eventModel) && this.IsHolidayIcon(eventModel),\r\n lifeStatusName: this.GetLifeStatusName(eventModel),\r\n holidayTooltip: this.GetHoliday(eventModel) ? this.GetHolidayTranslatedTooltip(eventModel) : null,\r\n originalResourceId: ko.observable(eventModel.OriginalResourceId),\r\n agenda: this\r\n };\r\n }\r\n\r\n return fullCalendarEventModel;\r\n }\r\n\r\n private GetFullCalendarHolidayAndIllnessEventModel(eventModel) {\r\n const nameValue = this.GetValueByFieldId(eventModel, this._recordNameField.Id);\r\n const nameTranslatedValue = this.GetTranslatedValueByFieldId(eventModel, this._recordNameField.Id);\r\n const owner = eventModel.Owner.Name;\r\n const ownerId = eventModel.Owner.Id;\r\n\r\n const typeIdValue = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n\r\n const illnessType =\r\n _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n\r\n const isIllness = illnessType.Id === typeIdValue;\r\n\r\n const typeNameValue = _.find(this._tablesTypes.TableTypes, tableType => tableType.Id === typeIdValue).Name;\r\n\r\n const eventColorValue = this.GetValueByFieldId(eventModel, this._eventColorField.Id);\r\n const defaultColor = typeNameValue == 'Holiday' ? '#6ddba8' : '#c9db6d';\r\n const calendarEventColor = this.GetCalendarEventColor(eventModel, eventColorValue, defaultColor);\r\n\r\n const startDateValue = this.GetValueByFieldId(eventModel, this._startDateField.Id);\r\n const timeBeforeValue = this.GetValueByFieldId(eventModel, this._timeBeforeField.Id);\r\n const timeAfterValue = this.GetValueByFieldId(eventModel, this._timeAfterField.Id);\r\n const durationValue = this.GetValueByFieldId(eventModel, this._durationField.Id);\r\n const endingValue = this.GetValueByFieldId(eventModel, this._endingField.Id);\r\n\r\n const startDate = moment(FormatConverter.CorrectTimezone(startDateValue));\r\n const timeBefore = moment(timeBeforeValue);\r\n const timeAfter = moment(timeAfterValue);\r\n const duration = moment(durationValue);\r\n const hoursDuration = moment.duration(duration.hours(), 'hours');\r\n const minutesDuration = moment.duration(duration.minutes(), 'minutes');\r\n\r\n let endDate = moment(startDate).add(hoursDuration);\r\n endDate = endingValue ? moment(FormatConverter.CorrectTimezone(endingValue)).add(hoursDuration) : moment(endDate).add(minutesDuration);\r\n\r\n let currentDay = moment(FormatConverter.CorrectTimezone(new Date().toDateString()));\r\n if (isIllness && !endingValue && moment(startDate).isBefore(currentDay)) { //if the start is less than the current day\r\n endDate = currentDay;\r\n }\r\n\r\n let start = timeBeforeValue ? this.ShiftBackDate(startDate, timeBefore) : startDate;\r\n let end = timeAfterValue ? this.ShiftForwardDate(endDate, timeAfter) : endDate;\r\n end.add(1, 'days');\r\n\r\n const fullCalendarEventModel = {\r\n id: this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? null : eventModel.RecordId,\r\n eventRecordId: eventModel.RecordId,\r\n title: nameTranslatedValue || nameValue,\r\n owner: owner,\r\n allDay: true,\r\n start: start.format(),\r\n end: end.format(),\r\n color: calendarEventColor,\r\n editable: eventModel.Editable && !this.IsLifeStatusDisabled(eventModel),\r\n editableWithDisabledLifeStatus: eventModel.Editable && this.IsLifeStatusDisabled(eventModel),\r\n resourceId: ownerId,\r\n isIllness: isIllness,\r\n isHoliday: this.GetHoliday(eventModel),\r\n isHolidayIcon: this.GetHoliday(eventModel) && this.IsHolidayIcon(eventModel),\r\n lifeStatusName: this.GetLifeStatusName(eventModel),\r\n holidayTooltip: this.GetHoliday(eventModel) ? this.GetHolidayTranslatedTooltip(eventModel) : null,\r\n originalResourceId: ko.observable(eventModel.OriginalResourceId),\r\n agenda: this\r\n };\r\n\r\n return fullCalendarEventModel;\r\n }\r\n\r\n private GetFullCalendarPlanningEventModel(eventModel: PlanningItemModel) {\r\n\r\n const end = moment.utc(this._selectedEndDate).add(1, 'days').add(-1, 'seconds');\r\n const planningsAppointments = eventModel.PlanningAppointments.map(date => moment(FormatConverter.CorrectTimezone(date)));\r\n\r\n const appointmentsButtons = this.BuildAppointmentsWeekButtons(planningsAppointments);\r\n const bookingsButtons = this.BuildBookTimeWeekButtons();\r\n\r\n return {\r\n id: this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? null : eventModel.Id,\r\n eventRecordId: eventModel.Id,\r\n title: eventModel.CompetenceName,\r\n allDay: true,\r\n start: this._selectedStartDate,\r\n end: end,\r\n links: eventModel.Links,\r\n users: eventModel.Users,\r\n planning: true,\r\n appointmentsWeekButtons: appointmentsButtons,\r\n bookingsWeekButtons: bookingsButtons,\r\n getUserTitle: (user: UserProgress) => {\r\n return `${user.Name}: ${user.BookedHours} of ${user.DecHours}`\r\n }\r\n };\r\n }\r\n\r\n private BuildAppointmentsWeekButtons(plannigns: moment.Moment[]) {\r\n const appointmentsWeekButtons: Array<PlannerItemWeekButton> = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY\r\n ? this.BuildWeekButtons().slice(0, 5)\r\n : this.BuildWeekButtons();\r\n\r\n appointmentsWeekButtons.forEach((button: any) => button.Disabled = _.any(plannigns, planning => planning.isSame(moment(button.Date), 'day')));\r\n return appointmentsWeekButtons;\r\n }\r\n\r\n private BuildBookTimeWeekButtons() {\r\n //Only working days should be in the book time week buttons list\r\n const bookTimeWeekButtons = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY\r\n ? this.BuildWeekButtons().slice(0, 5)\r\n : this.BuildWeekButtons();\r\n bookTimeWeekButtons.forEach((button: any) => {\r\n //if difference in minutes is negative - then button's date is in future\r\n const isFuture = moment().diff(button.Date, 'minutes') < 0;\r\n //if difference in minutes is negative - then we are out of freeze time\r\n const isOutOfFreezeTime = moment(button.Date).diff(this._firstFreezeTimeDate, 'minutes') < 0;\r\n\r\n if (isFuture) {\r\n button.Disabled = true;\r\n button.DisabledReason = this._labels.WRITING_TIME_FOR_FUTURE_NOT_ALLOWED;\r\n return;\r\n }\r\n\r\n if (isOutOfFreezeTime) {\r\n button.Disabled = true;\r\n button.DisabledReason = this._labels.STARTING_DATE_IS_OUT_OF_FREEZE_TIME;\r\n return;\r\n }\r\n });\r\n\r\n return bookTimeWeekButtons;\r\n }\r\n\r\n private BuildWeekButtons() {\r\n const weekButtons: Array<PlannerItemWeekButton> = [];\r\n\r\n for (let dayOfWeek = 0; dayOfWeek < 7; dayOfWeek++) {\r\n const date = moment(this._selectedStartDate).hours(9).add(dayOfWeek, 'days').format();\r\n const name = moment(this._selectedStartDate).add(dayOfWeek, 'days').format('dd');\r\n\r\n weekButtons.push({Name: name, Date: date, Disabled: false});\r\n }\r\n\r\n return weekButtons;\r\n }\r\n\r\n TimeShiftHeight(shiftTime: moment.Moment) {\r\n const hours = shiftTime.hours();\r\n const minutes = shiftTime.minutes();\r\n const totalMinutes = hours * 60 + minutes;\r\n const height = 66 / 60 * totalMinutes;\r\n\r\n return height;\r\n }\r\n\r\n ShiftBackDate(date: moment.Moment, shiftDate: moment.Moment) {\r\n const hoursDuration = moment.duration(shiftDate.hours() * -1, 'hours');\r\n const minutesDuration = moment.duration(shiftDate.minutes() * -1, 'minutes');\r\n\r\n date = moment(date).add(hoursDuration);\r\n date = moment(date).add(minutesDuration);\r\n\r\n return date;\r\n }\r\n\r\n ShiftForwardDate(date: moment.Moment, shiftDate: moment.Moment) {\r\n const hoursDuration = moment.duration(shiftDate.hours(), 'hours');\r\n const minutesDuration = moment.duration(shiftDate.minutes(), 'minutes');\r\n\r\n date = moment(date).add(hoursDuration);\r\n date = moment(date).add(minutesDuration);\r\n\r\n return date;\r\n }\r\n\r\n //TODO use formater\r\n private FormatTime(value: string): string {\r\n return value ? moment(value).format() : '';\r\n }\r\n\r\n private GetValueByFieldId(event: AgendaItemModel, fieldId: number): string {\r\n const fieldValue = _.find(event.Values, value => value.FieldId === fieldId);\r\n\r\n return fieldValue ?\r\n fieldValue.DisplayValue || fieldValue.Value :\r\n null;\r\n }\r\n\r\n private GetTranslatedValueByFieldId(event: AgendaItemModel, fieldId: number): string {\r\n const fieldValue = _.find(event.Values, value => value.FieldId === fieldId);\r\n\r\n return fieldValue ?\r\n fieldValue.TranslatedDisplayValue || fieldValue.TranslatedValue :\r\n null;\r\n }\r\n\r\n EventTitle(item: AgendaItemModel): string {\r\n const nameField = _.find(item.Values, value => value.FieldId === this._recordNameField.Id);\r\n return nameField ? nameField.TranslatedValue || nameField.Value : '';\r\n }\r\n\r\n get TodoEvents(): KnockoutObservableArray<AgendaItemModel> {\r\n return this._todoEvents;\r\n }\r\n\r\n get TodoEventName(): KnockoutObservable<string> {\r\n return this._todoEventName;\r\n }\r\n\r\n AddNewTodo() {\r\n const todoType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Todo);\r\n\r\n if (todoType) {\r\n const screenData = new ScreenDataModel();\r\n const startDateControlData = new ControlDataModel();\r\n\r\n startDateControlData.FieldId = this._recordNameField.Id;\r\n startDateControlData.Value = this._todoEventName();\r\n screenData.ControlsData.push(startDateControlData);\r\n\r\n this.NewRecord(screenData, todoType.Id, null, DataModes.Default, null, null, true);\r\n }\r\n }\r\n\r\n async AddSpecialDay() {\r\n const specialDayType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.SpecialDay);\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen({\r\n EntityId: this.FieldModel.EntityId,\r\n TableTypeId: specialDayType.Id\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => screen.ShowInModal())\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n AddHoliday() {\r\n const screenData = new ScreenDataModel();\r\n const holidayType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Holiday);\r\n this.NewRecord(screenData, holidayType.Id);\r\n }\r\n\r\n AddIllness() {\r\n const screenData = new ScreenDataModel();\r\n const illnessType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Illness);\r\n this.NewRecord(screenData, illnessType.Id);\r\n }\r\n\r\n AddRecurrent() {\r\n const screenData = new ScreenDataModel();\r\n const recurrentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Recurrent);\r\n this.NewRecord(screenData, recurrentType.Id, null, DataModes.Default, null, null, true);\r\n }\r\n\r\n EditRecurrent(id: number) {\r\n const recurrentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Recurrent);\r\n this.EditRecord(id, recurrentType.Id);\r\n }\r\n\r\n RemoveTodoItem(todoEvent: AgendaItemModel) {\r\n const notifier = new Notifier();\r\n\r\n RecordStore.GetDeletionMode({EntityId: this.FieldModel.EntityId, RecordId: todoEvent.RecordId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n return;\r\n }\r\n\r\n const deletionMode = result.ResultObject;\r\n\r\n if (deletionMode.OnDelete || deletionMode.OnDelete === 0) {\r\n this.ShowDeletionModeDialog(deletionMode, todoEvent);\r\n } else {\r\n this.ShowConfirmationDialog(todoEvent);\r\n }\r\n });\r\n }\r\n\r\n private ShowDeletionModeDialog(deletionModeModel: DeletionModeModel, todoEvent: AgendaItemModel) {\r\n const deletionModeDialog = new DeletionModeDialog({\r\n DeletionMode: deletionModeModel.OnDelete,\r\n HasCustomLifeStatus: deletionModeModel.HasCustomLifeStatus\r\n });\r\n\r\n deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DELETE_SELECTED, this, () => {\r\n this.UseDeleteDeletionMode(todoEvent);\r\n });\r\n\r\n deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISABLE_SELECTED, this, () => {\r\n this.UseDisableDeletionMode(todoEvent);\r\n });\r\n\r\n deletionModeDialog.Show();\r\n }\r\n\r\n private ShowConfirmationDialog(todoEvent: AgendaItemModel) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.UseDeleteDeletionMode(todoEvent);\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private UseDeleteDeletionMode(todoEvent: AgendaItemModel) {\r\n BlockUI.Block();\r\n\r\n const notifier = new Notifier();\r\n RecordStore.DeleteRecord({EntityId: this.FieldModel.EntityId, RecordId: todoEvent.RecordId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n return;\r\n }\r\n\r\n if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n } else {\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n this._todoEvents.splice(this._todoEvents.indexOf(todoEvent), 1);\r\n }\r\n })\r\n .fail(error => {\r\n notifier.Warning(error.message);\r\n });\r\n }\r\n\r\n private UseDisableDeletionMode(todoEvent: AgendaItemModel) {\r\n BlockUI.Block();\r\n\r\n const notifier = new Notifier();\r\n RecordStore.DeleteRecord({EntityId: this.FieldModel.EntityId, RecordId: todoEvent.RecordId, Disable: true})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n })\r\n .fail(error => {\r\n notifier.Warning(error.message);\r\n });\r\n }\r\n\r\n ShowToDoBlock() {\r\n this._isVisibleTodoBlock(true);\r\n }\r\n\r\n AddNewAppointment(startDate: string, durationMinutes: number = null, calendarUserId: number = null) {\r\n const duration = Agenda.ConvertDefaultAppointmentToDateTime(durationMinutes);\r\n\r\n const appointmentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n\r\n const screenData = new ScreenDataModel();\r\n const startDateControlData = new ControlDataModel();\r\n\r\n startDateControlData.FieldId = this._startDateField.Id;\r\n startDateControlData.Value = moment(startDate).format();\r\n\r\n const durationControlData = new ControlDataModel();\r\n\r\n durationControlData.FieldId = this._durationField.Id;\r\n durationControlData.Value = duration;\r\n\r\n screenData.ControlsData.push(startDateControlData);\r\n screenData.ControlsData.push(durationControlData);\r\n\r\n const exampleAppointmentId = this.GetForm() && this.GetForm().GetScreen() && this.GetForm().GetScreen().ExampleAppointmentId;\r\n\r\n this.NewRecord(screenData, appointmentType.Id, exampleAppointmentId, DataModes.Default, null, null, true, calendarUserId);\r\n }\r\n\r\n static ConvertDefaultAppointmentToDateTime(minutes: number) {\r\n let h: string | number = Math.floor(minutes / 60);\r\n let m: string | number = minutes % 60;\r\n\r\n h = h < 10 ? '0' + h : h;\r\n m = m < 10 ? '0' + m : m;\r\n\r\n return moment(`1970-01-01 ${h}:${m}:00`).format();\r\n }\r\n\r\n EditEvent(id: number) {\r\n const eventModel = _.find(this._allEvents, event => event.RecordId === id);\r\n if (eventModel) {\r\n const typeId = +this.GetValueByFieldId(eventModel, this._recordTypeField.Id);\r\n this.EditRecord(eventModel.RecordId, typeId);\r\n }\r\n }\r\n\r\n UpdateAppointment(id: number, startDate: moment.Moment, duration?: moment.Duration) {\r\n const notifier = new Notifier();\r\n const eventModel = _.find(this._allEvents, event => event.RecordId === id);\r\n\r\n if (eventModel) {\r\n const startDateFieldValue = _.find(eventModel.Values, value => value.FieldId === this._startDateField.Id);\r\n const timeBeforeFieldValue = _.find(eventModel.Values, value => value.FieldId === this._timeBeforeField.Id);\r\n const timeBefore = moment(timeBeforeFieldValue.Value);\r\n\r\n startDateFieldValue.Value = this.ShiftForwardDate(startDate, timeBefore).format();\r\n\r\n const durationFieldValue = _.find(eventModel.Values, value => value.FieldId === this._durationField.Id);\r\n let durationValue = moment(durationFieldValue.Value);\r\n\r\n if (duration) {\r\n const hoursDuration = moment.duration(duration.hours(), 'hours');\r\n const minutesDuration = moment.duration(duration.minutes(), 'minutes');\r\n\r\n durationValue = moment(durationValue).add(hoursDuration);\r\n durationValue = moment(durationValue).add(minutesDuration);\r\n durationFieldValue.Value = durationValue.format();\r\n }\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.UpdateAgenda(eventModel)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n notifier.Success(NOTIFICATIONS.EVENT_UPDATED);\r\n }).fail(error => notifier.Failed(error.message));\r\n }\r\n }\r\n\r\n CreateAppointmentFromPlanner(item: PlanningItemModel, button: PlannerItemWeekButton) {\r\n const notifier = new Notifier();\r\n const userId = this._selectedUsers.length === 1 ? this._selectedUsers[0] : UserManager.Instance.CurrentUser.Id;\r\n\r\n const params = {\r\n PlanningId: item.Id,\r\n StartDate: button.Date,\r\n UserId: userId\r\n };\r\n\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.CreatePlanningAppointment(params)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n }).fail(error => notifier.Failed(NOTIFICATIONS.SOMETHING_WENT_WRONG));\r\n }\r\n\r\n DistributeAppointmentsForPlanning(item: PlanningItemModel) {\r\n const notifier = new Notifier();\r\n const userId = this._selectedUsers.length === 1 ? this._selectedUsers[0] : UserManager.Instance.CurrentUser.Id;\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.CreatePlanningAppointments(item.Id, userId)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n }).fail(error => notifier.Failed(NOTIFICATIONS.SOMETHING_WENT_WRONG));\r\n }\r\n\r\n BookFromPlanner(item: PlanningItemModel, button: PlannerItemWeekButton) {\r\n const notifier = new Notifier();\r\n\r\n const params = {\r\n PlanningId: item.Id,\r\n StartDate: button.Date,\r\n AgendaTableId: this.FieldModel.EntityId\r\n };\r\n\r\n this.BlockUi();\r\n\r\n return AgendaDataStore.BookPlanning(params)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then(() => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n }).fail(error => notifier.Failed(error.message));\r\n }\r\n\r\n AcceptAppointment(appointment) {\r\n appointment.Accepting(true);\r\n const screen = this.GetForm().GetScreen();\r\n const isSubjectScreen = screen.IsSubjectScreen();\r\n\r\n AgendaDataStore.AcceptAppointment({\r\n AgendaTableId: this.FieldModel.EntityId,\r\n AppointmentId: appointment.Id,\r\n ScreenSubjectEntityId: isSubjectScreen && screen.GetEntityId(),\r\n ScreenSubjectRecordId: isSubjectScreen && screen.GetRecordId()\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier().Success(NOTIFICATIONS.BOOKED_TIME_RECORD_WAS_CREATED_SUCCESSFULLY);\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData(this._groupByResource());\r\n } else {\r\n new Notifier().Failed(result.ErrorMessage);\r\n appointment.Accepting(false);\r\n }\r\n })\r\n .fail(() => {\r\n appointment.Accepting(false);\r\n new Notifier().Failed('Error accepting appointment');\r\n });\r\n }\r\n\r\n StartDrag(item: AgendaItemModel, evt, ui) {\r\n this._todoToAppointmentItem = item;\r\n }\r\n\r\n ConvertTodoToAppointment(eventModel: AgendaItemModel, startDate: string) {\r\n const notifier = new Notifier();\r\n const appointmentDuration = GlobalManager.Instance.GetGlobal(GLOBALS.APPOINTMENT_DURATION);\r\n let appointmentDurationNumber = parseInt(appointmentDuration);\r\n\r\n if (isNaN(appointmentDurationNumber)) {\r\n appointmentDurationNumber = DEFAULT_APPOINTMENT_DURATION;\r\n }\r\n\r\n const cloneEventModel = _.clone(eventModel);\r\n\r\n const duration = Agenda.ConvertDefaultAppointmentToDateTime(appointmentDurationNumber);\r\n const startDateFieldValue = _.find(cloneEventModel.Values, value => value.FieldId === this._startDateField.Id);\r\n\r\n startDateFieldValue.Value = startDate;\r\n\r\n const durationFieldValue = _.find(cloneEventModel.Values, value => value.FieldId === this._durationField.Id);\r\n\r\n durationFieldValue.Value = duration;\r\n\r\n const appointmentType = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n const eventTypeFieldValue = _.find(cloneEventModel.Values, value => value.FieldId === this._recordTypeField.Id);\r\n\r\n eventTypeFieldValue.Value = String(appointmentType.Id);\r\n\r\n this.BlockUi();\r\n\r\n let createAppointmentFromTodoModel: ICreateAppointmentFromTodoRequestModel = {\r\n AgendaEntityId: this.FieldModel.EntityId,\r\n TodoItemId: eventModel.RecordId,\r\n Starting: startDate,\r\n Duration: duration,\r\n RemoveTodo: this._checkedRemoveToDo(),\r\n AppointmentAttendeesId: this.GetSelectedAppointmentAttendees()\r\n };\r\n\r\n AgendaDataStore.CreateAppointmentFromTodo(createAppointmentFromTodoModel)\r\n .always(() => {\r\n this.UnBlockUi();\r\n })\r\n .then((result) => {\r\n this.Trigger('AGENDA_CHANGED');\r\n if (this._checkedRemoveToDo()) {\r\n this._todoEvents.splice(this._todoEvents.indexOf(eventModel), 1);\r\n this._checkedRemoveToDo(false);\r\n }\r\n\r\n cloneEventModel.RecordId = result.Id;\r\n\r\n notifier.Success(NOTIFICATIONS.EVENT_UPDATED);\r\n let fullCalendarEventModel = this.GetFullCalendarEventModel(cloneEventModel);\r\n this._calendarEvents.push(fullCalendarEventModel);\r\n this.LoadData(this._groupByResource())\r\n .then((result) => {\r\n this.EditRecord(cloneEventModel.RecordId, appointmentType.Id);\r\n });\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private IsUserAllowedToCreate() {\r\n return AgendaDataStore.GetUserAllowance({\r\n TableId: this.FieldModel.EntityId,\r\n SecurityWord: TABLE_SECURITY_WORDS.CREATE\r\n });\r\n }\r\n\r\n private InitDateTimePicker(element: JQuery) {\r\n let self = this;\r\n //Date picker on click of the current period\r\n const fullCalendarBox = element.parent().parent(); //FullCalendar Obj\r\n const headerToolbar = fullCalendarBox.find('div.fc-toolbar.fc-header-toolbar');\r\n const centerBlock = headerToolbar.find('div.fc-center');\r\n const headerDateBtn = centerBlock.find('h2'); //find \"h2\" element\r\n headerDateBtn.append(`<input type='text' class=\"form-control\" style=\"display: none;\" />`); //added input, need to work dateTimePicker\r\n headerDateBtn.addClass('activeClick');\r\n\r\n if (!headerDateBtn.data(\"DateTimePicker\")) { //default start DateTimePicker\r\n\r\n headerDateBtn.datetimepicker({\r\n minDate: '1990-01-01'\r\n // defaultDate: this._selectedStartDate\r\n });\r\n\r\n headerDateBtn.on('dp.change', function (e) {\r\n fullCalendarBox.fullCalendar('gotoDate', e.date);\r\n });\r\n\r\n function alignDateTimePicker() {\r\n headerDateBtn.find('.bootstrap-datetimepicker-widget').css(\r\n centerBlock.width() === headerToolbar.width()\r\n ? {left: '50%', transform: 'translateX(-50%)'}\r\n : {transform: ''}\r\n );\r\n }\r\n\r\n headerDateBtn.on('dp.show', () => {\r\n alignDateTimePicker();\r\n\r\n $(window).on('resize', alignDateTimePicker);\r\n });\r\n\r\n headerDateBtn.on('dp.hide', () => {\r\n $(window).off('resize', alignDateTimePicker);\r\n });\r\n\r\n $(headerDateBtn).on('click', function () {\r\n let currentDate = moment(self._selectedStartDate);\r\n if (self._viewRenderMode == FULL_CALENDAR_VIEW.MONTH) { // DateTimePicker new options if(MONTH)\r\n headerDateBtn.data(\"DateTimePicker\").date(fullCalendarBox.fullCalendar('getDate').format(DATE_FORMATS.MONTH_AND_YEAR.Format));\r\n } else { // DateTimePicker default options\r\n headerDateBtn.data(\"DateTimePicker\").date(currentDate);\r\n }\r\n $(this).data(\"DateTimePicker\").toggle();\r\n });\r\n $(headerDateBtn).on('mouseleave', function () {\r\n $(this).data(\"DateTimePicker\").hide();\r\n });\r\n }\r\n\r\n switch (self._viewRenderMode) {\r\n case FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY : // DateTimePicker new options if(AGENDA_FIVE_DAY)\r\n headerDateBtn.data(\"DateTimePicker\") && headerDateBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n format: this.GetShortDateFormat(),\r\n daysOfWeekDisabled: [0, 6],\r\n });\r\n break;\r\n case FULL_CALENDAR_VIEW.MONTH : // DateTimePicker new options if(MONTH)\r\n headerDateBtn.data(\"DateTimePicker\") && headerDateBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'months',\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n format: this.GetMonthAndYearFormat(),\r\n });\r\n break;\r\n default : // DateTimePicker default options\r\n headerDateBtn.data(\"DateTimePicker\") && headerDateBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n format: this.GetShortDateFormat(),\r\n daysOfWeekDisabled: false,\r\n });\r\n break;\r\n }\r\n }\r\n\r\n private GetFullCalendarOptions(): any {\r\n const self = this;\r\n\r\n if (this._appointmentAttendees() && this._appointmentAttendees().Users.length && !self._groupByResource()) {\r\n self._groupByResource(true)\r\n }\r\n\r\n this.SetLastDate();\r\n\r\n return {\r\n defaultDate: this._selectedStartDate,\r\n views: {\r\n agendaFiveDay: {\r\n type: 'agendaWeek',\r\n weekends: false,\r\n groupByResource: self._groupByResource(),\r\n columnFormat: 'ddd M/D'\r\n },\r\n agendaWeek: {\r\n groupByResource: self._groupByResource(),\r\n columnFormat: 'ddd M/D'\r\n },\r\n month: {\r\n eventLimit: 4,\r\n groupByResource: false\r\n },\r\n listWeek: {\r\n groupByResource: false,\r\n noEventsMessage: LABELS.AGENDA_NO_EVENTS_TO_DISPLAY\r\n },\r\n timelineWeek: {\r\n resourceLabelText: LABELS.AGENDA_USERS\r\n }\r\n\r\n },\r\n allDaySlot: true,\r\n firstDay: 1,\r\n locale: FullCalendarCultures.Get(FormatConverter.GetLocale()),\r\n header: {\r\n center: 'prev, title, next',\r\n right: 'today, month, agendaWeek, agendaFiveDay, agendaDay, listWeek, timelineWeek',\r\n left: ''\r\n },\r\n buttonIcons: {\r\n prev: 'left-triangle',\r\n next: 'right-triangle',\r\n prevYear: 'left-double-arrow',\r\n nextYear: 'right-double-arrow'\r\n },\r\n buttonText: {\r\n today: LABELS.AGENDA_TODAY,\r\n month: LABELS.AGENDA_MONTH,\r\n agendaWeek: LABELS.AGENDA_WEEK,\r\n agendaFiveDay: LABELS.AGENDA_WORK_WEEK,\r\n agendaDay: LABELS.AGENDA_DAY,\r\n listWeek: LABELS.AGENDA_LIST,\r\n timelineWeek: LABELS.AGENDA_TIMELINE_WEEK\r\n },\r\n scrollTime: '08:00:00',\r\n slotEventOverlap: false,\r\n timeFormat: ' ',\r\n defaultView: MobileChecker.IsMobile() ? FULL_CALENDAR_VIEW.AGENDA_DAY : (this._isReturned ? this._viewRenderMode : FULL_CALENDAR_VIEW.AGENDA_FIVE_DAY),\r\n slotMinutes: 15,\r\n editable: !this._isReadonly,\r\n droppable: true,\r\n forceEventDuration: true,\r\n defaultTimedEventDuration: '00:30:00',\r\n selectable: !MobileChecker.IsMobile(),\r\n weekNumbers: true,\r\n navLinks: true,\r\n longPressDelay: 1000,\r\n eventLongPressDelay: 1000,\r\n resources: callback => callback(this._owners()),\r\n eventRenderWait: 300,\r\n\r\n viewRender: (view, element) => {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY\r\n } = FULL_CALENDAR_VIEW;\r\n const viewName = view.name;\r\n const isAgendaDayOrMonth = [AGENDA_DAY, MONTH].includes(viewName);\r\n const isAgendaFiveDayOrWeek = [AGENDA_FIVE_DAY, AGENDA_WEEK].includes(viewName);\r\n const groupByResource = self._groupByResource();\r\n\r\n const todoBlock = document.getElementById('external-events');\r\n const agendaCalendar = document.getElementById('agendaCalendar');\r\n if (agendaCalendar && todoBlock) {\r\n todoBlock.style.maxHeight = `${agendaCalendar.offsetHeight}px`;\r\n }\r\n\r\n if(isAgendaDayOrMonth) {\r\n self._groupByResource(false);\r\n } else if (isAgendaFiveDayOrWeek && !groupByResource && self._isInteractionWithUserSelect()) {\r\n self._groupByResource(true);\r\n }\r\n\r\n if (isAgendaFiveDayOrWeek && groupByResource && self._isInteractionWithUserSelect()) {\r\n const days = viewName === AGENDA_FIVE_DAY ? 5 :\r\n viewName === AGENDA_WEEK ? 7 : null;\r\n if (days) {\r\n let minColumnWidth = this._isSmallAppointments ? 20 : 100;\r\n self._timeoutId = setTimeout(() => {\r\n self.SetCellMinWidthOfDays(minColumnWidth, days);\r\n }, 200);\r\n // console.log('timeoutId - '+self._timeoutId)\r\n }\r\n }\r\n\r\n if (groupByResource && (viewName === AGENDA_FIVE_DAY || viewName === AGENDA_WEEK)) {\r\n element.find('.fc-day-grid-container').hide(); // Hide the default grid\r\n }\r\n\r\n if (viewName === MONTH) { // add .fc-disabled-day css class\r\n $('#agendaCalendar').find('.fc-day').each(function() {\r\n var date = $(this).data('date');\r\n var day = moment(date).day();\r\n if (day === 0 || day === 6) {\r\n $(this).addClass('fc-disabled-day');\r\n }\r\n });\r\n } else {\r\n $('#agendaCalendar').find('.fc-day').removeClass('fc-disabled-day');\r\n }\r\n\r\n this._currentDay = moment(view.start._i).format(DATE_FORMATS.SHORT_DATE.Format);\r\n this._viewRenderMode = view.type;\r\n this._agendaViewContainer = element;\r\n\r\n const startDate = FormatConverter.CorrectTimezone(moment(view.start._i).startOf('day').format());\r\n const endDate = FormatConverter.CorrectTimezone(moment(view.end._i).subtract(1, \"days\").endOf('day').format());\r\n\r\n if (!this._isReturned) {\r\n if (this._selectedStartDate !== startDate || this._selectedEndDate !== endDate) {\r\n this.Clean(element);\r\n this._selectedStartDate = startDate;\r\n this._selectedEndDate = endDate;\r\n\r\n if (this._selectedUsers.length !== 0 && (this.SelectUserIsInitialized() || !this.SelectUserWillProvideEventOnLoad())) {\r\n this.LoadData(self._groupByResource());\r\n }\r\n }\r\n } else {\r\n this.Clean(element);\r\n this._selectedStartDate = startDate;\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData();\r\n }\r\n\r\n this.SetDate(this._controlId, startDate);\r\n this._isReturned = false;\r\n this.InitDateTimePicker(element);\r\n },\r\n\r\n viewDestroy: (view, element)=> {\r\n self.RemoveDuplicatesNonBusiness();\r\n },\r\n\r\n dayClick: (start: moment.Moment, jsEvent, view, resource) => {\r\n if (!MobileChecker.IsMobile()) return;\r\n const calendarUserId = resource && resource.id && Number(resource.id);\r\n this.AddNewAppointment(start.format(), this.GetAppointmentDuration(), calendarUserId);\r\n },\r\n\r\n drop: function (date, jsEvent, ui) {\r\n if (date._ambigTime && (self._viewRenderMode !== FULL_CALENDAR_VIEW.MONTH)) { //prohibit drag and drop from hours to all-day\r\n return false;\r\n }\r\n let droppedEvent = $(this).data(\"eventObj\");\r\n const eventId = $(this).data(\"event-id\");\r\n\r\n let allDayArr = _.find(self._calendarEvents(), (event_) => event_.allDay == true && droppedEvent && event_.eventRecordId === eventId);\r\n if (allDayArr) { //prohibit drag and drop from all-day to hours\r\n return false;\r\n }\r\n if (self._todoToAppointmentItem && !jsEvent.ctrlKey) {\r\n self.ConvertTodoToAppointment(self._todoToAppointmentItem, FormatConverter.ShiftTimeZone(FormatConverter.CorrectTimezone(date.format()), true));\r\n self._todoToAppointmentItem = null;\r\n }\r\n if (jsEvent.ctrlKey) {\r\n self.IsUserAllowedToCreate()\r\n .then((res) => {\r\n const isMonthView = self._viewRenderMode === FULL_CALENDAR_VIEW.MONTH;\r\n if (res) {\r\n isMonthView && (date._ambigTime = false);\r\n const droppedEvent = $(this).data(\"eventObj\");\r\n let startDate = !isMonthView ? moment(date) : moment(date).set({\r\n hours: droppedEvent.dateProfile.start.hours(),\r\n minutes: droppedEvent.dateProfile.start.minutes(),\r\n seconds: droppedEvent.dateProfile.start.seconds()\r\n });\r\n const eventId = $(this).data(\"event-id\");\r\n const recordId = +eventId;\r\n const appointment: TableTypeModel = _.find(self._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n const starting = FormatConverter.ShiftTimeZone(FormatConverter.CorrectTimezone(startDate.format()), true);\r\n self.CopyRecord(null, appointment.Id, recordId, DataModes.CopyWithRelations, null, starting);\r\n } else {\r\n const notifier = new Notifier();\r\n notifier.Failed(NOTIFICATIONS.NOT_ALLOWED_ACTION);\r\n }\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n });\r\n (self._viewRenderMode === FULL_CALENDAR_VIEW.MONTH) && (date._ambigTime = true);\r\n }\r\n },\r\n\r\n eventDragStart(event) {\r\n if (self._disableDropEvtsBtwnDiffRes) {\r\n // Store original resource ID\r\n if (self._groupByResource()) {\r\n // console.log('eventDragStart originalResourceId -'+event.originalResourceId()+' event.resourceId -'+event.resourceId);\r\n event.originalResourceId(event.resourceId);\r\n }\r\n }\r\n\r\n self._enableTooltip = false;\r\n\r\n const eventId = self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n const appointment = _.find(self._appointmentEvents, (event_) => event_.RecordId === eventId);\r\n if (!appointment) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.EDIT__ONLY_APPOINTMENT_EVENTS);\r\n return;\r\n }\r\n\r\n const durationFieldValue = _.find(appointment.Values, value => value.FieldId === self._durationField.Id);\r\n const hasDuration = durationFieldValue && durationFieldValue.Value;\r\n if (!hasDuration) {\r\n new Notifier().Warning('Appointment does not have duration');\r\n return;\r\n }\r\n\r\n },\r\n\r\n eventDrop: (event, delta, revertFunc, jsEvent, ui, view) => {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY\r\n } = FULL_CALENDAR_VIEW;\r\n const agendaDayOrWeek = [AGENDA_FIVE_DAY, AGENDA_WEEK].includes(view.name);\r\n\r\n if (self._disableDropEvtsBtwnDiffRes && self._groupByResource() && agendaDayOrWeek) {\r\n let originalResourceId = event.originalResourceId();\r\n let newResourceId = $(jsEvent.target).closest('.fc-event').data('resource-id');\r\n // console.log(`originalResourceId - ${+originalResourceId}`)\r\n // console.log(`newResourceId - ${newResourceId}`)\r\n\r\n if (!newResourceId || +originalResourceId !== newResourceId) {\r\n revertFunc(); // revert the drop\r\n new Notifier().Warning('Cannot move events between different resources');\r\n return\r\n }\r\n }\r\n\r\n self._enableTooltip = true;\r\n if (event.editable) {\r\n const eventId = self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n\r\n this.UpdateAppointment(eventId, moment(event.start._i))\r\n .then(() => {\r\n let currentEvent = null;\r\n if (self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK) {\r\n currentEvent = _.find(this._calendarEvents(), (event_) => event_.eventRecordId === eventId);\r\n } else {\r\n currentEvent = _.find(this._calendarEvents(), (event_) => event_.id === eventId);\r\n }\r\n\r\n if (currentEvent) {\r\n currentEvent.start = event.start.format();\r\n currentEvent.end = event.end.format();\r\n\r\n let start = moment(event.start.format()).format(\"MM-DD-YYYY\");\r\n let current = moment().format(\"MM-DD-YYYY\");\r\n\r\n if (moment(start).isBefore(current) ||\r\n moment(start).isSame(current)) {\r\n\r\n currentEvent.possibleToAccept(true);\r\n } else {\r\n\r\n currentEvent.possibleToAccept(false);\r\n }\r\n }\r\n })\r\n .fail(() => revertFunc());\r\n }\r\n },\r\n\r\n eventAllow: function (dropLocation, event) {\r\n if (event.allDay) { //prohibit drag and drop from hours to all-day\r\n return false;\r\n }\r\n const eventId = self._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n const appointment: AgendaItemModel = _.find(self._appointmentEvents, (event_: AgendaItemModel) => event_.RecordId === eventId);\r\n if (!appointment) return false;\r\n\r\n const durationFieldValue = _.find(appointment.Values, value => value.FieldId === self._durationField.Id);\r\n const hasDuration = durationFieldValue && durationFieldValue.Value;\r\n\r\n if (!hasDuration) return false;\r\n },\r\n\r\n eventClick: (event) => {\r\n if (!this._isReadonly && (event.editable || event.editableWithDisabledLifeStatus)) {\r\n const eventId = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n this.EditEvent(eventId);\r\n }\r\n },\r\n\r\n eventResizeStart: (event) => {\r\n self._enableTooltip = false;\r\n\r\n if (event.Tooltip) {\r\n event.Tooltip.Destroy();\r\n }\r\n },\r\n\r\n eventResize: (event, delta, revertFunc) => {\r\n if (event.editable) {\r\n const eventId = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n this.UpdateAppointment(eventId, moment(event.start._i), delta)\r\n .fail(() => revertFunc());\r\n }\r\n },\r\n\r\n select: (start: moment.Moment, end: moment.Moment, jsEvent, view, resource) => {\r\n if (this._isReadonly) return;\r\n\r\n const calendarUserId = resource && resource.id && Number(resource.id);\r\n\r\n if (view.name === FULL_CALENDAR_VIEW.MONTH) {\r\n this.AddNewAppointment(start.format(), this.GetAppointmentDuration(), calendarUserId);\r\n return;\r\n }\r\n const duration = end.diff(start, 'minutes');\r\n if (duration !== DEFAULT_APPOINTMENT_DURATION) {\r\n if (end.diff(start, 'days') === 0) {\r\n this.AddNewAppointment(start.format(), duration, calendarUserId);\r\n return;\r\n }\r\n\r\n new Notifier().Warning(NOTIFICATIONS.SELECT_ONLY_WITHIN_DAY);\r\n return;\r\n }\r\n\r\n this.AddNewAppointment(start.format(), this.GetAppointmentDuration(), calendarUserId);\r\n },\r\n\r\n eventResizeStop(event) {\r\n self._enableTooltip = true;\r\n },\r\n\r\n eventRender: (event, element: JQuery, view) => {\r\n element.attr('data-event-id', event.eventRecordId);\r\n if (self._disableDropEvtsBtwnDiffRes) {\r\n element.attr('data-resource-id', event.resourceId);\r\n // console.log('eventRender data-resource-id - ' + event.resourceId)\r\n }\r\n\r\n if (event.lifeStatusName === AGENDA_LIFE_STATUSES.Denied) {\r\n return false;\r\n }\r\n\r\n _.each(event.links, (link: any) => {\r\n link.IconComponent = this.GetLinkedIcon(link.Icon);\r\n });\r\n\r\n if (event.users) {\r\n event.users.IconComponent = this.GetLinkedIcon(event.users.Icon);\r\n }\r\n\r\n const startDate = moment(event.start);\r\n\r\n const beforeTime = moment(event.timeBefore).format(DATE_FORMATS.TIME.Format),\r\n stringParts = beforeTime.split(':'),\r\n resHours = +stringParts[0],\r\n resMinutes = +(parseInt(stringParts[1]));\r\n\r\n startDate.add({hours: resHours, minutes: resMinutes});\r\n\r\n const eventId = this._viewRenderMode === FULL_CALENDAR_VIEW.AGENDA_TIME_LINE_WEEK ? event.eventRecordId : event.id;\r\n\r\n const startTime = this._viewRenderMode === FULL_CALENDAR_VIEW.MONTH && (!eventId || event.allDay) ? '' : this._viewRenderMode === FULL_CALENDAR_VIEW.MONTH ? startDate.format(DATE_FORMATS.TIME.Format) : moment(event.start).format(DATE_FORMATS.TIME.Format);\r\n const visibleBookingsWeekButton = self._selectedUsers.length === 0 ||\r\n (self._selectedUsers.length == 1 && self._selectedUsers[0] === UserManager.Instance.CurrentUser.Id);\r\n\r\n const startListTime = moment(event.start).format('hh:mm a');\r\n const endListTime = moment(event.end).format('hh:mm a');\r\n const listTime = event.allDay ? `all-day` : startTime ? `${startListTime} - ${endListTime}` : startTime || null;\r\n\r\n const viewModel = {\r\n Id: eventId,\r\n BackgroundColor: event.color ? event.color : event.placeColor,\r\n TimeBefore: event.timeBefore,\r\n Title: event.title,\r\n Owner: event.owner,\r\n TimeAfter: event.timeAfter,\r\n Description: event.description,\r\n TimeBeforeHeight: ko.observable({height: event.timeBeforeHeigth - 2 + 'px'}),\r\n TimeAfterHeight: ko.observable({height: event.timeAfterHeigth - 2 + 'px'}),\r\n Accepting: ko.observable(false),\r\n Accepted: event.accepted,\r\n PossibleToAccept: event.possibleToAccept,\r\n RecurrentRecordId: event.recurrentRecordId,\r\n Links: event.links,\r\n Users: event.users || [],\r\n AppointmentsWeekButtons: event.appointmentsWeekButtons,\r\n AppointmentsCanBeDistributed: _.any(event.appointmentsWeekButtons, (button: any) => {\r\n const dayNumber = moment(button.Date).day();\r\n return dayNumber > 0 && dayNumber < 6 && !button.Disabled;\r\n }),\r\n BookingsWeekButtons: event.bookingsWeekButtons,\r\n Distribute: LABELS.DISTRIBUTE,\r\n Event: event,\r\n Agenda: this,\r\n ActionToggle: ko.observable(false),\r\n ShowAppointmentsWeekMenu: ko.observable(false),\r\n ShowBookingsWeekMenu: ko.observable(false),\r\n VisibleBookingsWeekButton: visibleBookingsWeekButton,\r\n Editable: event.editable || event.editableWithDisabledLifeStatus,\r\n StartTime: startTime,\r\n Country: event.country,\r\n SpecialDay: event.specialDay,\r\n IsIllness: event.isIllness,\r\n IsHoliday: event.isHoliday,\r\n IsHolidayIcon: event.isHolidayIcon,\r\n HolidayTooltip: !!event.holidayTooltip ? event.holidayTooltip : null,\r\n EnableTooltip: this._enableTooltip,\r\n ListModeTime: listTime,\r\n ViewType: view.type\r\n };\r\n\r\n event.agenda = this;\r\n self._viewModels.push(viewModel);\r\n\r\n self.RenderAllCustomEvents(event, element, viewModel);\r\n },\r\n\r\n eventAfterRender: (event, element, view) => {\r\n self.ToggleSmallMode(event, element, view);\r\n self.EventTitleFix(element);\r\n\r\n if (self._enableTooltip) {\r\n self.AgendaLinksEllipsisTooltip(event, element, view);\r\n }\r\n },\r\n\r\n eventDestroy: (event, element, view) =>{\r\n\r\n }\r\n };\r\n }\r\n\r\n RenderAllCustomEvents(event, element, viewModel) {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaListWeek = [AGENDA_LIST_WEEK].includes(viewModel.ViewType);\r\n\r\n if (isAgendaListWeek) {\r\n element.find('.fc-widget-content').remove();\r\n }\r\n\r\n element.find('.fc-content').remove();\r\n element.find('.fc-bg').remove();\r\n ko.cleanNode(element[0]);\r\n element[0].setAttribute('data-bind', 'allowBindings: false');\r\n\r\n const template = (ko as any).renderTemplateX(this.GetEventTemplate(viewModel), viewModel);\r\n\r\n element.prepend(template);\r\n if (event.editable) {\r\n element.addClass(\"fc-appointment\");\r\n }\r\n\r\n if (event.isSpecial) {\r\n let tooltipContent = event.title;\r\n\r\n if (event.country) {\r\n tooltipContent += `: ${event.country}`;\r\n }\r\n\r\n event.Tooltip = new Tooltip(element, tooltipContent, {\r\n position: {x: 'right', y: 'center'},\r\n outside: 'x'\r\n });\r\n event.Tooltip.AddClass('ellipsis-tooltip isSpecialTooltip');\r\n }\r\n }\r\n\r\n GetLinkedIcon(iconModel) {\r\n const linkedIconModel = new IconModel();\r\n\r\n linkedIconModel.FontName = iconModel.FontName;\r\n linkedIconModel.Name = iconModel.Name;\r\n linkedIconModel.Image = iconModel.Image;\r\n linkedIconModel.IsIcon = iconModel.IsIcon;\r\n linkedIconModel.IsImage = iconModel.IsImage;\r\n\r\n const linkedIcon = new Icon(linkedIconModel);\r\n\r\n return linkedIcon;\r\n }\r\n\r\n IsUseDefaultDuration(calendarView: string): boolean {\r\n return calendarView === FULL_CALENDAR_VIEW.MONTH;\r\n }\r\n\r\n BlockUi() {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n GetEventTemplate(viewModel) {\r\n if (viewModel.Event.planning) {\r\n return PlanningTemplate;\r\n }\r\n\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const agendaMonth = [MONTH].includes(viewModel.ViewType);\r\n const agendaListWeek = [AGENDA_LIST_WEEK].includes(viewModel.ViewType);\r\n const agendaTimeLineWeek = [AGENDA_TIME_LINE_WEEK].includes(viewModel.ViewType);\r\n\r\n if (agendaListWeek) {\r\n return EventListTemplate;\r\n }\r\n\r\n if (agendaTimeLineWeek) {\r\n return EventTimeTemplate;\r\n }\r\n\r\n return agendaMonth ? EventMonthTemplate : EventTemplate;\r\n }\r\n\r\n UnBlockUi() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n EventTitleFix(element: JQuery){\r\n const startDateElem = element.find('.start-date'),\r\n eventContent = element.find('.event-content'),\r\n descriptionButton = element.find('.custom-agenda-event__descriptionButton');\r\n\r\n if (startDateElem.outerHeight() >= 60 && descriptionButton.length ||\r\n startDateElem.outerHeight() >= 30 && !descriptionButton.length) {\r\n eventContent.css({\r\n \"width\": \"100%\"\r\n });\r\n }\r\n\r\n }\r\n\r\n AgendaLinksEllipsisTooltip(event, element: JQuery, view) {\r\n const {\r\n MONTH,\r\n AGENDA_WEEK,\r\n AGENDA_FIVE_DAY,\r\n AGENDA_DAY,\r\n AGENDA_LIST_WEEK,\r\n AGENDA_TIME_LINE_WEEK\r\n } = FULL_CALENDAR_VIEW;\r\n const isAgendaListOrTimeWeek = [AGENDA_LIST_WEEK, AGENDA_TIME_LINE_WEEK].includes(view.type);\r\n\r\n const startDateElem = element.find('.start-date'),\r\n eventMain = element.find('.event-main'),\r\n eventContent = element.find('.event-content'),\r\n agendaLinksElem = element.find('.agenda-links-container'),\r\n endDateElem = element.find('.end-date'),\r\n elemEventHeight = element.outerHeight() - startDateElem.outerHeight();\r\n\r\n const allContentHeight = eventMain.outerHeight() + agendaLinksElem.outerHeight(); //startDateElem.outerHeight() + eventMain.outerHeight() + agendaLinksElem.outerHeight() + endDateElem.outerHeight();\r\n\r\n if ( allContentHeight > elemEventHeight || (this._groupByResource() && this._isSmallAppointments) || isAgendaListOrTimeWeek ){\r\n let _self = this;\r\n if ( this.GetLinkedUsers(event.links).length ) {\r\n event.LinksEllipsisTooltip = new Tooltip(element, LinksTooltipTemplate as any,\r\n {\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCreated: () => {\r\n ko.cleanNode(event.LinksEllipsisTooltip._jbox.content[0]);\r\n ko.applyBindings(event, event.LinksEllipsisTooltip._jbox.content[0]);\r\n },\r\n onClose: ()=> {\r\n\r\n }\r\n });\r\n event.LinksEllipsisTooltip.AddClass('agenda-links-ellipsis-tooltip jBox-padding-5px');\r\n }\r\n }\r\n }\r\n\r\n ToggleSmallMode(event, element: JQuery, view) {\r\n let actionMenuBox = element.find('.actionMenuBox'),\r\n customAgendaEvent = element.find('.custom-agenda-event'),\r\n descriptionButton = element.find('.custom-agenda-event__descriptionButton'),\r\n outerHeight = element.outerHeight();\r\n\r\n if (outerHeight <= 30) {\r\n customAgendaEvent.addClass('custom-agenda-event__smallMode');\r\n actionMenuBox.addClass('smallMode');\r\n descriptionButton.addClass('smallMode');\r\n } else if (outerHeight <= 32) {\r\n descriptionButton.addClass('smallMode_V2');\r\n customAgendaEvent.addClass('custom-agenda-event__smallMode_V2');\r\n }\r\n }\r\n\r\n CopyRecord(\r\n screenData: ScreenDataModel,\r\n tableTypeId: number,\r\n exampleRecordId: number = null,\r\n dataMode: DataModes = DataModes.Default,\r\n subjectLifestatusId: number = null,\r\n starting: string = null) {\r\n BlockUI.Block();\r\n\r\n AgendaDataStore\r\n .CopyRecord({\r\n TableId: this.FieldModel.EntityId,\r\n TableTypeId: tableTypeId,\r\n RecordId: exampleRecordId,\r\n Starting: starting,\r\n AppointmentAttendeesId: this.GetSelectedAppointmentAttendees()\r\n })\r\n .then((result: any) => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n return;\r\n }\r\n\r\n async NewRecord(\r\n screenData: ScreenDataModel,\r\n tableTypeId: number,\r\n exampleRecordId: number = null,\r\n dataMode: DataModes = DataModes.Default,\r\n subjectLifestatusId: number = null,\r\n defaultValues?: Array<{ FieldName: string, FieldValue: string, Type: string }>,\r\n shouldLinkAppointmentAttendees: boolean = false,\r\n calendarUserId: number = null,\r\n linkToSource: boolean = false,\r\n aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen(\r\n {\r\n EntityId: this.FieldModel.EntityId,\r\n TableTypeId: tableTypeId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n DataMode: dataMode,\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n if (screenData) {\r\n screenData.ControlsData.forEach(controlData => {\r\n const screenControl = screen.GetControlBy(control => control.HasOneField() && control.GetFieldModel().Id === controlData.FieldId);\r\n if (screenControl) {\r\n screenControl.SetDefaultValue({\r\n SubjectRecordId: screen.GetRecordId(),\r\n SubjectEntityId: screen.GetEntityId(),\r\n Data: controlData,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n })\r\n }\r\n });\r\n }\r\n\r\n let relatedRecordId = this.GetForm().GetScreen().GetRecordId();\r\n screen.IsDataFromExample = exampleRecordId > 0;\r\n screen.LinkToSource = linkToSource;\r\n\r\n const linkList = screen.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n if (linkList) {\r\n screen.On('LINK_LIST_DATA_LOADED', this, () => {\r\n if (relatedRecordId > 0) {\r\n let relatedEntityId = this.GetForm().GetScreen().GetEntityId();\r\n screen.AddInnerRelation(relatedEntityId, relatedRecordId);\r\n }\r\n\r\n if (shouldLinkAppointmentAttendees) {\r\n this.LinkAppointmentAttendees(linkList, calendarUserId);\r\n }\r\n });\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.Screen.Trigger('RECORD_CREATED', { RecordId: eventArgs.data.RecordId });\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(this._groupByResource());\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || tableTypeId;\r\n this.NewRecord(null, copyTableType, eventArgs.data.recordId, eventArgs.data.dataMode, null, null, false, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n if (defaultValues) {\r\n _.forEach(defaultValues, (item) => {\r\n const control = screen.GetControlByFieldName(item.FieldName, item.Type);\r\n let startingModel = new ControlDataModel();\r\n startingModel.Value = item.FieldValue;\r\n control.SetDefaultValue({\r\n SubjectRecordId: screen.GetRecordId(),\r\n SubjectEntityId: screen.GetEntityId(),\r\n Data: startingModel,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n });\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n if (!linkList && shouldLinkAppointmentAttendees && this.GetSelectedAppointmentAttendees().length > 0) {\r\n new Notifier().Warning(NOTIFICATIONS.ATTENDEES_CANNOT_BE_ADDED_DUE_TO_MISSING_LINK_LIST);\r\n }\r\n })\r\n .fail(err => new Notifier($(this._el)).Warning(err.message));\r\n }\r\n\r\n async EditRecord(recordId: number, tableTypeId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this.FieldModel.EntityId, recordId)\r\n .then(() => {\r\n screenManager.GetEditScreen({\r\n EntityId: this.FieldModel.EntityId,\r\n TableTypeId: tableTypeId,\r\n RecordId: recordId\r\n })\r\n .always(() => BlockUI.Unblock())\r\n .then((screen: EditScreen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === this.FieldModel.EntityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, recordId);\r\n });\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.Trigger('AGENDA_CHANGED');\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n this.LoadData(this._groupByResource());\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, () => {\r\n this.Trigger('AGENDA_CHANGED');\r\n this.LoadData(this._groupByResource());\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableTypeId = eventArgs.data.copyToType || tableTypeId;\r\n this.NewRecord(null, copyTableTypeId, eventArgs.data.recordId, eventArgs.data.dataMode, null, null, false, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => {\r\n const followUp = eventArgs.data.followUpRecordModel as FollowUpRecordModel;\r\n\r\n if (!followUp) {\r\n this.NewRecord(null, tableTypeId, eventArgs.data.recordId, DataModes.FollowUp);\r\n } else if (followUp.LifeStatusSort !== null\r\n && followUp.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUp.LifeStatusNoActionNode\r\n && (followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW)) {\r\n this.NewRecord(null, tableTypeId, eventArgs.data.recordId, DataModes.FollowUp, followUp.LifeStatusId);\r\n }\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, recordId);\r\n let notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n });\r\n }).always(() => BlockUI.Unblock());\r\n }\r\n\r\n private GetLinkedUsers(linkTable: LinkTableModel[]) {\r\n let linkIds = [];\r\n const userTable = _.find(linkTable, (table) => table.Name === SYSTEM_TABLE_NAMES.SYS_USERS);\r\n if (userTable) {\r\n _.forEach(userTable.LinkRecords, (record) => {\r\n linkIds.push(record.Id);\r\n });\r\n }\r\n return linkIds;\r\n }\r\n\r\n private GetLinkedResources(linkTable: LinkTableModel[]): ILinkedResources {\r\n let linkedResources: ILinkedResources = {};\r\n _.forEach(linkTable, (table) => {\r\n if (table.Name !== SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n linkedResources[table.Id] = _.map(table.LinkRecords, (record) => record.Id);\r\n }\r\n });\r\n return linkedResources;\r\n }\r\n\r\n private ActionToggleMenu(data): any {\r\n this._viewModels().forEach(item => {\r\n (item !== data) && item.ActionToggle(false)\r\n });\r\n data.ActionToggle(!data.ActionToggle());\r\n }\r\n\r\n private ToggleAppointmentsWeekMenu(data) {\r\n data.ShowAppointmentsWeekMenu(!data.ShowAppointmentsWeekMenu());\r\n }\r\n\r\n private ToggleBookingsWeekMenu(data) {\r\n data.ShowBookingsWeekMenu(!data.ShowBookingsWeekMenu());\r\n }\r\n\r\n private GoToScheduler(agenda, event) {\r\n event.stopPropagation();\r\n\r\n const appointment = _.find(this._tablesTypes.TableTypes, (tableType) => tableType.Name === AGENDA_TYPES.Appointment);\r\n const params: IRePlanningData = {\r\n StartTime: agenda.Event.start,\r\n EndTime: agenda.Event.end,\r\n Id: agenda.Event.id,\r\n LinkedRecords: {\r\n Links: agenda.Event.links,\r\n Users: this.GetLinkedUsers(agenda.Event.links),\r\n Resources: this.GetLinkedResources(agenda.Event.links)\r\n },\r\n Name: agenda.Event.title,\r\n Agenda: this,\r\n IsInTab: false,\r\n TableTypeId: appointment ? appointment.Id : null,\r\n LinkedSubGroups: []\r\n };\r\n\r\n if (agenda.Editable) {\r\n const parent = this.GetParentControl();\r\n if (parent && parent.GetType() === CONTROL_TYPES.TabPage && parent.GetParentControl().GetType() === CONTROL_TYPES.Tab) {\r\n const tabControl = parent.GetParentControl() as Tab;\r\n let tabWithScheduler: TabPage,\r\n tabWithSchedulerIndex,\r\n schedulerControlInTab: Scheduler;\r\n\r\n const controls = tabControl.GetAllSubControls();\r\n\r\n if (controls) {\r\n controls.find((control, index) => {\r\n if (control.GetType() === CONTROL_TYPES.TabPage) {\r\n const subControls = control.GetAllSubControls();\r\n if (subControls) {\r\n const scheduler = subControls.find(subControl => subControl.GetType() === CONTROL_TYPES.Scheduler) as Scheduler;\r\n if (scheduler) {\r\n schedulerControlInTab = scheduler;\r\n tabWithScheduler = control as TabPage;\r\n tabWithSchedulerIndex = index;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n if (schedulerControlInTab) {\r\n params.IsInTab = true;\r\n params.TabIndex = _.indexOf(this.GetParentControl().GetParentControl().GetAllSubControls(), this.GetParentControl());\r\n tabControl.SetActiveTab(tabWithSchedulerIndex, {\r\n controlId: schedulerControlInTab.GetModel().Id,\r\n params: params,\r\n control: schedulerControlInTab,\r\n action: 'OpenReplanMode'\r\n });\r\n } else {\r\n this.ScrollToScheduler(params);\r\n }\r\n } else {\r\n this.ScrollToScheduler(params);\r\n }\r\n }\r\n }\r\n\r\n private ScrollToScheduler(params) {\r\n const allSchedulers = this.GetForm().GetScreen().GetControlsByType(CONTROL_TYPES.Scheduler);\r\n let scheduler = allSchedulers.find((control: Scheduler) => !control.GetParentControl()) as Scheduler;\r\n\r\n if (scheduler) {\r\n let isLoaded = false;\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(scheduler.GetWrapper()).offset().top - 60\r\n }, 1000, () => {\r\n if (!isLoaded) {\r\n const $scheduler = $(scheduler.GetWrapper());\r\n //remember the previous height to prevent control jumping\r\n $scheduler.css('min-height', `${$scheduler.height()}px`).css('z-index', '1');\r\n scheduler.LoadData(params);\r\n isLoaded = true;\r\n }\r\n });\r\n } else {\r\n new Notifier().Warning(this._labels.SCHEDULER_NOT_FOUND);\r\n }\r\n }\r\n\r\n async NavigateToLinkedRecord(linkedRecord: LinkRecord, linkTable: LinkTableModel, event) {\r\n event.stopPropagation();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n screenManager.GetScreenByScreenType(\r\n linkTable.Id,\r\n ScreenTypes.ConsultScreen,\r\n linkedRecord.Id\r\n )\r\n .always(() => BlockUI.Unblock())\r\n .then(screen => screen.ShowInModal())\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n GetAppointmentDuration() {\r\n let appointmentDuration = GlobalManager.Instance.GetGlobal(GLOBALS.APPOINTMENT_DURATION);\r\n let appointmentDurationMinutes = parseInt(appointmentDuration);\r\n\r\n if (isNaN(appointmentDurationMinutes)) {\r\n appointmentDurationMinutes = DEFAULT_APPOINTMENT_DURATION;\r\n }\r\n\r\n return appointmentDurationMinutes;\r\n }\r\n\r\n GetSelectedAppointmentAttendees() {\r\n const appointmentAttendees = this._appointmentAttendees();\r\n if (!appointmentAttendees) {\r\n return [];\r\n }\r\n\r\n const selectedUsers = appointmentAttendees.Users.filter(user => user.Checked()).map(user => user.Id);\r\n\r\n const selectedUserGroups =\r\n appointmentAttendees.UserGroups\r\n .filter(userGroup => userGroup.Checked())\r\n .map(userGroup => userGroup.Id);\r\n\r\n return selectedUsers.concat(selectedUserGroups);\r\n }\r\n\r\n ReturnFromScheduler(params: IRePlanningData) {\r\n this._isReturned = true;\r\n this._selectedStartDate = params.Agenda._selectedStartDate;\r\n this._selectedEndDate = params.Agenda._selectedEndDate;\r\n this._viewRenderMode = params.Agenda._viewRenderMode;\r\n }\r\n\r\n SetStarting(starting: string) {\r\n this._isReturned = true;\r\n this._selectedStartDate = moment(starting).startOf('day').format();\r\n this._selectedEndDate = moment(starting).endOf('day').add(4, 'd').format();\r\n\r\n const $agenda = $(this.GetWrapper()).find('#agendaCalendar');\r\n if ($agenda.length) {\r\n $agenda.fullCalendar('gotoDate', this._selectedStartDate);\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $agenda.offset().top - 60\r\n }, 1000)\r\n }\r\n\r\n }\r\n \r\n CustomScrollToHour(scrollToHour: number){\r\n const screen = this._form && this._form.GetScreen();\r\n if (screen.IsInModal()) {\r\n const $agenda = $(this.GetWrapper()).find('#agendaCalendar');\r\n if ($agenda.length) {\r\n let scroller = $agenda.find('.fc-scroller');\r\n if (scroller.length) {\r\n const fixHour: number = 1;\r\n let scrollPosition = (scrollToHour + fixHour) * 60;\r\n scroller.scrollTop(scrollPosition);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private SelectUserWillProvideEventOnLoad() {\r\n const screenData = this.GetForm().GetScreen().GetDataModel();\r\n\r\n if (screenData) {\r\n const screen = this._form && this._form.GetScreen();\r\n const selectUser = screen.GetControl(CONTROL_TYPES.SelectUser) as SelectUser;\r\n return selectUser ? selectUser.IsRememberMe : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private SelectUserIsInitialized() {\r\n const screenData = this.GetForm().GetScreen().GetDataModel();\r\n\r\n if (screenData) {\r\n const screen = this._form && this._form.GetScreen();\r\n const selectUser = screen.GetControl(CONTROL_TYPES.SelectUser) as SelectUser;\r\n return selectUser ? selectUser.Initialized : false;\r\n }\r\n\r\n return false\r\n }\r\n\r\n private LinkAppointmentAttendees(linkList: LinkList, calendarUserId: number) {\r\n const appointmentAttendees = this._appointmentAttendees();\r\n if (!appointmentAttendees) {\r\n return;\r\n }\r\n\r\n const usersRelationModel = linkList.DataModel().UserRelation();\r\n\r\n const selectedUsers = appointmentAttendees.Users.filter(user => user.Checked());\r\n selectedUsers.forEach(user => this.LinkAppointmentAttendee(user.Id, user.Name, user.UserTypeName, user.UserTypeNameTranslation, linkList, usersRelationModel));\r\n\r\n const selectedUserGroups = appointmentAttendees.UserGroups.filter(userGroup => userGroup.Checked());\r\n selectedUserGroups.forEach(userGroup => this.LinkAppointmentAttendee(userGroup.Id, userGroup.Name, userGroup.TypeName, userGroup.TypeNameTranslation, linkList, usersRelationModel));\r\n\r\n if (!_.any(selectedUsers) && !_.any(selectedUserGroups) && calendarUserId\r\n && _.any(appointmentAttendees.Users, user => user.Id === calendarUserId)) {\r\n const calendarUserModel = _.find(appointmentAttendees.Users, user => user.Id === calendarUserId);\r\n this.LinkAppointmentAttendee(calendarUserModel.Id, calendarUserModel.Name, calendarUserModel.UserTypeName, calendarUserModel.UserTypeNameTranslation, linkList, usersRelationModel);\r\n }\r\n }\r\n\r\n private LinkAppointmentAttendee(userId: number, userName: string, userTypeName: string, userTypeNameTranslation: string, linkList: LinkList, usersRelationModel: UserEntityRelationsViewModel) {\r\n const existingLink = linkList.FindLinkByRecord(userId, usersRelationModel);\r\n if (existingLink) {\r\n return;\r\n }\r\n\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = userName;\r\n newRelation.Id = userId;\r\n newRelation.IsMain = false;\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n newRelation.TypeName = userTypeName;\r\n newRelation.TypeTranslatedName = userTypeNameTranslation;\r\n\r\n linkList.AddRecord(userId, usersRelationModel, newRelation);\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calendar-check-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n TODO: 'AddToDo',\r\n SPECIAL_DAY: 'SpecialDay',\r\n REQUEST_LEAVE: 'RequestLeave',\r\n REPORT_ILLNESS: 'ReportIllness',\r\n ADD_RECURRENT: 'AddRecurrent',\r\n SMALL_APPOINTMENTS: 'SmallAppointments'\r\n};","import * as moment from \"moment\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {GroupEditor} from \"Core/Components/Controls/Scheduler/Utils/GroupEditor\";\r\nimport {LABELS} from \"../../../../Translation/Locales\";\r\n\r\nexport class SchedulerViewModel {\r\n Week: number;\r\n Date: Date;\r\n StartingTime: String;\r\n NumberOfPeriods: number;\r\n Periods: Array<Period>;\r\n HeaderColumns: Array<HeaderColumn>;\r\n PeriodDuration: number;\r\n Groups: Array<GroupEditor>;\r\n AgendaConnection: boolean;\r\n CreatingData: boolean;\r\n IsValid: boolean;\r\n\tReadingData: boolean;\r\n\tScreenSubjectRecordName: string;\r\n Errors: Array<string>;\r\n Month: String;\r\n MonthDayYear: String;\r\n CurrentDate: any;\r\n AvailablePeriods: {\r\n [key: number]: {\r\n [key: number]: Array<{a: moment.Moment, b: moment.Moment}>\r\n }\r\n };\r\n\r\n constructor() {\r\n this.Date = new Date();\r\n }\r\n\r\n get WeekNumber() {\r\n return `${this.Week}`;\r\n }\r\n\r\n AfterRender(columnNumber, isRePlanMode: boolean, el, headerCol: HeaderColumn) {\r\n if (isRePlanMode && (this.HeaderColumns[columnNumber] === headerCol)) {\r\n const parent = $(el).parent(),\r\n scrollElem = $(el).filter('.scheduler__header__column'),\r\n scrollSize = scrollElem.offset().left - ($(window).width() - parent.width());\r\n parent.animate({\r\n scrollLeft: scrollSize\r\n });\r\n }\r\n }\r\n\r\n GetGetColumnWidthClass() {\r\n return 'header__subcolumn--width-' + this.Periods.length;\r\n }\r\n\r\n GetHeaderWidthClass() {\r\n return 'header__subcolumns--wrapper-' + this.Periods.length;\r\n }\r\n\r\n GetPeriods(): Array<Period> {\r\n return this.Periods;\r\n }\r\n}\r\n\r\nexport class Period {\r\n Start: string;\r\n Duration: number;\r\n\r\n constructor(start: string, duration: number) {\r\n this.Start = start;\r\n this.Duration = duration;\r\n }\r\n\r\n get DisplayValue() {\r\n if (moment(this.Start).isValid()) {\r\n return moment(this.Start).format(DATE_FORMATS.TIME.Format);\r\n } else {\r\n return moment(moment().format(DATE_FORMATS.SHORT_DATE.Format) + \" \" + this.Start).format(DATE_FORMATS.TIME.Format);\r\n }\r\n }\r\n}\r\n\r\nexport class HeaderColumn {\r\n Day: moment.Moment;\r\n Periods: Array<Period>;\r\n DisplayValue: string;\r\n private _labels = LABELS;\r\n\r\n constructor(day: moment.Moment, periods: Array<Period>, screen: string) {\r\n this.Day = day;\r\n this.Periods = periods;\r\n\r\n switch (screen) {\r\n case this._labels.AGENDA_MONTH:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format)+', '+ this._labels.NUMBER_WEEKS +this.Day.format(DATE_FORMATS.WEEK_OF_YEAR_WW.Format);\r\n break;\r\n case this._labels.AGENDA_WEEK:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n break;\r\n case this._labels.AGENDA_WORK_WEEK:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n break;\r\n case this._labels.AGENDA_DAY:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.DAY_OF_WEK_ddd.MomentFormat)+', '+ this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n break;\r\n default:\r\n this.DisplayValue = this.Day.format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format);\r\n }\r\n }\r\n}","import * as moment from \"moment\";\r\n\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\nexport class PeriodsMapping {\r\n static OnViewModel(startingTime: string, periodDuration: number, numberOfPeriods: number): Array<Period> {\r\n let periods: Array<Period> = [];\r\n let periodStart = moment(startingTime, DATE_FORMATS.TIME.Format);\r\n let duration = periodDuration;\r\n\r\n for (let i = 0; i < numberOfPeriods; i++) {\r\n periods.push(new Period(periodStart.format(DATE_FORMATS.TIME.Format), duration));\r\n\r\n const periodEnd = periodStart.clone().add(duration, 'h');\r\n\r\n if (periodStart.isSame(periodEnd, 'day')) {\r\n periodStart = periodEnd;\r\n } else {\r\n periods[i].Duration = periodEnd.diff(periodStart, 'hours');\r\n break;\r\n }\r\n }\r\n\r\n return periods;\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\nimport clone from 'clone';\r\n\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {HeaderColumn, Period} from \"../Models/View/SchedulerViewModel\";\r\n\r\nexport class HeaderColumnMapping {\r\n static OnViewModel(startDate: moment.Moment, endDate: moment.Moment, periods: Period[], screen: string): HeaderColumn[] {\r\n const days: HeaderColumn[] = [];\r\n const daysAmount = endDate.diff(startDate, 'days');\r\n\r\n const starting = startDate.clone();\r\n\r\n for (let i = 0; i <= daysAmount; i++) {\r\n const dayPeriods = HeaderColumnMapping.ConvertPeriodsToWeekDay(periods, starting.clone());\r\n days.push(new HeaderColumn(starting.clone(), dayPeriods, screen));\r\n starting.add(1, 'd');\r\n }\r\n\r\n return days;\r\n }\r\n\r\n static ConvertPeriodsToWeekDay(periods: Period[], day: moment.Moment) {\r\n const dayPeriods = _.map(periods, item => clone(item));\r\n\r\n _.forEach(dayPeriods, (period) => {\r\n let date = day.clone().format(DATE_FORMATS.SHORT_DATE.Format);\r\n if (moment(period.Start).isValid()) {\r\n period.Start = moment(date + \" \" + moment(period.Start).format(DATE_FORMATS.TIME.Format)).format(DATE_FORMATS.DATE_TIME.Format);\r\n } else {\r\n period.Start = moment(date + \" \" + period.Start).format(DATE_FORMATS.DATE_TIME.Format);\r\n }\r\n });\r\n\r\n return dayPeriods;\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as moment from 'moment';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {IAppointment} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nexport interface ICellEditor {\r\n count: number,\r\n isAvailable: boolean,\r\n isFreeDay: boolean,\r\n period: Period,\r\n schedulerView: SchedulerView,\r\n isGroupCell?: boolean,\r\n rePlanningData?: IRePlanningData,\r\n isSelected: boolean,\r\n columnIndex: string\r\n appointments: Array<IAppointment>;\r\n}\r\n\r\nexport class CellEditor {\r\n _count: number;\r\n _isAvailable: boolean;\r\n _IsGroupCell: boolean;\r\n _isFreeDay: boolean;\r\n _period: Period;\r\n _appointments: KnockoutObservableArray<IAppointment>;\r\n _isAvailableForReplan: KnockoutObservable<boolean>;\r\n _view: SchedulerView;\r\n _isReplanningCell: KnockoutObservable<boolean>;\r\n _availableForReplanRanges: Array<{Start: moment.Moment, End: moment.Moment, DisplayValue: string}>;\r\n private _dropDown: JBoxDropDown;\r\n private _replanningData: IRePlanningData;\r\n private _columnIndex: string;\r\n private _labels = LABELS;\r\n\r\n constructor(model: ICellEditor) {\r\n this._count = model.count;\r\n this._isAvailable = model.isAvailable;\r\n this._isFreeDay = model.isFreeDay;\r\n this._IsGroupCell = model.isGroupCell || false;\r\n this._period = model.period;\r\n this._appointments = ko.observableArray([]);\r\n this._view = model.schedulerView;\r\n this._replanningData = model.rePlanningData;\r\n this._isReplanningCell = ko.observable(false);\r\n this._isAvailableForReplan = ko.observable(false);\r\n this._columnIndex = `column-${model.columnIndex}`;\r\n this._availableForReplanRanges = [];\r\n this.InitAppointments(model.appointments);\r\n\r\n if (model.isSelected) {\r\n this.IsReplanAppointment();\r\n this.IsAvailableForReplan();\r\n }\r\n }\r\n\r\n IsAvailableForReplan() {\r\n if (this._isAvailable) {\r\n const appointDuration = this._replanningData.EndTime.diff(this._replanningData.StartTime, 'hours', true);\r\n if ((this._period.Duration - this._count) >= appointDuration) {\r\n this._isAvailableForReplan(true);\r\n }\r\n }\r\n }\r\n\r\n private IsReplanAppointment() {\r\n const start = this._replanningData.StartTime;\r\n const end = this._replanningData.EndTime;\r\n const periodStart = moment(this._period.Start);\r\n const periodEnd = periodStart.clone().add(this._period.Duration, 'h');\r\n this._isReplanningCell((start < periodEnd) && (end > periodStart));\r\n }\r\n\r\n GetClassName(qty: number): string {\r\n let classes = this._columnIndex;\r\n if (this._isFreeDay) {\r\n classes = classes + ' subcol--red';\r\n }\r\n if (this._IsGroupCell && this._count) {\r\n classes = classes + ' subcol--green';\r\n } else if (this._IsGroupCell && !this._count) {\r\n classes = classes + ' subcol--white';\r\n }\r\n if (this._isAvailable) {\r\n if (this._count) {\r\n classes = classes + ' subcol--blue';\r\n } else {\r\n classes = classes + ' subcol--white';\r\n }\r\n } else {\r\n classes = classes + ' subcol--grey'\r\n }\r\n classes = classes + ' subcol-' + qty;\r\n return classes;\r\n }\r\n\r\n\tget DisplayValue(): string {\r\n return this._count ? this.ConvertValue(this._count) : null;\r\n }\r\n\r\n private ConvertValue(value: number): string {\r\n let rounded = Math.round(value * 100) / 100;\r\n return FormatConverter.ConvertDecimal(rounded.toString());\r\n }\r\n\r\n private DisplayRanges(ranges: Array<{Start: moment.Moment, End: moment.Moment, DisplayValue: string}>, cell, event) {\r\n if (this._availableForReplanRanges.length > 1) {\r\n this.InitDropdown(event.currentTarget);\r\n this._dropDown.Toggle();\r\n }\r\n }\r\n\r\n private InitAppointments(agenda: Array<IAppointment>) {\r\n if (this._count && agenda.length && !this._appointments().length) {\r\n let appointments = [];\r\n _.forEach(agenda, (item) => {\r\n const start = moment(FormatConverter.CorrectTimezone(item.Starting));\r\n const end = moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)));\r\n\r\n const periodStart = moment(this._period.Start);\r\n const periodEnd = periodStart.clone().add(this._period.Duration, 'h');\r\n\r\n if ((start < periodEnd) && (end > periodStart)){\r\n appointments.push({\r\n Id: item.Id,\r\n Name: item.Name,\r\n Duration: start.format(DATE_FORMATS.TIME.Format) + ' - ' + end.format(DATE_FORMATS.TIME.Format),\r\n Subjects: item.AgendaSubjects\r\n });\r\n }\r\n });\r\n this._appointments(appointments);\r\n }\r\n }\r\n\r\n private DisplayAppointments(cell, event) {\r\n if (this._replanningData)\r\n return;\r\n\r\n if (this._appointments().length) {\r\n this.InitDropdown(event.currentTarget);\r\n this._dropDown.Toggle();\r\n }\r\n }\r\n\r\n private InitDropdown(el: HTMLElement) {\r\n if (!this._dropDown) {\r\n const self = this;\r\n this._dropDown = new JBoxDropDown({\r\n onCreated: () => {\r\n this._dropDown.SetContent();\r\n },\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n onOpen: function() {\r\n $(this.container.parent()).on('mouseleave.Appointment', function (ev) {\r\n self._dropDown && self._dropDown.Close();\r\n }.bind(this));\r\n\r\n $(el).on('mouseleave.Appointment', function (ev) {\r\n if(!$(ev.toElement).parent(this.container.parent()).is(this.container.parent()) && !$(ev.toElement).is(this.container.parent())) {\r\n self._dropDown && self._dropDown.Close();\r\n }\r\n }.bind(this));\r\n },\r\n otherOptions: {\r\n closeOnMouseleave: true,\r\n closeOnClick: false,\r\n attach: $(el),\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: function() {\r\n self._dropDown.Destroy();\r\n self._dropDown = null;\r\n $(el).off('mouseleave.Appointment');\r\n $(this.container.parent()).off('mouseleave.Appointment');\r\n },\r\n offset: {\r\n x: 15\r\n },\r\n pointer: 'left',\r\n addClass: 'scheduler-appointments-dropdown',\r\n maxWidth: 200,\r\n zIndex: 10\r\n }\r\n });\r\n }\r\n }\r\n\r\n ShowAppointment(data, event) {\r\n const typeScreen = new TypeScreen(this._view.GetEntityId(), 0, false, false, null, ['Appointment']);\r\n\r\n typeScreen\r\n .On('TYPE_SELECTED', this, eventArgs => {\r\n this._view.OnShowDefaultScreen(data, eventArgs.data.EntityId, event, eventArgs.data.TypeId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n private ShowDefaultScreen(entityId, data, event) {\r\n this._view.OnShowDefaultScreen(data, entityId, event);\r\n }\r\n\r\n private OnReplan(start, allowClick, el, event) {\r\n if (allowClick) {\r\n this._view.OnReplan(moment(start));\r\n } else if (this._availableForReplanRanges.length === 1) {\r\n this._view.OnReplan(moment(start));\r\n }\r\n }\r\n\r\n private CheckIsAfter():boolean {\r\n return moment().isAfter(this._period.Start);\r\n }\r\n}\r\n","import {CellEditor} from \"./CellEditor\";\r\n\r\nexport class ColumnEditor {\r\n _cellsEditors: CellEditor[];\r\n constructor() {\r\n this._cellsEditors = [];\r\n }\r\n}","export class ColumnFirstEditor {\r\n _name: string;\r\n _id: number;\r\n _entityId: number;\r\n _type: string;\r\n _recordTypeId: number;\r\n _recordTypeName: string;\r\n\r\n constructor(name: string, id: number, entityId: number, type: string, recordTypeId: number, recordTypeName: string) {\r\n this._name = name;\r\n this._id = id;\r\n this._entityId = entityId;\r\n this._type = type;\r\n this._recordTypeId = recordTypeId;\r\n this._recordTypeName = recordTypeName;\r\n }\r\n}\r\n","import * as ko from \"knockout\";\r\nimport * as $ from 'jquery';\r\n\r\nimport {SubGroupEditor} from \"./SubGroupEditor\";\r\nimport {ColumnEditor} from \"./ColumnEditor\";\r\n\r\nexport class GroupEditor {\r\n _$collapse: JQuery;\r\n _subGroupEditors: SubGroupEditor[];\r\n _columnsEditors: ColumnEditor[];\r\n _name: string;\r\n _isCollapsed: KnockoutObservable<boolean>;\r\n _sortOrder: KnockoutObservable<number>;\r\n _isSelected: KnockoutObservable<boolean>;\r\n private _oldSortOrder: number;\r\n _selectedCount: KnockoutObservable<number>;\r\n\r\n constructor(name: string, order: number, isSelected: boolean) {\r\n this._name = name;\r\n this._sortOrder = ko.observable(order);\r\n this._subGroupEditors = [];\r\n this._columnsEditors = [];\r\n this._isCollapsed = ko.observable(true);\r\n this._oldSortOrder = order;\r\n this._isSelected = ko.observable(isSelected);\r\n this._selectedCount = ko.observable(this.GetSelectedCount());\r\n }\r\n\r\n ToggleSelection() {\r\n _.forEach(this._subGroupEditors, (subGroup) => {\r\n subGroup._isSelected(this._isSelected());\r\n });\r\n this.UpdateSelectedCount();\r\n return true;\r\n }\r\n\r\n UpdateSelectedCount() {\r\n this._selectedCount(this.GetSelectedCount());\r\n }\r\n\r\n GetSelectedCount(): number {\r\n let selected = 0;\r\n _.forEach(this._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n selected++;\r\n }\r\n });\r\n return selected;\r\n }\r\n\r\n OnOpenGroup() {\r\n this._isCollapsed(false);\r\n this._$collapse.addClass('opened');\r\n }\r\n\r\n OnCloseGroup() {\r\n this._isCollapsed(true);\r\n this._$collapse.removeClass('opened');\r\n }\r\n\r\n OnCollapseReady($collapse) {\r\n this._$collapse = $collapse;\r\n }\r\n\r\n OpenGroup() {\r\n this._$collapse && this._$collapse.find('a').click();\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {ColumnEditor} from \"./ColumnEditor\";\r\nimport {ColumnFirstEditor} from \"./ColumnFirstEditor\";\r\nimport {GroupEditor} from \"./GroupEditor\";\r\nimport {IAppointment} from \"../Models/Store/Response/SchedulerResponseModel\";\r\n\r\nexport class SubGroupEditor {\r\n _columnFirst: ColumnFirstEditor;\r\n _columnsEditors: ColumnEditor[];\r\n _isSelected: KnockoutObservable<boolean>;\r\n _group: GroupEditor;\r\n _agenda: Array<IAppointment>;\r\n\r\n constructor(group: GroupEditor, appointments: Array<IAppointment>, isSelected: boolean) {\r\n this._columnsEditors = [];\r\n this._isSelected = ko.observable(isSelected);\r\n this._group = group;\r\n this._agenda = appointments;\r\n }\r\n\r\n GetGroup() {\r\n return this._group;\r\n }\r\n\r\n CloneToNewGroup(group: GroupEditor, appointments: Array<IAppointment>, isSelected) {\r\n const newSubGroupEditor = new SubGroupEditor(group, appointments, isSelected);\r\n\r\n if (this._isSelected()) {\r\n newSubGroupEditor._isSelected = this._isSelected;\r\n }\r\n\r\n newSubGroupEditor._columnFirst = _.clone(this._columnFirst);\r\n newSubGroupEditor._columnsEditors = _.map(this._columnsEditors, _.clone);\r\n newSubGroupEditor._agenda = _.map(this._agenda, _.clone);\r\n\r\n return newSubGroupEditor;\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as moment from 'moment';\r\n\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\nimport {CellEditor} from \"../Utils/CellEditor\";\r\nimport {ColumnEditor} from \"../Utils/ColumnEditor\";\r\nimport {SubGroupEditor} from \"../Utils/SubGroupEditor\";\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {HeaderColumnMapping} from \"./HeaderColumnMapping\";\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\n\r\nexport interface ISubGroupsMapping {\r\n userEditor: SubGroupEditor,\r\n timeStructure: any,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n periods: Array<Period>,\r\n schedulerView: SchedulerView,\r\n scheduleStructure: any,\r\n freeDaysStructure: any,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport interface ISubResourcesMapping {\r\n subGroupEditor: SubGroupEditor,\r\n timeStructure: any,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n periods: Array<Period>,\r\n schedulerView: SchedulerView,\r\n scheduleStructure?: any,\r\n freeDaysStructure?: any,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport class SubGroupsMapping {\r\n static OnUserViewModel(model: ISubGroupsMapping) {\r\n const starting = model.startDate.clone();\r\n const diff = moment(model.endDate).diff(starting, \"days\");\r\n\r\n for (let i = 0; i <= diff; i++) {\r\n model.userEditor._columnsEditors.push(new ColumnEditor());\r\n\r\n const dayPeriods = HeaderColumnMapping.ConvertPeriodsToWeekDay(model.periods, starting);\r\n\r\n _.forEach(dayPeriods, (dayPeriod) => {\r\n const currentDate = moment(dayPeriod.Start);\r\n const endDate = currentDate.clone().add(dayPeriod.Duration, 'h');\r\n\r\n let workMinutes = 0;\r\n let workSchedMinutes = 0;\r\n let freeDaysMinutes = 0;\r\n\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n\r\n workMinutes += model.timeStructure[currentTime] || 0;\r\n workSchedMinutes += model.scheduleStructure[currentTime] || 0;\r\n freeDaysMinutes += model.freeDaysStructure[currentTime] || 0;\r\n\r\n currentDate.add(1, 'm');\r\n }\r\n\r\n const workHours = workMinutes / 60;\r\n let workSchedHours = workSchedMinutes / 60;\r\n let isAvailable = workSchedHours >= dayPeriod.Duration;\r\n\r\n const cellEditorModel = {\r\n count: workHours,\r\n isAvailable: isAvailable,\r\n isFreeDay: !!freeDaysMinutes,\r\n period: dayPeriod,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData,\r\n isSelected: model.userEditor._isSelected(),\r\n columnIndex: `${i}-${model.userEditor._columnsEditors[i]._cellsEditors.length}`,\r\n appointments: model.userEditor._agenda\r\n };\r\n\r\n const cellEditor = new CellEditor(cellEditorModel);\r\n\r\n model.userEditor._columnsEditors[i]._cellsEditors.push(cellEditor);\r\n\r\n });\r\n\r\n starting.add(1, 'd');\r\n }\r\n }\r\n\r\n static OnViewModel(model: ISubResourcesMapping) {\r\n const starting = model.startDate.clone();\r\n const diff = moment(model.endDate).diff(starting, \"days\");\r\n\r\n for (let i = 0; i <= diff; i++) {\r\n model.subGroupEditor._columnsEditors.push(new ColumnEditor());\r\n\r\n const dayPeriods = HeaderColumnMapping.ConvertPeriodsToWeekDay(model.periods, starting);\r\n\r\n _.forEach(dayPeriods, (dayPeriod) => {\r\n const currentDate = moment(dayPeriod.Start);\r\n const endDate = currentDate.clone().add(dayPeriod.Duration, 'h');\r\n\r\n let workMinutes = 0;\r\n let freeDaysMinutes = 0;\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n\r\n workMinutes += model.timeStructure[currentTime] || 0;\r\n currentDate.add(1, 'm');\r\n }\r\n\r\n const workHours = workMinutes / 60;\r\n\r\n const cellEditorModel = {\r\n count: workHours,\r\n isAvailable: true,\r\n isFreeDay: !!freeDaysMinutes,\r\n period: dayPeriod,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData,\r\n isSelected: model.subGroupEditor._isSelected(),\r\n columnIndex: `${i}-${model.subGroupEditor._columnsEditors[i]._cellsEditors.length}`,\r\n appointments: model.subGroupEditor._agenda\r\n };\r\n model.subGroupEditor._columnsEditors[i]._cellsEditors.push(new CellEditor(cellEditorModel));\r\n });\r\n starting.add(1, 'd');\r\n }\r\n }\r\n}","import * as _ from \"underscore\";\r\nimport * as moment from 'moment';\r\n\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//Utils\r\nimport {CellEditor} from \"../Utils/CellEditor\";\r\nimport {ColumnEditor} from \"../Utils/ColumnEditor\";\r\nimport {ColumnFirstEditor} from \"../Utils/ColumnFirstEditor\";\r\nimport {GroupEditor} from \"../Utils/GroupEditor\";\r\nimport {SubGroupEditor} from \"../Utils/SubGroupEditor\";\r\n\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\nimport {ISubResourcesMapping, SubGroupsMapping} from \"./SubGroupsMapping\";\r\n\r\nimport {\r\n IResource,\r\n ISchedularResponseModel,\r\n IUser, UserGroup\r\n} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\n\r\nexport interface IGroupsMapping {\r\n responseModel: ISchedularResponseModel,\r\n userGroups: string,\r\n periods: Array<Period>,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n schedulerView: SchedulerView,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport class GroupsMapping {\r\n static OnViewModel(model: IGroupsMapping) {\r\n let groups = model.userGroups.split(';');\r\n let users = model.responseModel.Users;\r\n let resourceGroups = model.responseModel.ResourceGroups;\r\n let schGroups: Array<GroupEditor> = [];\r\n let sortOrder = 10;\r\n\r\n const processedUsers = [];\r\n let usersGroups = [];\r\n if (model.rePlanningData) {\r\n usersGroups = this.GetLinkedGroups(users, model.rePlanningData.LinkedRecords.Users);\r\n }\r\n\r\n _.forEach(groups, (group) => {\r\n let groupEditor;\r\n if (usersGroups) {\r\n groupEditor = new GroupEditor(group, sortOrder, _.contains(usersGroups, group));\r\n } else {\r\n groupEditor = new GroupEditor(group, sortOrder,false);\r\n }\r\n\r\n _.forEach(users, (user) => {\r\n let processedUser = _.find(processedUsers, pu => pu.UserId === user.UserId);\r\n\r\n if (!processedUser) {\r\n processedUser = {\r\n UserId: user.UserId,\r\n TimeStructure: this.CreateTimeStructure(user),\r\n ScheduleStructure: this.CreateScheduleStructure(user),\r\n FreeDaysStructure: this.CreateFreeDaysStructure(user),\r\n Editor: null,\r\n Agenda: user.Agenda\r\n };\r\n\r\n processedUsers.push(processedUser);\r\n }\r\n\r\n let usersGroup = _.find(user.UsersGroups, (usersGroup) => {\r\n return usersGroup.GroupName === group;\r\n });\r\n\r\n if (usersGroup) {\r\n let userEditor = null;\r\n let isUserSelected = false;\r\n\r\n //select user if one of his groups is linked\r\n if (model.rePlanningData && model.rePlanningData.LinkedRecords) {\r\n _.forEach(user.UsersGroups, (uGroup) => {\r\n _.forEach(model.rePlanningData.LinkedRecords.Users, (subject: number) => {\r\n if (uGroup.GroupId === subject) {\r\n isUserSelected = true;\r\n }\r\n });\r\n });\r\n }\r\n //select user if one of his groups is linked\r\n\r\n if (processedUser.Editor) {\r\n userEditor = processedUser.Editor.CloneToNewGroup(groupEditor, processedUser.Agenda, isUserSelected);\r\n } else {\r\n let iseSelected = isUserSelected || ( model.rePlanningData && _.contains(model.rePlanningData.LinkedRecords.Users, processedUser.UserId));\r\n userEditor = new SubGroupEditor(groupEditor, processedUser.Agenda, iseSelected);\r\n userEditor._columnFirst = new ColumnFirstEditor(user.UserName, user.UserId, null, 'Subject', user.UserTypeId, user.UserTypeName);\r\n SubGroupsMapping.OnUserViewModel({\r\n userEditor: userEditor,\r\n timeStructure: processedUser.TimeStructure,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n periods: model.periods,\r\n schedulerView: model.schedulerView,\r\n scheduleStructure: processedUser.ScheduleStructure,\r\n freeDaysStructure: processedUser.FreeDaysStructure,\r\n rePlanningData: model.rePlanningData\r\n });\r\n\r\n processedUser.Editor = userEditor;\r\n }\r\n groupEditor._subGroupEditors.push(userEditor);\r\n }\r\n });\r\n this.GenerateCellEditors(groupEditor, model.rePlanningData);\r\n if (groupEditor._subGroupEditors.length) {\r\n schGroups.push(groupEditor);\r\n sortOrder = sortOrder + 10;\r\n }\r\n\r\n const selectedSubGroups = _.filter(groupEditor._subGroupEditors, (subGroup: SubGroupEditor) => {\r\n return subGroup._isSelected() === true;\r\n });\r\n\r\n if (selectedSubGroups.length === groupEditor._subGroupEditors.length) {\r\n groupEditor._isSelected(true);\r\n }\r\n groupEditor._selectedCount(selectedSubGroups.length);\r\n });\r\n\r\n _.forEach(resourceGroups, (resourceGroup) => {\r\n if (resourceGroup.Resources.length) {\r\n const linkedEntity = model.rePlanningData && model.rePlanningData.LinkedRecords.Resources[resourceGroup.EntityId];\r\n\r\n let groupEditor = new GroupEditor(resourceGroup.ResourceGroupName, sortOrder, false);\r\n _.forEach(resourceGroup.Resources, (resource) => {\r\n const isResourceSelected = (model.rePlanningData && _.contains(linkedEntity, resource.ResourceId));\r\n let subGroupEditor = new SubGroupEditor(groupEditor, resource.Agenda, isResourceSelected);\r\n subGroupEditor._columnFirst = new ColumnFirstEditor(resource.ResourceName, resource.ResourceId, resourceGroup.EntityId, 'Resource', resource.ResourceTypeId, resource.ResourceTypeName);\r\n groupEditor._subGroupEditors.push(subGroupEditor);\r\n let timeStructure = this.CreateTimeStructure(resource);\r\n\r\n const resourcesMapModel: ISubResourcesMapping = {\r\n subGroupEditor: subGroupEditor,\r\n timeStructure: timeStructure,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n periods: model.periods,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData\r\n };\r\n SubGroupsMapping.OnViewModel(resourcesMapModel);\r\n });\r\n this.GenerateCellEditors(groupEditor, model.rePlanningData);\r\n schGroups.push(groupEditor);\r\n sortOrder = sortOrder + 10;\r\n\r\n const selectedSubGroups = _.filter(groupEditor._subGroupEditors, (subGroup: SubGroupEditor) => {\r\n return subGroup._isSelected() === true;\r\n });\r\n\r\n if (selectedSubGroups.length === groupEditor._subGroupEditors.length) {\r\n groupEditor._isSelected(true);\r\n }\r\n groupEditor._selectedCount(selectedSubGroups.length);\r\n }\r\n });\r\n\r\n return schGroups;\r\n }\r\n\r\n static GenerateCellEditors(groupEditor: GroupEditor, replanningData? : IRePlanningData) {\r\n _.forEach(groupEditor._subGroupEditors, (subGroupEditor, subGroupIter) => {\r\n _.forEach(subGroupEditor._columnsEditors, (columnsEditor, columnIter) => {\r\n if (subGroupIter === 0) {\r\n groupEditor._columnsEditors.push(new ColumnEditor());\r\n }\r\n _.forEach(columnsEditor._cellsEditors, (cellEditor, cellIter) => {\r\n if (subGroupIter === 0) {\r\n let count = cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count ? 1 : 0;\r\n const cellEditorModel = {\r\n count: count,\r\n isAvailable: true,\r\n isFreeDay: false,\r\n period: cellEditor._period,\r\n schedulerView: cellEditor._view,\r\n isGroupCell: true,\r\n isSelected: false,\r\n columnIndex: '',\r\n appointments: []\r\n };\r\n const cell = new CellEditor(cellEditorModel);\r\n if (replanningData) {\r\n cell._isReplanningCell(cellEditor._isReplanningCell());\r\n }\r\n groupEditor._columnsEditors[columnIter]._cellsEditors.push(cell);\r\n } else {\r\n let currentCount = groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._count;\r\n groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._count =\r\n cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count ? currentCount + 1 : currentCount;\r\n if (replanningData && !groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._isReplanningCell()) {\r\n groupEditor._columnsEditors[columnIter]._cellsEditors[cellIter]._isReplanningCell(cellEditor._isReplanningCell());\r\n }\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n static GetUserGroups(users: Array<IUser>): Array<UserGroup> {\r\n let usersGroups = [];\r\n _.forEach(users, (user) => {\r\n usersGroups = usersGroups.concat(user.UsersGroups);\r\n });\r\n return _.uniq(usersGroups, (us) => us.GroupId);\r\n }\r\n\r\n static GetLinkedGroups(users: Array<IUser>, linkedUsers: Array<number>): Array<string> {\r\n const allGroups = this.GetUserGroups(users);\r\n let intersection = [];\r\n _.forEach(allGroups, (group) => {\r\n if (_.contains(linkedUsers, group.GroupId)) {\r\n intersection.push(group.GroupName);\r\n }\r\n });\r\n return intersection;\r\n }\r\n\r\n static CreateTimeStructure(item: IUser | IResource) {\r\n const timeStructure = {};\r\n\r\n _.forEach(item.Agenda, (event) => {\r\n const start = moment(FormatConverter.CorrectTimezone(event.Starting));\r\n const endDate = moment(start).add(moment.duration(moment(event.Duration).format(DATE_FORMATS.TIME.Format)));\r\n while (start.isBefore(endDate)) {\r\n const startTime = start.format(DATE_FORMATS.DATE_TIME.Format);\r\n timeStructure[startTime] = timeStructure[startTime] && timeStructure[startTime] + 1 || 1;\r\n start.add(1, 'm');\r\n }\r\n });\r\n\r\n return timeStructure;\r\n }\r\n\r\n static CreateScheduleStructure(item: IUser) {\r\n const timeStructure = {};\r\n\r\n _.forEach(item.WorkingSchedule, (event) => {\r\n let endDate: moment.Moment,\r\n currentDate: moment.Moment;\r\n if (event.IsDefault) {\r\n endDate = moment(event.Ending);\r\n currentDate = moment(event.Starting);\r\n } else {\r\n endDate = moment(FormatConverter.CorrectTimezone(event.Ending));\r\n currentDate = moment(FormatConverter.CorrectTimezone(event.Starting));\r\n }\r\n\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n timeStructure[currentTime] = timeStructure[currentTime] && timeStructure[currentTime] + 1 || 1;\r\n currentDate.add(1, 'm');\r\n }\r\n });\r\n return timeStructure;\r\n }\r\n\r\n static CreateFreeDaysStructure(item: IUser) {\r\n const timeStructure = {};\r\n\r\n _.forEach(item.FreeDays, (event) => {\r\n if (event.FreeDay) {\r\n const endDate = moment(FormatConverter.CorrectTimezone(event.Date)).endOf('day');\r\n const currentDate = moment(FormatConverter.CorrectTimezone(event.Date)).startOf('day');\r\n\r\n while (currentDate.isBefore(endDate)) {\r\n const currentTime = currentDate.format(DATE_FORMATS.DATE_TIME.Format);\r\n timeStructure[currentTime] = timeStructure[currentTime] && timeStructure[currentTime] + 1 || 1;\r\n currentDate.add(1, 'm');\r\n }\r\n }\r\n });\r\n return timeStructure;\r\n }\r\n}","import * as moment from \"moment\";\r\n\r\nimport {ISchedularResponseModel} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {HeaderColumn, SchedulerViewModel} from \"../Models/View/SchedulerViewModel\";\r\nimport {SchedulerView} from \"../Views/SchedulerView\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {PeriodsMapping} from \"./PeriodsMappings\";\r\nimport {HeaderColumnMapping} from \"./HeaderColumnMapping\";\r\nimport {GroupsMapping} from \"./GroupsMapping\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {IRePlanningData} from \"Core/Controls/Scheduler/Interfaces\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nexport interface ISchedulerMappingProfile {\r\n model: ISchedularResponseModel,\r\n startDate: moment.Moment,\r\n endDate: moment.Moment,\r\n numberOfPeriods: number,\r\n periodDuration: number,\r\n startingTime: string,\r\n schedulerView: SchedulerView,\r\n rePlanningData: IRePlanningData\r\n}\r\n\r\nexport class SchedulerMappingProfile {\r\n static OnViewModel(model: ISchedulerMappingProfile): SchedulerViewModel {\r\n const viewModel = new SchedulerViewModel();\r\n const userGroups = GlobalManager.Instance.GetGlobal(GLOBALS.USER_GROUPS);\r\n viewModel.NumberOfPeriods = model.numberOfPeriods;\r\n viewModel.StartingTime = model.startingTime;\r\n viewModel.PeriodDuration = model.periodDuration;\r\n viewModel.Periods = PeriodsMapping.OnViewModel(model.startingTime, model.periodDuration, model.numberOfPeriods);\r\n viewModel.HeaderColumns = HeaderColumnMapping.OnViewModel(model.startDate, model.endDate, viewModel.Periods, model.schedulerView._screen);\r\n viewModel.Groups = GroupsMapping.OnViewModel({\r\n responseModel: model.model,\r\n userGroups: userGroups,\r\n periods: viewModel.Periods,\r\n startDate: model.startDate,\r\n endDate: model.endDate,\r\n schedulerView: model.schedulerView,\r\n rePlanningData: model.rePlanningData\r\n });\r\n\r\n if (model.rePlanningData) {\r\n let selectedRows: Array<{id: number, rows: any}> = [];\r\n _.forEach(viewModel.Groups, (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n const selectedRow = {\r\n id: subGroup._columnFirst._id,\r\n rows: {}\r\n };\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n if (!selectedRow.rows[columnIter]) {\r\n selectedRow.rows[columnIter] = {};\r\n }\r\n selectedRow.rows[columnIter][cellIter] = cell._isAvailableForReplan();\r\n });\r\n });\r\n selectedRows.push(selectedRow);\r\n }\r\n });\r\n });\r\n\r\n const uniqSelectedRows = _.uniq(selectedRows, (row) => row.id);\r\n let availableModel = [];\r\n if (uniqSelectedRows.length) {\r\n availableModel = selectedRows[0].rows;\r\n for (let i = 1; i < uniqSelectedRows.length; i++) {\r\n _.forEach(uniqSelectedRows[i].rows, (column: Array<boolean>, columnIter) => {\r\n _.forEach(column, (cell, cellIter) => {\r\n availableModel[columnIter][cellIter] = availableModel[columnIter][cellIter] && cell;\r\n });\r\n });\r\n }\r\n }\r\n\r\n const agenda = {};\r\n\r\n _.forEach(viewModel.Groups, (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n if (!agenda[columnIter]) {\r\n agenda[columnIter] = {};\r\n }\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n if (!agenda[columnIter][cellIter]) {\r\n agenda[columnIter][cellIter] = [];\r\n }\r\n cell._isAvailableForReplan(availableModel[columnIter][cellIter]);\r\n if (availableModel[columnIter][cellIter]) {\r\n if (subGroup._agenda.length) {\r\n _.forEach(subGroup._agenda, (item) => {\r\n const start = moment(FormatConverter.CorrectTimezone(item.Starting));\r\n const end = moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)));\r\n\r\n const periodStart = moment(cell._period.Start);\r\n const periodEnd = periodStart.clone().add(cell._period.Duration, 'h');\r\n\r\n if ((start < periodEnd) && (end > periodStart)){\r\n agenda[columnIter][cellIter].push({\r\n id: item.Id,\r\n start: moment(FormatConverter.CorrectTimezone(item.Starting)),\r\n end: moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)))\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (agenda[columnIter][cellIter].length > 1) {\r\n agenda[columnIter][cellIter] = _.uniq(agenda[columnIter][cellIter], (ag: any) => ag.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n viewModel.AvailablePeriods = this.AvailablePeriodsForReplanning(agenda, viewModel.HeaderColumns, model.rePlanningData);\r\n\r\n _.forEach(viewModel.Groups, (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n cell._availableForReplanRanges = _.map(viewModel.AvailablePeriods[columnIter][cellIter], (range) => {\r\n return {\r\n Start: range.a.clone(),\r\n End: range.b.clone(),\r\n DisplayValue: `${range.a.clone().format(DATE_FORMATS.TIME.Format)} - ${range.b.clone().format(DATE_FORMATS.TIME.Format)}`\r\n }\r\n });\r\n })\r\n })\r\n }\r\n });\r\n });\r\n }\r\n\r\n viewModel.AgendaConnection = model.model.AgendaConnection;\r\n viewModel.CreatingData = model.model.CreatingData;\r\n viewModel.IsValid = model.model.IsValid;\r\n\t\tviewModel.ReadingData = model.model.ReadingData;\r\n\t viewModel.ScreenSubjectRecordName = model.model.ScreenSubjectRecordName;\r\n viewModel.Errors = model.model.Errors;\r\n viewModel.Month = moment(model.startDate).format(DATE_FORMATS.MONTH_AND_YEAR.Format);\r\n viewModel.MonthDayYear = moment(model.startDate).format(DATE_FORMATS.SHORT_DATE_SHORT_WEEK.Format)+', '+ moment(model.startDate).format(DATE_FORMATS.ONLY_A_YEAR.Format);\r\n viewModel.CurrentDate = moment(model.startDate).format();\r\n return viewModel;\r\n }\r\n\r\n\r\n static AvailablePeriodsForReplanning(agenda: any, headerColumns: Array<HeaderColumn>, rePlanningData: IRePlanningData) {\r\n const base = {};\r\n _.forEach(agenda, (column: Array<any>, colIndex) => {\r\n if (!base[colIndex]) {\r\n base[colIndex] = {};\r\n }\r\n _.forEach(column, (cell: Array<any>, cellIndex) => {\r\n if (!base[colIndex][cellIndex]) {\r\n base[colIndex][cellIndex] = [];\r\n }\r\n const period = headerColumns[colIndex].Periods[cellIndex];\r\n base[colIndex][cellIndex] = [Object.assign({},{a: moment(period.Start).clone(), b: moment(period.Start).clone().add(period.Duration, 'hours')})];\r\n\r\n for (let i =0; i<cell.length; i++){\r\n let newBase = [];\r\n for(let j=0; j<base[colIndex][cellIndex].length; j++) {\r\n const {start:c, end:d} = cell[i];\r\n newBase = newBase.concat(this.Compare(base[colIndex][cellIndex][j],{c, d}));\r\n }\r\n base[colIndex][cellIndex] = _.filter(newBase, (item) => {\r\n return item.b.diff(item.a, 'hours', true) >=\r\n rePlanningData.EndTime.diff(rePlanningData.StartTime, 'hours', true);\r\n });\r\n\r\n }\r\n })\r\n });\r\n return base;\r\n }\r\n\r\n static Compare({a, b}, {c, d}) {\r\n if ( (c > a) && (b > d) )\r\n return [{a,b:c}, {a:d,b}];\r\n if ( (a >= c) && (d >= b) )\r\n return [{a,b}];\r\n if ( (a >= c) && ( b > d) && (d > a))\r\n return [{a:d,b}];\r\n if ( (c > a) && (d >= b) && (b > c))\r\n return [{a,b:c}];\r\n return [{a,b}];\r\n }\r\n}","//Common\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Request } from \"Core/Common/Request\";\r\n\r\n//Models\r\nimport { ISchedulerRequestModel } from \"../Models/Store/Request/SchedularRequestModel\";\r\nimport { ISchedularResponseModel } from \"../Models/Store/Response/SchedulerResponseModel\";\r\n\r\nexport class SchedulerStore {\r\n\r\n\tstatic GetScheduler(params: ISchedulerRequestModel, isBlockingNeed: boolean = true): P.Promise<ISchedularResponseModel> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tisBlockingNeed && BlockUI.Block();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: \"api/SchedulerApi/GetScheduler\",\r\n\t\t\t\t\ttype: \"POST\",\r\n\t\t\t\t\tdataType: \"json\"\r\n\t\t\t\t},\r\n\t\t\t\tparams: params\r\n\t\t\t}).then(response => {\r\n\t\t\t\tthis.ResolveObjectResponse(response, deferredResult)\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tvar errorException = JSON.parse(error.message);\r\n\t\t\t\tthis.RejectResponse(errorException.ExceptionMessage, deferredResult);\r\n\t\t\t})\r\n\t\t\t.always(() => isBlockingNeed && BlockUI.Unblock());\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate static ResolveObjectResponse<T>(response, deferredResult: P.Deferred<T>) {\r\n\t\tif (response) {\r\n\t\t\tdeferredResult.resolve(response);\r\n\t\t} else {\r\n\t\t\tdeferredResult.reject({ message: response.ErrorMessage });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static RejectResponse<T>(message: string, deferredResult: P.Deferred<T>) {\r\n\t\tdeferredResult.reject({ message: message });\r\n\t}\r\n}\r\n","import * as ko from \"knockout\";\r\nimport * as moment from 'moment';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Period} from \"../Models/View/SchedulerViewModel\";\r\n\r\nexport interface ILinkedModel {\r\n GroupEntityId: number;\r\n ResourceId: number;\r\n Name: string;\r\n TypeId: number;\r\n TypeName: string;\r\n}\r\n\r\nexport class ButtonCellEditor {\r\n _isAvailable: KnockoutObservable<boolean>;\r\n _linkedSubGroups: ILinkedModel[];\r\n _period: Period;\r\n IsDisabled: boolean;\r\n\r\n constructor(isAvailable: boolean, period: Period, isDisabled: boolean) {\r\n this._period = period;\r\n this._linkedSubGroups = [];\r\n this.IsDisabled = isDisabled || this.CheckIsAfter();\r\n this._isAvailable = ko.observable(isAvailable);\r\n }\r\n\r\n GetClassName(qty: number): string {\r\n return ' subcol-' + qty;\r\n }\r\n\r\n private CheckIsAfter():boolean {\r\n return moment().isAfter(this._period.Start);\r\n }\r\n\r\n private GetTooltipMessage(): string {\r\n\t\treturn this.CheckIsAfter() ? LABELS.NO_POSSIBLE_TO_CREATE_APPOINTMENT_IN_THE_PAST : '';\r\n }\r\n}","import {ButtonCellEditor} from \"./ButtonCellEditor\";\r\n\r\nexport class ColumnButtonsEditor {\r\n _cellsEditors: ButtonCellEditor[];\r\n\r\n constructor() {\r\n this._cellsEditors = [];\r\n }\r\n}","export const PROPERTIES = {\r\n REFRESH_SCREEN: 'RefreshScreen'\r\n};\r\n\r\nexport const SCHEDULER_EVENTS = {\r\n CREATE_SCREEN: \"CreateScreenFromScheduler\",\r\n OPEN_DEFAULT_SCREEN: \"OpenDefaultScreen\",\r\n RETURN_TO_AGENDA: \"ReturnToAgenda\",\r\n SWITCH_TO_DEFAULT: \"SwitchToDefault\",\r\n REPLAN_APPOINTMENT: \"ReplanAppointment\",\r\n SET_DATA: \"SetData\",\r\n};","// Module\nvar code = \"<!-- ko with: _view --> <!--ko if: _ready--> <!-- ko with: _viewModel --> <div data-control-type=\\\"scheduler-control\\\" class=\\\"ConsultScreenView scheduler-control-container form-standart-control clearfix\\\"> <div class=\\\"scheduler\\\" data-bind=\\\"css: $parent.GetClass(), syncScroll: {topScroll: '.scheduler__header__wrapper', bottomScroll: '.scroll-wrapper'}\\\" data-control-type=\\\"scheduler-control\\\"> <!-- ko with: $parent --> <!--ko if: _isRePlanMode --> <div class=\\\"lifestatus-bar well inline-block replanning-header\\\"> <i class=\\\"fa fa-info-circle\\\" aria-hidden=\\\"true\\\"></i> <!--ko text: _labels.RE_PLANNING --> <!-- /ko -->: <span class=\\\"u-underlined\\\" data-bind=\\\"text: _rePlanningData.Name\\\"></span> <button class=\\\"btn btn-default btn-xs\\\" data-bind=\\\"text: _labels.CANCEL, click: ReturnToAgenda\\\"></button> </div> <!-- /ko --> <!-- /ko --> <div class=\\\"u-relative\\\" data-bind=\\\"hasScrollBar: {addClass: 'u-with-scroll', position: 'vertical', isReady: $parent._isUnblocked(), checkElement: '.scroll-wrapper'}\\\"> <div class=\\\"scheduler__title text-center row\\\"> <div class=\\\"header__centered\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnPrevClick.bind($parent)\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <!-- ko if: $parent._screen === $parent._labels.AGENDA_MONTH --> <span class=\\\"schedulerPickerPagination scheduler__week\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"> <!-- ko text: Month --><!-- /ko --> </span> <!-- /ko --> <!-- ko if: $parent._screen === $parent._labels.AGENDA_DAY --> <!-- <span data-bind=\\\"click: $parent.InitSchedulerDateTimePicker.bind($parent)\\\" class=\\\"scheduler__day\\\">--> <span class=\\\"schedulerPickerPagination scheduler__day\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"> <!-- ko text: MonthDayYear --><!-- /ko --> </span> <!-- /ko --> <!-- ko if: $parent._screen !== $parent._labels.AGENDA_MONTH && $parent._screen !== $parent._labels.AGENDA_DAY --> <span class=\\\"schedulerPickerPagination scheduler__week\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"> <!-- ko text: $parent._labels.AGENDA_WEEK --><!-- /ko --><!-- ko text: WeekNumber --><!-- /ko --> </span> <!-- /ko --> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-next scheduler__btn\\\" aria-label=\\\"next\\\" data-bind=\\\"click: $parent.OnNextClick.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> <div class=\\\"scheduler__nav pull-right\\\"> <!-- ko fastForEach: $parent.Views --> <button class=\\\"btn btn-link scheduler__nav__btn\\\" data-bind=\\\"text: $data,\\r\\n click: $parents[1].ChangeView.bind($parents[1], $data),\\r\\n css: $parents[1].GetActiveClass($data)\\\"></button> <!-- /ko --> </div> </div> <div class=\\\"scheduler__globals\\\"> <!--ko if: $parent._subjectGlobal --> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\" data-bind=\\\"ellipsisTooltip: {content: $parent._subjectGlobal}\\\"> <!-- ko text: $parent._subjectGlobal --> <!-- /ko -->:</label> <div class=\\\"scheduler__global__value subject-toggle\\\"> <a data-bind=\\\"click: $parent.ChangeProvideSubject.bind($parent),\\r\\n css: {'disabledClass': $parent._numberOfPeriods() > 2},\\r\\n tooltip: {content: $parent._numberOfPeriods() > 2 ? $parent._subjectTooltip : ''}\\\" href=\\\"javascript:void(0)\\\"> <i data-bind=\\\"css: {'fa-toggle-off': !$parent._subjectGlobalValue(), 'fa-toggle-on': $parent._subjectGlobalValue()}\\\" class=\\\"fa fa-toggle-off\\\"></i> </a> </div> </div> <!-- /ko --> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\"><!-- ko text: $parent._labels.PERIOD --> <!-- /ko -->:</label> <div class=\\\"scheduler__global__value\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnDecreasePeriods.bind($parent)\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <span data-bind=\\\"text: $parent._numberOfPeriods\\\"></span> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnIncreasePeriods.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> </div> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\"><!-- ko text: $parent._labels.STARTING --><!-- /ko -->:</label> <div class=\\\"scheduler__global__value\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnDecreaseStarting.bind($parent)\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <span data-bind=\\\"text: $parent._starting\\\"></span> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnIncreaseStarting.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> </div> <div class=\\\"scheduler__global\\\"> <label class=\\\"ellipsis-block\\\"><!-- ko text: $parent._labels.DURATION --><!-- /ko -->:</label> <div class=\\\"scheduler__global__value\\\"> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnDecreasePeriodDuration.bind($parent), css: {'disabled-btn': $parent.DisableBtnDecreasePeriodBtn()}\\\"> <i class=\\\"fa fa-chevron-left\\\" aria-hidden=\\\"true\\\"></i> </button> <span data-bind=\\\"text: $parent.GetDisplayPeriodDuration()\\\"></span> <button type=\\\"button\\\" class=\\\"btn btn-link scheduler__btn-prev scheduler__btn\\\" aria-label=\\\"prev\\\" data-bind=\\\"click: $parent.OnIncreasePeriodDuration.bind($parent)\\\"> <i class=\\\"fa fa-chevron-right\\\" aria-hidden=\\\"true\\\"></i> </button> </div> </div> </div> <div class=\\\"scheduler__header clearfix\\\"> <div class=\\\"scheduler__header--first text-right\\\"> <div class=\\\"scheduler__qty\\\">#</div> </div> <div class=\\\"text-left u-ws-nowrap scheduler__header__wrapper\\\"> <!-- ko fastForEach: { data: HeaderColumns, afterRender: AfterRender.bind($data, $parent._columnToScroll, $parent._isRePlanMode) } --> <div class=\\\"scheduler__header__column text-center\\\"> <div class=\\\"scheduler__date\\\" data-bind=\\\"text: DisplayValue\\\"></div> <div class=\\\"scheduler__header--subcolumns clearfix u-font-size-0\\\" data-bind=\\\"css: $parent.GetHeaderWidthClass()\\\"> <!-- ko fastForEach: Periods --> <div class=\\\"scheduler__header--subcolumn\\\" data-bind=\\\"text: $data.DisplayValue, css: $parents[1].GetGetColumnWidthClass()\\\"></div> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"scroll-wrapper\\\" data-bind='niceScroll: { zindex: 10,\\r\\n cursorwidth:6,\\r\\n cursoropacitymin:0.8,\\r\\n cursorcolor:\\\"rgba(193,193,193,0.51)\\\",\\r\\n cursorborder:\\\"none\\\",\\r\\n cursorborderradius:4,\\r\\n emulatetouch: false,\\r\\n scrollForMobile: false,\\r\\n autohidemode:\\\"leave\\\",\\r\\n horizontalScrollWithShift: true\\r\\n }'> <div class=\\\"scroll-inner\\\"> <div class=\\\"scheduler__body text-center clearfix\\\"> <!-- ko fastForEach: { data : $parent._groupEditors } --> <div class=\\\"scheduler__body__group clearfix\\\" aria-expanded=\\\"false\\\" data-bind=\\\"collapse: {onOpen: OnOpenGroup.bind($data), onClose: OnCloseGroup.bind($data), onReady: OnCollapseReady.bind($data)}, attr : {id: 'group' + $index()}\\\"> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\" data-bind=\\\"attr: {href: '#collapse' + $index(), 'aria-controls': 'collapse' + $index()}\\\"> </a> <label class=\\\"customcheck font-weight-bold\\\" data-bind=\\\"attr: {for: 'checkboxOption' + $index()}\\\"> <span class=\\\"name\\\"> <span class=\\\"scheduler__customcheck-name-content\\\"> <!--ko text: _name --><!-- /ko --> <!-- ko if: _sortOrder() < 0 --> [<!--ko text: _selectedCount --><!-- /ko -->] <!-- /ko --> </span> </span> <input type=\\\"checkbox\\\" data-bind=\\\"attr: {id: 'checkboxOption' + $index()},\\r\\n groupedCheckbox: $data,\\r\\n checked: _isSelected,\\r\\n click: $parents[1].OnGroupClick.bind($parents[1], $data)\\\"> <span class=\\\"checkmark\\\"></span> </label> <div class=\\\"scheduler__qty pull-right\\\"> <!--ko text: _subGroupEditors.length --> <!-- /ko --></div> </div> <div class=\\\"scheduler__body__group--collapsed clearfix text-left u-ws-nowrap\\\"> <!-- ko fastForEach: _columnsEditors --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <!-- ko if: _isReplanningCell--> <div class=\\\"scheduler__body__group__subcol jBox-content-target replan-blue u-cursor-pointer\\\" data-bind=\\\"text: DisplayValue,\\r\\n css: GetClassName($parent._cellsEditors.length),\\r\\n click: $parents[5].SwitchToDefaultMode.bind($parents[5])\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isReplanningCell--> <div class=\\\"scheduler__body__group__subcol\\\" data-bind=\\\"text: DisplayValue, css: GetClassName($parent._cellsEditors.length)\\\"></div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"scheduler__body__subgroup--wrapper collapse clearfix\\\" data-bind=\\\"attr: {id: 'collapse' + $index()}\\\"> <!-- ko if: !_isCollapsed() --> <!-- ko fastForEach: _subGroupEditors --> <div class=\\\"scheduler__body__subgroup\\\"> <!-- ko with: _columnFirst --> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <label class=\\\"customcheck\\\"> <span class=\\\"name\\\"> <span class=\\\"scheduler__customcheck-name-content\\\" data-bind=\\\"text: _name, ellipsisTooltip: {content: _name}\\\"></span> </span> <input type=\\\"checkbox\\\" data-bind=\\\"attr: {'data-option': 'checkboxOption' + $parentContext.$parentContext.$index(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t 'checkbox-id': 'checkboxOption' + _id,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t 'data-type': _type},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t checked: $parent._isSelected, click: $parents[3].OnSubGroupClick.bind($parents[3], $parent)\\\"> <span class=\\\"checkmark\\\"></span> </label> <div class=\\\"scheduler__qty pull-right\\\">1</div> </div> <!-- /ko --> <div class=\\\"scheduler__body__group__col-container u-ws-nowrap u-font-size-0\\\"> <!-- ko fastForEach: _columnsEditors --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <!-- ko if: _isReplanningCell--> <div class=\\\"scheduler__body__group__subcol jBox-content-target replan-blue u-cursor-pointer\\\" data-bind=\\\"text: DisplayValue,\\r\\n css: GetClassName($parent._cellsEditors.length),\\r\\n click: $parents[6].SwitchToDefaultMode.bind($parents[6])\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isReplanningCell--> <!-- ko ifnot: _isAvailableForReplan--> <div class=\\\"scheduler__body__group__subcol jBox-content-target\\\" data-bind=\\\"css: GetClassName($parent._cellsEditors.length),\\r\\n event: {mouseover: DisplayAppointments.bind($data)}\\\" data-jbox-content=\\\"\\r\\n <div class='scheduler-appointments'>\\r\\n <!-- ko fastForEach: _appointments -->\\r\\n <div class='scheduler-appointments-item'>\\r\\n <div class='sch-item-duration' data-bind='text: Duration'></div>\\r\\n <div class='sch-item-name u-ws-nowrap ellipsis-block hyperlink' data-bind='text: Name, click: $parent.ShowAppointment.bind($parent)'></div>\\r\\n </div>\\r\\n <!-- /ko -->\\r\\n </div>\\\"> <!-- ko if: _view._subjectGlobalValue--> <!-- ko fastForEach: _appointments --> <div class=\\\"scheduler-appointments-item text-left\\\"> <div class=\\\"sch-item-duration bold\\\" data-bind=\\\"text: Duration\\\"></div> <!-- ko if: $parent._view._subjectIcon && $parent._view._subjectIcon.Id --> <!-- ko ifnot: $parent._view._subjectIcon.Image --> <i class=\\\"sch-icon\\\" data-bind=\\\"css: $parent._view.IconModel.GetClasses( $parent._view._subjectIcon.FontName, $parent._view._subjectIcon.Name)\\\"></i> <!-- /ko --> <!-- ko if: $parent._view._subjectIcon.Image--> <img class=\\\"img-responsive image-centered sch-image\\\" data-bind=\\\"attr: {src: $parent._view._subjectIcon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko fastForEach: Subjects --> <a class=\\\"sch-item-subject hyperlink\\\" href=\\\"javascript:void(0);\\\" data-bind=\\\"text: Name,\\r\\n click: $parents[1].ShowDefaultScreen.bind($parents[1], $parents[1]._view._subjectEntityId)\\\"></a><span data-bind=\\\"ifnot: ($index() === ($parent.Subjects.length - 1))\\\">, </span> <!-- /ko --> <!-- ko ifnot: Subjects.length -->-<!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _view._subjectGlobalValue--> <!--ko text: DisplayValue --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: _isAvailableForReplan--> <div class=\\\"scheduler__body__group__subcol jBox-content-target replan-green\\\" data-bind=\\\"text: DisplayValue,\\r\\n css: GetClassName($parent._cellsEditors.length),\\r\\n click: OnReplan.bind($data, $data._period.Start, false),\\r\\n tooltip: {content: _availableForReplanRanges.length === 1 ? _labels.RE_PLAN_APPOINTMENT_TO_PERIOD : null},\\r\\n event: {mouseover: DisplayRanges.bind($data, $parents[1]._availableForReplanRanges)},\\r\\n addCssForAll: {eventAdd: 'mouseenter', eventRemove: 'mouseleave', class: $data._columnIndex, toggleClass: 'replan-green-hovered'}\\\" data-jbox-content=\\\"\\r\\n <div class='scheduler-appointments'>\\r\\n <!-- ko fastForEach: _availableForReplanRanges -->\\r\\n <div class='scheduler-appointments-item u-cursor-pointer hovered'\\r\\n data-bind='text: DisplayValue, click: $parent.OnReplan.bind($parent, $data.Start, true)'></div>\\r\\n <!-- /ko -->\\r\\n </div>\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!--ko if: $data._isCollapsed() && $parents[1]._lastCollapsed() === $data._sortOrder()--> <div class=\\\"scheduler__body__group scheduler__body__group--bordered clearfix\\\"> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <label class=\\\"label--free-capacity font-weight-bold\\\" data-bind=\\\"text: $parents[1]._labels.SCHEDULER_FREE_CAPACITY\\\"></label> <div class=\\\"scheduler__qty pull-right\\\"></div> </div> <div class=\\\"scheduler__body__group--collapsed clearfix text-left u-ws-nowrap\\\"> <!-- ko fastForEach: $parents[1]._freeCapacity --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <div class=\\\"scheduler__body__group__subcol\\\" data-bind=\\\"css: $parents[3].GetBottomColumnWidthClass()\\\"> <!-- ko if: _isAvailable()--> <a type=\\\"button\\\" href=\\\"javascript:void(0)\\\" class=\\\"btn btn-success btn-scheduler-plus\\\" data-bind=\\\"\\r\\n click: $parents[3].OnCreateEvent.bind($parents[3], $data),\\r\\n attr: {disabled: IsDisabled}\\\"> + </a> <!-- /ko --> </div> <!--/ko--> </div> <!-- /ko --> </div> </div> <!--/ko--> <!-- /ko --> </div> </div> <!-- ko with: $parent --> <!-- ko if: _commonFreeTime().length --> <div class=\\\"scheduler__body__group scheduler__body__group--bordered clearfix u-sticky-bottom\\\"> <div class=\\\"scheduler__body__group--collapsed clearfix text-left u-ws-nowrap\\\"> <div class=\\\"scheduler__body__group__col--first text-left\\\"> <label class=\\\"font-weight-bold label--free-time\\\" data-bind=\\\"text: _labels.SCHEDULER_COMMON_FREE_TIME\\\"></label> <div class=\\\"scheduler__qty pull-right\\\"></div> </div> <!-- ko fastForEach: _commonFreeTime --> <div class=\\\"scheduler__body__group__col\\\"> <!-- ko fastForEach: _cellsEditors --> <div class=\\\"scheduler__body__group__subcol\\\" data-bind=\\\"css: $parents[3].GetBottomColumnWidthClass()\\\"> <!-- ko if: _isAvailable()--> <a type=\\\"button\\\" href=\\\"javascript:void(0)\\\" class=\\\"btn btn-success btn-scheduler-plus\\\" data-bind=\\\"\\r\\n click: $parents[3].OnCreateEvent.bind($parents[3], $data),\\r\\n attr: {disabled: IsDisabled}\\\"> + </a> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\nimport * as moment from \"moment\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {GlobalModel} from \"Core/GlobalManager/Models/GlobalModel\";\r\nimport {ISchedulerParams} from \"../ISchedulerParams\";\r\nimport {SchedulerMappingProfile} from \"../Mappings/SchedulerMappingProfile\";\r\nimport {IResources, ISchedulerRequestModel} from \"../Models/Store/Request/SchedularRequestModel\";\r\nimport {ISchedularResponseModel} from \"../Models/Store/Response/SchedulerResponseModel\";\r\nimport {SchedulerViewModel} from \"../Models/View/SchedulerViewModel\";\r\nimport {SchedulerStore} from \"../Stores/SchedulerStore\";\r\nimport {ButtonCellEditor, ILinkedModel} from \"../Utils/ButtonCellEditor\";\r\nimport {ColumnButtonsEditor} from \"../Utils/ColumnButtonsEditor\";\r\nimport {GroupEditor} from \"../Utils/GroupEditor\";\r\nimport {SubGroupEditor} from \"../Utils/SubGroupEditor\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {PROPERTIES, SCHEDULER_EVENTS} from \"Core/Controls/Scheduler/Constants\";\r\nimport { IRePlanningData } from \"Core/Controls/Scheduler//Interfaces\";\r\n\r\n//Templates\r\nimport SchedulerTemplate from \"Core/Components/Controls/Scheduler/Templates/Scheduler.html\";\r\n\r\nexport class SchedulerCultures {\r\n static Get(culture: string) {\r\n const Cultures = {\r\n 'nl-nl': 'nl'\r\n };\r\n\r\n if (Cultures.hasOwnProperty(culture.toLowerCase())) {\r\n return Cultures[culture.toLowerCase()];\r\n }\r\n return culture;\r\n }\r\n}\r\n\r\nexport class SchedulerView extends Event {\r\n private _viewModel: SchedulerViewModel;\r\n private _lastCollapsed: KnockoutObservable<number>;\r\n private _groupEditors: KnockoutObservableArray<GroupEditor>;\r\n private _labels = LABELS;\r\n _screen: string;\r\n private _startDate: moment.Moment;\r\n private _endDate: moment.Moment;\r\n private _baseDatePicker: moment.Moment;\r\n private _baseDateStartClickingArrow: moment.Moment;\r\n private _settings: ISchedulerParams;\r\n private _freeCapacity: KnockoutObservableArray<ColumnButtonsEditor>;\r\n private _commonFreeTime: KnockoutObservableArray<ColumnButtonsEditor>;\r\n private _notValidGlobals: KnockoutObservableArray<string>;\r\n private _ready: KnockoutObservable<boolean>;\r\n private _loadInProgres: KnockoutObservable<boolean>;\r\n private _parentElement: HTMLElement = null;\r\n private _numberOfPeriods: KnockoutObservable<number>;\r\n private _periodsDuration: KnockoutObservable<number>;\r\n private _starting: KnockoutObservable<string>;\r\n private _columnToScroll: number;\r\n private _isRePlanMode: boolean;\r\n\r\n private _updateTimeout: any;\r\n private _updateTimeoutValue: number;\r\n private _globalsToUpdate: GlobalModel[];\r\n private _subjectIcon: IconModel;\r\n private IconModel = IconModel;\r\n private _subjectEntityId: number;\r\n private _isUnblocked: KnockoutObservable<boolean>;\r\n private _controlId: number;\r\n private recentLoaded: boolean = false;\r\n _subjectGlobalValue: KnockoutObservable<boolean>;\r\n _subjectGlobal: string;\r\n private _subjectTooltip: string;\r\n\r\n _rePlanningData: IRePlanningData;\r\n Views: Array<string>;\r\n GlobalValid: KnockoutObservable<boolean>;\r\n AgendaConnection: KnockoutObservable<boolean>;\r\n ReadingData: KnockoutObservable<boolean>;\r\n\r\n constructor(settings: ISchedulerParams) {\r\n super();\r\n\r\n this._controlId = settings.ControlId;\r\n this._screen = null;\r\n this._groupEditors = ko.observableArray([]);\r\n\r\n this._lastCollapsed = ko.observable(0);\r\n\r\n this._startDate = moment().startOf('isoWeek');\r\n this._endDate = moment().endOf('isoWeek').subtract(2, 'days');\r\n\r\n this._settings = settings;\r\n this._freeCapacity = ko.observableArray([]);\r\n this._commonFreeTime = ko.observableArray([]);\r\n this.AgendaConnection = ko.observable(true);\r\n this.ReadingData = ko.observable(true);\r\n this._notValidGlobals = ko.observableArray([]);\r\n this._ready = ko.observable(false);\r\n this._starting = ko.observable(GlobalManager.Instance.GetGlobal(GLOBALS.STARTING_TIME));\r\n\r\n this.InitPeriodDuration();\r\n this.InitNumberOfPeriods();\r\n\r\n this.GlobalValid = ko.observable(this.IsGlobalValid());\r\n this._loadInProgres = ko.observable(false);\r\n this.Views = [\r\n this._labels.AGENDA_MONTH,\r\n this._labels.AGENDA_WORK_WEEK,\r\n this._labels.AGENDA_WEEK,\r\n this._labels.AGENDA_DAY];\r\n this._columnToScroll = 0;\r\n this._isRePlanMode = false;\r\n this._updateTimeoutValue = 1000;\r\n this._globalsToUpdate = [];\r\n this._subjectGlobal = null;\r\n this._subjectGlobalValue = ko.observable(UserVarsManager.Instance.GetSchedulerSubjectToggle(this._controlId));\r\n this._subjectIcon = null;\r\n this._subjectEntityId = null;\r\n this._isUnblocked = ko.observable(false);\r\n this._baseDatePicker = null;\r\n this._baseDateStartClickingArrow = null;\r\n this._subjectTooltip = null;\r\n\r\n if (settings.RePlanningData) {\r\n this.SetDefaultValues(settings.RePlanningData);\r\n }\r\n\r\n this.AddEvent(SCHEDULER_EVENTS.CREATE_SCREEN);\r\n this.AddEvent(SCHEDULER_EVENTS.OPEN_DEFAULT_SCREEN);\r\n this.AddEvent(SCHEDULER_EVENTS.RETURN_TO_AGENDA);\r\n this.AddEvent(SCHEDULER_EVENTS.SWITCH_TO_DEFAULT);\r\n this.AddEvent(SCHEDULER_EVENTS.REPLAN_APPOINTMENT);\r\n this.AddEvent(SCHEDULER_EVENTS.SET_DATA);\r\n }\r\n\r\n Capitalize(s: string) {\r\n return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();\r\n }\r\n\r\n GetScreenSubjectRecordName() {\r\n return this._viewModel.ScreenSubjectRecordName;\r\n }\r\n\r\n GetDisplayPeriodDuration() {\r\n return moment().startOf('day').add(this._periodsDuration(), 'hours').format(DATE_FORMATS.TIME.Format);\r\n }\r\n\r\n SetLastDate() {\r\n this.SetDate(this._controlId, this._startDate.format());\r\n }\r\n\r\n SetDate(controlId: number, date: string) {\r\n UserVarsManager.Instance.SetSchedulerDate(controlId, date);\r\n this.Trigger(SCHEDULER_EVENTS.SET_DATA, {Date: date});\r\n }\r\n\r\n SetDefaultValues(defaultValues) {\r\n this._isRePlanMode = true;\r\n this._startDate = defaultValues.StartTime.clone().startOf('isoWeek');\r\n this._endDate = defaultValues.StartTime.clone().endOf('isoWeek').subtract(2, 'days');\r\n this._rePlanningData = defaultValues;\r\n }\r\n\r\n GetEntityId() {\r\n return this._settings.EntityId;\r\n }\r\n\r\n GetTemplate() {\r\n return SchedulerTemplate;\r\n }\r\n\r\n GetClass() {\r\n let classes = '';\r\n if (this._subjectGlobalValue() && (this._numberOfPeriods() <= 2)) {\r\n classes = 'scheduler-subject ';\r\n }\r\n\r\n switch (this._screen) {\r\n case this._labels.AGENDA_WEEK :\r\n classes = classes + 'scheduler--week';\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n classes = classes + 'scheduler--work-week';\r\n break;\r\n\r\n case this._labels.AGENDA_MONTH :\r\n classes = classes + 'scheduler--month';\r\n break;\r\n case this._labels.AGENDA_DAY :\r\n classes = classes + 'scheduler--day';\r\n break;\r\n }\r\n return classes;\r\n }\r\n\r\n GetActiveClass(screen: string) {\r\n if (this._screen == screen) {\r\n return 'active';\r\n }\r\n }\r\n\r\n ChangeView(view: string) {\r\n if (this._screen === view) return;\r\n\r\n switch (view) {\r\n case this._labels.AGENDA_MONTH :\r\n this.ChangeDateAndSortDates('month', null, null);\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this.ChangeDateAndSortDates('isoWeek', null, null);\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this.ChangeDateAndSortDates('isoWeek', 'days', 2);\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this.ChangeDateAndSortDates('day', null, null);\r\n break;\r\n }\r\n\r\n UserVarsManager.Instance.SetSchedulerView(this._controlId, view);\r\n\r\n this._screen = view;\r\n\r\n this.Show();\r\n }\r\n\r\n ChangeDateAndSortDates(sort: moment.unitOfTime.StartOf, period?: moment.DurationInputArg2, subtract?: moment.DurationInputArg1){\r\n if (this._baseDateStartClickingArrow){ // is arrow click Date\r\n this._startDate = moment(this._baseDateStartClickingArrow).startOf(sort);\r\n if (!!period && !!subtract){\r\n this._endDate = moment(this._baseDateStartClickingArrow).endOf(sort).subtract(subtract, period);\r\n } else{\r\n this._endDate = moment(this._baseDateStartClickingArrow).endOf(sort);\r\n }\r\n\r\n } else if (this._baseDatePicker) { // is Picker click Date\r\n this._startDate = moment(this._baseDatePicker).startOf(sort);\r\n if (!!period && !!subtract){\r\n this._endDate = moment(this._baseDatePicker).endOf(sort).subtract(subtract, period);\r\n } else{\r\n this._endDate = moment(this._baseDatePicker).endOf(sort);\r\n }\r\n\r\n } else { // is default click date\r\n this._startDate = moment(this._startDate).startOf(sort);\r\n if (!!period && !!subtract){\r\n this._endDate = moment(this._startDate).endOf(sort).subtract(subtract, period);\r\n } else{\r\n this._endDate = moment(this._startDate).endOf(sort);\r\n }\r\n\r\n }\r\n }\r\n\r\n private RenderData(model: ISchedularResponseModel) {\r\n this.AgendaConnection(model.AgendaConnection);\r\n this.ReadingData(model.ReadingData);\r\n\r\n if (!model.AgendaConnection || !model.ReadingData) {\r\n this._ready(true);\r\n this._groupEditors().forEach(editor => editor.OpenGroup()); //if you need to open only the first 2 groups, then do - this._groupEditors().slice(0, 2)\r\n return;\r\n }\r\n\r\n const schedulerMappingProfile = {\r\n model: model,\r\n startDate: this._startDate,\r\n endDate: this._endDate,\r\n numberOfPeriods: this._numberOfPeriods(),\r\n periodDuration: this._periodsDuration(),\r\n startingTime: this._starting(),\r\n rePlanningData: this._rePlanningData,\r\n schedulerView: this\r\n };\r\n\r\n if (model.SubjectTable) {\r\n if (!model.SubjectIsValid) {\r\n this._subjectGlobalValue(false);\r\n new Notifier().Warning(NOTIFICATIONS.INVALID_SCHEDULER_SUBJECT);\r\n } else if (model.SubjectTable.Name !== 'AGENDA') {\r\n this._subjectIcon = model.SubjectTable.Icon;\r\n this._subjectEntityId = model.SubjectTable.Id;\r\n this._subjectGlobal = this.Capitalize(model.SubjectTable.TranslatedName || model.SubjectTable.Name);\r\n this._subjectTooltip = this._labels.SUBJECT_TOOLTIP.replace('{entityname}', this._subjectGlobal);\r\n } else if (model.SubjectTable.Name === 'AGENDA') {\r\n this._subjectGlobalValue(false);\r\n }\r\n }\r\n\r\n if (schedulerMappingProfile.numberOfPeriods > 2) {\r\n this._subjectGlobalValue(false);\r\n }\r\n\r\n const viewModel = SchedulerMappingProfile.OnViewModel(schedulerMappingProfile);\r\n\r\n if (this._viewModel) {\r\n this.RestoreSelectedItems(viewModel);\r\n this.UpdateRow(this._freeCapacity);\r\n this.UpdateRow(this._commonFreeTime, true, !!this._rePlanningData);\r\n }\r\n\r\n this._groupEditors(viewModel.Groups);\r\n viewModel.Week = this._startDate.isoWeek();\r\n\r\n this._viewModel = viewModel;\r\n this.InitGroupEditors(viewModel);\r\n\r\n _.forEach(model.Errors, err => this.ShowError(err));\r\n\r\n this._ready(true);\r\n this._groupEditors().forEach(editor => editor.OpenGroup()); //if you need to open only the first 2 groups, then do - this._groupEditors().slice(0, 2)\r\n this.InitSchedulerDateTimePicker(this._viewModel, this._parentElement);\r\n }\r\n\r\n private RestoreSelectedItems(viewModel: SchedulerViewModel) {\r\n const selectedItems = _.flatten(this._viewModel.Groups\r\n .map(group => group._subGroupEditors\r\n .filter(subGroup => subGroup._isSelected())));\r\n\r\n for (const group of viewModel.Groups) {\r\n for (const subGroup of group._subGroupEditors) {\r\n const selectedItem = _.find(selectedItems, i =>\r\n i._columnFirst._entityId === subGroup._columnFirst._entityId && i._columnFirst._id === subGroup._columnFirst._id);\r\n\r\n if (selectedItem) {\r\n subGroup._isSelected(true);\r\n }\r\n }\r\n\r\n group.UpdateSelectedCount();\r\n\r\n if (group.GetSelectedCount() === group._subGroupEditors.length) {\r\n group._isSelected(true);\r\n }\r\n }\r\n }\r\n\r\n private SortGroups(x: GroupEditor, y: GroupEditor) {\r\n return x._sortOrder() - y._sortOrder();\r\n }\r\n\r\n BlockUI() {\r\n this._isUnblocked(false);\r\n BlockUI.Block({Target: this._parentElement});\r\n }\r\n\r\n\r\n UnBlockUI() {\r\n BlockUI.Unblock(this._parentElement, false,() => {\r\n this._isUnblocked(true);\r\n });\r\n }\r\n\r\n AfterRender(elementArray: HTMLElement[]): void {\r\n this._parentElement = elementArray[0].parentElement;\r\n if (this.recentLoaded) {\r\n return;\r\n }\r\n this.recentLoaded = true;\r\n\r\n setTimeout(() => {\r\n this.recentLoaded = false;\r\n }, 5000);\r\n\r\n const lastView = UserVarsManager.Instance.GetSchedulerView(this._controlId);\r\n\r\n this.SetLastDate();\r\n\r\n if (lastView) {\r\n this.ChangeView(lastView);\r\n } else {\r\n this.ChangeView(this._labels.AGENDA_WEEK);\r\n }\r\n if (this._rePlanningData) {\r\n this._columnToScroll = this._rePlanningData.StartTime.diff(this._startDate, 'days');\r\n }\r\n }\r\n\r\n OnPrevClick() {\r\n this._columnToScroll = 0;\r\n this._baseDatePicker = null;\r\n switch (this._screen) {\r\n case this._labels.AGENDA_MONTH :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(1, 'months').startOf('day');\r\n this._startDate.subtract(1, 'months');\r\n this._endDate.subtract(1, 'months');\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(7, 'days').startOf('day');\r\n this._startDate.subtract(7, 'days');\r\n this._endDate.subtract(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(7, 'days').startOf('day');\r\n this._startDate.subtract(7, 'days');\r\n this._endDate.subtract(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this._baseDateStartClickingArrow = moment(this._startDate).subtract(1, 'days').startOf('day');\r\n this._startDate.subtract(1, 'days');\r\n this._endDate.subtract(1, 'days');\r\n break;\r\n }\r\n this.SetDate(this._controlId, this._startDate.format());\r\n this.Show();\r\n }\r\n\r\n OnNextClick() {\r\n this._columnToScroll = 0;\r\n this._baseDatePicker = null;\r\n switch (this._screen) {\r\n case this._labels.AGENDA_MONTH :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(1, 'months').startOf('day');\r\n this._startDate.add(1, 'months');\r\n this._endDate.add(1, 'months');\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(7, 'days').startOf('day');\r\n this._startDate.add(7, 'days');\r\n this._endDate.add(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(7, 'days').startOf('day');\r\n this._startDate.add(7, 'days');\r\n this._endDate.add(7, 'days');\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this._baseDateStartClickingArrow = moment(this._startDate).add(1, 'days').startOf('day');\r\n this._startDate.add(1, 'days');\r\n this._endDate.add(1, 'days');\r\n break;\r\n }\r\n this.SetDate(this._controlId, this._startDate.format());\r\n this.Show();\r\n }\r\n\r\n GetDateFromTimePicker(view: SchedulerViewModel, pickerDate: any){\r\n let newPickerDateShortFormat = moment(pickerDate.date.toDate().toString()).format(DATE_FORMATS.SHORT_DATE.Format),\r\n currentDateShortFormat = moment(view.CurrentDate).format(DATE_FORMATS.SHORT_DATE.Format),\r\n newDate = moment(pickerDate.date.toDate().toString()),\r\n isWeekOrWorkWeek = this._screen === this._labels.AGENDA_WEEK || this._screen === this._labels.AGENDA_WORK_WEEK,\r\n dateComparison: boolean;\r\n\r\n if (isWeekOrWorkWeek){\r\n if ( moment(newPickerDateShortFormat).isSame(moment(new Date()).format(DATE_FORMATS.SHORT_DATE.Format)) ){ // is current week\r\n return false\r\n }\r\n let newDateWeek = moment(moment(newDate).startOf('isoWeek').toDate()).format(DATE_FORMATS.SHORT_DATE.Format);\r\n dateComparison = moment(currentDateShortFormat).isSame(newDateWeek);\r\n } else if (this._screen === this._labels.AGENDA_MONTH) {\r\n let firstDayCurrentMonth = moment(currentDateShortFormat).startOf('month').format();\r\n let firstDayNewDateMonth = moment(newDate).startOf('month').format();\r\n\r\n dateComparison = moment(firstDayCurrentMonth).isSame(firstDayNewDateMonth);\r\n } else {\r\n dateComparison = moment(currentDateShortFormat).isSame(newDate);\r\n }\r\n\r\n if (!dateComparison){\r\n this._columnToScroll = 0;\r\n let isOK: boolean;\r\n if(this._baseDateStartClickingArrow){\r\n this._baseDateStartClickingArrow = null;\r\n }\r\n\r\n switch (this._screen){\r\n case this._labels.AGENDA_MONTH :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('month');\r\n this._endDate = moment(newDate).endOf('month');\r\n isOK = true;\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('isoWeek');\r\n this._endDate = moment(newDate).endOf('isoWeek');\r\n isOK = true;\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('isoWeek');\r\n this._endDate = moment(newDate).endOf('isoWeek').subtract(2, 'days');\r\n isOK = true;\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n this._baseDatePicker = moment(newDate).startOf('day');\r\n this._startDate = moment(newDate).startOf('day');\r\n this._endDate = moment(newDate).endOf('day');\r\n isOK = true;\r\n break;\r\n }\r\n\r\n if (isOK){\r\n this.SetDate(this._controlId, this._startDate.format());\r\n this.Show();\r\n }\r\n }\r\n }\r\n\r\n InitSchedulerDateTimePicker(view: SchedulerViewModel, element){\r\n let self = this,\r\n pickerPaginationBtn = $(element).find('.schedulerPickerPagination'),\r\n pickerBtn = $(pickerPaginationBtn);\r\n\r\n if (pickerBtn.length === 0) return;\r\n\r\n if (!pickerBtn.data(\"DateTimePicker\")) {\r\n pickerBtn.datetimepicker({\r\n minDate: '1900-01-01'\r\n });\r\n\r\n pickerBtn.on('dp.change', function (e) {\r\n self.GetDateFromTimePicker(view, e);\r\n });\r\n\r\n pickerBtn.on('click', function () {\r\n let currentDate;\r\n if(!!self._baseDatePicker){\r\n currentDate = moment(self._baseDatePicker);\r\n\r\n } else if (!!self._baseDateStartClickingArrow) {\r\n currentDate = moment(self._baseDateStartClickingArrow);\r\n\r\n } else {\r\n currentDate = moment(view.CurrentDate);\r\n }\r\n $(this).data(\"DateTimePicker\").date(currentDate);\r\n $(this).data(\"DateTimePicker\").toggle();\r\n });\r\n pickerBtn.on('mouseleave', function () {\r\n $(this).data(\"DateTimePicker\").hide();\r\n\t\t\t});\r\n }\r\n\r\n switch (this._screen) {\r\n case this._labels.AGENDA_MONTH :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'months',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.MONTH_AND_YEAR.Format,\r\n });\r\n break;\r\n\r\n case this._labels.AGENDA_WEEK :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.SHORT_DATE.Format,\r\n daysOfWeekDisabled: false,\r\n });\r\n break;\r\n\r\n case this._labels.AGENDA_WORK_WEEK :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.SHORT_DATE.Format,\r\n daysOfWeekDisabled: [0, 6],\r\n });\r\n break;\r\n\r\n case this._labels.AGENDA_DAY :\r\n pickerBtn.data(\"DateTimePicker\").options({\r\n viewMode: 'days',\r\n locale: SchedulerCultures.Get(FormatConverter.GetLocale()),\r\n format: DATE_FORMATS.SHORT_DATE.Format,\r\n daysOfWeekDisabled: false,\r\n });\r\n break;\r\n }\r\n\r\n }\r\n\r\n DelayedUpdate(target: string, value: string) {\r\n if (this._updateTimeout) clearTimeout(this._updateTimeout);\r\n this._updateTimeout = setTimeout(() => {\r\n this.AddGlobalToUpdate(target, value);\r\n this.Show();\r\n }, this._updateTimeoutValue);\r\n }\r\n\r\n OnIncreasePeriods() {\r\n let newNumberOfPeriods = this._numberOfPeriods() + 1;\r\n\r\n if (newNumberOfPeriods > 48) {\r\n newNumberOfPeriods = 1;\r\n }\r\n\r\n this._numberOfPeriods(newNumberOfPeriods);\r\n this._periodsDuration(this.CalculatePeriodDuration(newNumberOfPeriods));\r\n\r\n this.DelayedUpdate(GLOBALS.NUMBER_OF_PERIODS, this._numberOfPeriods().toString())\r\n\r\n if (newNumberOfPeriods >= 5 && this._screen !== this._labels.AGENDA_DAY){\r\n this.ChangeView(this._labels.AGENDA_DAY);\r\n }\r\n }\r\n\r\n OnDecreasePeriods() {\r\n let newNumberOfPeriods = this._numberOfPeriods() - 1;\r\n\r\n if (newNumberOfPeriods === 0) {\r\n newNumberOfPeriods = 48;\r\n }\r\n\r\n this._numberOfPeriods(newNumberOfPeriods);\r\n this._periodsDuration(this.CalculatePeriodDuration(newNumberOfPeriods));\r\n\r\n this.DelayedUpdate(GLOBALS.NUMBER_OF_PERIODS, this._numberOfPeriods().toString())\r\n\r\n if (newNumberOfPeriods >= 5 && this._screen !== this._labels.AGENDA_DAY){\r\n this.ChangeView(this._labels.AGENDA_DAY);\r\n }\r\n }\r\n\r\n OnIncreasePeriodDuration() {\r\n let defaultStep_30_minutes = 30 / 60, // 30 minutes ÷ 60 minutes = 0.5 hours.\r\n step_15_minutes = 15 / 60, // 15 minutes ÷ 60 minutes = 0.25 hours.\r\n step_10_minutes = 10 / 60, // 10 minutes ÷ 60 minutes = 0.16666666667 hours.\r\n step_05_minutes = 5 / 60; // 5 minutes ÷ 60 minutes = 0.08333333333 hours.\r\n\r\n let newPeriodDuration = this._periodsDuration() + defaultStep_30_minutes,\r\n fixed_10_minutes = +step_10_minutes.toFixed(3),\r\n fixed_05_minutes = +step_05_minutes.toFixed(3),\r\n calculate;\r\n\r\n switch (this._periodsDuration()) {\r\n case fixed_10_minutes :\r\n calculate = this._periodsDuration() + fixed_05_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n case step_15_minutes :\r\n calculate = this._periodsDuration() + step_15_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (newPeriodDuration === 24) {\r\n newPeriodDuration = defaultStep_30_minutes;\r\n }\r\n\r\n this._periodsDuration(newPeriodDuration);\r\n this.CalculateDecreasePeriods();\r\n this.DelayedUpdate(GLOBALS.PERIOD_DURATION, this._periodsDuration().toString())\r\n }\r\n\r\n OnDecreasePeriodDuration() {\r\n let defaultStep_30_minutes = 30 / 60, // 30 minutes ÷ 60 minutes = 0.5 hours.\r\n step_15_minutes = 15 / 60, // 15 minutes ÷ 60 minutes = 0.25 hours.\r\n step_10_minutes = 10 / 60, // 10 minutes ÷ 60 minutes = 0.16666666667 hours.\r\n step_05_minutes = 5 / 60; // 5 minutes ÷ 60 minutes = 0.08333333333 hours.\r\n\r\n let newPeriodDuration = this._periodsDuration() - defaultStep_30_minutes,\r\n fixed_10_minutes = +step_10_minutes.toFixed(3),\r\n fixed_05_minutes = +step_05_minutes.toFixed(3),\r\n calculate;\r\n\r\n switch (this._periodsDuration()) {\r\n case defaultStep_30_minutes :\r\n calculate = this._periodsDuration() - step_15_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n case step_15_minutes :\r\n calculate = this._periodsDuration() - fixed_05_minutes;\r\n newPeriodDuration = +calculate.toFixed(3);\r\n break;\r\n case fixed_10_minutes :\r\n return false;\r\n default:\r\n break;\r\n }\r\n\r\n\r\n if (newPeriodDuration === 0) {\r\n newPeriodDuration = 23.5;\r\n }\r\n\r\n this._periodsDuration(newPeriodDuration);\r\n\r\n this.DelayedUpdate(GLOBALS.PERIOD_DURATION, this._periodsDuration().toString())\r\n }\r\n\r\n DisableBtnDecreasePeriodBtn(): boolean {\r\n let step_10_minutes = 10 / 60, // 10 minutes ÷ 60 minutes = 0.16666666667 hours.\r\n fixed_10_minutes = +step_10_minutes.toFixed(3);\r\n\r\n return this._periodsDuration() === fixed_10_minutes;\r\n }\r\n\r\n OnIncreaseStarting() {\r\n if (this._starting() === '23:00') {\r\n this._starting('00:00');\r\n } else {\r\n this._starting(moment(moment().format(DATE_FORMATS.SHORT_DATE.Format) + \" \" + this._starting()).add(1, 'hours').format(DATE_FORMATS.TIME.Format));\r\n }\r\n this.CalculateDecreasePeriods();\r\n this.DelayedUpdate(GLOBALS.STARTING_TIME, this._starting().toString());\r\n }\r\n\r\n OnDecreaseStarting() {\r\n if (this._starting() === '00:00') {\r\n this._starting('23:00');\r\n } else {\r\n this._starting(moment(moment().format(DATE_FORMATS.SHORT_DATE.Format) + \" \" + this._starting()).subtract(1, 'hours').format(DATE_FORMATS.TIME.Format));\r\n }\r\n\r\n this.DelayedUpdate(GLOBALS.STARTING_TIME, this._starting().toString());\r\n }\r\n\r\n ChangeProvideSubject() {\r\n if (this._numberOfPeriods() > 2)\r\n return;\r\n this._subjectGlobalValue(!this._subjectGlobalValue());\r\n UserVarsManager.Instance.SetSchedulerSubjectToggle(this._controlId, this._subjectGlobalValue());\r\n this.Show();\r\n }\r\n\r\n RoundHalf(num: number): number {\r\n return Math.round(num * 2) / 2;\r\n }\r\n\r\n CalculateDecreasePeriods() {\r\n const periods = this._numberOfPeriods();\r\n const duration = this._periodsDuration();\r\n const start = +this._starting().substr(0, 2);\r\n const end = start + duration * periods;\r\n\r\n let maxPeriods = Math.min(periods, Math.floor((24 - start) / duration));\r\n if(maxPeriods < 1){\r\n maxPeriods = 1;\r\n }\r\n\r\n if (end > 24 && periods > 1) {\r\n\t this._numberOfPeriods(maxPeriods);\r\n }\r\n }\r\n\r\n Show() {\r\n this._ready(false);\r\n\r\n if (this._globalsToUpdate.length > 0) {\r\n GlobalManager.Instance.UpdateUserGlobals(this._globalsToUpdate)\r\n .then(() => this._globalsToUpdate = [])\r\n .fail(() => new Notifier().Warning('Error updating scheduler globals'));\r\n }\r\n\r\n this.BlockUI();\r\n this.LoadData()\r\n .then((schedularResponseModel: ISchedularResponseModel) => this.RenderData(schedularResponseModel))\r\n .fail(error => this.ShowError(error.message))\r\n .always(() => this.UnBlockUI());\r\n }\r\n\r\n private CalculatePeriodDuration(numberOfPeriods: number) {\r\n let periodDuration = 8 / numberOfPeriods;\r\n\r\n if (periodDuration < 0.5) {\r\n periodDuration = 0.5;\r\n }\r\n\r\n return Math.round(periodDuration * 2) / 2;\r\n }\r\n\r\n private InitNumberOfPeriods() {\r\n let globalValue = Math.round(+GlobalManager.Instance.GetGlobal(GLOBALS.NUMBER_OF_PERIODS));\r\n\r\n if (globalValue <= 0) {\r\n globalValue = 1;\r\n }\r\n\r\n if (globalValue > 48) {\r\n globalValue = 48;\r\n }\r\n\r\n this._numberOfPeriods = ko.observable(globalValue);\r\n this.CalculateDecreasePeriods();\r\n };\r\n\r\n private InitPeriodDuration() {\r\n let globalValue = Math.round(+GlobalManager.Instance.GetGlobal(GLOBALS.PERIOD_DURATION));\r\n\r\n if (globalValue <= 0) {\r\n globalValue = 0.5;\r\n }\r\n\r\n if (globalValue > 23.5) {\r\n globalValue = 23.5;\r\n }\r\n\r\n this._periodsDuration = ko.observable(globalValue);\r\n }\r\n\r\n private IsGlobalValid(): boolean {\r\n this._notValidGlobals([]);\r\n let isValid = true;\r\n if (isNaN(this._numberOfPeriods()) || !this.IsInteger(this._numberOfPeriods()) || this._numberOfPeriods() <= 0) {\r\n this._notValidGlobals.push(GLOBALS.NUMBER_OF_PERIODS);\r\n isValid = false;\r\n }\r\n if (isNaN(this._periodsDuration()) || !this.IsDecimal(this._periodsDuration()) || this._periodsDuration() <= 0) {\r\n this._notValidGlobals.push(GLOBALS.PERIOD_DURATION);\r\n isValid = false;\r\n }\r\n\r\n if (!moment(this._starting(), DATE_FORMATS.TIME.Format).isValid()) {\r\n this._notValidGlobals.push(GLOBALS.STARTING_TIME);\r\n isValid = false;\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n private AddGlobalToUpdate(name: string, value: string) {\r\n let globalToUpdate = _.find(this._globalsToUpdate, global => global.Name === name);\r\n\r\n if (globalToUpdate) {\r\n globalToUpdate.Value = value;\r\n } else {\r\n globalToUpdate = new GlobalModel();\r\n\r\n globalToUpdate.Name = name;\r\n globalToUpdate.Value = value;\r\n\r\n this._globalsToUpdate.push(globalToUpdate);\r\n }\r\n }\r\n\r\n private IsInteger(num: number) {\r\n return (num ^ 0) === num;\r\n }\r\n\r\n private IsDecimal(num: number) {\r\n return num % 1 != 0 || this.IsInteger(num);\r\n }\r\n\r\n private LoadData(): P.Promise<ISchedularResponseModel> {\r\n let params: ISchedulerRequestModel = {\r\n Ending: this._endDate.format(),\r\n Starting: this._startDate.format(),\r\n ScreenSubjectEntityId: this._settings.ScreenSubjectEntityId,\r\n ScreenSubjectRecordId: this._settings.ScreenSubjectRecordId,\r\n ProvideSubjects: this._subjectGlobalValue()\r\n };\r\n return SchedulerStore.GetScheduler(params, false);\r\n }\r\n\r\n UpdateRow(row: KnockoutObservableArray<ColumnButtonsEditor>, isFreeTime: boolean = false, recountAvailable: boolean = false) {\r\n const newRow = this.GenerateRow();\r\n\r\n const anyResourceSelected = _.any(this._groupEditors(), (groupEditor: GroupEditor) => groupEditor._selectedCount() > 0);\r\n if (!anyResourceSelected) {\r\n row(newRow);\r\n return;\r\n }\r\n\r\n const freeCapacity: { columnEditorIndex: number, cellEditorIndex: number, available: boolean }[] = [];\r\n\r\n let selectedRows: Array<{ id: number, rows: any }> = [];\r\n\r\n if (recountAvailable) {\r\n this._rePlanningData.LinkedSubGroups = [];\r\n }\r\n\r\n _.forEach(this._groupEditors(), (groupEditor) => {\r\n if (groupEditor._sortOrder() < 0 && groupEditor._isSelected() || isFreeTime) {\r\n _.forEach(groupEditor._subGroupEditors, (subGroupEditor) => {\r\n if (subGroupEditor._isSelected()) {\r\n\r\n const selectedRow = {\r\n id: subGroupEditor._columnFirst._id,\r\n rows: {}\r\n };\r\n\r\n _.forEach(subGroupEditor._columnsEditors, (columnEditor, columnEditorIter) => {\r\n _.forEach(columnEditor._cellsEditors, (cellEditor, cellEditorIter, arr) => {\r\n recountAvailable && cellEditor.IsAvailableForReplan();\r\n\r\n if (!selectedRow.rows[columnEditorIter]) {\r\n selectedRow.rows[columnEditorIter] = {};\r\n }\r\n selectedRow.rows[columnEditorIter][cellEditorIter] = cellEditor._isAvailableForReplan();\r\n\r\n // if group is closed and subGroup is selected\r\n let freeCapacityCell = newRow[columnEditorIter]._cellsEditors[cellEditorIter];\r\n if (cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count) {\r\n let linkedModel: ILinkedModel = {\r\n GroupEntityId: subGroupEditor._columnFirst._entityId,\r\n ResourceId: subGroupEditor._columnFirst._id,\r\n Name: subGroupEditor._columnFirst._name,\r\n TypeId: subGroupEditor._columnFirst._recordTypeId,\r\n TypeName: subGroupEditor._columnFirst._recordTypeName\r\n };\r\n\r\n freeCapacityCell._linkedSubGroups.push(linkedModel);\r\n if (this._rePlanningData) {\r\n this._rePlanningData.LinkedSubGroups.push(linkedModel);\r\n }\r\n }\r\n\r\n //make freecapacity button available if subgroupCell available\r\n let freeCapacitySpecs = freeCapacity.find(fc => fc.columnEditorIndex === columnEditorIter && fc.cellEditorIndex === cellEditorIter);\r\n\r\n if (isFreeTime) {\r\n if (!freeCapacitySpecs) {\r\n freeCapacitySpecs = {\r\n columnEditorIndex: columnEditorIter,\r\n cellEditorIndex: cellEditorIter,\r\n available: cellEditor._isAvailable && !cellEditor._isFreeDay && !cellEditor._count\r\n };\r\n freeCapacity.push(freeCapacitySpecs);\r\n } else {\r\n freeCapacitySpecs.available = freeCapacitySpecs.available && !cellEditor._isFreeDay && cellEditor._isAvailable && !cellEditor._count;\r\n }\r\n } else {\r\n if (!freeCapacitySpecs) {\r\n freeCapacitySpecs = {\r\n columnEditorIndex: columnEditorIter,\r\n cellEditorIndex: cellEditorIter,\r\n available: cellEditor._isAvailable || !cellEditor._isFreeDay && !cellEditor._count\r\n };\r\n freeCapacity.push(freeCapacitySpecs);\r\n } else {\r\n freeCapacitySpecs.available = freeCapacitySpecs.available || !cellEditor._isFreeDay && cellEditor._isAvailable && !cellEditor._count;\r\n }\r\n }\r\n });\r\n });\r\n\r\n selectedRows.push(selectedRow);\r\n } else {\r\n _.forEach(subGroupEditor._columnsEditors, (columnEditor, columnEditorIter) => {\r\n _.forEach(columnEditor._cellsEditors, (cellEditor, cellEditorIter, arr) => {\r\n cellEditor._isAvailableForReplan(false);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n if (recountAvailable && this._isRePlanMode) {\r\n const uniqSelectedRows = _.uniq(selectedRows, (row) => row.id);\r\n\r\n if (uniqSelectedRows.length > 1) {\r\n let availableModel = selectedRows[0].rows;\r\n for (let i = 1; i < uniqSelectedRows.length; i++) {\r\n _.forEach(uniqSelectedRows[i].rows, (column: Array<boolean>, columnIter) => {\r\n _.forEach(column, (cell, cellIter) => {\r\n availableModel[columnIter][cellIter] = availableModel[columnIter][cellIter] && cell;\r\n });\r\n });\r\n }\r\n\r\n const agenda = {};\r\n\r\n _.forEach(this._groupEditors(), (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n if (!agenda[columnIter]) {\r\n agenda[columnIter] = {};\r\n }\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n if (!agenda[columnIter][cellIter]) {\r\n agenda[columnIter][cellIter] = [];\r\n }\r\n cell._isAvailableForReplan(availableModel[columnIter][cellIter]);\r\n\r\n if (availableModel[columnIter][cellIter]) {\r\n if (subGroup._agenda.length) {\r\n _.forEach(subGroup._agenda, (item) => {\r\n const start = moment(FormatConverter.CorrectTimezone(item.Starting));\r\n const end = moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)));\r\n\r\n const periodStart = moment(cell._period.Start);\r\n const periodEnd = periodStart.clone().add(cell._period.Duration, 'h');\r\n\r\n if ((start < periodEnd) && (end > periodStart)) {\r\n agenda[columnIter][cellIter].push({\r\n id: item.Id,\r\n start: moment(FormatConverter.CorrectTimezone(item.Starting)),\r\n end: moment(start.clone()).add(moment.duration(moment(item.Duration).format(DATE_FORMATS.TIME.Format)))\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (agenda[columnIter][cellIter].length > 1) {\r\n agenda[columnIter][cellIter] = _.uniq(agenda[columnIter][cellIter], (ag: any) => ag.id);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n //recount available periods for cell\r\n this._viewModel.AvailablePeriods = SchedulerMappingProfile.AvailablePeriodsForReplanning(agenda, this._viewModel.HeaderColumns, this._rePlanningData);\r\n\r\n _.forEach(this._groupEditors(), (group) => {\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n if (subGroup._isSelected()) {\r\n _.forEach(subGroup._columnsEditors, (column, columnIter) => {\r\n _.forEach(column._cellsEditors, (cell, cellIter) => {\r\n cell._availableForReplanRanges = _.map(this._viewModel.AvailablePeriods[columnIter][cellIter], (range) => {\r\n return {\r\n Start: range.a,\r\n End: range.b,\r\n DisplayValue: `${range.a.format(DATE_FORMATS.TIME.Format)} - ${range.b.format(DATE_FORMATS.TIME.Format)}`\r\n }\r\n });\r\n })\r\n })\r\n }\r\n });\r\n });\r\n //recount available periods for cell\r\n }\r\n this._rePlanningData.LinkedSubGroups = _.uniq(this._rePlanningData.LinkedSubGroups, (record) => record.ResourceId && record.Name);\r\n }\r\n\r\n if (freeCapacity && _.any(this._groupEditors(), ge => ge._sortOrder() < 0)) {\r\n const collapsedGroups = this._groupEditors()\r\n .filter(ge => ge._sortOrder() < 0)\r\n .map(ge => ge._sortOrder());\r\n\r\n this._lastCollapsed(collapsedGroups.length ? _.max(collapsedGroups) : 0);\r\n }\r\n\r\n freeCapacity.forEach(freeCapacitySpecs => {\r\n const freeCapacityCell = newRow[freeCapacitySpecs.columnEditorIndex]._cellsEditors[freeCapacitySpecs.cellEditorIndex];\r\n freeCapacityCell._isAvailable(freeCapacitySpecs.available);\r\n });\r\n\r\n row(newRow);\r\n }\r\n\r\n private GenerateRow() {\r\n let row: Array<ColumnButtonsEditor> = [];\r\n if (this._groupEditors()[0]) {\r\n _.forEach(this._groupEditors()[0]._columnsEditors, (col, i) => {\r\n row.push(new ColumnButtonsEditor());\r\n _.forEach(col._cellsEditors, (cell, j) => {\r\n let period = this._viewModel.HeaderColumns[i].Periods[j];\r\n row[i]._cellsEditors.push(new ButtonCellEditor(false, period, !this._viewModel.CreatingData));\r\n });\r\n });\r\n }\r\n return row;\r\n }\r\n\r\n private ChangeSameSubgroups(subgroup) {\r\n _.forEach(this._groupEditors(), (group) => {\r\n _.forEach(group._subGroupEditors, (item) => {\r\n if (item._columnFirst._id === subgroup._columnFirst._id && item._columnFirst._type === subgroup._columnFirst._type) {\r\n item._isSelected(subgroup._isSelected());\r\n }\r\n });\r\n if (group.GetSelectedCount()) {\r\n group._isSelected(true);\r\n } else {\r\n group._isSelected(false);\r\n }\r\n })\r\n }\r\n\r\n private InitGroupEditors(viewModel: SchedulerViewModel) {\r\n viewModel.Groups.sort(this.SortGroups);\r\n this.UpdateRow(this._commonFreeTime, true);\r\n _.forEach(viewModel.Groups, (groupEditor: GroupEditor) => {\r\n groupEditor._sortOrder.subscribe(() => {\r\n this.UpdateRow(this._freeCapacity);\r\n this._groupEditors.sort(this.SortGroups);\r\n\r\n });\r\n });\r\n\r\n this._groupEditors(viewModel.Groups);\r\n }\r\n\r\n OnGroupClick(group: GroupEditor) {\r\n group.ToggleSelection();\r\n _.forEach(group._subGroupEditors, (subGroup) => {\r\n this.ChangeSameSubgroups(subGroup);\r\n });\r\n\r\n this.UpdateRow(this._freeCapacity);\r\n this.UpdateRow(this._commonFreeTime, true, !!this._rePlanningData);\r\n group._selectedCount(group.GetSelectedCount());\r\n return true;\r\n }\r\n\r\n OnSubGroupClick(subGroup: SubGroupEditor) {\r\n const group = subGroup.GetGroup();\r\n group.UpdateSelectedCount();\r\n if (group.GetSelectedCount()) {\r\n group._isSelected(true);\r\n } else {\r\n group._isSelected(false);\r\n }\r\n this.ChangeSameSubgroups(subGroup);\r\n this.UpdateRow(this._freeCapacity);\r\n this.UpdateRow(this._commonFreeTime, true, !!this._rePlanningData);\r\n return true;\r\n }\r\n\r\n OnCreateEvent(data: ButtonCellEditor) {\r\n if (!data.IsDisabled) {\r\n data._linkedSubGroups = _.uniq(data._linkedSubGroups);\r\n this.Trigger(SCHEDULER_EVENTS.CREATE_SCREEN, data);\r\n }\r\n }\r\n\r\n OnReplan(start: moment.Moment) {\r\n this.Trigger(SCHEDULER_EVENTS.REPLAN_APPOINTMENT, {Start: start});\r\n }\r\n\r\n OnShowDefaultScreen(data, entityId: number, event, typeId?: number) {\r\n this.Trigger(SCHEDULER_EVENTS.OPEN_DEFAULT_SCREEN, {\r\n Id: data.Id,\r\n Event: event,\r\n EntityId: entityId,\r\n TypeId: typeId\r\n });\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private ReturnToAgenda() {\r\n this.Trigger(SCHEDULER_EVENTS.RETURN_TO_AGENDA);\r\n }\r\n\r\n private SwitchToDefaultMode() {\r\n this.Trigger(SCHEDULER_EVENTS.SWITCH_TO_DEFAULT);\r\n }\r\n\r\n GetBottomColumnWidthClass(): string {\r\n let periodsLength = this._viewModel && this._viewModel.GetPeriods().length;\r\n return 'bottom__subcolumn--width-' + periodsLength;\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ISchedulerParams} from \"./ISchedulerParams\";\r\nimport {SchedulerView} from \"Core/Components/Controls/Scheduler/Views/SchedulerView\";\r\n\r\nimport SchedulerTemplate from \"Core/Components/Controls/Scheduler/Templates/Scheduler.html\";\r\nimport AgendaConnection from \"Core/Components/Controls/Scheduler/Templates/AgendaConnection.html\";\r\nimport ReadingData from \"Core/Components/Controls/Scheduler/Templates/ReadingData.html\";\r\nimport UsersNotDefined from \"Core/Components/Controls/Scheduler/Templates/UsersNotDefined.html\";\r\nimport GlobalNotValid from \"Core/Components/Controls/Scheduler/Templates/GlobalNotValid.html\";\r\n\r\nexport class Scheduler extends Event {\r\n _entityId: number;\r\n _screenSubjectEntityId: number;\r\n _screenSubjectRecordId: number | null;\r\n _view: KnockoutObservable<SchedulerView>;\r\n\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _currentDate: KnockoutObservable<Date>;\r\n private _viewModel: SchedulerView;\r\n private _labels = LABELS;\r\n\r\n constructor(params: ISchedulerParams) {\r\n super();\r\n\r\n this._entityId = params.EntityId;\r\n this._screenSubjectEntityId = params.ScreenSubjectEntityId;\r\n this._screenSubjectRecordId = params.ScreenSubjectRecordId;\r\n this._isReady = ko.observable(false);\r\n this._currentDate = ko.observable(null);\r\n\r\n this._viewModel = new SchedulerView({\r\n EntityId: this._entityId,\r\n ScreenSubjectEntityId: this._screenSubjectEntityId,\r\n ScreenSubjectRecordId: this._screenSubjectRecordId,\r\n RePlanningData: params.RePlanningData,\r\n ControlId: params.ControlId\r\n });\r\n this._view = ko.observable(this._viewModel);\r\n }\r\n\r\n get SetupValid() {\r\n const view = this._view();\r\n return view.AgendaConnection() && view.ReadingData() && view.GlobalValid();\r\n }\r\n\r\n GetScreenSubjectRecordName() {\r\n return this._viewModel.GetScreenSubjectRecordName();\r\n }\r\n\r\n UpdateSchedulerView() {\r\n this._view().Show();\r\n }\r\n\r\n Render(node: HTMLElement) {\r\n ko.cleanNode(node);\r\n ko.applyBindings(this, node);\r\n }\r\n\r\n GetSchedulerTemplate() {\r\n return SchedulerTemplate;\r\n }\r\n\r\n AfterRender() {\r\n this._isReady(true);\r\n }\r\n\r\n GetInvalidSetupTemplate() {\r\n const view = this._view();\r\n\r\n if (!view.AgendaConnection()) {\r\n return AgendaConnection;\r\n }\r\n\r\n if (!view.ReadingData()) {\r\n return ReadingData;\r\n }\r\n\r\n if (!view.GlobalValid()) {\r\n return GlobalNotValid;\r\n }\r\n }\r\n\r\n GetAgendaConnectionTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/AgendaConnection\";\r\n }\r\n\r\n GetReadingDataTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/ReadingData\";\r\n }\r\n\r\n GetNotDefinedUsersTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/UsersNotDefined\";\r\n }\r\n\r\n GetGlobalNotValidTemplate() {\r\n return \"Core/Components/Controls/Scheduler/Templates/GlobalNotValid\";\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"scheduler scheduler--error text-center\\\"> <!--ko if: _viewModel._notValidGlobals().length === 1 --> Value of the <!-- ko text: _viewModel._notValidGlobals()[0] --><!--/ko --> global variable is not valid. <!--/ko --> <!--ko if: _viewModel._notValidGlobals().length > 1 --> Values of the following global variables are not valid: <!-- ko fastForEach: _viewModel._notValidGlobals --> <!-- ko text: $data --><!--/ko --><!-- ko if: ($index() === ($parent._viewModel._notValidGlobals().length - 1)) -->.<!--/ko --><!-- ko ifnot: ($index() === ($parent._viewModel._notValidGlobals().length - 1)) -->,<!--/ko --> <!--/ko --> <!--/ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"scheduler scheduler--error text-center\\\" data-bind=\\\"text: _labels.AGENDA_IS_NOT_AVAILABLE\\\"> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"scheduler scheduler--error text-center\\\" data-bind=\\\"text: _labels.AGENDA_IS_NOT_CONNECTED\\\"> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"u-min-h-40\\\"> <!--ko with: _component--> <!--ko if: SetupValid--> <!--ko template: {html: GetSchedulerTemplate, afterRender: _view().AfterRender.bind(_view())}--><!--/ko--> <!--/ko--> <!--ko ifnot: SetupValid--> <!--ko template: {html: $data.GetInvalidSetupTemplate.bind($data)}--><!--/ko--> <!--/ko--> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\nimport * as moment from 'moment';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IControlParam, IScreen} from \"Core/Screens/IScreen\";\r\nimport {CONTROL_TYPES, FIELD_TYPES, TABLE_TYPES, DEFAULT_ICONS} from \"Core/Constant\";\r\n\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"../ComplexControl/Models/RequiredFieldModel\";\r\nimport {ButtonCellEditor, ILinkedModel} from \"Core/Components/Controls/Scheduler/Utils/ButtonCellEditor\";\r\n\r\nimport {LinkList} from \"../LinkList/LinkList\";\r\nimport {Agenda} from \"../Agenda/Agenda\";\r\n\r\nimport {Scheduler as SchedulerComponent} from \"Core/Components/Controls/Scheduler/Scheduler\";\r\nimport {NewRelationModel} from \"../LinkList/Models/NewRelationModel\";\r\nimport {EntityRelationsViewModel} from \"../LinkList/Models/LinkListRelationsViewModel\";\r\n\r\nimport ViewTemplate from \"Core/Controls/Scheduler/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Scheduler/Templates/ToolBar.html\";\r\nimport {IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {SECURITY_LEVELS} from \"Core/Constants/SecurityLevels\";\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nimport {TabPage} from \"../TabPage/TabPage\";\r\nimport {Tab} from \"../Tab/Tab\";\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {UserVarsManager} from \"../../UserVarsManager/UserVarsManager\";\r\nimport SchedulerConfigJson from \"Core/Controls/Scheduler/Config/scheduler-config.json\"\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {PROPERTIES, SCHEDULER_EVENTS} from \"./Constants\";\r\nimport { IRePlanningData } from \"./Interfaces\";\r\n\r\n\r\nko.templates[\"Core/Controls/Scheduler/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Scheduler/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/Scheduler/Templates/Design\"] = ComplexControl.designTemplate;\r\n\r\nexport class Scheduler extends ComplexControl {\r\n private _component: KnockoutObservable<SchedulerComponent>;\r\n private _isLinkListLoaded: boolean;\r\n private _isRePlanningMode: boolean;\r\n private screenSubjectEntityId: number;\r\n private screenSubjectRecordId: number;\r\n private _rePlanningData: IRePlanningData;\r\n private _isFromAgenda: boolean;\r\n private isDestroyed = true;\r\n private _isRefreshScreen: boolean;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, SchedulerConfigJson);\r\n \r\n this._isRePlanningMode = false;\r\n this._isFromAgenda = false;\r\n\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Scheduler));\r\n this._isLinkListLoaded = false;\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('STARTING', FIELD_TYPES.DateTime, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('DURATION', FIELD_TYPES.TimeSpan, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n this.ApplyProperties();\r\n\r\n this._component = ko.observable(null);\r\n }\r\n\r\n ApplyProperties(){\r\n this._isRefreshScreen = this.GeneralProperties.GetPropertyValue(PROPERTIES.REFRESH_SCREEN);\r\n }\r\n\r\n LoadData(rePlanningData?: IRePlanningData) {\r\n if (rePlanningData) {\r\n this._rePlanningData = rePlanningData;\r\n this._isRePlanningMode = true;\r\n } else if (!this._isFromAgenda) {\r\n this._rePlanningData = null;\r\n this._isRePlanningMode = false;\r\n }\r\n const screenType = this.GetForm().GetScreen().GetType();\r\n const filterBySubject = ScreenTypes[screenType] === ScreenTypes.ConsultScreen || ScreenTypes[screenType] === ScreenTypes.EditScreen;\r\n let screenSubjectEntityId = null,\r\n screenSubjectRecordId = null;\r\n\r\n if (filterBySubject) {\r\n screenSubjectEntityId = this.screenSubjectEntityId;\r\n screenSubjectRecordId = this.screenSubjectRecordId;\r\n }\r\n\r\n this._component(new SchedulerComponent({\r\n EntityId: this._model().EntityId,\r\n ScreenSubjectEntityId: screenSubjectEntityId,\r\n ScreenSubjectRecordId: screenSubjectRecordId,\r\n RePlanningData: this._rePlanningData,\r\n ControlId: this.GetControlId()\r\n }));\r\n this.BindEvents();\r\n this._isFromAgenda = false;\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n this.screenSubjectEntityId = value.SubjectEntityId;\r\n this.screenSubjectRecordId = value.SubjectRecordId;\r\n }\r\n\r\n SetRePlanMode(params: IRePlanningData) {\r\n this._isFromAgenda = true;\r\n this._isRePlanningMode = true;\r\n this._rePlanningData = params;\r\n this.LoadData(params);\r\n }\r\n\r\n private BindEvents() {\r\n this._component()._view().On(SCHEDULER_EVENTS.CREATE_SCREEN, this, eventArgs => this.ShowEditScreen(eventArgs.data));\r\n this._component()._view().On(SCHEDULER_EVENTS.OPEN_DEFAULT_SCREEN, this, eventArgs => this.ShowDefaultScreen(eventArgs.data.Id, eventArgs.data.Event, eventArgs.data.EntityId, eventArgs.data.TypeId));\r\n this._component()._view().On(SCHEDULER_EVENTS.RETURN_TO_AGENDA, this, eventArgs => this.ReturnToAgenda());\r\n this._component()._view().On(SCHEDULER_EVENTS.SWITCH_TO_DEFAULT, this, eventArgs => this.SwitchToDefaultMode());\r\n this._component()._view().On(SCHEDULER_EVENTS.REPLAN_APPOINTMENT, this, eventArgs => this.ReplanAppointment(eventArgs.data.Start));\r\n this._component()._view().On(SCHEDULER_EVENTS.SET_DATA, this, eventArgs => this.OnSetData(eventArgs.data.Date));\r\n }\r\n\r\n private SwitchToDefaultMode() {\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n this.LoadData();\r\n }\r\n\r\n private OnSetData(date: string) {\r\n const screen = this._form && this._form.GetScreen();\r\n const agendas = screen.GetControlsByType(CONTROL_TYPES.Agenda);\r\n\r\n _.each(agendas, agenda => {\r\n UserVarsManager.Instance.SetAgendaDate(agenda.GetControlId(), date);\r\n });\r\n }\r\n\r\n private async ReplanAppointment(start: moment.Moment) {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n LockManager.Instance.TryLock(this.FieldModel.EntityId, this._rePlanningData.Id)\r\n .then(() => {\r\n screenManager.GetEditScreen({\r\n EntityId: this._component()._entityId,\r\n RecordId: this._rePlanningData.Id,\r\n TableTypeId: this._rePlanningData.TableTypeId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n const recordId = this._rePlanningData.Id;\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, recordId));\r\n\r\n screen.On('RECORD_SAVED', this, () => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n this.LoadData();\r\n });\r\n\r\n this.SetStartingValue(screen, start.format());\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(this.FieldModel.EntityId, this._rePlanningData.Id);\r\n let notifier = new Notifier();\r\n notifier.Warning(err.message);\r\n });\r\n });\r\n }\r\n\r\n private ReturnToAgenda() {\r\n if (this._rePlanningData.IsInTab) {\r\n const tabPage = this._rePlanningData.Agenda.GetParentControl() as TabPage;\r\n (tabPage.GetParentControl() as Tab).SetActiveTab(this._rePlanningData.TabIndex, {\r\n controlId: this._rePlanningData.Agenda.GetModel().Id,\r\n params: this._rePlanningData,\r\n action: 'ReturnFromScheduler'\r\n });\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n } else {\r\n let isLoaded = false;\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(this._rePlanningData.Agenda.GetWrapper()).offset().top - 60\r\n }, 1000, () => {\r\n if (!isLoaded) {\r\n this._rePlanningData.Agenda.LoadData();\r\n this.SwitchToDefaultMode();\r\n isLoaded = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n private ShowDefaultScreen(id: number, evt, entityId?: number, typeId?: number) {\r\n const params = {\r\n EntityId: entityId ? entityId : this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: id,\r\n IsOpenInModal: evt.ctrlKey ? evt.ctrlKey : this._form.GetScreen().IsInModal(),\r\n ShowInModal: evt.ctrlKey,\r\n Owner: this.GetForm().GetScreen(),\r\n TypeId: typeId\r\n };\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, params);\r\n }\r\n\r\n private get AgendaRequestData() {\r\n return {\r\n EntityId: this._component()._entityId,\r\n TableTypeName: 'Appointment'\r\n }\r\n }\r\n\r\n private LinkResources(screen: IScreen, resources: Array<ILinkedModel>) {\r\n let currentUser = UserManager.Instance.CurrentUser;\r\n let linkList = screen.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n\r\n let screenSubjectRecordName = this._component().GetScreenSubjectRecordName();\r\n if (this._component()._screenSubjectEntityId && this._component()._screenSubjectRecordId && screenSubjectRecordName) {\r\n resources.push({\r\n GroupEntityId: this._component()._screenSubjectEntityId,\r\n ResourceId: this._component()._screenSubjectRecordId,\r\n Name: screenSubjectRecordName,\r\n TypeId: null,\r\n TypeName: null\r\n });\r\n }\r\n\r\n if (linkList) {\r\n _.forEach(resources, (user) => {\r\n let model: EntityRelationsViewModel;\r\n\r\n if (!user.GroupEntityId) {\r\n model = linkList.DataModel().UserRelation();\r\n } else {\r\n model = _.find(linkList.DataModel().Entities(), (entity) => {\r\n return user.GroupEntityId === entity.EntityId;\r\n });\r\n }\r\n\r\n if (model) {\r\n const record = _.find(model.Records(), (record) => {\r\n return record.Id === user.ResourceId;\r\n });\r\n\r\n if (!record) {\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = user.Name;\r\n newRelation.Id = user.ResourceId;\r\n newRelation.TypeName = user.TypeName;\r\n newRelation.IsMain = false;\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n linkList.AddRecord(user.ResourceId, model, newRelation);\r\n }\r\n }\r\n });\r\n\r\n const currentUserIsResource = _.any(resources, resource =>\r\n resource.GroupEntityId === null && resource.ResourceId === currentUser.Id\r\n );\r\n\r\n if (!currentUserIsResource) {\r\n linkList.EnablePlanner();\r\n }\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0].parentElement, () => {\r\n this._isRePlanningMode = false;\r\n this._rePlanningData = null;\r\n this._component(null);\r\n this.isDestroyed = true;\r\n });\r\n if (this.isDestroyed) {\r\n this.isDestroyed = false;\r\n this.LoadData();\r\n }\r\n }\r\n\r\n private SetStartingValue(screen: IScreen, start: string) {\r\n const startingControl = screen.GetControlByFieldName('STARTING', CONTROL_TYPES.DateTime);\r\n let startingModel = new ControlDataModel();\r\n startingModel.Value = moment(start).clone().format();\r\n startingControl.SetDefaultValue({\r\n SubjectRecordId: this._component()._screenSubjectRecordId,\r\n SubjectEntityId: this._component()._screenSubjectEntityId,\r\n Data: startingModel,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n });\r\n }\r\n\r\n private SetDurationValue(screen: IScreen, duration: number) {\r\n const durationControl = screen.GetControlByFieldName('DURATION', CONTROL_TYPES.DateTime);\r\n let durationModel = new ControlDataModel();\r\n durationModel.Value = Agenda.ConvertDefaultAppointmentToDateTime(duration * 60);\r\n durationControl.SetDefaultValue({\r\n SubjectRecordId: this._component()._screenSubjectRecordId,\r\n SubjectEntityId: this._component()._screenSubjectEntityId,\r\n Data: durationModel,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n });\r\n }\r\n\r\n private SetEditScreenValues(screen: IScreen, data: ButtonCellEditor) {\r\n this.SetStartingValue(screen, data._period.Start);\r\n this.SetDurationValue(screen, data._period.Duration);\r\n }\r\n\r\n private async ShowEditScreen(data: ButtonCellEditor) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen(this.AgendaRequestData)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.ShowInModal();\r\n this.SetEditScreenValues(screen, data);\r\n\r\n screen.On('LINK_LIST_DATA_LOADED', this, () => {\r\n this.LinkResources(screen, data._linkedSubGroups);\r\n });\r\n\r\n screen.On('RECORD_SAVED', this, () => {\r\n const notifier = new Notifier($(this._el));\r\n if (this._isRefreshScreen){\r\n this._form && this._form.GetScreen().Refresh();\r\n } else {\r\n this._component().UpdateSchedulerView();\r\n }\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n });\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"scheduler-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calendar-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {ColorSelector as Component} from 'Core/Components/ColorSelector/ColorSelector';\r\n\r\nimport ToolBarTemplate from \"Core/Controls/ColorSelector/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ColorSelector/Templates/Design.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ColorSelector/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/ColorSelector/Templates/View.html\";\r\nimport EditTemplate from \"Core/Controls/ColorSelector/Templates/Edit.html\";\r\nimport {RenderModes} from \"../../Constant\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {ColorDescription} from \"../../Components/ColorSelector/ColorDescription\";\r\n\r\nko.templates[\"Core/Controls/ColorSelector/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ColorSelector/Templates/Edit\"] = EditTemplate;\r\n\r\nexport class ColorSelector extends BaseControl {\r\n private _colorDescription: KnockoutObservable<ColorDescription>;\r\n\r\n private _component: Component;\r\n private _initialColor: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n this._colorDescription = ko.observable(null);\r\n this._component = new Component({\r\n\t\t\t\tLabel: null,\r\n\t\t\t\tLabelStyle: this.GetLabelStyle()\r\n });\r\n\r\n this.BindComponentEvents();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n GetValue() {\r\n return this._colorDescription() && this._colorDescription().Name;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._initialColor = value.Data.Value;\r\n this._component.SetColor(this._initialColor);\r\n this._colorDescription(this._component.SelectedColorDescription);\r\n\r\n this.BindComponentEvents();\r\n }\r\n\r\n IsDataControl(): boolean {\r\n return true;\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._initialColor !== this._component.SelectedColorName;\r\n }\r\n\r\n Deserialize() {\r\n const field = _.first(this._model().Fields);\r\n if (field) {\r\n if (!this._isReadonly) {\r\n return [`${field.EntityName}.${field.Name}`, this._component.SelectedColorName];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._isRequired && !this._component.SelectedColorName) {\r\n this._isValid(false);\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n\tprivate GetLabelStyle() {\r\n\t\treturn this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor]) &&\r\n\t\t\tthis.Properties && this.Properties.BackgroundColor\r\n\t\t\t? { backgroundColor: this.Properties.BackgroundColor }\r\n\t\t\t: null;\r\n\t}\r\n\r\n private BindComponentEvents() {\r\n this._component\r\n .On('COLOR_SET', this, () => this._colorDescription(this._component.SelectedColorDescription))\r\n .On('COLOR_RESET', this, () => this._colorDescription(this._component.SelectedColorDescription))\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-paint-brush\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, css: {'with-icon': _isIconVisible}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"color-selector-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <!-- ko if: _colorDescription() --> <input data-bind=\\\"value: _colorDescription().Name,\\r\\n\\t\\t\\t\\t\\t\\t style: {backgroundColor: _colorDescription().Color}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\"/> <!-- /ko --> <!-- ko ifnot: _colorDescription() --> <input autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control placeholder\\\"/> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"colorselector-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"color-selector-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _colorDescription() --> <input data-bind=\\\"value: _colorDescription().Name,\\r\\n\\t\\t\\t\\t\\t\\t style: {backgroundColor: _colorDescription().Color},\\r\\n css: {'with-icon': _isIconVisible}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control color-selector\\\" disabled=\\\"disabled\\\"/> <!-- /ko --> <!-- ko ifnot: _colorDescription() --> <input data-bind=\\\"attr: {value: Label}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control placeholder\\\" disabled=\\\"disabled\\\"/> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"text-control\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\"> <div data-control-type=\\\"colorselector-control\\\" class=\\\"EditScreenView form-standart-control clearfix label-input\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\"> <!-- ko with: _component --> <label data-bind=\\\"style: $data._options.LabelStyle, text: $parent.Label, tooltip: $parent.DescriptionToolTip\\\"></label> <!-- ko template: {html: $data.GetTemplate.bind($data)} --> <!-- /ko --> <!-- /ko --> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"></i> </div> </div>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport 'Core/Controls/ButtonGoogleMaps/Templates/Edit.html';\r\nimport ViewTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonGoogleMaps/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/View\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonGoogleMaps/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonGoogleMaps extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"icon-pointer\\\"></i> Google Maps </a>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport 'Core/Controls/ButtonPrint/Templates/Edit.html';\r\n\r\nimport ViewTemplate from \"Core/Controls/ButtonPrint/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonPrint/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonPrint/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonPrint/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonPrint/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonPrint extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn print-btn transition subFormControl\\\"> <i class=\\\"fa fa-print\\\"></i> Print </a>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\n\r\nimport HelpViewTemplate from \"Core/Controls/ButtonLinkedIn/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/ButtonLinkedIn/Templates/View.html\";\r\nimport ToolbarTemplate from \"Core/Controls/ButtonLinkedIn/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonLinkedIn/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonLinkedIn/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonLinkedIn extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tClick(): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-linkedin\\\" align=\\\"center\\\"></i> Linked In </a>\";\n// Exports\nexport default code;","'use strict';\r\n\r\nimport * as ko from \"knockout\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport 'Core/Controls/ButtonTree/Templates/Edit.html';\r\nimport ViewTemplate from \"Core/Controls/ButtonTree/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonTree/Templates/HelpView.html\";\r\nimport ToolbarTemplate from \"Core/Controls/ButtonTree/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/ButtonTree/Templates/Design.html\";\r\n\r\nko.templates[\"Core/Controls/ButtonTree/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonTree/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonTree/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonTree/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonTree extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} \r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-tree\\\"></i> Tree </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click\\\" class=\\\"btn red ui-icon-cancel subFormControl cancelBtn\\\" tabindex=\\\"-1\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i><span><!-- ko text: _labels.CANCEL --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport { BaseControl } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { SubForm } from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonCancel/Templates/View.html'\r\nimport ToolbarTemplate from 'Core/Controls/ButtonCancel/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonCancel/Templates/Design.html'\r\nimport HelpViewTemplate from \"Core/Controls/ButtonCancel/Templates/HelpView.html\";\r\n\r\nko.templates['Core/Controls/ButtonCancel/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/ButtonCancel/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class ButtonCancel extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tClick(): void {\r\n\r\n\t\tif (!this._help.IsHelpButtonPressed()) {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n screen.Trigger('CANCEL');\r\n screen.Trigger('CLOSE');\r\n }\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl cancelBtn\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn red ui-icon-cancel subFormControl\\\" tabindex=\\\"-1\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, tooltip: {content: SaveBtnText}\\\" tabindex=\\\"-1\\\" class=\\\"btn green subFormControl saveButton\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i><span><!-- ko text: _labels.SAVE --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonSave/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonSave/Templates/HelpView.html'\r\nimport ToolbarTemplate from 'Core/Controls/ButtonSave/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/ButtonSave/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/ButtonSave/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonSave/Templates/Design'] = DesignTemplate;\r\n\r\nexport class ButtonSave extends BaseControl {\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tget SaveBtnText(): any{\r\n\t\treturn this._form.GetScreen().IsEditScreen ? this._labels.CTRL_S_SAVE : null;\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (!this._help.IsHelpButtonPressed()) {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger('SAVE');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn green subFormControl\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green subFormControl saveBtn\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, enableAttr: _enabled, style: _style\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"btn yellow subFormControl securityReset-button\\\"> <i class=\\\"fa fa-lock\\\"></i><span><!-- ko text: _labels.RESET_SECURITY --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as ConfirmationDialogEvents,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport SecurityResetButtonConfig from \"Core/Controls/ButtonSecurityReset/Configs/security-reset-button-config.json\";\r\n\r\nimport HelpViewTemplate from \"Core/Controls/ButtonSecurityReset/Templates/HelpView.html\"\r\nimport ViewTemplate from \"Core/Controls/ButtonSecurityReset/Templates/View.html\"\r\nimport DesignTemplate from \"Core/Controls/ButtonSecurityReset/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/ButtonSecurityReset/Templates/ToolBar.html\"\r\n\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonSecurityReset/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class ButtonSecurityReset extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, SecurityResetButtonConfig);\r\n\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\t\tText: \"Reset security?\",\r\n\t\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\t\tTextConfirm: 'Yes'\r\n\t\t\t\t});\r\n\t\t\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\teventArgs => {\r\n\t\t\t\t\t\tscreen.Trigger('SECURITY_RESET');\r\n\t\t\t\t\t});\r\n\t\t\t\tconfirmationDialog.Show();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n\t\t\tthis._enabled(true);\r\n\t\t}\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn yellow subFormControl\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.RESET_SECURITY --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn yellow subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.RESET_SECURITY --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn yellow subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.RESET_SECURITY --><!-- /ko --> </a> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {FollowUpLifeStatuses} from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {FollowUpOptionModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport DesignTemplate from \"Core/Controls/ButtonFollowUp/Templates/Design.html\"\r\nimport EditTemplate from \"Core/Controls/ButtonFollowUp/Templates/Edit.html\"\r\nimport ViewTemplate from \"Core/Controls/ButtonFollowUp/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/ButtonFollowUp/Templates/HelpView.html\"\r\nimport LifeStatuses from \"Core/Controls/ButtonFollowUp/Templates/LifeStatuses.html\"\r\nimport {FollowUpParentRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel \";\r\nimport {ActionCheckList} from \"../../Components/ActionCheckList/ActionCheckList\";\r\nimport { LifeStatusesGeneralModel } from \"./Models/LifeStatusesGeneralModel\";\r\nimport { LifeStatusSimpleModel } from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\n\r\n\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonFollowUp/Templates/LifeStatuses\"] = LifeStatuses;\r\n\r\nexport class ButtonFollowUp extends BaseControl {\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _checkList: ActionCheckList;\r\n private _lifeStatuses: LifeStatusesModel;\r\n private _choosenLifeStatus: any;\r\n private _currentLifeStatus: any;\r\n private _disableReason: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._disableReason = ko.observable(null);\r\n this._lifeStatuses = null;\r\n this._followUpLifeStatuses = null;\r\n this._choosenLifeStatus = null;\r\n this._currentLifeStatus = null;\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n get IsEnabled() {\r\n return this._enabled();\r\n }\r\n\r\n private Init(): void {\r\n this._followUpRecord = null;\r\n }\r\n\r\n GetRecord(): FollowUpRecordModel {\r\n return this._followUpRecord;\r\n }\r\n\r\n SetRecord(value: FollowUpRecordModel) {\r\n this._followUpRecord = value;\r\n }\r\n\r\n Click() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n } else {\r\n var screen = this._form.GetScreen() as any;\r\n if (screen && (screen.IsConsultScreen || screen.ValidateData())) {\r\n if (this._followUpRecord && this._followUpRecord.LifeStatusId) {\r\n screen.Trigger('FOLLOWUP');\r\n return;\r\n }\r\n\r\n const actionSubject = screen.GetActionSubjectRecord();\r\n FollowUpStore.GetStatuses(actionSubject).then(result => this.ProcessingStatuses(result, screen));\r\n }\r\n }\r\n }\r\n\r\n ProcessingStatuses(result: LifeStatusesGeneralModel, screen: any) {\r\n if (result == null || !result.Child) {\r\n screen.Trigger('FOLLOWUP');\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (result.Child.CurrentLifeStatus === null && result.Child.LifeStatuses.length === 1) {\r\n const firstStatus = result.Child.LifeStatuses[0];\r\n this._followUpRecord.LifeStatusId = firstStatus.Id;\r\n this._followUpRecord.LifeStatusSort = firstStatus.Sort;\r\n this._followUpRecord.LifeStatusName = firstStatus.Name;\r\n this._followUpRecord.LifeStatusNoActionNode = firstStatus.NoActionNode;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n return;\r\n }\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n const showCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0)\r\n && (!result.IsManyActions || result.Child.CurrentLifeStatus.MultipleActions);\r\n\r\n if (!result.IsManyActions && showCheckLists) {\r\n this.ShowCheckLists(result);\r\n return;\r\n }\r\n\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n if (result.IsManyActions && !result.Child.CurrentLifeStatus.MultipleActions) {\r\n result.Child.LifeStatuses = [result.Child.CurrentLifeStatus];\r\n this._followUpLifeStatuses.Caption = LABELS.EXIST_ACTIVE_ACTIONS;\r\n } else if (showCheckLists && result.Child.CurrentLifeStatus.MultipleActions) {\r\n this.ShowCheckLists(result);\r\n return;\r\n }\r\n\r\n const followUpOption = new FollowUpOptionModel();\r\n followUpOption.LifeStatuses = result.Child;\r\n\r\n let followUpParentOption: FollowUpOptionModel;\r\n if (result.Parent) {\r\n followUpParentOption = new FollowUpOptionModel();\r\n followUpParentOption.LifeStatuses = result.Parent;\r\n }\r\n\r\n if (this._lifeStatuses.LifeStatuses.length === 0) {\r\n new Notifier().Warning(NOTIFICATIONS.NEXT_STATUS_NOT_AVAILABLE);\r\n }\r\n\r\n\r\n this._followUpLifeStatuses.Init(followUpOption, followUpParentOption, null);\r\n this.ShowStandardFollowUp(result);\r\n }\r\n\r\n Close() {\r\n if (this._followUpLifeStatuses) {\r\n this._followUpLifeStatuses.Close();\r\n }\r\n\r\n if (this._checkList) {\r\n this._checkList.Close();\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.RecordSpecsModel) {\r\n if (value.RecordSpecsModel.IsNewRecord) {\r\n this._enabled(false);\r\n this._disableReason(LABELS.NEW_RECORD);\r\n return;\r\n }\r\n if (value.RecordSpecsModel.IsDisabled) {\r\n this._enabled(false);\r\n this._disableReason(NOTIFICATIONS.RECORD_DISABLED);\r\n return;\r\n }\r\n }\r\n\r\n var condition = true;\r\n let disableReason = null;\r\n var screen = this._form.GetScreen();\r\n if (screen) {\r\n if (screen.GetActionSubjectRecord()) {\r\n condition = !screen.GetActionSubjectRecord().IsFollowUpDisabled;\r\n disableReason = screen.GetActionSubjectRecord().DisabledReason;\r\n } else if (screen.IsConsultScreen) {\r\n condition = false;\r\n }\r\n }\r\n\r\n if (value.Data && value.Data.Rights) {\r\n condition = condition && value.Data.Rights.IsEditingAllowed && value.Data.Rights.IsRecordSecurityOk && this.IsEditScreenExist;\r\n this._enabled(condition);\r\n this._disableReason(disableReason);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel) {\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n\r\n if (!this._checkList) {\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus\r\n });\r\n this._checkList.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n });\r\n }\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.Show();\r\n }\r\n\r\n private ShowStandardFollowUp(result: LifeStatusesGeneralModel) {\r\n this._followUpLifeStatuses.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n });\r\n\r\n this._followUpLifeStatuses.On('PARENT_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n const parentRecord = new FollowUpParentRecordModel();\r\n parentRecord.ParentActionSubject = result.Parent.ActionSubjectRecord;\r\n parentRecord.CurrentLifeStatus = result.Parent.CurrentLifeStatus;\r\n parentRecord.LifeStatusId = eventArgs.data.LifeStatus.Id;\r\n parentRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort;\r\n parentRecord.LifeStatusName = eventArgs.data.LifeStatus.Name;\r\n parentRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode;\r\n parentRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.FollowUpParentRecord = parentRecord;\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP');\r\n });\r\n\r\n this._followUpLifeStatuses.On('CHILD_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode;\r\n });\r\n\r\n this._followUpLifeStatuses.On('DONE',\r\n this,\r\n () => {\r\n this.GetForm().GetScreen().Trigger('FOLLOWUP_DONE');\r\n });\r\n\r\n this._followUpLifeStatuses.ShowInModal();\r\n }\r\n}","// Module\nvar code = \"<div style=\\\"display:inline-block\\\" data-bind=\\\"tooltip: {content: _disableReason()}\\\"> <button type=\\\"button\\\" data-bind=\\\"click: $data.Click.bind($data), visible: _enabled\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </button> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div style=\\\"display:inline-block\\\" data-bind=\\\"tooltip: {content: _disableReason()}\\\"> <button type=\\\"button\\\" data-bind=\\\"click: $data.Click.bind($data), enableAttr: _enabled\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </button> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn yellow edit-button subFormControl\\\"> <i class=\\\"fa fa-arrow-up\\\"></i><span><!-- ko text: _labels.FOLLOW_UP --><!-- /ko --></span> </a> \";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n QUERY_CONDITION: 'QueryCondition',\r\n SHOW_CONDITION_TOGGLE: 'ShowConditionToggle',\r\n AUTO_SELECT: 'AutoselectIfOneRecord',\r\n BACKGROUND_COLOR: 'BackgroundColor',\r\n COLOR: 'Color'\r\n}\r\n\r\nexport const PROPERTY_GROUPS = {\r\n LABEL: 'Label',\r\n TEXT_INPUT: 'TextInput'\r\n}\r\n\r\nexport const EVENTS = {\r\n DROPDOWN_VALUE_SELECTED: 'DROPDOWN_VALUE_SELECTED',\r\n REFRESH: 'REFRESH',\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport 'knockout-selectize';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam, ISearchScreenParam} from 'Core/Screens/IScreen'\r\nimport {DropdownDataStore, IGetDropdownControlDataRequestModel} from 'Core/Controls/Dropdown/Stores/DropDownDataStore'\r\nimport {DropdownItemModel} from 'Core/Controls/Dropdown/Models/DropdownListModel'\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {ConditionBuilder} from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {EVENTS} from 'Core/Controls/Dropdown/Constants';\r\n\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {IDynamicFieldData, RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\n\r\nimport type {NewRecordScreen} from \"LookupEditor/NewRecord/NewRecordScreen\";\r\nimport {NewRecordModel} from \"LookupEditor/NewRecord/Models/NewRecordModel\";\r\nimport {LookupModel} from \"LookupEditor/Store/Models/LookupModel\";\r\nimport {TablesStore} from \"LookupEditor/Store/TablesStore\";\r\nimport {LookupEditorStore} from \"LookupEditor/Store/LookupEditorStore\";\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\n\r\nimport DropdownConfig from 'Core/Controls/Dropdown/Configs/dropdown-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Dropdown/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Dropdown/Templates/HelpView.html';\r\nimport ToolBarTemplate from 'Core/Controls/Dropdown/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Dropdown/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/Dropdown/Templates/Edit.html';\r\nimport DropdownTemplate from 'Core/Controls/Dropdown/Templates/Dropdown.html';\r\nimport SearchTemplate from 'Core/Controls/Dropdown/Templates/Search.html';\r\nimport {RecordSpecsModel} from \"../../ScreenManager/Models/RecordSpecsModel\";\r\nimport { TableSecurityStore } from '../TableSecurity/Stores/TableSecurityStore';\r\nimport { TABLE_SECURITY_WORDS } from 'Core/Constants/TableSecurityWords';\r\nimport { PROPERTIES, PROPERTY_GROUPS } from './Constants';\r\nimport { IScreenVariable } from 'Core/Screens/BaseScreen';\r\n\r\nko.templates['Core/Controls/Dropdown/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Dropdown'] = DropdownTemplate;\r\nko.templates['Core/Controls/Dropdown/Templates/Search'] = SearchTemplate;\r\n\r\nconst TYPE_FIELD_NAME = 'F_TYPE';\r\n\r\nexport class Dropdown extends BaseControl {\r\n private _value: number;\r\n private _originalValue: number;\r\n private _displayValue: string;\r\n private _subjectRecordId: number;\r\n private _dropdownPlugins: string[];\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _selectedItem: KnockoutObservable<DropdownItemModel>;\r\n private _selectedValueId: KnockoutObservable<number>;\r\n private _selectedValueLabel: KnockoutObservable<string>;\r\n private _initialValueLabel: KnockoutObservable<string>;\r\n private _items: KnockoutObservableArray<DropdownItemModel>;\r\n private _showSearchScreenButton: KnockoutObservable<boolean>;\r\n private _autoSelectIfOneRecord: KnockoutObservable<boolean>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _searchScreen: SearchScreen;\r\n private _totalRecordsCount: number;\r\n private _conditions: QueryConditionGroupModel;\r\n private _searchTerm: string;\r\n private _allowInsert: KnockoutObservable<boolean>;\r\n private _clearAllowed: KnockoutObservable<boolean>;\r\n private _isCustomValueEntered: KnockoutObservable<boolean>;\r\n private _customPlaceholder: KnockoutObservable<string>;\r\n private _showConditionToggle: KnockoutObservable<boolean>;\r\n private _isEnableFilter: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _isDisableDropDown: KnockoutObservable<boolean>;\r\n private _isPreselect: KnockoutObservable<boolean>;\r\n private _label = LABELS;\r\n private _defaultPlaceholder = `${LABELS.SELECT_LABEL}...`;\r\n private _select: HTMLSelectElement;\r\n private _subjectRecordSpecsModel: RecordSpecsModel;\r\n private _newLookupRecordScreen: NewRecordScreen;\r\n private IsAllowInsert: KnockoutComputed<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, DropdownConfig);\r\n\r\n this._value = null;\r\n this._displayValue = null;\r\n this._showSearchScreenButton = ko.observable(false);\r\n this._selectedItem = ko.observable(null);\r\n this._selectedValueId = ko.observable(null);\r\n this._selectedValueLabel = ko.observable(null);\r\n this._initialValueLabel = ko.observable(null);\r\n this._allowInsert = ko.observable(false);\r\n this._clearAllowed = ko.observable(false);\r\n this._isCustomValueEntered = ko.observable(false);\r\n this._customPlaceholder = ko.observable(this._defaultPlaceholder);\r\n this._totalRecordsCount = 0;\r\n this._autoSelectIfOneRecord = ko.observable(false);\r\n this._showConditionToggle = ko.observable(this.FieldModel && this.FieldModel.HasFilter);\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._items = ko.observableArray([]);\r\n var searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n this.Init();\r\n this._conditions = null;\r\n this._searchTerm = '';\r\n this._isEnableFilter = ko.observable(false);\r\n this._isReady = ko.observable(true);\r\n this._isDisableDropDown = ko.observable(false);\r\n this._isPreselect = ko.observable(false);\r\n this._newLookupRecordScreen = null;\r\n\r\n this.ApplyProperties();\r\n this.InitDropdownPlugins();\r\n\r\n this.AddEvent(EVENTS.DROPDOWN_VALUE_SELECTED);\r\n this.AddEvent(EVENTS.REFRESH);\r\n\r\n this.IsAllowInsert = ko.computed(()=>{\r\n if (this._allowInsert()) {\r\n if (this._showConditionToggle()) {\r\n return true;\r\n }\r\n \r\n if (!this._conditions) {\r\n return true;\r\n }\r\n \r\n if (!(this._conditions.Items.length || this._conditions.ConditionGroups.length)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return false;\r\n });\r\n this.CheckCreateRecordAllowance();\r\n }\r\n\r\n GetDropdownTemplateName() {\r\n return 'Core/Controls/Dropdown/Templates/Dropdown';\r\n }\r\n\r\n GetSearchTemplateName() {\r\n return 'Core/Controls/Dropdown/Templates/Search';;\r\n }\r\n\r\n ApplyProperties() {\r\n\r\n let labelBackgroundColor = this.GeneralProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR, PROPERTY_GROUPS.LABEL);\r\n let labelColor = this.GeneralProperties.GetPropertyValue(PROPERTIES.COLOR, PROPERTY_GROUPS.LABEL);\r\n let inputBackgroundColor = this.GeneralProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR, PROPERTY_GROUPS.TEXT_INPUT);\r\n\r\n this._labelStyle({ backgroundColor: labelBackgroundColor, color: labelColor });\r\n this._textInputStyle({ backgroundColor: inputBackgroundColor });\r\n\r\n let condition = this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_CONDITION);\r\n\r\n if(condition){\r\n var jsonObj = JSON.parse(condition);\r\n var conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n this._conditions = conditions;\r\n\r\n this._autoSelectIfOneRecord(this.GeneralProperties.GetPropertyValue(PROPERTIES.AUTO_SELECT));\r\n let showConditionToggle = this.GeneralProperties.GetPropertyValue(PROPERTIES.SHOW_CONDITION_TOGGLE);\r\n\r\n showConditionToggle = this._conditions?.HasAnyConditions && showConditionToggle;\r\n this._showConditionToggle(showConditionToggle);\r\n }\r\n \r\n this.ApplyLinkEditorStyles();\r\n\r\n if(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n }\r\n\r\n set AutoSelectIfOneRecord(value: boolean){\r\n this._autoSelectIfOneRecord (value);\r\n }\r\n\r\n private InitDropdownPlugins() {\r\n if(!this.IsRunTime) return;\r\n this._dropdownPlugins = ['dropdown_direction'];\r\n\r\n if (!this.FieldModel.AllowCustomValue) {\r\n this._dropdownPlugins.push('hidden_textfield');\r\n }\r\n }\r\n\r\n get DefaultFontWeight(){\r\n return FONT_STYLES.NORMAL;\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.IsLinkEditor || !this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = this.DefaultFontWeight;\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n });\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n private Init(): void {\r\n if (this.IsRunTime && this.Screen) {\r\n this.Screen.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n var screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this._conditions);\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n if (screenData.Field.FieldTypeName === FIELD_TYPES.Text) {\r\n this._searchTerm = screenData.Value;\r\n }\r\n this.LoadData(); \r\n }\r\n\r\n if (screenData && this.FieldModel.FilterByField != 0 && this.HasDynamicField(screenData.Field.Id)) {\r\n this.LoadData();\r\n }\r\n\r\n if (screenData && this.FieldModel.FilledById != 0 && this.HasDynamicField(screenData.Field.Id)) {\r\n this.UpdateDependsOnValue();\r\n }\r\n });\r\n }\r\n\r\n this.InitChangeEvent();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data) {\r\n this._value = value.Data.Value === null && value.Data.DisplayValue ? -1 : +value.Data.Value;\r\n this._originalValue = this._value;\r\n this._displayValue = this.FormatValue(value.Data.LabelOriginalValue, value.Data.DisplayValue, value.Data.ValFieldTypeName);\r\n\r\n let dropDownItemModel = new DropdownItemModel({\r\n RecordId: this._value,\r\n Label: this._displayValue\r\n });\r\n\r\n\r\n if (!this.IsEditMode) {\r\n this.PreselectOption(dropDownItemModel);\r\n } else if (this._value === -1) {\r\n this._selectedItem(dropDownItemModel);\r\n }\r\n }\r\n\r\n this._isEnableFilter(!this.HasValue || !this._showConditionToggle());\r\n\r\n this._subjectRecordId = value.SubjectRecordId;\r\n this._subjectRecordSpecsModel = value.RecordSpecsModel;\r\n\r\n if (this.IsEditMode) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n get HasValue(): boolean{\r\n return this._value != 0 && this._value != -1;\r\n }\r\n\r\n ShowOptionCreate(data, esc) {\r\n return `<div class=\"create\">${this._label.ADD} <strong> ${esc(data.input)} </strong>…</div>`;\r\n }\r\n\r\n InitChangeEvent() {\r\n this._selectedItem.subscribe((newValue) => {\r\n var value = newValue ? String(newValue.RecordId) : null;\r\n this._value = newValue?.RecordId;\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.Dropdown }, value);\r\n });\r\n }\r\n\r\n ResetSelection() {\r\n this._isReady(false);\r\n\t\tthis._isCustomValueEntered(false);\r\n\t\tthis.RemoveCustomOption();\r\n const recordId = 0;\r\n\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n this._value = null;\r\n\r\n this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n this.Trigger(EVENTS.DROPDOWN_VALUE_SELECTED, {recordId: recordId});\r\n this._isReady(true);\r\n\r\n this._select = this._el.parentElement.querySelector(\"select.dropdownselect\");\r\n this._select && this._select.dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n get ShowAddButton(): boolean {\r\n return this.FieldModel.ValTableType !== TABLE_TYPES.Sub && (this.FieldModel.ValTableType !== TABLE_TYPES.Lookup || this.FieldModel.AllowCreatingRecords) && !this.IsCdTable(this.FieldModel.ValTableName) && this.FieldModel.AllowInsert;\r\n }\r\n\r\n get HasFilter(){\r\n return this.FieldModel.HasFilter || this._conditions?.HasAnyConditions;\r\n }\r\n\r\n ShowSearchScreen() {\r\n let attachedFieldModel = this.FieldModel;\r\n if (attachedFieldModel) {\r\n let params: ISearchScreenParam = {\r\n DropDownFilterState: this._isEnableFilter(),\r\n HasLinkingCondition: this.HasFilter,\r\n ConditionToggler: this.HasFilter,\r\n EntityId: attachedFieldModel.ValTableId,\r\n SearchTerm: this._searchTerm,\r\n EntityType: attachedFieldModel.ValTableType,\r\n SearchFieldId: attachedFieldModel.ValFieldId,\r\n ControlId: this.GetControlId(),\r\n FieldId: this.FieldModel.Id,\r\n ScreenData: this.GetDynamicFieldsData(),\r\n ConditionValues: this.MapConditionValues(),\r\n ButtonAdd: this.ShowAddButton\r\n };\r\n\r\n if (this._form &&\r\n (this.FieldModel.ValTableType === TABLE_TYPES.Entity || this.FieldModel.ValTableType === TABLE_TYPES.Lookup || this.FieldModel.ValTableType === TABLE_TYPES.Sub)\r\n ) {\r\n params.SubjectEntityId = this.GetForm().GetScreen().GetEntityId();\r\n params.SubjectRecordId = this.GetForm().GetScreen().GetRecordId();\r\n }\r\n\r\n if (this.IsLinkEditor) {\r\n const linkEditor = this.Screen as any;\r\n\r\n params.LeftEntityId = linkEditor.GetEntityId();\r\n params.RightEntityId = linkEditor.GetRelatedEntityId();\r\n params.LeftRecordId = linkEditor.GetRecordId();\r\n params.RightRecordId = linkEditor.GetRelatedRecordId();\r\n params.KSeq = linkEditor.KSeq;\r\n }\r\n\r\n this._searchScreen = new SearchScreen(params);\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => this.ReplaceSelectedValue(evtArgs.data.RecordId));\r\n this._searchScreen.On('NEW_RECORD', this, () => this.NewTypeScreen());\r\n this._searchScreen.Show();\r\n }\r\n }\r\n\r\n /**\r\n * dispatch event to parents\r\n * @param $drDown {[Element]} -> jQuery element\r\n */\r\n OnDropDownOpen = ($drDown) => {\r\n $drDown[0].dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n };\r\n\r\n OnInitialize = () => {\r\n setTimeout(() => {\r\n this._select && this._select.dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }, 150);\r\n };\r\n\r\n /**\r\n * dispatch event to parents\r\n * @param $drDown {[Element]} -> jQuery element\r\n */\r\n OnDropDownClose = ($drDown) => {\r\n $drDown[0].dispatchEvent(new Event(\"onDropDownClose\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n };\r\n\r\n OnSelectControl(recordId) {\r\n recordId = +recordId;\r\n\r\n if (recordId !== -1) {\r\n this.RemoveCustomOption();\r\n }\r\n\r\n const selectedItem = _.find(this._items(), item => item.RecordId === recordId);\r\n this._selectedValueLabel(!!selectedItem ? selectedItem.Label : null);\r\n this.GetForm() && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id, this._isPreselect());\r\n this.Trigger('DROPDOWN_VALUE_SELECTED', {recordId: recordId === -1 ? null : recordId});\r\n this._select && this._select.dispatchEvent(new Event(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n\r\n OnCustomSearchFocused() {\r\n if (this._selectedValueLabel()) {\r\n const initialLabel = this._selectedValueLabel();\r\n this._initialValueLabel(initialLabel);\r\n this._customPlaceholder(initialLabel);\r\n }\r\n\r\n this._selectedValueLabel(null);\r\n }\r\n\r\n OnCustomSearchBlur() {\r\n if (!this._selectedValueLabel()) {\r\n this._selectedValueLabel(this._initialValueLabel());\r\n }\r\n\r\n this._initialValueLabel(null);\r\n this._customPlaceholder(this._defaultPlaceholder);\r\n }\r\n\r\n OnCustomValueEntered(element, event) {\r\n if (event.target.value) {\r\n this._isCustomValueEntered(true);\r\n } else {\r\n this._isCustomValueEntered(false);\r\n }\r\n }\r\n\r\n AddCustomValue(text: string) {\r\n this.RemoveCustomOption();\r\n\r\n const newCustomItem = this.AddCustomOption(text);\r\n\r\n this._selectedItem(newCustomItem);\r\n this._selectedValueId(newCustomItem.RecordId);\r\n this._selectedValueLabel(newCustomItem.Label);\r\n\r\n return {text: text, value: -1};\r\n }\r\n\r\n GetSelectedItem() {\r\n return this._selectedItem();\r\n }\r\n\r\n private PreselectOption(value: DropdownItemModel) {\r\n const optionFromList = _.find(this._items(), item => item.RecordId === value.RecordId);\r\n\r\n if (!optionFromList) {\r\n this._items.push(value);\r\n }\r\n\r\n this._isPreselect(true);\r\n\r\n this._selectedItem(value);\r\n this._selectedValueId(value.RecordId);\r\n this._selectedValueLabel(value.Label ? value.Label : LABELS.EMPTY_VALUE);\r\n\r\n this._isPreselect(false);\r\n }\r\n\r\n private RemoveCustomOption() {\r\n const oldCustomValueIndex = _.findIndex(this._items(), item => item.RecordId === -1);\r\n\r\n if (oldCustomValueIndex !== -1) {\r\n this._items.splice(oldCustomValueIndex, 1);\r\n }\r\n }\r\n\r\n private AddCustomOption(text) {\r\n const newCustomItem = new DropdownItemModel();\r\n\r\n newCustomItem.RecordId = -1;\r\n newCustomItem.Label = text;\r\n\r\n this._items.push(newCustomItem);\r\n return newCustomItem;\r\n }\r\n\r\n private ReplaceSelectedValue(recordId: number) {\r\n const valFieldId = this.FieldModel.ValFieldId;\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: this.FieldModel.ValTableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n this._isCustomValueEntered(false);\r\n\r\n if (this._showSearchScreenButton()) {\r\n this._items([]);\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n }\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === valFieldId);\r\n\r\n if (selected) {\r\n this.RemoveCustomOption();\r\n\r\n selected.FieldValue = this.FormatValue(selected.FieldValue, selected.FieldValue, selected.FieldTypeName);\r\n const itemTranslation = _.find(selected.FieldValueTranslations, (item: any) => item.Selected);\r\n selected.FieldValue = itemTranslation && itemTranslation.Value ? itemTranslation.Value : selected.FieldValue;\r\n\r\n const newItem = DropdownItemModel.Create(recordId, selected.FieldValue ? selected.FieldValue : LABELS.EMPTY_VALUE, true, true);\r\n this._items.push(newItem);\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.RecordId);\r\n this._selectedValueLabel(newItem.Label);\r\n\r\n this._form && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n this.Trigger('DROPDOWN_VALUE_SELECTED', {recordId: recordId});\r\n }\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n const newItem = DropdownItemModel.Create(recordId, NOTIFICATIONS.RECORD_NOT_FOUND, true, true);\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.RecordId);\r\n this._selectedValueLabel(newItem.Label);\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n Notifier.Failed('Error applying created record');\r\n }\r\n });\r\n }\r\n\r\n private FormatValue(value: string, displayValue: string, type: string) {\r\n let result = displayValue;\r\n if (this.IsDate(type)) {\r\n const dateTimeFormat = FormatConverter.GetDateFormatFromFieldModel(\r\n {Type: type, FormatName: this.FieldModel.ValFieldFormatName},\r\n true\r\n );\r\n\r\n if (this.HasTime(type))\r\n value = FormatConverter.CorrectTimezone(value);\r\n\r\n result = moment(value).isValid() ? moment(value).format(dateTimeFormat) : value;\r\n } else if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], type)) {\r\n result = FormatConverter.LocalizeDecimalOrInteger(\r\n displayValue && this.FieldModel.ValFieldFormatName === 'Percentage'\r\n ? (Number(displayValue.replace(/[.,]/g, '.')) * 100).toFixed(\r\n this.FieldModel.ValFieldSize < 2 ? 0 : this.FieldModel.ValFieldSize - 2\r\n )\r\n : displayValue\r\n );\r\n }\r\n\r\n return result ? result : LABELS.EMPTY_VALUE;\r\n }\r\n\r\n private IsDate(fieldType: string) {\r\n return fieldType === FIELD_TYPES.Date ||\r\n fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time ||\r\n fieldType === FIELD_TYPES.TimeSpan;\r\n }\r\n\r\n private HasTime(fieldType: string) {\r\n return fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time;\r\n }\r\n\r\n private NewTypeScreen() {\r\n const attachedFieldModel = this.FieldModel;\r\n const typeScreen = new TypeScreen(attachedFieldModel.ValTableId);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => Notifier.Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n if (this._searchScreen) {\r\n this._searchScreen.Cancel();\r\n }\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, attachedFieldModel.ValTableId, attachedFieldModel.AllowCreatingRecords);\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n private async NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number, allowCreatingRecords: boolean) {\r\n if (allowCreatingRecords) {\r\n this.NewLookupRecord(entityId);\r\n } else {\r\n this.NewEntityRecord(tableTypeId, kindId, exampleRecordId, entityId);\r\n }\r\n }\r\n\r\n private NewLookupRecord(valTableId: number) {\r\n if (!valTableId) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n TablesStore.GetLookup(valTableId)\r\n .then(async result => {\r\n if (!result.IsSuccessfull) {\r\n BlockUI.Unblock();\r\n Notifier.Warning(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n (await import(\"LookupEditor/NewRecord/NewRecordScreen\")).NewRecordScreen\r\n .GenerateScreen(GenericDeserialize(result.ResultObject, LookupModel))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(newLookupRecordScreen => {\r\n\r\n newLookupRecordScreen.ShowInModal('newLookupRecord');\r\n\r\n newLookupRecordScreen.On('SAVE_DATA', this, eventArgs => this.AddLookupRecord(eventArgs.data));\r\n\r\n this._newLookupRecordScreen = newLookupRecordScreen;\r\n });\r\n }).fail(error => {\r\n BlockUI.Unblock();\r\n Notifier.Failed(error.message);\r\n });\r\n }\r\n\r\n private AddLookupRecord(newRecordModel: NewRecordModel) {\r\n BlockUI.Block();\r\n LookupEditorStore.AddRecord(newRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n this._newLookupRecordScreen.Close();\r\n this._newLookupRecordScreen = null;\r\n\r\n const recordId = result;\r\n\r\n Notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n this.ReplaceSelectedValue(recordId);\r\n }).fail(error => Notifier.Failed(error.message));\r\n }\r\n\r\n private async NewEntityRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: true\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n return;\r\n }\r\n\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const recordId = eventArgs.data.RecordId;\r\n\r\n Notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n this.ReplaceSelectedValue(recordId);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n\r\n LoadData() {\r\n let attachedField = this.FieldModel;\r\n let getDataRequestModel: IGetDropdownControlDataRequestModel = {\r\n FieldId: attachedField.Id,\r\n RecordId: this._value,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: this._form && this._form.GetScreen().GetTableTypeId(),\r\n SubjectKindId: this._form && this._form.GetScreen().GetKindId(),\r\n SubjectStatusId: this._subjectRecordSpecsModel && this._subjectRecordSpecsModel.LifeStatusInfo ? this._subjectRecordSpecsModel.LifeStatusInfo.Id : 0,\r\n ScreenData: this._form && this.GetDynamicFieldsData(),\r\n ControlId: this.GetControlId(),\r\n IsEnableFilter: this._isEnableFilter(),\r\n ConditionValues: this.MapConditionValues()\r\n };\r\n\r\n const screen = this._form && this.GetForm().GetScreen();\r\n\r\n if (screen && screen.GetType() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n const linkEditor = screen as any;\r\n\r\n getDataRequestModel.LeftEntityId = linkEditor.GetEntityId();\r\n getDataRequestModel.RightEntityId = linkEditor.GetRelatedEntityId();\r\n getDataRequestModel.LeftRecordId = linkEditor.GetRecordId();\r\n getDataRequestModel.RightRecordId = linkEditor.GetRelatedRecordId();\r\n getDataRequestModel.KSeq = linkEditor.GetKseq();\r\n }\r\n\r\n this._clearAllowed(!(attachedField.IsRequired || attachedField.IsReadOnly || attachedField.IsSystem));\r\n\r\n this._isDataLoading(true);\r\n\r\n if (this.GetFieldModel().Name === TYPE_FIELD_NAME && !(this._form && this._form.GetScreen().IsLookupEditorNewRecord)) {\r\n const fieldEntityId = this.GetFieldModel().EntityId;\r\n const parentTypeId = this._form ?\r\n this.GetForm().GetScreen().GetEntityId() === fieldEntityId\r\n ? this._form.GetScreen().GetTableTypeId()\r\n : undefined\r\n : undefined;\r\n\r\n \r\n EntityTypesStore.GetTypes({\r\n EntityId: this.GetFieldModel().EntityId,\r\n EntityName: this.GetFieldModel().EntityName,\r\n ParentTypeId: parentTypeId,\r\n WithRoot: true, OnlyEnabled: true\r\n })\r\n .always(() => {\r\n this._isDataLoading(false);\r\n })\r\n .then((result) => {\r\n this._items([]);\r\n var selectedItem;\r\n _.each(result.TableTypes,\r\n (item) => {\r\n const label = item.TranslatedName ? item.TranslatedName : item.Name;\r\n\r\n var dropdownItem = new DropdownItemModel();\r\n dropdownItem.RecordId = item.Id;\r\n dropdownItem.Label = label ? label : LABELS.EMPTY_VALUE;\r\n dropdownItem.IsEnabled = item.IsEnabled;\r\n this._items.push(dropdownItem);\r\n });\r\n\r\n selectedItem = _.find(this._items(), item => item.RecordId === this._value);\r\n if (selectedItem && selectedItem.IsEnabled) {\r\n this.PreselectOption(selectedItem);\r\n }else{\r\n selectedItem = this._autoSelectIfOneRecord() &&\r\n this._items().length === 1 &&\r\n this._items()[0];\r\n\r\n this.PreselectOption(selectedItem);\r\n }\r\n });\r\n } else {\r\n DropdownDataStore.Get(getDataRequestModel)\r\n .always(() => {\r\n this._isDataLoading(false);\r\n })\r\n .then(data => {\r\n\r\n\t\t\t\t\tconst isDisableDropdown = data.Items.length === 0 && !this.GetFieldModel().AllowCustomValue;\r\n this._isDisableDropDown(isDisableDropdown);\r\n\r\n _.each(data.Items, (item) => {\r\n item.Label = this.FormatValue(item.Value, item.Label, item.Type);\r\n });\r\n\r\n this._items(data.Items);\r\n this._totalRecordsCount = data.RecordsCount;\r\n this._showSearchScreenButton(this._totalRecordsCount > this._searchScreenIfRecordsCount);\r\n const selectedItem = this._value === -1\r\n ? this._selectedItem()\r\n : _.find(data.Items, item => item.RecordId === this._value);\r\n\r\n if (selectedItem) {\r\n this.PreselectOption(selectedItem);\r\n } else {\r\n const selectedItem = this._autoSelectIfOneRecord() &&\r\n !this._showSearchScreenButton() &&\r\n data.Items.length === 1 &&\r\n data.Items[0];\r\n\r\n if (selectedItem) {\r\n this.PreselectOption(selectedItem);\r\n } else if (this._value) {\r\n let item = new DropdownItemModel();\r\n item.Label = NOTIFICATIONS.RECORD_NOT_FOUND;\r\n item.RecordId = this._value;\r\n\r\n this.PreselectOption(item);\r\n }\r\n }\r\n\r\n if (data.ErrorMessage) {\r\n Notifier.Failed(NOTIFICATIONS.ERROR_GETTING_DROPDOWN_DATA.replace('{fieldName}', this.FieldModel.Name));\r\n }\r\n }).fail(error => {\r\n Notifier.Failed(NOTIFICATIONS.ERROR_GETTING_DROPDOWN_DATA.replace('{fieldName}', this.FieldModel.Name));\r\n });\r\n }\r\n }\r\n\r\n CheckCreateRecordAllowance(){\r\n if(!this.IsEditMode){\r\n return;\r\n }\r\n\r\n let field = this.GetFieldModel();\r\n if(field && field.ValTableId){\r\n TableSecurityStore\r\n .IsUserAllowedTo(\r\n {\r\n TableId: this.GetFieldModel().ValTableId,\r\n SecurityWord: TABLE_SECURITY_WORDS.CREATE\r\n }).then((result)=>{\r\n this._allowInsert(result && (field.ValTableType === TABLE_TYPES.Entity || field.AllowCreatingRecords) && !this.IsCdTable(field.ValTableName) && !field.IsReadOnly && !field.IsSystem);\r\n });\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._select = el[0].parentElement.querySelector(\"select.dropdownselect\");\r\n }\r\n\r\n SetOptionDisable(option, item) {\r\n if (!item) {\r\n ko.applyBindingsToNode(option, {disable: ko.observable(true)}, item);\r\n } else {\r\n ko.applyBindingsToNode(option, {disable: !item.IsEnabled && this.GetFieldModel().Name === TYPE_FIELD_NAME ? ko.observable(true) : ko.observable(false)}, item);\r\n }\r\n }\r\n\r\n Deserialize() {\r\n var field = _.first(this._model().Fields);\r\n var item = this._selectedItem();\r\n if (field && item) {\r\n if (!this._isReadonly) {\r\n const id = +this._selectedValueId() === -1 ? null : this._selectedValueId();\r\n const customValue = this.FieldModel.AllowCustomValue && this._selectedItem() && this._selectedItem().Label;\r\n return [`${field.EntityName}.${field.Name}`, id, customValue];\r\n } else {\r\n return [`${field.EntityName}.${field.Name}`, null, null];\r\n }\r\n } else {\r\n return [`${field.EntityName}.${field.Name}`, null, null];\r\n }\r\n }\r\n\r\n IsModified(): boolean {\r\n if (super.IsModified()) return true;\r\n\r\n if (this._selectedItem()) {\r\n return this._originalValue !== this._selectedItem().RecordId || this._displayValue !== this._selectedValueLabel();\r\n }\r\n\r\n return !!this._originalValue;\r\n }\r\n\r\n IsValid(): boolean {\r\n const isTypeField = this.GetFieldModel().Name === TYPE_FIELD_NAME;\r\n const isNotForNewRecordScreen = !(this._form && this._form.GetScreen().IsLookupEditorNewRecord);\r\n\r\n if (this._isRequired && !this._selectedItem()) {\r\n this._isValid(false);\r\n } else if (isTypeField && isNotForNewRecordScreen) {\r\n const typeSelected = !!this._selectedItem();\r\n this._isValid(typeSelected);\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n GetValue() {\r\n if (this._selectedItem()) {\r\n return this._selectedItem().RecordId === -1 || isNaN(this._selectedItem().RecordId) ? null : this._selectedItem().RecordId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n GetDisplayValue(): string {\r\n if (this._selectedItem()) {\r\n return this._selectedItem().Label;\r\n }\r\n return null;\r\n }\r\n\r\n Dispose() {\r\n super.Dispose();\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n }\r\n\r\n DisableFilter() {\r\n this._isEnableFilter(!this._isEnableFilter());\r\n this.LoadData()\r\n }\r\n\r\n private UpdateDependsOnValue() {\r\n\r\n this.CalculateDependOnValue()\r\n .then(dependsOnValue=>{\r\n let val = Number(dependsOnValue);\r\n if(!isNaN(val)){\r\n this._value = val;\r\n this.LoadData();\r\n }\r\n }); \r\n }\r\n\r\n private IsCdTable(tableName: string) {\r\n return tableName && tableName.startsWith('CD_');\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"dropdown-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-list\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"blockElement: $data._isDataLoading,\\r\\n\\t \\t\\t\\tattr: { 'data-control-position': LabelPosition },\\r\\n\\t \\t\\t\\tstyle: {display: _display},\\r\\n\\t \\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView search-placeholder select-wrapper form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _selectedItem --> <!-- ko with: _selectedItem --> <div data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t\\t\\t\\t\\ttext: $data.Label || $parent.Label,\\r\\n\\t\\t\\t\\t\\tcss: {placeholder: !$data.Label || $data.Label === $parent._label.EMPTY_VALUE, 'with-icon': $parent._isIconVisible},\\r\\n\\t\\t\\t\\t\\tclass: $data.Label && $data.Label !== $parent._label.EMPTY_VALUE ? $parent.FieldModel.ValFieldFormatName : 'None',\\r\\n\\t\\t\\t\\t\\tattr: { 'data-text': $parent.Label }\\\" class=\\\"textarea-control form-control control record-field\\\" disabled=\\\"disabled\\\" data-value=\\\"true\\\"> </div> <!-- /ko --> <!-- /ko --> <span class=\\\"search-caret\\\"></span> <!-- ko ifnot: _selectedItem --> <div data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t \\t\\t\\t\\tattr: {'data-text': $data.Label || $parent.Label}\\\" class=\\\"textarea-control form-control control record-field\\\" disabled=\\\"disabled\\\"></div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }\\\" class=\\\"FormDesignerView select-wrapper label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"style: $data._textInputStyle, text: Label\\\" class=\\\"textarea-control form-control control record-field\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }\\\" class=\\\"FormDesignerView select-wrapper label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"style: $data._textInputStyle, text: Label, css: {'with-icon': _isIconVisible}\\\" class=\\\"textarea-control form-control control record-field\\\"></div> <span class=\\\"search-caret\\\"></span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"dropdown-control\\\" data-bind=\\\"blockElement: $data._isDataLoading, \\r\\n attr: {'data-control-position': LabelPosition},\\r\\n\\t\\t\\t\\tstyle: {display: _display},\\r\\n\\t\\t\\t\\tcss: {'search-placeholder': _showSearchScreenButton(), 'has-error': !_isValid(), 'full-width-control': FieldModel.FullWidth},\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView label-input form-standart-control dropdown-container clearfix\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <!-- ko if: _showSearchScreenButton --> <!--ko template: {name: GetSearchTemplateName }--><!--/ko--> <!-- /ko --> <!-- ko ifnot: _showSearchScreenButton --> <!--ko template: {name: GetDropdownTemplateName }--><!--/ko--> <!-- /ko --> </div> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper\\\" data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'with-reset-button': _clearAllowed() && _selectedItem() || _showConditionToggle(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'with-reset-button-and-condition': _clearAllowed() && _selectedItem() && _showConditionToggle(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'allowInsert-btn': IsAllowInsert }\\\"> <!--ko ifnot: GetCombinedReadOnly() || _isDisableDropDown() --> <select data-bind=\\\"\\r\\n\\t\\t\\tselectize: _items,\\r\\n\\t\\t\\tvalue: _selectedValueId,\\r\\n\\t\\t\\toptionsText: 'Label',\\r\\n\\t\\t\\toptionsValue: 'RecordId',\\r\\n\\t\\t\\tobject: _selectedItem,\\r\\n\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\tdropdownParent: 'body',\\r\\n\\t\\t\\t\\tdropdownDirection: 'auto',\\r\\n\\t\\t\\t\\tonDropdownOpen: OnDropDownOpen,\\r\\n\\t\\t\\t\\tonDropdownClose: OnDropDownClose,\\r\\n\\t\\t\\t\\tonInitialize: OnInitialize,\\r\\n\\t\\t\\t onChange: OnSelectControl.bind($data),\\r\\n\\t\\t\\t create: $data.FieldModel.AllowCustomValue && AddCustomValue.bind($data),\\r\\n\\t\\t\\t createOnBlur: true,\\r\\n\\t\\t\\t copyClassesToDropdown: true,\\r\\n\\t\\t\\t plugins: $data._dropdownPlugins,\\r\\n\\t\\t\\t placeholder: _label.SELECT_LABEL + '...',\\r\\n\\t\\t\\t render: {option_create: ShowOptionCreate.bind($data)}\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tattr: {\\r\\n 'disabled': GetCombinedReadOnly(),\\r\\n 'required': _isRequired,\\r\\n 'tabindex': GetCombinedReadOnly() ? -1 : 1\\r\\n }\\\" class=\\\"form-control control record-field drop-down dropdownselect customDropDown\\\"></select> <!--/ko--> <!--ko if: GetCombinedReadOnly() || _isDisableDropDown() --> <div data-val-search=\\\"\\\" data-bind=\\\"attr: {'disabled': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t'required': $data._isRequired,\\r\\n\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly() || _isDisableDropDown()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"no-record\\\" data-bind=\\\"text: _label.NO_RECORD\\\"></span> <!--/ko--> </div> <!--/ko--> <div class=\\\"dropdown-controls\\\"> <!-- ko if: _showConditionToggle --> <a data-bind=\\\"click: $data.DisableFilter.bind($data), css: { 'toggle-cross' : _isEnableFilter }\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add green\\\"> <i class=\\\"fa fa-filter fa-times\\\"></i> </a> <!-- /ko --> <!-- ko if: IsAllowInsert --> <a data-bind=\\\"click: $data.NewTypeScreen.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add blue\\\"><i class=\\\"fa fa-plus\\\"></i></a> <!-- /ko --> <a data-bind=\\\"visible: _clearAllowed() && _selectedItem(),\\r\\n\\t\\t\\t\\t\\t\\t click: $data.ResetSelection.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"><i class=\\\"fa fa-times\\\"></i></a> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper input-group\\\"> <!--ko if: $data.FieldModel.AllowCustomValue--> <input type=\\\"text\\\" data-bind=\\\"\\r\\n\\t\\t \\t\\tvalue: _selectedValueLabel,\\r\\n\\t\\t \\t\\tevent: {change: AddCustomValue.bind($data, $data._selectedValueLabel()),\\r\\n\\t\\t\\t\\t\\t\\tfocus: OnCustomSearchFocused, blur: OnCustomSearchBlur, keyup: OnCustomValueEntered},\\r\\n\\t\\t \\t\\tstyle: $data._textInputStyle,\\r\\n\\t\\t \\t\\tattr: {'disabled': GetCombinedReadOnly(), 'required': $data._isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t \\t\\t 'placeholder': _customPlaceholder()},\\r\\n\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\thasFocus: $data.IsFocused\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--/ko--> <!--ko ifnot: $data.FieldModel.AllowCustomValue--> <!--ko ifnot: GetCombinedReadOnly() --> <div data-val-search=\\\"True\\\" data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\thasFocus: $data.IsFocused,\\r\\n\\t\\t\\t\\t\\t\\tevent: { click: $data.ShowSearchScreen.bind($data)},\\r\\n\\t\\t\\t\\t\\t\\tenterKey: $data.ShowSearchScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tattr: {'disabled': GetCombinedReadOnly(), 'required': $data._isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"selectText\\\" data-bind=\\\"text: _label.SELECT_LABEL + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <div data-val-search=\\\"\\\" data-bind=\\\"attr: {'disabled': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t'required': $data._isRequired,\\r\\n\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"selectText\\\" data-bind=\\\"text: _label.SELECT_LABEL + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--/ko--> <div class=\\\"dropdown-controls\\\"> <!--ko ifnot: GetCombinedReadOnly() --> <span data-bind=\\\"event: { click: $data.ShowSearchScreen.bind($data)}\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <span data-bind=\\\"css: { 'disabled': GetCombinedReadOnly() }\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!-- ko if: (IsEditScreen || IsLinkEditor) && _showConditionToggle --> <a data-bind=\\\"click: $data.DisableFilter.bind($data), css: { 'toggle-cross' : _isEnableFilter }\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add green\\\"> <i class=\\\"fa fa-filter fa-times\\\"></i> </a> <!-- /ko --> <!-- ko if: IsAllowInsert() --> <a data-bind=\\\"click: $data.NewTypeScreen.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-add blue\\\"><i class=\\\"fa fa-plus\\\"></i></a> <!-- /ko --> <!-- ko if: _clearAllowed() && (_selectedItem() || _isCustomValueEntered()) --> <a data-bind=\\\"click: $data.ResetSelection.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"><i class=\\\"fa fa-times\\\"></i></a> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {URL} from \"Core/Common/Url\";\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\nimport {MultiSelectListModel} from \"Core/Controls/MultiSelect/Models/MultiSelectListModel\";\r\nimport { IDynamicFieldData } from \"Core/Common/Stores/RecordStore\";\r\n\r\nexport interface IGetMultiSelectControlDataRequestModel {\r\n ControlId: number;\r\n FieldId: number;\r\n RecordIds: Array<number>;\r\n ScreenVariables?: any;\r\n LeftEntityId?: number;\r\n RightEntityId?: number;\r\n LeftRecordId?: number;\r\n RightRecordId?: number;\r\n ScreenData?: Array<IDynamicFieldData>;\r\n}\r\n\r\nexport class MultiSelectDataStore {\r\n static GetOptions(requestData: IGetMultiSelectControlDataRequestModel): P.Promise<any> {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_MULTISELECT_CONTROL_DATA,\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params: requestData\r\n };\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n var test = GenericDeserialize<MultiSelectListModel>(data.ResultObject, MultiSelectListModel);\r\n\r\n deferredResult.resolve(test);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"multi-select-control clearfix\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }, style: {display: _display}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle, css: {'with-icon': _isIconVisible},\\\" class=\\\"multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> <!--ko foreach: SelectedItems --> <span data-bind=\\\"text: $parent.FormatValue(Label)\\\" class=\\\"multi-option-item\\\"></span> <!--/ko--> </div> <!--/ko--> <!-- ko ifnot: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle, css: {'with-icon': _isIconVisible}, attr: {'data-text': $data._labels.SELECT_VALUE_LABEL}\\\" class=\\\"empty multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> </div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {MultiSelectListModel, ItemModel} from 'Core/Controls/MultiSelect/Models/MultiSelectListModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {\r\n IGetMultiSelectControlDataRequestModel,\r\n MultiSelectDataStore\r\n} from 'Core/Controls/MultiSelect/Stores/MultiSelectDataStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport ViewTemplate from 'Core/Controls/MultiSelect/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/MultiSelect/Templates/HelpView.html';\r\nimport EditTemplate from 'Core/Controls/MultiSelect/Templates/Edit.html';\r\nimport ToolBarTemplate from 'Core/Controls/MultiSelect/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/MultiSelect/Templates/Design.html';\r\nimport DropDownContentTemplate from 'Core/Controls/MultiSelect/Templates/DropDownContent.html';\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nimport {FieldFormat} from \"Core/Common/FieldFormat\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\n\r\nimport MultiSelectConfig from 'Core/Controls/MultiSelect/Configs/multiselect-config.json';\r\n\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\nimport {ConditionBuilder} from \"../../../QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder\";\r\nimport {GenericDeserialize} from \"../../../libs/cerialize\";\r\nimport {QueryConditionGroupModel} from \"../Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup\";\r\nimport { IScreenVariable } from 'Core/Screens/BaseScreen';\r\n\r\nko.templates['Core/Controls/MultiSelect/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/MultiSelect/Templates/Design'] = DesignTemplate;\r\n\r\nexport class MultiSelect extends BaseControl {\r\n Items: KnockoutObservableArray<ItemModel>;\r\n SelectedItems: KnockoutObservableArray<ItemModel>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _separator: string;\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _showSearchScreen: KnockoutObservable<boolean>;\r\n private _searchScreen: SearchScreen;\r\n private _value: Array<number>;\r\n private _originalValue: Array<number>;\r\n private _totalRecordsCount: number;\r\n private _anySelectedItems: KnockoutComputed<boolean>;\r\n private _tooltip: JBoxDropDown;\r\n private _showMultiSelectText: KnockoutObservable<boolean>;\r\n private _conditions: QueryConditionGroupModel;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, MultiSelectConfig);\r\n \r\n this.Items = ko.observableArray([]);\r\n this._separator = ';';\r\n this.SelectedItems = ko.observableArray([]);\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._showSearchScreen = ko.observable(false);\r\n this._value = [];\r\n this._originalValue = [];\r\n this._totalRecordsCount = 0;\r\n this._showMultiSelectText = ko.observable(true);\r\n this._conditions = null;\r\n\r\n this._anySelectedItems = ko.computed(() => this.SelectedItems().length > 0, this);\r\n\r\n this.Init();\r\n this.ApplyProperties();\r\n\r\n var searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n }\r\n\r\n ApplyProperties() {\r\n\r\n if (this.Properties) {\r\n if (this.Properties.Label) {\r\n var labelStyle = {backgroundColor: null, color: null};\r\n _.each(this.Properties.Label.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n\r\n this._labelStyle(labelStyle);\r\n }\r\n if (this.Properties.TextInput) {\r\n var textInputStyle = {backgroundColor: null};\r\n _.each(this.Properties.TextInput.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n\r\n //Condition\r\n if (this.Properties.Condition) {\r\n let condition = _.find(this.Properties.Condition.Properties, (item) => item.hasOwnProperty('QueryCondition')) as any;\r\n\r\n if (condition && condition.QueryCondition) {\r\n let jsonObj = JSON.parse(condition.QueryCondition);\r\n let conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n this._conditions = conditions;\r\n }\r\n }\r\n }\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n ShowListSearchScreen(model, evt: MouseEvent) {\r\n if (this._totalRecordsCount > this._searchScreenIfRecordsCount) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n\r\n let attachedFieldModel = this.FieldModel;\r\n\r\n if (attachedFieldModel && attachedFieldModel.ValTableId) {\r\n this._searchScreen = new SearchScreen({\r\n EntityId: attachedFieldModel.ValTableId,\r\n ControlId: this.GetControlId(),\r\n ScreenData: this._form && this.GetDynamicFieldsData(),\r\n SearchTerm: '',\r\n ButtonAdd: attachedFieldModel.ValTableType !== TABLE_TYPES.Lookup,\r\n MultiSelectMode: true,\r\n\t\t\t\t\tSelectedRecordIds: _.map(this.SelectedItems(), (item) => item.RecordId)\r\n });\r\n\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n if (this._value.indexOf(evtArgs.data.RecordId) < 0) {\r\n this._value.push(evtArgs.data.RecordId);\r\n }\r\n this.LoadData(this._value);\r\n });\r\n\r\n this._searchScreen.On('RECORDS_SELECTED', this, (eventArgs) => {\r\n let selectedRecordIds = eventArgs.data.Ids;\r\n\r\n if (!_.isEqual([...this._value].sort(), selectedRecordIds.sort())) {\r\n this._value = selectedRecordIds;\r\n this.LoadData(this._value);\r\n }\r\n });\r\n }\r\n\r\n this._searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const typeScreen = new TypeScreen(attachedFieldModel.ValTableId);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPES_FOUND', this, (eventArgs) => this._searchScreen.Cancel());\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n this.NewRecord(typeId, kindId, exampleRecordId, attachedFieldModel.ValTableId);\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n this._searchScreen.Show();\r\n } else {\r\n if (this.Items().length > 0 && !this.GetCombinedReadOnly()) {\r\n\r\n if (!this._tooltip) {\r\n const target: any = evt.currentTarget;\r\n this._tooltip = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: DropDownContentTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n\r\n this._tooltip.Toggle();\r\n }\r\n }\r\n }\r\n\r\n private Init() {\r\n if(this.IsRunTime){\r\n this.Screen.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n let screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this._conditions);\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n this.LoadData([]);\r\n }\r\n });\r\n\r\n this.InitChangeEvent();\r\n }\r\n }\r\n\r\n private async NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, entityId: number) {\r\n \r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: true\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n return;\r\n }\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const recordId = eventArgs.data.RecordId;\r\n\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n this._value.push(recordId);\r\n\r\n this.SetValue({\r\n SubjectEntityId: this.FieldModel.ValTableId,\r\n SubjectRecordId: recordId,\r\n RecordSpecsModel: null\r\n });\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data && value.Data.Value) {\r\n this._value = this.ParseOptionsValue(value.Data.Value);\r\n this._originalValue = _.map(this._value, val => val);\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.LoadData(this._value);\r\n } else {\r\n if (value.Data && (value.Data.DisplayValue || value.Data.DisplayValue === \"\")) {\r\n var selectedItemsDisplayValue = this.ParseOptionsLabels(value.Data.DisplayValue);\r\n var selectedItems = [];\r\n _.each(selectedItemsDisplayValue,\r\n item => {\r\n var selectedItem = new ItemModel();\r\n selectedItem.Label = item;\r\n selectedItems.push(selectedItem);\r\n });\r\n this.SelectedItems(selectedItems);\r\n if (selectedItems.length == 0) {\r\n this._showMultiSelectText(true);\r\n } else {\r\n this._showMultiSelectText(false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n InitChangeEvent() {\r\n this.SelectedItems.subscribe((newValue) => {\r\n var ids = _.map(newValue, (value) => value.RecordId);\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.MultiSelect }, ids.join(';'));\r\n });\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return this._labels.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this.FieldModel.ValFieldTypeName)) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n this.FieldModel.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value.replace(/[.,]/g, '.')) * 100).toFixed(\r\n this.FieldModel.ValFieldSize < 2 ? 0 : this.FieldModel.ValFieldSize - 2\r\n )\r\n : value\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n ParseOptionsValue(selectedOptionsString: string): Array<number> {\r\n if (selectedOptionsString) {\r\n return selectedOptionsString.split(this._separator)\r\n .map(id => parseInt(id));\r\n }\r\n\r\n return [];\r\n }\r\n\r\n ParseOptionsLabels(selectedOptionsString: string): Array<string> {\r\n if (selectedOptionsString) {\r\n return selectedOptionsString.split(this._separator);\r\n } else if (selectedOptionsString === \"\") {\r\n return [\"\"];\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private LoadData(recordIds: Array<number>) {\r\n var attachedField: any = _.first(this._model().Fields);\r\n if (this._el) {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n const requestData: IGetMultiSelectControlDataRequestModel = {\r\n FieldId: attachedField.Id,\r\n RecordIds: recordIds,\r\n ControlId: this.GetControlId(),\r\n ScreenData: this._form && this.GetDynamicFieldsData(),\r\n };\r\n\r\n const screen = this._form && this.GetForm().GetScreen();\r\n\r\n if (screen && screen.GetType() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n const linkEditor = screen as any;\r\n\r\n requestData.LeftEntityId = linkEditor.GetEntityId();\r\n requestData.RightEntityId = linkEditor.GetRelatedEntityId();\r\n requestData.LeftRecordId = linkEditor.GetRecordId();\r\n requestData.RightRecordId = linkEditor.GetRelatedRecordId();\r\n }\r\n\r\n MultiSelectDataStore.GetOptions(requestData)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((dataModel: MultiSelectListModel) => {\r\n this._totalRecordsCount = dataModel.RecordsCount;\r\n _.each(dataModel.Items,\r\n item => {\r\n item.IsSelected(recordIds.indexOf(item.RecordId) >= 0);\r\n });\r\n this.Items(dataModel.Items);\r\n this.UpdateSelectedItems();\r\n\r\n if (this._totalRecordsCount > this._searchScreenIfRecordsCount) {\r\n this._showSearchScreen(true);\r\n } else {\r\n this._showSearchScreen(false);\r\n }\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n SelectedOptionsToString(): string {\r\n var selectedItems = _.filter(this.Items(), item => {\r\n return item.IsSelected()\r\n });\r\n var value = '';\r\n _.each(selectedItems, item => {\r\n value = value + item.RecordId + this._separator;\r\n });\r\n return value;\r\n }\r\n\r\n Deserialize() {\r\n let field = _.first(this._model().Fields);\r\n\r\n if (field) {\r\n if (!this.GetCombinedReadOnly()) {\r\n let result = this.SelectedOptionsToString();\r\n return [`${field.EntityName}.${field.Name}`, result];\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n IsValid(): boolean {\r\n var selectedItems = _.filter(this.Items(), item => {\r\n return item.IsSelected()\r\n });\r\n if (this._isRequired) {\r\n this._isValid(selectedItems && selectedItems.length > 0);\r\n } else {\r\n this._isValid(true);\r\n }\r\n\r\n return this._isValid();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n SelectItem(item: ItemModel) {\r\n item.IsSelected(true);\r\n this.UpdateSelectedItems();\r\n this._value.push(item.RecordId);\r\n }\r\n\r\n RemoveItem(item: ItemModel) {\r\n item.IsSelected(false);\r\n this.UpdateSelectedItems();\r\n this._value.splice(this._value.indexOf(item.RecordId), 1);\r\n }\r\n\r\n UpdateSelectedItems() {\r\n var selectedItems = [];\r\n _.each(this.Items(),\r\n item => {\r\n if (item.IsSelected()) {\r\n selectedItems.push(item);\r\n }\r\n });\r\n this.SelectedItems(selectedItems);\r\n if (selectedItems.length == 0) {\r\n this._showMultiSelectText(true);\r\n } else {\r\n this._showMultiSelectText(false);\r\n }\r\n }\r\n\r\n GetValue(): any {\r\n let result = this.SelectedOptionsToString();\r\n return result;\r\n }\r\n\r\n IsModified(): boolean {\r\n let rightDifference = _.difference(this._value, this._originalValue);\r\n let leftDifference = _.difference(this._originalValue, this._value);\r\n\r\n return super.IsModified() || rightDifference.length > 0 || leftDifference.length > 0;\r\n\r\n }\r\n}\r\n","// Module\nvar code = \"<div class=\\\"multi-select-control clearfix\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }, style: {display: _display}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle\\\" class=\\\"multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> <!--ko foreach: SelectedItems --> <span data-bind=\\\"text: Label\\\" class=\\\"multi-option-item\\\"></span> <!--/ko--> </div> <!--/ko--> <!-- ko ifnot: _anySelectedItems --> <div data-bind=\\\"style: $data._textInputStyle, attr: {'data-text': $data.Label}\\\" class=\\\"empty multi-options-list textarea-control\\\"> <span class=\\\"search-caret\\\"></span> </div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: {'data-control-position': LabelPosition},\\r\\n\\t\\t\\t\\tstyle: {display: _display},\\r\\n\\t\\t\\t\\tcss: {'search-placeholder': _showSearchScreen,\\r\\n\\t\\t\\t\\t\\t\\t'has-error': !_isValid(),\\r\\n\\t\\t\\t\\t\\t\\t'full-width-control': FieldModel.FullWidth,\\r\\n\\t\\t\\t\\t\\t\\tdisabled: !_showSearchScreen() && !Items().length > 0 || GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView label-input form-standart-control dropdown-container multiselect clearfix\\\"> <!-- ko if: (!_isValid || Label)--> <label data-bind=\\\"style: _labelStyle\\\" class=\\\"multi-select-label\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <!-- ko if: !_isValid--> <i data-bind=\\\"tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> <!-- /ko --> </label> <!-- /ko --> <div class=\\\"multi-select-container\\\" data-bind=\\\"css: {'edit-screen__multi-select-dropdown': !_showSearchScreen()}\\\"> <div data-bind=\\\"attr: { 'data-val-search': _showSearchScreen() ? 'True' : 'False'},\\r\\n\\t\\t\\t\\t\\t\\tcss: { disabled: !_showSearchScreen() && !Items().length > 0 || GetCombinedReadOnly() }\\\" class=\\\"form-control multi-options-list textarea-control\\\"> <!-- ko foreach: SelectedItems --> <span class=\\\"multi-option-item\\\"> <!--ko ifnot: $parent.GetCombinedReadOnly()--> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\"><i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i></a> <!-- /ko --> <span><!--ko text: $parent.FormatValue(Label) --><!-- /ko --></span> </span> <!-- /ko --> <!-- ko if: _showMultiSelectText() --> <span class=\\\"selectText\\\" data-bind=\\\"text: !_showSearchScreen() && !Items().length > 0 || GetCombinedReadOnly() ? $data._labels.NO_RECORDS_TO_SELECT : $data._labels.SELECT_LABEL + '...'\\\"></span> <!-- /ko --> </div> <!-- ko if: _showSearchScreen() --> <!-- ko if: GetCombinedReadOnly() --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"css: { disabled: GetCombinedReadOnly() },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr : {'disabled' : GetCombinedReadOnly()}\\\"></span> <!-- /ko --> <!-- ko ifnot: GetCombinedReadOnly() --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _showSearchScreen() --> <span class=\\\"btn default dropdown-search-icon\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"><i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-ellipsis-v\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"multiSelect-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }\\\" class=\\\"FormDesignerView select-wrapper label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <span class=\\\"search-caret\\\"></span> <div data-bind=\\\"style: $data._textInputStyle, text: Label, css: {'with-icon': _isIconVisible}\\\" class=\\\"textarea-control form-control control record-field\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"checkbox-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }, style: { display: _display, backgroundColor: _backgroundColor }, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"EditScreenView clearfix form-standart-control label-input checkbox-control\\\"> <div class=\\\"clearfix checker\\\" data-bind=\\\"css: {'has-error': !_isValid()}\\\"> <label class=\\\"checker-container\\\"> <div data-bind=\\\"style: _labelStyle, text: Label, tooltip: DescriptionToolTip\\\" class=\\\"checkbox-label-name\\\"></div> <span class=\\\"checkedBox\\\" data-bind=\\\"css: {checked: IsChecked}\\\"> <input tabindex=\\\"1\\\" data-bind=\\\"hasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tchecked: IsChecked,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: { disabled: GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattr : {'disabled' : GetCombinedReadOnly()}\\\" type=\\\"checkbox\\\" class=\\\"control record-field\\\"/> </span> </label> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\n\r\nimport EditTemplate from 'Core/Controls/Checkbox/Templates/Edit.html';\r\nimport ViewTemplate from 'Core/Controls/Checkbox/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Checkbox/Templates/HelpView.html';\r\nimport ToolBarTemplate from 'Core/Controls/Checkbox/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Checkbox/Templates/Design.html';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {CONTROL_TYPES, FONT_STYLES} from \"../../Constant\";\r\nimport Config from 'Core/Controls/Checkbox/Configs/config.json';\r\n\r\nko.templates['Core/Controls/Checkbox/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Checkbox/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Checkbox extends BaseControl {\r\n\tprivate _checked: KnockoutObservable<boolean>;\r\n\tprivate _originalValue: boolean;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _textInputStyle: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis._checked = ko.observable(false);\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._textInputStyle = ko.observable(null);\r\n\t\tthis.Init();\r\n\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//BackgroundColor\r\n\t\t\tif (this.Properties.BackgroundColor) {\r\n\t\t\t\tconst backgroundColor = this.Properties.BackgroundColor;\r\n\t\t\t\tthis._backgroundColor(backgroundColor);\r\n\t\t\t}\r\n\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tvar labelStyle = {backgroundColor: null, color: null};\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.Properties) {\r\n\t\t\t//TextInput\r\n\t\t\tif (this.Properties.TextInput) {\r\n\t\t\t\tvar textInputStyle = {backgroundColor: null};\r\n\t\t\t\t_.each(this.Properties.TextInput.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\ttextInputStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._textInputStyle(textInputStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n\t\t\tthis.ApplyLinkEditorStyles();\r\n\t\t}\r\n\r\n\t\tif(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n\t}\r\n\r\n\tprivate ApplyLinkEditorStyles() {\r\n\t\tif(!this.FieldModel.HasLinkEditorVisibility){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst labelStyle = {\r\n\t\t\tcolor: null,\r\n\t\t\tfontWeight: null,\r\n\t\t\tfontStyle: null,\r\n\t\t\ttextDecoration: null\r\n\t\t};\r\n\t\tif (this.FieldModel.FontColor) {\r\n\t\t\tlabelStyle.color = this.FieldModel.FontColor;\r\n\t\t}\r\n\t\tlabelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n\t\tif (this.FieldModel.FontStyles) {\r\n\t\t\t_.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n\t\t\t\tswitch ( style.Name.toLowerCase() ) {\r\n\t\t\t\t\tcase FONT_STYLES.BOLD:\r\n\t\t\t\t\t\tlabelStyle.fontWeight = FONT_STYLES.BOLD;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.UNDERLINE:\r\n\t\t\t\t\t\tlabelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.ITALIC:\r\n\t\t\t\t\t\tlabelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.Extend(labelStyle, this._labelStyle());\r\n\t\tthis._labelStyle(labelStyle);\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tvar isChecked = value.Data ? value.Data.Value === 'True'\r\n\t\t\t|| value.Data.Value === true : false;\r\n\t\tthis._originalValue = isChecked;\r\n\r\n\t\tthis._checked(isChecked);\r\n\r\n\t\tthis._checked.subscribe(() => \r\n\t\t\tthis.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.Checkbox }, this._checked().toString())\r\n\t\t);\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tget IsChecked(): KnockoutObservable<boolean> {\r\n\t\treturn this._checked;\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tvar field = _.first(this._model().Fields);\r\n\t\tif (field) {\r\n\t\t\treturn [`${field.EntityName}.${field.Name}`, this._checked() ? 'True' : 'False'];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tIsModified(): boolean {\r\n\t\treturn super.IsModified() || this._originalValue !== this._checked();\r\n\t}\r\n\r\n\tGetValue(): any {\r\n\t\treturn this._checked();\r\n }\r\n\r\n IsValid(): boolean {\r\n \r\n if (this._isRequired) {\r\n this._isValid(this._checked());\r\n } else {\r\n this._isValid(true);\r\n }\r\n\r\n return this._isValid();\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"checkbox-control\\\" class=\\\"ToolBarPreview\\\"> <div data-bind=\\\"attr{ title: Label }\\\" class=\\\"control-preview-container\\\"> <i class=\\\"fa fa-check-square-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\" data-control-type=\\\"checkbox-control\\\" class=\\\"ConsultScreenView label-input clearfix form-standart-control\\\"> <div data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor }\\\" class=\\\"label label-input clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label class=\\\"checkbox-label\\\" data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span class=\\\"labelText\\\" data-bind=\\\"text: Label\\\"></span> </label> <input data-bind=\\\"checked: IsChecked\\\" type=\\\"checkbox\\\" class=\\\"control record-field\\\" disabled=\\\"disabled\\\"/> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"checkbox-control\\\" class=\\\"ConsultScreenView label-input clearfix form-standart-control\\\"> <div data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor }\\\" class=\\\"label label-input clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span class=\\\"labelText\\\" data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"checkbox\\\" class=\\\"control record-field\\\"/> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"checkbox-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input clearfix form-standart-control\\\"> <div data-bind=\\\"style: { display: _display }\\\" class=\\\"label label-input clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label class=\\\"checkbox-label\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"checkbox\\\" class=\\\"control record-field\\\" disabled=\\\"disabled\\\"/> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes} from 'Core/Constant';\r\n\r\nimport DateTimeConfig from 'Core/Controls/DateTime/Configs/date-time-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {ICON_CLASSES} from 'Core/Controls/DateTime/Icons';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport ViewTemplate from 'Core/Controls/DateTime/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/DateTime/Templates/HelpView.html';\r\nimport ToolBarTempalte from 'Core/Controls/DateTime/Templates/ToolBar.html';\r\nimport DesignTempalte from 'Core/Controls/DateTime/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/DateTime/Templates/Edit.html';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport { EVENTS } from 'Core/Screens/Events';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nko.templates['Core/Controls/DateTime/Templates/ToolBar'] = ToolBarTempalte;\r\nko.templates['Core/Controls/DateTime/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/DateTime/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/DateTime/Templates/Design'] = DesignTempalte;\r\nko.templates['Core/Controls/DateTime/Templates/Edit'] = EditTemplate;\r\n\r\nexport class DateTime extends BaseControl {\r\n\tprivate _value: KnockoutObservable<Date>;\r\n\tprivate _originalValue: string;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _textInputStyle: KnockoutObservable<any>;\r\n\tprivate _datetimeFormat: string;\r\n\tprivate _initialDateChange: boolean;\r\n\tprivate _skipTimeShifting: boolean;\r\n\tprivate _calculatedDependsOnValue: string;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, DateTimeConfig);\r\n\r\n\t\tthis._value = ko.observable(null);\r\n\t\tthis._initialDateChange = true;\r\n\r\n\t\tthis._skipTimeShifting = params.Model.SkipTimeShifting;\r\n\r\n\t\tthis.GetDateFormat();\r\n\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._textInputStyle = ko.observable(null);\r\n\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst screen = this._form && this._form.GetScreen();\r\n if (screen) {\r\n screen.On(EVENTS.DATA_CHANGED, this, (evt) => {\r\n if (evt.data && evt.data.ScreenVariable && this.FieldModel.FilledById != 0) {\r\n\r\n let dynamicField = _.find(this.FieldModel.DynamicFields, (field) => {\r\n return field === evt.data.ScreenVariable.Field.Id\r\n });\r\n\r\n if (dynamicField) {\r\n this.UpdateDependsOnValue();\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n\tprivate UpdateDependsOnValue() {\r\n\r\n\t\tthis.CalculateDependOnValue()\r\n\t\t.then(dependsOnValue=>{\r\n\t\t\tlet valueWithTimezone = this.PrepareValue(dependsOnValue)\r\n\t\t\tthis._originalValue = valueWithTimezone;\r\n\t\t\tthis._calculatedDependsOnValue = dependsOnValue;\r\n\t\t\tlet momentDate = moment(valueWithTimezone);\r\n\t\t\tif(momentDate.isValid()){\r\n\t\t\t\tthis._value(momentDate.toDate());\r\n\t\t\t}else{\r\n\t\t\t\tthis._value(null);\r\n\t\t\t}\t\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tGetDateFormat() {\r\n\t\tthis._datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(this.FieldModel, true, this._model());\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t// label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tconst labelStyle = {backgroundColor: null, color: null};\r\n\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.Properties) {\r\n\t\t\t// textInput\r\n\t\t\tif (this.Properties.TextInput) {\r\n\t\t\t\tconst textInputStyle = {backgroundColor: null};\r\n\r\n\t\t\t\t_.each(this.Properties.TextInput.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\ttextInputStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._textInputStyle(textInputStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n\t\t\tthis.ApplyLinkEditorStyles();\r\n\t\t}\r\n\r\n\t\tif(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n\t}\r\n\r\n\tprivate ApplyLinkEditorStyles() {\r\n\t\tif(!this.FieldModel.HasLinkEditorVisibility){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst labelStyle = {\r\n\t\t\tcolor: null,\r\n\t\t\tfontWeight: null,\r\n\t\t\tfontStyle: null,\r\n\t\t\ttextDecoration: null\r\n\t\t};\r\n\t\tif (this.FieldModel.FontColor) {\r\n\t\t\tlabelStyle.color = this.FieldModel.FontColor;\r\n\t\t}\r\n\t\tlabelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n\t\tif (this.FieldModel.FontStyles) {\r\n\t\t\t_.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n\t\t\t\tswitch ( style.Name.toLowerCase() ) {\r\n\t\t\t\t\tcase FONT_STYLES.BOLD:\r\n\t\t\t\t\t\tlabelStyle.fontWeight = FONT_STYLES.BOLD;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.UNDERLINE:\r\n\t\t\t\t\t\tlabelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.ITALIC:\r\n\t\t\t\t\t\tlabelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.Extend(labelStyle, this._labelStyle());\r\n\t\tthis._labelStyle(labelStyle);\r\n\t}\r\n\r\n\tSetValue(controlValue: IControlValue): void {\r\n\t\tif (controlValue.Data && controlValue.Data.Value) {\r\n\t\t\r\n\t\t\tlet valueWithTimezone = this.PrepareValue(controlValue.Data.Value)\r\n\t\t\tthis._value(moment(valueWithTimezone).toDate());\r\n\t\t\tthis._originalValue = valueWithTimezone;\r\n\t\t} else {\r\n\t\t\tthis._value(null);\r\n\t\t}\r\n\t\tthis._resetDependsOnValue(false);\r\n\t}\r\n\t\r\n ResetDependOnValue() {\r\n this.UpdateDependsOnValue();\r\n }\r\n\r\n\tPrepareValue(value: string){\r\n\t\tconst firstAttachedField = _.first(this._model().Fields);\r\n\t\tconst fieldType = firstAttachedField.FieldTypeName || this._model() && this._model().TypeName;\r\n\r\n\t\tvar valueWithTimezone = \r\n\t\t\tthis._datetimeFormat === DATE_FORMATS.TIME_SPAN.Format\r\n\t\t\t|| this._datetimeFormat === DATE_FORMATS.TIME_SPAN_LONG.Format\r\n\t\t\t|| fieldType === FIELD_TYPES.Date\r\n\t\t\t|| this._skipTimeShifting\r\n\t\t\t\t? value\r\n\t\t\t\t: FormatConverter.CorrectTimezone(value);\r\n\t\treturn valueWithTimezone;\t\t\t\t\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tconst field = _.first(this._model().Fields);\r\n\t\tconst saveValue = this.ConvertDateToUTC(this._value());\r\n\r\n\t\tif (field && !this._isReadonly) {\r\n\t\t\treturn [`${field.EntityName}.${field.Name}`, saveValue];\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tConvertDateToUTC(date: Date): string {\r\n\t\tif (!date) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn moment(date).format();\r\n\t}\r\n\r\n\tGetDateFormatIconClass(): string {\r\n\t\tconst iconClassName =\r\n\t\t\t(this.FormatName && this.FormatName !== 'None' && ICON_CLASSES[this.FormatName]) ||\r\n\t\t\t(this.FieldModel.FieldTypeName && ICON_CLASSES[this.FieldModel.FieldTypeName]) ||\r\n\t\t\tICON_CLASSES[this._model().TypeName];\r\n\r\n\t\treturn `${iconClassName} ${this.GetCombinedReadOnly() ? 'disabled' : ''}`;\r\n\t}\r\n\r\n\t// method fired when value was changed via datepicker UI either as value was setted from model at first time\r\n\tDateChanged(event): void {\r\n\t\t// return if date was changed after setting initial and value is not empty\r\n\t\tif (this._initialDateChange && this._value()) {\r\n\t\t\tthis._initialDateChange = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._initialDateChange = false;\r\n\r\n\t\t// update value with new date\r\n\t\tthis._value(event || null);\r\n\r\n\t\tconst saveValue = this.ConvertDateToUTC(this._value());\r\n\r\n\t\tthis.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.DateTime }, saveValue);\t\t\r\n\t}\r\n\r\n\tIsModified(): boolean {\r\n\t\tconst saveValue = this.ConvertDateToUTC(this._value());\r\n\r\n\t\tif (this._originalValue != saveValue && (!this._originalValue || !saveValue)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tconst difference = moment(saveValue).diff(moment(this._originalValue));\r\n\r\n\t\treturn !!difference || super.IsModified();\r\n\t}\r\n\r\n\tGetValue(): any {\r\n\t\treturn this.ConvertDateToUTC(this._value());\r\n\t}\r\n\r\n\tGetDisplayValue(): any {\r\n\t\tconst value = this._value();\r\n\r\n\t\treturn value && moment(value).format(this._datetimeFormat);\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tthis._isValid(!this._isRequired || !!this._value());\r\n\r\n\t\treturn this._isValid();\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n}","// Module\nvar code = \"<div data-control-type=\\\"datetime-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calendar\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-control-type=\\\"datetime-control\\\" data-bind=\\\"blockElement: $data._isDataLoading, style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"date-time-control-container\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tdatetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\tvalue: $data._value,\\r\\n\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\tlocale: $data.GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\tformat: $data._datetimeFormat\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"form-standart-control ConsultScreenView label-input control input-group date form_datetime date-time-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: $data._value --> <input autocomplete=\\\"off\\\" type=\\\"text\\\" data-bind=\\\"style: _textInputStyle,\\r\\n\\t\\t\\t \\t\\t\\t\\tcss: {passwordRefreshedInput: Label().toLowerCase() === 'passwordrefresh'}\\\" class=\\\"control form-control record-field datepickerinput\\\" readonly=\\\"readonly\\\"> <!-- /ko --> <!-- ko ifnot: $data._value --> <input autocomplete=\\\"off\\\" type=\\\"text\\\" data-bind=\\\"attr: {value: Label}\\\" class=\\\"control form-control record-field placeholder\\\" readonly=\\\"readonly\\\"> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"datetime-control\\\" class=\\\"date-time-control-container new-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }, {display: _display}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\" data-bind=\\\"style: _textInputStyle,\\r\\n text: Label\\\"> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"datetime-control\\\" class=\\\"date-time-control-container new-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition, 'title': Label }, {display: _display}\\\" class=\\\"FormDesignerView form-designer-view text-center calendar-control form-standart-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <span data-bind=\\\"style: _textInputStyle\\\" class=\\\"image-background\\\"><img alt=\\\"ImageControl\\\" class=\\\"\\\" src=\\\"/img/Custom/Calendar-Time-256x256.png\\\"/></span> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-bind=\\\"blockElement: $data._isDataLoading, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" data-control-type=\\\"datetime-control\\\" class=\\\"EditScreenView datetime-control-container\\\"> <div data-bind=\\\"css: {'has-error': !_isValid()},\\r\\n\\t\\t\\t\\t\\tattr: { 'data-control-position': LabelPosition }\\\" class=\\\"control label-input form-standart-control\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <div data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: $data._value,\\r\\n\\t\\t\\t\\t\\t\\t\\tfieldModel: $data.FieldModel,\\r\\n\\t\\t\\t\\t\\t\\t\\tonUpdate: $data.DateChanged.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tonClear: $data.DateChanged.bind($data, null),\\r\\n\\t\\t\\t\\t\\t\\t\\tnotFormatted: true,\\r\\n\\t\\t\\t\\t\\t\\t\\tchangeTheCaret: true,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlocale: $data.GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: $data._datetimeFormat,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thorizontal: 'right',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvertical: 'bottom',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tforceParse: false\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\\" class=\\\"input-group date form_datetime date-time-control control record-field with-label\\\"> <input data-bind=\\\"hasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t attr: { 'readonly': GetCombinedReadOnly(), 'required': _isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1 },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tcss: {'isDependsOnValue': EnableResetDependOnValue && _resetDependsOnValue}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"control form-control record-field datepickerinput\\\"> <div class=\\\"datetime-controls\\\"> <span data-bind=\\\"css: { 'disabled': GetCombinedReadOnly() }\\\" class=\\\"btn default glyphicon glyphicon-trash date-remove\\\"> </span> <span class=\\\"input-group-addon custom time-picker-button\\\"> <span data-bind=\\\"css: $data.GetDateFormatIconClass()\\\" class=\\\"btn default date-set glyphicon\\\"></span> </span> <!-- ko if: EnableResetDependOnValue --> <!-- ko if: _resetDependsOnValue --> <span class=\\\"btn default resetDependOnValueBtn\\\" data-bind=\\\"click: $data.ResetDependOnValue\\\"> <i class=\\\"fa fa-refresh\\\"></i> </span> <!--/ko--> <!--/ko--> </div> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport class ItemModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n}\r\n\r\nexport class RadioButtonOptionsModel {\r\n\t@deserializeAs(ItemModel)\r\n\tItems: Array<ItemModel>;\r\n\r\n\t@deserialize\r\n\tRecordsCount: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n}\r\n","import {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {URL} from \"Core/Common/Url\";\r\n\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\n\r\nimport {IGetRadioButtonControlDataRequestModel} from \"Core/Controls/RadioButton/Models/Request/IGetRadioButtonControlDataRequestModel\";\r\nimport {RadioButtonOptionsModel} from \"Core/Controls/RadioButton/Models/Data/RadioButtonOptionsModel\";\r\n\r\n\r\nexport class RadioButtonDataStore {\r\n static GetOptions(params: IGetRadioButtonControlDataRequestModel): P.Promise<any> {\r\n let deferredResult = P.defer();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/ScreenFormApi/GetRadioData',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data.ResultObject));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static Deserialize(jsonObject: any): RadioButtonOptionsModel {\r\n var model = GenericDeserialize<RadioButtonOptionsModel>(jsonObject, RadioButtonOptionsModel);\r\n return model;\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class RadioButtonOptionViewModel {\r\n\tText: string;\r\n\tValue: number;\r\n\tprivate _isSelected: KnockoutObservable<boolean> = ko.observable(false);\r\n\tprivate _isEnabled: boolean;\r\n\r\n\tconstructor(params?: IRadioButtonViewModelParams) {\r\n\t\tif (params) {\r\n\t\t\tthis.Text = params.Text;\r\n\t\t\tthis.Value = params.Value;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic Create(value: number, text: string, isEnabled: boolean, isSelected: boolean) {\r\n\t\tconst item = new RadioButtonOptionViewModel();\r\n\r\n\t\titem.Value = value;\r\n\t\titem.Text = text;\r\n\t\titem._isEnabled = isEnabled;\r\n\t\titem._isSelected(isSelected);\r\n\r\n\t\treturn item;\r\n\t}\r\n}\r\n\r\nexport interface IRadioButtonViewModelParams {\r\n\tText: string;\r\n\tValue: number;\r\n}","// Module\nvar code = \"<div class=\\\"EditScreenView label-input clearfix text-control\\\" data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'full-width-control': FieldModel.FullWidth,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'searchMod': _showSearchScreenButton}\\\"> <div class=\\\"radio-list radio-button-control form-standart-control\\\" data-bind=\\\"css: {'has-error': !_isValid(),\\r\\n\\t\\t \\t\\t\\t\\t\\t'radio-button-container': !_showSearchScreenButton()},\\r\\n\\t\\t \\t\\t\\tattr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t \\t\\t\\tstyle: {display: _display}\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <!-- ko if: _showSearchScreenButton() --> <!--ko template: {html: GetSearchTemplate, afterRender: AfterSearchTemplateRender.bind($data)}--><!--/ko--> <!-- /ko --> <!-- ko ifnot: _showSearchScreenButton() --> <div class=\\\"radio-button-control form-control\\\"> <!--ko template: {html: GetRadioButtonTemplate}--><!--/ko--> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isReady --> <div class=\\\"dropdown-wraper input-group\\\"> <!--ko if: $data.FieldModel.AllowCustomValue--> <input type=\\\"text\\\" data-bind=\\\"\\r\\n\\t\\t \\t\\tvalue: _selectedValueLabel,\\r\\n\\t\\t \\t\\tevent: {change: AddCustomValue.bind($data, $data._selectedValueLabel())},\\r\\n\\t\\t \\t\\tstyle: $data._textInputStyle,\\r\\n\\t\\t \\t\\tattr: {'disabled': $data.GetCombinedReadOnly(), 'required': $data._isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t \\t\\t 'placeholder': _labels.SELECT_LABEL + '...'},\\r\\n\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()},\\r\\n\\t\\t\\t\\thasFocus: $data.IsFocused\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--/ko--> <!--ko ifnot: $data.FieldModel.AllowCustomValue--> <!--ko ifnot: GetCombinedReadOnly() --> <div data-val-search=\\\"True\\\" data-bind=\\\"style: $data._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\thasFocus: $data.IsFocused,\\r\\n\\t\\t\\t\\t\\t\\tevent: { click: $data.ShowSearchScreen.bind($data)},\\r\\n\\t\\t\\t\\t\\t\\tenterKey: $data.ShowSearchScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tattr: {'disabled': $data.GetCombinedReadOnly(), 'required': $data.GetCombinedReadOnly(), 'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span class=\\\"selectedItem\\\" data-bind=\\\"text: _selectedItem().Text\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"selectText\\\" data-bind=\\\"text: _labels.SELECT_LABEL + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <div data-val-search=\\\"\\\" data-bind=\\\"attr: {'disabled': $data.GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t'required': $data._isRequired,\\r\\n\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'disabled': GetCombinedReadOnly()}\\\" class=\\\"textarea-control form-control control record-field dropdown-search-wrapper\\\"> <!--ko if: _selectedItem--> <span class=\\\"selectedItem\\\" data-bind=\\\"text: _selectedItem().Text\\\"></span> <!--/ko--> <!--ko ifnot: _selectedItem--> <span class=\\\"empty-value\\\" data-bind=\\\"text: _labels.EMPTY_VALUE + '...'\\\"></span> <!--/ko--> </div> <!--/ko--> <!--/ko--> <div class=\\\"dropdown-controls\\\"> <!--ko ifnot: GetCombinedReadOnly() --> <span data-bind=\\\"event: { click: $data.ShowSearchScreen.bind($data)}\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!--ko if: GetCombinedReadOnly() --> <span data-bind=\\\"css: { 'disabled': $data.GetCombinedReadOnly() }\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> <!--/ko--> <!-- ko if: _clearAllowed() && _selectedItem()--> <a data-bind=\\\"click: $data.ResetSelection.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only btn-reset red\\\"><i class=\\\"fa fa-times\\\"></i></a> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: (Items().length > 0)--> <div data-bind=\\\"foreach: Items\\\" class=\\\"radio-list control record-field\\\"> <div class=\\\"radio-item\\\"> <span class=\\\"radioInputTypeRadio\\\"> <input tabindex=\\\"1\\\" data-bind=\\\"attr: { name: 'radio-button-' + $parent._guid, 'disabled': $parent.GetCombinedReadOnly(), 'required': $parent._isRequired },\\r\\n\\t\\t\\t\\t\\t\\t \\t\\t\\t value: Value, checked: $parent._value\\\" type=\\\"radio\\\" class=\\\"control record-field radio-btn-item\\\"/> </span> <span class=\\\"radioItem-text\\\" data-bind=\\\"text: Text\\\"></span> </div> </div> <!--/ko--> <!--ko ifnot: _isValueSet --> <label>Radio button control</label> <!--/ko--> <!--ko if: _isItemsEmpty --> <label>Incorrect lookup for radio button</label> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {SubForm} from \"Core/Screens/Forms/SubForm/SubForm\";\r\nimport {IControlParam, ISearchScreenParam} from \"Core/Screens/IScreen\";\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_STYLES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {RadioButtonDataStore} from \"Core/Controls/RadioButton/Stores/RadioButtonDataStore\";\r\n\r\nimport {RadioButtonOptionsModel} from \"Core/Controls/RadioButton/Models/Data/RadioButtonOptionsModel\";\r\nimport {RadioButtonOptionViewModel} from \"Core/Controls/RadioButton/Models/View/RadioButtonOptionViewModel\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\n\r\nimport EditTemplate from \"Core/Controls/RadioButton/Templates/Edit.html\";\r\nimport HelpViewTemplate from \"Core/Controls/RadioButton/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/RadioButton/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/RadioButton/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/RadioButton/Templates/Design.html\";\r\nimport SearchTemplate from 'Core/Controls/RadioButton/Templates/Search.html';\r\nimport RadioButtonTemplate from 'Core/Controls/RadioButton/Templates/RadioButton.html';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {IGetRadioButtonControlDataRequestModel} from './Models/Request/IGetRadioButtonControlDataRequestModel';\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nko.templates[\"Core/Controls/RadioButton/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/RadioButton/Templates/Design\"] = DesignTemplate;\r\nko.templates['Core/Controls/RadioButton/Templates/Search'] = SearchTemplate;\r\nko.templates['Core/Controls/RadioButton/Templates/RadioButton'] = RadioButtonTemplate;\r\n\r\nexport class RadioButton extends BaseControl {\r\n private _originalValue: any;\r\n private _value: KnockoutObservable<any>;\r\n private _subjectRecordId: number;\r\n private _isItemsEmpty: KnockoutObservable<boolean>;\r\n private _isValueSet: KnockoutObservable<boolean>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n Items: KnockoutObservableArray<RadioButtonOptionViewModel>;\r\n private _showSearchScreenButton: KnockoutObservable<boolean>;\r\n private _items: KnockoutObservableArray<RadioButtonOptionViewModel>;\r\n private _selectedItem: KnockoutObservable<RadioButtonOptionViewModel>;\r\n private _selectedValueId: KnockoutObservable<number>;\r\n private _selectedValueLabel: KnockoutObservable<string>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _searchScreeen: SearchScreen;\r\n private _totalRecordsCount: number;\r\n private _searchTerm: string;\r\n private _isEnableFilter: KnockoutObservable<boolean>;\r\n private _clearAllowed: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n protected _guid: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._isItemsEmpty = ko.observable(false);\r\n this.Items = ko.observableArray([]);\r\n this._value = ko.observable(null);\r\n this._guid = Guid.NewGuid();\r\n this._isValueSet = ko.observable(false);\r\n this._labelStyle = ko.observable(null);\r\n this._showSearchScreenButton = ko.observable(false);\r\n this._selectedItem = ko.observable(null);\r\n this._selectedValueId = ko.observable(null);\r\n this._selectedValueLabel = ko.observable(null);\r\n this._clearAllowed = ko.observable(false);\r\n this._totalRecordsCount = 0;\r\n this._searchTerm = '';\r\n this._isEnableFilter = ko.observable(true);\r\n this._isReady = ko.observable(true);\r\n var searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n this.InitChangeEvent();\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n GetRadioButtonTemplate() {\r\n return RadioButtonTemplate;\r\n }\r\n\r\n GetSearchTemplate() {\r\n return SearchTemplate;\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n AfterSearchTemplateRender() {\r\n this._el.dispatchEvent(\r\n new CustomEvent('resizeTable', {\r\n bubbles: true,\r\n cancelable: true\r\n })\r\n );\r\n }\r\n\r\n InitChangeEvent() {\r\n this._value.subscribe((newValue) => {\r\n var value = newValue ? String(newValue) : null;\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.RadioButton }, value);\r\n });\r\n }\r\n\r\n ResetSelection(data) {\r\n this._isReady(false);\r\n const recordId = 0;\r\n\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n this._value(null);\r\n\r\n this._form && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n this._isReady(true);\r\n }\r\n\r\n\r\n ShowSearchScreen(model, evt) {\r\n if (this._totalRecordsCount > this._searchScreenIfRecordsCount) {\r\n let attachedFieldModel = this.FieldModel;\r\n if (attachedFieldModel) {\r\n let params: ISearchScreenParam = {\r\n EntityId: attachedFieldModel.ValTableId,\r\n SearchTerm: this._searchTerm,\r\n EntityType: attachedFieldModel.ValTableType,\r\n SearchFieldId: attachedFieldModel.ValFieldId,\r\n ControlId: this._isEnableFilter() ? this.GetControlId() : 0,\r\n ScreenData: this.GetDynamicFieldsData(),\r\n ButtonAdd: false\r\n };\r\n\r\n if (this._form && this.FieldModel.ValTableType === TABLE_TYPES.Entity) {\r\n params = _.extend(params, {\r\n SubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId()\r\n });\r\n }\r\n\r\n this._searchScreeen = new SearchScreen(params);\r\n this._searchScreeen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n const recordId = evtArgs.data.RecordId;\r\n this.ReplaceSelectedValue(recordId);\r\n });\r\n this._searchScreeen.Show();\r\n }\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n private ReplaceSelectedValue(recordId: number) {\r\n const valFieldId = this.FieldModel.ValFieldId;\r\n if (this._el) {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n RecordStore.GetRecord({TableId: this.FieldModel.ValTableId, RecordId: recordId})\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n this._el.dispatchEvent(\r\n new CustomEvent('resizeTable', {\r\n bubbles: true,\r\n cancelable: true\r\n })\r\n );\r\n })\r\n .then((record: any) => {\r\n this._selectedItem(null);\r\n this._selectedValueId(null);\r\n this._selectedValueLabel(null);\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === valFieldId);\r\n\r\n if (selected) {\r\n\r\n selected.FieldValue = this.PrepareFormattedValue(selected.FieldValue, selected.FieldValue, selected.FieldTypeName);\r\n const itemTranslation = _.find(selected.FieldValueTranslations, (item: any) => item.Selected);\r\n selected.FieldValue = itemTranslation && itemTranslation.Value ? itemTranslation.Value : selected.FieldValue;\r\n\r\n const newItem = RadioButtonOptionViewModel.Create(recordId, selected.FieldValue ? selected.FieldValue : LABELS.EMPTY_VALUE, true, true);\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.Value);\r\n this._selectedValueLabel(newItem.Text);\r\n this._value(newItem.Value);\r\n\r\n this._form && this.GetForm().GetScreen().UpdateDependsOnValues(recordId, this.FieldModel.Id);\r\n }\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n const newItem = RadioButtonOptionViewModel.Create(recordId, NOTIFICATIONS.RECORD_NOT_FOUND, true, true);\r\n\r\n this._selectedItem(newItem);\r\n this._selectedValueId(newItem.Value);\r\n this._selectedValueLabel(newItem.Text);\r\n this._value(newItem.Value);\r\n\r\n this.Items().push(newItem);\r\n this.Items(this.Items());\r\n\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error applying created record');\r\n }\r\n });\r\n }\r\n\r\n private PrepareFormattedValue(value, displayValue, type) {\r\n let result = displayValue;\r\n if (this.IsDate(type)) {\r\n const datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(\r\n {Type: type, FormatName: this.FieldModel.ValFieldFormatName},\r\n true\r\n );\r\n\r\n if (this.HasTime(type))\r\n value = FormatConverter.CorrectTimezone(value);\r\n\r\n result = moment(value).isValid() ? moment(value).format(datetimeFormat) : value;\r\n } else if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], type)) {\r\n result = FormatConverter.LocalizeDecimalOrInteger(\r\n displayValue && this.FieldModel.ValFieldFormatName === 'Percentage'\r\n ? (Number(displayValue.replace(/[.,]/g, '.')) * 100).toFixed(\r\n this.FieldModel.ValFieldSize < 2 ? 0 : this.FieldModel.ValFieldSize - 2\r\n )\r\n : displayValue\r\n );\r\n }\r\n\r\n return result ? result : \"\";\r\n }\r\n\r\n private IsDate(fieldType: string) {\r\n return fieldType === FIELD_TYPES.Date ||\r\n fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time ||\r\n fieldType === FIELD_TYPES.TimeSpan;\r\n }\r\n\r\n private HasTime(fieldType: string) {\r\n return fieldType === FIELD_TYPES.DateTime ||\r\n fieldType === FIELD_TYPES.Time;\r\n }\r\n\r\n private LoadData(recordId: number): P.Promise<any> {\r\n let attachedField = this.FieldModel;\r\n let deferredResult = P.defer();\r\n\r\n\r\n this._clearAllowed(!(attachedField.IsRequired || attachedField.IsReadOnly || attachedField.IsSystem));\r\n\r\n if (attachedField) {\r\n if (this._el) {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n const getDataRequestModel: IGetRadioButtonControlDataRequestModel = {\r\n FieldId: attachedField.Id,\r\n ControlId: this.GetControlId()\r\n };\r\n\r\n const screen = this._form && this.GetForm().GetScreen();\r\n\r\n if (screen && screen.GetType() === ScreenTypes[ScreenTypes.LinkEditor]) {\r\n const linkEditor = screen as any;\r\n\r\n getDataRequestModel.LeftEntityId = linkEditor.GetEntityId();\r\n getDataRequestModel.RightEntityId = linkEditor.GetRelatedEntityId();\r\n getDataRequestModel.LeftRecordId = linkEditor.GetRecordId();\r\n getDataRequestModel.RightRecordId = linkEditor.GetRelatedRecordId();\r\n getDataRequestModel.Kseq = linkEditor.GetKseq();\r\n }\r\n\r\n RadioButtonDataStore.GetOptions(getDataRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((dataModel: RadioButtonOptionsModel) => {\r\n this._totalRecordsCount = dataModel.RecordsCount;\r\n this._showSearchScreenButton(this._totalRecordsCount > this._searchScreenIfRecordsCount);\r\n let options = dataModel.Items.map(option =>\r\n new RadioButtonOptionViewModel({\r\n Text: option.Label ? option.Label : LABELS.EMPTY_VALUE,\r\n Value: option.RecordId\r\n }));\r\n\r\n if (!attachedField.IsRequired && !attachedField.IsSystem && !attachedField.IsReadOnly) {\r\n options.push(new RadioButtonOptionViewModel({\r\n Text: LABELS.SELECT_LABEL + '...',\r\n Value: null\r\n }));\r\n }\r\n\r\n this.Items(options);\r\n\r\n deferredResult.resolve({});\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n deferredResult.reject(error);\r\n });\r\n } else {\r\n deferredResult.reject({message: \"Relation is not setup\"});\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._isValueSet(true);\r\n\r\n let selectedValue = null;\r\n if (value.Data && isNaN(parseInt(value.Data.Value))) {\r\n selectedValue = null;\r\n } else {\r\n selectedValue = parseInt(value.Data.Value);\r\n }\r\n\r\n let recordId = value.SubjectRecordId;\r\n if (!this.ItemsAreLoaded()) {\r\n this.LoadData(recordId).then(() => {\r\n this._originalValue = selectedValue;\r\n this._value(selectedValue);\r\n if (this.Items.length == 0 && selectedValue != null) {\r\n this.ReplaceSelectedValue(selectedValue);\r\n }\r\n }).fail(() => this._isItemsEmpty(true));\r\n }\r\n }\r\n\r\n Deserialize() {\r\n let attachedField = this.FieldModel;\r\n\r\n if (attachedField) {\r\n if (!this.GetCombinedReadOnly()) {\r\n return [`${attachedField.EntityName}.${attachedField.Name}`, this._value() || \"\"];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private ItemsAreLoaded(): boolean {\r\n return this.Items().length > 0;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._isRequired) {\r\n if (this._value()) {\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n }\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n GetValue() {\r\n if (this._value()) {\r\n return this._value();\r\n }\r\n return null;\r\n }\r\n\r\n GetDisplayValue(): string {\r\n if (this._value()) {\r\n const selectedValue = this.Items().find(item => item.Value == this._value());\r\n return selectedValue ? selectedValue.Text : this._selectedValueLabel();\r\n }\r\n return null;\r\n }\r\n\r\n IsModified(): boolean {\r\n let originalValue = this._originalValue,\r\n newValue = this._value();\r\n\r\n if (isNaN(originalValue))\r\n originalValue = 'valueNaN';\r\n\r\n if (isNaN(newValue))\r\n newValue = 'valueNaN';\r\n\r\n return super.IsModified() || originalValue != newValue;\r\n }\r\n} ","// Module\nvar code = \"<div class=\\\"clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t \\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t \\t\\t\\t\\tstyle: {display: _display},\\r\\n\\t\\t\\t\\t\\tcss: {'radio-button-container': !_showSearchScreenButton()}\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko ifnot: _showSearchScreenButton() --> <!--ko if: (Items().length > 0)--> <div class=\\\"radio-button-control form-control\\\"> <div data-bind=\\\"foreach: Items\\\" class=\\\"radio-list control record-field\\\"> <div class=\\\"radio-item\\\"> <span> <input data-bind=\\\"attr: { name: 'radio-button-' + $parent.GetControlId()}, value: Value, checked: $parent._value\\\" disabled=\\\"disabled\\\" type=\\\"radio\\\" class=\\\"control record-field radio-btn-item\\\"/> </span> <span data-bind=\\\"text: Text\\\"></span> </div> </div> </div> <!--/ko--> <!--ko ifnot: (Items().length > 0)--> <div data-bind=\\\"style: $data._textInputStyle, attr: {'data-text': $data.Label}\\\" class=\\\"empty multi-options-list textarea-control\\\"> </div> <!--/ko--> <!--/ko--> <!-- ko if: _showSearchScreenButton() --> <!-- ko if: _selectedItem --> <div data-bind=\\\"style: $data._textInputStyle\\\" class=\\\"multi-options-list textarea-control\\\"> <span class=\\\"selectedItem\\\" data-bind=\\\"text: _selectedItem().Text\\\"></span> </div> <!--/ko--> <!-- ko ifnot: _selectedItem --> <div data-bind=\\\"attr: {'data-text': _labels.EMPTY_VALUE}\\\" class=\\\"empty multi-options-list textarea-control\\\"> </div> <!--/ko--> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input clearfix form-standart-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"radio\\\" class=\\\"control record-field input-radio\\\" disabled=\\\"disabled\\\"/> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <div data-bind=\\\"attr: { title: Label }\\\" class=\\\"control-preview-container\\\"> <i class=\\\"fa fa-dot-circle-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input clearfix form-standart-control\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <input type=\\\"radio\\\" class=\\\"control record-field input-radio\\\" disabled=\\\"disabled\\\"/> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport GroupConfig from 'Core/Controls/Group/Configs/group-config.json';\r\nimport {PROPERTIES} from \"Core/Controls/Group/Constants\";\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport 'Core/Controls/Group/Templates/Edit.html';\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Group/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/Group/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Group/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Group/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/Group/Templates/Edit.html';\r\n\r\nko.templates['Core/Controls/Group/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Group/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Group/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Group/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Group/Templates/Edit'] = EditTemplate;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class Group extends BaseControl {\r\n\tprivate _controlContainerWidth: KnockoutObservable<number>\r\n\tprivate _controlLabelWidth: KnockoutObservable<number>\r\n\tprivate _elem: KnockoutObservableArray<HTMLElement>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, GroupConfig);\r\n\t\tthis._controlContainerWidth = ko.observable(null);\r\n\t\tthis._controlLabelWidth = ko.observable(null);\r\n\t\tthis._elem = ko.observableArray(null);\r\n\t\tthis.Init();\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tif (this._renderMode() === RenderModes.Design) {\r\n\t\t\tthis._model.subscribe(() => this.Init());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Appearance && this.Properties.Appearance.Properties) {\r\n\t\t\t\tthis._webSizeValue = this.GeneralProperties.GetPropertyValue(PROPERTIES.GROUP_WEB_SIZE);\r\n\t\t\t\tthis._isWrapped(this.GeneralProperties.GetPropertyValue(PROPERTIES.GROUP_WRAPPED));\r\n\r\n\t\t\t\tthis._form && this._form.Wrap(this, this._isWrapped());\r\n\t\t\t\tif (this._parentControl) {\r\n\t\t\t\t\tthis._parentControl.SetWebSizeValue(this._webSizeValue);\r\n\t\t\t\t\tthis._parentControl.SetIsWrapped(this._isWrapped());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetWidth(): string {\r\n\t\tif (this._webSizeValue){\r\n\t\t\tif (this._isWrapped()){\r\n\r\n\t\t\t\tif (this._webSizeValue.Value == 100 && this._webSizeValue.Unit.Value == '%'){\r\n\t\t\t\t\treturn `${this._webSizeValue.Value}${this._webSizeValue.Unit.Value}`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn `calc(${this._webSizeValue.Value}${this._webSizeValue.Unit.Value} - 5px)`;\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\treturn `${this._webSizeValue.Value}${this._webSizeValue.Unit.Value}`;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn \"100%\";\r\n\t\t}\r\n\t}\r\n\r\n\tGetWrapped():boolean{\r\n\t\tif (this._isWrapped() && this._webSizeValue){\r\n\t\t\treturn !(this._webSizeValue.Value == 100 && this._webSizeValue.Unit.Value == '%');\r\n\t\t} else {\r\n\t\t\treturn this._isWrapped();\r\n\t\t}\r\n\t}\r\n\r\n\tget IsWrapped():boolean{\r\n\t\treturn this.GetWrapped();\r\n\t}\r\n\r\n\tget Width(): string {\r\n\t\treturn this.GetWidth();\r\n\t}\r\n\r\n\tSetValue(value: any): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._elem().length === 0){\r\n\t\t\tthis._elem(el);\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-object-group\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ConsultScreenView EditScreenView\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <fieldset class=\\\"group-control\\\"> <!-- ko if: !!Label --> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: Label\\\"></legend> <!-- /ko --> <div class=\\\"group-elements\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ConsultScreenView EditScreenView group-control--container\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'width': Width},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'isWrapped': IsWrapped}\\\"> <fieldset class=\\\"group-control\\\"> <!-- ko if: !!Name --> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: Name\\\"></legend> <!-- /ko --> <div class=\\\"group-elements\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"FormDesignerView group-control--container\\\"> <fieldset class=\\\"group-control grid\\\"> <!-- ko if: !!Label --> <legend class=\\\"group-control-label\\\"> <!-- ko text: Label --><!-- /ko --> </legend> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"group-elements dropcontrol-container group-elements\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ConsultScreenView EditScreenView group-control--container\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'width': Width},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'isWrapped': IsWrapped}\\\"> <fieldset class=\\\"group-control\\\"> <!-- ko if: !!Name --> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: Name\\\"></legend> <!-- /ko --> <div class=\\\"group-elements\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div>\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n GROUP_WEB_SIZE: 'GroupWebSize',\r\n GROUP_WRAPPED: 'GroupWrapped'\r\n};","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\tcss: {\\r\\n\\t\\t'aling-left': $data._alignment() === 'text-left',\\r\\n\\t \\t'aling-center': $data._alignment() === 'text-center',\\r\\n\\t \\t'aling-right': $data._alignment() === 'text-right'\\r\\n\\t }\\\" class=\\\"ConsultScreenView EditScreenView FormDesignerView new-control label-control\\\"> <label data-bind=\\\"text: Name, tooltip: DescriptionToolTip,\\r\\n\\t\\t \\t css: {\\r\\n\\t\\t'underlined': $data._isUnderlined,\\r\\n\\t\\t'h1': $data._selectHeader() === 'h1',\\r\\n\\t \\t'h2': $data._selectHeader() === 'h2',\\r\\n\\t \\t'h3': $data._selectHeader() === 'h3',\\r\\n\\t \\t'h4': $data._selectHeader() === 'h4',\\r\\n\\t \\t'h5': $data._selectHeader() === 'h5',\\r\\n\\t \\t'h6': $data._selectHeader() === 'h6'\\r\\n\\t }\\\" class=\\\"header-number selectHeaderBtn\\\"></label> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport LabelConfig from \"Core/Controls/Label/Configs/label-config.json\";\r\n\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Label/Templates/HelpView.html'\r\nimport ViewTemplate from 'Core/Controls/Label/Templates/View.html'\r\nimport ToolBarTemplate from 'Core/Controls/Label/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Label/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/Label/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Label/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Label/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Label/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Label/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Label extends BaseControl {\r\n\tprivate _isUnderlined: KnockoutObservable<boolean>;\r\n\tprivate _alignment: KnockoutObservable<string>;\r\n\tprivate _selectHeader: KnockoutObservable<string>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, LabelConfig);\r\n\r\n\t\tthis._isUnderlined = ko.observable(null);\r\n\t\tthis._selectHeader = ko.observable('h3');\r\n\t\tthis._alignment = ko.observable(null);\r\n\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tlet headerProperty = this.GeneralProperties.GetPropertyValue(\"SelectHeader\");\r\n\t\tlet underlinedButtonProperty = this.GeneralProperties.GetPropertyValue(\"UnderlinedButton\");\r\n\t\tlet selectAlignmentProperty = this.GeneralProperties.GetPropertyValue(\"SelectAlignment\");\r\n\t\t\t\r\n\t\tthis._isUnderlined(underlinedButtonProperty);\r\n\t\tthis._selectHeader(headerProperty ? headerProperty.Value : null);\r\n\t\tthis._alignment(selectAlignmentProperty ? selectAlignmentProperty.Value : null);\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: {\\r\\n\\t\\t'aling-left': $data._alignment() === 'text-left',\\r\\n\\t \\t'aling-center': $data._alignment() === 'text-center',\\r\\n\\t \\t'aling-right': $data._alignment() === 'text-right'\\r\\n\\t }\\\" class=\\\"ConsultScreenView EditScreenView FormDesignerView new-control margin-b-5px label-control\\\"> <label data-bind=\\\"text: Label,\\r\\n\\t\\t \\t css: {\\r\\n\\t\\t'underlined': $data._isUnderlined,\\r\\n\\t\\t'h1': $data._selectHeader() === 'h1',\\r\\n\\t \\t'h2': $data._selectHeader() === 'h2',\\r\\n\\t \\t'h3': $data._selectHeader() === 'h3',\\r\\n\\t \\t'h4': $data._selectHeader() === 'h4',\\r\\n\\t \\t'h5': $data._selectHeader() === 'h5',\\r\\n\\t \\t'h6': $data._selectHeader() === 'h6'\\r\\n\\t }\\\" class=\\\"header-number selectHeaderBtn\\\"></label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: {\\r\\n\\t\\t'aling-left': $data._alignment() === 'text-left',\\r\\n\\t \\t'aling-center': $data._alignment() === 'text-center',\\r\\n\\t \\t'aling-right': $data._alignment() === 'text-right'\\r\\n\\t }\\\" class=\\\"ConsultScreenView EditScreenView FormDesignerView new-control margin-b-5px label-control\\\"> <label data-bind=\\\"text: Name,\\r\\n\\t\\t \\t css: {\\r\\n\\t\\t'underlined': $data._isUnderlined,\\r\\n\\t\\t'h1': $data._selectHeader() === 'h1',\\r\\n\\t \\t'h2': $data._selectHeader() === 'h2',\\r\\n\\t \\t'h3': $data._selectHeader() === 'h3',\\r\\n\\t \\t'h4': $data._selectHeader() === 'h4',\\r\\n\\t \\t'h5': $data._selectHeader() === 'h5',\\r\\n\\t \\t'h6': $data._selectHeader() === 'h6'\\r\\n\\t }\\\" class=\\\"header-number\\\"></label> </div>\";\n// Exports\nexport default code;","\r\nexport const PROPERTIES = {\r\n HEIGHT_PX: 'HeightPX',\r\n HEIGHT_AUTO: 'HeightAuto',\r\n}","import * as ko from 'knockout'\r\nimport * as _ from \"underscore\";\r\n\r\nimport {EventTracker, EVENTS_TO_LISTEN} from \"Core/Common/EventTracker\";\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {TranslationModel} from \"Core/ScreenManager/Models/TranslationModel\";\r\nimport {TranslationFieldEditor} from \"Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\n\r\nimport {FONT_STYLES, RenderModes} from 'Core/Constant';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport MemoConfig from 'Core/Controls/Memo/Configs/memo-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Memo/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Memo/Templates/HelpView.html'\r\nimport ToolBarTemplate from 'Core/Controls/Memo/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Memo/Templates/Design.html'\r\nimport EditTemplate from 'Core/Controls/Memo/Templates/Edit.html'\r\nimport {TranslationManager} from \"../../Components/Translation/TranslationManager\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {PROPERTIES} from \"Core/Controls/Memo/Constants\";\r\nimport { data } from 'jquery';\r\n\r\nko.templates['Core/Controls/Memo/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Memo/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Memo/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Memo/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Memo/Templates/Edit'] = EditTemplate;\r\n\r\nexport class Memo extends BaseControl {\r\n private _isNewRecord: boolean;\r\n\r\n private _value: KnockoutObservable<string>;\r\n private _editor: any;\r\n private _originalValue: string;\r\n private _labelStyle: KnockoutObservable<any>;\r\n\r\n private _serverTranslations: TranslationModel[];\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _memoHeightPX: KnockoutObservable<number>;\r\n private _memoHeightAuto: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, MemoConfig);\r\n this._value = ko.observable('');\r\n this._labelStyle = ko.observable(null);\r\n this._memoHeightPX = ko.observable(null);\r\n this._memoHeightAuto = ko.observable(null);\r\n\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if(!this.FieldModel.HasLinkEditorVisibility){\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch ( style.Name.toLowerCase() ) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n GetDefaultTranslation() {\r\n return this._translationFieldEditor.GetDefaultTranslation();\r\n }\r\n\r\n GetTranslations() {\r\n return this._translationFieldEditor.GetTranslations(false);\r\n }\r\n\r\n private Init(): void {\r\n this.ApplyProperties();\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.IsWrapped) {\r\n _.each(this.Properties.IsWrapped.Properties, (item: any) => {\r\n this.ApplyWrapTextProperty(item.WrapText);\r\n });\r\n }\r\n\r\n this._memoHeightPX(!!this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_PX) ? this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_PX) : '');\r\n this._memoHeightAuto(!!this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_AUTO) ? this.GeneralProperties.GetPropertyValue(PROPERTIES.HEIGHT_AUTO) : false);\r\n }\r\n }\r\n\r\n private GetLanguages() {\r\n if (this.IsTranslatable()) {\r\n if (this._translationFieldEditor.TranslationItemsList.length == 0) {\r\n this._translationFieldEditor.LoadTranslationItems();\r\n }\r\n const languages = this._translationFieldEditor.TranslationItemsList.map(translation => translation.Language);\r\n const activeLanguage = this._translationFieldEditor.ActiveTranslation.Language;\r\n\r\n return {\r\n List: languages,\r\n Active: activeLanguage\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private OnChangeLanguage(id: number) {\r\n const selectedTranslation = this._translationFieldEditor.GetTranslationById(id);\r\n this._translationFieldEditor.SelectTranslation(selectedTranslation);\r\n\r\n const selectedValue = selectedTranslation.Value();\r\n this._editor.setContent(selectedValue || '');\r\n this._value(selectedValue);\r\n }\r\n\r\n ApplyWrapTextProperty(wrapText) {\r\n this._isWrapped(wrapText);\r\n this._form && this._form.Wrap(this, wrapText);\r\n if (this._parentControl) {\r\n this._parentControl.SetIsWrapped(true);\r\n }\r\n\r\n }\r\n\r\n private BindEvents() {\r\n if (this._renderMode() === RenderModes.Design) {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data) {\r\n this._isNewRecord = value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord;\r\n this._originalValue = value.Data.Value && _.unescape(value.Data.Value) || '';\r\n\r\n let currentValue = this._originalValue;\r\n\r\n if (this.IsTranslatable()) {\r\n this._serverTranslations = value.Data.Translations;\r\n\r\n const translation = this.GetTranslation(value.Data);\r\n currentValue = translation.TranslatedValue || translation.Value;\r\n\r\n this._translationFieldEditor.LoadTranslationItems();\r\n this._translationFieldEditor.SetTranslations(value.Data.Translations, value.Data.Value === null ? '' : value.Data.Value);\r\n this._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n }\r\n\r\n this._value(currentValue);\r\n\r\n if (this._editor) {\r\n this._editor.setContent(this._value() || '');\r\n }\r\n }\r\n }\r\n\r\n AfterInit(editor) {\r\n this._editor = editor;\r\n this._editor.setContent(this._value() || '');\r\n this.Trigger('READY');\r\n }\r\n\r\n Deserialize() {\r\n const field = _.first(this._model().Fields);\r\n\r\n if (this._editor && field && !this._isReadonly) {\r\n\r\n const serializedValue = [`${field.EntityName}.${field.Name}`];\r\n\r\n if (this.IsTranslatable()) {\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n serializedValue.push(defaultTranslation);\r\n\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n const changedTranslations = activeTranslations.map(translation => {\r\n const languageShortName = TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName;\r\n return !translation.Value ? `${languageShortName}_` : `${languageShortName}_${translation.Value}`;\r\n });\r\n\r\n serializedValue.push(...changedTranslations);\r\n return serializedValue;\r\n }\r\n\r\n serializedValue.push(this._value());\r\n return serializedValue;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n AfterChange(content) {\r\n EventTracker.Instance.RegisterEvent(EVENTS_TO_LISTEN.KEYUP);\r\n\r\n this._value(content);\r\n\r\n const currentValue = this._value();\r\n\r\n if (this.IsTranslatable()) {\r\n this._translationFieldEditor.ActiveTranslation.Value(currentValue);\r\n }\r\n }\r\n\r\n IsModified(): boolean {\r\n if (super.IsModified()) {\r\n return true;\r\n }\r\n\r\n if (!this.IsTranslatable()) {\r\n return this._value() !== this._originalValue;\r\n }\r\n\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n if (this._isNewRecord) {\r\n return defaultTranslation !== this._originalValue || _.any(activeTranslations, activeTranslation => !!activeTranslation.Value);\r\n }\r\n\r\n const translationDiffExists = _.any(activeTranslations, activeTranslation => {\r\n const serverTranslation = _.find(this._serverTranslations, serverTranslation => serverTranslation.LanguageId === activeTranslation.LanguageId);\r\n return serverTranslation && activeTranslation.Value !== serverTranslation.Value;\r\n });\r\n\r\n return defaultTranslation !== this._originalValue || translationDiffExists;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._isRequired && (this._value() === '' || this._value() === undefined)) {\r\n this._isValid(false);\r\n } else {\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n GetValue() {\r\n return `${this._value()}`;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-lightbulb-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"css: {'wrapped-memo': _isWrapped()}, attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView memo-control-container form-standart-control clearfix\\\"> <label data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></label> <textarea data-bind=\\\"attr: {id: _guid},\\r\\n\\t\\t\\t\\t\\t tinymce : {\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tguid: _guid,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tafterInit: $data.AfterInit.bind($data),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\theight: _memoHeightPX(),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tautoresize: _memoHeightAuto(),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tquickEdit: $parents[1].IsEditMode\\r\\n\\t\\t\\t\\t\\t \\t\\t}\\\" cols=\\\"50\\\" rows=\\\"5\\\" placeholder=\\\"Memo\\\" readonly=\\\"\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t</textarea> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"css: {'wrapped-memo': _isWrapped()}, attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView memo-control-container form-standart-control clearfix\\\"> <label data-bind=\\\"text: Label, attr: {'title': Label }\\\"></label> <textarea data-bind=\\\"attr: {id: _guid},\\r\\n\\t\\t\\t\\t\\t tinymce : {\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tguid: _guid,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tafterInit: $data.AfterInit.bind($data),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\tmin_height: '100'\\r\\n\\t\\t\\t\\t\\t \\t\\t}\\\" cols=\\\"50\\\" rows=\\\"5\\\" placeholder=\\\"Memo\\\" readonly=\\\"\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t</textarea> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView memo-control-container form-standart-control\\\"> <label data-bind=\\\"text: Label, attr: {'title': Label }\\\"></label> <textarea data-bind=\\\"attr: { placeholder: Label }\\\" class=\\\"form-control control\\\" rows=\\\"5\\\" readonly=\\\"\\\"></textarea> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"memo-control\\\" data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t \\t\\t\\tcss: {'has-error': !_isValid(), 'wrapped-memo': _isWrapped(), 'full-width-control': FieldModel.FullWidth},\\r\\n\\t \\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView memo-control-container form-standart-control\\\"> <div data-bind=\\\"tooltip: DescriptionToolTip\\\" class=\\\"clearfix\\\"> <label data-bind=\\\"text: Label, style: _labelStyle\\\"></label> </div> <textarea data-bind=\\\"hasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t attr: {id: _guid, 'tabindex': GetCombinedReadOnly() ? -1 : 1},\\r\\n\\t\\t\\t\\t\\t\\t tinymce : {guid: _guid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tafterChange: $data.AfterChange.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tafterInit: $data.AfterInit.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\treadOnly: GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tlanguages: $data.GetLanguages(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonChangeLanguage: $data.OnChangeLanguage.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoresize: _memoHeightAuto(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\theight: _memoHeightPX(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tquickEdit: $parents[1].IsGridRow}\\\" cols=\\\"50\\\" rows=\\\"5\\\" placeholder=\\\"Memo\\\" readonly=\\\"\\\" style=\\\"display:none\\\" aria-hidden=\\\"true\\\">\\r\\n\\t</textarea> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { DEFAULT_ICONS } from \"Core/Constant\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam, IScreen} from 'Core/Screens/IScreen';\r\nimport {DocumentStore, IGetDocumentDataRequestModel} from 'Core/Controls/Document/Stores/DocumentStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {DocumentManager} from 'Core/Components/Controls/DocumentManager/DocumentManager';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\nimport {EVENTS} from 'Core/Components/Controls/DocumentManager/Events';\r\n\r\nimport EditTemplate from 'Core/Controls/Document/Templates/Edit.html';\r\nimport HelpViewTempalte from 'Core/Controls/Document/Templates/HelpView.html';\r\nimport ViewTempalte from 'Core/Controls/Document/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Document/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Document/Templates/Design.html';\r\n\r\nko.templates['Core/Controls/Document/Templates/View'] = ViewTempalte;\r\nko.templates['Core/Controls/Document/Templates/HelpView'] = HelpViewTempalte;\r\nko.templates['Core/Controls/Document/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Document/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Document/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Document extends BaseControl {\r\n\tprivate _documentManager: KnockoutObservable<DocumentManager>;\r\n\tprivate _notifier: Notifier;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Document));\r\n\t\tthis._notifier = new Notifier();\r\n\t\tthis._documentManager = ko.observable(null);\r\n\t}\r\n\r\n\tget DocumentManager(): KnockoutObservable<DocumentManager> {\r\n\t\treturn this._documentManager;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.SubjectRecordId !== 0) {\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n\tget ScreenType(): string {\r\n\t\treturn this._form ? this._form.GetScreen().GetType() : null;\r\n\t}\r\n\r\n\tget Screen(): IScreen {\r\n\t\treturn this._form ? this._form.GetScreen() : null;\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tif (this._form) {\r\n\t\t\tconst subjectEntityId = this._form.GetScreen().GetEntityId();\r\n\t\t\tconst subjectRecordId = this._form.GetScreen().GetRecordId();\r\n\r\n\t\t\tconst requestModel: IGetDocumentDataRequestModel = {\r\n\t\t\t\tSubjectEntityId: subjectEntityId,\r\n\t\t\t\tSubjectRecordId: subjectRecordId,\r\n\t\t\t\tFieldId: this.GetFieldId()\r\n\t\t\t};\r\n\r\n\t\t\tDocumentStore.GetData(requestModel)\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tthis._notifier.Failed(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.then((data: DocumentDataModel) => {\r\n\t\t\t\t\tconst documentManager =\r\n\t\t\t\t\t\tnew DocumentManager(\r\n\t\t\t\t\t\t\tthis.ScreenType,\r\n\t\t\t\t\t\t\tthis.Screen,\r\n\t\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().EntityId,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().EntityTypeName,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().Id,\r\n\t\t\t\t\t\t\tthis.GetFieldModel().Name,\r\n\t\t\t\t\t\t\tdata && data.IsEnableMail\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis._documentManager(documentManager);\r\n\t\t\t\t\tthis._documentManager().On(EVENTS.UPDATED, this, (eventArgs) => this.LoadData());\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div> <!-- ko with: DocumentManager --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <!-- ko with: DocumentManager --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-file-text-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"visible: true, click: Click, style: _style\\\" class=\\\"btn blue-dark subFormControl return-button\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i><span><!-- ko text: _labels.RETURN --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport ReturnButtonConfig from \"Core/Controls/ButtonReturn/Configs/return-button-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/ButtonReturn/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/ButtonReturn/Templates/HelpView.html'\r\nimport ToolBarTemplate from 'Core/Controls/ButtonReturn/Templates/ToolBar.html'\r\n\r\nko.templates['Core/Controls/ButtonReturn/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/Design'] = ViewTemplate;\r\nko.templates['Core/Controls/ButtonReturn/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nexport class ButtonReturn extends BaseControl {\r\n private _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ReturnButtonConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n Click(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tvar screen = this._form.GetScreen();\r\n\t\t\tif (screen) {\r\n\t\t\t\tscreen.Trigger(\"SHOW_PREVIOUS_SCREEN\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl return-button\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.RETURN --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl return-button\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.RETURN --><!-- /ko --> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Notifier} from \"Core/Common/Notifier\"\r\nimport {RenderModes, PASSWORD, FONT_STYLES} from 'Core/Constant'\r\n\r\nimport PasswordConfig from 'Core/Controls/Password/Configs/password-config.json'\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties'\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Password/Templates/HelpView.html'\r\nimport ViewTemplate from 'Core/Controls/Password/Templates/View.html'\r\nimport EditTemplate from 'Core/Controls/Password/Templates/Edit.html'\r\nimport ToolBarTemplate from 'Core/Controls/Password/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Password/Templates/Design.html'\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\n\r\nko.templates['Core/Controls/Password/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Password/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Password/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Password/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Password/Templates/Design'] = DesignTemplate;\r\n\r\nexport const events = {PasswordApplied: \"PasswordActionApplied\"};\r\n\r\nexport enum PasswordActions {\r\n None,\r\n Revoke\r\n};\r\n\r\nexport class Password extends BaseControl {\r\n private _value: KnockoutObservable<string>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _actionsIsVisible: boolean;\r\n private _action: number;\r\n private _isHidden: KnockoutObservable<boolean>;\r\n private _isFirstChange: boolean;\r\n private _isEyeEnable: KnockoutObservable<boolean>;\r\n private _isModified: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, PasswordConfig);\r\n this._value = ko.observable(PASSWORD.DefaultValue);\r\n this.AddEvent(events.PasswordApplied);\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._action = PasswordActions.None;\r\n this._isHidden = ko.observable(true);\r\n this._isFirstChange = false;\r\n this._isEyeEnable = ko.observable(true);\r\n this._isModified = ko.observable(false);\r\n\r\n\r\n this.ApplyProperties();\r\n this._value.subscribe((value) => {\r\n this._action = PasswordActions.None;\r\n if (value && value[value.length - 1] === ' ') {\r\n this._value(value.trim());\r\n }\r\n });\r\n this.On(events.PasswordApplied, this, eventArgs => this.PasswordActionApplied(eventArgs.data.Action));\r\n }\r\n\r\n get SelectedAction() {\r\n return this._action;\r\n }\r\n\r\n private PasswordActionApplied(passwordAction: PasswordActions) {\r\n const notificationText = {};\r\n notificationText[PasswordActions.None] = '';\r\n notificationText[PasswordActions.Revoke] = NOTIFICATIONS.PASSWORD_REVOKED;\r\n\r\n var target = this.GetForm().GetScreen().GetWrapper();\r\n new Notifier($(target)).Success(notificationText[passwordAction]);\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n //Label\r\n if (this.Properties.Label) {\r\n var labelStyle = {backgroundColor: null, color: null};\r\n _.each(this.Properties.Label.Properties,\r\n (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n //TextInput\r\n if (this.Properties.TextInput) {\r\n var textInputStyle = {backgroundColor: null};\r\n _.each(this.Properties.TextInput.Properties,\r\n (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n\r\n //PasswordActions\r\n if (this.Properties.PasswordActions) {\r\n _.each(this.Properties.PasswordActions.Properties,\r\n (property: any) => {\r\n if (property.DisplayActions) {\r\n this._actionsIsVisible = property.DisplayActions;\r\n }\r\n });\r\n }\r\n }\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n PasswordFocused() {\r\n if (this._value() == PASSWORD.DefaultValue) {\r\n this._value('');\r\n this._isModified(true);\r\n }\r\n this._isEyeEnable(true);\r\n }\r\n\r\n TryToRefill() {\r\n if (!this._value()) {\r\n this._isEyeEnable(false);\r\n this._isHidden(true);\r\n }\r\n }\r\n\r\n PasswordRevoke(): void {\r\n this._value(null);\r\n this._action = PasswordActions.Revoke;\r\n this.Trigger(events.PasswordApplied, {Action: PasswordActions.Revoke});\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord) {\r\n this._isModified(true);\r\n if (value.RecordSpecsModel.IsExample) {\r\n return;\r\n }\r\n }\r\n\r\n if (value.Data) {\r\n this._value(value.Data.Value);\r\n this._isEyeEnable(false);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n Deserialize() {\r\n var field = _.first(this._model().Fields);\r\n if (field) {\r\n if (!this.GetCombinedReadOnly()) {\r\n return [`${field.EntityName}.${field.Name}`, this._value()];\r\n } else {\r\n return PASSWORD.DefaultValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n\r\n IsValid(): boolean {\r\n if (this._action === PasswordActions.Revoke) {\r\n this._isValid(true);\r\n return this._isValid();\r\n }\r\n\r\n if (!this._value()) {\r\n this._isValid(!this._isRequired);\r\n return this._isValid();\r\n }\r\n\r\n if (this._isModified() && this._value().length < PASSWORD.MinimumLength) {\r\n this._isValid(false);\r\n const passwordValidationMessage = NOTIFICATIONS.INCORECT_PASSWORD_LENGTH.replace('{MinimumLength}', PASSWORD.MinimumLength.toString());\r\n let wrapper = null;\r\n if (this.GetForm()) {\r\n wrapper = $(this.GetForm().GetScreen().GetWrapper());\r\n }\r\n new Notifier(wrapper).Warning(passwordValidationMessage);\r\n return this._isValid();\r\n }\r\n\r\n this._isValid(true);\r\n return this._isValid();\r\n }\r\n\r\n GetValue(): any {\r\n return this._value();\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._isModified();\r\n }\r\n\r\n ShowOrHidePassword() {\r\n this._isHidden(!this._isHidden());\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"style: _textInputStyle, text: Label\\\" type=\\\"password\\\" class=\\\"form-control control record-field with-label textarea-control password\\\"></div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"password-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"text: Label, style: _textInputStyle\\\" type=\\\"password\\\" class=\\\"form-control control record-field with-label textarea-control password\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display },\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"password-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tcss: {'has-error': !_isValid()}\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <textarea data-bind=\\\"textInput: _value, \\r\\n\\t\\t\\t\\t\\t\\t event: {focus: $data.PasswordFocused.bind($data), blur: $data.TryToRefill.bind($data)},\\r\\n\\t\\t\\t\\t\\t\\t style: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t attr: {'readonly': GetCombinedReadOnly(), 'required': _isRequired, 'tabindex': GetCombinedReadOnly() ? -1 : 1 },\\r\\n\\t\\t\\t\\t\\t\\t css: {'password': _isHidden, 'actionsIsVisible': $data._actionsIsVisible}\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl password-input\\\" type=\\\"text\\\" rows=\\\"1\\\">\\r\\n\\t\\t</textarea> <div class=\\\"input-group-btn password-actions\\\" data-bind=\\\"css: {'actionsIsVisible': $data._actionsIsVisible}\\\"> <!-- ko ifnot: GetCombinedReadOnly() --> <button data-bind=\\\"click: ShowOrHidePassword,\\r\\n\\t\\t\\t\\t\\t\\t\\t enable: _isEyeEnable,\\r\\n\\t\\t\\t\\t\\t\\t\\t css: {'float-right': !$data._actionsIsVisible}\\\" type=\\\"button\\\" class=\\\"btn show-hide-password-btn grey\\\"> <i data-bind=\\\"css: {'fa-eye': _isHidden, 'fa-eye-slash': !_isHidden()}\\\" class=\\\"fa\\\" aria-hidden=\\\"true\\\"> </i> </button> <button data-bind=\\\"css: {hidden: !$data._actionsIsVisible}\\\" type=\\\"button\\\" class=\\\"btn dropdown-toggle reset-password-btn grey\\\" data-toggle=\\\"dropdown\\\"> <i class=\\\"fa fa-cog\\\" aria-hidden=\\\"true\\\"> </i> </button> <ul class=\\\"dropdown-menu pull-right\\\"> <li> <a class=\\\"password-action\\\" data-bind=\\\"click: PasswordRevoke\\\"> <!-- ko text: _labels.REVOKE_LABEL --><!-- /ko --> </a> </li> </ul> <!--/ko--> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"style: _textInputStyle, text: Label\\\" type=\\\"password\\\" class=\\\"form-control control record-field with-label textarea-control password\\\"></div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport _ from \"underscore\";\r\n\r\nimport {SelectUserModel, UserGroupModel, UserModel} from \"./SelectUserModel\";\r\n\r\nexport class SelectUserFormViewModel {\r\n\tUserGroups: KnockoutObservableArray<UserGroupViewModel>;\r\n\tUsers: KnockoutObservableArray<UserViewModel>;\r\n\tAllUsersGroupChecked: KnockoutObservable<boolean>\r\n\r\n\tconstructor(data: SelectUserModel) {\r\n\t\tthis.UserGroups = ko.observableArray(data.UserGroups.map(group => new UserGroupViewModel(group, group.Users)));\r\n\t\tthis.Users = ko.observableArray( data.Users.map(user=> new UserViewModel(user) ) );\r\n\r\n\t\tthis.AllUsersGroupChecked = ko.observable(null);\r\n\t\tthis.Users().forEach(user => {\r\n\t\t\tuser.Checked.subscribe(() => this.UpdateAllUsersGroupChecked());\r\n\t\t});\r\n\r\n\t\tthis.UpdateAllUsersGroupChecked();\r\n\t}\r\n\r\n\tUpdateAllUsersGroupChecked() {\r\n\t\tif (this.Users().some(user => user.Checked())) {\r\n\t\t\tthis.AllUsersGroupChecked(true);\r\n\t\t} else {\r\n\t\t\tthis.AllUsersGroupChecked(false);\r\n\t\t}\r\n\t}\r\n\r\n\tToSelectUserViewModel() {\r\n\t\tconst model = new SelectUserModel();\r\n\t\tmodel.Users = this.Users().map(user => user.ToUserViewModel());\r\n\r\n\t\tmodel.UserGroups = this.UserGroups().map((userGroup: UserGroupViewModel) => {\r\n\t\t\treturn userGroup.ToUserViewGroupModel(userGroup);\r\n\t\t});\r\n\t\treturn model\r\n\t}\r\n}\r\n\r\nexport class UserViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tUserName: string;\r\n\tUserTypeName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(data: UserModel) {\r\n\t\tthis.Id = data.Id;\r\n\t\tthis.Name = data.Name;\r\n\t\tthis.UserName = data.UserName;\r\n\t\tthis.UserTypeName = data.UserTypeName;\r\n\t\tthis.Checked = ko.observable(data.Checked || false);\r\n\t}\r\n\r\n\tToUserViewModel() {\r\n\t\tconst user = new UserModel;\r\n\t\tuser.Id = this.Id;\r\n\t\tuser.Name = this.Name;\r\n\t\tuser.UserTypeName = this.UserTypeName;\r\n\t\tuser.Checked = this.Checked();\r\n\r\n\t\treturn user;\r\n\t}\r\n}\r\n\r\nexport class UserGroupViewModel {\r\n\tId: number;\r\n\tName: string;\r\n\tChecked: KnockoutObservable<boolean>;\r\n\tUsers: KnockoutObservableArray<UserViewModel>;\r\n\tAllUsersChecked: KnockoutComputed<boolean>\r\n\r\n\tconstructor(data: UserGroupModel, users: Array<UserModel>) {\r\n\t\tthis.Id = data.Id;\r\n\t\tthis.Name = data.Name;\r\n\t\tthis.Checked = ko.observable(data.Checked || false);\r\n\t\tthis.Users = ko.observableArray(users.map(user => new UserViewModel(user)));\r\n\r\n\t\tthis.AllUsersChecked = ko.computed({\r\n\t\t\tread: () => {\r\n\t\t\t\tconst users = this.Users();\r\n\t\t\t\tif (_.every(users, user => user.Checked())) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t} else if (_.some(users, user => user.Checked())) {\r\n\t\t\t\t\treturn null; // a special intermediate state\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\twrite: (value) => {\r\n\t\t\t\tif (value === true) {\r\n\t\t\t\t\t_.each(this.Users(), user => user.Checked(true));\r\n\t\t\t\t} else if (value === false) {\r\n\t\t\t\t\t_.each(this.Users(), user => user.Checked(false));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Synchronize group checkbox with individual checkboxes\r\n\t\t_.each(this.Users(), user => {\r\n\t\t\tuser.Checked.subscribe((value: boolean) => {\r\n\t\t\t\tconst allUsersChecked = _.every(this.Users(), u => u.Checked());\r\n\t\t\t\tconst someUsersChecked = _.some(this.Users(), u => u.Checked());\r\n\r\n\t\t\t\tif (allUsersChecked) {\r\n\t\t\t\t\tthis.AllUsersChecked(true);\r\n\t\t\t\t} else if (someUsersChecked) {\r\n\t\t\t\t\tthis.AllUsersChecked(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.AllUsersChecked(false);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tToUserViewGroupModel(userGroup: UserGroupViewModel): UserGroupModel {\r\n\t\tconst newUserGroup = new UserGroupModel();\r\n\t\tnewUserGroup.Id = userGroup.Id;\r\n\t\tnewUserGroup.Name = userGroup.Name;\r\n\t\tnewUserGroup.Users = userGroup.Users().map((user: UserViewModel) => user.ToUserViewModel());\r\n\r\n\t\tlet groupChecked: boolean | null;\r\n\t\tif (_.every(newUserGroup.Users, user => user.Checked)) {\r\n\t\t\tgroupChecked = true;\r\n\t\t} else if (_.some(newUserGroup.Users, user => user.Checked)) {\r\n\t\t\tgroupChecked = null; // a special intermediate state\r\n\t\t} else {\r\n\t\t\tgroupChecked = false;\r\n\t\t}\r\n\t\tnewUserGroup.Checked = groupChecked;\r\n\r\n\t\treturn newUserGroup;\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {SelectUserModel} from 'Core/Controls/SelectUser/Models/SelectUserModel';\r\nimport {SelectUserFormModel} from 'Core/Controls/SelectUser/Models/SelectUserFormModel';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nimport FormTemplate from 'Core/Controls/SelectUser/Form/Template/Form.html';\r\nimport {SelectUserFormViewModel} from \"Core/Controls/SelectUser/Models/SelectUserFormViewModel\";\r\n\r\nko.templates['Core/Controls/SelectUser/Form/Template/Form'] = FormTemplate;\r\n\r\nexport const EVENTS = {\r\n\tUSERS_SELECTION_CHANGED: 'UsersSelectionChanged'\r\n};\r\n\r\nexport class SelectUserForm extends Event {\r\n\tprivate _model: KnockoutObservable<SelectUserFormViewModel>;\r\n\tprivate _modal: Modal;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: SelectUserModel) {\r\n\t\tsuper();\r\n\t\tthis._model = ko.observable(new SelectUserFormViewModel(model));\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tApplySelection() {\r\n\t\tconst model = this._model().ToSelectUserViewModel();\r\n\t\tnew Notifier().Success(NOTIFICATIONS.SELECTION_APPLIED);\r\n\t\tthis.Close();\r\n\t\tthis.Trigger(EVENTS.USERS_SELECTION_CHANGED, model);\r\n\t}\r\n\r\n\tResetSelection() {\r\n\t\tthis._model().Users().forEach(user => user.Checked(false));\r\n\t\tthis._model().UserGroups().forEach((userGroup ) => {\r\n\t\t\tuserGroup.Checked(false);\r\n\t\t\tuserGroup.Users().forEach(user => user.Checked(false))\r\n\t\t});\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/SelectUser/Form/Template/Form';\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\t$(document).ready(function () {\r\n\t\t\t// Add 'panel-open' class when the collapse is shown\r\n\t\t\t$('.panel-collapse').on('show.bs.collapse', function () {\r\n\t\t\t\t$(this).closest('.panel').addClass('panel-open');\r\n\t\t\t});\r\n\r\n\t\t\t// Remove 'panel-open' class when the collapse is hidden\r\n\t\t\t$('.panel-collapse').on('hide.bs.collapse', function () {\r\n\t\t\t\t$(this).closest('.panel').removeClass('panel-open');\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidth: MobileChecker.IsMobile() ? '100vw' : '700',\r\n\t\t\theight: MobileChecker.IsMobile() ? '100vh' : '600',\r\n\t\t\taddClass: MobileChecker.IsMobile() ? 'mobileSelectUser' : 'desktop-selectUser',\r\n\t\t\tminHeight: '300'\r\n\t\t}, false);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n}","// Module\nvar code = \"<b class=\\\"spacer-background-select-user\\\"></b> <div class=\\\"clearfix select-user-popup\\\"> <!-- ko with: _model --> <div class=\\\"items-list box-shadow-wrapper\\\"> <div class=\\\"user-group-container\\\"> <div class=\\\"panel-group user-group-accordion\\\" id=\\\"\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"false\\\"> <!-- ko foreach: UserGroups --> <div class=\\\"panel panel-default\\\" data-bind=\\\"css:{'panel-open': AllUsersChecked() === null || AllUsersChecked()}\\\"> <div class=\\\"panel-heading\\\" data-bind=\\\"attr:{'id': 'headingGroup'+Id}\\\" role=\\\"tab\\\"> <div class=\\\"panel-title\\\"> <input class=\\\"group-checkmark\\\" data-bind=\\\"checked: AllUsersChecked, css: {'indeterminate': AllUsersChecked() === null}\\\" type=\\\"checkbox\\\"> <span class=\\\"group-checkmark-custom-checkbox\\\" data-bind=\\\"css: {'indeterminate': AllUsersChecked() === null}\\\"></span> <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-bind=\\\"attr: {\\r\\n 'href': '#collapseGroup'+Id,\\r\\n 'aria-expanded': AllUsersChecked() === null || AllUsersChecked() ? 'true' : 'false',\\r\\n 'aria-controls': 'collapseGroup'+Id\\r\\n }\\\"> <i></i> <i class=\\\"panel-icon align-middle icon-users\\\"></i> <span class=\\\"select-group-name\\\" data-bind=\\\"text: Name\\\"></span> </a> </div> </div> <div data-bind=\\\"attr:{\\r\\n 'id': 'collapseGroup'+Id,\\r\\n 'aria-labelledby': 'headingGroup'+Id\\r\\n },\\r\\n css: {'in': AllUsersChecked() === null || AllUsersChecked()}\\\" class=\\\"panel-collapse collapse\\\" role=\\\"tabpanel\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"user-group-container\\\"> <!-- ko foreach: Users --> <div class=\\\"user-group-item\\\" data-bind=\\\"css:{'user-active': Checked()}\\\"> <span class=\\\"additional-icon fa fa-user\\\"></span> <label class=\\\"item-label\\\"> <input class=\\\"select-user-input\\\" data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"select-user-name\\\" data-bind=\\\"attr:{ title: Name }, text: Name\\\"></span> </label> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel-group all-users-group user-group-accordion\\\" id=\\\"\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"false\\\"> <div class=\\\"panel panel-default\\\" data-bind=\\\"css:{'panel-open': AllUsersGroupChecked()}\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingTwo\\\"> <h4 class=\\\"panel-title\\\"> <a class=\\\"collapsed\\\" role=\\\"button\\\" data-bind=\\\"attr: {'aria-expanded': AllUsersGroupChecked() ? 'true' : 'false'}\\\" data-toggle=\\\"collapse\\\" href=\\\"#collapseTwo\\\" aria-controls=\\\"collapseTwo\\\"> <span class=\\\"select-group-name\\\">All Users</span> </a> </h4> </div> <div id=\\\"collapseTwo\\\" class=\\\"panel-collapse collapse\\\" data-bind=\\\"css: {'in': AllUsersGroupChecked()}\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingTwo\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"user-group-container\\\"> <!-- ko foreach: Users --> <div class=\\\"user-group-item\\\" data-bind=\\\"css:{'user-active': Checked()}\\\"> <span class=\\\"additional-icon fa fa-user\\\"></span> <label class=\\\"item-label\\\"> <input class=\\\"select-user-input\\\" data-bind=\\\"checked: Checked\\\" type=\\\"checkbox\\\"> <span class=\\\"select-user-name\\\" data-bind=\\\"attr:{ title: Name }, text: Name\\\"></span> </label> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> <div class=\\\"clearfix buttons-line\\\"> <a href=\\\"#\\\" class=\\\"btn btn-ok btn-success\\\" data-bind=\\\"click: $parent.ApplySelection.bind($parent)\\\"> <!-- ko text: $parent._labels.OK --><!-- /ko --></a> <a href=\\\"#\\\" class=\\\"reset-btn btn btn-warning\\\" data-bind=\\\"click: $parent.ResetSelection.bind($parent)\\\"> <!-- ko text: $parent._labels.RESET --><!-- /ko --></a> <a href=\\\"#\\\" class=\\\"cancel-btn btn btn-default\\\" data-bind=\\\"click: $parent.Close.bind($parent)\\\"> <!-- ko text: $parent._labels.CANCEL --><!-- /ko --></a> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"select-user-list\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <a class=\\\"btn blue\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" data-bind=\\\"tooltip:{content:_labels.SELECT_USER}, css: {['selectUserTooltip' + _id] : 'selectUserTooltip' + _id},\\r\\n\\t\\t\\t\\tclick: ShowSelectUserTooltip.bind($data)\\\"> <i class=\\\"fa fa-user-circle\\\"></i> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul class=\\\"multi-level\\\"> <li class=\\\"user-group-item\\\"> <a data-bind=\\\"click: Click\\\"> <i class=\\\"fa fa-user-circle\\\"></i> <!-- ko text: _labels.NEW_SELECTION --><!-- /ko --> </a> </li> <!-- ko if: _isShowPlanner() --> <li class=\\\"user-group-item remember-me-item\\\"> <a> <label> <input input type=\\\"checkbox\\\" class=\\\"dropdownSetRemberMe\\\" data-bind=\\\"checked: _isPlanner, click: TogglePlanner.bind($data)\\\"/> <!-- ko text: _labels.PLANNER_LABEL --><!-- /ko --> </label> </a> </li> <!-- /ko --> <!-- ko if: _isShowRememberMe() && _activeSelection() --> <li class=\\\"user-group-item remember-me-item\\\"> <a> <label> <input input type=\\\"checkbox\\\" class=\\\"dropdownSetRemberMe\\\" data-bind=\\\"checked: _isRememberMe, click: SetRememberMe.bind($data)\\\"> <!-- ko text: _labels.REMEMBER_ME --><!-- /ko --> </label> </a> </li> <!-- /ko --> <hr> <li> <!-- ko with: _userSelection --> <!-- ko foreach: UserSelection --> <div class=\\\"user-group-item user-selections\\\" data-bind=\\\"css: {'active-selection': Guid && $parents[1]._activeSelection() && Guid === $parents[1]._activeSelection().Guid},\\r\\n click: $parents[1].ChooseSelection.bind($parents[1], $data)\\\"> <label class=\\\"item-label\\\"> <!-- ko if: Guid && $parents[1]._activeSelection() && Guid === $parents[1]._activeSelection().Guid --> <span class=\\\"active-selection-wrap\\\"> <i class=\\\"fa fa-check active-selection-icon\\\"></i> </span> <!-- /ko --> <div class=\\\"remove-selection-box\\\" data-bind=\\\"click: $parents[1].RemoveSelection.bind($parents[1], $data), preventBubble: ['click']\\\"> <i class=\\\"fa fa-trash\\\"></i> </div> <!-- ko foreach: $data.Users --> <span class=\\\"user-group-item-with-icon\\\"> <!-- ko if: $data.userTypeName && $data.userTypeName !== \\\"\\\" --> <i class=\\\"additional-icon fa fa-user\\\"></i> <!-- /ko --> <!-- ko ifnot: $data.userTypeName && $data.userTypeName !== \\\"\\\" --> <i class=\\\"additional-icon fa fa-users\\\"></i> <!-- /ko --> <a class=\\\"user-group-item-link\\\" data-bind=\\\"text: $data.name\\\"> </a> </span> <!-- /ko --> </label> </div> <!-- /ko --> <!-- /ko --> </li> <!-- ko if: _activeSelection --> <li class=\\\"user-group-item clear-selection-wrap\\\"> <a data-bind=\\\"click: ClearSelection\\\" class=\\\"clear-selection-btn\\\"> <i class=\\\"fa fa-user-times\\\"></i> <span><!-- ko text: _labels.NONE --><!-- /ko --></span> </a> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {UserManager} from 'User/UserManager';\r\nimport {USER_ALLOWANCE} from 'Core/Constants/UserAllowance';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam as ControlParam} from 'Core/Screens/IScreen';\r\nimport {EVENTS as SELECT_USER_FORM_EVENTS, SelectUserForm} from 'Core/Controls/SelectUser/Form/SelectUserForm';\r\nimport {SelectUserStore} from 'Core/Controls/SelectUser/Stores/SelectUserStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {SelectUserModel, UserGroupModel, UserModel} from 'Core/Controls/SelectUser/Models/SelectUserModel';\r\nimport {SelectUserByBusinessRoleModel} from 'Core/Controls/SelectUser/Models/SelectUserByBusinessRoleModel';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nimport HelpViewTemplate from 'Core/Controls/SelectUser/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/SelectUser/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/SelectUser/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/SelectUser/Templates/Design.html';\r\nimport SelectUserPopUpContent from 'Core/Controls/SelectUser/Templates/SelectUserPopUp.html';\r\nimport {RenderModes} from 'Core/Constant';\r\nimport {ISelection, IUserSelection, UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {util} from \"../../../libs/rappid/build/rappid\";\r\nimport string = util.format.string;\r\n\r\nko.templates['Core/Controls/SelectUser/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/SelectUser/Templates/SelectUserPopUp'] = SelectUserPopUpContent;\r\n\r\nexport const EVENTS = {\r\n USERS_SELECTION_CHANGED: 'UsersSelectionChanged'\r\n};\r\n\r\nexport interface CheckedUserAndGroup {\r\n GroupId: number | null;\r\n UserIds: number[];\r\n}\r\n\r\nexport type SelectedUserType = { name: string; userTypeName: string; };\r\n\r\nclass SelectUserState {\r\n ShowPlanned: boolean;\r\n\tSelectedUsersAndGroups: CheckedUserAndGroup[];\r\n\tAppointmentAttendees: SelectUserModel;\r\n\r\n constructor() {\r\n this.SelectedUsersAndGroups = [];\r\n }\r\n\r\n UserSelected(userId: number, userGroupId: number | null) {\r\n return _.some(this.SelectedUsersAndGroups, group => {\r\n if (group.GroupId === userGroupId) {\r\n return group.UserIds.indexOf(userId) > -1;\r\n }\r\n });\r\n }\r\n\r\n UserGroupSelected(userId: number, userGroupId: number | null) {\r\n return _.some(this.SelectedUsersAndGroups, group => {\r\n if (userGroupId !== null && group.GroupId === userGroupId) {\r\n return group.UserIds.indexOf(userId) > -1;\r\n }\r\n return false\r\n });\r\n }\r\n}\r\n\r\nexport class SelectUser extends BaseControl {\r\n private _initialized: boolean;\r\n private _selectUserForm: SelectUserForm;\r\n private _state: SelectUserState;\r\n private _entityId: number;\r\n private _userSelection: KnockoutObservable<ISelection>;\r\n private _isShowRememberMe: KnockoutObservable<boolean>;\r\n private _isRememberMe: KnockoutObservable<boolean>;\r\n private _isShowPlanner: KnockoutObservable<boolean>;\r\n private _isPlanner: KnockoutObservable<boolean>;\r\n private _activeSelection: KnockoutObservable<any>;\r\n private _dropDown: JBoxDropDown;\r\n private _dropDownTooltip: JBoxDropDown;\r\n private _id: string;\r\n\r\n constructor(params: ControlParam) {\r\n super(params);\r\n\r\n this._initialized = false;\r\n\r\n this._userSelection = ko.observable(null);\r\n this._isShowRememberMe = ko.observable(this.RememberMeGlobalEnabled());\r\n this._isRememberMe = ko.observable(null);\r\n this._isShowPlanner = ko.observable(false);\r\n this._isPlanner = ko.observable(false);\r\n this._activeSelection = ko.observable(null);\r\n\r\n if (this.GetTemplateName() !== 'Core/Controls/SelectUser/Templates/HelpView') {\r\n this.Init();\r\n }\r\n this._id = JBoxDropDown.GetDropDownId();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n const target = \".\" + this._id;\r\n let contentAdded = false;\r\n this._dropDown = new JBoxDropDown({\r\n bindTarget: el[0],\r\n bindComponent: this,\r\n target: target,\r\n onOpen: () => {\r\n if (contentAdded) return;\r\n contentAdded = true;\r\n this._dropDown.SetContent();\r\n },\r\n otherOptions: {\r\n addClass: \"selectUser-dropdown\",\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n offset: {\r\n x: 15\r\n },\r\n }\r\n });\r\n }\r\n\r\n TogglePlanner() {\r\n this._state.ShowPlanned = this._isPlanner();\r\n\r\n if (this._state.ShowPlanned) {\r\n\t\t\tthis._state.SelectedUsersAndGroups = [];\r\n\t\t\tthis.SetAppointmentAttendees(null);\r\n this._activeSelection(null);\r\n }\r\n\r\n const screen = this.GetForm().GetScreen();\r\n\r\n if (screen) {\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n AddingUsersToGroups(model: SelectUserModel): Array<UserGroupModel>{\r\n return model.UserGroups.map((group: UserGroupModel) => {\r\n let userGroup = new UserGroupModel();\r\n userGroup.Id = group.Id;\r\n userGroup.Name = group.Name;\r\n userGroup.TypeId = group.TypeId;\r\n userGroup.TypeName = group.TypeName;\r\n userGroup.TypeNameTranslation = group.TypeNameTranslation;\r\n userGroup.UserIds = group.UserIds;\r\n userGroup.Users = _.filter(model.Users, (item)=> _.includes(group.UserIds, item.Id))\r\n .map((user: UserModel) => {\r\n let userModel = new UserModel();\r\n userModel.Id = user.Id;\r\n userModel.Name = user.Name;\r\n userModel.UserName = user.UserName;\r\n userModel.UserTypeName = user.UserTypeName;\r\n userModel.UserTypeNameTranslation = user.UserTypeNameTranslation;\r\n userModel.Checked = null; // userModel.Checked = user.Checked;\r\n return userModel;\r\n })\r\n return userGroup;\r\n });\r\n }\r\n\r\n Click() {\r\n BlockUI.Block();\r\n SelectUserStore.GetSelectUserModel(this._entityId)\r\n .then((model: SelectUserModel) => {\r\n model.UserGroups = this.AddingUsersToGroups(model);\r\n this.ShowModal(this.RestoreState(model));\r\n this._dropDown.Close();\r\n this._dropDownTooltip.Close();\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n ShowSelectUserTooltip(){\r\n this.IsShowPlanner();\r\n const targetTooltip = \".selectUserTooltip\" + this._id;\r\n this._dropDownTooltip = new JBoxDropDown({\r\n target: targetTooltip,\r\n otherOptions: {\r\n addClass: \"selectUser-dropdown\",\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDownTooltip.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n },\r\n onOpen: () => {\r\n this._dropDownTooltip.SetContent({ content: SelectUserPopUpContent as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDownTooltip.Open();\r\n }\r\n\r\n get Initialized() {\r\n return this._initialized;\r\n }\r\n\r\n get IsRememberMe() {\r\n return this._isRememberMe();\r\n }\r\n\r\n private Init() {\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n const screen = this.GetForm().GetScreen();\r\n\r\n this._state = new SelectUserState();\r\n this._entityId = screen.GetEntityId();\r\n\r\n this.AddEvent(EVENTS.USERS_SELECTION_CHANGED);\r\n\r\n this.GetForm().GetScreen().On('SELECT_USERS_BY_BUSINESS_ROLE', this, eventArgs => this.SelectByBusinessRole(eventArgs.data.SelectUserByBusinessRoleModel));\r\n\r\n this.GetSelection();\r\n\r\n this._isRememberMe(this._isShowRememberMe() && this.GetRememberMeValue());\r\n\r\n if (!screen.GetDataModel()) {\r\n return;\r\n }\r\n this.IsShowPlanner();\r\n }\r\n }\r\n\r\n private RestoreState(model: SelectUserModel) {\r\n model.UserGroups.forEach((userGroup) => {\r\n // userGroup.Checked = this._state.UserSelected(userGroup.Id)\r\n userGroup.Users?.length && userGroup.Users.forEach((user: UserModel) => {\r\n user.Checked = this._state.UserGroupSelected(user.Id, userGroup.Id);\r\n });\r\n });\r\n model.Users.forEach(user => user.Checked = this._state.UserSelected(user.Id, null));\r\n\r\n return model;\r\n }\r\n\r\n private ShowModal(model: SelectUserModel) {\r\n this._selectUserForm = new SelectUserForm(model);\r\n\r\n this._selectUserForm.On(\r\n SELECT_USER_FORM_EVENTS.USERS_SELECTION_CHANGED,\r\n this,\r\n eventArgs => this.ApplySelection(eventArgs.data)\r\n );\r\n\r\n this._selectUserForm.Show();\r\n\r\n }\r\n\r\n private ApplySelection(model: SelectUserModel, byBusinessRole: boolean = false) {\r\n const allCheckedUserIds: number[] = model.Users\r\n .filter(user => user.Checked)\r\n .map(user => user.Id);\r\n const combinedCheckedUserGroup: CheckedUserAndGroup = {\r\n GroupId: null,\r\n UserIds: allCheckedUserIds\r\n };\r\n\r\n const selectedUserGroups: CheckedUserAndGroup[] = _.chain(model.UserGroups)\r\n .map(group => {\r\n const checkedUsers = _.pluck(_.where(group.Users, { Checked: true }), 'Id');\r\n return { GroupId: group.Id, UserIds: checkedUsers };\r\n })\r\n .filter(group => group.UserIds.length > 0)\r\n .value();\r\n\r\n let combinedArray: CheckedUserAndGroup[] = selectedUserGroups.concat(combinedCheckedUserGroup);\r\n if (combinedArray.length === 1 && combinedArray[0].GroupId === null && combinedArray[0].UserIds.length == 0){\r\n combinedArray = []\r\n }\r\n\t\tthis._state.SelectedUsersAndGroups = combinedArray;\r\n\t\tthis.SetAppointmentAttendees(model);\r\n\r\n const screen = this.GetForm().GetScreen();\r\n let users: SelectedUserType[] = []; // let users: [{name: string, userTypeName: string}] = [{name: '', userTypeName: ''}]\r\n\r\n model.UserGroups.forEach((group) => {\r\n const selectedGroup = this._state.SelectedUsersAndGroups.find(\r\n (checkedGroup: CheckedUserAndGroup) => checkedGroup.GroupId === group.Id\r\n );\r\n if (selectedGroup) {\r\n users.push({\r\n name: group.Name,\r\n userTypeName: ''\r\n });\r\n selectedGroup.UserIds.forEach((userId) => {\r\n const userInGroup = model.Users.find(user => user.Id === userId);\r\n if (userInGroup) {\r\n users.push({\r\n name: userInGroup.Name,\r\n userTypeName: userInGroup.UserTypeName\r\n });\r\n } else {\r\n users.push({\r\n name: group.Name,\r\n userTypeName: ''\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n model.Users.forEach((user) => {\r\n const selectedUser = this._state.SelectedUsersAndGroups.find(\r\n (checkedGroup: CheckedUserAndGroup) => checkedGroup.GroupId === null\r\n );\r\n if (selectedUser) {\r\n selectedUser.UserIds.forEach((userId) => {\r\n const userInGroup = user.Id === userId;\r\n if (userInGroup) {\r\n users.push({\r\n name: user.Name,\r\n userTypeName: user.UserTypeName\r\n });\r\n }\r\n });\r\n }\r\n });\r\n users = _.uniq(users, (user) => `${user.name}-${user.userTypeName}`);\r\n\r\n const usersWithGroups = combinedArray;\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userVarsManager = UserVarsManager.Instance;\r\n\r\n if (byBusinessRole) {\r\n this._isRememberMe(false);\r\n const guid = Guid.NewGuid();\r\n\r\n const selectionByBusinessRole: IUserSelection = {\r\n Guid: guid,\r\n Users: users,\r\n UserGroups: usersWithGroups,\r\n Checked: true\r\n };\r\n\r\n if (this._userSelection()) {\r\n this._userSelection().UserSelection.unshift(selectionByBusinessRole);\r\n } else {\r\n this._userSelection({\r\n RememberMe: false,\r\n ScreenId: screenId,\r\n UserSelection: [selectionByBusinessRole]\r\n });\r\n }\r\n\r\n if (screen) {\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n\r\n this._activeSelection({Guid: guid, Users: users});\r\n return;\r\n } else if (usersWithGroups.length) {\r\n userVarsManager.AddSelection(screenId, usersWithGroups, users, this._isRememberMe());\r\n this.CreateNewSelection();\r\n } else {\r\n this._isRememberMe(false);\r\n this.SetRememberMe();\r\n\r\n if (screen) {\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n }\r\n\r\n this._activeSelection({Guid: Guid.NewGuid(), Users: users});\r\n }\r\n\r\n private CreateNewSelection() {\r\n const userVarsManager = UserVarsManager.Instance;\r\n const userSelection = userVarsManager.GetUserSelection(this.GetForm().GetScreen().GetId());\r\n this.ChooseSelection(_.first(userSelection.UserSelection));\r\n\r\n this._userSelection(userSelection);\r\n\r\n if (userSelection) {\r\n this._isRememberMe(userSelection.RememberMe);\r\n }\r\n }\r\n\r\n private GetSelection() {\r\n const userVarsManager = UserVarsManager.Instance;\r\n const userSelection = userVarsManager.GetUserSelection(this.GetForm().GetScreen().GetId());\r\n\r\n let filteredUserSelection = userSelection;\r\n if (filteredUserSelection) {\r\n filteredUserSelection.UserSelection = _.filter(filteredUserSelection.UserSelection, item => item.UserGroups !== undefined);\r\n\r\n filteredUserSelection.UserSelection.forEach((user) => {\r\n if (!user.Guid) {\r\n user.Guid = Guid.NewGuid();\r\n }\r\n });\r\n }\r\n\r\n this._userSelection(filteredUserSelection);\r\n\r\n const screen = this.GetForm().GetScreen();\r\n\r\n if (!this._isShowRememberMe()) {\r\n this._initialized = true;\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n return;\r\n }\r\n\r\n if (filteredUserSelection) {\r\n this._isRememberMe(filteredUserSelection.RememberMe);\r\n }\r\n\r\n if (filteredUserSelection && filteredUserSelection.RememberMe && this._isShowRememberMe()) {\r\n const checkedSelection = _.find(filteredUserSelection.UserSelection, item => item.Checked);\r\n\r\n if (checkedSelection) {\r\n this.ChooseSelection(checkedSelection);\r\n } else {\r\n this._initialized = true;\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n } else {\r\n this._initialized = true;\r\n }\r\n }\r\n\r\n private ChooseSelection(data: IUserSelection) {\r\n SelectUserStore.GetSelectUserModel(this._entityId)\r\n .then((model: SelectUserModel) => {\r\n model.UserGroups = this.AddingUsersToGroups(model);\r\n model = this.RestoreState(model);\r\n\r\n const users = _.intersection(model.Users.map(user => user.Id), _.flatten(data.UserGroups.map(group => group.UserIds)));\r\n const userGroups = _.intersection(model.UserGroups.map(group => group.Id), data.UserGroups.map(group => group.GroupId));\r\n this._state.SelectedUsersAndGroups = data.UserGroups\r\n .filter(group => userGroups.includes(group.GroupId) || _.intersection(group.UserIds, users).length > 0);\r\n\r\n\t\t\t\tthis.SetAppointmentAttendees(model);\r\n\r\n const screen = this.GetForm().GetScreen();\r\n const screenId = screen && screen.GetId();\r\n\r\n this._isPlanner(false);\r\n this._state.ShowPlanned = false;\r\n\r\n if (screen) {\r\n this._activeSelection({Guid: data.Guid, Name: data.Users});\r\n\r\n // Change order of selection on UI\r\n const selectionUIIndex = this._userSelection().UserSelection.findIndex(s => s.Guid === data.Guid);\r\n const selectionUI = this._userSelection().UserSelection[selectionUIIndex];\r\n\r\n this._userSelection().UserSelection.splice(selectionUIIndex, 1);\r\n this._userSelection().UserSelection.unshift(selectionUI);\r\n this._userSelection.valueHasMutated();\r\n\r\n // Change order of selection in user vars\r\n const userVarsManager = UserVarsManager.Instance;\r\n\r\n const userSelectionData = userVarsManager.GetUserSelections();\r\n let selectionByScreenId = _.find(userSelectionData, (selection: ISelection) => selection.ScreenId === screenId);\r\n\r\n if (this._isRememberMe()) {\r\n _.forEach(selectionByScreenId.UserSelection, (item: IUserSelection) => {\r\n item.Checked = item.Guid === data.Guid;\r\n });\r\n }\r\n\r\n const selectionIndex = selectionByScreenId.UserSelection.findIndex(s => s && s.Guid === data.Guid);\r\n if (selectionIndex !== -1) {\r\n const selection = selectionByScreenId.UserSelection[selectionIndex];\r\n\r\n selectionByScreenId.UserSelection.splice(selectionIndex, 1);\r\n selectionByScreenId.UserSelection.unshift(selection);\r\n\r\n userVarsManager.SetUserSelection(screenId, userSelectionData);\r\n }\r\n\r\n this._initialized = true;\r\n screen.Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n\r\n if(this._dropDownTooltip) {\r\n this._dropDownTooltip.Close();\r\n }\r\n }\r\n\r\n this._initialized = true;\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n this._initialized = true;\r\n })\r\n .always(() => BlockUI.Unblock());\r\n\r\n }\r\n\r\n private IsShowPlanner(){\r\n UserManager.Instance.GetUserAllowance()\r\n .then((userAllowance: number) => {\r\n const planningAllowed = USER_ALLOWANCE.PlanningAllowed(userAllowance);\r\n this._isShowPlanner(planningAllowed);\r\n });\r\n }\r\n\r\n private RemoveSelection(data: IUserSelection) {\r\n\r\n //Remove clicked selection from list\r\n const userSelection = this._userSelection();\r\n\r\n const index = userSelection.UserSelection.indexOf(data);\r\n userSelection.UserSelection.splice(index, 1);\r\n\r\n this._userSelection(userSelection);\r\n\r\n //Remove clicked selection from user vars\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userSelectionData = UserVarsManager.Instance.GetUserSelections();\r\n\r\n const selectionByScreenIdIndex = _.findIndex(userSelectionData, (selection: ISelection) => selection.ScreenId === screenId);\r\n userSelectionData.splice(selectionByScreenIdIndex, 1, userSelection);\r\n\r\n UserVarsManager.Instance.SetUserSelection(screenId, userSelectionData);\r\n\r\n //Active selection has been removed\r\n if (this._activeSelection() && this._activeSelection().Guid === data.Guid) {\r\n this._activeSelection(null);\r\n\r\n\t\t\tthis._state.SelectedUsersAndGroups = [];\r\n\t\t\tthis.SetAppointmentAttendees(null);\r\n this.GetForm().GetScreen().Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n }\r\n\r\n private ClearSelection() {\r\n const triggerChanges = !!this._activeSelection();\r\n\r\n this._activeSelection(null);\r\n\t\tthis._state.SelectedUsersAndGroups = [];\r\n\t\tthis.SetAppointmentAttendees(null);\r\n\r\n if (this._isShowRememberMe()) {\r\n this.SetRememberMe();\r\n }\r\n\r\n if (triggerChanges) {\r\n this.GetForm().GetScreen().Trigger(EVENTS.USERS_SELECTION_CHANGED, this._state);\r\n }\r\n }\r\n\r\n private RememberMeGlobalEnabled(): boolean {\r\n const globalManager = GlobalManager.Instance;\r\n const global = globalManager.GetGlobal(GLOBALS.REMEMBER_SELECT_USER);\r\n\r\n return !!parseInt(global);\r\n }\r\n\r\n private SetRememberMe() {\r\n if (!this._activeSelection()) {\r\n this._isRememberMe(false);\r\n }\r\n\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userVarsManager = UserVarsManager.Instance;\r\n userVarsManager.SetRememberUserSelection(screenId, this._isRememberMe());\r\n\r\n return true;\r\n }\r\n\r\n private GetRememberMeValue(): boolean {\r\n const screenId = this.GetForm().GetScreen().GetId();\r\n const userVarsManager = UserVarsManager.Instance;\r\n let data = userVarsManager.GetUserSelection(screenId);\r\n\r\n return data && _.find(data.UserSelection, us => us.Checked) ? data.RememberMe : false;\r\n\t}\r\n\r\n\tprivate SetAppointmentAttendees(model: SelectUserModel) {\r\n\t\tif (!model) {\r\n\t\t\tthis._state.AppointmentAttendees = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n const appointmentAttendees = new SelectUserModel();\r\n const selectedAllUserIds = _.flatten(\r\n _.pluck(\r\n _.filter(this._state.SelectedUsersAndGroups, group => group.GroupId === null),\r\n 'UserIds'\r\n )\r\n );\r\n const users: Array<UserModel> = _.filter(model.Users, user => _.includes(selectedAllUserIds, user.Id));\r\n\r\n const selectedGroups: UserGroupModel[] = _.filter(model.UserGroups, userGroup => _.some(this._state.SelectedUsersAndGroups, selectedGroup => selectedGroup.GroupId === userGroup.Id));\r\n const usersByGroup: UserGroupModel[] = selectedGroups.map(group => {\r\n const selectedGroup = _.find(this._state.SelectedUsersAndGroups, sg => sg.GroupId === group.Id);\r\n if (selectedGroup) {\r\n group.Users = _.filter(group.Users, user => _.includes(selectedGroup.UserIds, user.Id))\r\n }\r\n return group;\r\n });\r\n\r\n appointmentAttendees.Users = _.uniq([\r\n ...users,\r\n ..._.flatten(usersByGroup.map(group => group.Users))\r\n ], false, user => user.Id);\r\n appointmentAttendees.UserGroups = selectedGroups;\r\n\r\n\t\t_.each(appointmentAttendees.Users, user => user.Checked = false);\r\n\t\t_.each(appointmentAttendees.UserGroups, userGroup => userGroup.Checked = false);\r\n\r\n\t\tthis._state.AppointmentAttendees = appointmentAttendees;\r\n\t}\r\n\r\n\tprivate SelectByBusinessRole(selectUserByBusinessRoleModel: SelectUserByBusinessRoleModel) {\r\n\t\tif (!selectUserByBusinessRoleModel || !selectUserByBusinessRoleModel.SelectedUsers || !_.any(selectUserByBusinessRoleModel.SelectedUsers)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet model = this.MapToSelectUserModel(selectUserByBusinessRoleModel);\r\n\t\tif (!_.any(model.Users, user => user.Checked) && !_.any(model.UserGroups, userGroup => userGroup.Checked)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ApplySelection(model, true);\r\n\t}\r\n\r\n\tprivate MapToSelectUserModel(selectUserByBusinessRoleModel: SelectUserByBusinessRoleModel) {\r\n\t\tconst selectedUserIds = selectUserByBusinessRoleModel.SelectedUsers;\r\n\r\n\t\tlet model = new SelectUserModel();\r\n\t\tmodel.Users = selectUserByBusinessRoleModel.Users;\r\n\t\tmodel.UserGroups = selectUserByBusinessRoleModel.UserGroups;\r\n\t\tmodel.UserGroups = this.AddingUsersToGroups(model);\r\n\r\n\t\tmodel.Users.forEach(user => user.Checked = _.contains(selectedUserIds, user.Id));\r\n\t\tmodel.UserGroups.forEach(group => {\r\n\t\t\tconst groupIsChecked = _.contains(selectedUserIds, group.Id);\r\n\t\t\tgroup.Checked = groupIsChecked;\r\n\t\t\tgroup.Users.forEach(user => user.Checked = groupIsChecked);\r\n\t\t});\r\n\r\n\t\treturn model;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-user\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"dropdown select-user-list subFormControl\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <a class=\\\"btn blue\\\" tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" data-toggle=\\\"dropdown\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\" data-bind=\\\"css: {[_id] : _id}\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa fa-user-circle\\\"></i> </a> <span class=\\\"jBox-content-target\\\" data-bind=\\\"attr: {'data-jbox-content' : _popUpContent}\\\"></span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn blue subFormControl\\\"> <i class=\\\"fa fa-user-circle\\\"></i> </a>\";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class UrlCommandModel {\r\n\t@deserialize\r\n\tId: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n}\r\nexport class EditTemplateModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.UrlCommands = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tContent: string;\r\n\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tQueryId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tKSeq: number;\r\n\r\n\t@deserializeAs(UrlCommandModel)\r\n\tUrlCommands: Array<UrlCommandModel>;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class TemplateLanguageModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tHasTemplate: boolean;\r\n\r\n\t@deserialize\r\n\tIsDefault: boolean;\r\n}","import * as _ from 'underscore';\r\n\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { EditTemplateModel } from 'Core/Controls/TemplateDesigner/Models/EditTemplateModel';\r\nimport { TemplateLanguageModel } from 'Core/Controls/TemplateDesigner/Models/TemplateLanguageModel';\r\n\r\nexport interface IGetLanguagesDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tControlId: number;\r\n};\r\n\r\nexport interface ICreateTemplateDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tLanguageId: number;\r\n\tControlId: number;\r\n};\r\n\r\nexport interface IEditTemplateDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tLanguageId: number;\r\n\tControlId: number;\r\n};\r\n\r\nexport interface ISaveTemplateDto {\r\n\tFileName: string;\r\n\tContent: string;\r\n\tQueryId: number;\r\n\tControlId: number;\r\n\tRecordId: number;\r\n\tKSeq: number;\r\n};\r\n\r\nexport interface IPreviewHtmlTemplateDto {\r\n\tData: string;\r\n\tRecordId: number;\r\n\tQueryId: number;\r\n};\r\n\r\nexport class TemplateDesignerStore {\r\n\r\n\tstatic GetLanguages(params: IGetLanguagesDto): P.Promise<Array<TemplateLanguageModel>> {\r\n\t\tvar deferredResult = P.defer<Array<TemplateLanguageModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/GetLanguages',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tdeferredResult.resolve(Deserialize(data, TemplateLanguageModel));\r\n\t\t\t}).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Edit(params: IEditTemplateDto): P.Promise<EditTemplateModel> {\r\n\t\tvar deferredResult = P.defer<EditTemplateModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/Edit',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, EditTemplateModel));\r\n\t\t\t}).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Create(params: ICreateTemplateDto): P.Promise<EditTemplateModel> {\r\n\t\tvar deferredResult = P.defer<EditTemplateModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/Create',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t.then((data) => deferredResult.resolve(Deserialize(data, EditTemplateModel)))\r\n\t\t.fail(err => { deferredResult.reject({ message: JSON.parse(err.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Save(params: ISaveTemplateDto): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/Save',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t.then(() => deferredResult.resolve(null))\r\n\t\t.fail(err => { deferredResult.reject({ message: JSON.parse(err.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Preview(params: IPreviewHtmlTemplateDto): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentTemplatesApi/PreviewHtmlTemplate',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t.then((data) => {\r\n\t\t\tdeferredResult.resolve(Deserialize(data, String))\r\n\t\t})\r\n\t\t.fail(err => { deferredResult.reject({ message: JSON.parse(err.message).Message }) });\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport Template from 'Desktop/Toolbar/ToolbarQueryColumn/Templates/Template.html';\r\nimport 'pubsub';\r\n\r\nexport class ToolbarQueryColumn {\r\n\r\n\tprivate _model: QueryColumnModel;\r\n\r\n\tconstructor(model: QueryColumnModel, private _isLinkColumn = false) {\r\n\t\tthis._model = model;\r\n\t}\r\n\r\n\tget Name(): string {\r\n\t\treturn this._model.Metadata.NameTranslation || this._model.Metadata.Name;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tPasteFieldCode(entityName: string, entityIndex: number, element: HTMLElement) {\r\n\t\tif (entityIndex > 1) {\r\n\t\t\tentityName = `${entityName}${entityIndex}`;\r\n\t\t}\r\n\r\n\t\tvar translation = '';\r\n\t\tif (this._model.Metadata.NameTranslation) {\r\n\t\t\ttranslation = `(${this._model.Metadata.NameTranslation})`;\r\n\t\t};\r\n\r\n\t\tPubSub.publish('PASTE_FIELD_CODE', { EntityName: entityName, FieldName: `${this._model.Metadata.Name}${translation}`, Element: element });\r\n\t}\r\n\r\n\tget IsLinkColumn(): boolean {\r\n\t\treturn this._isLinkColumn;\r\n\t}\r\n\r\n\tget Model(): QueryColumnModel {\r\n\t\treturn this._model;\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko ifnot: IsLinkColumn --> <div data-bind=\\\"event: {\\r\\n\\t\\t\\t\\t\\tmousedown: $data.PasteFieldCode.bind($data, $parent.Model.Metadata.Name, $parent.Model.Index, $element)\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\trelatedField: IsLinkColumn\\r\\n\\t\\t\\t\\t}\\\" class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: Name\\\" class=\\\"field-name\\\"></span> </div> <!-- /ko --> <!-- ko if: IsLinkColumn --> <div data-bind=\\\"event: {\\r\\n\\t\\t\\t\\t\\tmousedown: $data.PasteFieldCode.bind($data, $parent.Model.Metadata.Name, $parent.Model.Index, $element) },\\r\\n\\t\\t\\t\\t\\tcss: { relatedField: IsLinkColumn\\r\\n\\t\\t\\t\\t}\\\" class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: Name\\\" class=\\\"field-name\\\"></span> </div> <!-- /ko -->\";\n// Exports\nexport default code;","export class SpheeresLink {}","export class OpenRecordLink {};","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ToolbarQueryColumn } from 'Desktop/Toolbar/ToolbarQueryColumn/ToolbarQueryColumn';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { SpheeresLink } from 'Desktop/Toolbar/SpheeresLink';\r\nimport { OpenRecordLink } from 'Desktop/Toolbar/OpenRecordLink';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from 'Desktop/Toolbar/ToolbarQueryEntity/Templates/Template.html';\r\n\r\n\r\nexport class ToolbarQueryEntity {\r\n\tprivate _model: QueryEntityModel;\r\n\tprivate _columns: Array<ToolbarQueryColumn>;\r\n\tprivate _isExpanded: KnockoutObservable<boolean>;\r\n\tprivate _isDesktop: boolean;\r\n\tprivate _spheeresLink: SpheeresLink;\r\n\tprivate _openRecordLink: OpenRecordLink;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(\r\n\t\tmodel: QueryEntityModel,\r\n\t\tisDesktop: boolean\r\n\t) {\r\n\t\tthis._model = model;\r\n\t\tthis._isDesktop = isDesktop;\r\n\t\tthis._columns = [];\r\n\t\tthis._isExpanded = ko.observable(false);\r\n\t\tthis.Init();\r\n\t\tthis._spheeresLink = new SpheeresLink();\r\n\t\tthis._openRecordLink = new OpenRecordLink();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tif (this._model) {\r\n\t\t\t_.each(this._model.Columns, (column) => {\r\n\t\t\t\tvar toolbarQueryColumn = new ToolbarQueryColumn(column, this._model.Metadata.Type === EntityTypes[EntityTypes.Link]);\r\n\t\t\t\tthis._columns.push(toolbarQueryColumn);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tExpand() {\r\n\t\tthis._isExpanded(!this._isExpanded());\r\n\t}\r\n\r\n\tget IsExpanded(): KnockoutObservable<boolean> {\r\n\t\treturn this._isExpanded;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._model.Metadata.NameTranslation || this._model.Metadata.Name;\r\n\t}\r\n\r\n\tget Title() {\r\n\t\tvar name = this._model.Metadata.NameTranslation || this._model.Metadata.Name;\r\n\t\tif (this._model.Index > 1) {\r\n\t\t\tname = `${name}${this._model.Index}`;\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tget Columns(): Array<ToolbarQueryColumn> {\r\n\t\treturn this._columns;\r\n\t}\r\n\r\n\tget Model(): QueryEntityModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tPasteTable() {}\r\n}","// Module\nvar code = \"<div class=\\\"panel panel-info\\\"> <div data-bind=\\\"click: $data.Expand.bind($data)\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 data-bind=\\\"text: Title\\\" class=\\\"panel-title clip panel-name subject\\\"></h5> <!-- ko ifnot: _isDesktop --> <a data-bind=\\\"dragula: { data: [$data._openRecordLink], group: 'ToolBarToTemplateEditor' }, tooltip: {content: _labels.RECORD_LINK}\\\" href=\\\"javascript:;\\\" class=\\\"pull-right open-record-link\\\"> <i class=\\\"fa fa-external-link\\\"></i> </a> <!-- /ko --> <!-- ko ifnot: _isDesktop --> <a data-bind=\\\"dragula: { data: [$data._spheeresLink], group: 'ToolBarToTemplateEditor' }, tooltip: {content: _labels.SPHEERES_LINK}\\\" href=\\\"javascript:;\\\" class=\\\"pull-right\\\"> <i class=\\\"fa fa-link\\\"></i> </a> <!-- /ko --> </div> </div> <div data-bind=\\\"style: { display: IsExpanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\"> <!-- ko ifnot: _isDesktop --> <div data-bind=\\\"dragula: { data: Columns, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko if: _isDesktop --> <!-- ko foreach: Columns --> <div class=\\\"field-container\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","export const EVENTS = {\r\n\tDROP_FIELD: 'DROP_FIELD',\r\n\tDROP_ENTITY: 'DROP_ENTITY',\r\n\tDROP_SPHEERES_LINK: 'DROP_SPHEERES_LINK',\r\n\tDROP_OPEN_RECORD_LINK: 'DROP_OPEN_RECORD_LINK',\r\n\tDROP_URL_COMMAND: 'DROP_URL_COMMAND',\r\n\tDROP_EMAIL_SUBJECT: 'DROP_EMAIL_SUBJECT',\r\n\tDROP_VARIABLE: 'DROP_VARIABLE',\r\n\tDROP_CC: 'DROP_CC',\r\n\tDROP_BCC: 'DROP_BCC',\r\n\tDROP_TO: 'DROP_TO',\r\n\tDROP_SCRIPT: 'DROP_SCRIPT',\r\n\tSAVE: 'SAVE',\r\n\tPREVIEW: 'PREVIEW'\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ToolbarQueryEntity } from 'Desktop/Toolbar/ToolbarQueryEntity/ToolbarQueryEntity';\r\n\r\nimport Template from 'Desktop/Toolbar/ToolbarQueryEntityJoin/Templates/Template.html';\r\n\r\nexport class ToolbarQueryEntityJoin {\r\n\tprivate _isExpanded: KnockoutObservable<boolean>;\r\n\tprivate _toolbarQueryEntity: ToolbarQueryEntity;\r\n\tprivate _toolbarQueryLinkEntity: ToolbarQueryEntity;\r\n\tprivate _model: QueryEntityJoinModel;\r\n\tprivate _isDesktop: boolean;\r\n\tprivate _isRoot: boolean;\r\n\tprivate _joins: KnockoutObservableArray<ToolbarQueryEntityJoin>;\r\n\r\n\tconstructor(\r\n\t\tqueryEntityJoin: QueryEntityJoinModel,\r\n\t\tisDesktop: boolean,\r\n\t\tisRoot: boolean = false\r\n\t) {\r\n\t\tthis._model = queryEntityJoin;\r\n\t\tthis._isDesktop = isDesktop;\r\n\t\tthis._isExpanded = ko.observable(false);\r\n\t\tthis._joins = ko.observableArray([]);\r\n\t\t\r\n\t\tthis._isRoot = isRoot;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tget Style() {\r\n\t\treturn !this._isRoot ? { margin: '5px' } : {};\r\n\t}\r\n\r\n\tInit() {\r\n\t\tif (this._model.Entity) {\r\n\t\t\tthis._toolbarQueryEntity = new ToolbarQueryEntity(this._model.Entity, this._isDesktop);\r\n\t\t}\r\n\r\n\t\tif (this._model.LinkEntity) {\r\n\t\t\tthis._toolbarQueryLinkEntity = new ToolbarQueryEntity(this._model.LinkEntity, this._isDesktop);\r\n\t\t}\r\n\r\n\r\n\t\tlet allJoins = this._model.Joins\r\n\t\t.concat(this._model.SubEntityJoins)\r\n\t\t.concat(this._model.LookupEntityJoins)\r\n\t\t.concat(this._model.ReferenceEntityJoins)\r\n\t\t.concat(this._model.ReferenceLookupEntityJoins);\t\t\t\t\t\r\n\r\n\t\tthis._joins(allJoins.map(item=> new ToolbarQueryEntityJoin(item, this._isDesktop, false)));\r\n\t}\r\n\r\n\tget Entity(): ToolbarQueryEntity {\r\n\t\treturn this._toolbarQueryEntity;\r\n\t}\r\n\r\n\tget LinkEntity(): ToolbarQueryEntity {\r\n\t\treturn this._toolbarQueryLinkEntity;\r\n\t}\r\n\r\n\tget EntityModel(): QueryEntityModel {\r\n\t\treturn this._model.Entity;\r\n\t}\r\n\r\n\tget LinkEntityModel(): QueryEntityModel {\r\n\t\treturn this._model.LinkEntity;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._model.Entity.Metadata.NameTranslation || this._model.Entity.Metadata.Name;\r\n\t}\r\n\r\n\tget Title() {\r\n\t\tvar name = this._model.Entity.Metadata.NameTranslation || this._model.Entity.Metadata.Name;\r\n\t\tif (this._model.Entity.Index > 1) {\r\n\t\t\tname = `${name}${this._model.Entity.Index}`;\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tget LinkName() {\r\n\t\treturn this._model.LinkEntity.Metadata.Name;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tExpand() {\r\n\t\tthis._isExpanded(!this._isExpanded());\r\n\t}\r\n\r\n\tget IsExpanded(): KnockoutObservable<boolean> {\r\n\t\treturn this._isExpanded;\r\n\t}\r\n\r\n\tget Joins(): KnockoutObservableArray<ToolbarQueryEntityJoin> {\r\n\t\treturn this._joins;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"style: Style\\\" class=\\\"panel panel-info\\\"> <div data-bind=\\\"click: $data.Expand.bind($data)\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 data-bind=\\\"text: Title\\\" class=\\\"panel-title clip panel-name subject\\\"></h5> <!-- ko ifnot: _isDesktop --> <a data-bind=\\\"dragula: { data: [$data], group: 'ToolBarToTemplateEditor' }\\\" href=\\\"javascript:;\\\" class=\\\"pull-right\\\"> <img class=\\\"draggable-field\\\" style=\\\"background-color:rgba(142,174,189,.3);height:24px;width:24px\\\" src=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAASFBMVEUAAAApgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLn59WPfAAAAF3RSTlMAAQhAQW17f6Cipbe8vsPFx8jP0e35++rah8AAAACQSURBVCjPnZDRDoIwFEMPKqiMwmBI//9PfVjAEJiJ9u2ku7e9g6Kuzf2g5ga1T1UznxszLghPAEyuAKoNsQCQc5UPlo3iqmK4B0mDPUnStCEeABjWjH7Fcnh+0u8nemN3IYTOHkMIYdzwS6sEQNrfkf75kmUEYFyNmPHF01FStJMkpXx59INLuxwrLe2Fn/UGiXUYMi9HL3cAAAAASUVORK5CYII=\\\"/> </a> <!-- /ko --> <!-- ko if: _isDesktop --> <a href=\\\"javascript:;\\\" class=\\\"pull-right\\\"> <img data-bind=\\\"event: { mousedown: $root.PasteTable.bind($root, $data) }\\\" class=\\\"draggable-field\\\" style=\\\"background-color:rgba(142,174,189,.3);height:24px;width:24px\\\" src=\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAASFBMVEUAAAApgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLkpgLn59WPfAAAAF3RSTlMAAQhAQW17f6Cipbe8vsPFx8jP0e35++rah8AAAACQSURBVCjPnZDRDoIwFEMPKqiMwmBI//9PfVjAEJiJ9u2ku7e9g6Kuzf2g5ga1T1UznxszLghPAEyuAKoNsQCQc5UPlo3iqmK4B0mDPUnStCEeABjWjH7Fcnh+0u8nemN3IYTOHkMIYdzwS6sEQNrfkf75kmUEYFyNmPHF01FStJMkpXx59INLuxwrLe2Fn/UGiXUYMi9HL3cAAAAASUVORK5CYII=\\\"/> </a> <!-- /ko --> </div> </div> <div data-bind=\\\"style: { display: IsExpanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <!--ko if: _isDesktop --> <!--ko with: LinkEntity --> <!--ko foreach: Columns --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _isDesktop --> <!--ko with: LinkEntity --> <div data-bind=\\\"dragula: { data: Columns, group: 'ToolBarToTemplateEditor' }\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!--ko if: _isDesktop --> <!--ko with: Entity --> <!--ko foreach: Columns --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _isDesktop --> <!--ko with: Entity --> <div data-bind=\\\"dragula: { data: Columns, group: 'ToolBarToTemplateEditor' }\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!--ko foreach: Joins --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ToolbarQueryEntity } from 'Desktop/Toolbar/ToolbarQueryEntity/ToolbarQueryEntity';\r\nimport { GetQueryStore } from 'QueryBuilder/Stores/GetQueryStore';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { QueryBuilder } from '../../../../QueryBuilder/QueryBuilder';\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from '../../../../QueryBuilder/Events';\r\nimport { DragulaExtention } from 'Core/KnockoutExtentions/DragulaExtention';\r\nimport { ToolbarQueryColumn } from 'Desktop/Toolbar/ToolbarQueryColumn/ToolbarQueryColumn';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { EVENTS } from 'Core/Controls/TemplateDesigner/QueryToolbar/Events';\r\nimport { ViewModes } from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { SpheeresLink } from 'Desktop/Toolbar/SpheeresLink';\r\nimport { ToolbarQueryEntityJoin } from 'Desktop/Toolbar/ToolbarQueryEntityJoin/ToolbarQueryEntityJoin';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { EditQueryModel } from 'QueryBuilder/Models/EditQueryModel';\r\nimport { UrlCommandModel } from 'Core/Controls/TemplateDesigner/Models/EditTemplateModel';\r\n\r\nimport Template from 'Core/Controls/TemplateDesigner/QueryToolbar/Templates/QueryToolbar.html';\r\nimport { OpenRecordLink } from '../../../../Desktop/Toolbar/OpenRecordLink';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\n\r\nconst DRAGULA_EVENTS = {\r\n\tDROP: 'drop',\r\n\tDRAG: 'drag',\r\n\tDRAG_END: 'dragend',\r\n\tCLONED: 'cloned'\r\n}\r\n\r\nexport class EmailSubject {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class EmailCC {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class EmailBCC {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class EmailTo {\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class Script {\r\n\tconstructor(title: string, value: string){\r\n\t\tthis.Title = title;\r\n\t\tthis.Value = value;\r\n\t}\r\n\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class Variable {\r\n\tconstructor(title: string, value: string){\r\n\t\tthis.Title = title;\r\n\t\tthis.Value = value;\r\n\t}\r\n\r\n\tTitle: string;\r\n\tValue: string;\r\n}\r\n\r\nexport class QueryToolbar extends Event {\r\n\tprivate _subjectEntity: KnockoutObservable<ToolbarQueryEntity>;\r\n\tprivate _joins: KnockoutObservableArray<ToolbarQueryEntityJoin>;\r\n\tprivate _isLoadInProgress: KnockoutObservable<boolean>;\r\n\tprivate _queryId: number;\r\n\tprivate _iframeBlocks: JQuery;\r\n\tprivate _original: any;\r\n\tprivate _dragulaGroup: any;\r\n\tprivate _labels = LABELS;\r\n\tprivate _urlCommands: KnockoutObservableArray<UrlCommandModel>;\r\n\r\n\tprivate _variables: KnockoutObservableArray<Variable>;\r\n\tprivate __urlCommands: Array<UrlCommandModel>;\r\n\tprivate _email: KnockoutObservableArray<any>;\r\n\tprivate _scripting: KnockoutObservableArray<Script>;\r\n\tprivate IsScriptingExpanded: KnockoutObservable<boolean>;\r\n\r\n\t\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.AddEvent(EVENTS.DROP_FIELD);\r\n\t\tthis.AddEvent(EVENTS.DROP_ENTITY);\r\n\t\tthis.AddEvent(EVENTS.SAVE);\r\n\t\tthis.AddEvent(EVENTS.DROP_SPHEERES_LINK);\r\n\t\tthis.AddEvent(EVENTS.DROP_OPEN_RECORD_LINK);\r\n\t\tthis.AddEvent(EVENTS.DROP_URL_COMMAND);\r\n\t\tthis.AddEvent(EVENTS.DROP_EMAIL_SUBJECT);\r\n\t\tthis.AddEvent(EVENTS.DROP_TO);\r\n\t\tthis.AddEvent(EVENTS.DROP_CC);\r\n\t\tthis.AddEvent(EVENTS.DROP_BCC);\r\n\t\tthis.AddEvent(EVENTS.DROP_SCRIPT);\r\n\t\tthis.AddEvent(EVENTS.PREVIEW);\r\n\t\tthis.AddEvent(EVENTS.DROP_VARIABLE);\r\n\t\tthis._subjectEntity = ko.observable(null);\r\n\t\tthis._joins = ko.observableArray([]);\r\n\t\tthis._isLoadInProgress = ko.observable(false);\r\n\t\tthis._iframeBlocks = null;\r\n\t\tthis._queryId = null;\r\n\t\tthis._urlCommands = ko.observableArray([]);\r\n\t\tthis._email = ko.observableArray([]);\r\n\t\tthis.__urlCommands = [];\r\n\t\tthis.IsScriptingExpanded = ko.observable(false);\r\n\t\tthis._scripting = ko.observableArray();\r\n\t\tthis._variables = ko.observableArray([]);\r\n\t}\r\n\r\n\tSetCommands(commands: Array<UrlCommandModel>) {\r\n\t\tthis.__urlCommands = commands;\r\n\t}\r\n\r\n\tInitDragula() {\r\n\t\t_.each(DragulaExtention.FindGroups('ToolBarToTemplateEditor'), (item) => { DragulaExtention.DestroyGroup(item); });\r\n\r\n\t\tthis._dragulaGroup = DragulaExtention.AddGroupWithOptions('ToolBarToTemplateEditor', {\r\n\t\t\tcopy: (el, source) => {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._dragulaGroup.drake\r\n\t\t\t.on(DRAGULA_EVENTS.DROP, (el, target, source, sibling) => {\r\n\r\n\t\t\t\tlet elementModel = ko.dataFor(this._original);\r\n\t\t\t\tlet sourceModel = ko.dataFor(source);\r\n\t\t\t\tif (sourceModel instanceof ToolbarQueryEntity && elementModel instanceof ToolbarQueryColumn) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_FIELD, { Field: elementModel, Entity: sourceModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof ToolbarQueryEntityJoin) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_ENTITY, { Entity: sourceModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof SpheeresLink) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_SPHEERES_LINK);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof OpenRecordLink) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_OPEN_RECORD_LINK);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailSubject) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_EMAIL_SUBJECT, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailCC) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_CC, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailBCC) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_BCC, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof EmailTo) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_TO, { EmailSubject: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof Script) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_SCRIPT, { Script: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof Variable) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_VARIABLE, { Variable: elementModel });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (elementModel instanceof UrlCommandModel) {\r\n\t\t\t\t\tthis.Trigger(EVENTS.DROP_URL_COMMAND, { Id: elementModel.Id, Name: elementModel.Name, Type: elementModel.Type });\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t.on(DRAGULA_EVENTS.DRAG, (el) => {\r\n\t\t\t\tthis.BlockFrames();\r\n\t\t\t})\r\n\t\t\t.on(DRAGULA_EVENTS.DRAG_END, (el) => {\r\n\t\t\t\tthis.UnblockFrames();\r\n\t\t\t})\r\n\t\t\t.on(DRAGULA_EVENTS.CLONED, (clone, original, type) => {\r\n\t\t\t\tthis._original = original;\r\n\t\t\t});\r\n\t}\r\n\r\n\tBlockFrames() {\r\n\t\tthis._iframeBlocks = $('iframe').map((indx, element) => {\r\n\t\t\tvar iframe = $(element);\r\n\t\t\treturn $('<div>')\r\n\t\t\t\t.css('position', 'absolute')\r\n\t\t\t\t.appendTo(iframe.parent())\r\n\t\t\t\t.outerWidth(iframe.outerWidth())\r\n\t\t\t\t.outerHeight(iframe.outerHeight())\r\n\t\t\t\t.offset(iframe.offset())[0];\r\n\t\t});\r\n\t}\r\n\r\n\tUnblockFrames() {\r\n\t\tif (this._iframeBlocks) {\r\n\t\t\tthis._iframeBlocks.remove();\r\n\t\t\tdelete this._iframeBlocks;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tRefresh() {\r\n\t\tif (this._queryId) {\r\n\t\t\tthis._isLoadInProgress(true);\r\n\t\t\tGetQueryStore.GetToolbarQuery({ Id: this._queryId })\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tthis._isLoadInProgress(false);\r\n\t\t\t\t}).then((data) => {\r\n\t\t\t\t\tthis.SetData(data);\r\n\t\t\t\t}).fail(err=>{\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tSetData(editQuery: EditQueryModel) {\r\n\t\tthis._subjectEntity(null);\t\t\r\n\t\tthis._joins([]);\r\n\t\tthis._email([]);\r\n\t\tthis._scripting([]);\r\n\t\tthis._urlCommands([]);\r\n\t\tthis._variables([]);\r\n\t\t\r\n\t\tthis.InitDragula();\r\n\t\tthis._urlCommands(this.__urlCommands);\r\n\r\n\t\tlet emailSubject = new EmailSubject();\r\n\t\temailSubject.Title = 'SUBJECT';\r\n\t\temailSubject.Value = '{SUBJECT}{/SUBJECT}';\r\n\r\n\t\tlet emailCC = new EmailCC();\r\n\t\temailCC.Title = 'CC';\r\n\t\temailCC.Value = '{CC}{/CC}';\r\n\r\n\r\n\t\tlet emailBCC= new EmailBCC();\r\n\t\temailBCC.Title = 'BCC';\r\n\t\temailBCC.Value = '{BCC}{/BCC}';\r\n\r\n\t\tlet emailTo= new EmailTo();\r\n\t\temailTo.Title = 'TO';\r\n\t\temailTo.Value = '{TO}{/TO}';\r\n\r\n\t\tthis._email([emailSubject, emailTo, emailCC, emailBCC]);\r\n\r\n\t\tthis._scripting([\r\n\t\t\tnew Script('<%%>', '<% %>' ),\r\n\t\t\tnew Script('IIF', 'IIF();'),\r\n\t\t\tnew Script('COUNT', 'COUNT();'),\r\n\t\t\tnew Script('TOTAL', 'TOTAL();'),\r\n\t\t\tnew Script('ROUND', 'ROUND();'),\r\n\t\t\tnew Script('GROUP', \"{GROUP('TABLE_NAME.FIELD_NAME', 'ASC')}\\n\\n{/GROUP}\"),\r\n\t\t\tnew Script('SHOWIF', \"{SHOWIF('CONDITION')}\\n\\n{/SHOWIF}\"),\r\n\t\t\tnew Script('HIDEIF', \"{HIDEIF('CONDITION')}\\n\\n{/HIDEIF}\"),\r\n\t\t\tnew Script('SIGNATURE', \"{SIGNATURE('USER NAME')}\"),\r\n\t\t\tnew Script('MOLLIE', \"{MOLLIE}TableName; RecordId; EUR; Amount; Description{/MOLLIE}\"),\r\n\t\t\tnew Script('QRCODE', \"{QRCODE}\\n\\n{/QRCODE}\"),\r\n\t\t]);\t\r\n\t\t\r\n\t\tthis._variables([new Variable ('FLOW FOLDER FILES', '{FLOW_FOLDER_FILES}' )]);\r\n\r\n\t\tif(editQuery.Query){\r\n\t\t\tthis._subjectEntity(new ToolbarQueryEntity(editQuery.Query.Entity, false));\r\n\t\t\t\t\r\n\t\t\tlet query = editQuery.Query;\r\n\t\r\n\t\t\tlet allJoins = query.EntityJoins\r\n\t\t\t\t.concat(query.SubEntityJoins)\r\n\t\t\t\t.concat(query.LookupEntityJoins)\r\n\t\t\t\t.concat(query.ReferenceEntityJoins)\r\n\t\t\t\t.concat(query.ReferenceLookupEntityJoins);\t\t\t\t\t\r\n\t\r\n\t\t\tthis._joins(allJoins.map(item=> new ToolbarQueryEntityJoin(item, false, true)));\r\n\t\t}\t\r\n\t}\r\n\r\n\tget QueryEntity(): KnockoutObservable<ToolbarQueryEntity> {\r\n\t\treturn this._subjectEntity;\r\n\t}\r\n\r\n\tget Joins(): KnockoutObservableArray<ToolbarQueryEntityJoin>{\r\n\t\treturn this._joins;\r\n\t}\r\n\r\n\tShowQueryBuilder() {\r\n\t\tconst modal = new Modal();\r\n\t\tmodal.Show();\r\n\t\tconst queryBuilder = new QueryBuilder(true, false, true);\r\n\t\tqueryBuilder.QueryTypeName = ViewModes.Template;\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(queryBuilder, modal.Wrapper);\r\n\t\tvar recordsPerPageGlobalValue = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n\t\tvar recordsPerPage = parseInt(recordsPerPageGlobalValue) || 10;\r\n\t\tif (this._queryId) {\r\n\t\t\tqueryBuilder.EditQuery(this._queryId, recordsPerPage);\r\n\t\t} else {\r\n\t\t\tqueryBuilder.InitTemplateQuery(recordsPerPage, '', []);\r\n\t\t}\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, (eventArgs) => { modal.Close(); });\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n\t\t\tmodal.Close();\r\n\t\t\tif (eventArgs.data) {\r\n\t\t\t\tthis._queryId = eventArgs.data.RecordId;\r\n\t\t\t\tthis.Refresh();\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis.Trigger(EVENTS.SAVE);\r\n\t}\r\n\r\n\tPasteTable() { }\r\n\r\n\tPasteFieldCode() { }\r\n\r\n\tget QueryId(): number {\r\n\t\treturn this._queryId;\r\n\t}\r\n\r\n\tset QueryId(queryId: number) {\r\n\t\tthis._queryId = queryId;\r\n\t}\r\n\r\n\tprivate Preview(){\r\n\t\tthis.Trigger(EVENTS.PREVIEW, { EntityId: this._subjectEntity().Model.Metadata.Id }); \r\n\t}\r\n\r\n\tExpandScripting(){\r\n\t\tthis.IsScriptingExpanded(!this.IsScriptingExpanded())\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isLoadInProgress\\\" class=\\\"form-designer\\\"> <div class=\\\"panel-group\\\"> <div class=\\\"util-btn-margin-bottom-5\\\"> <button data-bind=\\\"click: $data.Save.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green-meadow btn-save-template\\\"><!--ko text: _labels.SAVE --><!-- /ko --></button> <button data-bind=\\\"click: $data.ShowQueryBuilder.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green-meadow btn-save-query\\\"><!--ko text: _labels.QUERY --><!-- /ko --></button> <!--ko if: _subjectEntity --> <button data-bind=\\\"click: $data.Preview.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green-meadow btn-save-query\\\"><!--ko text: _labels.PREVIEW --><!-- /ko --></button> <!-- /ko --> </div> <div data-bind=\\\"\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"></h4> </div> <div class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div class=\\\"panel-body scroll-y entity-container\\\"> <div class=\\\"panel panel-info\\\"> <div class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">COMMANDS</h5> </div> </div> <div class=\\\"panel-collapse collapse\\\" style=\\\"display:block\\\"> <!--ko if: _urlCommands().length > 0 --> <div data-bind=\\\"dragula: { data: _urlCommands, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Name\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel panel-info\\\"> <div class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">VARIABLES</h5> </div> </div> <div class=\\\"panel-collapse collapse\\\" style=\\\"display:block\\\"> <!--ko if: _variables().length > 0 --> <div data-bind=\\\"dragula: { data: _variables, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Title\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel panel-info\\\"> <div class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">EMAIL</h5> </div> </div> <div class=\\\"panel-collapse collapse\\\" style=\\\"display:block\\\"> <!--ko if: _email().length > 0 --> <div data-bind=\\\"dragula: { data: _email, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Title\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"panel panel-info\\\"> <div data-bind=\\\"click: $data.ExpandScripting.bind($data)\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\">SCRIPT</h5> </div> </div> <div data-bind=\\\"style: { display: IsScriptingExpanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\"> <!--ko if: _scripting().length > 0 --> <div data-bind=\\\"dragula: { data: _scripting, group: 'ToolBarToTemplateEditor' }\\\" class=\\\"field-container\\\"> <div class=\\\"alert alert-warning clearfix draggable-field\\\"> <span data-bind=\\\"text: $data.Title\\\" class=\\\"field-name\\\"></span> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div> <div data-bind=\\\"\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"><!--ko text: _labels.ENTITIES --><!-- /ko --></h4> </div> <!--ko if: QueryEntity --> <div class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div class=\\\"panel-body scroll-y entity-container\\\"> <!--ko with: QueryEntity --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!--ko foreach: Joins --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <div class=\\\"btn-group\\\"> <div class=\\\"dropdown\\\"> <button data-bind=\\\"css: { 'disabled': _templateLanguages().length == 0 },\\r\\n\\t\\t\\t\\t\\t\\t\\talignDropdown: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttype: 'bootstrap',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdirections: {vertical: true, horizontal: true},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\taddEventOnclick: true\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\\" type=\\\"button\\\" class=\\\"btn btn-primary dropdown-toggle\\\" data-toggle=\\\"dropdown\\\"> <!-- ko text: _labels.TEMPLATES --><!-- /ko --> <i class=\\\"fa fa-angle-down\\\"></i> </button> <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\" data-bind=\\\"css: { 'template-designer__scrollable-menu': _templateLanguages().length >= 8 }\\\"> <!-- ko foreach: _templateLanguages --> <li> <!-- ko ifnot: HasTemplate --> <a data-bind=\\\"click: $parent.CreateTemplate.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> <span><!-- ko text: $parent._labels.CREATE_TEMPLATE_IN --> <!-- /ko --> <!-- ko text: Name --><!-- /ko --><!-- ko if: IsDefault -->(default)<!-- /ko --></span> </a> <!-- /ko --> <!-- ko if: HasTemplate --> <a data-bind=\\\"click: $parent.UpdateTemplate.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> <span><!-- ko text: $parent._labels.UPDATE_TEMPLATE_IN --><!-- /ko --> <!-- ko text: Name --><!-- /ko --><!-- ko if: IsDefault -->(default)<!-- /ko --></span> </a> <!-- /ko --> </li> <!-- /ko --> </ul> </div> </div> </div> <!-- ko if: _hasData --> <div class=\\\"row template-designer\\\"> <div class=\\\"col-md-2 explorer-block\\\"> <!-- ko with: _toolBar --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-10\\\"> <textarea data-bind=\\\"attr: { id: _guid }, tinymce : { guid: _guid, readOnly: false, autofocus: true, min_height: '500', height: '700', afterInit: $data.AfterTinyInit.bind($data), afterChange: $data.AfterTinyChange.bind($data) }\\\" rows=\\\"20\\\"></textarea> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"text: name, attr: {\\r\\n 'next-status': 'Next status',\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\n\r\nimport { ComplexControl } from 'Core/Controls/ComplexControl/ComplexControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { TemplateDesignerStore, IEditTemplateDto, ISaveTemplateDto, IGetLanguagesDto, ICreateTemplateDto, IPreviewHtmlTemplateDto } from 'Core/Controls/TemplateDesigner/Stores/TemplateDesignerStore';\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { RequiredFieldModel } from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { RenderModes, FIELD_TYPES, TABLE_TYPES } from 'Core/Constant'\r\nimport {EmailSubject, QueryToolbar, Script, Variable} from 'Core/Controls/TemplateDesigner/QueryToolbar/QueryToolbar';\r\nimport { EVENTS as QEUERY_TOOLBAR_EVENTS } from 'Core/Controls/TemplateDesigner/QueryToolbar/Events';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { ToolbarQueryEntityJoin } from 'Desktop/Toolbar/ToolbarQueryEntityJoin/ToolbarQueryEntityJoin';\r\nimport { TemplateLanguageModel } from 'Core/Controls/TemplateDesigner/Models/TemplateLanguageModel';\r\nimport { EditTemplateModel } from 'Core/Controls/TemplateDesigner/Models/EditTemplateModel';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { Modal } from 'Core/Common/Modal';\r\n\r\nimport ViewTemplate from 'Core/Controls/TemplateDesigner/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/TemplateDesigner/Templates/ToolBar.html';\r\nimport FieldVariableTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Field.html';\r\nimport TableVariableTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Table.html';\r\nimport EmailSubjectTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/EmailSubject.html';\r\nimport OpenRecordLinkTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/OpenRecordLink.html';\r\n\r\nimport LoginURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/LoginURLCommand.html';\r\nimport NextStatusURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/NextStatusURLCommand.html';\r\nimport StepsNextStatusURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/StepsNextStatusURLCommand.html';\r\nimport ConfirmedOptinURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/ConfirmedOptinURLCommand.html';\r\nimport UnsubscribeMeURLCommandTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/UnsubscribeMeURLCommand.html';\r\nimport ScriptTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Script.html';\r\nimport VariableTemplate from 'Core/Controls/TemplateDesigner/Templates/Variables/Variable.html';\r\n\r\nko.templates['Core/Controls/TemplateDesigner/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/NextStatusURLCommand'] = NextStatusURLCommandTemplate;\r\nko.templates['Core/Controls/TemplateDesigner/Templates/Variables/EmailSubject'] = EmailSubjectTemplate;\r\n\r\nconst HTML_TEMPLATE = 'html';\r\n\r\nconst TINYMCE_COMMANDS = {\r\n\tINSERT_CONTENT: 'mceInsertContent'\r\n}\r\n\r\nconst URL_COMMANDS = {\r\n\tSTEPS_NEXT_STATUS: 'StepsNextStatus',\r\n\tNEXT_STATUS: 'NextStatus',\r\n\tUNSUBSCRIBE_ME : 'UnsubscribeMe',\r\n\tCONFIRMED_OPTIN : 'ConfirmedOptin',\r\n\tLOGIN_GUEST: 'LoginGuest',\r\n\tLOGIN_GDPR: 'LoginGDPR',\r\n\tLOGIN_CONTACT: 'LoginContactUser'\r\n}\r\n\r\ndeclare function unescape(s:string): string;\r\ndeclare function escape(s:string): string;\r\n\r\nexport class TemplateDesigner extends ComplexControl {\r\n\tprivate _enableEditButton: KnockoutObservable<boolean>;\r\n\tprivate _isWebTemplate: KnockoutObservable<boolean>;\r\n\tprivate _toolBar: KnockoutObservable<QueryToolbar>;\r\n\tprivate _tinyEditor: any;\r\n\tprivate _htmlTemplate: string;\r\n\tprivate _fileName: string;\r\n\tprivate _templateFileId: number;\r\n\tprivate _templateFileKSeq: number;\r\n\tprivate _templateLanguages: KnockoutObservableArray<TemplateLanguageModel>;\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._isWebTemplate = ko.observable(false);\r\n\t\tthis._toolBar = ko.observable(null);\r\n\t\tthis._templateLanguages = ko.observableArray([]);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties() {}\r\n\r\n\tInit() {\r\n\t\tthis._enableEditButton = ko.observable(false);\r\n\t\tif (this.IsRunTime) {\r\n\t\t\tif (this._form && this._form.GetScreen()) {\r\n\t\t\t\tif (this._form.GetScreen().GetTableTypeName().replace('.', '') === HTML_TEMPLATE) {\r\n\t\t\t\t\tthis._isWebTemplate(true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('TEMPLATE', FIELD_TYPES.Document, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\r\n\t\tif (this._isWebTemplate()) {\r\n\t\t\tthis._toolBar(new QueryToolbar());\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_FIELD,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (eventArgs.data) {\r\n\t\t\t\t\t\tif (eventArgs.data.Field && eventArgs.data.Entity) {\r\n\t\t\t\t\t\t\tvar entityName = eventArgs.data.Entity.Model.Metadata.Name;\r\n\t\t\t\t\t\t\tif (eventArgs.data.Entity.Model.Index > 1) {\r\n\t\t\t\t\t\t\t\tentityName = `${entityName}${eventArgs.data.Entity.Model.Index}`;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tvar variable = this.GetFieldTemplate(entityName, eventArgs.data.Field.Model.Metadata.Name, eventArgs.data.Field.Model.Metadata.NameTranslation);\r\n\t\t\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, variable);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_ENTITY,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (eventArgs.data) {\r\n\t\t\t\t\t\tif (eventArgs.data.Entity) {\r\n\t\t\t\t\t\t\tvar table = this.GetTableTemplate(eventArgs.data.Entity);\r\n\t\t\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, table);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_SPHEERES_LINK,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetSpheeresLinkTemplate());\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_OPEN_RECORD_LINK,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetOpenRecordLinkTemplate());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_EMAIL_SUBJECT,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_CC,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_TO,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_BCC,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetEmailSubjectTemplate(eventArgs.data.EmailSubject));\r\n\t\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_SCRIPT,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetScriptTemplate(eventArgs.data.Script));\r\n\t\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_VARIABLE,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetVariableTemplate(eventArgs.data.Variable));\r\n\t\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.DROP_URL_COMMAND,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tif (this._tinyEditor) {\r\n\t\t\t\t\t\tthis._tinyEditor.execCommand(TINYMCE_COMMANDS.INSERT_CONTENT, false, this.GetUrlCommandTemplate(eventArgs.data.Id, eventArgs.data.Name, eventArgs.data.Type));\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.SAVE,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tthis.SaveTemplate();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._toolBar().On(QEUERY_TOOLBAR_EVENTS.PREVIEW,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\t\tthis.Preview(eventArgs.data.EntityId);\r\n\t\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Preview(entityId: number){\r\n\t\tconst searchScreen = new SearchScreen({\r\n\t\t\tButtonAdd: false,\r\n\t\t\tEntityId: entityId,\r\n\t\t\tSearchTerm: '',\r\n\t\t\tControlId: 0,\r\n\t\t\tConditionToggler: false\r\n\t\t});\r\n\r\n\t\tsearchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n\t\t\tBlockUI.Block();\r\n\t\t\tTemplateDesignerStore\r\n\t\t\t\t.Preview({ RecordId: evtArgs.data.RecordId, QueryId: this._toolBar().QueryId, Data: this.ToBase64(this._tinyEditor.getContent()) })\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tlet modal = new Modal();\r\n\t\t\t\t\tmodal.SetContent(this.FromBase64(data));\r\n\t\t\t\t\tmodal.Show();\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t\tsearchScreen.Show();\r\n\t}\r\n\r\n\tGetTableTemplate(join: any) {\r\n\t\tvar fields = [];\r\n\t\tvar titles = [];\r\n\t\tif (join instanceof ToolbarQueryEntityJoin) {\r\n\t\t\t_.each(join.Entity.Columns, (column) => {\r\n\t\t\t\tvar entityName = join.Entity.Model.Metadata.Name;\r\n\t\t\t\tif (join.Entity.Model.Index > 1) {\r\n\t\t\t\t\tentityName = `${entityName}${join.Entity.Model.Index}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar translation = '';\r\n\t\t\t\tif (column.Model.Metadata.NameTranslation) {\r\n\t\t\t\t\ttranslation = `(${column.Model.Metadata.NameTranslation})`;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tfields.push(`${entityName}.${column.Model.Metadata.Name}${translation}`);\r\n\t\t\t\tvar title = column.Model.Metadata.NameTranslation ? column.Model.Metadata.NameTranslation : `${join.Entity.Model.Metadata.Name}.${column.Model.Metadata.Name}`;\r\n\t\t\t\ttitles.push(title);\r\n\t\t\t});\r\n\r\n\t\t\tif(join.LinkEntity){\r\n\t\t\t\t_.each(join.LinkEntity.Columns, (column) => {\r\n\t\t\t\t\tvar entityName = join.LinkEntity.Model.Metadata.Name;\r\n\t\t\t\t\tif (join.LinkEntity.Model.Index > 1) {\r\n\t\t\t\t\t\tentityName = `${entityName}${join.LinkEntity.Model.Index}`;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar translation = '';\r\n\t\t\t\t\tif (column.Model.Metadata.NameTranslation) {\r\n\t\t\t\t\t\ttranslation = `(${column.Model.Metadata.NameTranslation})`;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tfields.push(`${entityName}.${column.Model.Metadata.Name}${translation}`);\r\n\t\t\t\t\tvar title = column.Model.Metadata.NameTranslation ? column.Model.Metadata.NameTranslation : `${join.LinkEntity.Model.Metadata.Name}.${column.Model.Metadata.Name}`;\r\n\t\t\t\t\ttitles.push(title);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar variables = [];\r\n\r\n\t\t_.each(fields, field => {\r\n\t\t\tvariables.push(`{REPEAT ${field}}`);\r\n\t\t});\r\n\r\n\t\treturn (ko as any).renderTemplateXHtml(TableVariableTemplate, { Columns: titles, Fields: variables });\r\n\t}\r\n\r\n\tGetFieldTemplate(entityName: string, fieldName: string, fieldNameTranslation: string) {\r\n\t\tvar translation = '';\r\n\t\tif (fieldNameTranslation) { translation = `(${fieldNameTranslation})`; }\r\n\t\treturn (ko as any).renderTemplateXHtml(FieldVariableTemplate, `{SINGLE ${entityName}.${fieldName}${translation}}`);\r\n\t}\r\n\r\n\tGetEmailSubjectTemplate(subject: EmailSubject) {\r\n\t\treturn (ko as any).renderTemplateXHtml(EmailSubjectTemplate, `${subject.Value}`);\r\n\t}\r\n\r\n\tGetScriptTemplate(script: Script) {\r\n\t\treturn (ko as any).renderTemplateXHtml(ScriptTemplate, `${script.Value}`);\r\n\t}\r\n\r\n\tGetVariableTemplate(variable: Variable) {\r\n\t\treturn (ko as any).renderTemplateXHtml(VariableTemplate, `${variable.Value}`);\r\n\t}\r\n\r\n\tGetSpheeresLinkTemplate() {\r\n\t\treturn (ko as any).renderTemplateXHtml(FieldVariableTemplate, '{SPHEERES_LINK}');\r\n\t}\r\n\r\n\tGetOpenRecordLinkTemplate(){\r\n\t\treturn OpenRecordLinkTemplate;\r\n\t}\r\n\r\n\tGetUrlCommandTemplate(id: string, name: string, type: string) {\r\n\r\n\t\tif(URL_COMMANDS.STEPS_NEXT_STATUS === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(StepsNextStatusURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\tif(URL_COMMANDS.NEXT_STATUS === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(NextStatusURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\tif(URL_COMMANDS.CONFIRMED_OPTIN === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(ConfirmedOptinURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\tif(URL_COMMANDS.UNSUBSCRIBE_ME === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(UnsubscribeMeURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\t\t\r\n\t\tif(URL_COMMANDS.LOGIN_GUEST === type || URL_COMMANDS.LOGIN_CONTACT === type || URL_COMMANDS.LOGIN_GDPR === type){\r\n\t\t\treturn (ko as any).renderTemplateXHtml(LoginURLCommandTemplate, { id: id, name: name, type: type });\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value && value.SubjectRecordId > 0) {\r\n\t\t\tthis._enableEditButton(true);\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tlet request: IGetLanguagesDto = {\r\n\t\t\tSubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n\t\t\tSubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\t\t\r\n\t\tTemplateDesignerStore.GetLanguages(request).then((languages)=>{\r\n\t\t\tthis._templateLanguages(languages);\r\n\t\t}).fail(err=>{\r\n\t\t\tnew Notifier(null).Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tUpdateTemplate(template: TemplateLanguageModel) {\r\n\t\tthis.SelectTemplateLanguage();\r\n\r\n\t\tvar requestModel: IEditTemplateDto = {\r\n\t\t\tSubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n\t\t\tSubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\tLanguageId: template.Id,\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tTemplateDesignerStore\r\n\t\t\t.Edit(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((template) => {\r\n\t\t\t\tthis.SetTemplate(template);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSetTemplate(template: EditTemplateModel){\r\n\t\tif(this._isWebTemplate()){\r\n\t\t\tthis._toolBar().QueryId = template.QueryId;\r\n\t\t\tthis._fileName = template.FileName;\r\n\t\t\tthis._templateFileId = template.RecordId\r\n\t\t\tthis._templateFileKSeq = template.KSeq;\r\n\t\t\tthis._toolBar().SetCommands(template.UrlCommands);\r\n\t\t\tthis._toolBar().Refresh();\r\n\r\n\t\t\tif (this._tinyEditor) {\r\n\t\t\t\tthis._tinyEditor.setContent(this.FromBase64(template.Content));\r\n\t\t\t} else {\r\n\t\t\t\tthis._htmlTemplate = this.FromBase64(template.Content);\r\n\t\t\t}\r\n\t\t\tthis._hasData(true);\r\n\t\t}\r\n\t}\r\n\r\n\tSaveTemplate() {\r\n\t\tvar requestModel: ISaveTemplateDto = {\r\n\t\t\tFileName: this._fileName,\r\n\t\t\tContent: this.ToBase64(this._tinyEditor.getContent()),\r\n\t\t\tQueryId: this._toolBar().QueryId,\r\n\t\t\tControlId: this.GetControlId(),\r\n\t\t\tRecordId: this._templateFileId,\r\n\t\t\tKSeq: this._templateFileKSeq\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\t\tTemplateDesignerStore\r\n\t\t\t.Save(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate ToBase64(str: string): string {\r\n\t\treturn window.btoa(unescape(encodeURIComponent(str)));\r\n\t}\r\n\t\r\n\tprivate FromBase64(str: string):string {\r\n\t\treturn decodeURIComponent(escape(window.atob(str)));\r\n\t}\r\n\r\n\tAfterTinyInit(editor) {\r\n\t\tthis._tinyEditor = editor;\r\n\t\tif (this._htmlTemplate) {\r\n\t\t\tthis._tinyEditor.setContent(this._htmlTemplate);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectTemplateLanguage(){\r\n\t\tthis._hasData(false);\r\n\t\tthis._tinyEditor = null;\r\n\t}\r\n\r\n\tCreateTemplate(templateLanguage: TemplateLanguageModel){\r\n\r\n\t\tvar requestModel: ICreateTemplateDto = {\r\n\t\t\tSubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n\t\t\tSubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\tLanguageId: templateLanguage.Id,\r\n\t\t\tControlId: this.GetControlId()\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tTemplateDesignerStore\r\n\t\t\t.Create(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t})\r\n\t\t\t.then((template) => { \r\n\t\t\t\ttemplateLanguage.HasTemplate = true;\r\n\t\t\t\tthis._templateLanguages.valueHasMutated();\r\n\t\t\t\tthis.SetTemplate(template);\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterTinyChange() { }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-file-text\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<table style=\\\"border-collapse:collapse;border:1px solid #000\\\"> <tbody> <tr> <!-- ko foreach: Columns --><td data-bind=\\\"text: $data\\\" style=\\\"border-collapse:collapse;border:1px solid #000\\\"></td><!-- /ko --> </tr> <tr> <!-- ko foreach: Fields --> <td style=\\\"border-collapse:collapse;border:1px solid #000\\\"> <span style=\\\"white-space:unset\\\" data-bind=\\\"html: $data\\\"></span> </td> <!-- /ko --> </tr> </tbody> </table>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"html: $data\\\"></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"{OPEN_RECORD}\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\">Click here to open the record</a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"text: name, attr: {\\r\\n 'next-status': 'Next status',\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a subscription-entity=\\\"CONTACTS\\\" data-bind=\\\"text: name, attr: {\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"text: name, attr: {\\r\\n 'command-type': type,\\r\\n title: name,\\r\\n href: 'http://{URL_COMMAND=' + id + '}'\\r\\n }\\\" target=\\\"_blank\\\" rel=\\\"noopener\\\"></a>\";\n// Exports\nexport default code;","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nexport class Posts {\r\n\t@deserialize\r\n\tPosts: Array<Post>;\r\n\r\n\t@deserialize\r\n\tTitle: string;\r\n}\r\nexport class Post {\r\n\t@deserialize\r\n\tTitle: string;\r\n\r\n\t@deserialize\r\n\tBody: string;\r\n\r\n\t@deserialize\r\n\tUrl: string;\r\n\r\n\t@deserialize\r\n\tDateTimePosted: string;\r\n}","import {Post} from \"Core/Controls/RssFeed/Models/Post\";\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class RssFeedModel {\r\n\t@deserialize\r\n\tTitle: string;\r\n\t\r\n\t@deserializeAs(Post)\r\n\tPosts: Array<Post>;\r\n}","import { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { GenericDeserialize } from \"libs/cerialize\";\r\nimport { RssFeedModel } from \"Core/Controls/RssFeed/Models/RssFeedModel\";\r\nimport { IRssFeedRequestModel } from \"Core/Controls/RssFeed/Models/IRssFeedRequestModel\";\r\n\r\nexport class RssFeedStore {\r\n\tstatic GetRssFeed(params: IRssFeedRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.RSSFEED.GET_RSS_FEED,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tvar result = GenericDeserialize<RssFeedModel>(data.ResultObject, RssFeedModel);\r\n\t\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => deferredResult.reject({message: err.message}));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"scrollFixer: {}, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView feed-control form-standart-control\\\"> <!-- start template --> <div class=\\\"slimScrollDiv\\\"> <div class=\\\"scroller\\\" data-always-visible=\\\"1\\\" data-rail-visible=\\\"0\\\" data-initialized=\\\"1\\\"> <ul class=\\\"feeds\\\"> <!-- ko foreach: _rssPosts --> <li> <div class=\\\"col1\\\"> <div class=\\\"cont\\\"> <div class=\\\"cont-col1\\\"> <div class=\\\"label label-sm label-default\\\"> <i class=\\\"fa fa-bullhorn\\\"></i> </div> </div> <div class=\\\"cont-col2\\\"> <div class=\\\"desc name\\\"> <a tabindex=\\\"-1\\\" data-bind=\\\"text: Title, attr: {'href': Url}\\\" target=\\\"_blank\\\" href=\\\"#\\\">Egyptian artist creates portraits out of burnt tobacco.</a> </div> <div data-bind=\\\"html: Body\\\" class=\\\"desc\\\"> ALEXANDRIA, Egypt (Reuters) - In a small studio littered with empty cigarette packets in Egypt's second city, Alexandria, Abdelrahman al-Habrouk sits hunched over a sheet of paper making portraits with tobacco. </div> <!--\\t\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tCustom CyberActions for Rss \\r\\n\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<div class=\\\"desc clearfix\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-danger \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tEmail this\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-warning \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tSave to \\\"CyberBox\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-success \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tAnother one action\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t<span class=\\\"label label-sm label-info \\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tBlue action\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<i class=\\\"fa fa-share\\\"></i>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t</span>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t--> </div> </div> </div> <div class=\\\"col2\\\"> <div data-bind=\\\"text: DateTimePosted\\\" class=\\\"date\\\"> 3 hours </div> </div> </li> <!-- /ko --> </ul> </div> </div> <!-- end template --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {RenderModes} from \"Core/Constant\";\r\n\r\nimport { RssFeedStore } from \"Core/Controls/RssFeed/Stores/RssFeedStore\";\r\nimport { Posts } from \"Core/Controls/RssFeed/Models/Post\";\r\nimport { IRssFeedRequestModel } from \"Core/Controls/RssFeed/Models/IRssFeedRequestModel\";\r\n\r\nimport RssFeedConfigJson from 'Core/Controls/RssFeed/Configs/rssfeed-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport ViewTemplate from 'Core/Controls/RssFeed/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/RssFeed/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/RssFeed/Templates/Design.html';\r\n\r\nko.templates['Core/Controls/RssFeed/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/RssFeed/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/RssFeed/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/RssFeed/Templates/Design'] = DesignTemplate;\r\n\r\nexport class RssFeed extends BaseControl {\r\n\tprivate _url: KnockoutObservable<string>;\r\n\tprivate _rssPosts: KnockoutObservable<any>;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _textInputStyle: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, RssFeedConfigJson);\r\n\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._textInputStyle = ko.observable(null);\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis.Init();\r\n\t\tthis.BindEvents();\r\n\t\tthis._rssPosts = ko.observable(null);\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tInit(): void {\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis.ApplyProperties();\r\n\t\tif (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\r\n\t}\r\n\r\n\tprivate SetUrlProperty() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Url) {\r\n\t\t\t\t_.each(this.Properties.Url.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.Url) {\r\n\t\t\t\t\t\tthis._url(property.Url);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tvar labelStyle = { backgroundColor: null, color: null };\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\r\n\t\t\t//TextInput\r\n\t\t\tif (this.Properties.TextInput) {\r\n\t\t\t\tvar textInputStyle = { backgroundColor: null };\r\n\t\t\t\t_.each(this.Properties.TextInput.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\ttextInputStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._textInputStyle(textInputStyle);\r\n\t\t\t}\r\n\r\n\t\t\t//Url\r\n\t\t\tthis.SetUrlProperty();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate LoadData() {\r\n\t\tRssFeedStore.GetRssFeed({ Url: this._url()})\r\n\t\t\t.then((data: Posts) => {\r\n\t\t\t\tthis._rssPosts(data.Posts);\r\n\t\t\t\tlet linkArray = $(this._el).find('a');\r\n\t\t\t\t_.each(linkArray, link => {\r\n\t\t\t\t\t$(link).attr('tabindex', '-1');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-rss\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"rss-control\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <label data-bind=\\\"style: _labelStyle\\\" class=\\\"header-number rssFeed\\\"> <span class=\\\"text-left additional-icon custom-color-option fa fa-3x fa-stack fa-rss\\\"></span> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> <div data-bind=\\\"style: _textInputStyle, attr: { 'data-text': _url() ? _url() : 'Url not specifed' }\\\" class=\\\"form-control control with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { EditScreen } from 'Core/Screens/EditScreen/EditScreen';\r\n\r\nimport HelpViewTemplate from 'Core/Controls/Alias/Templates/HelpView.html'\r\nimport ViewTemplate from 'Core/Controls/Alias/Templates/View.html'\r\nimport ToolbarTemplate from 'Core/Controls/Alias/Templates/ToolBar.html'\r\nimport EditTemplate from 'Core/Controls/Alias/Templates/Edit.html'\r\nimport DesignTemplate from 'Core/Controls/Alias/Templates/Design.html'\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\nimport {FIELD_TYPES, FONT_STYLES, TABLE_TYPES} from \"../../Constant\";\r\nimport {PUB_SUB_EVENTS} from \"../../../MenuManager/PubSubEvents\";\r\n\r\nko.templates['Core/Controls/Alias/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/Alias/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Alias/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Alias/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Alias/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Alias extends BaseControl {\r\n\tprivate _value: string;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n private _isHyperlink: KnockoutObservable<boolean>;\r\n private _dataRecordId: number;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Init();\r\n\t\tthis._labelStyle = ko.observable(null);\r\n this._isHyperlink = ko.observable(false);\r\n\t\tthis.BindEvents();\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.ApplyProperties();\r\n\t\tthis._value = '';\r\n\t}\r\n\r\n\tGetValue() {\r\n\t\treturn this._value;\r\n\t}\r\n\r\n\t ApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tvar labelStyle = { backgroundColor: null, color: null };\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n\t\t\tthis.ApplyLinkEditorStyles();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ApplyLinkEditorStyles() {\r\n\t\tif(!this.FieldModel.HasLinkEditorVisibility){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst labelStyle = {\r\n\t\t\tcolor: null,\r\n\t\t\tfontWeight: null,\r\n\t\t\tfontStyle: null,\r\n\t\t\ttextDecoration: null\r\n\t\t};\r\n\t\tif (this.FieldModel.FontColor) {\r\n\t\t\tlabelStyle.color = this.FieldModel.FontColor;\r\n\t\t}\r\n\t\tlabelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n\t\tif (this.FieldModel.FontStyles) {\r\n\t\t\t_.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n\t\t\t\tswitch ( style.Name.toLowerCase() ) {\r\n\t\t\t\t\tcase FONT_STYLES.BOLD:\r\n\t\t\t\t\t\tlabelStyle.fontWeight = FONT_STYLES.BOLD;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.UNDERLINE:\r\n\t\t\t\t\t\tlabelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase FONT_STYLES.ITALIC:\r\n\t\t\t\t\t\tlabelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tthis.Extend(labelStyle, this._labelStyle());\r\n\t\tthis._labelStyle(labelStyle);\r\n\t}\r\n\r\n\tprivate GetClassName(): string {\r\n\t\tconst classes = [this.FormatName, this._isIconVisible && 'with-icon' ];\r\n\t\treturn classes.join(' ');\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n this._dataRecordId = value.Data.RecordId;\r\n\r\n let currentValue = this.ApplyAliasSuffix(value.Data.DisplayValue || value.Data.Value);\r\n currentValue = this.ApplyMaxLengthFormatter(currentValue);\r\n\r\n this._isHyperlink(\r\n this._form &&\r\n this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen] &&\r\n this.FormatName === 'None' &&\r\n this.FieldModel.FieldTypeName === FIELD_TYPES.Alias &&\r\n this.FieldModel.EntityId !== this._form.GetScreen().GetEntityId() &&\r\n this.FieldModel.EntityTypeName === TABLE_TYPES.Entity &&\r\n !!currentValue\r\n );\r\n\r\n\t\t\tthis._value = currentValue;\r\n\t\t}\r\n\t}\r\n\r\n\tApplyAliasSuffix(value: string): string {\r\n\t\tif (!this._form || this._form.GetScreen().GetTypeName() !== ScreenTypes[ScreenTypes.EditScreen]) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tconst screen = this._form.GetScreen() as EditScreen;\r\n\t\tconst aliasSuffix = screen.AliasSuffix;\r\n\r\n\t\tif (!aliasSuffix) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn `${value || ''}${aliasSuffix}`;\r\n\t}\r\n\r\n\tApplyMaxLengthFormatter(value: string) {\r\n\t\tconst maxFieldSize = this.GetFieldMaxLength();\r\n\r\n\t\tif (!value || maxFieldSize <= 0 || value.length <= maxFieldSize) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\treturn value.slice(0, maxFieldSize);\r\n\t}\r\n\r\n\tGetFieldMaxLength(): number {\r\n\t\tconst fieldData = this._model().Fields[0];\r\n\t\tif (!fieldData) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst maxLength = (fieldData.FieldTypeName === FIELD_TYPES.Alias) ? fieldData.Size : -1;\r\n\r\n\t\treturn maxLength > 0 ? maxLength : -1;\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tconst field = _.first(this._model().Fields);\r\n\t\tif (!field) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn [`${field.EntityName}.${field.Name}`, this._value];\r\n\t}\r\n\r\n OpenRecordScreen(_, data, evt) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {EntityId: this.FieldModel.EntityId, RecordId: this._dataRecordId, IsOpenInModal: evt.ctrlKey });\r\n }\r\n\r\n private Init(): void {\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\r\n\t}\r\n\r\n\tAliasValue() {\r\n\t\treturn this._value || this.ExampleAlias;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div data-control-type=\\\"alias-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-align-center\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" data-control-type=\\\"alias-control\\\" class=\\\"clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!-- ko if: _isHyperlink --> <div data-bind=\\\"\\r\\n attr: { 'data-text': Label },\\r\\n text: _value,\\r\\n click: OpenRecordScreen.bind($data, $data)\\r\\n \\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control textarea-control_hyperlink\\\"></div> <!-- /ko --> <!-- ko ifnot: _isHyperlink --> <div data-bind=\\\"\\r\\n \\t\\tcss: GetClassName(),\\r\\n attr: { 'data-text': Label },\\r\\n text: _value\\r\\n \\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"alias-control\\\" class=\\\"clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, text: _value\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" data-control-type=\\\"alias-control\\\" class=\\\"alias-control clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"alias-control\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"text: Label, tooltip: DescriptionToolTip, style: _labelStyle\\\"></label> <div data-bind=\\\"attr: { 'data-text': Label }, text: AliasValue()\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"alias-control\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, css: {'with-icon': _isIconVisible}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\n\r\n\r\nexport interface IRunReportRequestModel {\r\n\tControlId: number;\r\n\tExportFormat?: number;\r\n}\r\n\r\nexport class CrystalReportViewerStore {\r\n\tstatic RunReport(params: IRunReportRequestModel): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/CrystalReportViewerApi/RunReport\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((data)=>{\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"text-control ConsultScreenView label-input form-standart-control clearfix crystal-viewer-control\\\" data-control-type=\\\"crystal-viewer-control\\\"> <a data-bind=\\\"enableAttr: $data._enablePreviousPageButton, click: FirstPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-double-left\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._enablePreviousPageButton, click: PreviousPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-left\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._enableNextPageButton, click: NextPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-right\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._enableNextPageButton, click: LastPage\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-angle-double-right\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._hasData, click: ZoomIn\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-search-plus\\\"></i> </a> <a data-bind=\\\"enableAttr: $data._hasData, click: ZoomOut\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default\\\"> <i class=\\\"fa fa-search-minus\\\"></i> </a> <select data-bind=\\\"enableAttr: $data._hasData, options: _exportFormats, optionsText: 'Title', value: _exportFormat, optionsCaption: 'Export'\\\"></select> <canvas data-bind=\\\"canvas: { context: _canvasContext }, attr: { width: _canvasWidth, height: _canvasHeight }\\\"></canvas> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport 'pdfjs-dist/build/pdf';\r\n\r\nimport { BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {CrystalReportViewerStore} from 'Core/Controls/CrystalViewer/Stores/CrystalReportViewerStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { RenderModes } from 'Core/Constant';\r\nimport { FileDownloader } from 'Core/Components/FileDownloader/FileDownloader';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport ConfigJson from 'Core/Controls/CrystalViewer/Configs/crystal-report-viewer-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/CrystalViewer/Templates/View.html'\r\nimport ToolBarTemplate from 'Core/Controls/CrystalViewer/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/CrystalViewer/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/CrystalViewer/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/CrystalViewer/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/CrystalViewer/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/CrystalViewer/Templates/Edit'] = ViewTemplate;\r\n\r\ninterface IExportFormat {\r\n\tTitle: string;\r\n\tValue: number;\r\n\tExtention: string;\r\n}\r\n\r\nconst EXPORT_FORMATS: Array<IExportFormat> = [\r\n\t{\r\n\t\tTitle: 'PDF',\r\n\t\tValue: 5,\r\n\t\tExtention: '.pdf'\r\n\t},\r\n\t{\r\n\t\tTitle: 'Excel',\r\n\t\tValue: 4,\r\n\t\tExtention: '.xls'\r\n\t},\r\n\t{\r\n\t\tTitle: 'Word',\r\n\t\tValue: 3,\r\n\t\tExtention: '.doc'\r\n\t}\r\n];\r\n\r\nconst PROPERTIES = {\r\n\tCRYSTAL_REPORT: 'CrystalReport'\r\n}\r\n\r\n//TODO move PDF viewer to components\r\nexport class CrystalReportViewer extends BaseControl {\r\n\tprivate _content: Uint8Array;\r\n\tprivate _canvasContext: KnockoutObservable<CanvasRenderingContext2D>;\r\n\tprivate _canvasWidth: KnockoutObservable<number>;\r\n\tprivate _canvasHeight: KnockoutObservable<number>;\r\n\tprivate _pdfDocument: PDFDocumentProxy;\r\n\tprivate _loadInProgress: boolean;\r\n\tprivate _currentPage: KnockoutObservable<number>;\r\n\tprivate _totalPages: KnockoutObservable<number>;\r\n\tprivate _scale: number;\r\n\tprivate _exportFormats = EXPORT_FORMATS;\r\n\tprivate _exportFormat: KnockoutObservable<IExportFormat>;\r\n\tprivate _enablePreviousPageButton: KnockoutObservable<boolean>;\r\n\tprivate _enableNextPageButton: KnockoutObservable<boolean>;\r\n\tprivate _fileName: KnockoutObservable<string>;\r\n\t\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ConfigJson);\r\n\t\tthis._exportFormat = ko.observable(null);\r\n\t\tthis._canvasContext = ko.observable(null);\r\n\t\tthis._canvasWidth = ko.observable(0);\r\n\t\tthis._canvasHeight = ko.observable(0);\r\n\t\tthis._pdfDocument = null;\r\n\t\tthis._loadInProgress = false;\r\n\t\tthis._currentPage = ko.observable(null);\r\n\t\tthis._totalPages = ko.observable(null);\r\n\t\tthis._scale = 1;\r\n\t\tthis._enablePreviousPageButton = ko.observable(false);\r\n\t\tthis._enableNextPageButton = ko.observable(false);\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._fileName = ko.observable('');\r\n\r\n\t\tif (this._renderMode() === RenderModes.View) {\r\n\r\n\t\t\tthis._isRendered.subscribe(() => { this.LoadReport(); });\r\n\r\n\t\t\tthis._exportFormat.subscribe((newValue) => {\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tthis.ExportReport(newValue);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._currentPage.subscribe((newValue) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis._enablePreviousPageButton(newValue > 1);\r\n\t\t\t\tthis._enableNextPageButton(newValue + 1<= this._totalPages());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._canvasContext.subscribe((newValue) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tif (this._hasData()) {\r\n\t\t\t\t\tthis.RenderPage();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tconst crystalReport = this.GeneralProperties.GetPropertyValue(PROPERTIES.CRYSTAL_REPORT);\r\n\r\n\t\tif (crystalReport) {\r\n\t\t\tthis._fileName(crystalReport.FileName);\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue) {\r\n\t}\r\n\r\n\tLoadReport() {\r\n\t\tthis._loadInProgress = true;\r\n\t\tCrystalReportViewerStore.RunReport({ ControlId: this.GetControlId(), ExportFormat: 5 })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis._loadInProgress = false;\r\n\t\t\t\tBlockUI.Unblock( this._el );\r\n\t\t\t})\r\n\t\t\t.then((content) => {\r\n\t\t\t\tthis.DisplayReport(content);\r\n\t\t\t}).fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tExportReport(format: IExportFormat) {\r\n\t\tBlockUI.Block({ Target: this._el });\r\n\t\tCrystalReportViewerStore.RunReport({ ControlId: this.GetControlId(), ExportFormat: format.Value })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t})\r\n\t\t\t.then((base64) => {\r\n\t\t\t\tthis.DownloadReport(base64, format.Extention);\r\n\t\t\t}).fail((err) => {\r\n\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t});;\r\n\t}\r\n\r\n\tDownloadReport(base64: string, extention: string) {\r\n\t\tFileDownloader.DownloadBase64(base64, `report${extention}`);\r\n\t}\r\n\r\n\tDisplayReport(base64Pdf: string) {\r\n\t\tvar byteArray = this.Base64ToUint8Array(base64Pdf);\r\n\t\tPDFJS.disableWorker = true;\r\n\t\tPDFJS.getDocument({ data: byteArray }).then((pdf) => {\r\n\t\t\tthis._pdfDocument = pdf;\r\n\t\t\tthis._totalPages(pdf.numPages);\r\n\t\t\tthis._hasData(true);\r\n\t\t\tthis._currentPage(1);\r\n\t\t\tthis.RenderPage();\r\n\t\t});\r\n\t}\r\n\r\n\tRenderPage() {\r\n\t\tthis._pdfDocument.getPage(this._currentPage()).then((page) => {\r\n\t\t\tvar viewport = page.getViewport(this._scale);\r\n\t\t\tthis._canvasWidth(viewport.width);\r\n\t\t\tthis._canvasHeight(viewport.height);\r\n\r\n\t\t\tif (this._canvasContext()) {\r\n\t\t\t\tvar renderContext = {\r\n\t\t\t\t\tcanvasContext: this._canvasContext(),\r\n\t\t\t\t\tviewport: viewport\r\n\t\t\t\t};\r\n\r\n\t\t\t\tvar renderTask = page.render(renderContext);\r\n\t\t\t\trenderTask.then(() => { });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tBase64ToUint8Array(base64Pdf: string): Uint8Array {\r\n\t\tvar pdfData = atob(base64Pdf);\r\n\t\tvar array = new Uint8Array(new ArrayBuffer(pdfData.length));\r\n\t\tfor (var i = 0; i < pdfData.length; i++) {\r\n\t\t\tarray[i] = pdfData.charCodeAt(i);\r\n\t\t};\r\n\t\treturn array;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._loadInProgress) {\r\n\t\t\tBlockUI.Block({ Target: this._el });\r\n\t\t}\r\n\t}\r\n\r\n\tFirstPage() {\r\n\t\tthis._currentPage(1);\r\n\t\tthis.RenderPage();\r\n\t}\r\n\r\n\tLastPage() {\r\n\t\tthis._currentPage(this._totalPages());\r\n\t\tthis.RenderPage();\r\n\t}\r\n\r\n\tPreviousPage() {\r\n\t\tif (this._enablePreviousPageButton()) {\r\n\t\t\tthis._currentPage(this._currentPage() - 1);\r\n\t\t\tthis.RenderPage();\r\n\t\t}\r\n\t}\r\n\r\n\tNextPage() {\r\n\t\tif (this._enableNextPageButton()) {\r\n\t\t\tthis._currentPage(this._currentPage() + 1);\r\n\t\t\tthis.RenderPage();\r\n\t\t}\r\n\t}\r\n\r\n\tZoomOut() {\r\n\t\tif(this._scale === 0.5) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._scale = this._scale - 0.5;\r\n\t\tthis.RenderPage();\r\n\t}\r\n\r\n\tZoomIn() {\r\n\t\tif(this._scale === 4) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._scale = this._scale + 0.5;\r\n\t\tthis.RenderPage();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-file-pdf-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <label class=\\\"crystalViewer\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': _fileName() ? _fileName() : 'Select file' }\\\" class=\\\"form-control control with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","export enum ViewModes {\r\n\tView,\r\n\tEdit,\r\n\tDesign\r\n}","import { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\nexport class DataRole {\r\n\tconstructor(public Name: string, public ShortName: string, public Type: string, public Sort: number) {\r\n\t}\r\n}\r\n\r\nexport class DataRoles {\r\n\tDPO: DataRole;\r\n\tVO: DataRole;\r\n\tSO: DataRole;\r\n\tDO: DataRole;\r\n\tPO: DataRole;\r\n\tDEP: DataRole;\r\n\r\n\tprivate static _instance;\r\n\r\n\tprivate constructor() {\r\n\t\tthis.DPO = new DataRole(LABELS.DATA_PROTECTION_OFFICER, \"DPO\", \"Gdpr\", 0);\r\n\t\tthis.VO = new DataRole(LABELS.VAULT_OWNER, \"VO\", \"Vault\", 1);\r\n\t\tthis.SO = new DataRole(LABELS.SAFE_OVNER, \"SO\", \"Safe\", 2);\r\n\t\tthis.DO = new DataRole(LABELS.DISCLOSURE_OFFICER, \"DO\", \"Disclosed\", 3);\r\n\t\tthis.PO = new DataRole(LABELS.PUBLICATION_OFFICER, \"PO\", \"Public\", 4);\r\n\t\tthis.DEP = new DataRole(LABELS.DEPUTY, \"DEP\", null, 5);\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\treturn this._instance || (this._instance = new DataRoles());\r\n\t}\r\n\r\n\tGetAllDataRoles() {\r\n\t\treturn Object.keys(this).filter(key => this[key] instanceof DataRole)\r\n\t\t\t.sort((leftKey, rightKey) => this[leftKey].Sort - this[rightKey].Sort)\r\n\t\t\t.map(key => this[key]);\r\n\t}\r\n\r\n\tGetThirdPartyDataRoles(){\r\n\t\treturn [this.PO, this.DO, this.DPO];\r\n\t}\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\nimport Rejection = P.Rejection;\r\n\r\nimport {GetDataRolesResponseModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/GetDataRolesResponseModel\";\r\nimport { GetFieldCollectionsResponseModel } from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/GetFieldCollectionsResponseModel\";\r\n\r\nimport {AssigneeDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/AssigneeDTOModel\";\r\n\r\n\r\nexport class FieldSecurityStore {\r\n\tstatic GetDataRoles(userId): P.Promise<GetDataRolesResponseModel> {\r\n\t\tconst deferred = P.defer<GetDataRolesResponseModel>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ControlsApi/GetDataRoles',\r\n\t\t\t\ttype: 'Get',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: {id: userId}\r\n\t\t}).then(response => this.ResolveResponse(deferred, response))\r\n\t\t\t.fail(error => this.RejectResponse(deferred, error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetUsers(userTypeName): P.Promise<AssigneeDTOModel[]> {\r\n\t\tconst deferred = P.defer<AssigneeDTOModel[]>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ControlsApi/GetUsersWithoutCollections',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: {\r\n\t\t\t\ttypeName: userTypeName\r\n\t\t\t}\r\n\t\t}).then(response => response.IsSuccessfull\r\n\t\t\t? this.ResolveResponse(deferred, response.ResultObject)\r\n\t\t\t: this.RejectResponse(deferred, {message: response.ErrorMessage})\r\n\t\t).fail(error => this.RejectResponse(deferred, error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetUserFieldCollections(): P.Promise<GetFieldCollectionsResponseModel> {\r\n\t\tconst deferred = P.defer<GetFieldCollectionsResponseModel>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FieldCollectionDesignerApi/GetUserCollection',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}\r\n\t\t}).then(response => this.ResolveResponse(deferred, response))\r\n\t\t\t.fail(error => this.RejectResponse(deferred, error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tprivate static ResolveResponse<T>(deferred: P.Deferred<T>, response: T) {\r\n\t\tdeferred.resolve(response);\r\n\t}\r\n\r\n\tprivate static RejectResponse<T>(deferred: P.Deferred<T>, error: Rejection) {\r\n\t\tdeferred.reject(error);\r\n\t}\r\n}","export class AssigneeModel {\r\n\tId: number;\r\n\tName: string;\r\n\r\n\tconstructor(id: number, name: string) {\r\n\t\tthis.Id = id;\r\n\t\tthis.Name = name;\r\n\t}\r\n}","import { AssigneeDTOModel } from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/AssigneeDTOModel\";\r\nimport { AssigneeModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nexport class AssigneeMappings {\r\n\tstatic MapToAssignee(assigneeDto: AssigneeDTOModel): AssigneeModel {\r\n\t\treturn new AssigneeModel(assigneeDto.Id, assigneeDto.Name);\r\n\t}\r\n\r\n\tstatic MapToNewAssignee(assignee: AssigneeModel) {\r\n\t\treturn assignee && assignee.Id;\r\n\t}\r\n}","import {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {AssigneeModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nexport class FieldCollectionModel {\r\n\tId: number;\r\n\tName: string;\r\n\tAssignee: AssigneeModel;\r\n\r\n\tGuid: string;\r\n\r\n\tconstructor(id: number, name: string, assignee: AssigneeModel){\r\n\t\tthis.Id = id;\r\n\t\tthis.Name = name;\r\n\t\tthis.Assignee = assignee;\r\n\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t}\r\n\r\n\tget AssigneeName() {\r\n\t\treturn this.Assignee && this.Assignee.Name;\r\n\t}\r\n}","import {AssigneeMappings} from \"Core/Controls/FieldSecurity/Mappings/AssigneeMappings\";\r\n\r\nimport {FieldCollectionDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/FieldCollectionDTOModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nexport class FieldCollectionMappings {\r\n\tstatic MapToFieldCollection(fieldCollectionDto: FieldCollectionDTOModel): FieldCollectionModel {\r\n\t\tconst assignee = fieldCollectionDto.Assignee && AssigneeMappings.MapToAssignee(fieldCollectionDto.Assignee);\r\n\t\treturn new FieldCollectionModel(fieldCollectionDto.Id, fieldCollectionDto.Name, assignee);\r\n\t}\r\n}","import {Guid} from 'Core/Common/Guid';\r\n\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nexport class DataRoleModel {\r\n\tId: number;\r\n\tName: string;\r\n\tFieldCollection: FieldCollectionModel;\r\n\r\n\tGuid: string;\r\n\r\n\tconstructor(id: number, name: string, fieldCollection: FieldCollectionModel){\r\n\t\tthis.Id = id;\r\n\t\tthis.Name = name;\r\n\t\tthis.FieldCollection = fieldCollection;\r\n\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t}\r\n}","export class NewDataRoleDTOModel {\r\n\tDataRole: string;\r\n\tFieldCollectionName: string;\r\n\tAssigneeId: number;\r\n\r\n\tconstructor(dataRole: string, fieldCollectionName: string, assigneeId: number) {\r\n\t\tthis.DataRole = dataRole;\r\n\t\tthis.FieldCollectionName = fieldCollectionName;\r\n\t\tthis.AssigneeId = assigneeId;\r\n\t}\r\n}","import {FieldCollectionMappings} from \"Core/Controls/FieldSecurity/Mappings/FieldCollectionMappings\";\r\n\r\nimport {DataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/DataRoleDTOModel\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nimport {NewDataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDataRoleDTOModel\";\r\nimport {AssigneeMappings} from \"Core/Controls/FieldSecurity/Mappings/AssigneeMappings\";\r\n\r\n\r\nexport class DataRoleMappings {\r\n\tstatic MapToDataRole(dataRoleDto: DataRoleDTOModel): DataRoleModel {\r\n\t\tconst fieldCollection = FieldCollectionMappings.MapToFieldCollection(dataRoleDto.FieldCollection);\r\n\t\treturn new DataRoleModel(dataRoleDto.Id, dataRoleDto.Name, fieldCollection);\r\n\t}\r\n\r\n\tstatic MapToNewDataRole(newRole: DataRoleModel) {\r\n\t\tconst assignee = AssigneeMappings.MapToNewAssignee(newRole.FieldCollection.Assignee);\r\n\t\treturn new NewDataRoleDTOModel(newRole.Name, newRole.FieldCollection.Name, assignee);\r\n\t}\r\n}","import {NewDataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDataRoleDTOModel\";\r\nimport {NewDeputyDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDeputyDTOModel\";\r\nimport {DeletedRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/DeletedRoleDTOModel\";\r\n\r\nexport class PostDataRolesRequestModel {\r\n\tNewRoles: NewDataRoleDTOModel[];\r\n\tNewDeputies: NewDeputyDTOModel[];\r\n\r\n\tDeletedRoles: DeletedRoleDTOModel[];\r\n\tDeletedDeputies: DeletedRoleDTOModel[];\r\n\r\n\tconstructor(\r\n\t\tnewRoles: NewDataRoleDTOModel[],\r\n\t\tnewDeputies: NewDeputyDTOModel[],\r\n\t\tdeletedRoles: DeletedRoleDTOModel[],\r\n\t\tdeletedDeputies: DeletedRoleDTOModel[]) {\r\n\r\n\t\tthis.NewRoles = newRoles;\r\n\t\tthis.NewDeputies = newDeputies;\r\n\r\n\t\tthis.DeletedRoles = deletedRoles;\r\n\t\tthis.DeletedDeputies = deletedDeputies;\r\n\t}\r\n}\r\n","export class NewDeputyDTOModel {\r\n\tFieldCollectionId: number;\r\n\r\n\tconstructor(fieldCollectionId: number) {\r\n\t\tthis.FieldCollectionId = fieldCollectionId;\r\n\t}\r\n}","export class DeletedRoleDTOModel {\r\n\tFieldCollectionId: number;\r\n\r\n\tconstructor(fieldCollectionId: number) {\r\n\t\tthis.FieldCollectionId = fieldCollectionId;\r\n\t}\r\n}","import {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {DataRoleMappings} from \"Core/Controls/FieldSecurity/Mappings/DataRoleMappings\";\r\n\r\nimport {DataRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/DataRoleDTOModel\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nimport {FieldSecurityChangesModel} from \"Core/Controls/FieldSecurity/Shared/Models/State/FieldSecurityChangesModel\";\r\n\r\nimport {PostDataRolesRequestModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/PostDataRolesRequestModel\";\r\nimport {NewDeputyDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/NewDeputyDTOModel\";\r\nimport {DeletedRoleDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Post/DeletedRoleDTOModel\";\r\n\r\nexport class FieldSecurityMappings {\r\n\tstatic MapToDataRoles(dataRoleDto: DataRoleDTOModel): DataRoleModel {\r\n\t\treturn DataRoleMappings.MapToDataRole(dataRoleDto);\r\n\t}\r\n\r\n\tstatic MapToPostModel(changes: FieldSecurityChangesModel) {\r\n\t\tconst newRoles =\r\n\t\t\tchanges.NewRoles\r\n\t\t\t\t.filter(newRole => newRole.Name !== DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(newRole => DataRoleMappings.MapToNewDataRole(newRole));\r\n\r\n\t\tconst newDeputies =\r\n\t\t\tchanges.NewRoles\r\n\t\t\t\t.filter(newRole => newRole.Name === DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(newRole => new NewDeputyDTOModel(newRole.FieldCollection.Id));\r\n\r\n\t\tconst deletedRoles =\r\n\t\t\tchanges.DeletedRoles\r\n\t\t\t\t.filter(deletedRole => deletedRole.Name !== DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(deletedRole => new DeletedRoleDTOModel(deletedRole.FieldCollection.Id));\r\n\r\n\t\tconst deletedDeputies =\r\n\t\t\tchanges.DeletedRoles\r\n\t\t\t\t.filter(deletedRole => deletedRole.Name === DataRoles.Instance.DEP.ShortName)\r\n\t\t\t\t.map(deletedRole => new DeletedRoleDTOModel(deletedRole.FieldCollection.Id));\r\n\r\n\t\treturn new PostDataRolesRequestModel(newRoles, newDeputies, deletedRoles, deletedDeputies);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {ViewModes} from \"Core/Controls/FieldSecurity/Shared/Enums/ViewModes\";\r\n\r\nexport abstract class FieldSecurityComponent extends Event {\r\n\tprotected Settings: IFieldSecuritySettings;\r\n\tprotected Templates: { View: any, Edit: any, Design: any };\r\n\tprotected ManipulationsEnabled: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings) {\r\n\t\tsuper();\r\n\r\n\t\tthis.Settings = settings;\r\n\t\tthis.ManipulationsEnabled = ko.observable(true);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\tconst viewModeTemplateMapping = {};\r\n\r\n\t\tviewModeTemplateMapping[ViewModes.View] = this.Templates.View;\r\n\t\tviewModeTemplateMapping[ViewModes.Edit] = this.Templates.Edit;\r\n\t\tviewModeTemplateMapping[ViewModes.Design] = this.Templates.Design;\r\n\r\n\t\treturn viewModeTemplateMapping[this.Settings.ViewMode];\r\n\t}\r\n\r\n\tChangeManipulations(enable: boolean) {\r\n\t\tthis.ManipulationsEnabled(enable);\r\n\t}\r\n}","// Module\nvar code = \"<tr class=\\\"table-head\\\"> <th><!-- ko text: _labels.USER --><!-- /ko --></th> <th><!-- ko text: _labels.FIELD_COLLECTION --><!-- /ko --></th> </tr>\";\n// Exports\nexport default code;","// Module\nvar code = \"<tr class=\\\"table-head\\\"> <th><!-- ko text: _labels.USER --><!-- /ko --></th> <th colspan=\\\"2\\\"><!-- ko text: _labels.FIELD_COLLECTION --><!-- /ko --></th> </tr>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { IFieldSecuritySettings } from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\nimport { FieldSecurityComponent } from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/Header/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Components/Header/Edit.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/Header/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Components/Header/Edit'] = EditTemplate;\r\n\r\nexport class HeaderComponent extends FieldSecurityComponent {\r\n\tprivate _labels = LABELS;\r\n\tconstructor(settings: IFieldSecuritySettings) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis.Templates = { View: ViewTemplate, Edit: EditTemplate, Design: ViewTemplate };\r\n\t}\r\n}","// Module\nvar code = \"<tr> <td colspan=\\\"2\\\" class=\\\"table-sub-head\\\"> <span data-bind=\\\"text: _dataRole.Name\\\"></span> </td> </tr>\";\n// Exports\nexport default code;","// Module\nvar code = \"<tr> <td colspan=\\\"3\\\" class=\\\"table-sub-head\\\"> <!--ko if: ManipulationsEnabled--> <button type=\\\"button\\\" class=\\\"btn btn-sm btn-primary\\\" data-bind=\\\"click: OnDataRoleAdding.bind($data)\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!--/ko--> <span data-bind=\\\"text: _dataRole.Name\\\"></span> </td> </tr>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {FieldSecurityComponent} from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {DataRole} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/Header/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/Header/Edit.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/Header/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/Header/Edit'] = EditTemplate;\r\n\r\nexport class HeaderComponent extends FieldSecurityComponent {\r\n\tprivate _dataRole: DataRole;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings, dataRole: DataRole) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis._dataRole = dataRole;\r\n\r\n\t\tthis.Templates = {View: ViewTemplate, Edit: EditTemplate, Design: ViewTemplate};\r\n\t}\r\n\r\n\tOnDataRoleAdding() {\r\n\t\tthis.Trigger('DataRoleAdding');\r\n\t}\r\n}","// Module\nvar code = \"<tr> <td data-bind=\\\"text: _model.AssigneeName\\\"></td> <td data-bind=\\\"text: _model.Name\\\"></td> </tr>\";\n// Exports\nexport default code;","import {FieldSecurityComponent} from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/Edit.html';\r\n\r\nexport class FieldCollectionComponent extends FieldSecurityComponent {\r\n\tprivate _model: FieldCollectionModel;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings, model: FieldCollectionModel) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis._model = model;\r\n\r\n\t\tthis.Templates = {View: ViewTemplate, Edit: EditTemplate, Design: ViewTemplate};\r\n\t}\r\n\r\n\tget FieldCollectionId() {\r\n\t\treturn this._model.Id;\r\n\t}\r\n\r\n\tget FieldCollectionName() {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\tget Assignee() {\r\n\t\treturn this._model.Assignee;\r\n\t}\r\n\r\n\tOnDataRoleRemoving() {\r\n\t\tthis.Trigger('DataRoleRemoving', {DataRole: this._model});\r\n\t}\r\n}","// Module\nvar code = \"<tr class=\\\"field-collections\\\"> <td data-bind=\\\"text: _model.AssigneeName\\\"></td> <td data-bind=\\\"text: _model.Name\\\"></td> <td class=\\\"btn-remove-container\\\"> <div class=\\\"data-role-actions\\\"> <!--ko if: ManipulationsEnabled--> <button type=\\\"button\\\" class=\\\"btn btn-sm btn-danger\\\" data-bind=\\\"click: OnDataRoleRemoving.bind($data)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> </div> </td> </tr>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nexport abstract class NewDataRoleComponent extends Event {\r\n\tprotected Template: any;\r\n\r\n\tconstructor(template: any) {\r\n\t\tsuper();\r\n\r\n\t\tthis.Template = template;\r\n\r\n\t\tthis.InitValidation();\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn this.Template;\r\n\t}\r\n\r\n\tabstract AfterRender();\r\n\r\n\tabstract ValidateForm();\r\n\r\n\tprotected OnRoleAdding() {\r\n\t\tconst valid = this.ValidateForm();\r\n\r\n\t\tif (valid) {\r\n\t\t\tconst dataRole = this.MapToNewDataRole();\r\n\t\t\tthis.Trigger('DataRoleAdded', {DataRole: dataRole});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected OnRoleAddingCancel() {\r\n\t\tthis.Trigger('AddingCancelled');\r\n\t}\r\n\r\n\tprotected abstract MapToNewDataRole(): DataRoleModel;\r\n\r\n\tprivate InitValidation() {\r\n\t\tko.validation.init({insertMessages: false}, true);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {AssigneeModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class NewThirdPartyDataRoleModel {\r\n\tUsers: KnockoutObservableArray<AssigneeModel>;\r\n\tSelectedUser: KnockoutObservable<AssigneeModel>;\r\n\r\n\tFieldCollectionName: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = ko.observableArray([]);\r\n\r\n\t\tthis.SelectedUser = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.USER + ' ' + NOTIFICATIONS.IS_REQUIRED\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.SelectedUser.subscribe(user => this.FieldCollectionName(user && user.Name));\r\n\r\n\t\tthis.FieldCollectionName = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: LABELS.COLLECTION_NAME + ' ' + NOTIFICATIONS.IS_REQUIRED\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\nimport {FieldSecurityStore} from \"Core/Controls/FieldSecurity/Stores/FieldSecurityStore\";\r\nimport {AssigneeDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/AssigneeDTOModel\";\r\nimport {AssigneeModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {DataRole} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\nimport {NewThirdPartyDataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel\";\r\nimport {AssigneeMappings} from \"Core/Controls/FieldSecurity/Mappings/AssigneeMappings\";\r\n\r\nimport Template from 'Core/Controls/FieldSecurity/Shared/Templates/NewDataRole/NewThirdPartyDataRole.html';\r\n\r\nexport class NewThirdPartyDataRoleComponent extends NewDataRoleComponent {\r\n\tprotected Model: KnockoutValidatedObservable<NewThirdPartyDataRoleModel>;\r\n\tprotected DataRole: DataRole;\r\n\r\n\tconstructor(dataRole: DataRole) {\r\n\t\tsuper(Template);\r\n\r\n\t\tthis.Model = ko.validatedObservable(new NewThirdPartyDataRoleModel());\r\n\t\tthis.DataRole = dataRole;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tValidateForm() {\r\n\t\tconst valid = this.Model.isValid();\r\n\r\n\t\tif(!valid){\r\n\t\t\tthis.Model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tprotected LoadUsers(userType: string): P.Promise<AssigneeDTOModel[]> {\r\n\t\treturn FieldSecurityStore.GetUsers(userType);\r\n\t}\r\n\r\n\tprotected UsersLoaded(usersDto: AssigneeDTOModel[]) {\r\n const users = usersDto.map(user => AssigneeMappings.MapToAssignee(user));\r\n this.Trigger(\"UsersLoaded\", {DataRole: this.DataRole, Model: this.Model(), Users: users});\r\n\t}\r\n\r\n\tprotected MapToNewDataRole() {\r\n\t\tconst assignee = new AssigneeModel(this.Model().SelectedUser().Id, this.Model().SelectedUser().Name);\r\n\t\tconst fieldCollection = new FieldCollectionModel(null, this.Model().FieldCollectionName(), assignee);\r\n\r\n\t\treturn new DataRoleModel(null, this.DataRole.ShortName, fieldCollection);\r\n\t}\r\n}","// Module\nvar code = \"<tr class=\\\"new-role-wrapper\\\"> <td> <!--ko with: Model--> <select class=\\\"form-control new-role-input\\\" data-bind=\\\"options: Users, optionsText: 'Name', value: SelectedUser\\\"></select> <span data-bind=\\\"validationMessage: SelectedUser\\\" class=\\\"text-red\\\"></span> <!--/ko--> </td> <td> <!--ko with: Model--> <input type=\\\"text\\\" class=\\\"form-control new-role-input\\\" data-bind=\\\"value: FieldCollectionName\\\"> <span data-bind=\\\"validationMessage: FieldCollectionName\\\" class=\\\"text-red\\\"></span> <!--/ko--> </td> <td class=\\\"data-role-actions-container\\\"> <div class=\\\"data-role-actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnRoleAdding\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger btn-cancel\\\" data-bind=\\\"click: OnRoleAddingCancel\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </td> </tr>w\";\n// Exports\nexport default code;","import {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewThirdPartyDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent\";\r\n\r\nimport {UserTypes} from \"User/UserManager\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewDORoleComponent extends NewThirdPartyDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.DO);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadUsers(UserTypes.Portal)\r\n\t\t\t.then(users => this.UsersLoaded(users))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n}","import {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewThirdPartyDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent\";\r\n\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\nimport {UserTypes} from \"User/UserManager\";\r\n\r\nexport class NewPORoleComponent extends NewThirdPartyDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.PO);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadUsers(UserTypes.Guest)\r\n\t\t\t.then(users => this.UsersLoaded(users))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class NewPersonalDataRoleModel {\r\n\tFieldCollectionName: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldCollectionName = ko.observable(null).extend({\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: 'Collection name required'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\nimport {DataRole} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\nimport {NewPersonalDataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewPersonalDataRoleModel\";\r\n\r\nimport Template from 'Core/Controls/FieldSecurity/Shared/Templates/NewDataRole/NewPersonalDataRole.html';\r\n\r\nexport class NewPersonalDataRoleComponent extends NewDataRoleComponent {\r\n\tprotected Model: KnockoutValidatedObservable<NewPersonalDataRoleModel>;\r\n\tprotected DataRole: DataRole;\r\n\r\n\tconstructor(dataRole: DataRole) {\r\n\t\tsuper(Template);\r\n\r\n\t\tthis.Model = ko.validatedObservable(new NewPersonalDataRoleModel());\r\n\t\tthis.DataRole = dataRole;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tValidateForm() {\r\n\t\tconst valid = this.Model.isValid();\r\n\r\n\t\tif (!valid) {\r\n\t\t\tthis.Model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tprotected MapToNewDataRole(): DataRoleModel {\r\n\t\tconst fieldCollection = new FieldCollectionModel(null, this.Model().FieldCollectionName(), null);\r\n\t\treturn new DataRoleModel(null, this.DataRole.ShortName, fieldCollection);\r\n\t}\r\n}\r\n","// Module\nvar code = \"<tr class=\\\"new-role-wrapper\\\"> <td></td> <td> <!--ko with: Model--> <input type=\\\"text\\\" class=\\\"form-control new-role-input\\\" data-bind=\\\"value: FieldCollectionName\\\"> <span data-bind=\\\"validationMessage: FieldCollectionName\\\" class=\\\"text-red\\\"></span> <!--/ko--> </td> <td class=\\\"data-role-actions-container\\\"> <div class=\\\"data-role-actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnRoleAdding\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger btn-cancel\\\" data-bind=\\\"click: OnRoleAddingCancel\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </td> </tr>w\";\n// Exports\nexport default code;","import {NewPersonalDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPersonalDataRoleComponent\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewSORoleComponent extends NewPersonalDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.SO);\r\n\t}\r\n}","import {NewPersonalDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPersonalDataRoleComponent\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewVORoleComponent extends NewPersonalDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.VO);\r\n\t}\r\n}","import {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewThirdPartyDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewThirdPartyDataRoleComponent\";\r\n\r\nimport {UserTypes} from \"User/UserManager\";\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nexport class NewDPORoleComponent extends NewThirdPartyDataRoleComponent {\r\n\tconstructor() {\r\n\t\tsuper(DataRoles.Instance.DPO);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadUsers(UserTypes.Gdpr)\r\n .then(users => this.UsersLoaded(users))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class NewDEPRoleModel {\r\n\tFieldCollections: KnockoutObservableArray<FieldCollection>;\r\n\tSelectedFieldCollection: KnockoutObservable<FieldCollection>;\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldCollections = ko.observableArray([]);\r\n\t\tthis.SelectedFieldCollection = ko.observable(null);\r\n\t}\r\n}\r\n\r\nexport class FieldCollection {\r\n\tId: number;\r\n\tName: string;\r\n}","// Module\nvar code = \"<tr class=\\\"new-role-wrapper\\\"> <td> </td> <td> <!--ko with: _model--> <select class=\\\"form-control new-role-input\\\" data-bind=\\\"options: FieldCollections, optionsText: 'Name', value: SelectedFieldCollection\\\"></select> <!--/ko--> </td> <td class=\\\"data-role-actions-container\\\"> <div class=\\\"data-role-actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnRoleAdding\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger btn-cancel\\\" data-bind=\\\"click: OnRoleAddingCancel\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </td> </tr>w\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\n\r\nimport {DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {FieldSecurityStore} from \"Core/Controls/FieldSecurity/Stores/FieldSecurityStore\";\r\nimport {FieldCollectionDTOModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/FieldCollectionDTOModel\";\r\n\r\nimport {NewDEPRoleModel} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRoleModel\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\n\r\nimport Template from 'Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRole.html'\r\nimport {FieldCollectionMappings} from \"Core/Controls/FieldSecurity/Mappings/FieldCollectionMappings\";\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRole'] = Template;\r\n\r\nexport class NewDEPRoleComponent extends NewDataRoleComponent {\r\n\tprivate _model: KnockoutValidatedObservable<NewDEPRoleModel>;\r\n\r\n\tconstructor() {\r\n\t\tsuper(Template);\r\n\r\n\t\tthis._model = ko.validatedObservable(new NewDEPRoleModel());\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tFieldSecurityStore.GetUserFieldCollections()\r\n\t\t\t.then(response => this.FieldCollectionsLoaded(response.FieldCollections))\r\n\t\t\t.fail(error => new Notifier().Failed(error.message));\r\n\t}\r\n\r\n\tValidateForm() {\r\n\t\tconst valid = this._model.isValid();\r\n\r\n\t\tif(!valid){\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\t}\r\n\r\n\tprivate FieldCollectionsLoaded(fieldCollectionDto: FieldCollectionDTOModel[]){\r\n\t\tconst fieldCollections = fieldCollectionDto\r\n\t\t\t.filter(collection => collection.Type === DataRoles.Instance.VO.Type)\r\n\t\t\t.map(collection => FieldCollectionMappings.MapToFieldCollection(collection));\r\n\t\t\r\n\t\tthis._model().FieldCollections(fieldCollections);\r\n\t}\r\n\r\n\tprotected MapToNewDataRole(): DataRoleModel {\r\n\t\tconst selectedFieldCollection = this._model().SelectedFieldCollection();\r\n\r\n\t\tconst fieldCollection = new FieldCollectionModel(\r\n\t\t\tselectedFieldCollection.Id,\r\n\t\t\tselectedFieldCollection.Name,\r\n\t\t\tnull);\r\n\r\n\t\treturn new DataRoleModel(null, DataRoles.Instance.DEP.ShortName, fieldCollection);\r\n\t}\r\n\r\n}","// Module\nvar code = \"<!--ko with: _header--> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!--/ko--> <!--ko foreach: _fieldCollections--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> <!--ko with: _newRoleForm--> <!--ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)}--><!--/ko--> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {FieldSecurityComponent} from \"Core/Controls/FieldSecurity/Components/Base/FieldSecurityComponent\";\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {HeaderComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/Header/HeaderComponent\";\r\nimport {FieldCollectionComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/FieldCollection/FieldCollectionComponent\";\r\n\r\nimport {NewDataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDataRoleComponent\";\r\nimport {NewDORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDORole/NewDORoleComponent\";\r\nimport {NewPORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewPORole/NewPORoleComponent\";\r\nimport {NewSORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewSORole/NewSORoleComponent\";\r\nimport {NewVORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewVORole/NewVORoleComponent\";\r\nimport {NewDPORoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDPORole/NewDPORoleComponent\";\r\nimport { NewDEPRoleComponent } from \"Core/Controls/FieldSecurity/Components/DataRole/NewDataRole/NewDEPRole/NewDEPRoleComponent\";\r\n\r\nimport { NewThirdPartyDataRoleModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel\";\r\nimport { AssigneeModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nimport {DataRole, DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\nimport {FieldCollectionModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/FieldCollectionModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Components/DataRole/View.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Components/DataRole/View'] = ViewTemplate;\r\n\r\nexport class DataRoleComponent extends FieldSecurityComponent {\r\n\tprivate _dataRole: DataRole;\r\n\tprivate _header: HeaderComponent;\r\n\tprivate _fieldCollections: KnockoutObservableArray<FieldCollectionComponent>;\r\n\tprivate _newRoleForm: KnockoutObservable<NewDataRoleComponent>;\r\n\r\n\tconstructor(settings: IFieldSecuritySettings, dataRole: DataRole) {\r\n\t\tsuper(settings);\r\n\r\n\t\tthis._dataRole = dataRole;\r\n\r\n\t\tthis._header = new HeaderComponent(settings, dataRole);\r\n\t\tthis._header.On('DataRoleAdding', this, () => {\r\n\t\t\tthis.Trigger('DataRoleAdding');\r\n\t\t\tthis.ShowNewRoleForm();\r\n\t\t});\r\n\r\n\t\tthis._fieldCollections = ko.observableArray([]);\r\n\t\tthis._newRoleForm = ko.observable(null);\r\n\r\n\t\tthis.Templates = {View: ViewTemplate, Edit: ViewTemplate, Design: ViewTemplate};\r\n\t}\r\n\r\n\tget DataRole() {\r\n\t\treturn this._dataRole;\r\n\t}\r\n\r\n\tAddCollections(fieldCollections: FieldCollectionModel[]) {\r\n\t\tconst newCollections = fieldCollections.map(fieldCollection => new FieldCollectionComponent(this.Settings, fieldCollection));\r\n\t\tnewCollections.forEach(fieldCollection => fieldCollection.On('DataRoleRemoving', this, eventArgs => this.RemoveDataRole(fieldCollection, eventArgs.data.DataRole)));\r\n\t\tthis._fieldCollections(this._fieldCollections().concat(newCollections));\r\n\t}\r\n\r\n\tRemoveCollectionComponent(fieldCollectionId: number) {\r\n\t\tconst component = _.find(this._fieldCollections(), fieldCollection => fieldCollection.FieldCollectionId === fieldCollectionId);\r\n\t\tthis._fieldCollections.remove(component);\r\n\t}\r\n\r\n\tChangeManipulations(enable: boolean) {\r\n\t\tsuper.ChangeManipulations(enable);\r\n\r\n\t\tthis._header.ChangeManipulations(enable);\r\n\t\tthis._fieldCollections().forEach(component => component.ChangeManipulations(enable));\r\n\r\n\t\tif (enable) {\r\n\t\t\tthis._newRoleForm(null);\r\n\t\t}\r\n\t}\r\n\r\n\tHasFieldCollection(name: string) {\r\n\t\treturn _.any(this._fieldCollections(), fieldCollection => fieldCollection.FieldCollectionName === name);\r\n\t}\r\n\r\n\tHasAssignee(assigneeId: number){\r\n\t\treturn _.any(this._fieldCollections(), fieldCollection => fieldCollection.Assignee && fieldCollection.Assignee.Id === assigneeId);\r\n\t}\r\n\r\n\tprivate ShowNewRoleForm() {\r\n\t\tthis._newRoleForm(this.SelectNewRoleComponent());\r\n\r\n\t\tif (this._newRoleForm()) {\r\n this._newRoleForm().On('UsersLoaded', this, eventArgs => this.OnUsersLoad(eventArgs.data.DataRole, eventArgs.data.Model, eventArgs.data.Users));\r\n\r\n this._newRoleForm().On('DataRoleAdded', this, eventArgs => this.OnNewDataRoleSaving(eventArgs.data.DataRole));\r\n this._newRoleForm().On('AddingCancelled', this, () => this.OnCancelNewDataRole());\r\n\t\t} else {\r\n\t\t\tnew Notifier().Failed(NOTIFICATIONS.DATA_ROLE_IS_NOT_SUPPORTED);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate SelectNewRoleComponent() {\r\n\t\tswitch (this._dataRole) {\r\n\t\t\tcase DataRoles.Instance.DPO:\r\n\t\t\t\treturn new NewDPORoleComponent();\r\n\t\t\tcase DataRoles.Instance.VO:\r\n\t\t\t\treturn new NewVORoleComponent();\r\n\t\t\tcase DataRoles.Instance.SO:\r\n\t\t\t\treturn new NewSORoleComponent();\r\n\t\t\tcase DataRoles.Instance.DO:\r\n\t\t\t\treturn new NewDORoleComponent();\r\n\t\t\tcase DataRoles.Instance.PO:\r\n\t\t\t\treturn new NewPORoleComponent();\r\n\t\t\tcase DataRoles.Instance.DEP:\r\n\t\t\t\treturn new NewDEPRoleComponent();\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n }\r\n\r\n private OnUsersLoad(dataRole: DataRoleModel, model: NewThirdPartyDataRoleModel, users: AssigneeModel[]) {\r\n this.Trigger(\"UsersLoaded\", {DataRole: dataRole, Model: model, Users: users });\r\n }\r\n\r\n\tprivate OnNewDataRoleSaving(dataRole: DataRoleModel) {\r\n\t\tthis.Trigger('DataRoleAdded', {DataRole: dataRole});\r\n\t}\r\n\r\n\tprivate OnCancelNewDataRole() {\r\n\t\tthis._newRoleForm(null);\r\n\t\tthis.Trigger('AddingCancelled');\r\n\t}\r\n\r\n\tprivate RemoveDataRole(component: FieldCollectionComponent, fieldCollection: FieldCollectionModel) {\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: \"Remove this role?\",\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis._fieldCollections.remove(component);\r\n\r\n\t\t\tconst dataRole = new DataRoleModel(null, this.DataRole.ShortName, fieldCollection);\r\n\t\t\tthis.Trigger('DataRoleRemoved', {DataRole: dataRole});\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n}","import {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nexport class FieldSecurityChangesModel {\r\n\tStartRoles: DataRoleModel[];\r\n\tNewRoles: DataRoleModel[];\r\n\tDeletedRoles: DataRoleModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.StartRoles = [];\r\n\t\tthis.NewRoles = [];\r\n\t\tthis.DeletedRoles = [];\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {RenderModes} from \"Core/Constant\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {IFieldSecuritySettings} from \"Core/Controls/FieldSecurity/Shared/Interfaces/IFieldSecuritySettings\";\r\n\r\nimport {ViewModes} from \"Core/Controls/FieldSecurity/Shared/Enums/ViewModes\";\r\nimport {DataRole, DataRoles} from \"Core/Controls/FieldSecurity/Shared/Enums/DataRoles\";\r\n\r\nimport {DataRoleModel} from \"Core/Controls/FieldSecurity/Shared/Models/Business/DataRoleModel\";\r\n\r\nimport {FieldSecurityStore} from \"Core/Controls/FieldSecurity/Stores/FieldSecurityStore\";\r\nimport {FieldSecurityMappings} from \"Core/Controls/FieldSecurity/Mappings/FieldSecurityMappings\";\r\n\r\nimport {HeaderComponent} from \"Core/Controls/FieldSecurity/Components/Header/HeaderComponent\";\r\nimport {DataRoleComponent} from \"Core/Controls/FieldSecurity/Components/DataRole/DataRoleComponent\";\r\n\r\nimport {GetDataRolesResponseModel} from \"Core/Controls/FieldSecurity/Shared/Models/DTO/Get/GetDataRolesResponseModel\";\r\nimport {FieldSecurityChangesModel} from \"Core/Controls/FieldSecurity/Shared/Models/State/FieldSecurityChangesModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport { NewThirdPartyDataRoleModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/NewThirdPartyDataRoleModel\";\r\nimport { AssigneeModel } from \"Core/Controls/FieldSecurity/Shared/Models/Business/AssigneeModel\";\r\n\r\nimport ViewTemplate from 'Core/Controls/FieldSecurity/Templates/View.html';\r\nimport EditTemplate from 'Core/Controls/FieldSecurity/Templates/Edit.html';\r\nimport ToolBarTemplate from 'Core/Controls/FieldSecurity/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/FieldSecurity/Templates/Design.html';\r\n\r\nko.templates['Core/Controls/FieldSecurity/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/FieldSecurity/Templates/Design'] = DesignTemplate;\r\n\r\nexport class FieldSecurity extends BaseControl {\r\n private _params: IControlParam;\r\n\r\n private _changes: FieldSecurityChangesModel;\r\n\r\n private _header: HeaderComponent;\r\n private _dataRoles: DataRoleComponent[];\r\n\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this._params = params;\r\n this._changes = new FieldSecurityChangesModel();\r\n\r\n this._header = this.CreateHeaderComponent();\r\n this._dataRoles = this.CreateDataRoleComponents();\r\n \r\n this._dataRoles.forEach(dataRoleComponent => {\r\n dataRoleComponent.On('DataRoleAdding', this, () => this.ChangeRolesManipulations(false));\r\n dataRoleComponent.On('AddingCancelled', this, () => this.ChangeRolesManipulations(true));\r\n dataRoleComponent.On('DataRoleAdded', this, eventArgs => this.AddNewDataRole(dataRoleComponent, eventArgs.data.DataRole));\r\n dataRoleComponent.On('DataRoleRemoved', this, eventArgs => this.RemoveDataRole(eventArgs.data.DataRole));\r\n\r\n dataRoleComponent.On('UsersLoaded', this, eventArgs => this.OnUsersLoad(eventArgs.data.DataRole, eventArgs.data.Model, eventArgs.data.Users));\r\n });\r\n }\r\n\r\n\tApplyProperties() {\t}\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n if (this.GetForm().GetScreen().GetDataModel() && _.contains(this.GetOperationalModes(), this._params.RenderMode)) {\r\n this.RequestDataRoles();\r\n }\r\n }\r\n\r\n Deserialize() {\r\n return FieldSecurityMappings.MapToPostModel(this._changes);\r\n }\r\n\r\n private GetOperationalModes() {\r\n return [RenderModes.View, RenderModes.Edit];\r\n }\r\n\r\n private GetInitModes() {\r\n return this.GetOperationalModes().concat(RenderModes.Design);\r\n }\r\n\r\n private GetSettings(): IFieldSecuritySettings {\r\n return {\r\n ViewMode: this.GetViewMode(this._params.RenderMode)\r\n }\r\n }\r\n\r\n private GetViewMode(renderMode: RenderModes) {\r\n const renderViewModeMapping = {};\r\n\r\n renderViewModeMapping[RenderModes.View] = ViewModes.View;\r\n renderViewModeMapping[RenderModes.Edit] = ViewModes.Edit;\r\n renderViewModeMapping[RenderModes.Design] = ViewModes.Design;\r\n\r\n return renderViewModeMapping[renderMode];\r\n }\r\n\r\n private RequestDataRoles() {\r\n FieldSecurityStore.GetDataRoles(this.GetForm().GetScreen().GetRecordId())\r\n .then(response => this.DataRolesLoaded(response))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private CreateHeaderComponent(): HeaderComponent {\r\n if (_.contains(this.GetInitModes(), this._params.RenderMode)) {\r\n return new HeaderComponent(this.GetSettings());\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private CreateDataRoleComponents(): DataRoleComponent[] {\r\n if (_.contains(this.GetInitModes(), this._params.RenderMode)) {\r\n const dataRoles = DataRoles.Instance.GetAllDataRoles();\r\n return dataRoles.map(dataRole => new DataRoleComponent(this.GetSettings(), dataRole));\r\n }\r\n\r\n return [];\r\n }\r\n\r\n private DataRolesLoaded(response: GetDataRolesResponseModel) {\r\n const userDataRoles = response.ResultList.map(dataRole => FieldSecurityMappings.MapToDataRoles(dataRole));\r\n this._changes.StartRoles = userDataRoles;\r\n\r\n this._dataRoles.forEach(dataRoleComponent => {\r\n const particularDataRole = userDataRoles.filter(userDataRole => DataRoles.Instance[userDataRole.Name] === dataRoleComponent.DataRole);\r\n const fieldCollections = particularDataRole.map(userDataRole => userDataRole.FieldCollection);\r\n dataRoleComponent.AddCollections(fieldCollections);\r\n });\r\n }\r\n\r\n private OnUsersLoad(dataRole: DataRole, model: NewThirdPartyDataRoleModel, users: AssigneeModel[]) {\r\n const newAssigneesIds = _.chain(this._changes.NewRoles)\r\n .filter(newRole => newRole.Name === dataRole.ShortName)\r\n .map(newRole => newRole.FieldCollection.Assignee.Id)\r\n .value();\r\n\r\n const deleteAssignees = _.chain(this._changes.DeletedRoles)\r\n .filter(deletedRole => deletedRole.Name === dataRole.ShortName)\r\n .map(deletedRole => deletedRole.FieldCollection.Assignee)\r\n .value();\r\n\r\n users = _.union(users, deleteAssignees);\r\n users = _.filter(users, user => !_.contains(newAssigneesIds, user.Id));\r\n \r\n model.Users(users); \r\n }\r\n\r\n private AddNewDataRole(component: DataRoleComponent, dataRole: DataRoleModel) {\r\n const validationError = this.ValidateDataRole(dataRole);\r\n\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const deletedDataRole = _.find(this._changes.DeletedRoles, deletedRole => deletedRole.FieldCollection.Guid === dataRole.FieldCollection.Guid);\r\n if (deletedDataRole) {\r\n const deletedDataRoleIndex = this._changes.DeletedRoles.indexOf(deletedDataRole);\r\n this._changes.DeletedRoles.splice(deletedDataRoleIndex, 1);\r\n }\r\n\r\n this._changes.NewRoles.push(dataRole);\r\n component.AddCollections([dataRole.FieldCollection]);\r\n this.ChangeRolesManipulations(true);\r\n\r\n if (dataRole.Name === DataRoles.Instance.DEP.ShortName) {\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_UPDATE_VIEW);\r\n }\r\n }\r\n\r\n private RemoveDataRole(dataRole: DataRoleModel) {\r\n const newDataRole = _.find(this._changes.NewRoles, newRole => newRole.FieldCollection.Guid === dataRole.FieldCollection.Guid);\r\n\r\n if (newDataRole) {\r\n const newDataRoleIndex = this._changes.NewRoles.indexOf(newDataRole);\r\n this._changes.NewRoles.splice(newDataRoleIndex, 1);\r\n } else {\r\n this._changes.DeletedRoles.push(dataRole);\r\n\r\n const deputyComponent = _.find(this._dataRoles, component => component.DataRole === DataRoles.Instance.DEP);\r\n deputyComponent.RemoveCollectionComponent(dataRole.FieldCollection.Id);\r\n }\r\n }\r\n\r\n private ChangeRolesManipulations(enable: boolean) {\r\n this._dataRoles.forEach(component => component.ChangeManipulations(enable));\r\n }\r\n\r\n private ValidateDataRole(dataRole: DataRoleModel) {\r\n return this.ValidateDeputy(dataRole)\r\n || this.ValidateUniqueDataRole(dataRole)\r\n || this.ValidateThirdPartyDataRole(dataRole);\r\n }\r\n\r\n private ValidateDeputy(dataRole: DataRoleModel) {\r\n const alreadyAssignedCollection = _.find(this._dataRoles, component => component.HasFieldCollection(dataRole.FieldCollection.Name));\r\n return alreadyAssignedCollection && `${dataRole.FieldCollection.Name} is assigned more than once`;\r\n }\r\n\r\n private ValidateUniqueDataRole(dataRole: DataRoleModel) {\r\n const isUnique = !_.any(this._dataRoles, component => component.HasFieldCollection(dataRole.FieldCollection.Name));\r\n return isUnique ? null : `Field collection ${dataRole.FieldCollection.Name} is not unique`;\r\n }\r\n\r\n private ValidateThirdPartyDataRole(dataRole: DataRoleModel) {\r\n const thirdPartyDataRoles = DataRoles.Instance.GetThirdPartyDataRoles();\r\n const dataRoleIsThirdParty = _.any(thirdPartyDataRoles, (thirdPartyDataRole: DataRole) => thirdPartyDataRole.ShortName === dataRole.Name);\r\n const hasAssignee = dataRoleIsThirdParty && _.any(this._dataRoles, component => component.HasAssignee(dataRole.FieldCollection.Assignee.Id));\r\n return hasAssignee && `${dataRole.FieldCollection.Assignee.Name} should have only one field collection`;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"field-security-control\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <table class=\\\"table table-bordered table-hovered table-striped\\\"> <thead> <!--ko with: _header--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </thead> <tbody> <!--ko foreach: _dataRoles--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"field-security-control\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <table class=\\\"table table-bordered table-hovered table-striped\\\"> <thead> <!--ko with: _header--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </thead> <tbody> <!--ko foreach: _dataRoles--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"FieldSecurity\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"icon-lock\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"field-security-control\\\"> <table class=\\\"table table-bordered table-hovered table-striped\\\"> <thead> <!--ko with: _header--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </thead> <tbody> <!--ko foreach: _dataRoles--> <!--ko template: {html: GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </tbody> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl\\\" data-bind=\\\"enableAttr: _enabled, click: OnClick, style: _style\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\n\r\nimport ConsultScreenButtonConfig from \"Core/Controls/ButtonConsultScreen/Configs/consult-screen-button-config.json\";\r\n\r\nimport DesignTemplate from \"Core/Controls/ButtonConsultScreen/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/ButtonConsultScreen/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/ButtonConsultScreen/Templates/Toolbar.html\";\r\nimport ViewTemplate from \"Core/Controls/ButtonConsultScreen/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ButtonConsultScreen/Templates/HelpView.html\";\r\nimport * as _ from \"underscore\";\r\n\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/ButtonConsultScreen/Templates/HelpView\"] = HelpViewTemplate;\r\n\r\n\r\nexport class ButtonConsultScreen extends BaseControl {\r\n\tprivate _config: any;\r\n\r\n\tconstructor(params: IControlParam) {\r\n super(params, ConsultScreenButtonConfig);\r\n this._enabled = ko.observable(this.IsConsultScreenExist);\r\n\t\tthis._style = ko.computed(() => {\r\n\t\t\treturn {\r\n\t\t\t\tbackgroundColor: this._backgroundColor(),\r\n\t\t\t\tcolor: this._color(),\r\n\t\t\t\tborderColor: this._borderColor(),\r\n\t\t\t\tborderWidth: this._border() ? '1px' : '0',\r\n\t\t\t\tpadding: this._border() ? '6px 14px' : '7px 14px'\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tApplyProperties(){\r\n\t\tif (this.Properties) {\r\n\t\t\tthis.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n\t\t\tthis.AssignProperty('Styling', 'TextColor', this._color);\r\n\t\t\tthis.AssignProperty('Styling', 'Border', this._border);\r\n\t\t\tthis.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n\t\tif (this.Properties[groupedBy]) {\r\n\t\t\t_.each(this.Properties[groupedBy].Properties,\r\n\t\t\t\t(property: any) => {\r\n\t\t\t\t\tif (property.hasOwnProperty(propertyName)) {\r\n\t\t\t\t\t\tpropertyHolder(property[propertyName]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tconst screen = this._form.GetScreen();\r\n\t\t\tscreen.Trigger(\"SHOW_CONSULT_SCREEN\");\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-dark subFormControl\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn blue-dark subFormControl\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-desktop\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.CONSULT --><!-- /ko --> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {QueryResultPage} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage\";\r\nimport {QueryParamsPage} from 'QueryBuilder/QueryParamsPage/QueryParamsPage';\r\nimport {EVENTS as QUERY_PARAMS_PAGE_EVENTS} from 'QueryBuilder/QueryParamsPage/Events';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport QueryResultConfig from 'Core/Controls/QueryResult/Configs/query-result-config.json';\r\n\r\nimport ViewTemplate from \"Core/Controls/QueryResult/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/QueryResult/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/QueryResult/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/QueryResult/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/QueryResult/Templates/Edit.html\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\n\r\nko.templates['Core/Controls/QueryResult/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/QueryResult/Templates/Edit'] = EditTemplate;\r\n\r\nexport class QueryResult extends BaseControl {\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, QueryResultConfig);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit(){}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tRunQuery() {\r\n\t\tif(this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tconst queryProperties = this.Properties\r\n\t\t\t\t&& this.Properties.Query\r\n\t\t\t\t&& this.Properties.Query.Properties;\r\n\r\n\t\t\tconst queryExpressionProperty = _.find<any>(queryProperties, property => property.Query);\r\n\r\n\t\t\tif (queryExpressionProperty) {\r\n\t\t\t\tvar queryModel = GenericDeserialize<QueryExpressionModel>(JSON.parse(queryExpressionProperty.Query), QueryExpressionModel);\r\n\t\t\t\tvar paramsPage = new QueryParamsPage(queryModel, '');\r\n\t\t\t\tif (paramsPage.HasShowParameters()) {\r\n\t\t\t\t\tparamsPage.On(QUERY_PARAMS_PAGE_EVENTS.SAVE, this, (evtArgs) => {\r\n\t\t\t\t\t\tif (queryModel.QueryScreenId && queryModel.QueryScreenId > 0) {\r\n\t\t\t\t\t\t\tthis.ShowQueryScreen(queryModel);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.ShowStaticQueryScreen(queryModel);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tparamsPage.Show();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (queryModel.QueryScreenId && queryModel.QueryScreenId > 0) {\r\n\t\t\t\t\t\tthis.ShowQueryScreen(queryModel);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.ShowStaticQueryScreen(queryModel);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\t\t\t\tnew Notifier().Warning('Query expression was not created');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async ShowQueryScreen(queryModel: QueryExpressionModel) {\r\n\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n\t\tBlockUI.Block();\r\n\t\tscreenManager.GetScreenById({ ScreenId: queryModel.QueryScreenId, RaiseNotImplemented: false })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screen: any) => {\r\n\t\t\t\tif (screen.GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n\t\t\t\t\tscreen.SetRecordId(this.GetForm().GetScreen().GetRecordId());\r\n\t\t\t\t\tscreen.SetQuery(queryModel);\r\n\t\t\t\t\tscreen.ShowInModal();\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => { new Notifier().Failed(err.message); });\r\n\t}\r\n\r\n\tprivate ShowStaticQueryScreen(queryModel: QueryExpressionModel) {\r\n\t\tvar queryResultPage = new QueryResultPage(true, ScreenTypes.ListScreen);\r\n\t\tqueryResultPage.RecordId = this.GetForm().GetScreen().GetRecordId();\r\n\t\tqueryResultPage.ShowQueryResult(queryModel);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"#\\\" data-bind=\\\"click: RunQuery\\\" class=\\\"runQuery-button\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i><span><!-- ko text: _labels.RUN_QUERY --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i> <!-- ko text: _labels.RUN_QUERY --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i> Run query </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"#\\\" data-bind=\\\"click: RunQuery\\\" class=\\\"runQuery-button\\\"> <i class=\\\"fa transition fa-play run-query-icon\\\"></i><span><!-- ko text: _labels.RUN_QUERY --><!-- /ko --></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nexport class AssignmentModel {\r\n Effort: number;\r\n EditingEffort: KnockoutObservable<number>;\r\n Editing: KnockoutObservable<boolean>;\r\n\r\n constructor(public Id: string,\r\n public ResourceId: number,\r\n public ResourceName: string,\r\n public ResourceEntity: string,\r\n effort: number) {\r\n\r\n this.Effort = Math.floor(effort / 1000 / 60 / 60 * 1000) / 1000;\r\n this.EditingEffort = ko.observable(this.Effort);\r\n this.Editing = ko.observable(false);\r\n }\r\n\r\n SaveChanges() {\r\n this.Effort = this.EditingEffort();\r\n this.Editing(false);\r\n }\r\n\r\n CancelChanges() {\r\n this.EditingEffort(this.Effort);\r\n this.Editing(false);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {AssignmentModel} from './AssignmentModel';\r\nimport {Resource} from 'ganttChart';\r\n\r\nexport class AssignmentsPopupModel {\r\n Assignments: KnockoutObservableArray<AssignmentModel>;\r\n\r\n FreeAssignments: KnockoutObservableArray<AssignmentModel>;\r\n NewAssignment: KnockoutObservable<AssignmentModel>;\r\n\r\n constructor(assignments: AssignmentModel[], resources: Resource<number>[]) {\r\n this.Assignments = ko.observableArray(assignments);\r\n\r\n const freeAssignments = _.chain(resources)\r\n .map(r => new AssignmentModel(Guid.NewGuid(), r.id, r.name, r.entity, 0))\r\n .filter(fa => !_.any(this.Assignments(), a => a.ResourceId === fa.ResourceId && a.ResourceEntity === fa.ResourceEntity))\r\n .value();\r\n\r\n this.FreeAssignments = ko.observableArray(freeAssignments);\r\n this.NewAssignment = ko.observable(null);\r\n }\r\n\r\n EditAssignment(assignment: AssignmentModel) {\r\n assignment.Editing(true);\r\n }\r\n\r\n SaveAssignmentChanges(assignment: AssignmentModel) {\r\n assignment.SaveChanges();\r\n }\r\n\r\n CancelAssignmentChanges(assignment: AssignmentModel) {\r\n assignment.CancelChanges();\r\n }\r\n\r\n RemoveAssignment(assignment: AssignmentModel) {\r\n this.Assignments.remove(assignment);\r\n\r\n const freeAssignment = new AssignmentModel(assignment.Id, assignment.ResourceId, assignment.ResourceName, assignment.ResourceEntity, 0);\r\n this.FreeAssignments.push(freeAssignment);\r\n }\r\n\r\n CreateAssignment() {\r\n const freeAssignment = this.FreeAssignments()[0];\r\n this.NewAssignment(freeAssignment);\r\n }\r\n\r\n SaveNewAssignment() {\r\n const newAssignment = this.NewAssignment();\r\n\r\n const occupiedAssignment = _.find(this.FreeAssignments(), a => a.Id === newAssignment.Id);\r\n this.FreeAssignments.remove(occupiedAssignment);\r\n\r\n this.Assignments.push(newAssignment);\r\n this.NewAssignment(null);\r\n }\r\n\r\n CancelNewAssignment() {\r\n this.NewAssignment(null);\r\n }\r\n\r\n GetAssignments() {\r\n return this.Assignments();\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {Resource, Task} from 'ganttChart';\r\n\r\nimport {AssignmentsPopupModel} from './Models/AssignmentsPopupModel';\r\nimport {AssignmentModel} from './Models/AssignmentModel';\r\n\r\nimport Template from './Templates/Template.html';\r\n\r\nko.templates['Core/Components/Controls/GanttChart/AssignmentsPopup/Templates/Template'] = Template;\r\n\r\nexport class AssignmentsPopup extends Event {\r\n private _model: AssignmentsPopupModel;\r\n private _modal: Modal;\r\n\r\n constructor(private _task: Task<number>, resources: Resource<number>[]) {\r\n super();\r\n\r\n const assignments = this._task.assigs.map(a => {\r\n const resource = _.find(resources, r => r.id === a.resourceId && r.entity === a.entity);\r\n return new AssignmentModel(a.id, resource.id, resource.name, resource.entity, a.effort);\r\n });\r\n\r\n this._model = new AssignmentsPopupModel(assignments, resources);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Controls/GanttChart/AssignmentsPopup/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n width: 700,\r\n height: 500\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close()\r\n }\r\n\r\n SaveChanges() {\r\n this._task.assigs = this._model.GetAssignments().map(a => {\r\n return {\r\n id: a.Id,\r\n resourceId: a.ResourceId,\r\n entity: a.ResourceEntity,\r\n effort: a.Effort * 60 * 60 * 1000,\r\n roleId: null\r\n }\r\n });\r\n\r\n this.Trigger('SAVE_CHANGES', this._task);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"resources-popup\\\"> <fieldset> <legend> Task Assignments </legend> <div class=\\\"pull-right\\\"> <!--ko ifnot: _model.NewAssignment--> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $data.SaveChanges.bind($data)\\\"> <i class=\\\"fa fa-save\\\"> Save</i> </button> <!--/ko--> </div> <table class=\\\"table\\\"> <thead> <tr> <th>Resource</th> <th>Effort, h</th> <th></th> </tr> </thead> <tbody> <!--ko with: _model--> <!--ko foreach: Assignments--> <tr> <td data-bind=\\\"text: ResourceName\\\"></td> <td> <!--ko if: Editing--> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: EditingEffort\\\"> <!--/ko--> <!--ko ifnot: Editing--> <span data-bind=\\\"text: Effort\\\"></span> <!--/ko--> </td> <td> <!--ko if: Editing--> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $parent.SaveAssignmentChanges.bind($parent, $data)\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.CancelAssignmentChanges.bind($parent, $data)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> <!--ko ifnot: Editing--> <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-bind=\\\"click: $parent.EditAssignment.bind($parent, $data)\\\"> <i class=\\\"fa fa-edit\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.RemoveAssignment.bind($parent, $data)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> </td> </tr> <!--/ko--> <!--/ko--> <tr> <td> <!--ko if: _model.NewAssignment--> <select class=\\\"form-control\\\" data-bind=\\\"options: _model.FreeAssignments, optionsText: 'ResourceName', value: _model.NewAssignment\\\"></select> <!--/ko--> </td> <td> <!--ko if: _model.NewAssignment--> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: _model.NewAssignment().Effort\\\"> <!--/ko--> </td> <td> <!--ko if: _model.NewAssignment--> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: _model.SaveNewAssignment.bind(_model)\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: _model.CancelNewAssignment.bind(_model)\\\"> <i class=\\\"fa fa-times\\\"></i> </button> <!--/ko--> <!--ko ifnot: _model.NewAssignment--> <!--ko if: _model.FreeAssignments().length--> <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-bind=\\\"click: _model.CreateAssignment.bind(_model)\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!--/ko--> <!--/ko--> </td> </tr> </tbody> </table> </fieldset> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {GanttChartInfoDto} from './Models/GanttChartInfoDto';\r\nimport {SaveGanttChartInfoDto} from './Models/SaveGanttChartInfoDto';\r\nimport { PlanVersionDto } from './Models/PlanVersionDto';\r\n\r\nexport class GanttChartStore {\r\n\r\n GetPlanVersions(subjectEntityId: number, rootId: number): P.Promise<Array<PlanVersionDto>> {\r\n const deferred = P.defer<Array<PlanVersionDto>>();\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/GetVersions',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {\r\n SubjectEntityId: subjectEntityId,\r\n RootId: rootId\r\n }\r\n })\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetGanttChartInfo(version: number, subTableView: string, resourcesView: string, rootId: number): P.Promise<GanttChartInfoDto> {\r\n const deferred = P.defer<GanttChartInfoDto>();\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/GetGanttChartInfo',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {\r\n Version: version,\r\n SubTableView: subTableView,\r\n ResourcesView: resourcesView,\r\n RootId: rootId\r\n }\r\n })\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n CreateNewVersion(info: SaveGanttChartInfoDto): P.Promise<number> {\r\n const deferred = P.defer<number>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/CreateNewVersion',\r\n type: 'POST'\r\n },\r\n params: info\r\n })\r\n .then((data) => deferred.resolve(data))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SaveGanttChartInfo(info: SaveGanttChartInfoDto) {\r\n const deferred = P.defer<void>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/SaveGanttChartInfo',\r\n type: 'POST'\r\n },\r\n params: info\r\n })\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error saving Gantt Chart info')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {TaskDto} from './TaskDto';\r\n\r\nexport class SaveGanttChartInfoDto {\r\n constructor(public Version, public SubTableView: string, public ResourcesView: string, public Tasks: TaskDto[]) {\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {ColorConverter} from 'Core/Components/ColorSelector/ColorConverter';\r\n\r\nimport {TaskDto} from '../Stores/Models/TaskDto';\r\nimport {AssignmentDto} from '../Stores/Models/AssignmentDto';\r\nimport {ResourceDto} from '../Stores/Models/ResourceDto';\r\n\r\nimport {Assignment, Resource, ResourceHolder, Role, Task} from 'ganttChart';\r\nimport {DependencyDto} from '../Stores/Models/DependencyDto';\r\nimport {ResourceHolderDto} from '../Stores/Models/ResourceHolderDto';\r\nimport { RoleDto } from '../Stores/Models/RoleDto';\r\n\r\nexport class OnViewModelMappings {\r\n AsTasks(dtos: TaskDto[]): Task<number>[] {\r\n const tasks = dtos.map(dto => this.AsTask(dto));\r\n this.ResolveDependencies(tasks, dtos);\r\n\r\n return tasks;\r\n }\r\n\r\n AsTask(dto: TaskDto): Task<number> {\r\n const task = new Task<number>();\r\n task.parentEntity = dto.Parent?.Entity;\r\n task.childEntity = dto.ChildEntity;\r\n task.parentRecordId = dto.Parent?.Id;\r\n task.entity = dto.Entity;\r\n task.id = dto.Id;\r\n task.name = dto.Name;\r\n task.level = dto.Level;\r\n task.start = this.AsMilliseconds(dto.Starting);\r\n task.end = this.AsMilliseconds(dto.Ending);\r\n task.progress = dto.Completeness * 100;\r\n task.status = task.progress === 100 ? 'STATUS_DONE' : 'STATUS_ACTIVE';\r\n task.assigs = this.AsAssignees(dto.Assignments);\r\n task.color = ColorConverter.ToHex(dto.BarColor);\r\n task.startIsMilestone = false;\r\n task.endIsMilestone = false;\r\n task.duration = dto.Duration;\r\n task.startIsMilestone = dto.StartIsMilestone;\r\n task.endIsMilestone = dto.EndIsMilestone;\r\n\r\n return task;\r\n }\r\n\r\n AsAssignees(dtos: AssignmentDto[]): Assignment<Guid, number, number>[] {\r\n return dtos.map(dto => this.AsAssignee(dto));\r\n }\r\n\r\n AsAssignee(dto: AssignmentDto): Assignment<Guid, number, number> {\r\n return {\r\n id: Guid.NewGuid(),\r\n entity: dto.Entity,\r\n resourceId: dto.Id,\r\n roleId: dto.RoleId,\r\n effort: dto.Effort * 60 * 60 * 1000\r\n };\r\n }\r\n\r\n AsResources(dtos: ResourceDto[]): Resource<number>[] {\r\n return dtos.map(dto => this.AsResource(dto));\r\n }\r\n\r\n AsRoles(dtos: RoleDto[]): Role<number>[] {\r\n return dtos.map(dto => this.AsRole(dto));\r\n }\r\n\r\n AsRole(dto: RoleDto): Role<number> {\r\n return {\r\n id: dto.Id,\r\n name: dto.Name\r\n };\r\n }\r\n\r\n AsResource(dto: ResourceDto): Resource<number> {\r\n return {\r\n id: dto.Id,\r\n entity: dto.Entity,\r\n name: dto.Name,\r\n holders: this.AsResourceHolders(dto.ResourceHolders)\r\n };\r\n }\r\n\r\n private AsResourceHolders(dtos: ResourceHolderDto[]): ResourceHolder<number>[] {\r\n return dtos.map(dto => this.AsResourceHolder(dto));\r\n }\r\n\r\n private AsResourceHolder(dto: ResourceHolderDto): ResourceHolder<number> {\r\n return {\r\n id: dto.Id,\r\n entity: dto.Entity\r\n };\r\n }\r\n\r\n private AsMilliseconds(utcDateTime: string): number {\r\n const shiftedDateTime = FormatConverter.CorrectTimezone(utcDateTime);\r\n return new Date(shiftedDateTime).getTime();\r\n }\r\n\r\n private ResolveDependencies(tasks: Task<number>[], taskDtos: TaskDto[]) {\r\n taskDtos.forEach(taskDto => {\r\n const task = _.find(tasks, t => t.id === taskDto.Id && t.entity === taskDto.Entity);\r\n\r\n const dependencies = [];\r\n taskDto.Dependencies.forEach(dependencyDto => {\r\n const dependencyTask = _.find(tasks, t => t.id == dependencyDto.RecordId && t.entity === dependencyDto.Entity);\r\n if (!dependencyTask) return;\r\n\r\n const dependencyRowNumber = tasks.indexOf(dependencyTask) + 1;\r\n const dependencyString = dependencyDto.StartAfterDays ? `${dependencyRowNumber}:${dependencyDto.StartAfterDays}` : `${dependencyRowNumber}`;\r\n dependencies.push(dependencyString);\r\n });\r\n\r\n task.depends = dependencies.join(',');\r\n });\r\n }\r\n}","import {TaskParentDto} from './TaskParentDto';\r\nimport {AssignmentDto} from './AssignmentDto';\r\nimport {DependencyDto} from './DependencyDto';\r\n\r\nexport class TaskDto {\r\n Entity: string;\r\n ChildEntity: string;\r\n Id: number;\r\n Name: string;\r\n Level: number;\r\n Starting: string;\r\n Ending: string;\r\n StartIsMilestone: boolean;\r\n EndIsMilestone: boolean;\r\n Completeness: number;\r\n Duration: number;\r\n Dependencies: DependencyDto[];\r\n Parent: TaskParentDto;\r\n Assignments: AssignmentDto[];\r\n BarColor: string;\r\n\r\n constructor() {\r\n this.Dependencies = [];\r\n this.Assignments = [];\r\n }\r\n}","export class AssignmentDto {\r\n Id: number;\r\n Entity: string;\r\n Effort: number;\r\n RoleId: number;\r\n}","export class DependencyDto {\r\n Entity: string;\r\n RecordId: number;\r\n StartAfterDays: number;\r\n}","export class TaskParentDto {\r\n Entity: string;\r\n Id: number;\r\n}","import * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport {Assignment, Task} from 'ganttChart';\r\n\r\nimport {TaskDto} from '../Stores/Models/TaskDto';\r\nimport {AssignmentDto} from '../Stores/Models/AssignmentDto';\r\nimport {DependencyDto} from '../Stores/Models/DependencyDto';\r\nimport { TaskParentDto } from '../Stores/Models/TaskParentDto';\r\n\r\nexport class OnDtoModelMappings {\r\n AsTasksDto(tasks: Task<number>[]): TaskDto[] {\r\n const dtos = tasks.map(task => this.AsTaskDto(task));\r\n this.ResolveDependencies(dtos, tasks);\r\n\r\n return dtos;\r\n }\r\n\r\n AsTaskDto(task: Task<number>): TaskDto {\r\n const dto = new TaskDto();\r\n\r\n if(task.parentEntity && task.parentRecordId){\r\n let taskParent = new TaskParentDto();\r\n taskParent.Entity = task.parentEntity;\r\n taskParent.Id = task.parentRecordId;\r\n dto.Parent = taskParent;\r\n }\r\n\r\n dto.Entity = task.entity;\r\n dto.Id = task.id;\r\n dto.Name = task.name;\r\n dto.Duration = task.duration;\r\n dto.Level = task.level;\r\n dto.Starting = this.AsUtc(task.start);\r\n dto.Ending = this.AsUtc(task.end);\r\n dto.StartIsMilestone = task.startIsMilestone;\r\n dto.EndIsMilestone = task.endIsMilestone;\r\n dto.Completeness = task.progress / 100;\r\n dto.Assignments = this.AsAssigneesDto(task.assigs);\r\n\r\n return dto;\r\n }\r\n\r\n private AsAssigneesDto(assignments: Assignment<string, number, number>[]): AssignmentDto[] {\r\n return assignments.map(assignment => this.AsAssigneeDto(assignment));\r\n }\r\n\r\n private AsAssigneeDto(assignment: Assignment<string, number, number>): AssignmentDto {\r\n const dto = new AssignmentDto();\r\n\r\n dto.Id = assignment.resourceId;\r\n dto.Entity = assignment.entity;\r\n dto.RoleId = assignment.roleId;\r\n dto.Effort = assignment.effort / 60 / 60 / 1000;\r\n return dto;\r\n }\r\n\r\n private ResolveDependencies(taskDtos: TaskDto[], tasks: Task<number>[]) {\r\n tasks.forEach(task => {\r\n if (!task.depends) return;\r\n\r\n const taskDto = _.find(taskDtos, d => d.Id === task.id && d.Entity === task.entity);\r\n\r\n const dependencyStrings = task.depends.split(',');\r\n dependencyStrings.forEach(dependencyString => {\r\n const depSplit = dependencyString.split(':');\r\n const depIndex = +depSplit[0] - 1;\r\n const startAfterDays = depSplit[1] && +depSplit[1];\r\n\r\n const depTaskDto = taskDtos[depIndex];\r\n const dependency = this.AsDependencyDto(depTaskDto.Id, depTaskDto.Entity, startAfterDays);\r\n\r\n taskDto.Dependencies.push(dependency);\r\n });\r\n });\r\n }\r\n\r\n private AsDependencyDto(id: number, entity: string, startAfterDays: number) {\r\n const dto = new DependencyDto();\r\n\r\n dto.Entity = entity;\r\n dto.RecordId = id;\r\n dto.StartAfterDays = startAfterDays;\r\n\r\n return dto;\r\n }\r\n\r\n private AsUtc(milliseconds: number): string {\r\n return moment(milliseconds).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format();\r\n }\r\n}","import {OnViewModelMappings} from './OnViewModelMappings';\r\nimport {OnDtoModelMappings} from './OnDtoModelMappings';\r\n\r\nexport class GanttChartMappings {\r\n private _onViewModel: OnViewModelMappings;\r\n private _onDtoModel: OnDtoModelMappings;\r\n\r\n constructor() {\r\n this._onViewModel = new OnViewModelMappings();\r\n this._onDtoModel = new OnDtoModelMappings();\r\n }\r\n\r\n get OnViewModel() {\r\n return this._onViewModel;\r\n }\r\n\r\n get OnDtoModel() {\r\n return this._onDtoModel;\r\n }\r\n}","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {IGanttChartDataOptions} from './IGanttChartDataOptions';\r\n\r\nimport {AssignmentsPopup} from './AssignmentsPopup/AssignmentsPopup';\r\n\r\nimport {GanttChartStore} from './Stores/GanttChartStore';\r\nimport {GanttChartInfoDto} from './Stores/Models/GanttChartInfoDto';\r\nimport {SaveGanttChartInfoDto} from './Stores/Models/SaveGanttChartInfoDto';\r\n\r\nimport {GanttChartMappings} from './Mappings/GanttChartMappings';\r\n\r\nimport {GanttMaster, Project, Resource} from 'ganttChart';\r\n\r\nimport Template from './Templates/Templates.html';\r\nimport { PlanVersionDto } from './Stores/Models/PlanVersionDto';\r\nimport { Modal } from '../../../Common/Modal';\r\n\r\n\r\n($ as any).JST.loadDecorator(\"RESOURCE_ROW\", function(resTr, res){\r\n resTr.find(\".delRes\").click(function(){$(this).closest(\"tr\").remove()});\r\n });\r\n\r\n ($ as any).JST.loadDecorator(\"ASSIGNMENT_ROW\", function(assigTr, taskAssig){\r\n var resEl = assigTr.find(\"[name=resourceId]\");\r\n var opt = $(\"<option>\");\r\n resEl.append(opt);\r\n for(var i=0; i< taskAssig.task.master.resources.length;i++){\r\n var res = taskAssig.task.master.resources[i];\r\n opt = $(\"<option>\");\r\n opt.val(res.id).html(res.name);\r\n if(taskAssig.assig.resourceId == res.id)\r\n opt.attr(\"selected\", \"true\");\r\n resEl.append(opt);\r\n }\r\n var roleEl = assigTr.find(\"[name=roleId]\");\r\n for(var i=0; i< taskAssig.task.master.roles.length;i++){\r\n var role = taskAssig.task.master.roles[i];\r\n var optr = $(\"<option>\");\r\n optr.val(role.id).html(role.name);\r\n if(taskAssig.assig.roleId == role.id)\r\n optr.attr(\"selected\", \"true\");\r\n roleEl.append(optr);\r\n }\r\n\r\n if(taskAssig.task.master.permissions.canWrite && taskAssig.task.canWrite){\r\n assigTr.find(\".delAssig\").click(function(){\r\n var tr = $(this).closest(\"[assId]\").fadeOut(200, function(){$(this).remove()});\r\n });\r\n }\r\n });\r\n\r\nexport class GanttChartComponent extends Event {\r\n private _wrapperId: string;\r\n private _wrapper: HTMLElement;\r\n\r\n private _store: GanttChartStore;\r\n private _mappings: GanttChartMappings;\r\n\r\n private _ge: GanttMaster;\r\n private _project: Project;\r\n\r\n private _dataOptions: IGanttChartDataOptions;\r\n\r\n private _defaultScale: string | undefined;\r\n private _versions: Array<PlanVersionDto>;\r\n private _version: number;\r\n\r\n constructor({ defaultScale }: { defaultScale: string | undefined }) {\r\n super();\r\n\r\n this._versions = [];\r\n this._wrapperId = Guid.NewGuid();\r\n\r\n this._store = new GanttChartStore();\r\n this._mappings = new GanttChartMappings();\r\n\r\n this._ge = new GanttMaster();\r\n\r\n this._defaultScale = defaultScale;\r\n\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._wrapper = document.getElementById(this._wrapperId);\r\n this.Trigger('RENDERED');\r\n }\r\n\r\n async Refresh(options: IGanttChartDataOptions) {\r\n this._dataOptions = options;\r\n this.RenderChart();\r\n await this.LoadVersions();\r\n this.LoadData();\r\n }\r\n\r\n private async LoadVersions(){\r\n const $wrapper = $(this._wrapper);\r\n this._versions = await this._store.GetPlanVersions(this._dataOptions.SubjectEntityId, this._dataOptions.RootId);\r\n\r\n if(!this._version){\r\n this._version = this._versions.length > 0 ? _.last(this._versions).Version : null;\r\n }\r\n\r\n let versionSelect = $wrapper.find('#plan-version');\r\n versionSelect.empty();\r\n\r\n versionSelect.off('change');\r\n versionSelect.on('change', ()=>{\r\n this._version = versionSelect.val() ? Number(versionSelect.val()) : null;\r\n this.LoadData();\r\n });\r\n\r\n var option = $('<option></option>')\r\n .val('-1')\r\n .text('No version');\r\n versionSelect.append(option);\r\n\r\n _.each(this._versions, (version)=>{\r\n var option = $('<option></option>')\r\n .val(version.Version)\r\n .text(version.Version);\r\n versionSelect.append(option);\r\n });\r\n versionSelect.val(this._version);\r\n }\r\n\r\n ShowCriticalPath() {\r\n this._ge.gantt.showCriticalPath = !this._ge.gantt.showCriticalPath;\r\n this._ge.redraw();\r\n }\r\n\r\n Resize(value: number) {\r\n this._ge.splitter.resize(value);\r\n }\r\n\r\n ShowAssignmentsPopup(taskId) {\r\n const task = this._ge.getTask(taskId);\r\n\r\n const hasChildren = task.getChildren().length > 0;\r\n if (hasChildren) {\r\n return;\r\n }\r\n\r\n //const resourcesHolder = task.getParent();\r\n //const resources = _.filter(this._project.resources, r => _.any(r.holders, rh => rh.id == resourcesHolder.id && rh.entity == resourcesHolder.entity));\r\n\r\n const popup = new AssignmentsPopup(task, this._project.resources);\r\n\r\n popup.On('SAVE_CHANGES', this, () => {\r\n popup.Close();\r\n this._ge.redraw();\r\n });\r\n\r\n popup.Show();\r\n }\r\n\r\n Save() {\r\n BlockUI.Block({Target: this._wrapper});\r\n const project = this._ge.saveProject();\r\n const tasksDto = this._mappings.OnDtoModel.AsTasksDto(project.tasks);\r\n\r\n this._store.SaveGanttChartInfo(new SaveGanttChartInfoDto(this._version, this._dataOptions.SourceTable, this._dataOptions.ResourcesTable, tasksDto))\r\n .then(() => {\r\n this.LoadData();\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock(this._wrapper));\r\n }\r\n\r\n CreateNewVersion() {\r\n BlockUI.Block({Target: this._wrapper});\r\n const project = this._ge.saveProject();\r\n const tasksDto = this._mappings.OnDtoModel.AsTasksDto(project.tasks);\r\n\r\n this._store.CreateNewVersion(new SaveGanttChartInfoDto(this._version, this._dataOptions.SourceTable, this._dataOptions.ResourcesTable, tasksDto))\r\n .then(async (version) => {\r\n this._version = version;\r\n await this.LoadVersions();\r\n this.LoadData();\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock(this._wrapper));\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block({Target: this._wrapper});\r\n this._store.GetGanttChartInfo(this._version, this._dataOptions.SourceTable, this._dataOptions.ResourcesTable, this._dataOptions.RootId)\r\n .then(dto => {\r\n this.InitProject(dto);\r\n this.LoadProject();\r\n this.BindRowEvents();\r\n this.EnableScrollOnTimelineDrag();\r\n this.ApplyColors();\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock(this._wrapper));\r\n }\r\n\r\n private InitProject(dto: GanttChartInfoDto) {\r\n const defaultScaleZoomMap = {\r\n 'Year - Semester': '2y',\r\n 'Semester - Month': '1y',\r\n 'Quarter - Month (small)': '2Q',\r\n 'Quarter - Month (large)': '1Q',\r\n 'Month - Date': '1M',\r\n 'Week - Day (small)': '2w',\r\n 'Week - Day (medium)': '1w',\r\n 'Week - Day (large)': '3d'\r\n };\r\n\r\n this._project = {\r\n tasks: this._mappings.OnViewModel.AsTasks(dto.Tasks),\r\n canWrite: true,\r\n canDelete: true,\r\n canWriteOnParent: true,\r\n canAdd: true,\r\n canSeePopEdit: true,\r\n canSeeFullEdit: true,\r\n resources: this._mappings.OnViewModel.AsResources(dto.Resources),\r\n roles: this._mappings.OnViewModel.AsRoles(dto.Roles),\r\n zoom: defaultScaleZoomMap[this._defaultScale]\r\n };\r\n }\r\n\r\n private LoadProject(){\r\n this._ge.reset();\r\n this._ge.loadProject(this._project);\r\n }\r\n\r\n private RenderChart() {\r\n const $wrapper = $(this._wrapper);\r\n\r\n this._ge.init($wrapper);\r\n\r\n // Fix event handler context\r\n this._ge.element\r\n .off('saveRequired.gantt', this._ge.manageSaveRequired)\r\n .on('saveRequired.gantt', this._ge.manageSaveRequired.bind(this._ge)); \r\n \r\n this._ge.checkpoint();\r\n\r\n this.BindEvents();\r\n\r\n // Scroll to current date\r\n // Based on Ganttalendar.prototype.goToMillis and Ganttalendar.prototype.centerOnToday from ganttDrawerSVG.js\r\n setTimeout(() => {\r\n const {\r\n gantt,\r\n splitter: { secondBox }\r\n } = this._ge;\r\n\r\n secondBox.scrollLeft(\r\n (Date.now() - gantt.startMillis) * gantt.fx + secondBox.width() / 2 - secondBox.prop('scrollWidth')\r\n );\r\n }, 200); // 200ms from GanttMaster.prototype.loadProject\r\n }\r\n\r\n private BindRowEvents(){\r\n const $wrapper = $(this._wrapper);\r\n $wrapper.find('.taskAssigs').on('click', event => {\r\n var row = $(event.target).closest(\"tr\");\r\n var taskId = row.attr(\"taskId\");\r\n this.ShowAssignmentsPopup(taskId);\r\n });\r\n }\r\n\r\n private BindEvents() {\r\n const $wrapper = $(this._wrapper);\r\n\r\n $wrapper.find('#gantt-save-btn').on('click', () => this.Save());\r\n $wrapper.find('#gantt-create-new-version-btn').on('click', () => this.CreateNewVersion());\r\n $wrapper.find('#gantt-show-critical-path-btn').on('click', () => this.ShowCriticalPath());\r\n $wrapper.find('#show-gantt-only-btn').on('click', () => this.Resize(.1));\r\n $wrapper.find('#show-both-btn').on('click', () => this.Resize(50));\r\n $wrapper.find('#show-table-only-btn').on('click', () => this.Resize(100));\r\n $wrapper.find('#gantt-edit-resources').on('click', () => this.EditResources());\r\n\r\n $wrapper.find('#gantt-zoom-minus').on('click', () => this.EnableScrollOnTimelineDrag());\r\n $wrapper.find('#gantt-zoom-plus').on('click', () => this.EnableScrollOnTimelineDrag());\r\n\r\n const splitBox1 = this._wrapper.querySelector<HTMLDivElement>('.splitBox1');\r\n splitBox1.addEventListener(\r\n 'wheel',\r\n event => {\r\n if (event.shiftKey) {\r\n splitBox1.scrollLeft += event.deltaY;\r\n }\r\n },\r\n true\r\n );\r\n\r\n this.EnableScrollOnTimelineDrag();\r\n }\r\n\r\n private EnableScrollOnTimelineDrag() {\r\n setTimeout(() => {\r\n const splitBox2 = this._wrapper.querySelector<HTMLDivElement>('.splitBox2');\r\n const ganttFixHead = splitBox2.querySelector<HTMLDivElement>('.ganttFixHead');\r\n\r\n let initialScrollLeft: number | undefined;\r\n let initialClientX: number | undefined;\r\n\r\n function scroll(event: PointerEvent) {\r\n splitBox2.scrollLeft = initialScrollLeft - (event.clientX - initialClientX);\r\n }\r\n\r\n ganttFixHead.addEventListener('pointerdown', event => {\r\n initialScrollLeft = splitBox2.scrollLeft;\r\n initialClientX = event.clientX;\r\n\r\n ganttFixHead.addEventListener('pointermove', scroll);\r\n ganttFixHead.setPointerCapture(event.pointerId);\r\n });\r\n\r\n ganttFixHead.addEventListener('pointerup', event => {\r\n ganttFixHead.removeEventListener('pointermove', scroll);\r\n ganttFixHead.releasePointerCapture(event.pointerId);\r\n });\r\n }, 50); // 50ms from GanttMaster.prototype.taskIsChanged\r\n }\r\n\r\n private ApplyColors() {\r\n for (const task of this._ge.tasks) {\r\n if (task.color) {\r\n task.rowElement.find('.taskStatus').css('background-color', task.color);\r\n }\r\n }\r\n\r\n // Gantt colors\r\n const mutationObserver = new MutationObserver(mutationList => {\r\n const ganttBars = _.flatten(\r\n mutationList.map(mutation =>\r\n Array.prototype.filter.call(mutation.addedNodes,\r\n node => node instanceof SVGElement && node.classList.contains('taskStatusSVG')\r\n )\r\n )\r\n );\r\n\r\n for (const bar of ganttBars) {\r\n const fill = bar.getAttribute('fill');\r\n if (fill !== '#eee') { // if not default value\r\n bar.style.fill = fill;\r\n }\r\n }\r\n });\r\n\r\n const splitBox2 = this._wrapper.querySelector<HTMLDivElement>('.splitBox2');\r\n\r\n mutationObserver.observe(splitBox2, { childList: true, subtree: true });\r\n }\r\n\r\n private EditResources(){\r\n let modal = new Modal({ height: 600, width: 400 }, false); \r\n modal.AddClass('gantt-chart-wrapper');\r\n //make resource editor\r\n var resourceEditor = ($ as any).JST.createFromTemplate({}, \"RESOURCE_EDITOR\");\r\n var resTbl=resourceEditor.find(\"#resourcesTable\");\r\n \r\n for (var i=0;i<(this._ge as any).resources.length;i++){\r\n var res=(this._ge as any).resources[i];\r\n resTbl.append(($ as any).JST.createFromTemplate(res, \"RESOURCE_ROW\"))\r\n }\r\n \r\n \r\n //bind add resource\r\n resourceEditor.find(\"#addResource\").click(function(){\r\n resTbl.append(($ as any).JST.createFromTemplate({id:\"new\",name:\"resource\"}, \"RESOURCE_ROW\"))\r\n });\r\n \r\n //bind save event\r\n resourceEditor.find(\"#resSaveButton\").click(function(){\r\n var newRes=[];\r\n //find for deleted res\r\n for (var i=0;i<(this._ge as any).resources.length;i++){\r\n var res=(this._ge as any).resources[i];\r\n var row = resourceEditor.find(\"[resId=\"+res.id+\"]\");\r\n if (row.length>0){\r\n //if still there save it\r\n var name = row.find(\"input[name]\").val();\r\n if (name && name!=\"\")\r\n res.name=name;\r\n newRes.push(res);\r\n } else {\r\n //remove assignments\r\n for (var j=0;j<(this._ge as any).tasks.length;j++){\r\n var task=(this._ge as any).tasks[j];\r\n var newAss=[];\r\n for (var k=0;k<task.assigs.length;k++){\r\n var ass=task.assigs[k];\r\n if (ass.resourceId!=res.id)\r\n newAss.push(ass);\r\n }\r\n task.assigs=newAss;\r\n }\r\n }\r\n }\r\n \r\n var cnt=0\r\n resourceEditor.find(\"[resId=new]\").each(function(){\r\n cnt++;\r\n var row = $(this);\r\n var name = row.find(\"input[name]\").val();\r\n if (name && name!=\"\")\r\n newRes.push (new (Resource as any)(\"tmp_\"+new Date().getTime()+\"_\"+cnt,name));\r\n });\r\n \r\n (this._ge as any).resources=newRes;\r\n \r\n modal.Close();\r\n (this._ge as any).redraw();\r\n });\r\n \r\n\r\n modal.SetContent(resourceEditor);\r\n modal.Show();\r\n } \r\n}","// Module\nvar code = \"<div data-bind=\\\"attr: {id: _wrapperId}\\\" class=\\\"gantt-chart-wrapper\\\"></div> <div class=\\\"gantEditorTemplates\\\" style=\\\"display:none\\\"> <div class=\\\"__template__\\\" type=\\\"GANTBUTTONS\\\"> <!--\\r\\n <div class=\\\"ganttButtonBar noprint\\\">\\r\\n <div class=\\\"buttons\\\">\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('undo.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite\\\" title=\\\"undo\\\"><span class=\\\"teamworkIcon\\\">'</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('redo.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite\\\" title=\\\"redo\\\"><span class=\\\"teamworkIcon\\\">·</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanAdd\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('addAboveCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanAdd\\\" title=\\\"insert above\\\"><span class=\\\"teamworkIcon\\\">l</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('addBelowCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanAdd\\\" title=\\\"insert below\\\"><span class=\\\"teamworkIcon\\\">X</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanInOutdent\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('outdentCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanInOutdent\\\" title=\\\"un-indent task\\\"><span class=\\\"teamworkIcon\\\">.</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('indentCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanInOutdent\\\" title=\\\"indent task\\\"><span class=\\\"teamworkIcon\\\">:</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanMoveUpDown\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('moveUpCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanMoveUpDown\\\" title=\\\"move up\\\"><span class=\\\"teamworkIcon\\\">k</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('moveDownCurrentTask.gantt');return false;\\\" class=\\\"button textual icon requireCanWrite requireCanMoveUpDown\\\" title=\\\"move down\\\"><span class=\\\"teamworkIcon\\\">j</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanWrite requireCanDelete\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('deleteFocused.gantt');return false;\\\" class=\\\"button textual icon delete requireCanWrite\\\" title=\\\"Elimina\\\"><span class=\\\"teamworkIcon\\\">¢</span></button>\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('expandAll.gantt');return false;\\\" class=\\\"button textual icon \\\" title=\\\"EXPAND_ALL\\\"><span class=\\\"teamworkIcon\\\">6</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('collapseAll.gantt'); return false;\\\" class=\\\"button textual icon \\\" title=\\\"COLLAPSE_ALL\\\"><span class=\\\"teamworkIcon\\\">5</span></button>\\r\\n\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('zoomMinus.gantt'); return false;\\\" id=\\\"gantt-zoom-minus\\\" class=\\\"button textual icon \\\" title=\\\"zoom out\\\"><span class=\\\"teamworkIcon\\\">)</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('zoomPlus.gantt');return false;\\\" id=\\\"gantt-zoom-plus\\\" class=\\\"button textual icon \\\" title=\\\"zoom in\\\"><span class=\\\"teamworkIcon\\\">(</span></button>\\r\\n <button onclick=\\\"$(this).closest('.gantt-chart-wrapper').trigger('fullScreen.gantt');return false;\\\" class=\\\"button textual icon\\\" title=\\\"FULLSCREEN\\\" id=\\\"fullscrbtn\\\"><span class=\\\"teamworkIcon\\\">@</span></button>\\r\\n\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n <button id=\\\"gantt-show-critical-path-btn\\\" class=\\\"button textual icon requireCanSeeCriticalPath\\\" title=\\\"CRITICAL_PATH\\\"><span class=\\\"teamworkIcon\\\">£</span></button>\\r\\n <span class=\\\"ganttButtonSeparator requireCanSeeCriticalPath\\\"></span>\\r\\n <button id=\\\"show-gantt-only-btn\\\" class=\\\"button textual icon\\\" ><span class=\\\"teamworkIcon\\\">F</span></button>\\r\\n <button id=\\\"show-both-btn\\\" class=\\\"button textual icon\\\" ><span class=\\\"teamworkIcon\\\">O</span></button>\\r\\n <button id=\\\"show-table-only-btn\\\" class=\\\"button textual icon\\\"><span class=\\\"teamworkIcon\\\">R</span></button>\\r\\n\\r\\n <button id=\\\"gantt-edit-resources\\\" class=\\\"button textual requireWrite\\\" title=\\\"edit resources\\\"><span class=\\\"teamworkIcon\\\">M</span></button>\\r\\n\\r\\n <span class=\\\"ganttButtonSeparator\\\"></span>\\r\\n\\r\\n <select id=\\\"plan-version\\\" name=\\\"plan-version\\\">\\r\\n </select>\\r\\n\\r\\n <button id=\\\"gantt-save-btn\\\" class=\\\"button first big requireWrite\\\" title=\\\"Save\\\">Save</button>\\r\\n <button id=\\\"gantt-create-new-version-btn\\\" class=\\\"button first big requireWrite\\\" title=\\\"Save new\\\">Save new</button>\\r\\n </div>\\r\\n \\r\\n </div>\\r\\n --> </div> <div class=\\\"__template__\\\" type=\\\"TASKSEDITHEAD\\\"><!--\\r\\n <table class=\\\"gdfTable\\\" cellspacing=\\\"0\\\" cellpadding=\\\"0\\\">\\r\\n <thead>\\r\\n <tr style=\\\"height:40px\\\">\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:35px; border-right: none\\\"></th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:25px;\\\"></th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:300px;\\\">Name</th>\\r\\n <th class=\\\"gdfColHeader\\\" align=\\\"center\\\" style=\\\"width:17px;\\\" title=\\\"Start date is a milestone.\\\"><span class=\\\"teamworkIcon\\\" style=\\\"font-size: 8px;\\\">^</span></th>\\r\\n <th class=\\\"gdfColHeader gdfResizable\\\" style=\\\"width:80px;\\\">Start</th>\\r\\n <th class=\\\"gdfColHeader\\\" align=\\\"center\\\" style=\\\"width:17px;\\\" title=\\\"End date is a milestone.\\\"><span class=\\\"teamworkIcon\\\" style=\\\"font-size: 8px;\\\">^</span></th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:80px;\\\">End</th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:40px;\\\">Dur.</th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:40px;\\\">%</th>\\r\\n <th class=\\\"gdfColHeader requireCanSeeDep\\\" style=\\\"width:80px;\\\">Dep.</th>\\r\\n <th class=\\\"gdfColHeader\\\" style=\\\"width:1000px; text-align: left; padding-left: 10px;\\\">Assignees</th>\\r\\n </tr>\\r\\n </thead>\\r\\n </table>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASKROW\\\"><!--\\r\\n <tr id=\\\"tid_(#=obj.id#)\\\" taskId=\\\"(#=obj.id#)\\\" class=\\\"taskEditRow (#=obj.isParent()?'isParent':''#) (#=obj.collapsed?'collapsed':''#)\\\" level=\\\"(#=level#)\\\">\\r\\n <th class=\\\"gdfCell edit\\\" align=\\\"right\\\" style=\\\"cursor:pointer;\\\"><span class=\\\"taskRowIndex\\\">(#=obj.getRow()+1#)</span> <span class=\\\"teamworkIcon\\\" style=\\\"font-size:12px;\\\" >e</span></th>\\r\\n <td class=\\\"gdfCell noClip\\\" align=\\\"center\\\"><div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"(#=obj.status#)\\\"></div></td>\\r\\n <td class=\\\"gdfCell indentCell\\\" style=\\\"padding-left:(#=obj.level*10+18#)px;\\\">\\r\\n <div class=\\\"exp-controller\\\" align=\\\"center\\\"></div>\\r\\n <input type=\\\"text\\\" name=\\\"name\\\" value=\\\"(#=obj.name#)\\\" placeholder=\\\"name\\\" disabled>\\r\\n </td>\\r\\n <td class=\\\"gdfCell\\\" align=\\\"center\\\"><input type=\\\"checkbox\\\" name=\\\"startIsMilestone\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"start\\\" value=\\\"\\\" class=\\\"date\\\"></td>\\r\\n <td class=\\\"gdfCell\\\" align=\\\"center\\\"><input type=\\\"checkbox\\\" name=\\\"endIsMilestone\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"end\\\" value=\\\"\\\" class=\\\"date\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"duration\\\" autocomplete=\\\"off\\\" value=\\\"(#=obj.duration#)\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"><input type=\\\"text\\\" name=\\\"progress\\\" class=\\\"validated\\\" entrytype=\\\"PERCENTILE\\\" autocomplete=\\\"off\\\" value=\\\"(#=obj.progress?obj.progress:''#)\\\" (#=obj.progressByWorklog?\\\"readOnly\\\":\\\"\\\"#)></td>\\r\\n <td class=\\\"gdfCell requireCanSeeDep\\\"><input type=\\\"text\\\" name=\\\"depends\\\" autocomplete=\\\"off\\\" value=\\\"(#=obj.depends#)\\\" (#=obj.hasExternalDep?\\\"readonly\\\":\\\"\\\"#)></td>\\r\\n <td class=\\\"gdfCell taskAssigs\\\">(#=obj.getAssigsString()#)</td>\\r\\n </tr>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASKEMPTYROW\\\"><!--\\r\\n <tr class=\\\"taskEditRow emptyRow\\\" >\\r\\n <th class=\\\"gdfCell\\\" align=\\\"right\\\"></th>\\r\\n <td class=\\\"gdfCell noClip\\\" align=\\\"center\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n <td class=\\\"gdfCell requireCanSeeDep\\\"></td>\\r\\n <td class=\\\"gdfCell\\\"></td>\\r\\n </tr>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASKBAR\\\"><!--\\r\\n <div class=\\\"taskBox taskBoxDiv\\\" taskId=\\\"(#=obj.id#)\\\" >\\r\\n <div class=\\\"layout (#=obj.hasExternalDep?'extDep':''#)\\\">\\r\\n <div class=\\\"taskStatus\\\" status=\\\"(#=obj.status#)\\\"></div>\\r\\n <div class=\\\"taskProgress\\\" style=\\\"width:(#=obj.progress>100?100:obj.progress#)%; background-color:(#=obj.progress>100?'red':'rgb(153,255,51);'#);\\\"></div>\\r\\n <div class=\\\"milestone (#=obj.startIsMilestone?'active':''#)\\\" ></div>\\r\\n\\r\\n <div class=\\\"taskLabel\\\"></div>\\r\\n <div class=\\\"milestone end (#=obj.endIsMilestone?'active':''#)\\\" ></div>\\r\\n </div>\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"CHANGE_STATUS\\\"><!--\\r\\n <div class=\\\"taskStatusBox\\\">\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_ACTIVE\\\" title=\\\"Active\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_DONE\\\" title=\\\"Completed\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_FAILED\\\" title=\\\"Failed\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_SUSPENDED\\\" title=\\\"Suspended\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_WAITING\\\" title=\\\"Waiting\\\" style=\\\"display: none;\\\"></div>\\r\\n <div class=\\\"taskStatus cvcColorSquare\\\" status=\\\"STATUS_UNDEFINED\\\" title=\\\"Undefined\\\"></div>\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"TASK_EDITOR\\\"><!--\\r\\n <div class=\\\"ganttTaskEditor\\\">\\r\\n <h2 class=\\\"taskData\\\">Task editor</h2>\\r\\n <table cellspacing=\\\"1\\\" cellpadding=\\\"5\\\" width=\\\"100%\\\" class=\\\"taskData table\\\" border=\\\"0\\\">\\r\\n <tr>\\r\\n <td width=\\\"200\\\" style=\\\"height: 80px\\\" valign=\\\"top\\\">\\r\\n <label for=\\\"code\\\">code/short name</label><br>\\r\\n <input type=\\\"text\\\" name=\\\"code\\\" id=\\\"code\\\" value=\\\"\\\" size=15 class=\\\"formElements\\\" autocomplete='off' maxlength=255 style='width:100%' oldvalue=\\\"1\\\">\\r\\n </td>\\r\\n <td colspan=\\\"3\\\" valign=\\\"top\\\"><label for=\\\"name\\\" class=\\\"required\\\">name</label><br><input type=\\\"text\\\" name=\\\"name\\\" id=\\\"name\\\"class=\\\"formElements\\\" autocomplete='off' maxlength=255 style='width:100%' value=\\\"\\\" required=\\\"true\\\" oldvalue=\\\"1\\\"></td>\\r\\n </tr>\\r\\n\\r\\n\\r\\n <tr class=\\\"dateRow\\\">\\r\\n <td nowrap=\\\"\\\">\\r\\n <div style=\\\"position:relative\\\">\\r\\n <label for=\\\"start\\\">start</label>    \\r\\n <input type=\\\"checkbox\\\" id=\\\"startIsMilestone\\\" name=\\\"startIsMilestone\\\" value=\\\"yes\\\">  <label for=\\\"startIsMilestone\\\">is milestone</label> \\r\\n <br><input type=\\\"text\\\" name=\\\"start\\\" id=\\\"start\\\" size=\\\"8\\\" class=\\\"formElements dateField validated date\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"DATE\\\">\\r\\n <span title=\\\"calendar\\\" id=\\\"starts_inputDate\\\" class=\\\"teamworkIcon openCalendar\\\" onclick=\\\"$(this).dateField({inputField:$(this).prevAll(':input:first'),isSearchField:false});\\\">m</span> </div>\\r\\n </td>\\r\\n <td nowrap=\\\"\\\">\\r\\n <label for=\\\"end\\\">End</label>    \\r\\n <input type=\\\"checkbox\\\" id=\\\"endIsMilestone\\\" name=\\\"endIsMilestone\\\" value=\\\"yes\\\">  <label for=\\\"endIsMilestone\\\">is milestone</label> \\r\\n <br><input type=\\\"text\\\" name=\\\"end\\\" id=\\\"end\\\" size=\\\"8\\\" class=\\\"formElements dateField validated date\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"DATE\\\">\\r\\n <span title=\\\"calendar\\\" id=\\\"ends_inputDate\\\" class=\\\"teamworkIcon openCalendar\\\" onclick=\\\"$(this).dateField({inputField:$(this).prevAll(':input:first'),isSearchField:false});\\\">m</span>\\r\\n </td>\\r\\n <td nowrap=\\\"\\\" >\\r\\n <label for=\\\"duration\\\" class=\\\" \\\">Days</label><br>\\r\\n <input type=\\\"text\\\" name=\\\"duration\\\" id=\\\"duration\\\" size=\\\"4\\\" class=\\\"formElements validated durationdays\\\" title=\\\"Duration is in working days.\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"DURATIONDAYS\\\"> \\r\\n </td>\\r\\n </tr>\\r\\n\\r\\n <tr>\\r\\n <td colspan=\\\"2\\\">\\r\\n <label for=\\\"status\\\" class=\\\" \\\">status</label><br>\\r\\n <select id=\\\"status\\\" name=\\\"status\\\" class=\\\"taskStatus\\\" status=\\\"(#=obj.status#)\\\" onchange=\\\"$(this).attr('STATUS',$(this).val());\\\">\\r\\n <option value=\\\"STATUS_ACTIVE\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_ACTIVE\\\" >active</option>\\r\\n <option value=\\\"STATUS_WAITING\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_WAITING\\\" >suspended</option>\\r\\n <option value=\\\"STATUS_SUSPENDED\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_SUSPENDED\\\" >suspended</option>\\r\\n <option value=\\\"STATUS_DONE\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_DONE\\\" >completed</option>\\r\\n <option value=\\\"STATUS_FAILED\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_FAILED\\\" >failed</option>\\r\\n <option value=\\\"STATUS_UNDEFINED\\\" class=\\\"taskStatus\\\" status=\\\"STATUS_UNDEFINED\\\" >undefined</option>\\r\\n </select>\\r\\n </td>\\r\\n\\r\\n <td valign=\\\"top\\\" nowrap>\\r\\n <label>progress</label><br>\\r\\n <input type=\\\"text\\\" name=\\\"progress\\\" id=\\\"progress\\\" size=\\\"7\\\" class=\\\"formElements validated percentile\\\" autocomplete=\\\"off\\\" maxlength=\\\"255\\\" value=\\\"\\\" oldvalue=\\\"1\\\" entrytype=\\\"PERCENTILE\\\">\\r\\n </td>\\r\\n </tr>\\r\\n\\r\\n </tr>\\r\\n <tr>\\r\\n <td colspan=\\\"4\\\">\\r\\n <label for=\\\"description\\\">Description</label><br>\\r\\n <textarea rows=\\\"3\\\" cols=\\\"30\\\" id=\\\"description\\\" name=\\\"description\\\" class=\\\"formElements\\\" style=\\\"width:100%\\\"></textarea>\\r\\n </td>\\r\\n </tr>\\r\\n </table>\\r\\n\\r\\n <h2>Assignments</h2>\\r\\n <table cellspacing=\\\"1\\\" cellpadding=\\\"0\\\" width=\\\"100%\\\" id=\\\"assigsTable\\\">\\r\\n <tr>\\r\\n <th style=\\\"width:100px;\\\">name</th>\\r\\n <th style=\\\"width:70px;\\\">Role</th>\\r\\n <th style=\\\"width:30px;\\\">est.wklg.</th>\\r\\n <th style=\\\"width:30px;\\\" id=\\\"addAssig\\\"><span class=\\\"teamworkIcon\\\" style=\\\"cursor: pointer\\\">+</span></th>\\r\\n </tr>\\r\\n </table>\\r\\n\\r\\n <div style=\\\"text-align: right; padding-top: 20px\\\">\\r\\n <span id=\\\"saveButton\\\" class=\\\"button first\\\" onClick=\\\"$(this).trigger('saveFullEditor.gantt');\\\">Save</span>\\r\\n </div>\\r\\n\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"ASSIGNMENT_ROW\\\"><!--\\r\\n <tr taskId=\\\"(#=obj.task.id#)\\\" assId=\\\"(#=obj.assig.id#)\\\" class=\\\"assigEditRow\\\" >\\r\\n <td ><select name=\\\"resourceId\\\" class=\\\"formElements\\\" (#=obj.assig.id.indexOf(\\\"tmp_\\\")==0?\\\"\\\":\\\"disabled\\\"#) ></select></td>\\r\\n <td ><select type=\\\"select\\\" name=\\\"roleId\\\" class=\\\"formElements\\\"></select></td>\\r\\n <td ><input type=\\\"text\\\" name=\\\"effort\\\" value=\\\"(#=obj.getMillisInHoursMinutes(obj.assig.effort)#)\\\" size=\\\"5\\\" class=\\\"formElements\\\"></td>\\r\\n <td align=\\\"center\\\"><span class=\\\"teamworkIcon delAssig del\\\" style=\\\"cursor: pointer\\\">d</span></td>\\r\\n </tr>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"RESOURCE_EDITOR\\\"><!--\\r\\n <div class=\\\"resourceEditor\\\" style=\\\"padding: 5px;\\\">\\r\\n\\r\\n <h2>Project team</h2>\\r\\n <table cellspacing=\\\"1\\\" cellpadding=\\\"0\\\" width=\\\"100%\\\" id=\\\"resourcesTable\\\">\\r\\n <tr>\\r\\n <th style=\\\"width:100px;\\\">name</th>\\r\\n <th style=\\\"width:30px;\\\" id=\\\"addResource\\\"><span class=\\\"teamworkIcon\\\" style=\\\"cursor: pointer\\\">+</span></th>\\r\\n </tr>\\r\\n </table>\\r\\n\\r\\n <div style=\\\"text-align: right; padding-top: 20px\\\"><button id=\\\"resSaveButton\\\" class=\\\"button big\\\">Save</button></div>\\r\\n </div>\\r\\n --></div> <div class=\\\"__template__\\\" type=\\\"RESOURCE_ROW\\\"><!--\\r\\n <tr resId=\\\"(#=obj.id#)\\\" class=\\\"resRow\\\" >\\r\\n <td ><input type=\\\"text\\\" name=\\\"name\\\" value=\\\"(#=obj.name#)\\\" style=\\\"width:100%;\\\" class=\\\"formElements\\\"></td>\\r\\n <td align=\\\"center\\\"><span class=\\\"teamworkIcon delRes del\\\" style=\\\"cursor: pointer\\\">d</span></td>\\r\\n </tr>\\r\\n --></div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {DEFAULT_ICONS, FIELD_TYPES, RenderModes, TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {ComplexControl} from \"../ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"../ComplexControl/Models/RequiredFieldModel\";\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport {GanttChartComponent} from 'Core/Components/Controls/GanttChart/GanttChartComponent';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\n\r\nimport GanttChartConfig from 'Core/Controls/GanttChart/Configs/gantt-chart-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/GanttChart/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/GanttChart/Templates/ToolBar.html';\r\nimport { SubjectEntity } from '../FormDesigner/ToolBar/EntityToolBar/SubjectEntity';\r\n\r\nko.templates['Core/Controls/GanttChart/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/GanttChart/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/GanttChart/Templates/View'] = ViewTemplate;\r\n\r\nexport class GanttChart extends ComplexControl {\r\n private _ganttChartViewName: string;\r\n private _resourcesViewName: string;\r\n\r\n private _component: KnockoutObservable<GanttChartComponent>;\r\n private _initialValue: IControlValue;\r\n private _componentRendered: boolean;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, GanttChartConfig);\r\n\r\n this._component = ko.observable(null);\r\n\r\n this.Init();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._initialValue = value;\r\n\r\n if (this._componentRendered) {\r\n this._component().Refresh({\r\n SourceTable: this._ganttChartViewName,\r\n ResourcesTable: this._resourcesViewName,\r\n RootId: this._initialValue.SubjectRecordId,\r\n SubjectEntityId: this._initialValue.SubjectEntityId\r\n });\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init() { \r\n this.InitRuntime();\r\n this.InitDesignTime();\r\n }\r\n\r\n private InitRuntime() {\r\n if (!this.IsRunTime) {\r\n return;\r\n }\r\n this._ganttChartViewName = this.FieldModel.EntityName;\r\n this._resourcesViewName = _.find(this.Model.Fields, f => f.EntityId !== this.FieldModel.EntityId).EntityName;\r\n\r\n const defaultScale: IPropertyOption | undefined = this.GeneralProperties.GetPropertyValue('DefaultScale');\r\n\r\n this._component(new GanttChartComponent({ defaultScale: defaultScale && defaultScale.Value }));\r\n\r\n this._component().On('RENDERED', this, () => {\r\n this._componentRendered = true;\r\n\r\n if (this._initialValue) {\r\n this._component().Refresh({\r\n SourceTable: this._ganttChartViewName,\r\n ResourcesTable: this._resourcesViewName,\r\n RootId: this._initialValue.SubjectRecordId,\r\n SubjectEntityId: this._initialValue.SubjectEntityId\r\n });\r\n }\r\n });\r\n }\r\n\r\n private InitDesignTime() {\r\n if(!this.IsDesignTime){\r\n return;\r\n }\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Agenda));\r\n this._requiredFields([\r\n new RequiredFieldModel('LEVEL0_ENTITY', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_ID', FIELD_TYPES.Integer, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_NAME', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_STARTING', FIELD_TYPES.DateTime, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_ENDING', FIELD_TYPES.DateTime, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_COMPLETENESS', FIELD_TYPES.Decimal, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_DEPENDENCIES', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_ENTITY', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_ID', FIELD_TYPES.Integer, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_NAME', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('LEVEL0_RESOURCE_EFFORT', FIELD_TYPES.Decimal, TABLE_TYPES.Sub, null),\r\n ]);\r\n this.InitRequiredFields();\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-bar-chart\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko with: _component--> <!--ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)}--><!--/ko--> <!--/ko-->\";\n// Exports\nexport default code;","import * as _ from'underscore';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LinkListRelationsModel} from 'Core/Controls/LinkList/Models/LinklistRelationsModel';\r\n\r\ninterface IGetAddressDto {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tControlId: number;\r\n}\r\n\r\nexport class MapsStore {\r\n\tpublic static GetAddress(params: IGetAddressDto): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/MapsApi/GetAddress',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest\r\n\t\t.Send(requestParams)\r\n\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tpublic static CheckGoogleMapsKey(key: string): P.Promise<boolean> {\r\n\t\tvar deferredResult = P.defer<boolean>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/MapsApi/CheckKey',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: { key : key }\r\n\t\t};\r\n\r\n\t\tRequest\r\n\t\t.Send(requestParams)\r\n\t\t.then(data => {\r\n\t\t\t deferredResult.resolve(data);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView maps-control form-standart-control\\\"> <!-- ko if: $data._address --> <iframe data-bind=\\\"attr: { src: $data._query}\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" height=\\\"100\\\" class=\\\"iframe-element\\\"></iframe> <!-- /ko --> <!-- ko if: $data._keyIsNotValidMessage --> <!-- ko text: $data._keyIsNotValidMessage --><!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { MapsStore } from './Stores/MapsStore';\r\n\r\nimport ViewTemplate from 'Core/Controls/Maps/Templates/View.html'\r\nimport DesignTemplate from 'Core/Controls/Maps/Templates/Design.html'\r\nimport ToolbarTemplate from 'Core/Controls/Maps/Templates/ToolBar.html'\r\nimport HelpViewTemplate from 'Core/Controls/Maps/Templates/HelpView.html'\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { NOTIFICATIONS } from '../Grid/BaseGrid/Index';\r\n\r\nko.templates['Core/Controls/Maps/Templates/ToolBar'] = ToolbarTemplate;\r\nko.templates['Core/Controls/Maps/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Maps/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Maps/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Maps/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class Maps extends BaseControl {\r\n\tprivate _query: KnockoutComputed<string>;\r\n\tprivate _keyIsNotValidMessage: KnockoutObservable<string>;\r\n\tprivate _address: KnockoutObservable<string>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis._address = ko.observable('');\r\n\t\tthis._keyIsNotValidMessage = ko.observable('');\r\n\t\tthis._query = ko.computed(()=> `https://www.google.com/maps/embed/v1/place?q=${this._address()}&key=${GlobalManager.Instance.GetGlobal(GLOBALS.GOOGLE_MAPS_API_KEY)}`);\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tprivate LoadData(){\r\n\r\n\t\tMapsStore.CheckGoogleMapsKey(GlobalManager.Instance.GetGlobal(GLOBALS.GOOGLE_MAPS_API_KEY))\r\n\t\t.then((data)=>{\r\n\t\t\tif(data){\r\n\t\t\t\tMapsStore.GetAddress(\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tSubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\t\t\tSubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n\t\t\t\t\t\tControlId : this.GetControlId()\r\n\t\t\t\t\t}).then((data)=> this._address(data));\t\t\r\n\t\t\t}else{\r\n\t\t\t\tthis._keyIsNotValidMessage(NOTIFICATIONS.GOOGLE_KEY_IS_NOT_VALID);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n ApplyProperties() {\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-map-marker\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-map-marker\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp subFormControl\\\" id=\\\"addButton\\\" data-bind=\\\"style: _style\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> <span data-bind=\\\"text: _labels.ADD\\\"></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport ViewTemplate from 'Core/Controls/PortletSpace/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/PortletSpace/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/PortletSpace/Templates/Design.html';\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nko.templates['Core/Controls/PortletSpace/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/PortletSpace/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/PortletSpace/Templates/Design'] = DesignTemplate;\r\n\r\nexport class PortletSpace extends BaseControl {\r\n\tprivate _portletSpaceManager: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\r\n\t\tthis._portletSpaceManager = ko.observable(null);\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tAfterRender(container: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(container);\r\n\r\n\t\tif (this._renderMode() === RenderModes.View) {\r\n\t\t\tconst portletSpaceManagerModule = require('Core/Portlets/Managers/Runtime/PortletSpaceManager');\r\n\r\n\t\t\tconst screen = this.GetForm().GetScreen();\r\n\t\t\tconst portletSpaceManager = new portletSpaceManagerModule.PortletSpaceManager({\r\n\t\t\t\tSubject: screen.IsDashboard ? null : {\r\n\t\t\t\t\tEntityId: screen.GetEntityId(),\r\n\t\t\t\t\tRecordId: screen.GetRecordId()\r\n\t\t\t\t},\r\n\t\t\t\tControl: {\r\n\t\t\t\t\tId: this._model().Id\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tportletSpaceManager.Load();\r\n\r\n\t\t\tthis._portletSpaceManager(portletSpaceManager);\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _portletSpaceManager --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-columns\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-columns\\\"></i> <!--ko text: Label--><!--/ko--> </label> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {URL} from \"Core/Common/Url\";\r\nimport {ConfigureBulkEmailDto} from \"./Models/ConfigureBulkEmailDto\";\r\nimport {CreateNewGroupDto} from \"./Models/CreateNewGroupDto\";\r\n\r\nexport class BulkEmailStore {\r\n\tstatic GetConfig(subjectTableId: number, subjectRecordId: number, templateTableId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: URL.BULK_EMAIL.GET_CONFIG,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t},\r\n\t\t\tparams: {groupTableId: subjectTableId, groupId: subjectRecordId, templateTableId: templateTableId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetTemplates(entityId: number, templateTableId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: URL.BULK_EMAIL.GET_TEMPLATES,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {groupTableId: entityId, templateTableId: templateTableId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic Start(subjectTableId: number, subjectRecordId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.START,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {GroupTableId: subjectTableId, GroupId: subjectRecordId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic Stop(subjectTableId: number, subjectRecordId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.STOP,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {GroupTableId: subjectTableId, GroupId: subjectRecordId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic ConfigureBulkEmails(sendModel: ConfigureBulkEmailDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.CONFIGURE_BULK_EMAILS,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: sendModel\r\n\t\t});\r\n\t}\r\n\r\n\tstatic CreateNewGroup(createModel: CreateNewGroupDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\turl: URL.BULK_EMAIL.CREATE_NEW_GROUP,\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: createModel\r\n\t\t});\r\n\t}\r\n}","export class ConfigureBulkEmailDto {\r\n\r\n\tconstructor(public GroupTableId: number,\r\n\t\t\t\tpublic GroupId: number,\r\n\t\t\t\tpublic MailFieldId: number,\r\n\t\t\t\tpublic TemplateId: number,\r\n\t\t\t\tpublic RequestTemplateId: number,\r\n\t\t\t\tpublic TemplateEntityId: number) {\r\n\t}\r\n}","export class CreateNewGroupDto {\r\n\r\n\tconstructor(public GroupTableId: number,\r\n\t\t\t\tpublic GroupId: number,\r\n\t\t\t\tpublic TemplateId: number) {\r\n\r\n\t}\r\n}","import {BulkEmailEntity} from \"./BulkEmailEntity\";\r\nimport {BulkEmailTemplate} from './BulkEmailTemplate';\r\n\r\nexport class BulkEmailConfig {\r\n\tMailFieldId: number;\r\n\tTemplateId: number;\r\n\tRequestTemplateId: number;\r\n\tProcessStatusId: number;\r\n\tTemplateEntityId: number;\r\n\tRegistered: boolean;\r\n\tRunning: boolean;\r\n\r\n\tSubjects: BulkEmailEntity[];\r\n\tTemplates: BulkEmailTemplate[];\r\n}","export class BulkEmailEntity {\r\n\tFields: BulkEmailField[];\r\n\r\n\tconstructor(public Id: number, public Name: string) {\r\n\t\tthis.Fields = [];\r\n\t}\r\n}\r\n\r\nexport class BulkEmailField {\r\n\tconstructor(public Id: number, public Name: string) {\r\n\t}\r\n}","export class BulkEmailTemplate {\r\n\tconstructor(public Id: number, public Name: string) {\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-envelope\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"bulk-email-control\\\" data-bind=\\\"click: $data.ShowBulkEmailHelp.bind($data)\\\"> <fieldset> <legend data-bind=\\\"text: _headerLabel\\\"></legend> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.RECIPIENTS --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _bulkEntities, optionsText: 'Name', value: _selectedBulkEmailEntity\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.ADDRESS_FIELD --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _bulkFields, optionsText: 'Name', value: _selectedBulkEmailField\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.MAILING_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _templates, optionsText: 'Name', value: _selectedTemplate\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.REQUEST_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control\\\" data-bind=\\\"options: _templates, optionsText: 'Name', value: _selectedRequestTemplate\\\"></select> </div> <button class=\\\"btn btn-info\\\" data-bind=\\\"attr: {disabled: !_enabled()}, css: {disabled: !_enabled()}, click: $data.OnCopyClick.bind($data)\\\"> <i class=\\\"fa fa-files-o\\\"></i> <!-- ko text: _labels.COPY --><!-- /ko --> </button> <button class=\\\"btn btn-primary\\\" data-bind=\\\"attr: {disabled: !_enabled()}, css: {disabled: !_enabled()}, click: $data.OnConfigureClick.bind($data)\\\"> <i class=\\\"fa fa-cog\\\"></i> <!-- ko text: _labels.CONFIGURE --><!-- /ko --> </button> <button class=\\\"btn\\\" data-bind=\\\"attr: {disabled: !_enabled() || !_registered()}, css: {disabled: !_enabled() || !_registered(), 'btn-success': !_running(), 'btn-danger': _running()}, click: $data.OnRunningToggle.bind($data)\\\"> <span data-bind=\\\"if: _running\\\"> <i class=\\\"fa fa-stop\\\"></i> <!-- ko text: _labels.STOP--><!-- /ko --> </span> <span data-bind=\\\"ifnot: _running\\\"> <i class=\\\"fa fa-play\\\"></i> <!-- ko text: _labels.START--><!-- /ko --> </span> </button> </fieldset> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {SelectDialog, EVENTS as SELECT_DIALOG_EVENTS} from \"Core/Components/Dialogs/SelectDialog/SelectDialog\";\r\n\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\n\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport {FIELD_TYPES, TABLE_TYPES, DEFAULT_ICONS, RenderModes} from \"Core/Constant\";\r\n\r\nimport {BulkEmailStore} from \"./Store/BulkEmailStore\";\r\nimport {BulkEmailConfigDto} from \"./Store/Models/BulkEmailConfigDto\";\r\nimport {BulkEmailTemplateDto} from \"./Store/Models/BulkEmailTemplateDto\";\r\nimport {ConfigureBulkEmailDto} from \"./Store/Models/ConfigureBulkEmailDto\";\r\nimport {CreateNewGroupDto} from \"./Store/Models/CreateNewGroupDto\";\r\nimport {NewGroupDto} from \"./Store/Models/NewGroupDto\";\r\n\r\nimport {BulkEmailConfig} from \"./Models/BulkEmailConfig\";\r\nimport {BulkEmailEntity, BulkEmailField} from \"Core/Controls/BulkEmail/Models/BulkEmailEntity\";\r\nimport {BulkEmailTemplate} from \"Core/Controls/BulkEmail/Models/BulkEmailTemplate\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport ToolBarTemplate from 'Core/Controls/BulkEmail/Templates/ToolBar.html';\r\nimport HelpViewTemplate from 'Core/Controls/BulkEmail/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/BulkEmail/Templates/View.html';\r\nimport {LockManager} from \"../../Components/Locker/LockManager\";\r\n\r\nko.templates['Core/Controls/BulkEmail/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/BulkEmail/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nexport class BulkEmail extends ComplexControl {\r\n private _subjectEntityId: number;\r\n private _subjectRecordId: number;\r\n private _headerLabel: KnockoutObservable<string>;\r\n private _bulkEntities: KnockoutObservableArray<BulkEmailEntity>;\r\n private _selectedBulkEmailEntity: KnockoutObservable<BulkEmailEntity>;\r\n\r\n private _bulkFields: KnockoutObservableArray<BulkEmailField>;\r\n private _selectedBulkEmailField: KnockoutObservable<BulkEmailField>;\r\n\r\n private _templates: KnockoutObservableArray<BulkEmailTemplate>;\r\n private _selectedTemplate: KnockoutObservable<BulkEmailTemplate>;\r\n private _selectedRequestTemplate: KnockoutObservable<BulkEmailTemplate>;\r\n\r\n private _registered: KnockoutObservable<boolean>;\r\n private _running: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._headerLabel = ko.observable(this._labels.BULK_EMAIL);\r\n this._bulkEntities = ko.observableArray([]);\r\n this._selectedBulkEmailEntity = ko.observable(null);\r\n\r\n this._bulkFields = ko.observableArray([]);\r\n this._selectedBulkEmailField = ko.observable(null);\r\n\r\n this._templates = ko.observableArray([]);\r\n this._selectedTemplate = ko.observable(null);\r\n this._selectedRequestTemplate = ko.observable(null);\r\n\r\n this._registered = ko.observable(false);\r\n this._running = ko.observable(false);\r\n\r\n this.Init();\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n this.BindDesignEvents();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._subjectEntityId = value.SubjectEntityId;\r\n this._subjectRecordId = value.SubjectRecordId;\r\n\r\n if (this._subjectRecordId) {\r\n this.GetConfig()\r\n .then(config => {\r\n if (config.Registered) {\r\n this.PrepareExistingConfiguration(config);\r\n } else {\r\n this.PrepareNewConfiguration(config);\r\n }\r\n\r\n this.BindRuntimeEvents();\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n }\r\n\r\n private Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.BulkMail));\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('TEMPLATE', FIELD_TYPES.Document, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n this.RefreshHeaderLabel();\r\n }\r\n\r\n private BindDesignEvents() {\r\n this._model.subscribe(() => {\r\n this.RefreshHeaderLabel();\r\n });\r\n }\r\n\r\n private BindRuntimeEvents() {\r\n this._selectedBulkEmailEntity.subscribe(entity => {\r\n if (entity) {\r\n this._bulkFields(entity.Fields);\r\n this._selectedBulkEmailField(entity.Fields[0]);\r\n\r\n this.GetTemplates(entity.Id).then(templates => {\r\n this._templates(templates);\r\n this._selectedTemplate(templates[0]);\r\n this._selectedRequestTemplate(templates[0]);\r\n });\r\n }\r\n });\r\n }\r\n\r\n private RefreshHeaderLabel() {\r\n this._headerLabel(this.Name);\r\n }\r\n\r\n private GetConfig() {\r\n const deferred = P.defer<BulkEmailConfig>();\r\n\r\n const templateTableId = this.GetFieldModel().EntityId;\r\n BulkEmailStore.GetConfig(this._subjectEntityId, this._subjectRecordId, templateTableId)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(this.MapToConfig(result.ResultObject));\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetTemplates(entityId: number) {\r\n const templateTableId = this.GetFieldModel().EntityId;\r\n\r\n if (!templateTableId) {\r\n new Notifier().Warning(NOTIFICATIONS.TABLE_IS_NOT_SELECTED);\r\n return;\r\n }\r\n\r\n const deferred = P.defer<BulkEmailTemplate[]>();\r\n BulkEmailStore.GetTemplates(entityId, templateTableId)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n const templates = this.MapToTemplates(result.ResultObject);\r\n this._enabled(templates.length > 0);\r\n deferred.resolve(templates);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private MapToConfig(configDto: BulkEmailConfigDto) {\r\n const config = new BulkEmailConfig();\r\n\r\n config.MailFieldId = configDto.MailFieldId;\r\n config.TemplateId = configDto.TemplateId;\r\n config.RequestTemplateId = configDto.RequestTemplateId;\r\n config.ProcessStatusId = configDto.ProcessStatusId;\r\n config.TemplateEntityId = configDto.TemplateEntityId;\r\n config.Running = configDto.Running;\r\n config.Registered = configDto.Registered;\r\n\r\n config.Subjects = configDto.Subjects.map(entityDto => {\r\n const entity = new BulkEmailEntity(entityDto.Id, entityDto.TranslatedName || entityDto.Name);\r\n entity.Fields = entityDto.Fields && entityDto.Fields.map(fieldDto => new BulkEmailField(fieldDto.Id, fieldDto.TranslatedName || fieldDto.Name));\r\n return entity;\r\n });\r\n\r\n config.Templates = this.MapToTemplates(configDto.Templates);\r\n\r\n return config;\r\n }\r\n\r\n private MapToTemplates(templatesDto: BulkEmailTemplateDto[]) {\r\n return templatesDto.map(template => new BulkEmailTemplate(template.Id, template.TranslatedName || template.Name));\r\n }\r\n\r\n private PrepareNewConfiguration(config: BulkEmailConfig) {\r\n const currentEntity = config.Subjects[0];\r\n const currentField = currentEntity && currentEntity.Fields[0];\r\n const currentTemplate = config.Templates[0];\r\n const currentRequestTemplate = config.Templates[0];\r\n\r\n this._bulkEntities(config.Subjects);\r\n this._selectedBulkEmailEntity(currentEntity);\r\n\r\n this._bulkFields(currentEntity && currentEntity.Fields);\r\n this._selectedBulkEmailField(currentField);\r\n\r\n this._templates(config.Templates);\r\n this._selectedTemplate(currentTemplate);\r\n this._selectedRequestTemplate(currentRequestTemplate);\r\n\r\n this._registered(false);\r\n this._running(false);\r\n\r\n const enabled = !!(currentEntity && currentField && currentTemplate && currentRequestTemplate);\r\n this._enabled(enabled);\r\n }\r\n\r\n\r\n private PrepareExistingConfiguration(config: BulkEmailConfig) {\r\n const currentEntity = _.find(config.Subjects, subject => _.any(subject.Fields, field => field.Id === config.MailFieldId));\r\n const currentField = _.find(currentEntity.Fields, field => field.Id === config.MailFieldId);\r\n const currentTemplate = _.find(config.Templates, template => template.Id === config.TemplateId);\r\n const currentRequestTemplate = _.find(config.Templates, template => template.Id === config.RequestTemplateId);\r\n\r\n this._bulkEntities(config.Subjects);\r\n this._selectedBulkEmailEntity(currentEntity);\r\n\r\n this._bulkFields(currentEntity.Fields);\r\n this._selectedBulkEmailField(currentField);\r\n\r\n this._templates(config.Templates);\r\n this._selectedTemplate(currentTemplate);\r\n this._selectedRequestTemplate(currentRequestTemplate);\r\n\r\n this._registered(true);\r\n this._running(config.Running);\r\n\r\n const enabled = !!(currentEntity && currentField && currentTemplate && currentRequestTemplate);\r\n this._enabled(enabled);\r\n }\r\n\r\n private OnCopyClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n return;\r\n }\r\n\r\n const templates = this._templates().map(template => {\r\n return {\r\n Text: template.Name,\r\n Value: template.Id\r\n }\r\n });\r\n\r\n const dialog = new SelectDialog({\r\n Label: 'Select new template',\r\n Options: templates\r\n });\r\n\r\n dialog.On(SELECT_DIALOG_EVENTS.SAVE, this, eventArgs => this.CreateNewGroup(eventArgs.data.Value));\r\n\r\n dialog.Show();\r\n }\r\n\r\n private OnConfigureClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n return;\r\n }\r\n\r\n BlockUI.Block({Target: this._el});\r\n\r\n const mailFieldId = this._selectedBulkEmailField().Id;\r\n const templateId = this._selectedTemplate().Id;\r\n const requestTemplateId = this._selectedRequestTemplate().Id;\r\n const templateEntityId = this._selectedBulkEmailEntity().Id;\r\n\r\n const sendModel = new ConfigureBulkEmailDto(\r\n this._subjectEntityId,\r\n this._subjectRecordId,\r\n mailFieldId,\r\n templateId,\r\n requestTemplateId,\r\n templateEntityId\r\n );\r\n\r\n BulkEmailStore.ConfigureBulkEmails(sendModel)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier().Success(NOTIFICATIONS.MAILING_CONFIGURED);\r\n this._registered(true);\r\n } else {\r\n new Notifier().Failed(result.ErrorMessage);\r\n }\r\n })\r\n .always(() => BlockUI.Unblock(this._el));\r\n }\r\n\r\n private OnRunningToggle() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n return;\r\n }\r\n\r\n BlockUI.Block({Target: this._el});\r\n\r\n const promise = this._running()\r\n ? BulkEmailStore.Stop(this._subjectEntityId, this._subjectRecordId)\r\n : BulkEmailStore.Start(this._subjectEntityId, this._subjectRecordId);\r\n\r\n promise.then(result => {\r\n if (result.IsSuccessfull) {\r\n this._running(!this._running());\r\n } else {\r\n new Notifier().Failed(result.ErrorMessage);\r\n }\r\n }).always(() => BlockUI.Unblock(this._el));\r\n }\r\n\r\n private CreateNewGroup(templateId: number) {\r\n BlockUI.Block();\r\n\r\n const createGroupPromise = BulkEmailStore.CreateNewGroup(new CreateNewGroupDto(\r\n this._subjectEntityId,\r\n this._subjectRecordId,\r\n templateId)\r\n );\r\n\r\n createGroupPromise\r\n .then(result => {\r\n const showScreenPromise = P.defer<NewGroupDto>();\r\n\r\n if (!result.IsSuccessfull) {\r\n showScreenPromise.reject({message: result.ErrorMessage});\r\n } else {\r\n const group: NewGroupDto = result.ResultObject;\r\n LockManager.Instance.TryLock(group.EntityId, group.RecordId)\r\n .then(() => showScreenPromise.resolve(group))\r\n .fail(error => showScreenPromise.reject(error));\r\n }\r\n\r\n return showScreenPromise.promise();\r\n }\r\n )\r\n .then((group: NewGroupDto) => this.ShowEditScreen(group)\r\n .then(screen => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n return;\r\n }\r\n screen.ShowInModal();\r\n })) \r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowBulkEmailHelp(data, event): void {\r\n if (this._help.IsHelpButtonPressed()) {\r\n $(event.target).blur();\r\n this._help.ShowControlHelp(this);\r\n }\r\n }\r\n\r\n private async ShowEditScreen(group: NewGroupDto) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n return screenManager.GetEditScreen({\r\n EntityId: group.EntityId,\r\n RecordId: group.RecordId\r\n });\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"bulk-email-control\\\"> <fieldset> <legend><!-- ko text: _labels.BULK_EMAIL --><!-- /ko --></legend> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.RECIPIENTS --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.ADDRESS_FIELD --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.MAILING_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <div class=\\\"form-group\\\"> <label><!-- ko text: _labels.REQUEST_TEMPLATE --><!-- /ko --></label> <select class=\\\"form-control helpPageSelect\\\" disabled=\\\"disabled\\\"></select> </div> <button class=\\\"btn btn-info\\\"> <i class=\\\"fa fa-files-o\\\"></i> <!-- ko text: _labels.COPY --><!-- /ko --> </button> <button class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-cog\\\"></i> <!-- ko text: _labels.CONFIGURE --><!-- /ko --> </button> <button class=\\\"btn btn-success\\\"> <i class=\\\"fa fa-play\\\"></i> <!-- ko text: _labels.START--><!-- /ko --> </button> </fieldset> </div>\";\n// Exports\nexport default code;","export enum JournalsState {\r\n NotExist,\r\n Deleted,\r\n Disabled,\r\n Ok\r\n}","export enum AccountsState {\r\n NotExist,\r\n Deleted,\r\n Disabled,\r\n NotLinkedToJournals,\r\n Ok\r\n}","import {Request} from 'Core/Common/Request';\r\n\r\nimport {IConvertToInvoiceParams} from \"./Models/IConvertToInvoiceParams\";\r\n\r\nexport class InvoicingStore {\r\n\tstatic CreateInvoices(params: IConvertToInvoiceParams) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FinancialApi/CreateInvoices',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {FIELD_TYPES, TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport { RequiredFieldModel } from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport {IControlValue} from \"../BaseControl/BaseControl\";\r\n\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DEFAULT_ICONS} from \"Core/Constant\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport InvoicingConfigJson from \"Core/Controls/Invoicing/Configs/invoicing-config.json\"\r\n\r\nimport ToolBarTemplate from \"Core/Controls/Invoicing/Templates/Toolbar.html\";\r\nimport ViewTemplate from \"Core/Controls/Invoicing/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Invoicing/Templates/HelpView.html\";\r\nimport {InvoicingStore} from \"./Stores/InvoicingStore\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\n\r\nko.templates['Core/Controls/Invoicing/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Invoicing/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/Invoicing/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Invoicing/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class InvoicingControl extends ComplexControl {\r\n private _avalableForScreen: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, InvoicingConfigJson);\r\n\r\n this._avalableForScreen = ko.observable(false);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n if (!value.SubjectRecordId) return;\r\n\r\n const currentLifeStatus = value.RecordSpecsModel.LifeStatusInfo && value.RecordSpecsModel.LifeStatusInfo.Id;\r\n if (!currentLifeStatus) return;\r\n\r\n const validLifeStatus = this.GetModel().RecordLifeStatusId;\r\n\r\n if ((!validLifeStatus || currentLifeStatus === validLifeStatus) && !this.IsDisabledByCondition) {\r\n this._enabled(true);\r\n }\r\n }\r\n\r\n ConvertToInvoice() {\r\n if(this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n } else {\r\n const screen = this.GetForm().GetScreen();\r\n\r\n const entityId = screen.GetEntityId();\r\n const recordId = screen.GetRecordId();\r\n const controlId = this.GetModel().Id;\r\n\r\n BlockUI.Block();\r\n\r\n InvoicingStore.CreateInvoices({\r\n EntityId: entityId,\r\n RecordId: recordId,\r\n ControlId: controlId\r\n })\r\n .then(() => {\r\n this._enabled(!this.GetModel().RecordLifeStatusId);\r\n const attachedField = _.find(this.GetModel().Fields,\r\n (field: AttachedFieldModel) => field.EntityTypeName === TABLE_TYPES.Entity);\r\n const entityName = attachedField ? attachedField.EntityNameTranslation : '';\r\n\r\n new Notifier().Success(this._labels.RECORD_FOR_TABLE_CREATED.replace('{table}', entityName));\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n private Init(): void {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Invoicing));\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('DOCUMENT_DATE', FIELD_TYPES.Date, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n\r\n this._model.subscribe(() => this.ApplyProperties());\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n const availability = this.GeneralProperties.GetPropertyValue('Availability');\r\n if (availability.Value === 'OnScreen' || availability.Value === 'Both') {\r\n this._avalableForScreen(true);\r\n }\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-calculator\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _avalableForScreen --> <a class=\\\"btn btn-primary subFormControl btn-invoicing\\\" data-bind=\\\"tooltip: {content: Name}, css: {disabled: !_enabled()}, click: ConvertToInvoice, style: _style\\\"> <i class=\\\"fa fa-book\\\" aria-hidden=\\\"true\\\"></i> <span><!-- ko text: Name--><!-- /ko --></span> </a> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _avalableForScreen --> <a class=\\\"btn btn-primary subFormControl btn-invoicing\\\" data-bind=\\\"tooltip: {content: Name}, click: ConvertToInvoice, style: _style\\\"> <i class=\\\"fa fa-book\\\" aria-hidden=\\\"true\\\"></i> <span><!-- ko text: Name--><!-- /ko --></span> </a> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\nimport { SourceTableTypeViewModel } from \"./SourceTableTypeViewModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class SourceTableViewModel {\r\n\tExpanded: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic TranslatedName: string,\r\n\t\tpublic Icon: IconModel,\r\n\t\tpublic Types: SourceTableTypeViewModel[]) {\r\n\r\n\t\tthis.Expanded = ko.observable(true);\r\n\t}\r\n\r\n\tget TotalAmount() {\r\n\t\treturn this.Types.map(type => type.TotalAmount).reduce((sum, current) => sum + current, 0);\r\n\t}\r\n\r\n\tToggleExpansion() {\r\n\t\tthis.Expanded(!this.Expanded());\r\n\t}\r\n\r\n\tGetIconTemplate() {\r\n\t\tlet classes: string = this.Icon && this.Icon.IsImage ? 'height-20x20' : '';\r\n\t\treturn new Icon(this.Icon).GetIconTemplate(classes);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { InvoicingControlViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingControlViewModel';\r\n\r\nexport class SourceTableTypeViewModel {\r\n\tExpanded: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic Controls: InvoicingControlViewModel[]) {\r\n\r\n\t\tthis.Expanded = ko.observable(true);\r\n\t}\r\n\r\n\tget TotalAmount() {\r\n\t\treturn this.Controls.map(control => control.RecordsAmount).reduce((sum, current) => sum + current, 0);\r\n\t}\r\n\r\n\tToggleExpansion() {\r\n\t\tthis.Expanded(!this.Expanded());\r\n\t}\r\n}\r\n","export class InvoicingControlViewModel {\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic TableId: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic RecordsAmount: number) {\r\n\t}\r\n}","export class FinancialProcessorRunnerViewModel {\r\n\tconstructor(\r\n\t\tpublic Id: number,\r\n\t\tpublic Name: string,\r\n\t\tpublic RecordsAmount: number) { }\r\n}","export class InvoicingResultsViewModel {\r\n\tconstructor(public Results: InvoicingResultViewModel[]) {\r\n\r\n\t}\r\n}\r\n\r\nexport class InvoicingResultViewModel {\r\n\tconstructor(\r\n\t\tpublic RecordId: number,\r\n\t\tpublic RecordName: string,\r\n\t\tpublic Result: string,\r\n\t\tpublic IsSuccessfull: boolean) {\r\n\r\n\t}\r\n}","import {JournalsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState\";\r\nimport {AccountsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState\";\r\n\r\nimport {AccountsViewModel} from \"./AccountsViewModel\";\r\nimport {SubAdministrationViewModel} from \"./SubAdministrationViewModel\";\r\n\r\nexport class LedgerViewModel {\r\n\tconstructor(\r\n\t\tpublic Accounts: AccountsViewModel,\r\n public SubAdministrations: SubAdministrationViewModel[],\r\n public JournalsState: JournalsState,\r\n public AccountsState: AccountsState) {\r\n }\r\n\r\n get AccountsBtnEnabled() {\r\n return this.JournalsState=== JournalsState.Ok && this.AccountsState === AccountsState.Ok;\r\n }\r\n\r\n get AccountDisabledReason() {\r\n switch (this.JournalsState) {\r\n case JournalsState.Deleted:\r\n return 'JOURNALS table is deleted';\r\n\r\n case JournalsState.Disabled:\r\n return 'JOURNALS table is disabled';\r\n\r\n case JournalsState.NotExist:\r\n return 'JOURNALS table does not exist';\r\n }\r\n\r\n switch (this.AccountsState) {\r\n case AccountsState.Deleted:\r\n return 'ACCOUNTS table is deleted';\r\n\r\n case AccountsState.Disabled:\r\n return 'ACCOUNTS table is disabled';\r\n\r\n case AccountsState.NotExist:\r\n return 'ACCOUNTS table does not exist';\r\n\r\n case AccountsState.NotLinkedToJournals:\r\n return 'ACCOUNTS not linked to JOURNALS';\r\n }\r\n\r\n return 'Will be implemented soon';\r\n }\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class AccountsViewModel {\r\n constructor(\r\n public TableId: number,\r\n public Icon: IconModel) {\r\n }\r\n\r\n GetIconTemplate() {\r\n let classes: string = this.Icon && this.Icon.IsImage ? 'height-20x20' : '';\r\n return new Icon(this.Icon).GetIconTemplate(classes);\r\n }\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class SubAdministrationViewModel {\r\n constructor(\r\n public TableId: number,\r\n public Name: string,\r\n public Icon: IconModel) {\r\n }\r\n\r\n GetIconTemplate() {\r\n let classes: string = this.Icon && this.Icon.IsImage ? 'height-20x20' : '';\r\n return new Icon(this.Icon).GetIconTemplate(classes);\r\n }\r\n}","export class FinancialProcessorViewModel {\r\n constructor(public Id: number, public Name: string, public TypeId: number) {\r\n }\r\n}","import {JournalsState} from \"../Enums/JournalsState\";\r\nimport {AccountsState} from \"../Enums/AccountsState\";\r\n\r\nimport { SourceTableDtoModel } from \"../Models/Dto/Response/SourceTableDtoModel\";\r\nimport { SourceTableTypeDtoModel } from \"../Models/Dto/Response/SourceTableTypeDtoModel\";\r\nimport { InvoicingControlDtoModel } from \"../Models/Dto/Response/InvoicingControlDtoModel\";\r\nimport { InvoicingResultsDtoModel, InvoicingResultDtoModel } from \"../Models/Dto/Response/InvoicingResultsDtoModel\";\r\nimport { FinancialProcessorRunnerDtoModel } from \"../Models/Dto/Response/FinancialProcessorRunnerDtoModel\";\r\nimport {LedgerDtoModel} from \"../Models/Dto/Response/LedgerDtoModel\";\r\nimport {AccountsDtoModel} from \"../Models/Dto/Response/AccountsDtoModel\";\r\nimport {SubAdministrationDtoModel} from \"../Models/Dto/Response/SubAdministrationDtoModel\";\r\nimport {ReadyForProcessingDataDtoModel} from \"../Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {FinancialProcessorDtoModel} from \"../Models/Dto/Response/FinacialProcessorDtoModel\";\r\n\r\nimport { SourceTableViewModel } from \"../Models/View/SourceTableViewModel\";\r\nimport { SourceTableTypeViewModel } from \"../Models/View/SourceTableTypeViewModel\";\r\nimport { InvoicingControlViewModel } from \"../Models/View/InvoicingControlViewModel\";\r\nimport { FinancialProcessorRunnerViewModel } from \"../Models/View/FinancialProcessorRunnerViewModel\";\r\nimport { InvoicingResultsViewModel, InvoicingResultViewModel } from \"../Models/View/InvoicingResultsViewModel\";\r\nimport {LedgerViewModel} from \"../Models/View/LedgerViewModel\";\r\nimport {AccountsViewModel} from \"../Models/View/AccountsViewModel\";\r\nimport {SubAdministrationViewModel} from \"../Models/View/SubAdministrationViewModel\";\r\nimport {ReadyForProcessingDataViewModel} from \"../Models/View/ReadyForProcessingDataViewModel\";\r\nimport {ReadyForInvoicingDataDtoModel} from \"../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\nimport {ReadyForInvoicingDataViewModel} from \"../Models/View/ReadyForInvoicingDataViewModel\";\r\nimport {FinancialProcessorViewModel} from \"../Models/View/FinancialProcessorViewModel\";\r\n\r\nexport class FinancialDashboardMappingProfile {\r\n\tstatic MapToSourceTableViewModel(dtoModel: SourceTableDtoModel): SourceTableViewModel {\r\n\t\treturn new SourceTableViewModel(\r\n\t\t\tdtoModel.Id,\r\n\t\t\tdtoModel.Name,\r\n\t\t\tdtoModel.TranslatedName,\r\n\t\t\tdtoModel.Icon,\r\n\t\t\tdtoModel.Types.map(sourceTableType => this.MapToSourceTableTypeViewModel(sourceTableType, dtoModel.Id))\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToSourceTableTypeViewModel(dtoModel: SourceTableTypeDtoModel, tableId: number): SourceTableTypeViewModel {\r\n\t\treturn new SourceTableTypeViewModel(\r\n\t\t\tdtoModel.Id,\r\n\t\t\tdtoModel.Name,\r\n\t\t\tdtoModel.Controls.map(invoicingControl => this.MapToInvoicingControlViewModel(invoicingControl, tableId))\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToInvoicingControlViewModel(dtoModel: InvoicingControlDtoModel, tableId: number): InvoicingControlViewModel {\r\n\t\treturn new InvoicingControlViewModel(dtoModel.Id, tableId, dtoModel.Name, dtoModel.RecordsAmount);\r\n\t}\r\n\r\n\tstatic MapToFinancialProcessorRunner(dtoModel: FinancialProcessorRunnerDtoModel): FinancialProcessorRunnerViewModel {\r\n\t\treturn new FinancialProcessorRunnerViewModel(dtoModel.Id, dtoModel.Name, dtoModel.RecordsAmount);\r\n\t}\r\n\r\n\tstatic MapToLedgerViewModel(dtoModel: LedgerDtoModel, journalsState: JournalsState, accountsState: AccountsState): LedgerViewModel {\r\n\t\treturn new LedgerViewModel(\r\n\t\t\tthis.MapToAccountsViewModel(dtoModel.Accounts),\r\n\t\t\tdtoModel.SubAdministrations.map(subAdministration => this.MapToSubAdministrationViewModel(subAdministration)),\r\n\t\t\tjournalsState,\r\n\t\t\taccountsState\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToAccountsViewModel(dtoModel: AccountsDtoModel): AccountsViewModel {\r\n\t\treturn new AccountsViewModel(dtoModel.TableId, dtoModel.Icon);\r\n\t}\r\n\r\n\tstatic MapToSubAdministrationViewModel(dtoModel: SubAdministrationDtoModel): SubAdministrationViewModel {\r\n\t\treturn new SubAdministrationViewModel(dtoModel.TableId, dtoModel.Name, dtoModel.Icon);\r\n\t}\r\n\r\n\tstatic MapToInvoicingResultsViewModel(dtoModel: InvoicingResultsDtoModel): InvoicingResultsViewModel {\r\n\t\treturn new InvoicingResultsViewModel(\r\n\t\t\tdtoModel.Results.map(invoicingResult => this.MapToInvoicingResultViewModel(invoicingResult))\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToInvoicingResultViewModel(dtoModel: InvoicingResultDtoModel): InvoicingResultViewModel {\r\n\t\treturn new InvoicingResultViewModel(\r\n\t\t\tdtoModel.RecordId,\r\n\t\t\tdtoModel.RecordName,\r\n\t\t\tdtoModel.Result,\r\n\t\t\tdtoModel.IsSuccessfull\r\n\t\t);\r\n\t}\r\n\r\n\tstatic MapToReadyForInvoicingData(dtoModel: ReadyForInvoicingDataDtoModel): ReadyForInvoicingDataViewModel {\r\n\t\treturn dtoModel;\r\n\t}\r\n\r\n static MapToReadyForProcessingData(dtoModel: ReadyForProcessingDataDtoModel): ReadyForProcessingDataViewModel {\r\n return dtoModel;\r\n }\r\n\r\n static MapToFinancialProcessor(dtoModel: FinancialProcessorDtoModel) {\r\n\t\treturn new FinancialProcessorViewModel(dtoModel.Id, dtoModel.Name, dtoModel.TypeId);\r\n\t}\r\n}","import { Event } from 'Core/Common/Event';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport { IReadyForInvoicingParams } from './Params/IReadyForInvoicingParams';\r\n\r\nimport { IReadyForInvoicingEventData } from './Events/IReadyForInvoicingEventData';\r\n\r\nimport { SourceTableViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/SourceTableViewModel';\r\nimport { InvoicingControlViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingControlViewModel';\r\n\r\nimport { FinancialDashboardMappingProfile } from 'Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings';\r\n\r\nimport Template from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/Templates/Template.html';\r\nimport NoControlsTemplate from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicing/Templates/NoControlsTemplate.html';\r\n\r\nexport class ReadyForInvoicing extends Event {\r\n\tprivate _labels = LABELS;\r\n\r\n\tSourceTables: SourceTableViewModel[];\r\n\r\n\tconstructor(params: IReadyForInvoicingParams) {\r\n\t\tsuper();\r\n\r\n\t\tthis.Init(params)\r\n\t}\r\n\r\n\tprivate Init(params: IReadyForInvoicingParams) {\r\n\t\tthis.SourceTables = params.SourceTables.map(sourceTable => FinancialDashboardMappingProfile.MapToSourceTableViewModel(sourceTable));\r\n\t}\r\n\r\n\tOnInvoiceBtnClick(control: InvoicingControlViewModel) {\r\n\t\tconst eventData: IReadyForInvoicingEventData = { ControlId: control.Id, TableId: control.TableId };\r\n\t\tthis.Trigger('INVOICING_REQUESTED', eventData);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\tif (this.SourceTables.length === 0) {\r\n\t\t\treturn NoControlsTemplate;\r\n\t\t}\r\n\r\n\t\treturn Template;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"splash-message text-center\\\" data-bind=\\\"text: _labels.NO_CONTROLS_OF_TYPE_INVOICING\\\"></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko foreach: SourceTables --> <div class=\\\"portlet body-space box blue-hoki\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span> <!-- ko template: {html: $data.GetIconTemplate.bind($data)} --> <!-- /ko --> </span> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: TranslatedName ? TranslatedName : Name\\\"></span> <span class=\\\"badge\\\" data-bind=\\\"visible: !Expanded(), text: TotalAmount\\\"></span> </div> <div class=\\\"tools\\\"> <a class=\\\"collapse\\\" data-bind=\\\"click: ToggleExpansion\\\"></a> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko foreach: Types --> <div class=\\\"portlet box blue\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject\\\" data-bind=\\\"text: Name\\\"></span> <span class=\\\"badge\\\" data-bind=\\\"visible: !Expanded(), text: TotalAmount\\\"></span> </div> <div class=\\\"tools\\\"> <a class=\\\"collapse\\\" data-bind=\\\"click: ToggleExpansion\\\"></a> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko foreach: Controls --> <button class=\\\"btn btn-block blue portletItem\\\" data-bind=\\\"click: $parents[2].OnInvoiceBtnClick.bind($parents[2], $data)\\\"> <span class=\\\"textBox\\\"> <span data-bind=\\\"text: Name\\\"></span> </span> <span class=\\\"badge\\\" data-bind=\\\"text: RecordsAmount\\\"></span> </button> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IReadyForProcessingParams} from './Params/IReadyForProcessingParams';\r\n\r\nimport {ISendToFPEventData} from './Events/ISendToFPEventData';\r\n\r\nimport {JournalsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState\";\r\nimport {AccountsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState\";\r\n\r\nimport {FinancialProcessorRunnerViewModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/View/FinancialProcessorRunnerViewModel';\r\n\r\nimport {FinancialDashboardMappingProfile} from 'Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings';\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessing/Templates/Template.html';\r\n\r\nexport class ReadyForProcessing extends Event {\r\n private _labels = LABELS;\r\n\r\n Expanded: KnockoutObservable<boolean>;\r\n\r\n JournalsState: JournalsState;\r\n AccountsState: AccountsState;\r\n FinancialProcessorRunners: FinancialProcessorRunnerViewModel[];\r\n\r\n constructor(params: IReadyForProcessingParams) {\r\n super();\r\n\r\n this.Expanded = ko.observable(true);\r\n\r\n this.Init(params);\r\n }\r\n\r\n get IsAvailable() {\r\n return this.JournalsState === JournalsState.Ok && this.AccountsState === AccountsState.Ok;\r\n }\r\n\r\n get NotAvailableReason() {\r\n switch (this.JournalsState) {\r\n case JournalsState.Deleted:\r\n return 'JOURNALS table is deleted';\r\n\r\n case JournalsState.Disabled:\r\n return 'JOURNALS table is disabled';\r\n\r\n case JournalsState.NotExist:\r\n return 'JOURNALS table does not exist';\r\n }\r\n\r\n switch (this.AccountsState) {\r\n case AccountsState.Deleted:\r\n return 'ACCOUNTS table is deleted';\r\n\r\n case AccountsState.Disabled:\r\n return 'ACCOUNTS table is disabled';\r\n\r\n case AccountsState.NotExist:\r\n return 'ACCOUNTS table does not exist';\r\n\r\n case AccountsState.NotLinkedToJournals:\r\n return 'ACCOUNTS not linked to JOURNALS';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get TotalAmount() {\r\n return this.FinancialProcessorRunners.map(runner => runner.RecordsAmount).reduce((sum, current) => sum + current, 0);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ToggleExpansion() {\r\n this.Expanded(!this.Expanded());\r\n }\r\n\r\n private Init(params: IReadyForProcessingParams) {\r\n this.FinancialProcessorRunners = params.FinancialProcessorRunners.map(runner => FinancialDashboardMappingProfile.MapToFinancialProcessorRunner(runner));\r\n this.JournalsState = params.JournalsState;\r\n this.AccountsState = params.AccountsState;\r\n }\r\n\r\n OnSendToFPBtnClick(runner: FinancialProcessorRunnerViewModel) {\r\n const eventData: ISendToFPEventData = {QueryResultId: runner.Id, PageNumber: 1};\r\n this.Trigger('SEND_TO_FP_REQUESTED', eventData);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box yellow\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.INVOICED\\\"></span> <span class=\\\"badge\\\" data-bind=\\\"visible: !Expanded(), text: TotalAmount\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <!--ko if: IsAvailable--> <!-- ko foreach: FinancialProcessorRunners --> <button class=\\\"btn btn-block yellow portletItem\\\" data-bind=\\\"click: $parent.OnSendToFPBtnClick.bind($parent, $data)\\\"> <span class=\\\"textBox\\\"> <span data-bind=\\\"text: Name\\\"></span> </span> <span class=\\\"badge\\\" data-bind=\\\"text: RecordsAmount\\\"></span> </button> <!-- /ko --> <!--/ko--> <!--ko ifnot: IsAvailable--> <div class=\\\"splash-message\\\" data-bind=\\\"text: NotAvailableReason\\\"></div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","import {Event} from \"Core/Common/Event\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {ILedgerParams} from \"./Params/ILedgerParams\";\r\n\r\nimport {FinancialDashboardMappingProfile} from \"Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings\";\r\n\r\nimport {LedgerViewModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/View/LedgerViewModel\";\r\nimport {SubAdministrationViewModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/View/SubAdministrationViewModel\";\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/Ledger/Templates/Template.html';\r\n\r\nexport class Ledger extends Event {\r\n private _labels = LABELS;\r\n\r\n Ledger: LedgerViewModel;\r\n\r\n constructor(params: ILedgerParams) {\r\n super();\r\n\r\n this.Init(params);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AccountsBtnClicked() {\r\n }\r\n\r\n SubAdminBtnClicked(subAdministration: SubAdministrationViewModel) {\r\n }\r\n\r\n private Init(params: ILedgerParams) {\r\n this.Ledger = FinancialDashboardMappingProfile.MapToLedgerViewModel(params.Ledger, params.JournalsState, params.AccountsState);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet body-space box purple\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.LEDGER\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <!--ko with: Ledger--> <button class=\\\"btn btn-block uppercase purple disabled\\\" data-bind=\\\"\\r\\n tooltip: {content: AccountDisabledReason},\\r\\n click: $parent.AccountsBtnClicked.bind($parent)\\r\\n \\\"> <span> <!-- ko template: {html: Accounts.GetIconTemplate.bind(Accounts)} --><!-- /ko --> </span> <span data-bind=\\\"text: $parent._labels.ACCOUNTS\\\"></span> </button> <!--ko foreach: SubAdministrations--> <button class=\\\"btn btn-block purple uppercase disabled\\\" data-bind=\\\"\\r\\n tooltip: {content: $parent.AccountDisabledReason},\\r\\n click: $parents[1].SubAdminBtnClicked.bind($parents[1], $data)\\\"> <span> <!-- ko template: {html: $data.GetIconTemplate.bind($data)} --><!-- /ko --> </span> <span data-bind=\\\"text: Name\\\"></span> </button> <!--/ko--> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","import {CONTROL_TYPES, RenderModes} from \"Core/Constant\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {IFinancialAPIParams} from \"./Params/IFinancialAPIParams\";\r\n\r\nimport {GenericButton} from \"Core/Controls/GenericButton/GenericButton\";\r\n\r\nimport Template from './Templates/Template.html';\r\nimport DesignTemplate from './Templates/DesignTemplate.html';\r\nimport NoControlsTemplate from './Templates/NoControlsTemplate.html';\r\nimport {LABELS} from \"../../../../Translation/Locales\";\r\n\r\nexport class FinancialAPI extends Event {\r\n private _renderMode: RenderModes;\r\n private _financialButtons: GenericButton[];\r\n private _labels = LABELS;\r\n\r\n constructor(params: IFinancialAPIParams) {\r\n super();\r\n\r\n this._renderMode = params.RenderMode;\r\n this._financialButtons = params.RenderMode === RenderModes.View ? params.FinancialButtons : [];\r\n }\r\n\r\n get ButtonsPresent() {\r\n return this._financialButtons.length > 0;\r\n }\r\n\r\n get NoControlsMessage() {\r\n return `No controls of type ${CONTROL_TYPES.GenericButton}`\r\n }\r\n\r\n GetTemplate() {\r\n if (this._renderMode === RenderModes.Design) {\r\n return DesignTemplate;\r\n }\r\n\r\n return Template;\r\n }\r\n\r\n GetNoControlsTemplate() {\r\n return NoControlsTemplate;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet body-space box red\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.FINANCIAL\\\"></span> </div> </div> <div class=\\\"portlet-body\\\" style=\\\"display:none\\\"> <div class=\\\"financial-button\\\"> <a href=\\\"#\\\" class=\\\"btn red\\\"> Import from Exact <i class=\\\"fa fa-cloud-download\\\"></i> </a> </div> <div class=\\\"financial-button\\\"> <a href=\\\"#\\\" class=\\\"btn red\\\"> Export to Exact <i class=\\\"fa fa-cloud-upload\\\"></i> </a> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: ButtonsPresent--> <div class=\\\"portlet body-space box red\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: _labels.FINANCIAL\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <!--ko foreach: _financialButtons--> <div class=\\\"financial-button\\\"> <!--ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}--> <!--/ko--> </div> <!--/ko--> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"splash-message text-center\\\" data-bind=\\\"text: NoControlsMessage\\\"></div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\nimport { Modal } from \"Core/Common/Modal\";\r\n\r\nimport { InvoicingResultsDtoModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingResultsDtoModel';\r\n\r\nimport { InvoicingResultsViewModel } from 'Core/Components/Dashboards/FinancialDashboard/Models/View/InvoicingResultsViewModel';\r\n\r\nimport { FinancialDashboardMappingProfile } from 'Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings';\r\n\r\nimport Template from 'Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template.html';\r\n\r\nko.templates['Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template'] = Template;\r\n\r\nexport class InvoicingResults extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _model: InvoicingResultsViewModel;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: InvoicingResultsDtoModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._model = FinancialDashboardMappingProfile.MapToInvoicingResultsViewModel(model);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tthis._modal = new Modal();\r\n\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Components/Dashboards/FinancialDashboard/Components/InvoicingResults/Templates/Template';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _model --> <h2 data-bind=\\\"text: $parent._labels.RESULTS\\\"></h2> <table class=\\\"table table-striped table-hover\\\"> <thead> <tr> <th></th> <th data-bind=\\\"text: $parent._labels.ID\\\"></th> <th data-bind=\\\"text: $parent._labels.NAME\\\"></th> <th data-bind=\\\"text: $parent._labels.MESSAGE\\\"></th> </tr> </thead> <tbody data-bind=\\\"foreach: Results\\\"> <tr> <td> <!-- ko if: IsSuccessfull --> <div class=\\\"alert alert-success\\\" data-bind=\\\"text: $parents[1]._labels.SUCCESSFUL\\\"></div> <!-- /ko --> <!-- ko ifnot: IsSuccessfull --> <div class=\\\"alert alert-danger\\\" data-bind=\\\"text: $parents[1]._labels.ERRORS\\\"></div> <!-- /ko --> </td> <td> <strong data-bind=\\\"text: RecordId\\\"></strong> </td> <td> <strong data-bind=\\\"text: RecordName\\\"></strong> </td> <td> <strong data-bind=\\\"text: Result\\\"></strong> </td> </tr> </tbody> </table> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'pubsub';\r\n\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\n\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\n\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\n\r\nimport {ViewModes} from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\n\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\n\r\nimport {ReadyForProcessingDataDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {ISendToFPDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Request/ISendToFPDtoModel\";\r\n\r\nimport {FinancialDashboardMappingProfile} from \"Core/Components/Dashboards/FinancialDashboard/Mappings/FinancialDashboardMappings\";\r\n\r\nimport {FinancialProcessorViewModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/View/FinancialProcessorViewModel\";\r\n\r\nimport {IReadyForProcessingDataParams} from \"./Params/IReadyForProcessingDataParams\";\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template.html';\r\n\r\nko.templates['Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template'] = Template;\r\n\r\nexport class ReadyForProcessingData extends Event {\r\n private _labels = LABELS;\r\n\r\n private _modal: Modal;\r\n\r\n private _selectProcessorFromSearch: KnockoutObservable<boolean>;\r\n private _financialProcessors: KnockoutObservableArray<FinancialProcessorViewModel>;\r\n private _financialProcessor: KnockoutObservable<FinancialProcessorViewModel>;\r\n\r\n private _searchPhrase: KnockoutObservable<string>;\r\n\r\n private _grid: BaseGrid;\r\n private _sort: SortModel[];\r\n private _paginationToolbar: Toolbar;\r\n\r\n constructor(private _params: IReadyForProcessingDataParams) {\r\n super();\r\n\r\n this._modal = new Modal();\r\n\r\n this._selectProcessorFromSearch = ko.observable(true);\r\n this._financialProcessors = ko.observableArray([]);\r\n this._financialProcessor = ko.observable(null);\r\n\r\n this._searchPhrase = ko.observable(null);\r\n\r\n this._paginationToolbar = this.BuildPaginationToolbar();\r\n\r\n this._grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEnableSelectRecord: ko.observable(true),\r\n enabledFavorite: false\r\n });\r\n this._sort = [];\r\n\r\n this._grid.On(EVENTS.SORT, this, eventArgs => {\r\n this._sort = eventArgs.data.SortColumns;\r\n this.LoadGridData(1);\r\n });\r\n\r\n this._grid.On(EVENTS.OPEN_HYPERLINK, this, eventArgs => {\r\n const data = _.clone(eventArgs.data);\r\n data.IsOpenInModal = true;\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n this._financialProcessor = ko.observable(null);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForProcessingData/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this.LoadFinancialProcessors();\r\n this.LoadGridData(1)\r\n .then(() => this._modal.Show());\r\n }\r\n\r\n SearchFinancialProcessor() {\r\n const searchScreen = new SearchScreen({\r\n SearchTerm: '',\r\n EntityName: 'SYS_QUEUES',\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const selectedRecord = eventArgs.data;\r\n\r\n const desiredQueueType = 'Financial';\r\n if (selectedRecord.TypeName !== desiredQueueType) {\r\n new Notifier().Warning(`Please, select a queue of type ${desiredQueueType}`);\r\n return;\r\n }\r\n\r\n const selectedFinancialProcessor = new FinancialProcessorViewModel(selectedRecord.RecordId, selectedRecord.Name, selectedRecord.TypeId);\r\n this._financialProcessor(selectedFinancialProcessor);\r\n\r\n searchScreen.Close();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n OnStartProcessing() {\r\n const selectedRecords = this._grid.GetSelectRecords().map(row => row.RecordId);\r\n\r\n const validationError = this.ValidateProcessor() || this.ValidateSelectedRecords(selectedRecords);\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n this.SendToFinancialProcessor({\r\n FinancialProcessorId: this._financialProcessor().Id,\r\n QueryResultId: this._params.QueryResultId,\r\n SelectedRecords: selectedRecords\r\n });\r\n }\r\n\r\n private BuildPaginationToolbar() {\r\n const toolbar = new Toolbar(\r\n false,\r\n false,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n null,\r\n null,\r\n ko.observable(false),\r\n ko.observable(true),\r\n null,\r\n false,\r\n false,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n []\r\n );\r\n\r\n toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, eventArgs => this.LoadGridData(eventArgs.data.pageNumber));\r\n\r\n return toolbar;\r\n }\r\n\r\n private LoadFinancialProcessors() {\r\n const maxDropdownItemsAmount = +GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT);\r\n this._params.Store.GetFinancialProcessors({Amount: maxDropdownItemsAmount, PageNumber: 1})\r\n .then(pagedResult => {\r\n const financialProcessors = pagedResult.Items.map(financialProcessor => FinancialDashboardMappingProfile.MapToFinancialProcessor(financialProcessor));\r\n this._financialProcessors(financialProcessors);\r\n this._selectProcessorFromSearch(pagedResult.TotalRecords > pagedResult.Items.length);\r\n });\r\n }\r\n\r\n private LoadGridData(pageNumber: number) {\r\n const params = {\r\n PageNumber: pageNumber,\r\n Query: this._params.QueryExpression,\r\n RecordsPerPage: this._params.RecordsPerPage,\r\n ViewMode: ViewModes.Query,\r\n RecordId: 0,\r\n FilterByOwners: false,\r\n SearchPhrase: this._searchPhrase(),\r\n Sort: this._sort\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n const getDataPromise = this._params.Store.GetReadyForProcessingData(params);\r\n\r\n getDataPromise\r\n .then(data => this.SetGridData(pageNumber, data))\r\n .fail((error) => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n\r\n return getDataPromise;\r\n }\r\n\r\n private SetGridData(pageNumber: number, data: ReadyForProcessingDataDtoModel) {\r\n this._grid.SetData(FinancialDashboardMappingProfile.MapToReadyForProcessingData(data), true);\r\n\r\n this._paginationToolbar.Paginator().PageNumber = pageNumber;\r\n this._paginationToolbar.Paginator().RecordsPerPage = this._params.RecordsPerPage;\r\n this._paginationToolbar.Paginator().TotalRecords = data.TotalRecords;\r\n this._paginationToolbar.Enable();\r\n }\r\n\r\n private SendToFinancialProcessor(sendToFPDtoModel: ISendToFPDtoModel) {\r\n BlockUI.Block();\r\n\r\n this._params.Store.SendToFinancialProcessor(sendToFPDtoModel)\r\n .then(() => {\r\n this.Trigger('FINANCIAL_PROCESSING_STARTED');\r\n this._modal.Close();\r\n })\r\n .fail(error => this.Trigger('FINANCIAL_PROCESSING_FAILED', {error: error}))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ValidateProcessor() {\r\n if (!this._financialProcessor()) {\r\n return 'Please select Financial Processor';\r\n }\r\n }\r\n\r\n private ValidateSelectedRecords(selectedRecords: number[]) {\r\n if (selectedRecords.length === 0) {\r\n return 'Please select records to process';\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ready-for-processing-data\\\"> <div class=\\\"actionBarSubForm\\\"> <h3 class=\\\"ready-for-processing-data__title\\\" data-bind=\\\"text: _labels.READY_FOR_PROCESSING_DATA\\\"></h3> <div class=\\\"clearfix\\\"> <div class=\\\"dropdown-search-wrapper pull-left\\\"> <div class=\\\"dropdown-wraper\\\"> <!--ko if: _selectProcessorFromSearch--> <div data-bind=\\\"click: $data.SearchFinancialProcessor.bind($data)\\\" class=\\\"form-control input-medium\\\"> <!--ko if: _financialProcessor--> <span data-bind=\\\"text: _financialProcessor().Name\\\"></span> <!--/ko--> <!--ko ifnot: _financialProcessor--> <span data-bind=\\\"text: _labels.SELECT_FINANCIAL_PROCESSOR + '...'\\\"></span> <!--/ko--> </div> <div class=\\\"dropdown-controls\\\"> <span data-bind=\\\"click: $data.SearchFinancialProcessor.bind($data)\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> </div> <!--/ko--> <!--ko ifnot: _selectProcessorFromSearch--> <div class=\\\"dropdown-wraper\\\"> <select class=\\\"form-control input-medium\\\" data-bind=\\\"options: _financialProcessors, optionsText: 'Name', value: _financialProcessor\\\"></select> </div> <!--/ko--> <button type=\\\"button\\\" class=\\\"btn btn-success margin-l-5px\\\" data-bind=\\\"click: OnStartProcessing\\\"> <i class=\\\"fa fa-check\\\"></i> <!--ko text: _labels.PROCESS--><!--/ko--> </button> </div> </div> <div class=\\\"pull-right\\\"> <input type=\\\"text\\\" class=\\\"subFormControl input-medium\\\" data-bind=\\\"textInput: _searchPhrase, searchExtention: {search: $data.LoadGridData.bind($data, 1)}, attr: { placeholder: _labels.SEARCH }\\\"> </div> </div> </div> <div class=\\\"grid-container box-shadow-wrapper\\\"> <!-- ko with: _grid --> <div class=\\\"table-scrollable\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"grid-pagination\\\"> <!-- ko with: _paginationToolbar --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IReadyForInvoicingDataParams} from \"./Params/IReadyForInvoicingDataParams\";\r\n\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\nimport { EditScreen } from 'Core/Screens/EditScreen/EditScreen';\r\nimport { IScreen } from 'Core/Screens/IScreen';\r\nimport { UserVarsManager } from 'Core/UserVarsManager/UserVarsManager';\r\nimport { MobileChecker } from \"Core/Common/MobileChecker\";\r\n\r\nimport {EVENTS as BASE_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\n\r\nimport {ReadyForInvoicingDataDtoModel} from \"../../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\nimport {FinancialDashboardMappingProfile} from \"../../Mappings/FinancialDashboardMappings\";\r\nimport { QueryDropdowns } from 'Core/Components/QueryDropdowns/QueryDropdowns';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {GridStore} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport { TableStore } from 'Core/Common/Stores/TableStore';\r\nimport { DeleteQueryStore } from 'QueryBuilder/Stores/DeleteQueryStore';\r\nimport {ViewModes} from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\nimport {QueryBuilder as QueryBuilderControl} from \"Core/Controls/QueryBuilder/QueryBuilder\";\r\nimport { CONTROL_TYPES } from 'Core/Constant';\r\nimport { NOTIFICATIONS } from 'Core/Components/Translation/Locales';\r\nimport { ViewGridListStore } from 'Core/Controls/Grid/Stores/ViewGridListStore';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport Template\r\n from 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template.html';\r\n\r\nko.templates['Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template'] = Template;\r\n\r\nexport class ReadyForInvoicingData extends Event {\r\n private _labels = LABELS;\r\n\r\n private _modal: Modal;\r\n\r\n private _searchPhrase: KnockoutObservable<string>;\r\n\r\n private _grid: BaseGrid;\r\n private _sort: SortModel[];\r\n private _paginationToolbar: Toolbar;\r\n private _queryDropdown: QueryDropdowns;\r\n private _gridViews: KnockoutObservableArray<ViewGridModel>;\r\n private _gridView: KnockoutObservable<ViewGridModel>;\r\n\r\n private _isEditingAllowed: KnockoutObservable<boolean>;\r\n private _isDeletingAllowed: KnockoutObservable<boolean>;\r\n private _isGridPrioritiesDisabled: KnockoutObservable<boolean>;\r\n private _canHide: KnockoutObservable<boolean>;\r\n private _canShow: KnockoutObservable<boolean>;\r\n\r\n\r\n constructor(private _params: IReadyForInvoicingDataParams) {\r\n super();\r\n\r\n this._modal = new Modal();\r\n\r\n this._searchPhrase = ko.observable(null);\r\n this._gridViews = ko.observableArray([]);\r\n this._gridView = ko.observable(null);\r\n this._isEditingAllowed = ko.observable(false);\r\n this._isDeletingAllowed = ko.observable(false);\r\n this._isGridPrioritiesDisabled = ko.observable(false);\r\n this._canHide = ko.observable(false);\r\n this._canShow = ko.observable(false);\r\n\r\n this._grid = new BaseGrid({\r\n isPrioritiesDisabled: this.GetGridPriorityToggle(),\r\n isQueryResultGrid: true,\r\n isEnableSelectRecord: ko.observable(true),\r\n enabledFavorite: false,\r\n ToggleAllShownColumns: this.ToggleAllShownColumns.bind(this)\r\n });\r\n\r\n this._queryDropdown = new QueryDropdowns({\r\n showElement: ko.observable(true),\r\n showViewLookup: true,\r\n showFunctionLookup: true,\r\n view: this._gridView,\r\n isEnabled: ko.observable(true),\r\n viewList: this._gridViews,\r\n allowViewListUnset: true,\r\n isAddingRecordAllowed: ko.observable(true),\r\n enableEditView: this._isEditingAllowed,\r\n enableDeleteView: this._isDeletingAllowed,\r\n enableLockItem: ko.observable(false),\r\n withExportFeatures: false,\r\n showLockItem: false,\r\n queryLocked: ko.observable(true),\r\n exportDataAllowed: ko.observable(false),\r\n newView: () => this.NewTableView(),\r\n editView: () => this.EditTableView(),\r\n copyView: () => this.CopyTableView(),\r\n deleteView: () => this.DeleteTableView(),\r\n toggleLock: () => {},\r\n exportToCSV: () => {},\r\n exportToExcel: () => {},\r\n });\r\n\r\n this._sort = [];\r\n this._paginationToolbar = this.BuildPaginationToolbar();\r\n\r\n this._grid.On(BASE_GRID_EVENTS.SORT, this, eventArgs => {\r\n this._sort = eventArgs.data.SortColumns;\r\n this.LoadGridData();\r\n });\r\n\r\n this._grid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, eventArgs => {\r\n const data = _.clone(eventArgs.data);\r\n data.IsOpenInModal = true;\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n \r\n this.LoadTableViewList();\r\n\r\n this._gridView.subscribe((newValue)=>{ \r\n this.GridViewId = newValue.Id;\r\n this.LoadGridData()\r\n this._isEditingAllowed(newValue.IsEditingAllowed);\r\n this._isDeletingAllowed(newValue.IsDeletingAllowed);\r\n });\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n private async ShowQueryEditScreen(screen: IScreen){\r\n screen.ShowInModal();\r\n\r\n let defaultView = await GridStore.GetDefaultTableView({\r\n ControlId: 0,\r\n ViewMode: ViewModes.InvoicingQuery,\r\n SubjectEntityId: this._params.TableId\r\n });\r\n\r\n const queryBuilderControl = screen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl != null) {\r\n queryBuilderControl.SetSubjectEntityId(this._params.TableId);\r\n queryBuilderControl.SetQueryTypeName( ViewModes.InvoicingQuery);\r\n queryBuilderControl.InitQuery(defaultView);\r\n\r\n screen.On('RECORD_SAVED', this, async (eventArgs) => {\r\n this.GridViewId = eventArgs.data.RecordId;\r\n await this.LoadTableViewList();\r\n });\r\n } \r\n }\r\n\r\n async LoadTableViewList(){\r\n let viewList = await ViewGridListStore.GetInvoicingGridViewList(this._params.TableId);\r\n let defaultView = new ViewGridModel(0, \"Default\");\r\n defaultView.IsEditingAllowed = false;\r\n defaultView.IsDeletingAllowed = false;\r\n let selectedView = _.find(viewList.GridViews, (view)=>view.Id === this.GridViewId) || defaultView;\r\n this._gridViews([defaultView, ...viewList.GridViews]);\r\n this._gridView(selectedView);\r\n }\r\n\r\n async NewTableView(){\r\n BlockUI.Block();\r\n let queryTable = await this.GetQueryTable();\r\n\r\n let screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({ EntityId: queryTable.Id, TableTypeName: 'InvoicingQuery' })\r\n .always(()=> BlockUI.Unblock())\r\n .then((editScreen) => this.ShowQueryEditScreen(editScreen))\r\n .fail((err)=>Notifier.Failed(err.message));\r\n }\r\n\r\n async GetQueryTable(){\r\n return await TableStore.Get({ TableName: 'QUERIES' }).fail((err)=>Notifier.Failed(err.message));\r\n }\r\n\r\n async EditTableView(){\r\n let queryTable = await this.GetQueryTable();\r\n let viewId = this._gridView()?.Id;\r\n if(!viewId){\r\n return;\r\n }\r\n\r\n await LockManager.Instance.TryLock(queryTable.Id, viewId);\r\n let screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n \r\n BlockUI.Block();\r\n let editScreen = await screenManager.GetEditScreen({ EntityId: queryTable.Id, RecordId: viewId }).fail((err)=>Notifier.Failed(err.message));\r\n BlockUI.Unblock();\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === queryTable.Id && eventArgs.data.RecordId === viewId) {\r\n editScreen.Close();\r\n }\r\n });\r\n\r\n editScreen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(queryTable.id, viewId);\r\n });\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, () => {\r\n this._gridView(null);\r\n this.LoadTableViewList();\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl<QueryBuilderControl>(CONTROL_TYPES.QueryBuilder);\r\n\r\n if (queryBuilderControl != null) {\r\n queryBuilderControl.SetQueryTypeName(ViewModes.InvoicingQuery);\r\n\r\n editScreen.On('RECORD_SAVED', this, () => {\r\n this.LoadGridData();\r\n });\r\n }\r\n }\r\n\r\n async CopyTableView(){\r\n let viewId = this._gridView()?.Id;\r\n if(!viewId){\r\n return;\r\n }\r\n\r\n let queryTable = await this.GetQueryTable();\r\n let screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let editScreen = (await screenManager.GetEditScreen({ EntityId: queryTable.Id, RecordId: viewId, LoadAsExample: true })) as EditScreen;\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl != null) {\r\n queryBuilderControl.SetQueryTypeName(ViewModes.InvoicingQuery);\r\n queryBuilderControl.SetFilterByOwners(true);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.GridViewId = eventArgs.data.RecordId;\r\n this.LoadTableViewList();\r\n });\r\n }\r\n }\r\n\r\n async DeleteTableView(){\r\n let viewId = this._gridView()?.Id;\r\n if(!viewId){\r\n return;\r\n }\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, async () => {\r\n await DeleteQueryStore.Delete({Id: viewId});\r\n this.LoadTableViewList();\r\n });\r\n \r\n confirmationDialog.Show();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/Dashboards/FinancialDashboard/Components/ReadyForInvoicingData/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this.LoadGridData()\r\n .then(() => this._modal.Show())\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n }\r\n\r\n GetGridPriorityToggle(): boolean {\r\n if (MobileChecker.IsMobile()) {\r\n return this._isGridPrioritiesDisabled();\r\n }\r\n\r\n const subjectEntityId = this._params.TableId;\r\n const gridSubjectEntityId = 0;\r\n this._isGridPrioritiesDisabled(UserVarsManager.Instance.GetGridPriority(subjectEntityId, gridSubjectEntityId, this._isGridPrioritiesDisabled()));\r\n return UserVarsManager.Instance.GetGridPriority(subjectEntityId, gridSubjectEntityId, this._isGridPrioritiesDisabled());\r\n }\r\n\r\n TogglePriorities() {\r\n this._isGridPrioritiesDisabled(!this._isGridPrioritiesDisabled());\r\n\r\n const subjectEntityId = this._params.TableId;\r\n const gridSubjectEntityId = this._grid.SubjectEntityId;\r\n !MobileChecker.IsMobile() && UserVarsManager.Instance.SetGridPriority(subjectEntityId, gridSubjectEntityId, this._isGridPrioritiesDisabled());\r\n this.LoadGridData();\r\n }\r\n\r\n ToggleAllShownColumns(canHide: boolean, canShow: boolean) {\r\n this._canHide(canHide);\r\n this._canShow(canShow);\r\n }\r\n\r\n private BuildPaginationToolbar() {\r\n const toolbar = new Toolbar(\r\n false,\r\n false,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n null,\r\n null,\r\n ko.observable(false),\r\n ko.observable(true),\r\n null,\r\n false,\r\n false,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n []\r\n );\r\n\r\n toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, () => this.LoadGridData());\r\n\r\n return toolbar;\r\n }\r\n\r\n private LoadGridData() {\r\n BlockUI.Block();\r\n\r\n return this._params.Store.GetReadyForInvoicingData({\r\n ViewId: this._gridView()?.Id,\r\n ControlId: this._params.ControlId,\r\n PageNumber: this._paginationToolbar.Paginator().PageNumber,\r\n RecordsPerPage: this._params.RecordsPerPage,\r\n SearchPhrase: this._searchPhrase(),\r\n Sort: this._sort\r\n })\r\n .then(data => this.SetGridData(this._paginationToolbar.Paginator().PageNumber, data))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private SetGridData(pageNumber: number, data: ReadyForInvoicingDataDtoModel) {\r\n this._grid.SetData(FinancialDashboardMappingProfile.MapToReadyForInvoicingData(data), true, this.GetGridPriorityToggle());\r\n\r\n this._paginationToolbar.Paginator().PageNumber = pageNumber;\r\n this._paginationToolbar.Paginator().RecordsPerPage = this._params.RecordsPerPage;\r\n this._paginationToolbar.Paginator().TotalRecords = data.TotalRecords;\r\n this._paginationToolbar.Enable();\r\n }\r\n\r\n private OnStartProcessing() {\r\n const selectedRecords = this._grid.GetSelectRecords().map(row => row.RecordId);\r\n\r\n const validationError = this.ValidateSelectedRecords(selectedRecords);\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n this.Invoice(selectedRecords);\r\n }\r\n\r\n private Invoice(selectedRecords: number[]) {\r\n BlockUI.Block();\r\n\r\n this._params.Store.Invoice({\r\n ControlId: this._params.ControlId,\r\n Records: selectedRecords\r\n })\r\n .then(invoicingResults => {\r\n this.Trigger('INVOICING_DONE', invoicingResults);\r\n this._modal.Close();\r\n })\r\n .fail(error => this.Trigger('INVOICING_FAILED', {error: error}))\r\n .always(() => BlockUI.Unblock())\r\n }\r\n\r\n private ValidateSelectedRecords(selectedRecords: number[]) {\r\n if (selectedRecords.length === 0) {\r\n return 'Please select records to process';\r\n }\r\n }\r\n\r\n get GridViewId() {\r\n return UserVarsManager.Instance.GetFinancialDashboardGridView(this._params.ControlId);\r\n }\r\n\r\n set GridViewId(value: number) {\r\n UserVarsManager.Instance.SetFinancialDashboardGridView(this._params.ControlId, value);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ready-for-invoicing-data\\\"> <div class=\\\"actionBarSubForm\\\"> <h3 class=\\\"ready-for-invoicing-data__title\\\" data-bind=\\\"text: _labels.READY_FOR_INVOICING_DATA\\\"></h3> <div class=\\\"clearfix table-toolbar-line\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success subFormControl pull-left ready-for-invoicing-data-process-btn\\\" data-bind=\\\"click: OnStartProcessing\\\"> <i class=\\\"fa fa-check\\\"></i> <!--ko text: _labels.PROCESS--><!--/ko--> </button> <div class=\\\"ready-for-invoicing-data-query-dropdown\\\"> <!-- ko with: _queryDropdown --> <!-- ko template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"action-button\\\"> <!-- ko if: _canHide() || _canShow() --> <span class=\\\"action-button-box\\\"> <a data-bind=\\\"click: $data.TogglePriorities.bind($data)\\\" class=\\\"btn btn-secondary toggle-priorities-button pull-left\\\"> <!-- ko if: _isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye\\\" data-bind=\\\"tooltip: {content: _labels.HIDE_COLUMNS_BY_PRIORITY}\\\"></i> <!-- /ko --> <!-- ko if: !_isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye-slash priorities-button-off\\\" data-bind=\\\"tooltip: {content: _labels.SHOW_ALL_COLUMNS}\\\"></i> <!-- /ko --> </a> </span> <!-- /ko --> </div> <input type=\\\"text\\\" class=\\\"subFormControl input-medium pull-right\\\" data-bind=\\\"textInput: _searchPhrase, searchExtention: {search: $data.LoadGridData.bind($data, 1)}, attr: { placeholder: _labels.SEARCH }\\\"> </div> </div> <div class=\\\"grid-container box-shadow-wrapper\\\"> <!-- ko with: _grid --> <div class=\\\"table-scrollable\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"grid-pagination\\\"> <!-- ko with: _paginationToolbar --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import {AccountsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/AccountsState\";\r\nimport {JournalsState} from \"Core/Components/Dashboards/FinancialDashboard/Enums/JournalsState\";\r\n\r\nimport { SourceTableDtoModel } from \"./SourceTableDtoModel\";\r\nimport { FinancialProcessorRunnerDtoModel } from \"./FinancialProcessorRunnerDtoModel\";\r\nimport {LedgerDtoModel} from \"./LedgerDtoModel\";\r\n\r\nexport class FinancialDashboardDtoModel {\r\n\tJournalsState: JournalsState;\r\n\tAccountsState: AccountsState;\r\n\r\n\tSourceTables: SourceTableDtoModel[];\r\n\tFinancialProcessorRunners: FinancialProcessorRunnerDtoModel[];\r\n\tLedger: LedgerDtoModel;\r\n}","import { SourceTableTypeDtoModel } from \"./SourceTableTypeDtoModel\";\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class SourceTableDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tTranslatedName: string;\r\n\tIcon: IconModel;\r\n\tTypes: SourceTableTypeDtoModel[];\r\n}","import { InvoicingControlDtoModel } from \"./InvoicingControlDtoModel\";\r\n\r\nexport class SourceTableTypeDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tControls: InvoicingControlDtoModel[];\r\n}","export class InvoicingControlDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRecordsAmount: number;\r\n}","export class InvoicingResultsDtoModel {\r\n\tResults: InvoicingResultDtoModel[];\r\n}\r\n\r\nexport class InvoicingResultDtoModel {\r\n\tRecordId: number;\r\n\tRecordName: string;\r\n\tResult: string;\r\n\tIsSuccessfull: boolean;\r\n}","export class FinancialProcessorRunnerDtoModel {\r\n\tId: number;\r\n\tName: string;\r\n\tRecordsAmount: number;\r\n}","import { AccountsDtoModel } from \"./AccountsDtoModel\";\r\nimport { SubAdministrationDtoModel } from \"./SubAdministrationDtoModel\";\r\n\r\nexport class LedgerDtoModel {\r\n\tAccounts: AccountsDtoModel;\r\n\tSubAdministrations: SubAdministrationDtoModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.SubAdministrations = [];\r\n\t}\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class AccountsDtoModel {\r\n\tTableId: number;\r\n\tIcon: IconModel;\r\n}","import {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class SubAdministrationDtoModel {\r\n TableId: number;\r\n Name: string;\r\n Icon: IconModel;\r\n}","import {P} from 'Core/Common/Promise';\r\n\r\nimport {JournalsState} from \"../Enums/JournalsState\";\r\nimport {AccountsState} from \"../Enums/AccountsState\";\r\n\r\nimport {IFinancialDashboardStore} from './IFinancialDashboardStore';\r\n\r\nimport {ICreateInvoiceDtoModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Request/ICreateInvoiceDtoModel';\r\nimport {ISendToFPDtoModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Request/ISendToFPDtoModel';\r\nimport {PagedResult} from \"Core/Results/ResultModels/PagedResult\";\r\n\r\nimport {IGetGridDataRequestModel} from \"QueryBuilder/QueryResultGrid/Stores/QueryResultStore\";\r\n\r\nimport {FinancialDashboardDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/FinancialDashboardDtoModel\";\r\nimport {SourceTableDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SourceTableDtoModel\";\r\nimport {SourceTableTypeDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/SourceTableTypeDtoModel\";\r\nimport {InvoicingControlDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingControlDtoModel\";\r\nimport {\r\n InvoicingResultDtoModel,\r\n InvoicingResultsDtoModel\r\n} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/InvoicingResultsDtoModel';\r\nimport {FinancialProcessorRunnerDtoModel} from 'Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/FinancialProcessorRunnerDtoModel';\r\nimport {LedgerDtoModel} from \"Core/Components/Dashboards/FinancialDashboard/Models/Dto/Response/LedgerDtoModel\";\r\nimport {AccountsDtoModel} from \"../Models/Dto/Response/AccountsDtoModel\";\r\nimport {SubAdministrationDtoModel} from \"../Models/Dto/Response/SubAdministrationDtoModel\";\r\nimport {FinancialProcessorDtoModel} from \"../Models/Dto/Response/FinacialProcessorDtoModel\";\r\nimport {ReadyForProcessingDataDtoModel} from \"../Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {ReadyForInvoicingDataDtoModel} from \"../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\nimport {IGetReadyForInvoicingDataDtoModel} from \"../Models/Dto/Request/IGetReadyForInvoicingDataDtoModel\";\r\nimport {IGetFinancialProcessorsDtoModel} from \"../Models/Dto/Request/IGetFinancialProcessorsDtoModel\";\r\n\r\nexport class FinancialDashboardMockStore implements IFinancialDashboardStore {\r\n GetData(controlId: number): P.Promise<FinancialDashboardDtoModel> {\r\n const dashboardModel = new FinancialDashboardDtoModel();\r\n\r\n const projects = this.GetSourceTable(1, 'PROJECTS', [{\r\n Id: 1,\r\n Name: 'Startup',\r\n InvoicingControlsName: ['Invoice', 'Purchase']\r\n }]);\r\n\r\n const orders = this.GetSourceTable(2, 'ORDERS', [{\r\n Id: 2, Name: 'Shipping',\r\n InvoicingControlsName: ['Shipping']\r\n }]);\r\n\r\n const contracts = this.GetSourceTable(3, 'CONTRACTS', [{\r\n Id: 3,\r\n Name: 'Service',\r\n InvoicingControlsName: ['Invoice']\r\n }, {\r\n Id: 4,\r\n Name: 'Lease',\r\n InvoicingControlsName: ['Create lease']\r\n }]);\r\n\r\n dashboardModel.SourceTables = [projects, orders, contracts];\r\n\r\n dashboardModel.FinancialProcessorRunners = [\r\n this.GetFinancialProcessorRunner(1, 'Send to FP1', 10),\r\n this.GetFinancialProcessorRunner(2, 'Send to FP2', 15),\r\n this.GetFinancialProcessorRunner(3, 'Send to FP3', 20)\r\n ];\r\n\r\n dashboardModel.JournalsState = JournalsState.Ok;\r\n dashboardModel.AccountsState = AccountsState.Ok;\r\n dashboardModel.Ledger = this.GetLedger();\r\n\r\n const deferred = P.defer<FinancialDashboardDtoModel>();\r\n deferred.resolve(dashboardModel);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n Invoice(createInvoiceParams: ICreateInvoiceDtoModel) {\r\n const results = new InvoicingResultsDtoModel();\r\n\r\n results.Results = [\r\n this.GetInvoicingResult(1, 'Spheeres.com'),\r\n this.GetInvoicingResult(2, \"Bad guys company\", \"Because it's bad\")\r\n ];\r\n\r\n const deferred = P.defer<InvoicingResultsDtoModel>();\r\n deferred.resolve(results);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetFinancialProcessors(params: IGetFinancialProcessorsDtoModel): P.Promise<PagedResult<FinancialProcessorDtoModel>> {\r\n const deferred = P.defer<PagedResult<FinancialProcessorDtoModel>>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetReadyForInvoicingData(params: IGetReadyForInvoicingDataDtoModel): P.Promise<ReadyForInvoicingDataDtoModel> {\r\n const deferred = P.defer<any>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetReadyForProcessingData(params: IGetGridDataRequestModel): P.Promise<ReadyForProcessingDataDtoModel> {\r\n const deferred = P.defer<any>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SendToFinancialProcessor(sendToFPParams: ISendToFPDtoModel) {\r\n const deferred = P.defer<any>();\r\n deferred.resolve(null);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetSourceTable(id: number, name: string, types: { Id: number, Name: string, InvoicingControlsName: string[] }[]) {\r\n const sourceTable = new SourceTableDtoModel();\r\n\r\n sourceTable.Id = id;\r\n sourceTable.Name = name;\r\n sourceTable.Types = types.map((type, index) => this.GetSourceTableType(index + 1, type.Name, type.InvoicingControlsName));\r\n\r\n return sourceTable;\r\n }\r\n\r\n private GetSourceTableType(id: number, name: string, invoicingControlsName: string[]) {\r\n const sourceTableType = new SourceTableTypeDtoModel();\r\n\r\n sourceTableType.Id = id;\r\n sourceTableType.Name = name;\r\n sourceTableType.Controls = invoicingControlsName.map((invoicingControlName, index) => this.GetInvoicingControl(index + 1, invoicingControlName, index + 1));\r\n\r\n return sourceTableType;\r\n }\r\n\r\n private GetInvoicingControl(id: number, name: string, recordsAmount: number) {\r\n const invoicingControl = new InvoicingControlDtoModel();\r\n\r\n invoicingControl.Id = id;\r\n invoicingControl.Name = name;\r\n invoicingControl.RecordsAmount = recordsAmount;\r\n\r\n return invoicingControl;\r\n }\r\n\r\n private GetFinancialProcessorRunner(id: number, name: string, recordsAmount: number) {\r\n const fpRunner = new FinancialProcessorRunnerDtoModel();\r\n\r\n fpRunner.Id = id;\r\n fpRunner.Name = name;\r\n fpRunner.RecordsAmount = recordsAmount;\r\n\r\n return fpRunner;\r\n }\r\n\r\n private GetLedger(): LedgerDtoModel {\r\n const ledger = new LedgerDtoModel();\r\n\r\n ledger.Accounts = this.GetAccounts(1);\r\n ledger.SubAdministrations = [\r\n this.GetSubAdministration(1, 'PROJECTS SA'),\r\n this.GetSubAdministration(2, 'COMPANIES SA'),\r\n ];\r\n\r\n return ledger;\r\n }\r\n\r\n private GetAccounts(id: number): AccountsDtoModel {\r\n const accounts = new AccountsDtoModel();\r\n\r\n accounts.TableId = id;\r\n\r\n return accounts;\r\n }\r\n\r\n private GetSubAdministration(id: number, name: string): SubAdministrationDtoModel {\r\n const subAdministration = new SubAdministrationDtoModel();\r\n\r\n subAdministration.TableId = id;\r\n subAdministration.Name = name;\r\n\r\n return subAdministration;\r\n }\r\n\r\n private GetInvoicingResult(id: number, name: string, error?: string) {\r\n const result = new InvoicingResultDtoModel();\r\n\r\n result.RecordId = id;\r\n result.RecordName = name;\r\n result.Result = error;\r\n result.IsSuccessfull = !error;\r\n\r\n return result;\r\n }\r\n}","import {P} from \"Core/Common/Promise\";\r\nimport {URL} from 'Core/Common/Url';\r\n\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {PagedResult} from \"Core/Results/ResultModels/PagedResult\";\r\n\r\nimport {IFinancialDashboardStore} from './IFinancialDashboardStore';\r\n\r\nimport {IGetGridDataRequestModel} from \"QueryBuilder/QueryResultGrid/Stores/QueryResultStore\";\r\nimport {ICreateInvoiceDtoModel} from '../Models/Dto/Request/ICreateInvoiceDtoModel';\r\nimport {IGetFinancialProcessorsDtoModel} from \"../Models/Dto/Request/IGetFinancialProcessorsDtoModel\";\r\nimport {ISendToFPDtoModel} from '../Models/Dto/Request/ISendToFPDtoModel';\r\nimport {IGetReadyForInvoicingDataDtoModel} from \"../Models/Dto/Request/IGetReadyForInvoicingDataDtoModel\";\r\n\r\nimport {FinancialProcessorDtoModel} from \"../Models/Dto/Response/FinacialProcessorDtoModel\";\r\nimport {ReadyForProcessingDataDtoModel} from \"../Models/Dto/Response/ReadyForProcessingDataDtoModel\";\r\nimport {ReadyForInvoicingDataDtoModel} from \"../Models/Dto/Response/ReadyForInvoicingDataDtoModel\";\r\n\r\nexport class FinancialDashboardStore implements IFinancialDashboardStore {\r\n GetData(controlId: number) {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/GetDashboardData',\r\n type: 'GET',\r\n dataType: 'json',\r\n },\r\n params: {controlId: controlId}\r\n });\r\n }\r\n\r\n Invoice(createInvoiceParams: ICreateInvoiceDtoModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/ConvertToInvoiceBatch',\r\n type: 'POST',\r\n dataType: 'json'\r\n }, params: createInvoiceParams\r\n });\r\n }\r\n\r\n GetFinancialProcessors(params: IGetFinancialProcessorsDtoModel): P.Promise<PagedResult<FinancialProcessorDtoModel>> {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/GetFinancialProcessors',\r\n dataType: 'json',\r\n type: 'GET',\r\n }, params: params\r\n });\r\n }\r\n\r\n GetReadyForInvoicingData(params: IGetReadyForInvoicingDataDtoModel): P.Promise<ReadyForInvoicingDataDtoModel> {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/GetReadyForInvoicingData',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n });\r\n }\r\n\r\n GetReadyForProcessingData(params: IGetGridDataRequestModel): P.Promise<ReadyForProcessingDataDtoModel> {\r\n const deferred = P.defer<ReadyForProcessingDataDtoModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: URL.CONTROLS.GET_GRID_DATA,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n }).fail(() => deferred.reject({message: 'Error loading ready for processing data'}));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n SendToFinancialProcessor(sendToFPParams: ISendToFPDtoModel) {\r\n return Request.Send({\r\n proxy: {\r\n url: 'api/FinancialApi/SendToFinancialProcessor',\r\n type: 'POST'\r\n }, params: sendToFPParams\r\n });\r\n }\r\n}\r\n\r\n","import { RenderModes } from \"Core/Constant\";\r\n\r\nimport { IFinancialDashboardStore } from \"../Stores/IFinancialDashboardStore\";\r\nimport { FinancialDashboardMockStore } from \"../Stores/FinancialDashboardMockStore\";\r\nimport { FinancialDashboardStore } from \"../Stores/FinancialDashboardStore\";\r\n\r\nexport class StoreFactory {\r\n\tstatic GetStore(renderMode: RenderModes): IFinancialDashboardStore {\r\n\t\treturn renderMode === RenderModes.Design\r\n\t\t\t? new FinancialDashboardMockStore()\r\n\t\t\t: new FinancialDashboardStore();\r\n\t}\r\n}","import * as ko from 'knockout'\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IFinancialDashboardParams} from 'Core/Components/Dashboards/FinancialDashboard/Params/IFinancialDashboardParams';\r\n\r\nimport {IReadyForInvoicingEventData} from './Components/ReadyForInvoicing/Events/IReadyForInvoicingEventData';\r\nimport {ISendToFPEventData} from './Components/ReadyForProcessing/Events/ISendToFPEventData';\r\n\r\nimport {IFinancialDashboardStore} from './Stores/IFinancialDashboardStore';\r\n\r\nimport {ReadyForInvoicing} from './Components/ReadyForInvoicing/ReadyForInvoicing';\r\nimport {ReadyForProcessing} from './Components/ReadyForProcessing/ReadyForProcessing';\r\nimport {Ledger} from './Components/Ledger/Ledger';\r\nimport {FinancialAPI} from \"./Components/FinancialAPI/FinancialAPI\";\r\n\r\nimport {InvoicingResults} from './Components/InvoicingResults/InvoicingResults';\r\nimport {ReadyForProcessingData} from \"./Components/ReadyForProcessingData/ReadyForProcessingData\";\r\nimport {ReadyForInvoicingData} from \"./Components/ReadyForInvoicingData/ReadyForInvoicingData\";\r\n\r\nimport {StoreFactory} from './Factories/StoreFactory';\r\n\r\nimport {FinancialDashboardDtoModel} from './Models/Dto/Response/FinancialDashboardDtoModel';\r\nimport {InvoicingResultsDtoModel} from './Models/Dto/Response/InvoicingResultsDtoModel';\r\n\r\nimport Template from 'Core/Components/Dashboards/FinancialDashboard/Templates/Template.html';\r\n\r\nexport class FinancialDashboard {\r\n private _store: IFinancialDashboardStore;\r\n\r\n private _readyForInvoicingComponent: KnockoutObservable<ReadyForInvoicing>;\r\n private _readyForProcessingComponent: KnockoutObservable<ReadyForProcessing>;\r\n private _ledgerComponent: KnockoutObservable<Ledger>;\r\n private _financialAPIComponent: KnockoutObservable<FinancialAPI>;\r\n private _loadInProgres: KnockoutObservable<boolean>;\r\n\r\n constructor(private _params: IFinancialDashboardParams) {\r\n this._store = StoreFactory.GetStore(this._params.RenderMode);\r\n\r\n this._readyForInvoicingComponent = ko.observable(null);\r\n this._readyForProcessingComponent = ko.observable(null);\r\n this._ledgerComponent = ko.observable(null);\r\n this._financialAPIComponent = ko.observable(null);\r\n this._loadInProgres = ko.observable(false);\r\n }\r\n\r\n get IsDesignMode() {\r\n return this._params.RenderMode === RenderModes.Design;\r\n }\r\n\r\n get IsViewMode() {\r\n return this._params.RenderMode === RenderModes.View;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n Render() {\r\n this.Refresh();\r\n }\r\n\r\n private InitComponents(model: FinancialDashboardDtoModel) {\r\n this._readyForInvoicingComponent(new ReadyForInvoicing({SourceTables: model.SourceTables}));\r\n\r\n this._readyForProcessingComponent(new ReadyForProcessing({\r\n FinancialProcessorRunners: model.FinancialProcessorRunners,\r\n JournalsState: model.JournalsState,\r\n AccountsState: model.AccountsState\r\n }));\r\n\r\n this._ledgerComponent(new Ledger({\r\n Ledger: model.Ledger,\r\n JournalsState: model.JournalsState,\r\n AccountsState: model.AccountsState\r\n }));\r\n\r\n this._financialAPIComponent(new FinancialAPI({\r\n RenderMode: this._params.RenderMode,\r\n FinancialButtons: this._params.FinancialButtons\r\n }));\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private ShowBadRequestError(error: P.Rejection) {\r\n const errorMessage = JSON.parse(error.message).Message;\r\n new Notifier().Failed(errorMessage);\r\n }\r\n\r\n private BindEvents() {\r\n this._readyForInvoicingComponent().On('INVOICING_REQUESTED', this, eventArgs => this.RequestReadyForInvoicingData(eventArgs.data));\r\n this._readyForProcessingComponent().On('SEND_TO_FP_REQUESTED', this, eventArgs => this.RequestReadyForProcessingData(eventArgs.data));\r\n }\r\n\r\n private RequestReadyForInvoicingData(readyForInvoicingEventData: IReadyForInvoicingEventData) {\r\n if (!this.IsViewMode) return;\r\n\r\n const otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n const recordsPerPage = +otherGridPageLines || 10;\r\n\r\n const readyForInvoicingDataModal = new ReadyForInvoicingData({\r\n ControlId: readyForInvoicingEventData.ControlId,\r\n TableId: readyForInvoicingEventData.TableId,\r\n RecordsPerPage: recordsPerPage,\r\n Store: this._store\r\n });\r\n\r\n readyForInvoicingDataModal.On('INVOICING_DONE', this, eventArgs => this.OnInvoicesCreated(eventArgs.data));\r\n readyForInvoicingDataModal.On('INVOICING_FAILED', this, eventArgs => this.ShowBadRequestError(eventArgs.data));\r\n\r\n readyForInvoicingDataModal.Show();\r\n }\r\n\r\n private RequestReadyForProcessingData(sendToFPEventData: ISendToFPEventData) {\r\n if (!this.IsViewMode) return;\r\n\r\n const readyForProcessingQuery = this._params.ReadyForProcessingQueries.find(q => q.QueryResultId === sendToFPEventData.QueryResultId);\r\n if (!readyForProcessingQuery || !readyForProcessingQuery.QueryExpression) {\r\n new Notifier().Warning(NOTIFICATIONS.QUERY_EXPRESSION_WAS_NOT_CREATED);\r\n return;\r\n }\r\n\r\n const otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n const recordsPerPage = +otherGridPageLines || 10;\r\n\r\n const readyForProcessingDataModal = new ReadyForProcessingData({\r\n QueryResultId: sendToFPEventData.QueryResultId,\r\n QueryExpression: readyForProcessingQuery.QueryExpression,\r\n RecordsPerPage: recordsPerPage,\r\n Store: this._store\r\n });\r\n\r\n readyForProcessingDataModal.On('FINANCIAL_PROCESSING_STARTED', this, () => this.OnFinancialProcessingStarted());\r\n readyForProcessingDataModal.On('FINANCIAL_PROCESSING_FAILED', this, eventArgs => this.ShowBadRequestError(eventArgs.data));\r\n\r\n readyForProcessingDataModal.Show();\r\n }\r\n\r\n private Refresh() {\r\n this._loadInProgres(true);\r\n\r\n this._store.GetData(this._params.Control.GetControlId())\r\n .then(model => this.InitComponents(model))\r\n .fail(error => this.ShowBadRequestError(error))\r\n .always(() => {\r\n this._loadInProgres(false);\r\n });\r\n }\r\n\r\n private ShowInvoicingResults(model: InvoicingResultsDtoModel) {\r\n new InvoicingResults(model).Show();\r\n }\r\n\r\n private OnInvoicesCreated(model: InvoicingResultsDtoModel) {\r\n this.Refresh();\r\n this.ShowInvoicingResults(model);\r\n }\r\n\r\n private OnFinancialProcessingStarted() {\r\n new Notifier().Success(NOTIFICATIONS.DOCUMENTS_HAS_BEEN_SENT_TO_FINANCIAL_PROCESSOR);\r\n this.Refresh();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"financial-dashboard\\\"> <div class=\\\"row u-min-h-40\\\"> <div class=\\\"col-md-3\\\"> <!-- ko with: _readyForInvoicingComponent --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-3\\\"> <!-- ko with: _readyForProcessingComponent --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-3\\\"> <!-- ko with: _ledgerComponent --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"col-md-3\\\"> <!--ko with: _financialAPIComponent--> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!--/ko--> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\n\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\n\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {QueryResult} from \"Core/Controls/QueryResult/QueryResult\";\r\nimport {GenericButton} from \"Core/Controls/GenericButton/GenericButton\";\r\n\r\nimport {QueryExpressionModel} from \"Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\n\r\nimport {IReadyForProcessingQuery} from \"Core/Components/Dashboards/FinancialDashboard/Params/IFinancialDashboardParams\";\r\nimport {FinancialDashboard as FinancialDashboardComponent} from 'Core/Components/Dashboards/FinancialDashboard/FinancialDashboard';\r\n\r\nimport ToolBarTemplate from 'Core/Controls/FinancialDashboard/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/FinancialDashboard/Templates/Design.html';\r\nimport ViewTemplate from 'Core/Controls/FinancialDashboard/Templates/View.html';\r\n\r\nko.templates['Core/Controls/FinancialDashboard/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/FinancialDashboard/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/FinancialDashboard/Templates/View'] = ViewTemplate;\r\n\r\nexport class FinancialDashboard extends BaseControl {\r\n private _component: FinancialDashboardComponent;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init() {\r\n if (this._renderMode() !== RenderModes.ToolBar) {\r\n this._component = new FinancialDashboardComponent({\r\n Control: this,\r\n RenderMode: this._renderMode(),\r\n ReadyForProcessingQueries: this.GetReadyForProcessingQueries(),\r\n FinancialButtons: this.GetFinancialButtons(),\r\n });\r\n\r\n this._component.Render();\r\n }\r\n }\r\n\r\n private GetReadyForProcessingQueries(): IReadyForProcessingQuery[] {\r\n return this._subControls()\r\n .filter(subControl => subControl.GetType() == CONTROL_TYPES.QueryResult)\r\n .map(queryResult => this.GetReadyForProcessingQuery(queryResult as QueryResult))\r\n }\r\n\r\n private GetFinancialButtons(): GenericButton[] {\r\n return <GenericButton[]>this._subControls()\r\n .filter(subControl => subControl.GetType() === CONTROL_TYPES.GenericButton)\r\n }\r\n\r\n private GetReadyForProcessingQuery(queryResult: QueryResult): IReadyForProcessingQuery {\r\n const queryProperties = queryResult.Properties\r\n && queryResult.Properties.Query\r\n && queryResult.Properties.Query.Properties;\r\n\r\n const queryExpressionProperty = _.find<any>(queryProperties, property => property.Query);\r\n\r\n if (queryExpressionProperty) {\r\n const queryExpression = GenericDeserialize<QueryExpressionModel>(JSON.parse(queryExpressionProperty.Query), QueryExpressionModel);\r\n\r\n return {\r\n QueryResultId: queryResult.GetControlId(),\r\n QueryExpression: queryExpression\r\n };\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-tachometer\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <!-- ko with: _component --> <!-- ko template: {html: GetTemplate} --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_subControls().length --> <div class=\\\"group-control-placeholder\\\">Controls</div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropControl.bind($root) }\\\" subControls class=\\\"tab-drop-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _component --> <div data-bind=\\\"blockElement: $data._loadInProgres\\\"> <!-- ko template: {html: GetTemplate} --><!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport Rejection = P.Rejection;\r\n\r\nexport interface ICurrency {\r\n Id: number;\r\n Name: string;\r\n IsoCode: string;\r\n Icon: any;\r\n}\r\n\r\nexport class CurrencyStore {\r\n static GetNativeCurrency(): P.Promise<ICurrency> {\r\n const deferred = P.defer<ICurrency>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/CurrencyApi/GetNativeCurrency\",\r\n dataType: \"json\",\r\n type: \"GET\"\r\n },\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => this.ResolveResponse(deferred, response))\r\n .fail(error => this.RejectResponse(deferred, error));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetCurrencies(): P.Promise<Array<ICurrency>> {\r\n const deferred = P.defer<Array<ICurrency>>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/CurrencyApi/GetCurrencies\",\r\n dataType: \"json\",\r\n type: \"GET\"\r\n },\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => this.ResolveResponse(deferred, response))\r\n .fail(error => this.RejectResponse(deferred, error));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static ResolveResponse<T>(deferred: P.Deferred<T>, response: T) {\r\n deferred.resolve(response);\r\n }\r\n\r\n private static RejectResponse<T>(deferred: P.Deferred<T>, error: Rejection) {\r\n deferred.reject(error);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore'\r\nimport 'datetimepicker';\r\nimport * as moment from 'moment';\r\n\r\nimport {BaseControl, IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {CurrencyStore, ICurrency} from \"./Stores/CurrencyStore\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FIELD_TYPES, FONT_STYLES, RenderModes} from \"Core/Constant\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport ToolBarTemplate from 'Core/Controls/Currency/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Currency/Templates/Design.html';\r\nimport HelpViewTemplate from 'Core/Controls/Currency/Templates/HelpView.html';\r\nimport ViewTemplate from 'Core/Controls/Currency/Templates/View.html';\r\nimport EditTemplate from 'Core/Controls/Currency/Templates/Edit.html';\r\n\r\nko.templates['Core/Controls/Currency/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Currency/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Currency/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Currency/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Currency/Templates/Edit'] = EditTemplate;\r\n\r\nexport interface ICurrencyValueModel {\r\n CurrencyId?: number;\r\n Currency: ICurrency;\r\n RateDate: string;\r\n Value: string;\r\n}\r\n\r\nexport class Currency extends BaseControl {\r\n private _value: KnockoutObservable<string>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _rateDate: KnockoutObservable<string>;\r\n private _selectedCurrency: KnockoutObservable<ICurrency>;\r\n private _availableCurrencies: KnockoutObservableArray<ICurrency>;\r\n private _dropDown: JBoxDropDown;\r\n private _originalCurrency: ICurrencyValueModel;\r\n private _errorResolving: KnockoutObservable<boolean>;\r\n private _originalValue: { RateDate: string, Value: string, CurrencyId: number };\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this._value = ko.observable('');\r\n this._labelStyle = ko.observable(null);\r\n this._textInputStyle = ko.observable(null);\r\n this._rateDate = ko.observable(null);\r\n this._selectedCurrency = ko.observable(null);\r\n this._availableCurrencies = ko.observableArray([]);\r\n this._errorResolving = ko.observable(true);\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n GetRateTitle() {\r\n const date = moment(this._rateDate()).format('L');\r\n if ((this._form && this._form.GetScreen() && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) || this._renderMode() === RenderModes.Edit) {\r\n return `<div class=\"origin-tooltip\"> ${date} </div>`;\r\n } else if (this._originalCurrency && this._originalCurrency.Currency) {\r\n const icon = new Icon(this._originalCurrency.Currency.Icon);\r\n const template = `<div class=\"origin-tooltip\"> ${icon.GetTemplate()}${this._originalCurrency.Value} - ${date} </div>`;\r\n return (ko as any).renderTemplateXHtml(template, icon);\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data) {\r\n if (value.Data.Value) {\r\n const currencyModel: { Origin: ICurrencyValueModel, Converted: ICurrencyValueModel } = this.ParseValue(value);\r\n\r\n let showCurrency = currencyModel.Converted ? currencyModel.Converted : currencyModel.Origin;\r\n if (this._renderMode() === RenderModes.Edit) {\r\n if (!currencyModel.Origin) {\r\n showCurrency = JSON.parse(value.Data.Value);\r\n showCurrency.Currency.Icon = showCurrency.Currency.Icon._model;\r\n } else {\r\n showCurrency = currencyModel.Origin;\r\n }\r\n }\r\n\r\n showCurrency.Value = this.ApplyCulture(showCurrency.Value.toString());\r\n\r\n this._value(showCurrency.Value);\r\n currencyModel.Origin? this._rateDate(currencyModel.Origin.RateDate) : this._rateDate(showCurrency.RateDate);\r\n\r\n this._originalValue = {\r\n Value: showCurrency.Value,\r\n RateDate: this._rateDate(),\r\n CurrencyId: showCurrency.Currency ? showCurrency.Currency.Id : null\r\n };\r\n\r\n this._originalCurrency = currencyModel.Origin ? currencyModel.Origin : showCurrency;\r\n\r\n if(showCurrency.Currency) {\r\n this._selectedCurrency({\r\n IsoCode: showCurrency.Currency.IsoCode,\r\n Icon: new Icon(showCurrency.Currency.Icon),\r\n Id: showCurrency.Currency.Id,\r\n Name: showCurrency.Currency.Name\r\n });\r\n }\r\n this._errorResolving(false);\r\n } else {\r\n CurrencyStore.GetCurrencies()\r\n .then((response) => {\r\n if (!response.length) {\r\n this._errorResolving(true);\r\n return;\r\n }\r\n\r\n const userCurrencyIso = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_CURRENCY).toLowerCase();\r\n const userCurrency = _.find(response, currencyModel => currencyModel.IsoCode\r\n && currencyModel.IsoCode.toLowerCase() === userCurrencyIso);\r\n const defaultCurrency = userCurrency ? userCurrency : response[0];\r\n\r\n _.forEach(response,\r\n (currency: ICurrency) => {\r\n const icon = new Icon(currency.Icon);\r\n this._availableCurrencies.push({\r\n IsoCode: currency.IsoCode,\r\n Icon: icon,\r\n Id: currency.Id,\r\n Name: currency.Name\r\n });\r\n });\r\n\r\n const icon = new Icon(defaultCurrency.Icon);\r\n this._rateDate(moment().format());\r\n this._selectedCurrency({\r\n IsoCode: defaultCurrency.IsoCode,\r\n Icon: icon,\r\n Id: defaultCurrency.Id,\r\n Name: defaultCurrency.Name\r\n });\r\n this._errorResolving(false);\r\n })\r\n .fail((error) => {\r\n // JSON.parse(error.message).ErrorMessage;\r\n });\r\n }\r\n }\r\n }\r\n\r\n ApplyCulture(value: string): string {\r\n if (!!value && this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Currency) {\r\n return FormatConverter.ConvertDecimal(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n get FormatDisplayValue() {\r\n const value = this._value();\r\n\r\n if (!!value && this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Currency) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n Number(value.replace(/[.,]/g, '.')).toFixed(this.FieldModel.Size)\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n Deserialize() {\r\n const field = _.first(this._model().Fields);\r\n if (field) {\r\n if (!this._isReadonly) {\r\n const value = {\r\n CurrencyId: this._selectedCurrency().Id,\r\n Currency: this._selectedCurrency(),\r\n Value: this._value(),\r\n RateDate: this._rateDate()\r\n };\r\n return [`${field.EntityName}.${field.Name}`, JSON.stringify(value)];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n GetValue(){\r\n let currencyValue: ICurrencyValueModel =\r\n {\r\n CurrencyId: this._selectedCurrency().Id,\r\n Currency: {\r\n Id: this._selectedCurrency().Id,\r\n Name: this._selectedCurrency().Name,\r\n IsoCode: this._selectedCurrency().IsoCode,\r\n Icon: this._selectedCurrency().Icon.Model\r\n },\r\n RateDate: this._rateDate(),\r\n Value: this._value()\r\n };\r\n\r\n return currencyValue\r\n }\r\n\r\n private ParseValue(value: IControlValue) {\r\n let currencyModel: { Origin: ICurrencyValueModel, Converted: ICurrencyValueModel } = value.Data.Value;\r\n if (!currencyModel.Origin) {\r\n currencyModel = JSON.parse(value.Data.Value);\r\n }\r\n\r\n return currencyModel;\r\n }\r\n\r\n private ChangeRate(newDate: Date) {\r\n const rateDate = moment(newDate).format(DATE_FORMATS.SHORT_DATE.Format);\r\n this._rateDate(rateDate);\r\n }\r\n\r\n private OnSelectCurrency(currency: ICurrency) {\r\n this._selectedCurrency(currency);\r\n this._dropDown.Toggle();\r\n }\r\n\r\n private InitCurrencyDropdown(el: HTMLElement) {\r\n this._dropDown = new JBoxDropDown({\r\n onCreated: () => {\r\n this._dropDown.SetContent();\r\n },\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n addClass: \"currency-dropdown\",\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n offset: {\r\n x: 36,\r\n y: -11\r\n }\r\n }\r\n });\r\n }\r\n\r\n SetAvailableCurrencies(response: Array<ICurrency>) {\r\n if (!response.length)\r\n return;\r\n let defaultCurrency = response[0];\r\n _.forEach(response, (currency: ICurrency) => {\r\n const icon = new Icon(currency.Icon);\r\n if (currency.Icon.IsDefault) {\r\n defaultCurrency = currency;\r\n }\r\n this._availableCurrencies.push({\r\n IsoCode: currency.IsoCode,\r\n Icon: icon,\r\n Id: currency.Id,\r\n Name: currency.Name\r\n });\r\n\r\n });\r\n }\r\n\r\n private ShowAvailableCurrencies(data, event) {\r\n if (!this._availableCurrencies().length && !this._isReadonly) {\r\n CurrencyStore.GetCurrencies()\r\n .then((response) => {\r\n if (!response.length) {\r\n this._errorResolving(true);\r\n return;\r\n }\r\n this.SetAvailableCurrencies(response);\r\n this._errorResolving(false);\r\n this.InitCurrencyDropdown(event.currentTarget);\r\n this._dropDown.Open();\r\n })\r\n } else {\r\n if (this._dropDown) {\r\n this._dropDown.Toggle();\r\n } else {\r\n this.InitCurrencyDropdown(event.currentTarget);\r\n this._dropDown.Open();\r\n }\r\n }\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n // label\r\n if (this.Properties.Label) {\r\n const labelStyle = {backgroundColor: null, color: null};\r\n\r\n _.each(this.Properties.Label.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n // textInput\r\n if (this.Properties.TextInput) {\r\n const textInputStyle = {backgroundColor: null};\r\n\r\n _.each(this.Properties.TextInput.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n }\r\n\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if(!this.FieldModel.HasLinkEditorVisibility){\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL; //default fontWeight\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch ( style.Name.toLowerCase() ) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n IsValid(): boolean {\r\n this._isValid(!this._isRequired || (!!this._value() && !!this._rateDate() && !!this._selectedCurrency()));\r\n return this._isValid();\r\n }\r\n\r\n IsModified(): boolean {\r\n const value = {\r\n CurrencyId: this._selectedCurrency().Id,\r\n Value: this._value(),\r\n RateDate: this._rateDate()\r\n };\r\n return this._originalValue !== value;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-money\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix currency\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"input-group\\\"> <span class=\\\"input-group-addon\\\"><i class=\\\"fa fa-eur\\\"></i></span> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"attr: {placeholder: Label}\\\"> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"currency-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div data-bind=\\\"tooltip: {content: GetRateTitle()}\\\" type=\\\"text\\\" class=\\\"input-group control record-field with-label\\\"> <!-- ko with: _selectedCurrency --> <span class=\\\"input-group-addon jBox-content-target\\\" data-bind=\\\"attr: {title: IsoCode}\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <div type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\" data-bind=\\\"text: FormatDisplayValue,\\r\\n style: _textInputStyle,\\r\\n attr: { 'data-text': Label,\\r\\n 'data-value': !!_value() }\\\"> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, attr: { 'data-control-position': LabelPosition }\\\" class=\\\"currency-control\\\"> <div class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div type=\\\"text\\\" class=\\\"input-group control record-field with-label\\\"> <!-- ko with: _selectedCurrency --> <span class=\\\"input-group-addon jBox-content-target\\\" data-bind=\\\"attr: {title: IsoCode}\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName } --><!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <div type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control help-currency-control\\\" data-bind=\\\"text: FormatDisplayValue,\\r\\n style: _textInputStyle,\\r\\n attr: { 'data-text': Label,\\r\\n 'data-value': !!_value() }\\\"> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display },\\r\\n\\t\\t\\t\\tclick: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"currency-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\tcss: {'has-error': !_isValid()}\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This field is required\\\"> </i> </label> <!-- ko ifnot: _errorResolving --> <div class=\\\"input-group\\\"> <!-- ko ifnot: _isReadonly --> <span class=\\\"btn default input-group-addon jBox-content-target\\\" data-bind=\\\"click: ShowAvailableCurrencies, attr: { title: _selectedCurrency() ? _selectedCurrency().IsoCode : '' }\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t <div class='currency-dropdown-wrapper'>\\r\\n\\t\\t\\t <!-- ko foreach: $data._availableCurrencies -->\\r\\n\\t\\t\\t\\t <div class='currency-dropdown-item'>\\r\\n\\t\\t\\t\\t <span class='input-group-addon' data-bind='click: $parent.OnSelectCurrency.bind($parent, $data), attr: {title: IsoCode}'>\\r\\n <!-- ko with: Icon -->\\r\\n <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko -->\\r\\n <!-- /ko -->\\r\\n </span>\\r\\n\\t\\t\\t\\t </div>\\r\\n\\t\\t\\t\\t <!-- /ko -->\\r\\n\\t\\t\\t\\t</div>\\\"> <!-- ko with: _selectedCurrency --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <!-- ko if: _isReadonly --> <span class=\\\"input-group-addon disabled\\\"> <span class=\\\"text-left additional-icon fa-stack fa fa-3x fa-eur\\\"></span> </span> <!-- /ko --> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"\\r\\n textInput: _value,\\r\\n style: _textInputStyle,\\r\\n attr: {'readonly': _isReadonly, 'required': _isRequired, 'tabindex': _isReadonly ? -1 : 1 },\\r\\n inputMask: { fieldModel: FieldModel, value: _value }\\r\\n \\\" data-with-number-group-separators=\\\"true\\\"> <!-- ko if: _selectedCurrency --> <!-- ko ifnot: _isReadonly --> <div class=\\\"input-group-addon input-group date calendar-wrapper\\\" data-bind=\\\"datetimepicker: {\\r\\n value: _rateDate(),\\r\\n onUpdate: function(newDate) { ChangeRate(newDate) },\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: 'MM/DD/YYYY',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thorizontal: 'right',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvertical: 'bottom',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tforceParse: false\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}, tooltip: { content: GetRateTitle() }\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" style=\\\"display:none\\\"/> <span class=\\\"input-group-addon custom time-picker-button\\\"> <span class=\\\"btn default glyphicon glyphicon-calendar\\\"></span> </span> </div> <!-- /ko --> <!-- ko if: _isReadonly --> <div class=\\\"input-group-addon input-group date calendar-wrapper disabled\\\"> <span class=\\\"glyphicon glyphicon-calendar\\\"></span> </div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: _errorResolving --> <input class=\\\"form-control control record-field es-textarea-control subFormControl currency-error\\\" readonly=\\\"readonly\\\" data-bind=\\\"style: _textInputStyle, value: 'Error resolving currency rate'\\\"> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView iframe-control form-standart-control\\\"> <iframe data-bind=\\\"attr: {src: _url, height: _heightPX || ''}, css: {'isHeight': !!+_heightPX()}\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" height=\\\"200\\\" class=\\\"iframe-element\\\"></iframe> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { RenderModes } from \"Core/Constant\";\r\n\r\nimport IFrameConfigJson from 'Core/Controls/IFrame/Configs/iframe-config.json';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport ViewTemplate from 'Core/Controls/IFrame/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/IFrame/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/IFrame/Templates/Design.html';\r\nimport { CookieManager } from '../../Common/CookieManager';\r\n\r\nko.templates['Core/Controls/IFrame/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/IFrame/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrame/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrame/Templates/Design'] = DesignTemplate;\r\n\r\nexport class IFrame extends BaseControl {\r\n\tprivate _url: KnockoutObservable<string>;\r\n\tprivate _heightPX: KnockoutObservable<number>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, IFrameConfigJson);\r\n\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis.Init();\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tInit(): void {\r\n\t\tthis._url = ko.observable('');\r\n\t\tthis._heightPX = ko.observable(null);\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tGetDesignerHeight(): string {\r\n\t\treturn `${+this._heightPX()}px`;\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Url) {\r\n\t\t\t\t_.each(this.Properties.Url.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.Url) {\r\n\t\t\t\t\t\tlet url = property.Url as string;\r\n\r\n\t\t\t\t\t\tif(url.indexOf('api/BIApi/GetDashboard?')){\r\n\t\t\t\t\t\t\turl = url.replace('api/BIApi/GetDashboard?', `api/BIApi/GetDashboard?access_token=${CookieManager.GetAuthToken()}&`);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis._url(url);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.Properties.Height) {\r\n\t\t\t\t_.each(this.Properties.Height.Properties, (property: any) => {\r\n\t\t\t\t\tif (!!property.HeightPX){\r\n\t\t\t\t\t\tthis._heightPX(property.HeightPX);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-window-maximize\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"iframe-control\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <label class=\\\"header-number iFrameLabel\\\"> <span class=\\\"text-left additional-icon custom-color-option fa fa-3x fa-stack fa-window-maximize\\\"></span> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> <div data-bind=\\\"attr: { 'data-text': _url() ? _url() : 'Url not specifed' }, style: { height: GetDesignerHeight() }, css: {'isHeight': !!+_heightPX()}\\\" class=\\\"form-control control with-label textarea-control\\\"></div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {DEFAULT_ICONS, FIELD_TYPES, RenderModes, TABLE_TYPES} from \"Core/Constant\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\n\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\n\r\nimport ProductConfiguratorConfig from 'Core/Controls/ProductConfigurator/Configs/product-configurator-config.json';\r\n\r\nimport {ProductConfigurator as ProductConfiguratorComponent} from 'Core/Components/Controls/ProductConfigurator/ProductConfigurator';\r\n\r\nimport ToolBarTemplate from \"Core/Controls/ProductConfigurator/Templates/ToolBar.html\";\r\nimport ViewTemplate from \"Core/Controls/ProductConfigurator/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/ProductConfigurator/Templates/HelpView.html\";\r\n\r\nko.templates['Core/Controls/ProductConfigurator/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/ProductConfigurator/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/ProductConfigurator/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/ProductConfigurator/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nexport class ProductConfigurator extends ComplexControl {\r\n private _component: ProductConfiguratorComponent;\r\n\r\n private _subjectEntityId: number;\r\n private _subjectRecordId: number;\r\n\r\n private _productsEntityId: number;\r\n private _rootProductsViewId?: number;\r\n private _descriptionFieldId?: number;\r\n\r\n private _config: any;\r\n\r\n Disabled: KnockoutObservable<boolean>;\r\n Tooltip: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, ProductConfiguratorConfig);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\r\n this.Disabled = ko.observable(false);\r\n this.Tooltip = ko.observable(null);\r\n\r\n this.Init();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n this._subjectEntityId = value.SubjectEntityId;\r\n this._subjectRecordId = value.SubjectRecordId;\r\n\r\n if (!this._subjectEntityId || !this._subjectRecordId) {\r\n this.Disabled(true);\r\n this.Tooltip('Subject record is required to open product configurator');\r\n return;\r\n }\r\n\r\n this._component = new ProductConfiguratorComponent({\r\n OrdersEntityId: this._subjectEntityId,\r\n ProductsEntityId: this._productsEntityId,\r\n RootProductsViewId: this._rootProductsViewId,\r\n DescriptionFieldId: this._descriptionFieldId,\r\n OrderId: this._subjectRecordId,\r\n ControlId: this.GetControlId(),\r\n Screen: this.Screen,\r\n General: {\r\n ReloadScreen: this.GetConfigurationBooleanPropertyValue('ReloadScreen')\r\n },\r\n HidePCFGROUPIfEmpty: {\r\n HiddenPCFGROUPSIfEmpty: this.GetHiddenPCFGROUPSIfEmpty('HidePCFGROUPIfEmpty')\r\n },\r\n ImageSizes: {\r\n RootProductsPage: {\r\n ProductSelection: this.GetImageSize('ProductSelectionPopup')\r\n },\r\n StartPage: {\r\n OrderedProduct: this.GetImageSize('OrderedProduct')\r\n },\r\n ConfigurationPage: {\r\n SelectedComponent: this.GetImageSize('SelectedComponent'),\r\n Tiles: this.GetImageSize('Tiles'),\r\n InEx: this.GetImageSize('InExPopup')\r\n }\r\n },\r\n ConfigurationRoles: {\r\n Level1Value: this.GetConfigurationRoleValue('Level1'),\r\n Level2Value: this.GetConfigurationRoleValue('Level2'),\r\n LockLevel1: this.GetConfigurationBooleanPropertyValue('LockLevel1')\r\n },\r\n Annotations: {\r\n UseAnnotations: this.GetConfigurationAnnotationsValue('Annotations'),\r\n ShowAnnotationsModeByDefault: this.GetConfigurationAnnotationsValue('ShowAnnotations')\r\n },\r\n AlternativePrice: {\r\n EnableAlternativePriceCalculation: this.GetConfigurationAlternativePriceValue('EnableAlternativePriceCalculation'),\r\n AlternativePriceCalculationRule: this.GetConfigurationAlternativePriceValue('AlternativePriceCalculationRule')\r\n }\r\n });\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n ShowConfigurator() {\r\n this._component.FlushNavigationStack();\r\n this._component.ShowStartPage();\r\n }\r\n\r\n private Init() {\r\n this.ApplyProperties();\r\n switch (this._renderMode()) {\r\n case RenderModes.Design:\r\n this.InitForDesignTime();\r\n return;\r\n\r\n case RenderModes.View:\r\n case RenderModes.Edit:\r\n this.InitForRuntime();\r\n return;\r\n }\r\n }\r\n\r\n private InitForDesignTime() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.ProductConfigurator));\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('IMAGE', FIELD_TYPES.Image, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('PRICE', FIELD_TYPES.Decimal, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n }\r\n\r\n private InitForRuntime() {\r\n const attachedFields = this.Model.Fields;\r\n\r\n this._productsEntityId = attachedFields[0].EntityId;\r\n\r\n const lastField = attachedFields[attachedFields.length - 1];\r\n if (lastField.EntityTypeName === TABLE_TYPES.Link) {\r\n this._descriptionFieldId = lastField.Id;\r\n this._rootProductsViewId = attachedFields[attachedFields.length - 2].EntityTypeName === TABLE_TYPES.Sub && attachedFields[attachedFields.length - 2].EntityId;\r\n } else if (lastField.EntityTypeName === TABLE_TYPES.Sub) {\r\n this._rootProductsViewId = lastField.EntityId;\r\n }\r\n }\r\n\r\n private GetHiddenPCFGROUPSIfEmpty(hidePCFGROUPIfEmptyParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(hidePCFGROUPIfEmptyParam);\r\n\r\n const hiddenPCFGROUPSIfEmpty = [];\r\n if (propertyValue) {\r\n const hiddenPCFGROUPSIfEmptyString = propertyValue.split(';');\r\n _.each(hiddenPCFGROUPSIfEmptyString, groupString => {\r\n if (groupString && !isNaN(Number(groupString))) {\r\n hiddenPCFGROUPSIfEmpty.push(Number(groupString));\r\n }\r\n });\r\n }\r\n\r\n return hiddenPCFGROUPSIfEmpty;\r\n }\r\n\r\n private GetImageSize(typeName: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(typeName);\r\n const value = propertyValue ? +propertyValue.Value : null;\r\n\r\n switch (value) {\r\n case 1:\r\n return 60;\r\n case 2:\r\n return 70;\r\n case 3:\r\n return 80;\r\n case 4:\r\n return 90;\r\n default:\r\n return 100;\r\n }\r\n }\r\n\r\n private GetConfigurationRoleValue(relationTypeValue: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(relationTypeValue);\r\n\r\n return propertyValue ? propertyValue : null;\r\n }\r\n\r\n private GetConfigurationBooleanPropertyValue(booleanParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(booleanParam);\r\n\r\n return !!propertyValue;\r\n }\r\n\r\n private GetConfigurationAnnotationsValue(annotationParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(annotationParam);\r\n\r\n return propertyValue;\r\n }\r\n\r\n private GetConfigurationAlternativePriceValue(alternativePriceParam: string) {\r\n const propertyValue = this.GeneralProperties.GetPropertyValue(alternativePriceParam);\r\n\r\n return propertyValue;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"product-configurator-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-industry\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"configureBtnBox\\\"> <a href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl configureBtn\\\" data-bind=\\\"click: ShowConfigurator, css: {disabled: Disabled}, tooltip: {content: Tooltip()}, style: _style\\\"> <i class=\\\"fa fa-industry\\\" aria-hidden=\\\"true\\\"></i><span><!-- ko text: _labels.CONFIGURE --><!-- /ko --></span> </a> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"configureBtnBox\\\"> <a href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl configureBtn\\\" data-bind=\\\"click: ShowConfigurator, css: {disabled: Disabled}, tooltip: {content: Tooltip()}, style: _style\\\"> <i class=\\\"fa fa-industry\\\" aria-hidden=\\\"true\\\"></i><span><!-- ko text: _labels.CONFIGURE --><!-- /ko --></span> </a> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {DropdownValuesDto} from \"./Models/DropdownValuesDto\";\r\n\r\nexport class SpimStore {\r\n GetAlphaNumericValues(params: { FieldId: number, RecordId: number }): P.Promise<DropdownValuesDto> {\r\n const deferred = P.defer<DropdownValuesDto>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: 'api/ScreenFormApi/GetAlphaNumericValues',\r\n type: 'GET',\r\n dataType: 'json',\r\n },\r\n params: params\r\n }).then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject);\r\n } else {\r\n deferred.reject({message: 'Error getting alphanumeric values'})\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}","import {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nexport abstract class SpimValueViewModel {\r\n protected constructor(protected recordId: number) {\r\n }\r\n\r\n abstract GetTemplate(): any;\r\n abstract GetValue(): SpimValueModel;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\n\r\nimport NumericTemplate from '../Templates/FeatureTypes/Numeric.html';\r\n\r\nexport class NumericValueViewModel extends SpimValueViewModel {\r\n DisplayValue: KnockoutObservable<string>;\r\n\r\n constructor(recordId: number, value: number) {\r\n super(recordId);\r\n\r\n this.DisplayValue = ko.observable(FormatConverter.ConvertDecimal(value && value.toString()));\r\n }\r\n\r\n GetTemplate() {\r\n return NumericTemplate;\r\n }\r\n\r\n GetValue() {\r\n const spimValue = new SpimValueModel();\r\n spimValue.RecordId = this.recordId;\r\n\r\n spimValue.FeatureType = FeatureTypes.Numeric;\r\n\r\n const value = parseFloat(this.DisplayValue() && this.DisplayValue().replace(',', '.'));\r\n\r\n if (!isNaN(value)) {\r\n spimValue.NumericValue = value;\r\n }\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"spim\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"inputMask: { type: 'Decimal', decimalSize: 2, value: DisplayValue}, textInput: DisplayValue\\\" data-with-number-group-separators=\\\"true\\\"/> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\n\r\nimport RangeTemplate from '../Templates/FeatureTypes/Range.html';\r\n\r\nexport class RangeValueViewModel extends SpimValueViewModel {\r\n RangeLowDisplayValue: KnockoutObservable<string>;\r\n RangeHighDisplayValue: KnockoutObservable<string>;\r\n\r\n constructor(recordId: number, rangeLow: number, rangeHigh: number) {\r\n super(recordId);\r\n\r\n this.RangeLowDisplayValue = ko.observable(FormatConverter.ConvertDecimal(rangeLow && rangeLow.toString()));\r\n this.RangeHighDisplayValue = ko.observable(FormatConverter.ConvertDecimal(rangeHigh && rangeHigh.toString()));\r\n }\r\n\r\n GetTemplate(): any {\r\n return RangeTemplate;\r\n }\r\n\r\n GetValue(): any {\r\n const spimValue = new SpimValueModel();\r\n\r\n spimValue.RecordId = this.recordId;\r\n spimValue.FeatureType = FeatureTypes.Range;\r\n\r\n let lowValue = parseFloat(this.RangeLowDisplayValue() && this.RangeLowDisplayValue().replace(',', '.'));\r\n spimValue.RangeLow = isNaN(lowValue) ? null : lowValue;\r\n\r\n let highValue = parseFloat(this.RangeHighDisplayValue() && this.RangeHighDisplayValue().replace(',', '.'));\r\n spimValue.RangeHigh = isNaN(highValue) ? null : highValue;\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"spim\\\"> <div class=\\\"range-value\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"\\r\\n inputMask: { type: 'Decimal', decimalSize: 2, value: RangeLowDisplayValue },\\r\\n textInput: RangeLowDisplayValue\\r\\n \\\" data-with-number-group-separators=\\\"true\\\"/> </div> <div class=\\\"delimiter\\\">-</div> <div class=\\\"range-value\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"\\r\\n inputMask: { type: 'Decimal', decimalSize: 2, value: RangeHighDisplayValue },\\r\\n textInput: RangeHighDisplayValue\\r\\n \\\" data-with-number-group-separators=\\\"true\\\"/> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\n\r\nimport LogicTemplate from '../Templates/FeatureTypes/Logic.html';\r\n\r\nexport class LogicValueViewModel extends SpimValueViewModel {\r\n private Checked: KnockoutObservable<boolean>;\r\n\r\n constructor(recordId: number, value: boolean) {\r\n super(recordId);\r\n\r\n this.Checked = ko.observable(value);\r\n }\r\n\r\n GetTemplate(): any {\r\n return LogicTemplate;\r\n }\r\n\r\n GetValue(): SpimValueModel {\r\n const spimValue = new SpimValueModel();\r\n\r\n spimValue.RecordId = this.recordId;\r\n spimValue.FeatureType = FeatureTypes.Logic;\r\n spimValue.LogicalValue = this.Checked();\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"spim\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"uniform: Checked, checked: Checked\\\"> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./SpimValueViewModel\";\r\nimport {DropdownValueDto, DropdownValuesDto} from \"../Store/Models/DropdownValuesDto\";\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport AlphaNumericTemplate from '../Templates/FeatureTypes/AlphaNumeric.html';\r\n\r\nexport class AlphaNumericValueViewModel extends SpimValueViewModel {\r\n private _items: KnockoutObservableArray<DropdownValueDto>;\r\n private _selectedItem: KnockoutObservable<DropdownValueDto>;\r\n private _selectedItemId: KnockoutObservable<number>;\r\n private _label = LABELS;\r\n\r\n constructor(recordId: number, value: number, displayValue: string, dropdownValues: DropdownValuesDto) {\r\n super(recordId);\r\n\r\n this._items = ko.observableArray(dropdownValues.Items);\r\n\r\n const selectedValue = _.find(dropdownValues.Items, item => item.RecordId === value);\r\n this._selectedItem = ko.observable(selectedValue);\r\n this._selectedItemId = ko.observable(selectedValue && selectedValue.RecordId);\r\n }\r\n\r\n GetTemplate(): any {\r\n return AlphaNumericTemplate;\r\n }\r\n\r\n GetValue(): SpimValueModel {\r\n const spimValue = new SpimValueModel();\r\n\r\n spimValue.RecordId = this.recordId;\r\n spimValue.FeatureType = FeatureTypes.AlphaNumeric;\r\n spimValue.AlphaNumericValue = this._selectedItem().RecordId;\r\n spimValue.AlphaNumericDisplayValue = this._selectedItem().Label;\r\n\r\n return spimValue;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"EditScreenView label-input form-standart-control dropdown-container spim-container\\\"> <div class=\\\"spim\\\"> <div class=\\\"dropdown-wraper\\\"> <select data-bind=\\\"selectize: _items,\\r\\n value: _selectedItemId,\\r\\n optionsText: 'Label',\\r\\n optionsValue: 'RecordId',\\r\\n object: _selectedItem,\\r\\n options: {\\r\\n dropdownParent: 'body',\\r\\n\\t\\t\\t\\t dropdownDirection: 'auto',\\r\\n plugins: ['hidden_textfield','dropdown_direction'],\\r\\n placeholder: _label.SELECT_LABEL + '...'\\r\\n }\\\" class=\\\"form-control control record-field drop-down dropdownselect customDropDown\\\"></select> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport 'knockout-selectize';\r\n\r\nimport {FeatureTypes} from \"Core/Common/Enums/FeatureTypes\";\r\n\r\nimport {BaseControl, IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\n\r\nimport {SpimStore} from \"./Store/SpimStore\";\r\n\r\nimport {SpimValueModel} from \"Core/Controls/Grid/Models/GridDataModel/GridCellValueModel\";\r\n\r\nimport {SpimValueViewModel} from \"./Model/SpimValueViewModel\";\r\nimport {NumericValueViewModel} from \"./Model/NumericValueViewModel\";\r\nimport {RangeValueViewModel} from \"./Model/RangeValueViewModel\";\r\nimport {LogicValueViewModel} from \"./Model/LogicValueViewModel\";\r\nimport {AlphaNumericValueViewModel} from \"./Model/AlphaNumericValueViewModel\";\r\n\r\nimport EditTemplate from './Templates/Edit.html';\r\nimport {Notifier} from \"../../Common/Notifier\";\r\n\r\nko.templates['Core/Controls/Spim/Templates/Edit'] = EditTemplate;\r\n\r\nexport class Spim extends BaseControl {\r\n private _store: SpimStore;\r\n\r\n private _originalValue: SpimValueModel;\r\n private _viewModel: KnockoutObservable<SpimValueViewModel>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n\r\n this._store = new SpimStore();\r\n this._viewModel = ko.observable(null);\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue): void {\r\n this._originalValue = value.Data.Value as SpimValueModel;\r\n this.LoadData();\r\n }\r\n\r\n GetValue(): SpimValueModel {\r\n return this._viewModel() && this._viewModel().GetValue() || null;\r\n }\r\n\r\n Deserialize() {\r\n return this.GetValue();\r\n }\r\n\r\n IsModified(): boolean {\r\n return _.isEqual(this._originalValue, this.GetValue());\r\n }\r\n\r\n private LoadData() {\r\n switch (this._originalValue.FeatureType) {\r\n case FeatureTypes.Numeric:\r\n this._viewModel(new NumericValueViewModel(this._originalValue.RecordId, this._originalValue.NumericValue));\r\n break;\r\n\r\n case FeatureTypes.Range:\r\n this._viewModel(new RangeValueViewModel(this._originalValue.RecordId, this._originalValue.RangeLow, this._originalValue.RangeHigh));\r\n break;\r\n\r\n case FeatureTypes.Logic:\r\n this._viewModel(new LogicValueViewModel(this._originalValue.RecordId, this._originalValue.LogicalValue));\r\n break;\r\n\r\n case FeatureTypes.AlphaNumeric:\r\n this._store.GetAlphaNumericValues({FieldId: this.FieldModel.Id, RecordId: this._originalValue.RecordId})\r\n .then(values => this._viewModel(new AlphaNumericValueViewModel(this._originalValue.RecordId, this._originalValue.AlphaNumericValue, this._originalValue.AlphaNumericDisplayValue, values)))\r\n .fail(error => new Notifier().Failed(error.message));\r\n\r\n break;\r\n }\r\n }\r\n}\r\n","// Module\nvar code = \"<!--ko with: _viewModel--> <!--ko template: {html: GetTemplate}--><!--/ko--> <!--/ko--> \";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\n\r\nexport class PageResponse {\r\n @deserialize\r\n PageId: number;\r\n\r\n @deserialize\r\n PageNumber: number;\r\n\r\n @deserialize\r\n NumberOfPages: number;\r\n\r\n @deserializeAs(ScreenModel)\r\n Screen: ScreenModel;\r\n}","import {GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {IConsultScreenLayoutValue} from 'Core/GeneralProperties/Managers/ConsultScreenLayout/IConsultScreenLayoutValue';\r\n\r\nimport {PageResponse} from './Models/PageResponse';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class BookStore {\r\n constructor(private _entityId: number, private _relatedEntityId: number) {\r\n }\r\n\r\n GetPage(bookId: number, pageNumber: number, recordId: number, controlId: number, pageLayout: IConsultScreenLayoutValue): P.Promise<PageResponse> {\r\n const deferred = P.defer<PageResponse>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/BookControlApi/GetPage',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: {\r\n BookId: bookId,\r\n EntityId: this._entityId,\r\n RelatedEntityId: this._relatedEntityId,\r\n RecordId: recordId,\r\n PageNumber: pageNumber,\r\n ControlId: controlId,\r\n PageLayout: pageLayout\r\n }\r\n })\r\n .then(page => deferred.resolve(GenericDeserialize<PageResponse>(page, PageResponse)))\r\n\t\t\t.fail(error => deferred.reject(this.GetResponseError(error, LABELS.ERROR_GETTING_BOOK_PAGE)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\nimport {EVENTS as CONSULT_SCREEN_EVENTS} from 'Core/Screens/ConsultScreen/Events';\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl, IControlValue} from '../BaseControl/BaseControl';\r\nimport {RecordLinker} from 'Core/Components/RecordLinker/RecordLinker';\r\n\r\nimport BookConfigJson from 'Core/Controls/Book/Configs/book-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {BookStore} from './Store/BookStore';\r\nimport {PageResponse} from './Store/Models/PageResponse';\r\n\r\nimport ViewTemplate from \"Core/Controls/Book/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Book/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Book/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/Book/Templates/Design.html\";\r\n\r\nko.templates['Core/Controls/Book/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Book/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Book/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Book/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Book extends BaseControl {\r\n private _store: BookStore;\r\n private _bookId: number;\r\n private _dataLoading: boolean;\r\n\r\n private _notShownReason: KnockoutObservable<string>;\r\n private _currentPage: KnockoutObservable<any>;\r\n private _paginator: Paginator;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, BookConfigJson);\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this.InitRuntime();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n if (this._bookId && !this._dataLoading) {\r\n this.LoadPage(1);\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n this.InitialLoad();\r\n }\r\n\r\n private InitialLoad() {\r\n if (this.GetForm().GetScreen().NestedLevel > 1) {\r\n this._notShownReason(this._labels.BOOK_CANNOT_BE_RENDERED_ON_THE_BOOK_PAGE);\r\n return;\r\n }\r\n\r\n this._bookId = this.GetForm().GetScreen().GetRecordId();\r\n\r\n if (this._isRendered()) {\r\n this._dataLoading = true;\r\n this.LoadPage(1);\r\n }\r\n }\r\n\r\n\r\n private InitRuntime() {\r\n this._store = new BookStore(this.GetForm().GetScreen().GetEntityId(), this.GetModel().EntityId);\r\n this._currentPage = ko.observable(null);\r\n this._notShownReason = ko.observable(null);\r\n\r\n this._paginator = new Paginator(-1, true);\r\n this._paginator.PageNumber = 1;\r\n this._paginator.RecordsPerPage = 1;\r\n\r\n this.BindRuntimeEvents();\r\n }\r\n\r\n private BindRuntimeEvents() {\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => this.LoadPage(this._paginator.PageNumber));\r\n }\r\n\r\n private LoadPage(pageNumber: number, recordId: number = 0) {\r\n BlockUI.Block({Target: this._el});\r\n\r\n this.DisposeCurrentPage();\r\n const pageLayout = this.GetPageLayout();\r\n\r\n this._store.GetPage(this._bookId, pageNumber, recordId, this.GetControlId(), pageLayout)\r\n .then(async page => {\r\n if (!page) {\r\n this._notShownReason(this._labels.THERE_ARE_NO_PAGES)\r\n return;\r\n }\r\n\r\n if (!page.Screen) {\r\n this._notShownReason(this._labels.SCREEN_NOT_FOUND_FOR_THE_PAGE);\r\n return;\r\n }\r\n\r\n this._notShownReason(null);\r\n await this.RenderPage(page);\r\n })\r\n .fail(error => {\r\n this._notShownReason(error.message)\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n this._dataLoading = false;\r\n });\r\n }\r\n\r\n private DisposeCurrentPage() {\r\n if (this._currentPage()) {\r\n this._currentPage().Dispose();\r\n this._currentPage(null);\r\n }\r\n }\r\n\r\n GetBookClass(layoutProperty):string{\r\n let layout = layoutProperty;\r\n let blocksClass: string = ' ';\r\n\r\n if (layout.ActionBar.Checked && layout.BottomBar.Checked && layout.MainBlocks.Checked) {\r\n return 'bookFullBlocks';\r\n }\r\n if (layout.ActionBar.Checked){\r\n blocksClass += 'bookActionBar ';\r\n }\r\n if (layout.MainBlocks.Checked){\r\n blocksClass += 'bookMainBlocks ';\r\n }\r\n if (layout.BottomBar.Checked){\r\n blocksClass += 'bookBottomBar ';\r\n }\r\n return blocksClass;\r\n }\r\n\r\n get PageLayoutBlockClass(): string {\r\n return this.GetBookClass(this.GetPageLayout());\r\n }\r\n\r\n get DesignPageLayoutClass(): string {\r\n return this.GetBookClass(this.GeneralProperties.GetPropertyValue('Layout') || this.GeneralProperties.GetPropertyDefaultValue('Layout'));\r\n }\r\n\r\n private GetPageLayout() {\r\n return this.GeneralProperties.GetPropertyValue('Layout') || this.GeneralProperties.GetPropertyDefaultValue('Layout')\r\n }\r\n\r\n private async RenderPage(page: PageResponse) {\r\n page.Screen.IsNested = true;\r\n page.Screen.NestedLevel = this.GetForm().GetScreen().NestedLevel + 1;\r\n\r\n const screenFactory = (await import('Core/Screens/ScreenFactory')).ScreenFactory;\r\n const screen = screenFactory.GetScreenInstance(page.Screen);\r\n screen.IsOpenedViaBookControl = true;\r\n screen.SetIsReady(true);\r\n\r\n screen.On(CONSULT_SCREEN_EVENTS.LINK_BOOK_RECORD, this, (eventArgs) => {\r\n BlockUI.Block({Target: this._el});\r\n\r\n const mainScreen = this.GetForm().GetScreen();\r\n\r\n RecordLinker.LinkRecord({\r\n MainTableId: mainScreen.GetEntityId(),\r\n MainRecordId: mainScreen.GetRecordId(),\r\n LinkedTableId: eventArgs.data.EntityId,\r\n LinkedRecordId: eventArgs.data.RecordId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n Notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(w => Notifier.Warning(w.replace(\"/n\", \"<br>\")));\r\n }\r\n\r\n Notifier.Success(result.OperationMessage);\r\n this.LoadPage(1, eventArgs.data.RecordId);\r\n });\r\n });\r\n\r\n this._currentPage(screen);\r\n this.SetPageNumberWithoutTriggeringChangeEvent(page.PageNumber);\r\n this._paginator.TotalRecords = page.NumberOfPages;\r\n }\r\n\r\n private SetPageNumberWithoutTriggeringChangeEvent(pageNumber: number) {\r\n this._paginator.SkipChangeTrigger = true;\r\n this._paginator.PageNumber = pageNumber;\r\n this._paginator.SkipChangeTrigger = false;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"bookPageWrapper\\\" data-bind=\\\"css: {'notShownReason': _notShownReason}\\\"> <!--ko with: _notShownReason--> <div class=\\\"nonePageSelectedBook\\\"> <h3 data-bind=\\\"text: $data\\\"></h3> </div> <!--/ko--> <!--ko with: _paginator--> <div class=\\\"clearfix bookPagination\\\"> <div class=\\\"text-center\\\" data-bind=\\\"template: {name: $data.GetNextPrevTemplateName.bind($data)}\\\"></div> </div> <!--/ko--> <div class=\\\"bookPageWrapper-currentPage\\\" data-bind=\\\"css: {'bookPageEmpty': !_currentPage()}, class: PageLayoutBlockClass\\\"> <!--ko with: _currentPage--> <div data-bind=\\\"template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}, visible: _isReady\\\" class=\\\"bookPageContent\\\"></div> <!--/ko--> </div> <!--ko with: _paginator--> <div class=\\\"clearfix bookPagination\\\"> <div class=\\\"text-center\\\" data-bind=\\\"template: {name: $data.GetNextPrevTemplateName.bind($data)}\\\"></div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"consult-screen-layout\\\"> <div class=\\\"action-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-blocks\\\"> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div> <div class=\\\"bottom-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-book\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"consult-screen-layout designerMod\\\" data-bind=\\\"class: DesignPageLayoutClass\\\"> <div class=\\\"action-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-blocks\\\"> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div> <div class=\\\"bottom-bar\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\nimport {Modal} from 'Core/Common/Modal'\r\nimport {Event} from 'Core/Common/Event'\r\n\r\nimport SignatureEditScreenTemplate from 'Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen.html';\r\nimport {IControlParam} from \"../../../Screens/IScreen\";\r\nimport {GlobalManager, GLOBALS} from \"../../../GlobalManager/GlobalManager\";\r\nimport SignaturePad from \"../../../../libs/signature/signature_pad\";\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {ImageDataModel} from \"../../Image/Models/ImageDataModel\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nko.templates['Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen'] = SignatureEditScreenTemplate;\r\n\r\n//https://github.com/szimek/signature_pad\r\nexport class SignatureEditScreen extends Event {\r\n private _modal: Modal;\r\n private _isModal: boolean;\r\n private _iControlParams: IControlParam;\r\n private _labelName: string;\r\n protected _isIconVisible: boolean;\r\n private _signaturePad: SignaturePad;\r\n private _dataModel: KnockoutObservable<ImageDataModel>;\r\n\r\n constructor(params: IControlParam, dataModel: ImageDataModel) {\r\n super();\r\n\r\n this._iControlParams = params;\r\n this._labelName = this.GetName();\r\n this._isIconVisible = GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_CONTROL_ICONS) !== '0';\r\n\r\n this._dataModel = ko.observable(null);\r\n const newDataModel = new ImageDataModel();\r\n\r\n if (dataModel && dataModel.Files.length > 0){\r\n this._dataModel(dataModel);\r\n } else {\r\n this._dataModel(newDataModel);\r\n }\r\n\r\n this._isModal = false;\r\n this.AddEvent('SIGNATURE_IMAGE_SAVE')\r\n\r\n }\r\n\r\n GetName(): string{\r\n let name = this._iControlParams.Model.Name;\r\n\r\n if (this._iControlParams.Model.NameTranslations){\r\n _.each(this._iControlParams.Model.NameTranslations, item => {\r\n if (item.Selected && item.Translation && item.Translation !== '' && item.Translation !== null) {\r\n name = item.Translation;\r\n return;\r\n }\r\n });\r\n }\r\n\r\n return name;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Signature/SignatureEditScreen/Templates/SignatureEditScreen';\r\n }\r\n\r\n Show() {\r\n let defaultOptions = {\r\n addClass: 'signaturePadModal',\r\n width: MobileChecker.IsMobile() ? '95vw' : 450,\r\n height: MobileChecker.IsMobile() ? '60vh' : 330\r\n };\r\n\r\n this._modal = new Modal(_.extend(defaultOptions), false, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._isModal = true;\r\n this._modal.On('CLOSE', this, (eventArgs: any) => {\r\n this.Close();\r\n });\r\n\r\n this.InitSignature();\r\n }\r\n private ResizeCanvas(canvas){\r\n // Adjust canvas coordinate space taking into account pixel ratio,\r\n // to make it look crisp on mobile devices.\r\n // This also causes canvas to be cleared.\r\n\r\n // When zoomed out to less than 100%, for some very strange reason,\r\n // some browsers report devicePixelRatio as less than 1\r\n // and only part of the canvas is cleared then.\r\n var ratio = Math.max(window.devicePixelRatio || 1, 1);\r\n canvas.width = null;\r\n canvas.height = null;\r\n // This part causes the canvas to be cleared\r\n canvas.width = canvas.offsetWidth * ratio;\r\n canvas.height = canvas.offsetHeight * ratio;\r\n canvas.getContext(\"2d\").scale(ratio, ratio);\r\n this._signaturePad.clear(); // otherwise isEmpty() might return incorrect value\r\n }\r\n\r\n private InitSignature(){\r\n let wrapper = document.getElementById(\"signature-pad\");\r\n if (wrapper){\r\n let canvas = wrapper.querySelector(\"canvas\");\r\n if (canvas){\r\n this._signaturePad = new SignaturePad(canvas,{\r\n backgroundColor: 'rgb(255, 255, 255)'\r\n });\r\n this.ResizeCanvas(canvas);\r\n\r\n if (this._dataModel() && this._dataModel().Files.length > 0){\r\n this._signaturePad.fromDataURL(this._dataModel().Files[0].ImageData);\r\n }\r\n }\r\n }\r\n }\r\n\r\n Close(): void {\r\n if (this._modal) {\r\n $(window).off('keydown');\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Clear(){\r\n if (!this._signaturePad.isEmpty()){\r\n this._signaturePad.clear();\r\n } else {\r\n let notifier = new Notifier();\r\n notifier.Warning('The canvas is already empty');\r\n return;\r\n }\r\n }\r\n\r\n Save(){\r\n let dataImageString = this._signaturePad.toDataURL(\"image/jpeg\"); // save JPG\r\n this.Trigger('SIGNATURE_IMAGE_SAVE', {SignatureImage: dataImageString});\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._modal.Show();\r\n }\r\n\r\n}","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" class=\\\"signatureControlContainer\\\"> <div class=\\\"EditScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <div class=\\\"head actionBarSubForm\\\"> <label> <span class=\\\"leftBox\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: _labelName\\\"></span> </span> </label> <div class=\\\"bottomActionBar\\\"> <div class=\\\"leftBtnBox\\\"> <button data-bind=\\\"click: Clear\\\" id=\\\"clear\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\">Clear</button> </div> <div class=\\\"rightBtnBox\\\"> <button data-bind=\\\"click: Save\\\" id=\\\"saveImage\\\" class=\\\"btn green subFormControl\\\">Save</button> </div> </div> </div> <div class=\\\"signatureImageWrapper box-shadow-wrapper\\\"> <div class=\\\"editSignatureBox\\\"> <div id=\\\"signature-pad\\\" class=\\\"canvasBox\\\"> <canvas class=\\\"signature-pad\\\"></canvas> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {SaveSignatureDataDto} from \"../Signature\";\r\nimport {P} from 'Core/Common/Promise'\r\nimport {IRequestOptions, Request} from 'Core/Common/Request'\r\n\r\n\r\nexport class SignatureStore {\r\n static SaveSignatureData(params: SaveSignatureDataDto): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/SignatureApi/SaveSignatureData',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(err => {\r\n deferredResult.reject(this.GetResponseError(err, 'Error saving signature data'));\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl, IControlValue} from \"../BaseControl/BaseControl\";\r\nimport {IControlParam} from \"../../Screens/IScreen\";\r\nimport {BlockUI, BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {FileModel, ImageDataModel} from \"../Image/Models/ImageDataModel\";\r\nimport {RenderModes} from \"../../Constant\";\r\nimport {SignatureEditScreen} from \"./SignatureEditScreen/SignatureEditScreen\";\r\nimport {AttachmentModel} from \"../Image/Models/AttachmentModel\";\r\nimport {IGetImageControlDataRequestModel, ImageDataStore} from \"../Image/Stores/ImageDataStore\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport OperationResult from \"../../Results/ResultModels/OperationResult\";\r\nimport {SignatureStore} from \"./Store/SignatureStore\";\r\nimport {EventArgs} from \"Core/Common/Event\";\r\n\r\nimport ViewTemplate from \"Core/Controls/Signature/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Signature/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/Signature/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/Signature/Templates/Edit.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Signature/Templates/HelpView.html\";\r\n\r\nko.templates['Core/Controls/Signature/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Signature/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Signature/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Signature/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Signature/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport interface SaveSignatureDataDto {\r\n Data: AttachmentModel;\r\n FieldId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport class Signature extends BaseControl {\r\n\r\n private _value: KnockoutObservable<string>;\r\n private _dataModel: KnockoutObservable<ImageDataModel>;\r\n private _originalImageDataModel: KnockoutObservable<ImageDataModel>;\r\n private _labelStyle: KnockoutObservable<any>;\r\n\r\n private _image: KnockoutObservable<FileModel>;\r\n private _iControlParams: IControlParam;\r\n private _originalValue: string;\r\n private _isNewRecord: boolean;\r\n\r\n private _attachments: Array<AttachmentModel>;\r\n private _removeAttachments: Array<FileModel>;\r\n private _newAttachments: Array<any>;\r\n private _isReadOnly: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam){\r\n super(params);\r\n\r\n this._iControlParams = params;\r\n this._value = ko.observable(null);\r\n this._dataModel = ko.observable(null);\r\n this._originalImageDataModel = ko.observable(null);\r\n this._image = ko.observable(this.GetRenderMode() === RenderModes.Edit ? new FileModel() : null);\r\n\r\n this._attachments = [];\r\n this._removeAttachments = [];\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n this._labelStyle = ko.observable(null);\r\n\r\n this.ApplyProperties();\r\n\r\n this._isReadOnly = ko.observable(null);\r\n\r\n }\r\n\r\n Deserialize(){\r\n const data = {attachments: [], removeAttachments: []};\r\n const field = _.first(this._model().Fields);\r\n\r\n _.each(this._attachments, item => {\r\n data['attachments'].push({FieldId: field.Id, Data: item});\r\n });\r\n\r\n _.each(this._removeAttachments, item => {\r\n data['removeAttachments'].push({FieldId: field.Id, Data: {Id: item.Id, IsImage: true}});\r\n });\r\n\r\n this._newAttachments = data.attachments;\r\n data['FieldName'] = `${field.EntityName}.${field.Name}`;\r\n\r\n return data;\r\n\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n if(this.GetRenderMode() !== RenderModes.Design){\r\n this._isReadOnly(this._iControlParams.Model.Fields[0].IsReadOnly);\r\n }\r\n }\r\n\r\n private BindEvents() {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n\r\n }\r\n\r\n get Image(): KnockoutObservable<FileModel> {\r\n return this._image;\r\n }\r\n\r\n GetValue(): any {\r\n return this._value();\r\n }\r\n\r\n SetValue(data: IControlValue): void {\r\n if (data.RecordSpecsModel) {\r\n this._isNewRecord = data.RecordSpecsModel && data.RecordSpecsModel.IsNewRecord;\r\n }\r\n\r\n this._isRendered.subscribe(() => {\r\n if (data.Data && data.Data.Value){\r\n this.LoadSignatureImageData(data)\r\n .then(dataModel => this.PrepareForSignatureImage(dataModel));\r\n }\r\n });\r\n }\r\n\r\n private PrepareForSignatureImage(dataModel: ImageDataModel) {\r\n this._dataModel(dataModel);\r\n\r\n //Adds attachment when creating record from example\r\n if (this._isNewRecord && this._dataModel()) {\r\n const [file] = this._dataModel().Files;\r\n\r\n if (file) {\r\n const exampleImage = new AttachmentModel();\r\n\r\n exampleImage.FileName = file.Name;\r\n exampleImage.Base64Data = file.ImageData;\r\n this._attachments.push(exampleImage);\r\n }\r\n }\r\n this._originalImageDataModel = ko.observable(this.GetOriginalImage());\r\n }\r\n\r\n private LoadSignatureImageData(data: IControlValue): P.Promise<ImageDataModel> {\r\n const deferred = P.defer<ImageDataModel>();\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: +data.Data.Value,\r\n FirstRecordOnly: true\r\n };\r\n\r\n ImageDataStore.Get(requestModel)\r\n .then(data => {\r\n deferred.resolve(data)\r\n })\r\n .fail(err => deferred.reject(err))\r\n .always(() => this.UnBlockUi());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private BlockUi() {\r\n if (this._el) {\r\n BlockUi.Block({Target: this._el});\r\n }\r\n }\r\n\r\n private UnBlockUi() {\r\n BlockUi.Unblock(this._el);\r\n }\r\n\r\n IsModified(): boolean {\r\n this.Deserialize();\r\n\r\n if (super.IsModified() || this._isNewRecord) {\r\n return true;\r\n }\r\n\r\n if (!this._isNewRecord && this._newAttachments.length == 0) {\r\n return false;\r\n } else if (this._newAttachments.length != 0) {\r\n let modifiedValue = null;\r\n _.each(this._newAttachments, item => {\r\n if (!this._originalValue && !item.Data.Base64Data) {\r\n modifiedValue = null;\r\n } else if (this._originalValue && !item.Data.Base64Data) {\r\n modifiedValue = true;\r\n } else {\r\n modifiedValue = item.Data.Base64Data;\r\n }\r\n });\r\n return !!modifiedValue;\r\n }\r\n }\r\n\r\n GetOriginalImage() {\r\n let fileModel = new FileModel();\r\n let originalImg = new ImageDataModel();\r\n\r\n if (this._dataModel().Files.length > 0){\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: this._form.GetScreen().GetRecordId(),\r\n FirstRecordOnly: false\r\n };\r\n\r\n ImageDataStore.GetOriginal(requestModel)\r\n .then(attachment => {\r\n fileModel.ImageData = attachment.Base64Data;\r\n this._image(fileModel);\r\n originalImg.Files.push(fileModel);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => {\r\n\r\n });\r\n }\r\n return originalImg;\r\n }\r\n\r\n Edit(){\r\n if (this._help.IsHelpButtonPressed()){\r\n return;\r\n }\r\n\r\n const signatureExampleImage = new AttachmentModel();\r\n const signatureEditScreen = new SignatureEditScreen(this._iControlParams, this._originalImageDataModel() && this._originalImageDataModel().Files.length > 0 && this._originalImageDataModel().Files[0].ImageData ? this._originalImageDataModel() : this._dataModel());\r\n const signatureIsConsultScreen = this._form && this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen];\r\n\r\n signatureEditScreen.Show();\r\n\r\n signatureEditScreen.On('SIGNATURE_IMAGE_SAVE', this, (event: EventArgs) => {\r\n signatureExampleImage.FileName = `Signature_${Date.now()}.jpg`;\r\n signatureExampleImage.Base64Data = event.data.SignatureImage.split(',')[1];\r\n this._attachments.push(signatureExampleImage);\r\n\r\n if (signatureIsConsultScreen){\r\n this.SaveOnlySignature(this._attachments[0])\r\n .then(() =>{\r\n this._form.GetScreen().Refresh();\r\n signatureEditScreen.Close();\r\n });\r\n } else {\r\n let fileModel = new FileModel();\r\n this._dataModel = ko.observable(null);\r\n this._dataModel(new ImageDataModel());\r\n\r\n fileModel.ImageData = event.data.SignatureImage;\r\n this._image(fileModel);\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n fileModel.Attachment = signatureExampleImage;\r\n\r\n this._originalImageDataModel = ko.observable(null);\r\n this._originalImageDataModel(new ImageDataModel());\r\n this._originalImageDataModel().Files.push(fileModel);\r\n signatureEditScreen.Close();\r\n }\r\n });\r\n }\r\n\r\n SaveOnlySignature(exampleImage: AttachmentModel): P.Promise<any>{\r\n let deferredResult = P.defer<any>();\r\n\r\n let params: SaveSignatureDataDto = {\r\n Data: exampleImage,\r\n FieldId: this.GetFieldId(),\r\n RecordId: this._form.GetScreen().GetRecordId(),\r\n }\r\n BlockUI.Block();\r\n SignatureStore.SaveSignatureData(params)\r\n .always(()=> {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n}","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"signatureControlContainer\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"EditScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <label data-bind=\\\"style: _labelStyle\\\"> <span class=\\\"leftBox\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> </span> <!-- ko if: !_isReadOnly()--> <button data-bind=\\\"click: Edit\\\" class=\\\"btn blue-sharp edit-button subFormControl\\\"> <i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.EDIT --><!-- /ko --> </button> <!-- /ko --> </label> <div class=\\\"signatureImageWrapper\\\"> <div data-bind=\\\"css: {'nonImage': !_image()}\\\" class=\\\"signatureImageBox\\\"> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"image-item\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _image()--> <span class=\\\"signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <span class=\\\"additional-icon signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix signatureFormDesignerView\\\"> <div class=\\\"signatureNoLabelIconBox\\\"> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> </div> <label data-bind=\\\"attr: {'title': Label }\\\"> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"frameBox\\\"> <i class=\\\"signatureIcon\\\" aria-hidden=\\\"true\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </i> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"signatureControlContainer\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"EditScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <span class=\\\"leftBox\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </span> <!-- ko if: !_isReadOnly()--> <button data-bind=\\\"click: Edit\\\" class=\\\"btn blue-sharp edit-button subFormControl\\\"> <i class=\\\"fa fa-edit\\\"></i> <!-- ko text: _labels.EDIT --><!-- /ko --> </button> <!-- /ko --> </label> <div class=\\\"signatureImageWrapper\\\"> <div class=\\\"signatureImageBox\\\"> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"image-item\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"signature-control\\\" data-bind=\\\"style: { display: _display }\\\" class=\\\"signatureControlContainer\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix signatureControlBox\\\"> <div class=\\\"signatureWrapper\\\"> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <span class=\\\"text-left additional-icon custom-color-option signatureIcon\\\"> <!-- SVG code --> <svg aria-hidden=\\\"true\\\" focusable=\\\"false\\\" data-prefix=\\\"fas\\\" data-icon=\\\"signature\\\" class=\\\"svg-inline--fa fa-signature fa-w-20\\\" role=\\\"img\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 640 512\\\"> <path fill=\\\"currentColor\\\" d=\\\"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\\\"></path> </svg> </span> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <div class=\\\"signatureImageWrapper\\\"> <div class=\\\"signatureImageBox\\\"> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"image-item\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {ChartDataModel} from '../Models/ChartDataModel';\r\n\r\nexport interface IGetChartDataRequestModel {\r\n\tEntityId: number;\r\n\tSubjectEntityId: number | null;\r\n SubjectRecordId: number | null;\r\n\tXAxisField: number;\r\n\tYAxisField: number;\r\n\tSeriesField: number;\r\n\tSortBy: string;\r\n XAxisExists: boolean;\r\n YAxisExists: boolean;\r\n SeriesExists: boolean;\r\n Type: any;\r\n};\r\n\r\nexport class ChartStore {\r\n\tGetChartData(params: IGetChartDataRequestModel): P.Promise<ChartDataModel> {\r\n\t\tconst deferred = P.defer<ChartDataModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n\t\t\t\turl: '/api/ChartApi/GetChartData',\r\n type: 'POST',\r\n dataType: 'json',\r\n }, params: params\r\n }).then(options => {\r\n deferred.resolve(options);\r\n }).fail(err => {\r\n\t deferred.reject(this.GetResponseError(err, 'Error getting chart control data'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","export enum ChartTypeEnum {\r\n Line = 'line',\r\n Area = 'area',\r\n Pie = 'pie',\r\n StackedArea = 'stacked area',\r\n Funnel3D = 'funnel3d'\r\n}","// Module\nvar code = \"<div class=\\\"chart-wrapper\\\" data-bind=\\\"attr: {id: _wrapperId}, click: _help.ShowControlHelp.bind(_help, $data)\\\"> </div>\";\n// Exports\nexport default code;","import {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport * as moment from \"moment\";\r\n\r\nexport abstract class ChartBuilder{\r\n protected _chartType: string;\r\n protected _chartTitle: string;\r\n protected _xAxis: number;\r\n protected _yAxis: number;\r\n protected _xAxisLabel: string;\r\n protected _yAxisLabel: string;\r\n protected _sortBy: string;\r\n protected _series: number;\r\n protected _wrapperId: string;\r\n protected _xAxisExists: boolean;\r\n protected _yAxisExists: boolean;\r\n protected _seriesExists: boolean;\r\n\r\n constructor(params: IChartBuilderParams){\r\n this._chartType = params.ChartType;\r\n this._chartTitle = params.ChartTitle;\r\n this._xAxis = params.XAxis;\r\n this._xAxisLabel = params.XAxisLabel;\r\n this._yAxis = params.YAxis;\r\n this._yAxisLabel = params.YAxisLabel;\r\n this._sortBy = params.SortBy;\r\n this._series = params.Series;\r\n this._wrapperId = params.WrapperId;\r\n this._xAxisExists = params.XAxisExists;\r\n this._yAxisExists = params.YAxisExists;\r\n this._seriesExists = params.SeriesExists;\r\n }\r\n\r\n abstract RenderChart(ChartDataModel): void;\r\n\r\n ApplyLabelFormatter(labelValue: any, fieldType: string, labelFormat: string) {\r\n if (fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime) {\r\n const dateFormat = FormatConverter.GetDateFormatFromFieldModel({\r\n FieldTypeName: fieldType,\r\n FormatName: labelFormat\r\n });\r\n return moment(labelValue).format(dateFormat);\r\n }\r\n\r\n return labelValue;\r\n }\r\n\r\n GetFormattedValue(pointValue: any, fieldType: string) {\r\n if (!pointValue) {\r\n return pointValue;\r\n }\r\n\r\n if (fieldType === FIELD_TYPES.Integer || fieldType === FIELD_TYPES.Decimal) {\r\n return Number(String(pointValue).replace(\",\",\".\"));\r\n } else if (fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime) {\r\n return moment(pointValue).valueOf();\r\n }\r\n\r\n return pointValue;\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\nimport {ChartPointModel} from \"Core/Controls/Chart/Models/ChartPointModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\n\r\nimport {ChartBuilder} from \"Core/Components/Controls/Chart/Builders/ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\n\r\nexport class AreaChartBuilder extends ChartBuilder {\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n const series = this.GetSeries(options);\r\n\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: this._chartType\r\n },\r\n title: {\r\n text: self._chartTitle\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.x, this.y, xAxisLabel, yAxisLabel, this.series.name);\r\n }\r\n },\r\n xAxis: {\r\n title: {\r\n text: xAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.XAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetXAxisCategory(options.Points) : null\r\n },\r\n yAxis: {\r\n title: {\r\n text: yAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.YAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetYAxisCategory(options.Points) : null\r\n },\r\n series: series\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const xCategories = this.GetXAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([xCategories.indexOf(point.XAxis), this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const yCategories = this.GetYAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType), yCategories.indexOf(point.YAxis)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else {\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push({\r\n type: null,\r\n x: this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType),\r\n y: this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)\r\n });\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, x: number, y: number, xLabel: string, yLabel: string, series: string) {\r\n let xValue = x;\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n xValue = this.GetXAxisCategory(options.Points)[xValue];\r\n }\r\n\r\n let yValue = y;\r\n if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n yValue = this.GetYAxisCategory(options.Points)[yValue];\r\n }\r\n\r\n return `${LABELS.SERIES}: ${series}<br>${\r\n xLabel}: ${this.ApplyLabelFormatter(xValue, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName)}<br>${\r\n yLabel}: ${this.ApplyLabelFormatter(yValue, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName)}`;\r\n }\r\n\r\n private GetXAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.XAxis))];\r\n }\r\n\r\n private GetYAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.YAxis))];\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\nimport {ChartPointModel} from \"Core/Controls/Chart/Models/ChartPointModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\n\r\nimport {ChartBuilder} from \"./ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\n\r\nexport class LineChartBuilder extends ChartBuilder {\r\n private _defaultChartType = 'line';\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n const series = this.GetSeries(options);\r\n\r\n const chartType = this._chartType ? this._chartType : this._defaultChartType;\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: chartType\r\n },\r\n title: {\r\n text: self._chartTitle\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.x, this.y, xAxisLabel, yAxisLabel, this.series.name);\r\n }\r\n },\r\n xAxis: {\r\n title: {\r\n text: xAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.XAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetXAxisCategory(options.Points) : null\r\n },\r\n yAxis: {\r\n title: {\r\n text: yAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: options.YAxisInfoModel.FieldType === FIELD_TYPES.Text ? self.GetYAxisCategory(options.Points) : null\r\n },\r\n series: series\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const xCategories = this.GetXAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([xCategories.indexOf(point.XAxis), this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n const yCategories = this.GetYAxisCategory(options.Points);\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push([this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType), yCategories.indexOf(point.YAxis)]);\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n } else {\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n let groupData = [];\r\n\r\n _.forEach(groupedPoints, point => {\r\n groupData.push({\r\n type: null,\r\n x: this.GetFormattedValue(point.XAxis, options.XAxisInfoModel.FieldType),\r\n y: this.GetFormattedValue(point.YAxis, options.YAxisInfoModel.FieldType)\r\n });\r\n });\r\n\r\n series.push({ name: line, findNearestPointBy: 'xy', data: groupData });\r\n });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, x: number, y: number, xLabel: string, yLabel: string, series: string) {\r\n let xValue = x;\r\n if (options.XAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n xValue = this.GetXAxisCategory(options.Points)[xValue];\r\n }\r\n\r\n let yValue = y;\r\n if (options.YAxisInfoModel.FieldType === FIELD_TYPES.Text) {\r\n yValue = this.GetYAxisCategory(options.Points)[yValue];\r\n }\r\n\r\n return `${LABELS.SERIES}: ${series}<br>${\r\n xLabel}: ${this.ApplyLabelFormatter(xValue, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName)}<br>${\r\n yLabel}: ${this.ApplyLabelFormatter(yValue, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName)}`;\r\n }\r\n\r\n private GetXAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.XAxis))];\r\n }\r\n\r\n private GetYAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.YAxis))];\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\nimport {ChartBuilder} from \"./ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartAxisInfoModel} from \"Core/Controls/Chart/Models/ChartAxisInfoModel\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\n\r\nexport class PieChartBuilder extends ChartBuilder {\r\n private _mainAxis: ChartAxisInfoModel;\r\n private _secondaryAxis: ChartAxisInfoModel;\r\n private _mainAxisLabel: string;\r\n private _secondaryAxisLabel: string;\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n\r\n this._mainAxis = this.GetMainAxis(options.XAxisInfoModel, options.YAxisInfoModel);\r\n this._secondaryAxis = this._mainAxis === options.XAxisInfoModel\r\n ? options.YAxisInfoModel : options.XAxisInfoModel;\r\n\r\n const series = this.GetSeries(options);\r\n\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: this._chartType\r\n },\r\n title: {\r\n text: self._chartTitle\r\n },\r\n plotOptions: {\r\n pie: {\r\n dataLabels: {\r\n format: '<b>{point.name}</b>: {point.percentage:.1f} %'\r\n }\r\n }\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.point, xAxisLabel, yAxisLabel);\r\n }\r\n },\r\n series: series\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (this._secondaryAxis.AxisExist){\r\n let groupData = [];\r\n _.forEach(points,\r\n point => {\r\n const mainAxisPoint = this._mainAxis === options.XAxisInfoModel ? point.XAxis : point.YAxis;\r\n const secondaryAxisPoint = mainAxisPoint === point.XAxis ? point.YAxis : point.XAxis;\r\n\r\n groupData.push({name: point.Line,\r\n y: this.GetFormattedValue(mainAxisPoint, this._mainAxis.FieldType),\r\n z: this.GetFormattedValue(secondaryAxisPoint, this._secondaryAxis.FieldType)});\r\n });\r\n series.push({ type: ChartTypeEnum.Pie, innerSize: '20%', zMin: 0, data: groupData });\r\n }\r\n else{\r\n let groupData = [];\r\n _.forEach(points,\r\n point => {\r\n const mainAxisPoint = this._mainAxis === options.XAxisInfoModel ? point.XAxis : point.YAxis;\r\n\r\n groupData.push({\r\n name: point.Line,\r\n y: this.GetFormattedValue(mainAxisPoint, this._mainAxis.FieldType),\r\n });\r\n });\r\n series.push({ type: ChartTypeEnum.Pie, innerSize: '20%', zMin: 0, data: groupData });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetMainAxis(xAxisModel: ChartAxisInfoModel, yAxisModel: ChartAxisInfoModel){\r\n return xAxisModel.AxisExist && xAxisModel.FieldType !== FIELD_TYPES.Text\r\n ? xAxisModel : yAxisModel;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, point, xLabel: string, yLabel: string) {\r\n if (this._mainAxis === options.XAxisInfoModel){\r\n this._mainAxisLabel = xLabel || this._mainAxis.AxisDefaultName;\r\n this._secondaryAxisLabel = yLabel || this._secondaryAxis.AxisDefaultName;\r\n }\r\n else {\r\n this._mainAxisLabel = yLabel || this._secondaryAxis.AxisDefaultName;\r\n this._secondaryAxisLabel = xLabel || this._mainAxis.AxisDefaultName;\r\n }\r\n\r\n if (this._secondaryAxis.AxisExist){\r\n return `<span style=\"color:${point.color}\">\\u25CF </span><b>${point.name}</b><br/> \r\n ${this._mainAxisLabel}: <b>${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)}</b><br/> \r\n ${this._secondaryAxisLabel}: <b>${this.ApplyLabelFormatter(point.z, this._secondaryAxis.FieldType, this._secondaryAxis.FormatName)}</b><br/>`;\r\n }\r\n else {\r\n return `<span style=\"color:${point.color}\">\\u25CF</span><b>${point.name}</b><br/> \r\n ${this._mainAxisLabel}: <b>${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)}</b><br/>`;\r\n }\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\nimport {ChartPointModel} from \"Core/Controls/Chart/Models/ChartPointModel\";\r\n\r\nimport * as Highcharts from \"highcharts\";\r\n\r\nimport {ChartBuilder} from \"Core/Components/Controls/Chart/Builders/ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\n\r\nexport class StackedAreaChartBuilder extends ChartBuilder {\r\n private _xCategories: any;\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n\r\n const xAxisLabel = this._xAxisLabel ? this._xAxisLabel : options.XAxisInfoModel.AxisDefaultName;\r\n const yAxisLabel = this._yAxisLabel ? this._yAxisLabel : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n this._xCategories = self.GetXAxisCategory(options.Points);\r\n Highcharts.chart(this._wrapperId, {\r\n chart: {\r\n type: ChartTypeEnum.Area\r\n },\r\n title: {\r\n text: this._chartTitle\r\n },\r\n tooltip:{\r\n split: true,\r\n pointFormatter: function() {\r\n return self.GetToolTip(options, this.y, this.series.name);\r\n }\r\n },\r\n xAxis: {\r\n title: {\r\n text: xAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.XAxisInfoModel.FieldType, options.XAxisInfoModel.FormatName);\r\n }\r\n },\r\n categories: this._xCategories\r\n },\r\n yAxis: {\r\n title: {\r\n text: yAxisLabel\r\n },\r\n labels: {\r\n formatter() {\r\n return self.ApplyLabelFormatter(this.value, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName);\r\n }\r\n }\r\n },\r\n plotOptions: {\r\n area: {\r\n stacking: 'normal',\r\n lineColor: '#666666',\r\n lineWidth: 1,\r\n marker: {\r\n lineWidth: 1,\r\n lineColor: '#666666'\r\n }\r\n }\r\n },\r\n series: this.GetSeries(options)\r\n }, () => {\r\n });\r\n }\r\n\r\n private GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n _.forEach(_.groupBy(points, point => { return point.Line; }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.YAxisInfoModel.AxisDefaultName;\r\n let data = [];\r\n\r\n _.forEach(this._xCategories, xAxisValue => {\r\n const yAxisValues = groupedPoints.filter(point => point.XAxis === xAxisValue);\r\n let yAxisValue: any = 0;\r\n\r\n if(_.any(yAxisValues)){\r\n yAxisValue = Math.max(...yAxisValues.map(item => this.GetFormattedValue(item.YAxis, options.YAxisInfoModel.FieldType)));\r\n }\r\n data.push(yAxisValue);\r\n });\r\n\r\n series.push({ name: line, data: data });\r\n });\r\n\r\n return series;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, y: number, series: string) {\r\n return `<b>${series}</b>: ${this.ApplyLabelFormatter(y, options.YAxisInfoModel.FieldType, options.YAxisInfoModel.FormatName)}`;\r\n }\r\n\r\n private GetXAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.XAxis))];\r\n }\r\n\r\n private GetYAxisCategory(points: Array<ChartPointModel>) {\r\n return [...new Set(points.map(point => point.YAxis))];\r\n }\r\n}","import {ChartDataModel} from \"Core/Controls/Chart/Models/ChartDataModel\";\r\n\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport Highcharts from \"highcharts\";\r\nimport Highcharts3d from \"highcharts/highcharts-3d\";\r\nimport HighchartsCylinder from \"highcharts/modules/cylinder\";\r\nimport HighchartsFunnel3d from \"highcharts/modules/funnel3d\";\r\n\r\nHighcharts3d(Highcharts);\r\nHighchartsCylinder(Highcharts);\r\nHighchartsFunnel3d(Highcharts);\r\n\r\nimport {ChartBuilder} from \"./ChartBuilder\"\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartAxisInfoModel} from \"Core/Controls/Chart/Models/ChartAxisInfoModel\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\n\r\nexport class Funnel3DBuilder extends ChartBuilder {\r\n private _mainAxis: ChartAxisInfoModel;\r\n\r\n constructor(params: IChartBuilderParams) {\r\n super(params);\r\n }\r\n\r\n RenderChart(options: ChartDataModel) {\r\n const self = this;\r\n this._mainAxis = this.GetMainAxis(options.XAxisInfoModel, options.YAxisInfoModel);\r\n\r\n const series = this.GetSeries(options);\r\n\r\n Highcharts.chart(\r\n this._wrapperId,\r\n {\r\n chart: {\r\n type: ChartTypeEnum.Funnel3D,\r\n options3d: {\r\n enabled: true,\r\n alpha: 10,\r\n depth: 50,\r\n viewDistance: 50\r\n }\r\n },\r\n title: {\r\n text: this._chartTitle\r\n },\r\n tooltip: {\r\n formatter() {\r\n return self.GetToolTip(options, this.point);\r\n }\r\n },\r\n plotOptions: {\r\n series: {\r\n dataLabels: {\r\n enabled: true,\r\n formatter: function() {\r\n return self.GetDataLabel(options, this.point);\r\n },\r\n allowOverlap: true,\r\n y: 10\r\n }\r\n }\r\n },\r\n series: series\r\n },\r\n () => {}\r\n );\r\n }\r\n\r\n GetSeries(options: ChartDataModel) {\r\n let series = [];\r\n const points = options.Points;\r\n\r\n if (!points || !_.any(points)) {\r\n return series;\r\n }\r\n\r\n if (this._mainAxis === options.XAxisInfoModel) {\r\n let data = [];\r\n _.forEach(_.groupBy(points, point => {\r\n return point.Line;\r\n }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.XAxisInfoModel.AxisDefaultName;\r\n\r\n let categoryMax = Math.max(...groupedPoints.map(item => this.GetFormattedValue(item.XAxis, options.XAxisInfoModel.FieldType)));\r\n data.push([line, categoryMax]);\r\n });\r\n series.push({ type: ChartTypeEnum.Funnel3D, data: data });\r\n }\r\n else {\r\n let data = [];\r\n _.forEach(_.groupBy(points, point => {\r\n return point.Line;\r\n }),\r\n groupedPoints => {\r\n const line = _.first(groupedPoints).Line ? _.first(groupedPoints).Line : options.YAxisInfoModel.AxisDefaultName;\r\n\r\n let categoryMax = Math.max(...groupedPoints.map(item => this.GetFormattedValue(item.YAxis, options.YAxisInfoModel.FieldType)));\r\n data.push([line, categoryMax]);\r\n });\r\n series.push({ type: ChartTypeEnum.Funnel3D, data: data });\r\n }\r\n\r\n return series;\r\n }\r\n\r\n private GetMainAxis(xAxisModel: ChartAxisInfoModel, yAxisModel: ChartAxisInfoModel){\r\n return xAxisModel.AxisExist && xAxisModel.FieldType !== FIELD_TYPES.Text\r\n ? xAxisModel : yAxisModel;\r\n }\r\n\r\n private GetToolTip(options: ChartDataModel, point) {\r\n return `<span style=\"color:${point.color}\"></span>\r\n ${point.name}: ${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)}`;\r\n }\r\n\r\n private GetDataLabel(options: ChartDataModel, point) {\r\n return `<b>${point.name}</b>\r\n (${this.ApplyLabelFormatter(point.y, this._mainAxis.FieldType, this._mainAxis.FormatName)})`;\r\n }\r\n}","import {AreaChartBuilder} from '../Builders/AreaChartBuilder';\r\nimport {LineChartBuilder} from '../Builders/LineChartBuilder';\r\nimport {IChartBuilderParams} from \"../IChartBuilderParams\";\r\nimport {ChartTypeEnum} from \"../Enums/ChartTypeEnum\";\r\nimport {PieChartBuilder} from \"../Builders/PieChartBuilder\";\r\nimport {StackedAreaChartBuilder} from \"../Builders/StackedAreaBuilder\";\r\nimport {Funnel3DBuilder} from \"../Builders/Funnel3DBuilder\";\r\n\r\nexport class ChartBuilderFactory {\r\n static CreateChartBuilder(params: IChartBuilderParams) {\r\n switch (params.ChartType) {\r\n case ChartTypeEnum.Line:\r\n return new LineChartBuilder(params);\r\n\r\n case ChartTypeEnum.Area:\r\n return new AreaChartBuilder(params);\r\n\r\n case ChartTypeEnum.StackedArea:\r\n return new StackedAreaChartBuilder(params);\r\n\r\n case ChartTypeEnum.Pie:\r\n return new PieChartBuilder(params);\r\n\r\n case ChartTypeEnum.Funnel3D:\r\n return new Funnel3DBuilder(params);\r\n\r\n default:\r\n return new LineChartBuilder(params);\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {FIELD_TYPES, RenderModes} from 'Core/Constant';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {BaseControl} from '../BaseControl/BaseControl';\r\nimport {IControlParam} from '../../Screens/IScreen';\r\n\r\nimport ChartConfig from 'Core/Controls/Chart/Configs/chart-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {ChartStore} from 'Core/Controls/Chart/Stores/ChartStore';\r\nimport {ChartDataModel} from './Models/ChartDataModel';\r\n\r\nimport {PROPERTIES} from './Constants';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport ViewTemplate from './Templates/View.html'\r\nimport HelpViewTemplate from './Templates/HelpView.html'\r\nimport DesignTemplate from './Templates/Design.html'\r\nimport ToolBarTemplate from './Templates/ToolBar.html'\r\n\r\nimport {ChartBuilderFactory} from \"../../Components/Controls/Chart/Factory/ChartBuilderFactory\";\r\nimport {ChartBuilder} from \"../../Components/Controls/Chart/Builders/ChartBuilder\";\r\nimport {IChartBuilderParams} from \"../../Components/Controls/Chart/IChartBuilderParams\";\r\n\r\nko.templates['Core/Controls/Chart/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Chart/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Chart/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Chart/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Chart/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class ChartControl extends BaseControl {\r\n\tprivate _wrapperId: string;\r\n\tprivate _store: ChartStore;\r\n\tprivate _chartBuilder: ChartBuilder;\r\n\r\n\tprivate _chartType: KnockoutObservable<string>;\r\n\tprivate _chartTitle: KnockoutObservable<string>;\r\n\tprivate _xAxis: KnockoutObservable<number>;\r\n\tprivate _xAxisLabel: KnockoutObservable<string>;\r\n\tprivate _yAxis: KnockoutObservable<number>;\r\n\tprivate _yAxisLabel: KnockoutObservable<string>;\r\n\tprivate _sortBy: KnockoutObservable<string>;\r\n\tprivate _series: KnockoutObservable<number>;\r\n\tprivate _xAxisExists: KnockoutObservable<boolean>;\r\n\tprivate _yAxisExists: KnockoutObservable<boolean>;\r\n\tprivate _seriesExists: KnockoutObservable<boolean>;\r\n\tprivate _chartOptions: KnockoutObservable<ChartDataModel>;\r\n\tprivate _preventResize: boolean = true;\r\n\r\n\tprivate _subjectEntityId: number | null = null;\r\n\tprivate _subjectRecordId: number | null = null;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ChartConfig);\r\n\r\n\t\tthis._wrapperId = Guid.NewGuid();\r\n\t\tthis._store = new ChartStore();\r\n\r\n\t\tthis._chartType = ko.observable(null);\r\n\t\tthis._chartTitle = ko.observable(null);\r\n\t\tthis._xAxis = ko.observable(0);\r\n\t\tthis._xAxisLabel = ko.observable(null);\r\n\t\tthis._yAxis = ko.observable(0);\r\n\t\tthis._yAxisLabel = ko.observable(null);\r\n\t\tthis._sortBy = ko.observable(null);\r\n\t\tthis._series = ko.observable(0);\r\n\t\tthis._chartOptions = ko.observable(null);\r\n\t\tthis._seriesExists = ko.observable(null);\r\n\t\tthis._yAxisExists = ko.observable(null);\r\n\t\tthis._xAxisExists = ko.observable(null);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n if (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) {\r\n\t BlockUI.Block();\r\n\r\n\t this.ApplyProperties();\r\n\t\t\tlet chartParams: IChartBuilderParams = {\r\n\t\t\t\tChartType: this._chartType(),\r\n\t\t\t\tChartTitle: this._chartTitle(),\r\n\t\t\t\tXAxis: this._xAxis(),\r\n\t\t\t\tXAxisLabel: this._xAxisLabel(),\r\n\t\t\t\tYAxis: this._yAxis(),\r\n\t\t\t\tYAxisLabel: this._yAxisLabel(),\r\n\t\t\t\tSortBy: this._sortBy(),\r\n\t\t\t\tSeries: this._series(),\r\n\t\t\t\tWrapperId: this._wrapperId,\r\n\t\t\t\tXAxisExists: this._xAxisExists(),\r\n\t\t\t\tYAxisExists: this._yAxisExists(),\r\n\t\t\t\tSeriesExists: this._seriesExists()\r\n\t\t\t};\r\n\r\n\t\t\tthis._chartBuilder = ChartBuilderFactory.CreateChartBuilder(chartParams);\r\n\r\n\t\t\tif (this.IsConsultScreen && this._form && this._form.GetScreen()) {\r\n\t\t\t\tthis._subjectEntityId = this._form.GetScreen().GetEntityId();\r\n\t\t\t\tthis._subjectRecordId = this._form.GetScreen().GetRecordId();\r\n\t\t\t}\r\n\r\n\t\t\tthis._store.GetChartData({\r\n\t\t\t\t\tEntityId: this._model().EntityId,\r\n\t\t\t\t\tSubjectEntityId: this._subjectEntityId,\r\n\t\t\t\t\tSubjectRecordId: this._subjectRecordId,\r\n\t\t\t\t\tXAxisField: this._xAxis(),\r\n\t\t\t\t\tYAxisField: this._yAxis(),\r\n\t\t\t\t\tSeriesField: this._series(),\r\n\t\t\t\t\tSortBy: this._sortBy(),\r\n\t\t\t\t\tXAxisExists: this._xAxisExists(),\r\n\t\t\t\t\tYAxisExists: this._yAxisExists(),\r\n\t\t\t\t\tSeriesExists: this._seriesExists(),\r\n Type: this._chartType()\r\n\t\t\t\t})\r\n\t\t\t\t.then(options => {\r\n\t\t\t\t\tthis._chartOptions(options);\r\n\t\t\t\t\tthis._preventResize = false;\r\n\t\t\t\t\tthis._chartBuilder.RenderChart(options);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\t})\r\n\t\t .always(() => BlockUI.Unblock());\r\n\r\n\t\t\tconst unbindResize = ResizeService.SubscribeWidth(this.OnResize, this._el); // subscribe on resize\r\n\t\t\tko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n\t\t\t\tunbindResize();\r\n\t\t\t});\r\n }\r\n }\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.CHART_TYPE, this._chartType);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.CHART_TITLE, this._chartTitle);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.X_AXIS, this._xAxis);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.X_AXIS_LABEL, this._xAxisLabel);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.Y_AXIS, this._yAxis);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.Y_AXIS_LABEL, this._yAxisLabel);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.SORT_BY, this._sortBy);\r\n\t\t\tthis.AssignProperty(PROPERTIES.SETTINGS, PROPERTIES.SERIES, this._series);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n\t\tif (this.Properties[groupedBy]) {\r\n\t\t\t_.each(this.Properties[groupedBy].Properties,\r\n\t\t\t\t(property: any) => {\r\n\t\t\t\t\tif (property.hasOwnProperty(propertyName)) {\r\n\t\t\t\t\t\tconst propertyValue = property[propertyName].hasOwnProperty('Value')\r\n\t\t\t\t\t\t\t? property[propertyName].Value\r\n\t\t\t\t\t\t\t: property[propertyName];\r\n\t\t\t\t\t\tpropertyHolder(propertyValue);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tOnResize = () => {\r\n\t\tif (this._preventResize) {\r\n\t\t\tthis._preventResize = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this._chartOptions()){\r\n\t\t\tthis._chartBuilder.RenderChart(this._chartOptions());\r\n\t\t}\r\n\t};\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-bar-chart\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-bar-chart\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"ConsultScreenView EditScreenView iframe-control form-standart-control\\\"> <iframe id=\\\"test_frame\\\" data-bind=\\\"event: { load: $data.FrameLoaded.bind($data) }, attr: { src: _url, height: _heightPX || ''}, css: {'isHeight': !!+_heightPX()}\\\" frameborder=\\\"0\\\" scrolling=\\\"no\\\" height=\\\"200\\\" class=\\\"iframe-element\\\"></iframe> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { IControlParam } from 'Core/Screens/IScreen';\r\nimport { RenderModes } from \"Core/Constant\";\r\n\r\nimport ConfigJson from 'Core/Controls/IFrameExtension/Configs/config.json';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport ViewTemplate from 'Core/Controls/IFrameExtension/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/IFrameExtension/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/IFrameExtension/Templates/Design.html';\r\nimport { CookieManager } from '../../Common/CookieManager';\r\nimport { frameExtensionFacade } from 'Core/Components/CustomFunctions/Facades/IFrameExtensionFacade';\r\n\r\nko.templates['Core/Controls/IFrameExtension/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/IFrameExtension/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrameExtension/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/IFrameExtension/Templates/Design'] = DesignTemplate;\r\n\r\nexport interface IControlMounted{\r\n\tcontrol: any;\t\t\t\r\n}\r\n\r\nexport class IFrameExtension extends BaseControl {\r\n\tprivate _url: KnockoutObservable<string>;\r\n\tprivate _heightPX: KnockoutObservable<number>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, ConfigJson);\r\n\r\n\t\tconst token = CookieManager.GetAuthToken();\r\n\t\tthis._url = ko.observable(`/api/IFrameExtensionApi/Index/${this.GetControlId()}/?access_token=${token}`);\r\n\t\tthis.Init();\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tInit(): void {\r\n\t\tthis._heightPX = ko.observable(null);\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tGetDesignerHeight(): string {\r\n\t\treturn `${+this._heightPX()}px`;\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\tif (this.Properties.Height) {\r\n\t\t\t\t_.each(this.Properties.Height.Properties, (property: any) => {\r\n\t\t\t\t\tif (!!property.HeightPX){\r\n\t\t\t\t\t\tthis._heightPX(property.HeightPX);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tFrameLoaded(_, evt){\r\n\t\tconst event = new CustomEvent('controlMounted', { detail: { control: frameExtensionFacade(this) } });\r\n\t\tevt.currentTarget.contentWindow.dispatchEvent(event);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-plug\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"iframe-control\\\" class=\\\"FormDesignerView label-input form-standart-control\\\"> <label class=\\\"header-number iFrameLabel\\\"> <span class=\\\"text-left additional-icon custom-color-option fa fa-3x fa-stack fa-plug\\\"></span> <span class=\\\"labelText\\\"><!-- ko text: Label --><!-- /ko --></span> </label> </div>\";\n// Exports\nexport default code;","import { CONTROL_TYPES } from \"Core/Constant\";\r\nimport { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { screenFacade } from \"Core/Components/CustomFunctions/Facades/ScreenFacade\";\r\nimport { IFrameExtension } from \"../../../Controls/IFrameExtension/IFrameExtension\";\r\n\r\nexport const frameExtensionFacade = (control: IFrameExtension) => {\r\n const screen = screenFacade(control.Screen);\r\n return { screen }\r\n}","import {IControl} from 'Core/Controls/IControl'\r\nimport {Text} from 'Core/Controls/Text/Text'\r\nimport {RecordSharing} from 'Core/Controls/RecordSharing/RecordSharing'\r\nimport {UserSecurity} from 'Core/Controls/UserSecurity/UserSecurity'\r\nimport {UserAllowance} from 'Core/Controls/UserAllowance/UserAllowance'\r\nimport {TableSecurity} from 'Core/Controls/TableSecurity/TableSecurity'\r\nimport {TypeSecurity} from 'Core/Controls/TypeSecurity/TypeSecurity'\r\nimport {RecordSecurity} from 'Core/Controls/RecordSecurity/RecordSecurity'\r\nimport {QueryBuilder} from 'Core/Controls/QueryBuilder/QueryBuilder'\r\nimport {LifestatusDesigner} from 'Core/Controls/LifestatusDesigner/LifestatusDesigner'\r\nimport {DatabaseDesigner} from 'Core/Controls/DatabaseDesigner/DatabaseDesigner'\r\nimport {FormDesigner} from 'Core/Controls/FormDesigner/FormDesigner'\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList'\r\nimport {Mail} from 'Core/Controls/Mail/Mail'\r\nimport {Scheduler} from 'Core/Controls/Scheduler/Scheduler'\r\nimport {Agenda} from 'Core/Controls/Agenda/Agenda'\r\nimport {ColorSelector} from 'Core/Controls/ColorSelector/ColorSelector'\r\nimport {ButtonEdit} from 'Core/Controls/ButtonEdit/ButtonEdit'\r\nimport {ButtonDelete} from 'Core/Controls/ButtonDelete/ButtonDelete'\r\nimport {ButtonGoogleMaps} from 'Core/Controls/ButtonGoogleMaps/ButtonGoogleMaps'\r\nimport {ButtonListScreen} from 'Core/Controls/ButtonListScreen/ButtonListScreen'\r\nimport {ButtonSpecialScreen} from \"Core/Controls/ButtonSpecialScreen/ButtonSpecialScreen\";\r\nimport {ButtonDashboardScreen} from \"Core/Controls/ButtonDashboardScreen/ButtonDashboardScreen\";\r\nimport {ButtonPrint} from 'Core/Controls/ButtonPrint/ButtonPrint'\r\nimport {ButtonLinkedIn} from 'Core/Controls/ButtonLinkedIn/ButtonLinkedIn'\r\nimport {ButtonTree} from 'Core/Controls/ButtonTree/ButtonTree'\r\nimport {ButtonCancel} from 'Core/Controls/ButtonCancel/ButtonCancel'\r\nimport {ButtonSave} from 'Core/Controls/ButtonSave/ButtonSave'\r\nimport {ButtonPlan} from 'Core/Controls/ButtonPlan/ButtonPlan'\r\nimport {ButtonSecurityReset} from 'Core/Controls/ButtonSecurityReset/ButtonSecurityReset'\r\nimport {ButtonFollowUp} from 'Core/Controls/ButtonFollowUp/ButtonFollowUp'\r\nimport {Tab} from 'Core/Controls/Tab/Tab'\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {Dropdown} from 'Core/Controls/Dropdown/Dropdown'\r\nimport {Image} from 'Core/Controls/Image/Image'\r\nimport {MultiSelect} from 'Core/Controls/MultiSelect/MultiSelect'\r\nimport {Checkbox} from 'Core/Controls/Checkbox/Checkbox'\r\nimport {DateTime} from 'Core/Controls/DateTime/DateTime'\r\nimport {Drop} from 'Core/Controls/Drop/Drop'\r\nimport {RadioButton} from 'Core/Controls/RadioButton/RadioButton'\r\nimport {Grid} from 'Core/Controls/Grid/Grid'\r\nimport {Group} from 'Core/Controls/Group/Group'\r\nimport {PortletBar} from 'Core/Controls/PortletBar/PortletBar'\r\nimport {Label} from 'Core/Controls/Label/Label'\r\nimport {Memo} from 'Core/Controls/Memo/Memo'\r\nimport {Document} from 'Core/Controls/Document/Document'\r\nimport {ButtonReturn} from 'Core/Controls/ButtonReturn/ButtonReturn'\r\nimport {Password} from 'Core/Controls/Password/Password'\r\nimport {KanbanBoard} from 'Core/Controls/Kanban/KanbanBoard'\r\nimport {ButtonFavorite} from 'Core/Controls/ButtonFavorite/ButtonFavorite'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {SelectUser} from \"Core/Controls/SelectUser/SelectUser\";\r\nimport {TimeWriting} from \"Core/Controls/TimeWriting/TimeWriting\";\r\nimport {ButtonTemplate} from \"Core/Controls/ButtonTemplate/ButtonTemplate\";\r\nimport {TemplateDesigner} from \"Core/Controls/TemplateDesigner/TemplateDesigner\";\r\nimport {RssFeed} from \"Core/Controls/RssFeed/RssFeed\";\r\nimport {Alias} from \"Core/Controls/Alias/Alias\";\r\nimport {CrystalReportViewer} from \"Core/Controls/CrystalViewer/CrystalReportViewer\";\r\nimport {Tag} from \"Core/Controls/Tag/Tag\";\r\nimport {FieldSecurity} from 'Core/Controls/FieldSecurity/FieldSecurity';\r\nimport {ButtonAdd} from 'Core/Controls/ButtonAdd/ButtonAdd';\r\nimport {ButtonConsultScreen} from 'Core/Controls/ButtonConsultScreen/ButtonConsultScreen';\r\nimport {Basket} from 'Core/Controls/Basket/Basket';\r\nimport {History} from \"Core/Controls/History/History\";\r\nimport {QueryResult} from \"Core/Controls/QueryResult/QueryResult\";\r\nimport {GanttChart} from \"Core/Controls/GanttChart/GanttChart\";\r\nimport {Maps} from \"Core/Controls/Maps/Maps\";\r\nimport {Step} from \"Core/Controls/Step/Step\";\r\nimport {StepPage} from \"Core/Controls/StepPage/StepPage\";\r\n\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {PortletSpace} from \"Core/Controls/PortletSpace/PortletSpace\";\r\nimport {BulkEmail} from \"Core/Controls/BulkEmail/BulkEmail\";\r\nimport {GenericButton} from \"Core/Controls/GenericButton/GenericButton\";\r\nimport {InvoicingControl} from \"Core/Controls/Invoicing/InvoicingControl\";\r\nimport {FinancialDashboard} from 'Core/Controls/FinancialDashboard/FinancialDashboard';\r\nimport {ButtonCopy} from 'Core/Controls/ButtonCopy/ButtonCopy';\r\nimport {Currency} from \"Core/Controls/Currency/Currency\";\r\nimport {Planner} from \"Core/Controls/Planner/Planner\";\r\nimport {PlannerPage} from \"Core/Controls/PlannerPage/PlannerPage\";\r\nimport {PlannerLevel} from \"./PlannerLevel/PlannerLevel\";\r\nimport {IFrame} from \"Core/Controls/IFrame/IFrame\";\r\nimport {ProductConfigurator} from \"Core/Controls/ProductConfigurator/ProductConfigurator\";\r\nimport {Spim} from \"./Spim/Spim\";\r\nimport {SPIMCopy} from \"Core/Controls/SpimCopy/SpimCopy\";\r\nimport {Book} from './Book/Book';\r\nimport {Timer} from './Timer/Timer';\r\nimport {Signature} from \"./Signature/Signature\";\r\nimport {SpreadsheetControl} from './Spreadsheet/SpreadsheetControl';\r\nimport {ChartControl} from './Chart/ChartControl';\r\nimport {RecipeEditor} from \"./RecipeEditor/RecipeEditor\";\r\nimport { IFrameExtension } from './IFrameExtension/IFrameExtension'\r\n\r\nconst controlTypeNameToControlClass = {\r\n [CONTROL_TYPES.Text]: Text,\r\n [CONTROL_TYPES.Dropdown]: Dropdown,\r\n [CONTROL_TYPES.ButtonEdit]: ButtonEdit,\r\n [CONTROL_TYPES.ButtonDelete]: ButtonDelete,\r\n [CONTROL_TYPES.ButtonListScreen]: ButtonListScreen,\r\n [CONTROL_TYPES.ButtonSpecialScreen]: ButtonSpecialScreen,\r\n [CONTROL_TYPES.ButtonDashboardScreen] : ButtonDashboardScreen,\r\n [CONTROL_TYPES.ButtonGoogleMaps]: ButtonGoogleMaps,\r\n [CONTROL_TYPES.ButtonSecurityReset]: ButtonSecurityReset,\r\n [CONTROL_TYPES.ButtonFollowUp]: ButtonFollowUp,\r\n [CONTROL_TYPES.History]: History,\r\n [CONTROL_TYPES.Tab]: Tab,\r\n [CONTROL_TYPES.TabPage]: TabPage,\r\n [CONTROL_TYPES.Image]: Image,\r\n [CONTROL_TYPES.MultiSelect]: MultiSelect,\r\n [CONTROL_TYPES.Checkbox]: Checkbox,\r\n [CONTROL_TYPES.DateTime]: DateTime,\r\n [CONTROL_TYPES.Drop]: Drop,\r\n [CONTROL_TYPES.RadioButton]: RadioButton,\r\n [CONTROL_TYPES.Grid]: Grid,\r\n [CONTROL_TYPES.Group]: Group,\r\n [CONTROL_TYPES.PortletBar]: PortletBar,\r\n [CONTROL_TYPES.Label]: Label,\r\n [CONTROL_TYPES.Memo]: Memo,\r\n [CONTROL_TYPES.Document]: Document,\r\n [CONTROL_TYPES.ButtonReturn]: ButtonReturn,\r\n [CONTROL_TYPES.Kanban]: KanbanBoard,\r\n [CONTROL_TYPES.SelectUser]: SelectUser,\r\n [CONTROL_TYPES.ButtonPrint]: ButtonPrint,\r\n [CONTROL_TYPES.ButtonLinkedIn]: ButtonLinkedIn,\r\n [CONTROL_TYPES.ButtonTree]: ButtonTree,\r\n [CONTROL_TYPES.Password]: Password,\r\n [CONTROL_TYPES.ColorSelector]: ColorSelector,\r\n [CONTROL_TYPES.Agenda]: Agenda,\r\n [CONTROL_TYPES.Mail]: Mail,\r\n [CONTROL_TYPES.Scheduler]: Scheduler,\r\n [CONTROL_TYPES.LinkList]: LinkList,\r\n [CONTROL_TYPES.DatabaseDesigner]: DatabaseDesigner,\r\n [CONTROL_TYPES.FormDesigner]: FormDesigner,\r\n [CONTROL_TYPES.LifestatusDesigner]: LifestatusDesigner,\r\n [CONTROL_TYPES.QueryBuilder]: QueryBuilder,\r\n [CONTROL_TYPES.TableSecurity]: TableSecurity,\r\n [CONTROL_TYPES.TypeSecurity]: TypeSecurity,\r\n [CONTROL_TYPES.RecordSecurity]: RecordSecurity,\r\n [CONTROL_TYPES.UserSecurity]: UserSecurity,\r\n [CONTROL_TYPES.UserAllowance]: UserAllowance,\r\n [CONTROL_TYPES.RecordSharing]: RecordSharing,\r\n [CONTROL_TYPES.ButtonFavorite]: ButtonFavorite,\r\n [CONTROL_TYPES.Search]: Search,\r\n [CONTROL_TYPES.ButtonCancel]: ButtonCancel,\r\n [CONTROL_TYPES.ButtonSave]: ButtonSave,\r\n [CONTROL_TYPES.TimeWriting]: TimeWriting,\r\n [CONTROL_TYPES.ButtonTemplate]: ButtonTemplate,\r\n [CONTROL_TYPES.TemplateDesigner]: TemplateDesigner,\r\n [CONTROL_TYPES.RssFeed]: RssFeed,\r\n [CONTROL_TYPES.Alias]: Alias,\r\n [CONTROL_TYPES.CrystalViewer]: CrystalReportViewer,\r\n [CONTROL_TYPES.Tag]: Tag,\r\n [CONTROL_TYPES.FieldSecurity]: FieldSecurity,\r\n [CONTROL_TYPES.ButtonAdd]: ButtonAdd,\r\n [CONTROL_TYPES.ButtonConsultScreen]: ButtonConsultScreen,\r\n [CONTROL_TYPES.Basket]: Basket,\r\n [CONTROL_TYPES.QueryResult]: QueryResult,\r\n [CONTROL_TYPES.PortletSpace]: PortletSpace,\r\n [CONTROL_TYPES.GanttChart]: GanttChart,\r\n [CONTROL_TYPES.BulkEmail]: BulkEmail,\r\n [CONTROL_TYPES.GenericButton]: GenericButton,\r\n [CONTROL_TYPES.Invoicing]: InvoicingControl,\r\n [CONTROL_TYPES.FinancialDashboard]: FinancialDashboard,\r\n [CONTROL_TYPES.ButtonCopy]: ButtonCopy,\r\n [CONTROL_TYPES.Currency]: Currency,\r\n [CONTROL_TYPES.Planner]: Planner,\r\n [CONTROL_TYPES.PlannerPage]: PlannerPage,\r\n [CONTROL_TYPES.PlannerLevel]: PlannerLevel,\r\n [CONTROL_TYPES.IFrame]: IFrame,\r\n [CONTROL_TYPES.ProductConfigurator]: ProductConfigurator,\r\n [CONTROL_TYPES.Spim]: Spim,\r\n [CONTROL_TYPES.SpimCopy]: SPIMCopy,\r\n [CONTROL_TYPES.Book]: Book,\r\n [CONTROL_TYPES.Timer]: Timer,\r\n [CONTROL_TYPES.Signature]: Signature,\r\n [CONTROL_TYPES.Spreadsheet]: SpreadsheetControl,\r\n [CONTROL_TYPES.Chart]: ChartControl,\r\n [CONTROL_TYPES.RecipeEditor]: RecipeEditor,\r\n [CONTROL_TYPES.Maps]: Maps,\r\n [CONTROL_TYPES.IFrameExtension]: IFrameExtension,\r\n [CONTROL_TYPES.Step]: Step,\r\n [CONTROL_TYPES.StepPage]: StepPage,\r\n [CONTROL_TYPES.ButtonPlan]: ButtonPlan\r\n};\r\n\r\nexport class ControlFactory {\r\n static CreateControl(params: IControlParam): IControl {\r\n let model = params.Model;\r\n\r\n let control = null;\r\n\r\n let ControlClass = controlTypeNameToControlClass[model.TypeName];\r\n\r\n if (ControlClass) {\r\n params.CreateControl = this.CreateControl;\r\n control = new ControlClass(params); \r\n }\r\n\r\n if (!control) {\r\n console.log(`Not implemented control: ${model.TypeName}`);\r\n console.log(model);\r\n }\r\n\r\n return control;\r\n }\r\n}\r\n","import {FIELD_TYPES} from 'Core/Constant';\r\n\r\nexport const ICON_CLASSES = {};\r\n\r\nICON_CLASSES[FIELD_TYPES.Time] = 'glyphicon-time';\r\nICON_CLASSES[FIELD_TYPES.TimeSpan] = 'glyphicon-time';\r\nICON_CLASSES[FIELD_TYPES.Date] = 'glyphicon-calendar';\r\nICON_CLASSES[FIELD_TYPES.DateTime] = 'glyphicon-calendar';","import * as $ from 'jquery';\r\nimport * as moment from 'moment';\r\n\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\n\r\nexport class WeekFormatUtils{\r\n\r\n public static GetLocalizedWeekFormat() {\r\n return DATE_FORMATS.YYYY_WW.MomentFormat.replace(/-/g, FormatConverter.GetDateLocalizedSeparator());\r\n }\r\n\r\n public static PatchWeekFormatOptions(options: object) {\r\n return { ...options, format: 'L', calendarWeeks: true };\r\n }\r\n\r\n public static PatchWeekFormatInput(input: HTMLInputElement, format: string) {\r\n $(input)\r\n .data('getWeekFormat', (value: string) => {\r\n const valueMoment = moment(value, format);\r\n return valueMoment.isValid() ? valueMoment.format('L') : undefined;\r\n })\r\n .data('setWeekFormat', (value: string) => {\r\n const valueMoment = moment(value, 'L');\r\n return valueMoment.isValid() ? valueMoment.format(format) : undefined;\r\n });\r\n\r\n input.addEventListener(\r\n 'input',\r\n () => {\r\n // Reset saved value if manually changed\r\n $(input).data('savedValue', null);\r\n },\r\n true\r\n );\r\n }\r\n}\r\n","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class RecordKeyModel {\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n}\r\n\r\nexport class DocumentDataModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.RecordKeys = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tData: any;\r\n\r\n\t@deserializeAs(RecordKeyModel)\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n\r\n\t@deserialize\r\n\tIsEnableMail: boolean;\r\n\r\n\t@deserialize\r\n\tApprovalName: string;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\n\r\nexport interface IGetDocumentDataRequestModel {\r\n\tSubjectEntityId : number;\r\n\tSubjectRecordId : number;\r\n\tFieldId: number;\r\n};\r\n\r\nexport class DocumentStore {\r\n\tstatic GetData(params: IGetDocumentDataRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/GetData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetDocumentEntityId(): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DocumentsApi/GetDocumentEntityId',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic Deserialize(jsonObject: any): DocumentDataModel {\r\n\t\treturn GenericDeserialize<DocumentDataModel>(jsonObject.ResultObject, DocumentDataModel);\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nexport class DropFileModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TempName: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n\r\n\t@deserialize\r\n\tVersion: number;\r\n\r\n\t@deserialize\r\n\tStatus: number;\r\n\r\n\t@deserialize\r\n\tBase64Data: string;\r\n\r\n\tTypeId: number;\r\n}","import {deserialize, deserializeAs, Deserialize} from 'libs/cerialize';\r\nimport {DropFileModel} from 'Core/Controls/Drop/Models/DropFileModel';\r\n\r\n\r\n\r\nexport class DropDataModel {\r\n\tconstructor() {\r\n\t\tthis.DropFileModels = [];\r\n\t}\r\n\t@deserialize\r\n\tEntityRecordId: number;\r\n\r\n\t@deserialize\r\n\tDocumentRecordId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tDocumentEntityId: number;\r\n\r\n\t@deserialize\r\n\tDocumentSubEntityId: number;\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tFType: number;\r\n\r\n\t@deserialize\r\n\tExtension: string;\r\n\r\n\t@deserialize\r\n\tFileError: string = \"\";\r\n\r\n\t@deserialize\r\n\tLoadingProgress: number = 0;\r\n\t\r\n\t@deserializeAs(DropFileModel)\r\n\tDropFileModels: Array<DropFileModel>;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel'\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport TruncateFileName from 'Core/Common/TruncateFileName';\r\n\r\nimport {DropDataStore} from 'Core/Controls/Drop/Stores/DropDataStore';\r\nimport {DropFileModel} from 'Core/Controls/Drop/Models/DropFileModel';\r\nimport {DropDataModel} from 'Core/Controls/Drop/Models/DropDataModel';\r\nimport {UploadChunkModel} from 'Core/Controls/Drop/Models/UploadChunkModel';\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport DropFilesModalTemplate from 'Core/Controls/Drop/Templates/DropFilesModal.html'\r\nimport { Notifier } from '../../Common/Notifier';\r\nimport {GetLimitOfUploadedDocumentsRequestModel} from \"./Models/GetLimitOfUploadedDocumentsRequestModel\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport { P } from 'Core/Common/Promise';\r\n\r\n\r\nko.templates['Core/Controls/Drop/Templates/DropFilesModal'] = DropFilesModalTemplate;\r\n\r\ninterface DropFilesModalOptions {\r\n DocumentEntityId: number;\r\n DocumentTypeId?: number;\r\n OnOkayCallBack: Function;\r\n OnCloseCallBack: Function;\r\n ScreenTypeName: string;\r\n HasDwPackage: boolean;\r\n DestinationTypeId?: number;\r\n}\r\n\r\nexport class DropFilesModal {\r\n private _modal: Modal;\r\n private OnOkayCallBack: Function;\r\n private OnCloseCallBack: Function;\r\n private _files: KnockoutObservableArray<DropDataModel>;\r\n private _checkedFiles: KnockoutObservableArray<any> = ko.observableArray([]);\r\n private _hasCustomTypes: KnockoutObservable<boolean> = ko.observable(true);\r\n private _allFilesCheck: KnockoutObservable<boolean> = ko.observable(true);\r\n private _uploadingStarted: KnockoutObservable<boolean> = ko.observable(false);\r\n private _uploadingFinished: KnockoutObservable<boolean> = ko.observable(false);\r\n private _allSelectValue: KnockoutObservable<number> = ko.observable(null);\r\n private _showOkayButton: KnockoutObservable<boolean> = ko.observable(false);\r\n private _originalFiles = [];\r\n private _entityTypes: KnockoutObservableArray<TableTypeModel> = ko.observableArray([]);\r\n private _isConsultScreen: boolean;\r\n private _readyFiles: object[];\r\n private _labels = LABELS;\r\n private _filesTypeSelected: KnockoutComputed<boolean>;\r\n private _affectedRecords: KnockoutObservable<number> = ko.observable(null);\r\n private _hasDwPackage: boolean;\r\n private _requiredXlsxFields: KnockoutObservableArray<string>;\r\n private _nonrequiredXlsxFields: KnockoutObservableArray<string>;\r\n private _hasMissingFields: KnockoutComputed<boolean>;\r\n private _disabledElment: KnockoutComputed<boolean>;\r\n private _destinationTypeId: number;\r\n\r\n constructor(options: DropFilesModalOptions) {\r\n this._requiredXlsxFields = ko.observableArray([]);\r\n this._nonrequiredXlsxFields = ko.observableArray([]);\r\n this._hasMissingFields = ko.computed(()=> this._requiredXlsxFields().length != 0 || this._nonrequiredXlsxFields().length != 0);\r\n\r\n this._destinationTypeId = options.DestinationTypeId;\r\n\r\n this._hasDwPackage = options.HasDwPackage;\r\n this._files = ko.observableArray([]);\r\n this.OnOkayCallBack = options.OnOkayCallBack;\r\n this.OnCloseCallBack = options.OnCloseCallBack;\r\n this._filesTypeSelected = ko.computed(() => {\r\n if(this._requiredXlsxFields().length > 0){\r\n return false;\r\n }\r\n\r\n if (!this._hasCustomTypes()) {\r\n return true;\r\n }\r\n\r\n const checkedFiles = this._files().filter((file, index) => this._checkedFiles().indexOf(index) > -1);\r\n return _.every(checkedFiles, file => file.FType > 0);\r\n });\r\n\r\n this._disabledElment =ko.computed(()=> this._uploadingStarted() || (!!this._destinationTypeId && !this._hasDwPackage) );\r\n\r\n this._isConsultScreen = options.ScreenTypeName === ScreenTypes[ScreenTypes.ConsultScreen];\r\n\r\n this._modal = new Modal({\r\n minWidth: 368,\r\n maxWidth: \"100%\",\r\n height: 'auto',\r\n minHeight: 100,\r\n closeButton: false,\r\n onClose: this.OnClose,\r\n addClass: \"drop-files-modal-main\"\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n if (options.DocumentTypeId !== undefined) {\r\n this._hasCustomTypes(false);\r\n } else {\r\n EntityTypesStore.GetTypes({\r\n EntityId: options.DocumentEntityId,\r\n ParentTypeId: 0,\r\n WithRoot: true,\r\n OnlyEnabled: true,\r\n EntityName: null\r\n })\r\n .then(tableTypesModel => {\r\n const types = tableTypesModel.TableTypes.filter(type => type.IsEnabled);\r\n if (types.length) {\r\n if (types.length === 1 && types[0].Name === '-') {\r\n this._hasCustomTypes(false);\r\n }\r\n } else {\r\n this._hasCustomTypes(false);\r\n }\r\n if (types.length === 1) {\r\n const singleTypeId = _.first(types).Id;\r\n _.each(this._files(), file => { file.FType = singleTypeId; });\r\n this._hasCustomTypes(false);\r\n }\r\n\r\n _.each(types, type => type.TranslatedName = type.TranslatedName || type.Name);\r\n this._entityTypes(types);\r\n\r\n if(!!this._destinationTypeId){\r\n _.each(this._files(), file => { file.FType = this._destinationTypeId; });\r\n let files = this._files();\r\n this._files([]);\r\n this._files(files);\r\n\r\n if(!this._hasDwPackage){\r\n this.OnOkay();\r\n }\r\n }\r\n\r\n });\r\n }\r\n this.SubscribeObservables();\r\n }\r\n\r\n private SetOptionDisable(option, value) {\r\n ko.applyBindingsToNode(option, {\r\n disable: !value\r\n }, value);\r\n }\r\n\r\n private SubscribeObservables() {\r\n let changinFromSubscription = false;\r\n this._allFilesCheck.subscribe(newValue => {\r\n if (changinFromSubscription) {\r\n changinFromSubscription = false;\r\n return;\r\n }\r\n const newdata = [];\r\n if (newValue) {\r\n const files = this._files();\r\n const filesCount = files.length;\r\n for (let i = 0; i < filesCount; i++) {\r\n if (!files[i].FileError) {\r\n newdata.push(i);\r\n }\r\n }\r\n }\r\n this._checkedFiles(newdata);\r\n });\r\n\r\n this._checkedFiles.subscribe(newValue => {\r\n const currentValue = this._allFilesCheck();\r\n const filesWithoutErrors = this._files().filter(file => !file.FileError);\r\n const filesCount = filesWithoutErrors ? filesWithoutErrors.length : 0;\r\n if (newValue.length === filesCount && !currentValue) {\r\n changinFromSubscription = true;\r\n this._allFilesCheck(true);\r\n } else if (newValue.length !== filesCount && currentValue) {\r\n changinFromSubscription = true;\r\n this._allFilesCheck(false);\r\n }\r\n });\r\n\r\n this._allSelectValue.subscribe(newValue => {\r\n if (newValue) {\r\n this._files(this._files().map(file => {\r\n file.FType = newValue;\r\n return Object.assign(new DropDataModel(), file);\r\n }))\r\n }\r\n });\r\n }\r\n\r\n private OnClose = () => {\r\n this._files([]);\r\n this._allFilesCheck(true);\r\n this._checkedFiles([]);\r\n this._originalFiles = [];\r\n this._uploadingFinished(false);\r\n this._uploadingStarted(false);\r\n this._showOkayButton(false);\r\n this._readyFiles = [];\r\n }\r\n \r\n public OnOkay (hideModal?:boolean): Promise<void>{\r\n return this.Upload(false, hideModal);\r\n }\r\n\r\n private Upload(validateSpreadsheet: boolean, hideModal?:boolean): Promise<void>{\r\n const files = this._files();\r\n\r\n const checkedFiles = this._checkedFiles() .map((fileIndex) => {\r\n return {\r\n dropDataModel: files[fileIndex],\r\n index: fileIndex,\r\n file: this._originalFiles[fileIndex]\r\n }\r\n });\r\n\r\n if(this._isConsultScreen && checkedFiles && _.any(checkedFiles) && _.first(checkedFiles).dropDataModel){\r\n const checkFile = _.first(checkedFiles);\r\n const getLimitAmountOfDocumentsModel = {\r\n EntityId: checkFile.dropDataModel.EntityId,\r\n DocumentEntityId: checkFile.dropDataModel.DocumentEntityId,\r\n ControlId: checkFile.dropDataModel.ControlId,\r\n EntityRecordId: checkFile.dropDataModel.EntityRecordId\r\n }\r\n\r\n this.CheckLimitAndSendDocuments(getLimitAmountOfDocumentsModel, checkedFiles, validateSpreadsheet);\r\n } else {\r\n return this.SendDocuments(checkedFiles, validateSpreadsheet, hideModal);\r\n }\r\n }\r\n\r\n public Open() {\r\n this._requiredXlsxFields([]);\r\n this._nonrequiredXlsxFields([])\r\n this._modal.Show();\r\n }\r\n\r\n public Close() {\r\n this._modal.Close();\r\n if (this._isConsultScreen && this._uploadingFinished()) {\r\n this.OnCloseCallBack();\r\n }\r\n }\r\n\r\n public AddFile(dropDataModel: DropDataModel, file: File) {\r\n\r\n if(this._files().length == 1 && this._hasDwPackage){\r\n new Notifier().Failed(this._labels.CANNOT_UPLOAD_MULTIPLE_FILES);\r\n return;\r\n }\r\n\r\n if(file.size == 0){\r\n dropDataModel.FileError = 'Error uploading file';\r\n }\r\n\r\n const entityTypes = this._entityTypes();\r\n if(entityTypes && entityTypes.length === 1){\r\n const singleTypeId = _.first(entityTypes).Id;\r\n dropDataModel.FType = singleTypeId;\r\n }\r\n\r\n this._originalFiles.push(file);\r\n this._checkedFiles.push(this._files().length);\r\n this._files.push(dropDataModel);\r\n this._allFilesCheck(true);\r\n\r\n if(this._hasDwPackage){\r\n this.Upload(true);\r\n }\r\n }\r\n\r\n private SendDocuments(files, validateSpreadsheet: boolean, hideModal?:boolean): Promise<void> {\r\n \r\n if (hideModal){\r\n BlockUI.Block();\r\n }\r\n this._uploadingStarted(true);\r\n return Promise.all(\r\n files.map(f=>this.SendDocument(f, validateSpreadsheet))\r\n\r\n ).then(result => {\r\n if (hideModal){\r\n BlockUI.Unblock();\r\n }\r\n if (!this._isConsultScreen) {\r\n const filesWithoutErrors = result.filter(file => file !== false);\r\n\r\n if (filesWithoutErrors.length === result.length) {\r\n this.OnOkayCallBack(result);\r\n this.Close();\r\n } else {\r\n this._readyFiles = filesWithoutErrors as object[];\r\n this._showOkayButton(true);\r\n }\r\n }\r\n if(validateSpreadsheet){\r\n this._uploadingStarted(false);\r\n }\r\n else{ \r\n this._uploadingFinished(true);\r\n }\r\n\r\n if(this._destinationTypeId && this._destinationTypeId != 0 && !this._hasDwPackage){\r\n this.Open();\r\n }\r\n }); \r\n }\r\n\r\n private CheckLimitAndSendDocuments(model: GetLimitOfUploadedDocumentsRequestModel, files, validateSpreadsheet: boolean){\r\n DropDataStore.GetLimitOfUploadedDocuments(model)\r\n .fail(err=>{\r\n new Notifier().Failed(err.message);\r\n })\r\n .then(result => {\r\n if(result.IsLimitOfUploadedDocumentsSet && result.DocumentsQuantityLeftToLink == 0){\r\n new Notifier().Failed(this._labels.MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED);\r\n return;\r\n }\r\n\r\n let documents = files;\r\n if(result.IsLimitOfUploadedDocumentsSet && files.length > result.DocumentsQuantityLeftToLink){\r\n const warningMessage = this._labels.MAXIMUM_LINKED_DOCUMENTS_REACHED_ONLY_FILES_WERE_UPLOADED\r\n .replace('{filesAmount}', `${result.DocumentsQuantityLeftToLink}`);\r\n new Notifier().Warning(warningMessage);\r\n documents = _.first(files, result.DocumentsQuantityLeftToLink)\r\n }\r\n\r\n this.SendDocuments(documents, validateSpreadsheet);\r\n });\r\n }\r\n\r\n private OnOkayWhenError = () => {\r\n this.OnOkayCallBack(this._readyFiles);\r\n this.Close();\r\n }\r\n\r\n private ChangeFile(index: number, key: string, value: any) {\r\n const files = this._files();\r\n files[index] = Object.assign(new DropDataModel(), files[index], {[key]: value});\r\n this._files([].concat(files));\r\n }\r\n\r\n private SendDocument = ({dropDataModel, file, index}, validateSpreadsheet: boolean) => {\r\n return new Promise(resolve => {\r\n const attachment = new DropFileModel();\r\n\r\n attachment.Name = TruncateFileName(dropDataModel.Name);\r\n attachment.Status = 0;\r\n attachment.Version = 1;\r\n attachment.Type = dropDataModel.Name.substr(dropDataModel.Name.lastIndexOf('.'));\r\n attachment.TypeId = this._destinationTypeId? this._destinationTypeId : dropDataModel.FType;\r\n\r\n //Append random number to file name to make it unique\r\n attachment.TempName = Guid.NewGuid();\r\n\r\n if(!validateSpreadsheet){\r\n dropDataModel.DropFileModels.push(attachment);\r\n }\r\n\r\n var maxFileSizeKb = 100;\r\n\r\n var fileChunks = [];\r\n\r\n var bufferChunkSizeInBytes = maxFileSizeKb * (1024);\r\n\r\n var currentStreamPosition = 0;\r\n var endPosition = bufferChunkSizeInBytes;\r\n var size = file.size;\r\n\r\n this.ChangeFile(index, \"LoadingProgress\", 10);\r\n\r\n while (currentStreamPosition < size) {\r\n fileChunks.push(file.slice(currentStreamPosition, endPosition));\r\n currentStreamPosition = endPosition;\r\n endPosition = currentStreamPosition + bufferChunkSizeInBytes;\r\n }\r\n\r\n if(fileChunks.length == 0){\r\n resolve(true);\r\n this.ChangeFile(index, \"FileError\", \"Error uploading file\");\r\n this.ChangeFile(index, \"LoadingProgress\", 0);\r\n return;\r\n }\r\n\r\n const OnError = (): void => {\r\n this.ChangeFile(index, \"FileError\", \"Error uploading file\");\r\n this.ChangeFile(index, \"LoadingProgress\", 0);\r\n resolve(false);\r\n };\r\n\r\n this.UploadFileChunk(fileChunks, attachment.TempName, 1, fileChunks.length).then(result => {\r\n if (!result) {\r\n OnError();\r\n } else {\r\n if (this._isConsultScreen) {\r\n\r\n if(validateSpreadsheet){\r\n DropDataStore\r\n .ValidateSreadsheet({ TempName: attachment.TempName, ControlId: dropDataModel.ControlId })\r\n .then((result)=>{\r\n \r\n this._nonrequiredXlsxFields(result.NonrequiredFields);\r\n this._requiredXlsxFields(result.RequiredFields);\r\n\r\n resolve(true);\r\n this.ChangeFile(index, \"LoadingProgress\", 100);\r\n });\r\n }else{\r\n DropDataStore.InsertDropDocument(dropDataModel)\r\n .fail(err=>{\r\n new Notifier().Failed(err.message);\r\n resolve(true);\r\n this.ChangeFile(index, \"LoadingProgress\", 100);\r\n this._files.splice(this._files.length - 1, 1);\r\n })\r\n .then(result => {\r\n if(!!result){\r\n this._affectedRecords(result);\r\n }\r\n \r\n resolve(true);\r\n this.ChangeFile(index, \"LoadingProgress\", 100);\r\n });\r\n }\r\n } else {\r\n resolve(attachment);\r\n }\r\n }\r\n }\r\n );\r\n });\r\n }\r\n\r\n private SaveDocument(){\r\n \r\n }\r\n\r\n private UploadFileChunk(fileChunks, fileName, currentPart, totalPart) {\r\n var self = this;\r\n return new Promise(resolve => {\r\n var uploadChunkModel = new UploadChunkModel();\r\n uploadChunkModel.FileName = fileName;\r\n uploadChunkModel.FileChunk = fileChunks[currentPart - 1];\r\n\r\n DropDataStore.UploadFileChunk(uploadChunkModel)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n resolve(false);\r\n } else {\r\n if (totalPart >= currentPart) {\r\n if (totalPart === currentPart) {\r\n //Whole file uploaded\r\n resolve(true);\r\n } else {\r\n //Show uploading progress\r\n self.UploadFileChunk(fileChunks, fileName, currentPart + 1, totalPart).then(result => {\r\n resolve(result);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n private OnSelectTableType = index => (data, event) => {\r\n this._allSelectValue(null);\r\n this.ChangeFile(index, \"FType\", Number(event.currentTarget.value));\r\n }\r\n\r\n public Destroy = () => {\r\n this._modal.Destroy();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Drop/Templates/DropFilesModal';\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"drop-files-modal box-shadow-wrapper\\\"> <!-- ko text: _labels.UPLOAD_FILES --><!-- /ko --> <!-- ko if: _files().length > 1 --> <div> <input type=\\\"checkbox\\\" name=\\\"all-files-checker\\\" data-bind=\\\"attr: {disabled: _disabledElment}, checked : _allFilesCheck\\\"/> <!-- ko if: _hasCustomTypes --> <select data-bind=\\\"\\r\\n\\t\\t\\t\\toptions: _entityTypes,\\r\\n\\t\\t\\t\\toptionsText: 'TranslatedName',\\r\\n\\t\\t\\t\\toptionsValue: 'Id',\\r\\n\\t\\t\\t\\tvalue: _allSelectValue,\\r\\n\\t\\t\\t\\toptionsCaption : _labels.SELECT_LABEL,\\r\\n\\t\\t\\t\\tattr: {disabled: _disabledElment},\\r\\n\\t\\t\\t\\ttooltip: {content: _labels.SELECT_A_TYPE_FOR_ALL_RECORDS}\\\" class=\\\"form-control input-inline table-type-select pull-right\\\"></select> <!-- /ko --> </div> <!-- /ko --> <!-- ko foreach: _files --> <figure class=\\\"file-info\\\"> <label class=\\\"file-label\\\"> <input class=\\\"file-checkbox\\\" type=\\\"checkbox\\\" name=\\\"file-checker\\\" data-bind=\\\"attr: {disabled: ($parent._disabledElment() || !!FileError)}, checkedValue: $index(), checked: $root._checkedFiles\\\"/> <!-- ko if: (!FileError && LoadingProgress === 100) --> <i class=\\\"status-icon success fa fa-check-circle\\\"></i> <!-- /ko --> <!-- ko if: (!FileError && LoadingProgress === 10) --> <i class=\\\"status-icon fa fa-spinner rotations\\\"></i> <!-- /ko --> <!-- ko if: FileError --> <i class=\\\"status-icon error fa fa-exclamation-circle\\\"></i> <!-- /ko --> <figcaption class=\\\"file-ext\\\"> <span class=\\\"file-ext-text\\\" data-bind=\\\"text: Extension\\\"></span> </figcaption> <span class=\\\"file-description\\\"> <span data-bind=\\\"text: Name, attr: {title: Name},css: {error: FileError}\\\" class=\\\"file-name\\\"></span> <!-- ko if: FileError --> <p class=\\\"error-text\\\" data-bind=\\\"text: FileError\\\"></p> <!-- /ko --> </span> </label> <!-- ko if: $parent._hasCustomTypes --> <select data-bind=\\\"\\r\\n\\t\\t\\t\\toptions: $parent._entityTypes,\\r\\n\\t\\t\\t\\toptionsText: 'TranslatedName',\\r\\n\\t\\t\\t\\toptionsValue: 'Id',\\r\\n\\t\\t\\t\\tvalue: FType,\\r\\n\\t\\t\\t\\toptionsCaption : $parent._labels.SELECT_LABEL +'...',\\r\\n\\t\\t\\t\\toptionsAfterRender: $parent.SetOptionDisable,\\r\\n\\t\\t\\t\\tattr: {disabled: ($parent._uploadingStarted() || !!$parent._destinationTypeId || !!FileError)},\\r\\n\\t\\t\\t\\tevent: {change: $parent.OnSelectTableType($index())}\\\" class=\\\"form-control input-inline table-type-select\\\"></select> <!-- /ko --> <!-- ko if: $parent._affectedRecords() != null --> <span class=\\\"affectedRecords\\\"><!-- ko text: $parent._affectedRecords --><!-- /ko --> <!-- ko text: $parent._labels.ROWS_AFFECTED --><!-- /ko --></span> <!-- /ko --> </figure> <!-- /ko --> <!-- ko if: _hasMissingFields --> <div class=\\\"missingFieldsBox\\\"> <div class=\\\"missingFieldsBox_field\\\"><!-- ko text: $data._labels.MISSING_FIELDS --><!-- /ko -->:</div> <!-- ko foreach: _requiredXlsxFields --> <div class=\\\"requiredXlsxFields\\\"><!-- ko text: $data --><!-- /ko --></div> <!-- /ko --> <!-- ko foreach: _nonrequiredXlsxFields --> <div class=\\\"nonRequiredXlsxFields\\\"><!-- ko text: $data --><!-- /ko --></div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"over-buttons\\\"> <!-- ko if: _showOkayButton --> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: OnOkayWhenError,\\r\\n\\t\\t\\t\\t\\t\\ttext: _labels.OKAY\\\"> </button> <!-- /ko --> <!-- ko ifnot: (_uploadingFinished() || _showOkayButton()) --> <button class=\\\"btn btn-success\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\tattr: {disabled: (_disabledElment() || _checkedFiles().length === 0 || !_filesTypeSelected())},\\r\\n\\t\\t\\t\\tclick: $data.OnOkay.bind($data, false),\\r\\n\\t\\t\\t\\ttext: _isConsultScreen ? _labels.UPLOAD : _labels.SELECT_LABEL\\\"> </button> <!-- /ko --> <button class=\\\"btn btn-warning\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\tattr: {disabled: (_disabledElment() && !_uploadingFinished())},\\r\\n\\t\\t\\t\\ttext: _uploadingFinished ? _labels.CLOSE_LABEL : _labels.CANCEL,\\r\\n\\t\\t\\t\\tclick : Close\\\"> </button> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport 'dropzone'\r\n\r\nimport { IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\n\r\nimport { DEFAULT_ICONS } from 'Core/Constant'\r\nimport { ComplexControl } from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport { RequiredFieldModel } from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport { FIELD_TYPES, TABLE_TYPES } from 'Core/Constant'\r\nimport {CanvasDesignerStore} from 'Core/Controls/CanvasDesigner/Stores/CanvasDesignerStore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport { DropDataModel } from 'Core/Controls/Drop/Models/DropDataModel';\r\nimport { DropFileModel } from 'Core/Controls/Drop/Models/DropFileModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport { DropFilesModal } from 'Core/Controls/Drop/DropFilesModal';\r\n\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\nimport { EVENTS as DROP_EVENTS } from 'Core/Controls/Drop/Events';\r\n\r\nimport DesignTemplate from 'Core/Controls/Drop/Templates/Design.html'\r\nimport ViewTemplate from 'Core/Controls/Drop/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Drop/Templates/HelpView.html'\r\nimport EditTemplate from 'Core/Controls/Drop/Templates/Edit.html'\r\nimport ToolBarTemplate from 'Core/Controls/Drop/Templates/ToolBar.html'\r\nimport { LockManager, LOCK_EVENTS } from \"Core/Components/Locker/LockManager\";\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { HelpBook } from 'HelpBook/HelpBook';\r\nimport DropConfig from 'Core/Controls/Drop/Configs/drop-config.json';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport {NOTIFICATIONS, CONFIRMATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\n\r\nko.templates['Core/Controls/Drop/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Drop/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Drop/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Drop/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Drop/Templates/Design'] = DesignTemplate;\r\n\r\nconst PROPERTIES = {\r\n\tDATA_IMPORT: \"DataImport\",\r\n\tCANVAS: \"Canvas\"\r\n}\r\n\r\nexport class Drop extends ComplexControl {\r\n\tprivate _value: IControlValue;\r\n\tprivate _files: KnockoutObservableArray<DropFileModel>;\r\n\tprivate _previewFileName: KnockoutObservable<string>;\r\n\tprivate _previewFileImage: KnockoutObservable<string>;\r\n\tprivate _previewFileSize: KnockoutObservable<string>;\r\n\tprivate _noLabel: KnockoutObservable<boolean>;\r\n\tprivate _uploadingStarted: KnockoutObservable<boolean>;\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\tprivate _isLinkedDocumentsAmountLimitReached: KnockoutObservable<boolean>;\r\n\tprivate _uploadCount: number = 0;\r\n\tprivate _modal: DropFilesModal;\r\n\tprivate _hasDwPackage: boolean;\r\n\tprivate _maxFiles: number;\r\n\tprivate _acceptedFiles: string;\r\n\tprivate _hasRollbackData: KnockoutObservable<boolean>;\r\n\tprivate _destinationTypeId: number;\r\n\tprivate _hideModal: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, DropConfig);\r\n\r\n\t\tthis._maxFiles = null;\r\n\t\tthis._acceptedFiles = null;\r\n\t\tthis._previewFileName = ko.observable('');\r\n\t\tthis._previewFileImage = ko.observable('');\r\n\t\tthis._previewFileSize = ko.observable('');\r\n\t\tthis._files = ko.observableArray([]);\r\n\t\tthis._uploadingStarted = ko.observable(false);\r\n\t\tthis._noLabel = ko.observable(params.Model.LabelPosition === 'NoLabel');\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._isLinkedDocumentsAmountLimitReached = ko.observable(params.Model.IsLinkedDocumentsAmountLimitReached);\r\n\t\tthis._destinationTypeId = params.Model.DestinationTypeId;\r\n\r\n\t\tthis._hideModal = false;\r\n\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Drop));\r\n\t\tthis.Init();\r\n\t\tthis._hasRollbackData = ko.observable(false);\r\n\r\n\r\n\t\tthis.ApplyProperties();\r\n\t\tif(this._hasDwPackage){\r\n\t\t\tthis.CheckRollback();\r\n\t\t}\t\t\r\n\t\tLockManager.Instance.One(LOCK_EVENTS.RELEASED, this, this.CleanData);\r\n\t}\r\n\r\n\tCleanData = () => {\r\n\t\tthis._modal && this._modal.Destroy();\r\n\t\tthis._modal = null;\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tconst dataImport = this.GeneralProperties.GetPropertyValue(PROPERTIES.DATA_IMPORT);\r\n const dwPackage = this.GeneralProperties.GetPropertyValue(PROPERTIES.CANVAS);\r\n this._hasDwPackage = dataImport && dwPackage > 0;\r\n\r\n\t\tif(this._hasDwPackage){\r\n\t\t\tthis._maxFiles = 1;\r\n\t\t\tthis._acceptedFiles = '.xlsx';\r\n }\r\n\r\n\t\tif(this.GetForm()){\r\n\t\t\tconst screenEntityId = this.GetForm().GetScreen().GetEntityId();\r\n\t\t\tif (this.DocumentEntityId === screenEntityId) {\r\n\t\t\t\tthis._maxFiles = 1;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n\tprivate GetDwPackageId(): number{\r\n\t\treturn this.GeneralProperties.GetPropertyValue(PROPERTIES.CANVAS);\r\n\t}\r\n\r\n\tExecuteRollback(){\r\n\t\tif (!this._hasRollbackData()){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tBlockUI.Block();\r\n\t\tCanvasDesignerStore\r\n\t\t\t.ExecuteRollback(this.GetDwPackageId())\r\n .then(()=>{\r\n new Notifier().Success(NOTIFICATIONS.ROLLBACK_APPLIED);\r\n this.CheckRollback();\r\n })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}).fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n\t}\r\n\r\n\tCheckRollback(){\r\n\t\tCanvasDesignerStore\r\n\t\t\t.HasRollback(this.GetDwPackageId())\r\n\t\t\t.always(() => {\r\n\t\t\t}).then((res)=>{\r\n this._hasRollbackData(res);\r\n })\r\n .fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.AddEvent(DROP_EVENTS.DOCUMENT_UPLOADED);\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('DOCUMENT', FIELD_TYPES.Document, TABLE_TYPES.Sub, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._value = value;\r\n\r\n\t\tif (value.SubjectRecordId > 0) {\r\n\t\t\tthis._hasData(true);\r\n\t\t}\r\n\t\tif (this._value.Data.Values) {\r\n\t\t\t_.each(this._value.Data.Values, (file: any) => {\r\n\r\n\t\t\t\tconst attachment = new DropFileModel();\r\n\r\n\t\t\t\tattachment.Name = file.FileName;\r\n\t\t\t\tattachment.Base64Data = file.Content;\r\n\r\n\t\t\t\tthis._files.push(attachment);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t\tko.utils.domNodeDisposal.addDisposeCallback(el[0].parentElement, this.CleanData)\r\n\t}\r\n\r\n\tClick(help, event){\r\n\t\tif (HelpBook.Instance.IsHelpButtonPressed()){\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t\tHelpBook.Instance.ShowControlHelp(help);\r\n\t\t} else if (help && help.Model && help.Model.IsLinkedDocumentsAmountLimitReached){\r\n\t\t\tevent.stopImmediatePropagation();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate BlockUi() {\r\n\t\tBlockUi.Block({ Target: this._el });\r\n\t}\r\n\r\n\tprivate UnBlockUi() {\r\n\t\tBlockUi.Unblock(this._el);\r\n\t}\r\n\r\n\tget Files(): KnockoutObservableArray<DropFileModel> {\r\n\t\treturn this._files;\r\n\t}\r\n\r\n\tget DocumentEntityId(): number {\r\n\t\treturn this.FieldModel && this.FieldModel.EntityId;\r\n\t}\r\n\r\n\tget DocumentSubEntityId(): number {\r\n\t\tlet id;\r\n\r\n\t\t_.each(this.GetModel().Fields,\r\n\t\t\tfield => {\r\n\t\t\t\tif (field.EntityId !== this.DocumentEntityId) {\r\n\t\t\t\t\tid = field.EntityId;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn id;\r\n\t}\r\n\r\n\tGetDropZoneLabel() {\r\n\t\tif(this._isLinkedDocumentsAmountLimitReached()){\r\n\t\t\treturn this._labels.MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED;\r\n\t\t}\r\n\r\n\t\treturn this._hasDwPackage ? this._labels.DROP_EXCEL_DOCUMENT_HERE : this._labels.DROP_DOCUMENT_HERE;\r\n\t}\r\n\r\n\tDragOver(data, element) {\r\n\t\t$(element).addClass('dz-drag-hover');\r\n\t}\r\n\r\n\tDragLeave(element, data) {\r\n\t\t$(element).removeClass('dz-drag-hover');\r\n\t}\r\n\r\n\tOpenModal(modalHide?: boolean) {\r\n\t\tthis.CreateModal();\r\n\t\tif (!modalHide){\r\n\t\t\tthis._modal.Open();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate CreateModal(){\r\n\t\tif (!this._modal) {\r\n\t\t\tconst screenEntityId = this.GetForm().GetScreen().GetEntityId();\r\n\t\t\tconst screenSubjectTypeId = this.GetForm().GetScreen().GetTableTypeId();\r\n\t\t\tconst documentTypeId = this.DocumentEntityId === screenEntityId ? screenSubjectTypeId: undefined;\r\n\r\n\t\t\tthis._modal = new DropFilesModal({\r\n\t\t\t\tDocumentEntityId: this.DocumentEntityId,\r\n\t\t\t\tDocumentTypeId: documentTypeId,\r\n\t\t\t\tOnOkayCallBack: this.OnOkayCallBack,\r\n\t\t\t\tOnCloseCallBack: this.OnCloseCallBack,\r\n\t\t\t\tScreenTypeName: this._form.GetScreen().GetTypeName(),\r\n\t\t\t\tHasDwPackage: this._hasDwPackage,\r\n\t\t\t\tDestinationTypeId: this._destinationTypeId\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tOnOkayCallBack = (files) => {\r\n\t\tthis.Files(files);\r\n\t}\r\n\r\n\tOnCloseCallBack = () => {\r\n\t\tthis._form.GetScreen().Refresh();\r\n\t}\r\n\r\n\tAfterUpload(file, data) {\r\n\t\tif (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen] ||\r\n\t\t\tthis._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n\t\t\tthis._uploadCount++;\r\n\t\t\tconst typeId = this._destinationTypeId? this._destinationTypeId: 0\r\n\t\t\tthis.UploadFile(file, typeId);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic UploadFile(file: File, typeId: number, hideModal = false): Promise<void> {\r\n\t\tthis._hideModal = hideModal;\r\n\t\tthis.OpenModal(this._hideModal);\r\n\t\tconst dropDataModel = new DropDataModel();\r\n\r\n\t\tdropDataModel.EntityId = this._value.SubjectEntityId;\r\n\t\tdropDataModel.EntityRecordId = this._value.SubjectRecordId;\r\n\t\tdropDataModel.DocumentEntityId = this.DocumentEntityId;\r\n\t\tdropDataModel.DocumentSubEntityId = this.DocumentSubEntityId;\r\n\t\tdropDataModel.ControlId = this.GetControlId();\r\n\t\tdropDataModel.FType = typeId;\r\n\t\tdropDataModel.Name = file.name;\r\n\t\tdropDataModel.Extension = /[^.]+$/.exec(file.name)[0];\r\n\r\n\t\tthis._modal.AddFile(dropDataModel, file);\r\n\r\n\t\tif (this._hideModal){\r\n\t\t\treturn this._modal.OnOkay(this._hideModal);\r\n\t\t}\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\tconst fieldIds = [];\r\n\r\n\t\t_.each(this._model().Fields, (field) => {\r\n\t\t\tfieldIds.push({ EntityId: field.EntityId, FieldId: field.Id });\r\n\t\t});\r\n\r\n\t\tconst files = [];\r\n\r\n\t\t_.each(this._files(), (file) => {\r\n files.push({ FileName: file.Name, TypeId: file.TypeId, TempName: file.TempName });\r\n\t\t});\r\n\r\n\t\treturn { FieldIds: fieldIds, Files: files };\r\n\t}\r\n}","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"btn view-button dropzone\\\" data-bind=\\\"click: Click.bind(_help),\\r\\n\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\ttemplate: { afterRender: $data.AfterRender.bind($data) },\\r\\n\\t \\t\\t\\tdropzone:\\r\\n\\t \\t\\t\\t\\t{ url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t \\t\\t\\tautoProcessQueue: false,\\r\\n\\t\\t\\t\\t \\tpreviewsContainer: false\\r\\n\\t\\t\\t\\t },\\r\\n\\t \\t\\t\\tattr: { 'data-control-position': LabelPosition }\\\"> <label data-bind=\\\"text: $data.Name, css: {hidden: _noLabel}\\\"></label> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span class=\\\"drop-files-message\\\"> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: _labels.DROP_DOCUMENT_HERE --><!-- /ko --> </span> <!-- ko foreach: Files --> <div class=\\\"dz-filename\\\" data-bind=\\\"text: $data.Name, attr: {title: $data.Name}\\\"> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"ConsultScreenView dropcontrol-result label-input view-button form-standart-control drop-control\\\" data-bind=\\\"afterRender: $data.AfterRender.bind($data), attr: { 'data-control-position': LabelPosition }\\\"> <div class=\\\"dropzone-wrapper clearfix\\\"> <!-- ko if: $data._value --> <label data-bind=\\\"text: $data.Name,css: {hidden: _noLabel}\\\"></label> <div class=\\\"clearfix form-control control record-field with-label\\\" data-bind=\\\"\\r\\n\\t\\t\\tclick: Click.bind(_help),\\r\\n\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\tdropzone: {\\r\\n\\t\\t\\t\\tmaxFiles: _maxFiles,\\r\\n\\t\\t\\t\\tacceptedFiles: _acceptedFiles,\\r\\n\\t\\t\\t\\turl: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t \\tautoProcessQueue: false,\\r\\n\\t\\t\\t \\tparallelUploads: 10,\\r\\n\\t\\t\\t \\tpreviewsContainer: false\\r\\n\\t\\t\\t},\\r\\n\\t\\t\\tattr: {disabled: $data._isLinkedDocumentsAmountLimitReached()},\\r\\n\\t\\t\\tcss: {'drop-excel': $data._hasDwPackage}\\\"> <!-- ko foreach: Files --> <div class=\\\"dz-preview dz-processing dz-image-preview dz-success dz-complete\\\"> <div class=\\\"dz-image\\\"> <i class=\\\"fa fa-file-o\\\" aria-hidden=\\\"true\\\"></i> <span data-bind=\\\"text: $parent._previewFileName\\\" class=\\\"file-name clearfix\\\"></span> </div> </div> <!-- /ko --> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span class=\\\"drop-files-message\\\"> <!-- ko ifnot: $data._hasDwPackage --> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"text\\\" data-bind=\\\"text: GetDropZoneLabel()\\\"></span> <!-- /ko --> <!-- ko if: $data._hasDwPackage --> <span class=\\\"dwPackageBox\\\"> <i class=\\\"fa fa-file-excel-o\\\" aria-hidden=\\\"true\\\"></i> <span class=\\\"text\\\" data-bind=\\\"text: GetDropZoneLabel()\\\"></span> </span> <!-- /ko --> </span> </div> <!-- ko if: $data._hasDwPackage --> <a data-bind=\\\"attr: { title: $data._labels.ROLLBACK, disabled: !$data._hasRollbackData() }, click: $data.ExecuteRollback.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only default rollback\\\"> <i class=\\\"fa fa-undo\\\"></i> </a> <!-- /ko --> <!--<span class=\\\"drop-files-message\\\">Drop documents here <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i></span>--> </div> <!-- ko ifnot: $data._hasData--> <div class=\\\"dropzone-blocker\\\"></div> <!--/ko--> <!-- /ko --> <!-- ko ifnot: $data._value --> <label data-bind=\\\"text: $data.Name, css: {hidden: _noLabel}\\\"></label> <div class=\\\"dz-message custom image-message form-control control record-field with-label\\\"> <span class=\\\"dz-prev-message\\\"> <!-- ko text: _labels.HAVE_TO_OPEN_RECORD --><!-- /ko --> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"ConsultScreenView dropcontrol-result label-input view-button form-standart-control drop-control\\\" data-bind=\\\"afterRender: $data.AfterRender.bind($data), attr: { 'data-control-position': LabelPosition }, click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div class=\\\"dropzone-wrapper clearfix\\\"> <div class=\\\"clearfix form-control control drop-control-input\\\"> <div class=\\\"dz-message custom image-message dropZoneHelpPageControl\\\" data-dz-message> <span class=\\\"drop-files-message\\\"> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: _labels.DROP_DOCUMENT_HERE --><!-- /ko --> </span> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-newspaper-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"drop-control\\\" class=\\\"FormDesignerView form-designer-view drop-control-container form-standart-control new-control complex-control\\\"> <div class=\\\"portlet light drop-control-portlet\\\" data-bind=\\\"template: { afterRender: $data.AfterRender.bind($data) }\\\"> <div data-bind=\\\"click: Expand, preventBubble: ['click'], css: { expanded: _isExpanded() }\\\" class=\\\"collapse-button toggle-button\\\" data-button=\\\"collapse\\\"> <span data-button=\\\"collapse\\\" class=\\\"link-entity-arrow\\\"></span> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"portlet-title\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Title\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" aria-describedby=\\\"sizing-addon1\\\" placeholder=\\\"\\\" readonly=\\\"readonly\\\"/> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsEntitySelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn setting-button\\\" type=\\\"button\\\">...</button> </span> </div> </div> <div data-bind=\\\"visible: IsExpanded\\\" class=\\\"portlet-content\\\"> <div class=\\\"\\\"> <!-- ko foreach: RequiredFields --> <div class=\\\"portlet-body\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: FieldName\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"\\\" aria-describedby=\\\"sizing-addon1\\\" readonly=\\\"readonly\\\"> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn\\\" type=\\\"button\\\">...</button> </span> </div> </div> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","export var EVENTS = {\r\n\tDOCUMENT_UPLOADED: 'DOCUMENT_UPLOADED'\r\n};","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nexport class UploadChunkModel {\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tFileChunk: any;\r\n\r\n\tconstructor(fileName?: string, fileChunk?: any) {\r\n\t\tthis.FileName = fileName;\r\n\t\tthis.FileChunk = fileChunk;\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class MissingFieldsDto {\r\n constructor(){\r\n this.NonrequiredFields = [];\r\n this.RequiredFields = [];\r\n }\r\n\r\n @deserialize\r\n NonrequiredFields: Array<string>;\r\n\r\n @deserialize\r\n RequiredFields: Array<string>;\r\n}","\r\nimport {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {DropDataModel} from 'Core/Controls/Drop/Models/DropDataModel';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\nimport { UploadChunkModel } from 'Core/Controls/Drop/Models/UploadChunkModel';\r\nimport { MissingFieldsDto } from 'Core/Controls/Drop/Models/MissingFieldsDto';\r\nimport {GetLimitOfUploadedDocumentsRequestModel} from \"../Models/GetLimitOfUploadedDocumentsRequestModel\";\r\nimport {GetLimitOfUploadedDocumentsResponseModel} from \"../Models/GetLimitOfUploadedDocumentsResponseModel\";\r\n\r\nexport interface IValidateSpreadsheetDto {\r\n ControlId: number;\r\n TempName: string;\r\n}\r\n\r\nexport class DropDataStore {\r\n\r\n\tstatic ValidateSreadsheet(params: IValidateSpreadsheetDto): P.Promise<MissingFieldsDto> {\r\n\t\tvar deferredResult = P.defer<MissingFieldsDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DropZoneApi/ValidateSpreadsheet',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, MissingFieldsDto));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLimitOfUploadedDocuments(params: GetLimitOfUploadedDocumentsRequestModel): P.Promise<GetLimitOfUploadedDocumentsResponseModel> {\r\n\t\tvar deferredResult = P.defer<GetLimitOfUploadedDocumentsResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DropZoneApi/GetLimitOfUploadedDocuments',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif(!data.IsSuccessfull){\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic InsertDropDocument(params: DropDataModel): P.Promise<number> {\r\n\t\tvar deferredResult = P.defer<number>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/DropZoneApi/InsertDocument',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n if(!data.IsSuccessfull){\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }else{\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResultModel {\r\n\t\tvar model = <OperationResultModel>Deserialize(jsonObject, OperationResultModel);\r\n\t\treturn model;\r\n }\r\n\r\n static UploadFileChunk(params: UploadChunkModel): P.Promise<OperationResultModel> {\r\n var deferredResult = P.defer<OperationResultModel>();\r\n var formData = new FormData();\r\n formData.append('file', params.FileChunk, params.FileName);\r\n \r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/DropZoneApi/UploadFileChunk',\r\n type: 'POST',\r\n contentType: false,\r\n processData: false\r\n }, params: formData\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(this.Deserialize(data));\r\n }).fail((error)=>{\r\n\t\t\t\tdeferredResult.reject({message: error.message});\r\n\t\t\t});\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nimport * as ko from 'knockout';\r\n\r\nexport class DropdownItemModel {\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n Value: string | any;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n disable?: boolean;\r\n\r\n private _isSelected: KnockoutObservable<boolean> = ko.observable(false);\r\n private _isEnabled: boolean;\r\n\r\n constructor(partial?: Partial<DropdownItemModel>) {\r\n if (partial) {\r\n this.RecordId = partial.RecordId;\r\n this.Label = partial.Label;\r\n this.Value = partial.Value;\r\n }\r\n }\r\n\r\n get IsSelected() {\r\n return this._isSelected();\r\n }\r\n\r\n set IsSelected(value: boolean) {\r\n this._isSelected(value);\r\n }\r\n\r\n get IsEnabled() {\r\n return this._isEnabled;\r\n }\r\n\r\n set IsEnabled(value: boolean) {\r\n this._isEnabled = value;\r\n }\r\n\r\n static Create(recordId: number, label: string, isEnabled: boolean, isSelected: boolean) {\r\n const item = new DropdownItemModel();\r\n\r\n item.RecordId = recordId;\r\n item.Label = label;\r\n item._isEnabled = isEnabled;\r\n item._isSelected(isSelected);\r\n\r\n return item;\r\n }\r\n}\r\n\r\nexport class DropdownListModel {\r\n constructor() {\r\n this.Items = [];\r\n this.RecordsCount = 0;\r\n }\r\n\r\n @deserialize\r\n ErrorMessage: string;\r\n\r\n @deserialize\r\n RecordsCount: number;\r\n\r\n @deserializeAs(DropdownItemModel)\r\n Items: Array<DropdownItemModel>;\r\n}\r\n\r\nexport class FastFilterRangeModel {\r\n\r\n @deserialize\r\n MaxValue: string;\r\n\r\n @deserialize\r\n MinValue: string;\r\n\r\n @deserialize\r\n ErrorMessage: string;\r\n\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface IGetDropdownControlDataRequestModel {\r\n\tFieldId: number;\r\n\tRecordId?: number;\r\n\tSubjectRecordId?: number;\r\n\tSubjectTypeId?: number;\r\n\tSubjectKindId?: number;\r\n\tSubjectStatusId?: number;\r\n\tScreenData?: Array<IDynamicFieldData>;\r\n\tControlId?: number;\r\n\tLeftEntityId?:number;\r\n\tRightEntityId?:number;\r\n\tLeftRecordId?:number;\r\n\tRightRecordId?:number;\r\n KSeq?: number;\r\n\tIsEnableFilter?: boolean;\r\n\r\n\tConditionValues?: Array<IConditionValueDto>;\r\n};\r\n\r\nexport class DropdownDataStore {\r\n\tstatic Get(params: IGetDropdownControlDataRequestModel): P.Promise<DropdownListModel> {\r\n\t\tlet deferredResult = P.defer<DropdownListModel>();\r\n\r\n\t\tRequest\r\n\t\t.For(URL.CONTROLS.DROPDOWN.GET_DROPDOWN_DATA)\r\n\t\t.UseCacheRequest()\r\n\t\t.Post(params)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): DropdownListModel {\r\n\t\tlet model = GenericDeserialize<DropdownListModel>(jsonObject.ResultObject, DropdownListModel);\r\n\t\tmodel.ErrorMessage = jsonObject.ErrorMessage;\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ControlToolBarModel} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlToolBarModel';\r\nimport {ControlGroup} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup';\r\nimport {ControlGroupModel} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\n\r\nimport ControlToolBarTemplate from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar.html\";\r\nko.templates[\"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar\"] = ControlToolBarTemplate;\r\n\r\nexport class ControlToolBar {\r\n\tprivate _groups: KnockoutObservableArray<ControlGroup>;\r\n\tprivate _currentControlGroup: ControlGroup;\r\n\tprivate _expanded: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\r\n\tconstructor(groups: Array<ControlGroupModel>) {\r\n\t\tthis._groups = ko.observableArray(groups.map(groupModel => new ControlGroup(groupModel)));\r\n\t\tthis._expanded = ko.observable(false);\r\n\t\tthis._expanded.subscribe(newValue => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\t$(this._el).fadeIn(400);\r\n\t\t\t} else {\r\n\t\t\t\tif (this._currentControlGroup) {\r\n\t\t\t\t\tthis._currentControlGroup.IsExpaned = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset Expanded(isExpanded: boolean) {\r\n\t\tthis._expanded(isExpanded);\r\n\t}\r\n\r\n\tget Expanded(): boolean {\r\n\t\treturn this._expanded();\r\n\t}\r\n\r\n\tget Groups(): KnockoutObservableArray<ControlGroup> {\r\n\t\treturn this._groups;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Templates/ControlToolBar\";\r\n\t}\r\n\r\n\r\n\tControlGroupClick(controlGroup) {\r\n\t\tif (this._currentControlGroup != controlGroup) {\r\n\t\t\tif (this._currentControlGroup) {\r\n\t\t\t\tthis._currentControlGroup.IsExpaned = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._currentControlGroup = controlGroup;\r\n\t\tthis._currentControlGroup.IsExpaned = !this._currentControlGroup.IsExpaned;\r\n\t}\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tthis._el = el[0];\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"css: { in: _expanded() }, style: { display: _expanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div data-bind=\\\"preventBubble: ['click']\\\" class=\\\"panel-body\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-info\\\" id=\\\"buttons-header\\\"> <div data-bind=\\\"click: $parent.ControlGroupClick.bind($parent, $data), clickBubble: false\\\" class=\\\"panel-heading\\\"> <h5 data-bind=\\\"text: Name\\\" class=\\\"panel-title\\\"></h5> </div> <div data-bind=\\\"css: { in: _expanded() }, style: { display: _expanded() ? 'block' : 'none' }\\\" id=\\\"controls-panel\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\"> <div data-bind=\\\"clickBubble: false\\\" id=\\\"controls-list\\\" class=\\\"control-container template-items\\\"> <ul data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner' }\\\" class=\\\"form-standard-control\\\"> <li><!-- ko template: { name: $data.GetTemplateName.bind($data) } --><!-- /ko --></li><br/> </ul> </div> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\nimport 'jquery';\r\n\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel'\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport { DesignScreen } from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport EntityToolBarTemplate from 'Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar.html'\r\nimport { ScreenStore } from 'Core/ScreenManager/Stores/ScreenStore';\r\nko.templates['Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar'] = EntityToolBarTemplate;\r\n\r\nexport class EntityToolBar {\r\n\tprivate _model: KnockoutObservable<ConcreteEntityModel>;\r\n\tprivate _expanded: KnockoutObservable<boolean>;\r\n\tprivate _expandedEntity: KnockoutObservable<EntityModel>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _scrollValue: KnockoutObservable<number>;\r\n\tprivate _screen: DesignScreen;\r\n\tprivate _isLoading: KnockoutObservable<boolean>;\r\n\r\n\tIsOpenFromDatabaseDesigner: KnockoutObservable<boolean>;\r\n\r\n\tprivate _labels: LABELS = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis._isLoading = ko.observable(false);\r\n\t\tthis._model = ko.observable(null);\r\n\t\tthis._expanded = ko.observable(false);\r\n\t\tthis._expandedEntity = ko.observable(null);\r\n\t\tthis._scrollValue = ko.observable(0);\r\n\t\tthis._expanded.subscribe(newValue => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\t$(this._el).fadeIn(400);\r\n\t\t\t} else {\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.IsOpenFromDatabaseDesigner = ko.observable(false);\r\n\t}\r\n\r\n\tget Model(): KnockoutObservable<ConcreteEntityModel> {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tset Expanded(isExpanded: boolean) {\r\n\t\tthis._expanded(isExpanded);\r\n\t}\r\n\r\n\tget Expanded(): boolean {\r\n\t\treturn this._expanded();\r\n\t}\r\n\r\n\tInit(entity: ConcreteEntityModel, screen: DesignScreen, isOpenFromDatabaseDesigner: boolean) {\r\n\t\tthis._model(entity);\r\n\t\tthis._screen = screen;\r\n\t\tthis._expandedEntity(this._model().MainEntity);\r\n\t\tthis._expanded(true);\r\n\t\tthis.IsOpenFromDatabaseDesigner(isOpenFromDatabaseDesigner);\r\n\t}\r\n\r\n\tLoadData(){\r\n\t\tScreenStore.GetSubjectEntity(this._screen.ScreenId)\r\n\t\t.always(()=>this._isLoading(false))\r\n\t\t.then((subjectEntity)=>{\r\n\t\t\tthis._model(subjectEntity);\r\n\t\t\tthis._screen.SubjectEntity = subjectEntity;\r\n\t\t\tthis._expandedEntity(this._model().MainEntity);\r\n\t\t\tthis._expanded(true);\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/FormDesigner/ToolBar/EntityToolBar/Templates/EntityToolBar';\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tthis._el = el[0];\r\n\t}\r\n\r\n\tasync EditTable(table: EntityModel){\r\n\t\tlet databaseDesigner = (await import ('DatabaseDesigner/DatabaseDesigner')).DatabaseDesigner;\r\n\t\t(databaseDesigner as any).dataBaseId = table.DbId;\t\t\r\n\t\t(databaseDesigner as any).InitUI();\r\n\t\t(databaseDesigner as any).GetData(()=>{\r\n\t\t\t(databaseDesigner as any).ShowTableDesigner(this._model().MainEntity.EntityId, table.EntityId)\r\n\t\t\t.then(()=> {\r\n\t\t\t\tthis._isLoading(true);\r\n\t\t\t\t(databaseDesigner as any).SaveData(false).then(()=>{\r\n\t\t\t\t\t(databaseDesigner as any).ExecuteDbDifferenceScript(()=> { \r\n\t\t\t\t\t\tthis.LoadData()\r\n\t\t\t\t\t});\t\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tEntityClick(model, evt) {\r\n\t\tvar parentContainer = evt.currentTarget;\r\n\t\tvar prevSiblings = 0;\r\n\t\tprevSiblings = $(parentContainer).prevAll().length;\r\n\t\tvar staticHeight = 43;\r\n\t\tvar scrollValue = prevSiblings * staticHeight + 20;\r\n\t\tthis._scrollValue(scrollValue);\r\n\r\n\t\tif (this._expandedEntity() === model) {\r\n\t\t\tthis._expandedEntity(null);\r\n\t\t} else {\r\n\t\t\tthis._expandedEntity(model);\r\n\t\t}\r\n\t\t\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isLoading, css: { in: _expanded() }, style: { display: _expanded() ? 'block' : 'none' }\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"true\\\" style=\\\"display:block\\\"> <div data-bind=\\\"preventBubble: ['click'], animate: { _scrollValue }\\\" class=\\\"panel-body scroll-y entity-container\\\" id=\\\"entitiesList\\\"> <!--ko with: Model --> <!--ko with: MainEntity --> <div class=\\\"panel panel-info\\\"> <div data-bind=\\\"attr: {title: $data.EntityNameTranslation || $data.EntityName }, click: $parents[1].EntityClick.bind($parents[1]), preventBubble: ['click']\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <!-- ko with: EntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <h5 class=\\\"panel-title clip panel-name subject\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> </div> <div data-bind=\\\"dragula: { data: RelationTypes, group: 'ToolBarToDesigner' }, style: { display: $data == $parents[1]._expandedEntity() ? 'block' : 'none' }\\\" class=\\\"relation-type\\\"> <span data-bind=\\\"css: $parent.RelationTypeTitle($data)\\\" class=\\\"label-sm\\\"> </span> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[1]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div id=\\\"main-entity-fields\\\" class=\\\"field-container\\\"> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }, css: { nonDraggable: IsSystem && FieldTypeName != 'Reference' }\\\" class=\\\"alert alert-warning draggable-field clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!-- /ko --> <!--ko foreach: RelatedSubEntitiesModel --> <!--ko foreach: Entities --> <div data-bind=\\\"click: $parents[2].EntityClick.bind($parents[2]), preventBubble: ['click']\\\" class=\\\"panel panel-info entity-explorer-sub-entity\\\"> <div data-bind=\\\"attr: { title: $data.EntityNameTranslation || $data.EntityName }\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <i class=\\\"fa fa-1x fa-stack panel-icon empty\\\"></i> <h5 class=\\\"panel-title clip panel-name\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> <!-- ko if: $data.IsView && !$parents[2].IsOpenFromDatabaseDesigner() --> <a data-bind=\\\"attr: { title: $parents[2]._labels.EDIT_SUB_TABLE }, click: $parents[2].EditTable.bind($parents[2], $data), preventBubble: ['click']\\\" class=\\\"edit-table-btn\\\"> <i class=\\\"fa fa-1x fa-pencil\\\"></i> </a> <!-- /ko --> </div> <div data-bind=\\\"dragula: { data: RelationTypes, group: 'ToolBarToDesigner' }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }\\\" class=\\\"relation-type\\\"> <span data-bind=\\\"css: $parent.RelationTypeTitle($data)\\\" class=\\\"label-sm\\\"> </span> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field relatedField clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> <!--ko with: RelatedEntities --> <!--ko foreach: Entities--> <div data-bind=\\\"click: $parents[2].EntityClick.bind($parents[2]), , preventBubble: ['click']\\\" class=\\\"panel panel-info draggable-entity\\\"> <div data-bind=\\\"attr: { title: $data.EntityNameTranslation || $data.EntityName }\\\" class=\\\"panel-heading clearfix\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix noselect\\\"> <!-- ko with: EntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <h5 class=\\\"panel-title clip panel-name\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> </div> <div data-bind=\\\"dragula: { data: RelationTypes, group: 'ToolBarToDesigner' }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }\\\" class=\\\"relation-type\\\"> <span data-bind=\\\"css: $parent.RelationTypeTitle($data)\\\" class=\\\"label-sm\\\"> </span> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[2]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <!-- ko with: LinkEntity --> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field clearfix relatedField\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> <!-- /ko --> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!--ko foreach: RelatedSubEntities --> <div data-bind=\\\"click: $parents[3].EntityClick.bind($parents[3]), preventBubble: ['click']\\\" class=\\\"panel panel-info entity-explorer-sub-entity\\\"> <div data-bind=\\\"attr: { title: $data.EntityNameTranslation || $data.EntityName }\\\" class=\\\"panel-heading clearfix noselect\\\" data-toggle=\\\"tooltip\\\"> <div class=\\\"clearfix\\\"> <i class=\\\"fa fa-1x fa-stack panel-icon empty\\\"></i> <h5 class=\\\"panel-title clip panel-name\\\"> <!-- ko text: $data.EntityNameTranslation || $data.EntityName --><!-- /ko --> </h5> </div> </div> <div data-bind=\\\"css: { in: false }, style: { display: $data == $parents[3]._expandedEntity() ? 'block' : 'none' }, preventBubble: ['click']\\\" class=\\\"panel-collapse collapse\\\"> <div class=\\\"field-container\\\"> <div data-bind=\\\"dragula: { data: Fields, group: 'ToolBarToDesigner' }\\\"> <div data-bind=\\\"attr: {'data-field-type-name': FieldTypeName }\\\" class=\\\"alert alert-warning draggable-field relatedField clearfix\\\"> <!-- ko with: FieldIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"field-name\\\"> <!-- ko if: FieldNameTranslation --> <!-- ko text: FieldNameTranslation --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: FieldNameTranslation --> <!-- ko text: FieldName --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ControlFactory} from 'Core/Controls/ControlFactory'\r\nimport {RenderModes} from \"Core/Constant\"\r\nimport {IControl} from \"Core/Controls/IControl\"\r\nimport {ControlToolBar} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlToolBar\"\r\nimport {EntityToolBar} from \"Core/Controls/FormDesigner/ToolBar/EntityToolBar/EntityToolBar\"\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {ControlGroup} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup\";\r\nimport {ControlGroupModel} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport ToolBarTemplate from \"Core/Controls/FormDesigner/ToolBar/Templates/ToolBar.html\";\r\nko.templates[\"Core/Controls/FormDesigner/ToolBar/Templates/ToolBar\"] = ToolBarTemplate;\r\n\r\nexport class ToolBar {\r\n\tprivate _controlToolBar: ControlToolBar;\r\n\tprivate _entityToolBar: EntityToolBar;\r\n\tprivate _isEnabled: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(groups: Array<ControlGroupModel>) {\r\n\t\tthis._controlToolBar = new ControlToolBar(groups);\r\n\t\tthis._entityToolBar = new EntityToolBar();\r\n\t\tthis._isEnabled = ko.observable(false);\r\n\t}\r\n\r\n\tset IsEnabled(isEnabled: boolean) {\r\n\t\tthis._isEnabled(isEnabled);\r\n\t}\r\n\r\n\tEnableToolBar(): boolean {\r\n\t\treturn this._isEnabled();\r\n\t}\r\n\r\n\tget ControlToolBar(): ControlToolBar {\r\n\t\treturn this._controlToolBar;\r\n\t}\r\n\r\n\tget EntityToolBar(): EntityToolBar {\r\n\t\treturn this._entityToolBar;\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/Controls/FormDesigner/ToolBar/Templates/ToolBar\";\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tEntitiesBarClick() {\r\n\t\tif (this._isEnabled()) {\r\n\t\t\tthis._controlToolBar.Expanded = false;\r\n\t\t\tthis._entityToolBar.Expanded = !this._entityToolBar.Expanded;\r\n\t\t}\r\n\t}\r\n\r\n\tControlsBarClick() {\r\n\t\tif (this._isEnabled()) {\r\n\t\t\tthis._controlToolBar.Expanded = !this._controlToolBar.Expanded;\r\n\t\t\tthis._entityToolBar.Expanded = false;\r\n\t\t}\r\n\t}\r\n\r\n\tCollapseAll() {\r\n\t\tthis._controlToolBar.Expanded = false;\r\n\t\t//this._entityToolBar.Expanded = false;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"panel-group\\\"> <div data-bind=\\\"click: EntitiesBarClick, clickBubble: true, visible: _isEnabled\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <!--ko text: _labels.ENTITIES --><!-- /ko--> </h4> </div> <!-- ko with: EntityToolBar --> <!-- ko template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div data-bind=\\\"click: ControlsBarClick, clickBubble: true\\\" class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <!--ko text: _labels.TEMPLATE --><!-- /ko--> </h4> </div> <!-- ko with: ControlToolBar --> <!-- ko template: { name: GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\nimport {EntitiesListModel} from \"Core/Controls/FormDesigner/Models/EntitiesListModel\";\r\nimport {CreateNewFormRequestModel} from \"Core/Controls/FormDesigner/Models/CreateNewFormRequestModel\";\r\nimport {ResetFormRequestModel} from \"Core/Controls/FormDesigner/Models/ResetFormRequestModel\";\r\nimport { DesignScreenModel } from 'Core/Models/Screens/ScreenModel';\r\nimport { Deserialize } from 'libs/cerialize';\r\n\r\nexport class FormDesignerStore {\r\n\tstatic GetFormDesignerMetaData(): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/GetFormDesignerMetaData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetEntities(): P.Promise<EntitiesListModel> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/GetFormDesignerEditScreenModel',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic CreateNewForm(model: CreateNewFormRequestModel): P.Promise<DesignScreenModel> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/GetScreen',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.DeserializeDesignScreen(result));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ResetForm(model: ResetFormRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/ResetScreenFromRoot',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeserializeDesignScreen(jsonObject: any): DesignScreenModel {\r\n\t\tvar model = <DesignScreenModel>Deserialize(jsonObject.ResultObject, DesignScreenModel);\r\n\t\treturn model;\r\n\t}\r\n}","export class CreateNewFormRequestModel {\r\n\tconstructor(public EntityId: number,\r\n\t\t\t\tpublic ScreenTypeId: number,\r\n\t\t\t\tpublic TableTypeId: number,\r\n\t\t\t\tpublic FieldCollectionId: number) {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {IPropertyDescription, IPropertyOption, ISource} from \"../../../GeneralProperties/Managers/BaseProperty\";\r\nimport {ColorPicker} from \"../../../GeneralProperties/Managers/ColorPicker/ColorPicker\";\r\nimport {SelectProperty} from \"../../../GeneralProperties/Managers/SelectProperty/SelectProperty\";\r\nimport {CARD_SCREEN_PROPERTY_TYPE, SCREEN_PROPERTY_TYPE} from \"Core/Constant\";\r\nimport {IWebSizeValue, WebSizeProperty} from \"../../../GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport CardScreenSettingsModalTemplate from 'Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal.html';\r\nko.templates['Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal'] = CardScreenSettingsModalTemplate;\r\n\r\nimport SettingsModalTemplate from 'Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal.html';\r\nko.templates['Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal'] = SettingsModalTemplate;\r\n\r\nexport interface ISettingsModal {\r\n Type: string;\r\n Value?: any;\r\n}\r\nexport class SettingsModal extends Event {\r\n private _modal = new Modal(\r\n { addClass: 'settings-modal jBox-padding-15px' },\r\n false\r\n );\r\n\r\n _labels = LABELS;\r\n\r\n private _bgColorCardScreen: ColorPicker;\r\n private _widthCardScreen: WebSizeProperty;\r\n private _fontColorCardScreen: ColorPicker;\r\n private _fontWeightCardScreen: SelectProperty;\r\n private _fontFamilyCardScreen: SelectProperty;\r\n private _fontStyleCardScreen: SelectProperty;\r\n private _params: KnockoutObservableArray<ISettingsModal>;\r\n\r\n private _fontStyleOptions: KnockoutObservable<any>;\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontColor: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n private _styleText: KnockoutObservable<any>;\r\n private _screenType: string;\r\n private _screenBackgroundColor: ColorPicker;\r\n private _screenHeaderBackgroundColor: ColorPicker;\r\n private _screenBGColor: KnockoutObservable<string>;\r\n private _screenHeaderBGColor: KnockoutObservable<string>;\r\n\r\n constructor(params: Array<ISettingsModal>, screenType: string) {\r\n super();\r\n this._screenType = screenType;\r\n\r\n this._fontStyleOptions = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n this._styleText = ko.observable(null);\r\n this._screenBGColor = ko.observable(null);\r\n this._screenHeaderBGColor = ko.observable(null);\r\n\r\n this._params = ko.observableArray(params);\r\n this.InitSettingControls(params);\r\n }\r\n\r\n InitSettingControls(params: Array<ISettingsModal>): void {\r\n if (this._screenType === ScreenTypes[ScreenTypes.CardScreen]) {\r\n this.InitWidthCardScreen(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value);\r\n this.InitBackgroundColorScreen(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this.InitFontColor(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value);\r\n this.InitFontWeight(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value);\r\n this.InitFontFamily(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value);\r\n this.InitFontStyle(this.FindElementByType(params, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value);\r\n } else {\r\n this.InitScreenBGColor(this.FindElementByType(params, SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this.InitScreenHeaderBGColor(this.FindElementByType(params, SCREEN_PROPERTY_TYPE.SCREEN_HEADER_BACKGROUND_COLOR)?.Value);\r\n }\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n InitWidthCardScreen(value?: IWebSizeValue) {\r\n let propertyValue: IWebSizeValue | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"%\", Value: '%'},\r\n {Name: \"px\", Value: 'px'}\r\n ],\r\n defaultOptions: IPropertyOption = {Name: \"%\", Value: '%'},\r\n property: IPropertyDescription = {\r\n Name: \"Screen Width\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH,\r\n PropertyManager: \"WebSizeProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null,\r\n DefaultValue: defaultOptions\r\n };\r\n\r\n this._widthCardScreen = new WebSizeProperty(property, propertyValue);\r\n }\r\n\r\n InitBackgroundColorScreen(value?: string) {\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Background Color\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._bgColorCardScreen = new ColorPicker(property, propertyValue);\r\n }\r\n\r\n InitFontColor(value?: string){\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Font Color\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._fontColorCardScreen = new ColorPicker(property, propertyValue);\r\n this._styleText(propertyValue ? {'color': propertyValue} : null);\r\n }\r\n\r\n InitFontWeight(value?: IPropertyOption) {\r\n let getData = null,\r\n propertyValue: IPropertyOption | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"Light\", Value: 'font-light'},\r\n {Name: \"Regular\", Value: 'font-regular'},\r\n {Name: \"Medium\", Value: 'font-medium'},\r\n {Name: \"Bold\", Value: 'font-bold'},\r\n {Name: \"Black\", Value: 'font-black'},\r\n ],\r\n property: IPropertyDescription = {\r\n Name: \"Font Weight\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT,\r\n PropertyManager: \"SelectProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null\r\n };\r\n\r\n this._fontWeightCardScreen = new SelectProperty(property, propertyValue, getData);\r\n this._fontWeight(propertyValue?.Value);\r\n }\r\n\r\n InitFontFamily(value?: IPropertyOption) {\r\n // add new font:\r\n // 1. https://fonts.google.com/selection/embed\r\n // 2. update <link href=\"https://fonts.googleapis.com/css2?family=... on _Layout.cshtml\r\n // 2. update @mixin customFontFamily on _mixins.scss\r\n // 3. update options\r\n let getData = null,\r\n propertyValue: IPropertyOption | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"Roboto\", Value: 'roboto-font'},\r\n {Name: \"Lato\", Value: 'lato-font'},\r\n {Name: \"Poppins\", Value: 'poppins-font'},\r\n {Name: \"Inria Sans\", Value: 'inria-sans-font'},\r\n {Name: \"Ubuntu\", Value: 'ubuntu-font'},\r\n {Name: \"Fira Sans\", Value: 'fira-sans-font'},\r\n {Name: \"Titillium Web\", Value: 'titillium-web-font'},\r\n ],\r\n property: IPropertyDescription = {\r\n Name: \"Font Family\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY,\r\n PropertyManager: \"SelectProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null\r\n };\r\n\r\n this._fontFamilyCardScreen = new SelectProperty(property, propertyValue, getData);\r\n this._fontFamily(propertyValue?.Value);\r\n }\r\n\r\n InitFontStyle(value?: IPropertyOption) {\r\n let getData = null,\r\n propertyValue: IPropertyOption | undefined = value,\r\n options: Array<IPropertyOption> = [\r\n {Name: \"Normal\", Value: 'font-normal'},\r\n {Name: \"Italic\", Value: 'font-italic'},\r\n ],\r\n property: IPropertyDescription = {\r\n Name: \"Font Style\",\r\n Type: CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE,\r\n PropertyManager: \"SelectProperty\",\r\n ValueRequired: false,\r\n Options: options,\r\n Source: null\r\n };\r\n\r\n this._fontStyleCardScreen = new SelectProperty(property, propertyValue, getData);\r\n this._fontStyle(propertyValue?.Value);\r\n }\r\n\r\n InitScreenBGColor(value?: string){\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Screen Background Color\",\r\n Type: SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._screenBackgroundColor = new ColorPicker(property, propertyValue);\r\n this._screenBGColor(propertyValue ? propertyValue : null);\r\n }\r\n\r\n InitScreenHeaderBGColor(value?: string){\r\n let propertyValue: string | undefined = value,\r\n property: IPropertyDescription = {\r\n Name: \"Screen Header Background Color\",\r\n Type: SCREEN_PROPERTY_TYPE.SCREEN_HEADER_BACKGROUND_COLOR,\r\n PropertyManager: \"ColorPicker\",\r\n ValueRequired: false,\r\n Options: null,\r\n Source: null\r\n };\r\n\r\n this._screenHeaderBackgroundColor = new ColorPicker(property, propertyValue);\r\n this._screenHeaderBGColor(propertyValue ? propertyValue : null);\r\n }\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n OnSubmit() {\r\n let screenOptions: Array<ISettingsModal> = null;\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.CardScreen]) {\r\n\r\n screenOptions = [\r\n {Type: this._bgColorCardScreen.PropertyDescriptionType, Value: this._bgColorCardScreen.Value()},\r\n {Type: this._widthCardScreen.PropertyDescriptionType, Value: this._widthCardScreen.Value()},\r\n {Type: this._fontColorCardScreen.PropertyDescriptionType, Value: this._fontColorCardScreen.Value()},\r\n {Type: this._fontFamilyCardScreen.PropertyDescriptionType, Value: this._fontFamilyCardScreen.Value()},\r\n {Type: this._fontWeightCardScreen.PropertyDescriptionType, Value: this._fontWeightCardScreen.Value()},\r\n {Type: this._fontStyleCardScreen.PropertyDescriptionType, Value: this._fontStyleCardScreen.Value()}\r\n ];\r\n\r\n } else {\r\n\r\n screenOptions = [\r\n {Type: this._screenBackgroundColor.PropertyDescriptionType, Value: this._screenBackgroundColor.Value()},\r\n {Type: this._screenHeaderBackgroundColor.PropertyDescriptionType, Value: this._screenHeaderBackgroundColor.Value()},\r\n ];\r\n\r\n }\r\n\r\n\r\n // let hasChanges: boolean = !_.isEqual(screenOptions, this._params());\r\n let hasChanges: boolean = true;\r\n\r\n if (screenOptions?.length) {\r\n this.Trigger('SUBMIT', { Options: screenOptions, HasChanges: hasChanges});\r\n } else {\r\n this.Trigger('SUBMIT', { Options: null, HasChanges: hasChanges });\r\n }\r\n\r\n this._modal.Close();\r\n }\r\n\r\n GetTemplateName() {\r\n let isCardScreen:boolean = this._screenType === ScreenTypes[ScreenTypes.CardScreen];\r\n return isCardScreen ? 'Core/Controls/FormDesigner/SettingsModal/Templates/CardScreenSettingsModal' : 'Core/Controls/FormDesigner/SettingsModal/Templates/SettingsModal';\r\n }\r\n\r\n AfterRender() {\r\n if (this._screenType === ScreenTypes[ScreenTypes.CardScreen]) {\r\n this._fontFamilyCardScreen.Value.subscribe((newValue) => {\r\n this._fontFamily(newValue.Value);\r\n })\r\n this._fontWeightCardScreen.Value.subscribe((newValue) => {\r\n this._fontWeight(newValue.Value);\r\n })\r\n this._fontStyleCardScreen.Value.subscribe((newValue) => {\r\n this._fontStyle(newValue.Value);\r\n })\r\n this._fontColorCardScreen.Value.subscribe((newValue)=> {\r\n this._fontColor(newValue);\r\n this._styleText({'color': this._fontColor()});\r\n })\r\n this._fontFamily.subscribe((newValue)=>{\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n })\r\n this._fontWeight.subscribe((newValue)=>{\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n })\r\n this._fontStyle.subscribe((newValue)=>{\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n })\r\n\r\n this._fontStyleOptions(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n\r\n } else {\r\n\r\n const testScreenBodyHeader: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__header\");\r\n const testScreenBodyPageContainer: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__page-container\");\r\n\r\n this._screenBackgroundColor.Value.subscribe((newValue) => {\r\n this._screenBGColor(newValue)\r\n $(testScreenBodyPageContainer).get(0).style.setProperty(\"--root-background-color\", newValue);\r\n })\r\n this._screenHeaderBackgroundColor.Value.subscribe((newValue) => {\r\n this._screenHeaderBGColor(newValue)\r\n $(testScreenBodyHeader).get(0).style.setProperty(\"--main-color-1\", newValue);\r\n })\r\n\r\n if (this._screenBGColor()) {\r\n const testScreenBodyPageContainer: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__page-container\");\r\n $(testScreenBodyPageContainer).get(0).style.setProperty(\"--root-background-color\", this._screenBGColor());\r\n }\r\n if (this._screenHeaderBGColor()) {\r\n const testScreenBodyHeader: JQuery<HTMLElement> = $(document.body).find(\".test-screen_body__header\");\r\n $(testScreenBodyHeader).get(0).style.setProperty(\"--main-color-1\", this._screenHeaderBGColor());\r\n }\r\n\r\n }\r\n }\r\n}\r\n","// Module\nvar code = \"<form data-bind=\\\"submit: OnSubmit\\\" class=\\\"settings-modal__form box-shadow-wrapper\\\"> <div class=\\\"panel-group\\\" id=\\\"accordion\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"true\\\"> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingTwo\\\"> <h4 class=\\\"panel-title\\\"> <a class=\\\"collapsed\\\" role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" href=\\\"#collapseTwo\\\" aria-expanded=\\\"true\\\" aria-controls=\\\"collapseTwo\\\"> Screen Styling </a> </h4> </div> <div id=\\\"collapseTwo\\\" class=\\\"panel-collapse collapse in\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingTwo\\\"> <div class=\\\"panel-body\\\"> <!-- ko with: _bgColorCardScreen --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _widthCardScreen --> <div class=\\\"settings-modal__form--widthPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingOne\\\"> <h4 class=\\\"panel-title\\\"> <a role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" href=\\\"#collapseOne\\\" aria-expanded=\\\"false\\\" aria-controls=\\\"collapseOne\\\"> Font Styles </a> </h4> </div> <div id=\\\"collapseOne\\\" class=\\\"panel-collapse collapse\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingOne\\\"> <div class=\\\"panel-body\\\"> <div class=\\\"settings-modal__form--row\\\"> <!-- ko with: _fontColorCardScreen --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"settings-modal__form--row settings-modal__form_font-styling\\\"> <!-- ko with: _fontFamilyCardScreen --> <div class=\\\"settings-modal__form--select\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _fontWeightCardScreen --> <div class=\\\"settings-modal__form--select\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _fontStyleCardScreen --> <div class=\\\"settings-modal__form--select\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"settings-modal__form--row\\\"> <div class=\\\"settings-modal__form_test-font-box\\\" data-bind=\\\"class: _fontStyleOptions(), style: _styleText()\\\"> <input class=\\\"font-box-input\\\" placeholder=\\\"Type here to preview text\\\" value=\\\"Type here to preview text\\\"> </div> </div> </div> </div> </div> </div> <button class=\\\"settings-modal__submit-button btn green\\\"> <!-- ko text: _labels.OK --> <!-- /ko --> </button> </form>\";\n// Exports\nexport default code;","// Module\nvar code = \"<form data-bind=\\\"submit: OnSubmit\\\" class=\\\"settings-modal__form box-shadow-wrapper\\\"> <div class=\\\"panel-group\\\" id=\\\"accordion\\\" role=\\\"tablist\\\" aria-multiselectable=\\\"true\\\"> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" role=\\\"tab\\\" id=\\\"headingTwo\\\"> <h4 class=\\\"panel-title\\\"> <a class=\\\"collapsed\\\" role=\\\"button\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" href=\\\"#collapseTwo\\\" aria-expanded=\\\"true\\\" aria-controls=\\\"collapseTwo\\\"> Screen Styling </a> </h4> </div> <div id=\\\"collapseTwo\\\" class=\\\"panel-collapse collapse in\\\" role=\\\"tabpanel\\\" aria-labelledby=\\\"headingTwo\\\"> <div class=\\\"panel-body\\\"> <!-- ko with: _screenHeaderBackgroundColor --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _screenBackgroundColor --> <div class=\\\"settings-modal__form--colorPicker\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"test-screen_body-container\\\"> <div class=\\\"test-screen_body\\\"> <div class=\\\"test-screen_body__header\\\"> <div class=\\\"test-screen_body__header-left\\\"> <i class=\\\"fa fa-home\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"test-screen_body__header-right\\\"> <div class=\\\"lorem\\\"> <i></i>Lorem ipsum dolor.<i class=\\\"fa fa-angle-down\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"lorem\\\"> <i></i>Lorem ipsum dolor.<i class=\\\"fa fa-angle-down\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"lorem\\\"> <i class=\\\"icon-logout\\\"></i> </div> </div> </div> <div class=\\\"test-screen_body__page-container\\\"> <div class=\\\"test-screen_body__page-sidebar-wrapper\\\"> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> <div class=\\\"lorem\\\"> <div class=\\\"left-lorem\\\"> <i class=\\\"fa fa-sun-o icon-test\\\" aria-hidden=\\\"true\\\"></i>Lorem ipsum </div> <div class=\\\"right-lorem\\\"> <i class=\\\"fa fa-angle-left icon-right\\\" aria-hidden=\\\"true\\\"></i> </div> </div> </div> <div class=\\\"test-screen_body__page-content\\\"> <div class=\\\"test-screen_body__page-content_top-header box-shadow-wrapper\\\"> </div> <div class=\\\"test-screen_body__page-content_top-box\\\"> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> </div> <div class=\\\"test-screen_body__page-content_bottom_box\\\"> <div class=\\\"sub-form box-shadow-wrapper\\\"></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> <button class=\\\"settings-modal__submit-button btn green\\\"> <!-- ko text: _labels.OK --> <!-- /ko --> </button> </form>\";\n// Exports\nexport default code;","export class ResetFormRequestModel {\r\n\tconstructor(\r\n\t\tpublic FormId: number,\r\n\t\tpublic EntityId: number,\r\n\t\tpublic TableTypeId: number,\r\n\t\tpublic FieldCollectionId: number,\r\n\t\tpublic FormTypeId: number) {\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div class=\\\"form-designer\\\" data-bind=\\\"attr: {'data-screen-type': ScreenType}\\\"> <div class=\\\"form-designer-container\\\"> <div class=\\\"explorer-block\\\" data-bind=\\\"css: {'toolBarOff': !EnableToolBar}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: ToolBar --> <!-- ko template: { name: GetTemplateName } --><!-- /ko --> <!-- /ko --> </div> </div> <div class=\\\"form-designer-block\\\" data-bind=\\\"css: {'toolBarOn': EnableToolBar}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <input id=\\\"formId\\\" type=\\\"hidden\\\" value=\\\"0\\\"/> <div class=\\\"create-form-title\\\"> <fieldset> <legend class=\\\"title createTitle standart-button-container\\\"> <div class=\\\"entity-wrapper\\\"> <div class=\\\"name-container\\\"> <!--ko if: IsEditable --> <input data-bind=\\\"textInput: $data._screenName\\\" class=\\\"search-input typeahead input-medium subFormControl\\\" type=\\\"text\\\" autocomplete=\\\"off\\\" placeholder=\\\"Screen Name\\\" autofocus/> <button data-bind=\\\"click: $data.UpdateScreenName.bind($data)\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-save\\\"></i> <!--ko text: _labels.SAVE --><!-- /ko--> </button> <button data-bind=\\\"click: Cancel\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\"> <!--ko text: _labels.CANCEL --><!-- /ko--></button> <!--<button data-bind=\\\"enable: $data.HasData, click: $data.SaveFormName.bind($data)\\\" class=\\\"btn green\\\" disabled><i class=\\\"fa fa-save\\\"></i> Save</button>--> <!-- /ko--> <!--ko if: !IsEditable()--> <span data-bind=\\\"text: Title\\\" class=\\\"entity-name custom-color-option\\\"></span> <!--ko if: $data.HasData --> <a data-bind=\\\"click: $data.OnEditClick.bind($data)\\\" class=\\\"fa fa-edit edit-name-btn transition\\\"></a> <!-- /ko--> <!-- /ko--> </div> <div class=\\\"entity-icon\\\"> <span class=\\\"fa fa-address-card\\\" aria-hidden=\\\"true\\\"></span> </div> </div> </legend> </fieldset> <div class=\\\"clearfix\\\"> <div class=\\\"standart-button-container clearfix form-designer-toolbar\\\"> <input data-bind=\\\"textInput: $data._searchTerm, hasFocus: true, enterKey: $data.Search.bind($data), attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <button data-bind=\\\"enable: $data.HasData, click: Preview, tooltip: {content: _labels.PREVIEW}\\\" class=\\\"btn default btn-preview\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa-solid fa-tv\\\"></i> </button> <button data-bind=\\\"enable: $data.HasData, click: Refresh, tooltip: {content: _labels.REFRESH}\\\" class=\\\"btn yellow\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa fa-refresh\\\"></i> </button> <button data-bind=\\\"enable: $data.HasData && $data.IsSaveEnable, click: Save, tooltip: {content: _labels.SAVE}\\\" class=\\\"btn green-seagreen\\\" disabled=\\\"disabled\\\"> <i class=\\\"fa fa-save\\\"></i> </button> <button data-bind=\\\"attr:{'disabled': _disableDelete}, click: DeleteScreen, tooltip: {content: _labels.DELETE}\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-trash\\\"></i> </button> <button data-bind=\\\"visible: !$data.IsDashScreen(), click: Reset, tooltip: {content: _labels.RESET}\\\" class=\\\"btn red\\\"> <i class=\\\"fa blue fa-reply\\\"></i> </button> <!-- ko if: $data._isEnablePathRunnerToggler --> <div class=\\\"pathRunner-button-container\\\" data-bind=\\\"style: {'outline-color': $data._pathRunnerTogglerColor}, tooltip: {content: 'Show/Hide PathRunner'}\\\"> <a href=\\\"#\\\" data-bind=\\\"click: $data.TogglePathRunner.bind($data), style: {'background-color': $data._pathRunnerTogglerColor}\\\" class=\\\"icon\\\"> <span class=\\\"pathRunner-button-container__on_of_text\\\" data-bind=\\\"text: _pathRunnerToggler() ? 'on' : 'off' \\\"></span> <svg> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </a> </div> <!-- /ko--> <!-- ko if: ScreenType() === 'CardScreen' --> <button data-bind=\\\"click: OpenSettingsModal.bind($data, true), tooltip: {content: _labels.SETTINGS}\\\" class=\\\"btn blue-dark\\\"> <i class=\\\"fa fa-cog\\\"></i> </button> <!-- /ko --> <!-- ko if: ScreenType() --> <!-- ko ifnot: ScreenType() === 'CardScreen' || ScreenType() === 'Portlet' || ScreenType() === 'QueryScreen' || ScreenType() === 'Dashboard' --> <button data-bind=\\\"click: OpenSettingsModal.bind($data, false), tooltip: {content: _labels.SETTINGS}\\\" class=\\\"btn blue-dark\\\"> <i class=\\\"fa fa-cog\\\"></i> </button> <!-- /ko --> <!-- /ko --> <div class=\\\"actions menu-start\\\"> <div class=\\\"btn-group\\\"> <a data-bind=\\\"css: {'disabled': !_selectedType()}\\\" class=\\\"btn blue dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"> <!-- <span data-bind=\\\"text: _selectedType() ? _selectedType().TypeName : 'Menu start'\\\"></span>--> <span><!--ko text: _labels.MENU_START --><!-- /ko--></span> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul role=\\\"menu\\\" class=\\\"dropdown-menu pull-right\\\"> <!-- ko foreach: ScreenTypes --> <li data-bind=\\\"css: {'active': FormId === $parent._selectedType().FormId}\\\"> <a data-bind=\\\"text: GetTypeName(), click: $parent.PickType.bind($parent, FormId)\\\"></a> </li> <!-- /ko --> </ul> </div> </div> <!--ko if: ScreenType() === 'Dashboard'--> <button class=\\\"btn blue-dark\\\" data-bind=\\\"click: StartLayoutConfiguration, tooltip: {content: _labels.LAYOUT}\\\"> <i class=\\\"fa fa-align-left\\\"></i> </button> <!--/ko--> <!--ko if: ShouldShowButtonsOrEntityTypeButtons() --> <!--ko if: EnableEntityTypeButtons() --> <div class=\\\"collection-box\\\" data-bind=\\\"visible: EnableToolBar\\\"> <a class=\\\"btn blue collection-box--button typed-screen-button\\\" data-bind=\\\"click: ShowTypedScreenDropDown, css: {'open': _isOpenTypedScreenDropDown()}\\\"> <span class=\\\"collection-box--name\\\" data-bind=\\\"text: _labels.TYPE\\\"></span> <span class=\\\"collection-box--separator\\\"></span> <span class=\\\"collection-box--active-name\\\" data-bind=\\\"text: GetActiveTypeName() || _activeTypeName(),\\r\\n ellipsisTooltip: {\\r\\n content: (GetActiveTypeName() || _activeTypeName()) || '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\"></span> <span class=\\\"collection-box--button-caret\\\"><i class=\\\"fa\\\" aria-hidden=\\\"true\\\" data-bind=\\\"css: {'fa-angle-down': !_isOpenTypedScreenDropDown(), 'fa-angle-up': _isOpenTypedScreenDropDown()}\\\"></i></span> </a> </div> <!-- /ko--> <!--ko if: ShouldShowButtons --> <div class=\\\"collection-box\\\" data-bind=\\\"visible: EnableToolBar\\\"> <a class=\\\"btn blue collection-box--button field-collection-button\\\" data-bind=\\\"click: ShowFieldCollectionDropdown, css: {'open': _isOpenFieldCollectionDropdown()}\\\"> <span class=\\\"collection-box--name\\\" data-bind=\\\"text: _labels.FIELD_COLLECTION\\\"></span> <span class=\\\"collection-box--separator\\\"></span> <span class=\\\"collection-box--active-name\\\" data-bind=\\\"text: GetActiveFieldCollectionName() || _activeFieldCollectionName()\\\"></span> <span class=\\\"collection-box--button-caret\\\"><i class=\\\"fa\\\" aria-hidden=\\\"true\\\" data-bind=\\\"css: {'fa-angle-down': !_isOpenFieldCollectionDropdown(), 'fa-angle-up': _isOpenFieldCollectionDropdown()}\\\"></i></span> </a> </div> <!--/ko--> <!--/ko--> </div> </div> <div class=\\\"edit-screen-block\\\"> <div data-bind=\\\"visible: HasData\\\" class=\\\"portlet light row-no-padding\\\"> <div id=\\\"designScreenCanvas\\\"></div> </div> </div> </div> </div> <span data-bind=\\\"visible: EnableToolBar, click: EasterEgg\\\" class=\\\"easterEggBtn\\\"></span> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <div class=\\\"collection-popUp field-collection-buttons-group\\\"> <!--ko foreach: FieldCollections--> <button data-bind=\\\"click: $parent.SelectFieldCollection.bind($parent), text: $data.Name, css: $parent.GetFieldCollectionButtonColor($data)\\\" class=\\\"btn table-type-btn\\\"></button> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <div class=\\\"collection-popUp table-type-buttons-group\\\"> <!--ko foreach: EntityTypes--> <button data-bind=\\\"click: $parent.SelectTypedScreen.bind($parent), text: $data.GetName(), css: $parent.GetTypeButtonColor($data)\\\" class=\\\"btn table-type-btn\\\"></button> <!-- /ko--> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport clone from 'clone';\r\n\r\nimport {Serialize} from 'libs/cerialize';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ToolBar} from 'Core/Controls/FormDesigner/ToolBar/ToolBar';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {CONTROL_TYPES, RenderModes, CARD_SCREEN_PROPERTY_TYPE} from 'Core/Constant';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {getWidthValue} from 'Core/Screens/CardScreen/CardScreenUtils';\r\nimport {\r\n TypedScreenModel, TableType, FormTypeModel,\r\n FieldCollectionModel\r\n} from 'Core/Models/Screens/ScreenModel';\r\nimport {Width} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {FormDesignerStore} from 'Core/Controls/FormDesigner/Stores/FormDesignerStore';\r\nimport {FormDesignerMetadataModel} from 'Core/Controls/FormDesigner/Models/FormDesignerMetadataModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {SelectDialog, ISelectorOption} from 'Core/Components/Dialogs/SelectDialog/SelectDialog';\r\nimport {CreateNewFormRequestModel} from 'Core/Controls/FormDesigner/Models/CreateNewFormRequestModel';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {ISettingsModal, SettingsModal} from 'Core/Controls/FormDesigner/SettingsModal/SettingsModal';\r\nimport {ResetFormRequestModel} from \"Core/Controls/FormDesigner/Models/ResetFormRequestModel\";\r\nimport {NotTypedScreenTypes} from \"Core/Constant\";\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport 'pubsub';\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport ViewTemplate from 'Core/Controls/FormDesigner/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/FormDesigner/Templates/ToolBar.html';\r\nimport FieldCollectionDropdownTemplate from 'Core/Controls/FormDesigner/Templates/FieldCollectionDropdownTemplate.html';\r\nimport TypedScreenDropDownTemplate from 'Core/Controls/FormDesigner/Templates/TypedScreenDropDownTemplate.html';\r\nimport * as $ from \"jquery\";\r\n\r\nko.templates['Core/Controls/FormDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/FieldCollectionDropdownTemplate'] = FieldCollectionDropdownTemplate;\r\nko.templates['Core/Controls/FormDesigner/Templates/TypedScreenDropDownTemplate'] = TypedScreenDropDownTemplate;\r\n\r\nexport class FormDesigner extends BaseControl {\r\n private _metadata: FormDesignerMetadataModel;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _toolBar: KnockoutObservable<ToolBar>;\r\n private _recordId: number;\r\n private _screen: DesignScreen;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _isSaveEnable: KnockoutObservable<boolean>;\r\n private _isDashScreen: KnockoutObservable<boolean>;\r\n private _screenName: KnockoutObservable<string>;\r\n private _screenType: KnockoutObservable<string>;\r\n private _title: KnockoutComputed<string>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _fieldCollections: KnockoutObservableArray<FieldCollectionModel>;\r\n private _typedScreens: KnockoutObservableArray<TypedScreenModel>;\r\n private _entityTypes: KnockoutObservableArray<TableType>;\r\n private _enableEntityTypeButtons: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _currentFieldCollection: FieldCollectionModel;\r\n private _currentType: TableType;\r\n private _screenTypes: KnockoutObservableArray<FormTypeModel>;\r\n private _selectedType: KnockoutObservable<FormTypeModel>;\r\n private _disableDelete: KnockoutObservable<boolean>;\r\n private _previousScreenName: string;\r\n private _designScreen: DesignScreen;\r\n\r\n private _hasCustomColor: KnockoutObservable<boolean>;\r\n private _hasCustomWeight: KnockoutObservable<boolean>;\r\n private _screenWidth: KnockoutObservable<Width>;\r\n private _screenBgColor: KnockoutObservable<string>;\r\n private _fontColor: KnockoutObservable<string>;\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n\r\n private _activeFieldCollectionName: KnockoutObservable<string>;\r\n private _fieldCollectionDropDown: JBoxDropDown;\r\n private _typedScreenDropDown: JBoxDropDown;\r\n private _activeTypeName: KnockoutObservable<string>;\r\n private _defaultDropDownOtherOptions: any;\r\n private _dafaultDropDownClass: string;\r\n private _isOpenFieldCollectionDropdown: KnockoutObservable<boolean>;\r\n private _isOpenTypedScreenDropDown: KnockoutObservable<boolean>;\r\n private _isOpenFromDatabaseDesigner: KnockoutObservable<boolean>;\r\n private _isEnablePathRunnerToggler: KnockoutObservable<boolean>;\r\n private _pathRunnerTogglerColor : KnockoutObservable<string>;\r\n private _pathRunnerToggler : KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._searchTerm = ko.observable('');\r\n this._isReady = ko.observable(true);\r\n this._enableEntityTypeButtons = ko.observable(true);\r\n this._isEditable = ko.observable(false);\r\n this._fieldCollections = ko.observableArray([]);\r\n this._typedScreens = ko.observableArray([]);\r\n this._entityTypes = ko.observableArray([]);\r\n this._disableDelete = ko.observable(true);\r\n this._isEnablePathRunnerToggler = ko.observable(false);\r\n\r\n if (this._renderMode() !== RenderModes.ToolBar) {\r\n this._toolBar = ko.observable(null);\r\n }\r\n this._previousScreenName = null;\r\n this._screen = null;\r\n this._screenName = ko.observable(LABELS.FORM_DESIGNER);\r\n this._screenType = ko.observable('');\r\n this._title = ko.computed(() => `${this._screenType()} ${this._screenName()}`);\r\n this._hasData = ko.observable(false);\r\n this._isSaveEnable = ko.observable(false);\r\n this._isDashScreen = ko.observable(true);\r\n\r\n this._screenTypes = ko.observableArray([]);\r\n this._selectedType = ko.observable(null);\r\n this._designScreen = null;\r\n this._hasCustomColor = ko.observable(null);\r\n this._hasCustomWeight = ko.observable(null);\r\n this._screenWidth = ko.observable(null);\r\n this._screenBgColor = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n this._pathRunnerTogglerColor = ko.observable('rgb(0, 255, 0)');\r\n this._pathRunnerToggler = ko.observable(false);\r\n\r\n this._activeFieldCollectionName = ko.observable(null);\r\n this._activeTypeName = ko.observable(null);\r\n this._defaultDropDownOtherOptions = {\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n height: 'auto',\r\n maxHeight: 300,\r\n isolateScroll: true,\r\n pointer: \"right\",\r\n maxWidth: 250,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n }\r\n }\r\n this._dafaultDropDownClass = 'jBox-padding-10px jBox-fix-pointer-position-right-15px';\r\n this._isOpenFieldCollectionDropdown = ko.observable(null);\r\n this._isOpenTypedScreenDropDown = ko.observable(null);\r\n this._isOpenFromDatabaseDesigner = ko.observable(false);\r\n\r\n this.AddEvent('SCREEN_CREATED');\r\n this.Init();\r\n\r\n this._hasCustomColor.subscribe(newValue => {\r\n (this._screen as DesignScreen).HasCustomColor = newValue;\r\n });\r\n\r\n this._hasCustomWeight.subscribe(newValue => {\r\n (this._screen as DesignScreen).HasCustomWeight = newValue;\r\n });\r\n\r\n this._screenWidth.subscribe(width => {\r\n (this._screen as DesignScreen).ScreenWidth = getWidthValue(width);\r\n });\r\n\r\n this._screenBgColor.subscribe(newValue => {\r\n (this._screen as DesignScreen).ScreenBgColor = newValue;\r\n })\r\n\r\n this._fontColor.subscribe(newValue => {\r\n (this._screen as DesignScreen).Color = newValue;\r\n })\r\n\r\n this._fontFamily.subscribe(newValue => {\r\n (this._screen as DesignScreen).FontFamily = newValue;\r\n })\r\n this._fontWeight.subscribe(newValue => {\r\n (this._screen as DesignScreen).FontWeight = newValue;\r\n })\r\n this._fontStyle.subscribe(newValue => {\r\n (this._screen as DesignScreen).FontStyle = newValue;\r\n })\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n if (this._renderMode() != RenderModes.Design && this._renderMode() != RenderModes.ToolBar) {\r\n BlockUI.Block();\r\n FormDesignerStore.GetFormDesignerMetaData()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier(this._el).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._metadata = result.Data;\r\n });\r\n }\r\n }\r\n\r\n get Title(): KnockoutComputed<string> {\r\n return this._title;\r\n }\r\n\r\n get ScreenType(): KnockoutObservable<string> {\r\n return this._screenType;\r\n }\r\n\r\n get EnableEntityTypeButtons(): KnockoutObservable<boolean> {\r\n return this._enableEntityTypeButtons;\r\n }\r\n\r\n get IsEditable(): KnockoutObservable<boolean> {\r\n return this._isEditable;\r\n }\r\n\r\n get ToolBar(): KnockoutObservable<ToolBar> {\r\n return this._toolBar;\r\n }\r\n\r\n get EnableToolBar(): boolean {\r\n return this._toolBar() && this._toolBar().EnableToolBar();\r\n }\r\n\r\n get Screen(): any {\r\n return this._screen;\r\n }\r\n\r\n get HasData() {\r\n return this._hasData;\r\n }\r\n\r\n get IsSaveEnable() {\r\n return this._isSaveEnable;\r\n }\r\n\r\n get IsDashScreen() {\r\n return this._isDashScreen;\r\n }\r\n\r\n get TypedScreens() {\r\n return this._typedScreens;\r\n }\r\n\r\n get FieldCollections() {\r\n return this._fieldCollections;\r\n }\r\n\r\n get EntityTypes() {\r\n return this._entityTypes;\r\n }\r\n\r\n get ScreenTypes() {\r\n return this._screenTypes;\r\n }\r\n\r\n get CurrentFieldCollection() {\r\n return this._currentFieldCollection;\r\n }\r\n\r\n get CurrentType() {\r\n return this._currentType;\r\n }\r\n\r\n get ShouldShowButtonsOrEntityTypeButtons(): KnockoutObservable<boolean> {\r\n return ko.observable( this.ScreenType() !== 'Portlet' && this.ScreenType() !== 'QueryScreen' ) || this.EnableEntityTypeButtons;\r\n }\r\n\r\n get ShouldShowButtons(): boolean {\r\n return this.ScreenType() !== 'Portlet' && this.ScreenType() !== 'QueryScreen';\r\n }\r\n\r\n SetScreen(screen: DesignScreen) {\r\n this._screen = screen;\r\n }\r\n\r\n SetValue(value: any) {\r\n this._isOpenFromDatabaseDesigner(true);\r\n return this.LoadScreen(value);\r\n }\r\n\r\n ApplyScreen(screen: DesignScreen) {\r\n this._screenName(screen.GetScreenName());\r\n this._screenType(`${screen.GetType()}`);\r\n this._toolBar(new ToolBar(screen.ControlGroups));\r\n this._toolBar().IsEnabled = true;\r\n this._toolBar().EntityToolBar.Init(screen.SubjectEntity, screen, this._isOpenFromDatabaseDesigner());\r\n screen.SetRenderMode(RenderModes.Design);\r\n\r\n this._screen = screen;\r\n const canvas = $(this._el).find('#designScreenCanvas');\r\n canvas.html('<!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko -->');\r\n\r\n var designScreen = screen as DesignScreen;\r\n\r\n this._toolBar().CollapseAll();\r\n\r\n let selectedType = _.find(designScreen.DesignModel.ScreenTypes, type => type.IsMain);\r\n\r\n if (selectedType) {\r\n let oldTypeId = selectedType.TypeId;\r\n this._selectedType(selectedType);\r\n this.SelectedTypeInit(oldTypeId);\r\n } else {\r\n if (_.any(designScreen.DesignModel.ScreenTypes)) {\r\n this._selectedType(new FormTypeModel());\r\n this.SelectedTypeInit(0);\r\n }\r\n }\r\n\r\n designScreen.DesignModel.FieldCollections.unshift(new FieldCollectionModel(0, 'User'));\r\n\r\n this._currentFieldCollection = _.find(designScreen.DesignModel.FieldCollections, item => item.Id === designScreen.GetFieldCollectionId());\r\n this._currentType = _.find(designScreen.DesignModel.EntityTypes, (item) => {\r\n return item.Id === designScreen.GetTableTypeId();\r\n });\r\n\r\n this._fieldCollections(designScreen.DesignModel.FieldCollections);\r\n this._typedScreens(designScreen.DesignModel.TypedScreens);\r\n this._entityTypes(designScreen.DesignModel.EntityTypes);\r\n this._screenTypes(designScreen.DesignModel.ScreenTypes);\r\n\r\n this._screenWidth(this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value);\r\n this._screenBgColor(this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this._fontColor(this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value);\r\n\r\n this._hasCustomColor(!!this._fontColor());\r\n this._hasCustomWeight(!!this.FindElementByType(designScreen.FormProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value);\r\n\r\n designScreen.RenderByTarget(canvas[0]);\r\n\r\n this._hasData(true);\r\n this._isSaveEnable(true);\r\n this._isDashScreen(!Boolean(this._currentType.Id));\r\n\r\n this._enableEntityTypeButtons(NotTypedScreenTypes.indexOf(ScreenTypes[designScreen.ScreenType]) < 0);\r\n\r\n this.CheckIfExist();\r\n\r\n this._designScreen = designScreen;\r\n this._isEnablePathRunnerToggler(this._designScreen.IsConsultScreen);\r\n this.InitPathRunnerTogglerColor(); \r\n }\r\n\r\n InitPathRunnerTogglerColor(){\r\n if(this._designScreen.IsEnablePathRunner){\r\n this._pathRunnerTogglerColor('rgb(0, 200, 0)');\r\n this._pathRunnerToggler(true);\r\n }else{\r\n this._pathRunnerTogglerColor('rgb(200, 0, 0)');\r\n this._pathRunnerToggler(false);\r\n } \r\n }\r\n\r\n TogglePathRunner(){\r\n this._designScreen.TogglePathRunner();\r\n this.InitPathRunnerTogglerColor();\r\n }\r\n\r\n \r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n async LoadScreen(screenId: number) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetDesignScreen(screenId)\r\n .then((screen: DesignScreen) => {\r\n this.ApplyScreen(screen);\r\n })\r\n .fail(error => new Notifier($(this._el)).Failed(error.message));\r\n }\r\n\r\n private SelectedTypeInit(oldTypeId: number): void {\r\n this._selectedType.subscribe((newValue) => {\r\n if (newValue) {\r\n var currentMain = _.find(this._screenTypes(), (screenType) => {\r\n return screenType.IsMain\r\n });\r\n if (currentMain) {\r\n currentMain.IsMain = false;\r\n }\r\n\r\n if (oldTypeId != newValue.TypeId) {\r\n oldTypeId = newValue.TypeId;\r\n this._screen.HasChanges = true;\r\n }\r\n\r\n newValue.IsMain = true;\r\n }\r\n });\r\n }\r\n\r\n PickType(formId, $data) {\r\n $data.IsMain = true;\r\n this._selectedType($data);\r\n }\r\n\r\n private async Preview(): Promise<void> {\r\n const previewModal = new Modal();\r\n\r\n const factory = (await import('Core/Screens/ScreenFactory')).ScreenFactory;\r\n\r\n const model = clone(this._screen.DesignModel.ExistingScreenViewModel);\r\n\r\n if (model.ActionBar) {\r\n model.ActionBar.Controls = this._screen.ActionBar.Controls().map(c => c.GetModel());\r\n }\r\n\r\n if (model.BottomBar) {\r\n model.BottomBar.Controls = this._screen.BottomBar.Controls().map(c => c.GetModel());\r\n }\r\n\r\n for (let index = 0; index < model.SubForms.length; index++) {\r\n model.SubForms[index].Controls = this._screen.SubForms[index].Controls().map(c => c.GetModel());\r\n }\r\n\r\n model.Properties = JSON.stringify(Serialize(this._screen.FormProperties));\r\n\r\n const screen = factory.GetScreenInstance(model);\r\n\r\n screen.RenderByTarget(previewModal.Wrapper);\r\n\r\n const buttonSave = screen.GetControl(CONTROL_TYPES.ButtonSave);\r\n if(buttonSave){\r\n BlockUI.Unblock(buttonSave.GetWrapper());\r\n }\r\n\r\n previewModal.Show();\r\n\r\n BlockUI.TransparentBlock(previewModal.Wrapper);\r\n }\r\n\r\n GetFieldCollectionButtonColor(fieldCollection: FieldCollectionModel) {\r\n let buttonStyle = \" btn-default\";\r\n\r\n if (!this.ScreenExists(fieldCollection.Id, 0)) {\r\n buttonStyle = \" grey-mint \";\r\n }\r\n\r\n if (fieldCollection.Id === this.CurrentFieldCollection.Id) {\r\n buttonStyle += \" active\";\r\n this._activeFieldCollectionName(fieldCollection.Name);\r\n }\r\n\r\n return buttonStyle;\r\n }\r\n\r\n GetTypeButtonColor(entityType): string {\r\n let buttonStyle = \" btn-default\";\r\n\r\n if (!this.ScreenExists(this.CurrentFieldCollection.Id, entityType.Id)) {\r\n buttonStyle = \" grey-mint \";\r\n }\r\n\r\n if (entityType.Id === this.CurrentType.Id) {\r\n buttonStyle += \" active\";\r\n this._activeTypeName(entityType.TranslatedName || entityType.Name);\r\n }\r\n return buttonStyle;\r\n }\r\n\r\n GetTypeNameById(typeId) {\r\n const entityType = _.find(this._entityTypes(), (item) => {\r\n return item.Id === typeId\r\n });\r\n return entityType ? entityType.Name : \"\";\r\n }\r\n\r\n CheckIfExist() {\r\n if (this.CurrentType.Name == '-' && this._entityTypes().length != 1) {\r\n if (!(this._entityTypes().slice(1).some(el => this.ScreenExists(this._currentFieldCollection.Id, el.Id)))) {\r\n this._disableDelete(false);\r\n } else {\r\n this._disableDelete(true);\r\n }\r\n } else {\r\n this._disableDelete(false);\r\n }\r\n }\r\n\r\n SelectFieldCollection(fieldCollection: FieldCollectionModel) {\r\n this._disableDelete(true);\r\n\r\n const tableType = new TableType(0, \"-\");\r\n this.SwitchScreenType(fieldCollection, tableType);\r\n }\r\n\r\n SelectTypedScreen(tableType: TableType) {\r\n const isDashType: boolean = tableType.Name == '-';\r\n this._disableDelete(isDashType);\r\n\r\n this.SwitchScreenType(this.CurrentFieldCollection, tableType);\r\n }\r\n\r\n SwitchTypedScreen(fieldCollection: FieldCollectionModel, tableType: TableType) {\r\n const tableTypeId = tableType.Id;\r\n const screen = this.GetTypedScreen(fieldCollection.Id, tableType.Id);\r\n\r\n if (screen) {\r\n this.LoadScreen(screen.FormId);\r\n this.AllDropDownClose();\r\n return;\r\n }\r\n\r\n const entityId = this._screen.GetEntityId();\r\n const screenTypeId = this._screen.GetTypeId();\r\n\r\n this.CreateNewForm(entityId, screenTypeId, tableTypeId, 0, fieldCollection.Id);\r\n this.AllDropDownClose();\r\n }\r\n\r\n GetActiveFieldCollectionName(): string {\r\n const activeFieldCollection: FieldCollectionModel = _.find(this.FieldCollections(), (fieldCollection: FieldCollectionModel) => fieldCollection.Id === this.CurrentFieldCollection.Id);\r\n this._activeFieldCollectionName(activeFieldCollection ? activeFieldCollection.Name : '');\r\n return this._activeFieldCollectionName();\r\n }\r\n ShowFieldCollectionDropdown(data, event): void {\r\n let target: HTMLElement = event.currentTarget;\r\n if (!this._fieldCollectionDropDown) {\r\n this.InitFieldCollectionDropdown(target);\r\n }\r\n this._fieldCollectionDropDown?.Toggle();\r\n }\r\n InitFieldCollectionDropdown(el: HTMLElement): void {\r\n this._fieldCollectionDropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n ...this._defaultDropDownOtherOptions,\r\n addClass: `${this._dafaultDropDownClass} js-fieldCollection-dropdown`,\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._isOpenFieldCollectionDropdown(false);\r\n }\r\n },\r\n onCreated: () => {\r\n this._fieldCollectionDropDown.SetContent({ content: FieldCollectionDropdownTemplate as any });\r\n },\r\n onOpen: () => {\r\n this._isOpenFieldCollectionDropdown(true);\r\n }\r\n });\r\n }\r\n FieldCollectionDropdownOpen(): void {\r\n this._fieldCollectionDropDown?.Open()\r\n }\r\n FieldCollectionDropdownClose(): void {\r\n this._fieldCollectionDropDown?.Close()\r\n }\r\n\r\n GetActiveTypeName(): string {\r\n const activeType: TableType = _.find(this.EntityTypes(), (type: TableType) => type.Id === this.CurrentType.Id);\r\n this._activeTypeName(activeType ? activeType.TranslatedName || activeType.Name : '');\r\n return this._activeTypeName();\r\n }\r\n ShowTypedScreenDropDown(data, event):void {\r\n let target: HTMLElement = event.currentTarget;\r\n if (!this._typedScreenDropDown) {\r\n this.InitTypedScreenDropDown(target);\r\n }\r\n this._typedScreenDropDown?.Toggle();\r\n }\r\n InitTypedScreenDropDown(el: HTMLElement): void {\r\n this._typedScreenDropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n ...this._defaultDropDownOtherOptions,\r\n addClass: `${this._dafaultDropDownClass} js-typed-screen-dropdown`,\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n onCloseComplete: () => {\r\n this._isOpenTypedScreenDropDown(false);\r\n }\r\n },\r\n onCreated: () => {\r\n this._typedScreenDropDown.SetContent({ content: TypedScreenDropDownTemplate as any });\r\n },\r\n onOpen: () => {\r\n this._isOpenTypedScreenDropDown(true);\r\n }\r\n });\r\n }\r\n TypedScreenDropDownOpen(): void {\r\n this._typedScreenDropDown?.Open();\r\n }\r\n TypedScreenDropDownClose(): void {\r\n this._typedScreenDropDown?.Close();\r\n }\r\n\r\n AllDropDownClose(): void {\r\n this.FieldCollectionDropdownClose();\r\n this.TypedScreenDropDownClose();\r\n }\r\n\r\n Refresh(): void {\r\n this.LoadScreen(this._screen.GetScreenId())\r\n .then(result => new Notifier($(this._el)).Success(NOTIFICATIONS.SCREEN_REFRESHED));\r\n }\r\n\r\n Save(data?: FormDesigner, evt?: JQuery.ClickEvent<HTMLElement>): void {\r\n if (this._screen.HasChanges) {\r\n this._isSaveEnable(false);\r\n\r\n const target: HTMLElement = evt && evt.target.closest('.form-designer');\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n\r\n this._screen.Save()\r\n .always(()=> BlockUI.Unblock(target ? target : null))\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.SCREEN_UPDATED);\r\n this._isSaveEnable(true);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n this._isSaveEnable(true)\r\n });\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.NO_PENDING_CHANGES);\r\n }\r\n }\r\n\r\n async DeleteScreen() {\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.DELETE_SCREEN,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n screenManager.DeleteScreen(this._screen.GetScreenId())\r\n .then(() => {\r\n PubSub.publish('GO_TO_FORM_DESIGNER', null);\r\n }).fail(error => new Notifier().Failed(error.message));\r\n })\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n async UpdateScreenName() {\r\n if (this._screenName() === '') {\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_PROVIDE_NAME);\r\n return;\r\n }\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let formId = this._screen.GetScreenId();\r\n screenManager.UpdateScreenName(formId, this._screenName());\r\n this._isEditable(false);\r\n this._previousScreenName = null;\r\n }\r\n\r\n Reset(): void {\r\n if (this._isDashScreen()) {\r\n return;\r\n }\r\n\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.RESET_SCREEN,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, eventArgs => {\r\n let screen = this._screen;\r\n\r\n let resetFormModel = new ResetFormRequestModel(screen.GetScreenId(),\r\n screen.GetEntityId(),\r\n screen.GetTableTypeId(),\r\n screen.GetFieldCollectionId(),\r\n screen.GetTypeId());\r\n BlockUI.Block();\r\n FormDesignerStore.ResetForm(resetFormModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier($(this._el)).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this.Refresh();\r\n });\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n Search(): void {\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._metadata.EntityId,\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true\r\n });\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n var recordId = eventArgs.data.RecordId;\r\n this.LoadScreen(recordId);\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, 0, true);\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n\r\n typeScreen.On(\"TYPE_SELECTED\", this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n this.ShowEntitySelector(typeId, kindId, exampleRecordId);\r\n });\r\n\r\n this.On('SCREEN_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n searchScreen.Show();\r\n }\r\n\r\n OpenSettingsModal(isCardScreen: boolean) {\r\n const params: Array<ISettingsModal> = this._screen.FormProperties?.Options;\r\n const settingsModal = new SettingsModal(params,this._screenType());\r\n\r\n settingsModal.On('SUBMIT', null, (eventArgs: any) => {\r\n let options: Array<ISettingsModal> = eventArgs?.data.Options;\r\n let hasChanges: boolean = eventArgs?.data.HasChanges;\r\n\r\n this._screen.FormProperties.Options = options.length ? options : null;\r\n this._screen.HasChanges = hasChanges;\r\n\r\n if (isCardScreen) {\r\n this._screenWidth(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value);\r\n this._screenBgColor(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value);\r\n this._fontColor(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value);\r\n\r\n this._fontFamily(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value.Value);\r\n this._fontWeight(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value);\r\n this._fontStyle(this.FindElementByType(options, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value.Value);\r\n\r\n (this._screen as DesignScreen).FontFamily = this._fontFamily();\r\n (this._screen as DesignScreen).FontWeight = this._fontWeight();\r\n (this._screen as DesignScreen).FontStyle = this._fontStyle();\r\n\r\n // (this._screen as DesignScreen).HasCustomWeight = this._fontStyle();\r\n this._hasCustomColor(!!this._fontColor());\r\n this._hasCustomWeight(!!this._fontWeight());\r\n } else {\r\n\r\n }\r\n });\r\n\r\n settingsModal.Show();\r\n }\r\n\r\n StartLayoutConfiguration() {\r\n this._designScreen.StartLayoutConfiguration();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n private SwitchScreenType(fieldCollection: FieldCollectionModel, tableType: TableType) {\r\n if (this._screen.HasChanges) {\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.SAVE_CHANGES,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED,\r\n this,\r\n eventArgs => {\r\n this._screen.Save()\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.SCREEN_UPDATED);\r\n this.SwitchTypedScreen(fieldCollection, tableType);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.DISCARD_SELECTED,\r\n this,\r\n eventArgs => {\r\n this.SwitchTypedScreen(fieldCollection, tableType);\r\n });\r\n confirmationDialog.Show();\r\n } else {\r\n this.SwitchTypedScreen(fieldCollection, tableType);\r\n }\r\n }\r\n\r\n private ShowEntitySelector(typeId: number, kindId: number, exampleRecordId: number) {\r\n FormDesignerStore.GetEntities().then(data => {\r\n const options: Array<ISelectorOption<number>> = data.Entities.map((entity): ISelectorOption<number> => {\r\n return {Text: entity.EntityName, Value: entity.EntityId};\r\n });\r\n\r\n const selectEntityDialog = new SelectDialog({\r\n Label: 'Entity:',\r\n Options: options,\r\n SelectedOption: options[1]\r\n });\r\n\r\n selectEntityDialog.On('Save',\r\n this,\r\n (eventArgs) => {\r\n const selectedOption: ISelectorOption<number> = eventArgs.data;\r\n const selectedEntityId = selectedOption.Value;\r\n const tableTypeId = 0;\r\n this.CreateNewForm(selectedEntityId, typeId, tableTypeId, exampleRecordId, null);\r\n });\r\n\r\n selectEntityDialog.Show();\r\n });\r\n }\r\n\r\n private CreateNewForm(entityId: number, typeId: number, tableTypeId: number, exampleRecordId: number, fieldCollectionId: number) {\r\n BlockUI.Block();\r\n FormDesignerStore.CreateNewForm(new CreateNewFormRequestModel(entityId, typeId, tableTypeId, fieldCollectionId))\r\n .then(async screenModel => {\r\n this.Trigger('SCREEN_CREATED');\r\n this.LoadScreen(screenModel.FormId);\r\n })\r\n .fail((err) => new Notifier($(this._el)).Failed(err.message))\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n private GetTypedScreen(fieldCollectionId: number, tableTypeId: number) {\r\n return _.find(this._typedScreens(), (item) => {\r\n return item.FieldCollectionId === fieldCollectionId && item.TableTypeId === tableTypeId;\r\n });\r\n }\r\n\r\n private ScreenExists(fieldCollectionId: number, tableTypeId: number) {\r\n return _.find(this._typedScreens(), (item) => {\r\n return item.FieldCollectionId === fieldCollectionId && item.TableTypeId === tableTypeId\r\n }) !== undefined;\r\n }\r\n\r\n OnEditClick(): void {\r\n this._isEditable(true);\r\n this._previousScreenName = this._screenName();\r\n }\r\n\r\n Cancel(): void {\r\n this._isEditable(false);\r\n this._screenName(this._previousScreenName);\r\n }\r\n\r\n EasterEgg() {\r\n $('.remove-control').toggleClass('easterEggRotate');\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-newspaper-o\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { ControlGroupModel } from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\nimport { ControlFactory } from \"Core/Controls/ControlFactory\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { RenderModes } from \"Core/Constant\";\r\n\r\nexport class ControlGroup {\r\n\tprivate _model: ControlGroupModel;\r\n\tprivate _controls: KnockoutObservableArray<IControl>;\r\n\tprivate _expanded: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\r\n\tconstructor(model: ControlGroupModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._controls = ko.observableArray([]);\r\n\t\tthis._expanded = ko.observable(false);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis._model.Controls = _.sortBy(this._model.Controls, control => control.TypeName);\r\n\t\t_.each(this._model.Controls, (controlModel) => {\r\n\t\t\tvar controlParam: IControlParam = {\r\n\t\t\t\tModel: controlModel,\r\n\t\t\t\tForm: null,\r\n\t\t\t\tRenderMode: RenderModes.ToolBar\r\n\t\t\t};\r\n\r\n\t\t\tvar control = ControlFactory.CreateControl(controlParam);\r\n\t\t\tif (control) {\r\n\t\t\t\tthis._controls.push(control);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset IsExpaned(isExpanded: boolean) {\r\n\t\tthis._expanded(isExpanded);\r\n\t}\r\n\r\n\tget IsExpaned() {\r\n\t\treturn this._expanded();\r\n\t}\r\n\r\n\tget Name(): string {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\tget Controls(): KnockoutObservableArray<IControl> {\r\n\t\treturn this._controls;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tthis._el = el[0];\r\n\t}\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\n\r\nexport class ControlGroupModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Controls = [];\r\n\t}\r\n\r\n\t@deserializeAs(ControlModel)\r\n\tControls: Array<ControlModel>;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {deserialize} from 'libs/cerialize';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {ControlGroupModel} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel'\r\n\r\nexport class ControlToolBarModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Groups = [];\r\n\t}\r\n\r\n\t@deserializeAs(ControlGroupModel)\r\n\tGroups: Array<ControlGroupModel>;\r\n}","import { Text } from 'QueryBuilder/QueryCondition/ConditionEditors/Text/Text';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport 'signalR';\r\n\r\nimport ace, { Ace } from 'ace-builds';\r\nimport 'ace-builds/src-noconflict/ext-language_tools';\r\nimport 'ace-builds/src-noconflict/mode-csharp';\r\nimport 'ace-builds/src-noconflict/mode-javascript';\r\nimport 'ace-builds/src-noconflict/snippets/text';\r\nimport 'ace-builds/src-noconflict/snippets/csharp';\r\nimport 'ace-builds/src-noconflict/snippets/javascript';\r\nimport 'ace-builds/src-noconflict/worker-javascript';\r\nimport 'ace-builds/src-noconflict/ext-searchbox';\r\n\r\nimport 'ace-builds/src-noconflict/theme-dracula';\r\nimport 'ace-builds/src-noconflict/theme-ambiance';\r\nimport 'ace-builds/src-noconflict/theme-chaos';\r\nimport 'ace-builds/src-noconflict/theme-chrome';\r\nimport 'ace-builds/src-noconflict/theme-clouds';\r\nimport 'ace-builds/src-noconflict/theme-clouds_midnight';\r\nimport 'ace-builds/src-noconflict/theme-cobalt';\r\nimport 'ace-builds/src-noconflict/theme-crimson_editor';\r\nimport 'ace-builds/src-noconflict/theme-dawn';\r\nimport 'ace-builds/src-noconflict/theme-dracula';\r\nimport 'ace-builds/src-noconflict/theme-dreamweaver';\r\nimport 'ace-builds/src-noconflict/theme-eclipse';\r\nimport 'ace-builds/src-noconflict/theme-github';\r\nimport 'ace-builds/src-noconflict/theme-gob';\r\nimport 'ace-builds/src-noconflict/theme-gruvbox';\r\nimport 'ace-builds/src-noconflict/theme-idle_fingers';\r\nimport 'ace-builds/src-noconflict/theme-iplastic';\r\nimport 'ace-builds/src-noconflict/theme-katzenmilch';\r\nimport 'ace-builds/src-noconflict/theme-kr_theme';\r\nimport 'ace-builds/src-noconflict/theme-kuroir';\r\nimport 'ace-builds/src-noconflict/theme-merbivore';\r\nimport 'ace-builds/src-noconflict/theme-merbivore_soft';\r\nimport 'ace-builds/src-noconflict/theme-monokai';\r\nimport 'ace-builds/src-noconflict/theme-mono_industrial';\r\nimport 'ace-builds/src-noconflict/theme-pastel_on_dark';\r\nimport 'ace-builds/src-noconflict/theme-solarized_dark';\r\nimport 'ace-builds/src-noconflict/theme-solarized_light';\r\nimport 'ace-builds/src-noconflict/theme-sqlserver';\r\nimport 'ace-builds/src-noconflict/theme-terminal';\r\nimport 'ace-builds/src-noconflict/theme-textmate';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night_blue';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night_bright';\r\nimport 'ace-builds/src-noconflict/theme-tomorrow_night_eighties';\r\nimport 'ace-builds/src-noconflict/theme-twilight';\r\nimport 'ace-builds/src-noconflict/theme-vibrant_ink';\r\nimport 'ace-builds/src-noconflict/theme-xcode';\r\n\r\nimport {FunctionDesignerStore} from 'Core/Controls/FunctionDesigner/Stores/FunctionDesignerStore';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier, MessageTypes} from 'Core/Common/Notifier';\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {FunctionValidationModel} from 'Core/Controls/FunctionDesigner/Models/FunctionValidationModel';\r\nimport {SyntaxErrorModel} from 'Core/Controls/FunctionDesigner/Models/SyntaxErrorModel';\r\nimport {FunctionResult} from 'Core/Controls/FunctionDesigner/FunctionResult';\r\nimport {FunctionDesignerMethodModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\nimport {CookieManager} from 'Core/Common/CookieManager';\r\nimport {FUNCTION_TYPES} from 'Core/Controls/FunctionDesigner/FunctionTypes';\r\nimport {\r\n Types as DecisionDialogTypes,\r\n EVENTS as DECISION_DIALOG_EVENTS,\r\n DecisionDialog\r\n} from \"Core/Components/Dialogs/DecisionDialog/DecisionDialog\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport CodeEditorTemplate from 'Core/Controls/FunctionDesigner/Templates/CodeEditor.html';\r\nimport { Guid } from '../../Common/Guid';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { ColorSelector } from '../../Components/ColorSelector/ColorSelector';\r\nimport Split from 'split.js';\r\nimport { SignalRNotificationManager } from '../../Components/SignalR/SignalRNotificationManager';\r\nimport { Tooltip } from '../../Common/Tooltip';\r\nimport { event } from 'jquery';\r\n\r\nko.templates['Core/Controls/FunctionDesigner/Templates/CodeEditor'] = CodeEditorTemplate;\r\n\r\nvar customObjects = ['FinancialProcessor', 'DocumentHandling', 'RecordAPI', 'SecurityAPI', 'ShowMessage()', 'ConsoleLog()', '_userDbProvider', '_cdDbProvider', 'param', 'result'];\r\n\r\nvar customObjectProperties = {\r\n '_userDbProvider.': ['MapAsKeyValueList()', 'MapAsKeyValuePair()'],\r\n '_cdDbProvider.': ['MapAsKeyValueList()', 'MapAsKeyValuePair()'],\r\n 'FinancialProcessor.': ['CallFinancialProcessor()'],\r\n 'DocumentHandling.': ['AddToMergeTemplateQueue()', 'AddToSendDocumentQueue()', 'AddToPDFConversionQueue()'],\r\n 'RecordAPI.': ['GetRecords()', 'Get()', 'CreateFromExample()', 'LinkRecord()', 'SetMain()', 'SetReference()', 'SetNextAllowedLifeStatus()'],\r\n 'InvoicingAPI': ['CreateInvoice()'],\r\n 'SecurityAPI.': ['ChangeOwner()', 'ShareRecord()', 'UpsertSecurityRecord()'],\r\n 'UserAPI': ['GetSecurityProfile()', 'GetUserGroup()', 'GetUser()'],\r\n 'MatchingAPI': ['RunSpimMatching()'],\r\n 'TableManager.': ['GetById(), GetTableStructAsync()'],\r\n 'param.': [],\r\n 'result.': [],\r\n 'NotificationTypes.': ['Success', 'Warning', 'Failed']\r\n};\r\n\r\nvar customObjectsCompleter = {\r\n getCompletions: (editor, session, pos, prefix, callback) => {\r\n callback(null, customObjects.map((word) => {\r\n return {\r\n caption: word,\r\n value: word\r\n };\r\n }));\r\n }\r\n};\r\n\r\nvar customPropertiesCompleter = {\r\n getCompletions: (editor, session, pos, prefix, callback) => {\r\n var position = editor.getCursorPosition();\r\n var currentLine = editor.session.getLine(position.row);\r\n var properties = [];\r\n\r\n if (currentLine) {\r\n var lastWord = _.last(currentLine.split(' '));\r\n\r\n if (customObjectProperties[`${lastWord}`]) {\r\n properties = customObjectProperties[`${lastWord}`];\r\n }\r\n }\r\n\r\n callback(null, properties.map((word) => {\r\n return {\r\n caption: word,\r\n value: word\r\n };\r\n }));\r\n }\r\n};\r\n\r\nconst EDITOR_MODES = {\r\n JAVASCRIPT: 'ace/mode/javascript',\r\n CSHARP: 'ace/mode/csharp'\r\n};\r\n\r\nvar langTools = ace.require('ace/ext/language_tools');\r\nlangTools.addCompleter(customObjectsCompleter);\r\n\r\n(ace as any).config.set(\"workerPath\", `${__webpack_public_path__}ace/`);\r\n\r\ninterface IImageLog{\r\n title: string;\r\n image: string;\r\n}\r\n\r\nexport class CodeEditor extends Event {\r\n private _modal: Modal;\r\n private _method: FunctionDesignerMethodModel;\r\n private _validation: KnockoutObservable<FunctionValidationModel>;\r\n private _packageId: number;\r\n private _editor: any;\r\n private _logEditor: Ace.Editor;\r\n private _originalCode;\r\n private _labels = LABELS;\r\n private _guid: string;\r\n\r\n private _selectedTheme: KnockoutObservable<string>;\r\n\r\n private _selectedFontSize: KnockoutObservable<string>;\r\n private _selectedFontFamily: KnockoutObservable<string>;\r\n private _currentTheme: string;\r\n private _toolbarButtonBackgroundColor: KnockoutObservable<string>;\r\n private _toolbarButtonBackgroundHoverColor: KnockoutObservable<string>;\r\n\r\n private _toolbarButtonColor: KnockoutObservable<string>;\r\n private _toolbarButtonHoverColor: KnockoutObservable<string>;\r\n\r\n private _hoverTag: string;\r\n\r\n private _fontSizes = ['15px','16px','17px','18px','19px','20px', '21px', '22px','23px', '24px','25px'];\r\n\r\n //private _fontFamilies = [\"Monaco, Menlo, 'Ubuntu Mono', Consolas, source-code-pro, monospace\", 'Consolas', 'Open Sans', 'Courier New'];\r\n\r\n private _themes = [\r\n 'ambiance',\r\n 'chaos',\r\n 'chrome',\r\n 'clouds',\r\n 'clouds_midnight',\r\n 'cobalt',\r\n 'crimson_editor',\r\n 'dawn',\r\n 'dracula',\r\n 'dreamweaver',\r\n 'eclipse',\r\n 'github',\r\n 'gob',\r\n 'gruvbox',\r\n 'idle_fingers',\r\n 'iplastic',\r\n 'katzenmilch',\r\n 'kr_theme',\r\n 'kuroir',\r\n 'merbivore',\r\n 'merbivore_soft',\r\n 'monokai',\r\n 'mono_industrial',\r\n 'pastel_on_dark',\r\n 'solarized_dark',\r\n 'solarized_light',\r\n 'sqlserver',\r\n 'terminal',\r\n 'textmate',\r\n 'tomorrow',\r\n 'tomorrow_night',\r\n 'tomorrow_night_blue',\r\n 'tomorrow_night_bright',\r\n 'tomorrow_night_eighties',\r\n 'twilight',\r\n 'vibrant_ink',\r\n 'xcode']\r\n\r\n private _imageLogs: KnockoutObservableArray<IImageLog>;\r\n\r\n constructor(method: FunctionDesignerMethodModel, packageId: number) {\r\n super();\r\n this.AddEvents();\r\n this._editor = null;\r\n this._validation = ko.observable(null);\r\n this._packageId = packageId;\r\n this._method = method;\r\n this.PrepareParams();\r\n this.PreventWindowConfirmation();\r\n this._guid = Guid.NewGuid();\r\n this._selectedTheme = ko.observable('');\r\n this._selectedFontSize = ko.observable('15px');\r\n this._selectedFontFamily = ko.observable('Monaco');\r\n this._currentTheme = '';\r\n this._toolbarButtonBackgroundColor = ko.observable('');\r\n this._toolbarButtonBackgroundHoverColor = ko.observable('');\r\n\r\n this._toolbarButtonColor = ko.observable('');\r\n this._toolbarButtonHoverColor = ko.observable('');\r\n this._imageLogs = ko.observableArray([]);\r\n \r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this._guid){\r\n FunctionBuilder.Execute(data.Code, data.Params);\r\n }\r\n });\r\n\r\n this._selectedFontSize.subscribe((newValue)=>{\r\n this._editor.setFontSize(newValue);\r\n })\r\n\r\n this._selectedFontFamily.subscribe((newValue)=>{\r\n this._editor.setOption(\"fontFamily\", newValue);\r\n })\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n\r\n PreventWindowConfirmation() {\r\n const eventWindowConfirmation = (event) => {\r\n if (!!this.HasChanges()) {\r\n // Cancel the event as stated by the standard.\r\n event.preventDefault();\r\n // Chrome requires returnValue to be set.\r\n event.returnValue = 'Would you like to leave the page?';\r\n return 'Would you like to leave the page?'\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n };\r\n\r\n window.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n this.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n window.removeEventListener('beforeunload', eventWindowConfirmation);\r\n });\r\n }\r\n\r\n private PrepareParams() {\r\n customObjectProperties['param.'] = this._method.InParams.map(param => param.Name.replace(' ', '_'));\r\n customObjectProperties['result.'] = this._method.OutParams.map(param => param.Name.replace(' ', '_'));\r\n }\r\n\r\n private EvalFunction(code, param, Modal: any): P.Promise<any> {\r\n try {\r\n var deferredResult = P.defer<any>();\r\n eval(code);\r\n return deferredResult.promise();\r\n } catch (e) {\r\n deferredResult.reject({message: e.message});\r\n return deferredResult.promise();\r\n }\r\n }\r\n\r\n get Validation(): KnockoutObservable<FunctionValidationModel> {\r\n return this._validation;\r\n }\r\n\r\n Show() {\r\n var self = this;\r\n this._modal = new Modal({\r\n width: '100%',\r\n height: '100%',\r\n closeOnEsc: false,\r\n closeButton: false\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\r\n this.ShowModal();\r\n }\r\n\r\n Close(evt) {\r\n evt.preventDefault();\r\n evt.stopImmediatePropagation();\r\n this.Cancel();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/FunctionDesigner/Templates/CodeEditor';\r\n }\r\n\r\n Cancel() {\r\n if (this.HasChanges()) {\r\n const decisionDialog = new DecisionDialog({\r\n Text: this._labels.CONFIRMATION_FOR_UNSAVED_CHANGES,\r\n Type: DecisionDialogTypes.Question,\r\n });\r\n\r\n decisionDialog.On(\r\n DECISION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateCode();\r\n });\r\n\r\n decisionDialog.On(\r\n DECISION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n this,\r\n () => {\r\n if (this._modal) {\r\n this._modal.Close();\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n });\r\n\r\n decisionDialog.Show();\r\n } else {\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n }\r\n\r\n HasChanges(): boolean {\r\n return this._originalCode != this._editor.getValue();\r\n }\r\n\r\n GoToErrorLine(error: SyntaxErrorModel) {\r\n if (this._editor) {\r\n this._editor.focus();\r\n this._editor.gotoLine(error.Line)\r\n }\r\n }\r\n\r\n GetCode() {\r\n var Range = ace.require('ace/range').Range;\r\n return this._editor.session.getTextRange(new Range(3, 0, this._editor.session.getLength() - 2, 0));\r\n }\r\n\r\n Test() {\r\n if (this._editor) {\r\n this._imageLogs([]);\r\n this._logEditor.session.setValue(null);\r\n BlockUI.Block();\r\n FunctionDesignerStore.Test({PackageId: this._packageId, MethodId: this._method.Id, Code: this.GetCode(), ObjectId: this._guid})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n this.pasteScriptDebugLog(JSON.stringify(result.Data));\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n UpdateCode() {\r\n if (this._editor) {\r\n BlockUI.Block();\r\n FunctionDesignerStore.UpdateCode({Id: this._method.Id, Code: btoa(this.GetCode())})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((functionPackage) => {\r\n this._method.Code = this._editor.getValue();\r\n this._modal.Close();\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n Validate() {\r\n if (this._editor) {\r\n BlockUI.Block();\r\n FunctionDesignerStore.Validate({\r\n MethodId: this._method.Id,\r\n Code: this.GetCode(),\r\n PackageId: this._packageId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n this._validation(result);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n }\r\n\r\n ShowModal() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n var Range = ace.require('ace/range').Range;\r\n var aceEditor = ace;\r\n var topNonEditableMarkerId = null;\r\n var bottomNonEditableMarkerId = null;\r\n\r\n var mode = '';\r\n if (this._method.TypeName === FUNCTION_TYPES.CSHARP_FUNCTION || this._method.TypeName === FUNCTION_TYPES.API_METHOD) {\r\n mode = EDITOR_MODES.CSHARP;\r\n }\r\n\r\n if (this._method.TypeName === FUNCTION_TYPES.JS_FUNCTION) {\r\n mode = EDITOR_MODES.JAVASCRIPT;\r\n }\r\n\r\n\t\tvar editor = ace.edit(document.getElementById('csharp-code'));\r\n\t\tthis._editor = editor;\r\n\t\teditor.setOption(\"showPrintMargin\", false);\r\n\t\teditor.setTheme('ace/theme/ambiance');\r\n editor.setFontSize('15px');\r\n\r\n this._logEditor = ace.edit(document.getElementById('log-editor'));\r\n\t\tthis._logEditor.setTheme('ace/theme/ambiance');\r\n this._logEditor.session.setValue('>');\r\n this._logEditor.session.setUseWorker(false);\r\n this._logEditor.setShowPrintMargin(false);\r\n this._logEditor.setReadOnly(true);\r\n this._logEditor.setFontSize('15px');\r\n\r\n\r\n SignalRNotificationManager.Instance.SetScriptDebugEditor(this._logEditor);\r\n\r\n SignalRNotificationManager.Instance.On('PASTE_IMAGE', this, (evtArgs)=>this.PasteImage(evtArgs.data.title, evtArgs.data.image));\r\n\r\n this._modal.AddClass('ace-ambiance');\r\n\r\n\t\teditor.session.setMode(mode);\r\n\t\teditor.session.setValue(this._method.Code);\r\n\t\tthis._originalCode = this._editor.getValue();\r\n\r\n editor.session.selection.on('changeCursor', function(e) {\r\n var rowCol = editor.selection.getCursor();\r\n if ((rowCol.row < 3)) {\r\n editor.moveCursorTo(3,0);\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n\r\n if ((editor.session.getLength() - (rowCol.row + 1) < 2)) {\r\n editor.moveCursorTo(editor.session.getLength() - 3, 0);\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n });\r\n\r\n (editor.commands as any).on('exec', (e) => {\r\n var rowCol = editor.selection.getCursor();\r\n if ((rowCol.row < 3) || (editor.session.getLength() - (rowCol.row + 1) < 2)) {\r\n e.preventDefault();\r\n e.stopPropagation(); \r\n }\r\n setTimeout(() => {\r\n editor.session.removeMarker(topNonEditableMarkerId);\r\n editor.session.removeMarker(bottomNonEditableMarkerId);\r\n topNonEditableMarkerId = editor.session.addMarker(new Range(0, 0, 3, 0), 'ace_active-line', 'text', false);\r\n bottomNonEditableMarkerId = editor.session.addMarker(new Range(editor.session.getLength() - 2, 0, editor.session.getLength(), 0), 'ace_active-line', 'text', false);\r\n }, 100);\r\n });\r\n\r\n (editor.commands as any).on('afterExec', (e, t) => {\r\n if (mode === EDITOR_MODES.CSHARP) {\r\n if (e.command.name == 'insertstring' && e.args == '.') {\r\n var all = e.editor.completers;\r\n e.editor.completers = [customPropertiesCompleter];\r\n e.editor.execCommand('startAutocomplete');\r\n e.editor.completers = all;\r\n }\r\n }\r\n });\r\n\r\n editor.setOptions({\r\n enableBasicAutocompletion: true,\r\n enableSnippets: true,\r\n enableLiveAutocompletion: true\r\n });\r\n\r\n setTimeout(() => {\r\n topNonEditableMarkerId = editor.session.addMarker(new Range(0, 0, 3, 0), 'ace_active-line', 'text', false);\r\n bottomNonEditableMarkerId = editor.session.addMarker(new Range(editor.session.getLength() - 2, 0, editor.session.getLength(), 0), 'ace_active-line', 'text', false);\r\n }, 100);\r\n\r\n\r\n Split(['#csharp-code', '#log-tabs'], {\r\n sizes: [80, 20],\r\n direction: 'vertical'\r\n })\r\n\r\n this._selectedTheme.subscribe((newValue)=>{\r\n this._editor.setTheme(`ace/theme/${newValue}`);\r\n this._logEditor.setTheme(`ace/theme/${newValue}`);\r\n this._modal.RemoveClass(`ace-${this._currentTheme.replace(/_/g, '-')}`);\r\n this._modal.AddClass(`ace-${newValue.replace(/_/g, '-')}`);\r\n\r\n let backgroundColor = $(`.ace-${newValue.replace(/_/g, '-')}`).css('background-color');\r\n this._toolbarButtonBackgroundColor(backgroundColor);\r\n this._toolbarButtonBackgroundHoverColor(this.invert(backgroundColor));\r\n\r\n let color = $(`.ace-${newValue.replace(/_/g, '-')}`).css('color');\r\n\r\n this._toolbarButtonColor(color);\r\n this._toolbarButtonHoverColor(this.invert(color));\r\n\r\n this._currentTheme = newValue;\r\n })\r\n\r\n this._selectedTheme('ambiance');\r\n\r\n }\r\n\r\n PasteImage(title: string, image: string){\r\n this._imageLogs.push({title: title, image: image});\r\n }\r\n\r\n Hover(_, event){\r\n if(event.target.tagName == 'A'){\r\n $(event.target).css( \"background-color\", this._toolbarButtonBackgroundHoverColor());\r\n $(event.target).css( \"color\", this._toolbarButtonHoverColor());\r\n $(event.target).children().css(\"background-color\", this._toolbarButtonBackgroundHoverColor());\r\n $(event.target).children().css(\"color\", this._toolbarButtonHoverColor());\r\n };\r\n\r\n if(event.target.tagName == 'I'){\r\n $(event.target).css( \"background-color\", this._toolbarButtonBackgroundHoverColor());\r\n $(event.target).css( \"color\", this._toolbarButtonHoverColor());\r\n $(event.target).parent().css(\"background-color\", this._toolbarButtonBackgroundHoverColor()); \r\n $(event.target).parent().css(\"color\", this._toolbarButtonHoverColor()); \r\n };\r\n }\r\n\r\n UnHover(_, event){\r\n if(event.target.tagName == 'A'){\r\n $(event.target).css(\"background-color\", this._toolbarButtonBackgroundColor());\r\n $(event.target).children().css(\"background-color\", this._toolbarButtonBackgroundColor()); \r\n \r\n $(event.target).css(\"color\", this._toolbarButtonColor());\r\n $(event.target).children().css(\"color\", this._toolbarButtonColor()); \r\n };\r\n }\r\n\r\n componentToHex(c) {\r\n var hex = c.toString(16);\r\n return hex.length == 1 ? \"0\" + hex : hex;\r\n }\r\n \r\n rgbToHex(r, g, b) {\r\n return \"#\" + this.componentToHex(r) + this.componentToHex(g) + this.componentToHex(b);\r\n }\r\n \r\n invert(rgb) {\r\n rgb = [].slice.call(arguments).join(\",\").replace(/rgb\\(|\\)|rgba\\(|\\)|\\s/gi, '').split(',');\r\n for (var i = 0; i < rgb.length; i++) rgb[i] = (i === 3 ? 1 : 255) - rgb[i];\r\n return this.rgbToHex(rgb[0], rgb[1], rgb[2]);\r\n }\r\n \r\n pasteScriptDebugLog(message: string){\r\n this._logEditor.session.insert({\r\n row: this._logEditor.session.getLength(),\r\n column: 0\r\n }, \"\\n\" + message);\r\n\r\n this._logEditor.scrollToLine(this._logEditor.session.getLength(), true, true, function () {\r\n });\r\n this._logEditor.gotoLine(this._logEditor.session.getLength(), 0, true);\r\n }\r\n}","import { Modal } from \"Core/Common/Modal\";\r\nimport * as ko from 'knockout';\r\nimport Template from 'Core/Controls/FunctionDesigner/Templates/FunctionResult.html';\r\nimport {FunctionExecutionModel, ParamValueModel} from 'Core/Controls/FunctionDesigner/Models/FunctionExecutionModel';\r\n\r\nko.templates['Core/Controls/FunctionDesigner/Templates/FunctionResult'] = Template;\r\n\r\nexport class FunctionResult {\r\n\tprivate _model: FunctionExecutionModel;\r\n\tprivate _allRows: KnockoutObservableArray<Array<ParamValueModel>>;\r\n\tprivate _paginatedRows: KnockoutComputed<Array<Array<ParamValueModel>>>;\r\n\tprivate _recordsPerPage: number;\r\n\tprivate _pageNumber: KnockoutObservable<number>;\r\n\tprivate _totalPages: KnockoutComputed<number>;\r\n\tprivate _hasPrevious: KnockoutComputed<boolean>;\r\n\tprivate _hasNext: KnockoutComputed<boolean>;\r\n\tprivate _paginatorInputWidth: KnockoutComputed<string>;\r\n\r\n\tconstructor(model: FunctionExecutionModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._allRows = ko.observableArray(model.Data);\r\n\t\tthis._recordsPerPage = 20;\r\n\t\tthis._pageNumber = ko.observable(0);\r\n\t\tlet self = this;\r\n\t\tthis._paginatedRows = ko.computed(() => {\r\n\t\t\tlet first = this._pageNumber() * this._recordsPerPage;\r\n\t\t\treturn this._allRows.slice(first, first + this._recordsPerPage);\r\n\t\t});\r\n\r\n\t\tthis._totalPages = ko.computed(() => {\r\n\t\t\tlet div = Math.floor(self._allRows().length / self._recordsPerPage);\r\n\t\t\tdiv += self._allRows().length % self._recordsPerPage > 0 ? 1 : 0;\r\n\t\t\treturn div - 1;\r\n\t\t});\r\n\r\n\t\tthis._hasPrevious = ko.computed(function() {\r\n\t\t\treturn self._pageNumber() !== 0;\r\n\t\t});\r\n\r\n\t\tthis._hasNext = ko.computed(function() {\r\n\t\t\treturn self._pageNumber() !== self._totalPages();\r\n\t\t});\r\n\r\n\r\n\t\tthis._paginatorInputWidth = ko.computed({\r\n\t\t\towner: this,\r\n\t\t\tread: () => {\r\n\t\t\t\treturn `${( self._pageNumber().toString().length + 1)*7}px`;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tlet modal = new Modal({\r\n\t\t\taddClass: 'executeModal'\r\n\t\t});\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(this, modal.Wrapper);\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/FunctionDesigner/Templates/FunctionResult';\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tNext() {\r\n\t\tif(this._pageNumber() < this._totalPages()) {\r\n\t\t\tthis._pageNumber(this._pageNumber() + 1);\r\n\t\t}\r\n\t}\r\n\r\n\tPrevious() {\r\n\t\tif(this._pageNumber() != 0) {\r\n\t\t\tthis._pageNumber(this._pageNumber() - 1);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: Model --> <div class=\\\"pagination grid-control-paginator\\\" style=\\\"\\\"> <ul class=\\\"pagination grid-control-paginator\\\"> <li data-bind=\\\"click: $parent.Previous.bind($parent)\\\" class=\\\"page-pre\\\"> <a>‹</a> </li> <li class=\\\"page-number\\\"> <input disabled=\\\"disabled\\\" autocomplete=\\\"off\\\" data-bind=\\\"textInput: $parent._pageNumber() + 1, style: { width: $parent._paginatorInputWidth }\\\" type=\\\"text\\\" class=\\\"pagination-input\\\"> </li> <li data-bind=\\\"click: $parent.Next.bind($parent)\\\" class=\\\"page-next\\\"> <a>›</a> </li> </ul> </div> <div class=\\\"functionResultTable\\\"> <table class=\\\"table table-hover table-striped table-bordered\\\"> <thead> <tr> <!-- ko foreach: OutParams --> <th> <!-- ko text: $data --><!-- /ko --> </th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: $parent._paginatedRows --> <tr> <!-- ko foreach: $data --> <td> <!-- ko text: $data.Value --><!-- /ko --> </td> <!-- /ko --> </tr> <!-- /ko --> </tbody> </table> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div id=\\\"wrapper\\\" class=\\\"functionDesignerWrap\\\"> <div class=\\\"functionDesigner-screen form-designer\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"canvasDesigner-screen-content\\\"> <input id=\\\"formId\\\" type=\\\"hidden\\\" value=\\\"0\\\"/> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko if: ShowButtonContainer --> <div class=\\\"standart-button-container clearfix\\\"> <input data-bind=\\\"textInput: $data._searchTerm,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenterKey: $data.Search.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <button data-bind=\\\"visible: _hasData, click: DeletePackage\\\" class=\\\"btn red subFormControl\\\"><i class=\\\"fa fa-trash\\\"></i> <!-- ko text: _labels.DELETE --><!-- /ko --></button> </div> <!-- /ko --> </div> <div class=\\\"bar-right entity-heading\\\"> <div class=\\\"entity-icon-container\\\"> <span class=\\\"fa fa-window-restore\\\" aria-hidden=\\\"true\\\"></span> </div> <div class=\\\"entity-name custom-color-option formDesignerTitle__entityName\\\"> <!-- ko text: _labels.FUNCTION_DESIGNER --><!-- /ko --> </div> </div> </div> </div> </form> </div> <!-- ko if: _functionSelected() --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div id=\\\"functionDesignerContainer\\\" class=\\\"form-designer functionDesignerContainer\\\"> <div class=\\\"mainContent\\\" role=\\\"tabpanel\\\"> <div class=\\\"fDesignerRight panel-group\\\"> <!-- ko with: Package --> <div class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <span class=\\\"panel-name-text\\\" data-bind=\\\"click: $parent.EditPackage.bind($parent, $data)\\\"> <i class=\\\"fa fa-edit\\\"></i> <span data-bind=\\\" text: Name, attr: {title: Name }\\\"></span> </span> <span class=\\\"panel-nameButtonBox\\\"> <a data-bind=\\\"click: $parent.NewMethod.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> <span data-bind=\\\" text: $parent._labels.ADD\\\"></span> </a> </span> </h4> </div> <div class=\\\"panel-collapse collapse in\\\"> <div class=\\\"panel-body entity-container\\\"> <div class=\\\"list-group panel panel-info\\\" role=\\\"tablist\\\"> <div class=\\\"panel-heading clearfix noselect\\\"> <h5 class=\\\"panel-title clip panel-name subject\\\" data-bind=\\\"text: $parent._labels.METHODS\\\"></h5> </div> <div class=\\\"field-container\\\"> <!-- ko foreach: Methods --> <div class=\\\"list-group-item list-group-item-action alert alert-warning draggable-field clearfix nonDraggable\\\" data-bind=\\\"click: $parents[1].SelectMethod.bind($parents[1], $data),\\r\\n css:{'active' : $parents[1]._currentMethod() === $data}\\\" role=\\\"tab\\\" aria-controls=\\\"home\\\"> <span class=\\\"field-name\\\" data-bind=\\\"text: Title, attr: { title: Title }\\\"></span> </div> <!-- /ko --> </div> </div> </div> </div> </div> <!-- /ko --> </div> <div class=\\\"fDesignerLeft\\\"> <div class=\\\"tab-content\\\"> <!-- ko with: CurrentMethod --> <div class=\\\"tab-pane fade panel-group active show\\\"> <div class=\\\"card col-md-12 no-padding\\\"> <div class=\\\"panel panel-success\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <span class=\\\"panel-name-text method-title\\\" data-bind=\\\"click: $parent.EditMethod.bind($parent, $data)\\\"> <i class=\\\"fa fa-edit\\\"></i> <span data-bind=\\\"text: Title, attr: { title: Title }\\\"></span> </span> <!-- ko if: $parent._showRawResultCheckbox --> <div class=\\\"form-group\\\"> <label for=\\\"rawResult\\\">Raw result</label> <input data-bind=\\\"checked: $parent._rawResult\\\" id=\\\"rawResult\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> <span class=\\\"panel-title__btnBox\\\"> <a data-bind=\\\"click: $parent.ShowCodeEditor.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> EditCode </a> <a data-bind=\\\"click: $parent.NewParameter.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> <span data-bind=\\\" text: $parent._labels.ADD\\\"></span> </a> <a data-bind=\\\"click: $parent.Execute.bind($parent)\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn green editFunctionBtn subFormControl\\\"> <i class=\\\"fa fa-exclamation\\\"></i> <span>Execute</span> </a> </span> </h4> </div> <div class=\\\"row tab-pane__row\\\"> <!--ko if: InParams.length --> <div class=\\\"panel-collapse collapse in\\\"> <div class=\\\"col-md-6 panel-body entity-container\\\"> <fieldset class=\\\"fDesignerContainer panel group-control\\\"> <legend class=\\\"titleGroup\\\" data-bind=\\\"text: $parent._labels.IN\\\"></legend> <div class=\\\"card\\\"> <div class=\\\"card-body panel panel-info\\\"> <div class=\\\"field-container\\\"> <!-- ko foreach: InParams --> <a class=\\\"param-item list-group-item list-group-item-action alert alert-warning draggable-field clearfix nonDraggable\\\" role=\\\"tab\\\" aria-controls=\\\"home\\\" data-bind=\\\"click: $parents[1].EditParam.bind($parents[1], $data, $parent)\\\"> <span class=\\\"text-left additional-icon custom-color-option paramBox paramBox--textLeft\\\" data-bind=\\\" text: TypeName\\\"></span> <span data-bind=\\\" text: Name, attr: {title: Name }\\\" class=\\\"field-name panel-parameter-name panel-name-text alert-warning\\\"></span> <i class=\\\"fa fa-edit\\\"></i> </a> <!-- /ko --> </div> </div> </div> </fieldset> </div> </div> <!-- /ko --> <!--ko if: OutParams.length --> <div class=\\\"panel-collapse collapse in\\\"> <div class=\\\"col-md-6 panel-body entity-container\\\"> <fieldset class=\\\"fDesignerContainer panel group-control\\\"> <legend class=\\\"titleGroup\\\" data-bind=\\\"text: $parent._labels.OUT\\\"></legend> <div class=\\\"card\\\"> <div class=\\\"card-body panel panel-info\\\"> <div class=\\\"field-container\\\"> <!-- ko foreach: OutParams --> <a class=\\\"param-item list-group-item list-group-item-action alert alert-warning draggable-field clearfix nonDraggable\\\" role=\\\"tab\\\" aria-controls=\\\"home\\\" data-bind=\\\"click: $parents[1].EditParam.bind($parents[1], $data, $parent)\\\"> <i class=\\\"fa fa-edit\\\"></i> <span data-bind=\\\" text: Name, attr: {title: Name }\\\" class=\\\"field-name panel-parameter-name panel-name-text alert-warning\\\"></span> <span class=\\\"text-right additional-icon custom-color-option paramBox paramBox--textRight\\\" data-bind=\\\"text: TypeName\\\"></span> </a> <!-- /ko --> </div> </div> </div> </fieldset> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport 'pubsub';\r\nimport 'bootstrap';\r\nimport 'signalR';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {FunctionDesignerStore} from 'Core/Controls/FunctionDesigner/Stores/FunctionDesignerStore';\r\nimport {FunctionDesignerPackageModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerPackageModel';\r\nimport {FunctionDesignerMethodModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {FunctionDesignerMethodParamModel} from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodParamModel';\r\nimport {FunctionResult} from 'Core/Controls/FunctionDesigner/FunctionResult';\r\n\r\nimport {NOTIFICATIONS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from \"Core/Screens/SearchScreen/Events\";\r\nimport {EVENTS as TYPE_SCREEN_EVENTS} from \"Core/Screens/TypeScreen/Events\";\r\nimport {EVENTS as EDIT_SCREEN_EVENTS} from \"Core/Screens/EditScreen/Events\";\r\n\r\nimport {CodeEditor} from 'Core/Controls/FunctionDesigner/CodeEditor';\r\nimport {FUNCTION_TYPES} from 'Core/Controls/FunctionDesigner/FunctionTypes';\r\n\r\nimport ViewTemplate from 'Core/Controls/FunctionDesigner/Templates/View.html';\r\nimport {EntityTypesStore} from \"../../Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nko.templates['Core/Controls/FunctionDesigner/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/FunctionDesigner/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class FunctionDesigner extends BaseControl {\r\n private _metadata: any;\r\n private _recordId: number;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _package: KnockoutObservable<FunctionDesignerPackageModel>;\r\n private _currentMethod: KnockoutObservable<FunctionDesignerMethodModel>;\r\n private _rawResult: KnockoutObservable<boolean>;\r\n private _showRawResultCheckbox: KnockoutComputed<boolean>;\r\n private _showButtonContainer: KnockoutObservable<boolean>;\r\n _functionSelected: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._searchTerm = ko.observable('');\r\n this._hasData = ko.observable(false);\r\n this.AddEvent('FUNCTION_CREATED');\r\n this.Init();\r\n this._package = ko.observable(null);\r\n this._currentMethod = ko.observable(null);\r\n this._rawResult = ko.observable(false);\r\n this._showRawResultCheckbox = ko.computed(() => {\r\n return this._currentMethod() && this._currentMethod().TypeName === FUNCTION_TYPES.API_METHOD;\r\n });\r\n this._showButtonContainer = ko.observable(true);\r\n this._functionSelected = ko.observable(false);\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this.GetGuid()){\r\n FunctionBuilder.Execute(data.Code, data.Params);\r\n }\r\n });\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n get Package(): KnockoutObservable<FunctionDesignerPackageModel> {\r\n return this._package;\r\n }\r\n\r\n get CurrentMethod(): KnockoutObservable<FunctionDesignerMethodModel> {\r\n return this._currentMethod;\r\n }\r\n\r\n get ShowButtonContainer(): KnockoutObservable<boolean> {\r\n return this._showButtonContainer;\r\n }\r\n\r\n HideButtonContainer() {\r\n this._showButtonContainer = ko.observable(false);\r\n }\r\n\r\n private Init(): void {\r\n BlockUI.Block();\r\n FunctionDesignerStore.GetFunctionDesignerMetaData()\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((result) => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier(this._el).Failed(result.ErrorMessage);\r\n return;\r\n }\r\n this._metadata = result.ResultObject;\r\n });\r\n }\r\n\r\n ShowCodeEditor() {\r\n var codeEditor = new CodeEditor(\r\n this.CurrentMethod(),\r\n this._package().Id\r\n );\r\n codeEditor.Show();\r\n }\r\n\r\n\r\n SelectMethod(method: FunctionDesignerMethodModel) {\r\n this._currentMethod(method);\r\n }\r\n\r\n SelectMethodById(functionId: number){\r\n let func = _.find(this._package().Methods, (method) => method.Id === functionId);\r\n this.SelectMethod(func);\r\n }\r\n\r\n GetMethod(methodId: number): P.Promise<FunctionDesignerMethodModel> {\r\n const deferredResult = P.defer<FunctionDesignerMethodModel>();\r\n BlockUI.Block();\r\n FunctionDesignerStore.GetMethod({MethodId: methodId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((method) => {\r\n this._currentMethod(method);\r\n let existingMethod = _.find(this._package().Methods, (item) => {\r\n return item.Id === method.Id;\r\n });\r\n\r\n if (existingMethod) {\r\n this._package().Methods[this._package().Methods.indexOf(existingMethod)] = method;\r\n }\r\n this._package.valueHasMutated();\r\n\r\n deferredResult.resolve(method);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n GetPackage(packageId: number): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n BlockUI.Block();\r\n FunctionDesignerStore.GetPackage({PackageId: packageId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((functionPackage) => {\r\n this._package(functionPackage);\r\n this.CurrentMethod(null);\r\n this._hasData(true);\r\n deferredResult.resolve(null);\r\n }).fail(err => new Notifier().Failed(err.message));\r\n return deferredResult.promise();\r\n }\r\n\r\n DeletePackage() {\r\n const confirmationText = CONFIRMATIONS.FUNCTION_PACKAGE_DELETION;\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n\r\n BlockUI.Block();\r\n FunctionDesignerStore.DeletePackage({PackageId: this._package().Id})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((functionPackage) => {\r\n this._package(null);\r\n this.CurrentMethod(null);\r\n this._hasData(false);\r\n\r\n }).fail(err => new Notifier().Failed(err.message));\r\n });\r\n\r\n confirmationDialog.Show();\r\n\r\n }\r\n\r\n\r\n EditMethod(method: FunctionDesignerMethodModel) {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this._metadata.EntityId, method.Id)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: method.TypeId,\r\n RecordId: method.Id\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, method.TypeId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, method.Id);\r\n this.GetMethod(method.Id);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, method.Id));\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this._currentMethod(null);\r\n this.GetPackage(this._package().Id);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n EditPackage(packag: FunctionDesignerPackageModel) {\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(this._metadata.EntityId, packag.Id)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: packag.TypeId,\r\n RecordId: packag.Id\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, packag.TypeId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, packag.Id);\r\n this.GetPackage(packag.Id);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, packag.Id));\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this._package(null);\r\n this._currentMethod(null);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n EditParam(param: FunctionDesignerMethodParamModel, method: FunctionDesignerMethodModel) {\r\n BlockUI.Block();\r\n LockManager.Instance.TryLock(this._metadata.EntityId, param.Id)\r\n .then(() => {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: param.TypeId,\r\n RecordId: param.Id\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, param.TypeId);\r\n LockManager.Instance.ReleaseLock(this._metadata.EntityId, param.Id);\r\n this.GetMethod(method.Id);\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this._metadata.EntityId, param.Id));\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this.GetMethod(method.Id);\r\n });\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n SelectParameter(item) {\r\n\r\n }\r\n\r\n SetValue(value: any): void {\r\n }\r\n\r\n Search(): void {\r\n EntityTypesStore.GetTypes({\r\n EntityId: this._metadata.EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n })\r\n .then((result) => {\r\n let apiPackageType = _.find(result.TableTypes, (item) => item.Name === FUNCTION_TYPES.API_PACKAGE);\r\n if (apiPackageType) {\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._metadata.EntityId,\r\n SearchTerm: this._searchTerm(),\r\n IsRootForFormDesigner: true,\r\n SearchByTypes: [apiPackageType.Id]\r\n });\r\n searchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === FUNCTION_TYPES.API_PACKAGE) {\r\n this._functionSelected(true)\r\n this.GetPackage(eventArgs.data.RecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n searchScreen.On(SEARCH_SCREEN_EVENTS.NEW_RECORD,\r\n this,\r\n (eventArgs) => {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, 0, true);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.ErrorMessage);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.TypeName === FUNCTION_TYPES.API_PACKAGE) {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId);\r\n } else {\r\n new Notifier().Warning(`${eventArgs.data.TypeName} is not allowed`);\r\n }\r\n });\r\n\r\n this.On('FUNCTION_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n typeScreen.Show();\r\n });\r\n searchScreen.Show();\r\n }\r\n });\r\n }\r\n\r\n NewParameter() {\r\n if (this._currentMethod()) {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, this._currentMethod().TypeId, false);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.AddAndLink(typeId, kindId, exampleRecordId, this._currentMethod().Id).then(() => {\r\n this.GetMethod(this._currentMethod().Id);\r\n });\r\n });\r\n typeScreen.Show();\r\n }\r\n }\r\n\r\n NewMethod() {\r\n if (this._package()) {\r\n var typeScreen = new TypeScreen(this._metadata.EntityId, this._package().TypeId, false);\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPES_NOT_FOUND, this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On(TYPE_SCREEN_EVENTS.TYPE_SELECTED, this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.AddAndLink(typeId, kindId, exampleRecordId, this._package().Id).then((methodId) => {\r\n this.GetMethod(methodId).then((method) => {\r\n this._package().Methods.push(method);\r\n this._package.valueHasMutated();\r\n });\r\n });\r\n });\r\n typeScreen.Show();\r\n }\r\n }\r\n\r\n AddAndLink(tableTypeId: number, kindId: number, exampleRecordId: number, parentRecordId: number): P.Promise<number> {\r\n const deferredResult = P.defer<number>();\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = parentRecordId;\r\n editScreen.UseLinking = true;\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, tableTypeId);\r\n deferredResult.resolve(eventArgs.data.RecordId)\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this._metadata.EntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n screen.On(EDIT_SCREEN_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n this.Trigger('FUNCTION_CREATED');\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this._recordId = eventArgs.data.RecordId;\r\n UserVarsManager.Instance.AddRecent(this._metadata.EntityId, eventArgs.data.RecordId, tableTypeId);\r\n this._functionSelected(true);\r\n this.GetPackage(eventArgs.data.RecordId);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n }\r\n\r\n\r\n Execute() {\r\n BlockUI.Block();\r\n FunctionDesignerStore.Execute({\r\n PackageId: this._package().Id,\r\n MethodId: this._currentMethod().Id,\r\n IsRawResult: this._rawResult(),\r\n ObjectId: this.GetGuid()\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n var functionResult = new FunctionResult(result);\r\n functionResult.ShowInModal();\r\n }).fail(err => new Notifier().Failed(err.message));\r\n }\r\n}","export const FUNCTION_TYPES = {\r\n\tAPI_PACKAGE: 'APIPackage',\r\n\tCSHARP_FUNCTION: 'CSharpFunction',\r\n\tAPI_METHOD: 'APIMethod',\r\n\tJS_FUNCTION: 'JSFunction'\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class FunctionDesignerMethodParamModel {\r\n\tconstructor() {\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tSideName: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { FunctionDesignerMethodParamModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodParamModel';\r\n\r\nexport const SIDES = {\r\n\tIN: 'IN',\r\n\tOUT: 'OUT'\r\n}\r\n\r\nexport class FunctionDesignerMethodModel {\r\n\tconstructor() {\r\n\t\tthis.Params = [];\r\n\t}\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tCode: string;\r\n\r\n\t@deserializeAs(FunctionDesignerMethodParamModel)\r\n\tParams: Array<FunctionDesignerMethodParamModel>;\r\n\r\n\tget InParams(): Array<FunctionDesignerMethodParamModel> {\r\n\t\treturn _.filter(this.Params, (item) => item.SideName === SIDES.IN);\r\n\t}\r\n\r\n\tget OutParams(): Array<FunctionDesignerMethodParamModel> {\r\n\t\treturn _.filter(this.Params, (item) => item.SideName === SIDES.OUT);\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn `${this.Name}(${this.TypeName})`;\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { FunctionDesignerMethodModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\n\r\nexport class FunctionDesignerPackageModel {\r\n\tconstructor() {\r\n\t\tthis.Methods = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserializeAs(FunctionDesignerMethodModel)\r\n\tMethods: Array<FunctionDesignerMethodModel>;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { FunctionDesignerMethodModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\n\r\nexport class ParamValueModel {\r\n\t@deserialize\r\n\tKey: string;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}\r\n\r\nexport class FunctionExecutionModel {\r\n\tconstructor() {\r\n\t\tthis.OutParams = [];\r\n\t\tthis.Data = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tData: Array<Array<ParamValueModel>>;\r\n\r\n\t@deserialize\r\n\tOutParams: Array<string>;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class SyntaxErrorModel {\r\n\tconstructor() {}\r\n\r\n\t@deserialize\r\n\tError: string;\r\n\r\n\t@deserialize\r\n\tColumn: number;\r\n\r\n\t@deserialize\r\n\tLine: number;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class CompileErrorModel {\r\n\tconstructor() {}\r\n\r\n\t@deserialize\r\n\tError: string;\r\n\r\n\t@deserialize\r\n\tMethodName: string;\r\n}","import { deserializeAs } from 'libs/cerialize';\r\nimport { SyntaxErrorModel } from 'Core/Controls/FunctionDesigner/Models/SyntaxErrorModel';\r\nimport { CompileErrorModel } from 'Core/Controls/FunctionDesigner/Models/CompileErrorModel';\r\n\r\nexport class FunctionValidationModel {\r\n\tconstructor() {\r\n\t\tthis.SyntaxErrors = [];\r\n\t\tthis.CompileErrors = [];\r\n\t}\r\n\r\n\t@deserializeAs(SyntaxErrorModel)\r\n\tSyntaxErrors: Array<SyntaxErrorModel>;\r\n\r\n\t@deserializeAs(CompileErrorModel)\r\n\tCompileErrors: Array<CompileErrorModel>;\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport { EntitiesListModel } from 'Core/Controls/CanvasDesigner/Models/EntitiesListModel';\r\nimport { FunctionDesignerPackageModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerPackageModel';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { FunctionDesignerMethodModel } from 'Core/Controls/FunctionDesigner/Models/FunctionDesignerMethodModel';\r\nimport { FunctionExecutionModel } from 'Core/Controls/FunctionDesigner/Models/FunctionExecutionModel';\r\nimport { FunctionValidationModel } from 'Core/Controls/FunctionDesigner/Models/FunctionValidationModel';\r\n\r\nexport interface IGetPackageRequestModel {\r\n\tPackageId: number;\r\n}\r\n\r\nexport interface IGetMethodRequestModel {\r\n\tMethodId: number;\r\n}\r\n\r\n\r\nexport interface IUpdateCodeRequestModel {\r\n\tId: number;\r\n\tCode: string\r\n}\r\n\r\nexport interface IExecuteRequestModel {\r\n\tPackageId: number;\r\n\tMethodId: number;\r\n\tIsRawResult?: boolean;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface IValidateRequestModel {\r\n\tPackageId: number;\r\n\tMethodId: number;\r\n\tCode: string;\r\n}\r\n\r\nexport interface ITestRequestModel {\r\n\tPackageId: number;\r\n\tMethodId: number;\r\n\tCode: string;\r\n\tObjectId: string;\r\n}\r\n\r\nexport interface ICancelExecuteRequestModel {\r\n\tErrorMessage: string;\r\n}\r\n\r\nexport interface IContinueExecuteRequestModel {\r\n\tParam: any;\r\n}\r\n\r\n\r\nexport class FunctionDesignerStore {\r\n\r\n\tstatic GetFunctionDesignerMetaData(): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/GetFunctionDesignerMetaData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPackage(params: IGetPackageRequestModel): P.Promise<FunctionDesignerPackageModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerPackageModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/GetPackage',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionDesignerPackageModel>(result.ResultObject, FunctionDesignerPackageModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic DeletePackage(params: IGetPackageRequestModel): P.Promise<FunctionDesignerPackageModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerPackageModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/DeletePackage',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionDesignerPackageModel>(result.ResultObject, FunctionDesignerPackageModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMethod(params: IGetMethodRequestModel): P.Promise<FunctionDesignerMethodModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerMethodModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/GetMethod',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionDesignerMethodModel>(result.ResultObject, FunctionDesignerMethodModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateCode(params: IUpdateCodeRequestModel): P.Promise<FunctionDesignerMethodModel> {\r\n\t\tconst deferredResult = P.defer<FunctionDesignerMethodModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/UpdateCode',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Validate(params: IValidateRequestModel): P.Promise<FunctionValidationModel> {\r\n\t\tconst deferredResult = P.defer<FunctionValidationModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/Validate',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionValidationModel>(result.ResultObject, FunctionValidationModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Test(params: ITestRequestModel): P.Promise<FunctionExecutionModel> {\r\n\t\tconst deferredResult = P.defer<FunctionExecutionModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/Test',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionExecutionModel>(result.ResultObject, FunctionExecutionModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage })\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Execute(params: IExecuteRequestModel): P.Promise<FunctionExecutionModel> {\r\n\t\tconst deferredResult = P.defer<FunctionExecutionModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FunctionDesignerApi/Execute',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize<FunctionExecutionModel>(result.ResultObject, FunctionExecutionModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage })\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\t\r\n}","// Module\nvar code = \"<a class=\\\"btn subFormControl genericBtn\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: IsDisabledByCondition },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {content: GetTooltipValue()}, click: Click, style: _style\\\"> <!--ko if: _icon() && _icon().Id && _icon().IsIcon --> <i class=\\\"generic-icon\\\" data-bind=\\\"style: { color: _iconColor}, css: _iconModel.GetClasses(_icon().FontName, _icon().Name)\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Id && _icon().IsImage--> <img class=\\\"generic-image img-responsive image-centered image-icon-xs\\\" src=\\\"\\\" alt=\\\"\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko ifnot: _nameInTooltip --> <span class=\\\"genericBtn-label\\\"> <!--ko text: Label--><!--/ko--> </span> <!--/ko--> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {TriggerModel} from 'Core/Controls/BaseControl/Models/TriggerModel';\r\nimport {TRIGGER_ACTIONS} from 'Core/Constants/TriggerActions';\r\nimport {TRIGGER_PARAMS} from 'Core/Constants/TriggerParams';\r\nimport {\r\n IParamModel,\r\n IExecuteTriggerRequestModel,\r\n TriggerStore\r\n} from 'Core/Components/Triggers/TriggerStore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {IconModel} from \"../BaseControl/Models/IconModel\";\r\nimport {GenericButtonConfigModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel';\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport GenericButtonConfig from 'Core/Controls/GenericButton/Configs/generic-button-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/GenericButton/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/GenericButton/Templates/HelpView.html';\r\nimport DesignTemplate from 'Core/Controls/GenericButton/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/GenericButton/Templates/ToolBar.html';\r\nimport { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { genericButtonFacade } from 'Core/Components/CustomFunctions/Facades/GenericButtonFacade';\r\n\r\n\r\nko.templates['Core/Controls/GenericButton/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/GridRow'] = ViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/GenericButton/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nexport class GenericButton extends BaseControl {\r\n private _config: any;\r\n private _iconColor: KnockoutObservable<string>;\r\n private _nameInTooltip: KnockoutObservable<boolean>;\r\n private _synchronousExecution: KnockoutObservable<boolean>;\r\n private _buttonClassName: KnockoutObservable<string>;\r\n private _iconModel = IconModel;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, GenericButtonConfig);\r\n\r\n this._style = ko.computed(() => {\r\n const paddingV = this._border() ? 6 : 7;\r\n const paddingH = this._border() || this._backgroundColor() ? 14 : 4;\r\n\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: `${paddingV}px ${paddingH}px`\r\n };\r\n });\r\n\r\n this._iconColor = ko.observable(null);\r\n this._nameInTooltip = ko.observable(false);\r\n this._synchronousExecution = ko.observable(false);\r\n\r\n this.Init();\r\n this._icon(this._model().Icon);\r\n this._buttonClassName = ko.observable(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name));\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this.GetGuid()){\r\n FunctionBuilder.Execute(data.Code, data.Params, genericButtonFacade(this));\r\n }\r\n });\r\n\r\n this._icon.subscribe(() => {\r\n this._buttonClassName(this._iconModel.GetClasses(this._model().Icon?.FontName, this._model().Icon?.Name))\r\n });\r\n }\r\n\r\n get ClickTrigger(): TriggerModel{\r\n return _.find(this._model().Triggers, (trigger: TriggerModel) => {\r\n return trigger.Action === TRIGGER_ACTIONS.ON_CLICK\r\n });\r\n }\r\n\r\n async Click() {\r\n if (!this.IsDesignTime) {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n if (this.IsDisabledByCondition) {\r\n return;\r\n }\r\n\r\n if (this.ClickTrigger) {\r\n let params: Array<IParamModel> = [];\r\n if (this.PrepareParams(this.ClickTrigger, params)) {\r\n let requestModel: IExecuteTriggerRequestModel = {\r\n Id: this.ClickTrigger.Id,\r\n ObjectId: this.GetGuid(),\r\n Name: this.ClickTrigger.Name,\r\n Params: params\r\n }\r\n\r\n BlockUI.Block();\r\n await TriggerStore.ExecuteClickTrigger(requestModel).fail((err) => new Notifier().Failed(err.message));\r\n BlockUI.Unblock();\r\n\r\n if (this._synchronousExecution()) {\r\n this._form.GetScreen().Refresh();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private PrepareParams(trigger: TriggerModel, params: Array<IParamModel>): boolean {\r\n let result = true;\r\n if (this._form) {\r\n _.each(trigger.Params, (param) => {\r\n if (param.Name === TRIGGER_PARAMS.ENTITY_ID || param.Name === TRIGGER_PARAMS.MAIN_ENTITY_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetEntityId()});\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RECORD_ID || param.Name === TRIGGER_PARAMS.MAIN_RECORD_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetRecordId()});\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.SCREEN_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetId()});\r\n }\r\n if (param.Name === TRIGGER_PARAMS.TABLE_TYPE_ID) {\r\n params.push({Name: param.Name, Value: this._form.GetScreen().GetTableTypeId()});\r\n }\r\n\r\n const source = this._form.GetScreen().GetSource();\r\n if (source) {\r\n if (param.Name === TRIGGER_PARAMS.PREVIOUS_ENTITY_ID) {\r\n params.push({Name: param.Name, Value: source.GetEntityId()});\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.PREVIOUS_RECORD_ID) {\r\n params.push({\r\n Name: param.Name,\r\n Value: this._form.GetScreen().GetSource().GetRecordId()\r\n });\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RELATED_RECORD_IDS) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid) {\r\n let grid = this.GetParentControl() as any;\r\n\r\n let config = this.GetButtonInGridConfig(grid);\r\n\r\n if (config) {\r\n\r\n let selectedRecords = grid.GetSelectRecords();\r\n\r\n let keys = [];\r\n _.each(selectedRecords, (row: GridRow) => {\r\n keys = keys.concat(row.Model.RecordKeys);\r\n });\r\n\r\n let recordKeys = _.filter(keys, (item: RecordKey) => {\r\n return item.RecordId != 0 && item.QueryEntityGuid === config.QueryEntityGuid && item.FieldId === config.FieldId;\r\n });\r\n\r\n if (recordKeys.length === 0) {\r\n new Notifier().Failed(NOTIFICATIONS.SELECT_RECORDS_TO_PROCESS);\r\n result = false;\r\n }\r\n\r\n let ids = _.map(recordKeys, (recordKey) => {\r\n return recordKey.RecordId;\r\n })\r\n\r\n params.push({Name: param.Name, Value: ids.join()});\r\n\r\n } else {\r\n\r\n let selectedRecords = grid.GetSelectRecords();\r\n\r\n let keys = [];\r\n _.each(selectedRecords, (row: GridRow) => {\r\n keys = keys.concat(row.RecordId);\r\n });\r\n\r\n if (keys.length === 0) {\r\n new Notifier().Failed(NOTIFICATIONS.SELECT_RECORDS_TO_PROCESS);\r\n result = false;\r\n }\r\n\r\n params.push({Name: param.Name, Value: keys.join()});\r\n }\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.KSEQS) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid) {\r\n let grid = this.GetParentControl() as any;\r\n\r\n let selectedRecords = grid.GetSelectRecords();\r\n\r\n let keys = [];\r\n _.each(selectedRecords, (row: GridRow) => {\r\n keys = keys.concat(row.KSeq);\r\n });\r\n\r\n if (keys.length === 0) {\r\n new Notifier().Failed(NOTIFICATIONS.SELECT_RECORDS_TO_PROCESS);\r\n result = false;\r\n }\r\n\r\n params.push({Name: param.Name, Value: keys.join()});\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RELATED_RECORD_ID) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid && this._gridRow) {\r\n let grid = this.GetParentControl() as any;\r\n let config = this.GetButtonInGridConfig(grid);\r\n\r\n if (config) {\r\n let paramData = _.find(this._gridRow.Model.RecordKeys, (item: any) => {\r\n return item.RecordId != 0 && item.QueryEntityGuid === config.QueryEntityGuid && item.FieldId === config.FieldId;\r\n });\r\n\r\n if (!paramData) {\r\n let notifier = new Notifier(null);\r\n notifier.Success(NOTIFICATIONS.PARAM_IS_EMPTY.replace('{ParamName}', param.Name));\r\n result = false;\r\n } else {\r\n params.push({Name: param.Name, Value: paramData.RecordId});\r\n }\r\n } else {\r\n params.push({ Name: param.Name, Value: this._gridRow.RecordId});\r\n }\r\n\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.KSEQ) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid && this._gridRow) {\r\n params.push({ Name: param.Name, Value: this._gridRow.KSeq});\r\n }\r\n }\r\n\r\n if (param.Name === TRIGGER_PARAMS.RELATED_ENTITY_ID) {\r\n if (this.GetParentControl() && this.GetParentControl().GetType() === CONTROL_TYPES.Grid) {\r\n let grid = this.GetParentControl() as any;\r\n let config = this.GetButtonInGridConfig(grid);\r\n if (config) {\r\n params.push({Name: param.Name, Value: config.EntityId});\r\n } else {\r\n params.push({Name: param.Name, Value: grid._gridEntityId});\r\n }\r\n }\r\n }\r\n });\r\n }\r\n return result;\r\n }\r\n\r\n private GetButtonInGridConfig(grid: any): GenericButtonConfigModel {\r\n return _.find(grid.QueryExpression.GenericButtonConfigs, (config: GenericButtonConfigModel) => {\r\n return config.GenericButtonId === this.GetControlId();\r\n });\r\n }\r\n\r\n private Init() {\r\n this.ApplyProperties();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n super.SetValue(value);\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'IconColor', this._iconColor);\r\n this.AssignProperty('Styling', 'NameInTooltip', this._nameInTooltip);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n this.AssignProperty('Execution', 'SynchronousExecution', this._synchronousExecution)\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private GetTooltipValue(): string {\r\n if (this._nameInTooltip()) {\r\n return this.Label();\r\n }\r\n return '';\r\n }\r\n}\r\n","// Module\nvar code = \"<a class=\\\"btn subFormControl genericBtn\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: IsDisabledByCondition },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {content: GetTooltipValue()}, style: _style\\\"> <!--ko if: _icon() && _icon().Id && !_icon().Image--> <i data-bind=\\\"style: { color: _iconColor}, css: _iconModel.GetClasses(_icon().FontName, _icon().Name)\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Id && _icon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko ifnot: _nameInTooltip --> <span class=\\\"genericBtn-label\\\"> <!--ko text: Label--><!--/ko--> </span> <!--/ko--> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn subFormControl genericBtn\\\" data-bind=\\\"tooltip: {content: GetTooltipValue()}, click: Click, style: _style\\\"> <!--ko if: _icon() && _icon().Id && _icon().IsIcon --> <i class=\\\"generic-icon\\\" data-bind=\\\"style: { color: _iconColor}, css: _buttonClassName\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Id && _icon().IsImage--> <img class=\\\"generic-image img-responsive image-centered image-icon-xs\\\" src=\\\"\\\" alt=\\\"\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko ifnot: _nameInTooltip --> <span class=\\\"genericBtn-label\\\"> <!--ko text: Label--><!--/ko--> </span> <!--/ko--> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn subFormControl\\\"> <i class=\\\"fa fa-code\\\"></i> <span>Generic Button</span> </a>\";\n// Exports\nexport default code;","import { CONTROL_TYPES } from \"Core/Constant\";\r\nimport { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { gridFacade } from \"./GridFacade\";\r\nimport { screenFacade } from \"Core/Components/CustomFunctions/Facades/ScreenFacade\";\r\n\r\nexport const genericButtonFacade = (control: GenericButton) => {\r\n\r\n const getGrid = () => {\r\n let parent = control.GetParentControl();\r\n if(parent && parent.GetControlTypeName() === CONTROL_TYPES.Grid){\r\n return gridFacade(parent as Grid);\r\n }\r\n return null;\r\n }\r\n\r\n return { getGrid }\r\n}","export const TRIGGER_PARAMS = {\r\n\tSCREEN_ID: 'ScreenId',\r\n\tTABLE_TYPE_ID: 'TableTypeId',\r\n\tUSER_ID: 'UserId',\r\n\tRECORD_ID: 'RecordId',\r\n\tENTITY_ID: 'EntityId',\r\n\tPREVIOUS_ENTITY_ID: 'PreviousEntityId',\r\n\tPREVIOUS_RECORD_ID: 'PreviousRecordId',\r\n\tMAIN_RECORD_ID: 'MainRecordId',\r\n\tMAIN_ENTITY_ID: 'MainEntityId',\r\n\tRELATED_ENTITY_ID: 'RelatedEntityId',\r\n\tRELATED_RECORD_ID: 'RelatedRecordId',\r\n\tRELATED_RECORD_IDS: 'RelatedRecordIds',\r\n\tOLD_KSEQ: 'OldKSeq',\r\n\tNEW_KSEQ: 'NewKSeq',\r\n\tCONTROL_ID: 'ControlId',\r\n\tKSEQ: 'KSeq',\r\n\tKSEQS: 'KSeqs'\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {TotalCell} from 'Core/Controls/Grid/BaseGrid/GridCell/TotalCell';\r\nimport {GridTotalRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport { GridCountRowModel } from \"../../Models/GridDataModel/GridCountRowModel\";\r\n\r\nexport class GridCountRow {\r\n\tprivate _dataCells: KnockoutObservableArray<TotalCell>;\r\n\tprivate _rowColorEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n\tprivate _labels = LABELS;\r\n\tprivate _isGroupActive: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: GridCountRowModel,\r\n\t\tprivate _showFavoriteCell,\r\n\t\tpublic _isEnableSelectRecord: KnockoutObservable<boolean>,\r\n\t\tcolumns: GridColumnModel[]\r\n\t) {\r\n\t\tthis._dataCells = ko.observableArray([]);\r\n\t\t_.each(this._model.Data, (item, index) => {\r\n\t\t\tlet filterTotalColumns = _.filter(columns, column => !column.IsSortDescription);\r\n\t\t\tthis._dataCells.push(new TotalCell(item, _.find(filterTotalColumns, (col)=>col.QueryColumnGuid == item.QueryColumnGuid)));\r\n\t\t});\r\n\r\n\t\tthis._isGroupActive = ko.observable(true);\r\n\t}\r\n\r\n\tset IsGroupActive(active: boolean) {\r\n\t\tthis._isGroupActive(active);\r\n\t}\r\n\r\n\tget IsGroupActive():boolean {\r\n\t\treturn this._isGroupActive();\r\n\t}\r\n\r\n\t@enumerable \r\n\tget HasWrappedColumn(): boolean {\r\n\t\tvar wrappedCell = _.find(this._dataCells(), (dataCell) => { return dataCell.IsWrapped });\r\n\t\treturn wrappedCell != null;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasData(): boolean {\r\n\t\treturn this._model.Data.length > 0;\r\n\t}\r\n\r\n\t@enumerable \r\n\tget Guid(): string {\r\n\t\treturn this._model.Guid;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as Viewer from \"viewer\";\r\n\r\nimport {\r\n GridScreenRow,\r\n Paginator,\r\n ZIndexManager,\r\n BlockUI,\r\n ResizeObserver,\r\n ScreenTypes,\r\n Event,\r\n Notifier,\r\n P,\r\n ConfirmationDialog,\r\n ConfirmationTypes,\r\n CONFIRMATION_DIALOG_EVENTS,\r\n LockManager,\r\n CONFIRMATIONS,\r\n NOTIFICATIONS,\r\n TranslationManager,\r\n CONTROL_TYPES,\r\n FIELD_TYPES,\r\n TABLE_TYPES,\r\n RelationshipTypes,\r\n EVENTS,\r\n GridAverageRow,\r\n DataCell,\r\n GroupColumn,\r\n HeaderColumn,\r\n GridRow,\r\n States,\r\n GridTotalRow,\r\n GridCellValueModel,\r\n GridColumnModel,\r\n GridDataModel,\r\n GridRowModel,\r\n QueryEntityModel,\r\n QueryExpressionModel,\r\n FieldDataModel,\r\n GridRowDataModel,\r\n TranslationModel,\r\n UpdateLifestatusModel,\r\n GridStore,\r\n IGetGridDataRequestModel,\r\n IUnlinkRecordRequestModel,\r\n TypeScreen,\r\n Util,\r\n FastFilterSaveModel,\r\n IBaseGridOptions,\r\n IForm,\r\n ILoadScreenRelationModel,\r\n IControl,\r\n SortModel,\r\n SortOrder,\r\n QueryColumnModel,\r\n QUERY_RESULT_GRID_EVENTS,\r\n PivotDetailsDropdown,\r\n Toolbar,\r\n TOOLBAR_EVENTS,\r\n ConfigModel,\r\n PROPERTIES,\r\n DeletedRelationModel,\r\n UpdateDataModel,\r\n extractLookupValFieldMetadata,\r\n ViewerJsExtention,\r\n PAGINATOR_EVENTS, LABELS\r\n} from './Index';\r\nimport {IUnlinkMultipleRecordsRequestModel} from \"../Stores/GridStore\";\r\nimport { GridCountRow } from './GridRow/GridCountRow';\r\n\r\nconst TYPE_FIELD_NAME = 'F_TYPE';\r\n\r\nconst DEFAULT_MAX_CELL_WIDTH_PX = 600;\r\nconst DEFAULT_MIN_CELL_WIDTH_PX = 10;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nclass GridSortModel {\r\n reservedCells: HTMLElement[];\r\n cells: HTMLElement[];\r\n row: HTMLElement\r\n}\r\n\r\ninterface GroupedDataItem {\r\n Title: string;\r\n Value: string;\r\n Cell: DataCell;\r\n}\r\n\r\nexport class BaseGrid extends Event {\r\n private _dataModel: GridDataModel;\r\n private _tableViewId: number;\r\n private _isAllSelected: KnockoutObservable<boolean>;\r\n private _headerColumns: KnockoutObservableArray<HeaderColumn>;\r\n private _disableEditLinkButton: KnockoutObservable<boolean> = ko.observable(false);\r\n private _rows: KnockoutObservableArray<GridRow>;\r\n private _totalRow: KnockoutObservable<GridTotalRow>;\r\n private _countRow: KnockoutObservable<GridCountRow>;\r\n private _averageRow: KnockoutObservable<GridAverageRow>;\r\n private _totalGroupRows: Array<GridTotalRow>;\r\n private _enableFavoritesIfPossible: boolean;\r\n private _averageGroupRows: Array<GridAverageRow>;\r\n private _lockRows: Array<GridRow>;\r\n private _visible: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n private _isEnableSelectRecord: KnockoutObservable<boolean>;\r\n private _isFastFilterEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n private _screenType: string;\r\n private _isNested: boolean;\r\n private _maxRowHeight: KnockoutObservable<string>;\r\n private _columnClassesCollection: KnockoutObservableArray<string>;\r\n private _columnClassesTotalCollection: KnockoutObservableArray<string>;\r\n private _hideLifeStatusToggle: KnockoutObservable<boolean>;\r\n private _hideUnlink: KnockoutObservable<boolean>;\r\n private _hideEdit: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _enableBasket: KnockoutObservable<boolean>;\r\n private _backLinkingButtons: KnockoutObservableArray<any>;\r\n private _isQueryResultGrid: boolean;\r\n public _isPrioritiesDisabled: boolean;\r\n private _form: IForm;\r\n private _gridDataModel: IGetGridDataRequestModel;\r\n public existedColumnAliases: string[];\r\n private _queryExpression: QueryExpressionModel;\r\n private _isView: KnockoutObservable<boolean>;\r\n private _isVisibleFavorites: KnockoutObservable<boolean>;\r\n private _bulkEditRow: KnockoutObservable<GridRow>;\r\n private _uiBlocked: boolean;\r\n private _inlineControls: Array<IControl>;\r\n private _columnWidth: number[] = [];\r\n private _reservedColumnsWidth: number[] = [];\r\n private ToggleAllShownColumns;\r\n private _canShowColumns: boolean = false;\r\n private _canHideColumns: boolean = false;\r\n private _overflowInParentBeforeHidden: string = \"\";\r\n private _rowsReady = false;\r\n private _headerColumnsReady = false;\r\n private _nextNewRow = false;\r\n private _hideCont: number = 0;\r\n private groupColumns: object = {};\r\n private _sortByRelationshipOrder: KnockoutObservable<number>;\r\n private _sortByRelationshipOrderClassName: KnockoutComputed<string>;\r\n private _isEnableSortByRelationShips: KnockoutObservable<boolean>;\r\n private _enableSelectRowCell: boolean;\r\n private _toolbar: Toolbar;\r\n private _preventResize: boolean = false;\r\n private _enableLinkButton: KnockoutObservable<boolean>;\r\n private _enableUnlinkMultipleRecordsButton: KnockoutObservable<boolean>;\r\n\tprivate _enableLinkParentButton: KnockoutObservable<boolean>;\r\n\tprivate _hasOneParent: KnockoutObservable<boolean>;\r\n private _enableAddAndLinkButton: KnockoutObservable<boolean>;\r\n private _enableScanAndLinkButton: KnockoutObservable<boolean>;\r\n private _generalProperties: ConfigModel;\r\n private _tableScrollLeft: number = 0;\r\n private _unlinkedRows: Array<GridRow>;\r\n private _isMultiselect: boolean;\r\n private _waitingForGrid = null;\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _hasSubGrid: KnockoutObservable<boolean>;\r\n private _prevPageNumber: number;\r\n private _baseTemplate: KnockoutObservable<string>;\r\n private _screenRows: KnockoutObservableArray<GridScreenRow>;\r\n public GetBaseTemplateName: KnockoutComputed<string>;\r\n private _isCardScreen: KnockoutObservable<boolean>\r\n public _deletedRows: Array<GridRow>;\r\n private _parentRow: GridRow;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _resizeLimitInterval: number;\r\n private _unBlockCardScreen: KnockoutObservable<boolean>;\r\n private _hasTotalRow: KnockoutObservable<boolean>;\r\n\r\n ShowActionCell: KnockoutComputed<boolean>;\r\n\r\n constructor(options: IBaseGridOptions) {\r\n super();\r\n this._baseTemplate = ko.observable('Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate');\r\n this._prevPageNumber = 1;\r\n this._isAllSelected = ko.observable(false);\r\n this._generalProperties = options.properties;\r\n this._hideLifeStatusToggle = options.hideLifeStatusToggle;\r\n this._hideUnlink = options.hideUnlink;\r\n this._hideEdit = options.hideEdit;\r\n this._isEditable = options.isEditable || ko.observable(null);\r\n this._enableBasket = options.enableBasket || ko.observable(null);\r\n this._enableFavoritesIfPossible = options.enabledFavorite || options.enabledFavorite === undefined;\r\n this._backLinkingButtons = options.backLinkingButtons || ko.observableArray([]);\r\n this._isQueryResultGrid = options.isQueryResultGrid || null;\r\n this._unBlockCardScreen = ko.observable(null);\r\n this._headerColumns = ko.observableArray([]);\r\n this._rows = ko.observableArray([]);\r\n this._screenRows = ko.observableArray([]);\r\n this._isNested = options.isNested || false;\r\n this._maxRowHeight = ko.observable(options.maxRowHeight || '100');\r\n this._isPrioritiesDisabled = options.isPrioritiesDisabled || false;\r\n this._form = options.form;\r\n this._isView = ko.observable(false);\r\n this._isCardScreen = ko.observable(false);\r\n this._isVisibleFavorites = ko.observable(false);\r\n this._bulkEditRow = ko.observable(null);\r\n this._uiBlocked = false;\r\n this._totalRow = ko.observable(null);\r\n this._countRow = ko.observable(null);\r\n this._averageRow = ko.observable(null);\r\n this._hasTotalRow = ko.observable(false);\r\n this._totalGroupRows = [];\r\n this._averageGroupRows = [];\r\n this._lockRows = [];\r\n this._enableSelectRowCell = options.enableSelectRowCell;\r\n this.ToggleAllShownColumns = options.ToggleAllShownColumns || function () {};\r\n this._isEnableSortByRelationShips = ko.observable(false);\r\n this._enableLinkButton = ko.observable(false);\r\n this._enableUnlinkMultipleRecordsButton = ko.observable(false);\r\n\t\tthis._enableLinkParentButton = ko.observable(false);\r\n\t\tthis._hasOneParent = ko.observable(false);\r\n this._enableAddAndLinkButton = ko.observable(false);\r\n this._enableScanAndLinkButton = ko.observable(false);\r\n this._isMultiselect = options.isMultiselect != null ? options.isMultiselect : true;\r\n this._isEditMode = ko.observable(false);\r\n\r\n this._visible = ko.observable(false);\r\n this._isReady = ko.observable(true);\r\n this._unlinkedRows = [];\r\n this._hasSubGrid = ko.observable(false);\r\n\r\n this._isEnableSelectRecord = options.isEnableSelectRecord;\r\n this._screenType = options.screenType;\r\n this._columnClassesCollection = ko.observableArray([]);\r\n this._columnClassesTotalCollection = ko.observableArray([]);\r\n this._inlineControls = [];\r\n this._sortByRelationshipOrder = ko.observable(SortOrder.Both);\r\n this._deletedRows = [];\r\n this._parentRow = options.ParentRow;\r\n\r\n this.InitEvents();\r\n this.GetBaseTemplateName = ko.computed(()=> this._baseTemplate() );\r\n\r\n this._sortByRelationshipOrderClassName = ko.computed({\r\n owner: this,\r\n read: () => {\r\n return this._isEnableSortByRelationShips() ? `sort-${SortOrder[this._sortByRelationshipOrder()].toLowerCase()}` : '';\r\n }\r\n });\r\n\r\n this.ShowActionCell = ko.computed(() => (!this._isView() && this._isEditable()\r\n && (!_.any(this._rows(), row => !row.ShowActionCell()))\r\n || this.HasInlineControls || this._hasSubGrid()\r\n || this._hasTotalRow()\r\n ));\r\n\r\n if (this._isNested) {\r\n this._toolbar = new Toolbar(\r\n false,\r\n false,\r\n this._enableLinkButton,\r\n\t\t\t\tthis._enableUnlinkMultipleRecordsButton,\r\n\t\t\t\tthis._enableLinkParentButton,\r\n this._hasOneParent,\r\n this._enableAddAndLinkButton,\r\n this._enableScanAndLinkButton,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n this._screenType,\r\n false,\r\n false,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n [],\r\n );\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.LINK_RECORD));\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.LINK_PARENT_RECORD));\r\n this._toolbar.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD));\r\n this._toolbar.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, () => this.Trigger(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD));\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.UNLINK_MULTIPLE_RECORDS, this, () => {\r\n this.SubGridUnlinkMultipleRecords();\r\n this._isMultipleUnlinkModeActive(true);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CONFIRM_MULTIPLE_UNLINK, this, () => {\r\n this.UnlinkMultipleRecords();\r\n this.SubGridConfirmMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CANCEL_MULTIPLE_UNLINK, this, () => {\r\n this.SubGridCancelMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs: any) => {\r\n if (eventArgs.data.pageNumber === this._prevPageNumber) {\r\n return;\r\n }\r\n\r\n if (this.GetEditRows().length > 0 || this.GetNewAndLinkRows().length > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Warning\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Trigger(EVENTS.LOAD_SUB_GRID);\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this._toolbar.Paginator().PageNumber = this._prevPageNumber;\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this.Trigger(EVENTS.LOAD_SUB_GRID);\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n }\r\n });\r\n\r\n }\r\n }\r\n\r\n InitEvents(){\r\n this.AddEvent(EVENTS.SORT);\r\n this.AddEvent(EVENTS.OPEN_HYPERLINK);\r\n this.AddEvent(EVENTS.DATA_SAVED);\r\n this.AddEvent(EVENTS.NO_CHANGES);\r\n this.AddEvent(EVENTS.EDIT_LINK);\r\n this.AddEvent(EVENTS.CHANGE_VISIBLE_GROUP);\r\n this.AddEvent(EVENTS.EDIT_CLUSTERED_LINK);\r\n this.AddEvent(EVENTS.ADD_TO_BASKET);\r\n this.AddEvent(EVENTS.REMOVE_FROM_BASKET);\r\n this.AddEvent(EVENTS.SAVE_LIFESTATUS);\r\n this.AddEvent(EVENTS.REFRESH);\r\n this.AddEvent(EVENTS.RECORD_DELETED);\r\n this.AddEvent(EVENTS.RECORD_EDITED);\r\n this.AddEvent(EVENTS.RECORD_SAVED);\r\n this.AddEvent(EVENTS.UNDO_EVERY_RECORD);\r\n this.AddEvent(EVENTS.UPDATE_GRID);\r\n this.AddEvent(EVENTS.LINK_NEXT_RELATION);\r\n this.AddEvent(EVENTS.BACK_LINKING_POPUP_REQUESTED);\r\n this.AddEvent(EVENTS.SELECT_RECORD);\r\n this.AddEvent(EVENTS.UPDATE_SET_ENABLE_ADD_BUTTON);\r\n this.AddEvent(EVENTS.UNLINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_PARENT_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.LOAD_SUB_GRID);\r\n }\r\n\r\n get IsEnabledSelectRecord(): KnockoutObservable<boolean> {\r\n return this._isEnableSelectRecord;\r\n }\r\n\r\n IsAllSelectedChanged() {\r\n if (this._isMultiselect) {\r\n this.SelectAll(this._isAllSelected());\r\n }\r\n return true;\r\n }\r\n\r\n SelectAll(value: boolean) {\r\n this._rows().forEach(row => row.SetIsSelected(value));\r\n }\r\n\r\n UpdateSelection() {\r\n const selectedRowsCount = this._rows().filter(row => row.IsSelected()).length;\r\n const selectAll = selectedRowsCount === this._rows().length;\r\n this._isAllSelected(selectAll);\r\n }\r\n\r\n ClearData() {\r\n this._rows([]);\r\n }\r\n\r\n get Columns() {\r\n return this._headerColumns();\r\n }\r\n\r\n SelectType() {\r\n if (this.HasFTypeColumn() || this._dataModel.QueryExpression.EntityJoins.length === 0) {\r\n this.NewRecord();\r\n return;\r\n }\r\n\r\n const objectEntityId = this._dataModel.QueryExpression.EntityJoins[0].Entity.Metadata.Id;\r\n const parentTypeId = objectEntityId === this._dataModel.QueryExpression.Entity.Metadata.Id ? this._form.GetScreen().GetTableTypeId() : undefined;\r\n\r\n const typeScreen = new TypeScreen(objectEntityId, parentTypeId, false, false);\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.ErrorMessage));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n this.NewRecord(typeId, kindId);\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n NewRecord(typeId = null, kindId: number = null): P.Promise<GridRow> {\r\n let deferredResult = P.defer<GridRow>();\r\n let subjectTable: QueryEntityModel, linkTable: QueryEntityModel, columns: QueryColumnModel[];\r\n\r\n if (this._dataModel.QueryExpression.EntityJoins.length > 0) {\r\n subjectTable = this._dataModel.QueryExpression.EntityJoins[0].Entity;\r\n linkTable = this._dataModel.QueryExpression.EntityJoins[0].LinkEntity;\r\n columns = subjectTable.Columns.concat(linkTable.Columns);\r\n } else if (this._dataModel.QueryExpression.SubEntityJoins.length > 0) {\r\n subjectTable = this._dataModel.QueryExpression.SubEntityJoins[0].Entity;\r\n columns = subjectTable.Columns;\r\n } else{\r\n subjectTable = this._dataModel.QueryExpression.Entity;\r\n }\r\n\r\n\r\n BlockUI.Block();\r\n GridStore.NewRecord({\r\n EntityId: subjectTable.Metadata.Id,\r\n LinkTableId: linkTable && linkTable.Metadata.Id,\r\n ParentRecordId: this._form && this._form.GetScreen().GetRecordId(),\r\n TypeId: typeId,\r\n Fields: columns\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n deferredResult.resolve(this.AddNewRow(result, typeId, kindId));\r\n this.Trigger(EVENTS.UPDATE_SET_ENABLE_ADD_BUTTON);\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n get Rows(): Array<GridRow>{\r\n return this._rows();\r\n }\r\n\r\n AddRow(gridRow: GridRow) {\r\n this._rows.push(gridRow);\r\n }\r\n\r\n AddRowsFrom(gridDataModel: GridDataModel) {\r\n _.each(gridDataModel.Rows, row => {\r\n const newRow = row.Clone();\r\n\r\n _.each(this.Columns, (headerColumn, index) => {\r\n if (!headerColumn) {\r\n const gridCellValueModel = new GridCellValueModel();\r\n\r\n gridCellValueModel.EntityMetadata = headerColumn.Model.EntityMetadata;\r\n gridCellValueModel.FieldMetadata = headerColumn.Model.FieldMetadata;\r\n gridCellValueModel.QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n gridCellValueModel.IsEnableEdit = headerColumn.Model.IsEnableEdit;\r\n newRow.Data.splice(index, 0, gridCellValueModel);\r\n gridCellValueModel.Type = gridCellValueModel.FieldMetadata.Type;\r\n } else {\r\n newRow.Data[index].FieldMetadata = headerColumn.Model.FieldMetadata;\r\n newRow.Data[index].EntityMetadata = headerColumn.Model.EntityMetadata;\r\n newRow.Data[index].QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n }\r\n });\r\n\r\n this.AddNewRow(newRow);\r\n });\r\n }\r\n\r\n AddNewRow(rowData: GridRowModel, typeId = null, kindId: number = null): GridRow {\r\n this._nextNewRow = true;\r\n const gridRowModel = new GridRowModel();\r\n\r\n gridRowModel.TypeId = typeId;\r\n gridRowModel.KindId = kindId;\r\n\r\n this._dataModel.Rows.push(gridRowModel);\r\n\r\n let griSubjectEntity = this.GetGridSubjectEntity();\r\n let typeColumn = _.find(griSubjectEntity.Columns, (item) => {\r\n return item.Metadata.Name === TYPE_FIELD_NAME;\r\n });\r\n\r\n _.each(this._headerColumns(), column => {\r\n let cellData = _.find(rowData.Data, (item) => {\r\n return item.QueryColumnGuid === column.Model.QueryColumnGuid\r\n });\r\n\r\n const cellValueModel = new GridCellValueModel();\r\n cellValueModel.Value = cellData ? cellData.Value : '';\r\n cellValueModel.IsWrapped = false;\r\n cellValueModel.DisplayPriority = column.Model.DisplayPriority;\r\n cellValueModel.DisplayValue = cellData ? cellData.DisplayValue : '';\r\n cellValueModel.IsEnableEdit = typeColumn && typeColumn.Metadata.Id == column.Model.FieldMetadata.Id ? true : column.Model.IsEnableEdit;\r\n cellValueModel.FieldMetadata = column.Model.FieldMetadata;\r\n cellValueModel.EntityMetadata = column.Model.EntityMetadata;\r\n cellValueModel.QueryColumnGuid = column.Model.QueryColumnGuid;\r\n cellValueModel.Type = column.Model.FieldMetadata.Type;\r\n gridRowModel.Data.push(cellValueModel);\r\n\r\n if (column.Model.FieldMetadata.Name === TYPE_FIELD_NAME) {\r\n column.Model.FieldMetadata.IsReadOnly = false;\r\n }\r\n\r\n });\r\n\r\n const row = new GridRow(\r\n gridRowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n ko.observable(false),\r\n this._screenType,\r\n false,\r\n this._dataModel.QueryExpression,\r\n true,\r\n this._isVisibleFavorites(),\r\n this._maxRowHeight,\r\n this._form,\r\n this.GetInlineControls(),\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n false,\r\n false,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n row.On(EVENTS.ROW_SELECTION_CHANGED, this, (eventArgs: any) => {\r\n if (!this._isMultiselect) {\r\n _.each(this._rows(), (item) => {\r\n if (item != row) {\r\n item.SetIsSelected(false);\r\n }\r\n });\r\n }\r\n\r\n this.UpdateSelection();\r\n });\r\n row.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => {\r\n row.IsEditMode = true;\r\n this._isEditMode(true);\r\n this.Trigger(EVENTS.RECORD_EDITED);\r\n });\r\n\r\n row.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n if (eventArgs.source.State === States.New && !this._isEditMode()) {\r\n this._rows.splice(this._rows.indexOf(eventArgs.source), 1);\r\n this._dataModel.Rows.splice(this._dataModel.Rows.indexOf(row.Model), 1);\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n } else {\r\n eventArgs.source.IsEditMode = false;\r\n }\r\n });\r\n\r\n row.On(EVENTS.DELETE_RECORD, this, (eventArgs: any) => {\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._dataModel.Rows.splice(this._dataModel.Rows.indexOf(row.Model), 1);\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n });\r\n\r\n row.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n row.IsEditMode = false;\r\n this.Trigger(EVENTS.RECORD_SAVED);\r\n this.ResizeTableCellsAfterRender();\r\n });\r\n\r\n row.On(EVENTS.REFRESH, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REFRESH, {SubGrid: eventArgs.data.SubGrid, ParentRowId: eventArgs.data.ParentRowId, UpdateRow: eventArgs.data.UpdateRow});\r\n\r\n });\r\n row.On(EVENTS.ADD_TO_BASKET, this, (eventArgs: any) => this.AddToBasket(eventArgs.data.Row));\r\n row.On(EVENTS.REMOVE_FROM_BASKET, this, (eventArgs: any) => this.RemoveFromBasket(eventArgs.data.Row));\r\n\r\n row.IsEditMode = true;\r\n row.State = States.New;\r\n\r\n if (_.find(row.DataCells, (item) => item.IsEnableEdit()) != null) {\r\n this._rows.unshift(row);\r\n return row;\r\n } else {\r\n var notifier = new Notifier(this._el);\r\n notifier.Warning(NOTIFICATIONS.NO_EDITABLE_COLUMNS);\r\n }\r\n\r\n return row;\r\n }\r\n\r\n get NewRows(): number {\r\n let newRows = _.filter(this._rows(), (row)=> row.State === States.New);\r\n return newRows.length;\r\n }\r\n\r\n GetBulkEditRow(): GridRow {\r\n const gridRowModel = new GridRowModel();\r\n\r\n _.each(this._headerColumns(), column => {\r\n const cellValueModel = new GridCellValueModel();\r\n cellValueModel.Value = '';\r\n cellValueModel.IsWrapped = column.Model.IsWrapped;\r\n cellValueModel.DisplayPriority = column.Model.DisplayPriority;\r\n cellValueModel.DisplayValue = '';\r\n cellValueModel.IsEnableEdit = column.Model.IsEnableEdit && column.Model.FieldMetadata.Type === FIELD_TYPES.Lookup;\r\n cellValueModel.FieldMetadata = column.Model.FieldMetadata;\r\n cellValueModel.FieldMetadata.IsRequired = false;\r\n cellValueModel.EntityMetadata = column.Model.EntityMetadata;\r\n cellValueModel.QueryColumnGuid = column.Model.QueryColumnGuid;\r\n cellValueModel.Type = column.Model.FieldMetadata.Type;\r\n cellValueModel.width = column.Model.width;\r\n\r\n gridRowModel.Data.push(cellValueModel);\r\n\r\n if (column.Model.FieldMetadata.Name === TYPE_FIELD_NAME) {\r\n column.Model.FieldMetadata.IsReadOnly = false;\r\n cellValueModel.IsEnableEdit = false;\r\n }\r\n\r\n });\r\n\r\n const row = new GridRow(\r\n gridRowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._isEnableSelectRecord,\r\n this._screenType,\r\n false,\r\n this._dataModel.QueryExpression,\r\n true,\r\n !this._isNested,\r\n this._maxRowHeight,\r\n this._form,\r\n this.GetBulkEditControls(),\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n false,\r\n false,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n row.IsEditMode = true;\r\n row.State = States.Edit;\r\n\r\n if (_.find(row.DataCells, (item) => item.IsEnableEdit()) != null) {\r\n return row;\r\n } else {\r\n var notifier = new Notifier(this._el);\r\n notifier.Warning(NOTIFICATIONS.NO_EDITABLE_COLUMNS);\r\n }\r\n }\r\n\r\n AddLinkedRows(data: GridDataModel): Array<GridRow> {\r\n let result: Array<GridRow> = [];\r\n this._disableEditLinkButton(!data.IsLinkEditorEnabled);\r\n this._nextNewRow = true;\r\n const inlineControls = this.GetInlineControls();\r\n\r\n _.each(data.Rows, rowModel => {\r\n _.each(this._headerColumns(), (headerColumn, index) => {\r\n const headerColumnModel = _.find(data.Columns, column => column.DisplayOrder === headerColumn.DisplayOrder);\r\n\r\n if (!headerColumnModel) {\r\n const gridCellValueModel = new GridCellValueModel();\r\n\r\n gridCellValueModel.EntityMetadata = headerColumn.Model.EntityMetadata;\r\n gridCellValueModel.FieldMetadata = headerColumn.Model.FieldMetadata;\r\n gridCellValueModel.QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n gridCellValueModel.IsEnableEdit = headerColumn.Model.IsEnableEdit;\r\n rowModel.Data.splice(index, 0, gridCellValueModel);\r\n gridCellValueModel.Type = gridCellValueModel.FieldMetadata.Type;\r\n } else {\r\n rowModel.Data[index].FieldMetadata = headerColumn.Model.FieldMetadata;\r\n rowModel.Data[index].EntityMetadata = headerColumn.Model.EntityMetadata;\r\n rowModel.Data[index].QueryColumnGuid = headerColumn.Model.QueryColumnGuid;\r\n }\r\n });\r\n\r\n const row = new GridRow(\r\n rowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._isEnableSelectRecord,\r\n this._screenType,\r\n true,\r\n data.QueryExpression,\r\n false,\r\n !this._isNested && this._isVisibleFavorites(),\r\n this._maxRowHeight,\r\n this._form,\r\n inlineControls,\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n false,\r\n false,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n row.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, _.extend(eventArgs.data, {\r\n CurrentRow: row,\r\n RowList: data.Rows\r\n }));\r\n });\r\n\r\n row.On(EVENTS.UNLINK_RECORD, this, (eventArgs: any) => {\r\n if (this._queryExpression.IsCrossTable) {\r\n this.ShowCrossTableDetail(eventArgs.source).then((selectedRow) => {\r\n this.ConfirmUnlink(selectedRow);\r\n });\r\n } else {\r\n this.ConfirmUnlink(eventArgs.source);\r\n }\r\n });\r\n\r\n row.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => row.IsEditMode = true);\r\n row.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => row.IsEditMode = false);\r\n\r\n row.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n if (eventArgs.source.State === States.Link) {\r\n row.State = States.LinkAndEdit;\r\n } else {\r\n row.State = States.Edit;\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n LockManager.Instance.ReleaseLock(row.EntityId, row.RecordId);\r\n row.IsEditMode = false;\r\n }\r\n });\r\n\r\n result.push(row);\r\n row.State = States.Link;\r\n this._rows.unshift(row);\r\n });\r\n return result;\r\n }\r\n\r\n ClickOnFilterButton(headerColumn: HeaderColumn) {\r\n this.Trigger(EVENTS.UPDATE_GRID);\r\n }\r\n\r\n get CrossTableValueColumn(): QueryColumnModel{\r\n return _.find(Util.GetAllQueryColumns(this._queryExpression), col=>col.IsCrossValue);\r\n }\r\n\r\n ShowCrossTableDetail(gridRow: GridRow): P.Promise<GridRow> {\r\n let deferredResult = P.defer<GridRow>();\r\n BlockUI.Block();\r\n GridStore.GetCrossTableDetail({\r\n SubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n SubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n RelatedEntityId: gridRow.Model.EntityId,\r\n RelatedRecordId: gridRow.Model.RecordId,\r\n KSeqs: gridRow.Model.KSeqs,\r\n DisplayFields: this.CrossTableValueColumn?.DisplayFields\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n let pivotDetailsDropDown = new PivotDetailsDropdown();\r\n pivotDetailsDropDown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n let row = eventArgs.data.SelectedRecord as GridRow;\r\n pivotDetailsDropDown.Close();\r\n deferredResult.resolve(row);\r\n }\r\n });\r\n\r\n pivotDetailsDropDown.On(EVENTS.REFRESH, this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n pivotDetailsDropDown.SetData(result);\r\n\r\n if(pivotDetailsDropDown.Rows.length == 1){\r\n deferredResult.resolve(pivotDetailsDropDown.Rows[0]);\r\n return;\r\n }\r\n\r\n pivotDetailsDropDown.Show(gridRow.El);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n get FilterSaveModels(): FastFilterSaveModel[] {\r\n let result = [];\r\n\r\n this._headerColumns().forEach((item, index) => {\r\n if (item.FilterSaveModel) {\r\n result.push(item.FilterSaveModel);\r\n }\r\n });\r\n\r\n return result || [];\r\n }\r\n\r\n SetRecordsPerPage(recordsPerPage: number){\r\n if(this._isNested){\r\n this._toolbar.Paginator().RecordsPerPage = recordsPerPage;\r\n }\r\n }\r\n\r\n SetData(\r\n data: GridDataModel,\r\n restoreSortState?: boolean,\r\n isPrioritiesDisabled?: boolean, \r\n tableViewId?: number,\r\n inlineControls: Array<IControl> = [],\r\n updateRow?: GridRow\r\n ){\r\n if(this._toolbar){\r\n this._toolbar.Paginator().TotalRecords = data.TotalRecords;\r\n }\r\n if(data.ScreenRows.length > 0){\r\n this._isCardScreen(true);\r\n BlockUI.Block({Target: this._el});\r\n this.SetScreenRowData(data)\r\n .then(()=> {\r\n BlockUI.Unblock(this._el);\r\n });\r\n }else{\r\n this._isCardScreen(false);\r\n this.SetDefaultRowData(data, restoreSortState, isPrioritiesDisabled, tableViewId, inlineControls, updateRow);\r\n }\r\n }\r\n\r\n async SetScreenRowData(data: GridDataModel){\r\n this._baseTemplate('Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate');\r\n this._screenRows([]);\r\n const screenFactory = (await import('Core/Screens/ScreenFactory')).ScreenFactory;\r\n let batchIndex = 0;\r\n let loadPromise = [];\r\n for (const screenModel of data.ScreenRows) { \r\n let recordId = screenModel.Data.RecordId;\r\n screenModel.Data = null;\r\n let screen = screenFactory.GetScreenInstance(screenModel);\r\n let screenRow = new GridScreenRow(screen, this._form, recordId);\r\n\r\n loadPromise.push(screenRow.LoadScreenData());\r\n if(batchIndex >= 5){\r\n await Promise.all(loadPromise);\r\n batchIndex = 0;\r\n loadPromise = [];\r\n }\r\n\r\n this._screenRows.push(screenRow);\r\n batchIndex++;\r\n }\r\n }\r\n\r\n get IsEnableLink(): boolean {\r\n return this._generalProperties \r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGRID_LINK)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get IsEnableUnlinkMultiple(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_UNLINK_MULTIPLE_RECORDS_SUBGRID)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n \r\n get IsEnableAddAndLink(): boolean { \r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGID_ADD_AND_LINK)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get IsEnabledScanAndLink(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGRID_SCAN_AND_LINK)\r\n && this._screenType != ScreenTypes[ScreenTypes.Portlet]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get IsEnableLinkParent(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.ENABLE_SUBGRID_LINK_PARENT)\r\n && this._dataModel.GridSubjectEntityId === this._dataModel.GridParentEntityId\r\n && this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]\r\n && this._dataModel.GridSubjectEntityType === TABLE_TYPES.Entity;\r\n }\r\n\r\n get HasProcessCards(): boolean {\r\n return this._generalProperties\r\n && this._generalProperties.GetPropertyValue(PROPERTIES.PROCESS_CARDS)\r\n }\r\n\r\n\r\n get IsEnableEdit(): boolean {\r\n if (this._dataModel.GridSubjectEntityMetadata.IsView) {\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] || this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.Portlet]) {\r\n return this.HasProcessCards;\r\n }\r\n return true;\r\n }\r\n\r\n private InitLinkButtons(){\r\n this._enableLinkButton(this._dataModel.IsLinkingAllowed && this.IsEnableLink);\r\n this._enableAddAndLinkButton(this._dataModel.IsAddAndLinkAllowed && this.IsEnableAddAndLink);\r\n this._enableLinkButton(this._dataModel.IsLinkingAllowed && this.IsEnableLink);\r\n this._enableUnlinkMultipleRecordsButton(this.IsEnableUnlinkMultiple && this._dataModel.IsLinkJoin);\r\n this._enableAddAndLinkButton(this._dataModel.IsAddAndLinkAllowed && this.IsEnableAddAndLink);\r\n this._enableScanAndLinkButton(this._dataModel.IsLinkingAllowed && this._dataModel.IsScanAndLinkAllowed && this.IsEnabledScanAndLink);\r\n\t\tthis._enableLinkParentButton(this._dataModel.IsLinkingAllowed && this.IsEnableLinkParent);\r\n\t\tthis._hasOneParent(this._dataModel.HasOneParent);\r\n this._disableEditLinkButton(!this._dataModel.IsLinkEditorEnabled);\r\n }\r\n\r\n private InitHeaderColumns(tableViewId: number, restoreSortState: boolean){\r\n let headerColumns = [];\r\n _.each(this._dataModel.Columns, (columnModel, index) => {\r\n const queryEntity = this.GetEntityByColumnGuid(columnModel.QueryColumnGuid, this._queryExpression);\r\n\r\n const queryColumn = _.find(queryEntity.Columns, (column) => {\r\n return column.Guid === columnModel.QueryColumnGuid;\r\n });\r\n\r\n columnModel.EntityMetadata = queryEntity.Metadata;\r\n columnModel.FieldMetadata = queryColumn.Metadata;\r\n if (columnModel.IsGroup) {\r\n this.groupColumns[columnModel.QueryColumnGuid] = new GroupColumn(columnModel);\r\n } else {\r\n const headerColumn =\r\n new HeaderColumn(columnModel, this._dataModel.SubjectRecordId, tableViewId, this._gridDataModel, this.existedColumnAliases);\r\n \r\n headerColumn.IsFastFilterEnabled = this._isFastFilterEnabled();\r\n const oldHeader = _.find(this._headerColumns(),\r\n (item) => { return item.Model.Alias === columnModel.Alias });\r\n \r\n if (oldHeader) {\r\n if (restoreSortState) {\r\n headerColumn.SortOrder = oldHeader.SortOrder;\r\n }\r\n }\r\n\r\n headerColumn.On(EVENTS.SORT, this, (eventArgs: any) => {\r\n this._sortByRelationshipOrder(SortOrder.Both);\r\n this.ResetSort(eventArgs.source);\r\n var sortColumns = [];\r\n _.each(this.Columns, (column) => {\r\n if (column.IsEnableSort) {\r\n sortColumns.push(column.GetSortModel());\r\n }\r\n });\r\n\r\n this.Trigger(EVENTS.SORT, {SortColumns: sortColumns});\r\n });\r\n\r\n headerColumn.On(EVENTS.FAST_FILTER, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.UPDATE_GRID, {updateFromFastFilters: true});\r\n });\r\n\r\n headerColumns.push(headerColumn);\r\n }\r\n });\r\n return headerColumns;\r\n }\r\n\r\n SetDefaultRowData(\r\n data: GridDataModel,\r\n restoreSortState?: boolean,\r\n isPrioritiesDisabled?: boolean, \r\n tableViewId?: number,\r\n inlineControls: Array<IControl> = [],\r\n updateRow?: GridRow \r\n ) {\r\n this._baseTemplate('Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate');\r\n\r\n if(this._isNested){\r\n this._toolbar.Paginator().TotalRecords = data.TotalRecords;\r\n }\r\n if(this._dataModel?.GridParentEntityId){\r\n data.GridParentEntityId = this._dataModel.GridParentEntityId;\r\n }\r\n\r\n this._tableScrollLeft = 0;\r\n this._isAllSelected(false);\r\n this._inlineControls = inlineControls;\r\n this._dataModel = data;\r\n this._tableViewId = tableViewId;\r\n this._isPrioritiesDisabled = isPrioritiesDisabled;\r\n this._queryExpression = data.QueryExpression;\r\n\r\n let hasAnySubgrid = data.Rows.length > 0 ? data.Rows[0].NestedData.length > 0 : false;\r\n this._hasSubGrid(hasAnySubgrid);\r\n \r\n this.SetIsEnableSortByRelationships();\r\n\r\n this.InitLinkButtons();\r\n const linkedRows = _.filter(this._rows(), row => row.State === States.Link);\r\n const rows = ko.observableArray(linkedRows);\r\n \r\n if(!updateRow){\r\n this._rows([]);\r\n }\r\n \r\n this._isEditable(this.IsEnableEdit);\r\n\r\n this.existedColumnAliases = data.Columns.map((column) => column.Alias);\r\n const headerColumns = this.InitHeaderColumns(tableViewId, restoreSortState);\r\n\r\n this._isVisibleFavorites(this.IsVisibleFavorite());\r\n\r\n if (this._isNested) {\r\n this._toolbar.SetGridSubjectEntityMetadata(this.DataModel.GridSubjectEntityMetadata);\r\n }\r\n\r\n if (data.Rows.length > 0) {\r\n const IsGroupMode: boolean = _.some(data.Rows,(gridRow: GridRowModel) => !!gridRow.IsGroup);\r\n\r\n _.each(data.Rows, (rowModel) => {\r\n\r\n _.each(rowModel.Data, (cell) => {\r\n const groupedColumn = this.groupColumns[cell.QueryColumnGuid];\r\n let column;\r\n if (groupedColumn) {\r\n column = groupedColumn.Model;\r\n } else {\r\n column = data.Columns.find(i => i.QueryColumnGuid === cell.QueryColumnGuid)\r\n }\r\n if (column) {\r\n const {FieldMetadata, EntityMetadata, SortDirection} = column;\r\n cell.FieldMetadata = FieldMetadata;\r\n cell.EntityMetadata = EntityMetadata;\r\n cell.SortDirection = SortDirection;\r\n }\r\n\r\n _.each(cell.CrossWrapped, (crossWrappedCell) =>{\r\n const queryEntity = this.GetEntityByColumnGuid(crossWrappedCell.QueryColumnGuid, data.QueryExpression);\r\n\r\n const queryColumn = _.find(queryEntity.Columns, (column) => {\r\n return column.Guid === crossWrappedCell.QueryColumnGuid;\r\n });\r\n crossWrappedCell.FieldMetadata = queryColumn.Metadata;\r\n crossWrappedCell.EntityMetadata = queryEntity.Metadata;\r\n });\r\n\r\n });\r\n\r\n let rowEntity = _.find(Util.GetAllQueryEntities(data.QueryExpression), (item) => item.Metadata.Id == rowModel.EntityId);\r\n\r\n let isVisibleButtons = rowEntity.Metadata.Type !== TABLE_TYPES.Sub;\r\n \r\n const row = new GridRow(\r\n rowModel,\r\n this._isEditable,\r\n this._hideLifeStatusToggle,\r\n this._hideUnlink,\r\n this._hideEdit,\r\n this._enableBasket,\r\n this._disableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._isEnableSelectRecord,\r\n this._screenType,\r\n isVisibleButtons,\r\n this._dataModel.QueryExpression,\r\n false,\r\n this._isVisibleFavorites(),\r\n this._maxRowHeight,\r\n this._form,\r\n this.GetInlineControls(),\r\n this._enableSelectRowCell,\r\n this._generalProperties,\r\n this.IsSubGrid,\r\n IsGroupMode,\r\n data.IsLinkJoin,\r\n this.HasProcessCards,\r\n this._hasTotalRow\r\n );\r\n\r\n if (row.HasGroupColumn) {\r\n row.GroupedData = this.GetGroupedData(row.DataCells);\r\n }\r\n\r\n rows.push(row);\r\n\r\n row.On(EVENTS.ROW_SELECTION_CHANGED, this, (eventArgs: any) => {\r\n if (!this._isMultiselect) {\r\n _.each(this._rows(), (item) => {\r\n if (item != row) {\r\n item.SetIsSelected(false);\r\n }\r\n });\r\n }\r\n this.UpdateSelection();\r\n });\r\n row.On(EVENTS.SELECT_RECORD, this, (eventArgs: any) => this.Trigger(EVENTS.SELECT_RECORD, {Row: eventArgs.data.Row}));\r\n\r\n row.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.RECORD_EDITED);\r\n if (!row.IsNewRecord && !this.IsSubEntity && this._lockRows.indexOf(row) === -1) {\r\n LockManager.Instance.TryLock(row.Model.EntityId, row.Model.RecordId)\r\n .then(() => {\r\n row.IsEditMode = true;\r\n this._lockRows.push(row);\r\n this.ResizeTableCellsAfterRender();\r\n })\r\n .fail(() => {\r\n row.IsEditMode = false;\r\n });\r\n } else {\r\n row.IsEditMode = true;\r\n BlockUI.Block({Target: this._el});\r\n setTimeout(() => {\r\n this.ResizeTableCellsAfterRender();\r\n }, 1000);\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ListScreen] || this._screenType === ScreenTypes[ScreenTypes.SpecialScreen]) {\r\n rows().forEach((x) => {\r\n if (x !== row) {\r\n x.IsEditMode = false;\r\n }\r\n });\r\n }\r\n });\r\n\r\n row.On(EVENTS.REFRESH, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.REFRESH, { SubGrid: eventArgs.data.SubGrid, ParentRowId: eventArgs.data.ParentRowId, UpdateRow: eventArgs.data.UpdateRow });\r\n });\r\n\r\n row.On(EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_LINK, eventArgs.data);\r\n });\r\n\r\n row.On(EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: eventArgs.data.grid });\r\n });\r\n\r\n row.On(EVENTS.LINK_NEXT_RELATION, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.LINK_NEXT_RELATION, { gridRow: eventArgs.source, field: eventArgs.data.field });\r\n });\r\n\r\n row.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n eventArgs.source.IsEditMode = false;\r\n const index = this._lockRows.indexOf(row);\r\n if (index > -1) {\r\n this._lockRows.splice(index, 1);\r\n }\r\n \r\n if (rows().every(row => row.IsEditMode === false)) {\r\n this.Trigger(EVENTS.UNDO_EVERY_RECORD);\r\n };\r\n\r\n this.Resize();\r\n });\r\n\r\n row.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n eventArgs.source.State = States.Edit;\r\n if (this._screenType !== ScreenTypes[ScreenTypes.EditScreen]) {\r\n this.SaveRecord(eventArgs.source).then(() => {\r\n LockManager.Instance.ReleaseLock(row.EntityId, row.RecordId);\r\n row.IsEditMode = false;\r\n });\r\n } else {\r\n row.IsEditMode = false;\r\n if (rows().every(row => row.IsEditMode === false)) {\r\n this.Trigger(EVENTS.UNDO_EVERY_RECORD);\r\n };\r\n }\r\n });\r\n\r\n\r\n row.On(TOOLBAR_EVENTS.LINK_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.LINK_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.LINK_PARENT_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, eventArgs.data);\r\n });\r\n\r\n row.On(EVENTS.SAVE_LIFESTATUS, this, (eventArgs: any) => {\r\n this.SaveLifestatus(eventArgs.source);\r\n });\r\n\r\n row.On(EVENTS.DELETE_RECORD, this, (eventArgs: any) => {\r\n const confirmationDialog =\r\n new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.DeleteRecord(eventArgs.source));\r\n\r\n confirmationDialog.Show();\r\n });\r\n\r\n row.On(EVENTS.UNLINK_RECORD, this, (eventArgs: any) => { \r\n if (this._queryExpression.IsCrossTable) {\r\n this.ShowCrossTableDetail(eventArgs.source).then((selectedRow) => {\r\n this.ConfirmUnlink(selectedRow);\r\n });\r\n } else {\r\n this.ConfirmUnlink(eventArgs.source);\r\n }\r\n });\r\n\r\n\r\n row.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, _.extend(eventArgs.data, {\r\n CurrentRow: row,\r\n RowList: data.Rows\r\n }));\r\n });\r\n\r\n row.On(EVENTS.ADD_TO_BASKET, this, (eventArgs: any) => this.AddToBasket(eventArgs.data.Row));\r\n row.On(EVENTS.REMOVE_FROM_BASKET, this, (eventArgs: any) => this.RemoveFromBasket(eventArgs.data.Row));\r\n\r\n row.On(EVENTS.MOVE_ROW_UP, this, (eventArgs) => {\r\n this.MoveRowUp(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.MOVE_ROW_DOWN, this, (eventArgs) => {\r\n this.MoveRowDown(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.HOVER_SORT, this, (eventArgs) => {\r\n this.HoverSort(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.UN_HOVER_SORT, this, (eventArgs) => {\r\n this.UnHoverSort(row, eventArgs.data.SortCell);\r\n });\r\n\r\n row.On(EVENTS.BACK_LINKING_POPUP_REQUESTED, this, eventArgs => {\r\n this.Trigger(EVENTS.BACK_LINKING_POPUP_REQUESTED, eventArgs.data);\r\n });\r\n\r\n row.On(EVENTS.SHOW_ORIGINAL_IMAGE, this, eventArgs => {\r\n this.ShowOriginalImage(eventArgs.data.dataCell);\r\n });\r\n\r\n row.On(EVENTS.RECORD_DELETED, this, () => {\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n });\r\n\r\n row.On(EVENTS.LOAD_SUB_GRID, this, (eventArgs)=>{\r\n this.Trigger(EVENTS.LOAD_SUB_GRID, { SubGrid: eventArgs.data.SubGrid, ParentRowId: eventArgs.data.ParentRowId });\r\n });\r\n\r\n row.On(EVENTS.CHANGE_VISIBLE_GROUP, this, (eventArgs: any) => {\r\n let currentGroupRow: GroupedDataItem = eventArgs.source._groupedData[0];\r\n let isGroupActive: boolean = eventArgs.data.GroupActive;\r\n\r\n this.ChangeVisibleGroup(currentGroupRow, isGroupActive);\r\n this.Trigger(EVENTS.CHANGE_VISIBLE_GROUP, { gridRow: eventArgs.source });\r\n });\r\n\r\n });\r\n\r\n this._totalRow(\r\n new GridTotalRow(\r\n data.TotalRow,\r\n this._isVisibleFavorites(),\r\n this._isEnableSelectRecord,\r\n data.Columns\r\n )\r\n );\r\n\r\n this._countRow(\r\n new GridCountRow(\r\n data.CountRow,\r\n this._isVisibleFavorites(),\r\n this._isEnableSelectRecord,\r\n data.Columns\r\n )\r\n );\r\n\r\n this._averageRow(new GridAverageRow(data.AverageRow, this._isEnableSelectRecord, data.Columns));\r\n\r\n this._hasTotalRow(this._totalRow().HasData || this._countRow().HasData || this._averageRow().HasData);\r\n\r\n this._totalGroupRows = [];\r\n this._averageGroupRows = [];\r\n\r\n _.each(data.TotalGroupRows, (item) => {\r\n this._totalGroupRows.push(\r\n new GridTotalRow(item, !this._isNested && !this._isView(), this._isEnableSelectRecord, data.Columns)\r\n );\r\n });\r\n\r\n _.each(data.AverageGroupRows, (item) => {\r\n this._averageGroupRows.push(new GridAverageRow(item, this._isEnableSelectRecord, data.Columns));\r\n });\r\n\r\n if(updateRow){\r\n this._rows[this._rows.indexOf(updateRow)] = rows[0];\r\n }else{\r\n this._rows(rows().map(row => {\r\n row.IsEditMode = false;\r\n return row;\r\n })); \r\n }\r\n } else {\r\n this.ClearData();\r\n }\r\n\r\n this.CreateColumnWidthParameters(headerColumns);\r\n this.CreateColumnTotalWidthParameters(headerColumns);\r\n this._headerColumns(headerColumns);\r\n\r\n this._isReady(true);\r\n }\r\n\r\n ChangeVisibleGroup(currentGroupRow: GroupedDataItem, isGroupActive: boolean):void {\r\n const AllRows: GridRow[] = this._rows();\r\n let allGridRowGroups: GridRow[] = _.filter(AllRows,(gridRow: GridRow) => !!gridRow.GroupedData);\r\n let indexesOfFilteredRowGroups: number[] = _.map(allGridRowGroups, (filteredGroup: GridRow) => _.findIndex(AllRows, row => row.Guid === filteredGroup.Guid));\r\n\r\n let indexOfCurrentGroupRow: number = _.findIndex(AllRows,(gridRow: GridRow) => gridRow.GroupedData && gridRow.GroupedData[0].Value === currentGroupRow.Value);\r\n let nextGroupIndex: number = this.FindNextGreaterNumber(indexesOfFilteredRowGroups, indexOfCurrentGroupRow);\r\n let endIndex: number = nextGroupIndex ? nextGroupIndex : AllRows.length;\r\n\r\n const GroupRows: GridRow[] = AllRows.slice(indexOfCurrentGroupRow + 1, endIndex);\r\n _.each(GroupRows, (row: GridRow)=> {\r\n row.GroupVisible = isGroupActive;\r\n let activeTotalRow: GridTotalRow = _.find(this._totalGroupRows, (gridTotalRow: GridTotalRow)=> gridTotalRow.Guid === row.GroupGuid);\r\n if (activeTotalRow) {\r\n activeTotalRow.IsGroupActive = isGroupActive\r\n }\r\n\r\n if (row.CrossTableWrapped.length) {\r\n _.each(row.CrossTableWrapped, (crossRow: GridRow) => {\r\n crossRow.GroupVisible = isGroupActive\r\n });\r\n }\r\n })\r\n\r\n if (isGroupActive){\r\n this.ResizeTableCellsAfterRender();\r\n }\r\n }\r\n\r\n FindNextGreaterNumber(array: number[], target: number) {\r\n const nextGreaterNumber = _.find(array, number => number > target);\r\n return nextGreaterNumber !== undefined ? nextGreaterNumber : null;\r\n }\r\n\r\n get IsSubEntity(): boolean {\r\n return this._dataModel.QueryExpression.SubEntityJoins.length > 0;\r\n }\r\n\r\n get IsSubGrid(){\r\n return !!this._parentRow;\r\n }\r\n\r\n GridUnlinkMultipleRecords() {\r\n _.each(this._rows(), row => {\r\n row.GridUnlinkMultipleRecords();\r\n })\r\n }\r\n\r\n GridConfirmMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.GridConfirmMultipleUnlinking();\r\n })\r\n }\r\n\r\n GridCancelMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.GridCancelMultipleUnlinking();\r\n })\r\n }\r\n\r\n SubGridUnlinkMultipleRecords() {\r\n _.each(this._rows(), row => {\r\n row.SubGridUnlinkMultipleRecords();\r\n })\r\n }\r\n\r\n SubGridConfirmMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.SubGridConfirmMultipleUnlinking();\r\n })\r\n }\r\n\r\n SubGridCancelMultipleUnlinking() {\r\n _.each(this._rows(), row => {\r\n row.SubGridCancelMultipleUnlinking();\r\n })\r\n }\r\n\r\n ConfirmUnlink(row: GridRow){\r\n const confirmationDialog =\r\n new ConfirmationDialog({\r\n Text: CONFIRMATIONS.UNLINK_RECORD,\r\n Type: ConfirmationTypes.Question\r\n });\r\n \r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.UnlinkRecord(row)\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n SetIsEnableSortByRelationships() {\r\n let isEnableSortByRelationShips = this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]\r\n && this._queryExpression.EntityJoins.length > 0\r\n && this._queryExpression.EntityJoins[0].Entity.Metadata.Id === this._queryExpression.Entity.Metadata.Id;\r\n this._isEnableSortByRelationShips(isEnableSortByRelationShips);\r\n }\r\n\r\n private GetSortRows(sortRow: GridRow, sortCell: DataCell): Array<GridRow>{\r\n let rows = [];\r\n let index = sortRow.DataCells.indexOf(sortCell);\r\n\r\n _.each(this._rows(),(row)=>{\r\n let cell = row.DataCells[index];\r\n let isSameRecord = true;\r\n _.each(cell.Model.RecordKeys,(key, index)=>{\r\n if(sortCell.Model.RecordKeys[index].RecordId != key.RecordId){\r\n isSameRecord = false;\r\n }\r\n }); \r\n if(isSameRecord){\r\n rows.push(row);\r\n }\r\n });\r\n return rows;\r\n }\r\n\r\n private HoverSort(row: GridRow, sortCell: DataCell){\r\n let sortRows = this.GetSortRows(row, sortCell);\r\n if(sortRows.length > 1){\r\n _.each(sortRows, (row)=>{\r\n row.HighlightSort();\r\n }); \r\n }\r\n }\r\n\r\n private UnHoverSort(row: GridRow, sortCell: DataCell){\r\n let sortRows = this.GetSortRows(row, sortCell);\r\n _.each(sortRows, (row)=>{\r\n row.UnHighlightSort();\r\n });\r\n }\r\n\r\n private MoveRowUp(row: GridRow, upSortCell: DataCell) {\r\n let upSortRows = this.GetSortRows(row, upSortCell);\r\n let upSortCellIndex = row.DataCells.indexOf(upSortCell);\r\n let i = this._rows.indexOf(_.first(upSortRows));\r\n\r\n if (i > 0) {\r\n let rawRows = this._rows();\r\n let upRow = _.last(upSortRows);\r\n\r\n let downRow = rawRows[i - 1];\r\n let downSortCell = downRow.DataCells[upSortCellIndex]; \r\n let downSortRows = this.GetSortRows(downRow, downSortCell);\r\n\r\n if(downSortRows.length > 1){\r\n downRow = _.first(downSortRows);\r\n downSortCell = downRow.DataCells[upSortCellIndex]; \r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n BlockUI.Block({ Target: this._el });\r\n this.UpdateSort(downSortCell, upSortCell.Model.Value, upSortCell, downSortCell.Model.Value)\r\n .always(()=>BlockUI.Unblock(this._el))\r\n .then(() => {\r\n let sortValue = upSortCell.Model.Value;\r\n upSortCell.Model.Value = downSortCell.Model.Value;\r\n downSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n });\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n upRow.State = States.Edit;\r\n downRow.State = States.Edit;\r\n let sortValue = upSortCell.Model.Value;\r\n upSortCell.Model.Value = downSortCell.Model.Value;\r\n downSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n }\r\n }\r\n }\r\n\r\n private MoveRowDown(row: GridRow, downSortCell: DataCell) {\r\n let downSortRows = this.GetSortRows(row, downSortCell);\r\n let downSortCellIndex = row.DataCells.indexOf(downSortCell);\r\n let i = this._rows.indexOf(_.last(downSortRows));\r\n\r\n if (i < this._rows().length - 1) {\r\n let rawRows = this._rows();\r\n let downRow = _.first(downSortRows);\r\n let upRow = rawRows[i + 1]; \r\n let upSortCell = upRow.DataCells[downSortCellIndex];\r\n\r\n let upSortRows = this.GetSortRows(upRow, upSortCell);\r\n\r\n if(upSortRows.length > 1){\r\n upRow = _.last(upSortRows);\r\n upSortCell = upRow.DataCells[downSortCellIndex]; \r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n BlockUI.Block({ Target: this._el });\r\n this.UpdateSort(downSortCell, upSortCell.Model.Value, upSortCell, downSortCell.Model.Value)\r\n .always(()=>BlockUI.Unblock(this._el))\r\n .then(() => {\r\n let sortValue = downSortCell.Model.Value;\r\n downSortCell.Model.Value = upSortCell.Model.Value;\r\n upSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n });\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n upRow.State = States.Edit;\r\n downRow.State = States.Edit;\r\n let sortValue = downSortCell.Model.Value;\r\n downSortCell.Model.Value = upSortCell.Model.Value;\r\n upSortCell.Model.Value = sortValue;\r\n this.Swap(upSortRows, downSortRows);\r\n }\r\n }\r\n }\r\n\r\n Swap(upRows: Array<GridRow>, downRows: Array<GridRow>) {\r\n let upIndex = this._rows.indexOf(downRows[0]);\r\n \r\n _.each(upRows, (upRow)=>{\r\n this._rows.splice(this._rows.indexOf(upRow), 1);\r\n this._rows.splice(upIndex, 0, upRow);\r\n upIndex++;\r\n });\r\n\r\n this._rows.valueHasMutated();\r\n }\r\n\r\n private UpdateSort(downSortCell: DataCell, downSortValue: string, upSortCell: DataCell, upSortValue: string): P.Promise<null> {\r\n const deferred = P.defer<null>();\r\n let upFieldData = new FieldDataModel();\r\n upFieldData.EntityId = upSortCell.EntityId;\r\n upFieldData.FieldId = upSortCell.FieldId;\r\n upFieldData.RecordKeys = upSortCell.Model.RecordKeys;\r\n upFieldData.Value = upSortValue;\r\n\r\n let downFieldData = new FieldDataModel();\r\n downFieldData.EntityId = downSortCell.EntityId;\r\n downFieldData.FieldId = downSortCell.FieldId;\r\n downFieldData.RecordKeys = downSortCell.Model.RecordKeys;\r\n downFieldData.Value = downSortValue;\r\n BlockUI.Block({Target: this._el});\r\n GridStore.UpdateSort({UpCell: upFieldData, DownCell: downFieldData})\r\n .then(result => {\r\n const warning = result.Warnings ? _.first(result.Warnings) : null;\r\n if(warning) {\r\n new Notifier().Warning(warning);\r\n }\r\n deferred.resolve(null);\r\n })\r\n .fail((err) => {\r\n new Notifier().Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetTotalGroup(guid: string) {\r\n return _.find(this._totalGroupRows, (item) => {\r\n return item.Guid === guid\r\n });\r\n }\r\n\r\n GetAverageGroup(guid: string) {\r\n return _.find(this._averageGroupRows, (item) => {\r\n return item.Guid === guid\r\n });\r\n }\r\n\r\n IsVisibleFavorite() {\r\n if (this._enableFavoritesIfPossible) {\r\n if (this._isNested) {\r\n return false;\r\n }\r\n\r\n if (this._queryExpression.EntityJoins.length == 0 && this._queryExpression.SubEntityJoins.length > 0) {\r\n return false;\r\n }\r\n\r\n if(this._isView()){\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isFastFilterExist(type: string): boolean {\r\n if (!this.IsFastFilterEnabled) {\r\n return false;\r\n }\r\n switch (type) {\r\n case FIELD_TYPES.Decimal:\r\n case FIELD_TYPES.Integer:\r\n case FIELD_TYPES.Date:\r\n case FIELD_TYPES.DateTime:\r\n case FIELD_TYPES.TimeSpan:\r\n case FIELD_TYPES.Time:\r\n case FIELD_TYPES.Text:\r\n case FIELD_TYPES.YesNo:\r\n case FIELD_TYPES.Lookup:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n HideGrid() {\r\n this._hideCont++;\r\n if (!this._uiBlocked && this._el) {\r\n this._tableScrollLeft = this._el.parentElement.scrollLeft;\r\n this._el.classList.add(\"hidden-table\");\r\n this._el.parentElement.scrollLeft = 0; // reset scroll of table\r\n this._overflowInParentBeforeHidden = this._el.parentElement.style.overflow; // save overflow valuer before change it\r\n this._el.parentElement.style.overflow = \"hidden\"; // reset scroll of table\r\n this._uiBlocked = true;\r\n }\r\n }\r\n\r\n ShowGrid(removeScroll?: boolean) {\r\n this._hideCont--;\r\n if (this._hideCont <= 0 && this._uiBlocked && this._el) {\r\n this._hideCont = 0;\r\n this._el.classList.remove(\"hidden-table\");\r\n this._el.parentElement.style.overflow = this._overflowInParentBeforeHidden; // return back overflow that was before hiddening\r\n this._uiBlocked = false;\r\n this._el.parentElement.scrollLeft = this._tableScrollLeft;\r\n }\r\n }\r\n\r\n AfterRowRender() {\r\n this.ShowGrid();\r\n\r\n if (this._nextNewRow) {\r\n this._nextNewRow = false;\r\n this.ResizeTableCellsAfterRender();\r\n return;\r\n } else {\r\n if (this._headerColumnsReady) {\r\n this.ResizeTableCellsAfterRender();\r\n setTimeout(() => {\r\n this.ResizeTableCellsAfterRender(); // subgrid header recalculation after saving (not always reproducible)\r\n }, 0);\r\n this._headerColumnsReady = false;\r\n this._rowsReady = false;\r\n }\r\n }\r\n }\r\n\r\n\r\n AfterHeaderColumnsReady(el, column) {\r\n if (this._el && this._headerColumns().indexOf(column) + 1 === this._headerColumns().length) {\r\n this._headerColumnsReady = true;\r\n\r\n if (this._rowsReady || !this._rows().length) {\r\n this.ResizeTableCellsAfterRender();\r\n this._headerColumnsReady = false;\r\n this._rowsReady = false;\r\n }\r\n }\r\n }\r\n\r\n AfterBulkEditRowReady() {\r\n this.ResizeTableCellsAfterRender();\r\n }\r\n\r\n\r\n private WaitTillGridShown(): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n if (this._el.offsetWidth !== 0) {\r\n deferredResult.resolve(null);\r\n } else {\r\n clearInterval(this._waitingForGrid);\r\n const startTime = new Date().getTime();\r\n this._waitingForGrid = setInterval(() => {\r\n if (this._el.offsetWidth !== 0) {\r\n clearInterval(this._waitingForGrid);\r\n deferredResult.resolve(null);\r\n } else if (startTime + 30000 < new Date().getTime()) { // if table wouldnt shown after half minute stop waiting\r\n clearInterval(this._waitingForGrid);\r\n deferredResult.reject({message: 'error'});\r\n }\r\n }, 100);\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n AlignCells(): GridSortModel[] {\r\n let table = $(this._el).find('> div > .flex-grid-row:not(.subTableContainer)');\r\n const rows: HTMLElement[] = Array.from(table.length === 0 ? this._el.querySelectorAll(\".flex-grid-row\") : table);\r\n const rowCells: GridSortModel[] = [];\r\n this._reservedColumnsWidth = [];\r\n this._columnWidth = [];\r\n\r\n rows.forEach((row, rowIndex) => {\r\n const allCells: HTMLElement[] = Array.from(row.querySelectorAll(\".flex-grid-hdata, .flex-grid-tdata:not(.flex-grid-nested-table)\"));\r\n const reservedCells: HTMLElement[] = [];\r\n const cells: HTMLElement[] = [];\r\n let i = 0;\r\n let columnIndex = 0;\r\n let reservedIndex = 0;\r\n\r\n if (!row.classList.contains(\"sortDescriptionColumn\")) {\r\n while (i < allCells.length) {\r\n const cell = allCells[i];\r\n let iterationTarget;\r\n let iterationIndex: number;\r\n if (cell.classList.contains(\"js-reserved\")) {\r\n iterationTarget = this._reservedColumnsWidth;\r\n iterationIndex = reservedIndex++;\r\n reservedCells.push(cell);\r\n } else {\r\n iterationTarget = this._columnWidth;\r\n iterationIndex = columnIndex++;\r\n cells.push(cell);\r\n }\r\n const columnWidth = iterationTarget[iterationIndex] || 0;\r\n cell.style.width = \"\";\r\n cell.style.display = \"\";\r\n iterationTarget[iterationIndex] = Math.max(cell.offsetWidth, columnWidth);\r\n i++;\r\n }\r\n }\r\n\r\n rowCells[rowIndex] = {\r\n cells, reservedCells, row\r\n };\r\n });\r\n\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-head\").style.removeProperty(\"width\");\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-body\").style.removeProperty(\"width\");\r\n\r\n rowCells.forEach((item) => {\r\n item.reservedCells.forEach((cell, cellIndex) => {\r\n cell.style.width = `${Math.min(DEFAULT_MAX_CELL_WIDTH_PX, this._reservedColumnsWidth[cellIndex] + 1)}px`;\r\n });\r\n\r\n item.cells.forEach((cell, cellIndex) => {\r\n const minWidth = Math.max(DEFAULT_MIN_CELL_WIDTH_PX, this._columnWidth[cellIndex] + 1);\r\n let context = ko.dataFor(cell);\r\n\r\n if ((context instanceof DataCell || context instanceof HeaderColumn) && context.Model.FieldMetadata && context.Model.FieldMetadata.Type === FIELD_TYPES.MultiSelect) {\r\n cell.style.width = `${minWidth}px`;\r\n } else {\r\n cell.style.width = `${Math.min(minWidth, DEFAULT_MAX_CELL_WIDTH_PX)}px`;\r\n }\r\n });\r\n });\r\n\r\n return rowCells;\r\n }\r\n\r\n ResizeTableCellsAfterRender(afterPriority?: GridSortModel[]) {\r\n let superHeaderRows = $(this._el).find(\".super-flex-grid-row\");\r\n if(superHeaderRows.length == 0) {\r\n return;\r\n }\r\n\r\n superHeaderRows.css('display', 'none');\r\n\r\n this.WaitTillGridShown()\r\n .then(() => {\r\n const isCrossTable = (this._queryExpression && this._queryExpression.IsCrossTable);\r\n let rowsData: GridSortModel[] = afterPriority;\r\n let maxRowWidth = 0;\r\n const isSubTable = this._visible();\r\n this.HideGrid();\r\n\r\n if (!afterPriority) {\r\n rowsData = this.AlignCells();\r\n this._canShowColumns = false;\r\n }\r\n\r\n //fix if grid has wrapped columns\r\n const [first, second, third] = rowsData;\r\n let recalculateGrowColumnsToFullWidth = false;\r\n if (third != null && first != null) {\r\n if (first.row.offsetWidth <= third.row.offsetWidth && $(third.row).hasClass('related')) {\r\n recalculateGrowColumnsToFullWidth = true;\r\n }\r\n }\r\n\r\n const containerWidth = this._el.offsetWidth;\r\n let containerScrollWidth = this._el.scrollWidth;\r\n let isQueryResult = $(this._el).hasClass('query-result-grid');\r\n\r\n let boxMoreEqualContent = containerScrollWidth <= containerWidth;\r\n let contentMoreEqualBox = containerScrollWidth >= containerWidth;\r\n\r\n if (isSubTable) {\r\n if (boxMoreEqualContent || recalculateGrowColumnsToFullWidth) {\r\n maxRowWidth = this.GrowColumnsToFullWidth({rowsData, containerWidth});\r\n\r\n } else if ((contentMoreEqualBox) || (contentMoreEqualBox && isQueryResult)) {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n } else if (!afterPriority && !this._isPrioritiesDisabled) {\r\n this.HideColumnsByPriority(containerScrollWidth - containerWidth, rowsData);\r\n this.ShowGrid();\r\n return;\r\n } else {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n }\r\n\r\n } else if (isQueryResult) { // QueryResult page\r\n if (boxMoreEqualContent || recalculateGrowColumnsToFullWidth) {\r\n maxRowWidth = this.GrowColumnsToFullWidth({rowsData, containerWidth});\r\n } else if (!afterPriority && !this._isPrioritiesDisabled) {\r\n this.HideColumnsByPriority(containerScrollWidth - containerWidth, rowsData);\r\n this.ShowGrid();\r\n return;\r\n } else {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n }\r\n } else {\r\n if (boxMoreEqualContent || recalculateGrowColumnsToFullWidth) {\r\n maxRowWidth = this.GrowColumnsToFullWidth({rowsData, containerWidth});\r\n\r\n } else if ((contentMoreEqualBox && isQueryResult)) {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n\r\n } else if (!afterPriority && !this._isPrioritiesDisabled) {\r\n if (!isCrossTable){\r\n this.HideColumnsByPriority(containerScrollWidth - containerWidth, rowsData);\r\n }\r\n if(isCrossTable){\r\n this.SetSuperHeader();\r\n }\r\n this.ShowGrid();\r\n return;\r\n } else {\r\n this.HideColumns(maxRowWidth, rowsData);\r\n }\r\n }\r\n this.ToggleAllShownColumns(this._canHideColumns, this._canShowColumns);\r\n this.SetSuperHeader();\r\n this.ShowGrid();\r\n });\r\n\r\n }\r\n\r\n GrowColumnsToFullWidth({rowsData, containerWidth}) {\r\n const [firstRow, ...restRows] = rowsData;\r\n const reservedFieldsWidth = firstRow.reservedCells.reduce((prev, next) => prev + next.offsetWidth, 0);\r\n\r\n const restWidth = containerWidth - reservedFieldsWidth;\r\n const restColumnsWidth = firstRow.cells.reduce((prev, next) => prev + next.offsetWidth, 0);\r\n\r\n firstRow.row.style.width = \"\";\r\n firstRow.cells.forEach((element, index) => {// calculate columns width on header columns\r\n const percentWidth = element.offsetWidth / restColumnsWidth;\r\n const newWidth = percentWidth * restWidth;\r\n element.style.width = newWidth + \"px\";\r\n this._columnWidth[index] = newWidth;\r\n });\r\n\r\n const maxRowWidth = firstRow.row.offsetWidth;\r\n if (restRows && restRows.length) {\r\n restRows.forEach(item => {// set colums width to each cell on each row\r\n item.row.style.width = \"\";\r\n item.cells.forEach((cell, index) => {\r\n cell.style.width = this._columnWidth[index] + \"px\";\r\n });\r\n });\r\n }\r\n\r\n this.ApplyMaxRowWidth(maxRowWidth);\r\n\r\n this._canHideColumns = false;\r\n\r\n return maxRowWidth;\r\n }\r\n\r\n private ApplyMaxRowWidth(maxRowWidth: number) {\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-head\").style.width = `${maxRowWidth}px`;\r\n this._el.querySelector<HTMLDivElement>(\".flex-grid-body\").style.width = `${maxRowWidth}px`;\r\n }\r\n\r\n HideColumns(maxRowWidth: number, rowsData: GridSortModel[]) {\r\n this._canHideColumns = true;\r\n maxRowWidth = 0;\r\n // grow all rows to 100% of table scroll width\r\n rowsData.forEach(item => {\r\n maxRowWidth = Math.max(maxRowWidth, item.row.offsetWidth);\r\n });\r\n\r\n this.ApplyMaxRowWidth(maxRowWidth);\r\n }\r\n\r\n HideColumnsByPriority(difference: number, rowsData: GridSortModel[]) {\r\n const [headersArray, ...rowsArray] = rowsData;\r\n let hiddenColumns = 0;\r\n let hiddenElementsWidth = 0;\r\n let haveAlwaysVisibleCells = false;\r\n let maxCellsLength = headersArray.cells.length;\r\n let maxColumsToHide = headersArray.cells.reduce((prevItem, nextItem) => {\r\n if (nextItem.dataset.priority !== \"-1\") {\r\n prevItem++;\r\n } else {\r\n haveAlwaysVisibleCells = true;\r\n }\r\n return prevItem;\r\n }, 0);\r\n\r\n maxColumsToHide = haveAlwaysVisibleCells ? maxColumsToHide : Math.max(maxColumsToHide - 1, 0);\r\n\r\n headersArray.cells.sort(this.SortColumnsByPriority);\r\n\r\n if (maxColumsToHide === 0) {\r\n this._canShowColumns = false;\r\n this._canHideColumns = false;\r\n this.ResizeTableCellsAfterRender(rowsData);\r\n return;\r\n }\r\n\r\n for (let elem of headersArray.cells) {\r\n if (hiddenElementsWidth >= difference || hiddenColumns === maxColumsToHide) {\r\n break;\r\n }\r\n hiddenElementsWidth += elem.offsetWidth;\r\n elem.style.display = \"none\";\r\n hiddenColumns++;\r\n }\r\n if (rowsArray) {\r\n for (let row of rowsArray) {\r\n if (!row.cells.length) continue;\r\n\r\n //fix if grid has wrapped columns\r\n row.cells = _.filter(row.cells, (cell) => {\r\n let dataFor = ko.dataFor(cell);\r\n if (dataFor instanceof DataCell) {\r\n if (!dataFor.IsOrdinary) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n\r\n row.cells.sort(this.SortColumnsByPriority);\r\n let localHaveAlwaysVisibleCells = haveAlwaysVisibleCells;\r\n let localMaxColumsToHide = maxColumsToHide;\r\n\r\n if (maxCellsLength !== row.cells.length) {\r\n localMaxColumsToHide = row.cells.reduce((prevItem, nextItem) => {\r\n if (nextItem.dataset.priority !== \"-1\") {\r\n prevItem++;\r\n } else {\r\n localHaveAlwaysVisibleCells = true;\r\n }\r\n return prevItem;\r\n }, 0);\r\n\r\n localMaxColumsToHide = localHaveAlwaysVisibleCells ? localMaxColumsToHide : Math.max(localMaxColumsToHide - 1, 0);\r\n }\r\n const localHiddenColumns = Math.min(hiddenColumns, localMaxColumsToHide);\r\n for (let i = 0; i < localHiddenColumns; i++) {\r\n row.cells[i].style.display = \"none\";\r\n }\r\n }\r\n }\r\n this._canShowColumns = hiddenColumns > 0;\r\n this.ResizeTableCellsAfterRender(rowsData);\r\n }\r\n\r\n SetSuperHeader() {\r\n const fragment = document.createDocumentFragment();\r\n const superHeaderRow: HTMLDivElement = this._el.querySelector(\".super-flex-grid-row\");\r\n const cellsEls: HTMLDivElement[] = Array.from(this._el.querySelectorAll(\".flex-grid-hdata\"));\r\n const headerCells = cellsEls.reduce((prev, now) => {\r\n if (now.style.display === \"none\") {\r\n return prev;\r\n }\r\n if (now.classList.contains(\"js-reserved\")) {\r\n prev.reservedWidth += now.offsetWidth;\r\n } else {\r\n prev.regular.push(now);\r\n }\r\n return prev;\r\n }, {reservedWidth: 0, regular: []});\r\n if (!headerCells.regular.length) {\r\n this._el.classList.remove(\"has-super-header\");\r\n superHeaderRow.style.display = \"none\";\r\n return;\r\n }\r\n superHeaderRow.querySelectorAll(\".super-header-cell\").forEach(el => el.remove());\r\n\r\n const groupEl = document.createElement(\"div\");\r\n groupEl.className = \"super-header-cell\";\r\n\r\n const overReservedEl = groupEl.cloneNode(false);\r\n (overReservedEl as HTMLDivElement).style.width = headerCells.reservedWidth + \"px\";\r\n fragment.appendChild(overReservedEl);\r\n\r\n let currentGroup;\r\n let currentGroupEl = null;\r\n const groupsWidth = [];\r\n let groupIndex = -1;\r\n let hasGroups = false;\r\n\r\n headerCells.regular.forEach(el => {\r\n if (el.dataset.group === currentGroup) {\r\n groupsWidth[groupIndex] += el.offsetWidth;\r\n currentGroupEl.style.width = groupsWidth[groupIndex] + \"px\";\r\n } else {\r\n groupIndex++;\r\n currentGroup = el.dataset.group;\r\n currentGroupEl = groupEl.cloneNode(false);\r\n currentGroupEl.innerText = currentGroup;\r\n groupsWidth[groupIndex] = el.offsetWidth;\r\n currentGroupEl.style.width = groupsWidth[groupIndex] + \"px\";\r\n fragment.appendChild(currentGroupEl);\r\n\r\n if (currentGroup) {\r\n hasGroups = true;\r\n }\r\n }\r\n });\r\n\r\n if (hasGroups) {\r\n this._el.classList.add(\"has-super-header\");\r\n superHeaderRow.appendChild(fragment);\r\n superHeaderRow.style.display = \"flex\";\r\n } else {\r\n this._el.classList.remove(\"has-super-header\");\r\n superHeaderRow.style.display = \"none\";\r\n }\r\n }\r\n\r\n SortColumnsByPriority(a: HTMLDivElement, b: HTMLDivElement): number {\r\n const datasetA = a.dataset;\r\n const datasetB = b.dataset;\r\n\r\n const priorityA = +datasetA.priority || 4; // if no priority we set 4 (the lowest priority)\r\n const priorityB = +datasetB.priority || 4; // if no priority we set 4 (the lowest priority)\r\n\r\n // compare priority\r\n if (priorityA < priorityB) {\r\n return 1;\r\n } else if (priorityA > priorityB) {\r\n return -1;\r\n }\r\n\r\n // if priorities equals compare cell index\r\n if (+datasetA.index < +datasetB.index) {\r\n return 1;\r\n } else if (+datasetA.index > +datasetB.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getColumnWidth = (data) => {\r\n const column = this.Model.Columns[data];\r\n if (column) {\r\n return column.styleWidth\r\n }\r\n return \"\";\r\n };\r\n\r\n GetColumnPriority(index) {\r\n return this.Model.Columns[index].DisplayPriority;\r\n }\r\n\r\n GetClassNames(model: any, classNames?: string[]): string {\r\n let result: string;\r\n let additionalClassNames: string;\r\n\r\n if (model.FieldMetadata) {\r\n result =\r\n model.FieldMetadata.Type.toString() + ' ' + model.FieldMetadata.FormatName.toString().replace(' ', '');\r\n\r\n if (model.FieldMetadata.Type === FIELD_TYPES.Lookup) {\r\n const validationFieldMetadata = extractLookupValFieldMetadata(model.FieldMetadata);\r\n\r\n if (validationFieldMetadata) {\r\n result += ` ${validationFieldMetadata.Type} ${validationFieldMetadata.FormatName.toString().replace(\r\n ' ',\r\n ''\r\n )}`;\r\n }\r\n }\r\n } else if (model.Type) {\r\n result = model.Type;\r\n } else {\r\n result = '';\r\n }\r\n\r\n if (classNames) {\r\n additionalClassNames = classNames.join(' ');\r\n\r\n return result + ' ' + additionalClassNames;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n CreateColumnWidthParameters(headers: HeaderColumn[]): void {\r\n const classes = headers.map((header) => this.GetClassNames(header.Model));\r\n\r\n this._columnClassesCollection(classes);\r\n }\r\n\r\n CreateColumnTotalWidthParameters(headers: HeaderColumn[]): void {\r\n const filterHeader = _.filter(headers, header=> !header.Model.IsSortDescription);\r\n const classes = filterHeader.map(header => this.GetClassNames(header.Model));\r\n this._columnClassesTotalCollection(classes);\r\n }\r\n\r\n AddColumns(columnModels: Array<GridColumnModel>) {\r\n const columns = [];\r\n\r\n _.each(columnModels, columnModel => {\r\n const column = new HeaderColumn(columnModel, null, null, null, []);\r\n columns.push(column);\r\n });\r\n\r\n this._headerColumns(columns);\r\n }\r\n\r\n ResetSort(excludeColumn: HeaderColumn) {\r\n _.each(this._headerColumns(), item => {\r\n if (item !== excludeColumn) {\r\n item.ResetSort();\r\n }\r\n });\r\n }\r\n\r\n SaveRecord(row: GridRow): P.Promise<any> {\r\n const deferredResult = P.defer<GridDataModel>();\r\n const rowDataModel = this.SerializeRowData(row);\r\n\r\n BlockUI.Block();\r\n GridStore.UpdateRow(rowDataModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n deferredResult.resolve(null);\r\n this.Trigger(EVENTS.DATA_SAVED, { UpdateResult: data, UpdateRow: row });\r\n this.ResizeTableCellsAfterRender();\r\n this.Trigger(EVENTS.LOAD_SUB_GRID);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n SaveLifestatus(row: GridRow): P.Promise<any> {\r\n const dataModel = new UpdateLifestatusModel({\r\n EntityId: row.EntityId,\r\n RecordId: row.RecordId,\r\n RowLifestatus: row.LifestatusId\r\n });\r\n\r\n BlockUI.Block();\r\n let deferredResult = P.defer<GridDataModel>();\r\n GridStore.UpdateRowLifestatus(dataModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n deferredResult.resolve(null);\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n DeleteRecord(row: GridRow) {\r\n if(this._screenType === ScreenTypes[ScreenTypes.EditScreen]){\r\n row.State = States.Delete;\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._deletedRows.push(row);\r\n }else{\r\n const rowDataModel = this.SerializeRowData(row);\r\n GridStore.DeleteRow(rowDataModel)\r\n .then(result => {\r\n var notifier = new Notifier(this._el);\r\n if (result.IsSuccessfull) {\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._dataModel.Rows.splice(this._dataModel.Rows.indexOf(row.Model), 1);\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n } else {\r\n notifier.Failed(NOTIFICATIONS.ERROR_DELETE_GRID_DATA.replace('{ErrorMessage}', result.ErrorMessage));\r\n }\r\n }); \r\n }\r\n }\r\n\r\n get SubjectEntityId() {\r\n return this._parentRow ? this._parentRow.EntityId : this._dataModel.SubjectEntityId;\r\n }\r\n\r\n get SubjectRecordId(){\r\n return this._parentRow ? this._parentRow.RecordId : this._dataModel.SubjectRecordId;\r\n }\r\n\r\n UnlinkMultipleRecords() {\r\n let selectedRows: Array<IUnlinkRecordRequestModel> = [];\r\n let selectedRowsRequestModel: IUnlinkMultipleRecordsRequestModel = null;\r\n\r\n _.each(this._dataModel.Rows, row => {\r\n if (row.IsUnlinkCheckboxChecked) {\r\n let requestRowModel: IUnlinkRecordRequestModel = {\r\n MainEntityId: this.SubjectEntityId,\r\n MainRecordId: this.SubjectRecordId,\r\n RelatedEntityId: row.EntityId,\r\n RelatedRecordId: row.RecordId,\r\n KSeq: row.KSeq,\r\n RelationshipType: row.RelationshipType\r\n };\r\n\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n requestRowModel.MainEntityId = row.EntityId;\r\n requestRowModel.MainRecordId = row.RecordId;\r\n requestRowModel.RelatedEntityId = this.SubjectEntityId;\r\n requestRowModel.RelatedRecordId = this.SubjectRecordId;\r\n requestRowModel.RelationshipType = row.RelationshipType;\r\n }\r\n\r\n selectedRows.push(requestRowModel);\r\n\r\n selectedRowsRequestModel = {\r\n Rows: selectedRows\r\n }\r\n }\r\n });\r\n\r\n const notifier = new Notifier(null);\r\n\r\n if (selectedRowsRequestModel) {\r\n BlockUI.Block();\r\n\r\n GridStore.UnlinkMultipleRecords(selectedRowsRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n\r\n if (result.IsSuccessfull) {\r\n\r\n let elementsToDelete = [], dataModelRowsToDelete = [];\r\n\r\n _.each(this._dataModel.Rows, row => {\r\n if (row.IsUnlinkCheckboxChecked) {\r\n let deletionIndex = this._dataModel.Rows.indexOf(row);\r\n elementsToDelete.push(this._rows()[deletionIndex]);\r\n dataModelRowsToDelete.push(row);\r\n }\r\n });\r\n\r\n this._rows(this._rows().filter(row => !elementsToDelete.includes(row)));\r\n this._dataModel.Rows = this._dataModel.Rows.filter(row => !dataModelRowsToDelete.includes(row));\r\n\r\n if (!this._parentRow) {\r\n this.Trigger(EVENTS.REFRESH);\r\n }\r\n } else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n\r\n selectedRowsRequestModel = null;\r\n } else {\r\n notifier.Warning(LABELS.NO_RECORD_SELECTED);\r\n }\r\n }\r\n\r\n UnlinkRecord(row: GridRow): any {\r\n if (row.State != States.Link) {\r\n let requestModel: IUnlinkRecordRequestModel = {\r\n MainEntityId: this.SubjectEntityId,\r\n MainRecordId: this.SubjectRecordId,\r\n RelatedEntityId: row.EntityId,\r\n RelatedRecordId: row.RecordId,\r\n KSeq: row.KSeq\r\n }\r\n\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n requestModel.MainEntityId = row.EntityId;\r\n requestModel.MainRecordId = row.RecordId;\r\n requestModel.RelatedEntityId = this.SubjectEntityId;\r\n requestModel.RelatedRecordId = this.SubjectRecordId;\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen] && !this._parentRow) {\r\n if (!row.LinkEditorData) {\r\n row.LinkEditorData = new UpdateDataModel();\r\n }\r\n let deletedRelation = new DeletedRelationModel(row.EntityId, row.RecordId, row.KSeq, row.RelationshipType);\r\n row.LinkEditorData.DeletedRelations.push(deletedRelation);\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n this._unlinkedRows.push(row);\r\n this.Trigger(EVENTS.UNLINK_RECORD);\r\n } else {\r\n BlockUI.Block();\r\n GridStore.UnlinkRecord(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n const notifier = new Notifier(null);\r\n\r\n if (result.IsSuccessfull) {\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n if(!this._parentRow){\r\n this.Trigger(EVENTS.REFRESH);\r\n }\r\n } else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n }\r\n } else {\r\n this._rows.splice(this._rows.indexOf(row), 1);\r\n }\r\n }\r\n\r\n\tUnlinkRecordByRelation(relation: ILoadScreenRelationModel, isNewParent: boolean): any {\r\n\t\tlet requestModel: IUnlinkRecordRequestModel = {\r\n\t\t\tMainEntityId: relation.MainEntityId,\r\n\t\t\tMainRecordId: relation.MainRecordId,\r\n\t\t\tRelatedEntityId: relation.RelatedEntityId,\r\n\t\t\tRelatedRecordId: relation.RelatedRecordId,\r\n\t\t\tKSeq: relation.KSeq\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\t\tGridStore.UnlinkRecord(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n const notifier = new Notifier(null);\r\n\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tconst row = this.GetRowByRelation(relation, isNewParent);\r\n\t\t\t\t\tif (row) {\r\n\t\t\t\t\t\tthis._rows.splice(this._rows.indexOf(row), 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n get RowsCount(): number{\r\n let rows = _.filter(this._rows(), (item)=> !item.Model.IsGroup);\r\n return rows.length;\r\n }\r\n\r\n get TotalRows(){ \r\n return this._dataModel.TotalRecords + this.NewRows\r\n }\r\n\r\n SerializeRowData(row: GridRow): GridRowDataModel {\r\n const rowDataModel = new GridRowDataModel();\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n rowDataModel.SubjectEntityId = row.EntityId;\r\n rowDataModel.SubjectRecordId = row.RecordId;\r\n rowDataModel.RecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.EntityId = this._dataModel.SubjectEntityId;\r\n\r\n } else {\r\n rowDataModel.SubjectEntityId = this._dataModel.SubjectEntityId;\r\n rowDataModel.SubjectRecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.RecordId = row.RecordId;\r\n rowDataModel.EntityId = row.EntityId;\r\n }\r\n\r\n rowDataModel.IsLinkParent = row.IsLinkParent;\r\n\r\n rowDataModel.State = row.State;\r\n _.each(row.DataCells, item => {\r\n const aliasToBeAdded = item.EntityId == rowDataModel.EntityId && item.Model.FieldMetadata.Type === FIELD_TYPES.Alias;\r\n if (!item.IsReadOnly() || aliasToBeAdded) {\r\n const fieldData = new FieldDataModel();\r\n fieldData.Value = item.Value;\r\n fieldData.CustomValue = item.Model.FieldMetadata.Type == FIELD_TYPES.Lookup && item.DisplayValue;\r\n fieldData.FieldId = item.FieldId;\r\n fieldData.EntityId = item.EntityId;\r\n fieldData.RecordKeys = item.Model.RecordKeys || [];\r\n fieldData.Translations = this.GetTranslations(item);\r\n\r\n rowDataModel.Data.push(fieldData);\r\n }\r\n });\r\n if (this.HasFTypeField() && !this.HasFTypeColumn() && row.Model.TypeId) {\r\n rowDataModel.Data.push(this.GetFtypeCell(row.Model.TypeId));\r\n }\r\n return rowDataModel;\r\n }\r\n\r\n GetQueryColumn(columnGuid: string, expression: QueryExpressionModel) {\r\n const entities = Util.GetAllQueryEntities(expression);\r\n let result = null;\r\n\r\n _.each(entities, (entity) => {\r\n _.each(entity.Columns,\r\n column => {\r\n if (column.Guid === columnGuid) {\r\n result = column;\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetQueryEntity(columnGuid: string, expression: QueryExpressionModel): QueryEntityModel {\r\n const entities = Util.GetAllQueryEntities(expression);\r\n let result = null;\r\n\r\n _.each(entities, (entity) => {\r\n _.each(entity.Columns,\r\n column => {\r\n if (column.Guid === columnGuid) {\r\n result = entity;\r\n }\r\n });\r\n });\r\n\r\n return result;\r\n }\r\n\r\n AddToBasket(row: GridRow) {\r\n this.Trigger(EVENTS.ADD_TO_BASKET, {Row: row});\r\n }\r\n\r\n RemoveFromBasket(row: GridRow) {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET, {Row: row});\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/BaseGrid/Templates/BaseGrid';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n }\r\n\r\n AfterGridReady(el: Array<HTMLElement>) {\r\n const isSameElement = this._el === el[0].parentElement;\r\n this._el = el[0].parentElement;\r\n this.ResizeTableCellsAfterRender();\r\n\r\n if (isSameElement) return;\r\n\r\n if (this._isCardScreen()) {\r\n this._el.classList.remove(\"hidden-table\");\r\n }\r\n this._isCardScreen.subscribe((newValue) => {\r\n if (newValue) {\r\n this._el.classList.remove(\"hidden-table\");\r\n }\r\n })\r\n\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize, this._el); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n unbindResize();\r\n window.removeEventListener(\"scroll\", () => this.RepositionHeaderOnScroll())\r\n });\r\n\r\n window.addEventListener(\"scroll\", () => this.RepositionHeaderOnScroll());\r\n $(this._el).parents('.jBox-content').on('scroll', () => this.RepositionHeaderOnScroll());\r\n $(this._el).parents('.portlet-body').on('scroll', () => this.RepositionHeaderOnScroll($(this._el).parents('.portlet-body').scrollTop()));\r\n this._el.addEventListener(\"onDropDownOpen\", e => {\r\n e.stopPropagation();\r\n this._preventResize = true;\r\n this._el.classList.add(\"drop-down-open\");\r\n });\r\n this._el.addEventListener(\"onDropDownClose\", e => {\r\n e.stopPropagation();\r\n this._preventResize = true;\r\n this._el.classList.remove(\"drop-down-open\");\r\n });\r\n\r\n this._el.addEventListener(\"resizeTable\", e => {\r\n e.stopPropagation();\r\n clearTimeout(this._resizeLimitInterval);\r\n this.Resize();\r\n });\r\n }\r\n\r\n private Resize(){\r\n this._resizeLimitInterval = setTimeout(() => {\r\n this.ResizeTableCellsAfterRender();\r\n }, 100);\r\n }\r\n\r\n StickyActionBarHeight(isModal:boolean, jBoxModal, _el): number{\r\n let stickyActionBarHeight = 0;\r\n if (isModal){\r\n let actionBarBlock = jBoxModal.find('#ActionBarBlock'),\r\n actionBarSubForm = jBoxModal.find('.actionBarSubForm'),\r\n stickyActionBar = actionBarBlock.length > 0 ? actionBarBlock : actionBarSubForm.length > 0 ? actionBarSubForm : null;\r\n\r\n if(stickyActionBar !== null && stickyActionBar.length !== 0 && stickyActionBar.css('position') === 'sticky'){\r\n let paddingModalPX = $(_el).parents('.jBox-content').css('padding-top'),\r\n paddingModal = +paddingModalPX.substring(0, paddingModalPX.length - 2);\r\n\r\n stickyActionBarHeight = Math.abs(stickyActionBar.innerHeight() + paddingModal);\r\n }\r\n }\r\n return stickyActionBarHeight;\r\n }\r\n\r\n RepositionHeaderOnScroll = (scrollPositionInContainer?: number) => {\r\n const headElement = this._el.querySelector<HTMLDivElement>('.flex-grid-head');\r\n\r\n if (!headElement) {\r\n return;\r\n }\r\n\r\n const portletFullScreen = $(this._el).parents('.portlet-fullscreen').length > 0;\r\n const boundingRect = this._el.getBoundingClientRect();\r\n const modalTopPosition = Math.abs(($('.jBox-content').parents('.jBox-Modal').height() - $(window).height()) / 2);\r\n let fixedHeaderHeight = 0;\r\n let jBoxModal = $(this._el).parents('.jBox-content').parents('.jBox-Modal');\r\n let isModal = jBoxModal.length > 0 && jBoxModal.css('display') !== 'none';\r\n if (window.innerWidth > 991) {\r\n const headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n fixedHeaderHeight = isModal ? modalTopPosition + this.StickyActionBarHeight(isModal, jBoxModal, this._el) : headerElement ? headerElement.offsetHeight : 0;\r\n }\r\n\r\n if (!portletFullScreen && boundingRect.top < fixedHeaderHeight) {\r\n const distanceFromTop = Math.min(boundingRect.top * -1 + fixedHeaderHeight, boundingRect.height - 28);\r\n headElement.style.top = Math.max(distanceFromTop, 0) + \"px\";\r\n } else {\r\n const portletToolbarHeight = $(this._el).parents('.portlet-body-content').find('.toolbar-wrapper').height();\r\n const topHeaderPosition = scrollPositionInContainer && portletToolbarHeight < scrollPositionInContainer ? scrollPositionInContainer - portletToolbarHeight - 5 + \"px\" : '0';\r\n headElement.style.top = topHeaderPosition;\r\n }\r\n };\r\n\r\n OnResize = () => {\r\n if (this._preventResize) {\r\n this._preventResize = false;\r\n return;\r\n }\r\n this.ResizeTableCellsAfterRender();\r\n this.RepositionHeaderOnScroll();\r\n };\r\n\r\n Expand() {\r\n this._visible(true);\r\n }\r\n\r\n Colapse() {\r\n this._visible(false);\r\n }\r\n\r\n Render(target: HTMLElement) {\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n }\r\n\r\n GetSelectRecords(): Array<GridRow> {\r\n const selectedRecords = _.filter(this._rows(), (row) => row.IsSelected());\r\n return selectedRecords;\r\n }\r\n\r\n get Wrapper(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n set IsReady(value: boolean) {\r\n this._isReady(value);\r\n }\r\n\r\n get IsFastFilterEnabled(): boolean {\r\n return this._isFastFilterEnabled();\r\n }\r\n\r\n set IsFastFilterEnabled(value: boolean) {\r\n this._isFastFilterEnabled(value);\r\n }\r\n\r\n public GetEntityByColumnGuid(columnGuid: string, queryExpression: QueryExpressionModel): QueryEntityModel {\r\n let result = null;\r\n const entities = Util.GetAllQueryEntities(queryExpression);\r\n _.each(entities, (entity) => {\r\n const field = _.find(entity.Columns, (column) => column.Guid === columnGuid);\r\n\r\n if (field) {\r\n result = entity;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetRecordIds(): Array<number> {\r\n const ids = _.map(this._rows(), (row) => row.RecordId);\r\n\r\n return ids;\r\n }\r\n\r\n GetAllRecordKeys() {\r\n let result = [];\r\n _.each(this._rows(), (row) => {\r\n result = result.concat(row.Model.RecordKeys);\r\n });\r\n return result;\r\n }\r\n\r\n GetGridRowByRecordId(recordId: number): GridRow {\r\n return _.find(this._rows(), (row: GridRow) => row.RecordId === recordId);\r\n }\r\n\r\n GetGridRowsByRecordIds(recordIds: number[]): GridRow[] {\r\n return _.filter(this._rows(), (row: GridRow) => _.contains(recordIds, row.RecordId));\r\n }\r\n\r\n GetUnlinkedGridRowByRecordId(recordId: number): GridRow {\r\n return _.find(this._unlinkedRows, (row: GridRow) => row.RecordId === recordId);\r\n }\r\n\r\n GetUnlinkedGridRowsByRecordIds(recordIds: number[]): GridRow[] {\r\n return _.filter(this._unlinkedRows, (row: GridRow) => _.contains(recordIds, row.RecordId));\r\n }\r\n\r\n GetRowByIndex(index: number): GridRow {\r\n return this._rows()[index];\r\n }\r\n\r\n\tGetRowByRelation(relation: ILoadScreenRelationModel, isNewParent: boolean): GridRow {\r\n\t\tif (!this._rows()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (relation.KSeq) {\r\n\t\t\treturn this._rows().find(row => row.KSeq === relation.KSeq);\r\n\t\t}\r\n\r\n\t\treturn isNewParent\r\n\t\t\t? this._rows().find(row => row.RecordId === relation.MainRecordId)\r\n\t\t\t: this._rows().find(row => row.RecordId === relation.RelatedRecordId);\r\n }\r\n\r\n DuplicateRow(row: GridRow): GridRow {\r\n const newRowModel = row.Model.Clone();\r\n return this.AddNewRow(newRowModel, newRowModel.TypeId, newRowModel.KindId);\r\n }\r\n\r\n MarkRecodsInBasket(records: Array<number>) {\r\n if (this._enableBasket()) {\r\n _.each(this._rows(), (row: GridRow) => {\r\n row.MarkRecodsInBasket(records);\r\n });\r\n }\r\n }\r\n\r\n SerializeRows(): Array<GridRowDataModel> {\r\n let result = [];\r\n _.each([...this._rows(), ...this._deletedRows], (row: GridRow) => {\r\n if (row.State === States.New || row.State === States.Edit || row.State === States.Link || row.State === States.LinkAndEdit || row.State === States.Delete) {\r\n const rowDataModel = new GridRowDataModel();\r\n rowDataModel.Guid = row.Guid;\r\n rowDataModel.SubjectEntityId = this._dataModel.SubjectEntityId;\r\n rowDataModel.SubjectRecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.EntityId = row.EntityId;\r\n rowDataModel.RecordId = row.RecordId;\r\n rowDataModel.State = row.State;\r\n rowDataModel.KSeq = row.KSeq;\r\n rowDataModel.IsLinkParent = row.IsLinkParent;\r\n if (row.State === States.New && this.HasFTypeField() && !this.HasFTypeColumn()) {\r\n rowDataModel.Data.push(this.GetFtypeCell(row.Model.TypeId));\r\n }\r\n _.each(row.DataCells, item => {\r\n const aliasToBeAdded = item.EntityId == rowDataModel.EntityId && item.Model.FieldMetadata.Type === FIELD_TYPES.Alias;\r\n if (!item.IsReadOnly() || item.Model.FieldMetadata.Type === FIELD_TYPES.Sort || aliasToBeAdded) {\r\n const fieldData = new FieldDataModel();\r\n fieldData.Value = item.Value;\r\n fieldData.CustomValue = item.Model.FieldMetadata.Type == FIELD_TYPES.Lookup && item.DisplayValue;\r\n fieldData.FieldId = item.FieldId;\r\n fieldData.EntityId = item.EntityId;\r\n fieldData.RecordKeys = item.Model.RecordKeys || [];\r\n fieldData.Translations = this.GetTranslations(item);\r\n rowDataModel.Data.push(fieldData);\r\n }\r\n });\r\n result.push(rowDataModel);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n SerializeLinkEditorData(): Array<UpdateDataModel> {\r\n let result = [];\r\n let allRows = [...this._rows(), ...this._unlinkedRows];\r\n\r\n _.each(allRows, (row) => {\r\n let linkEditorData = row.SerializeLinkEditorData();\r\n if (linkEditorData) {\r\n result.push(linkEditorData);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetEditRows(): Array<GridRow> {\r\n let rows = _.filter(this._rows(), (row: GridRow) => {\r\n return row.IsEditMode;\r\n });\r\n return rows;\r\n }\r\n\r\n SaveEditRows() {\r\n var rows = this.GetEditRows();\r\n _.each(rows, (row: GridRow) => {\r\n row.SaveRow();\r\n });\r\n }\r\n\r\n GetNewAndLinkRows() {\r\n return this._rows().filter(\r\n row => row.State === States.New || row.State === States.Link || row.State === States.LinkAndEdit\r\n );\r\n }\r\n\r\n ReleaseLockRows() {\r\n let rows = this._lockRows; \r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n const subjectEntityId = this._form.GetScreen().GetEntityId();\r\n const subjectRecordId = this._form.GetScreen().GetRecordId();\r\n rows = _.filter(rows, (row) => {\r\n return !(row.EntityId === subjectEntityId && row.RecordId === subjectRecordId);\r\n });\r\n }\r\n\r\n _.each(rows, (row: GridRow) => {\r\n LockManager.Instance.ReleaseLock(row.EntityId, row.RecordId);\r\n });\r\n this._lockRows = [];\r\n }\r\n\r\n HasEditRows(): boolean {\r\n var rows = this.GetEditRows();\r\n if (rows.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get Model(): GridDataModel {\r\n return this._dataModel;\r\n }\r\n\r\n private GetTranslations(dataCell: DataCell) {\r\n return dataCell.Translations && dataCell.Translations.map(translation => {\r\n const model = new TranslationModel();\r\n\r\n model.LanguageShortName = TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName;\r\n model.Value = translation.Value;\r\n\r\n return model;\r\n });\r\n }\r\n\r\n private HasFTypeColumn() {\r\n let fTypeColumn = _.find(this.GetGridSubjectEntity().Columns, column => {\r\n return column.Metadata.Name === TYPE_FIELD_NAME;\r\n });\r\n return !!fTypeColumn;\r\n }\r\n\r\n private HasFTypeField() {\r\n let fTypeField = _.find(this.GetGridSubjectEntity().Metadata.Fields, field => {\r\n return field.Name === TYPE_FIELD_NAME;\r\n });\r\n return !!fTypeField;\r\n }\r\n\r\n private GetFtypeCell(typeId?: number) {\r\n const fieldData = new FieldDataModel();\r\n fieldData.Value = typeId ? String(typeId) : '0';\r\n\r\n const objectEntity = this.GetGridSubjectEntity();\r\n\r\n const fTypeField = objectEntity.Metadata.Fields.find(item => item.Name === TYPE_FIELD_NAME);\r\n\r\n fieldData.FieldId = fTypeField.Id;\r\n fieldData.EntityId = objectEntity.Metadata.Id;\r\n fieldData.RecordKeys = [];\r\n fieldData.Translations = [];\r\n\r\n return fieldData;\r\n }\r\n\r\n GetGridSubjectEntity(): QueryEntityModel {\r\n if (this._screenType === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n return this._dataModel.QueryExpression.Entity;\r\n }\r\n if (this._dataModel.QueryExpression.EntityJoins.length > 0) {\r\n return this._dataModel.QueryExpression.EntityJoins[0].Entity\r\n }\r\n\r\n if (this._dataModel.QueryExpression.SubEntityJoins.length > 0) {\r\n return this._dataModel.QueryExpression.SubEntityJoins[0].Entity\r\n }\r\n\r\n if (this._dataModel.QueryExpression.ReferenceLookupEntityJoins.length > 0) {\r\n return this._dataModel.QueryExpression.ReferenceLookupEntityJoins[0].Entity\r\n }\r\n }\r\n\r\n public SetGridDataModel(model: IGetGridDataRequestModel) {\r\n this._gridDataModel = model;\r\n }\r\n\r\n public ShowBulkEditor() {\r\n //TODO refactor\r\n\r\n var bulkEditRow = this.GetBulkEditRow();\r\n\r\n if (bulkEditRow) {\r\n\r\n const editingRows = _.uniq(_.map(_.filter(this._rows(), (item) => item.Model.Rights.IsEditingAllowed),\r\n (row) => row.RecordId));\r\n\r\n if (_.size(editingRows) === 0) {\r\n return;\r\n }\r\n\r\n const entityId = _.first(this._rows()).EntityId;\r\n\r\n BlockUI.Block();\r\n LockManager.Instance.TryLocks(entityId, editingRows)\r\n .then((ids) => {\r\n if (ids && ids.length !== editingRows.length) {\r\n new Notifier().Warning(NOTIFICATIONS.SOME_RECORDS_ARE_LOCKED);\r\n }\r\n\r\n if (ids && ids.length > 0) {\r\n new Notifier().Success(\r\n NOTIFICATIONS.BULK_EDIT_RECORD_NUMBER_WILL_BE_EDITED.replace('{records}', `${ids.length}`)\r\n );\r\n }\r\n\r\n this.AddInLockRows(ids);\r\n\r\n bulkEditRow.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n this._bulkEditRow(null);\r\n this.RemoveFromLockRows(ids);\r\n LockManager.Instance.ReleaseLocks(entityId, this.GetIdsForRelease(entityId, ids));\r\n });\r\n\r\n bulkEditRow.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n var result = [];\r\n let isDataValid = true;\r\n\r\n _.each(bulkEditRow.DataCells, item => {\r\n if (!item.IsDataValid() && !item.IsReadOnly()) {\r\n isDataValid = false;\r\n }\r\n });\r\n\r\n if (isDataValid) {\r\n _.each(bulkEditRow.DataCells, item => {\r\n item.SaveControlValue();\r\n });\r\n }\r\n\r\n _.each(_.filter(this._rows(), item => _.contains(ids, item.RecordId)),\r\n (row: GridRow) => {\r\n if (isDataValid) {\r\n if (row.Model.Rights.IsEditingAllowed) {\r\n const rowDataModel = new GridRowDataModel();\r\n rowDataModel.SubjectEntityId = this._dataModel.SubjectEntityId;\r\n rowDataModel.SubjectRecordId = this._dataModel.SubjectRecordId;\r\n rowDataModel.EntityId = row.EntityId;\r\n rowDataModel.RecordId = row.RecordId;\r\n rowDataModel.State = States.Edit;\r\n rowDataModel.KSeq = row.KSeq;\r\n\r\n _.each(row.DataCells,\r\n item => {\r\n if (item.IsEnableEdit()) {\r\n const fieldData = new FieldDataModel();\r\n\r\n var bulkCell = _.find(bulkEditRow.DataCells,\r\n (bulkCellItem) => {\r\n return bulkCellItem.QueryColumnGuid ===\r\n item.QueryColumnGuid;\r\n });\r\n\r\n if (bulkCell && bulkCell.IsEnableEdit()) {\r\n fieldData.Value = bulkCell.Value;\r\n if (bulkCell.Value && bulkCell.Value != \"0\") {\r\n fieldData.FieldId = item.FieldId;\r\n fieldData.EntityId = item.EntityId;\r\n fieldData.RecordKeys = item.Model.RecordKeys || [];\r\n fieldData.Translations = this.GetTranslations(item);\r\n rowDataModel.Data.push(fieldData);\r\n }\r\n }\r\n }\r\n });\r\n result.push(rowDataModel);\r\n }\r\n }\r\n });\r\n\r\n BlockUI.Block();\r\n GridStore.UpdateRows({ Rows: result })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n this.RemoveFromLockRows(ids);\r\n LockManager.Instance.ReleaseLocks(entityId, this.GetIdsForRelease(entityId, ids));\r\n })\r\n .then(data => {\r\n this._bulkEditRow(null);\r\n this.Trigger(EVENTS.DATA_SAVED, { UpdateResult: data });\r\n });\r\n });\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n\r\n this._bulkEditRow(bulkEditRow);\r\n }\r\n }\r\n\r\n private AddInLockRows(ids: number[]) {\r\n _.forEach(ids,\r\n (id) => {\r\n const row = _.find(this._lockRows, (item) => item.RecordId === id);\r\n if (!row) {\r\n const lockRow = _.find(this._rows(), (item) => item.RecordId === id);\r\n if (lockRow) {\r\n this._lockRows.push(lockRow);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private RemoveFromLockRows(ids: number[]) {\r\n this._lockRows = _.reject(this._lockRows, lockRow => _.contains(ids, lockRow.RecordId))\r\n }\r\n\r\n private GetIdsForRelease(entityId: number, ids: number[]) {\r\n if (this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (entityId === this._form.GetScreen().GetEntityId()) {\r\n ids = _.without(ids, this._form.GetScreen().GetRecordId());\r\n }\r\n }\r\n\r\n return ids;\r\n }\r\n\r\n\tget HasInlineControls() {\r\n\t\treturn this._inlineControls && this._inlineControls.length > 0;\r\n\t}\r\n\r\n GetInlineControls() {\r\n return _.map(this._inlineControls, (control) => {\r\n let inlineControl = control.Clone();\r\n control.GetParentControl().AddSubControl(inlineControl);\r\n return inlineControl;\r\n });\r\n }\r\n\r\n GetBulkEditControls() {\r\n const controls = _.filter(this._inlineControls, (control) => {\r\n return control.GetType() !== CONTROL_TYPES.GenericButton;\r\n });\r\n\r\n return _.map(controls, (control) => {\r\n return control.Clone();\r\n });\r\n }\r\n\r\n get DataModel(): GridDataModel {\r\n return this._dataModel;\r\n }\r\n\r\n GetGroupedData(cells: DataCell[]) {\r\n if (!cells) {\r\n return [];\r\n }\r\n\r\n return cells.map(cell => {\r\n const column = this.groupColumns[cell.QueryColumnGuid];\r\n const value = (cell.Model.DisplayValue || cell.ViewValue || cell.Value);\r\n return { Title: column.Title, Value: value, Cell: cell };\r\n });\r\n }\r\n\r\n SortByRelationships() {\r\n if (this._sortByRelationshipOrderClassName() === ''){\r\n return;\r\n }\r\n\r\n if (this._sortByRelationshipOrder() === SortOrder.Both) {\r\n this._sortByRelationshipOrder(SortOrder.Asc);\r\n } else if (this._sortByRelationshipOrder() === SortOrder.Asc) {\r\n this._sortByRelationshipOrder(SortOrder.Desc);\r\n } else if (this._sortByRelationshipOrder() === SortOrder.Desc) {\r\n this._sortByRelationshipOrder(SortOrder.Both);\r\n }\r\n\r\n this.ResetSort(null);\r\n let sortColumns = [];\r\n let sortModel = new SortModel();\r\n sortModel.OrderColumn = 'IsParent';\r\n sortModel.SortOrder = this._sortByRelationshipOrder();\r\n sortColumns.push(sortModel);\r\n this.Trigger(EVENTS.SORT, {SortColumns: sortColumns});\r\n }\r\n\r\n EditAll() {\r\n const editingRows = _.uniq(\r\n _.map(\r\n _.filter(this._rows(), item => item.Model.Rights.IsEditingAllowed),\r\n row => row.RecordId\r\n )\r\n );\r\n\r\n if (editingRows.length > 0) {\r\n new Notifier().Success(\r\n NOTIFICATIONS.EDIT_ALL_RECORD_NUMBER_WILL_BE_EDITED.replace('{records}', `${editingRows.length}`)\r\n );\r\n }\r\n\r\n _.each(this._rows(), (row) => {\r\n row.IsEditMode = true;\r\n });\r\n }\r\n\r\n SaveAll(): boolean {\r\n let result = true;\r\n let editableRows = _.filter(this._rows(), (row) => {\r\n return row.IsEditMode;\r\n });\r\n\r\n _.each(editableRows, (row) => {\r\n if (!row.SaveRow()) {\r\n result = false;\r\n }\r\n });\r\n\r\n this.ResizeTableCellsAfterRender();\r\n\r\n return result;\r\n }\r\n\r\n ShowOriginalImage(imageCell: DataCell) {\r\n let contextRow = _.find(this._rows(), (row: GridRow) => {\r\n return _.any(row.DataCells, (cell) => cell == imageCell);\r\n });\r\n\r\n if (contextRow) {\r\n let cellIdex = contextRow.DataCells.indexOf(imageCell);\r\n\r\n let imageCells = _.map(this._rows(), (row: GridRow) => {\r\n return row.DataCells[cellIdex];\r\n });\r\n\r\n imageCells = _.filter(imageCells, (cell: DataCell) => {\r\n return cell && !_.isEmpty(cell.DisplayValue);\r\n });\r\n\r\n\r\n var opt = {\r\n markerable: false, \r\n button: true,\r\n inline: false,\r\n navbar: false,\r\n title: false,\r\n toolbar: true,\r\n tooltip: true,\r\n movable: true,\r\n zoomable: true,\r\n rotatable: true,\r\n scalable: true,\r\n transition: true,\r\n fullscreen: true,\r\n keyboard: true,\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() {\r\n return true;\r\n }\r\n };\r\n\r\n let container = $(\"<div/>\");\r\n\r\n _.each(imageCells, (imageCell) => {\r\n let node = imageCell.Wrapper.cloneNode() as HTMLElement;\r\n container.append(node);\r\n });\r\n\r\n\r\n let viewer = new Viewer(container[0], opt);\r\n let baseNext = viewer.next;\r\n\r\n viewer.next = (loop?: boolean) => {\r\n let index = viewer.index + 1;\r\n\r\n if (index === imageCells.length) {\r\n index = 0;\r\n }\r\n\r\n let cell = imageCells[index];\r\n\r\n if (cell) {\r\n this.LoadOriginalImage(cell, index, viewer, index == 0 ? null : baseNext);\r\n }\r\n return viewer;\r\n };\r\n\r\n let basePrev = viewer.prev;\r\n viewer.prev = (loop?: boolean) => {\r\n let index = viewer.index - 1;\r\n\r\n if (index < 0) {\r\n index = imageCells.length - 1;\r\n }\r\n\r\n let cell = imageCells[index];\r\n\r\n if (cell) {\r\n this.LoadOriginalImage(cell, index, viewer, index == imageCells.length - 1 ? null : basePrev);\r\n }\r\n return viewer;\r\n };\r\n this.LoadOriginalImage(imageCell, imageCells.indexOf(imageCell), viewer, null);\r\n }\r\n }\r\n\r\n private LoadOriginalImage(imageCell: DataCell, index: number, viewer: Viewer, navigationAction: Function) {\r\n BlockUI.Block();\r\n GridStore.GetImageValue({\r\n EntityId: imageCell.Model.EntityMetadata.Id,\r\n FieldId: imageCell.Model.FieldMetadata.Id,\r\n RecordKeys: imageCell.Model.RecordKeys\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then(originalImage => {\r\n\r\n if (viewer.items) {\r\n let item = viewer.items[index];\r\n let img = item.querySelector('img');\r\n $(img).attr('data-original-url', `data:image/jpeg;base64,${originalImage.DisplayValue}`);\r\n } else {\r\n let img = viewer.images[index];\r\n $(img).attr('src', `data:image/jpeg;base64,${originalImage.DisplayValue}`);\r\n }\r\n\r\n if (navigationAction) {\r\n navigationAction.call(viewer);\r\n } else {\r\n viewer.view(index);\r\n }\r\n\r\n ViewerJsExtention.CustomTooltip();\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n get Paginator(): Paginator {\r\n return this._toolbar.Paginator();\r\n }\r\n}\r\n","export enum EntityTypes {\r\n\tEntity,\r\n\tSub,\r\n\tLink,\r\n\tSystem,\r\n\tLookup\r\n}","export enum RelationshipTypes {\r\n\tNone,\r\n\tParent,\r\n\tToItself,\r\n\tChild\r\n}","export enum ViewModes {\r\n\tTableView,\r\n\tListView,\r\n\tQuery,\r\n\tTemplate,\r\n\tSpim,\r\n\tKanbanQuery,\r\n\tInvoicingQuery\r\n}","export const EVENTS = {\r\n\tSORT: 'SORT',\r\n\tROW_SELECTION_CHANGED: 'ROW_SELECTION_CHANGED',\r\n\tOPEN_HYPERLINK: 'OPEN_HYPERLINK',\r\n\tDATA_SAVED: 'DATA_SAVED',\r\n\tDATA_REMOVED: 'DATA_REMOVED',\r\n\tNO_CHANGES: 'NO_CHANGES',\r\n\tEDIT_RECORD: 'EDIT_RECORD',\r\n\tEDIT_LINK: 'EDIT_LINK',\r\n\tCHANGE_VISIBLE_GROUP: 'CHANGE_VISIBLE_GROUP',\r\n\tEDIT_CLUSTERED_LINK: 'EDIT_CLUSTERED_LINK',\r\n\tSAVE_RECORD: 'SAVE_RECORD',\r\n\tSAVE_LIFESTATUS: 'SAVE_LIFESTATUS',\r\n\tDELETE_RECORD: 'DELETE_RECORD',\r\n\tUNLINK_RECORD: 'UNLINK_RECORD',\r\n\tCLICK_UNLINK_CHECKBOX: 'CLICK_UNLINK_CHECKBOX',\r\n\tCANCEL_EDIT\t: 'CANCEL_EDIT',\r\n\tCHANGE_LIFESTATUS: 'CHANGE_LIFESTATUS',\r\n\tEXPAND: 'EXPAND',\r\n\tCOLLAPSE: 'COLLAPSE',\r\n\tADD_TO_BASKET: 'ADD_TO_BASKET',\r\n\tREMOVE_FROM_BASKET: 'REMOVE_FROM_BASKET',\r\n\tREFRESH: 'REFRESH',\r\n\tRECORD_DELETED: 'RECORD_DELETED',\r\n\tRECORD_EDITED: 'RECORD_EDITED',\r\n\tRECORD_SAVED: 'RECORD_SAVED',\r\n\tUNDO_EVERY_RECORD: 'UNDO_EVERY_RECORD',\r\n\tUPDATE_GRID: 'UPDATE_GRID',\r\n\tFAST_FILTER: 'FAST_FILTER',\r\n\tLINK_NEXT_RELATION: 'LINK_NEXT_RELATION',\r\n\tMOVE_ROW_UP: 'MOVE_ROW_UP',\r\n\tMOVE_ROW_DOWN: 'MOVE_ROW_DOWN',\r\n\tHOVER_SORT: 'HOVER_SORT',\r\n\tUN_HOVER_SORT: 'UN_HOVER_SORT',\r\n\tDROPDOWN_VALUE_SELECTED: 'DROPDOWN_VALUE_SELECTED',\r\n\tBACK_LINKING_POPUP_REQUESTED: 'BACK_LINKING_POPUP_REQUESTED',\r\n\tSELECT_RECORD: 'SELECT_RECORD',\r\n\tUPDATE_SET_ENABLE_ADD_BUTTON: 'UPDATE_SET_ENABLE_ADD_BUTTON',\r\n\tSAVE_CHANGES: \"SAVE_CHANGES\",\r\n\tSHOW_ORIGINAL_IMAGE: \"SHOW_ORIGINAL_IMAGE\",\r\n\tLOAD_SUB_GRID: \"LOAD_SUB_GRID\",\r\n\tPRINT_LABEL: \"PRINT_LABEL\",\r\n\r\n\tCREATE_OR_DELETE_SORT_DESCRIPTION: 'CREATE_OR_DELETE_SORT_DESCRIPTION'\r\n};","import {Modal} from 'Core/Common/Modal';\r\nimport * as ko from \"knockout\";\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal'] = Template;\r\n\r\nexport class MemoValueModal {\r\n private _value: string;\r\n\r\n constructor(value: string) {\r\n this._value = value;\r\n }\r\n\r\n Show(){\r\n let modal = new Modal({}, true);\r\n ko.cleanNode(modal.Wrapper);\r\n ko.applyBindings(this, modal.Wrapper);\r\n modal.Show();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MemoValueModal';\r\n }\r\n\r\n AfterRender(){}\r\n}","// Module\nvar code = \"<iframe style=\\\"min-width:100%;height:600px\\\" data-bind=\\\"iframeContent: $data._value\\\"></iframe>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport GeneralTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/General.html';\r\nimport GeneralEditTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit.html';\r\nimport MemoTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo.html';\r\nimport SortDescriptionTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription.html';\r\nimport ImageTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Image.html';\r\nimport ReferenceTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference.html';\r\nimport YesNoTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo.html';\r\nimport ColorTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Color.html';\r\nimport MultiSelectTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect.html';\r\nimport PasswordTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Password.html';\r\nimport DocumentTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Document.html';\r\nimport NoAccess from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess.html';\r\nimport SortTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort.html';\r\nimport PhoneNumberTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber.html';\r\nimport ClusteredTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered.html';\r\nimport FormatTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Format.html';\r\nimport HyperLinkTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink.html';\r\nimport CurrencyTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency.html';\r\nimport SpimTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim.html';\r\nimport EmptyTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty.html';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/General'] = GeneralTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit'] = GeneralEditTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo'] = MemoTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription'] = SortDescriptionTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Image'] = ImageTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference'] = ReferenceTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo'] = YesNoTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Color'] = ColorTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect'] = MultiSelectTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Password'] = PasswordTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Document'] = DocumentTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess'] = NoAccess;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort'] = SortTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber'] = PhoneNumberTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered'] = ClusteredTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Format'] = FormatTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink'] = HyperLinkTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency'] = CurrencyTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim'] = SpimTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty'] = EmptyTemplate;","// Module\nvar code = \"\\t<div class=\\\"grid-cell-wrapper marker\\\"> <!--ko if: _icon() && !_icon().Image--> <i data-bind=\\\"css: GetIconClasses(_icon().FontName, _icon().Name)\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _icon().Image}\\\"> <!-- /ko --> <!--ko if: _model.FieldMetadata.FormatName !== 'Mail' --> <span class=\\\"valueBox\\\" data-bind=\\\"click: $data.Click.bind($data), attr: { title: Title }, css: { 'currencyIconPadding': $data.FormatName === 'Currency' && !!$data.GetViewValue(), 'hyperlink': $data._model.HyperlinkRecordId > 0, 'grid-barcode': $data.FormatName === 'Barcode'}\\\"> <!--ko if: $data.FormatName === 'Currency' && !!$data.GetViewValue() --> <i class=\\\"currencyIcon\\\"></i> <!-- /ko --> <!-- ko text: $data.GetViewValue() --><!-- /ko --> </span> <!-- /ko --> <!--ko if: _model.FieldMetadata.FormatName === 'Mail' --> <div data-bind=\\\"click: LoadTabs\\\" class=\\\"dropdown-toggle mailTabsToggler link-type-control-data\\\"> <a data-bind=\\\"text: $data.GetViewValue(), css : { [_id] : _id }\\\"></a> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n <div class='grid-mail-list-dropdown link-type-control-data'>\\r\\n <!-- ko foreach: _mails -->\\r\\n <a class='grid-mail-item' data-bind='attr: {title: Login}, text: Login, click: $parent.MailClick.bind($parent, $data)'></a>\\r\\n <!-- /ko -->\\r\\n </div>\\\"> </span> </div> <!-- /ko --> <!-- ko if: IsBarcodeButtonVisible() --> <a data-bind=\\\"click: PrintBarCode\\\" class=\\\"btn btn-icon-only blue grid-print-barcode\\\"> <i class=\\\"fa fa-print\\\"></i> </a> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() && $data.ViewValue --> <div class=\\\"grid-cell-wrapper marker\\\"> <!-- ko if: _showOriginalMemoButton --> <div class=\\\"show-button\\\"> <a data-bind=\\\"click: $data.ShowOriginalMemo.bind($data)\\\"> <i class=\\\"fa fa-file-text\\\"></i> </a> </div> <!-- /ko --> <div class=\\\"grid-memo\\\" data-bind=\\\"text: $data.TranslateValue\\\"></div> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <div class=\\\"memoEdit\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() && $data.ViewValue --> <div class=\\\"grid-cell-wrapper marker\\\"> <div class=\\\"edit-sort-description-button\\\" data-bind=\\\"click: $data.EditDescription.bind($data), tooltip: {content: $data._labels.EDIT_SORT_DESCRIPTION}\\\"> <i class=\\\"fa fa-pencil\\\"></i> </div> <div class=\\\"grid-memo memoDescriptionValue\\\" data-bind=\\\"html: $data.Value\\\"></div> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <div class=\\\"sortDescriptionsEditMemoBox\\\"> <div class=\\\"sortDescriptionsEditButtonBox\\\"> <span class=\\\"saveBtn\\\" data-bind=\\\"click: $data.SaveDescription.bind($data)\\\"> <i class=\\\"fa fa-save transition\\\"></i> </span> <span class=\\\"editBtn\\\" data-bind=\\\"click: $data.CancelEditDescription.bind($data)\\\"> <i class=\\\"fa fa-close transition\\\"></i> </span> </div> <!-- ko with: _editor --> <div class=\\\"memoEdit\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <!-- ko if: $data.ViewValue != '' && $data.ViewValue != null --> <img data-bind=\\\"attr: { src: 'data:image/jpeg;base64,' + $data.ViewValue }, click: $data.ShowOriginalImage.bind($data)\\\" class=\\\"image-centered main-img img-cyber-grid\\\" alt=\\\"\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"grid-cell-wrapper marker popover-multiline-container\\\"> <!--ko if: _referenceIcon() && !_referenceIcon().Image--> <i data-bind=\\\"css: GetIconClasses(_referenceIcon().FontName, _referenceIcon().Name), tooltip: {content: _referenceEntityName()}\\\"></i> <!--/ko--> <!-- ko if: _referenceIcon() && _referenceIcon().Image--> <img class=\\\"img-responsive image-icon-xs\\\" data-bind=\\\"attr: {src: _referenceIcon().Image}, tooltip: {content: _referenceEntityName()}\\\"> <!-- /ko --> <!--ko if: $data.ViewValue && !$data.RecordNotFound--> <span data-bind=\\\"text: $data.ViewValue,\\r\\n\\t\\t\\t\\t\\t click: $data.OpenMarkedEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t attr: { 'data-toggle': $data._reference() ? 'popover' : '' } ,\\r\\n\\t\\t\\t\\t\\t css: { 'hyperlink': $data._reference() && $data._reference().SelectedEntityRecord},\\r\\n\\t\\t\\t\\t\\t triggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t htmlMode: true\\\" data-placement=\\\"left\\\"> </span> <!--/ko--> <!--ko if: $data.RecordNotFound--> <span data-bind=\\\"text: $data.ViewValue\\\" data-placement=\\\"left\\\"> </span> <!--/ko--> <!--ko ifnot: $data.ViewValue--> <i class=\\\"fa fa-external-link\\\" data-bind=\\\"css: { 'hyperlink': $data._reference()}, click: $data.OpenMarkedEditScreen.bind($data)\\\"></i> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper\\\"> <input data-bind=\\\"uniform: $data.ViewValue === 'True' || $data.ViewValue === true\\\" type=\\\"checkbox\\\" disabled=\\\"disabled\\\"> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \" <!-- ko if: !_isEditMode() --> <div data-bind=\\\"style: {backgroundColor: $data.ViewValue}\\\" class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"text: $data.Value, style: {color: $data.GetContrast.bind($data)}\\\"></span> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"html: $data.ViewValue\\\"></span> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"text: $data.ViewValue, css: {hyperlink: _isHyperLink}, click: $data.Click.bind($data)\\\" class=\\\"password\\\"></span> <!-- ko if: !$data.ViewValue && $data._isHyperLink --> <i data-bind=\\\"click: $data.Click.bind($data)\\\" class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: DocumentManager --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"noAccess\\\" title=\\\"Access denied\\\"><i class=\\\"fa fa-ban\\\" aria-hidden=\\\"true\\\"></i></div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"tooltip: { content: $data.IsNotAbleSortMessage }, event: { mouseover: $data.HoverSort.bind($data), mouseout: $data.UnHoverSort.bind($data)}\\\"> <a data-bind=\\\"click: $data.MoveRowDown.bind($data), enableAttr: $data.IsAbleSort\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only default sort\\\"> <i class=\\\"fa fa-arrow-down sort\\\" data-action=\\\"moveDown\\\"></i> </a> <a data-bind=\\\"click: $data.MoveRowUp.bind($data), enableAttr: $data.IsAbleSort\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only default sort\\\"> <i class=\\\"fa fa-arrow-up sort\\\"></i> </a> <!-- ko if: HasSortDescription --> <a data-bind=\\\"click: $data.CreateOrRemoveDescription.bind($data), attr: { title: DescriptionTooltipContent}\\\" href=\\\"#\\\" class=\\\"btn btn-icon-only sort-description-btnContainer\\\"> <span class=\\\"fa-stack fa-lg sort-description-btnContainer-box\\\"> <i class=\\\"fa fa-file-text-o fa-stack-2x iconLarge\\\"></i> <i class=\\\"iconMini\\\"><span class=\\\"circleBtn\\\" data-bind=\\\"css: {'minus': _hasDescription}\\\"></span></i> </span> </a> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() && GetPhoneViewValue()--> <div class=\\\"intl-wrapper intl-wrapper--grid\\\"> <input data-bind=\\\"textInput: GetPhoneViewValue(),\\r\\n\\t\\t\\t\\t\\t\\t\\t intlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'off',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t \\t\\t\\tinitialCountry: _globalCountry\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t },\\r\\n\\t\\t\\t\\t\\t\\t\\t attr: {'value': GetPhoneViewValue()}\\\" readonly=\\\"readonly\\\" disabled=\\\"disabled\\\" type=\\\"phone\\\" class=\\\"grid-phone-input\\\" rows=\\\"1\\\"/> <a class=\\\"hyperlink\\\" data-bind=\\\"text: GetPhoneViewValue(),\\r\\n attr: {href: 'tel:' + GetPhoneViewValue()}\\\"></a> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"grid-cell-wrapper relation-type-cell-wrapper\\\"> <!-- ko if: _showClusteredArrow --> <!-- ko if: Model.Details.length > 0 --> <i class=\\\"fa transition fa-edit relation-type-icon\\\" data-bind=\\\"visible: $data.ShowEditRelationTypeButton, click: $data.ShowNextRelationTypeScreen.bind($data, true), class: _pivotDetailsDropDown._id\\\"></i> <!-- /ko --> <!-- ko if: RelationType.HasNext --> <!-- ko if: Model.Details.length === 1 --> <i class=\\\"fa fa-arrow-right relation-type-icon\\\" data-bind=\\\"visible: $data.ShowNextRelationTypeButton, click: SelectNextRelationType\\\"></i> <!-- /ko --> <!-- ko if: Model.Details.length > 1 --> <i class=\\\"fa fa-arrow-right relation-type-icon\\\" data-bind=\\\"visible: $data.ShowNextRelationTypeButton, click: ShowNextRelationTypeScreen.bind($data, false), class: _pivotDetailsDropDown._id\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: RelationType.HasNext --> <i data-bind=\\\"visible: $data.ShowNextRelationTypeButton\\\" class=\\\"fa fa-arrow-right relation-type-icon disabled\\\"></i> <!-- /ko --> <!-- /ko --> <span class=\\\"relation-type-viewvalue\\\" data-bind=\\\"text: $data.GetViewValue(), attr: { title: $data.Title }\\\"></span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <!-- ko with: _formatManager --> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <!-- ko if: $data.ViewValue --> <div class=\\\"grid-cell-wrapper\\\"> <span class=\\\"hyperlink\\\" data-bind=\\\"text: $data.GetViewValue(),\\r\\n\\t\\t\\t\\t\\t \\tclick: $data.Click.bind($data),\\r\\n\\t\\t\\t\\t\\t \\tattr: {'title': $data._notifications.GRID_CELL_HYPERLINK_TOOLTIP}\\\"> </span> </div> <!-- /ko --> <!-- ko if: !$data.ViewValue --> <i data-bind=\\\"click: $data.Click.bind($data)\\\" class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: !_isEditMode() --> <div class=\\\"grid-cell-wrapper marker\\\"> <!--ko if: _icon() && !_icon().Image--> <i data-bind=\\\"css: GetIconClasses(_icon().FontName, _icon().Name), attr: { title: _currencyValue.Currency.IsoCode }\\\"></i> <!--/ko--> <!-- ko if: _icon() && _icon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _icon().Image, title: _currencyValue.Currency.IsoCode }\\\"> <!-- /ko --> <span data-bind=\\\"text: $data.GetViewValue(), click: $data.Click.bind($data), attr: { title: Title }, tooltip: { content: GetRateTitle() }\\\"></span> </div> <!-- /ko --> <!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _isEditMode() --> <!-- ko with: _editor --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _isEditMode() --> <!--ko if: !Model.Spim || !Model.Spim.FeatureTypeIsSet || Model.Spim.IsAlphaNumeric || Model.Spim.IsNumeric || Model.Spim.IsRange--> <div class=\\\"grid-cell-wrapper\\\"> <span data-bind=\\\"text: DisplayValue\\\"></span> </div> <!-- /ko --> <!--ko if: Model.Spim && Model.Spim.IsLogic--> <div class=\\\"grid-cell-wrapper\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"uniform: Model.Spim.LogicalValue\\\" disabled=\\\"disabled\\\"> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div></div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {FlagResolver} from \"Core/Common/FlagResolver\";\r\nimport {FieldFlags} from \"Core/Common/Enums/FieldFlags\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {\r\n ConvertedCurrencyModel,\r\n CurrencyValueModel,\r\n GridCellValueModel,\r\n RelationTypeModel, SpimValueModel\r\n} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {\r\n FieldMetadataModel,\r\n extractLookupValFieldMetadata\r\n} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {\r\n FIELD_TYPE_TO_CONTROL,\r\n FIELD_TYPES,\r\n LABEL_POSITIONS,\r\n CONTROL_TYPES,\r\n FONT_NAME\r\n} from 'Core/Constant';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {ReferenceModel} from 'Core/ScreenManager/Models/ReferenceModel';\r\nimport {RenderModes, SYSTEM_FIELD_NAMES} from 'Core/Constant';\r\nimport {DISPLAY_PRIORITY_TO_CSS} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {DocumentManager} from 'Core/Components/Controls/DocumentManager/DocumentManager';\r\nimport {DocumentDataModel} from 'Core/Controls/Document/DocumentDataModel';\r\nimport {EVENTS as DOCUMENT_MANAGER_EVENTS} from 'Core/Components/Controls/DocumentManager/Events';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {FormatManager, FormatsEnum} from 'Core/Components/FormatManager/FormatManager';\r\nimport {IForm} from \"Core/Screens/IScreen\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Dropdown} from \"Core/Controls/Dropdown/Dropdown\";\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {EntityTypes} from \"../Enums/EntityTypes\";\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {IntlTelInputExtention} from \"Core/KnockoutExtentions/IntlTelInputExtention\";\r\nimport {MultiSelect} from 'Core/Controls/MultiSelect/MultiSelect';\r\nimport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {GridStore} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport {MemoValueModal} from \"Core/Controls/Grid/BaseGrid/GridCell/MemoValueModal\";\r\nimport {Util} from \"QueryBuilder/Util\";\r\nimport {PivotDetailsDropdown} from \"Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/PivotDetailsDropdown\";\r\nimport {GridRowModel} from \"Core/Controls/Grid/Models/GridDataModel/GridRowModel\";\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {FieldDataModel} from \"Core/Screens/Common/LinkEditor/Models/DataModel\";\r\nimport {CONTROL_TYPES_LINK} from 'Core/Controls/Text/Constants';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {FieldFormat, FORMATS} from \"Core/Common/FieldFormat\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport 'Core/Controls/Grid/BaseGrid/GridCell/DataCellTemplates';\r\nimport { MailStore } from 'Core/Controls/Mail/Stores/MailStore'\r\nimport { MailTabModel } from 'Core/Controls/Mail/Models/MailTabModel'\r\nimport {\r\n FormatManagerStore,\r\n ICreateEmlMessageRequestModel\r\n} from 'Core/Components/FormatManager/Stores/FormatManagerStore';\r\nimport { ComposeMail } from 'Core/Controls/Mail/ComposeMail';\r\nimport { JBoxDropDown } from 'Core/Components/JBoxDropdown/DropDown';\r\nimport { QueryColumnModel } from '../../Models/GridDataModel/QueryExpression/QueryColumnModel';\r\n\r\n(moment as any).createFromInputFallback = config => {\r\n config._d = new Date(config._i);\r\n};\r\n\r\nexport interface IDataCellParams {\r\n Model: GridCellValueModel,\r\n ScreenType: string,\r\n MaxRowHeight: string,\r\n IsNewRecord: boolean,\r\n Form: IForm,\r\n QueryExpression: QueryExpressionModel\r\n}\r\n\r\nexport class DataCell extends Event {\r\n private _model: GridCellValueModel;\r\n private _isEnableEdit: KnockoutObservable<boolean>;\r\n private _isHyperLink: boolean;\r\n private _valueChanged: KnockoutObservable<boolean>;\r\n private _editValue: KnockoutObservable<string>;\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _editor: KnockoutObservable<IControl>;\r\n private _size: KnockoutObservable<any>;\r\n private _height: KnockoutObservable<number>;\r\n private _documentManager: DocumentManager;\r\n private _screenType: string;\r\n private _maxRowHeight: string;\r\n private _isNewRecord: boolean;\r\n private _formatManager: FormatManager;\r\n private _notifications: NOTIFICATIONS;\r\n private _valueExists: KnockoutObservable<boolean>;\r\n private _form: IForm;\r\n private _reference: KnockoutObservable<ReferenceModel>;\r\n private _referenceIcon: KnockoutObservable<Icon>;\r\n private _referenceEntityName: KnockoutObservable<string>;\r\n private _viewValue: KnockoutObservable<string>;\r\n private _showClusteredArrow: boolean;\r\n private _queryExpression: QueryExpressionModel;\r\n private _globalCountry: string;\r\n private GetTemplateName: KnockoutComputed<string>;\r\n private _icon: KnockoutObservable<Icon>;\r\n private _pivotDetailsDropDown: PivotDetailsDropdown;\r\n private _currencyValue: CurrencyValueModel;\r\n private _showOriginalMemoButton: KnockoutObservable<boolean>;\r\n private _recordNotFound: KnockoutObservable<boolean>;\r\n private Tooltip: KnockoutObservable<ITooltipConfig>;\r\n private _el: HTMLElement;\r\n private _mails: KnockoutObservableArray<MailTabModel>;\r\n private _hasMails: KnockoutComputed<boolean>;\r\n private _showMails: KnockoutComputed<boolean>;\r\n private _dropDown: JBoxDropDown;\r\n private _id: string;\r\n private _labels: LABELS;\r\n private _hasDescription: boolean;\r\n\r\n constructor(params: IDataCellParams) {\r\n super();\r\n this._showClusteredArrow = params.QueryExpression.IsCrossTable;\r\n this._queryExpression = params.QueryExpression;\r\n this._screenType = params.ScreenType;\r\n this._isNewRecord = params.IsNewRecord;\r\n this._isHyperLink = params.Model.IsHyperLink;\r\n this._model = params.Model;\r\n this._isEditMode = ko.observable(false).extend({ rateLimit: 1 });\r\n this._valueChanged = ko.observable(false);\r\n this._editValue = ko.observable('');\r\n this._editor = ko.observable(null);\r\n this._size = ko.observable({width: '500px', height: '0px'});\r\n this._height = ko.observable(0);\r\n this.InitEvents();\r\n this._model.MaxRowHeight = params.MaxRowHeight;\r\n this._maxRowHeight = params.MaxRowHeight;\r\n this._formatManager = null;\r\n this._notifications = NOTIFICATIONS;\r\n this._valueExists = ko.observable(Boolean(this._model.TranslatedValue || this._model.DisplayValue));\r\n this._form = params.Form;\r\n this._referenceIcon = ko.observable(null);\r\n this._referenceEntityName = ko.observable(null);\r\n this._viewValue = ko.observable(null);\r\n this._icon = ko.observable(null);\r\n this._pivotDetailsDropDown = new PivotDetailsDropdown();\r\n this._showOriginalMemoButton = ko.observable(!this._isNewRecord);\r\n this._recordNotFound = ko.observable(false);\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._labels = LABELS;\r\n this._hasDescription = params.Model.HasDescription;\r\n\r\n if(this.Model.FieldMetadata){\r\n this.Tooltip = ko.observable<ITooltipConfig>({\r\n content: this.TooltipContent(_.escape(this.TranslateValue), this.Model.FieldMetadata.Type.toString(), this.Model.FieldMetadata.FormatName.toString()),\r\n position: { x: 'right', y: 'center' },\r\n outside: 'x',\r\n addClass: 'ellipsis-tooltip'\r\n });\r\n }\r\n\r\n if (this._model.FieldMetadata && this._model.FieldMetadata.FormatName === FieldFormat.MAIL) {\r\n this.ApplyMailProperties();\r\n }\r\n\r\n this._pivotDetailsDropDown.On(EVENTS.REFRESH, this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n this._pivotDetailsDropDown.On(EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs) => {\r\n this.Trigger(EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: eventArgs.data.grid });\r\n });\r\n\r\n this._pivotDetailsDropDown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n let row = eventArgs.data.SelectedRecord.Model as GridRowModel;\r\n let clusteredCell = _.last(row.Data);\r\n\r\n this._pivotDetailsDropDown.Close();\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.LINK_RECORD_WITH_NEXT_RELATION_TYPE,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Trigger(EVENTS.LINK_NEXT_RELATION, { field: clusteredCell});\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n });\r\n\r\n if (this._model.Type === FIELD_TYPES.Reference) {\r\n this.SetReferenceData(this._model.Reference);\r\n }\r\n\r\n if (this._model.Type === FIELD_TYPES.Spim && (!this._model.Spim || !this._model.Spim.FeatureTypeIsSet)) {\r\n this._model.IsEnableEdit = false;\r\n }\r\n\r\n this._isEditMode.subscribe(async (editMode: boolean) => {\r\n if (editMode) {\r\n let editor = await this.GetDataEditor();\r\n this._editor(editor);\r\n\r\n if (editor && editor.GetType() === CONTROL_TYPES.Memo) {\r\n\r\n if (this._isNewRecord) {\r\n this._editValue(this._model.Value);\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Value = this._model.Value;\r\n controlDataModel.DisplayValue = this._model.OriginalDisplayValue;\r\n controlDataModel.Translations = this._model.Translations;\r\n editor.SetValue({\r\n SubjectEntityId: null,\r\n SubjectRecordId: -1,\r\n Data: controlDataModel,\r\n RecordSpecsModel: null\r\n });\r\n } else {\r\n GridStore.GetMemoValue(\r\n {\r\n EntityId: this.Model.EntityMetadata.Id,\r\n FieldId: this.Model.FieldMetadata.Id,\r\n RecordKeys: this.Model.RecordKeys\r\n }).then((data) => {\r\n this._editValue(data.Value);\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Value = data.Value;\r\n controlDataModel.DisplayValue = data.DisplayValue;\r\n controlDataModel.Translations = data.Translations;\r\n editor.SetValue({\r\n SubjectEntityId: null,\r\n SubjectRecordId: -1,\r\n Data: controlDataModel,\r\n RecordSpecsModel: null\r\n });\r\n });\r\n }\r\n\r\n } else {\r\n this._editValue(this._model.Value);\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Value = this._model.Currency || this._model.Spim || this._model.Value;\r\n controlDataModel.DisplayValue = this._model.OriginalDisplayValue;\r\n controlDataModel.Translations = this._model.Translations;\r\n editor.SetValue({\r\n SubjectEntityId: null,\r\n SubjectRecordId: -1,\r\n Data: controlDataModel,\r\n RecordSpecsModel: null\r\n });\r\n }\r\n\r\n if (this._editor() && this._editor().GetType() === CONTROL_TYPES.Memo) {\r\n this._editor().On('AFTER_RENDER',\r\n this,\r\n (eventArgs: any) => {\r\n this._height($(this._editor().GetWrapper()).height());\r\n });\r\n }\r\n\r\n if (this._editor() && this._editor().GetType() === CONTROL_TYPES.Dropdown) {\r\n this._editor().On(EVENTS.DROPDOWN_VALUE_SELECTED,\r\n this,\r\n (eventArgs: any) => {\r\n const editor = this._editor() as Dropdown;\r\n const fieldId = editor.GetFieldModel().Id;\r\n this.Trigger(EVENTS.DROPDOWN_VALUE_SELECTED, {\r\n recordId: eventArgs.data.recordId,\r\n fieldId: fieldId\r\n });\r\n });\r\n }\r\n\r\n }\r\n });\r\n\r\n _.each(this._model.Details, (detail) => {\r\n detail.FieldMetadata = this._model.FieldMetadata;\r\n detail.EntityMetadata = this._model.EntityMetadata;\r\n });\r\n\r\n this.InitPhoneCountry();\r\n this.Init();\r\n }\r\n\r\n private InitEvents(){\r\n this.AddEvent(EVENTS.REFRESH);\r\n this.AddEvent(EVENTS.LINK_NEXT_RELATION);\r\n this.AddEvent(EVENTS.DROPDOWN_VALUE_SELECTED);\r\n this.AddEvent(EVENTS.MOVE_ROW_DOWN);\r\n this.AddEvent(EVENTS.MOVE_ROW_UP);\r\n this.AddEvent(EVENTS.HOVER_SORT);\r\n this.AddEvent(EVENTS.UN_HOVER_SORT);\r\n this.AddEvent(EVENTS.SHOW_ORIGINAL_IMAGE);\r\n this.AddEvent(EVENTS.EDIT_CLUSTERED_LINK);\r\n this.AddEvent(EVENTS.PRINT_LABEL);\r\n this.AddEvent(EVENTS.SAVE_RECORD);\r\n this.AddEvent(EVENTS.CREATE_OR_DELETE_SORT_DESCRIPTION);\r\n }\r\n\r\n private InitPhoneCountry() {\r\n const global = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_COUNTRY_CODE).toLowerCase();\r\n if (IntlTelInputExtention.IsCountryValid(global)) {\r\n this._globalCountry = global;\r\n } else {\r\n this._globalCountry = 'nl';\r\n }\r\n }\r\n\r\n private SetReferenceData(reference) {\r\n this._reference = ko.observable(reference);\r\n if (this._reference()) {\r\n const entityRecord = this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference().ReferenceTable;\r\n\r\n if (entityRecord && !entityRecord.SelectedEntity) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = NOTIFICATIONS.TABLE_NOT_FOUND;\r\n return;\r\n } else if (entityRecord && !entityRecord.SelectedRecord) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = NOTIFICATIONS.RECORD_NOT_FOUND;\r\n this._recordNotFound = ko.observable(true);\r\n return;\r\n } else {\r\n this.ViewValue = reference.TranslatedName || reference.Name;\r\n\r\n if (referenceTable && referenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = LABELS.NO_RECORD;\r\n return;\r\n }\r\n\r\n if (referenceTable && !referenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this.ViewValue = NOTIFICATIONS.INVALID_REFERENCE_TABLE;\r\n return;\r\n }\r\n\r\n if (entityRecord && entityRecord.IsValid) {\r\n const icon = entityRecord.SelectedEntity.Icon;\r\n if (icon) {\r\n this._referenceIcon(new Icon(icon));\r\n }\r\n\r\n const memo = entityRecord.SelectedRecord.MemoTranslation || entityRecord.SelectedRecord.Memo;\r\n const entityName = entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name;\r\n this.ViewValue = entityName;\r\n this._referenceEntityName(entityName);\r\n\r\n if (entityRecord.SelectedRecord.Name) {\r\n this.ViewValue = entityRecord.SelectedRecord.Name;\r\n } else {\r\n this._referenceIcon(null);\r\n this.ViewValue = null;\r\n }\r\n }\r\n }\r\n } else {\r\n this.ViewValue = NOTIFICATIONS.REFERENCE_TABLE_NOT_SET;\r\n this.SetInvalidIcon();\r\n }\r\n }\r\n\r\n private get IsAbleSort(): boolean {\r\n return this.Model.SortDirection !== SortOrder.Both && (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] || this._screenType === ScreenTypes[ScreenTypes.EditScreen]);\r\n }\r\n\r\n private get IsNotAbleSortMessage(): string {\r\n if (this._screenType !== ScreenTypes[ScreenTypes.ConsultScreen] && this._screenType !== ScreenTypes[ScreenTypes.EditScreen]) {\r\n return NOTIFICATIONS.NOT_APPLICABLE_FOR_LIST_SCREEN;\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] || this._screenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (this.Model.SortDirection === SortOrder.Both) {\r\n return NOTIFICATIONS.SORT_BY_COLUMN_TO_ENABLE_SORTING;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private SetInvalidIcon() {\r\n let iconModel = new IconModel();\r\n iconModel.IsImage = false;\r\n iconModel.IsIcon = true;\r\n iconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n iconModel.Name = 'fa-times';\r\n\r\n this._referenceIcon(new Icon(iconModel));\r\n }\r\n\r\n private SetLinkIcon() {\r\n let iconModel = new IconModel();\r\n iconModel.IsImage = false;\r\n iconModel.IsIcon = true;\r\n iconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n iconModel.Name = 'fa-external-link';\r\n\r\n this._referenceIcon(new Icon(iconModel));\r\n }\r\n\r\n async GetDataEditor(): Promise<IControl> {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.FormatName = this._model.FieldMetadata.FormatName;\r\n attachedFieldModel.Id = this._model.FieldMetadata.Id;\r\n attachedFieldModel.Name = this._model.FieldMetadata.Name;\r\n attachedFieldModel.AllowCustomValue = this._model.FieldMetadata.AllowCustomValue;\r\n attachedFieldModel.AllowCreatingRecords = this._model.FieldMetadata.AllowCreatingRecords;\r\n attachedFieldModel.EntityId = this._model.EntityMetadata.Id;\r\n attachedFieldModel.ValTableId = this._model.FieldMetadata.ValTableId;\r\n attachedFieldModel.ValTableName = this._model.FieldMetadata.ValTableName;\r\n attachedFieldModel.IsReadOnly = this._model.FieldMetadata.IsReadOnly;\r\n attachedFieldModel.IsRequired = this._model.FieldMetadata.IsRequired;\r\n\t\tattachedFieldModel.IsSystem = this.IsFieldSystem();\r\n attachedFieldModel.FieldTypeName = this._model.FieldMetadata.Type;\r\n attachedFieldModel.Size = this._model.FieldMetadata.Size;\r\n attachedFieldModel.AllowInsert = this.IsInsertAllowed();\r\n attachedFieldModel.ValTableType = this._model.FieldMetadata.ValTableType;\r\n attachedFieldModel.ValFieldId = this._model.FieldMetadata.ValFieldId;\r\n\r\n const validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n if (validationFieldMetadata) {\r\n attachedFieldModel.ValFieldTypeName = validationFieldMetadata.Type;\r\n attachedFieldModel.ValFieldFormatName = validationFieldMetadata.FormatName;\r\n attachedFieldModel.ValFieldSize = validationFieldMetadata.Size;\r\n }\r\n\r\n const controlModel = new ControlModel();\r\n\t\tcontrolModel.IsReadOnly = this.IsControlReadOnly();\r\n controlModel.IsRequired = this._model.FieldMetadata.IsRequired;\r\n controlModel.LabelPosition = LABEL_POSITIONS.NoLabel;\r\n controlModel.TypeName = FIELD_TYPE_TO_CONTROL[this._model.FieldMetadata.Type];\r\n controlModel.Fields.push(attachedFieldModel);\r\n controlModel.FieldFlag = this._model.Flags;\r\n\r\n let renderMode = RenderModes.Edit;\r\n if( attachedFieldModel.Name === SYSTEM_FIELD_NAMES.F_TYPE && this._model.Value !== '0' && this._model.Value){\r\n renderMode = RenderModes.View;\r\n }\r\n const params: IControlParam = {\r\n Model: controlModel,\r\n Form: this._form,\r\n RenderMode: renderMode\r\n };\r\n\r\n const controlFactory = (await import('Core/Controls/ControlFactory')).ControlFactory;\r\n const control = controlFactory.CreateControl(params);\r\n\r\n\r\n if(controlModel.TypeName === CONTROL_TYPES.Dropdown && this._model.RecordKeys.length === 0){\r\n (control as Dropdown).AutoSelectIfOneRecord = true;\r\n }\r\n\r\n return control as IControl;\r\n }\r\n\r\n IsDataChanged() {\r\n if (this._isEnableEdit()) {\r\n if (this._editor && this._editor().IsModified()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n IsDataValid() {\r\n if (this._isEnableEdit()) {\r\n if (this._editor()) {\r\n if (!this._editor().IsValid()) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n GetContrast() {\r\n return ColorConverter.GetContrast(this.ViewValue);\r\n }\r\n\r\n IsEnableEdit(): boolean {\r\n return this._model.IsEnableEdit;\r\n }\r\n\r\n IsReadOnly() {\r\n if (this._isEnableEdit()) {\r\n if (this._editor()) {\r\n return this._editor().GetIsReadOnly();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private IsControlReadOnly() {\r\n\t\tif ((this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_TYPE || this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_KIND)\r\n\t\t\t&& (this._isNewRecord || this.Value === \"0\")) {\r\n\t\t return false;\r\n\t\t}\r\n\r\n\t\treturn this._model.FieldMetadata.IsReadOnly || this._model.FieldMetadata.IsSystem;\r\n }\r\n\r\n private IsFieldSystem() {\r\n\t\tif ((this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_TYPE || this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_KIND)\r\n\t\t\t&& (this._isNewRecord || this.Value === \"0\")) {\r\n\t\t return false;\r\n\t\t}\r\n\r\n\t return this._model.FieldMetadata.IsSystem;\r\n }\r\n\r\n\tprivate IsInsertAllowed() {\r\n\t\tif (this._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_TYPE ||\r\n\t\t\tthis._model.FieldMetadata.Name === SYSTEM_FIELD_NAMES.F_KIND) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this._model.FieldMetadata.AllowInsert;\r\n\t}\r\n\r\n private ApplyMailProperties() {\r\n this._mails = ko.observableArray<MailTabModel>();\r\n this._hasMails = ko.computed(() => {\r\n return this._mails().length > 0;\r\n }, this);\r\n this._showMails = ko.computed(() => {\r\n return this._mails().length > 1;\r\n }, this);\r\n }\r\n\r\n private LoadTabs() {\r\n let TryOpenComposer = () => {\r\n if (!this._showMails()) {\r\n this.MailClick(this._mails()[0]);\r\n } else {\r\n this.OpenDropDown()\r\n }\r\n };\r\n\r\n if (this._hasMails()) {\r\n TryOpenComposer();\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n MailStore.GetMailTabs()\r\n .then((tabs: any) => {\r\n //not issue something wrong with model\r\n _.map(tabs, (tab: any) => {\r\n let mail = new MailTabModel();\r\n mail.Login = tab.Login;\r\n mail.MailConnectionId = tab.MailConnectionId;\r\n mail.Client = tab.Client;\r\n this._mails.push(mail);\r\n });\r\n\r\n if (!this._hasMails()) {\r\n new Notifier().Failed(NOTIFICATIONS.PLEASE_ADD_YOUR_EMAIL);\r\n } else {\r\n TryOpenComposer();\r\n }\r\n })\r\n .always(() => BlockUI.Unblock())\r\n .fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n private OpenDropDown() {\r\n this._dropDown = new JBoxDropDown({\r\n target: \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: true,\r\n addClass: \"mails-dropdown\",\r\n onCloseComplete: () => this._dropDown.Destroy()\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: $(\".\" + this._id).next().data(\"jbox-content\") });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n private MailClick(mail: MailTabModel) {\r\n if (!!this._model.Value) {\r\n if (mail.Client === 'Desktop') {\r\n this.OpenDesktopClient(mail);\r\n } else {\r\n this.OpenInternalClient(mail);\r\n }\r\n\r\n } else {\r\n new Notifier().Failed(NOTIFICATIONS.PLEASE_ADD_EMAIL);\r\n }\r\n }\r\n\r\n private OpenDesktopClient(mail: MailTabModel) {\r\n var requestModel: ICreateEmlMessageRequestModel = {\r\n FromAddress: mail.Login,\r\n ToAddresses: [this._model.Value]\r\n }\r\n BlockUI.Block();\r\n FormatManagerStore.CreateEmlMessage(requestModel).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n private OpenInternalClient(mail: MailTabModel) {\r\n let composeMail = new ComposeMail({ResponseMailItem: null});\r\n composeMail.AddMailWithRecord(this._model.Value, this._model.FieldMetadata.ValTableId, this._model.RecordKeys[0].RecordId);\r\n composeMail.ShowInModal(mail.MailConnectionId);\r\n }\r\n\r\n\r\n private Init() {\r\n\r\n if (this._model.Icon) {\r\n this._icon(new Icon(this._model.Icon));\r\n }\r\n\r\n this._isEnableEdit = ko.observable(this._model.IsEnableEdit);\r\n this.AddEvent(EVENTS.OPEN_HYPERLINK);\r\n\r\n if(this._model.FieldMetadata){\r\n const notEnabledMail = FormatsEnum[this._model.FieldMetadata.FormatName] === FormatsEnum.Mail && !this._model.IsEnableMail;\r\n\r\n if (FormatsEnum.GetFormat(this._model.FieldMetadata.FormatName) && !notEnabledMail) {\r\n this._formatManager = new FormatManager({\r\n Screen: this._form?.GetScreen(),\r\n Icon: this.GetIconName(),\r\n Value: this._model.Value,\r\n Format: this._model.FieldMetadata.FormatName,\r\n TableId: 0,\r\n RecordId: -1,\r\n IsGrid: true\r\n });\r\n }\r\n }\r\n\r\n this.TranslateData();\r\n this.InitTemplate();\r\n }\r\n\r\n set IsEditMode(value: boolean) {\r\n if (this._isEnableEdit()) {\r\n this._isEditMode(value);\r\n }\r\n }\r\n\r\n get IsEditMode(): boolean{\r\n return this._isEditMode();\r\n }\r\n\r\n get ViewValue(): string {\r\n return this._model.TranslatedValue || this._model.DisplayValue;\r\n }\r\n\r\n set ViewValue(value: string) {\r\n this._model.DisplayValue = value;\r\n this._viewValue(value);\r\n }\r\n\r\n get RecordNotFound(): boolean {\r\n return this._recordNotFound();\r\n }\r\n\r\n GetViewValue(): KnockoutObservable<string> {\r\n this._viewValue(this.ViewValue);\r\n let fieldModelTypeName = this._model.FieldMetadata.Type;\r\n if (\r\n !!this.ViewValue &&\r\n _.contains([FIELD_TYPES.Integer, FIELD_TYPES.Decimal, FIELD_TYPES.Currency], fieldModelTypeName)\r\n ) {\r\n this._viewValue(FormatConverter.LocalizeDecimalOrInteger(this.ViewValue));\r\n } else if (this.Value == null && fieldModelTypeName === FIELD_TYPES.Radio) {\r\n this._viewValue(LABELS.EMPTY_VALUE);\r\n }\r\n return this._viewValue;\r\n }\r\n\r\n get FormatName(){\r\n return !!this._viewValue() && this._model.FieldMetadata.FormatName;\r\n }\r\n\r\n GetPhoneViewValue() {\r\n\r\n if (this._model.Value) {\r\n let phone = this._model.Value;\r\n\r\n if (phone.indexOf('+') > -1) {\r\n phone = phone.replace('+', '');\r\n }\r\n\r\n if (phone.indexOf('(') > -1) {\r\n //only for old ua phones (can be removed in future)\r\n return '+' + phone.replace(/\\D/g, '');\r\n } else if (phone.indexOf('-') > -1) {\r\n return '+' + phone.replace('-', '');\r\n } else {\r\n return '+' + phone.replace(/\\D/g, '');\r\n }\r\n }\r\n\r\n return this._model.Value;\r\n }\r\n\r\n get EditValue(): any {\r\n return this._editor().GetValue();\r\n }\r\n\r\n get EntityId(): number {\r\n return this._model.EntityMetadata.Id;\r\n }\r\n\r\n get EntityTypeName(): string {\r\n return this._model.EntityMetadata.Type;\r\n }\r\n\r\n get FieldId(): number {\r\n return this._model.FieldMetadata.Id;\r\n }\r\n\r\n get QueryColumnGuid(): string {\r\n return this._model.QueryColumnGuid;\r\n }\r\n\r\n get Model(): GridCellValueModel {\r\n return this._model;\r\n }\r\n\r\n get Value(): string {\r\n return this._model.Value;\r\n }\r\n\r\n set Value(value: string) {\r\n this._model.Value = value;\r\n }\r\n\r\n get DisplayValue() {\r\n return this._model.DisplayValue;\r\n }\r\n\r\n get Translations() {\r\n return this._model.Translations;\r\n }\r\n\r\n get IsLocked(): boolean {\r\n return false;\r\n }\r\n\r\n get IsWrapped(): boolean {\r\n return this._model.IsWrapped;\r\n }\r\n\r\n get IsSortDescription(): boolean {\r\n return this._model.IsSortDescription;\r\n }\r\n\r\n get IsOrdinary(){\r\n return !this.IsWrapped && !this.IsSortDescription;\r\n }\r\n\r\n get IsGroup(): boolean {\r\n return this._model.IsGroup;\r\n }\r\n\r\n get RelationType(): RelationTypeModel {\r\n return this._model.RelationType;\r\n }\r\n\r\n get Title(): string {\r\n if (this._model.Details && this._model.Details.length > 0) {\r\n let details = [];\r\n _.each(this._model.Details, (item) => {\r\n details.push(item.DisplayValue);\r\n });\r\n return details.join(\", \");\r\n }\r\n\r\n if(this._model.HyperlinkRecordId > 0){\r\n return NOTIFICATIONS.GRID_CELL_HYPERLINK_TOOLTIP;\r\n }\r\n \r\n return null; \r\n }\r\n\r\n get TranslateValue(): string {\r\n if (this.IsTranslatable()) {\r\n const translation = TranslationManager.Instance.GetTranslation(this._model.DisplayValue, this._model.Translations);\r\n return translation.TranslatedValue || translation.Value;\r\n } else {\r\n return this._model.Value;\r\n }\r\n }\r\n\r\n ShowNextRelationTypeScreen(editLink: boolean = false) {\r\n let allEntities = Util.GetAllQueryEntities(this._queryExpression), target = event.target;\r\n let subjectEntityId = 0;\r\n _.each(allEntities, (item) => {\r\n let column = _.find(item.Columns, (column) => {\r\n return column.Guid === this._model.QueryColumnGuid;\r\n });\r\n if (column) {\r\n let parentEntity = Util.GetParentEntity(item, this._queryExpression);\r\n if (parentEntity) {\r\n subjectEntityId = parentEntity.Metadata.Id;\r\n }\r\n }\r\n });\r\n\r\n let recordKeys = [];\r\n _.each(this._model.Details, (item) => {\r\n recordKeys.push(item.RecordKeys);\r\n });\r\n\r\n BlockUI.Block();\r\n GridStore.GetDataByClusteredField({\r\n SubjectEntityId: subjectEntityId,\r\n FieldId: this._model.FieldMetadata.Id,\r\n RecordKeys: recordKeys,\r\n DisplayFields: this.QueryColumn.DisplayFields \r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n\r\n if(editLink && result.Data.Rows.length == 1){\r\n this._pivotDetailsDropDown.SetData(result, editLink);\r\n return;\r\n }\r\n\r\n this._pivotDetailsDropDown.Show(target);\r\n this._pivotDetailsDropDown.SetData(result, editLink);\r\n });\r\n }\r\n\r\n get QueryColumn(): QueryColumnModel{\r\n return _.find(Util.GetAllQueryColumns(this._queryExpression), (col) => col.Guid === this._model.QueryColumnGuid);\r\n }\r\n\r\n Click(_, evt) {\r\n if (this._isHyperLink) {\r\n var recordkey = this._model.RecordKeys[0];\r\n\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: recordkey.EntityId,\r\n IsOpenAgenda: this._model.EntityMetadata.Name === 'AGENDA',\r\n\t\t\t\tRecordId: recordkey.RecordId,\r\n\t\t\t\tRecordTypeId: this._model.RecordTypeId,\r\n IsHyperlink: true,\r\n ViewValue: this._viewValue(),\r\n ShowInModal: evt.ctrlKey\r\n }); \r\n \r\n }\r\n\r\n if (this._model.HyperlinkRecordId > 0 && this._model.FieldMetadata.HyperlinkEntityId > 0) {\r\n this.NavigateByHyperlink(this._model.FieldMetadata.HyperlinkEntityId, this._model.HyperlinkRecordId, evt.ctrlKey);\r\n }\r\n }\r\n\r\n NavigateByHyperlink(entityId: number, recordId: number, showInModal: boolean){\r\n BlockUI.Block();\r\n GridStore.IsRecordValid({ TableId: entityId, RecordId : recordId })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then((result)=>{\r\n if(result){\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: this._model.FieldMetadata.HyperlinkEntityId,\r\n IsOpenAgenda: this._model.EntityMetadata.Name === 'AGENDA',\r\n RecordId: this._model.HyperlinkRecordId,\r\n IsHyperlink: true,\r\n ViewValue: this._viewValue(),\r\n ShowInModal: showInModal\r\n }); \r\n }else{\r\n new Notifier().Failed(NOTIFICATIONS.INVALID_RECORD_ID);\r\n }\r\n }).fail(err=>{\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n IsNoAccessCell() {\r\n var isNoAccess = (_.filter(this._model.RecordKeys, (key) => {\r\n return key.RecordId !== 0;\r\n }).length === 0 && (this._model.Value === null || this._model.Value === undefined)) && !this._isNewRecord;\r\n\r\n if (isNoAccess && (this._model.IsCrossValue || this._model.IsCrossRow)) {\r\n isNoAccess = false;\r\n }\r\n\r\n return isNoAccess;\r\n }\r\n\r\n InitTemplate() {\r\n this.GetTemplateName = ko.computed(()=>{\r\n if(!this._model.Type){\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Empty';\r\n }\r\n\r\n if (this.IsNoAccessCell() && (this._model.Type !== FIELD_TYPES.Document)) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/NoAccess';\r\n }\r\n\r\n if (this._model.Details.length > 0 && this._model.FieldMetadata.IsClustered) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Clustered';\r\n }\r\n\r\n switch (this._model.Type) {\r\n case FIELD_TYPES.Currency:\r\n this.PrepareCurrency();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Currency';\r\n case FIELD_TYPES.Spim:\r\n this.PrepareSpim();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Spim';\r\n case FIELD_TYPES.Sort:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Sort';\r\n case FIELD_TYPES.Reference:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Reference';\r\n case FIELD_TYPES.Image:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Image';\r\n case FIELD_TYPES.YesNo:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/YesNo';\r\n case FIELD_TYPES.Memo:\r\n this.PrepareMemo();\r\n\r\n if(this._model.IsSortDescription){\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SortDescription';\r\n }else{\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Memo';\r\n }\r\n \r\n case FIELD_TYPES.Color:\r\n this.PrepareColor();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Color';\r\n case FIELD_TYPES.Password:\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Password';\r\n case FIELD_TYPES.Document:\r\n this.PrepareDocument();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Document';\r\n case FIELD_TYPES.Date:\r\n case FIELD_TYPES.DateTime:\r\n case FIELD_TYPES.Time:\r\n this.PrepareTime();\r\n break;\r\n case FIELD_TYPES.TimeSpan:\r\n this.PrepareTimeSpan();\r\n break;\r\n case FIELD_TYPES.MultiSelect:\r\n this.PrepareMultiSelect();\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/MultiSelect';\r\n case FIELD_TYPES.Decimal:\r\n case FIELD_TYPES.Integer:\r\n this.PrepareDecimalOrInteger({ value: this._model.Value, fieldMetadata: this._model.FieldMetadata });\r\n break;\r\n }\r\n\r\n const validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n\r\n if (\r\n validationFieldMetadata &&\r\n _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n ) {\r\n this.PrepareDecimalOrInteger({\r\n value: this._model.OriginalDisplayValue,\r\n fieldMetadata: validationFieldMetadata,\r\n localize: true\r\n });\r\n }\r\n\r\n if (this._model.FieldMetadata.FormatName === FORMATS.PHONE_NUMBER) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/PhoneNumber';\r\n }\r\n\r\n if (this._formatManager) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/Format';\r\n }\r\n\r\n if (this._isHyperLink) {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/HyperLink';\r\n }\r\n\r\n return this._isEditMode() ? 'Core/Controls/Grid/BaseGrid/GridCell/Templates/GeneralEdit' : 'Core/Controls/Grid/BaseGrid/GridCell/Templates/General';\r\n })\r\n }\r\n\r\n private PrepareDecimalOrInteger({\r\n value,\r\n fieldMetadata,\r\n localize\r\n }: {\r\n value: string;\r\n fieldMetadata: FieldMetadataModel;\r\n localize?: boolean;\r\n }) {\r\n if (value) {\r\n const valueForDisplay =\r\n fieldMetadata.FormatName === 'Percentage'\r\n ? (Number(value) * 100).toFixed(fieldMetadata.Size < 2 ? 0 : fieldMetadata.Size - 2)\r\n : value;\r\n\r\n this._model.DisplayValue = localize\r\n ? FormatConverter.LocalizeDecimalOrInteger(valueForDisplay)\r\n : valueForDisplay;\r\n }\r\n }\r\n\r\n private PrepareMultiSelect() {\r\n let result = '';\r\n\r\n if (this._model.DisplayValue) {\r\n const validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n\r\n if (\r\n validationFieldMetadata &&\r\n _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n ) {\r\n const splitValues = this._model.DisplayValue.split(',\\\\n ');\r\n\r\n const formattedValues = splitValues.map(singleValue => FormatConverter.LocalizeDecimalOrInteger(\r\n validationFieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n ? (Number(singleValue) * 100).toFixed(validationFieldMetadata.Size < 2 ? 0 : validationFieldMetadata.Size - 2)\r\n : singleValue\r\n ));\r\n\r\n result = formattedValues.join(', ');\r\n } else {\r\n result = this._model.DisplayValue.replace(/\\\\n/g, '');\r\n }\r\n }\r\n\r\n this._model.DisplayValue = result;\r\n }\r\n\r\n private PrepareTimeSpan() {\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(this._model.FieldMetadata, true);\r\n this._model.DisplayValue = FormatConverter.ConvertFromDefaultFormat(this._model.DisplayValue, datetimeFormat);\r\n }\r\n\r\n private PrepareTime() {\r\n this._model.DisplayValue = this._model.Value;\r\n\r\n if(this._model.Type !== FIELD_TYPES.Date){\r\n this._model.DisplayValue = FormatConverter.CorrectTimezone(this._model.DisplayValue);\r\n } \r\n\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(this._model.FieldMetadata, true);\r\n\r\n this._model.DisplayValue = FormatConverter.ConvertFromDefaultFormat(this._model.DisplayValue, datetimeFormat);\r\n }\r\n\r\n private PrepareMemo() {\r\n this._model.DisplayValue = _.isEmpty(this._model.DisplayValue) ? null : this._model.DisplayValue.replace(/\\n/g, '');\r\n this._model.TranslatedValue = _.isEmpty(this._model.TranslatedValue) ? null : this._model.TranslatedValue.replace(/\\n/g, '');\r\n }\r\n\r\n private PrepareColor() {\r\n this._model.DisplayValue = ColorConverter.ToHex(this._model.DisplayValue);\r\n }\r\n\r\n private PrepareCurrency() {\r\n if (this._model.Currency) {\r\n this._currencyValue = this._model.Currency.Converted ? this._model.Currency.Converted : this._model.Currency.Origin;\r\n this._model.DisplayValue = this._currencyValue.Value.toFixed(this._model.FieldMetadata.Size);\r\n\r\n if (this._currencyValue.Currency && this._currencyValue.Currency.Icon) {\r\n this._icon(new Icon(this._currencyValue.Currency.Icon));\r\n } else {\r\n this._model.DisplayValue = LABELS.INVALID_FIELD_DATA;\r\n }\r\n }\r\n }\r\n\r\n private PrepareSpim() {\r\n if (!this._model.Spim || !this._model.Spim.FeatureTypeIsSet) {\r\n this._model.DisplayValue = LABELS.FEATURE_TYPE_IS_NOT_SET;\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsAlphaNumeric) {\r\n this._model.DisplayValue = this._model.Spim.AlphaNumericDisplayValue;\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsNumeric) {\r\n this._model.DisplayValue = FormatConverter.LocalizeDecimalOrInteger(\r\n this._model.Spim.NumericValue && this._model.Spim.NumericValue.toString()\r\n );\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsLogic) {\r\n this._model.DisplayValue = this._model.Spim.LogicalValue ? '1' : '0';\r\n return;\r\n }\r\n\r\n if (this._model.Spim.IsRange) {\r\n const rangeLow =\r\n this._model.Spim.RangeLow === null\r\n ? `(${LABELS.EMPTY})`\r\n : FormatConverter.LocalizeDecimalOrInteger(this._model.Spim.RangeLow.toString());\r\n const rangeHigh =\r\n this._model.Spim.RangeHigh === null\r\n ? `(${LABELS.EMPTY})`\r\n : FormatConverter.LocalizeDecimalOrInteger(this._model.Spim.RangeHigh.toString());\r\n this._model.DisplayValue = `${rangeLow} - ${rangeHigh}`;\r\n\r\n return;\r\n }\r\n }\r\n\r\n GetRateTitle() {\r\n if (this._model.Currency) {\r\n let rateDate = this._model.Currency.Origin ? this._model.Currency.Origin.RateDate : this._currencyValue.RateDate;\r\n const date = moment(rateDate).format('L');\r\n if (this._model.Currency.Origin.Currency) {\r\n const icon = new Icon(this._model.Currency.Origin.Currency.Icon);\r\n const template = `\r\n <div class=\"origin-tooltip\">${icon.GetTemplate()}${this._model.Currency.Origin.Value ? FormatConverter.LocalizeDecimalOrInteger(\r\n Number(this._model.Currency.Origin.Value.toString().replace(/[.,]/g, '.')).toFixed(2)) : ''} - ${date} </div>`;\r\n return (ko as any).renderTemplateXHtml(template, icon);\r\n }\r\n return '';\r\n }\r\n return '';\r\n }\r\n\r\n private PrepareDocument() {\r\n if (this._model.Values) {\r\n var documentDataModel = new DocumentDataModel();\r\n documentDataModel.Data = this._model.Values;\r\n documentDataModel.RecordKeys = this._model.RecordKeys;\r\n this._documentManager = new DocumentManager(\r\n this._screenType,\r\n this._form ? this._form.GetScreen() : null,\r\n documentDataModel,\r\n this.EntityId,\r\n this.EntityTypeName,\r\n this._model.FieldMetadata.Id,\r\n this._model.FieldMetadata.Name,\r\n this._model.IsEnableMail,\r\n this._model.Document.IsEnableSwitchVersion\r\n );\r\n\r\n this._documentManager.On(DOCUMENT_MANAGER_EVENTS.UPDATED, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n }\r\n }\r\n\r\n get DocumentManager() {\r\n return this._documentManager;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>) {\r\n this._el = _.find(elements, (element: HTMLElement)=> element.nodeType !== 8 && element.nodeType !== 3);\r\n }\r\n\r\n get Wrapper(): HTMLElement\r\n {\r\n return this._el;\r\n }\r\n\r\n get DisplayPriorityClass(): string {\r\n return this._model.DisplayPriority ? DISPLAY_PRIORITY_TO_CSS[this._model.DisplayPriority] : '';\r\n }\r\n\r\n SaveControlValue(linkEditorFieldData: FieldDataModel = null) {\r\n if (this._editor()) {\r\n\r\n\t this._isNewRecord = true;\r\n this._valueExists(this._editor().GetValue() || false);\r\n\r\n if (this.IsTranslatable()) {\r\n const defaultTranslation = this._editor().GetDefaultTranslation();\r\n const translations = this._editor().GetTranslations();\r\n\r\n this._model.Value = defaultTranslation.Value;\r\n this._model.DisplayValue = defaultTranslation.Value;\r\n this._model.Translations = translations;\r\n this._model.OriginalDisplayValue = defaultTranslation.Value;\r\n\r\n this.TranslateData();\r\n\r\n } else {\r\n this._model.Value = this._editor().GetValue();\r\n\t\t\t\tthis._model.DisplayValue = this._editor().GetValue();\r\n\t\t\t\tthis._model.OriginalDisplayValue = this._editor().GetValue();\r\n\r\n const controlType = this._editor().GetType();\r\n const controlsWithComplexValues = [CONTROL_TYPES.Currency, CONTROL_TYPES.Spim];\r\n\r\n if (_.some(controlsWithComplexValues, controlWithComplexValue => controlWithComplexValue === controlType)) {\r\n this._model.Value = JSON.stringify(this._editor().GetValue());\r\n }\r\n\r\n if (linkEditorFieldData && linkEditorFieldData.FieldValue[1]) {\r\n linkEditorFieldData.FieldValue[1] = this._model.Value;\r\n }\r\n\r\n if (this._editor().GetType() === CONTROL_TYPES.Dropdown || this._editor().GetType() === CONTROL_TYPES.DateTime || this._editor().GetType() === CONTROL_TYPES.RadioButton) {\r\n this._model.DisplayValue = this._model.OriginalDisplayValue = (this._editor() as any).GetDisplayValue();\r\n\r\n } else if (this._editor().GetType() === CONTROL_TYPES.MultiSelect) {\r\n this._model.DisplayValue = (this._editor() as MultiSelect).SelectedItems().map(item => item.Label).join(\", \");\r\n } else if (this._editor().GetType() === CONTROL_TYPES.ColorSelector) {\r\n this._model.DisplayValue = this._editor().GetValue();\r\n this.PrepareColor();\r\n } else {\r\n if (this._editor().GetType() !== CONTROL_TYPES.Password) {\r\n this._model.DisplayValue = this._editor().GetValue();\r\n }\r\n }\r\n }\r\n\r\n if (this._editor().GetFieldModel().FormatName === \"Percentage\" && this._editor().GetType() === CONTROL_TYPES.Text) {\r\n if (this._model.Value) {\r\n this._model.Value = (Number(this._model.Value.replace(/[.,]/g, '.')) / 100).toString();\r\n }\r\n }\r\n\r\n if (this._editor().GetFieldModel().FormatName === \"Phone number\" && this._editor().GetType() === CONTROL_TYPES.Text) {\r\n const phoneCode = (this._editor().GetType() as any).GetPhoneCode();\r\n if (phoneCode && this._editor().IsModified() && this._model.Value) {\r\n this._model.Value = phoneCode + '-' + this._model.Value.replace(/\\D/g, '').replace('-', '');\r\n }\r\n }\r\n\r\n if (this._editor().GetType() === CONTROL_TYPES.Currency) {\r\n if (!this._model.Currency) {\r\n this._model.Currency = new ConvertedCurrencyModel();\r\n this._model.Currency.Origin = new CurrencyValueModel();\r\n }\r\n const shownCurrency = this._model.Currency.Converted || this._model.Currency.Origin;\r\n shownCurrency.Currency = this._editor().GetValue().Currency;\r\n shownCurrency.Value = Number(this._editor().GetValue().Value.replace(',', '.'));\r\n shownCurrency.RateDate = this._editor().GetValue().RateDate;\r\n this.PrepareCurrency();\r\n }\r\n\r\n if (this._editor().GetType() === CONTROL_TYPES.Spim) {\r\n if (!this._model.Spim) {\r\n this._model.Spim = new SpimValueModel();\r\n }\r\n\r\n this._model.Spim = this._model.Spim.FeatureType && this._editor().GetValue();\r\n this.PrepareSpim();\r\n\t\t\t}\r\n\r\n\t\t\tthis.Tooltip({\r\n\t\t\t\tcontent: this.TooltipContent(_.escape(this._model.Value), this._editor().GetType(), this._editor().GetFieldModel().FormatName),\r\n\t\t\t\tposition: { x: 'right', y: 'center' },\r\n\t\t\t\toutside: 'x',\r\n\t\t\t\taddClass: 'ellipsis-tooltip'\r\n\t\t\t});\r\n }\r\n }\r\n\r\n SaveLinkEditorValue(control: IControl) {\r\n if (control && this.IsEnableEdit) {\r\n if (this.IsTranslatable()) {\r\n const defaultTranslation = control.GetDefaultTranslation();\r\n const translations = control.GetTranslations();\r\n\r\n this._model.Value = defaultTranslation.Value;\r\n this._model.DisplayValue = defaultTranslation.Value;\r\n this._model.Translations = translations;\r\n\r\n this.TranslateData();\r\n\r\n } else {\r\n this._model.Value = control.GetType() === CONTROL_TYPES.Currency ? JSON.stringify(control.GetValue()) : control.GetValue();\r\n if (control.GetType() === CONTROL_TYPES.Dropdown || control.GetType() === CONTROL_TYPES.DateTime) {\r\n this._model.DisplayValue = (control as any).GetDisplayValue();\r\n } else if (control.GetType() === CONTROL_TYPES.MultiSelect) {\r\n this._model.DisplayValue = (control as MultiSelect).SelectedItems().map(item => item.Label).join(\", \");\r\n } else {\r\n this._model.DisplayValue = control.GetValue();\r\n }\r\n }\r\n\r\n if (control.GetFieldModel().FormatName === \"Percentage\" && control.GetType() === CONTROL_TYPES.Text) {\r\n this._model.Value = (Number(this._model.Value) / 100).toString();\r\n }\r\n\r\n if (control.GetFieldModel().FormatName === \"Phone number\" && control.GetType() === CONTROL_TYPES.Text) {\r\n const phoneCode = (control as any).GetPhoneCode();\r\n if (phoneCode && control.IsModified() && this._model.Value) {\r\n this._model.Value = phoneCode + '-' + this._model.Value.replace(/\\D/g, '').replace('-', '');\r\n }\r\n }\r\n this._valueExists(control.GetValue() || false);\r\n this.GetViewValue();\r\n }\r\n }\r\n\r\n private IsTranslatable() {\r\n return FlagResolver.ContainsFlag(FieldFlags.Translate, this._model.Flags);\r\n }\r\n\r\n private TranslateData() {\r\n if (this.IsTranslatable()) {\r\n const translation = TranslationManager.Instance.GetTranslation(this._model.DisplayValue, this._model.Translations);\r\n this._model.TranslatedValue = translation.TranslatedValue || translation.Value;\r\n }\r\n }\r\n\r\n private SelectNextRelationType() {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.LINK_RECORD_WITH_NEXT_RELATION_TYPE,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.Trigger(EVENTS.LINK_NEXT_RELATION, {field: this._model});\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private OpenMarkedEditScreen(cell, evt) {\r\n const entityRecord = this._reference() && this._reference().SelectedEntityRecord;\r\n\r\n if (!this._reference()) {\r\n return;\r\n }\r\n\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: entityRecord.SelectedEntity.Id,\r\n RecordId: entityRecord.SelectedRecord.Id,\r\n IsHyperlink: true,\r\n ViewValue: this._viewValue(),\r\n ShowInModal: evt.ctrlKey\r\n });\r\n }\r\n\r\n private GetIconClasses(fontName, name): string {\r\n let classes: string = '';\r\n if (fontName === FONT_NAME.FONT_AWESOME) {\r\n classes = `${classes} fa`;\r\n } else if (fontName === FONT_NAME.SOCIAL_ICONS) {\r\n classes = `${classes} socicon-btn`;\r\n } else if (!name) { // Set default icon to reference field\r\n classes = 'fa fa-3x fa-stack fa-bookmark';\r\n } else {\r\n classes = fontName;\r\n }\r\n classes = `${classes} ${name} image-icon-xs`;\r\n\r\n return classes;\r\n }\r\n\r\n private MoveRowUp() {\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.MOVE_ROW_UP);\r\n }\r\n\r\n }\r\n\r\n private MoveRowDown() {\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.MOVE_ROW_DOWN);\r\n }\r\n }\r\n\r\n private HoverSort(){\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.HOVER_SORT);\r\n }\r\n }\r\n\r\n private UnHoverSort(){\r\n if (this.IsAbleSort) {\r\n this.Trigger(EVENTS.UN_HOVER_SORT);\r\n }\r\n }\r\n\r\n\r\n GetAttributes(index: number) {\r\n return {\r\n 'data-value': this.ViewValue && this._valueExists,\r\n 'data-new-value': this._valueExists,\r\n 'data-priority': this.Model.DisplayPriority,\r\n 'data-index': index\r\n }\r\n }\r\n\r\n GetStyle() {\r\n return {\r\n maxHeight: this._maxRowHeight + 'px',\r\n width: this.Model.width\r\n }\r\n }\r\n\r\n private TooltipContent(tooltipValue: string, typeName: string, formatName: string) {\r\n\t\treturn (tooltipValue && tooltipValue.length > 98 &&\r\n\t\t\t(typeName === FIELD_TYPES.Memo || typeName === FIELD_TYPES.Text) &&\r\n\t\t\tformatName !== 'SQL' && formatName !== 'URL')\r\n\t\t\t? tooltipValue\r\n : undefined;\r\n }\r\n\r\n ShowOriginalMemo() {\r\n\t\tBlockUI.Block();\r\n\t\tif (this._isNewRecord) {\r\n\t\t\tlet memoValueModal = new MemoValueModal(this._model.Value);\r\n\t\t\tmemoValueModal.Show();\r\n\t\t\tBlockUI.Unblock();\r\n\t\t} else {\r\n\t\t\tGridStore.GetMemoValue(\r\n\t\t\t\t{\r\n\t\t\t\t\tEntityId: this.Model.EntityMetadata.Id,\r\n\t\t\t\t\tFieldId: this.Model.FieldMetadata.Id,\r\n\t\t\t\t\tRecordKeys: this.Model.RecordKeys\r\n\t\t\t\t})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((data) => {\r\n if (this.IsTranslatable()) {\r\n\t\t\t\t\t const translation = TranslationManager.Instance.GetTranslation(data.DisplayValue, data.Translations);\r\n\t\t\t\t\t data.Value = translation.TranslatedValue || translation.Value;\r\n }\r\n\r\n let memoValueModal = new MemoValueModal(data.Value);\r\n memoValueModal.Show();\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n\t\t}\r\n }\r\n\r\n GetIconName(): string {\r\n const formatName = this._model.FieldMetadata.FormatName;\r\n return CONTROL_TYPES_LINK[formatName] ? CONTROL_TYPES_LINK[formatName].icon : null;\r\n }\r\n\r\n ShowOriginalImage(){\r\n this.Trigger(EVENTS.SHOW_ORIGINAL_IMAGE, { dataCell: this });\r\n }\r\n\r\n GetGrid(context: KnockoutBindingContext){\r\n let baseGridModule = require('Core/Controls/Grid/BaseGrid/BaseGrid').BaseGrid;\r\n let baseGrid = null;\r\n _.each(context.$parents, (parent) => {\r\n if(parent instanceof baseGridModule){\r\n baseGrid = parent;\r\n }\r\n });\r\n\r\n return baseGrid;\r\n }\r\n\r\n IsBarcodeButtonVisible() {\r\n return FieldFormat.IsBarcode(this._model.FieldMetadata.FormatName) && !this._model.FieldMetadata.IsVirtual;\r\n }\r\n\r\n PrintBarCode(){\r\n this.Trigger(EVENTS.PRINT_LABEL);\r\n }\r\n\r\n get ShowNextRelationTypeButton(): boolean{\r\n\r\n if(this.QueryColumn && this._model.RelationType) {\r\n\r\n let config = _.find(this.QueryColumn.CrossValueSettings, (conf) => conf.RelationTypeValueId === this._model.RelationType.Id);\r\n \r\n if(!config){\r\n return true;\r\n }\r\n return config.ShowNexRelationButton\r\n }\r\n\r\n return true;\r\n }\r\n\r\n get ShowEditRelationTypeButton(): boolean{\r\n\r\n if(this.QueryColumn && this._model.RelationType) {\r\n let config = _.find(this.QueryColumn.CrossValueSettings, (conf) => conf.RelationTypeValueId === this._model.RelationType.Id);\r\n \r\n if(!config){\r\n return true;\r\n }\r\n return config.ShowEditRelationButton\r\n }\r\n\r\n return true;\r\n }\r\n\r\n get HasSortDescription(): boolean{\r\n return this._model.FieldMetadata.HasSortDescription && this._screenType === ScreenTypes[ScreenTypes.ConsultScreen];\r\n }\r\n\r\n get DescriptionTooltipContent(): string {\r\n return this._hasDescription ? LABELS.SORT_REMOVE_DESCRIPTION : LABELS.SORT_ADD_NEW_DESCRIPTION;\r\n }\r\n\r\n EditDescription(){\r\n this._isEditMode(true);\r\n }\r\n\r\n CancelEditDescription(){\r\n this._isEditMode(false);\r\n }\r\n\r\n SaveDescription(){\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n }\r\n\r\n CreateOrRemoveDescription(){\r\n this._isNewRecord = false;\r\n if(this.IsSortDescription){ \r\n if(!!this._model.Value){\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.REMOVE_SORT_DESCRIPTION,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this._model.Value = null;\r\n this._model.DisplayValue = null;\r\n this._model.OriginalDisplayValue = null;\r\n this._isNewRecord = true;\r\n this._isEditMode(true);\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n });\r\n confirmationDialog.Show();\r\n }else{\r\n this._isEditMode(true);\r\n } \r\n }else{\r\n this.Trigger(EVENTS.CREATE_OR_DELETE_SORT_DESCRIPTION);\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {GridTotalCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalCellValueModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport { GridAverageCellValueModel } from 'Core/Controls/Grid/Models/GridDataModel/GridAverageCellValueModel';\r\n\r\nimport TotalCellTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport { GridCountCellValueModel } from '../../Models/GridDataModel/GridCountCellValueModel';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell'] = TotalCellTemplate;\r\n\r\nexport class TotalCell {\r\n\tconstructor(\r\n\t\tprivate _model: GridTotalCellValueModel | GridAverageCellValueModel | GridCountCellValueModel,\r\n\t\t private _columnModel: GridColumnModel\r\n\t) {}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Controls/Grid/BaseGrid/GridCell/Templates/TotalCell';\r\n\t}\r\n\r\n\t@enumerable \r\n\tget IsWrapped(): boolean {\r\n\t\treturn this._model.IsWrapped;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget Value(): string {\r\n\t\tif (!this._model.Value) {\r\n\t\t\treturn this._model.Value;\r\n\t\t}\r\n\r\n\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\tthis._columnModel.FieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t? (Number(this._model.Value) * 100).toFixed(\r\n\t\t\t\t\t this._columnModel.FieldMetadata.Size < 2 ? 0 : this._columnModel.FieldMetadata.Size - 2\r\n\t\t\t\t )\r\n\t\t\t\t: this._model.Value\r\n\t\t);\r\n\t}\r\n\r\n\t@enumerable\r\n\tget FormatName(){\r\n return !!this.Value && this._columnModel.FieldMetadata.FormatName;\r\n }\r\n\r\n\t@enumerable\r\n\tget DisplayPriorityClass(): string {\r\n\t\treturn '';\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"grid-cell-wrapper marker\\\"> <span data-bind=\\\"css: { 'currencyIconPadding': $data.FormatName === 'Currency' && !!$data.Value }\\\" class=\\\"valueBox\\\"> <!--ko text: $data.Value --><!-- /ko --> <!--ko if: $data.FormatName === 'Currency' && !!$data.Value --> <i class=\\\"currencyIcon\\\"></i> <!-- /ko --> </span> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\n\r\nexport enum SortOrder {\r\n\tAsc,\r\n\tDesc,\r\n\tBoth\r\n}\r\n\r\nexport const DISPLAY_PRIORITY_TO_CSS = {\r\n\t1: 'priority-prehigh',\r\n\t2: 'priority-medium',\r\n\t3: 'priority-premedium',\r\n\t4: 'priority-low'\r\n};\r\n\r\nexport class BaseColumn extends Event {\r\n\tprotected _sortOrder: KnockoutObservable<number>;\r\n\tprotected _sortOrderClassName: KnockoutComputed<string>;\r\n\tprotected _isFastFilterEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n\r\n\tconstructor(protected _model: GridColumnModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._sortOrder = ko.observable(_model.SortDirection);\r\n\t\tthis.AddEvent(EVENTS.SORT);\r\n\r\n\t\tthis._sortOrderClassName = ko.computed({\r\n\t\t\towner: this,\r\n\t\t\tread: () => `sort-${ SortOrder[this._sortOrder()] && SortOrder[this._sortOrder()].toLowerCase()}`\r\n\t\t});\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn `${this._model.Title || this._model.Alias}`;\r\n\t}\r\n\r\n\tget GroupTitle(): string {\r\n\t\treturn `${this._model.GroupTitle}`;\r\n\t}\r\n\r\n\tget HasGroupTitle(){\r\n\t\treturn this._model.GroupTitle != null && this._model.GroupTitle !== \"null\" && this._model.GroupTitle !== \"undefined\";\r\n\t}\r\n\r\n\r\n\tget Model(): GridColumnModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tSort() {\r\n\t}\r\n\r\n\tget DisplayPriorityClass(): string {\r\n\t\treturn DISPLAY_PRIORITY_TO_CSS[this._model.DisplayPriority];\r\n\t}\r\n}","// Module\nvar code = \"<ul class=\\\"multi-level\\\"> <!-- ko foreach: _processCardsLifeStatuses --> <li> <a data-bind=\\\"text: $parent.FormatDisplayValue($data), click: $parent.SelectLifeStatus.bind($parent, $data)\\\" class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\">1</a> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","import { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {PivotDetailModel} from \"Core/Controls/Grid/Models/PivotDetailModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/ProcessCardsDropdown/Templates/ProcessCardsDropdown.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/ProcessCardsDropdown/Templates/ProcessCardsDropdown'] = Template;\r\n\r\n\r\nexport class ProcessCardsDropdown extends Event {\r\n private readonly _id: string;\r\n private _dropDown: JBoxDropDown;\r\n private _labels = LABELS;\r\n\r\n constructor(private _processCardsLifeStatuses: Array<LifeStatusSimpleModel>){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n }\r\n\r\n Close(){\r\n if(this._dropDown){\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SelectLifeStatus(status: LifeStatusSimpleModel){\r\n this.Trigger(EVENTS.RECORD_SELECTED, { status: status });\r\n }\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: true,\r\n addClass: 'lookup-dropdown',\r\n maxWidth: \"calc(100%)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n FormatDisplayValue(status: LifeStatusSimpleModel){\r\n return _.isEmpty(status.TranslatedName) ? status.Name : status.TranslatedName;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport { EntityMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\n\r\nimport ActionCellTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell.html';\r\nimport BasketButtonTemplate from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton.html';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport { TABLE_TYPES } from '../../../../Constant';\r\nimport { ProcessCardsDropdown } from '../ProcessCardsDropdown/ProcessCardsDropdown';\r\nimport { LifeStatusSimpleModel } from '../../../ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport type { StepsScreen } from 'Core/Screens/StepsScreen/StepsScreen';\r\nimport { BlockUI, GridStore } from '../Index';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell'] = ActionCellTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton'] = BasketButtonTemplate;\r\n\r\nexport class ActionCell extends Event {\r\n private _showExpandButton: KnockoutObservable<boolean>;\r\n private _showColapsButton: KnockoutObservable<boolean>;\r\n\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _enableEdit: KnockoutObservable<boolean>;\r\n private _isLocked: KnockoutObservable<boolean>;\r\n private _isLifeStatusEnabled: KnockoutObservable<boolean>;\r\n private _hideToggleDisableButton: KnockoutObservable<boolean>;\r\n private _hideUnlink: KnockoutObservable<boolean>;\r\n private _hideEdit: KnockoutObservable<boolean>;\r\n private _isEditScreen: KnockoutObservable<boolean>;\r\n private _isListScreen: KnockoutObservable<boolean>;\r\n private _isConsultScreen: KnockoutObservable<boolean>;\r\n private _isVisibleButtons: KnockoutObservable<boolean>;\r\n private _screenType: string;\r\n private _showEditButton: KnockoutObservable<boolean>;\r\n private _showDeleteButton: KnockoutObservable<boolean>;\r\n private _isCollapsed: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n private _unlinkButtonTitle: KnockoutComputed<string>;\r\n private _editLinkButtonTitle: KnockoutComputed<string>;\r\n private _isUnlinkButtonDisabled: KnockoutComputed<boolean>;\r\n private _isEditLinkButtonDisabled: KnockoutComputed<boolean>;\r\n private _isUnlinkCheckboxChecked: KnockoutObservable<boolean>;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _showStepsScreenButton: KnockoutObservable<boolean>;\r\n private _processCardsLifeStatuses: Array<LifeStatusSimpleModel>;\r\n\r\n constructor(\r\n private _isEditable: KnockoutObservable<boolean> = ko.observable(false),\r\n private _enableBasket: KnockoutObservable<boolean> = ko.observable(false),\r\n private _recordInBasket: KnockoutObservable<boolean> = ko.observable(false),\r\n private _isDisableEditLinkButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _backLinkingButtons: KnockoutObservableArray<any> = ko.observableArray([]),\r\n private _isEditingAllowed: boolean,\r\n private _isCrossTable: boolean,\r\n private _inlineControls: Array<IControl>,\r\n private _enableExpaning,\r\n private _hasSubGridData,\r\n private _isRetired: boolean,\r\n private _rowEntity: EntityMetadataModel,\r\n private _isSubgrid: boolean,\r\n private _isLinkJoin: boolean,\r\n processCardsLifeStatuses,\r\n private _recordId: number,\r\n private _entityId: number\r\n ) {\r\n super();\r\n this._processCardsLifeStatuses = processCardsLifeStatuses || [];\r\n this._showExpandButton = ko.observable(true);\r\n this._showColapsButton = ko.observable(false);\r\n this._isEditMode = ko.observable(false);\r\n this._isLocked = ko.observable(false);\r\n this._isLifeStatusEnabled = ko.observable(false);\r\n this._hideToggleDisableButton = ko.observable(false);\r\n this._hideUnlink = ko.observable(false);\r\n this._hideEdit = ko.observable(false);\r\n this._isEditScreen = ko.observable(false);\r\n this._isListScreen = ko.observable(false);\r\n this._isConsultScreen = ko.observable(false);\r\n this._isVisibleButtons = ko.observable(false);\r\n this._showEditButton = ko.observable(false);\r\n this._showDeleteButton = ko.observable(false);\r\n this._isCollapsed = ko.observable(true);\r\n this._isUnlinkCheckboxChecked = ko.observable(false);\r\n this._showStepsScreenButton = ko.observable(false);\r\n\r\n this.AddEvent(EVENTS.EXPAND);\r\n this.AddEvent(EVENTS.COLLAPSE);\r\n this.AddEvent(EVENTS.EDIT_RECORD);\r\n this.AddEvent(EVENTS.EDIT_LINK);\r\n this.AddEvent(EVENTS.CANCEL_EDIT);\r\n this.AddEvent(EVENTS.SAVE_RECORD);\r\n this.AddEvent(EVENTS.DELETE_RECORD);\r\n this.AddEvent(EVENTS.CHANGE_LIFESTATUS);\r\n this.AddEvent(EVENTS.ADD_TO_BASKET);\r\n this.AddEvent(EVENTS.REMOVE_FROM_BASKET);\r\n this.AddEvent(EVENTS.UNLINK_RECORD);\r\n this.AddEvent(EVENTS.BACK_LINKING_POPUP_REQUESTED);\r\n this.AddEvent(EVENTS.CLICK_UNLINK_CHECKBOX);\r\n this.AddEvent('REFRESH')\r\n this.Init(); \r\n }\r\n\r\n private Init(){\r\n this._unlinkButtonTitle = ko.computed(()=> {\r\n if(this._isRetired){\r\n return this._labels.LINKED_RECORD_IS_RETIRED;\r\n }\r\n\r\n return this._isEditingAllowed ? this._labels.UNLINK_RECORD_LABEL : this._labels.ACCESS_DENIED_LABEL;\r\n });\r\n\r\n this._editLinkButtonTitle = ko.computed(()=> {\r\n if(this._isRetired){\r\n return this._labels.LINKED_RECORD_IS_RETIRED;\r\n }\r\n\r\n return this._isEditingAllowed ? this._isDisableEditLinkButton() ? this._labels.NO_ANY_CUSTOM_FIELDS : this._labels.EDIT_LINK_LABEL : this._labels.ACCESS_DENIED_LABEL;\r\n });\r\n\r\n this._isUnlinkButtonDisabled = ko.computed(()=> {\r\n if(this._isRetired){\r\n return true;\r\n }\r\n\r\n return !this._isEditingAllowed;\r\n });\r\n \r\n this._isEditLinkButtonDisabled = ko.computed(()=> {\r\n if(this._isRetired){\r\n return true;\r\n }\r\n\r\n return !this._isEditingAllowed ? true : this._isDisableEditLinkButton();\r\n });\r\n }\r\n\r\n set ScreenType(value: string) {\r\n this._screenType = value; \r\n this._isEditScreen(value === ScreenTypes[ScreenTypes.EditScreen]);\r\n this._isListScreen(value === ScreenTypes[ScreenTypes.ListScreen] || value === ScreenTypes[ScreenTypes.SpecialScreen]);\r\n this._isConsultScreen(value === ScreenTypes[ScreenTypes.ConsultScreen]);\r\n this._showEditButton(((value === ScreenTypes[ScreenTypes.EditScreen] || value === ScreenTypes[ScreenTypes.ProcessCardPage]) && !this._isSubgrid) || value === ScreenTypes[ScreenTypes.ListScreen]\r\n || value === ScreenTypes[ScreenTypes.QueryScreen] || value === ScreenTypes[ScreenTypes.SpecialScreen]);\r\n \r\n let showDeleteButton = value === ScreenTypes[ScreenTypes.EditScreen] || (value === ScreenTypes[ScreenTypes.ListScreen] && this._rowEntity && this._rowEntity.Type === TABLE_TYPES.Sub);\r\n this._showStepsScreenButton(this._processCardsLifeStatuses.length > 0 && (value === ScreenTypes[ScreenTypes.ListScreen] || value === ScreenTypes[ScreenTypes.Portlet]));\r\n this._showDeleteButton(showDeleteButton);\r\n }\r\n\r\n set IsVisibleButtons(value: boolean) {\r\n this._isVisibleButtons(value);\r\n }\r\n\r\n get IsVisibleButtons(): boolean {\r\n return this._isLocked();\r\n }\r\n\r\n set IsLocked(value: boolean) {\r\n this._isLocked(value);\r\n }\r\n\r\n get IsLocked(): boolean {\r\n return this._isLocked();\r\n }\r\n\r\n set IsMultipleUnlinkModeActive(value: boolean) {\r\n this._isMultipleUnlinkModeActive(value);\r\n }\r\n\r\n get IsMultipleUnlinkModeActive(): boolean {\r\n return this._isMultipleUnlinkModeActive();\r\n }\r\n\r\n set IsLifeStatusEnabled(value: boolean) {\r\n this._isLifeStatusEnabled(value);\r\n }\r\n\r\n get IsLifeStatusEnabled() {\r\n return this._isLifeStatusEnabled();\r\n }\r\n\r\n set HideToggleDisableButton(value: boolean) {\r\n this._hideToggleDisableButton(value);\r\n }\r\n\r\n get HideToggleDisableButton() {\r\n return this._hideToggleDisableButton();\r\n }\r\n\r\n set HideUnlink(value: boolean) {\r\n this._hideUnlink(value);\r\n }\r\n\r\n get HideUnlink() {\r\n return this._hideUnlink();\r\n }\r\n\r\n set HideEdit(value: boolean) {\r\n this._hideEdit(value);\r\n }\r\n\r\n get HideEdit() {\r\n return this._hideEdit();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/ActionCell';\r\n }\r\n\r\n GetBasketButtonTemplateName() {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/BasketButton';\r\n }\r\n\r\n ExpandColapseNestedGrid() {\r\n if (this._hasSubGridData) {\r\n this._isCollapsed(!this._isCollapsed());\r\n if (this._isCollapsed()) {\r\n this.Trigger(EVENTS.COLLAPSE);\r\n } else {\r\n this.Trigger(EVENTS.EXPAND);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @param e {MouseEvent}\r\n */\r\n EditRecord(that, event) {\r\n if (this._isEditingAllowed) {\r\n this.Trigger(EVENTS.EDIT_RECORD);\r\n this._isEditMode(true);\r\n event.currentTarget.dispatchEvent(new CustomEvent(\"resizeTable\", {\r\n bubbles: true,\r\n cancelable: true\r\n }));\r\n }\r\n }\r\n\r\n EditLink() {\r\n if (this._isEditingAllowed && !this._isRetired) {\r\n if (!this._isDisableEditLinkButton()) {\r\n this.Trigger(EVENTS.EDIT_LINK);\r\n }\r\n }\r\n }\r\n\r\n DeleteRecord() {\r\n if (this._isEditingAllowed) {\r\n this.Trigger(EVENTS.DELETE_RECORD);\r\n }\r\n }\r\n\r\n UnlinkRecord() {\r\n if (this._isEditingAllowed && !this._isRetired) {\r\n this.Trigger(EVENTS.UNLINK_RECORD);\r\n }\r\n }\r\n\r\n OnClickUnlinkCheckbox() {\r\n if (!this._isUnlinkCheckboxChecked()) {\r\n this._isUnlinkCheckboxChecked(true);\r\n } else {\r\n this._isUnlinkCheckboxChecked(false);\r\n }\r\n\r\n this.Trigger(EVENTS.CLICK_UNLINK_CHECKBOX);\r\n }\r\n\r\n ChangeLifeStatus() {\r\n if (this._isEditingAllowed) {\r\n this._isLifeStatusEnabled(!this._isLifeStatusEnabled());\r\n this.Trigger(EVENTS.CHANGE_LIFESTATUS);\r\n }\r\n }\r\n\r\n CancelEditRecord() {\r\n if (this._isEditingAllowed) {\r\n this.Trigger(EVENTS.CANCEL_EDIT);\r\n this._isEditMode(false);\r\n }\r\n }\r\n\r\n ShowBackLinkPopup(button: any) {\r\n this.Trigger(EVENTS.BACK_LINKING_POPUP_REQUESTED, {\r\n ButtonName: button.ButtonName,\r\n SubTableView: button.SubTableView,\r\n Intention: button.Intention\r\n });\r\n }\r\n\r\n SaveRecord() {\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n }\r\n\r\n AddToBasket() {\r\n if (!this._isCrossTable) {\r\n this.Trigger(EVENTS.ADD_TO_BASKET);\r\n }\r\n }\r\n\r\n RemoveFromBasket() {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET);\r\n }\r\n\r\n set IsEditMode(value: boolean) {\r\n this._isEditMode(value);\r\n }\r\n\r\n GetCurrentName(backLinkingButton: any) {\r\n const currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n const translation = _.find(backLinkingButton.NameTranslations, (item: any) => item.Id === currentLang.Id);\r\n if (translation && translation.Value) {\r\n return translation.Value;\r\n }\r\n return backLinkingButton.ButtonName;\r\n }\r\n\r\n ShowProcessCardsLifeStatuses(context: ActionCell, evt){\r\n if(this._processCardsLifeStatuses.length == 1){\r\n this.ShowStepsScreen(this._processCardsLifeStatuses[0]);\r\n return;\r\n }\r\n let processCardsDropdown = new ProcessCardsDropdown(this._processCardsLifeStatuses);\r\n processCardsDropdown.Show(evt.target);\r\n processCardsDropdown.On('RECORD_SELECTED', this, (evtArgs)=>{\r\n this.ShowStepsScreen(evtArgs.data.status);\r\n });\r\n }\r\n\r\n async ShowStepsScreen(status: LifeStatusSimpleModel){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetScreenById({ ScreenId: status.StepsScreenId }) as StepsScreen;\r\n screen.On('FINISH_PROCESS', this, ()=>this.SwitchToNextStatus(status.Id));\r\n screen.LoadStepControlData({ recordId: this._recordId });\r\n screen.ShowInModal(); \r\n BlockUI.Unblock();\r\n }\r\n\r\n SwitchToNextStatus(nextStatusId: number){\r\n GridStore.SwitchToNextStatus({ EntityId: this._entityId, RecordId: this._recordId, NextStatusId: nextStatusId }).then(()=>this.Trigger('REFRESH'));\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _enableExpaning --> <a data-bind=\\\"click: $data.ExpandColapseNestedGrid, css: { disable : !$data._hasSubGridData }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: { 'fa-minus-circle': !_isCollapsed(), 'fa-plus-circle' : _isCollapsed() }\\\" class=\\\"fa transition\\\"></i> </a> <!-- /ko --> <!-- ko if: !_isVisibleButtons()--> <!-- ko if: _showEditButton--> <a data-bind=\\\"click: $data.EditRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideEdit,\\r\\n css: { disable: !_isEditingAllowed },\\r\\n attr: { title: _isEditingAllowed ? _labels.EDIT_RECORD_LABEL : _labels.ACCESS_DENIED_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <!-- /ko --> <!-- ko if: _showDeleteButton--> <a data-bind=\\\"click: $data.DeleteRecord, visible: _isEditable() && !_isEditMode()\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" title=\\\"Delete record\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-trash-o\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _isVisibleButtons()--> <!-- ko if: _showEditButton --> <a data-bind=\\\"click: $data.EditRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideEdit,\\r\\n css: { disable: !_isEditingAllowed },\\r\\n attr: { title: _isEditingAllowed ? _labels.EDIT_RECORD_LABEL : _labels.ACCESS_DENIED_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <!-- /ko --> <!-- ko if: _showDeleteButton--> <!-- ko if: _isMultipleUnlinkModeActive() --> <input data-bind=\\\" visible: _isEditable() && !_isEditMode() && !$data.HideUnlink,\\r\\n disable: _isUnlinkButtonDisabled,\\r\\n event: { change: OnClickUnlinkCheckbox },\\r\\n attr: {'checked': _isUnlinkCheckboxChecked()},\\r\\n tooltip: { content: _labels.UNLINK_LABEL }\\\" class=\\\"grid-multiple-unlink-checkbox\\\" type=\\\"checkbox\\\"> <!-- /ko --> <!-- ko ifnot: _isMultipleUnlinkModeActive() --> <a data-bind=\\\"click: $data.UnlinkRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideUnlink,\\r\\n css: { disable: _isUnlinkButtonDisabled },\\r\\n attr: { title: _unlinkButtonTitle }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-chain-broken\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _isConsultScreen() --> <a data-bind=\\\"click: $data.EditLink,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideEdit && $data._isLinkJoin,\\r\\n css: { disable: _isEditLinkButtonDisabled },\\r\\n attr: { title: _editLinkButtonTitle }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" title=\\\"Edit link\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-edit\\\"></i> </a> <!-- ko if: !_hideToggleDisableButton() --> <a data-bind=\\\"click: $data.ChangeLifeStatus,\\r\\n visible: _isEditable() && !_isEditMode(),\\r\\n css: { disable: !_isEditingAllowed },\\r\\n attr: { title: _isEditingAllowed ? _isLifeStatusEnabled() ? _labels.DISABLE_RECORD_LABEL : _labels.ENABLE_RECORD_LABEL : _labels.ACCESS_DENIED_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {'fa-toggle-off': !_isLifeStatusEnabled(), 'fa-toggle-on': _isLifeStatusEnabled() }\\\" class=\\\"fa transition fa-toggle-off\\\"></i> </a> <!-- /ko --> <!-- ko if: _isMultipleUnlinkModeActive() --> <input data-bind=\\\" visible: _isEditable() && !_isEditMode() && !$data.HideUnlink && $data._isLinkJoin,\\r\\n disable: _isUnlinkButtonDisabled,\\r\\n event: { change: OnClickUnlinkCheckbox },\\r\\n attr: {'checked': _isUnlinkCheckboxChecked()},\\r\\n tooltip: { content: _labels.UNLINK_LABEL }\\\" class=\\\"grid-multiple-unlink-checkbox\\\" type=\\\"checkbox\\\"> <!-- /ko --> <!-- ko ifnot: _isMultipleUnlinkModeActive() --> <a data-bind=\\\"click: $data.UnlinkRecord,\\r\\n visible: _isEditable() && !_isEditMode() && !$data.HideUnlink && $data._isLinkJoin,\\r\\n css: { disable: _isUnlinkButtonDisabled },\\r\\n attr: { title: _unlinkButtonTitle }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-chain-broken\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko if: _backLinkingButtons().length > 0--> <div> <div class=\\\"btn-group btn-group-xs\\\"> <!-- ko foreach: _backLinkingButtons --> <button type=\\\"button\\\" class=\\\"btn blue-dark\\\" data-bind=\\\"text: $parent.GetCurrentName($data), click: $parent.ShowBackLinkPopup.bind($parent, $data)\\\"></button> <!-- /ko --> </div> </div> <!--/ko--> <!-- ko if: _isEditMode --> <a data-bind=\\\"click: $data.SaveRecord, visible: _isEditMode\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"><i class=\\\"fa fa-save transition\\\"></i></a> <!--/ko--> <!-- ko if: _isEditMode --> <a data-bind=\\\"click: $data.CancelEditRecord, visible: _isEditMode\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"><i class=\\\"fa fa-close transition\\\"></i></a> <!--/ko--> <!-- ko if: _showStepsScreenButton() --> <a data-bind=\\\"click: $data.ShowProcessCardsLifeStatuses, attr: { title: _labels.CLICK_TO_PROGRESS}\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"><i class=\\\"fa fa-mail-forward transition\\\"></i></a> <!--/ko--> <!-- ko template: {name: $data.GetBasketButtonTemplateName.bind($data)} --><!-- /ko --> <!--ko foreach: _inlineControls--> <!-- ko template: {name: $data.GetTemplateName.bind($rawData), afterRender: $data.AfterRender.bind($rawData)} --><!-- /ko --> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: _enableBasket --> <!-- ko if: _recordInBasket --> <a data-bind=\\\"click: $data.RemoveFromBasket,\\r\\n\\t\\t\\t\\tvisible: _isEditable() && !_isEditMode(),\\r\\n\\t\\t\\t\\tcss: { disable: _isCrossTable },\\r\\n\\t\\t\\t\\tattr: { title: _labels.REMOVE_FROM_BASKET_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-minus\\\"></i> </a> <!-- /ko --> <!-- ko ifnot: _recordInBasket --> <a data-bind=\\\"click: $data.AddToBasket,\\r\\n\\t\\t\\t\\tvisible: _isEditable() && !_isEditMode(),\\r\\n\\t\\t\\t\\tcss: { disable: _isCrossTable },\\r\\n\\t\\t\\t\\tattr: { title: _labels.ADD_TO_BASKET_LABEL }\\\" tabindex=\\\"-1\\\" class=\\\"grid-action-button\\\" href=\\\"#\\\"> <i class=\\\"fa transition fa-plus\\\"></i> </a> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {GridCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\n\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell'] = Template;\r\n\r\nexport class FavoriteCell {\r\n\tprivate _isFavorite: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._isFavorite = ko.observable(false);\r\n\t}\r\n\r\n\tset IsFavorite(value: boolean) {\r\n\t\tthis._isFavorite(value);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Controls/Grid/BaseGrid/GridCell/Templates/FavoriteCell';\r\n\t}\r\n}","// Module\nvar code = \"<div style=\\\"text-align:center\\\"> <!-- ko with: _isFavorite --> <i class=\\\"fa fa-star\\\"></i> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <div class=\\\"groupDetailsDropdown\\\"> <span class=\\\"selectLink\\\"><!-- ko text: _labels.SELECT_LABEL --><!-- /ko --></span> </div> <div> <!-- ko with: _grid --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {GroupDetailModel} from \"Core/Controls/Grid/Models/GroupDetailModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport { ZIndexManager } from \"Core/Common/ZIndexManager\";\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/Templates/GroupDetailsDropdown.html';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/Templates/GroupDetailsDropdown'] = Template;\r\n\r\nexport class GroupDetailsDropdown extends Event {\r\n private readonly _id: string;\r\n readonly _grid: KnockoutObservable<BaseGrid>;\r\n private _dropDown: JBoxDropDown;\r\n _labels = LABELS;\r\n\r\n constructor() {\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._grid = ko.observable(null);\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n }\r\n\r\n Close() {\r\n if (this._dropDown) {\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SetData(groupDetails: GroupDetailModel) {\r\n const grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: ko.observable(false),\r\n screenType: null,\r\n enabledFavorite: false,\r\n isEnableSelectRecord: ko.observable(false),\r\n enableSelectRowCell: true\r\n });\r\n\r\n grid.On(GRID_EVENTS.SELECT_RECORD, this,(eventArgs: any) => {\r\n this.Trigger(EVENTS.RECORD_SELECTED, { SelectedRecord: eventArgs.data.Row });\r\n });\r\n\r\n this._grid(grid);\r\n\r\n grid.SetData(groupDetails.Data, undefined, true);\r\n }\r\n\r\n Show(target: HTMLElement = undefined) {\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow'] = Template;\r\n\r\nexport class SelectRowCell extends Event{\r\n constructor() {\r\n super();\r\n this.AddEvent(EVENTS.SELECT_RECORD);\r\n }\r\n\r\n SelectRow(){\r\n this.Trigger(EVENTS.SELECT_RECORD);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/BaseGrid/GridCell/Templates/SelectRow';\r\n }\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: $data.SelectRow\\\" ref=\\\"javascript:;\\\"><i class=\\\"fa fa-arrow-right\\\"></i></a>\";\n// Exports\nexport default code;","import { record } from 'rrweb';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport 'lockr';\r\nimport 'knockout-fast-foreach';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {FieldDataModel} from \"Core/Screens/Common/LinkEditor/Models/DataModel\";\r\nimport {ActionCell} from 'Core/Controls/Grid/BaseGrid/GridCell/ActionCell';\r\nimport {DataCell} from 'Core/Controls/Grid/BaseGrid/GridCell/DataCell';\r\nimport {FavoriteCell} from 'Core/Controls/Grid/BaseGrid/GridCell/FavoriteCell';\r\nimport {GridRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridRowModel';\r\nimport {BaseGrid} from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {GroupDetailsDropdown} from 'Core/Controls/Grid/BaseGrid/GroupDetailsDropdown/GroupDetailsDropdown';\r\nimport {LIFESTATUS, CONTROL_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridStore} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {States} from 'Core/Controls/Grid/BaseGrid/GridRow/States';\r\nimport {RelationshipTypes} from 'Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {IForm} from \"Core/Screens/IScreen\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IGetDependsOnResponse, RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {UpdateDataModel} from \"Core/Controls/LinkList/Models/UpdateDataModel\";\r\nimport {SelectRowCell} from \"Core/Controls/Grid/BaseGrid/GridCell/SelectRowCell\";\r\nimport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {Serialize} from \"libs/cerialize\";\r\nimport {ConfigModel} from \"Core/GeneralProperties/Models/ConfigModel\";\r\nimport {PROPERTIES} from \"Core/Controls/Grid/Constants\";\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {Util} from 'QueryBuilder/Util';\r\nimport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport { ControlDataModel } from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow.html';\r\nimport SortDescriptionRowTemplate from 'Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow.html';\r\n\r\nimport { GridCellValueModel, RecordKey } from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport { DocumentManagerStore } from 'Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow'] = Template;\r\nko.templates['Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow'] = SortDescriptionRowTemplate;\r\n\r\ninterface GroupedDataItem {\r\n Title: string;\r\n Value: string;\r\n Cell: DataCell;\r\n}\r\n\r\nexport class GridRow extends Event {\r\n private _queryExpression: QueryExpressionModel;\r\n private _dataCells: KnockoutObservableArray<DataCell>;\r\n private _actionCell: ActionCell;\r\n private _favoriteCell: FavoriteCell;\r\n private _nestedGrids: KnockoutObservableArray<BaseGrid>;\r\n private _model: GridRowModel;\r\n private _isSelected: KnockoutObservable<boolean>;\r\n private _isEnableSelectRecord: KnockoutObservable<boolean>;\r\n private _isEditMode: KnockoutObservable<boolean>;\r\n private _screenType: string;\r\n private _isNewRecord: boolean;\r\n private _isLockConfirmated: boolean;\r\n\tprivate _isVisibleButtons: KnockoutObservable<boolean>;\r\n\tprivate _hasInlineControls: boolean;\r\n private _recordInBasket: KnockoutObservable<boolean>;\r\n private _maxRowHeight: string;\r\n private _state: States;\r\n private _relationshipType: string;\r\n private _labels = LABELS;\r\n private _form: IForm;\r\n private _linkEditorData: UpdateDataModel;\r\n private _selectRowCell: SelectRowCell;\r\n private _el: HTMLElement;\r\n private _gridProperties: ConfigModel;\r\n private _guid: string;\r\n private _rowColorEnabled: KnockoutObservable<boolean>;\r\n private _rowColor: KnockoutObservable<string>;\r\n private _groupedData: GroupedDataItem[];\r\n private _isEntity: boolean;\r\n private _crossTableWrapped: Array<GridRow>;\r\n private _isSubGrid: boolean;\r\n private _isSelectedForUnlinking: KnockoutObservable<boolean>;\r\n private _showSortBorder: KnockoutObservable<boolean>;\r\n private _isGroupActive: KnockoutObservable<boolean>;\r\n private _isGroupMode: boolean;\r\n\r\n ShowActionCell: KnockoutComputed<boolean>;\r\n SortDescriptionColumn: KnockoutComputed<DataCell>;\r\n\r\n Template: any;\r\n\r\n public IsLinkParent: boolean;\r\n\r\n constructor(\r\n model: GridRowModel,\r\n private _isEditable: KnockoutObservable<boolean> = ko.observable(true),\r\n private _hideLifeStatusToggle: KnockoutObservable<boolean> = ko.observable(false),\r\n private _hideUnlink: KnockoutObservable<boolean> = ko.observable(false),\r\n private _hideEdit: KnockoutObservable<boolean> = ko.observable(false),\r\n private _enableBasket: KnockoutObservable<boolean> = ko.observable(false),\r\n private _isDisableEditLinkButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _backLinkingButtons: KnockoutObservableArray<any> = ko.observableArray([]),\r\n isEnableSelectRecord: KnockoutObservable<boolean>,\r\n screenType: string,\r\n isVisibleButtons: boolean,\r\n queryExpression: QueryExpressionModel,\r\n isNewRecord: boolean,\r\n isVisibleFavorite: boolean,\r\n maxRowHeight: KnockoutObservable<string>,\r\n form: IForm,\r\n inlineControls: Array<IControl>,\r\n enableSelectRowCell: boolean,\r\n gridProperties: ConfigModel,\r\n isSubGrid: boolean,\r\n isGroupMode: boolean,\r\n private _isLinkJoin: boolean,\r\n private _hasProcessCards: boolean,\r\n private _hasTotalRow: KnockoutObservable<boolean>\r\n ) {\r\n super();\r\n this._state = States.NoChanges;\r\n this._queryExpression = queryExpression;\r\n this._crossTableWrapped = [];\r\n this._model = model;\r\n this._showSortBorder = ko.observable(false);\r\n this._screenType = screenType;\r\n this._dataCells = ko.observableArray([]);\r\n this._nestedGrids = ko.observableArray([]);\r\n this._recordInBasket = ko.observable(false);\r\n this._relationshipType = RelationshipTypes[model.RelationshipType];\r\n this._form = form;\r\n this._gridProperties = gridProperties;\r\n this._isSubGrid = isSubGrid;\r\n this._isSelectedForUnlinking = ko.observable(false);\r\n if (enableSelectRowCell) {\r\n this._selectRowCell = new SelectRowCell();\r\n this._selectRowCell.On(EVENTS.SELECT_RECORD, this, () => {\r\n this.Trigger(EVENTS.SELECT_RECORD, {Row: this});\r\n });\r\n }\r\n\r\n this._hasInlineControls = inlineControls && inlineControls.length > 0;\r\n _.each(inlineControls, (control) => {\r\n if (control.GetType() === CONTROL_TYPES.GenericButton || control.GetType() === CONTROL_TYPES.ButtonTemplate|| control.GetType() === CONTROL_TYPES.ButtonPlan) {\r\n (control as any).SetGridRow(this);\r\n const controlData = new ControlDataModel();\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: 0,\r\n SubjectRecordId: 0,\r\n RecordSpecsModel: null\r\n };\r\n \r\n control.SetValue(controlValue);\r\n }\r\n });\r\n\r\n let rowEntity = _.find(Util.GetAllQueryEntities(this._queryExpression), (item) => item.Metadata.Id == this._model.EntityId);\r\n\r\n this._isEntity = rowEntity && rowEntity.Metadata.Type === TABLE_TYPES.Entity;\r\n\r\n this._actionCell = new ActionCell(\r\n this._isEditable,\r\n this._enableBasket,\r\n this._recordInBasket,\r\n this._isDisableEditLinkButton,\r\n this._backLinkingButtons,\r\n this._model.Rights.IsEditingAllowed,\r\n this._queryExpression.IsCrossTable,\r\n inlineControls,\r\n this.HasSubGridsData,\r\n true,\r\n this._model.IsRetired,\r\n rowEntity ? rowEntity.Metadata : null,\r\n isSubGrid,\r\n this._isLinkJoin,\r\n this._model.ProcessCardsLifeStatuses,\r\n this.RecordId,\r\n this.EntityId\r\n );\r\n\r\n this._maxRowHeight = parseInt(maxRowHeight(), 10) < 100 ? '100' : maxRowHeight();\r\n\r\n if (isVisibleFavorite) {\r\n this._favoriteCell = new FavoriteCell();\r\n } else {\r\n this._favoriteCell = null;\r\n }\r\n\r\n this._isEditMode = ko.observable(false);\r\n this._isVisibleButtons = ko.observable(isVisibleButtons);\r\n this._isEnableSelectRecord = isEnableSelectRecord;\r\n\r\n let isEditOrListScreen =\r\n this._screenType === ScreenTypes[ScreenTypes.EditScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._screenType === ScreenTypes[ScreenTypes.SpecialScreen];\r\n\r\n this._isLockConfirmated = !isEditOrListScreen;\r\n this._actionCell.IsLocked = !isEditOrListScreen;\r\n this._actionCell.ScreenType = screenType;\r\n this._actionCell.IsVisibleButtons = isVisibleButtons;\r\n this._actionCell.HideToggleDisableButton = this._model.HideToggleDisableButton || this._hideLifeStatusToggle();\r\n this._actionCell.HideUnlink = this._hideUnlink();\r\n this._actionCell.HideEdit = this._hideEdit();\r\n this._isSelected = ko.observable(false);\r\n this._isNewRecord = isNewRecord;\r\n this._guid = Guid.NewGuid();\r\n\r\n this.ShowActionCell = ko.computed(() =>\r\n (this._isEditable() && (!this._hideUnlink() || !this._hideEdit() || !this._actionCell.HideToggleDisableButton || this._enableBasket()))\r\n || this._hasInlineControls\r\n || this.HasSubGrids\r\n || this._hasTotalRow() \r\n );\r\n\r\n this.SortDescriptionColumn = ko.computed(()=> _.find(this._dataCells(), (cell) => this._screenType === ScreenTypes[ScreenTypes.ConsultScreen] && cell.IsSortDescription && (!!cell.DisplayValue || cell.IsEditMode )));\r\n\r\n this._isGroupMode = !!isGroupMode;\r\n this._isGroupActive = ko.observable(this._isGroupMode ? true : true );\r\n this.SetRowColor();\r\n\r\n this.Init();\r\n this.InitWrappedRows();\r\n }\r\n\r\n SetRowColor() {\r\n this._rowColorEnabled = ko.observable(this._gridProperties && this._gridProperties.GetPropertyValue(PROPERTIES.ROW_COLOR));\r\n\r\n if (this._rowColorEnabled()) {\r\n const colorFields = this._model.Data.filter(field => field.Type == FIELD_TYPES.Color);\r\n if (colorFields.length > 0) {\r\n const color = ColorConverter.ToHex(colorFields[0].Value)\r\n this._rowColor = ko.observable(color ? ColorConverter.Hexify(color, 0.4) : '');\r\n } else {\r\n this._rowColor = ko.observable('');\r\n }\r\n }\r\n }\r\n\r\n IsSelectedChanged() {\r\n this.Trigger(EVENTS.ROW_SELECTION_CHANGED, {Selected: this._isSelected()});\r\n return true;\r\n }\r\n\r\n get Guid() {\r\n return this._guid;\r\n }\r\n\r\n SetVisibleButtons(isVisibleButton: boolean) {\r\n this._isVisibleButtons(isVisibleButton);\r\n }\r\n\r\n get IsNewRecord(): boolean {\r\n return this._isNewRecord;\r\n }\r\n\r\n get IsSelected(): KnockoutObservable<boolean> {\r\n return this._isSelected;\r\n }\r\n\r\n SetIsSelected(value: boolean) {\r\n this._isSelected(value);\r\n }\r\n\r\n get DataCells(): Array<DataCell> {\r\n return this._dataCells();\r\n }\r\n\r\n get ActionCell(): ActionCell {\r\n return this._actionCell;\r\n }\r\n\r\n get Model(): GridRowModel {\r\n return this._model;\r\n }\r\n\r\n get RecordTypeId() {\r\n return this._model.RecordTypeId;\r\n }\r\n\r\n get RecordKindId() {\r\n return this._model.KindId;\r\n }\r\n\r\n get HasWrappedColumn(): boolean {\r\n const wrappedCell = _.find(this._dataCells(), (dataCell) => dataCell.IsWrapped);\r\n\r\n return !!wrappedCell;\r\n }\r\n\r\n get HasGroupColumn(): boolean {\r\n const groupCell = _.find(this._dataCells(), (dataCell) => dataCell.IsGroup);\r\n\r\n return !!groupCell;\r\n }\r\n\r\n get IsLocked(): boolean {\r\n const lockedCells = _.where(this.DataCells, {IsLocked: true});\r\n\r\n return lockedCells && lockedCells.length > 0;\r\n }\r\n\r\n get IsStartGroup(): boolean {\r\n return this._model.IsStartGroup;\r\n }\r\n\r\n get IsEndGroup(): boolean {\r\n return this._model.IsEndGroup;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridRow';\r\n }\r\n\r\n GetSortDescriptionRowTemplateName(){\r\n return 'Core/Controls/Grid/BaseGrid/GridRow/Templates/SortDescriptionRow';\r\n }\r\n\r\n get EntityId(): number {\r\n return this._model.EntityId;\r\n }\r\n\r\n get RecordId(): number {\r\n return this._model.RecordId;\r\n }\r\n\r\n get RelationshipType(): number {\r\n return this._model.RelationshipType;\r\n }\r\n\r\n get KSeq(): number {\r\n return this._model.KSeq;\r\n }\r\n\r\n get LifestatusId(): number {\r\n return this._model.LifestatusId;\r\n }\r\n\r\n get IsEditMode(): boolean {\r\n return this._isEditMode();\r\n }\r\n\r\n set IsEditMode(isEditMode: boolean) {\r\n this._isEditMode(isEditMode);\r\n this.ActionCell.IsEditMode = isEditMode;\r\n\r\n _.each(this.DataCells, item => item.IsEditMode = isEditMode);\r\n }\r\n\r\n get RecordInBasket() {\r\n return this._recordInBasket();\r\n }\r\n\r\n set RecordInBasket(recordInBasket: boolean) {\r\n this._recordInBasket(recordInBasket);\r\n }\r\n\r\n get GroupGuid(): string {\r\n return this._model.GroupGuid;\r\n }\r\n\r\n get Form(): IForm {\r\n return this._form;\r\n }\r\n\r\n set GroupVisible(visible: boolean){\r\n this._isGroupActive(this._isGroupMode ? visible : true);\r\n }\r\n\r\n get GroupVisible(): boolean {\r\n return this._isGroupActive();\r\n }\r\n\r\n private GetDependsOnDataCells(dataCells: Array<DataCell>, dependsOn: number, type: string): Array<DataCell> {\r\n\r\n const filtered = _.filter(dataCells, (cell) => {\r\n return cell.Model.FieldMetadata.Type === type && cell.Model.FieldMetadata.DependsOn === dependsOn;\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n private UpdateDependsOnCells(recordId: number, dependsOnId: number) {\r\n let fieldIds: Array<number> = [];\r\n const dataCells = this.GetDependsOnDataCells(this.DataCells, dependsOnId, 'Text');\r\n const cellsToUpdate = {};\r\n\r\n _.forEach(dataCells, (cell) => {\r\n const key = cell.Model.FieldMetadata.FilledById;\r\n if (cellsToUpdate[key]) {\r\n cellsToUpdate[key].push(cell);\r\n } else {\r\n cellsToUpdate[key] = [];\r\n cellsToUpdate[key].push(cell);\r\n fieldIds.push(key);\r\n }\r\n });\r\n\r\n if (fieldIds.length) {\r\n if (recordId) {\r\n RecordStore.GetDependsOnValues({FieldIds: fieldIds, RecordId: recordId})\r\n .then((response: IGetDependsOnResponse) => {\r\n const controls = response.ResultObject;\r\n _.forEach(controls, (item) => {\r\n const cells = cellsToUpdate[item.Id];\r\n _.forEach(cells, (cell: DataCell) => {\r\n cell.ViewValue = item.Value;\r\n });\r\n });\r\n })\r\n .fail((error) => {\r\n new Notifier().Failed('Error getting data');\r\n });\r\n } else {\r\n _.forEach(fieldIds, (fieldId) => {\r\n const cells = cellsToUpdate[fieldId];\r\n _.forEach(cells, (cell: DataCell) => {\r\n cell.ViewValue = '';\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n private Init() {\r\n this.AddEvent(EVENTS.ROW_SELECTION_CHANGED);\r\n this.AddEvent(EVENTS.OPEN_HYPERLINK);\r\n this.AddEvent(EVENTS.EDIT_RECORD);\r\n this.AddEvent(EVENTS.EDIT_LINK);\r\n this.AddEvent(EVENTS.CHANGE_VISIBLE_GROUP);\r\n this.AddEvent(EVENTS.CANCEL_EDIT);\r\n this.AddEvent(EVENTS.SAVE_RECORD);\r\n this.AddEvent(EVENTS.DELETE_RECORD);\r\n this.AddEvent(EVENTS.ADD_TO_BASKET);\r\n this.AddEvent(EVENTS.REMOVE_FROM_BASKET);\r\n this.AddEvent(EVENTS.SAVE_LIFESTATUS);\r\n this.AddEvent(EVENTS.REFRESH);\r\n this.AddEvent(EVENTS.UNLINK_RECORD);\r\n this.AddEvent(EVENTS.LINK_NEXT_RELATION);\r\n this.AddEvent(EVENTS.MOVE_ROW_UP);\r\n this.AddEvent(EVENTS.MOVE_ROW_DOWN);\r\n this.AddEvent(EVENTS.HOVER_SORT);\r\n this.AddEvent(EVENTS.UN_HOVER_SORT);\r\n this.AddEvent(EVENTS.BACK_LINKING_POPUP_REQUESTED);\r\n this.AddEvent(EVENTS.SELECT_RECORD);\r\n this.AddEvent(EVENTS.SHOW_ORIGINAL_IMAGE);\r\n this.AddEvent(EVENTS.RECORD_DELETED);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.LINK_PARENT_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD);\r\n this.AddEvent(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.LOAD_SUB_GRID);\r\n this.AddEvent(EVENTS.EDIT_CLUSTERED_LINK);\r\n\r\n this.ActionCell.IsLifeStatusEnabled = this._model.LifestatusId === LIFESTATUS.ENABLED;\r\n\r\n const cells = [];\r\n\r\n _.each(this._model.Data, gridCellValueModel => {\r\n const dataCell = new DataCell({\r\n Model: gridCellValueModel,\r\n ScreenType: this._screenType,\r\n MaxRowHeight: this._maxRowHeight,\r\n IsNewRecord: this._isNewRecord,\r\n Form: this._form,\r\n QueryExpression: this._queryExpression\r\n });\r\n\r\n dataCell.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => this.Trigger(EVENTS.OPEN_HYPERLINK, eventArgs.data));\r\n dataCell.On(EVENTS.REFRESH, this, () => this.Trigger(EVENTS.REFRESH));\r\n dataCell.On(EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs) => {\r\n this.Trigger(EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: eventArgs.data.grid }); \r\n });\r\n\r\n dataCell.On(EVENTS.SAVE_RECORD, this, this.SaveRow);\r\n \r\n dataCell.On(EVENTS.CREATE_OR_DELETE_SORT_DESCRIPTION, this, ()=>{\r\n _.each(this._dataCells(), cell=>{\r\n if(cell.IsSortDescription){\r\n cell.CreateOrRemoveDescription();\r\n }\r\n });\r\n });\r\n \r\n dataCell.On(EVENTS.LINK_NEXT_RELATION, this, (eventArgs: any) => this.Trigger(EVENTS.LINK_NEXT_RELATION, {field: eventArgs.data.field}));\r\n dataCell.On(EVENTS.DROPDOWN_VALUE_SELECTED, this, (eventArgs: any) => this.UpdateDependsOnCells(eventArgs.data.recordId, eventArgs.data.fieldId));\r\n\r\n dataCell.On(EVENTS.SHOW_ORIGINAL_IMAGE, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.SHOW_ORIGINAL_IMAGE, {dataCell: eventArgs.data.dataCell});\r\n });\r\n\r\n dataCell.On(EVENTS.MOVE_ROW_DOWN, this, () => {\r\n this.Trigger(EVENTS.MOVE_ROW_DOWN, {SortCell: dataCell});\r\n });\r\n dataCell.On(EVENTS.MOVE_ROW_UP, this, () => {\r\n this.Trigger(EVENTS.MOVE_ROW_UP, {SortCell: dataCell});\r\n });\r\n\r\n dataCell.On(EVENTS.HOVER_SORT, this, () => {\r\n this.Trigger(EVENTS.HOVER_SORT, {SortCell: dataCell});\r\n });\r\n dataCell.On(EVENTS.UN_HOVER_SORT, this, () => {\r\n this.Trigger(EVENTS.UN_HOVER_SORT, {SortCell: dataCell});\r\n });\r\n\r\n\r\n dataCell.On(EVENTS.PRINT_LABEL, this, () => {\r\n this.PrintLabel(dataCell);\r\n });\r\n\r\n cells.push(dataCell);\r\n });\r\n\r\n this._dataCells(cells);\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === this._model.EntityId && eventArgs.data.RecordId === this._model.RecordId) {\r\n this.Trigger(EVENTS.CANCEL_EDIT);\r\n }\r\n });\r\n\r\n this._actionCell.On(EVENTS.EDIT_RECORD, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_RECORD);\r\n });\r\n\r\n this._actionCell.On(EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.EDIT_LINK, { gridRow: this });\r\n });\r\n\r\n this._actionCell.On(EVENTS.CHANGE_LIFESTATUS, this, (eventArgs: any) => {\r\n this._model.LifestatusId = eventArgs.source.IsLifeStatusEnabled ? LIFESTATUS.ENABLED : LIFESTATUS.DISABLED;\r\n this.Trigger(EVENTS.SAVE_LIFESTATUS, this);\r\n });\r\n\r\n this._actionCell.On(EVENTS.CANCEL_EDIT, this, (eventArgs: any) => {\r\n LockManager.Instance.ReleaseLock(this._model.EntityId, this._model.RecordId);\r\n this.Trigger(EVENTS.CANCEL_EDIT);\r\n });\r\n\r\n this._actionCell.On(EVENTS.SAVE_RECORD, this, (eventArgs: any) => {\r\n this.SaveRow();\r\n });\r\n\r\n this._actionCell.On(EVENTS.DELETE_RECORD, this, (eventArgs: any) => this.Trigger(EVENTS.DELETE_RECORD));\r\n\r\n this._actionCell.On(EVENTS.UNLINK_RECORD, this, (eventArgs: any) => this.Trigger(EVENTS.UNLINK_RECORD));\r\n\r\n this._actionCell.On(EVENTS.CLICK_UNLINK_CHECKBOX, this, (eventArgs: any) => {\r\n if (!this._isSelectedForUnlinking()) {\r\n this._isSelectedForUnlinking(true);\r\n } else {\r\n this._isSelectedForUnlinking(false);\r\n }\r\n\r\n this._model.IsUnlinkCheckboxChecked = this._isSelectedForUnlinking();\r\n });\r\n\r\n this._actionCell.On(EVENTS.ADD_TO_BASKET, this, () => {\r\n this.Trigger(EVENTS.ADD_TO_BASKET, {Row: this})\r\n });\r\n this._actionCell.On(EVENTS.REMOVE_FROM_BASKET, this, () => {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET, {Row: this})\r\n });\r\n\r\n this._actionCell.On('REFRESH', this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n this._actionCell.On(EVENTS.BACK_LINKING_POPUP_REQUESTED, this, eventArgs => {\r\n this.Trigger(EVENTS.BACK_LINKING_POPUP_REQUESTED, {\r\n ButtonName: eventArgs.data.ButtonName,\r\n SubTableView: eventArgs.data.SubTableView,\r\n Intention: eventArgs.data.Intention,\r\n LeftTableId: this._form.GetScreen().GetEntityId(),\r\n RightTableId: this.Model.EntityId,\r\n LeftRecordId: this._form.GetScreen().GetRecordId(),\r\n RightRecordId: this.Model.RecordId,\r\n Sequence: this.Model.KSeq\r\n });\r\n });\r\n\r\n _.each(this._model.NestedData, (subGridData: GridDataModel) => {\r\n subGridData.QueryExpression = this._queryExpression;\r\n subGridData.GridParentEntityId = this._model.EntityId;\r\n\r\n let enableSubGridBasket = ko.observable(false);\r\n\r\n if (this._enableBasket() && subGridData.Rows.length > 0) {\r\n if (this._model.EntityId === subGridData.Rows[0].EntityId) {\r\n enableSubGridBasket = this._enableBasket;\r\n }\r\n }\r\n\r\n const grid = new BaseGrid({\r\n hideLifeStatusToggle: this._hideLifeStatusToggle,\r\n hideUnlink: this._hideUnlink,\r\n hideEdit: this._hideEdit,\r\n enableBasket: enableSubGridBasket,\r\n isEditable: ko.observable(true),\r\n screenType: this._screenType,\r\n isNested: true,\r\n properties: this._gridProperties,\r\n form: this._form,\r\n ParentRow: this\r\n });\r\n\r\n grid.On(EVENTS.ADD_TO_BASKET, this, (eventArgs) => {\r\n this.Trigger(EVENTS.ADD_TO_BASKET, {Row: eventArgs.data.Row})\r\n });\r\n\r\n grid.On(EVENTS.REMOVE_FROM_BASKET, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REMOVE_FROM_BASKET, {Row: eventArgs.data.Row})\r\n });\r\n\r\n grid.On(EVENTS.RECORD_DELETED, this, () => {\r\n this.Trigger(EVENTS.RECORD_DELETED);\r\n });\r\n\r\n grid.On(EVENTS.REFRESH, this, () => {\r\n this.Trigger(EVENTS.REFRESH);\r\n });\r\n\r\n grid.On(EVENTS.DATA_SAVED, this, (eventArgs) => {\r\n this.Trigger(EVENTS.REFRESH, { SubGrid: eventArgs.data.SubGrid || grid, ParentRowId: eventArgs.data.ParentRowId || this.Model.RowId, UpdateRow: eventArgs.data.UpdateRow || this });\r\n });\r\n\r\n grid.On(EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(eventArgs.data.EntityId, eventArgs.data.RecordId, eventArgs.data.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, this._form ? this._form.GetScreen().GetEntityId().toString() : null)\r\n\r\n this.GoToRecordScreen(eventArgs.data);\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.LINK_RECORD, this, (eventArgs) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n \r\n this.Trigger(TOOLBAR_EVENTS.LINK_RECORD, eventArgs.data.MainRecordId && eventArgs.data.MainEntityId && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n MainRecordId: record.RecordId,\r\n MainEntityId: record.EntityId,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, (eventArgs) => {\r\n this.Trigger(TOOLBAR_EVENTS.LINK_PARENT_RECORD, eventArgs.data.Row && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n Row: this,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, (eventArgs) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n this.Trigger(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, eventArgs.data.Row && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n MainRecordId: record.RecordId,\r\n MainEntityId: record.EntityId,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, (eventArgs) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n this.Trigger(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, eventArgs.data.Row && eventArgs.data.RelatedEntityId ? eventArgs.data : {\r\n MainRecordId: record.RecordId,\r\n MainEntityId: record.EntityId,\r\n RelatedEntityId: grid.Model.GridSubjectEntityId\r\n });\r\n });\r\n\r\n grid.On(EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n let record = this.GetMainRecord(subGridData.SubQueryGuid, subGridData.QueryExpression);\r\n\r\n this.Trigger(EVENTS.EDIT_LINK, eventArgs.data.mainRecordId && eventArgs.data.mainEntityId && eventArgs.data.gridRow ? eventArgs.data : {\r\n mainEntityId: record.EntityId,\r\n mainRecordId: record.RecordId,\r\n gridRow: eventArgs.data.gridRow\r\n });\r\n });\r\n\r\n grid.On(EVENTS.LOAD_SUB_GRID, this, (eventArgs) => {\r\n this.Trigger(EVENTS.LOAD_SUB_GRID, { SubGrid: eventArgs.data.SubGrid || grid, ParentRowId: eventArgs.data.ParentRowId || this.Model.RowId });\r\n });\r\n\r\n grid.On(EVENTS.CHANGE_VISIBLE_GROUP, this, (eventArgs: any) => {\r\n this.Trigger(EVENTS.CHANGE_VISIBLE_GROUP, { gridRow: eventArgs.data.gridRow });\r\n });\r\n\r\n grid.SetData(subGridData);\r\n this._nestedGrids.push(grid);\r\n\r\n this._actionCell.On(EVENTS.EXPAND, this, () => {\r\n grid.Expand();\r\n this.Trigger(EVENTS.LOAD_SUB_GRID, { SubGrid: grid, ParentRowId: this.Model.RowId });\r\n });\r\n\r\n this._actionCell.On(EVENTS.COLLAPSE, this, () => grid.Colapse());\r\n });\r\n\r\n if (this._favoriteCell) {\r\n this._favoriteCell.IsFavorite =\r\n UserVarsManager.Instance.IsInFavorites(this._model.RecordId, this._model.EntityId, 0);\r\n }\r\n\r\n if (this._queryExpression.EntityJoins.length === 0\r\n && this._queryExpression.SubEntityJoins.length > 0\r\n && this._queryExpression.SubEntityJoins[0].Entity.Metadata.IsView) {\r\n if (this._screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n this._isEditable(false);\r\n }\r\n }\r\n\r\n if (this._screenType === ScreenTypes[ScreenTypes.Portlet]) {\r\n this._isEditable(this._hasProcessCards);\r\n }\r\n }\r\n\r\n GetMainRecord(guid: string, query: QueryExpressionModel): RecordKey{\r\n let entity = Util.GetEntityByGuid(guid, query);\r\n let parentEntity = Util.GetParentEntity(entity, query);\r\n let record = _.find(this._model.RecordKeys, (recordKey)=> recordKey.QueryEntityGuid === parentEntity.Guid);\r\n return record;\r\n }\r\n\r\n PrintLabel(dataCell: DataCell){\r\n let label = dataCell.DisplayValue;\r\n if(_.isEmpty(label)){\r\n let alias = _.find(this._dataCells(), (cell)=> cell.Model.FieldMetadata.Type == FIELD_TYPES.Alias);\r\n if(alias){\r\n label = alias.DisplayValue;\r\n }\r\n } \r\n DocumentManagerStore.PrintLabel({ Barcode: label }).fail(err=>new Notifier().Failed(err.message));\r\n }\r\n\r\n private InitWrappedRows(){\r\n let maxWrapped = _.max(this._model.Data, (item) => item.CrossWrapped.length);\r\n\r\n if(this._model.Data.length > 0 && maxWrapped.CrossWrapped.length > 0){\r\n for(let indx=0; indx<maxWrapped.CrossWrapped.length; indx++){\r\n\r\n let model = new GridRowModel();\r\n _.each(this._model.Data, (cell)=>{\r\n let wrappedCell = cell.CrossWrapped[indx];\r\n if(wrappedCell){\r\n model.Data.push(wrappedCell);\r\n }else{\r\n let emptyCell = new GridCellValueModel();\r\n model.Data.push(emptyCell)\r\n }\r\n });\r\n\r\n let row = new GridRow(\r\n model,\r\n this._isEditable,\r\n ko.observable(true),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(true),\r\n ko.observableArray([]),\r\n this._isEnableSelectRecord,\r\n null,\r\n this._isVisibleButtons(),\r\n this._queryExpression,\r\n this._isNewRecord,\r\n !!this._favoriteCell,\r\n ko.observable(this._maxRowHeight),\r\n this._form,\r\n [],\r\n false,\r\n this._gridProperties,\r\n this._isSubGrid,\r\n this._isGroupMode,\r\n false,\r\n false,\r\n this._hasTotalRow\r\n )\r\n this._crossTableWrapped.push(row);\r\n }\r\n }\r\n }\r\n\r\n get CrossTableWrapped(): Array<GridRow> {\r\n return this._crossTableWrapped\r\n }\r\n\r\n get HasSubGridsData(): boolean {\r\n var result = false;\r\n _.each(this._model.NestedData, (nestedData: any) => {\r\n if (nestedData.TotalRecords > 0) {\r\n result = true;\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n get HasSubGrids(): boolean {\r\n return this._model.NestedData.length > 0;\r\n }\r\n\r\n GoToRecordScreen(data: any) {\r\n data.IsOpenInModal = data.ShowInModal ? data.ShowInModal : this._form ? this._form.GetScreen().IsInModal() : true;\r\n data.Owner = this._form ? this._form.GetScreen() : null;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n SaveRow(): boolean {\r\n let isDataValid = true;\r\n\r\n _.each(this.DataCells, item => {\r\n if (!item.IsDataValid() && !item.IsReadOnly()) {\r\n isDataValid = false;\r\n }\r\n });\r\n\r\n if (isDataValid) {\r\n _.each(this.DataCells, item => {\r\n item.SaveControlValue(this.GetLinkEditorFieldData(item.Model.FieldMetadata.Id));\r\n });\r\n this.Trigger(EVENTS.SAVE_RECORD);\r\n }\r\n this.SetRowColor();\r\n return isDataValid;\r\n }\r\n\r\n SaveLinkEditorData(controls: Array<IControl>) {\r\n _.each(controls, (control) => {\r\n let controlField = control.GetFieldModel();\r\n if (controlField) {\r\n let cellByFieldId = _.find(this._dataCells(), (dataCell) => {\r\n return dataCell.Model.FieldMetadata.Id === controlField.Id && dataCell.IsEnableEdit();\r\n });\r\n\r\n if (cellByFieldId) {\r\n cellByFieldId.SaveLinkEditorValue(control);\r\n }\r\n }\r\n });\r\n }\r\n\r\n GetLinkEditorFieldData(fieldId: number): FieldDataModel {\r\n if (this._linkEditorData) {\r\n let linkEditorData = _.find(this._linkEditorData.LinkEditorChanges, (linkEditorChange) => {\r\n return linkEditorChange.EntityId == this.EntityId && linkEditorChange.RecordId == this.RecordId;\r\n });\r\n\r\n if (linkEditorData) {\r\n let fieldValue = _.find(linkEditorData.FieldValues, (fieldValue) => {\r\n return fieldValue.FieldId === fieldId;\r\n });\r\n return fieldValue;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n EnterKey() {\r\n if (this._isEditMode) return true;\r\n this.Trigger(\r\n EVENTS.OPEN_HYPERLINK,\r\n { EntityId: this._model.EntityId, RecordId: this._model.RecordId, RecordTypeId: this._model.RecordTypeId }\r\n );\r\n }\r\n\r\n SelectRecord() {\r\n this.Trigger(\r\n EVENTS.SELECT_RECORD,\r\n {\r\n Row: this\r\n }\r\n );\r\n }\r\n\r\n get State(): States {\r\n return this._state;\r\n }\r\n\r\n set State(state: States) {\r\n this._state = state;\r\n }\r\n\r\n MarkRecodsInBasket(records: Array<number>) {\r\n this.RecordInBasket = records.indexOf(this.RecordId) >= 0;\r\n\r\n _.each(this._nestedGrids(), (nestedGrid) => {\r\n nestedGrid.MarkRecodsInBasket(records);\r\n });\r\n }\r\n\r\n set GroupedData(data) {\r\n this._groupedData = data;\r\n }\r\n\r\n get GroupedData() {\r\n return this._groupedData;\r\n }\r\n\r\n GetGroupedDataTooltip() {\r\n return this._groupedData.map(item => `${item.Title}: ${item.Value || ''}; `).join('');\r\n }\r\n\r\n OnHyperlinkClick(item: GroupedDataItem, event: JQuery.ClickEvent<HTMLElement>) {\r\n const recordkey = item.Cell.Model.RecordKeys[0];\r\n const isOpenAgenda = item.Cell.Model.EntityMetadata.Name === 'AGENDA';\r\n const entityId = recordkey.EntityId;\r\n const recordTypeId = item.Cell.Model.RecordTypeId;\r\n\r\n let ids = _.uniq(item.Cell.Model.RecordKeys.map(item=>item.RecordId));\r\n\r\n if(ids.length > 1){\r\n this.ShowGroupDetail(entityId, ids, isOpenAgenda, event);\r\n }else{\r\n this.ExecuteHyperlinkTrigger(entityId, isOpenAgenda, recordkey.RecordId, recordTypeId, event.ctrlKey);\r\n }\r\n }\r\n\r\n private ShowGroupDetail(\r\n entityId: number,\r\n recordIds: Array<number>,\r\n isOpenAgenda: boolean,\r\n event: JQuery.ClickEvent<HTMLElement>\r\n ){\r\n BlockUI.Block();\r\n GridStore.GetGroupDetail({ EntityId: entityId, RecordIds: recordIds })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (event.target instanceof HTMLElement) {\r\n const groupDetailsDropdown = new GroupDetailsDropdown();\r\n groupDetailsDropdown.SetData(result);\r\n groupDetailsDropdown.Show(event.target);\r\n groupDetailsDropdown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n groupDetailsDropdown.Close();\r\n this.ExecuteHyperlinkTrigger(entityId, isOpenAgenda, eventArgs.data.SelectedRecord.Model.RecordId, eventArgs.data.SelectedRecord.Model.RecordTypeId, event.ctrlKey);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n private ExecuteHyperlinkTrigger(\r\n entityId: number,\r\n isOpenAgenda: boolean,\r\n recordId: number,\r\n recordTypeId: number,\r\n showInModal: boolean\r\n ){\r\n this.Trigger(EVENTS.OPEN_HYPERLINK, {\r\n EntityId: entityId,\r\n IsOpenAgenda: isOpenAgenda,\r\n RecordId: recordId,\r\n RecordTypeId: recordTypeId,\r\n ShowInModal: showInModal\r\n });\r\n }\r\n\r\n set LinkEditorData(linkEditorData: UpdateDataModel) {\r\n this._linkEditorData = linkEditorData;\r\n _.each(this._linkEditorData.LinkEditorChanges, (item) => {\r\n item.Guid = this.Guid;\r\n });\r\n }\r\n\r\n get LinkEditorData(): UpdateDataModel {\r\n return this._linkEditorData;\r\n }\r\n\r\n GridUnlinkMultipleRecords() {\r\n this._actionCell.IsMultipleUnlinkModeActive = true;\r\n }\r\n\r\n GridConfirmMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n GridCancelMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n SubGridUnlinkMultipleRecords() {\r\n this._actionCell.IsMultipleUnlinkModeActive = true;\r\n }\r\n\r\n SubGridConfirmMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n SubGridCancelMultipleUnlinking() {\r\n this._actionCell.IsMultipleUnlinkModeActive = false;\r\n }\r\n\r\n\r\n\r\n SerializeLinkEditorData(): UpdateDataModel {\r\n if (this._linkEditorData) {\r\n return Serialize(this._linkEditorData);\r\n }\r\n return null;\r\n }\r\n\r\n GetColumns(isWrapped: boolean) { \r\n return _.filter(this._dataCells(), (cell) => {\r\n return cell.IsWrapped === isWrapped && !cell.IsSortDescription;\r\n })\r\n }\r\n\r\n GetWrappedColumns() {\r\n let result = [];\r\n\r\n let wrappedCells = _.filter(this._dataCells(), (cell) => cell.IsWrapped);\r\n\r\n let wrapGroups = _.groupBy(wrappedCells, cell=>cell.Model.WrapGroup);\r\n _.each(wrapGroups, (group)=>{\r\n result.push(group);\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GridGroupToggle(): void {\r\n this._isGroupActive(!this._isGroupActive());\r\n this.Trigger(EVENTS.CHANGE_VISIBLE_GROUP, {GroupActive: this._isGroupActive()});\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>) {\r\n this._el = _.find(elements, (el) => !!el.className && el.className.includes('flex-grid-row parent-row parent have-related'));\r\n \r\n const $el: any = $(this._el);\r\n\r\n if (\r\n this._form &&\r\n this._screenType !== ScreenTypes[ScreenTypes.EditScreen] &&\r\n this._isEntity &&\r\n !this.Model.IsGroup\r\n ) {\r\n const screen = this._form.GetScreen();\r\n\r\n if (screen.GetTableTypeFlowFolder()) {\r\n setTimeout(() => {\r\n const gridContainer = $el.closest('.grid-relative-container');\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n $el.popover('destroy');\r\n\r\n $el.popover({\r\n content: '<i class=\"fa fa-ellipsis-v\" /><i class=\"fa fa-ellipsis-v\" />',\r\n template: `\r\n <div class=\"popover grid-relative-container__flow-folder-popover\">\r\n <div class=\"popover-content\" />\r\n </div>\r\n `,\r\n html: true,\r\n placement: 'left',\r\n trigger: 'manual',\r\n animation: false,\r\n container: gridContainer,\r\n viewport: gridContainer\r\n });\r\n\r\n $el.on('inserted.bs.popover', () => {\r\n const $grip = $(`#${$el.attr('aria-describedby')}`);\r\n\r\n $grip.data('EntityId', this.EntityId);\r\n $grip.data('RecordId', this.RecordId);\r\n\r\n $grip.draggable({\r\n helper: () =>\r\n $('<div />')\r\n .append($grip.clone().removeAttr('id')),\r\n classes: { 'ui-draggable-dragging': 'flow-folder-dragging-helper' },\r\n appendTo: 'body',\r\n scrollSensitivity: 75,\r\n zIndex: 100000\r\n });\r\n });\r\n\r\n $el.popover('show');\r\n });\r\n\r\n resizeObserver.observe(gridContainer[0]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback($el[0], () => {\r\n $el.popover('destroy');\r\n\r\n resizeObserver.unobserve(gridContainer[0]);\r\n });\r\n }, 500);\r\n }\r\n }\r\n }\r\n\r\n get El(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n get IsGridRow(): boolean{\r\n return true;\r\n }\r\n\r\n HighlightSort(){\r\n this._showSortBorder(true);\r\n }\r\n\r\n UnHighlightSort(){\r\n this._showSortBorder(false);\r\n }\r\n}","// Module\nvar code = \"<!-- ko template: { name: $data.GetSortDescriptionRowTemplateName.bind($data) } --><!-- /ko --> <!-- ko if: Model.IsGroup --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row grouped parent-row parent related\\\" data-bind=\\\"style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: _isEditable() || $data.HasSubGrids --> <div class=\\\"flex-grid-tdata edit-cell js-reserved\\\"> <span data-bind=\\\"click: $data.GridGroupToggle\\\" class=\\\"grid-group-toggle-btn\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: {'fa-angle-up': _isGroupActive(), 'fa-angle-down': !_isGroupActive()}\\\"></i> </span> <!-- ko if: _relationshipType === 'Child' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.CHILD}\\\"> <i class=\\\"fa fa-arrow-down transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'Parent' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.PARENT}\\\"> <i class=\\\"fa fa-arrow-up transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'ToItself' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.ITSELF}\\\"> <i class=\\\"fa fa-retweet transition\\\"></i> </span> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: _favoriteCell --> <div class=\\\"flex-grid-tdata favorite-cell js-reserved\\\"></div> <!-- /ko --> <!-- ko if: ($data._dataCells() && GroupedData.length > 0) --> <div class=\\\"flex-grid-tdata-grouped wrapped\\\" data-bind=\\\"attr: {title : GetGroupedDataTooltip()}\\\"> <!-- ko foreach: GroupedData --> <!-- ko text: Title --> <!-- /ko -->: <!-- ko if: $data.Cell._isHyperLink --> <!-- ko if: Value --> <span data-bind=\\\"text: Value, click: $parent.OnHyperlinkClick.bind($parent)\\\" class=\\\"hyperlink\\\"> </span> <!-- /ko --> <!-- ko ifnot: Value --> <i data-bind=\\\"click: $parent.OnHyperlinkClick.bind($parent)\\\" class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"> </i> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data.Cell._isHyperLink --> <!-- ko text: Value --><!-- /ko --> <!-- /ko -->; <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: Model.IsGroup --> <div data-bind=\\\"enterKey: {handler: $data.EnterKey.bind($data), bubble: true}, style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor()},\\r\\n visible: _isGroupActive(),\\r\\n\\t\\t\\t\\t\\tcss: {'editModeActive': _isEditMode(), 'sort-row': $data._showSortBorder, 'not-grouped': true }\\\" tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"> <input data-bind=\\\"uniform: _isSelected, checked: _isSelected, click: IsSelectedChanged\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> <!-- ko if: ShowActionCell() --> <div class=\\\"flex-grid-tdata edit-cell js-reserved\\\" data-bind=\\\"style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: _relationshipType === 'Child' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.CHILD}\\\"> <i class=\\\"fa fa-arrow-down transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'Parent' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.PARENT}\\\"> <i class=\\\"fa fa-arrow-up transition\\\"></i> </span> <!-- /ko --> <!-- ko if: _relationshipType === 'ToItself' --> <span class=\\\"grid-relation-icon-container\\\" data-bind=\\\" attr: {'title': _labels.ITSELF}\\\"> <i class=\\\"fa fa-retweet transition\\\"></i> </span> <!-- /ko --> <!-- ko with: _actionCell --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- ko with: _favoriteCell --> <div class=\\\"flex-grid-tdata favorite-cell js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> <!-- ko fastForEach: { data: _dataCells } --> <!--ko if: $data.IsOrdinary --> <div class=\\\"flex-grid-tdata\\\" data-bind=\\\"css: $data.GetGrid($context).GetClassNames(Model, [IsEditMode]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'maxHeight': _maxRowHeight + 'px',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'width': Model.width\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: GetAttributes($index()),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: $data.Tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttemplate: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko with: $data._selectRowCell --> <div class=\\\"flex-grid-tdata js-reserved\\\"> <!-- ko template: { name: GetTemplateName } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: GetWrappedColumns() --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\" data-bind=\\\"\\r\\n visible: $parent._isGroupActive(),\\r\\n\\t\\t\\t style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko foreach: $data --> <div class=\\\"flex-grid-tdata td-wrapped\\\" data-bind=\\\"css: $parents[2].GetClassNames(Model, [IsEditMode]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'background': $parents[1]._rowColorEnabled() && !$parents[1]._isEditMode() && $parents[1]._rowColor() }\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: IsEndGroup --> <!-- ko with: $parent.GetTotalGroup($data.GroupGuid) --> <!-- ko if: HasData --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\" data-bind=\\\"\\r\\n visible: _isGroupActive(),\\r\\n style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-edit js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b><!-- ko text: _labels.SUBTOTAL --><!-- /ko --></b> </div> <!-- ko if: $data._showFavoriteCell--> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"></div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite total-cell-edit js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b><!-- ko text: _labels.SUBTOTAL --><!-- /ko --></b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[2]._columnClassesTotalCollection()[$index()],\\r\\n\\t\\t\\t\\t\\tattr: {\\r\\n\\t\\t\\t\\t\\t\\t'data-priority': _columnModel.DisplayPriority,\\r\\n\\t\\t\\t\\t\\t\\t'data-index':$index(),\\r\\n\\t\\t\\t\\t\\t\\t'data-value': Boolean(Value)\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\tstyle: {width: $parents[2].getColumnWidth.call($parents[2], $index()), 'background': $parent._rowColorEnabled && $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: $parent.GetAverageGroup($data.GroupGuid) --> <!-- ko if: HasData --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\" data-bind=\\\"style: {'background': _rowColorEnabled() && !_isEditMode() && _rowColor() }\\\"> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-edit js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b>Average</b> </div> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"></div> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <b>Average</b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[2]._columnClassesCollection()[$index()],\\r\\n\\t\\t\\t\\t\\tattr: {'data-priority': _columnModel.DisplayPriority, 'data-index':$index()},\\r\\n\\t\\t\\t\\t\\tstyle: {width: $parents[2].getColumnWidth.call($parents[2], $index()), 'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor()}\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko foreach: _nestedGrids --> <!-- ko if: _visible --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related subTableContainer\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata flex-grid-nested-table\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\" style=\\\"min-width:100%\\\"> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._guid}\\\" class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"table-scrollable\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> <!-- ko with: _toolbar --> <div class=\\\"pagination-container-grid margin-t-15px\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: $data.SortDescriptionColumn() --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related sortDescriptionColumn\\\" data-bind=\\\"style: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <div class=\\\"flex-grid-tdata td-wrapped\\\" data-bind=\\\"css: $parents[1].GetClassNames(Model, [IsEditMode]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {'background': $parent._rowColorEnabled() && !$parent._isEditMode() && $parent._rowColor() }\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data) } --> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","export enum States {\r\n\tNoChanges,\r\n\tNew,\r\n\tEdit,\r\n\tDelete,\r\n\tLink,\r\n\tUnlink,\r\n\tLinkAndEdit\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport { IForm, IScreen } from \"Core/Screens/IScreen\";\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow.html';\r\nimport { BlockUI } from \"../Index\";\r\nko.templates['Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow'] = Template;\r\n\r\nexport class GridScreenRow{\r\n private _screen: KnockoutObservable<IScreen>;\r\n private __screen: IScreen;\r\n private _el: HTMLElement;\r\n private _form: IForm;\r\n private _recordId: number;\r\n\r\n\r\n constructor(screen: IScreen, form: IForm, recordId: number){\r\n this._screen = ko.observable(null);\r\n this.__screen = screen;\r\n this._recordId = recordId;\r\n this._form = form; \r\n }\r\n\r\n async LoadScreenData(){\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n let screen = await screenManager.GetScreenById({ ScreenId: this.__screen.GetScreenId(), RecordId: this._recordId });\r\n this._screen(screen);\r\n this.__screen = screen;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){\r\n this._el = _.find(elements, el=>el.nodeType === 1);\r\n let $el: any = $(this._el);\r\n\r\n if (this._form && this.__screen.GetRecordId() > 0) {\r\n const screen = this._form.GetScreen();\r\n\r\n if ( screen.GetType() !== ScreenTypes[ScreenTypes.EditScreen] && screen.GetTableTypeFlowFolder()) {\r\n setTimeout(() => {\r\n const gridContainer = $el.closest('.grid-relative-container');\r\n\r\n const resizeObserver = new ResizeObserver(() => {\r\n $el.popover('destroy');\r\n\r\n $el.popover({\r\n content: '<i class=\"fa fa-ellipsis-v\" /><i class=\"fa fa-ellipsis-v\" />',\r\n template: `\r\n <div class=\"popover grid-relative-container__flow-folder-popover\">\r\n <div class=\"popover-content\" />\r\n </div>\r\n `,\r\n html: true,\r\n placement: 'left',\r\n trigger: 'manual',\r\n animation: false,\r\n container: gridContainer,\r\n viewport: gridContainer\r\n });\r\n\r\n $el.on('shown.bs.popover', (evt) => {\r\n const $grip = $(`#${$el.attr('aria-describedby')}`);\r\n $grip.css({top: evt.currentTarget.offsetTop});\r\n });\r\n\r\n $el.on('inserted.bs.popover', () => {\r\n const $grip = $(`#${$el.attr('aria-describedby')}`);\r\n\r\n $grip.data('EntityId', this.__screen.GetEntityId());\r\n $grip.data('RecordId', this._recordId);\r\n\r\n $grip.draggable({\r\n helper: () =>\r\n $('<div />')\r\n .append($grip.clone().removeAttr('id')),\r\n classes: { 'ui-draggable-dragging': 'flow-folder-dragging-helper' },\r\n appendTo: 'body',\r\n scrollSensitivity: 75,\r\n zIndex: 100000\r\n });\r\n });\r\n\r\n $el.popover('show');\r\n });\r\n\r\n resizeObserver.observe(gridContainer[0]);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback($el[0], () => {\r\n $el.popover('destroy');\r\n\r\n resizeObserver.unobserve(gridContainer[0]);\r\n });\r\n }, 1500);\r\n }\r\n }\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/Grid/BaseGrid/GridRow/Templates/GridScreenRow';\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _screen --> <!-- ko if: IsCardScreen --> <div class=\\\"row row-no-margin\\\" data-bind=\\\"\\r\\n style: {\\r\\n 'width': _screenWidth(),\\r\\n 'background-color': _screenBgColor(),\\r\\n 'color': _fontColor()\\r\\n },\\r\\n css: {'custom-color': _hasCustomColor(), 'custom-weight': _hasCustomWeight()},\\r\\n class: _customStyle()\\r\\n \\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: IsCardScreen --> <div class=\\\"row row-no-margin\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {TotalCell} from 'Core/Controls/Grid/BaseGrid/GridCell/TotalCell';\r\nimport {GridAverageRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridAverageRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class GridAverageRow {\r\n\tprivate _dataCells: KnockoutObservableArray<TotalCell>;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: GridAverageRowModel,\r\n\t\tpublic _isEnableSelectRecord: KnockoutObservable<boolean>,\r\n\t\tcolumns: GridColumnModel[]\r\n\t) {\r\n\t\tthis._dataCells = ko.observableArray([]);\r\n\t\t_.each(this._model.Data, (item, index) => {\r\n\t\t\tlet filterAverageColumns = _.filter(columns, column => !column.IsSortDescription);\r\n\t\t\tthis._dataCells.push(new TotalCell(item, filterAverageColumns[index]));\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasWrappedColumn(): boolean {\r\n\t\tvar wrappedCell = _.find(this._dataCells(), (dataCell) => { return dataCell.IsWrapped });\r\n\t\treturn wrappedCell != null;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasData(): boolean {\r\n\t\treturn this._model.Data.length > 0;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget Guid(): string {\r\n\t\treturn this._model.Guid;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {BaseColumn} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\n\r\nexport class GroupColumn extends BaseColumn {\r\n\tconstructor(model: GridColumnModel) {\r\n\t\tsuper(model);\r\n\t\tthis._sortOrder(SortOrder.Asc);\r\n\t}\r\n\r\n\tResetSort() {\r\n\t\tthis._sortOrder(SortOrder.Asc);\r\n\t}\r\n\r\n\tget IsGroup(): boolean {\r\n\t\treturn this._model.IsGroup;\r\n\t}\r\n\r\n\tget IsEnableSort(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tSort() {\r\n\t\t if (this._sortOrder() === SortOrder.Asc) {\r\n\t\t\tthis._sortOrder(SortOrder.Desc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Desc) {\r\n\t\t\tthis._sortOrder(SortOrder.Asc);\r\n\t\t}\r\n\r\n\t\tthis.Trigger(EVENTS.SORT, { Column: this._model.Alias, SortOrder: this._sortOrder() });\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\n\r\nimport SearchTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Search/FastFilterSearch.html'\r\n\r\nexport class FastFilterSearch {\r\n\tprivate _element: HTMLElement;\r\n\tprivate _model: GridColumnModel;\r\n\tprivate _searchValue: KnockoutObservable<string>;\r\n\tprivate _changeTimerId: number;\r\n\tprivate _filterType: string;\r\n\tprivate _inputType: string;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(model: GridColumnModel, callback: any) {\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._searchValue = ko.observable('');\r\n\t\tthis._model = model;\r\n\t\tthis._inputType = 'text';\r\n\r\n\t\tthis._searchValue.subscribe((value) => {\r\n\t\t\tif (this._changeTimerId) {\r\n\t\t\t\tclearTimeout(this._changeTimerId);\r\n\r\n\t\t\t\tthis._changeTimerId = setTimeout(() => {\r\n\t\t\t\t\tthis._changeTimerId = null;\r\n\t\t\t\t\tthis._searchValue(this.FormatInputValue(value));\r\n\r\n\t\t\t\t\tcallback(this._searchValue());\r\n\t\t\t\t}, 500);\r\n\t\t\t} else {\r\n\t\t\t\tthis._changeTimerId = setTimeout(() => callback(value), 600);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate FormatInputValue(value) {\r\n\t\tswitch (this._filterType) {\r\n\t\t\tcase 'datetime':\r\n\t\t\t\tif (value > 9999) {\r\n\t\t\t\t\tconst newValue = value.toString();\r\n\r\n\t\t\t\t\tvalue = +newValue.substring(0, 4);\r\n\t\t\t\t} else if (value < 0) {\r\n\t\t\t\t\tvalue = '';\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t// fix zero-length value handling\r\n\tAddEventListenerChangeValue(parentEl) {\r\n\t\tconst $input = $(parentEl).find('.fast-filter-search-input')[0];\r\n\r\n\t\tif (!$input) return;\r\n\r\n\t\t$input.onkeyup = () => {\r\n\t\t\tconst actualValue: any = $($input).val();\r\n\r\n\t\t\tif (!actualValue.length) {\r\n\t\t\t\tthis._searchValue(actualValue);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tGetTemplate(arg?) {\r\n\t\tthis._filterType = arg && arg.filterType;\r\n\r\n\t\tif (this._filterType === 'datetime') {\r\n\t\t\tthis._inputType = 'number';\r\n\t\t} else {\r\n\t\t\tthis._inputType = 'text';\r\n\t\t}\r\n\r\n\t\treturn SearchTemplate;\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tthis._element = el;\r\n\t\tthis.AddEventListenerChangeValue(this._element);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter-search\\\"> <input class=\\\"fast-filter-search-input subFormControl\\\" data-bind=\\\"textInput: _searchValue,\\r\\n\\t attr: {\\ttype: _inputType,\\r\\n\\t \\t\\t\\tplaceholder: _labels.SEARCH_WITH_DOTS\\r\\n\\t \\t\\t},\\r\\n\\t\\t\\t\\t\\t inputMask: { fieldModel: _model.FieldMetadata, value: _searchValue }\\\" min=\\\"0\\\" max=\\\"9999\\\" autofocus> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {\r\n\tIGetFastFilterRequestModel,\r\n\tFastFilterSaveModel,\r\n\tFastFilterValue,\r\n\tFastFilterItem\r\n} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { FastFilterSearch } from 'Core/Controls/Grid/BaseGrid/FastFilter/Search/FastFilterSearch';\r\nimport { JBoxDropDown } from 'Core/Components/JBoxDropdown/DropDown';\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class FastFilter extends Event {\r\n\tprivate _isItemsLoaded: KnockoutObservable<boolean>;\r\n\tprivate _showSearchScreenButton: KnockoutObservable<boolean>;\r\n\tprotected _isOpenFastFilter: KnockoutObservable<boolean>;\r\n\tprivate _searchTerm: KnockoutObservable<string>;\r\n\tprotected _isFilterApplied: KnockoutObservable<boolean>;\r\n\tprivate _searchScreenIfRecordsCount: number;\r\n\r\n\t// list of all available values\r\n\tprotected _availableItems: KnockoutObservableArray<FastFilterValue>;\r\n\t// view model that recreates after getting data and updatin search value\r\n\tprotected _viewModelItem: KnockoutObservableArray<FastFilterItem>;\r\n\t// save model that goes to local storage and is used for GetGridData request\r\n\tprotected _saveModel: FastFilterSaveModel;\r\n\t// other enabled filters excluding current one, is used for GetFilters request\r\n\tprotected _allFilters: FastFilterSaveModel[];\r\n\t// selected checkboxes store to be used between search value updates\r\n\tprotected _storedCheckboxes: FastFilterItem[];\r\n\r\n\tprotected _recordId: number;\r\n\tprotected _tableViewId: number;\r\n\tprotected _preselectedRecords: KnockoutObservableArray<any>;\r\n\tprivate _invalidMessage: KnockoutObservable<string>;\r\n\tprivate _getGridDataModel: IGetGridDataRequestModel;\r\n\tprotected _model: GridColumnModel;\r\n\tprotected _search: FastFilterSearch;\r\n\tprotected _searchValue: string;\r\n\tprotected _initialDataMapped: KnockoutObservable<boolean>;\r\n\tprotected _existedColumnAliases: string[];\r\n\tprotected _filterId : string;\r\n\r\n\tprotected _element: HTMLElement;\r\n\tprotected _labels = LABELS;\r\n\tprotected _dropDown: JBoxDropDown;\r\n\r\n\tprotected _originalViewModelItems: FastFilterItem[];\r\n\tprotected _regex: RegExp;\r\n\tprivate _isNewItemsLoaded: KnockoutObservable<boolean>;\r\n\tprotected _pageNumber: number;\r\n\tprivate _recordsPerPage: number;\r\n\tprivate _isSearch: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[],) {\r\n\t\tsuper();\r\n\r\n\t\tthis._model = model;\r\n\t\tthis._getGridDataModel = getGridDataModel;\r\n\t\tthis._recordId = recordId;\r\n\t\tthis._tableViewId = tableViewId;\r\n\t\tthis._isOpenFastFilter = ko.observable(false);\r\n\t\tthis._isFilterApplied = ko.observable(false);\r\n\t\tthis._searchTerm = ko.observable('');\r\n\t\tthis._isItemsLoaded = ko.observable(false);\r\n\t\tthis._showSearchScreenButton = ko.observable(false);\r\n\t\tconst searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tthis._searchScreenIfRecordsCount = isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\t\tthis._preselectedRecords = ko.observableArray([]);\r\n\t\tthis._availableItems = ko.observableArray([]);\r\n\t\tthis._viewModelItem = ko.observableArray([]);\r\n\t\tthis._saveModel = null;\r\n\t\tthis._allFilters = [];\r\n\r\n\t\tthis._storedCheckboxes = null;\r\n\t\tthis._initialDataMapped = ko.observable(false);\r\n\t\tthis._existedColumnAliases = existedColumnAliases;\r\n\r\n\t\tthis._search = new FastFilterSearch(this._model, this.SearchChangeCallback.bind(this));\r\n\r\n\t\tthis._searchValue = '';\r\n\t\tthis._invalidMessage = ko.observable('');\r\n\t\tthis._filterId = JBoxDropDown.GetDropDownId();\r\n\r\n\t\tthis._originalViewModelItems = null;\r\n\t\tthis._regex = null;\r\n\t\tthis._isNewItemsLoaded = ko.observable(true);\r\n\t\tthis._pageNumber = 1;\r\n\t\tthis._recordsPerPage = 100;\r\n\t\tthis._isSearch = ko.observable(false);\r\n\r\n\t\tthis.AddEvent(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected Preselect() {\r\n\t\tconst columnFilters = UserVarsManager.Instance.GetGridColumnFilters(this._recordId);\r\n\r\n\t\tif (columnFilters && columnFilters.length) {\r\n\t\t\tfor (let i = 0; i < columnFilters.length; i++) {\r\n\t\t\t\tif (columnFilters[i].FieldAlias === this._model.Alias\r\n\t\t\t\t\t&& columnFilters[i].TableViewId === this._tableViewId) {\r\n\r\n\t\t\t\t\tif (columnFilters[i].Values.length) {\r\n\t\t\t\t\t\tif (columnFilters[i].Values.find(item => item.Value && item.Value.split && item.Value.split(\";\").length > 1)) {\r\n\t\t\t\t\t\t\tcolumnFilters[i].Values.map(item => item.Value = item.Value.split(\";\")[0]);\r\n }\r\n\t\t\t\t\t\tthis._preselectedRecords(columnFilters[i].Values);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst isFilterApplied = columnFilters[i].Values.length;\r\n\r\n\t\t\t\t\tthis._isFilterApplied(isFilterApplied);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._allFilters = columnFilters || [];\r\n\r\n\t\tthis._allFilters = this._allFilters.filter((filter) => {\r\n\t\t\treturn this._existedColumnAliases.some((existedAlias) => {\r\n\t\t\t\treturn existedAlias === filter.FieldAlias;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected ReopenFastFilter() {\r\n\t\tthis._isOpenFastFilter(false);\r\n\t\tthis._isOpenFastFilter(true);\r\n\t}\r\n\r\n\tprotected MapToViewModel(isSearch?: boolean, isEmptySearchValue?: boolean) {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: item.Value && item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: item.DisplayValue || (item.Value && item.Value.toString()) || this._labels.EMPTY_VALUE,\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._preselectedRecords().forEach((preselected) => {\r\n\t\t\t\t\tif (viewModelItem.Value === preselected.Value && viewModelItem.DisplayValue === preselected.DisplayValue && !this._storedCheckboxes) {\r\n\t\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tif (this._viewModelItem().length && !isSearch && !isEmptySearchValue) {\r\n\t\t\tthis._viewModelItem.push(...viewModelList);\r\n\t\t} else {\r\n\t\t\tthis._viewModelItem(viewModelList);\r\n\t\t}\r\n\r\n\t\tthis._initialDataMapped(true);\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst listFromStore: FastFilterValue[] = [];\r\n\r\n\t\t// create prev selected checkboxes list that are checked and doesn't exist in view model\r\n\t\tif (this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes.forEach((storedItem) => {\r\n\t\t\t\tlet isItemOnlyInStore = !this._viewModelItem().some((viewItem) => {\r\n\t\t\t\t\treturn viewItem.Value === storedItem.Value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (isItemOnlyInStore && storedItem.Checked) {\r\n\t\t\t\t\tlistFromStore.push({\r\n\t\t\t\t\t\tValue: storedItem.Value,\r\n\t\t\t\t\t\tDisplayValue: storedItem.DisplayValue\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet valuesList: FastFilterValue[] = this._viewModelItem().filter((item) => {\r\n\t\t\tif (item.Checked) {\r\n\t\t\t\tdelete item.Checked;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// extend valuesList with previously selected and currently unvisible items\r\n\t\tvaluesList = valuesList.concat(listFromStore);\r\n\r\n\t\tthis._saveModel = {\r\n\t\t\tFieldAlias: this._model.Alias,\r\n\t\t\tValues: valuesList,\r\n\t\t\tFieldId: this._model.FieldMetadata.Id,\r\n\t\t\tTableViewId: this._tableViewId\r\n\t\t};\r\n\r\n\t\tthis._allFilters.forEach((filter) => {\r\n\t\t\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// clear store\r\n\t\tthis._storedCheckboxes = null;\r\n\t}\r\n\r\n\tget IsItemsLoaded() {\r\n\t\treturn this._isItemsLoaded();\r\n\t}\r\n\r\n\tset IsItemsLoaded(value) {\r\n\t\tthis._isItemsLoaded(value);\r\n\t}\r\n\r\n\tget ShowSearchScreenButton() {\r\n\t\treturn this._showSearchScreenButton();\r\n\t}\r\n\r\n\tset ShowSearchScreenButton(value) {\r\n\t\tthis._showSearchScreenButton(value);\r\n\t}\r\n\r\n\tget FilterModel(): FastFilterSaveModel {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget FilterSaveModel(): FastFilterSaveModel {\r\n\t\treturn this._saveModel;\r\n\t}\r\n\r\n\tprotected Clear() {\r\n\t\tthis._preselectedRecords([]);\r\n\t\tthis.MapToSaveModel();\r\n\t\tthis._saveModel.Values = [];\r\n\r\n\t\tthis._viewModelItem().forEach((item) => item.Checked = false);\r\n\t\tthis._isFilterApplied(false);\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\t_Clear() {\r\n\t\tthis.Clear();\r\n\t\tthis._dropDown.Close();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\t_Filter() {\r\n\t\tthis.Filter();\r\n\t\tthis._dropDown.Close();\r\n\t}\r\n\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement, removeBlockUi?: boolean, visibleBeginningSpinner?: boolean, isEmptySearchValue?: boolean) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\t// this.PopupToggleHandler();\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tif (removeBlockUi){\r\n\t\t\tthis.CursorWait(dropDownElement, true);\r\n\t\t} else {\r\n\t\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\t\tif (visibleBeginningSpinner) {\r\n\t\t\t\tthis.CursorWait(dropDownElement, true, visibleBeginningSpinner);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn GridStore.GetFastFilterData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\r\n\t\t\t\tif (removeBlockUi){\r\n\t\t\t\t\tthis.CursorWait(dropDownElement,false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\r\n\t\t\t\t\tif (visibleBeginningSpinner) {\r\n\t\t\t\t\t\tthis.CursorWait(dropDownElement,false, visibleBeginningSpinner);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataLoadCallback(result.Items, false, isEmptySearchValue);\r\n\t\t\t\tthis.CheckPositionScroll(dropDownElement, result.TotalRecords, this._recordsPerPage, isEmptySearchValue);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tlet dropDownElement = this._dropDown.GetContentElement().childNodes[0];\r\n\t\tthis._searchValue = value;\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\t\tthis._pageNumber = 1;\r\n\r\n\t\tif (value === ''){\r\n\t\t\tthis._isSearch(false);\r\n\t\t\tthis.IsItemsLoaded = false;\r\n\t\t\tthis.LoadFastFilterData(dropDownElement, false, true, true).then(()=> {\r\n\t\t\t\tthis._isNewItemsLoaded(true);\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tthis._isSearch(true);\r\n\t\t\tBlockUi.Block(dropDownElement ? {Target: dropDownElement} : {});\r\n\r\n\t\t\tGridStore.GetFastFilterData(this.GetRequestParams())\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t\t})\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis.DataLoadCallback(result.Items, true, false);\r\n\r\n\t\t\t\t\tlet fastFilterList = $(dropDownElement).find('.fast-filter-list');\r\n\t\t\t\t\tthis.RangeHighlight(fastFilterList, value);\r\n\t\t\t\t})\r\n\t\t\t\t.fail((error) => {\r\n\t\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data, isSearch?: boolean, isEmptySearchValue?: boolean) {\r\n\t\tthis._availableItems(this.SortItems(data));\r\n\t\tthis.MapToViewModel(isSearch, isEmptySearchValue);\r\n\t\tthis.IsItemsLoaded = true;\r\n\t}\r\n\r\n\tprotected GetRequestParams(): IGetFastFilterRequestModel {\r\n\t\treturn {\r\n\t\t\tFilterColumnGuid: this._model.QueryColumnGuid,\r\n\t\t\tFilterSearchPhrase: this._searchValue,\r\n\t\t\tTimeZone: (new Date().getTimezoneOffset()) / 60,\r\n\t\t\tControlId: this._getGridDataModel.ControlId ,\r\n\t\t\tTableViewId: this._getGridDataModel.TableViewId,\r\n\t\t\tSubjectEntityId: this._getGridDataModel.SubjectEntityId,\r\n\t\t\tSubjectRecordId: this._getGridDataModel.SubjectRecordId,\r\n\t\t\tSubjectKindId: this._getGridDataModel.SubjectKindId,\r\n\t\t\tSubjectTypeId: this._getGridDataModel.SubjectTypeId,\r\n\t\t\tSubjectStatusId: this._getGridDataModel.SubjectStatusId,\r\n\t\t\tViewMode: this._getGridDataModel.ViewMode,\r\n\t\t\tPageNumber: this._pageNumber,\r\n\t\t\tRecordsPerPage: this._recordsPerPage,\r\n\t\t\tSort: null,\r\n\t\t\tSearchPhrase: this._getGridDataModel.SearchPhrase,\r\n\t\t\tScreenData: this._getGridDataModel.ScreenData,\r\n\t\t\tSelectedTags: this._getGridDataModel.SelectedTags,\r\n\t\t\tFilterByOwners: this._getGridDataModel.FilterByOwners,\r\n\t\t\tRecordOwners: this._getGridDataModel.RecordOwners,\r\n\t\t\tShowPlanned: this._getGridDataModel.ShowPlanned,\r\n\t\t\tQuery: this._getGridDataModel.Query,\r\n\t\t\tFastFilters: this._allFilters\r\n\t\t\t\t.filter((filter) => {\r\n\t\t\t\t\treturn filter.FieldAlias !== this._model.Alias\r\n\t\t\t\t\t\t&& filter.TableViewId === this._tableViewId\r\n\t\t\t\t\t\t&& filter.Values.length;\r\n\t\t\t\t})\r\n\t\t\t\t.map((filter) => {\r\n\t\t\t\t\tfilter.Values.forEach(value => {\r\n\t\t\t\t\t\tif (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n\t\t\t\t\t\t\tvalue.DisplayValue = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tFieldAlias: filter.FieldAlias,\r\n\t\t\t\t\t\tValues: filter.Values\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t};\r\n\t}\r\n\r\n\tprotected SortItems(itemsList: FastFilterValue[], isNumericSort?: boolean): FastFilterValue[] {\r\n\t\tif (!itemsList || !itemsList.length) return [];\r\n\r\n\t\titemsList.map((item) => {\r\n\t\t\tif (item.Childs && item.Childs.length) {\r\n\t\t\t\tthis.SortItems(item.Childs)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn itemsList.sort((a, b) => {\r\n\t\t\tconst valueA = a.DisplayValue || a.Value;\r\n\t\t\tconst valueB = b.DisplayValue || b.Value;\r\n\r\n\t\t\tif (isNumericSort) {\r\n\t\t\t\tif (valueA != null && +valueA - +valueB) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else if (valueA == null) {\r\n\t\t\t\t\treturn -1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (valueA && valueA < valueB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (!valueA) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// synchronize _storedCheckboxes with view model\r\n\tprotected StoreSelectedCheckboxes() {\r\n\t\tif (!this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes = [];\r\n\t\t}\r\n\t\tthis._viewModelItem().forEach((item) => {\r\n\t\t\tlet existedItemIndex;\r\n\r\n\t\t\tconst existedItem = this._storedCheckboxes.find((storedItem, index) => {\r\n\t\t\t\tif (storedItem.Value === item.Value) {\r\n\t\t\t\t\texistedItemIndex = index;\r\n\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (!existedItem && item.Checked) {\r\n\t\t\t\tthis._storedCheckboxes.push({\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t\tChecked: true\r\n\t\t\t\t});\r\n\t\t\t} else if (existedItem && typeof existedItemIndex === 'number') {\r\n\t\t\t\tthis._storedCheckboxes[existedItemIndex].Checked = item.Checked;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected RestoreSelectedCheckbox(listItem): boolean {\r\n\t\treturn this._storedCheckboxes\r\n\t\t\t&& this._storedCheckboxes.some((storedItem) => {\r\n\t\t\t\tif (storedItem.Value === listItem.Value) {\r\n\t\t\t\t\treturn storedItem.Checked;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tGetTemplate() { }\r\n\r\n\tGetPopUpTemplate() {}\r\n\r\n\tOpenFilter() {\r\n\t\tthis._dropDown.Open();\r\n\t\tlet dropDownElement = this._dropDown.GetContentElement().childNodes[0];\r\n\r\n\t\tthis._isNewItemsLoaded(false);\r\n\t\treturn this.LoadFastFilterData(dropDownElement, false, true).then(()=> {\r\n\t\t\tthis._isNewItemsLoaded(true);\r\n\t\t})\r\n\t}\r\n\r\n\tRangeHighlight(list: JQuery, text: string) {\r\n\t\tlet listArr = list.find('.fast-filter-list-item-label span');\r\n\t\t_.each(listArr, (labelText)=> {\r\n\t\t\tlet root = labelText.firstChild,\r\n\t\t\t\tcontent = root.nodeValue;\r\n\r\n\t\t\tif (~content.indexOf(text)) {\r\n\t\t\t\tif (document.createRange) {\r\n\r\n\t\t\t\t\tlet rng = document.createRange();\r\n\t\t\t\t\trng.setStart(root, content.indexOf(text));\r\n\t\t\t\t\trng.setEnd(root, content.indexOf(text) + text.length);\r\n\r\n\t\t\t\t\tlet highlightDiv = document.createElement('span');\r\n\t\t\t\t\thighlightDiv.style.boxShadow = 'inset 0 1px 1px rgba(0,0,0,.075),0 0 4px var(--main-color-hover-1-rgba-06)';\r\n\r\n\t\t\t\t\trng.surroundContents(highlightDiv);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('Your Browser does not support Range');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t})\r\n\t}\r\n\r\n\tCheckPositionScroll(dropDownElement: HTMLElement, recordsCount: number, recordsPerPage: number, isEmptySearchValue?: boolean) {\r\n\r\n\t\tconst percentValue: number = 80; // at what percentage of the height of the element to start the trigger\r\n\r\n\t\tlet list = $(dropDownElement).find('.fast-filter-list'),\r\n\t\t\tscrollHeight: number = 0,\r\n\t\t\tisScroll: number = 0,\r\n\t\t\tlastPages: number = Math.ceil(recordsCount / recordsPerPage),\r\n\t\t\tcounterPage: number = 1;\r\n\r\n\t\tif (list.length) {\r\n\r\n\t\t\tif (this._isSearch() || isEmptySearchValue){\r\n\t\t\t\tlist.off('scroll');\r\n\t\t\t\t// console.log('off scroll event '+' Search - '+ this._isSearch());\r\n\t\t\t}\r\n\r\n\t\t\tlist.on('scroll', (handler)=> {\r\n\r\n\t\t\t\tif (this._isSearch()){\r\n\t\t\t\t\tlist.off('scroll');\r\n\t\t\t\t\t// console.log('off scroll event '+' Search - '+ this._isSearch());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (counterPage === lastPages) {\r\n\t\t\t\t\tlist.off('scroll');\r\n\t\t\t\t\tconsole.log('fast filter - all data has been loaded');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscrollHeight = list.prop(\"scrollHeight\") - list.height();\r\n\t\t\t\tlet targetScroll = Math.ceil( (percentValue / 100) * scrollHeight );\r\n\r\n\t\t\t\tif(isScroll === 0 && list.scrollTop() >= targetScroll) {\r\n\t\t\t\t\tisScroll = 1;\r\n\t\t\t\t\tif (this._isNewItemsLoaded()){\r\n\t\t\t\t\t\tcounterPage ++;\r\n\t\t\t\t\t\tthis._pageNumber = counterPage;\r\n\t\t\t\t\t\tthis.IsItemsLoaded = false;\r\n\t\t\t\t\t\tthis.LoadFastFilterData(list[0], true).then(()=>{\r\n\t\t\t\t\t\t\tthis._isNewItemsLoaded(true);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._isNewItemsLoaded(false);\r\n\t\t\t\t\t// console.log('counterPage - ' + this._pageNumber);\r\n\t\t\t\t} else if(isScroll === 1 && list.scrollTop() < targetScroll) {\r\n\t\t\t\t\tisScroll = 0;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tCursorWait(dropDownElement: HTMLElement, addCursor: boolean, visibleBeginningSpinner?: boolean){\r\n\t\tif (dropDownElement){\r\n\t\t\tlet fastFilterList = $(dropDownElement),\r\n\t\t\t\tisFastFilterList = $(dropDownElement).hasClass('fast-filter-list');\r\n\r\n\t\t\tif (!isFastFilterList && visibleBeginningSpinner) {\r\n\t\t\t\tfastFilterList = $(dropDownElement).find('.fast-filter-list');\r\n\t\t\t}\r\n\r\n\t\t\tif (addCursor){\r\n\t\t\t\tfastFilterList.addClass('cursorWait');\r\n\t\t\t} else {\r\n\t\t\t\tfastFilterList.removeClass('cursorWait');\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tthis._element = el[0];\r\n\t\tconst selector = `.${this._filterId}`;\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: selector,\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: this.GetPopUpTemplate() as any });\r\n\t\t\t},\r\n\t\t\tbindTarget: this._element,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: 'left',\r\n\t\t\t\t\ty: 'center'\r\n\t\t\t\t},\r\n\t\t\t\tadjustPosition: true,\r\n\t\t\t\tadjustTracker: true,\r\n\t\t\t\toutside: 'x',\r\n\t\t\t\tadjustDistance: {top: 55, right: 5, bottom: 5, left: 5},\r\n\t\t\t\tzIndex: 11000\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport DecimalFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Decimal/DecimalFilter.html';\r\n\r\nexport class DecimalFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data, true));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t}\r\n\r\n\tFormatValue(value: string) {\r\n if (!value || value === LABELS.EMPTY_VALUE) {\r\n\t\t\treturn LABELS.EMPTY_VALUE;\r\n\t\t}\r\n\r\n\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\tthis._model.FieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t? (Number(value) * 100).toFixed(\r\n\t\t\t\t\t\tthis._model.FieldMetadata.Size < 2 ? 0 : this._model.FieldMetadata.Size - 2\r\n\t\t\t\t )\r\n\t\t\t\t: value\r\n\t\t);\r\n\t}\r\n\r\n\tGetIconFromModel() {\r\n\t\tswitch (this._model.FieldMetadata.FormatName) {\r\n\t\t\tcase FieldFormat.PERCENTAGE:\r\n\t\t\t\treturn 'fa fa-percent';\r\n\t\t\tcase FieldFormat.CURRENCY:\r\n\t\t\t\treturn 'fa fa-euro';\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DecimalFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-decimal\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-decimal'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: $parent.FormatValue(DisplayValue)'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport IntegerFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Integer/IntegerFilter.html';\r\n\r\nexport class IntegerFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data, true));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t}\r\n\r\n FormatValue(value: string) {\r\n if (!value || value === LABELS.EMPTY_VALUE) {\r\n\t\t\treturn LABELS.EMPTY_VALUE;\r\n\t\t}\r\n\r\n\t\treturn FormatConverter.LocalizeDecimalOrInteger(value);\r\n\t}\r\n\r\n\tGetIconFromModel() {\r\n\t\tswitch (this._model.FieldMetadata.FormatName) {\r\n\t\t\tcase FieldFormat.PERCENTAGE:\r\n\t\t\t\treturn 'fa fa-percent';\r\n\t\t\tcase FieldFormat.CURRENCY:\r\n\t\t\t\treturn 'fa fa-euro';\r\n\t\t\tdefault:\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn IntegerFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-integer\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-integer'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: $parent.FormatValue(DisplayValue)'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: { open: _isOpenFastFilter }\\\" class=\\\"fast-filter fast-filter-text\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-text\\\"> <div class=\\\"fast-filter-list-wrapper\\\"> <!-- ko with: _search --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <ul class=\\\"multi-level fast-filter-list\\\"> <!-- ko foreach: _viewModelItem --> <li class=\\\"fast-filter-list-item\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked\\\"> <label class=\\\"fast-filter-list-item-label\\\" data-bind=\\\"attr: {for: `available-item-${$parent._filterId}-${$index()}`}\\\"> <span data-bind=\\\"text: DisplayValue\\\"></span> </label> </li> <!-- /ko --> <li class=\\\"fast-filter-list-item loadContainer\\\"> <div class=\\\"lds-ellipsis\\\"><div></div><div></div><div></div><div></div></div> </li> </ul> <div class=\\\"btn-block fast-filter-btns-container\\\"> <a class=\\\"fast-filter-btn btn btn-primary\\\" data-bind=\\\"click: _Filter\\\">Filter</a> <a class=\\\"fast-filter-btn btn btn-warning\\\" data-bind=\\\"click: _Clear\\\">Clear</a> </div> </div> </div>\";\n// Exports\nexport default code;","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\n\r\n// Templates\r\nimport TextFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilter.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilter'] = TextFilterTemplate;\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilterPopUp.html';\r\nko.templates['Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/Templates/TextFilterPopUp'] = Template;\r\n\r\nexport class TextFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn TextFilterTemplate;\r\n\t}\r\n\r\n\tGetPopUpTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n}","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FastFilterItem, FastFilterValue} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport 'tree';\r\nimport * as moment from 'moment';\r\n\r\nimport DateFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Date/DateFilter.html';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nexport class DateFilter extends FastFilter {\r\n\tprivate _jsTreeModel: any;\r\n\tprivate _jsTreeSaveModel: any;\r\n\tprivate _jsTree: any;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis._jsTreeModel = {};\r\n\t\tthis._jsTreeSaveModel = {};\r\n\r\n\t\tthis.Preselect();\r\n\t\tthis.OpenFilter = () => {\r\n\t\t\tsuper.OpenFilter.call(this).then(() => {\r\n\t\t\t\tthis.MapToJstreeModel();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t//protected PopupToggleHandler() {\r\n\t//\tfunction closePopupHandler(e) {\r\n\t//\t\tconst currentDropdown = $('.fast-filter.open');\r\n\r\n\t//\t\tif (!currentDropdown.is(e.target) && !currentDropdown.has(e.target).length) {\r\n\t//\t\t\tthis._isOpenFastFilter(false);\r\n\r\n\t//\t\t\tdocument.removeEventListener('mouseup', closePopupHandler.bind(this));\r\n\t//\t\t}\r\n\t//\t}\r\n\r\n\t//\tif (this._isOpenFastFilter()) {\r\n\t//\t\tdocument.addEventListener('mouseup', closePopupHandler.bind(this));\r\n\t//\t}\r\n\t//}\r\n\tprotected MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : item.Value.toString(),\r\n\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\tDisplayValue: moment(child.Value && child.Value.toString(), 'M').format('MMMM'),\r\n\t\t\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\t\t\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!viewModelItem.Value && !preselected.Value)\r\n\t\t\t\t\t|| (viewModelItem.Value && viewModelItem.Value.toString() === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\r\n\t\t\t\t\tif (preselected.Childs && preselected.Childs.length && viewModelItem.Childs && viewModelItem.Childs.length) {\r\n\t\t\t\t\t\tpreselected.Childs.forEach((child) => {\r\n\t\t\t\t\t\t\tviewModelItem.Childs.forEach((viewChild) => {\r\n\t\t\t\t\t\t\t\tIdentifyChecked.call(this, preselected.Childs, child, viewChild);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._viewModelItem(viewModelList);\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = _.uniq(viewModelList, false, time => time.DisplayValue);\r\n\t}\r\n\r\n\tprivate MapToJstreeModel() {\r\n\t\tthis._jsTreeModel = this._viewModelItem().map((item) => {\r\n\t\t\treturn {\r\n\t\t\t\ttext: item.DisplayValue,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t},\r\n\t\t\t\tstate: {\r\n\t\t\t\t\topened: true,\r\n\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\tselected: !item.Value && item.Checked\r\n\t\t\t\t},\r\n\t\t\t\tchildren: item.Childs.map((child) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\tselected: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchildren: child.Childs.map((child) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\tselected: child.Checked\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tthis.RenderTree();\r\n\t}\r\n\r\n\tprivate RenderTree() {\r\n\t\tconst jstreeOptions = {\r\n\t\t\tplugins: ['checkbox'],\r\n\t\t\tcheckbox : {\r\n\t\t\t\tkeep_selected_style : false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tthree_state: true,\r\n\r\n\t\t\t},\r\n\t\t\tcore: {\r\n\t\t\t\tdata: this._jsTreeModel,\r\n\t\t\t\tmultiple: true,\r\n\t\t\t\tthemes: {\r\n\t\t\t\t\ticons: false,\r\n\t\t\t\t\tdots: true\r\n\t\t\t\t},\r\n\t\t\t\tcheck_callback: true\r\n\t\t\t},\r\n\t\t\tdefaults: {\r\n\t\t\t\tcheckbox: {\r\n\t\t\t\t\tvisible: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst $jsTreeElement = $(this._dropDown.GetContentElement()).find('#fast-filter-datetime-tree-container');\r\n\r\n\t\tif (this._jsTree) {\r\n\t\t\t$jsTreeElement.jstree(true).settings.core.data = this._jsTreeModel;\r\n\t\t\t$jsTreeElement.jstree(true).refresh();\r\n\r\n\t\t\t//this._jsTree\r\n\t\t\t//\t.on('changed.jstree', (event, newtree) => {\r\n\t\t\t//\t\tthis._jsTreeSaveModel = $jsTreeElement.jstree().get_json();\r\n\t\t\t//\t\tthis.Tooltip.position();\r\n\t\t\t//\t});\r\n\t\t} else {\r\n\t\t\tthis._jsTree = $jsTreeElement.bind('ready.jstree', () => {\r\n\t\t\t\tthis._dropDown.Position();\r\n\t\t\t}).jstree(jstreeOptions);\r\n\r\n\t\t\tthis._jsTree\r\n\t\t\t\t.on('changed.jstree', (event, newtree) => {\r\n\t\t\t\t\tthis._jsTreeSaveModel = $jsTreeElement.jstree().get_json();\r\n\t\t\t\t\tthis._dropDown.Position();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst valuesList = mapNodes(this._jsTreeSaveModel);\r\n\r\n\t\tfunction mapNodes(nodesList) {\r\n\t\t\tconst nodes = [];\r\n\r\n\t\t\tif (!(nodesList && nodesList.length)) return [];\r\n\r\n\t\t\tnodesList && nodesList.forEach((node) => {\r\n\t\t\t\tconst mappedNode = {Value: node.data.value || null} as any;\r\n\r\n\t\t\t\tif (node.children && node.children.length) {\r\n\t\t\t\t\tmappedNode.Childs = mapNodes(node.children);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (node.state.selected || (mappedNode.Childs && mappedNode.Childs.length)) {\r\n\t\t\t\t\tnodes.push(mappedNode);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn nodes;\r\n\t\t}\r\n\r\n\t\tthis._saveModel = {\r\n\t\t\tFieldAlias: this._model.Alias,\r\n\t\t\tValues: valuesList,\r\n\t\t\tFieldId: this._model.FieldMetadata.Id,\r\n\t\t\tTableViewId: this._tableViewId\r\n\t\t};\r\n\r\n\t\tthis._allFilters.forEach((filter) => {\r\n\t\t\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\t// this.PopupToggleHandler();\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\t\tthis._pageNumber = 0;\r\n\t\treturn GridStore.GetFastFilterDateData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis._availableItems(this.SortYears(this.SortItems(result.Dates)));\r\n\r\n\t\t\t\tthis.MapToViewModel();\r\n\r\n\t\t\t\tthis.IsItemsLoaded = true;\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value.toString();\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\t\tconst items: FastFilterItem[] =\r\n\t\t\tthis._originalViewModelItems.map((item: FastFilterItem) => {\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t\tDisplayValue: item.DisplayValue,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\tDisplayValue: child.DisplayValue,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.DisplayValue\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tthis._availableItems(this.SortYears(this.SortItems(this.FilterItems(items))));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.MapToJstreeModel();\r\n\r\n\t\tthis.IsItemsLoaded = true;\r\n\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprivate FilterItems(data: FastFilterItem[]) {\r\n\r\n\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\tconst item = data[i];\r\n\t\t\tif (!this._regex.test(item.DisplayValue.toLowerCase()) && item.Childs && item.Childs.length) {\r\n\t\t\t\titem.Childs = this.FilterItems(item.Childs);\r\n }\r\n\t\t}\r\n\r\n\t\treturn data.filter(f => this._regex.test(f.DisplayValue.toLowerCase()) || (f.Childs && f.Childs.length));\r\n }\r\n\r\n\tprivate SortYears(itemsList: FastFilterValue[]) {\r\n\t\tif (!itemsList || !itemsList.length) return [];\r\n\r\n\t\treturn itemsList.sort((a, b) => {\r\n\t\t\tconst valueA = a.DisplayValue || a.Value;\r\n\t\t\tconst valueB = b.DisplayValue || b.Value;\r\n\r\n\t\t\tif (valueA && valueA > valueB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (!valueA) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DateFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-datetime\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-datetime'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data, {filterType: 'date'}), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<div id='fast-filter-datetime-tree-container' class='fast-filter-datetime-tree-container fast-filter-list'></div>\\r\\n\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Filter'>\\r\\n\\t\\t\\t\\t\\t\\t\\tFilter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Clear'>\\r\\n\\t\\t\\t\\t\\t\\t\\tClear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {extractLookupValFieldMetadata} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport LookupFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Lookup/LookupFilter.html';\r\n\r\nexport class LookupFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tFormatValue(value: string) {\r\n if (!value || value === LABELS.EMPTY_VALUE) {\r\n\t\t\treturn LABELS.EMPTY_VALUE;\r\n\t\t}\r\n\r\n\t\tconst validationFieldMetadata = extractLookupValFieldMetadata(this._model.FieldMetadata);\r\n\r\n\t\tif (\r\n\t\t\tvalidationFieldMetadata &&\r\n\t\t\t_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], validationFieldMetadata.Type)\r\n\t\t) {\r\n\t\t\treturn FormatConverter.LocalizeDecimalOrInteger(\r\n\t\t\t\tvalidationFieldMetadata.FormatName === FieldFormat.PERCENTAGE\r\n\t\t\t\t\t? (Number(value) * 100).toFixed(\r\n\t\t\t\t\t\t\tvalidationFieldMetadata.Size < 2 ? 0 : validationFieldMetadata.Size - 2\r\n\t\t\t\t\t )\r\n\t\t\t\t\t: value\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn LookupFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-lookup\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-lookup'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\t\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: $parent.FormatValue(DisplayValue)'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\t\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FastFilterValue, FastFilterItem} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\n\r\nimport YesnoFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Yesno/YesnoFilter.html';\r\n\r\nexport class YesnoFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis._initialDataMapped.subscribe((value) => {\r\n\t\t\t// const viewModel =\r\n\t\t\t// \tthis._viewModelItem()\r\n\t\t\t// \t\t.map((item) => {\r\n\t\t\t// \t\t\treturn {\r\n\t\t\t// \t\t\t\tValue: item.Value === 'True' ? '1' : '0',\r\n\t\t\t// \t\t\t\tDisplayValue: item.Value === 'True' ? 'True' : 'False',\r\n\t\t\t// \t\t\t\tChecked: item.Value === 'True'\r\n\t\t\t// \t\t\t};\r\n\t\t\t// \t\t})\r\n\t\t\t// \t\t.reduce((acum, item) => {\r\n\t\t\t// \t\t\treturn acum.findIndex((elem) => elem.Value === item.Value) < 0\r\n\t\t\t// \t\t\t\t? [...acum, item]\r\n\t\t\t// \t\t\t\t: acum\r\n\t\t\t// \t\t}, []);\r\n\t\t\t//\r\n\t\t\t// this._viewModelItem(viewModel);\r\n\t\t});\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\r\n\tprotected MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\t\t\t\tlet value;\r\n\r\n\t\t\t\tswitch (item.Value) {\r\n\t\t\t\t\tcase 'True':\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\tvalue = 1;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'False':\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\tvalue = 0;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase null:\r\n\t\t\t\t\t\tvalue = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tvalue = null;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: value,\r\n\t\t\t\t\tDisplayValue: item.DisplayValue || this._labels.EMPTY_VALUE,\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._preselectedRecords().forEach((preselected) => {\r\n\t\t\t\t\tif (value === preselected.Value && !this._storedCheckboxes) {\r\n\t\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tthis._viewModelItem(viewModelList);\r\n\t\tthis._initialDataMapped(true);\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn YesnoFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-yesno\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-yesno'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: DisplayValue'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import { FastFilter } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport { GridColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport { EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { FastFilterItem, FastFilterValue } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { GridStore, IGetGridDataRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\n\r\nimport * as moment from 'moment';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\n\r\nimport TimespanFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Timespan/TimespanFilter.html';\r\n\r\nexport class TimespanFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\trecordId: number,\r\n\t\ttableViewId: number,\r\n\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\tpublic MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : moment(item.Value.toString()).format('HH:mm'),\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\r\n\t\t\t\tvar item = !viewModelItem.Value || (viewModelItem.Value === '0') ? null :moment(viewModelItem.Value.toString()).format('HH:mm');\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!item && !preselected.Value)\r\n\t\t\t\t\t\t|| (item != null && item === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._viewModelItem(_.uniq(viewModelList, false, time => time.DisplayValue));\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = _.uniq(viewModelList, false, time => time.DisplayValue);\r\n\r\n\t}\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\treturn GridStore.GetFastFilterTimeData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataLoadCallback(result.Items);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value;\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\r\n\t\tthis.DataLoadCallback(this._originalViewModelItems.filter(el => this._regex.test(el.DisplayValue)));\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst listFromStore: FastFilterValue[] = [];\r\n\r\n\t\t// create prev selected checkboxes list that are checked and doesn't exist in view model\r\n\t\tif (this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes.forEach((storedItem) => {\r\n\t\t\t\tlet isItemOnlyInStore = !this._viewModelItem().some((viewItem) => {\r\n\t\t\t\t\treturn viewItem.Value === storedItem.Value;\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\tif (isItemOnlyInStore && storedItem.Checked) {\r\n\t\t\t\t\tlistFromStore.push({\r\n\t\t\t\t\t\tValue: storedItem.Value.toString()\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet valuesList: FastFilterValue[] = this._viewModelItem().filter((item) => {\r\n\t\t\tif (item.Checked) {\r\n\t\t\t\tdelete item.Checked;\r\n\t\t\t\tdelete item.DisplayValue;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// extend valuesList with previously selected and currently unvisible items\r\n\t\tvaluesList = valuesList.concat(listFromStore);\r\n\t\tvaluesList.forEach((item) => {\r\n\t\t\t//item.Value = moment(item.Value.toString()).subtract(moment().utcOffset() / 60, 'hours').format('HH:mm');\r\n\t\t\titem.Value = !item.Value || (item.Value === '0')? null : moment(item.Value.toString()).format('HH:mm');\r\n\t\t});\r\n\r\n\t\tthis._saveModel = {\r\n\tFieldAlias: this._model.Alias,\r\n\tValues: valuesList,\r\n\tFieldId: this._model.FieldMetadata.Id,\r\n\tTableViewId: this._tableViewId\r\n};\r\n\r\nthis._allFilters.forEach((filter) => {\r\n\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\tfilter.Values = valuesList;\r\n\t}\r\n});\r\n\r\n// clear store\r\nthis._storedCheckboxes = null;\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\tthis.MapToSaveModel();\r\n\r\n\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data));\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.IsItemsLoaded = true;\r\n\t}\r\n\r\nGetTemplate() {\r\n\treturn TimespanFilterTemplate;\r\n}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-timespan\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-timespan'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: DisplayValue'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import { FastFilter } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport { GridColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport { EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { FastFilterItem, FastFilterValue } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { GridStore, IGetGridDataRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\n\r\nimport * as moment from 'moment';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\n\r\nimport TimeFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Time/TimeFilter.html';\r\n\r\nexport class TimeFilter extends FastFilter {\r\n\tconstructor(model: GridColumnModel,\r\n\t\trecordId: number,\r\n\t\ttableViewId: number,\r\n\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis.Preselect();\r\n\t}\r\n\tpublic MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : moment(FormatConverter.CorrectTimezone(item.Value.toString())).format('HH:mm'),\r\n\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\r\n\t\t\t\tconst item = !viewModelItem.Value || (viewModelItem.Value === '0') ? null : viewModelItem.Value.toString();\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!item && !preselected.Value)\r\n\t\t\t\t\t\t|| (item != null && item === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._viewModelItem(_.uniq(viewModelList, false, time => time.DisplayValue));\r\n\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = viewModelList.concat();\r\n\r\n\t}\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\treturn GridStore.GetFastFilterTimeData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis.DataLoadCallback(result.Items);\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value;\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\t\tconst originalItems = this._originalViewModelItems.concat();\r\n\r\n\t\tthis.DataLoadCallback(_.uniq(originalItems, false, (time: FastFilterValue) => time.DisplayValue).filter(el => this._regex.test(el.DisplayValue)));\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprotected MapToSaveModel() {\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tconst listFromStore: FastFilterValue[] = [];\r\n\r\n\t\t// create prev selected checkboxes list that are checked and doesn't exist in view model\r\n\t\tif (this._storedCheckboxes) {\r\n\t\t\tthis._storedCheckboxes.forEach((storedItem) => {\r\n\t\t\t\tlet isItemOnlyInStore = !this._viewModelItem().some((viewItem) => {\r\n\t\t\t\t\treturn viewItem.Value === storedItem.Value;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (isItemOnlyInStore && storedItem.Checked) {\r\n\t\t\t\t\tlistFromStore.push({\r\n\t\t\t\t\t\tValue: storedItem.Value.toString()\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet valuesList: FastFilterValue[] = this._viewModelItem().filter((item) => {\r\n\t\t\tif (item.Checked) {\r\n\r\n\t\t\t\titem.Value = this._originalViewModelItems.filter(time => time.DisplayValue === item.DisplayValue).map(time => time.Value).join(\";\");\r\n\r\n\t\t\t\tdelete item.Checked;\r\n\t\t\t\tdelete item.DisplayValue;\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// extend valuesList with previously selected and currently unvisible items\r\n\t\tvaluesList = valuesList.concat(listFromStore);\r\n\r\n\t\tthis._saveModel = {\r\n\t\t\tFieldAlias: this._model.Alias,\r\n\t\t\tValues: valuesList,\r\n\t\t\tFieldId: this._model.FieldMetadata.Id,\r\n\t\t\tTableViewId: this._tableViewId\r\n\t\t};\r\n\r\n\t\tthis._allFilters.forEach((filter) => {\r\n\t\t\tif (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// clear store\r\n\t\tthis._storedCheckboxes = null;\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tprotected DataLoadCallback(data) {\r\n\t\tthis._availableItems(this.SortItems(data));\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.IsItemsLoaded = true;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn TimeFilterTemplate;\r\n}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-timespan\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-timespan'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<ul class='multi-level fast-filter-list'>\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t<!-- ko foreach: _viewModelItem -->\\r\\n\\t\\t\\t\\t\\t\\t<li class='fast-filter-list-item'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<input type='checkbox' data-bind='attr: {id: `available-item-${$parent._filterId}-${$index()}`}, uniform: Checked, checked: Checked'>\\r\\n\\t\\t\\t\\t\\t\\t\\t<label class='fast-filter-list-item-label' data-bind='attr: {for: `available-item-${$parent._filterId}-${$index()}`}'>\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t<span data-bind='text: DisplayValue'></span>\\r\\n\\t\\t\\t\\t\\t\\t\\t</label>\\r\\n\\t\\t\\t\\t\\t\\t</li>\\r\\n\\t\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t</ul>\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Filter'>Filter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t\\tdata-bind='click: _Clear'>Clear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import { FastFilter } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport { GridColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport { EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { GridStore, IGetGridDataRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\nimport { FastFilterItem, FastFilterValue } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { BlockUI as BlockUi } from 'Core/Common/BlockUi';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport 'tree';\r\nimport * as moment from 'moment';\r\n\r\nimport DateTimeFilterTemplate from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/DateTime/DateTimeFilter.html';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\n\r\nexport class DateTimeFilter extends FastFilter {\r\n\tprivate _jsTreeModel: any;\r\n\tprivate _jsTreeSaveModel: any;\r\n\tprivate _jsTree: any;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\trecordId: number,\r\n\t\ttableViewId: number,\r\n\t\tgetGridDataModel: IGetGridDataRequestModel,\r\n\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model, recordId, tableViewId, getGridDataModel, existedColumnAliases);\r\n\r\n\t\tthis._jsTreeModel = {};\r\n\t\tthis._jsTreeSaveModel = {};\r\n\r\n\t\tthis.Preselect();\r\n\t\tthis.OpenFilter = () => {\r\n\t\t\tsuper.OpenFilter.call(this).then(() => {\r\n\t\t\t\tthis.MapToJstreeModel();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprotected MapToViewModel() {\r\n\t\tconst viewModelList: FastFilterItem[] =\r\n\t\t\tthis._availableItems().map((item: FastFilterValue) => {\r\n\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(item);\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: !item.Value || (item.Value === '0') ? null : item.Value.toString(),\r\n\t\t\t\t\tDisplayValue: !item.Value || (item.Value === '0') ? this._labels.EMPTY_VALUE : item.Value.toString(),\r\n\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\tDisplayValue: moment(child.Value && child.Value.toString(), 'M').format('MMMM'),\r\n\t\t\t\t\t\t\tChecked: wasItemChecked,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\t\t\t\t\t\t\t\tconst wasItemChecked = this.RestoreSelectedCheckbox(child);\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value && child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.Value.toString(),\r\n\t\t\t\t\t\t\t\t\tOriginValue: child.OriginValue,\r\n\t\t\t\t\t\t\t\t\tChecked: wasItemChecked\r\n\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tIdentifyChecked.call(this, this._preselectedRecords(), item, viewModelItem);\r\n\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tfunction IdentifyChecked(preselectedList, currentItem, viewModelItem) {\r\n\t\t\tpreselectedList.forEach((preselected) => {\r\n\t\t\t\tif (!this._storedCheckboxes\r\n\t\t\t\t\t&& ((!viewModelItem.Value && !preselected.Value)\r\n\t\t\t\t\t\t|| (viewModelItem.Value && viewModelItem.Value.toString() === preselected.Value))) {\r\n\r\n\t\t\t\t\tviewModelItem.Checked = true;\r\n\r\n\t\t\t\t\tif (preselected.Childs && preselected.Childs.length && viewModelItem.Childs && viewModelItem.Childs.length) {\r\n\t\t\t\t\t\tpreselected.Childs.forEach((child) => {\r\n\t\t\t\t\t\t\tviewModelItem.Childs.forEach((viewChild) => {\r\n\t\t\t\t\t\t\t\tIdentifyChecked.call(this, preselected.Childs, child, viewChild);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._viewModelItem(viewModelList);\r\n\t\tif (this._originalViewModelItems == null)\r\n\t\t\tthis._originalViewModelItems = _.uniq(viewModelList, false, time => time.DisplayValue);\r\n\t}\r\n\r\n\tprivate MapToJstreeModel() {\r\n\t\tthis._jsTreeModel = this._viewModelItem().map((item) => {\r\n\t\t\treturn {\r\n\t\t\t\ttext: item.DisplayValue,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tvalue: item.Value,\r\n\t\t\t\t},\r\n\t\t\t\tstate: {\r\n\t\t\t\t\topened: true,\r\n\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\tselected: !item.Value && item.Checked\r\n\t\t\t\t},\r\n\t\t\t\tchildren: item.Childs.map((child) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\tselected: false\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tchildren: child.Childs.map((child) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\ttext: child.DisplayValue,\r\n\t\t\t\t\t\t\t\tdata: {\r\n\t\t\t\t\t\t\t\t\tvalue: child.Value,\r\n\t\t\t\t\t\t\t\t\toriginValue: child.OriginValue,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tstate: {\r\n\t\t\t\t\t\t\t\t\topened: true,\r\n\t\t\t\t\t\t\t\t\tdisabled: false,\r\n\t\t\t\t\t\t\t\t\tselected: child.Checked\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t};\r\n\t\t\t\t})\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tthis.RenderTree();\r\n\t}\r\n\r\n\tprivate RenderTree() {\r\n\t\tconst jstreeOptions = {\r\n\t\t\tplugins: ['checkbox'],\r\n\t\t\tcheckbox : {\r\n\t\t\t\tkeep_selected_style : false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tthree_state: true,\r\n\r\n\t\t\t},\r\n\t\t\tcore: {\r\n\t\t\t\tdata: this._jsTreeModel,\r\n\t\t\t\tmultiple: true,\r\n\t\t\t\tthemes: {\r\n\t\t\t\t\ticons: false,\r\n\t\t\t\t\tdots: true\r\n\t\t\t\t},\r\n\t\t\t\tcheck_callback: true\r\n\t\t\t},\r\n\t\t\tdefaults: {\r\n\t\t\t\tcheckbox: {\r\n\t\t\t\t\tvisible: true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst $jsTreeElement = $(this._dropDown.GetContentElement()).find('#fast-filter-datetime-tree-container');\r\n\r\n\t\tif (this._jsTree) {\r\n\t\t\t$jsTreeElement.jstree(true).settings.core.data = this._jsTreeModel;\r\n\t\t\t$jsTreeElement.jstree(true).refresh();\r\n\t\t} else {\r\n\t\t\tthis._jsTree = $jsTreeElement.bind('ready.jstree', () => {\r\n\t\t\t\tthis._dropDown.Position();\r\n\t\t\t}).jstree(jstreeOptions);\r\n\r\n\t\t\tthis._jsTree\r\n\t\t\t\t.on('changed.jstree', (event, newtree) => {\r\n\t\t\t\t\tthis._jsTreeSaveModel = $jsTreeElement.jstree().get_json();\r\n\t\t\t\t\tthis._dropDown.Position();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n protected MapToSaveModel() {\r\n this.StoreSelectedCheckboxes();\r\n const valuesList = mapNodes(this._jsTreeSaveModel);\r\n function mapNodes(nodesList) {\r\n const nodes = [];\r\n\r\n if (!(nodesList && nodesList.length)) return [];\r\n\r\n nodesList && nodesList.forEach((node) => {\r\n const mappedNode = {\r\n Value: node.data.value || null,\r\n OriginValue: node.data.originValue || null\r\n } as any;\r\n\r\n if (node.children && node.children.length) {\r\n mappedNode.Childs = mapNodes(node.children);\r\n }\r\n\r\n if (node.state.selected || (mappedNode.Childs && mappedNode.Childs.length)) {\r\n nodes.push(mappedNode);\r\n }\r\n });\r\n\r\n return nodes;\r\n }\r\n\r\n this._saveModel = {\r\n FieldAlias: this._model.Alias,\r\n Values: valuesList,\r\n FieldId: this._model.FieldMetadata.Id,\r\n TableViewId: this._tableViewId\r\n\t\t};\r\n\r\n this._allFilters.forEach((filter) => {\r\n if (filter.FieldAlias === this._model.Alias && filter.TableViewId === this._tableViewId) {\r\n\t\t\t\tfilter.Values = valuesList;\r\n }\r\n });\r\n }\r\n\r\n\tprotected LoadFastFilterData(dropDownElement?: HTMLElement) {\r\n\t\tthis._isOpenFastFilter(!this._isOpenFastFilter());\r\n\r\n\t\tif (this.IsItemsLoaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tBlockUi.Block({Target: dropDownElement});\r\n\r\n\t\treturn GridStore.GetFastFilterDateTimeData(this.GetRequestParams())\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUi.Unblock(dropDownElement);\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tthis._availableItems(this.SortYears(this.SortItems(result.Dates)));\r\n\r\n\t\t\t\tthis.MapToViewModel();\r\n\t\t\t\tthis.IsItemsLoaded = true;\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tnew Notifier().Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprotected SearchChangeCallback(value) {\r\n\t\tthis._searchValue = value.toString();\r\n\t\tthis._regex = RegExp(value);\r\n\t\tthis.StoreSelectedCheckboxes();\r\n\r\n\t\tBlockUi.Block();\r\n\r\n\t\tconst items: FastFilterItem[] =\r\n\t\t\tthis._originalViewModelItems.map((item: FastFilterItem) => {\r\n\r\n\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\tValue: item.Value,\r\n\t\t\t\t\tDisplayValue: item.DisplayValue,\r\n\t\t\t\t\tChilds: item.Childs && item.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\tDisplayValue: child.DisplayValue,\r\n\t\t\t\t\t\t\tChilds: child.Childs && child.Childs.map((child) => {\r\n\r\n\t\t\t\t\t\t\t\tconst viewModelItem: FastFilterItem = {\r\n\t\t\t\t\t\t\t\t\tValue: child.Value,\r\n\t\t\t\t\t\t\t\t\tDisplayValue: child.DisplayValue\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\treturn viewModelItem;\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\t\t\t\treturn viewModelItem;\r\n\t\t\t});\r\n\r\n\t\tthis._availableItems(this.SortYears(this.SortItems(this.FilterItems(items))));\r\n\r\n\t\tthis.MapToViewModel();\r\n\t\tthis.MapToJstreeModel();\r\n\r\n\t\tthis.IsItemsLoaded = true;\r\n\r\n\t\tBlockUi.Unblock();\r\n\t}\r\n\r\n\tprivate FilterItems(data: FastFilterItem[]) {\r\n\r\n\t\tfor (var i = 0; i < data.length; i++) {\r\n\t\t\tconst item = data[i];\r\n\t\t\tif (!this._regex.test(item.DisplayValue.toLowerCase()) && item.Childs && item.Childs.length) {\r\n\t\t\t\titem.Childs = this.FilterItems(item.Childs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data.filter(f => this._regex.test(f.DisplayValue.toLowerCase()) || (f.Childs && f.Childs.length));\r\n\t}\r\n\r\n\tprivate SortYears(itemsList: FastFilterValue[]) {\r\n\t\tif (!itemsList || !itemsList.length) return [];\r\n\r\n\t\treturn itemsList.sort((a, b) => {\r\n\t\t\tconst valueA = a.DisplayValue || a.Value;\r\n\t\t\tconst valueB = b.DisplayValue || b.Value;\r\n\r\n\t\t\tif (valueA && valueA > valueB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else if (!valueA) {\r\n\t\t\t\treturn -1;\r\n\t\t\t} else {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected Filter() {\r\n\t\tthis.MapToSaveModel();\r\n\r\n\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn DateTimeFilterTemplate;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fast-filter fast-filter-datetime\\\"> <a class=\\\"fast-filter-icon\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"click: OpenFilter, css: {'active-filter-status': _isFilterApplied, [_filterId]: _filterId}\\\"></i> <span class=\\\"jBox-content-target\\\" data-jbox-content=\\\"\\r\\n\\t\\t\\t<div class='fast-filter fast-filter-datetime'>\\r\\n\\t\\t\\t\\t<div class='fast-filter-list-wrapper'>\\r\\n\\t\\t\\t\\t\\t<!-- ko with: _search -->\\r\\n\\t\\t\\t\\t\\t<!-- ko template: {html: GetTemplate.bind($data, {filterType: 'datetime'}), afterRender: AfterRender.bind($data)} -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\t\\t\\t\\t\\t<!-- /ko -->\\r\\n\\r\\n\\t\\t\\t\\t\\t<div id='fast-filter-datetime-tree-container' class='fast-filter-datetime-tree-container fast-filter-list'></div>\\r\\n\\r\\n\\r\\n\\t\\t\\t\\t\\t<div class='btn-block fast-filter-btns-container'>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-primary'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Filter'>\\r\\n\\t\\t\\t\\t\\t\\t\\tFilter\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t\\t<a class='fast-filter-btn btn btn-warning'\\r\\n\\t\\t\\t\\t\\t\\t data-bind='click: _Clear'>\\r\\n\\t\\t\\t\\t\\t\\t\\tClear\\r\\n\\t\\t\\t\\t\\t\\t</a>\\r\\n\\t\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t\\t</div>\\r\\n\\t\\t\\t</div>\\r\\n\\t\\t\\t\\\"> </span> </a> </div>\";\n// Exports\nexport default code;","import {BaseColumn} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\nimport {FastFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilter';\r\nimport {DecimalFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Decimal/DecimalFilter';\r\nimport {IntegerFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Integer/IntegerFilter';\r\nimport {TextFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Text/TextFilter';\r\nimport {DateFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Date/DateFilter';\r\nimport {LookupFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Lookup/LookupFilter';\r\nimport {YesnoFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Yesno/YesnoFilter';\r\nimport {TimespanFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Timespan/TimespanFilter';\r\nimport {TimeFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/Time/TimeFilter';\r\nimport {DateTimeFilter} from 'Core/Controls/Grid/BaseGrid/FastFilter/Filters/DateTime/DateTimeFilter';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {FastFilterSaveModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class HeaderColumn extends BaseColumn {\r\n\tprivate _recordId: number;\r\n\tprivate _tableViewId: number;\r\n\tprivate _element: HTMLElement;\r\n\tprivate _isClustered: boolean;\r\n\tprivate _gridDataModel: IGetGridDataRequestModel;\r\n\tprivate _existedColumnAliases: string[];\r\n\tprivate _labels = LABELS;\r\n\r\n\tprivate _fastFilter: FastFilter;\r\n\r\n\tconstructor(model: GridColumnModel,\r\n\t\t\t\trecordId: number,\r\n\t\t\t\ttableViewId: number,\r\n\t\t\t\tgridDataModel: IGetGridDataRequestModel,\r\n\t\t\t\texistedColumnAliases: string[]) {\r\n\t\tsuper(model);\r\n\r\n\t\tthis._recordId = recordId;\r\n\t\tthis._tableViewId = tableViewId;\r\n\t\tthis._isClustered = this._model.FieldMetadata && this._model.FieldMetadata.IsClustered;\r\n\t\tthis._gridDataModel = gridDataModel;\r\n\t\tthis._existedColumnAliases = existedColumnAliases;\r\n\t\tthis._fastFilter = null;\r\n\r\n\t\tthis.AddEvent(EVENTS.FAST_FILTER);\r\n\r\n\t\tthis.InitFastFilter();\r\n\t}\r\n\r\n\tprivate InitFastFilter() {\r\n\t\tconst isFastFilterAllowed = this._model.FieldMetadata && !this._model.FieldMetadata.IsVirtual;\r\n\r\n\t\tif (!isFastFilterAllowed) return;\r\n\r\n\t\tthis._fastFilter = this.CreateFastFilter();\r\n\r\n\t\tif (!this._fastFilter) return;\r\n\r\n\t\tthis._fastFilter.On(EVENTS.FAST_FILTER, this, (eventArgs: any) => {\r\n\t\t\tthis.Trigger(EVENTS.FAST_FILTER);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CreateFastFilter(): FastFilter {\r\n\t\tconst fastFilterParams = [this._model, this._recordId, this._tableViewId, this._gridDataModel, this._existedColumnAliases] as const;\r\n\r\n\t\tswitch(this._model.FieldMetadata.Type) {\r\n\t\t\tcase FIELD_TYPES.Decimal:\r\n\t\t\t\treturn new DecimalFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Integer:\r\n\t\t\t\treturn new IntegerFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Date:\r\n\t\t\t\treturn new DateFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.DateTime:\r\n\t\t\t\treturn new DateTimeFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.TimeSpan:\r\n\t\t\t\treturn new TimespanFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Time:\r\n\t\t\t\treturn new TimeFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Text:\r\n\t\t\t\treturn new TextFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Alias:\r\n\t\t\t\treturn new TextFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.YesNo:\r\n\t\t\t\treturn new YesnoFilter(...fastFilterParams);\r\n\t\t\tcase FIELD_TYPES.Lookup:\r\n\t\t\t\tif (this._model.FieldMetadata.ValTableId <= 0) return;\r\n\t\t\t\treturn new LookupFilter(...fastFilterParams);\r\n\t\t\tdefault:\r\n\t\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tResetSort() {\r\n\t\tthis._sortOrder(SortOrder.Both);\r\n\t}\r\n\r\n\tget IsWrapped(): boolean {\r\n\t\treturn this._model.IsWrapped;\r\n\t}\r\n\r\n\tget IsSortDescription(): boolean {\r\n\t\treturn this._model.IsSortDescription;\r\n\t}\r\n\t\r\n\tget IsOrdinary(){\r\n return !this.IsWrapped && !this.IsSortDescription;\r\n }\r\n\r\n\tget IsEnableSort(): boolean {\r\n\t\treturn this._model.IsEnableSort;\r\n\t}\r\n\r\n\tget DisplayOrder(): number {\r\n\t\treturn this._model.DisplayOrder;\r\n\t}\r\n\r\n\tget SortOrder() {\r\n\t\treturn this._sortOrder();\r\n\t}\r\n\r\n\tset SortOrder(order) {\r\n\t\tthis._sortOrder(order);\r\n\t}\r\n\r\n\tget IsFastFilterEnabled() {\r\n\t\treturn this._isFastFilterEnabled() && this._model.IsEnableFastFilter;\r\n\t}\r\n\r\n\tset IsFastFilterEnabled(value) {\r\n\t\tthis._isFastFilterEnabled(value);\r\n\t}\r\n\r\n\tget FilterSaveModel(): FastFilterSaveModel {\r\n\t\treturn this._fastFilter ? this._fastFilter.FilterSaveModel : null;\r\n\t}\r\n\r\n\tSort() {\r\n\t\tif (this._sortOrder() === SortOrder.Both) {\r\n\t\t\tthis._sortOrder(SortOrder.Asc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Asc) {\r\n\t\t\tthis._sortOrder(SortOrder.Desc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Desc) {\r\n\t\t\tthis._sortOrder(SortOrder.Both);\r\n\t\t}\r\n\r\n\t\tthis.Trigger(EVENTS.SORT);\r\n\t}\r\n\r\n\tGetSortModel(): SortModel {\r\n\t\tconst model = new SortModel();\r\n\r\n\t\tmodel.OrderColumn = this._model.Alias;\r\n\t\tmodel.SortOrder = this._sortOrder();\r\n\t\tmodel.OrderColumnGuid = this._model.QueryColumnGuid;\r\n\r\n\t\treturn model;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn this._fastFilter && this._fastFilter.GetTemplate();\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tthis._element = el;\r\n\t}\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {TotalCell} from 'Core/Controls/Grid/BaseGrid/GridCell/TotalCell';\r\nimport {GridTotalRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class GridTotalRow {\r\n\tprivate _dataCells: KnockoutObservableArray<TotalCell>;\r\n\tprivate _rowColorEnabled: KnockoutObservable<boolean> = ko.observable(false);\r\n\tprivate _labels = LABELS;\r\n\tprivate _isGroupActive: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: GridTotalRowModel,\r\n\t\tprivate _showFavoriteCell,\r\n\t\tpublic _isEnableSelectRecord: KnockoutObservable<boolean>,\r\n\t\tcolumns: GridColumnModel[]\r\n\t) {\r\n\t\tthis._dataCells = ko.observableArray([]);\r\n\t\t_.each(this._model.Data, (item, index) => {\r\n\t\t\tlet filterTotalColumns = _.filter(columns, column => !column.IsSortDescription);\r\n\t\t\tthis._dataCells.push(new TotalCell(item, _.find(filterTotalColumns, (col)=>col.QueryColumnGuid == item.QueryColumnGuid)));\r\n\t\t});\r\n\r\n\t\tthis._isGroupActive = ko.observable(true);\r\n\t}\r\n\r\n\tset IsGroupActive(active: boolean) {\r\n\t\tthis._isGroupActive(active);\r\n\t}\r\n\r\n\tget IsGroupActive():boolean {\r\n\t\treturn this._isGroupActive();\r\n\t}\r\n\r\n\t@enumerable \r\n\tget HasWrappedColumn(): boolean {\r\n\t\tvar wrappedCell = _.find(this._dataCells(), (dataCell) => { return dataCell.IsWrapped });\r\n\t\treturn wrappedCell != null;\r\n\t}\r\n\r\n\t@enumerable\r\n\tget HasData(): boolean {\r\n\t\treturn this._model.Data.length > 0;\r\n\t}\r\n\r\n\t@enumerable \r\n\tget Guid(): string {\r\n\t\treturn this._model.Guid;\r\n\t}\r\n}","import { States } from 'Core/Controls/Grid/BaseGrid/GridRow/States';\r\nimport {serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class RecordKeyModel {\r\n\t@serialize\r\n\tFieldId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n}\r\n\r\nexport class TranslationModel {\r\n\t@serialize\r\n\tLanguageShortName: string;\r\n\r\n\t@serialize\r\n\tValue: string;\r\n}\r\n\r\nexport class FieldDataModel {\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tFieldId: number;\r\n\r\n\t@serialize\r\n\tValue: string;\r\n\r\n\t@serialize\r\n\tCustomValue: string;\r\n\r\n\t@serializeAs(RecordKeyModel)\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n\r\n\t@serializeAs(TranslationModel)\r\n\tTranslations: TranslationModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.RecordKeys = [];\r\n\t}\r\n}\r\n\r\nexport class GridRowDataModel {\r\n\t@serialize\r\n\tData: Array<FieldDataModel>;\r\n\r\n\t@serialize\r\n\tState: States;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n\r\n\t@serialize\r\n\tSubjectEntityId: number;\r\n\r\n\t@serialize\r\n\tSubjectRecordId: number;\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@serialize\r\n\tKSeq: number;\r\n\r\n\t@serialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\tReferenceLookupFieldId: number;\r\n\r\n\t@serialize\r\n\tScopedTableId: number;\r\n\r\n\t@serialize\r\n\tScopedRecordId: number;\r\n\r\n\t@serialize\r\n\tIsLinkParent: boolean;\r\n}","export interface IUpdateLifestatusModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tRowLifestatus: number;\r\n}\r\nexport class UpdateLifestatusModel{\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tRowLifestatus: number;\r\n\r\n\tconstructor(model: IUpdateLifestatusModel) {\r\n\t\tthis.EntityId = model.EntityId;\r\n\t\tthis.RecordId = model.RecordId;\r\n\t\tthis.RowLifestatus = model.RowLifestatus;\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport * from 'Core/Components/Paginator/Paginator';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridScreenRow';\r\nexport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nexport {BlockUI} from 'Core/Common/BlockUi';\r\nexport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nexport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nexport {Event} from 'Core/Common/Event';\r\nexport {Notifier} from 'Core/Common/Notifier';\r\n\r\nexport {P} from 'Core/Common/Promise';\r\nexport {\r\n ConfirmationDialog,\r\n Types as ConfirmationTypes,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nexport * from \"Core/Components/Locker/LockManager\";\r\nexport * from 'Core/Components/Translation/Locales';\r\nexport * from \"Core/Components/Translation/TranslationManager\";\r\nexport {CONTROL_TYPES, FIELD_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nexport * from 'Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes';\r\nexport * from 'Core/Controls/Grid/BaseGrid/Events';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridAverageRow';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridCell/DataCell';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridColumn/GroupColumn';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridColumn/HeaderColumn';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/States';\r\nexport * from 'Core/Controls/Grid/BaseGrid/GridRow/GridTotalRow';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/GridRowModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nexport * from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\n\r\nexport {\r\n FieldDataModel,\r\n GridRowDataModel,\r\n TranslationModel\r\n} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\n\r\nexport {UpdateLifestatusModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateLifestatusModel';\r\nexport { GridStore } from 'Core/Controls/Grid/Stores/GridStore';\r\nexport type { IGetGridDataRequestModel, IUnlinkRecordRequestModel } from 'Core/Controls/Grid/Stores/GridStore';\r\nexport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nexport {Util} from 'QueryBuilder/Util';\r\n\r\nexport type {FastFilterSaveModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nexport type {IBaseGridOptions} from 'Core/Controls/Grid/Models/GridDataModel/BaseGridModel';\r\n\r\nexport type {IForm, IScreen} from \"Core/Screens/IScreen\";\r\nexport type {ILoadScreenRelationModel} from 'Core/Screens/Common/LinkEditor/LinkEditor';\r\n\r\nexport type {IControl} from \"Core/Controls/IControl\";\r\nexport {SortModel} from \"../Models/SortModel\";\r\nexport {SortOrder} from \"./GridColumn/BaseColumn\";\r\nexport {QueryColumnModel} from \"../Models/GridDataModel/QueryExpression/QueryColumnModel\";\r\nexport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"./QueryResultPage/Events\";\r\nexport {PivotDetailsDropdown} from \"./PivotDetaillsDropdown/PivotDetailsDropdown\";\r\nexport {Toolbar} from \"../Toolbar/Toolbar\";\r\nexport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nexport {ConfigModel} from \"../../../GeneralProperties/Models/ConfigModel\";\r\nexport {PROPERTIES} from \"../Constants\";\r\nexport {DeletedRelationModel, UpdateDataModel} from \"../../LinkList/Models/UpdateDataModel\";\r\nexport {extractLookupValFieldMetadata} from \"../Models/GridDataModel/FieldMetadataModel\";\r\nexport {ViewerJsExtention} from 'Core/KnockoutExtentions/ViewerJsExtention';\r\nexport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/Templates/BaseGrid.html';\r\nimport DefaultTemplate from 'Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate.html';\r\nimport ScreenTemplate from 'Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate.html';\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/Templates/BaseGrid'] = Template;\r\nko.templates['Core/Controls/Grid/BaseGrid/Templates/DefaultTemplate'] = DefaultTemplate;\r\nko.templates['Core/Controls/Grid/BaseGrid/Templates/ScreenTemplate'] = ScreenTemplate;\r\n\r\n\r\n","// Module\nvar code = \"<div cellspacing=\\\"0\\\" class=\\\"hidden-table flex-grid tab-key-navigation selectable-part dt-responsive no-footer dtr-inline collapsed cyber-grid-control\\\" data-bind=\\\"css: {'query-result-grid': _isQueryResultGrid, 'isCardScreen': _isCardScreen}, template: { afterRender: AfterGridReady.bind($data)}\\\" role=\\\"grid\\\"> <div class=\\\"grid-blocker\\\"></div> <!-- ko template: { name: $data.GetBaseTemplateName.bind($data) } --><!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \" <!-- ko with: _bulkEditRow --> <div class=\\\"flex-grid-body bulk-edit-row\\\"> <!-- ko template: { name: $data.GetTemplateName, afterRender : $parent.AfterBulkEditRowReady.bind($parent) } --> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"flex-grid-head\\\"> <div class=\\\"super-flex-grid-row\\\" role=\\\"row\\\"></div> <div class=\\\"flex-grid-row\\\" role=\\\"row\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-hdata flex-grid-table-header js-reserved\\\"> <input data-bind=\\\"uniform: _isAllSelected, checked: _isAllSelected, click: IsAllSelectedChanged\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> <!-- ko if: ShowActionCell() --> <div data-bind=\\\"css: _sortByRelationshipOrderClassName()\\\" class=\\\"flex-grid-hdata flex-grid-table-header edit-cell js-reserved\\\"> <div class=\\\"sort-icon\\\" data-bind=\\\"click: $data.SortByRelationships.bind($data)\\\"></div> </div> <!-- /ko --> <!-- ko if: (_isVisibleFavorites() && !_isNested && !_isView()) --> <div title=\\\"Favorite\\\" class=\\\"flex-grid-hdata flex-grid-table-header favorite-cell js-reserved\\\"> <i class=\\\"fa fa-star\\\"></i> </div> <!-- /ko --> <!-- ko foreach: { data : _headerColumns, afterRender: AfterHeaderColumnsReady.bind($data) } --> <!--ko if: IsOrdinary --> <div class=\\\"flex-grid-hdata flex-grid-table-header\\\" data-bind=\\\"css: $parents[0].GetClassNames(Model, [(IsEnableSort && _sortOrderClassName()) || '']),\\r\\n attr: {'data-priority': Model.DisplayPriority, 'data-index':$index(), 'data-group': HasGroupTitle ? GroupTitle : ''},\\r\\n style: {width: Model.styleWidth}\\\"> <!--ko if: IsFastFilterEnabled--> <!-- ko with: _fastFilter --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <div class=\\\"currency-percantage-icon-wrapper\\\"> <i class=\\\"currency-icon fa fa-euro\\\"></i> <i class=\\\"percentage-icon fa fa-percent\\\"></i> </div> <div class=\\\"column-name\\\" data-bind=\\\"attr: {title: Title}, text: Title\\\"></div> <!-- ko if: IsEnableSort --> <div class=\\\"sort-icon\\\" data-bind=\\\"click: $data.Sort.bind($data)\\\"></div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: _enableSelectRowCell --> <div class=\\\"flex-grid-hdata flex-grid-table-header js-reserved\\\"> </div> <!-- /ko --> </div> </div> <div class=\\\"flex-grid-body\\\"> <!-- ko fastForEach: { data : _rows, afterQueueFlush: AfterRowRender.bind($data) } --> <!-- ko template: { name: $data.GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- ko foreach: $data._crossTableWrapped --> <!-- ko template: { name: $data.GetTemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: _totalRow --> <!-- ko if: HasData --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-edit js-reserved\\\"> <b><!-- ko text: _labels.TOTAL --><!-- /ko --></b> </div> <!-- ko ifnot: $parent._isNested --> <!-- ko ifnot: $parent._isView --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"></div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"> <b><!-- ko text: _labels.TOTAL --><!-- /ko --></b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[1]._columnClassesTotalCollection()[$index()],\\r\\n attr: {\\r\\n 'data-priority': _columnModel.DisplayPriority,\\r\\n 'data-index': $index(),\\r\\n 'data-value': Boolean(Value)\\r\\n },\\r\\n style: { width: $parents[1].getColumnWidth.call($parents[1], $index()) }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped && Value --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: _countRow --> <!-- ko if: HasData --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-edit js-reserved\\\"> <b><!-- ko text: _labels.COUNT --><!-- /ko --></b> </div> <!-- ko ifnot: $parent._isNested --> <!-- ko ifnot: $parent._isView --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"></div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view total-cell-favorite js-reserved\\\"> <b><!-- ko text: _labels.COUNT --><!-- /ko --></b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[1]._columnClassesTotalCollection()[$index()],\\r\\n attr: {\\r\\n 'data-priority': _columnModel.DisplayPriority,\\r\\n 'data-index': $index(),\\r\\n 'data-value': Boolean(Value)\\r\\n },\\r\\n style: { width: $parents[1].getColumnWidth.call($parents[1], $index()) }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped && Value --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: _averageRow --> <!-- ko if: HasData --> <div tabindex=\\\"1\\\" role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent have-related\\\"> <!-- ko if: _isEnableSelectRecord --> <div class=\\\"flex-grid-tdata js-reserved\\\"></div> <!-- /ko --> <!-- ko if: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-edit js-reserved\\\"> <b>Average</b> </div> <!-- ko ifnot: $parent._isNested --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\"></div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._isEditable --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view average-cell-favorite js-reserved\\\"> <b>Average</b> </div> <!-- /ko --> <!-- ko foreach: _dataCells --> <!-- ko if: !IsWrapped --> <div class=\\\"flex-grid-tdata a-testing-helper-table-view\\\" data-bind=\\\"css: $parents[1]._columnClassesTotalCollection()[$index()],\\r\\n attr: {\\r\\n 'data-priority': _columnModel.DisplayPriority,\\r\\n 'data-index': $index(),\\r\\n 'data-value': Boolean(Value)\\r\\n },\\r\\n style: { width: $parents[1].getColumnWidth.call($parents[1], $index()) }\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: HasWrappedColumn --> <!-- ko foreach: _dataCells --> <!-- ko if: IsWrapped && Value --> <div role=\\\"row\\\" class=\\\"flex-grid-row parent-row parent related\\\"> <div class=\\\"flex-grid-tdata a-testing-helper-table-view td-wrapped\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data)} --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko foreach: _screenRows --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"pivotDetailsContainer\\\"> <div class=\\\"pivotDetailsDropdown\\\"> <span class=\\\"selectLink\\\"><!-- ko text: _labels.SELECT_LINK --><!-- /ko --></span> <div> <b><!-- ko text: _relationType --><!-- /ko --></b> :<!--ko if: _leftEntityIcon() && !_leftEntityIcon().Image--> <i data-bind=\\\"css: GetIconClasses(_leftEntityIcon().FontName, _leftEntityIcon().Name)\\\"></i> <!--/ko--> <!-- ko if: _leftEntityIcon() && _leftEntityIcon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _leftEntityIcon().Image}\\\"> <!-- /ko --> <!-- ko text: _leftRecordName --><!-- /ko --> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> <!--ko if: _rightEntityIcon() && !_rightEntityIcon().Image--> <i data-bind=\\\"css: GetIconClasses(_rightEntityIcon().FontName, _rightEntityIcon().Name)\\\"></i> <!--/ko--> <!-- ko if: _rightEntityIcon() && _rightEntityIcon().Image--> <img class=\\\"img-responsive image-centered image-icon-xs\\\" data-bind=\\\"attr: {src: _rightEntityIcon().Image}\\\"> <!-- /ko --> <!-- ko text: _rightRecordName --><!-- /ko --> </div> </div> <div class=\\\"pivotDetailsGrid\\\"> <!-- ko with: _grid --> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {PivotDetailModel} from \"Core/Controls/Grid/Models/PivotDetailModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport Template from 'Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/Templates/PivotDetailsDropdown.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport { ScreenTypes } from \"Core/Common/Enums/ScreenTypes\";\r\nimport { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nko.templates['Core/Controls/Grid/BaseGrid/PivotDetaillsDropdown/Templates/PivotDetailsDropdown'] = Template;\r\n\r\nexport class PivotDetailsDropdown extends Event {\r\n private readonly _id: string;\r\n private readonly _grid: KnockoutObservable<BaseGrid>;\r\n private _dropDown: JBoxDropDown;\r\n private _leftRecordName: KnockoutObservable<string>;\r\n private _rightRecordName: KnockoutObservable<string>;\r\n private _leftEntityIcon: KnockoutObservable<Icon>;\r\n private _rightEntityIcon: KnockoutObservable<Icon>;\r\n private _relationType: KnockoutObservable<string>;\r\n private _labels = LABELS;\r\n\r\n constructor(){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._grid = ko.observable(null);\r\n this._leftRecordName = ko.observable(null);\r\n this._rightRecordName = ko.observable(null);\r\n this._leftEntityIcon = ko.observable(null);\r\n this._rightEntityIcon = ko.observable(null);\r\n this._relationType = ko.observable(null);\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n this.AddEvent(GRID_EVENTS.REFRESH);\r\n this.AddEvent(GRID_EVENTS.EDIT_CLUSTERED_LINK);\r\n }\r\n\r\n Close(){\r\n if(this._dropDown){\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SetData(pivotDetails: PivotDetailModel, editLink: boolean = false){\r\n this._leftRecordName(pivotDetails.LeftRecordName);\r\n this._rightRecordName(pivotDetails.RightRecordName);\r\n this._relationType(pivotDetails.RelationType);\r\n\r\n if(pivotDetails.LeftEntityIcon){\r\n this._leftEntityIcon(new Icon(pivotDetails.LeftEntityIcon));\r\n }\r\n\r\n if(pivotDetails.RightEntityIcon){\r\n this._rightEntityIcon(new Icon(pivotDetails.RightEntityIcon));\r\n }\r\n\r\n const grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: ko.observable(true),\r\n screenType: ScreenTypes[ScreenTypes.ConsultScreen],\r\n enabledFavorite: false,\r\n isEnableSelectRecord: ko.observable(false),\r\n enableSelectRowCell: true,\r\n });\r\n\r\n grid.On(GRID_EVENTS.SELECT_RECORD, this,(eventArgs: any) => {\r\n this.Trigger(EVENTS.RECORD_SELECTED, { SelectedRecord: eventArgs.data.Row });\r\n });\r\n\r\n grid.On(GRID_EVENTS.REFRESH, this, () => {\r\n this.Trigger(GRID_EVENTS.REFRESH);\r\n });\r\n\r\n grid.On(GRID_EVENTS.EDIT_LINK, this, (eventArgs) =>{\r\n this.Trigger(GRID_EVENTS.EDIT_CLUSTERED_LINK, { gridRow: eventArgs.data.gridRow, grid: grid });\r\n });\r\n\r\n this._grid(grid);\r\n this._grid().SetData(pivotDetails.Data, undefined, true);\r\n\r\n if(grid.Rows.length == 1 && editLink){\r\n this.Trigger(GRID_EVENTS.EDIT_CLUSTERED_LINK, { gridRow: grid.Rows[0], grid: grid });\r\n }\r\n }\r\n\r\n get Rows(): Array<GridRow>{\r\n return this._grid().Rows;\r\n }\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: true,\r\n addClass: 'pivotDetailsJBox',\r\n maxWidth: \"calc(100%)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n private GetIconClasses(fontName, name):string {\r\n fontName = fontName.replace('fa-stack', '');\r\n let classes: string = '';\r\n if (fontName === FONT_NAME.FONT_AWESOME) {\r\n classes = `${classes} fa`;\r\n } else if (fontName === FONT_NAME.SOCIAL_ICONS) {\r\n classes = `${classes} socicon-btn`;\r\n } else {\r\n classes = fontName;\r\n }\r\n classes = `${classes} ${name} image-icon-xs`;\r\n\r\n return classes;\r\n }\r\n\r\n @enumerable get Id(){\r\n return this._id;\r\n }\r\n}","export const EVENTS = {\r\n\tRECORDS_SELECTED: 'RECORDS_SELECTED',\r\n\tRECORD_SELECTED: 'RECORD_SELECTED'\r\n};","import * as ko from \"knockout\";\r\n\r\nimport 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {FileDownloader} from \"Core/Components/FileDownloader/FileDownloader\";\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\nimport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {GridDataModel} from \"Core/Controls/Grid/Models/GridDataModel/GridDataModel\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\nimport {EVENTS as BASE_GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {GridStore, IGetGridDataRequestModel, IExportDataRequestModel} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {LABELS, CONFIRMATIONS} from 'Core/Components/Translation/Locales';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\n\r\nimport QueryResultPageTemplate\r\n from 'Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage.html';\r\n\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\n\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\nimport {SortModel} from \"../../Models/SortModel\";\r\nimport {IBaseGridOptions} from \"../../Models/GridDataModel/BaseGridModel\";\r\nimport { QueryExpressionModel } from \"../../Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\n\r\nko.templates['Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage'] = QueryResultPageTemplate;\r\n\r\nexport class QueryResultPage extends Event {\r\n private _grid: KnockoutObservable<BaseGrid>;\r\n private _modal: Modal;\r\n private _toolbar: Toolbar;\r\n private _query: QueryExpressionModel;\r\n private _isRendered: boolean;\r\n private _exportDataAllowed: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _screenType: ScreenTypes;\r\n private _sorting: Array<SortModel>;\r\n private _showButtons: boolean;\r\n private _updateFromFastFilters: boolean;\r\n private _selectOnRowClick: boolean;\r\n private _queryId: number;\r\n private _prevPageNumber = 1;\r\n\r\n RecordId = 0;\r\n\r\n constructor(\r\n isEditable: boolean = false,\r\n screenType: ScreenTypes = null,\r\n showFunctionLookup = true,\r\n showButtons = true,\r\n selectOnRowClick = false\r\n ) {\r\n super();\r\n this._showButtons = showButtons;\r\n this._isEditable = ko.observable(isEditable);\r\n this._isReady = ko.observable(false);\r\n this._screenType = screenType;\r\n this._isRendered = false;\r\n this._exportDataAllowed = ko.observable(false);\r\n this._selectOnRowClick = selectOnRowClick;\r\n\r\n\t\tthis._updateFromFastFilters = false;\r\n\t\tthis._toolbar = new Toolbar(\r\n\t\t\tfalse,\r\n\t\t\tshowFunctionLookup,\r\n\t\t\tko.observable(false),\r\n ko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(true),\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tthis._exportDataAllowed,\r\n\t\t\tko.observable(true),\r\n\t\t\tnull,\r\n\t\t\tfalse,\r\n\t\t\tfalse,\r\n ko.observable(false),\r\n ko.observable(false),\r\n ko.observable(false),\r\n true,\r\n false,\r\n []\r\n );\r\n\r\n this._grid = ko.observable(null);\r\n this.AddEvent(EVENTS.RECORDS_SELECTED);\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n this.AddEvent(BASE_GRID_EVENTS.OPEN_HYPERLINK);\r\n\r\n this.Init();\r\n }\r\n\r\n Init() {\r\n this._toolbar.Paginator().On(PAGINATOR_EVENTS.CHANGE, this, this.OnPaginationChange);\r\n this._toolbar.On(TOOLBAR_EVENTS.EXPORT_DATA, this, eventArgs => this.ExportData(eventArgs.data.Destination));\r\n this._toolbar.On(TOOLBAR_EVENTS.SEARCH_BY_PHRASE, this, (eventArgs: any) => {\r\n this.SearchByPhrase(eventArgs.data.SearchPhrase);\r\n });\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Controls/Grid/BaseGrid/QueryResultPage/Templates/QueryResultPage\";\r\n }\r\n\r\n Render(target: HTMLElement) {\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n }\r\n\r\n SetData(\r\n data: GridDataModel,\r\n gridOptions: IBaseGridOptions = { enabledFavorite: true, isEnableSelectRecord: ko.observable(true) },\r\n request: IGetGridDataRequestModel\r\n ) {\r\n let otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n let recordsPerPage = parseInt(otherGridPageLines);\r\n this._toolbar.Paginator().RecordsPerPage = isNaN(recordsPerPage) ? 10 : recordsPerPage;\r\n\r\n this._exportDataAllowed(data.IsExportDataAllowed);\r\n this._toolbar.Paginator().TotalRecords = data.TotalRecords;\r\n\r\n const grid = new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: this._isEditable,\r\n screenType: ScreenTypes[this._screenType],\r\n enabledFavorite: gridOptions.enabledFavorite,\r\n isEnableSelectRecord: gridOptions.isEnableSelectRecord,\r\n isMultiselect: gridOptions.isMultiselect\r\n });\r\n grid.IsFastFilterEnabled = true;\r\n\r\n grid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, eventArgs => this.OnHyperLink(eventArgs.data));\r\n grid.On(BASE_GRID_EVENTS.SORT, this, this.OnSortColumns);\r\n grid.On(BASE_GRID_EVENTS.SELECT_RECORD, this, (eventArgs: any) => {\r\n if (this._selectOnRowClick) {\r\n this.Trigger(EVENTS.RECORD_SELECTED, {SelectedRecord: eventArgs.data.Row});\r\n this._modal.Close();\r\n }\r\n });\r\n\r\n grid.On(BASE_GRID_EVENTS.UPDATE_GRID, this, eventArgs => this.OnUpdateGrid(eventArgs.data.updateFromFastFilters));\r\n\r\n grid.On(BASE_GRID_EVENTS.LOAD_SUB_GRID, this, (eventArgs)=>{\r\n this.OnUpdateGrid(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId);\r\n });\r\n\r\n data.SubjectEntityId = data.QueryExpression.Entity.Metadata.Id;\r\n data.SubjectRecordId = 0;\r\n\r\n this._grid(grid);\r\n this._grid().SetGridDataModel(request);\r\n this._grid().SetData(data, undefined, true);\r\n this._toolbar.Enable();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n Save() {\r\n let records = this._grid().GetSelectRecords();\r\n this.Trigger(EVENTS.RECORDS_SELECTED, {SelectedRecords: records});\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Show(options = {addClass: 'showScrollModal jBox-padding-15px'}, targetId = '') {\r\n if (targetId != '') {\r\n let target = document.getElementById(targetId);\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n } else {\r\n this._modal = new Modal(options);\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n this._isRendered = true;\r\n this._isReady(true);\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n ShowAddQueryResult(queryId: number) {\r\n let otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n let recordsPerPage = parseInt(otherGridPageLines);\r\n this._toolbar.Paginator().RecordsPerPage = isNaN(recordsPerPage) ? 10 : recordsPerPage;\r\n this._queryId = queryId;\r\n const getGridDataRequestModel: IGetGridDataRequestModel = {\r\n TableViewId: queryId,\r\n SubjectRecordId: 0,\r\n SubjectKindId: 0,\r\n SubjectTypeId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: ViewModes.Query,\r\n PageNumber: 1,\r\n RecordsPerPage: recordsPerPage,\r\n FilterByOwners: false,\r\n ControlId: 0,\r\n SubjectEntityId: 0,\r\n Sort: [],\r\n SearchPhrase: null,\r\n ShowPlanned: false,\r\n RecordOwners: []\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n GridStore.GetData(getGridDataRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock()\r\n })\r\n .then(data => {\r\n this.SetData(data, {isEnableSelectRecord: ko.observable(true)}, getGridDataRequestModel);\r\n this.Show();\r\n });\r\n }\r\n\r\n ShowQueryResult(\r\n query?: QueryExpressionModel,\r\n targetId = '',\r\n enableSelectRecord: boolean = false,\r\n multiSelect: boolean = true\r\n ) {\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData(query, undefined, undefined, {enabledFavorite: true, isEnableSelectRecord: ko.observable(true)});\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this.SetData(result, {isEnableSelectRecord: ko.observable(enableSelectRecord), isMultiselect: multiSelect}, requestModel);\r\n if (!this._isRendered) {\r\n this.Show({addClass: 'showScrollModal jBox-padding-15px'}, targetId);\r\n }\r\n });\r\n\r\n }\r\n\r\n LoadData(requestModel: IGetGridDataRequestModel) {\r\n BlockUI.Block();\r\n\r\n return GridStore\r\n .GetData(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail((error) => {\r\n const notifier = new Notifier(null);\r\n notifier.Failed(error.message);\r\n });\r\n }\r\n\r\n private GetQueryData(query: QueryExpressionModel = this._query, subGrid?: BaseGrid, parentRowId?: string, gridOptions?: IBaseGridOptions): IGetGridDataRequestModel {\r\n this._query = query;\r\n const otherGridPageLines = GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES);\r\n const recordsPerPage = parseInt(otherGridPageLines);\r\n this._toolbar.Paginator().RecordsPerPage = isNaN(recordsPerPage) ? 10 : recordsPerPage;\r\n\r\n let pageNumber = subGrid ? subGrid.Paginator.PageNumber : this._toolbar.Paginator().PageNumber;\r\n\r\n if (this._grid() === null){\r\n this._grid(new BaseGrid({\r\n isPrioritiesDisabled: true,\r\n isQueryResultGrid: true,\r\n isEditable: this._isEditable,\r\n screenType: ScreenTypes[this._screenType],\r\n enabledFavorite: gridOptions.enabledFavorite,\r\n isEnableSelectRecord: gridOptions.isEnableSelectRecord,\r\n isMultiselect: gridOptions.isMultiselect\r\n }));\r\n }\r\n\r\n let fastFilters = this._grid().FilterSaveModels;\r\n\r\n UserVarsManager.Instance.SetGridColumnFilters(this.RecordId, fastFilters);\r\n\r\n const preselectedFilters = UserVarsManager.Instance.GetGridColumnFilters(this.RecordId);\r\n\r\n if (preselectedFilters && preselectedFilters.length) {\r\n preselectedFilters.map((preselectedFilter) => {\r\n if (fastFilters.findIndex((el) => el.FieldAlias === preselectedFilter.FieldAlias) < 0) {\r\n fastFilters.push(preselectedFilter);\r\n }\r\n });\r\n }\r\n\r\n return {\r\n TableViewId: this._queryId,\r\n SubjectRecordId: this.RecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: ViewModes.Query,\r\n PageNumber: pageNumber,\r\n RecordsPerPage: this._toolbar.Paginator().RecordsPerPage,\r\n Sort: this._sorting,\r\n Query: this._query,\r\n FilterByOwners: false,\r\n ControlId: 0,\r\n SubjectEntityId: 0,\r\n SearchPhrase: null,\r\n ShowPlanned: false,\r\n RecordOwners: [],\r\n ParentRowId: parentRowId,\r\n SubQueryGuid: subGrid ? subGrid.Model.SubQueryGuid : null,\r\n FastFilters: fastFilters.filter((filter) => filter.Values.length)\r\n .map((filter) => {\r\n filter.Values.forEach(value => {\r\n if (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n value.DisplayValue = null;\r\n }\r\n });\r\n return {\r\n FieldAlias: filter.FieldAlias,\r\n Values: filter.Values,\r\n TimeZone: (new Date().getTimezoneOffset()) / 60\r\n };\r\n })\r\n };\r\n }\r\n\r\n OnSortColumns = (eventArgs: any) => {\r\n this._sorting = eventArgs.data.SortColumns;\r\n\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData();\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this._grid().SetData(result, true, true);\r\n });\r\n }\r\n\r\n OnUpdateGrid = (updateFromFastFilters: boolean, subGrid?: BaseGrid, parentRowId?: string) => {\r\n this._updateFromFastFilters = updateFromFastFilters;\r\n\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData(this._query, subGrid, parentRowId, {enabledFavorite: true, isEnableSelectRecord: ko.observable(true)});\r\n let contextGrid = subGrid || this._grid();\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this._toolbar.Paginator().TotalRecords = result.TotalRecords;\r\n contextGrid.SetRecordsPerPage(this._toolbar.Paginator().RecordsPerPage);\r\n contextGrid.SetData(result, true, true);\r\n });\r\n }\r\n\r\n SearchByPhrase(searchPhrase: string) {\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData();\r\n requestModel.SearchPhrase = searchPhrase;\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n this._toolbar.Paginator().TotalRecords = result.TotalRecords;\r\n this._grid().SetData(result, true, true);\r\n });\r\n }\r\n\r\n OnPaginationChange = (eventArgs: { data: { pageNumber: number } }) => {\r\n if (eventArgs.data.pageNumber === this._prevPageNumber) {\r\n return;\r\n }\r\n\r\n const loadData = () => {\r\n let requestModel: IGetGridDataRequestModel = this.GetQueryData();\r\n\r\n this.LoadData(requestModel).then((result) => {\r\n result.SubjectEntityId = result.QueryExpression.Entity.Metadata.Id;\r\n result.SubjectRecordId = 0;\r\n this._grid().SetData(result, true, true);\r\n });\r\n };\r\n\r\n if (this._grid().GetEditRows().length > 0 || this._grid().GetNewAndLinkRows().length > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Warning\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n loadData();\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this._toolbar.Paginator().PageNumber = this._prevPageNumber;\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n loadData();\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n }\r\n }\r\n\r\n private ExportData(destination: string) {\r\n const exportParams: IExportDataRequestModel = {\r\n Query: this._grid().Model.QueryExpression,\r\n Destination: destination,\r\n FilterByOwners: false,\r\n RecordOwners: [],\r\n ShowPlanned: true,\r\n ViewMode: ViewModes.Query,\r\n ShowRetired: false\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n GridStore.ExportData(exportParams)\r\n .always(() => BlockUI.Unblock())\r\n .then((fileName: string) => FileDownloader.DownloadFile(fileName))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private GoToScreen(linkInfo) {\r\n UserVarsManager.Instance.AddRecent(linkInfo.EntityId, linkInfo.RecordId, linkInfo.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, linkInfo.EntityId);\r\n\r\n linkInfo.IsOpenInModal = true;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, linkInfo);\r\n }\r\n\r\n private OnHyperLink(linkInfo) {\r\n if (!linkInfo.ShowInModal) {\r\n this.Close();\r\n }\r\n\r\n this.GoToScreen(linkInfo);\r\n }\r\n}","// Module\nvar code = \"\\t<div class=\\\"portlet light query-result-page\\\"> <div class=\\\"relative-block\\\"> <!-- ko if: _showButtons --> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body query-result__form-body\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: Save\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl saveBtn\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> Save </a> <a data-bind=\\\"click: Close\\\" href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl cancelBtn\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> Cancel </a> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"css: {'margin-t-15px': _showButtons}\\\"> <div class=\\\"row-no-margin atesting-grid-container list-screen\\\"> <!-- ko with: _toolbar --> <div class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _grid --> <div class=\\\"grid-container-wrapper table-scrollable\\\"> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","export const DEFAULT_RECORDS_PER_PAGE = 10;\r\n\r\nexport const PROPERTIES = {\r\n SHOW_ALL_COLUMNS: 'ShowAllColumns',\r\n READONLY: 'ReadOnly',\r\n SEARCH: 'Search',\r\n HIDE_LIFESTATUS_TOGGLE: \"HideLifeStatusToggle\",\r\n HIDE_UNLINK: \"HideUnlink\",\r\n HIDE_EDIT: \"HideEdit\",\r\n ENABLE_BASKET: 'EnableBasket',\r\n\tENABLE_LINK: 'EnableLinkButton',\r\n ENABLE_UNLINK_MULTIPLE: 'EnableUnlinkMultipleButton',\r\n ENABLE_LINK_PARENT: 'EnableLinkParentButton',\r\n\tENABLE_SUBGRID_LINK: 'EnableSubGridLinkButton',\r\n ENABLE_UNLINK_MULTIPLE_RECORDS_SUBGRID: 'EnableUnlinkMultipleRecordsSubGridLinkButton',\r\n ENABLE_SUBGRID_LINK_PARENT: 'EnableSubGridLinkParentButton',\r\n ENABLE_NEW_LINK: 'EnableNewButton',\r\n ENABLE_ADD_AND_LINK: 'EnableAdd&LinkButton',\r\n ENABLE_SCAN_AND_LINK: 'EnableScan&LinkButton',\r\n ENABLE_SUBGID_ADD_AND_LINK: 'EnableSubGridAdd&LinkButton',\r\n ENABLE_SUBGRID_SCAN_AND_LINK: 'EnableSubGridScan&LinkButton',\r\n ENABLE_ADD_QUERY: 'EnableAddQueryButton',\r\n BACK_LINKING: 'BackLinking',\r\n SECURITY_FILTER: 'SecurityFilter',\r\n QUERY_CONDITION: 'QueryCondition',\r\n MAX_ROW_HEIGHT: 'MaxRowHeight',\r\n FAST_FILTER: 'FastFilter',\r\n SHOW_TABLE_VIEW: 'ShowTableView',\r\n ROW_COLOR: 'RowColor',\r\n BULK_EDIT: 'BulkEdit',\r\n EDIT_ALL: 'EditAll',\r\n LINKING_CONDITION: 'LinkingCondition',\r\n CARD_SCREEN: 'CardScreen',\r\n POSITION: 'Position',\r\n PROCESS_CARDS: 'ProcessCards'\r\n};\r\n\r\nexport const SECURITY_FILTERS = {\r\n SHARING_SECURITY: 'Sharing',\r\n RECORD_SECURITY: 'Record',\r\n};","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\n\r\n\r\nexport interface ILinkRecordsRequestModel {\r\n MainTableId: number;\r\n LinkedTableId: number;\r\n MainRecordId: number;\r\n LinkedRecordIds: Array<number>;\r\n}\r\n\r\nexport interface IGetLatestLinkRequestModel {\r\n MainTableId: number;\r\n LinkedTableId: number;\r\n MainRecordId: number;\r\n}\r\n\r\nexport interface IGetLatestSubRequestModel {\r\n SubTableId: number;\r\n MainRecordId: number\r\n}\r\n\r\nexport interface ICopyLatestSubRequestModel {\r\n MainTableId: number;\r\n SubTableId: number;\r\n MainRecordId: number\r\n}\r\n\r\nexport interface ICopySubRequestModel {\r\n SubTableId: number;\r\n SequenceId: number;\r\n}\r\n\r\nexport class LinkRecordsStore {\r\n static LinkWithRecords(params: ILinkRecordsRequestModel): P.Promise<OperationResultModel> {\r\n const deferredResult = P.defer<OperationResultModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/LinkWithRecords',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(<OperationResultModel>Deserialize(result, OperationResultModel));\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetLastLinkedRecordEditScreen(params: IGetLatestLinkRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/GetLastLinkedRecordEditScreen',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetLastSubRecordSpecs(params: IGetLatestSubRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/GetLastSubRecordSpecs',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CopyLastSubRecord(params: ICopyLatestSubRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/CopyLastSubRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CopySubRecord(params: ICopySubRequestModel) {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/ScreenFormApi/CopySubRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject)\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n })\r\n .fail(err => deferred.reject(err));\r\n\r\n return deferred.promise();\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgres, click: _help.ShowControlHelp.bind(_help, $data), css: {'has-error': !$data._isValid()}\\\" class=\\\"row-no-margin atesting-grid-container\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage }\\\" class=\\\"fa fa-warning control-tooltip\\\"></i> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._guid}\\\" class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _baseGrid --> <div class=\\\"grid-relative-container\\\"> <div class=\\\"grid-container-wrapper\\\" data-bind=\\\"visible: _isReady\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- ko if: $parent.ShouldShowBottomPagination()--> <!-- ko with: $parent._toolbar --> <div class=\\\"pagination-container-grid pagination-bottom-container-grid margin-t-15px\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {IGetOptionsDto} from \"../Models/Dto/IGetOptionsDto\";\r\nimport {LookupOptionsDto} from \"../Models/Dto/LookupOptionsDto\";\r\nimport {ISaveSelectionDto} from \"../Models/Dto/ISaveSelectionDto\";\r\n\r\nexport class Store {\r\n static GetLookupOptions(dto: IGetOptionsDto): P.Promise<LookupOptionsDto> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/GetLookupOptions',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: dto\r\n });\r\n }\r\n\r\n static SaveSelection(dto: ISaveSelectionDto): P.Promise<any> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/SetLookupValue',\r\n type: 'POST'\r\n },\r\n params: dto\r\n });\r\n }\r\n}","export class LookupOptionDto {\r\n Id: number;\r\n Name: string;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {LookupOption} from \"./LookupOption\";\r\nimport {LookupField} from \"./LookupField\";\r\n\r\nexport class ViewModel {\r\n Header: string;\r\n ErrorSummary: KnockoutObservable<string>;\r\n Options: KnockoutObservableArray<LookupOption>;\r\n SelectedOption: KnockoutObservable<number>;\r\n LookupField: LookupField;\r\n\r\n constructor() {\r\n this.ErrorSummary = ko.observable(null);\r\n this.Options = ko.observableArray([]);\r\n this.SelectedOption = ko.observable(null);\r\n }\r\n}","import {Icon} from \"Core/Icon/Icon\";\r\nimport {LookupFieldTable} from \"./LookupFieldTable\";\r\n\r\nexport class LookupField {\r\n Id: number;\r\n Name: string;\r\n Icon: Icon;\r\n\r\n LinkTable: LookupFieldTable;\r\n LeftTable: LookupFieldTable;\r\n RightTable: LookupFieldTable;\r\n}","import {Icon} from \"Core/Icon/Icon\";\r\n\r\nexport class LookupFieldTable {\r\n Id: number;\r\n Name: string;\r\n}","import {Icon} from \"Core/Icon/Icon\";\r\n\r\nimport {LookupOptionsDto} from \"../Models/Dto/LookupOptionsDto\";\r\nimport {LookupOptionDto} from \"../Models/Dto/LookupOptionDto\";\r\nimport {LookupFieldDto} from \"../Models/Dto/LookupFieldDto\";\r\nimport {LookupFieldTableDto} from \"../Models/Dto/LookupFieldTableDto\";\r\n\r\nimport {ViewModel} from \"../Models/View/ViewModel\";\r\nimport {LookupOption} from \"../Models/View/LookupOption\";\r\nimport {LookupField} from \"../Models/View/LookupField\";\r\nimport {LookupFieldTable} from \"../Models/View/LookupFieldTable\";\r\n\r\nexport class Mappings {\r\n static MapToViewModel(dto: LookupOptionsDto): ViewModel {\r\n const viewModel = new ViewModel();\r\n\r\n viewModel.Options(this.MapToLookupOptions(dto.Options));\r\n viewModel.SelectedOption(dto.SelectedOption && dto.SelectedOption.Id);\r\n viewModel.LookupField = this.MapToLookupField(dto.LookupField);\r\n\r\n return viewModel;\r\n }\r\n\r\n static MapToLookupOptions(dtos: LookupOptionDto[]): LookupOption[] {\r\n return dtos.map(dto => this.MapToLookupOption(dto));\r\n }\r\n\r\n static MapToLookupOption(dto: LookupOptionDto): LookupOption {\r\n if (!dto) return null;\r\n\r\n const option = new LookupOptionDto();\r\n\r\n option.Id = dto.Id;\r\n option.Name = dto.Name;\r\n\r\n return option;\r\n }\r\n\r\n static MapToLookupField(dto: LookupFieldDto): LookupField {\r\n if (!dto) return null;\r\n\r\n const field = new LookupField();\r\n\r\n field.Id = dto.Id;\r\n field.Name = dto.Name;\r\n field.Icon = new Icon(dto.Icon);\r\n\r\n field.LinkTable = this.MapToLookupFieldTable(dto.LinkTable);\r\n field.LeftTable = this.MapToLookupFieldTable(dto.LeftTable);\r\n field.RightTable = this.MapToLookupFieldTable(dto.RightTable);\r\n\r\n return field;\r\n }\r\n\r\n static MapToLookupFieldTable(dto: LookupFieldTableDto): LookupFieldTable {\r\n if (!dto) return null;\r\n\r\n const table = new LookupFieldTable();\r\n\r\n table.Id = dto.Id;\r\n table.Name = dto.Name;\r\n\r\n return table;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {IPopup} from \"../IPopup\";\r\nimport {IParams} from \"./IParams\";\r\n\r\nimport {ViewModel} from \"./Models/View/ViewModel\";\r\n\r\nimport {Store} from \"./Stores/Store\";\r\nimport {LookupOptionsDto} from \"./Models/Dto/LookupOptionsDto\";\r\n\r\nimport {Mappings} from \"./Mappings/Mappings\";\r\n\r\nimport Template from 'Core/Components/BackLinking/Popup/FillLookup/Templates/Template.html';\r\n\r\nko.templates['Core/Components/BackLinking/Popup/FillLookup/Templates/Template'] = Template;\r\n\r\nexport class FillLookupPopup implements IPopup {\r\n private _viewModel: ViewModel;\r\n private _modal: Modal;\r\n\r\n constructor(private _params: IParams) {\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/BackLinking/Popup/FillLookup/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n BlockUI.Block();\r\n\r\n this.RequestOptions()\r\n .then((dto: LookupOptionsDto) => {\r\n if (dto.Options.length === 0) {\r\n new Notifier().Warning('There are no options for such intention');\r\n return;\r\n }\r\n\r\n this._viewModel = Mappings.MapToViewModel(dto);\r\n this._viewModel.Header = this._params.Header;\r\n\r\n this.ShowModal();\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n Save() {\r\n if (!this._viewModel.SelectedOption()) {\r\n this._viewModel.ErrorSummary('Please select any option');\r\n return;\r\n }\r\n\r\n this._viewModel.ErrorSummary(null);\r\n\r\n BlockUI.Block();\r\n\r\n this.SaveSelection()\r\n .then(() => {\r\n new Notifier().Success('Success');\r\n this._modal.Close();\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n private RequestOptions() {\r\n return Store.GetLookupOptions({\r\n SubTableView: this._params.SubTableView,\r\n LeftTableId: this._params.LeftTableId,\r\n RightTableId: this._params.RightTableId,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n Sequence: this._params.Sequence\r\n });\r\n }\r\n\r\n private SaveSelection() {\r\n return Store.SaveSelection({\r\n LookupFieldId: this._viewModel.LookupField.Id,\r\n SelectedOption: this._viewModel.SelectedOption(),\r\n LeftTableId: this._viewModel.LookupField.LeftTable.Id,\r\n RightTableId: this._viewModel.LookupField.RightTable.Id,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n Sequence: this._params.Sequence\r\n });\r\n }\r\n\r\n private ShowModal() {\r\n this._modal = new Modal({\r\n minWidth: 400\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n}","// Module\nvar code = \"<!--ko with: _viewModel--> <div class=\\\"portlet body-space box blue-dark\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: Header\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <div class=\\\"form clearfix\\\"> <fieldset> <legend> <!--ko text: LookupField.LeftTable.Name--><!--/ko--> <i class=\\\"fa fa-arrow-right\\\"></i> <!--ko text: LookupField.RightTable.Name--><!--/ko--> | <!--ko text: LookupField.Name--><!--/ko--> </legend> <div class=\\\"red\\\" data-bind=\\\"if: ErrorSummary\\\"> <span data-bind=\\\"text: ErrorSummary\\\"></span> </div> <!--ko foreach: Options--> <div class=\\\"form-group\\\"> <label> <input type=\\\"radio\\\" name=\\\"lookupOption\\\" data-bind=\\\"\\r\\n checkedValue: $data.Id,\\r\\n checked: $parent.SelectedOption,\\r\\n uniform: $parent.SelectedOption() === $data.Id\\\"> <span data-bind=\\\"text: $data.Name\\\"></span> </label> </div> <!--/ko--> </fieldset> <div class=\\\"pull-right\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $parent.Save.bind($parent)\\\"> <i class=\\\"fa fa-save\\\"></i> Save </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.Cancel.bind($parent)\\\"> <i class=\\\"fa fa-times\\\"></i> Cancel </button> </div> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\n\r\nimport {IGetOptionsDto} from \"../Models/Dto/IGetOptionsDto\";\r\nimport {BackLinkOptionsDto} from \"../Models/Dto/BackLinkOptionsDto\";\r\nimport {ISaveSelectionDto} from \"../Models/Dto/ISaveSelectionDto\";\r\n\r\nexport class Store {\r\n static GetBackLinkOptions(dto: IGetOptionsDto): P.Promise<BackLinkOptionsDto> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/GetBackLinkOptions',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: dto\r\n });\r\n }\r\n\r\n static SaveSelection(dto: ISaveSelectionDto) : P.Promise<any> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/CreateBackLinks',\r\n type: 'POST'\r\n },\r\n params: dto\r\n });\r\n }\r\n}","import {OptionsGroup} from \"./OptionsGroup\";\r\nimport {LinkTable} from \"./LinkTable\";\r\n\r\nexport class ViewModel {\r\n Header: string;\r\n Groups: OptionsGroup[];\r\n LinkTable: LinkTable;\r\n\r\n GetSelectedOptions() {\r\n const selectedOptions = [];\r\n\r\n for (const group of this.Groups) {\r\n if (group.SelectedOption()) {\r\n selectedOptions.push(group.SelectedOption());\r\n continue;\r\n }\r\n\r\n selectedOptions.push(...group.Options\r\n .filter(option => option.IsSelected())\r\n .map(option => option.Id));\r\n }\r\n\r\n return selectedOptions;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Option} from \"./Option\";\r\n\r\nexport class OptionsGroup {\r\n GroupName: string;\r\n MultipleSelection: boolean;\r\n\r\n Options: Option[];\r\n SelectedOption: KnockoutObservable<number>;\r\n\r\n constructor() {\r\n this.SelectedOption = ko.observable(null);\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nexport class Option {\r\n Id: number;\r\n Name: string;\r\n\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.IsSelected = ko.observable(false);\r\n }\r\n}","import { Table } from \"./Table\";\r\n\r\nexport class LinkTable {\r\n Id: number;\r\n Name: string;\r\n\r\n\tLeftTable: Table;\r\n RightTable: Table;\r\n}","export class Table {\r\n\tId: number;\r\n\tName: string;\r\n}","import {BackLinkOptionsDto} from \"../Models/Dto/BackLinkOptionsDto\";\r\nimport {OptionsGroupDto} from \"../Models/Dto/OptionsGroupDto\";\r\nimport {BackLinkOptionDto} from \"../Models/Dto/BackLinkOptionDto\";\r\nimport {LinkTableDto} from \"../Models/Dto/LinkTableDto\";\r\n\r\nimport {ViewModel} from \"../Models/View/ViewModel\";\r\nimport {OptionsGroup} from \"../Models/View/OptionsGroup\";\r\nimport {Option} from \"../Models/View/Option\";\r\nimport {LinkTable} from \"../Models/View/LinkTable\";\r\nimport {TableDto} from \"../Models/Dto/TableDto\";\r\nimport {Table} from \"../Models/View/Table\";\r\n\r\nexport class Mappings {\r\n static MapToViewModel(dto: BackLinkOptionsDto): ViewModel {\r\n const viewModel = new ViewModel();\r\n\r\n viewModel.Groups = dto.Groups .map(group => this.MapToOptionsGroup(group))\r\n\r\n viewModel.LinkTable = this.MapToLinkTable(dto.LinkTable);\r\n\r\n return viewModel;\r\n }\r\n\r\n static MapToLinkTable(dto: LinkTableDto): LinkTable {\r\n const linkTable = new LinkTable();\r\n\r\n linkTable.Id = dto.Id;\r\n linkTable.Name = dto.Name;\r\n linkTable.LeftTable = this.MapToTable(dto.LeftTable);\r\n linkTable.RightTable = this.MapToTable(dto.RightTable);\r\n\r\n return linkTable;\r\n }\r\n\r\n static MapToTable(dto: TableDto): Table {\r\n const table = new Table();\r\n\r\n table.Id = dto.Id;\r\n table.Name = dto.Name;\r\n\r\n return table;\r\n }\r\n\r\n static MapToOptionsGroup(dto: OptionsGroupDto): OptionsGroup {\r\n const group = new OptionsGroup();\r\n\r\n group.GroupName = dto.GroupName;\r\n\r\n group.Options = dto.Options.map(option => this.MaptToOption(option));\r\n group.MultipleSelection = dto.MultipleSelection;\r\n\r\n if (dto.MultipleSelection) {\r\n group.Options.forEach(option =>\r\n option.IsSelected(dto.SelectedOptions.indexOf(option.Id) > -1));\r\n } else {\r\n group.SelectedOption(dto.SelectedOptions[0] || null);\r\n }\r\n\r\n return group;\r\n }\r\n\r\n static MaptToOption(dto: BackLinkOptionDto): Option {\r\n const option = new Option();\r\n\r\n option.Id = dto.Id;\r\n option.Name = dto.Name;\r\n\r\n return option;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {IPopup} from \"../IPopup\";\r\nimport {IParams} from \"./IParams\";\r\n\r\nimport {ViewModel} from './Models/View/ViewModel';\r\n\r\nimport {Store} from \"./Stores/Store\";\r\nimport {BackLinkOptionsDto} from \"./Models/Dto/BackLinkOptionsDto\";\r\n\r\nimport Template from 'Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template.html';\r\nimport {Mappings} from \"./Mappings/Mappings\";\r\n\r\nko.templates['Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template'] = Template;\r\n\r\nexport class MakeBackLinkPopup extends Event implements IPopup {\r\n private _viewModel: ViewModel;\r\n private _modal: Modal;\r\n\r\n constructor(private _params: IParams) {\r\n super();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Components/BackLinking/Popup/MakeBackLink/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Save() {\r\n BlockUI.Block();\r\n\r\n this.SaveSelection()\r\n .then(() => {\r\n new Notifier().Success('Success');\r\n this._modal.Close();\r\n this.Trigger('CHANGES_SAVED');\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock())\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n Show(): void {\r\n BlockUI.Block();\r\n\r\n this.RequestOptions()\r\n .then((dto: BackLinkOptionsDto) => {\r\n if (dto.Groups.length === 0) {\r\n new Notifier().Warning('There are no options for such intention');\r\n return;\r\n }\r\n\r\n this._viewModel = Mappings.MapToViewModel(dto);\r\n this._viewModel.Header = this._params.Header;\r\n\r\n this.ShowModal();\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowModal() {\r\n this._modal = new Modal({\r\n minWidth: 400\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n private RequestOptions() {\r\n return Store.GetBackLinkOptions({\r\n SubTableView: this._params.SubTableView,\r\n LeftTableId: this._params.LeftTableId,\r\n RightTableId: this._params.RightTableId,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n Sequence: this._params.Sequence\r\n });\r\n }\r\n\r\n private SaveSelection() {\r\n return Store.SaveSelection({\r\n SubTableView: this._params.SubTableView,\r\n LeftTableId: this._params.LeftTableId,\r\n RightTableId: this._params.RightTableId,\r\n LeftRecordId: this._params.LeftRecordId,\r\n RightRecordId: this._params.RightRecordId,\r\n SelectedOptions: this._viewModel.GetSelectedOptions()\r\n });\r\n }\r\n}","// Module\nvar code = \"<!--ko with: _viewModel--> <div class=\\\"portlet body-space box blue-dark\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject uppercase\\\" data-bind=\\\"text: Header\\\"></span> </div> </div> <div class=\\\"portlet-body\\\"> <div class=\\\"form clearfix\\\"> <!--ko foreach: Groups--> <fieldset> <legend> <span data-bind=\\\"text: $data.GroupName\\\"></span> </legend> <!--ko if: MultipleSelection--> <!--ko foreach: Options--> <div class=\\\"form-group\\\"> <label> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.IsSelected, uniform: $data.IsSelected\\\"> <span data-bind=\\\"text: $data.Name\\\"></span> </label> </div> <!--/ko--> <!--/ko--> <!--ko ifnot: MultipleSelection--> <!--ko foreach: Options--> <div class=\\\"form-group\\\"> <label> <input type=\\\"radio\\\" data-bind=\\\"\\r\\n attr: {name: 'group' + $parent.GroupNumber},\\r\\n checkedValue: $data.Id,\\r\\n checked: $parent.SelectedOption,\\r\\n uniform: $parent.SelectedOption() === $data.Id\\\"> <span data-bind=\\\"text: $data.Name\\\"></span> </label> </div> <!--/ko--> <!--/ko--> </fieldset> <!--/ko--> <div class=\\\"pull-right\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $parent.Save.bind($parent)\\\"> <i class=\\\"fa fa-save\\\"></i> Save </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.Cancel.bind($parent)\\\"> <i class=\\\"fa fa-times\\\"></i> Cancel </button> </div> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {Event} from 'Core/Common/Event';\r\n\r\nimport {Intentions} from \"./Constants/Intentions\";\r\n\r\nimport {IParams} from \"./IParams\";\r\n\r\nimport {FillLookupPopup} from \"./Popup/FillLookup/FillLookupPopup\";\r\nimport {MakeBackLinkPopup} from \"./Popup/MakeBackLink/MakeBackLinkPopup\";\r\n\r\nexport class BackLinking extends Event {\r\n constructor(private _params: IParams) {\r\n super();\r\n }\r\n\r\n ShowPopup() {\r\n switch (this._params.Intention) {\r\n case Intentions.FillLookup:\r\n this.ShowFillLookupPopup();\r\n break;\r\n\r\n case Intentions.MakeBackLink:\r\n this.ShowMakeBackLinkPopup();\r\n break;\r\n }\r\n }\r\n\r\n private ShowFillLookupPopup() {\r\n new FillLookupPopup(this._params).Show();\r\n }\r\n\r\n private ShowMakeBackLinkPopup() {\r\n const popup = new MakeBackLinkPopup(this._params);\r\n popup.On('CHANGES_SAVED', this, () => this.Trigger('CHANGES_SAVED'));\r\n popup.Show();\r\n }\r\n}\r\n","export const Intentions = {\r\n FillLookup: 'FillLookup',\r\n MakeBackLink: 'MakeBackLink'\r\n};","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\n\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\n\r\nimport 'pubsub';\r\nimport 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {FileDownloader} from 'Core/Components/FileDownloader/FileDownloader';\r\nimport {\r\n GridStore,\r\n IExportDataRequestModel,\r\n IGetGridDataRequestModel, IUnlinkMultipleRecordsRequestModel,\r\n IUnlinkRecordRequestModel\r\n} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {IGetGridViewListDto, ViewGridListStore} from 'Core/Controls/Grid/Stores/ViewGridListStore';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {QueryBuilder} from '../../../QueryBuilder/QueryBuilder';\r\nimport {QueryBuilder as QueryBuilderControl} from 'Core/Controls/QueryBuilder/QueryBuilder';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {BaseGrid} from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {CONTROL_TYPES, RenderModes, TABLE_TYPES} from 'Core/Constant';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Toolbar} from 'Core/Controls/Grid/Toolbar/Toolbar';\r\nimport {EVENTS as TOOLBAR_EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {INewLinkedRecord, RecordLinker} from 'Core/Components/RecordLinker/RecordLinker';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel';\r\nimport {QueryResultPage} from 'Core/Controls/Grid/BaseGrid/QueryResultPage/QueryResultPage';\r\nimport {ILinkRecordsRequestModel, LinkRecordsStore} from 'Core/Controls/Grid/Stores/LinkRecordsStore';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {EVENTS as BASE_GRID_EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\nimport {EntityTypes} from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport {EditLinkDataModel, UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\nimport {InsertOrUpdateRecordStore} from 'Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {EVENTS as BASKET_EVENTS} from 'Core/Controls/Basket/Events';\r\n\r\nimport GridConfig from 'Core/Controls/Grid/Configs/grid-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Grid/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Grid/Templates/HelpView.html';\r\nimport DesignTemplate from 'Core/Controls/Grid/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/Grid/Templates/ToolBar.html';\r\n\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {ILoadScreenRelationModel, LinkEditor} from 'Core/Screens/Common/LinkEditor/LinkEditor';\r\nimport {EVENTS as CONSULT_SCREEN_EVENTS} from 'Core/Screens/ConsultScreen/Events';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {GridRow} from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {ConditionBuilder} from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\nimport {DeleteQueryStore} from 'QueryBuilder/Stores/DeleteQueryStore';\r\nimport {LockQueryStore} from 'QueryBuilder/Stores/LockQueryStore';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {IParams as BackLinkingParams} from \"Core/Components/BackLinking/IParams\";\r\nimport {BackLinking} from \"Core/Components/BackLinking/BackLinking\";\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {BaseScreen, IScreenVariable} from 'Core/Screens/BaseScreen';\r\nimport {Basket} from 'Core/Controls/Basket/Basket';\r\nimport {GridRowDataModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {ActionSubjectRecordModel} from 'Core/ScreenManager/Models/ActionSubjectRecordModel';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {TRIGGER_ACTIONS} from 'Core/Constants/TriggerActions';\r\nimport {TriggerModel} from 'Core/Controls/BaseControl/Models/TriggerModel';\r\nimport {GridCellValueModel, RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {LinkList} from \"../LinkList/LinkList\";\r\nimport {BarcodeScanner} from \"Core/Components/BarcodeScanner/BarcodeScanner\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {EVENTS as QUERY_RESULT_GRID_EVENTS} from \"./BaseGrid/QueryResultPage/Events\";\r\nimport {GridRowModel} from \"./Models/GridDataModel/GridRowModel\";\r\nimport {PivotDetailsDropdown} from \"./BaseGrid/PivotDetaillsDropdown/PivotDetailsDropdown\";\r\nimport {GenericButton} from \"../GenericButton/GenericButton\";\r\nimport {ButtonCopy} from '../ButtonCopy/ButtonCopy';\r\nimport {DEFAULT_RECORDS_PER_PAGE, PROPERTIES, SECURITY_FILTERS} from \"./Constants\";\r\nimport {QueryEntityJoinModel} from './Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport {TableStore} from \"Core/Common/Stores/TableStore\";\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {States} from './BaseGrid/GridRow/States';\r\nimport {UserManager, UserRoles, UserTypes} from '../../../User/UserManager';\r\nimport {ProfileSelectorScreen} from \"Core/Screens/ProfileSelectorScreen/ProfileSelectorScreen\";\r\nimport { TriggerManager } from 'Core/Components/Triggers/TriggerManager';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { gridFacade } from 'Core/Components/CustomFunctions/Facades/GridFacade';\r\nimport { EVENTS as SCREEN_EVENTS } from 'Core/Screens/Events';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport {FastFilterSaveModel, QueryColumnModel, RelationshipTypes} from './BaseGrid/Index';\r\nimport {CheckedUserAndGroup} from \"Core/Controls/SelectUser/SelectUser\";\r\nimport { RecordStore } from '../../Common/Stores/RecordStore';\r\n\r\nko.templates['Core/Controls/Grid/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Grid/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Grid/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Grid/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Grid/Templates/ToolBar'] = ToolBarTemplate;\r\n\r\nexport interface ILinkForEditScreenOptions{\r\n recordIds: number[],\r\n updateLinkRecord?: boolean,\r\n isLinkParent?: boolean\r\n}\r\n\r\nexport class Grid extends BaseControl {\r\n private _gridEntityId: number;\r\n private _subjectEntityName: string;\r\n private _subjectEntityId: number;\r\n private _subjectRecordId: number;\r\n private _subjectRecordSpecsModel: RecordSpecsModel;\r\n private _dataModel: GridDataModel;\r\n private _tableView: KnockoutObservable<ViewGridModel>;\r\n private _viewGridList: KnockoutObservableArray<ViewGridModel>;\r\n private _queryBuilder: KnockoutObservable<QueryBuilder>;\r\n private _enableLink: KnockoutObservable<boolean>;\r\n private _enableUnlinkMultiple: KnockoutObservable<boolean>;\r\n private _enableLinkParent: KnockoutObservable<boolean>;\r\n private _hasOneParent: KnockoutObservable<boolean>;\r\n private _enableAddAndLink: KnockoutObservable<boolean>;\r\n private _enableAddFromQuery: KnockoutObservable<boolean>;\r\n private _enableScanAndLink: KnockoutObservable<boolean>;\r\n private _showTableViewElement: KnockoutObservable<boolean>;\r\n private _enableNewRecord: KnockoutObservable<boolean>;\r\n private _enableBasket: KnockoutObservable<boolean>;\r\n private _showSearchInput: KnockoutObservable<boolean>;\r\n private _userVarsManager: UserVarsManager;\r\n private _viewMode: ViewModes;\r\n private _baseGrid: BaseGrid;\r\n private _sorting: Array<SortModel>;\r\n private _searchPhrase: KnockoutObservable<string>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _hideLifeStatusToggle: KnockoutObservable<boolean>;\r\n private _hideUnlink: KnockoutObservable<boolean>;\r\n private _hideEdit: KnockoutObservable<boolean>;\r\n private _enableTableViewLookup: boolean;\r\n private _enableFunctionLookup: boolean;\r\n private _toolbar: Toolbar;\r\n private _loadInProgress: KnockoutObservable<boolean>;\r\n private _designFields: KnockoutObservableArray<AttachedFieldModel>;\r\n private _isRestoreScrollPosition: boolean;\r\n private _queryExpression: QueryExpressionModel;\r\n private _tableViewId: number;\r\n private _addingRecordAllowed: KnockoutObservable<boolean>;\r\n private _linkingRecordAllowed: KnockoutObservable<boolean>;\r\n private _exportDataAllowed: KnockoutObservable<boolean>;\r\n private _scanAndLinkAllowed: KnockoutObservable<boolean>;\r\n private _conditions: QueryConditionGroupModel;\r\n private _isLinkEditorEnabled: boolean;\r\n private _filterByOwners: boolean;\r\n private _backLinkingButtons: KnockoutObservableArray<any>;\r\n private _selectedUsers: number[];\r\n private _showPlanned: boolean;\r\n private _selectedTags: any;\r\n private _applyFilter: boolean;\r\n private _maxRowHeight: KnockoutObservable<string>;\r\n private _basket: Basket;\r\n private _showTogglePrioritiesButton: boolean;\r\n private _isPrioritiesDisabled: boolean;\r\n private _isTableViewUpdating: KnockoutObservable<boolean>;\r\n private _showBulkEditButton: KnockoutObservable<boolean>;\r\n private _disabledShowAllColumnsBtn: boolean;\r\n private _disableBulkEditButton: KnockoutObservable<boolean>;\r\n private _showResetFilterButton: KnockoutObservable<boolean>;\r\n private _showRetiredRecords: boolean;\r\n private _inlineControls: Array<IControl>;\r\n private _tableViewUpdatingSubscription: KnockoutSubscription;\r\n private _searchScreen: SearchScreen;\r\n private _toolbarBlock: HTMLElement;\r\n private _hasData: boolean;\r\n private _rowColorEnabled: KnockoutObservable<boolean>;\r\n private _hasLinkingCondition: boolean = false;\r\n private _prevPageNumber = 1;\r\n private _disabledCopyButton: KnockoutObservable<boolean>;\r\n private _notifications = NOTIFICATIONS;\r\n private _isDirectionCorrect: boolean;\r\n private _refreshScreenAfterManipulations: boolean;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _isFastFilter: boolean\r\n private _isEnableSelectRecord: KnockoutObservable<boolean>;\r\n\r\n constructor(param: IControlParam) {\r\n super(param, GridConfig);\r\n\r\n this._isEnableSelectRecord = ko.observable(false);\r\n this._isTableViewUpdating = ko.observable(false);\r\n this._designFields = ko.observableArray(this._model().Fields); \r\n this._model.subscribe(_ => this._designFields(this._model().Fields));\r\n this._designFields.subscribe(fields => _.each(fields, (field, index) => field.Sort = index * 10));\r\n this._tableView = ko.observable(null);\r\n this._addingRecordAllowed = ko.observable(false);\r\n this._linkingRecordAllowed = ko.observable(false);\r\n this._exportDataAllowed = ko.observable(false);\r\n this._scanAndLinkAllowed = ko.observable(false);\r\n this._isEditable = ko.observable(true);\r\n this._hideLifeStatusToggle = ko.observable(false);\r\n this._hideUnlink = ko.observable(false);\r\n this._hideEdit = ko.observable(false);\r\n this._enableLink = ko.observable(false);\r\n this._enableUnlinkMultiple = ko.observable(false);\r\n this._enableLinkParent = ko.observable(false);\r\n this._hasOneParent = ko.observable(false);\r\n this._enableAddAndLink = ko.observable(false);\r\n this._enableAddFromQuery = ko.observable(false);\r\n this._enableScanAndLink = ko.observable(false);\r\n this._showTableViewElement = ko.observable(false);\r\n this._showSearchInput = ko.observable(true);\r\n this._enableNewRecord = ko.observable(false);\r\n this._enableBasket = ko.observable(false);\r\n this._loadInProgress = ko.observable(false);\r\n this._maxRowHeight = ko.observable(null);\r\n this._showBulkEditButton = ko.observable(false);\r\n this._disabledShowAllColumnsBtn = false;\r\n this._disableBulkEditButton = ko.observable(false);\r\n this._showResetFilterButton = ko.observable(false);\r\n this._filterByOwners = false;\r\n this._backLinkingButtons = ko.observableArray([]);\r\n this._applyFilter = true;\r\n this._showTogglePrioritiesButton = this.ScreenType !== ScreenTypes[ScreenTypes.Portlet];\r\n this._isPrioritiesDisabled = !this._showTogglePrioritiesButton;\r\n this._showRetiredRecords = false;\r\n this._inlineControls = [];\r\n this._userVarsManager = UserVarsManager.Instance;\r\n this._hasData = false;\r\n this._rowColorEnabled = ko.observable(false);\r\n this._disabledCopyButton = ko.observable(true);\r\n this._refreshScreenAfterManipulations = this.IsConsultScreen;\r\n this._isFastFilter = this.GeneralProperties.GetPropertyValue(PROPERTIES.FAST_FILTER);\r\n\r\n this.AddEvent('START_DATA_LOAD');\r\n this.AddEvent('DATA_LOADED');\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar) {\r\n this._viewMode = this.GetTableView();\r\n this._searchPhrase = ko.observable('');\r\n\r\n this._enableTableViewLookup = this.ScreenType !== ScreenTypes[ScreenTypes.QueryScreen] && this._model().EntityTypeName !== EntityTypes[EntityTypes.Sub];\r\n this._enableFunctionLookup = this.ScreenType !== ScreenTypes[ScreenTypes.QueryScreen] && this._model().EntityTypeName !== EntityTypes[EntityTypes.Sub];\r\n\r\n this._selectedUsers = [];\r\n\r\n this._dataModel = new GridDataModel();\r\n this._queryBuilder = ko.observable(null);\r\n this._viewGridList = ko.observableArray([]);\r\n\r\n this._isEnableSelectRecord(_.any(this.GetToolbarControls(), (item) => item instanceof GenericButton));\r\n\r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this.GetGuid()){\r\n FunctionBuilder.Execute(data.Code, data.Params, gridFacade(this));\r\n }\r\n });\r\n\r\n this._baseGrid = new BaseGrid({\r\n isEnableSelectRecord: this._isEnableSelectRecord,\r\n isEditable: this._isEditable,\r\n hideLifeStatusToggle: this._hideLifeStatusToggle,\r\n hideUnlink: this._hideUnlink,\r\n hideEdit: this._hideEdit,\r\n enableBasket: this._enableBasket,\r\n backLinkingButtons: this._backLinkingButtons,\r\n screenType: this.ScreenType,\r\n maxRowHeight: this.MaxRowHeight(),\r\n isPrioritiesDisabled: this.GetGridPriorityToggle(),\r\n form: this._form,\r\n ToggleAllShownColumns: this.ToggleAllShownColumns.bind(this),\r\n properties: this.GeneralProperties\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UPDATE_GRID, this, eventArgs => {\r\n if (eventArgs.data.updateFromFastFilters) {\r\n if (this.Paginator.PageNumber != 1) {\r\n this.Paginator.Reset();\r\n } else {\r\n this.LoadData(true);\r\n }\r\n }\r\n });\r\n\r\n const defaultColumns = [];\r\n\r\n _.each(this._model().Fields, (item: any) => {\r\n const columnModel = new GridColumnModel();\r\n\r\n columnModel.Title = `${item.Name}`;\r\n defaultColumns.push(columnModel);\r\n });\r\n\r\n this._baseGrid.AddColumns(defaultColumns);\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.LINK_RECORD, this, (eventArgs) => {\r\n this.LinkSubGridRecord(eventArgs.data.MainEntityId,eventArgs.data.MainRecordId, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, (eventArgs) => {\r\n this.LinkSubGridParentRecord(eventArgs.data.Row, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, async (eventArgs) => {\r\n let recordSpecs = await RecordStore.GetRecordSpecs({ TableId: eventArgs.data.MainEntityId, RecordId: eventArgs.data.MainRecordId });\r\n this.OnAddAndSubGridLinkRecord(eventArgs.data.MainEntityId, eventArgs.data.MainRecordId, recordSpecs.TypeId, recordSpecs.LifestatusId, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, (eventArgs) => {\r\n this.ScanAndLinkSubGridRecord(eventArgs.data.MainEntityId, eventArgs.data.MainRecordId, eventArgs.data.RelatedEntityId);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.SORT, this, (eventArgs: any) => {\r\n this.SortData(eventArgs.data.SortColumns);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(eventArgs.data.EntityId, eventArgs.data.RecordId, eventArgs.data.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, this.GetForm().GetScreen().GetEntityId().toString())\r\n\r\n this.GoToRecordScreen(eventArgs.data);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n const updateResult: OperationResultModel = eventArgs.data.UpdateResult;\r\n let notifier: Notifier;\r\n\r\n if (updateResult.IsSuccessfull) {\r\n notifier = new Notifier(null);\r\n notifier.Success(NOTIFICATIONS.DATA_SAVED);\r\n this.LoadData(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId, eventArgs.data.UpdateRow);\r\n } else {\r\n notifier = new Notifier(null);\r\n const message = eventArgs.data.UpdateResult.ErrorMessage? eventArgs.data.UpdateResult.ErrorMessage : NOTIFICATIONS.DATA_IS_NOT_SAVED;\r\n notifier.Failed(message);\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.REFRESH, this, (eventArgs) => {\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n return;\r\n }\r\n\r\n if (this._baseGrid.RowsCount == 0) {\r\n this._toolbar.Paginator().Reset();\r\n } else {\r\n this.LoadData(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId, eventArgs.data.UpdateRow);\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.NO_CHANGES, this, (eventArgs: any) => {\r\n const notifier = new Notifier(null);\r\n\r\n notifier.Success(NOTIFICATIONS.NO_PENDING_CHANGES);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.EDIT_LINK, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n let mainEntityId: number = eventArgs.data.mainEntityId;\r\n let mainRecordId: number = eventArgs.data.mainRecordId;\r\n const KSeq = gridRow.KSeq;\r\n\r\n if(gridRow && mainEntityId && mainRecordId){\r\n this.UpdateSubGridLinkRecord(mainEntityId, mainRecordId, gridRow);\r\n }\r\n else if (this._queryExpression.IsCrossTable) {\r\n this.ShowCrossTableDetail(gridRow).then((selectedRow) => {\r\n this.UpdateLinkRecord(gridRow.EntityId, gridRow.RecordId, gridRow.RecordTypeId, selectedRow.KSeq, gridRow.RelationshipType);\r\n });\r\n } else {\r\n this.UpdateLinkRecord(gridRow.EntityId, gridRow.RecordId, gridRow.RecordTypeId, KSeq, gridRow.RelationshipType);\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n let grid: BaseGrid = eventArgs.data.grid;\r\n if (gridRow && grid) {\r\n this.UpdateLinkRecord(\r\n grid.SubjectEntityId,\r\n grid.SubjectRecordId,\r\n 0,\r\n gridRow.KSeq,\r\n 1,\r\n gridRow.EntityId,\r\n gridRow.RecordId\r\n )\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.LINK_NEXT_RELATION, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n const RecordKeys = eventArgs.data.field.RecordKeys as Array<RecordKey>;\r\n if (RecordKeys.length < 3) {\r\n return;\r\n }\r\n\r\n GridStore.LinkWithNextRelationType(RecordKeys)\r\n .then((data) => {\r\n const newKSeq = data.Sequence;\r\n\r\n var updateLinkRecordPromise = this.UpdateLinkRecord(\r\n data.MainEntityId,\r\n data.MainRecordId,\r\n data.MainRecordTypeId,\r\n data.Sequence,\r\n gridRow.RelationshipType,\r\n data.RelatedEntityId,\r\n data.RelatedRecordId,\r\n 0,\r\n true\r\n );\r\n\r\n if (updateLinkRecordPromise) {\r\n updateLinkRecordPromise.then(async () => {\r\n\r\n var gridCellValue = eventArgs.data.field as GridCellValueModel;\r\n\r\n var kSeqMetadata = _.find(gridCellValue.EntityMetadata.Fields, (item) => {\r\n return item.Name === 'K_SEQ'\r\n });\r\n\r\n var oldKSeqValue = _.find(RecordKeys, (item) => {\r\n return item.FieldId === kSeqMetadata.Id\r\n });\r\n\r\n await this.ExecuteClusteredPivotFinishedTrigger(data.MainEntityId, data.MainRecordId, data.RelatedEntityId, data.RelatedRecordId, newKSeq, oldKSeqValue.RecordId);\r\n });\r\n }\r\n\r\n this.LoadData(false);\r\n })\r\n .fail((error) => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.ADD_TO_BASKET, this, (eventArgs) => {\r\n if (this._basket) {\r\n const basketControl = this._basket as Basket;\r\n const gridRow = eventArgs.data.Row as GridRow;\r\n\r\n basketControl.AddRecordToBasket(gridRow.RecordId, this._gridEntityId).then((result) => {\r\n gridRow.RecordInBasket = true;\r\n\r\n const relation: ILoadScreenRelationModel = {\r\n MainEntityId: basketControl.Model.EntityId,\r\n MainRecordId: basketControl.SelectedRecord().RecordId,\r\n MainRecordTypeId: basketControl.SelectedRecord().TypeId,\r\n RelatedEntityId: this._gridEntityId,\r\n RelatedRecordId: gridRow.RecordId,\r\n RelatedRecordTypeId: gridRow.RecordTypeId,\r\n KSeq: result\r\n };\r\n\r\n this.UpdateLinkRecordGeneral(relation);\r\n });\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.REMOVE_FROM_BASKET, this, (eventArgs) => {\r\n if (this._basket) {\r\n const basketControl = this._basket as Basket;\r\n const gridRow = eventArgs.data.Row as GridRow;\r\n\r\n basketControl.RemoveRecordFromBasket(gridRow.RecordId, this._gridEntityId).then(() => {\r\n gridRow.RecordInBasket = false;\r\n });\r\n }\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_DELETED, this, (eventArgs) => {\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(this._baseGrid.Model));\r\n this._toolbar.SetEnableEditAllButton(this.IsVisibleEditAllButton(this._baseGrid.Model));\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_SAVED, this, (eventArgs) => {\r\n this._toolbar.EditAll = true;\r\n this._disabledCopyButton(false);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_EDITED, this, (eventArgs) => {\r\n this._toolbar.SetEnableEditAllButton(!this.IsListScreen && this.IsEditAll);\r\n this._toolbar.EditAll = false;\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UNDO_EVERY_RECORD, this, (eventArgs) => {\r\n this._toolbar.SetEnableEditAllButton(!this.IsListScreen && this.IsEditAll);\r\n this._toolbar.EditAll = true;\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UPDATE_SET_ENABLE_ADD_BUTTON, this, (eventArgs) => {\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(this._baseGrid.Model));\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.LOAD_SUB_GRID, this, (eventArgs) => {\r\n this.LoadData(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.BACK_LINKING_POPUP_REQUESTED, this, eventArgs => {\r\n const params: BackLinkingParams = {\r\n Header: eventArgs.data.ButtonName,\r\n SubTableView: eventArgs.data.SubTableView,\r\n Intention: eventArgs.data.Intention,\r\n LeftTableId: eventArgs.data.LeftTableId,\r\n RightTableId: eventArgs.data.RightTableId,\r\n LeftRecordId: eventArgs.data.LeftRecordId,\r\n RightRecordId: eventArgs.data.RightRecordId,\r\n Sequence: eventArgs.data.Sequence\r\n };\r\n\r\n const backLinking = new BackLinking(params);\r\n backLinking.On('CHANGES_SAVED', this, () => this.LoadData());\r\n backLinking.ShowPopup();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.CHANGE_VISIBLE_GROUP, this, (eventArgs: any) => {\r\n let gridRow: GridRow = eventArgs.data.gridRow;\r\n });\r\n\r\n this._basket = _.find(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.Basket;\r\n }) as Basket;\r\n\r\n if (this._basket && !(this._basket).IsDisabledByCondition) {\r\n this._enableBasket(true);\r\n\r\n this._basket.On(BASKET_EVENTS.BASKET_SELECTED, this, (eventArgs) => {\r\n this._baseGrid.MarkRecodsInBasket(eventArgs.data.Records);\r\n });\r\n }\r\n\r\n const type = this.GetForm() && this.GetForm().GetScreen().GetType();\r\n this._toolbar = new Toolbar(\r\n this._enableTableViewLookup,\r\n this._enableFunctionLookup,\r\n this._enableLink,\r\n this._enableUnlinkMultiple,\r\n this._enableLinkParent,\r\n this._hasOneParent,\r\n this._enableAddAndLink,\r\n this._enableScanAndLink,\r\n this._enableAddFromQuery,\r\n this._showSearchInput,\r\n this._isEditable,\r\n this._enableNewRecord,\r\n this._exportDataAllowed,\r\n this._showTableViewElement,\r\n type,\r\n false,\r\n this._showTogglePrioritiesButton,\r\n this._showBulkEditButton,\r\n this._disableBulkEditButton,\r\n this._showResetFilterButton,\r\n this._disabledShowAllColumnsBtn,\r\n this.ShowRetired,\r\n this.GetToolbarControls()\r\n );\r\n\r\n if (this._renderMode() !== RenderModes.HelpView) {\r\n this.ApplyProperties();\r\n this.InitShowAllColumns();\r\n }\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.NEW_TABLE_VIEW, this, (eventArgs: any) => this.NewTableView());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.BULK_EDIT, this, (eventArgs: any) => this.BulkEdit());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.NEW_RECORD, this, (eventArgs: any) => this.CreateRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.TOGGLE_RETIRED, this, (eventArgs: any) => {\r\n this._showRetiredRecords = eventArgs.data.State;\r\n this.LoadData();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.EDIT_TABLE_VIEW, this, (eventArgs: any) => {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this.EditTableView();\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.COPY_TABLE_VIEW, this, (eventArgs: any) => {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this.CopyTableView();\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.DELETE_TABLE_VIEW, this, (eventArgs: any) => {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this.DeleteTableView();\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LOCK_TABLE_VIEW, this, eventArgs => {\r\n this.LockTableView();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.UNLOCK_TABLE_VIEW, this, eventArgs => {\r\n this.UnlockTableView();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_RECORD, this, () => this.LinkRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.UNLINK_MULTIPLE_RECORDS, this, () => {\r\n this._baseGrid.GridUnlinkMultipleRecords();\r\n this._isMultipleUnlinkModeActive(true);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CONFIRM_MULTIPLE_UNLINK, this, () => {\r\n this.UnlinkMultipleRecords();\r\n this._baseGrid.GridConfirmMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.CANCEL_MULTIPLE_UNLINK, this, () => {\r\n this._baseGrid.GridCancelMultipleUnlinking();\r\n this._isMultipleUnlinkModeActive(false);\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.LINK_PARENT_RECORD, this, () => this.LinkParentRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.COPY_LATEST_RECORD, this, () => {\r\n if (this._disabledCopyButton()) {\r\n return;\r\n }\r\n\r\n const isEntityGrid = this.GetGridSubject().Entity.Metadata.Type === TABLE_TYPES.Entity;\r\n const isSubGrid = this.GetGridSubject().Entity.Metadata.Type === TABLE_TYPES.Sub;\r\n\r\n if (isEntityGrid) {\r\n this.CopyLatestLink();\r\n return;\r\n }\r\n\r\n if (isSubGrid) {\r\n this.CopyLatestSubRecord();\r\n return;\r\n }\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.ADD_AND_LINK_RECORD, this, (eventArgs: any) => this.OnAddAndLinkRecord());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.SCAN_AND_LINK_RECORD, this, eventArgs => {\r\n this.ScanAndLinkRecord();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.ADD_QUERY, this, (eventArgs: any) => this.AddQuery());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.SEARCH_BY_PHRASE, this, (eventArgs: any) => {\r\n this._searchPhrase(eventArgs.data.SearchPhrase);\r\n this.EnterKey();\r\n });\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.EXPORT_DATA, this, eventArgs => this.ExportData(eventArgs.data.Destination));\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.TOGGLE_PRIORITIES, this, (eventArgs: any) => this.TogglePriorities(eventArgs.data.state));\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.RESET_FILTER, this, (eventArgs: any) => this.ResetFilter());\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.EDIT_ALL, this, () => this.EditAll());\r\n this._toolbar.On(TOOLBAR_EVENTS.SAVE_ALL, this, () => this.SaveAll());\r\n\r\n this.Paginator.On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs: any) => {\r\n if (eventArgs.data.pageNumber === this._prevPageNumber) {\r\n return;\r\n }\r\n\r\n if (this._baseGrid.GetEditRows().length > 0 || this._baseGrid.GetNewAndLinkRows().length > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Warning\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.LoadData(true);\r\n\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n this.Paginator.PageNumber = this._prevPageNumber;\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this.LoadData(true);\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n }\r\n });\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this.GetForm().GetScreen().On(CONSULT_SCREEN_EVENTS.REFRESH_GRID, this, (eventArgs) => {\r\n if (eventArgs.data) {\r\n let entityId = eventArgs.data.EntityId;\r\n if (entityId === this._gridEntityId) {\r\n this.LoadData(false);\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.Init();\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.HelpView && this._filterByOwners) {\r\n this.GetForm().GetScreen().On('UsersSelectionChanged', this, eventArgs => {\r\n const groupIds = _.filter(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.GroupId), groupId => groupId !== null) as number[];\r\n const userIds = _.flatten(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.UserIds));\r\n const combinedIds = groupIds.concat(userIds);\r\n\r\n this._selectedUsers = _.uniq(combinedIds);\r\n this._showPlanned = eventArgs.data.ShowPlanned;\r\n if (this._isRendered()) {\r\n this.LoadData(false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n get ShowRetired(): boolean {\r\n if (this._renderMode() === RenderModes.HelpView) {\r\n return false;\r\n } else {\r\n return this.IsListScreen\r\n || this._form.GetScreen().IsQueryScreen\r\n || this._form.GetScreen().IsSpecialScreen\r\n || this._form.GetScreen().IsDashboard;\r\n }\r\n }\r\n\r\n get IsConsultScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsConsultScreen;\r\n }\r\n\r\n get IsListScreen(): boolean {\r\n return this._form && this._form.GetScreen().IsListScreen;\r\n }\r\n\r\n get CrossTableValueColumn(): QueryColumnModel{\r\n return _.find(Util.GetAllQueryColumns(this._queryExpression), col=>col.IsCrossValue);\r\n }\r\n\r\n ShowCrossTableDetail(gridRow: GridRow): P.Promise<GridRowModel> {\r\n let deferredResult = P.defer<GridRowModel>();\r\n BlockUI.Block();\r\n GridStore.GetCrossTableDetail({\r\n SubjectEntityId: this._form.GetScreen().GetEntityId(),\r\n SubjectRecordId: this._form.GetScreen().GetRecordId(),\r\n RelatedEntityId: gridRow.Model.EntityId,\r\n RelatedRecordId: gridRow.Model.RecordId,\r\n KSeqs: gridRow.Model.KSeqs,\r\n DisplayFields: this.CrossTableValueColumn?.DisplayFields\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n let pivotDetailsDropDown = new PivotDetailsDropdown();\r\n\r\n pivotDetailsDropDown.On(BASE_GRID_EVENTS.REFRESH, this, () => {\r\n pivotDetailsDropDown.Close();\r\n this.LoadData();\r\n });\r\n\r\n pivotDetailsDropDown.On(BASE_GRID_EVENTS.EDIT_CLUSTERED_LINK, this, (eventArgs) => {\r\n let gridRow = eventArgs.data.gridRow;\r\n this.UpdateLinkRecord(gridRow.EntityId, gridRow.RecordId, gridRow.RecordTypeId, gridRow.KSeq, gridRow.RelationshipType);\r\n });\r\n\r\n pivotDetailsDropDown.On(QUERY_RESULT_GRID_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n if (eventArgs.data.SelectedRecord.Model) {\r\n let row = eventArgs.data.SelectedRecord.Model as GridRowModel;\r\n pivotDetailsDropDown.Close();\r\n deferredResult.resolve(row);\r\n }\r\n });\r\n\r\n pivotDetailsDropDown.SetData(result);\r\n\r\n if (pivotDetailsDropDown.Rows.length == 1) {\r\n deferredResult.resolve(pivotDetailsDropDown.Rows[0].Model);\r\n return;\r\n }\r\n\r\n pivotDetailsDropDown.Show(gridRow.El);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n GetGridPriorityToggle(): boolean {\r\n if (MobileChecker.IsMobile() || this._renderMode() === RenderModes.HelpView) {\r\n return this._isPrioritiesDisabled;\r\n }\r\n const subjectEntityId = this.GetForm().GetScreen().GetEntityId();\r\n const gridSubjectEntityId = this._viewMode === ViewModes.ListView ? 0 : this._model().EntityId;\r\n return this._userVarsManager.GetGridPriority(subjectEntityId, gridSubjectEntityId, this._isPrioritiesDisabled);\r\n }\r\n\r\n get OnClusteredPivotFinishedTrigger(){\r\n return _.find(this._model().Triggers, (trigger: TriggerModel) => {\r\n return trigger.Action === TRIGGER_ACTIONS.ON_CLUSTERED_PIVOT_FINISHED\r\n });\r\n }\r\n\r\n async ExecuteClusteredPivotFinishedTrigger(\r\n mainEntityId: number,\r\n mainRecordId: number,\r\n relatedEntityId: number,\r\n relatedRecordId: number,\r\n newKSeq: number,\r\n oldKSeq: number\r\n ) {\r\n if (this.OnClusteredPivotFinishedTrigger) {\r\n this.BlockUI();\r\n await TriggerManager.OnClusteredPivotFinished({\r\n MainEntityId: mainEntityId,\r\n RelatedEntityId: relatedEntityId,\r\n MainRecordId: mainRecordId,\r\n RelatedRecordId: relatedRecordId,\r\n NewKSeq: newKSeq,\r\n OldKSeq: oldKSeq,\r\n ControlId: this.GetControlId()\r\n }, this.GetGuid(), this.OnClusteredPivotFinishedTrigger.Id);\r\n this.UnBlockUI();\r\n }\r\n }\r\n\r\n get QueryExpression(): QueryExpressionModel {\r\n return this._queryExpression;\r\n }\r\n\r\n ToggleAllShownColumns(canHide: boolean, canShow: boolean) {\r\n this._toolbar && this._toolbar.ToggleAllShownColums.call(this._toolbar, canHide, canShow);\r\n }\r\n\r\n UpdateLinkRecordGeneral(\r\n relation: ILoadScreenRelationModel,\r\n gridRow: GridRow = null,\r\n isNew: boolean = false,\r\n isNewCreated: boolean = false,\r\n isNewParent: boolean = false\r\n ): Promise<any> {\r\n let data = null;\r\n return new Promise(async (resolve, reject) => {\r\n const linkEditor = (await import('Core/Screens/Common/LinkEditor/LinkEditor')).LinkEditor;\r\n\r\n const requestedFromEditScreen = this._form && this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.EditScreen];\r\n linkEditor.LoadScreen(relation, isNew, data, false, null, requestedFromEditScreen)\r\n .then(screen => {\r\n if (screen !== null) {\r\n const linkEditor = screen as LinkEditor;\r\n\r\n screen.One('MODAL_CLOSE', this, () => {\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n }\r\n });\r\n\r\n linkEditor.One('CANCEL', this, () => {\r\n if (this._refreshScreenAfterManipulations) {\r\n if (isNewCreated) {\r\n this._baseGrid.UnlinkRecordByRelation(relation, isNewParent);\r\n }\r\n }\r\n });\r\n\r\n linkEditor.On('SAVE_DATA', this, eventArgs => {\r\n const dataModel = new DataModel();\r\n\r\n dataModel.EntityId = relation.MainEntityId;\r\n dataModel.RecordId = relation.MainRecordId;\r\n\r\n const updateDataModel = new UpdateDataModel();\r\n\r\n let editLinkData: EditLinkDataModel = eventArgs.data;\r\n updateDataModel.LinkEditorChanges.push(editLinkData);\r\n dataModel.LinklistChanges = Serialize(updateDataModel);\r\n\r\n if (!gridRow || this._refreshScreenAfterManipulations) {\r\n BlockUI.Block();\r\n InsertOrUpdateRecordStore.UpdateData(dataModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail((error) => {\r\n new Notifier($(this._el)).Failed(error.message);\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier().Success(NOTIFICATIONS.RECORD_UPDATED);\r\n screen.Off('MODAL_CLOSE');\r\n linkEditor.Close();\r\n\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n } else {\r\n this.LoadData(false);\r\n }\r\n resolve(null);\r\n } else {\r\n linkEditor.GetNotifier().Failed(result.ErrorMessage);\r\n reject({message: result.ErrorMessage});\r\n }\r\n });\r\n } else {\r\n gridRow.LinkEditorData = updateDataModel;\r\n gridRow.SaveLinkEditorData(linkEditor.GetAllControls());\r\n linkEditor.Close();\r\n resolve(null);\r\n }\r\n });\r\n } else if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n resolve(null);\r\n }\r\n }).fail(err => {\r\n new Notifier($(this._el)).Warning(err.message);\r\n reject(err);\r\n });\r\n });\r\n }\r\n\r\n UpdateSubGridLinkRecord(parentEntityId: number, parentRecordId: number, contextRow: GridRow): Promise<any> {\r\n const relation: ILoadScreenRelationModel =\r\n {\r\n MainEntityId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n RelatedEntityId: contextRow.EntityId,\r\n RelatedRecordId: contextRow.RecordId,\r\n RelatedRecordTypeId: contextRow.RecordTypeId,\r\n KSeq: contextRow.KSeq,\r\n }\r\n\r\n return this.UpdateLinkRecordGeneral(relation, null, false);\r\n }\r\n\r\n UpdateLinkRecord(entityId: number,\r\n recordId: number,\r\n recordTypeId: number,\r\n kSeq: number,\r\n familyType: number = 0,\r\n relatedEntityId?: number,\r\n relatedRecordId?: number,\r\n relatedRecordTypeId?: number,\r\n isNewCreated?: boolean,\r\n isNewParent?: boolean): Promise<any> {\r\n\r\n if (entityId === 0 || recordId === 0) return;\r\n\r\n const relation: ILoadScreenRelationModel = familyType != 1\r\n ? {\r\n MainEntityId: relatedEntityId || this._form.GetScreen().GetEntityId(),\r\n MainRecordId: relatedRecordId || this._form.GetScreen().GetRecordId(),\r\n MainRecordTypeId: relatedRecordTypeId || this._form.GetScreen().GetTableTypeId(),\r\n\r\n RelatedEntityId: entityId,\r\n RelatedRecordId: recordId,\r\n RelatedRecordTypeId: recordTypeId,\r\n\r\n KSeq: kSeq\r\n }\r\n : {\r\n MainEntityId: entityId,\r\n MainRecordId: recordId,\r\n MainRecordTypeId: recordTypeId,\r\n\r\n RelatedEntityId: relatedEntityId || this._form.GetScreen().GetEntityId(),\r\n RelatedRecordId: relatedRecordId || this._form.GetScreen().GetRecordId(),\r\n RelatedRecordTypeId: relatedRecordTypeId || this._form.GetScreen().GetTableTypeId(),\r\n KSeq: kSeq\r\n };\r\n\r\n return this.UpdateLinkRecordGeneral(relation, null, false, isNewCreated, isNewParent);\r\n }\r\n\r\n CreateRecord() {\r\n this._baseGrid.SelectType();\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(this._baseGrid.Model));\r\n this._toolbar.SetEnableEditAllButton(this.IsEditAll);\r\n this._toolbar.EditAll = false;\r\n }\r\n\r\n GetTableView(): ViewModes {\r\n if (this._renderMode() === RenderModes.HelpView) {\r\n return ViewModes.TableView;\r\n }\r\n switch (this.GetForm().GetScreen().GetType()) {\r\n case ScreenTypes[ScreenTypes.ProcessCardPage]:\r\n return ViewModes.TableView;\r\n case ScreenTypes[ScreenTypes.QueryScreen]:\r\n return ViewModes.Query;\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n return ViewModes.TableView;\r\n case ScreenTypes[ScreenTypes.EditScreen]:\r\n return ViewModes.TableView;\r\n default:\r\n return ViewModes.ListView;\r\n }\r\n }\r\n\r\n SortData(sorting: Array<SortModel>) {\r\n this._sorting = sorting;\r\n this.LoadData(true);\r\n }\r\n\r\n InitShowAllColumns() {\r\n const showAllColumnsValue = this.GeneralProperties.GetPropertyValue(PROPERTIES.SHOW_ALL_COLUMNS);\r\n if (showAllColumnsValue) {\r\n\r\n switch (showAllColumnsValue.Value) {\r\n case 'On':\r\n this.TogglePriorities(true);\r\n this._disabledShowAllColumnsBtn = false;\r\n break;\r\n case 'Off':\r\n this.TogglePriorities(false);\r\n this._disabledShowAllColumnsBtn = false;\r\n break;\r\n case 'Always on':\r\n this.TogglePriorities(true);\r\n this._disabledShowAllColumnsBtn = true;\r\n break;\r\n case 'Always off':\r\n this.TogglePriorities(false);\r\n this._disabledShowAllColumnsBtn = true;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n get HasLinkingCondition(): boolean {\r\n let linkingConditionProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.LINKING_CONDITION);\r\n\r\n if (linkingConditionProperty) {\r\n let linkingCondition = GenericDeserialize<QueryConditionGroupModel>(JSON.parse(linkingConditionProperty), QueryConditionGroupModel);\r\n if (linkingCondition.ConditionGroups.length > 0 || linkingCondition.Items.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n ApplyProperties() {\r\n\r\n const hideLifeStatusToggle = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_LIFESTATUS_TOGGLE);\r\n const hideUnlink = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_UNLINK);\r\n const hideEdit = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_EDIT);\r\n const condition = this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_CONDITION);\r\n const backLinking = this.GeneralProperties.GetPropertyValue(PROPERTIES.BACK_LINKING);\r\n\r\n this._hideLifeStatusToggle(hideLifeStatusToggle);\r\n this._hideUnlink(hideUnlink);\r\n this._hideEdit(hideEdit);\r\n\r\n if (condition) {\r\n const jsonObj = JSON.parse(condition);\r\n\r\n this._conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n }\r\n\r\n if (backLinking) {\r\n this._backLinkingButtons(backLinking);\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.HelpView) {\r\n const isSubjectScreen = this.IsConsultScreen || this.IsEditScreen || this.IsProcessCardPageScreen;\r\n\r\n if (!isSubjectScreen) {\r\n let securityFilter = this._form.GetScreen().IsQueryScreen ? SECURITY_FILTERS.RECORD_SECURITY : SECURITY_FILTERS.SHARING_SECURITY;\r\n const securityFilterPropValue = this.GeneralProperties.GetPropertyValue(PROPERTIES.SECURITY_FILTER);\r\n if (securityFilterPropValue) {\r\n securityFilter = securityFilterPropValue.Value;\r\n }\r\n this._filterByOwners = securityFilter === SECURITY_FILTERS.SHARING_SECURITY;\r\n }\r\n }\r\n\r\n if (this._baseGrid)\r\n this._baseGrid.IsFastFilterEnabled = this.GeneralProperties.GetPropertyValue(PROPERTIES.FAST_FILTER);\r\n\r\n this._isEditable(!this.GeneralProperties.GetPropertyValue(PROPERTIES.READONLY));\r\n\r\n this._showSearchInput(this.GeneralProperties.GetPropertyValue(PROPERTIES.SEARCH) && !this.HasCardScreen);\r\n\r\n if (this._form) {\r\n let isEnableNewRecord: boolean;\r\n const maxRowHeight: string = this.GeneralProperties.GetPropertyValue(PROPERTIES.MAX_ROW_HEIGHT);\r\n\r\n this._maxRowHeight(maxRowHeight);\r\n\r\n if (this.IsConsultScreen ||\r\n this.IsEditScreen ||\r\n this.IsProcessCardPageScreen\r\n ) {\r\n\r\n if (this._model().EntityTypeName === EntityTypes[EntityTypes.Sub]) {\r\n this._enableNewRecord(true);\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_LINK, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_LINK, false);\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_UNLINK_MULTIPLE, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_UNLINK_MULTIPLE, false);\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_ADD_AND_LINK, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_ADD_AND_LINK, false);\r\n this.GeneralProperties.SetPropertyValue(PROPERTIES.ENABLE_SCAN_AND_LINK, false);\r\n this.GeneralProperties.SetPropertyEnabled(PROPERTIES.ENABLE_SCAN_AND_LINK, false);\r\n }\r\n } else {\r\n this._enableLink(this._linkingRecordAllowed() && this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_LINK));\r\n\r\n this._enableUnlinkMultiple(this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_UNLINK_MULTIPLE));\r\n\r\n this._enableAddAndLink(\r\n this._addingRecordAllowed() &&\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_ADD_AND_LINK)\r\n );\r\n\r\n this._enableScanAndLink(\r\n this._linkingRecordAllowed() && this._scanAndLinkAllowed() &&\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_SCAN_AND_LINK)\r\n );\r\n\r\n isEnableNewRecord = this._addingRecordAllowed() && !this._enableAddAndLink();\r\n this._enableNewRecord(isEnableNewRecord);\r\n }\r\n } else if (this._subjectRecordId === 0 && (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen] || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ProcessCardPage])) {\r\n this._enableNewRecord(false);\r\n } else {\r\n if (this._model().EntityTypeName === EntityTypes[EntityTypes.Sub]) {\r\n this._enableNewRecord(true);\r\n }\r\n\r\n isEnableNewRecord = this._addingRecordAllowed() &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Dashboard] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ProcessCardPage] ||\r\n this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]);\r\n this._enableNewRecord(isEnableNewRecord);\r\n }\r\n }\r\n\r\n this._showTableViewElement(this.GeneralProperties.GetPropertyValue(PROPERTIES.SHOW_TABLE_VIEW));\r\n this._enableAddFromQuery(\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_ADD_QUERY) &&\r\n (\r\n this._form && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ConsultScreen] ||\r\n this._form && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen] ||\r\n this._form && this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ProcessCardPage]\r\n )\r\n );\r\n\r\n this._enableLinkParent(\r\n this._linkingRecordAllowed() &&\r\n this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_LINK_PARENT) &&\r\n this._form && this._form.GetScreen().GetEntityId() === this._model().EntityId &&\r\n (\r\n this._form.GetScreen().IsConsultScreen || this._form.GetScreen().IsEditScreen || this._form.GetScreen().IsProcessCardPageScreen\r\n )\r\n );\r\n\r\n this._showBulkEditButton(this.IsAbleBulkEdit() && this._model().EntityTypeName !== TABLE_TYPES.Sub);\r\n this._rowColorEnabled(this.GeneralProperties.GetPropertyValue(PROPERTIES.ROW_COLOR));\r\n }\r\n\r\n IsAbleBulkEdit(): boolean {\r\n if (this._form && (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ConsultScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Dashboard]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.QueryScreen])) {\r\n return this.GeneralProperties.GetPropertyValue(PROPERTIES.BULK_EDIT);\r\n }\r\n return false;\r\n }\r\n\r\n ChangeProperty(type: string, value): void {\r\n super.ChangeProperty(type, value);\r\n this.ApplyProperties();\r\n }\r\n\r\n UpdateTableViewList() {\r\n this._toolbar.Paginator().Reset();\r\n this.BlockToolbar();\r\n this._isTableViewUpdating(true);\r\n\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ConsultScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Dashboard]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.Portlet]) {\r\n\r\n const requestModel: IGetGridViewListDto = {\r\n ControlId: this._viewMode === ViewModes.ListView ? 0 : this.GetControlId(),\r\n SubjectEntityId: this._subjectEntityId,\r\n ViewMode: this._viewMode,\r\n ScreenType: ScreenTypes[this.ScreenType]\r\n };\r\n\r\n ViewGridListStore.GetGridViewList(requestModel).then(data => {\r\n let defaultView = new ViewGridModel(0, LABELS.DEFAULT_VIEW);\r\n defaultView.IsEditingAllowed = false;\r\n\r\n let tableViewList = [defaultView];\r\n\r\n data.GridViews.forEach(view => view.Init());\r\n tableViewList = data.GridViews ? tableViewList.concat(data.GridViews) : tableViewList;\r\n\r\n this._viewGridList(tableViewList);\r\n\r\n let tableView = _.find(this._viewGridList(), (item) => item.Id === this._tableViewId);\r\n\r\n if (tableView) {\r\n this._tableView(tableView);\r\n } else {\r\n const lockedTableView = _.find(this._viewGridList(), item => item.Locked);\r\n\r\n if (lockedTableView && !UserManager.Instance.IsUserInRole(UserRoles.SuperUser)) {\r\n tableView = lockedTableView;\r\n this._tableView(tableView);\r\n } else {\r\n const tableViewId = this._userVarsManager.GetGridView(this.GetControlId());\r\n tableView = _.find(this._viewGridList(), (item) => item.Id === tableViewId);\r\n this._tableView(tableView || _.first(this._viewGridList()));\r\n }\r\n }\r\n\r\n this._toolbar.Off(TOOLBAR_EVENTS.SELECT_TABLE_VIEW);\r\n this._toolbar.SetTableViewList(this._viewGridList(), this._tableView(), data.IsAddingRecordAllowed);\r\n this.LoadData(false);\r\n\r\n this._toolbar.On(TOOLBAR_EVENTS.SELECT_TABLE_VIEW, this, (eventArgs: any) => {\r\n if (eventArgs.data.Id !== this._tableView().Id) {\r\n const tableView = _.find(this._viewGridList(), item => item.Id === eventArgs.data.Id);\r\n\r\n if (tableView) {\r\n this._tableView(tableView);\r\n this._userVarsManager.SetGridView(this.GetControlId(), this._tableView().Id);\r\n this._toolbar.Paginator().Reset();\r\n this.LoadData(false);\r\n }\r\n }\r\n });\r\n\r\n }).fail(() => {\r\n this.UnBlockToolbar();\r\n }).always(() => {\r\n this._isTableViewUpdating(false);\r\n });\r\n\r\n } else {\r\n this._isTableViewUpdating(false);\r\n this.LoadData(false);\r\n }\r\n }\r\n\r\n Init() {\r\n this.InitRecordPerPage();\r\n\r\n const screen = this.GetForm() && this.GetForm().GetScreen();\r\n\r\n if (screen) {\r\n this._subjectEntityId = screen.GetEntityId();\r\n this._subjectEntityName = screen.GetEntityName();\r\n\r\n if (screen.GetTypeName() === ScreenTypes[ScreenTypes.ListScreen]\r\n || screen.GetTypeName() === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || screen.GetTypeName() === ScreenTypes[ScreenTypes.Dashboard]) {\r\n screen.On('TAG_SELECTION_CHANGED', this, eventArgs => {\r\n this._selectedTags = eventArgs.data;\r\n this.LoadData(false);\r\n });\r\n }\r\n\r\n if (this._form) {\r\n screen.On(SCREEN_EVENTS.DATA_CHANGED, this, (eventArgs) => {\r\n\r\n let screenData: IScreenVariable = eventArgs.data.ScreenVariable;\r\n \r\n const column = _.find(this._baseGrid.Columns, (column) => {\r\n if (column.Model && column.Model.FieldMetadata) {\r\n return column.Model.FieldMetadata.Id ===screenData.Field.Id;\r\n }\r\n });\r\n\r\n if (column) {\r\n const screenVariableCondition = ConditionBuilder.GetScreenVariableCondition(screenData, this._conditions);\r\n\r\n if (screenVariableCondition.length > 0) {\r\n this.SetConditionScreenData(screenVariableCondition, screenData.Value);\r\n this.Paginator.PageNumber = 1;\r\n this._applyFilter = true;\r\n this.LoadData(false);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n this._inlineControls = this.GetInlineControls();\r\n }\r\n\r\n InitRecordPerPage() {\r\n const recordsPerPageGlobalName = this.GetRecordPerPageGlobalName();\r\n\r\n if (recordsPerPageGlobalName != null) {\r\n const recordsPerPageGlobalValue = GlobalManager.Instance.GetGlobal(this.GetRecordPerPageGlobalName());\r\n\r\n this.Paginator.RecordsPerPage = parseInt(recordsPerPageGlobalValue) || DEFAULT_RECORDS_PER_PAGE;\r\n }\r\n }\r\n\r\n GetRecordPerPageGlobalName(): string {\r\n let recordsPerPageGlobalName = null;\r\n\r\n switch (this.ScreenType) {\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n recordsPerPageGlobalName = GLOBALS.CONSULT_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.ListScreen]:\r\n recordsPerPageGlobalName = GLOBALS.LIST_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.SpecialScreen]:\r\n recordsPerPageGlobalName = GLOBALS.LIST_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.Dashboard]:\r\n recordsPerPageGlobalName = GLOBALS.LIST_GRID_PAGE_LINES;\r\n break;\r\n case ScreenTypes[ScreenTypes.Portlet]:\r\n recordsPerPageGlobalName = null;\r\n break;\r\n default:\r\n recordsPerPageGlobalName = GLOBALS.OTHER_GRID_PAGE_LINES;\r\n }\r\n\r\n return recordsPerPageGlobalName;\r\n }\r\n\r\n get ScreenType(): string {\r\n if (this.GetForm()) {\r\n if (this.GetForm().GetScreen()) {\r\n return this.GetForm().GetScreen().GetType();\r\n }\r\n return ScreenTypes[ScreenTypes.ConsultScreen];\r\n }\r\n\r\n return null;\r\n }\r\n\r\n get MaxRowHeight(): KnockoutObservable<string> {\r\n return this._maxRowHeight;\r\n }\r\n\r\n SelectTableView() {\r\n this.Paginator.PageNumber = 1;\r\n this.LoadData(false);\r\n }\r\n\r\n ResetFilter() {\r\n UserVarsManager.Instance.ResetGridFilters(this._subjectRecordId);\r\n this.LoadData();\r\n }\r\n\r\n EditAll() {\r\n this._baseGrid.EditAll();\r\n }\r\n\r\n SaveAll() {\r\n this._toolbar.EditAll = this._baseGrid.SaveAll();\r\n }\r\n\r\n get DataMode(): DataModes {\r\n //Forbidden loading grid during followUp an copying\r\n return this._form.GetScreen().GetType() !== ScreenTypes[ScreenTypes.EditScreen] ? DataModes.Default : this._form.GetScreen().GetDataMode();\r\n }\r\n\r\n get TableViewId() {\r\n return this._tableView() ? this._tableView().Id : 0;\r\n }\r\n\r\n CheckingFilters(): void {\r\n let tableViewId = this._tableView() ? this._tableView().Id : 0;\r\n let userVarsFastFilter: FastFilterSaveModel[] = UserVarsManager.Instance.GetGridColumnFilters(this._subjectRecordId);\r\n let thisUserVarsViewFastFilters: FastFilterSaveModel[] = _.filter(userVarsFastFilter, fastFilter=> fastFilter.Values.length && tableViewId === fastFilter.TableViewId);\r\n\r\n if ( !this._isFastFilter || !thisUserVarsViewFastFilters.length ) {\r\n UserVarsManager.Instance.ResetGridFilters(this._subjectRecordId);\r\n }\r\n }\r\n\r\n LoadData(\r\n restoreSortState: boolean = false,\r\n subGrid?: BaseGrid,\r\n parentRowId?: string,\r\n updateRow?: GridRow\r\n ) {\r\n\r\n const getData = (defaultTableViewId?) => {\r\n if (subGrid) {\r\n this.BlockUI();\r\n } else {\r\n this.BlockToolbar();\r\n }\r\n\r\n this.Trigger('START_DATA_LOAD');\r\n\r\n let windowScrollPosition;\r\n let contextGrid = subGrid || this._baseGrid;\r\n\r\n if (this._isRestoreScrollPosition) {\r\n windowScrollPosition = $(window).scrollTop();\r\n }\r\n\r\n if (this.Paginator && this.Paginator.RecordsPerPage != null) {\r\n if (this.Paginator.RecordsPerPage === 0) {\r\n this.Paginator.RecordsPerPage = DEFAULT_RECORDS_PER_PAGE;\r\n }\r\n\r\n contextGrid.HideGrid();\r\n\r\n let tableViewId = this._tableView() ? this._tableView().Id : 0;\r\n\r\n let fastFilters = this._baseGrid.FilterSaveModels;\r\n\r\n UserVarsManager.Instance.SetGridColumnFilters(this._subjectRecordId, fastFilters);\r\n\r\n this.CheckingFilters();\r\n\r\n const preselectedFilters = UserVarsManager.Instance.GetGridColumnFilters(this._subjectRecordId);\r\n\r\n if (preselectedFilters && preselectedFilters.length) {\r\n preselectedFilters.map((preselectedFilter) => {\r\n if (preselectedFilter.TableViewId === tableViewId\r\n && fastFilters.findIndex((el) => el.FieldAlias === preselectedFilter.FieldAlias) < 0) {\r\n fastFilters.push(preselectedFilter);\r\n }\r\n });\r\n }\r\n\r\n let pageNumber = subGrid ? subGrid.Paginator.PageNumber : this.Paginator.PageNumber;\r\n\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n TableViewId: defaultTableViewId >= 0 ? defaultTableViewId : tableViewId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: this._form.GetScreen().GetTableTypeId(),\r\n SubjectKindId: this._form.GetScreen().GetKindId(),\r\n SubjectStatusId: this._subjectRecordSpecsModel ? this._subjectRecordSpecsModel.LifeStatusInfo.Id : 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: pageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n ShowRetired: this._showRetiredRecords,\r\n ParentRowId: parentRowId,\r\n SubQueryGuid: subGrid ? subGrid.Model.SubQueryGuid : null,\r\n ScreenData: this._applyFilter ? this.GetDynamicFieldsData() : null,\r\n Query: this.IsQueryScreen ? this._queryExpression : null,\r\n DataMode: this.DataMode,\r\n RowId: updateRow ? updateRow.Model.RowId : null, \r\n ConditionValues: this.MapConditionValues(),\r\n FastFilters: fastFilters\r\n .filter((filter) => filter.Values.length)\r\n .map((filter) => {\r\n filter.Values.forEach(value => {\r\n if (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n value.DisplayValue = null;\r\n }\r\n });\r\n return {\r\n FieldAlias: filter.FieldAlias,\r\n Values: filter.Values,\r\n TimeZone: (new Date().getTimezoneOffset()) / 60\r\n };\r\n })\r\n };\r\n\r\n this._baseGrid.SetGridDataModel(requestModel);\r\n\r\n GridStore.GetData(requestModel)\r\n .then(gridDataModel => {\r\n if (subGrid) {\r\n subGrid.SetData(gridDataModel, null, null, null, null, updateRow);\r\n subGrid.SetRecordsPerPage(this.Paginator.RecordsPerPage)\r\n } else {\r\n this._hasData = true;\r\n this._isLinkEditorEnabled = gridDataModel.IsLinkEditorEnabled;\r\n this._isDirectionCorrect = gridDataModel.IsDirectionCorrect;\r\n this.Paginator.TotalRecords = gridDataModel.TotalRecords;\r\n this._queryExpression = gridDataModel.QueryExpression;\r\n this.InitToolbar(gridDataModel);\r\n this.ApplyProperties();\r\n\r\n this._gridEntityId = this.GetGridEntityId(gridDataModel);\r\n\r\n gridDataModel.SubjectEntityId = this._subjectEntityId;\r\n gridDataModel.SubjectRecordId = this._subjectRecordId;\r\n\r\n this._baseGrid.SetData(gridDataModel, restoreSortState, this.GetGridPriorityToggle(), this._tableView() && this._tableView().Id || 0, this._inlineControls, updateRow);\r\n\r\n this._showBulkEditButton(this.IsAbleBulkEdit()\r\n && gridDataModel.Rows.length > 0\r\n && this._model().EntityTypeName !== TABLE_TYPES.Sub);\r\n\r\n var even = _.find(gridDataModel.Rows, (row) => row.Rights.IsEditingAllowed);\r\n this._disableBulkEditButton(!even);\r\n\r\n this._dataModel = gridDataModel;\r\n\r\n this.LoadBasket();\r\n\r\n if (this._isRestoreScrollPosition) {\r\n $(window).scrollTop(windowScrollPosition);\r\n } else {\r\n this._isRestoreScrollPosition = true;\r\n }\r\n }\r\n })\r\n .always(() => {\r\n contextGrid.ShowGrid();\r\n this._toolbar.Enable();\r\n this.Trigger('DATA_LOADED');\r\n\r\n if (subGrid) {\r\n this.UnBlockUI();\r\n } else {\r\n this.UnBlockToolbar();\r\n }\r\n\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n\r\n })\r\n .fail(data => {\r\n const notifier = new Notifier(null);\r\n notifier.Failed(`${NOTIFICATIONS.ERROR_GET_GRID_DATA}.<br>${data.message}`);\r\n });\r\n }\r\n };\r\n\r\n if (this._isTableViewUpdating()) {\r\n if (this._tableViewUpdatingSubscription) {\r\n this._tableViewUpdatingSubscription.dispose();\r\n }\r\n this._tableViewUpdatingSubscription = this._isTableViewUpdating.subscribe((value) => {\r\n if (!value) {\r\n getData();\r\n }\r\n });\r\n } else {\r\n getData();\r\n }\r\n }\r\n\r\n InitToolbar(gridData: GridDataModel) {\r\n if (this.HasCardScreen) {\r\n this._toolbar.ShowSearchInput(false);\r\n this._linkingRecordAllowed(false);\r\n this._hasOneParent(false);\r\n this._addingRecordAllowed(false);\r\n this._scanAndLinkAllowed(false);\r\n this._toolbar.SetEnabledAddButton(false);\r\n this._toolbar.SetEnableEditAllButton(false);\r\n this._toolbar.ShowRetiredButton(false);\r\n this._toolbar.ShowControls(false);\r\n this._toolbar.ShowTogglePrioritiesButton(false);\r\n this._showResetFilterButton(false);\r\n } else {\r\n this._toolbar.ShowSearchInput(this._showSearchInput());\r\n this._linkingRecordAllowed(gridData.IsLinkingAllowed);\r\n this._hasOneParent(gridData.HasOneParent);\r\n this._addingRecordAllowed(gridData.IsAddAndLinkAllowed);\r\n this._exportDataAllowed(gridData.IsExportDataAllowed);\r\n this._scanAndLinkAllowed(gridData.IsScanAndLinkAllowed);\r\n this._toolbar.SetEnabledAddButton(this.IsVisibleAddButton(gridData));\r\n this._toolbar.SetEnableEditAllButton(this.IsVisibleEditAllButton(gridData));\r\n this._toolbar.ShowRetiredButton(this.ShowRetired);\r\n this._toolbar.ShowControls(true);\r\n this._toolbar.ShowTogglePrioritiesButton(gridData.QueryExpression.IsCrossTable ? false : this._showTogglePrioritiesButton);\r\n this._showResetFilterButton(UserVarsManager.Instance.HasFastFilter(this._subjectRecordId));\r\n\r\n this.CheckingFilters();\r\n }\r\n\r\n const gridSubject = this.GetGridSubject();\r\n const gridSubjectEntityMetadata = gridSubject && gridSubject.Entity && gridSubject.Entity.Metadata;\r\n this._toolbar.SetGridSubjectEntityMetadata(gridSubjectEntityMetadata);\r\n }\r\n\r\n get HasCardScreen() {\r\n\r\n if (this._queryExpression && this._queryExpression.CardScreenId > 0) {\r\n return true;\r\n }\r\n\r\n if (!!this.GeneralProperties.GetPropertyValue(PROPERTIES.CARD_SCREEN)\r\n && this.GeneralProperties.GetPropertyValue(PROPERTIES.CARD_SCREEN) !== 0\r\n && (this.TableViewId == 0)\r\n ) {\r\n return true;\r\n }\r\n ;\r\n\r\n return false;\r\n }\r\n\r\n private LoadBasket() {\r\n if (this._basket) {\r\n this._basket.LoadData(this._gridEntityId);\r\n }\r\n }\r\n\r\n private BlockToolbar() {\r\n if (this._toolbarBlock) {\r\n BlockUI.Block({Target: this._toolbarBlock});\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n this._toolbar.EditAll = true;\r\n }\r\n }\r\n }\r\n\r\n private UnBlockToolbar() {\r\n BlockUI.Unblock(this._toolbarBlock);\r\n }\r\n\r\n private BlockUI() {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n private UnBlockUI() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n private IsVisibleAddButton(gridDataModel: GridDataModel): boolean {\r\n if (this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_NEW_LINK)) {\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (gridDataModel.QueryExpression.EntityJoins.length == 0 && gridDataModel.QueryExpression.SubEntityJoins.length > 0 && gridDataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.Type === TABLE_TYPES.Sub) {\r\n let isKseqExit = _.find(gridDataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n\r\n if (isKseqExit) {\r\n return true;\r\n } else {\r\n return gridDataModel.Rows && gridDataModel.Rows.length !== 1;\r\n }\r\n }\r\n\r\n if (!this._addingRecordAllowed()) {\r\n return false;\r\n }\r\n\r\n if (gridDataModel.QueryExpression.EntityJoins.length > 0 &&\r\n gridDataModel.QueryExpression.SubEntityJoins.length == 0 &&\r\n gridDataModel.QueryExpression.EntityJoins[0].Entity.Metadata.Type === TABLE_TYPES.Entity\r\n ) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private IsVisibleEditAllButton(gridDataModel: GridDataModel): boolean {\r\n if (this.GeneralProperties.GetPropertyValue(PROPERTIES.EDIT_ALL)) {\r\n if (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n let gridSubject = this.GetGridSubject();\r\n return gridSubject && gridSubject.Entity.Metadata.Type == TABLE_TYPES.Sub\r\n && gridDataModel.Rows\r\n && gridDataModel.Rows.length !== 0;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private GetGridEntityId(gridDataModel: GridDataModel) {\r\n let entityId: number;\r\n\r\n if (this._viewMode === ViewModes.ListView || this._viewMode === ViewModes.Query) {\r\n entityId = gridDataModel.QueryExpression.Entity.Metadata.Id;\r\n } else {\r\n const joinExist = _.any(gridDataModel.QueryExpression.EntityJoins);\r\n\r\n entityId = joinExist ? gridDataModel.QueryExpression.EntityJoins[0].Entity.Metadata.Id : 0;\r\n }\r\n\r\n return entityId;\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n if (this._toolbar) {\r\n this._toolbarBlock = document.getElementById('control-' + this._guid);\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design && this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.HelpView) {\r\n this.ListenForWrapperResize();\r\n }\r\n }\r\n\r\n NewTableView() {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes[this.ScreenType])\r\n .then(async data => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as BaseScreen;\r\n editScreen.SetIsQueryBuilderScreen(true);\r\n\r\n editScreen.ShowInModal();\r\n\r\n GridStore.GetDefaultTableView({\r\n ControlId: this.GetControlId(),\r\n ViewMode: this._viewMode,\r\n SubjectEntityId: this._subjectEntityId\r\n })\r\n .then(data => {\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectEntityId(this._subjectEntityId);\r\n queryBuilderControl.SetSubjectRecordId(this._subjectRecordId);\r\n queryBuilderControl.SetQueryTypeName(this._viewMode);\r\n queryBuilderControl.SetFilterByOwners(this._filterByOwners);\r\n queryBuilderControl.SetGridId(this.GetControlId());\r\n queryBuilderControl.InitQuery(data);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this._tableViewId = eventArgs.data.RecordId;\r\n this.UpdateTableViewList();\r\n\r\n this._userVarsManager.SetGridView(this.GetControlId(), this._tableViewId);\r\n });\r\n }\r\n });\r\n\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n CopyTableView() {\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes[this.ScreenType])\r\n .then(async data => {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id,\r\n LoadAsExample: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.SetIsQueryBuilderScreen(true);\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this._subjectRecordId);\r\n queryBuilderControl.SetQueryTypeName(this._viewMode);\r\n queryBuilderControl.SetFilterByOwners(this._filterByOwners);\r\n queryBuilderControl.SetGridId(this.GetControlId());\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this._tableViewId = eventArgs.data.RecordId;\r\n this.UpdateTableViewList();\r\n\r\n this._userVarsManager.SetGridView(this.GetControlId(), this._tableViewId);\r\n });\r\n }\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n EditTableView() {\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes[this.ScreenType])\r\n .then(data => {\r\n\r\n LockManager.Instance.TryLock(data.TableId, this._tableView().Id)\r\n .then(async () => {\r\n\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === data.TableId && eventArgs.data.RecordId === this._tableView().Id) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(data.TableId, this._tableView().Id);\r\n });\r\n\r\n const editScreen = screen as BaseScreen;\r\n editScreen.SetIsQueryBuilderScreen(true);\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetQueryTypeName(this._viewMode);\r\n queryBuilderControl.SetSubjectRecordId(this._subjectRecordId);\r\n queryBuilderControl.SetFilterByOwners(this._filterByOwners);\r\n queryBuilderControl.SetGridId(this.GetControlId());\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n DeleteTableView() {\r\n if (this._tableView().Id > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this._loadInProgress(true);\r\n\r\n DeleteQueryStore.Delete({Id: this._tableView().Id})\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(() => {\r\n this._queryBuilder(null);\r\n this.UpdateTableViewList();\r\n });\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n LockTableView() {\r\n if (this._tableView().Id > 0) {\r\n this._loadInProgress(true);\r\n LockQueryStore.Lock({Id: this._tableView().Id})\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(() => {\r\n this._tableView().Lock();\r\n });\r\n }\r\n }\r\n\r\n UnlockTableView() {\r\n if (this._tableView().Id > 0) {\r\n this._loadInProgress(true);\r\n LockQueryStore.Unlock({Id: this._tableView().Id})\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(() => {\r\n this._tableView().Unlock();\r\n });\r\n }\r\n }\r\n\r\n GetGridSubject(): QueryEntityJoinModel {\r\n if (this._viewMode === ViewModes.TableView && this._queryExpression) {\r\n let subject = _.first(this._queryExpression.EntityJoins);\r\n\r\n if (!subject) {\r\n return _.first(this._queryExpression.SubEntityJoins);\r\n }\r\n\r\n return subject;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n async LinkSubGridRecord(mainEntityId: number, mainRecordId: number, relatedEntityId: number) {\r\n BlockUI.Block();\r\n let recordSpecs = await RecordStore.GetRecordSpecs({ TableId: mainEntityId, RecordId: mainRecordId });\r\n BlockUI.Unblock();\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: relatedEntityId,\r\n SearchTerm: '',\r\n SubjectEntityId: mainEntityId,\r\n SubjectTypeId: recordSpecs.TypeId,\r\n SubjectRecordId: mainRecordId,\r\n ButtonAdd: this._enableAddAndLink(),\r\n MultiSelectMode: true,\r\n EnableBulkScan: true\r\n });\r\n\r\n let isBulkBarcodeScanning = false;\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId: relatedEntityId,\r\n linkedRecordId: eventArgs.data.RecordId,\r\n linkedRecordTypeId: eventArgs.data.TypeId,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n },\r\n });\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkSubGridRecords({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId: relatedEntityId,\r\n linkedRecordIds: eventArgs.data.Ids,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STARTED', this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STOPPED', this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, () => {\r\n this.OnAddAndSubGridLinkRecord(mainEntityId, mainRecordId, recordSpecs.TypeId, recordSpecs.LifeStatusId, relatedEntityId);\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId,\r\n linkedRecordId,\r\n linkedRecordTypeId,\r\n isBulkBarcodeScanning,\r\n onRecordSelect\r\n }: {\r\n mainEntityId: number;\r\n mainRecordId: number\r\n linkedEntityId: number;\r\n linkedRecordId: number;\r\n linkedRecordTypeId?: number;\r\n isBulkBarcodeScanning: boolean;\r\n onRecordSelect: () => void;\r\n }) {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n RecordLinker.LinkRecord({\r\n MainTableId: mainEntityId,\r\n MainRecordId: mainRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordId: linkedRecordId\r\n })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n const notifier = new Notifier();\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n\r\n if (!isBulkBarcodeScanning) {\r\n this.One('DATA_LOADED', this, () => {\r\n this.UpdateLinkRecordById(linkedEntityId, linkedRecordId, linkedRecordTypeId, sequence, mainEntityId, mainRecordId);\r\n });\r\n }\r\n });\r\n }\r\n\r\n SelectFromLinkSubGridRecords({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId,\r\n linkedRecordIds,\r\n isBulkBarcodeScanning,\r\n onRecordSelect\r\n }: {\r\n mainEntityId: number;\r\n mainRecordId: number;\r\n linkedEntityId: number;\r\n linkedRecordIds: number[];\r\n isBulkBarcodeScanning: boolean;\r\n onRecordSelect: () => void;\r\n }) {\r\n\r\n if (linkedRecordIds && linkedRecordIds.length == 1) {\r\n this.SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId: linkedEntityId,\r\n linkedRecordId: linkedRecordIds[0],\r\n isBulkBarcodeScanning: isBulkBarcodeScanning,\r\n onRecordSelect: onRecordSelect\r\n });\r\n return;\r\n }\r\n \r\n BlockUI.Block();\r\n\r\n RecordLinker.LinkRecords({\r\n MainTableId: mainEntityId,\r\n MainRecordId: mainRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n\r\n if (isBulkBarcodeScanning) {\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n const notifier = new Notifier();\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n notifier.Success(NOTIFICATIONS.RECORDS_LINKED);\r\n\r\n this.LoadData(false);\r\n });\r\n }\r\n\r\n LinkSubGridParentRecord(gridSubjectRow: GridRow, relatedEntityId: number) {\r\n let notifier = new Notifier($(this._el));\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: relatedEntityId,\r\n SearchTerm: '',\r\n SubjectEntityId: gridSubjectRow.EntityId,\r\n SubjectTypeId: gridSubjectRow.RecordTypeId,\r\n SubjectRecordId: gridSubjectRow.RecordId,\r\n ButtonAdd: false,\r\n IsParentLinking: true\r\n });\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const childEntityId = gridSubjectRow.EntityId;\r\n const childRecordId = gridSubjectRow.RecordId;\r\n const childRecordTypeId = gridSubjectRow.RecordTypeId;\r\n\r\n const parentEntityId = relatedEntityId;\r\n const parentRecordId = eventArgs.data.RecordId;\r\n const parentRecordTypeId = eventArgs.data.TypeId;\r\n\r\n RecordLinker.LinkRecord({\r\n MainTableId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n LinkedTableId: childEntityId,\r\n LinkedRecordId: childRecordId\r\n }).then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n let sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, () => {\r\n const seq = !!sequence ? sequence : 0;\r\n if (this._isLinkEditorEnabled) {\r\n this.UpdateLinkRecord(parentEntityId, parentRecordId, parentRecordTypeId, seq, 1, childEntityId, childRecordId, childRecordTypeId, true, true);\r\n }\r\n });\r\n });\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n OnAddAndSubGridLinkRecord(\r\n mainEntityId: number,\r\n mainRecordId: number,\r\n mainRecordTypeId: number,\r\n mainRecordStatusId: number,\r\n relatedEntityId: number\r\n ) {\r\n const selfRelation = mainEntityId === relatedEntityId;\r\n\r\n const typeScreen = new TypeScreen(relatedEntityId, selfRelation ? mainRecordTypeId : null, false);\r\n\r\n typeScreen.On('TYPE_SELECTED', this, async eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n await this.AddAndSubGidLinkRecord(typeId, kindId, exampleRecordId, mainEntityId, mainRecordId, mainRecordStatusId, relatedEntityId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n ScanAndLinkSubGridRecord(mainEntityId: number, mainRecordId: number, relatedEntityId: number) {\r\n const barcodeScanner = new BarcodeScanner({isContinuous: true});\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n const {value} = eventArgs.data;\r\n\r\n const linkedEntityId = relatedEntityId;\r\n\r\n GridStore.SearchByBarcode({EntityId: linkedEntityId, Barcode: value})\r\n .then(linkedRecordId => {\r\n this.SelectFromLinkSubGridRecord({\r\n mainEntityId,\r\n mainRecordId,\r\n linkedEntityId,\r\n linkedRecordId,\r\n isBulkBarcodeScanning: true,\r\n onRecordSelect: () => {\r\n barcodeScanner.Reenable();\r\n },\r\n });\r\n })\r\n .fail(error => {\r\n barcodeScanner.Reenable();\r\n new Notifier($(this._el)).Failed(error.message);\r\n });\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n LinkForEditScreen({ recordIds, updateLinkRecord = true, isLinkParent = false }: ILinkForEditScreenOptions) {\r\n if (recordIds.length === 0) {\r\n return;\r\n }\r\n\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n\r\n TableViewId: this.ScreenType === ScreenTypes[ScreenTypes.Portlet] ?\r\n 0 :\r\n this._tableView() ? this._tableView().Id : 0,\r\n\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: this.Paginator.PageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n GridSubjectRecordIds: recordIds\r\n };\r\n\r\n this._loadInProgress(true);\r\n return GridStore.GetData(requestModel)\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(gridDataModel => {\r\n let rows = this._baseGrid.AddLinkedRows(gridDataModel);\r\n\r\n rows.forEach(row=>row.IsLinkParent = isLinkParent);\r\n\r\n if (updateLinkRecord) {\r\n let firstRow = _.first(rows);\r\n if (firstRow) {\r\n\r\n const mainEntityId = this._form.GetScreen().GetEntityId();\r\n const mainRecordId = this._form.GetScreen().GetRecordId();\r\n const mainRecordTypeId = this._form.GetScreen().GetTableTypeId();\r\n const mainRecordKindId = this._form.GetScreen().GetKindId();\r\n\r\n const relatedEntityId = firstRow.EntityId;\r\n const relatedRecordId = firstRow.RecordId;\r\n const relatedRecordTypeId = firstRow.RecordTypeId;\r\n const relatedRecordKindId = firstRow.RecordKindId;\r\n\r\n let loadScreenRelationModel: ILoadScreenRelationModel = {\r\n MainRecordId: isLinkParent ? relatedRecordId : mainRecordId,\r\n MainEntityId: isLinkParent ? relatedEntityId : mainEntityId,\r\n MainRecordTypeId: isLinkParent ? relatedRecordTypeId : mainRecordTypeId,\r\n MainRecordKindId: isLinkParent ? relatedRecordKindId : mainRecordKindId,\r\n RelatedEntityId: isLinkParent ? mainEntityId : relatedEntityId,\r\n RelatedRecordId: isLinkParent ? mainRecordId : relatedRecordId,\r\n RelatedRecordTypeId: isLinkParent ? mainRecordTypeId : relatedRecordTypeId,\r\n KSeq: firstRow.KSeq\r\n };\r\n this.UpdateLinkRecordGeneral(loadScreenRelationModel, firstRow, true, false, isLinkParent);\r\n this._disabledCopyButton(false);\r\n }\r\n } else {\r\n new Notifier().Success(NOTIFICATIONS.RECORDS_LINKED);\r\n }\r\n });\r\n }\r\n\r\n LinkRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (gridSubject) {\r\n let isBulkBarcodeScanning = false;\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: gridSubject.Entity.Metadata.Id,\r\n SearchTerm: '',\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n ButtonAdd: this._enableAddAndLink(),\r\n ControlId: this.GetControlId(),\r\n HasLinkingCondition: this.HasLinkingCondition,\r\n EnableBulkScan: true,\r\n MultiSelectMode: true\r\n });\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkRecord({\r\n linkedEntityId: gridSubject.Entity.Metadata.Id,\r\n linkedRecordIds: [eventArgs.data.RecordId],\r\n linkedRecordTypeId: eventArgs.data.TypeId,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED', this, eventArgs => {\r\n this.SelectFromLinkRecord({\r\n linkedEntityId: gridSubject.Entity.Metadata.Id,\r\n linkedRecordIds: eventArgs.data.Ids,\r\n isBulkBarcodeScanning,\r\n onRecordSelect: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STARTED', this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STOPPED', this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, () => {\r\n this.OnAddAndLinkRecord();\r\n });\r\n\r\n searchScreen.Show();\r\n } else {\r\n new Notifier().Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n SelectFromLinkRecord({linkedEntityId, linkedRecordIds, linkedRecordTypeId, isBulkBarcodeScanning, onRecordSelect}: {\r\n linkedEntityId: number;\r\n linkedRecordIds: number[];\r\n linkedRecordTypeId?: number;\r\n isBulkBarcodeScanning: boolean;\r\n onRecordSelect: () => void;\r\n }) {\r\n //TODO refactor\r\n\r\n if (this.IsEditScreen || this.IsProcessCardPageScreen) {\r\n let kSeqValue = _.find(this._queryExpression.EntityJoins[0].LinkEntity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n if (kSeqValue) {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n this.LinkForEditScreen({ recordIds: linkedRecordIds, updateLinkRecord: !isBulkBarcodeScanning })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onRecordSelect();\r\n }\r\n });\r\n } else {\r\n let deletedRows = this._baseGrid.GetUnlinkedGridRowsByRecordIds(linkedRecordIds);\r\n\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n RecordLinker.GetExistingLinksWithRecords({\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n _.each(result.ResultObject, (id) => {\r\n let deletedRow = _.find(deletedRows, (row) => row.RecordId === id)\r\n if (deletedRow) {\r\n deletedRow.LinkEditorData.DeletedRelations = _.reject(deletedRow.LinkEditorData.DeletedRelations,\r\n (item) => item.EntityId === deletedRow.EntityId\r\n && item.RecordId === deletedRow.RecordId\r\n && item.KSeq === deletedRow.KSeq);\r\n\r\n this._baseGrid.AddRow(deletedRow);\r\n\r\n setTimeout(() => {\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n }, 0);\r\n }\r\n });\r\n\r\n let newLinks = _.difference(linkedRecordIds, result.ResultObject);\r\n this.LinkForEditScreen({ recordIds: newLinks, updateLinkRecord: !isBulkBarcodeScanning });\r\n });\r\n }\r\n } else {\r\n\r\n BlockUI.Block();\r\n\r\n if (linkedRecordIds.length === 1) {\r\n RecordLinker.LinkRecord({\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordId: linkedRecordIds[0]\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(); \r\n if (isBulkBarcodeScanning) {\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n const notifier = new Notifier();\r\n\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(w => notifier.Warning(w.replace(\"/n\", \"<br>\")));\r\n }\r\n\r\n let sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this._disabledCopyButton(false);\r\n\r\n if (!isBulkBarcodeScanning) {\r\n this.UpdateLinkRecordById(linkedEntityId, linkedRecordIds[0], linkedRecordTypeId, sequence);\r\n }\r\n });\r\n } else {\r\n RecordLinker.LinkRecords({\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: linkedEntityId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n \r\n if (isBulkBarcodeScanning) {\r\n onRecordSelect();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n const notifier = new Notifier();\r\n\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(w => notifier.Warning(w.replace(\"/n\", \"<br>\")));\r\n }\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n this._disabledCopyButton(false);\r\n });\r\n }\r\n }\r\n }\r\n\r\n LinkParentRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n let notifier = new Notifier($(this._el));\r\n\r\n if (gridSubject) {\r\n let searchScreen = new SearchScreen({\r\n EntityId: gridSubject.Entity.Metadata.Id,\r\n SearchTerm: '',\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n ButtonAdd: false,\r\n ControlId: this.GetControlId(),\r\n HasLinkingCondition: this.HasLinkingCondition,\r\n IsParentLinking: true\r\n });\r\n\r\n this._searchScreen = searchScreen;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const childEntityId = this._subjectEntityId;\r\n const childRecordId = this._subjectRecordId;\r\n const childRecordTypeId = this.GetForm().GetScreen().GetTableTypeId();\r\n\r\n const parentEntityId = gridSubject.Entity.Metadata.Id;\r\n const parentRecordId = eventArgs.data.RecordId;\r\n const parentRecordTypeId = eventArgs.data.TypeId;\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n let hasKSeq = _.any(this._queryExpression.EntityJoins[0].LinkEntity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n if (hasKSeq) {\r\n this.LinkForEditScreen({ recordIds: [parentRecordId], isLinkParent: true })\r\n } else {\r\n let deletedRows = this._baseGrid.GetUnlinkedGridRowsByRecordIds([parentRecordId]);\r\n \r\n RecordLinker.GetExistingLinksWithRecords({\r\n MainTableId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n LinkedTableId: this._subjectEntityId,\r\n LinkedRecordIds: [this._subjectRecordId]\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n \r\n _.each(result.ResultObject, (id) => {\r\n let deletedRow = _.find(deletedRows, (row) => row.RecordId === id)\r\n if (deletedRow) {\r\n deletedRow.LinkEditorData.DeletedRelations = _.reject(deletedRow.LinkEditorData.DeletedRelations,\r\n (item) => item.EntityId === deletedRow.EntityId\r\n && item.RecordId === deletedRow.RecordId\r\n && item.KSeq === deletedRow.KSeq);\r\n \r\n this._baseGrid.AddRow(deletedRow);\r\n \r\n setTimeout(() => {\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n }, 0);\r\n }\r\n });\r\n \r\n let newLinks = _.difference([], result.ResultObject);\r\n this.LinkForEditScreen({ recordIds: newLinks, isLinkParent: true });\r\n });\r\n }\r\n } else {\r\n\r\n RecordLinker.LinkRecord({\r\n MainTableId: parentEntityId,\r\n MainRecordId: parentRecordId,\r\n LinkedTableId: childEntityId,\r\n LinkedRecordId: childRecordId\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n const sequence = result.ResultObject.Sequence;\r\n\r\n notifier.Success(result.OperationMessage);\r\n\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, () => {\r\n const seq = !!sequence ? sequence : 0;\r\n if (this._isLinkEditorEnabled) {\r\n this.UpdateLinkRecord(parentEntityId, parentRecordId, parentRecordTypeId, seq, 1, childEntityId, childRecordId, childRecordTypeId, true, true);\r\n } else if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n } else {\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n CopyLatestLink(): void {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n if (this._form.GetScreen().GetRecordId()) {\r\n\r\n const firstRow = this._baseGrid.GetRowByIndex(0);\r\n if (!firstRow) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n if (firstRow.State === States.New || firstRow.State === States.Link || firstRow.State === States.LinkAndEdit) {\r\n this.CopyEntityRowRecord(0);\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n LinkRecordsStore.GetLastLinkedRecordEditScreen({\r\n MainTableId: subjectEntityId,\r\n LinkedTableId: relatedEntityId,\r\n MainRecordId: subjectRecordId\r\n }).then(async linkedRecord => {\r\n\r\n if (!linkedRecord) {\r\n return new Notifier().Warning(NOTIFICATIONS.LINK_RECORDS_NOT_FOUND);\r\n }\r\n\r\n await this.CopyLinkedRecord({\r\n RecordId: linkedRecord.RightRecordId,\r\n TypeId: linkedRecord.RightRecordTypeId,\r\n KindId: linkedRecord.RightRecordKindId,\r\n IsCorrectDirection: linkedRecord.IsCorrectDirection\r\n }, DataModes.Copy);\r\n }).fail(err => {\r\n new Notifier().Failed(err.message)\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n });\r\n } else {\r\n // When new record without example\r\n this.CopyEntityRowRecord(0);\r\n return;\r\n }\r\n }\r\n\r\n CopyLatestSubRecord(): void {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedSubEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n if (this._form.GetScreen().GetRecordId()) {\r\n const firstRow = this._baseGrid.GetRowByIndex(0);\r\n if (!firstRow) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n if (firstRow.State === States.New || firstRow.State === States.Link || firstRow.State === States.LinkAndEdit) {\r\n this.CopySubEntityRowRecord(0);\r\n return;\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n this.RecreateLatestSubRecord();\r\n return;\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n this.CopyLatestSubRecordRow();\r\n return;\r\n }\r\n\r\n } else {\r\n this.CopySubEntityRowRecord(0);\r\n return;\r\n }\r\n }\r\n\r\n async CopyEntityRowRecord(rowIndex: number) {\r\n const rowToDuplicate = this._baseGrid.GetRowByIndex(rowIndex);\r\n if (!rowToDuplicate) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n const rowRecordId = rowToDuplicate.Model.RecordId;\r\n const rowRecordTypeId = rowToDuplicate.Model.TypeId;\r\n const rowRecordKindId = rowToDuplicate.Model.KindId;\r\n if (!rowRecordId) {\r\n this._baseGrid.DuplicateRow(rowToDuplicate);\r\n return;\r\n }\r\n\r\n await this.CopyLinkedRecord({\r\n RecordId: rowRecordId,\r\n TypeId: rowRecordTypeId,\r\n KindId: rowRecordKindId,\r\n IsCorrectDirection: this._isDirectionCorrect\r\n }, DataModes.Copy);\r\n }\r\n\r\n OnAddAndLinkRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (gridSubject) {\r\n const selfRelation = gridSubject.Entity.Metadata.Id === this._subjectEntityId;\r\n\r\n const showTypeSelector = () => {\r\n const parentTypeId = this.GetForm().GetScreen().GetTableTypeId();\r\n const typeScreen = new TypeScreen(gridSubject.Entity.Metadata.Id,\r\n selfRelation ? parentTypeId : null,\r\n false);\r\n\r\n typeScreen.On('TYPE_SELECTED', this, async eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n await this.AddAndLinkRecord(typeId, kindId, exampleRecordId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, eventArgs => new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen] && this._form && !this._form.GetScreen().IsInModal()) {\r\n\r\n const profileSelectorScreen = new ProfileSelectorScreen(gridSubject.Entity.Metadata.Id, gridSubject.Entity.Metadata.Name);\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n } else {\r\n showTypeSelector();\r\n }\r\n } else {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n UnlinkMultipleRecords() {\r\n let selectedRows: Array<IUnlinkRecordRequestModel> = [];\r\n let selectedRowsRequestModel: IUnlinkMultipleRecordsRequestModel = null;\r\n\r\n _.each(this._dataModel.Rows, row => {\r\n if (row.IsUnlinkCheckboxChecked) {\r\n let requestRowModel: IUnlinkRecordRequestModel = {\r\n MainEntityId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n RelatedEntityId: row.EntityId,\r\n RelatedRecordId: row.RecordId,\r\n KSeq: row.KSeq,\r\n RelationshipType: row.RelationshipType\r\n };\r\n\r\n if (row.RelationshipType == RelationshipTypes.Parent) {\r\n requestRowModel.MainEntityId = row.EntityId;\r\n requestRowModel.MainRecordId = row.RecordId;\r\n requestRowModel.RelatedEntityId = this._subjectEntityId;\r\n requestRowModel.RelatedRecordId = this._subjectRecordId;\r\n requestRowModel.RelationshipType = row.RelationshipType;\r\n }\r\n\r\n selectedRows.push(requestRowModel);\r\n\r\n selectedRowsRequestModel = {\r\n Rows: selectedRows\r\n }\r\n\r\n //row.IsUnlinkCheckboxChecked = false;\r\n }\r\n });\r\n\r\n const notifier = new Notifier(null);\r\n\r\n if (selectedRowsRequestModel) {\r\n BlockUI.Block();\r\n\r\n GridStore.UnlinkMultipleRecords(selectedRowsRequestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n\r\n if (result.IsSuccessfull) {\r\n if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n\r\n return;\r\n }\r\n\r\n if (this._baseGrid.RowsCount == 0) {\r\n this._toolbar.Paginator().Reset();\r\n } else {\r\n this.LoadData(false);\r\n }\r\n } else if (result.Warnings && result.Warnings.length > 0) {\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n\r\n selectedRowsRequestModel = null;\r\n } else {\r\n notifier.Warning(LABELS.NO_RECORD_SELECTED);\r\n }\r\n }\r\n\r\n ScanAndLinkRecord() {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (!gridSubject) {\r\n new Notifier().Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n return;\r\n }\r\n\r\n const barcodeScanner = new BarcodeScanner({isContinuous: true});\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n const {value} = eventArgs.data;\r\n\r\n const linkedEntityId = gridSubject.Entity.Metadata.Id;\r\n\r\n GridStore.SearchByBarcode({EntityId: linkedEntityId, Barcode: value})\r\n .then(linkedRecordId => {\r\n this.SelectFromLinkRecord({\r\n linkedEntityId,\r\n linkedRecordIds: [linkedRecordId],\r\n isBulkBarcodeScanning: true,\r\n onRecordSelect: () => {\r\n barcodeScanner.Reenable();\r\n }\r\n });\r\n })\r\n .fail(error => {\r\n barcodeScanner.Reenable();\r\n new Notifier().Failed(error.message);\r\n });\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n EnableRecordSelection(){\r\n this._isEnableSelectRecord(true);\r\n }\r\n\r\n DisableRecordSelection(){\r\n this._isEnableSelectRecord(true);\r\n }\r\n\r\n AddQuery() {\r\n BlockUI.Block();\r\n TableStore.Get({TableName: 'QUERIES'}).then((table: any) => {\r\n EntityTypesStore.GetTypes({\r\n EntityId: table.Id,\r\n ParentTypeId: 0,\r\n WithRoot: true,\r\n OnlyEnabled: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(tableTypesModel => {\r\n\r\n let queryType = _.find(tableTypesModel.TableTypes, (type) => {\r\n return type.Name === 'Query';\r\n });\r\n\r\n let searchScreen = new SearchScreen({\r\n EntityId: table.Id,\r\n SearchTerm: '',\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n ButtonAdd: false,\r\n IsAddQueryButton: true,\r\n SearchByTypes: [queryType.Id],\r\n QuerySubjectId: this.GetGridSubject().Entity.Metadata.Id\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.ShowQueryResultScreen(eventArgs.data.RecordId);\r\n });\r\n\r\n searchScreen.Show();\r\n });\r\n });\r\n }\r\n\r\n ShowQueryResultScreen(queryId: number) {\r\n const queryResultPage = new QueryResultPage(true);\r\n queryResultPage.ShowAddQueryResult(queryId);\r\n queryResultPage.On('RECORDS_SELECTED', this, (eventArgs: any) => {\r\n this.LinkRecords(eventArgs.data.SelectedRecords);\r\n });\r\n }\r\n\r\n LinkRecords(selectedRecords: Array<GridRow>) {\r\n const linkedRecordIds = [];\r\n\r\n _.each(selectedRecords, (item: GridRow) => {\r\n linkedRecordIds.push(item.RecordId);\r\n });\r\n\r\n const requestModel: ILinkRecordsRequestModel = {\r\n MainTableId: this._subjectEntityId,\r\n LinkedTableId: this._model().EntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedRecordIds: linkedRecordIds\r\n };\r\n\r\n const notifier = new Notifier();\r\n\r\n if (linkedRecordIds.length > 0) {\r\n BlockUI.Block();\r\n\r\n LinkRecordsStore.LinkWithRecords(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n this.LoadData(false);\r\n notifier.Success(NOTIFICATIONS.RECORDS_LINKED);\r\n this._disabledCopyButton(false);\r\n } else {\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n });\r\n } else {\r\n notifier.Warning(NOTIFICATIONS.NO_SELECTED_RECORDS);\r\n }\r\n }\r\n\r\n GoToRecordScreen(data: any) {\r\n data.IsOpenInModal = data.ShowInModal ? data.ShowInModal : this._form.GetScreen().IsInModal();\r\n data.Owner = this._form.GetScreen();\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.SubjectRecordId && (this._form.GetScreen().IsConsultScreen || this._form.GetScreen().IsPortlet)) {\r\n this._viewMode = ViewModes.TableView;\r\n }\r\n\r\n this._subjectRecordId = value.SubjectRecordId;\r\n this._subjectRecordSpecsModel = value.RecordSpecsModel;\r\n\r\n if (this._isRendered()) {\r\n this.UpdateTableViewList();\r\n }\r\n\r\n this._isRendered.subscribe(() => this.UpdateTableViewList());\r\n }\r\n\r\n SetSubjectRecord(recordId: number) {\r\n this._subjectRecordId = recordId;\r\n }\r\n\r\n EnterKey() {\r\n if (this.Paginator) {\r\n this.Paginator.PageNumber = 1;\r\n }\r\n this.LoadData(false);\r\n }\r\n\r\n SetRecordsPerPage(recordsPerPage: number) {\r\n this.UpdateTableViewList();\r\n this.Paginator.RecordsPerPage = recordsPerPage;\r\n }\r\n\r\n SetPageNumber(pageNumber: number) {\r\n this.Paginator.PageNumber = pageNumber;\r\n }\r\n\r\n AddStyle(name: string, value: string): void {\r\n }\r\n\r\n IsReady: KnockoutObservable<boolean>;\r\n\r\n get Fields() {\r\n return this._model().Fields;\r\n }\r\n\r\n get DesignFields(): KnockoutObservableArray<AttachedFieldModel> {\r\n return this._designFields;\r\n }\r\n\r\n private CopySubEntityRowRecord(rowIndex: number) {\r\n const rowToDuplicate = this._baseGrid.GetRowByIndex(rowIndex);\r\n if (!rowToDuplicate) {\r\n return new Notifier().Warning(NOTIFICATIONS.NOTHING_TO_COPY);\r\n }\r\n\r\n this._baseGrid.DuplicateRow(rowToDuplicate);\r\n }\r\n\r\n private RecreateLatestSubRecord() {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedSubEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n BlockUI.Block();\r\n LinkRecordsStore.CopyLastSubRecord({\r\n MainTableId: subjectEntityId,\r\n SubTableId: relatedSubEntityId,\r\n MainRecordId: subjectRecordId\r\n }).then(() => {\r\n this.LoadData(false);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private CopyLatestSubRecordRow() {\r\n const screen = this._form.GetScreen();\r\n const subjectEntityId = screen.GetEntityId();\r\n const subjectRecordId = screen.GetRecordId();\r\n const relatedSubEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n BlockUI.Block();\r\n LinkRecordsStore.GetLastSubRecordSpecs({\r\n SubTableId: relatedSubEntityId,\r\n MainRecordId: subjectRecordId\r\n }).then(recordSpecs => {\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n\r\n TableViewId: this.ScreenType === ScreenTypes[ScreenTypes.Portlet] ?\r\n 0 :\r\n this._tableView() ? this._tableView().Id : 0,\r\n\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: this.Paginator.PageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n GridSubjectRecordIds: [recordSpecs.SequenceId]\r\n };\r\n\r\n this._loadInProgress(true);\r\n GridStore.GetData(requestModel)\r\n .then(gridDataModel => {\r\n this._baseGrid.AddRowsFrom(gridDataModel);\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n })\r\n .always(() => {\r\n this._loadInProgress(false);\r\n });\r\n }).fail(err => {\r\n new Notifier().Failed(err.message);\r\n }).always(() => {\r\n BlockUI.Unblock()\r\n });\r\n }\r\n\r\n private async AddAndSubGidLinkRecord(\r\n tableTypeId: number,\r\n kindId: number,\r\n exampleRecordId: number,\r\n mainEntityId: number,\r\n mainRecordId: number,\r\n mainRecordStatusId: number,\r\n relatedEntityId: number\r\n ) {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: relatedEntityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: mainRecordStatusId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n\r\n } else {\r\n editScreen.SaveImmediately = false;\r\n screen.On('READY_TO_SAVE', this, (eventArgs) => {\r\n this.LinkSubGridCreatedRecord(eventArgs.data, mainEntityId, mainRecordId, relatedEntityId);\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n });\r\n\r\n }\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n private async CopyLinkedRecord(linkRecordSpecs: { TypeId: number, KindId: number, RecordId: number, IsCorrectDirection: boolean }, dataMode: DataModes) {\r\n const linkedEntityId = this.GetGridSubject().Entity.Metadata.Id;\r\n\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: linkedEntityId,\r\n TableTypeId: linkRecordSpecs.TypeId,\r\n KindId: linkRecordSpecs.KindId,\r\n RecordId: linkRecordSpecs.RecordId,\r\n LoadAsExample: true,\r\n DataMode: dataMode\r\n }).always(() => {\r\n BlockUI.Unblock()\r\n }).then((screen: EditScreen) => {\r\n screen.IsDataFromExample = true;\r\n\r\n let subjectAlreadyLinked = false;\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen] && screen.GetControl(CONTROL_TYPES.LinkList) && linkRecordSpecs.IsCorrectDirection === false) {\r\n screen.On('LINK_LIST_DATA_LOADED',\r\n this,\r\n eventArgs => {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n let model = _.find(linkListControl.DataModel().Entities(), entity => entity.EntityId === this._form.GetScreen().GetEntityId());\r\n if (model) {\r\n linkListControl.AfterSelectRecord([this._form.GetScreen().GetRecordId()], model);\r\n subjectAlreadyLinked = true;\r\n }\r\n });\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, eventArgs => {\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n if (subjectAlreadyLinked) {\r\n return this.LoadData(false);\r\n }\r\n return this.LinkCreatedRecord(eventArgs.data, !linkRecordSpecs.IsCorrectDirection);\r\n }\r\n\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n this.LinkForEditScreen({ recordIds: eventArgs.data.RecordId, updateLinkRecord: false });\r\n }\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n private async AddAndLinkRecord(tableTypeId: number, kindId: number, exampleRecordId: number) {\r\n const gridSubject = this.GetGridSubject();\r\n const globalManager = GlobalManager.Instance;\r\n const actionGlobal = globalManager.GetGlobal(GLOBALS.ACTION_TABLE);\r\n const actionSubjectRecord = gridSubject.Entity.Metadata.Name === actionGlobal\r\n ? new ActionSubjectRecordModel(this._subjectEntityId, this._subjectRecordId)\r\n : null;\r\n if (gridSubject) {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: gridSubject.Entity.Metadata.Id,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: this._subjectRecordSpecsModel.LifeStatusInfo.Id,\r\n ActionSubjectRecord: actionSubjectRecord\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n //TODO refactor\r\n if (this.ScreenType === ScreenTypes[ScreenTypes.EditScreen]) {\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: this._model().Id,\r\n\r\n TableViewId: this.ScreenType === ScreenTypes[ScreenTypes.Portlet] ?\r\n 0 :\r\n this._tableView() ?\r\n this._tableView().Id : 0,\r\n\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._subjectRecordId,\r\n SubjectTypeId: 0,\r\n SubjectKindId: 0,\r\n SubjectStatusId: 0,\r\n ViewMode: this._viewMode,\r\n PageNumber: this.Paginator.PageNumber,\r\n RecordsPerPage: this.Paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n SearchPhrase: this._searchPhrase(),\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n SelectedTags: this._selectedTags,\r\n GridSubjectRecordIds: [eventArgs.data.RecordId]\r\n };\r\n\r\n this._loadInProgress(true);\r\n GridStore.GetData(requestModel)\r\n .always(() => {\r\n this._loadInProgress(false);\r\n })\r\n .then(gridDataModel => {\r\n let rows = this._baseGrid.AddLinkedRows(gridDataModel);\r\n\r\n let firstRow = _.first(rows);\r\n if (firstRow) {\r\n const subjectEntityId = this._form.GetScreen().GetEntityId();\r\n const subjectRecordId = this._form.GetScreen().GetRecordId();\r\n const subjectRecordTypeId = this._form.GetScreen().GetTableTypeId();\r\n const subjectRecordKindId = this._form.GetScreen().GetKindId();\r\n\r\n let loadScreenRelationModel: ILoadScreenRelationModel = {\r\n MainRecordId: subjectRecordId,\r\n MainEntityId: subjectEntityId,\r\n MainRecordTypeId: subjectRecordTypeId,\r\n MainRecordKindId: subjectRecordKindId,\r\n RelatedEntityId: firstRow.EntityId,\r\n RelatedRecordId: firstRow.RecordId,\r\n RelatedRecordTypeId: firstRow.RecordTypeId,\r\n KSeq: firstRow.KSeq\r\n };\r\n this.UpdateLinkRecordGeneral(loadScreenRelationModel, firstRow, true);\r\n }\r\n this._disabledCopyButton(false);\r\n });\r\n });\r\n } else if (gridSubject.Entity.Metadata.Id === this._subjectEntityId) {\r\n editScreen.SaveImmediately = false;\r\n screen.On('READY_TO_SAVE', this, (eventArgs) => {\r\n this.LinkCreatedRecord(eventArgs.data);\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n this._disabledCopyButton(false);\r\n });\r\n } else {\r\n if (screen.GetControl(CONTROL_TYPES.LinkList)) {\r\n screen.On('LINK_LIST_DATA_LOADED',\r\n this,\r\n eventArgs => {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n let model = _.find(linkListControl.DataModel().Entities(), entity => entity.EntityId === this._subjectEntityId);\r\n if (model) {\r\n linkListControl.AfterSelectRecord([this._subjectRecordId], model);\r\n editScreen.SaveImmediately = true;\r\n } else {\r\n editScreen.SaveImmediately = false;\r\n }\r\n });\r\n } else {\r\n editScreen.SaveImmediately = false;\r\n }\r\n\r\n screen.On('READY_TO_SAVE', this, eventArgs => this.LinkCreatedRecord(eventArgs.data));\r\n\r\n screen.On('RECORD_SAVED',\r\n this,\r\n () => {\r\n this.LoadData(false);\r\n });\r\n }\r\n screen.ShowInModal();\r\n });\r\n } else {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n private LinkCreatedRecord(record: DataModel, isSubjectChild?: boolean) {\r\n const gridSubject = this.GetGridSubject();\r\n\r\n if (gridSubject) {\r\n const linkRecordModel = isSubjectChild === true\r\n ? {\r\n MainTableId: gridSubject.Entity.Metadata.Id,\r\n LinkedTableId: this._subjectEntityId,\r\n LinkedRecordId: this._subjectRecordId\r\n }\r\n : {\r\n MainTableId: this._subjectEntityId,\r\n MainRecordId: this._subjectRecordId,\r\n LinkedTableId: gridSubject.Entity.Metadata.Id\r\n };\r\n\r\n const addAndLinkRecordModel: INewLinkedRecord = {\r\n InsertOrUpdateRecordModel: record,\r\n LinkRecordModel: linkRecordModel\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n RecordLinker.AddAndLinkRecord(addAndLinkRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n\r\n return;\r\n }\r\n\r\n notifier.Success(result.OperationMessage);\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, (eventArgs) => {\r\n let typeId = this.GetForm().GetScreen().GetTableTypeId();\r\n this.UpdateLinkRecordById(gridSubject.Entity.Metadata.Id, result.ResultObject.RecordId, typeId, result.ResultObject.Kseq);\r\n });\r\n });\r\n }\r\n }\r\n\r\n private LinkSubGridCreatedRecord(record: DataModel, mainEntityId: number, mainRecordId: number, relatedEntityId: number) {\r\n const addAndLinkRecordModel: INewLinkedRecord = {\r\n InsertOrUpdateRecordModel: record,\r\n LinkRecordModel: {\r\n MainTableId: mainEntityId,\r\n MainRecordId: mainRecordId,\r\n LinkedTableId: relatedEntityId\r\n }\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n RecordLinker.AddAndLinkRecord(addAndLinkRecordModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n if (!result.IsSuccessfull) {\r\n notifier.Failed(result.ErrorMessage);\r\n } else {\r\n\r\n notifier.Success(result.OperationMessage);\r\n this.LoadData(false);\r\n\r\n this.One('DATA_LOADED', this, () => {\r\n let typeId = this.GetForm().GetScreen().GetTableTypeId();\r\n\r\n UserVarsManager.Instance.AddRecent(relatedEntityId, result.ResultObject.RecordId, typeId);\r\n this.UpdateLinkRecordById(relatedEntityId, result.ResultObject.RecordId, typeId, result.ResultObject.Kseq);\r\n });\r\n }\r\n });\r\n }\r\n\r\n get IsEditAll(): boolean {\r\n return this._baseGrid.IsSubEntity && this.GeneralProperties.GetPropertyValue(PROPERTIES.EDIT_ALL);\r\n }\r\n\r\n FilterByTags(selectedTags: any) {\r\n this._selectedTags = selectedTags;\r\n this.LoadData(false);\r\n }\r\n\r\n GetRecordIds(): Array<number> {\r\n return this._baseGrid.GetRecordIds();\r\n }\r\n\r\n\r\n GetAllRecordKeys() {\r\n return this._baseGrid.GetAllRecordKeys();\r\n }\r\n\r\n GetSelectRecords(): Array<GridRow> {\r\n return this._baseGrid.GetSelectRecords();\r\n }\r\n\r\n Serialize(): Array<GridRowDataModel> {\r\n return this._baseGrid.SerializeRows();\r\n }\r\n\r\n SerializeLinkEditorData() {\r\n return this._baseGrid.SerializeLinkEditorData();\r\n }\r\n\r\n private UpdateLinkRecordById(\r\n relatedEntityId: number,\r\n relatedRecordId: number,\r\n relatedRecordTypeId: number,\r\n sequence?: number,\r\n mainEntityId?: number,\r\n mainRecordId?: number\r\n ) {\r\n let seq = !!sequence ? sequence : 0;\r\n\r\n if (this._isLinkEditorEnabled) {\r\n this.UpdateLinkRecord(relatedEntityId, relatedRecordId, relatedRecordTypeId, seq, 0, mainEntityId, mainRecordId, null, true);\r\n } else if (this._refreshScreenAfterManipulations) {\r\n this.GetForm().GetScreen().Refresh();\r\n }\r\n }\r\n\r\n FormatControlName(control: ControlModel) {\r\n let translatedName = _.find(control.NameTranslations, (translation) => translation.Selected);\r\n if (translatedName && translatedName.Translation !== null && translatedName.Translation !== '') {\r\n return translatedName.Translation;\r\n } else {\r\n return !!control.Label ? control.Label : control.Name;\r\n }\r\n }\r\n\r\n FormatFieldName(field: AttachedFieldModel) {\r\n let entityName: KnockoutObservable<string> = ko.observable(null);\r\n let fieldName: KnockoutObservable<string> = ko.observable(null);\r\n\r\n entityName(field.EntityNameTranslation || field.EntityName);\r\n fieldName(field.FieldNameTranslation || field.Name);\r\n\r\n return `${entityName()}.${fieldName()}`;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._baseGrid && this._baseGrid.HasEditRows()) {\r\n this._errorMessage('Please save record');\r\n this._isValid(false);\r\n } else {\r\n this._errorMessage('');\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n SaveEditRows() {\r\n this._baseGrid.SaveEditRows();\r\n }\r\n\r\n ReleaseLockRows() {\r\n this._baseGrid.ReleaseLockRows();\r\n }\r\n\r\n private ExportData(destination: string) {\r\n const recordId = this.GetForm().GetScreen().GetRecordId();\r\n\r\n const exportParams: IExportDataRequestModel = {\r\n Query: this._queryExpression,\r\n Destination: destination,\r\n ViewMode: this._viewMode,\r\n FilterByOwners: this._filterByOwners,\r\n RecordOwners: this._selectedUsers,\r\n ShowPlanned: this._showPlanned,\r\n RecordId: recordId,\r\n ShowRetired: this._showRetiredRecords\r\n };\r\n\r\n BlockUI.Block();\r\n\r\n GridStore.ExportData(exportParams)\r\n .always(() => BlockUI.Unblock())\r\n .then((fileName: string) => FileDownloader.DownloadFile(fileName))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n TogglePriorities(state) {\r\n const subjectEntityId = this.GetForm() && this.GetForm().GetScreen().GetEntityId();\r\n const gridSubjectEntityId = this._viewMode === ViewModes.ListView ? 0 : this._model().EntityId;\r\n !MobileChecker.IsMobile() && this._userVarsManager.SetGridPriority(this._subjectEntityId ? this._subjectEntityId : subjectEntityId, gridSubjectEntityId, state);\r\n this._isPrioritiesDisabled = state;\r\n this.LoadData(false);\r\n }\r\n\r\n BulkEdit() {\r\n this._baseGrid.ShowBulkEditor();\r\n }\r\n\r\n private ListenForWrapperResize() {\r\n const gridContainerWrapper = this._el.querySelector<HTMLDivElement>('.grid-relative-container');\r\n const resizeObserver = new ResizeObserver(() => {\r\n $(gridContainerWrapper)\r\n .find('.flex-grid-nested-table')\r\n .each((index, element) => {\r\n $(element).width(\r\n $(gridContainerWrapper).width() - $(element).parents('.flex-grid-nested-table').length * 6 - 14\r\n );\r\n });\r\n });\r\n resizeObserver.observe(gridContainerWrapper);\r\n }\r\n\r\n GetInlineControls() {\r\n var result = [];\r\n _.each(this._subControls(), (subControl) => {\r\n if (subControl.GetType() === CONTROL_TYPES.GenericButton || subControl.GetType() === CONTROL_TYPES.ButtonTemplate || subControl.GetType() === CONTROL_TYPES.ButtonPlan ) {\r\n var control = subControl as BaseControl;\r\n\r\n if(subControl.GetType() === CONTROL_TYPES.ButtonPlan){\r\n result.push(subControl.Clone());\r\n }else{\r\n let position = control.GeneralProperties.GetPropertyValue('Position');\r\n \r\n if (position && position.Value === 'Row') {\r\n if(subControl.GetType() === CONTROL_TYPES.ButtonTemplate){\r\n result.push(subControl);\r\n }else{\r\n result.push(subControl.Clone());\r\n } \r\n }\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n GetToolbarControls() {\r\n var result = [];\r\n _.each(this._subControls(), (subControl) => {\r\n if (subControl.GetType() === CONTROL_TYPES.GenericButton || subControl.GetType() === CONTROL_TYPES.ButtonTemplate) {\r\n var control = subControl as BaseControl;\r\n let position = control.GeneralProperties.GetPropertyValue('Position'); \r\n\r\n if (position && position.Value === 'Menu') {\r\n if(subControl.GetType() === CONTROL_TYPES.ButtonTemplate){\r\n result.push(subControl);\r\n }else{\r\n result.push(subControl.Clone());\r\n } \r\n }\r\n }\r\n\r\n if (subControl.GetType() === CONTROL_TYPES.Basket || subControl.GetType() === CONTROL_TYPES.SpimCopy || subControl.GetType() === CONTROL_TYPES.ButtonCopy) {\r\n result.push(subControl);\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n SetQuery(query: QueryExpressionModel) {\r\n this._queryExpression = query;\r\n }\r\n\r\n get BaseGrid(): BaseGrid {\r\n return this._baseGrid;\r\n }\r\n\r\n Dispose() {\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n }\r\n\r\n get HasData(): boolean {\r\n return this._hasData;\r\n }\r\n\r\n get Paginator(): Paginator {\r\n return this._toolbar.Paginator();\r\n }\r\n\r\n get TotalRecords(): number{\r\n return this._toolbar.Paginator().TotalRecords + this._baseGrid.NewRows; \r\n }\r\n\r\n ShouldShowBottomPagination() {\r\n return this.ScreenType === ScreenTypes[ScreenTypes.ListScreen]\r\n || this.ScreenType === ScreenTypes[ScreenTypes.SpecialScreen]\r\n || this.ScreenType === ScreenTypes[ScreenTypes.Dashboard];\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"FormDesignerView\\\"> <fieldset class=\\\"group-control grid parent-control\\\"> <legend class=\\\"group-control-label\\\"> <span> <!-- ko with: Model --> <!--ko text: $parent.FormatControlName($data) --><!-- /ko --> <!-- /ko --> </span> </legend> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_designFields().length --> <div class=\\\"group-control-placeholder\\\"><!--ko text: _labels.FIELDS --><!-- /ko --></div> <!-- /ko --> <div data-bind=\\\"dragula: { data: DesignFields,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropFieldIntoGrid.bind($root, $data) }\\\" class=\\\"tab-drop-container\\\"> <div class=\\\"alert alert-warning draggable-field position-r\\\" data-bind=\\\"css: { 'relatedField': $data.RelatedField, 'subTableField': $data.SubTableField}\\\"> <div data-bind=\\\"click: $root.RemoveField.bind($root, $data, $parent), preventBubble: ['click']\\\" class=\\\"close-wrapper\\\"> <span class=\\\"close remove-control\\\" data-bind=\\\"attr: { title: $parent._labels.REMOVE_CONTROL }\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </div> <span class=\\\"format-field-name\\\"> <!--ko text: $parent.FormatFieldName($data) --><!-- /ko --> </span> </div> </div> </div> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_subControls().length --> <div class=\\\"group-control-placeholder\\\"><!--ko text: _labels.CONTROLS --><!-- /ko --></div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropControl.bind($root) }\\\" subControls class=\\\"tab-drop-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </fieldset> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgres, css: {'has-error': !$data._isValid()}\\\" class=\\\"row-no-margin atesting-grid-container\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage }\\\" class=\\\"fa fa-warning control-tooltip\\\"></i> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._guid}\\\" class=\\\"toolbar-wrapper\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _baseGrid --> <div class=\\\"grid-container-wrapper\\\" data-bind=\\\"visible: _isReady\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-th\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs, serialize} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nexport class EntityMetadataModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Fields = [];\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n\r\n\t@deserialize\r\n\tIsView: boolean;\r\n\r\n\t@deserialize\r\n\tLifestatus: string;\r\n\r\n\t@deserializeAs(FieldMetadataModel)\r\n\tFields: Array<FieldMetadataModel>;\r\n}","import { deserialize, deserializeAs, serialize } from 'libs/cerialize';\r\n\r\nexport function extractLookupValFieldMetadata(fieldMetadata: FieldMetadataModel) {\r\n\treturn (\r\n\t\tfieldMetadata.LookupTable &&\r\n\t\tfieldMetadata.LookupTable.Fields.find(lookupTableField => lookupTableField.Id === fieldMetadata.ValFieldId)\r\n\t);\r\n}\r\n\r\nexport class FieldMetadataModel {\r\n\tconstructor(){\r\n\t\tthis.FormatName = '';\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tType: string;\r\n\r\n\t@deserialize\r\n\tFormatName: string;\r\n\r\n\t@deserialize\r\n\tAllowCustomValue: boolean;\r\n\r\n\t@deserialize\r\n\tAllowCreatingRecords: boolean;\r\n\r\n\t@deserialize\r\n\tIsVirtual: boolean;\r\n\r\n\t@deserialize\r\n\tIsSystem: boolean;\r\n\r\n\t@deserialize\r\n\tIsReadOnly: boolean;\r\n\r\n\t@deserialize\r\n\tIsPrimaryKey: boolean;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tAllowInsert: boolean;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValTableName: string;\r\n\r\n\t@deserialize\r\n\tValTableType: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tIsClustered: boolean;\r\n\r\n\t@deserialize\r\n\tIsCustom: boolean;\r\n\r\n\t@deserialize\r\n ValFieldId: number;\r\n\r\n\t@deserialize\r\n DependsOn: number;\r\n\r\n\t@deserialize\r\n FilledById: number;\r\n\r\n\t@deserialize\r\n LookupTable: any;\r\n\r\n @deserialize\r\n Lifestatus: number;\r\n\r\n @deserialize\r\n LifestatusName: string;\r\n\r\n\t@deserialize\r\n HyperlinkEntityId: number;\r\n\r\n\t@deserialize\r\n HasSortDescription: boolean;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {ReferenceModel} from \"Core/ScreenManager/Models/ReferenceModel\";\r\nimport {IconModel} from \"../../../BaseControl/Models/IconModel\";\r\nimport {FeatureTypes} from \"../../../../Common/Enums/FeatureTypes\";\r\n\r\nexport class RecordKey {\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n FieldId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n QueryEntityGuid: string;\r\n}\r\n\r\nexport interface IRecordModel {\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport class TranslationModel {\r\n @deserialize\r\n LanguageId: number;\r\n\r\n @deserialize\r\n Value: string;\r\n}\r\n\r\nexport class CurrencyModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsoCode: string;\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n}\r\n\r\nexport class CurrencyValueModel {\r\n @deserializeAs(CurrencyModel)\r\n Currency: CurrencyModel;\r\n\r\n @deserialize\r\n RateDate: string;\r\n\r\n @deserialize\r\n Value: number;\r\n}\r\n\r\nexport class ConvertedCurrencyModel {\r\n\r\n @deserializeAs(CurrencyValueModel)\r\n Origin: CurrencyValueModel;\r\n\r\n @deserializeAs(CurrencyValueModel)\r\n Converted: CurrencyValueModel;\r\n}\r\n\r\nexport class DocumentValueModel {\r\n @deserialize\r\n IsEnableSwitchVersion: boolean;\r\n}\r\n\r\nexport class SpimValueModel {\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n FeatureType: string = null;\r\n\r\n @deserialize\r\n AlphaNumericValue: number = null;\r\n\r\n @deserialize\r\n AlphaNumericDisplayValue: string = null;\r\n\r\n @deserialize\r\n NumericValue: number = null;\r\n\r\n @deserialize\r\n LogicalValue: boolean = null;\r\n\r\n @deserialize\r\n RangeLow: number = null;\r\n\r\n @deserialize\r\n RangeHigh: number = null;\r\n\r\n get IsNumeric() {\r\n return this.FeatureType === FeatureTypes.Numeric;\r\n }\r\n\r\n get IsAlphaNumeric() {\r\n return this.FeatureType === FeatureTypes.AlphaNumeric;\r\n }\r\n\r\n get IsLogic() {\r\n return this.FeatureType === FeatureTypes.Logic;\r\n }\r\n\r\n get IsRange() {\r\n return this.FeatureType === FeatureTypes.Range;\r\n }\r\n\r\n get FeatureTypeIsSet() {\r\n return !!this.FeatureType;\r\n }\r\n}\r\n\r\nexport class GridCellValueModel {\r\n\r\n constructor() {\r\n this.Details = [];\r\n this.CrossWrapped = [];\r\n this.RecordKeys = [];\r\n }\r\n\r\n @deserialize\r\n HasDescription: boolean;\r\n\r\n @deserializeAs(ConvertedCurrencyModel)\r\n Currency: ConvertedCurrencyModel;\r\n\r\n @deserializeAs(SpimValueModel)\r\n Spim: SpimValueModel;\r\n\r\n @deserializeAs(DocumentValueModel)\r\n Document: DocumentValueModel;\r\n\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n Values: any;\r\n\r\n @deserialize\r\n DisplayValue: string;\r\n\r\n @deserializeAs('DisplayValue')\r\n OriginalDisplayValue: string;\r\n\r\n TranslatedValue: string;\r\n\r\n @deserializeAs(RecordKey)\r\n RecordKeys: Array<RecordKey>;\r\n\r\n @deserializeAs(GridCellValueModel)\r\n Details: Array<GridCellValueModel>;\r\n\r\n @deserializeAs(GridCellValueModel)\r\n CrossWrapped: Array<GridCellValueModel>;\r\n\r\n @deserializeAs(ReferenceModel)\r\n Reference: ReferenceModel;\r\n\r\n @deserialize\r\n IsHyperLink: boolean;\r\n\r\n @deserialize\r\n RecordTypeId: number;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n\r\n @deserialize\r\n WrapGroup: boolean;\r\n\r\n @deserialize\r\n IsSortDescription: boolean;\r\n\r\n @deserialize\r\n IsGroup: boolean;\r\n\r\n @deserialize\r\n IsEnableEdit: boolean;\r\n\r\n @deserialize\r\n QueryColumnGuid: string;\r\n\r\n @deserialize\r\n DisplayPriority: number;\r\n\r\n @deserialize\r\n IsEnableMail: boolean;\r\n\r\n @deserialize\r\n IsCrossValue: boolean;\r\n\r\n @deserialize\r\n IsCrossRow: boolean;\r\n\r\n MaxRowHeight: string;\r\n\r\n FieldMetadata: FieldMetadataModel;\r\n\r\n EntityMetadata: EntityMetadataModel;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserialize\r\n Flags: number;\r\n\r\n @deserializeAs(TranslationModel)\r\n Translations: TranslationModel[];\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n\r\n width?: any;\r\n\r\n GetRecordIds(): IRecordModel {\r\n if (this.RecordKeys && this.RecordKeys[0]) {\r\n return {\r\n EntityId: this.RecordKeys[0].EntityId,\r\n RecordId: this.RecordKeys[0].RecordId\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n @deserialize\r\n RelationType: RelationTypeModel;\r\n\r\n @deserialize\r\n HyperlinkRecordId: number;\r\n\r\n SortDirection: number;\r\n}\r\n\r\nexport interface RelationTypeModel {\r\n Id: number;\r\n Name: string;\r\n HasNext: boolean;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\n\r\nexport class GridColumnModel {\r\n\tconstructor() {\r\n\t\tthis.SortDirection = Number(SortOrder.Both);\r\n\t}\r\n\r\n\t@deserialize\r\n\tGroupTitle: string;\r\n\r\n\t@deserialize\r\n\tTitle: string;\r\n\r\n\t@deserialize\r\n\tAlias: string;\r\n\r\n\t@deserialize\r\n\tIsWrapped: boolean;\r\n\r\n\t@deserialize\r\n\tIsSortDescription: boolean\r\n\r\n\t@deserialize\r\n\tIsGroup: boolean;\r\n\r\n\t@deserialize\r\n\tIsEnableEdit: boolean;\r\n\r\n\t@deserialize\r\n\tDisplayPriority: number;\r\n\r\n\t@deserialize\r\n\tDisplayOrder: number;\r\n\r\n\t@deserialize\r\n\tIsEnableSort: boolean;\r\n\r\n\t@deserialize\r\n\tSortDirection: number;\r\n\r\n\t@deserializeAs(FieldMetadataModel)\r\n\tFieldMetadata: FieldMetadataModel;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n\r\n\t@deserialize\r\n\tQueryColumnGuid: string;\r\n\r\n\twidth?: number; // max text width of column\r\n\r\n\tadditionalWidth: number; // additional width for calculation elements inside header column\r\n\r\n\tstyleWidth: any; // calculated style width based on additionalWidth and width properties\r\n\r\n\t@deserialize\r\n\tIsEnableFastFilter: boolean;\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class GridTotalCellValueModel {\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n\r\n @deserialize\r\n QueryColumnGuid: string;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridTotalCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalCellValueModel';\r\n\r\nexport class GridTotalRowModel {\r\n\r\n\t@deserializeAs(GridTotalCellValueModel)\r\n\tData: Array<GridTotalCellValueModel>;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class GridCountCellValueModel {\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n\r\n @deserialize\r\n QueryColumnGuid: string;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridCountCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridCountCellValueModel';\r\n\r\nexport class GridCountRowModel {\r\n\r\n\t@deserializeAs(GridCountCellValueModel)\r\n\tData: Array<GridCountCellValueModel>;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class GridAverageCellValueModel {\r\n @deserialize\r\n Value: string;\r\n\r\n @deserialize\r\n IsWrapped: boolean;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridAverageCellValueModel} from 'Core/Controls/Grid/Models/GridDataModel/GridAverageCellValueModel';\r\n\r\nexport class GridAverageRowModel {\r\n\r\n\t@deserializeAs(GridAverageCellValueModel)\r\n\tData: Array<GridAverageCellValueModel>;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.Data = [];\r\n\t}\r\n}","import {GridRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridRowModel';\r\nimport {GridTotalRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridTotalRowModel';\r\nimport {GridCountRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridCountRowModel';\r\nimport {GridColumnModel} from 'Core/Controls/Grid/Models/GridDataModel/GridColumnModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GridAverageRowModel} from 'Core/Controls/Grid/Models/GridDataModel/GridAverageRowModel';\r\nimport { ScreenModel } from '../../../../Models/Screens/ScreenModel';\r\n\r\nexport class GridDataModel {\r\n\t@deserialize\r\n\tTotalRecords: number;\r\n\r\n\t@deserializeAs(GridColumnModel)\r\n\tColumns: Array<GridColumnModel>;\r\n\r\n\t@deserializeAs(GridRowModel)\r\n\tRows: Array<GridRowModel>;\r\n\r\n\t@deserializeAs(GridTotalRowModel)\r\n\tTotalRow: GridTotalRowModel;\r\n\r\n\t@deserializeAs(GridCountRowModel)\r\n\tCountRow: GridCountRowModel;\r\n\r\n\t@deserializeAs(GridAverageRowModel)\r\n\tAverageRow: GridAverageRowModel;\r\n\r\n\t@deserializeAs(GridTotalRowModel)\r\n\tTotalGroupRows: Array<GridTotalRowModel>;\r\n\r\n\t@deserializeAs(GridAverageRowModel)\r\n\tAverageGroupRows: Array<GridAverageRowModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Columns = [];\r\n\t\tthis.Rows = [];\r\n\t\tthis.TotalGroupRows = [];\r\n\t\tthis.AverageGroupRows = [];\r\n\t\tthis.ScreenRows = [];\r\n\t}\r\n\r\n\t@deserializeAs(QueryExpressionModel)\r\n\tQueryExpression: QueryExpressionModel;\r\n\r\n\t@deserialize\r\n\tSubjectRecordId: number;\r\n\r\n\t@deserialize\r\n\tSubjectEntityId: number;\r\n\r\n\t@deserialize\r\n\tIsLinkingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsAddAndLinkAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsExportDataAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsScanAndLinkAllowed: boolean;\r\n\r\n\t@deserialize\r\n IsLinkEditorEnabled: boolean;\r\n\r\n\t@deserialize\r\n IsLinkJoin: boolean;\r\n\t\r\n @deserialize\r\n IsDirectionCorrect?: boolean;\r\n\r\n @deserialize\r\n HasOneParent: boolean;\r\n\r\n\t@deserialize\r\n\tGridSubjectEntityId: number;\r\n\r\n\t@deserialize\r\n\tGridSubjectEntityType: string;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tGridSubjectEntityMetadata: EntityMetadataModel;\r\n\r\n\tGridParentEntityId: number;\r\n\r\n\t@deserialize\r\n\tSubQueryGuid: string;\r\n\r\n\t@deserializeAs(ScreenModel)\r\n\tScreenRows: Array<ScreenModel>;\r\n\r\n} ","import { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport clone from 'clone';\r\n\r\nimport {deserialize, deserializeAs, Deserialize} from 'libs/cerialize';\r\nimport {GridCellValueModel, IRecordModel, RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {RightsModel} from 'Core/ScreenManager/Models/RightsModel';\r\n\r\nexport class GridRowModel {\r\n\r\n constructor() {\r\n this.Data = [];\r\n this.NestedData = [];\r\n this.Rights = new RightsModel();\r\n this.Rights.IsEditingAllowed = true;\r\n this.RecordKeys = [];\r\n this.IsUnlinkCheckboxChecked = false;\r\n this.ProcessCardsLifeStatuses = [];\r\n }\r\n\r\n NestedData: any;\r\n\r\n TypeId?: number;\r\n\r\n @deserialize\r\n KindId?: number;\r\n\r\n @deserializeAs(GridCellValueModel)\r\n Data: Array<GridCellValueModel>;\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n IsGroup: boolean;\r\n\r\n @deserialize\r\n RecordTypeId: number;\r\n\r\n @deserialize\r\n LifestatusId: number;\r\n\r\n @deserialize\r\n IsStartGroup: boolean;\r\n\r\n @deserialize\r\n IsEndGroup: boolean;\r\n\r\n @deserialize\r\n HideToggleDisableButton: boolean;\r\n\r\n @deserialize\r\n KSeq: number;\r\n\r\n @deserialize\r\n IsRetired: boolean;\r\n\r\n @deserialize\r\n KSeqs: Array<number>;\r\n\r\n @deserialize\r\n GroupGuid: string;\r\n\r\n @deserialize\r\n IsUnlinkCheckboxChecked: boolean;\r\n\r\n static OnDeserialized(instance: GridRowModel, json: any): void {\r\n const gridDataModel = require('Core/Controls/Grid/Models/GridDataModel/GridDataModel').GridDataModel;\r\n instance.NestedData = Deserialize(json.NestedData, gridDataModel);\r\n }\r\n\r\n GetRecordModelIds(): Array<IRecordModel> {\r\n return this.Data.map(model => model.GetRecordIds());\r\n }\r\n\r\n Clone() {\r\n return clone(this);\r\n }\r\n\r\n @deserializeAs(RightsModel)\r\n Rights: RightsModel;\r\n\r\n @deserialize\r\n RelationshipType: number;\r\n\r\n @deserializeAs(RecordKey)\r\n RecordKeys: Array<RecordKey>;\r\n\r\n @deserialize\r\n RowId: string;\r\n\r\n @deserialize\r\n ParentRowId: string;\r\n\r\n @deserializeAs(LifeStatusSimpleModel)\r\n ProcessCardsLifeStatuses: Array<LifeStatusSimpleModel>;;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\n\r\nexport class RelatedEntityMetadataModel {\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tLinkEntityMetadata: EntityMetadataModel;\r\n}\r\n\r\nexport class RelatedSubEntityMetadataModel {\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n}\r\n\r\nexport class EntityRelationshipsMetadataModel {\r\n\tconstructor() {\r\n\t\tthis.RelatedEntitiesMetadata = [];\r\n\t\tthis.RelatedSubEntitiesMetadata = [];\r\n\t\tthis.ReferenceEntities = [];\r\n\t\tthis.TablesRelatedToLookup = [];\r\n\t}\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tEntityMetadata: EntityMetadataModel;\r\n\r\n\t@deserializeAs(RelatedEntityMetadataModel)\r\n\tRelatedEntitiesMetadata: Array<RelatedEntityMetadataModel>;\r\n\r\n\t@deserializeAs(RelatedSubEntityMetadataModel)\r\n\tRelatedSubEntitiesMetadata: Array<RelatedSubEntityMetadataModel>;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tReferenceEntities: Array<EntityMetadataModel>;\r\n\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tTablesRelatedToLookup: Array<EntityMetadataModel>;\r\n}","import {deserialize, deserializeAs, serialize} from 'libs/cerialize';\r\n\r\nexport class CanvasPositionModel {\r\n\tconstructor() {\r\n\t\tthis.Top = 0;\r\n\t\tthis.Left = 0;\r\n\t\tthis.ZIndex = 0;\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tTop: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tLeft: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tZIndex: number;\r\n}","import { deserialize, deserializeAs, serialize } from 'libs/cerialize';\r\n\r\nexport class CanvasSizeModel {\r\n\tconstructor() {\r\n\t\tthis.Height = '0';\r\n\t\tthis.Width = '0';\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tHeight: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tWidth: string;\r\n}","import { deserialize, serialize } from 'libs/cerialize';\r\n\r\nexport class GenericButtonConfigModel {\r\n @serialize\r\n @deserialize\r\n QueryEntityGuid: string;\r\n\r\n @serialize\r\n @deserialize\r\n EntityId: number;\r\n\r\n @serialize\r\n @deserialize\r\n FieldId: number;\r\n\r\n @serialize\r\n @deserialize\r\n GenericButtonId: number;\r\n}","import { deserialize, deserializeAs, serialize, serializeAs} from 'libs/cerialize';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { Guid } from 'Core/Common/Guid';\r\n\r\nexport class CrossValueSettingsModel {\r\n\tconstructor(partial?: Partial<CrossValueSettingsModel>) {\r\n\t\tif (partial) {\r\n\t\t\tthis.RelationTypeValueId = partial.RelationTypeValueId;\r\n\t\t\tthis.ShowNexRelationButton = partial.ShowNexRelationButton;\r\n\t\t\tthis.ShowEditRelationButton = partial.ShowEditRelationButton;\r\n\t\t}\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tRelationTypeValueId: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tShowNexRelationButton: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tShowEditRelationButton: boolean;\r\n}\r\n\r\nexport class QueryColumnModel {\r\n\r\n\tconstructor(){\r\n\t\tthis.CrossValueSettings = [];\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.DisplayFields = [];\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tQueryEntityGuid: string;\r\n\r\n\t@serializeAs(FieldMetadataModel)\r\n\t@deserializeAs(FieldMetadataModel)\r\n\tMetadata: FieldMetadataModel;\r\n\r\n\t@serializeAs(CrossValueSettingsModel)\r\n\t@deserializeAs(CrossValueSettingsModel)\r\n\tCrossValueSettings: Array<CrossValueSettingsModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tDisplayOrder: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsWrapped: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsGroup: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsAverage: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsTotal: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCount: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsSubTotal: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tDisplayPriority: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossColumn: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossWrapped: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossRow: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossValue: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tAggregateFunction: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tDisplayFields: Array<number>;\r\n}","import * as _ from 'underscore';\r\nimport {deserialize, deserializeAs, serializeAs, serialize} from 'libs/cerialize';\r\nimport {QueryConditionItemModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\n\r\nexport class QueryConditionGroupModel {\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t\tthis.ConditionGroups = [];\r\n\t\tthis.Operator = 0;\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@serializeAs(QueryConditionItemModel)\r\n\t@deserializeAs(QueryConditionItemModel)\r\n\tItems: Array<QueryConditionItemModel>;\r\n\r\n\t@serializeAs(QueryConditionGroupModel)\r\n\t@deserializeAs(QueryConditionGroupModel)\r\n\tConditionGroups: Array<QueryConditionGroupModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tOperator: number;\r\n\r\n\tget HasAnyConditions(): boolean{\r\n\t\treturn this.Items.length > 0 || this.ConditionGroups.length > 0;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport {deserialize, deserializeAs, serializeAs, serialize, Deserialize, GenericDeserialize, Serialize} from 'libs/cerialize';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { ConditionValueTypes } from 'QueryBuilder/Enums';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\n\r\nexport class QueryConditionItemModel {\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tValue: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tValueType: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tOperator: number;\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tColumn: QueryColumnModel;\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tValueColumn: QueryColumnModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tShowParam: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tSPIMFeatureType: string;\r\n\r\n\tSubQuery: QueryExpressionModel;\r\n\r\n\tpublic static OnSerialized(instance : QueryConditionItemModel, json : any) : void {\r\n\t\tif(instance.ValueType === ConditionValueTypes.QueryBuilder && instance.SubQuery){\r\n\t\t\tlet queryExpressionType = require('Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel').QueryExpressionModel;\r\n\t\t\tjson.Value = JSON.stringify(Serialize(instance.SubQuery, queryExpressionType));\r\n\t\t}\r\n\t}\r\n\r\n\tstatic OnDeserialized(instance: QueryConditionItemModel, json: any): void {\r\n\r\n\t\tif(instance.ValueType === ConditionValueTypes.QueryBuilder){\r\n\t\t\tlet queryExpressionType = require('Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel').QueryExpressionModel;\r\n\t\t\tinstance.SubQuery = instance.Value == '' ? null : Deserialize(JSON.parse(instance.Value), queryExpressionType);\r\n\t\t}\r\n\t\t\r\n }\r\n}","import { deserialize, deserializeAs, serialize, serializeAs } from 'libs/cerialize';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { UseMainCondition, LinkDirectionCondition } from 'QueryBuilder/Enums';\r\nimport { JoinTypes } from 'QueryBuilder/Enums';\r\nimport { CanvasSizeModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasSizeModel';\r\n\r\nexport class QueryEntityJoinModel {\r\n\tconstructor() {\r\n\t\tthis.Joins = [];\r\n\t\tthis.SubEntityJoins = [];\r\n\t\tthis.LookupEntityJoins = [];\r\n\t\tthis.ReferenceEntityJoins = [];\r\n\t\tthis.ReferenceLookupEntityJoins = [];\r\n\t\tthis.CanvasPosition = new CanvasPositionModel();\r\n\t\tthis.CanvasSize = new CanvasSizeModel();\r\n\t\tthis.JoinType = Number(JoinTypes.LeftJoin);\r\n\t\tthis.UseMain = Number(UseMainCondition.NotUseMain);\r\n\t\tthis.LinkDirection = Number(LinkDirectionCondition.LeftToRight);\r\n\t}\r\n\r\n\t@serializeAs(QueryEntityModel)\r\n\t@deserializeAs(QueryEntityModel)\r\n\tEntity: QueryEntityModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tLookupFieldId: number;\r\n\r\n\t@serializeAs(QueryEntityModel)\r\n\t@deserializeAs(QueryEntityModel)\r\n\tLinkEntity: QueryEntityModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tReferenceFieldId: number;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsSubQuery: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@serializeAs(CanvasPositionModel)\r\n\t@deserializeAs(CanvasPositionModel)\r\n\tCanvasPosition: CanvasPositionModel;\r\n\r\n\t@serializeAs(CanvasSizeModel)\r\n\t@deserializeAs(CanvasSizeModel)\r\n\tCanvasSize: CanvasSizeModel;\r\n\r\n\t@serializeAs(JoinTypes)\r\n\t@deserializeAs(JoinTypes)\r\n\tJoinType: JoinTypes;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tUseMain: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tLinkDirection: number;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tSubEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n}","import { deserialize, deserializeAs, serialize, serializeAs } from 'libs/cerialize';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { EntityMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { Guid } from 'Core/Common/Guid';\r\n\r\nexport class QueryEntityModel {\r\n\tconstructor() {\r\n\t\tthis.Columns = [];\r\n\t\tthis.CanvasPosition = new CanvasPositionModel();\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.IsIterator = false;\r\n\t\tthis.Index = 0;\r\n\t}\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tColumns: Array<QueryColumnModel>;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@serializeAs(EntityMetadataModel)\r\n\t@deserializeAs(EntityMetadataModel)\r\n\tMetadata: EntityMetadataModel;\r\n\r\n\t@serializeAs(CanvasPositionModel)\r\n\t@deserializeAs(CanvasPositionModel)\r\n\tCanvasPosition: CanvasPositionModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsIterator: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsGridSubject: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIndex: number;\r\n}","import {deserialize, deserializeAs, serializeAs, serialize} from 'libs/cerialize';\r\nimport {QueryEntityModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport {QueryEntityJoinModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { QuerySortModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel';\r\nimport {GenericButtonConfigModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel';\r\n\r\nexport class QueryExpressionModel {\r\n\tconstructor() {\r\n\t\tthis.EntityJoins = [];\r\n\t\tthis.SubEntityJoins = [];\r\n\t\tthis.LookupEntityJoins = [];\r\n\t\tthis.ReferenceEntityJoins = [];\r\n\t\tthis.ReferenceLookupEntityJoins = [];\r\n\t\tthis.IsCrossTable = false;\r\n\t\tthis.Sorts = [];\r\n\t\tthis.GenericButtonConfigs = [];\r\n\t}\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tTop: number;\r\n\r\n\t@serializeAs(QueryEntityModel)\r\n\t@deserializeAs(QueryEntityModel)\r\n\tEntity: QueryEntityModel;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tSubEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n\t\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceLookupEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryEntityJoinModel)\r\n\t@deserializeAs(QueryEntityJoinModel)\r\n\tReferenceEntityJoins: Array<QueryEntityJoinModel>;\r\n\r\n\t@serializeAs(QueryConditionGroupModel)\r\n\t@deserializeAs(QueryConditionGroupModel)\r\n\tCondition: QueryConditionGroupModel;\r\n\r\n\t@serializeAs(QueryConditionGroupModel)\r\n\t@deserializeAs(QueryConditionGroupModel)\r\n\tSpimCondition: QueryConditionGroupModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tIsCrossTable: boolean;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tQueryScreenId: number;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tCardScreenId: number;\r\n\r\n\t@serializeAs(QuerySortModel)\r\n\t@deserializeAs(QuerySortModel)\r\n\tSorts: Array<QuerySortModel>;\r\n\r\n\t@serializeAs(GenericButtonConfigModel)\r\n\t@deserializeAs(GenericButtonConfigModel)\r\n\tGenericButtonConfigs: Array<GenericButtonConfigModel>;\r\n}","import { deserialize, deserializeAs, serializeAs, serialize } from 'libs/cerialize';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\n\r\nexport class QuerySortModel {\r\n\r\n\t@serializeAs(QueryColumnModel)\r\n\t@deserializeAs(QueryColumnModel)\r\n\tColumn: QueryColumnModel;\r\n\r\n\t@serialize\r\n\t@deserialize\r\n\tSortOrder: number;\r\n}","export class SortModel {\r\n\tOrderColumn: string;\r\n\tOrderColumnGuid: string;\r\n\tSortOrder: number;\r\n}","import * as ko from 'knockout';\r\n\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class ViewGridModel {\r\n constructor(id: number, name: string) {\r\n this.Id = id;\r\n this.Name = name;\r\n\r\n this.LockedTableView = ko.observable(false);\r\n }\r\n\r\n Init() {\r\n this.LockedTableView(this.Locked);\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsEditingAllowed: boolean;\r\n\r\n @deserialize\r\n IsDeletingAllowed: boolean;\r\n\r\n @deserialize\r\n Locked: boolean;\r\n\r\n LockedTableView: KnockoutObservable<boolean>;\r\n\r\n Lock() {\r\n this.Locked = true;\r\n this.LockedTableView(true);\r\n }\r\n\r\n Unlock() {\r\n this.Locked = false;\r\n this.LockedTableView(false);\r\n }\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\n\r\nexport class PivotDetailModel {\r\n\r\n @deserializeAs(GridDataModel)\r\n Data: GridDataModel;\r\n\r\n @deserialize\r\n LeftRecordName: string;\r\n\r\n @deserialize\r\n RightRecordName: string;\r\n\r\n @deserializeAs(IconModel)\r\n LeftEntityIcon: IconModel;\r\n\r\n @deserializeAs(IconModel)\r\n RightEntityIcon: IconModel;\r\n\r\n\r\n @deserialize\r\n RelationType: string;\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\n\r\nexport class GroupDetailModel {\r\n @deserializeAs(GridDataModel)\r\n Data: GridDataModel;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {IGetEntityRequestModel} from \"Core/Common/Interfaces/IGetEntityRequestModel\";\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {GridCellValueModel, RecordKey} from 'Core/Controls/Grid/Models/GridDataModel/GridCellValueModel';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {\r\n\tFieldDataModel,\r\n\tGridRowDataModel,\r\n\tRecordKeyModel\r\n} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {UpdateLifestatusModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateLifestatusModel';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport { FastFilterRequestModel } from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { SortModel } from 'Core/Controls/Grid/Models/SortModel';\r\nimport {IGetFastFilterRequestModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport { DataModes } from \"Core/Enums/DataModes\";\r\nimport {QueryColumnModel} from \"../Models/GridDataModel/QueryExpression/QueryColumnModel\";\r\nimport {GridRowModel} from \"../Models/GridDataModel/GridRowModel\";\r\nimport {PivotDetailModel} from \"../Models/PivotDetailModel\";\r\nimport {GroupDetailModel} from \"../Models/GroupDetailModel\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface IGetGridDataRequestModel {\r\n\tControlId: number;\r\n\tTableViewId: number;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tSubjectTypeId: number,\r\n\tSubjectKindId: number,\r\n\tSubjectStatusId: number,\r\n\tGridSubjectEntityId?: number;\r\n\tGridSubjectRecordIds?: number[];\r\n\tViewMode: ViewModes;\r\n\tPageNumber: number;\r\n\tRecordsPerPage: number;\r\n\tSort: Array<SortModel>;\r\n\tSearchPhrase: string;\r\n\tFilterByOwners: boolean;\r\n\tRecordOwners: number[];\r\n\tShowPlanned: boolean;\r\n\tSelectedTags?: any;\r\n\tScreenData?: Array<IDynamicFieldData>;\r\n\tFastFilters?: FastFilterRequestModel[];\r\n\tShowRetired?: boolean;\r\n Query?: QueryExpressionModel;\r\n DataMode?: DataModes;\r\n\tSubQueryGuid?: string;\r\n\tParentRowId?: string;\r\n\tRowId?: string;\r\n\tReferenceLookupFieldId?: number;\r\n\tScopedTableId?: number;\r\n\tScopedRecordId?: number;\r\n\r\n\tConditionValues?: Array<IConditionValueDto>;\r\n}\r\n\r\nexport interface IGetDefaultTableView {\r\n\tControlId: number;\r\n\tViewMode: number;\r\n\tSubjectEntityId: number;\r\n}\r\n\r\nexport interface IUnlinkRecordRequestModel {\r\n\tMainEntityId: number;\r\n\tMainRecordId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n\tKSeq: number;\r\n\tRelationshipType?: number;\r\n}\r\n\r\nexport interface IUnlinkMultipleRecordsRequestModel {\r\n\tRows: Array<IUnlinkRecordRequestModel>\r\n}\r\n\r\nexport interface IExportDataRequestModel {\r\n\tQuery: QueryExpressionModel;\r\n\tDestination: string;\r\n\tViewMode: ViewModes;\r\n\tFilterByOwners: boolean;\r\n\tRecordOwners: number[];\r\n\tShowPlanned: boolean;\r\n\tRecordId?: number;\r\n\tShowRetired: boolean;\r\n}\r\n\r\nexport interface ISwitchToNextStatus {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tNextStatusId: number;\r\n}\r\n\r\nexport interface IUpdateRowsRuestModel {\r\n\tRows: Array<GridRowDataModel>\r\n}\r\n\r\nexport interface IUpdateSortRequestModel {\r\n\tUpCell: FieldDataModel,\r\n\tDownCell: FieldDataModel\r\n}\r\n\r\nexport interface IGetMemoValueRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n}\r\n\r\nexport interface IGetImageValueRequestModel {\r\n\tEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array<RecordKeyModel>;\r\n}\r\n\r\nexport interface IGetDataByClusteredFieldRequestModel {\r\n\tSubjectEntityId: number;\r\n\tFieldId: number;\r\n\tRecordKeys: Array<Array<RecordKeyModel>>;\r\n\tDisplayFields: Array<number>;\r\n}\r\n\r\nexport interface INewRecordRequestModel {\r\n\tEntityId: number;\r\n\tLinkTableId?: number;\r\n\tTypeId: number;\r\n\tParentRecordId: number;\r\n\tFields: Array<QueryColumnModel>;\r\n}\r\n\r\nexport interface IGetCrossTableDetailRequestModel {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n\tKSeqs: Array<number>;\r\n\tDisplayFields: Array<number>;\r\n}\r\n\r\ninterface IGetGroupDetailRequestModel {\r\n\tEntityId: number;\r\n\tRecordIds: Array<number>;\r\n}\r\n\r\nexport interface IsRecordValidDto {\r\n\tTableId: number;\r\n\tRecordId: number;\r\n}\r\n\r\ninterface ISearchByBarcodeRequestModel {\r\n\tEntityId: number;\r\n\tBarcode: string;\r\n}\r\n\r\nexport class GridStore {\r\n\r\n\tstatic NewRecord(params: INewRecordRequestModel): P.Promise<GridRowModel>{\r\n\t\tlet deferredResult = P.defer<GridRowModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.NEW_RECORD,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(<GridRowModel>Deserialize(data.ResultObject, GridRowModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetData(params: IGetGridDataRequestModel): P.Promise<GridDataModel> {\r\n\t\tvar deferredResult = P.defer<GridDataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_GRID_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tconst message = \"<span class=\\\"notification-errors-list\\\">\" + data.ErrorMessage + \"</span>\";\r\n\r\n\t\t\t\t\tdeferredResult.reject({ message: message});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, GridDataModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDataByClusteredField(params: IGetDataByClusteredFieldRequestModel): P.Promise<PivotDetailModel> {\r\n\t\tlet deferredResult = P.defer<PivotDetailModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetDataByClusteredField',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, PivotDetailModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetCrossTableDetail(params: IGetCrossTableDetailRequestModel): P.Promise<PivotDetailModel> {\r\n\t\tlet deferredResult = P.defer<PivotDetailModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetCrossTableDetail',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, PivotDetailModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetGroupDetail(params: IGetGroupDetailRequestModel): P.Promise<GroupDetailModel> {\r\n\t\tconst deferredResult = P.defer<GroupDetailModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/GridApi/GetGroupDetail',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data.ResultObject, GroupDetailModel));\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateRow(params: GridRowDataModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_GRID_ROW_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateRows(params: IUpdateRowsRuestModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_GRID_ROWS_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateRowLifestatus(params: UpdateLifestatusModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_GRID_ROW_LIFESTATUS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteRow(params: GridRowDataModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.DELETE_GRID_ROW_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UnlinkMultipleRecords(params: IUnlinkMultipleRecordsRequestModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UNLINK_GRID_ROWS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UnlinkRecord(params: IUnlinkRecordRequestModel): P.Promise<OperationResultModel> {\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UNLINK_GRID_ROW,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<OperationResultModel>Deserialize(data, OperationResultModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDefaultTableView(params: IGetDefaultTableView): P.Promise<QueryExpressionModel> {\r\n\t\tvar deferredResult = P.defer<QueryExpressionModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_DEFAULT_TABLE_VIEW,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(<QueryExpressionModel>Deserialize(data.ResultObject, QueryExpressionModel));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDefaultTableViewMetaData(screenType: ScreenTypes): P.Promise<IGetEntityRequestModel> {\r\n\t\tvar deferredResult = P.defer<IGetEntityRequestModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_DEFAULT_TABLE_VIEW_METADATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {screenType: screenType}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ExportData(params: IExportDataRequestModel) {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.EXPORT_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => deferred.reject(error));\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic LinkWithNextRelationType(params: RecordKey[]): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINK_WITH_NEXT_RELATION,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: {RecordKeys: params}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterTimeData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_TIME_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterDateData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_DATE_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({message: result.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetFastFilterDateTimeData(params: IGetFastFilterRequestModel): any {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_FAST_FILTER_DATETIME_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic UpdateSort(params: IUpdateSortRequestModel): P.Promise<any>{\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.UPDATE_SORT,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetMemoValue(params: IGetMemoValueRequestModel): P.Promise<GridCellValueModel>{\r\n\t\tconst deferred = P.defer<GridCellValueModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetMemoValue',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\t\tdeferred.resolve(<GridCellValueModel>Deserialize(result.ResultObject, GridCellValueModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.reject({ message: result.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic GetImageValue(params: IGetImageValueRequestModel): P.Promise<GridCellValueModel>{\r\n\t\tconst defered = P.defer<GridCellValueModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/GetImageValue',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n defered.resolve(Deserialize(result, GridCellValueModel));\r\n }).fail(data => { defered.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn defered.promise();\r\n\t}\r\n\r\n\tstatic IsRecordValid(params: IsRecordValidDto): P.Promise<boolean>{\r\n\t\tconst defered = P.defer<boolean>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/IsRecordValid',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n defered.resolve(Deserialize(result, Boolean));\r\n }).fail(data => { defered.reject({ message: JSON.parse(data.message).Message }) });\r\n\r\n\r\n\t\treturn defered.promise();\r\n\t}\r\n\r\n\tstatic SearchByBarcode(params: ISearchByBarcodeRequestModel) {\r\n\t\tconst deferred = P.defer<number>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/SearchByBarcode',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result: number) => {\r\n\t\t\t\tdeferred.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject({\r\n\t\t\t\t\tmessage: error.status === 404 ? NOTIFICATIONS.RECORD_NOT_FOUND : JSON.parse(error.message).Message\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic SwitchToNextStatus(params: ISwitchToNextStatus) {\r\n\t\tconst deferred = P.defer<number>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/GridApi/SwitchToNextStatus',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result: number) => {\r\n\t\t\t\tdeferred.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferred.reject({\r\n\t\t\t\t\tmessage: error.status === 404 ? NOTIFICATIONS.RECORD_NOT_FOUND : JSON.parse(error.message).Message\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { ViewGridModel } from 'Core/Controls/Grid/Models/ViewGridModel';\r\n\r\nexport class ViewGridResponseModel { \r\n\t@deserializeAs(ViewGridModel)\r\n\tGridViews: Array<ViewGridModel>;\r\n\r\n\t@deserialize\r\n\tIsAddingRecordAllowed : boolean;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {ViewGridResponseModel} from \"Core/Controls/Grid/Models/ViewGridResponseModel\";\r\n\r\nexport interface IGetGridViewListDto {\r\n\tSubjectEntityId: number;\r\n\tControlId: number;\r\n\tViewMode: number;\r\n\tScreenType: number;\r\n};\r\n\r\nexport interface IGetLinkEditorGridViewListDto {\r\n\tTableId: number;\r\n\tTargetTableId: number;\r\n\tLookupFieldId: number;\r\n}\r\n\r\nexport class ViewGridListStore {\r\n\tstatic GetGridViewList(params: IGetGridViewListDto): P.Promise<ViewGridResponseModel> {\r\n\r\n\t\tvar deferredResult = P.defer<ViewGridResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_VIEW_GRID_LIST,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<ViewGridResponseModel>Deserialize(data, ViewGridResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetInvoicingGridViewList(entityId: number): P.Promise<ViewGridResponseModel> {\r\n\r\n\t\tvar deferredResult = P.defer<ViewGridResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_INVOICING_GRID_VIEW_LIST,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: {EntityId: entityId}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<ViewGridResponseModel>Deserialize(data, ViewGridResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLinkEditorGridViewList(params: IGetLinkEditorGridViewListDto): P.Promise<ViewGridResponseModel> {\r\n\r\n\t\tvar deferredResult = P.defer<ViewGridResponseModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.GET_LINK_EDITOR_VIEW_GRID_LIST,\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<ViewGridResponseModel>Deserialize(data, ViewGridResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n} ","export const EVENTS = {\r\n\tNEW_TABLE_VIEW: 'NEW_TABLE_VIEW',\r\n\tEDIT_TABLE_VIEW: 'EDIT_TABLE_VIEW',\r\n\tCOPY_TABLE_VIEW: 'COPY_TABLE_VIEW',\r\n\tDELETE_TABLE_VIEW: 'DELETE_TABLE_VIEW',\r\n\tLOCK_TABLE_VIEW: 'LOCK_TABLE_VIEW',\r\n\tUNLOCK_TABLE_VIEW: 'UNLOCK_TABLE_VIEW',\r\n\tLINK_RECORD: 'LINK_RECORD',\r\n\tUNLINK_MULTIPLE_RECORDS: 'UNLINK_MULTIPLE_RECORDS',\r\n\tCONFIRM_MULTIPLE_UNLINK: 'CONFIRM_MULTIPLE_UNLINK',\r\n\tCANCEL_MULTIPLE_UNLINK: 'CANCEL_MULTIPLE_UNLINK',\r\n\tLINK_PARENT_RECORD: 'LINK_PARENT_RECORD',\r\n\tCOPY_LATEST_RECORD: 'COPY_LATEST_RECORD',\r\n\tADD_QUERY: 'ADD_QUERY',\r\n\tADD_AND_LINK_RECORD: 'ADD_AND_LINK_RECORD',\r\n\tSCAN_AND_LINK_RECORD: 'SCAN_AND_LINK_RECORD',\r\n\tSELECT_TABLE_VIEW: 'SELECT_TABLE_VIEW',\r\n\tSEARCH_BY_PHRASE: 'SEARCH_BY_PHRASE',\r\n\tNEW_RECORD: 'NEW_RECORD',\r\n\tEXPORT_DATA: 'EXPORT_DATA',\r\n\tTOGGLE_PRIORITIES: 'TOGGLE_PRIORITIES',\r\n\tBULK_EDIT: 'BULK_EDIT',\r\n\tRESET_FILTER: 'RESET_FILTER',\r\n\tTOGGLE_RETIRED: 'TOGGLE_RETIRED',\r\n\tEDIT_ALL: 'EDIT_ALL',\r\n\tSAVE_ALL: 'SAVE_ALL'\r\n};","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FileTypes} from \"Core/Common/Enums/FileTypes\";\r\n\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'Core/Controls/Grid/Toolbar/Constants';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport 'Core/Components/QueryDropdowns/QueryDropdowns';\r\n\r\nimport {UserManager, UserRoles} from 'User/UserManager';\r\n\r\nimport Template from 'Core/Controls/Grid/Toolbar/Templates/Toolbar.html';\r\nimport { CONTROL_TYPES } from '../BaseGrid/Index';\r\n\r\nko.templates['Core/Controls/Grid/Toolbar/Templates/Toolbar'] = Template;\r\n\r\nexport class Toolbar extends Event {\r\n private _enableEditTableView: KnockoutObservable<boolean>;\r\n private _enableDeleteTableView: KnockoutObservable<boolean>;\r\n private _enableLockItem: KnockoutObservable<boolean>;\r\n\r\n Paginator: KnockoutObservable<Paginator>;\r\n private _tableView: KnockoutObservable<ViewGridModel>;\r\n private _viewGridList: KnockoutObservableArray<ViewGridModel>;\r\n private _gridSubjectEntityMetadata: KnockoutObservable<EntityMetadataModel>;\r\n private _searchPhrase: KnockoutObservable<string>;\r\n private _showAddButton: KnockoutObservable<boolean>;\r\n private _showEditAllButton: KnockoutObservable<boolean>;\r\n private _recordsInBasket: KnockoutObservable<number>;\r\n private _isPortlet: boolean;\r\n private _isListScreen: boolean;\r\n private _isSpecialScreen: boolean;\r\n private _isDashboardScreen: boolean;\r\n private _isConsultScreen: boolean;\r\n private _isEditScreen: boolean;\r\n private _showLockItem: boolean;\r\n private _isEnabled: KnockoutObservable<boolean>;\r\n private _isAddingRecordAllowed: KnockoutObservable<boolean>;\r\n private _labels = LABELS;\r\n private _showTogglePrioritiesButton: KnockoutObservable<boolean>;\r\n private _isGridPrioritiesDisabled: KnockoutObservable<boolean>;\r\n private _showBulkEditButton: KnockoutObservable<boolean>;\r\n private _disableBulkEditButton: KnockoutObservable<boolean>;\r\n private _showResetFilterButton: KnockoutObservable<boolean>;\r\n private _disabledShowAllColumnsBtn: KnockoutObservable<boolean>;\r\n private _canShow: KnockoutObservable<boolean>;\r\n private _canHide: KnockoutObservable<boolean>;\r\n private _showRetired: KnockoutObservable<boolean>;\r\n private _showRetiredButton: KnockoutObservable<boolean>;\r\n private _controls: Array<IControl>;\r\n private _editAll: KnockoutObservable<boolean>;\r\n private _showControls: KnockoutObservable<boolean>;\r\n private _isMultipleUnlinkModeActive: KnockoutObservable<boolean> = ko.observable(false);\r\n private _isMultipleUnlinkButtonVisible: KnockoutComputed<boolean>;\r\n\r\n constructor(\r\n private _showTableViewLookup: boolean = true,\r\n private _showFunctionLookup: boolean = true,\r\n private _showLinkButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _showUnlinkMultipleRecordsButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _showLinkParentButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _hasOneParent: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showAddAndLinkButton: KnockoutObservable<boolean> = ko.observable(true),\r\n private _showScanAndLinkButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showAddQueryButton: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showSearchInput: KnockoutObservable<boolean> = ko.observable(true),\r\n private _isEditable: KnockoutObservable<boolean> = ko.observable(true),\r\n private _addingRecordAllowed: KnockoutObservable<boolean> = ko.observable(true),\r\n private _exportDataAllowed: KnockoutObservable<boolean> = ko.observable(false),\r\n private _showTableViewElement: KnockoutObservable<boolean> = ko.observable(false),\r\n private _activeScreen: string = '',\r\n isGridPrioritiesEnabled: boolean,\r\n showTogglePrioritiesButton: boolean,\r\n showBulkEditButton: KnockoutObservable<boolean> = ko.observable(false),\r\n disableBulkEditButton: KnockoutObservable<boolean> = ko.observable(false),\r\n showResetFilterButton: KnockoutObservable<boolean> = ko.observable(false),\r\n disabledShowAllColumnsBtn: boolean,\r\n showRetiredButton: boolean,\r\n controls?: Array<IControl>\r\n ) {\r\n super();\r\n\r\n this._tableView = ko.observable(null);\r\n this._enableEditTableView = ko.observable(false);\r\n this._enableDeleteTableView = ko.observable(false);\r\n this._enableLockItem = ko.observable(false);\r\n this._isAddingRecordAllowed = ko.observable(false);\r\n this._viewGridList = ko.observableArray([]);\r\n this._gridSubjectEntityMetadata = ko.observable(null);\r\n this._searchPhrase = ko.observable(\"\");\r\n this._showAddButton = ko.observable(false);\r\n this._showEditAllButton = ko.observable(false);\r\n this._recordsInBasket = ko.observable(0);\r\n this._isPortlet = this._activeScreen === ScreenTypes[ScreenTypes.Portlet];\r\n this._isListScreen = this._activeScreen === ScreenTypes[ScreenTypes.ListScreen];\r\n this._isSpecialScreen = this._activeScreen === ScreenTypes[ScreenTypes.SpecialScreen];\r\n this._isDashboardScreen = this._activeScreen === ScreenTypes[ScreenTypes.Dashboard];\r\n this._isConsultScreen = this._activeScreen === ScreenTypes[ScreenTypes.ConsultScreen];\r\n this._isEditScreen = this._activeScreen === ScreenTypes[ScreenTypes.EditScreen];\r\n this._showTogglePrioritiesButton = ko.observable(showTogglePrioritiesButton);\r\n this._isGridPrioritiesDisabled = ko.observable(isGridPrioritiesEnabled);\r\n this._showBulkEditButton = showBulkEditButton;\r\n this._disableBulkEditButton = disableBulkEditButton;\r\n this._showResetFilterButton = showResetFilterButton;\r\n this._disabledShowAllColumnsBtn = ko.observable(disabledShowAllColumnsBtn);\r\n this.Paginator = ko.observable(new Paginator());\r\n this._canHide = ko.observable(false);\r\n this._canShow = ko.observable(false);\r\n this._showRetired = ko.observable(false);\r\n this._showRetiredButton = ko.observable(showRetiredButton);\r\n this._controls = controls;\r\n this._showLockItem = UserManager.Instance.IsUserInRole(UserRoles.SuperUser);\r\n this._editAll = ko.observable(true);\r\n this._showControls = ko.observable(true);\r\n this._isMultipleUnlinkButtonVisible = ko.computed(() => { return this._showUnlinkMultipleRecordsButton && (this._isConsultScreen || this._isEditScreen)});\r\n\r\n this._viewGridList([new ViewGridModel(0, LABELS.DEFAULT_VIEW)]);\r\n this._tableView(_.first(this._viewGridList()));\r\n\r\n this.AddEvent(EVENTS.NEW_TABLE_VIEW);\r\n this.AddEvent(EVENTS.EDIT_TABLE_VIEW);\r\n this.AddEvent(EVENTS.COPY_TABLE_VIEW);\r\n this.AddEvent(EVENTS.ADD_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.ADD_QUERY);\r\n this.AddEvent(EVENTS.LINK_RECORD);\r\n this.AddEvent(EVENTS.UNLINK_MULTIPLE_RECORDS);\r\n this.AddEvent(EVENTS.CONFIRM_MULTIPLE_UNLINK);\r\n this.AddEvent(EVENTS.CANCEL_MULTIPLE_UNLINK);\r\n this.AddEvent(EVENTS.LINK_PARENT_RECORD);\r\n this.AddEvent(EVENTS.SCAN_AND_LINK_RECORD);\r\n this.AddEvent(EVENTS.COPY_LATEST_RECORD);\r\n this.AddEvent(EVENTS.SELECT_TABLE_VIEW);\r\n this.AddEvent(EVENTS.SEARCH_BY_PHRASE);\r\n this.AddEvent(EVENTS.NEW_RECORD);\r\n this.AddEvent(EVENTS.DELETE_TABLE_VIEW);\r\n this.AddEvent(EVENTS.LOCK_TABLE_VIEW);\r\n this.AddEvent(EVENTS.UNLOCK_TABLE_VIEW);\r\n this.AddEvent(EVENTS.EXPORT_DATA);\r\n this.AddEvent(EVENTS.TOGGLE_PRIORITIES);\r\n this.AddEvent(EVENTS.RESET_FILTER);\r\n this.AddEvent(EVENTS.BULK_EDIT);\r\n this.AddEvent(EVENTS.TOGGLE_RETIRED);\r\n this.AddEvent(EVENTS.EDIT_ALL);\r\n this.AddEvent(EVENTS.SAVE_ALL);\r\n\r\n this._isEnabled = ko.observable(false);\r\n\r\n this._tableView.subscribe((newValue) => {\r\n this._enableEditTableView(newValue.IsEditingAllowed);\r\n this._enableDeleteTableView(newValue.IsDeletingAllowed);\r\n this._enableLockItem(this._showLockItem && this._tableView().Id > 0);\r\n\r\n this.Trigger(EVENTS.SELECT_TABLE_VIEW, newValue);\r\n });\r\n }\r\n\r\n get CreateNewMessage() {\r\n const entityName = this.EntityNameTranslation;\r\n return this._labels.CREATE_NEW.replace('{entityName}', entityName);\r\n }\r\n\r\n get AddAndLinkMessage() {\r\n const entityName = this.EntityNameTranslation;\r\n const searchValue = /\\{entityName\\}/gi;\r\n\r\n return this._labels.ADD_AND_LINK.replace(searchValue, entityName);\r\n }\r\n\r\n get LinkMessage() {\r\n const entityName = this.EntityNameTranslation;\r\n const searchValue = /\\{entityName\\}/gi;\r\n\r\n return this._labels.LINK.replace(searchValue, entityName);\r\n }\r\n\r\n get EntityNameTranslation(){\r\n const gridSubjectEntityNameTranslation = this._gridSubjectEntityMetadata() && this._gridSubjectEntityMetadata().NameTranslation;\r\n const gridSubjectEntityName = this._gridSubjectEntityMetadata() && this._gridSubjectEntityMetadata().Name;\r\n\r\n return gridSubjectEntityNameTranslation || gridSubjectEntityName || '';\r\n }\r\n\r\n ShowSearchInput(value: boolean) {\r\n this._showSearchInput(value);\r\n }\r\n\r\n ShowRetiredButton(value: boolean) {\r\n this._showRetiredButton(value);\r\n }\r\n\r\n SetDefaultTableView() {\r\n this._tableView(_.first(this._viewGridList()));\r\n }\r\n\r\n SetTableViewList(tableViewList: Array<ViewGridModel>, selectedTableView: ViewGridModel, isAddingRecordAllowed: boolean) {\r\n this._viewGridList(tableViewList);\r\n this._tableView(selectedTableView);\r\n this._isAddingRecordAllowed(isAddingRecordAllowed);\r\n }\r\n\r\n SetEnabledAddButton(enableAddButton: boolean) {\r\n this._showAddButton(enableAddButton);\r\n }\r\n\r\n SetEnableEditAllButton(enableEditAllButton: boolean) {\r\n this._showEditAllButton(enableEditAllButton);\r\n }\r\n\r\n SetGridSubjectEntityMetadata(value: EntityMetadataModel) {\r\n this._gridSubjectEntityMetadata(value);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Grid/Toolbar/Templates/Toolbar';\r\n }\r\n\r\n NewTableView() {\r\n this.Trigger(EVENTS.NEW_TABLE_VIEW);\r\n }\r\n\r\n EditTableView() {\r\n this.Trigger(EVENTS.EDIT_TABLE_VIEW, this._tableView());\r\n }\r\n\r\n CopyTableView() {\r\n this.Trigger(EVENTS.COPY_TABLE_VIEW, this._tableView());\r\n }\r\n\r\n DeleteTableView() {\r\n this.Trigger(EVENTS.DELETE_TABLE_VIEW, this._tableView());\r\n }\r\n\r\n ToggleLock() {\r\n if (this._tableView().Locked) {\r\n this.Trigger(EVENTS.UNLOCK_TABLE_VIEW, this._tableView());\r\n } else {\r\n this.Trigger(EVENTS.LOCK_TABLE_VIEW, this._tableView());\r\n }\r\n }\r\n\r\n public ToggleAllShownColums(canHide: boolean, canShow: boolean) {\r\n this._canHide(canHide);\r\n this._canShow(canShow);\r\n }\r\n\r\n EnterKey() {\r\n this.Trigger(EVENTS.SEARCH_BY_PHRASE, {SearchPhrase: this._searchPhrase().trim()});\r\n }\r\n\r\n AddAndLinkRecord() {\r\n this.Trigger(EVENTS.ADD_AND_LINK_RECORD);\r\n }\r\n\r\n LinkRecord() {\r\n this.Trigger(EVENTS.LINK_RECORD);\r\n }\r\n\r\n UnlinkMultipleRecords() {\r\n this.Trigger(EVENTS.UNLINK_MULTIPLE_RECORDS);\r\n\r\n this._isMultipleUnlinkModeActive(true);\r\n }\r\n\r\n LinkParentRecord() {\r\n this.Trigger(EVENTS.LINK_PARENT_RECORD);\r\n }\r\n\r\n ScanAndLinkRecord() {\r\n this.Trigger(EVENTS.SCAN_AND_LINK_RECORD);\r\n }\r\n\r\n CopyLatestRecord() {\r\n this.Trigger(EVENTS.COPY_LATEST_RECORD);\r\n }\r\n\r\n AddQuery() {\r\n this.Trigger(EVENTS.ADD_QUERY);\r\n }\r\n\r\n NewRecord() {\r\n this.Trigger(EVENTS.NEW_RECORD);\r\n }\r\n\r\n BulkEdit() {\r\n if (!this._disableBulkEditButton()) {\r\n this.Trigger(EVENTS.BULK_EDIT);\r\n }\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n Enable() {\r\n this._isEnabled(true);\r\n }\r\n\r\n ExportToCSV() {\r\n this.Trigger(EVENTS.EXPORT_DATA, {Destination: FileTypes.CSV});\r\n }\r\n\r\n ExportToExcel() {\r\n this.Trigger(EVENTS.EXPORT_DATA, {Destination: FileTypes.EXCEL});\r\n }\r\n\r\n ResetFilter() {\r\n this.Trigger(EVENTS.RESET_FILTER);\r\n }\r\n\r\n TogglePriorities() {\r\n this._isGridPrioritiesDisabled(!this._isGridPrioritiesDisabled());\r\n\r\n this.Trigger(EVENTS.TOGGLE_PRIORITIES, {state: this._isGridPrioritiesDisabled()});\r\n }\r\n\r\n ToggleRetired() {\r\n this._showRetired(!this._showRetired());\r\n this.Trigger(EVENTS.TOGGLE_RETIRED, {State: this._showRetired()});\r\n }\r\n\r\n ToggleEditAll() {\r\n if (this._editAll()) {\r\n this._editAll(false);\r\n this.Trigger(EVENTS.EDIT_ALL);\r\n } else {\r\n this.Trigger(EVENTS.SAVE_ALL);\r\n }\r\n }\r\n\r\n OnConfirm() {\r\n this.Trigger(EVENTS.CONFIRM_MULTIPLE_UNLINK);\r\n\r\n this._isMultipleUnlinkModeActive(false);\r\n }\r\n\r\n OnCancel() {\r\n this.Trigger(EVENTS.CANCEL_MULTIPLE_UNLINK);\r\n\r\n this._isMultipleUnlinkModeActive(false);\r\n }\r\n\r\n ShowControls(value: boolean) {\r\n this._showControls(value);\r\n }\r\n\r\n ShowTogglePrioritiesButton(value: boolean) {\r\n this._showTogglePrioritiesButton(value);\r\n }\r\n\r\n\r\n set EditAll(value: boolean) {\r\n this._editAll(value);\r\n }\r\n\r\n get IsVisibleCopyButton(): boolean {\r\n return _.any(this._controls, (control)=>control.GetType() === CONTROL_TYPES.ButtonCopy);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"table-toolbar-line\\\"> <div class=\\\"table-toolbar-line_left\\\"> <!--ko if: _isListScreen || _isSpecialScreen || _isDashboardScreen --> <div class=\\\"pagination-container-grid pagination-container-grid--firstElement Hidden\\\" data-bind=\\\"css: {Hidden: _isPortlet}\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <query-dropdowns params=\\\"\\r\\n showElement: _showTableViewElement,\\r\\n showViewLookup: _showTableViewLookup,\\r\\n showFunctionLookup: _showFunctionLookup,\\r\\n view: _tableView,\\r\\n isEnabled: _isEnabled,\\r\\n viewList: _viewGridList,\\r\\n isAddingRecordAllowed: _isAddingRecordAllowed,\\r\\n enableEditView: _enableEditTableView,\\r\\n enableDeleteView: _enableDeleteTableView,\\r\\n enableLockItem: _enableLockItem,\\r\\n exportDataAllowed: _exportDataAllowed,\\r\\n showLockItem: _showLockItem,\\r\\n queryLocked: _tableView().LockedTableView,\\r\\n newView: NewTableView.bind($data),\\r\\n editView: EditTableView.bind($data),\\r\\n copyView: CopyTableView.bind($data),\\r\\n deleteView: DeleteTableView.bind($data),\\r\\n toggleLock: ToggleLock.bind($data),\\r\\n exportToCSV: ExportToCSV.bind($data),\\r\\n exportToExcel: ExportToExcel.bind($data)\\r\\n \\\" class=\\\"query-dropdowns_container\\\"> </query-dropdowns> <div class=\\\"grid-search-list-container\\\" data-bind=\\\"css: {Hidden: _isPortlet}, visible: _showSearchInput\\\"> <input data-bind=\\\"enableAttr: _isEnabled,\\r\\n visible: _showSearchInput,\\r\\n textInput: _searchPhrase,\\r\\n enterKey: EnterKey,\\r\\n attr: { placeholder: _labels.SEARCH_GRID }\\\" class=\\\"subFormControl serch-inline-input\\\" tabindex=\\\"-1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\"> </div> <!--ko ifnot: _isListScreen || _isSpecialScreen || _isDashboardScreen --> <div class=\\\"pagination-container-grid pagination-container-grid--twoElement Hidden\\\" data-bind=\\\"css: {Hidden: _isPortlet}\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"action-button\\\"> <!-- ko if: $data._showTogglePrioritiesButton() && ($data._canHide() || $data._canShow()) --> <span class=\\\"action-button-box\\\"> <a data-bind=\\\"click: $data.TogglePriorities.bind($data), css: { disabled: _disabledShowAllColumnsBtn()}\\\" class=\\\"btn btn-secondary toggle-priorities-button pull-left\\\"> <!-- ko if: _isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye\\\" data-bind=\\\"tooltip: {content: _labels.HIDE_COLUMNS_BY_PRIORITY}\\\"></i> <!-- /ko --> <!-- ko if: !_isGridPrioritiesDisabled() --> <i class=\\\"fa fa-eye-slash priorities-button-off\\\" data-bind=\\\"tooltip: {content: _labels.SHOW_ALL_COLUMNS}\\\"></i> <!-- /ko --> </a> </span> <!-- /ko --> <!--ko if: _showResetFilterButton --> <span class=\\\"action-button-box\\\"> <a class=\\\"btn btn-secondary toggle-priorities-button toggle-cross pull-left\\\"> <i class=\\\"fa fa-filter\\\" data-bind=\\\"tooltip: {content: 'Clear filters'}, click: ResetFilter\\\"></i> </a> </span> <!-- /ko --> <!--ko if: _showRetiredButton --> <span class=\\\"action-button-box\\\"> <a data-bind=\\\"click: $data.ToggleRetired.bind($data), css: { 'toggle-cross': !_showRetired() }\\\" class=\\\"btn btn-secondary toggle-priorities-button pull-left\\\"> <!-- ko if: _showRetired --> <i data-bind=\\\"tooltip: { content: _labels.HIDE_RETIRED }\\\" class=\\\"fa fa-trash\\\"></i> <!-- /ko --> <!-- ko ifnot: _showRetired --> <i data-bind=\\\"tooltip: { content: _labels.SHOW_RETIRED }\\\" class=\\\"fa fa-trash\\\"></i> <!-- /ko --> </a> </span> <!-- /ko --> </div> </div> <div class=\\\"table-toolbar-line_right\\\"> <div class=\\\"additional-buttons\\\"> <!-- ko if: _showControls --> <!-- ko foreach: _controls --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: _showBulkEditButton --> <a data-bind=\\\"visible: _isEditable() && _showBulkEditButton(), attr: { disabled: _disableBulkEditButton}, click: $data.BulkEdit.bind($data)\\\" class=\\\"btn blue-sharp showAddButton subFormControl\\\"> <!-- ko text: _labels.GRID_BULK_EDIT --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showAddButton() --> <a data-bind=\\\"visible: _isEditable() && _showAddButton(), click: $data.NewRecord.bind($data)\\\" class=\\\"btn blue-sharp showAddButton subFormControl\\\"> <i class=\\\"icon-plus\\\"></i> <!-- ko text: CreateNewMessage --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showEditAllButton() --> <a data-bind=\\\"visible: _isEditable() && _showEditAllButton(), click: $data.ToggleEditAll.bind($data)\\\" class=\\\"btn blue-sharp showEditAllButton subFormControl\\\"> <!-- ko if: _editAll --> <!-- ko text: _labels.EDIT_ALL --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: _editAll --> <!-- ko text: _labels.SAVE_ALL --><!-- /ko --> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: IsVisibleCopyButton --> <!-- ko if: $parent._disabledCopyButton --> <span data-bind=\\\"tooltip: {content: $parent._notifications.USE_LINK_ADDLINK_OR_ADDQUERY_BUTTONS_TO_COPY}\\\" class=\\\"btn blue-sharp subFormControl copy-button\\\" disabled=\\\"true\\\"> <!-- ko text: _labels.COPY_LATEST --><!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: $parent._disabledCopyButton --> <a data-bind=\\\"click: CopyLatestRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl copy-button\\\"> <!-- ko text: _labels.COPY_LATEST --><!-- /ko --> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _showAddAndLinkButton() --> <a data-bind=\\\"click: AddAndLinkRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-add-and-link-button float-r\\\"> <!-- ko text: AddAndLinkMessage --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showLinkButton() --> <a data-bind=\\\"visible: _showLinkButton, click: LinkRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-link-button float-r\\\"> <!-- ko text: LinkMessage --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _isMultipleUnlinkButtonVisible() --> <!-- ko if: _isMultipleUnlinkModeActive() --> <div class=\\\"confirm-cancel-wrapper\\\"> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: OnConfirm, tooltip: { content: _labels.UNLINK_ALL_SELECTED_LABEL }\\\"> <i class=\\\"fa fa-check\\\"></i> </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancel, tooltip: { content: _labels.CANCEL }\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> <!-- /ko --> <!-- ko ifnot: _isMultipleUnlinkModeActive() --> <a data-bind=\\\"visible: _showUnlinkMultipleRecordsButton,\\r\\n click: UnlinkMultipleRecords,\\r\\n tooltip: { content: _labels.UNLINK_MANY_RECORDS_LABEL } \\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-link-button float-r\\\"> <i class=\\\"fa transition fa-chain-broken\\\"></i> </a> <!-- /ko --> <!-- /ko --> <!-- ko if: _showLinkParentButton() --> <a data-bind=\\\"visible: _showLinkParentButton(), css: {'disabled': _hasOneParent()}, click: LinkParentRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl link-parent-button\\\"> <!-- ko text: _labels.LINK_PARENT --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showScanAndLinkButton() --> <a data-bind=\\\"css: {'disabled': _hasOneParent()}, click: ScanAndLinkRecord\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-scan-and-link-button\\\"> <!-- ko text: _labels.SCAN_AND_LINK --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showAddQueryButton() --> <a data-bind=\\\"visible: _showAddQueryButton, click: AddQuery\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-link-button float-r\\\"> <!-- ko text: _labels.ADD_QUERY --><!-- /ko --> </a> <!-- /ko --> </div> </div> </div> \";\n// Exports\nexport default code;","export const FileTypes = {\r\n\tCSV: \"csv\",\r\n\tEXCEL: \"xlsx\"\r\n};","import {P} from \"Core/Common/Promise\";\r\nimport {Request, IRequestOptions} from \"Core/Common/Request\";\r\n\r\nexport interface IHistoryRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport class HistoryLogsStore {\r\n\r\n\tstatic GetHistory(model: IHistoryRequestModel): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/HistoryApi/GetHistory',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic HasHistory(model: IHistoryRequestModel): P.Promise<boolean> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/HistoryApi/HasHistory',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: model\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tdeferredResult.resolve(data)\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"history-table-container\\\"> <table class=\\\"table table-hover table-striped table-bordered history-table\\\"> <thead class=\\\"search-table-header\\\"> <tr> <!-- ko foreach: _historyThs --> <th data-bind=\\\"text: $data, css: $data\\\" class=\\\"test-column-name\\\"></th> <!--/ko--> </tr> </thead> <tbody data-bind=\\\"scrollFixer: {}\\\" class=\\\"tab-key-navigation scroll-fixer search-table-body\\\" style=\\\"max-height:20.8px\\\"> <!-- ko foreach: _historyLogs --> <tr data-bind=\\\"\\\" tabindex=\\\"1\\\" class=\\\"search-table-row\\\"> <!-- ko foreach: $parent.GetHistoryValues($data) --> <td class=\\\"search-table-data\\\" data-bind=\\\"text: $data\\\"></td> <!--/ko--> </tr> <!--/ko--> </tbody> </table> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport { HistoryLogsModel, LogModel } from 'Core/Controls/History/Models/HistoryLogsModel';\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter'\r\n\r\n\r\nimport HistoryContentTemplate from \"Core/Controls/History/Templates/HistoryContent.html\"\r\nimport * as moment from \"moment\";\r\n\r\n\r\nko.templates[\"Core/Controls/History/Templates/HistoryContent\"] = HistoryContentTemplate;\r\n\r\n\r\nexport interface IHistoryRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\n\r\nexport class HistoryLogs {\r\n\tprivate _enabled: KnockoutObservable<boolean>;\r\n\tprivate _historyLogs: Array<LogModel>;\r\n\tprivate _historyThs: string[]\r\n\r\n\tconstructor(history: any) {\r\n\t\tlet allowed = ['Type', 'Format']; //remove to history\r\n\t\tthis._enabled = ko.observable(true);\r\n\t\tthis._historyLogs = history;\r\n\t\tthis._historyThs = _.keys(history[0])\r\n\t\t\t.filter(key => !_.contains(allowed, key)) //remove['Type', 'Format']\r\n\t\t\t.map(key => key === 'HistoryId' ? '#' : key);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t}\r\n\r\n\tGetHistoryValues(data) {\r\n\t\tconst allowed = ['EntityName', 'NewValue', 'Operation', 'FieldName', 'ChangedBy', 'ChangeDate']; //leave in data\r\n\r\n\t\tlet newHistoryArgument = _.extend({}, data, {\r\n\t\t\tChangeDate: this.FormatDateTimezone( data.ChangeDate.toString() ),\r\n\t\t\tNewValue: data.Type === 'DateTime' && data.NewValue ? this.FormatDateTimezone( data.NewValue.toString() ) : data.NewValue\r\n\t\t} );\r\n\r\n\t\treturn _.values( _.pick( newHistoryArgument, allowed ) );\r\n\t}\r\n\r\n\tprivate FormatDateTimezone(date: string) {\r\n\t\treturn FormatConverter.ConvertFromDefaultFormat(FormatConverter.CorrectTimezone( date ), DATE_FORMATS.DATE_TIME.MomentFormat );\r\n\t}\r\n\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/History/Templates/HistoryContent';\r\n\t}\r\n\r\n\r\n\tAfterRender() {\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'btn-disabled': !_recordId() || !_hasHistory()}, style: _style, tooltip: { content: HideCaption() ? _labels.HISTORY : '' }\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn green history-button subFormControl\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: _labels.HISTORY, css: {'hide-caption': HideCaption()}\\\"></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { SubForm } from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport { IControlParam } from 'Core/Screens/IScreen'\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { HistoryLogsStore, IHistoryRequestModel } from 'Core/Controls/History/Stores/HistoryLogsStore';\r\nimport { HistoryLogsModel } from 'Core/Controls/History/Models/HistoryLogsModel';\r\nimport { HistoryLogs } from 'Core/Controls/History/HistoryLogs';\r\nimport { Modal } from 'Core/Common/Modal'\r\nimport { RenderModes } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {CHECKBOX_PROPERTIES} from \"Core/GeneralProperties/Managers/CheckboxProperty/Constants\";\r\n\r\nimport HistoryButtonConfig from \"Core/Controls/History/Configs/history-button-config.json\";\r\n\r\nimport ViewTemplate from \"Core/Controls/History/Templates/View.html\"\r\nimport HelpViewTemplate from \"Core/Controls/History/Templates/HelpView.html\"\r\nimport DesignTemplate from \"Core/Controls/History/Templates/Design.html\"\r\nimport ToolbarTemplate from \"Core/Controls/History/Templates/ToolBar.html\"\r\nimport HistoryContentTemplate from \"Core/Controls/History/Templates/HistoryContent.html\"\r\n\r\n\r\nko.templates[\"Core/Controls/History/Templates/ToolBar\"] = ToolbarTemplate;\r\nko.templates[\"Core/Controls/History/Templates/HistoryContent\"] = HistoryContentTemplate;\r\n\r\nko.templates[\"Core/Controls/History/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/History/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/History/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/History/Templates/Design\"] = DesignTemplate;\r\n\r\n\r\nexport class History extends BaseControl {\r\n\tprivate _modal: Modal;\r\n\tprivate _historyLogsData: HistoryLogsModel;\r\n\tprivate _historyLogs: HistoryLogs;\r\n\tprivate _recordId: KnockoutObservable<number>;\r\n\tprivate _hasHistory: KnockoutObservable<boolean>;\r\n\r\n private _config: any;\r\n\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, HistoryButtonConfig);\r\n\t\tthis._recordId = ko.observable(null);\r\n\t\tthis._hasHistory = ko.observable(false);\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0',\r\n padding: this._border() ? '6px 14px' : '7px 14px'\r\n };\r\n });\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tif (!this._form) return;\r\n this.ApplyProperties();\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tthis._recordId(value.SubjectRecordId);\r\n\t\tthis.CheckHistory()\r\n }\r\n\r\n\tCheckHistory(){\r\n\t\tconst requestModel = {\r\n\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\tRecordId: this._form.GetScreen().GetRecordId()\r\n\t\t};\r\n\r\n\t\t(async ()=> { this._hasHistory(await HistoryLogsStore.HasHistory(requestModel)); })();\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (!this._recordId() || !this._hasHistory()) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\r\n\t\t\tconst requestModel = {\r\n\t\t\t\tEntityId: this._form.GetScreen().GetEntityId(),\r\n\t\t\t\tRecordId: this._form.GetScreen().GetRecordId()\r\n\t\t\t}\r\n\r\n\t\t\tthis.GetHistoryData(requestModel);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tGetContentTemplateName() {\r\n\t\treturn 'Core/Controls/History/Templates/HistoryContent';\r\n\t}\r\n\r\n\tGetHistoryData(requestModel: IHistoryRequestModel) {\r\n\t\tBlockUI.Block();\r\n\t\tHistoryLogsStore.GetHistory(requestModel)\r\n\t\t\t.then(model => {\r\n\t\t\t\tthis._historyLogsData = model.ResultObject;\r\n\t\t\t\tthis.Render();\r\n\t\t\t}).always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tRender(): void {\r\n\t\tvar self = this;\r\n\r\n\t\tthis._historyLogs = new HistoryLogs(this._historyLogsData);\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'history-logs-modal jBox-padding-15px'\r\n\t\t});\r\n\r\n\t\tthis._modal.On(\"CLOSE\", this, (eventArgs: any) => {\r\n\t\t\t$(window).off('keydown');\r\n\t\t\t//self.GatherSettings();\r\n\t\t});\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this._historyLogs, this._modal.Wrapper);\r\n\r\n\t\tthis.ShowModal();\r\n\r\n\t}\r\n\r\n\tClose(): void {\r\n\t\t$(window).off('keydown');\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tShowModal() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t}\r\n\t}\r\n\r\n\tSetHideCaption(data: boolean) {\r\n\t\tthis.HideCaption(this.HideCaptionFromProperty() ? this.HideCaptionFromProperty() : data);\r\n\t}\r\n\r\n\tGetHideCaption(): boolean {\r\n\t\treturn this.HideCaption();\r\n\t}\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n\t\t\tthis.AssignProperty('Styling', CHECKBOX_PROPERTIES.HIDE_CAPTION, this.HideCaptionFromProperty);\r\n\t\t\tthis.HideCaption(this.HideCaptionFromProperty());\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n}","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green edit-button subFormControl\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: GetControlTypeTranslatedName()\\\"></span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green edit-button subFormControl\\\" data-bind=\\\"style: _style, tooltip: { content: HideCaption() ? _labels.HISTORY : '' }\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: _labels.HISTORY, css: {'hide-caption': HideCaption()}\\\"></span> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn green edit-button subFormControl\\\" data-bind=\\\"style: _style, tooltip: { content: HideCaption() ? _labels.HISTORY : '' }\\\"> <i class=\\\"fa fa-history\\\"></i><span data-bind=\\\"text: _labels.HISTORY, css: {'hide-caption': HideCaption()}\\\"></span> </a> \";\n// Exports\nexport default code;","import * as ko from \"knockout\"\r\nimport * as _ from 'underscore'\r\nimport * as Viewer from \"viewer\";\r\nimport * as Markerjs2 from \"markerjs2\";\r\n\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {ViewerJsExtention} from 'Core/KnockoutExtentions/ViewerJsExtention';\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\"\r\nimport {IControlParam} from \"Core/Screens/IScreen\"\r\nimport {IGetImageControlDataRequestModel, ImageDataStore} from 'Core/Controls/Image/Stores/ImageDataStore'\r\nimport {FileModel, ImageDataModel} from 'Core/Controls/Image/Models/ImageDataModel'\r\nimport {ImageCropperScreen} from 'Core/Controls/Image/ImageCropperScreen/ImageCropperScreen'\r\nimport {CONTROL_TYPES, RenderModes, TABLE_TYPES} from 'Core/Constant'\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nimport ImageConfig from \"Core/Controls/Image/Configs/image-config.json\";\r\n\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {ScreenTypes} from \"../../Common/Enums/ScreenTypes\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Image/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Image/Templates/HelpView.html'\r\nimport ToolBarTemplate from 'Core/Controls/Image/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/Image/Templates/Design.html'\r\nimport EditTemplate from 'Core/Controls/Image/Templates/Edit.html'\r\n\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\nimport {ImageFromCamera} from 'Core/Controls/Image/ImageFromCamera/ImageFromCamera';\r\nimport TruncateFileName from 'Core/Common/TruncateFileName';\r\nimport {DropDataStore} from \"../Drop/Stores/DropDataStore\";\r\nimport {UploadChunkModel} from \"../Drop/Models/UploadChunkModel\";\r\nimport {Guid} from \"../../Common/Guid\";\r\nimport {MarkerArea} from \"markerjs2\";\r\n\r\nko.templates['Core/Controls/Image/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Image/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Image/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Image/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Image/Templates/Edit'] = EditTemplate;\r\n\r\nexport const CLIPBOARD_IMAGES_TOPIC = 'clipboardImages';\r\n\r\nexport class Image extends BaseControl {\r\n private _dataModel: KnockoutObservable<ImageDataModel>;\r\n private _image: KnockoutObservable<FileModel>;\r\n private _imageCropperScreen: ImageCropperScreen;\r\n private _attachments: Array<AttachmentModel>;\r\n private _removeAttachments: Array<FileModel>;\r\n private _dropzoneInstance: any;\r\n private _cropedImageClass: string;\r\n private _isImageGallery: boolean;\r\n private _maxFileSize: number;\r\n private _maxUploadingFilesSize: number;\r\n private _maxCombinedSize: number;\r\n\tprivate _imageHeight: KnockoutObservable<string>;\r\n private _hidden: KnockoutObservable<boolean>;\r\n private _isMobile: boolean;\r\n private _originalValue: string;\r\n private _newAttachments: Array<any>;\r\n private _isNewRecord: boolean;\r\n private _clipboardImages: KnockoutObservable<Array<File>>;\r\n private _editGalleryContainer: HTMLElement;\r\n private _editGalleryViewer: Viewer;\r\n private _markerArea: MarkerArea;\r\n private _markerButton: Element;\r\n private _annotationsEnabled: KnockoutObservable<boolean>;\r\n private _annotations: Array<FileModel>;\r\n private _annotationsShown: KnockoutObservable<boolean>;\r\n private _showAnnotations: KnockoutObservable<boolean>;\r\n private _uploadedFilesObjects: Array<any>;\r\n private _disableCropping: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, ImageConfig);\r\n\r\n const isInTab = params.ParentControl ? params.ParentControl.GetType() === CONTROL_TYPES.TabPage : false;\r\n this._isWrapped = ko.observable(false);\r\n this._dataModel = ko.observable(null);\r\n this._image = ko.observable(null);\r\n this._imageCropperScreen = new ImageCropperScreen(!isInTab);\r\n this._isImageGallery = params.Model.EntityTypeName === TABLE_TYPES.Sub;\r\n this._attachments = [];\r\n this._removeAttachments = [];\r\n\t\tthis._imageHeight = ko.observable('');\r\n this._hidden = ko.observable(false);\r\n this._cropedImageClass = isInTab ? 'gallery' : 'portrait';\r\n this._maxFileSize = 15;\r\n this._maxUploadingFilesSize = 150;\r\n this._maxCombinedSize = 750;\r\n this._clipboardImages = ko.observable();\r\n this._annotationsEnabled = ko.observable(false);\r\n this._annotations = [];\r\n this._markerButton = null;\r\n this._annotationsShown = ko.observable(false);\r\n this._showAnnotations = ko.observable(true);\r\n this._uploadedFilesObjects = [];\r\n this._disableCropping = ko.observable(null);\r\n\r\n this._isMobile = MobileChecker.IsMobile();\r\n\r\n this.Init();\r\n this.BindEvents();\r\n this.AddEvent('DISPOSE');\r\n }\r\n\r\n private Init(): void {\r\n this.ApplyProperties();\r\n }\r\n\r\n get IsImageFile():boolean{\r\n return this._dataModel() && !!this._dataModel().Files.length;\r\n }\r\n\r\n private BindEvents() {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.General) {\r\n _.each(this.Properties.General.Properties, (item: any) => {\r\n this._disableCropping(item.DisableCropping);\r\n });\r\n }\r\n if (this.Properties.IsWrapped) {\r\n _.each(this.Properties.IsWrapped.Properties, (item: any) => {\r\n this.ApplyWrapTextProperty(item.WrapText);\r\n });\r\n }\r\n\r\n if (this.Properties.Annotations) {\r\n this.ApplyAnnotationsProperty(this.Properties.Annotations.Properties[0].Annotations);\r\n this.ApplyShowAnnotationProperty(this.GeneralProperties.GetPropertyValue('ShowAnnotations'));\r\n }\r\n\r\n if (this.Properties.ImageHeight) {\r\n this._imageHeight(this.Properties.ImageHeight.Properties[0].ImageHeight.Value);\r\n }\r\n\r\n if (this.Properties.HideIfEmpty) {\r\n const hideIfEmpty = this.Properties.HideIfEmpty.Properties[0].HideIfEmpty\r\n && !this.IsImageFile\r\n && this._renderMode() === RenderModes.View;\r\n this._hidden(hideIfEmpty);\r\n\t\t\t}\r\n\r\n\t\t\tif (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor]) && this.Properties.BackgroundColor) {\r\n\t\t\t\tthis._backgroundColor(this.Properties.BackgroundColor);\r\n }\r\n }\r\n }\r\n\r\n ApplyWrapTextProperty(wrapText) {\r\n this._isWrapped(wrapText);\r\n this._form && this._form.Wrap(this, wrapText);\r\n }\r\n\r\n ApplyAnnotationsProperty(annotationsEnabled) {\r\n this._annotationsEnabled(annotationsEnabled);\r\n }\r\n\r\n ApplyShowAnnotationProperty(showAnnotationsEnabled) {\r\n this._showAnnotations(showAnnotationsEnabled);\r\n }\r\n\r\n GetImageClass() {\r\n this.ApplyProperties();\r\n\r\n return `\r\n ${this._imageHeight()}\r\n ${this._isWrapped() ? 'wrapped-image' : 'galleryBox'}\r\n ${this._hidden() ? 'hidden' : null}\r\n ${this._clipboardImages() ? 'highlighted' : ''}\r\n `;\r\n }\r\n\r\n SetValue(data: IControlValue): void {\r\n if (data.RecordSpecsModel) {\r\n this._isNewRecord = data.RecordSpecsModel && data.RecordSpecsModel.IsNewRecord;\r\n }\r\n\r\n this._isRendered.subscribe((newValue) => {\r\n this._hidden(false);\r\n\r\n if (data.Data.Value) {\r\n if (this.IsImageGallery) {\r\n this.LoadGalleryData(data)\r\n .then(dataModel => this.PrepareForGallery(dataModel));\r\n } else {\r\n this.LoadSingleImageData(data)\r\n .then(dataModel => this.PrepareForSingleImage(dataModel));\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (this.IsImageGallery) {\r\n this.PrepareForGallery(null);\r\n } else {\r\n this.PrepareForSingleImage(null);\r\n }\r\n });\r\n }\r\n\r\n IsModified(): boolean {\r\n this.Deserialize();\r\n\r\n if (super.IsModified() || this._isNewRecord) {\r\n return true;\r\n }\r\n\r\n if (!this._isNewRecord && this._newAttachments.length == 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private PrepareForSingleImage(dataModel: ImageDataModel) {\r\n\r\n if (dataModel) {\r\n if (!dataModel.Files[0]) {\r\n this._dataModel(dataModel);\r\n }\r\n\r\n if (dataModel.Files[0] && dataModel.Files[0].ImageData) {\r\n this._dataModel(dataModel);\r\n }\r\n }\r\n\r\n let fileModel = dataModel && dataModel.Files[0] || null;\r\n\r\n if (fileModel && !fileModel.ImageData) {\r\n fileModel = null;\r\n }\r\n\r\n if (!fileModel && this.IsEditMode) {\r\n fileModel = new FileModel();\r\n }\r\n\r\n this._image(fileModel);\r\n\r\n if (this.IsEditMode) {\r\n this.InitDropzone();\r\n this.InitPasteEvents();\r\n }\r\n\r\n //Save attachment from example\r\n if (this._isNewRecord && this._dataModel()) {\r\n const [file] = this._dataModel().Files;\r\n\r\n if (file) {\r\n const exampleImage = new AttachmentModel();\r\n\r\n exampleImage.FileName = file.Name;\r\n exampleImage.Base64Data = file.ImageData;\r\n\r\n this._attachments.push(exampleImage);\r\n }\r\n }\r\n }\r\n\r\n private PrepareForGallery(dataModel: ImageDataModel) {\r\n if (this.IsEditMode) {\r\n this.InitEditGalleryViewer();\r\n }\r\n\r\n this._dataModel(dataModel);\r\n\r\n if (this.IsEditMode) {\r\n this.InitDropzone();\r\n this.InitPasteEvents();\r\n }\r\n }\r\n\r\n private LoadSingleImageData(data: IControlValue): P.Promise<ImageDataModel> {\r\n const deferred = P.defer<ImageDataModel>();\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: +data.Data.Value,\r\n FirstRecordOnly: true\r\n };\r\n\r\n ImageDataStore.Get(requestModel)\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(err))\r\n .always(() => this.UnBlockUi());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private LoadGalleryData(data: IControlValue) {\r\n const deferred = P.defer<ImageDataModel>();\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: data.SubjectRecordId,\r\n FirstRecordOnly: false\r\n };\r\n\r\n ImageDataStore.Get(requestModel)\r\n .then(data => deferred.resolve(data))\r\n .fail(err => deferred.reject(err))\r\n .always(() => this.UnBlockUi());\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private InitDropzone() {\r\n this._dropzoneInstance = ko.utils.domData.get(\r\n this._el.querySelector('.image-item, .dropzone'),\r\n 'dropZoneInstance'\r\n );\r\n\r\n if (this.GetCombinedReadOnly()) {\r\n this._dropzoneInstance.disable();\r\n }\r\n }\r\n\r\n public IsImage(fileName: string){\r\n let imageExtensions = ['bpm', 'jpg', 'jpeg', 'png', 'gif', 'jpe', 'jif', 'jfif', 'jfi'],\r\n extension = _.last(fileName.split('.'));\r\n\r\n if(extension){\r\n if(imageExtensions.indexOf(extension.toLowerCase())>=0){\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public ConvertBase64ToFile (base64Data: string, fileName: string): File {\r\n let byteString = atob(base64Data),\r\n ab = new ArrayBuffer(byteString.length),\r\n ia = new Uint8Array(ab),\r\n type = 'plain/text';\r\n\r\n for (let i = 0; i < byteString.length; i += 1) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n if(this.IsImage(fileName)){\r\n type = `image/${_.last(fileName.split('.'))}`\r\n }\r\n\r\n return new File([ia.buffer], fileName, { type: type });\r\n };\r\n\r\n public AddFiles(files: File[]){\r\n this._dropzoneInstance.emit('addedfiles', files);\r\n this._dropzoneInstance.handleFiles(files);\r\n }\r\n\r\n private InitPasteEvents() {\r\n PubSub.subscribe(CLIPBOARD_IMAGES_TOPIC, (message, data: Array<File> | undefined) => {\r\n this._clipboardImages(data);\r\n });\r\n\r\n this._el.addEventListener(\r\n 'click',\r\n event => {\r\n const clipboardImages = this._clipboardImages();\r\n\r\n if (clipboardImages) {\r\n event.stopPropagation();\r\n\r\n const images = this._dropzoneInstance.options.maxFiles\r\n ? clipboardImages.slice(\r\n 0,\r\n this._dropzoneInstance.options.maxFiles - this._dropzoneInstance.files.length\r\n )\r\n : clipboardImages;\r\n\r\n this._dropzoneInstance.emit('addedfiles', images);\r\n this._dropzoneInstance.handleFiles(images);\r\n\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n },\r\n true\r\n );\r\n\r\n document.addEventListener('click', event => {\r\n if (\r\n this._clipboardImages() &&\r\n event.target instanceof Node &&\r\n !this._el.contains(event.target) // click outside\r\n ) {\r\n PubSub.publish(CLIPBOARD_IMAGES_TOPIC, undefined);\r\n }\r\n });\r\n }\r\n\r\n private BlockUi() {\r\n if (this._el) {\r\n BlockUi.Block({Target: this._el});\r\n }\r\n }\r\n\r\n private UnBlockUi() {\r\n BlockUi.Unblock(this._el);\r\n }\r\n\r\n get Image(): KnockoutObservable<FileModel> {\r\n return this._image;\r\n }\r\n\r\n get IsImageGallery(): boolean {\r\n return this._isImageGallery;\r\n }\r\n\r\n get MaxFileSize(): number {\r\n return this._maxFileSize;\r\n }\r\n\r\n get MaxCombinedSize(): number {\r\n return this._maxCombinedSize;\r\n }\r\n\r\n get MaxUploadingFilesSize(): number {\r\n return this._maxUploadingFilesSize;\r\n }\r\n\r\n UploadSingleImageCrop(file: File, attachmentModel: AttachmentModel, data): void {\r\n BlockUi.Block();\r\n\r\n const imageCropperScreen = new ImageCropperScreen(true);\r\n\r\n imageCropperScreen.Type = file.type;\r\n imageCropperScreen.Image = window.URL.createObjectURL(file);\r\n imageCropperScreen.Show();\r\n\r\n BlockUi.Unblock();\r\n\r\n imageCropperScreen.On(\"IMAGE_CROPPED\",\r\n self,\r\n (eventArgs: any) => {\r\n if (eventArgs.data.CropedImage) {\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel());\r\n }\r\n\r\n const fileModel = new FileModel();\r\n\r\n fileModel.ImageData = eventArgs.data.CropedImage;\r\n this._image(fileModel);\r\n\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.Base64Data = eventArgs.data.CropedImage.split(',')[1];\r\n fileModel.Attachment = attachmentModel;\r\n this._attachments.push(attachmentModel);\r\n }\r\n });\r\n }\r\n\r\n UploadSingleImageNotCrop(file: File, attachmentModel: AttachmentModel, imageData?: string): void {\r\n\r\n if (imageData) {\r\n const fileModel = new FileModel();\r\n fileModel.ImageData = imageData;\r\n\r\n this._image(fileModel);\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel())\r\n }\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.Base64Data = imageData.split(',')[1];\r\n fileModel.Attachment = attachmentModel;\r\n this._attachments.push(attachmentModel);\r\n\r\n return;\r\n }\r\n\r\n if (file) {\r\n let result: string | ArrayBuffer = '';\r\n const reader: FileReader = new FileReader();\r\n const self = this;\r\n reader.onload = function(event) {\r\n result = event.target.result;\r\n if (!self._dataModel()) {\r\n self._dataModel(new ImageDataModel());\r\n }\r\n\r\n const fileModel = new FileModel();\r\n let base64 = result as string;\r\n\r\n fileModel.ImageData = base64;\r\n self._image(fileModel);\r\n\r\n self._dataModel().Files.push(fileModel);\r\n self._dataModel.valueHasMutated();\r\n\r\n attachmentModel.Base64Data = base64.split(',')[1];\r\n fileModel.Attachment = attachmentModel;\r\n self._attachments.push(attachmentModel);\r\n };\r\n reader.readAsDataURL(file);\r\n }\r\n }\r\n\r\n AfterUpload(file, data) {\r\n const self = this;\r\n const attachmentModel = new AttachmentModel();\r\n\r\n attachmentModel.FileName = file.name;\r\n\r\n if (!self.IsImageGallery) {\r\n this.AfterUploadSingleImage(file, attachmentModel, data);\r\n } else if (self.IsImageGallery) {\r\n this.AfterUploadInGallery(file, attachmentModel, data);\r\n }\r\n }\r\n\r\n private AddImageInGalleryMemory(file) {\r\n const image = $(\"<img/>\");\r\n image.prop('src', file.ImageData);\r\n image.attr('data-id', file.Id);\r\n\r\n $(this._editGalleryContainer).append(image);\r\n this._editGalleryViewer.update();\r\n }\r\n\r\n private RemoveImageFromGalleryMemory(file) {\r\n const image = $(this._editGalleryContainer).find(`img[data-id=\"${file.Id}\"][src=\"${file.ImageData}\"]`);\r\n if(!image.length){\r\n return;\r\n }\r\n\r\n image.remove();\r\n this._editGalleryViewer.update();\r\n }\r\n\r\n private InitEditGalleryViewer() {\r\n const self = this;\r\n const $container = $(\"<div/>\");\r\n this._editGalleryContainer = $container[0];\r\n\r\n const opt = {\r\n markerable: this._annotationsEnabled(),\r\n button: true,\r\n inline: false,\r\n navbar: false,\r\n title: false,\r\n toolbar: true,\r\n tooltip: true,\r\n movable: true,\r\n zoomable: true,\r\n rotatable: true,\r\n scalable: true,\r\n transition: true,\r\n fullscreen: true,\r\n keyboard: true,\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() {\r\n return true;\r\n },\r\n hide() {\r\n if (self._markerArea) {\r\n self._markerArea.close();\r\n }\r\n\r\n if (self._showAnnotations()) {\r\n self._annotationsShown(false);\r\n } else {\r\n self._annotationsShown(true);\r\n }\r\n },\r\n marker() {\r\n if (self._showAnnotations()) {\r\n self._markerButton = (self._editGalleryViewer.image.parentNode.parentNode as HTMLElement).getElementsByClassName(\"viewer-marker\")[0];\r\n self.ShowMarkerArea(self._editGalleryViewer.image);\r\n } else {\r\n if (self._annotationsShown()) {\r\n self._markerButton = (self._editGalleryViewer.image.parentNode.parentNode as HTMLElement).getElementsByClassName(\"viewer-marker\")[0];\r\n self.ShowMarkerArea(self._editGalleryViewer.image);\r\n\r\n return;\r\n }\r\n\r\n self._annotationsShown(true);\r\n }\r\n\r\n },\r\n viewed() {\r\n if (!self._annotationsShown() && opt.markerable) {\r\n opt.marker();\r\n if (self._markerButton) {\r\n self._markerButton.classList.add(\"disabled\");\r\n self._markerButton.setAttribute('style', 'pointer-events: none;');\r\n }\r\n }\r\n }\r\n };\r\n\r\n this._editGalleryViewer = new Viewer(this._editGalleryContainer, opt);\r\n\r\n this._editGalleryViewer.next = () => {\r\n if (this._editGalleryViewer.index + 1 < this._dataModel().Files.length) {\r\n\r\n let image = this._dataModel().Files[this._editGalleryViewer.index + 1];\r\n if (image.OriginalImageData == null) {\r\n this.GetOriginalImage(image, this._editGalleryViewer);\r\n } else {\r\n this._editGalleryViewer.view(Math.min(this._editGalleryViewer.index + 1, this._editGalleryViewer.images.length - 1));\r\n }\r\n return this._editGalleryViewer;\r\n }\r\n }\r\n\r\n this._editGalleryViewer.prev = () => {\r\n if (this._editGalleryViewer.index > 0) {\r\n\r\n let image = this._dataModel().Files[this._editGalleryViewer.index - 1];\r\n if (image.OriginalImageData == null) {\r\n this.GetOriginalImage(image, this._editGalleryViewer);\r\n } else {\r\n this._editGalleryViewer.view(Math.max(this._editGalleryViewer.index - 1, 0));\r\n }\r\n }\r\n return this._editGalleryViewer;\r\n }\r\n\r\n (this._editGalleryViewer as any).clickOnImage = (uniqueId) => {\r\n const index = this._dataModel().Files.findIndex(file => file.UniqueId === uniqueId);\r\n const file = this._dataModel().Files[index];\r\n\r\n const img = this._editGalleryViewer.images[index];\r\n $(img).attr('data-original', file.OriginalImageData);\r\n\r\n this._editGalleryViewer.update();\r\n this._editGalleryViewer.view(index);\r\n\r\n ViewerJsExtention.CustomTooltip();\r\n };\r\n }\r\n\r\n private AfterUploadSingleImage(file, attachmentModel: AttachmentModel, data) {\r\n if (this._disableCropping()) {\r\n this.UploadSingleImageNotCrop(file, attachmentModel);\r\n } else {\r\n this.UploadSingleImageCrop(file, attachmentModel, data);\r\n }\r\n }\r\n\r\n private AfterUploadInGallery(file, attachmentModel: AttachmentModel, data) {\r\n if (file.preloaded) {\r\n this.AddImageInGalleryMemory(file);\r\n file.previewElement.addEventListener('click', () => {\r\n this.GetOriginalImage(file, this._editGalleryViewer);\r\n });\r\n return;\r\n }\r\n\r\n file.OriginalImageData = file.dataURL;\r\n\r\n BlockUi.Block();\r\n\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel());\r\n }\r\n\r\n if (file.status === 'error' || file.status === 'removed') {\r\n BlockUi.Unblock();\r\n return;\r\n }\r\n\r\n const fileModel = new FileModel();\r\n\r\n fileModel.ImageData = window.URL.createObjectURL(file);\r\n fileModel.OriginalImageData = fileModel.ImageData;\r\n\r\n if (file && file.status === \"queued\") {\r\n fileModel.CacheFile = file;\r\n }\r\n\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n attachmentModel.FileName = TruncateFileName(file.name);\r\n attachmentModel.TempName = `${Guid.NewGuid()}_${attachmentModel.FileName}`;\r\n attachmentModel.Index = this._editGalleryViewer.images.length;\r\n\r\n fileModel.Attachment = attachmentModel;\r\n fileModel.Id = Guid.NewGuid();\r\n \r\n const chunks = this.CutByChunks(file);\r\n\r\n this.UploadFileChunks(chunks, attachmentModel.TempName, 1, chunks.length)\r\n .finally(()=>{\r\n BlockUi.Unblock();\r\n })\r\n .then((result) => {\r\n if(!result){ \r\n this._dropzoneInstance.removeFile(file);\r\n return; \r\n }\r\n this.AddImageInGalleryMemory(fileModel);\r\n file.previewElement.addEventListener('click', () => {\r\n this.GetOriginalImage(fileModel, this._editGalleryViewer);\r\n }); \r\n this._uploadedFilesObjects.push({Id: fileModel.Id, File: file});\r\n this._attachments.push(attachmentModel);\r\n });\r\n }\r\n\r\n private CutByChunks(file) {\r\n const chunkSizeInBytes = 1 * 1024 * 1024;\r\n\r\n let streamPosition = 0;\r\n let streamEndPosition = chunkSizeInBytes;\r\n\r\n if (chunkSizeInBytes >= file.size) {\r\n return [file];\r\n }\r\n\r\n const chunks = [];\r\n\r\n while (streamEndPosition < file.size) {\r\n const chunk = file.slice(streamPosition, streamEndPosition);\r\n chunks.push(chunk);\r\n\r\n streamPosition = streamEndPosition;\r\n streamEndPosition += chunkSizeInBytes;\r\n }\r\n const chunk = file.slice(streamPosition, file.size);\r\n chunks.push(chunk);\r\n\r\n return chunks;\r\n }\r\n\r\n private UploadFileChunks(fileChunks: any[], fileName: string, currentPart: number, totalPart: number) {\r\n return new Promise(resolve => {\r\n const uploadModel = new UploadChunkModel(fileName, fileChunks[currentPart - 1]);\r\n DropDataStore.UploadFileChunk(uploadModel)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n resolve(false);\r\n } else {\r\n if (totalPart >= currentPart) {\r\n if (totalPart === currentPart) {\r\n //Whole file uploaded\r\n resolve(true);\r\n } else {\r\n //Show uploading progress\r\n this.UploadFileChunks(fileChunks, fileName, currentPart + 1, totalPart).then(result => {\r\n resolve(result);\r\n });\r\n }\r\n }\r\n }\r\n }).fail((error)=>{\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n Deserialize() {\r\n const data = {attachments: [], removeAttachments: [], annotations: []};\r\n const field = _.first(this._model().Fields);\r\n\r\n _.each(this._attachments, item => {\r\n data['attachments'].push({FieldId: field.Id, Data: item});\r\n });\r\n\r\n _.each(this._removeAttachments, item => {\r\n data['removeAttachments'].push({FieldId: field.Id, Data: {Id: item.Id, IsImage: true}});\r\n });\r\n\r\n _.each(this._annotations, item => {\r\n data['annotations'].push({FieldId: field.Id, Data: item});\r\n });\r\n\r\n this._newAttachments = data.attachments;\r\n data['FieldName'] = `${field.EntityName}.${field.Name}`;\r\n\r\n return data;\r\n }\r\n\r\n GetOriginalImage(file: FileModel, viewer) {\r\n if (file.OriginalImageData) {\r\n viewer.clickOnImage(file.UniqueId);\r\n return;\r\n }\r\n\r\n this.BlockUi();\r\n\r\n const requestModel: IGetImageControlDataRequestModel = {\r\n ControlId: this.GetControlId(),\r\n FieldId: this.GetFieldId(),\r\n RecordId: file.Id,\r\n FirstRecordOnly: !this.IsImageGallery\r\n };\r\n\r\n ImageDataStore.GetOriginal(requestModel)\r\n .then(attachment => {\r\n file.OriginalImageData = attachment.Base64Data;\r\n this._dataModel.valueHasMutated();\r\n viewer.clickOnImage(file.UniqueId);\r\n })\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => {\r\n this.UnBlockUi();\r\n });\r\n }\r\n\r\n ImageDelete(file: FileModel) {\r\n if(!this._dataModel() || !this._dataModel().Files || this._dataModel().Files.length === 0){\r\n return;\r\n }\r\n\r\n let fileIndex = this._dataModel().Files.indexOf(file);\r\n let viewerImage = file;\r\n let galleryAttachment = file.Attachment;\r\n\r\n if (fileIndex === -1) {\r\n if (!this.IsImageGallery)\r\n return;\r\n\r\n const cachedFileModel = _.find(this._dataModel().Files,\r\n (fileWithCache) => {\r\n return fileWithCache.CacheFile === file\r\n });\r\n if (!cachedFileModel) {\r\n return;\r\n }\r\n\r\n const cachedFileIndex = this._dataModel().Files.indexOf(cachedFileModel);\r\n fileIndex = cachedFileIndex;\r\n viewerImage = cachedFileModel;\r\n\r\n if (!galleryAttachment) {\r\n galleryAttachment = cachedFileModel.Attachment;\r\n }\r\n }\r\n\r\n this._dataModel().Files.splice(fileIndex, 1);\r\n\r\n if (this.IsImageGallery) {\r\n this.RemoveImageFromGalleryMemory(viewerImage);\r\n\r\n if (file.Id === null || file.Id === undefined) {\r\n this._attachments.splice(this._attachments.indexOf(galleryAttachment), 1);\r\n } else {\r\n this._removeAttachments.push(file);\r\n }\r\n } else {\r\n this._image(new FileModel());\r\n const attachmentModel = new AttachmentModel();\r\n\r\n attachmentModel.FileName = null;\r\n attachmentModel.Base64Data = null;\r\n this._attachments = [attachmentModel];\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n Dispose(): void {\r\n this.Trigger('DISPOSE');\r\n }\r\n\r\n GetImageFromCamera(): void {\r\n const self = this;\r\n const camera = new ImageFromCamera();\r\n\r\n const attachmentModel = new AttachmentModel();\r\n\r\n attachmentModel.FileName = `Camera_${Date.now()}.png`;\r\n\r\n this._form.GetScreen().AttachModalComponent(camera);\r\n\r\n camera.On('SAVE', this, (eventArgs) => {\r\n\r\n if (this._disableCropping() && !this.IsImageGallery){\r\n this.UploadSingleImageNotCrop(null, attachmentModel, eventArgs.data.Image);\r\n return;\r\n }\r\n\r\n let imageCropperScreen = new ImageCropperScreen(true);\r\n\r\n imageCropperScreen.Image = eventArgs.data.Image;\r\n imageCropperScreen.Show();\r\n\r\n imageCropperScreen.On(\"IMAGE_CROPPED\", self, (eventArgs: any) => {\r\n\r\n if (eventArgs.data.CropedImage) {\r\n attachmentModel.Base64Data = eventArgs.data.CropedImage.split(',')[1];\r\n\r\n if (!this.IsImageGallery){\r\n const fileModel = new FileModel();\r\n fileModel.ImageData = eventArgs.data.CropedImage;\r\n\r\n this._image(fileModel);\r\n if (!this._dataModel()) {\r\n this._dataModel(new ImageDataModel())\r\n }\r\n this._dataModel().Files.push(fileModel);\r\n this._dataModel.valueHasMutated();\r\n\r\n fileModel.Attachment = attachmentModel;\r\n this._attachments.push(attachmentModel);\r\n }\r\n\r\n if (this.IsImageGallery){\r\n let files = [];\r\n if(attachmentModel.Base64Data && attachmentModel.Base64Data != ''){\r\n if(self.IsImage(attachmentModel.FileName)){\r\n files.push(this.ConvertBase64ToFile(attachmentModel.Base64Data, attachmentModel.FileName));\r\n }\r\n }\r\n self.AddFiles(files);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n ShowMarkerArea(target) {\r\n const self = this;\r\n this.DisableViewerControls();\r\n\r\n const annotations = this._dataModel().Files[this._editGalleryViewer.index].Annotations;\r\n this._markerArea = new MarkerArea(target);\r\n this._markerArea.renderImageType = 'image/png';\r\n this._markerArea.renderMarkersOnly = true;\r\n this._markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue,\r\n\r\n this._markerArea.addRenderEventListener((imgURL, state) => {\r\n\r\n let svgList = $('.__markerjs2_').find('svg'), svg = svgList[svgList.length - 1], svgString, svgBase64;\r\n svgString = new XMLSerializer().serializeToString(svg);\r\n svgBase64 = `data:image/svg+xml;base64,${window.btoa(svgString)}`;\r\n\r\n const fileModel = this._dataModel().Files[this._editGalleryViewer.index];\r\n\r\n let images = $('.viewer-canvas').find('img');\r\n let img = images[images.length - 1];\r\n\r\n let canvas = document.createElement(\"canvas\"), context, width = img.offsetWidth, height = img.offsetHeight;\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n context = canvas.getContext(\"2d\");\r\n context.rect(0 , 0 , canvas.width , canvas.height);\r\n\r\n let originalImage = document.createElement('img');\r\n originalImage.src = fileModel.OriginalImageData;\r\n originalImage.crossOrigin = 'Anonymous';\r\n\r\n originalImage.onload = function(){\r\n context.drawImage(originalImage , 0 , 0 , width , height);\r\n\r\n let svgImage = document.createElement('img');\r\n svgImage.src = svgBase64;\r\n svgImage.crossOrigin = 'Anonymous';\r\n\r\n svgImage.onload = function(){\r\n context.drawImage(svgImage , 0 , 0 , width , height);\r\n let base64 = canvas.toDataURL(\"image/png\");\r\n\r\n const fileForPreview = self._dataModel().Files[self._editGalleryViewer.index] as any;\r\n let prevEl = fileForPreview.previewElement;\r\n\r\n if (!prevEl) {\r\n _.map(self._uploadedFilesObjects, (fileObject) => {\r\n if (fileObject.Id == fileModel.Id) {\r\n prevEl = fileObject.File.previewElement;\r\n }\r\n });\r\n }\r\n let previewImageElement = $(prevEl).find('.dz-image > img');\r\n previewImageElement.attr('src', base64);\r\n\r\n const attachmentModel = new AttachmentModel(), attachment = self._attachments.find(a => a.Index == self._editGalleryViewer.index),\r\n annotation = self._annotations.find(a => a.Id === fileModel.Id);\r\n\r\n if (fileModel.Name) {\r\n attachmentModel.FileName = TruncateFileName(fileModel.Name);\r\n } else {\r\n attachmentModel.FileName = TruncateFileName(attachment.FileName);\r\n }\r\n\r\n attachmentModel.Base64Data = base64.replace('data:image/png;base64,', '');\r\n attachmentModel.TempName = `${Guid.NewGuid()}_${attachmentModel.FileName}`;\r\n\r\n let file;\r\n if(attachmentModel.Base64Data && attachmentModel.Base64Data != ''){\r\n file = self.ConvertBase64ToFile(attachmentModel.Base64Data, attachmentModel.FileName);\r\n\r\n let chunks = self.CutByChunks(file);\r\n self.UploadFileChunks(chunks, attachmentModel.TempName, 1, chunks.length)\r\n .then(() => BlockUi.Unblock());\r\n }\r\n\r\n if (fileModel.Attachment) {\r\n fileModel.TempOriginalName = fileModel.Attachment.TempName;\r\n } else {\r\n let originalImageFile, originalImageBase64 = fileModel.OriginalImageData.replace('data:', '').replace(/^.+,/, '');\r\n fileModel.TempOriginalName = `${Guid.NewGuid()}_${fileModel.Name}`;\r\n\r\n if (originalImageBase64 && originalImageBase64 != '') {\r\n originalImageFile = self.ConvertBase64ToFile(originalImageBase64, fileModel.Name);\r\n\r\n let chunks = self.CutByChunks(originalImageFile);\r\n self.UploadFileChunks(chunks, fileModel.TempOriginalName, 1, chunks.length)\r\n .then(() => BlockUi.Unblock());\r\n }\r\n }\r\n\r\n fileModel.TempName = attachmentModel.TempName;\r\n fileModel.Annotations = JSON.stringify(state);\r\n\r\n if (annotation) {\r\n annotation.Annotations = fileModel.Annotations;\r\n annotation.TempName = fileModel.TempName;\r\n annotation.TempOriginalName = fileModel.TempOriginalName;\r\n } else {\r\n const attachment = self._attachments.find(a => a.Index == self._editGalleryViewer.index);\r\n if (attachment) {\r\n attachment.Annotations = fileModel.Annotations;\r\n attachment.TempName = fileModel.TempName;\r\n attachment.TempOriginalName = fileModel.TempOriginalName;\r\n } else {\r\n const newAnnotation = new FileModel();\r\n newAnnotation.Id = fileModel.Id;\r\n newAnnotation.Annotations = fileModel.Annotations;\r\n newAnnotation.TempName = fileModel.TempName;\r\n newAnnotation.TempOriginalName = fileModel.TempOriginalName;\r\n self._annotations.push(newAnnotation);\r\n }\r\n }\r\n\r\n self.EnableViewerControls();\r\n }\r\n };\r\n });\r\n\r\n this._markerButton.classList.add(\"disabled\");\r\n this._markerButton.setAttribute('style', 'pointer-events: none;');\r\n this._markerArea.addCloseEventListener(() => {\r\n this.EnableViewerControls();\r\n this._annotationsShown(true);\r\n this._markerButton.classList.remove(\"disabled\");\r\n this._markerButton.setAttribute('style', 'pointer-events: auto;');\r\n });\r\n\r\n this._markerArea.show();\r\n this._annotationsShown(false);\r\n\r\n if (annotations) {\r\n this._markerArea.restoreState(JSON.parse(annotations));\r\n }\r\n }\r\n\r\n DisableViewerControls() {\r\n this._editGalleryViewer.options.movable = false;\r\n this._editGalleryViewer.options.zoomable = false;\r\n this._editGalleryViewer.options.rotatable = false;\r\n this._editGalleryViewer.options.flippable = false;\r\n }\r\n\r\n EnableViewerControls() {\r\n this._editGalleryViewer.options.movable = true;\r\n this._editGalleryViewer.options.zoomable = true;\r\n this._editGalleryViewer.options.flippable = true;\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" data-bind=\\\"css: {'isImageGallery': _isImageGallery}, class: GetImageClass(), click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"form-standart-control clearfix ConsultScreenView imagecontrol-result image-control-result\\\"> <div class=\\\"image-controlWrapper\\\"> <!-- ko if: _isImageGallery--> <!-- ko with: _dataModel() --> <div class=\\\"mix-grid images-container clearfix\\\" data-bind=\\\"viewerJs: {images: Files, getOriginalImage: $parent.GetOriginalImage.bind($parent) }\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: !_isImageGallery--> <!-- ko if: !_image()--> <img class=\\\"image-item\\\" src=\\\"data:image/jpeg;base64,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\\\" width=\\\"148\\\" height=\\\"100\\\" alt=\\\"No Image\\\"/> <!-- /ko --> <!-- ko if: _image()--> <!-- ko with: _image() --> <img data-bind=\\\"attr: { src: ImageData }\\\" class=\\\"image-item\\\" width=\\\"148\\\" height=\\\"100\\\" alt=\\\"No Image\\\"> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" data-bind=\\\"css: {'isImageGallery': _isImageGallery}, class: GetImageClass(), click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"form-standart-control clearfix ConsultScreenView imagecontrol-result image-control-result\\\"> <div class=\\\"image-controlWrapper\\\"> <!-- ko if: _isImageGallery--> <!-- ko with: _dataModel() --> <div class=\\\"mix-grid images-container clearfix\\\" data-bind=\\\"viewerJs: {images: Files, getOriginalImage: $parent.GetOriginalImage.bind($parent), annotationsEnabled: $parent._annotationsEnabled(), showAnnotations: $parent._showAnnotations() }\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: !_isImageGallery--> <!-- ko if: !_image()--> <img data-bind=\\\"tooltip: DescriptionToolTip\\\" class=\\\"image-item\\\" src=\\\"data:image/jpeg;base64,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\\\" width=\\\"148\\\" height=\\\"100\\\" alt=\\\"No Image\\\"/> <!-- /ko --> <!-- /ko --> <!-- ko if: _image()--> <!-- ko with: _dataModel() --> <div class=\\\"image-control__single-image\\\" data-bind=\\\"tooltip: $parent.DescriptionToolTip, viewerJs: {images: Files, imageClasses: 'image-item', getOriginalImage: $parent.GetOriginalImage.bind($parent) }\\\"></div> <!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-picture-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"css: _imageHeight\\\" data-control-type=\\\"image-control\\\" class=\\\"FormDesignerView form-designer-view clearfix control-prev-image form-standart-control new-control\\\"> <img class=\\\"image-item\\\" src=\\\"/img/Custom/pic.jpg\\\" alt=\\\"ImageControl\\\"/> </div>\\t\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"image-control\\\" data-bind=\\\"css: {'isImageGallery': _isImageGallery, 'noImageFile': !IsImageFile}, style: { backgroundColor: _backgroundColor }, class: GetImageClass(), click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView image-control imagecontrol-result form-standart-control\\\"> <!-- ko if: !GetCombinedReadOnly() --> <div class=\\\"transition camera-block\\\" data-bind=\\\"visible: !$data._isMobile, click: GetImageFromCamera\\\"> <i class=\\\"transition fa fa-camera\\\"></i> </div> <!-- /ko --> <!-- ko if: !_isImageGallery--> <!-- ko with: Image --> <!-- ko if: ImageData --> <div class=\\\"image-wrap-container\\\"> <!-- ko if: !$parent.GetCombinedReadOnly() --> <a class=\\\"remove-mark\\\" data-bind=\\\"click: $parent.ImageDelete.bind($parent)\\\"></a> <!-- /ko --> <img data-bind=\\\"attr: { src: ImageData },\\r\\n\\t\\t\\t\\t\\t\\t dropzone: { url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\t previewsContainer: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t clickable: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t autoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t addedfile: $parent.AfterUpload.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp' },\\r\\n\\t\\t\\t\\t\\t\\ttooltip: $parent.DescriptionToolTip,\\r\\n\\t\\t\\t\\t\\t\\tcss: $parent._cropedImageClass\\\" style=\\\"cursor:pointer\\\" alt=\\\"No Image\\\" class=\\\"image-item\\\"/> </div> <!-- /ko --> <!-- ko if: !ImageData --> <div data-bind=\\\"dropzone: {\\r\\n\\t\\t\\t\\t\\t\\t\\t url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\t autoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t addedfile: $parent.AfterUpload.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t maxFiles: 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp'\\r\\n\\t\\t\\t\\t }, tooltip: $parent.DescriptionToolTip\\\" class=\\\"dropzone\\\"> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span> <!-- ko if: !$parent.GetCombinedReadOnly() --> <b class=\\\"image-message-text\\\"><!-- ko text: $parent._labels.UPLOAD_IMAGE --><!-- /ko --></b><i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko if: $parent.GetCombinedReadOnly() --> No Image <!-- /ko --> </span> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: _isImageGallery --> <div data-bind=\\\"scrollFixer: {},\\r\\n\\t\\t dropzone: {\\r\\n\\t\\t\\t url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t autoProcessQueue: false,\\r\\n\\t\\t\\t maxFilesize: $data.MaxFileSize,\\r\\n\\t\\t\\t maxThumbnailFilesize: $data.MaxFileSize,\\r\\n\\t\\t\\t addRemoveLinks: !GetCombinedReadOnly(),\\r\\n\\t\\t\\t dictRemoveFile: '',\\r\\n\\t\\t\\t acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi,.webp'\\r\\n\\t\\t }\\\" class=\\\"dropzone\\\"> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <!-- ko if: !GetCombinedReadOnly() --> <span><!-- ko text: _labels.UPLOAD_IMAGE --><!-- /ko --><i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- ko if: GetCombinedReadOnly() --> No Image <!-- /ko --> </div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\nimport * as $ from \"jquery\"\r\nimport {Modal} from 'Core/Common/Modal'\r\nimport {Event} from 'Core/Common/Event'\r\n\r\nimport ImageCropperScreenTemplate\r\n from 'Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen.html'\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen'] = ImageCropperScreenTemplate;\r\n\r\n\r\nexport class ImageCropperScreen extends Event {\r\n private _modal: Modal;\r\n private _image: string;\r\n private _type: string;\r\n private _cropedImage: string;\r\n private _aspectRatio: number;\r\n private _windowWidth: number;\r\n\r\n constructor(isPortrait: boolean = false) {\r\n super();\r\n this._aspectRatio = isPortrait ? 3 / 4 : undefined;\r\n this._image = '';\r\n this.AddEvent('IMAGE_CROPPED');\r\n this._windowWidth = $(window).width();\r\n }\r\n\r\n set Image(image: string) {\r\n this._image = image;\r\n }\r\n\r\n get Image() {\r\n return this._image;\r\n }\r\n\r\n set Type(type: string) {\r\n this._type = type;\r\n }\r\n\r\n get Type() {\r\n return this._type;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Controls/Image/ImageCropperScreen/Templates/ImageCropperScreen';\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n addClass: 'image-cropper-screen'\r\n });\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n AfterRender() {\r\n this._modal.Show();\r\n }\r\n\r\n Save() {\r\n this.Trigger('IMAGE_CROPPED', {CropedImage: this._cropedImage});\r\n this._modal.Close();\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n AfterCrop(image) {\r\n this._cropedImage = image;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet light scroll-fixer\\\"> <div class=\\\"noborder portlet-body\\\"> <div class=\\\"actionBarSubForm\\\"> <a data-bind=\\\"click: Save\\\" class=\\\"btn green subFormControl\\\" id=\\\"saveBtn\\\"> <i class=\\\"fa fa-save\\\"></i> Save </a> <a data-bind=\\\"click: Cancel\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\" id=\\\"cancelBtn\\\"> <i class=\\\"fa fa-close\\\"></i> Cancel </a> </div> <div class=\\\"mainSubForm margin-top-10 crop-container\\\"> <div class=\\\"row\\\"> <div class=\\\"col-md-12\\\"> <div class=\\\"crop-image-container\\\"> <img data-bind=\\\"attr: { src: Image },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t cropper: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\ttype: Type,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tafterCrop: $data.AfterCrop.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoCropArea: 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taspectRatio: $data._aspectRatio,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmovable: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tzoomable: $data._windowWidth <= 768 ? false : true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcropBoxResizable: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tminContainerWidth: 290,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tminContainerHeight: 350\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\"> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","/// <reference types=\"webrtc\" />\r\n\r\nimport * as ko from \"knockout\";\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { addCustomEvent } from \"Session/SessionRecorder\";\r\nimport CameraTemplate from 'Core/Controls/Image/Templates/CameraTemplate.html'\r\nko.templates['Core/Controls/Image/Templates/CameraTemplate'] = CameraTemplate;\r\n\r\nexport class ImageFromCamera extends Event {\r\n\tprivate _canvas: any;\r\n\tprivate _video: any;\r\n\tprivate _context: any;\r\n\tprivate _modal: Modal;\r\n\tprivate _cansavStatus: KnockoutObservable<boolean>;\r\n\tprivate _showStream: KnockoutObservable<boolean>;\r\n\tprivate _stream: MediaStream;\r\n\tprivate _el: any;\r\n\tprivate _labels: LABELS;\r\n\tprivate _width: KnockoutObservable<number>;\r\n\tprivate _height: KnockoutObservable<number>;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis._canvas = ko.observable(null);\r\n\t\tthis._video = ko.observable(null);\r\n\t\tthis._cansavStatus = ko.observable(false);\r\n\t\tthis.AddEvent('SAVE');\r\n\t\tthis.AddEvent('Close');\r\n\t\tthis._showStream = ko.observable(true);\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._width = ko.observable(null);\r\n\t\tthis._height = ko.observable(null);\r\n\r\n\t\tthis.GetCameraStream()\r\n\t\t\t.then((stream) => {\r\n\t\t\t\tthis._stream = stream;\r\n\t\t\t\tlet videoTrack = stream.getVideoTracks()[0];\r\n\t\t\t\tlet settings = videoTrack.getSettings();\r\n\r\n\t\t\t\tthis._width(settings.width);\r\n\t\t\t\tthis._height(settings.height);\r\n\r\n\t\t\t\tthis.ShowInModal();\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tconst message = NOTIFICATIONS.ERROR_CAMERA_INITIALIZATION.replace('{ErrorMessage}', error.message);\r\n\t\t\t\tnew Notifier(null).Failed(message);\r\n\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tthis._el = el;\r\n\r\n\t\tthis.InitPhotoPreview();\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tInitPhotoPreview() {\r\n\t\tthis._video = $(this._el).find('#video')[0];\r\n\t\tthis._canvas = $(this._el).find('#canvas')[0];\r\n\t\tthis._context = this._canvas.getContext('2d');\r\n\r\n if ('srcObject' in this._video) {\r\n this._video.srcObject = this._stream;\r\n } else {\r\n\t\t\tconst url = window.URL || window['webkitURL'];\r\n // Avoid using this in new browsers, as it is going away.\r\n this._video.src = url.createObjectURL(this._stream as any);\r\n }\r\n\t\tthis._video.play();\r\n\t}\r\n\r\n\tGetCameraStream(): Promise<MediaStream> {\r\n\t\treturn new Promise((resolve, reject) => {\r\n const constraints = {\r\n\t\t\t\tvideo: {\r\n\t\t\t\t\twidth: {\r\n\t\t\t\t\t\tmin: 640,\r\n\t\t\t\t\t\tideal: 1920,\r\n\t\t\t\t\t\tmax: 2560,\r\n\t\t\t\t\t},\r\n\t\t\t\t\theight: {\r\n\t\t\t\t\t\tmin: 480,\r\n\t\t\t\t\t\tideal: 1080,\r\n\t\t\t\t\t\tmax: 1440\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvideo: true\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {\r\n navigator.mediaDevices.getUserMedia(constraints)\r\n .then(resolve)\r\n .catch(reject);\r\n\r\n } else {\r\n // for browsers that doesn't support mediaDevices.getUserMedia method\r\n navigator.getUserMedia =\r\n navigator.getUserMedia ||\r\n navigator['webkitGetUserMedia'] ||\r\n navigator['mozGetUserMedia'] ||\r\n navigator['msGetUserMedia'];\r\n\r\n if (navigator.getUserMedia) {\r\n navigator.getUserMedia(constraints, resolve, reject);\r\n } else {\r\n const notifier = new Notifier(null);\r\n\r\n notifier.Failed(NOTIFICATIONS.GET_USER_MEDIA_IS_NOT_SUPPORTED);\r\n this.CloseModal();\r\n return reject({ message: NOTIFICATIONS.GET_USER_MEDIA_IS_NOT_SUPPORTED});\r\n }\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tTakePhoto() {\r\n\t\tthis._context.drawImage(this._video, 0, 0, 1920, 1080, 0, 0, 1920, 1080);\r\n\t\tthis._cansavStatus(true);\r\n\t\tthis._showStream(false);\r\n\t\tthis.StopStream();\r\n\t}\r\n\r\n\tBackToStream() {\r\n\t\tthis.GetCameraStream()\r\n\t\t\t.then((stream) => {\r\n\t\t\t\tthis._stream = stream;\r\n\r\n\t\t\t\tthis.InitPhotoPreview();\r\n\t\t\t})\r\n\t\t\t.catch((error) => {\r\n\t\t\t\tthis.CloseModal();\r\n\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t});\r\n\r\n\r\n\t\tthis._showStream(true);\r\n\t}\r\n\r\n StopStream() {\r\n if (this._stream) {\r\n this._stream.getTracks().forEach((stream) => stream.stop());\r\n }\r\n\t}\r\n\r\n\tSave() {\r\n\t\taddCustomEvent('save-photo', {});\t\t\r\n\t\tif (this._cansavStatus()) {\r\n\t\t\tconst base64Image = this._canvas.toDataURL('image/jpeg');\r\n\r\n\t\t\tthis._modal.Close();\r\n\t\t\tthis.Trigger('SAVE', { Image: base64Image });\r\n\t\t} else {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_TAKE_PHOTO);\r\n\t\t}\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\twidthInPercent: 100,\r\n\t\t\theightInPercent: 100,\r\n\t\t\taddClass: 'camera-modal'\r\n\t\t}, false);\r\n\r\n\t\tthis._modal.On('CLOSE', this, this.StopStream);\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tCloseModal() {\r\n this.StopStream();\r\n if (this._modal) {\r\n \tthis._modal.Close();\r\n }\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Image/Templates/CameraTemplate';\r\n\t}\r\n\r\n\tCloseComponentInModal() {\r\n\t\tthis.CloseModal();\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"camera-modal clearfix\\\"> <div class=\\\"camera-controls clearfix\\\"> <button data-bind=\\\"click: $data.BackToStream.bind($data), visible: !$data._showStream()\\\" class=\\\"btn default\\\"> <span><!-- ko text: _labels.BACK --><!-- /ko --></span> </button> <button data-bind=\\\"click: $data.TakePhoto.bind($data), visible: $data._showStream()\\\" class=\\\"btn green\\\"> <span><!-- ko text: _labels.SNAP_PHOTO --><!-- /ko --></span> </button> <button data-bind=\\\"click: $data.Save.bind($data), visible: !$data._showStream()\\\" class=\\\"btn green\\\"> <span><!-- ko text: _labels.SAVE --><!-- /ko --></span> </button> </div> <div class=\\\"camera-pictures clearfix\\\"> <video data-bind=\\\"visible: $data._showStream()\\\" id=\\\"video\\\" class=\\\"camera-video\\\" autoplay> </video> <canvas data-bind=\\\"visible: !$data._showStream(), attr: { width: _width(), height: _height()}\\\" id=\\\"canvas\\\" class=\\\"camera-canvas\\\"> </canvas> </div> </div>\";\n// Exports\nexport default code;","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nexport class AttachmentModel {\r\n\tconstructor() {\r\n\t\tthis.FileName = null;\r\n\t\tthis.Base64Data = null;\r\n\t}\r\n\r\n\t@deserialize\r\n\tFileName: string;\r\n\r\n\t@deserialize\r\n\tIndex: number;\r\n\r\n\t@deserialize\r\n\tBase64Data: string;\r\n\r\n\t@deserialize\r\n\tTempName: string;\r\n\r\n\t@deserialize\r\n\tTempOriginalName: string;\r\n\r\n\t@deserialize\r\n\tAnnotations: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\n\r\nexport class FileModel {\r\n\tconstructor() {\r\n\t\tthis.UniqueId = Guid.NewGuid();\r\n\t\tthis.ImageData = null;\r\n\t\tthis.Name = null;\r\n\t\tthis.OriginalImageData = null;\r\n\t\tthis.CacheFile = null;\r\n\t\tthis.Annotations = null;\r\n\t\tthis.TempName = null;\r\n\t\tthis.TempOriginalName = null;\r\n\t}\r\n\r\n\tUniqueId: string;\r\n\r\n\t@deserialize\r\n\tImageData: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tSize: number;\r\n\r\n\t@deserialize\r\n\tOriginalImageData: string;\r\n\r\n\t@deserialize\r\n\tId: number | string;\r\n\r\n\t@deserialize\r\n\tAnnotations: string;\r\n\r\n\t@deserialize\r\n TempName?: string;\r\n\r\n @deserialize\r\n TempOriginalName?: string;\r\n\r\n\tAttachment: AttachmentModel;\r\n\r\n\tCacheFile?: any;\r\n}\r\n\r\nexport class ImageDataModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Files = [];\r\n\t}\r\n\r\n\t@deserializeAs(FileModel)\r\n\tFiles: Array<FileModel>;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {ImageDataModel} from 'Core/Controls/Image/Models/ImageDataModel';\r\nimport {AttachmentModel} from 'Core/Controls/Image/Models/AttachmentModel';\r\n\r\nexport interface IGetImageControlDataRequestModel {\r\n\tControlId?: number;\r\n\tFieldId: number;\r\n\tRecordId: number | string;\r\n\tFirstRecordOnly?: boolean;\r\n};\r\n\r\nexport class ImageDataStore {\r\n\tstatic Get(params: IGetImageControlDataRequestModel): P.Promise<ImageDataModel> {\r\n\t\tvar deferredResult = P.defer<ImageDataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n url: '/api/ScreenFormApi/GetImageControlData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetOriginal(params: IGetImageControlDataRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ScreenFormApi/GetOriginalImage',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.DeserializeAttachment(data.ResultObject));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t}).fail(error => deferredResult.reject({message: 'Error getting original image'}));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic SaveCropedImage(params: any): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.IMAGE.SAVE_UPLOADED_FILE,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tcache: false,\r\n\t\t\t\tcontentType: false,\r\n\t\t\t\tprocessData: false\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): ImageDataModel {\r\n\t\tvar model = <ImageDataModel>Deserialize(jsonObject, ImageDataModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tstatic DeserializeAttachment(jsonObject: any): AttachmentModel {\r\n\t\tvar model = <AttachmentModel>Deserialize(jsonObject, AttachmentModel);\r\n\t\treturn model;\r\n\t}\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class KanbanParentTypeModel {\r\n @deserialize\r\n K_Type: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { KanbanParentTypeModel } from 'Core/Controls/Kanban/Models/KanbanParentTypeModel';\r\n\r\nexport class EntityTypeModel {\r\n\tconstructor() {\r\n\t\tthis.HasFlowFolder = null;\r\n\t\tthis.ParentTypeModels = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tK_Type: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n\tHasFlowFolder: boolean;\r\n\r\n\t@deserialize\r\n\tShowTypeHierarchy: boolean;\r\n\r\n\t@deserializeAs(KanbanParentTypeModel)\r\n\tParentTypeModels: Array<KanbanParentTypeModel>;\r\n}","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class TagModel {\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTagId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tGroupId: number;\r\n\r\n\t@deserialize\r\n\tGroupName: string;\r\n\r\n\tget FullName(): string {\r\n\t\tlet groupName = this.GroupName ? (this.GroupName + '/') : '';\r\n\t\tlet name = this.Name || \"\";\r\n\t\treturn groupName + name;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { TagModel } from \"Core/Controls/Kanban/Models/TagModel\";\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { TimerModel } from \"Core/Controls/Timer/Models/TimerModel\";\r\n\r\nexport class UserModel {\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n\r\n\t@deserialize\r\n\tContactId: number;\r\n\r\n\t@deserialize\r\n\tUserName: string;\r\n\r\n\t@deserialize\r\n\tUserTypeId: number;\r\n\r\n\t@deserialize\r\n\tUserTypeName: string;\r\n\r\n\t@deserialize\r\n\tIsOwner: boolean;\r\n}\r\n\r\nexport class MainLink {\r\n\r\n\t@deserialize\r\n\tIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tRecordName: string;\r\n\r\n\t@deserialize\r\n\tTableId: number;\r\n}\r\n\r\nexport class PriorityModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tColor: string;\r\n}\r\n\r\nexport class CardThumbnailModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n}\r\n\r\nexport class ParentOrChildRecordModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIsChild: boolean;\r\n\r\n\t@deserialize\r\n\tIsParent: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeNameTranslation: string;\r\n}\r\n\r\nexport class ActionModel {\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.HighlightedAction = null;\r\n\t\tthis.Tags = [];\r\n\t\tthis.IsDisabledCard = null;\r\n\t\tthis.NewActiveTimer = null;\r\n\t}\r\n\tNewActiveTimer: TimerModel;\r\n\r\n\tIsDisabledCard: boolean;\r\n\r\n\tHighlightedAction: boolean;\r\n\r\n\t@deserializeAs(UserModel)\r\n\tUsers: Array<UserModel>;\r\n\r\n\t@deserializeAs(TagModel)\r\n\tTags: Array<TagModel>;\r\n\r\n\t@deserialize\r\n\tActionName: string;\r\n\r\n\t@deserialize\r\n\tActionsEntityId: number;\r\n\r\n\t@deserialize\r\n\tActionRecordId: number;\r\n\r\n\t@deserialize\r\n\tActionTypeId: number;\r\n\r\n\t@deserialize\r\n\tActionTypeName: string;\r\n\r\n\t@deserialize\r\n\tActionLifestatusId: number;\r\n\r\n\t@deserialize\r\n\tActionMemo: string;\r\n\r\n\t@deserialize\r\n\tActionDate: string;\r\n\r\n\t@deserialize\r\n\tActionDeadline: string;\r\n\r\n\t@deserialize\r\n\tIsDisabled: boolean;\r\n\r\n\t@deserialize\r\n\tDisabledReason: string;\r\n\r\n\t@deserializeAs(PriorityModel)\r\n\tPriority: PriorityModel;\r\n\r\n\t@deserializeAs(CardThumbnailModel)\r\n\tThumbnail: CardThumbnailModel;\r\n\r\n\t@deserialize\r\n\tMailsCount: number;\r\n\r\n\t@deserializeAs(TimerModel)\r\n\tActiveTimer: TimerModel;\r\n\r\n\t@deserialize\r\n\tColor: string;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n\r\n\t@deserialize\r\n\tActionAlias: string;\r\n\r\n\tset NewActiveTimerModel(timer: TimerModel) {\r\n\t\tthis.NewActiveTimer = timer;\r\n\t}\r\n\r\n\tget ReplaceActionMemoText(): string {\r\n\t\tif (this.ActionMemo){\r\n\t\t\t//Convert \"\\r\\\" to \"<br>\" and remove the first and last \"<br>\"\r\n\t\t\treturn this.ActionMemo.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>').replace(/^(?:<br>)+|(?:<br>)+$/g, \"\");\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class RecordModel {\r\n\tAriaExpanded: KnockoutObservable<boolean>\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.AriaExpanded = ko.observable(true);\r\n\t\tthis.IsDisabledCard = null;\r\n\t}\r\n\r\n\tToggleAccordion(data){\r\n\t\tdata.record.AriaExpanded(!data.record.AriaExpanded());\r\n\t}\r\n\r\n\tIsDisabledCard: boolean;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tLifestatusId: number;\r\n\r\n\t@deserialize\r\n\tLifestatusName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatusTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tLinkName: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tIsDisabled: boolean;\r\n\r\n\t@deserialize\r\n\tDisabledReason: string;\r\n\r\n\t@deserialize\r\n\tActionsEntityId: number;\r\n\r\n\t@deserializeAs(UserModel)\r\n\tUsers: Array<UserModel>;\r\n\r\n\t@deserializeAs(TagModel)\r\n\tTags: Array<TagModel>;\r\n\r\n\t@deserialize\r\n\tHasAction: boolean;\r\n\r\n\t@deserializeAs(ActionModel)\r\n\tActions: Array<ActionModel>;\r\n\r\n\t@deserializeAs(MainLink)\r\n\tMainLinks: Array<MainLink>;\r\n\r\n\t@deserializeAs(PriorityModel)\r\n\tPriority: PriorityModel;\r\n\r\n\t@deserializeAs(CardThumbnailModel)\r\n\tThumbnail: CardThumbnailModel;\r\n\r\n\t@deserialize\r\n\tMailsCount: number;\r\n\r\n\t@deserialize\r\n\tColor: string;\r\n\r\n\t@deserialize\r\n\tRetiredTodoActionsNumber: number;\r\n\r\n\t@deserialize\r\n\tTotalTodoActionsNumber: number;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n\r\n\t@deserializeAs(ParentOrChildRecordModel)\r\n\tParentOrChildRecords: Array<ParentOrChildRecordModel>;\r\n\r\n\t@deserialize\r\n\tAlias: string;\r\n\r\n\tget ReplaceMemoText(): string {\r\n\t\tif (this.Memo){\r\n\t\t\t//Convert \"\\r\\\" to \"<br>\" and remove the first and last \"<br>\"\r\n\t\t\treturn this.Memo.replace(/(?:\\r\\n|\\r|\\n)/g, '<br>').replace(/^(?:<br>)+|(?:<br>)+$/g, \"\");\r\n\t\t} else {\r\n\t\t\treturn null\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class ActionItemModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tState: number;\r\n}\r\n\r\nexport class StepModel {\r\n\tconstructor(init?: Partial<StepModel>) {\r\n\t\tif (init) {\r\n\t\t\tthis.Label = init.Label;\r\n\t\t}\r\n\t\tthis.Records = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n IsRetired: boolean;\r\n\r\n @deserialize\r\n MultipleActions: boolean;\r\n\r\n\t@deserializeAs(ActionItemModel)\r\n\tActionItems: Array<ActionItemModel>;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n\r\n\tRecords: Array<RecordModel>;\r\n\r\n\t@deserialize\r\n\tEnabled: boolean;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\tCopy() {\r\n\t\tconst copy = new StepModel();\r\n\r\n\t\tcopy.Id = this.Id;\r\n\t\tcopy.Label = this.Label;\r\n\t\tcopy.Enabled = this.Enabled;\r\n\t\tcopy.IsRetired = this.IsRetired;\r\n\t\tcopy.UserId = this.UserId;\r\n\t\tcopy.Sort = this.Sort;\r\n\t\tcopy.Records = [...this.Records];\r\n copy.TranslatedName = this.TranslatedName;\r\n copy.MultipleActions = this.MultipleActions;\r\n copy.ActionItems = [...this.ActionItems];\r\n\r\n\t\treturn copy;\r\n\t}\r\n}\r\n\r\nexport class ThumbnailModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n}\r\n\r\nexport class LinkModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIdStepFrom: number;\r\n\r\n\t@deserialize\r\n\tIdStepTo: number;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n\r\n\t@deserialize\r\n\tUserId: number;\r\n}\r\n\r\nexport class StatusModel {\r\n\t@deserializeAs(RecordModel)\r\n\tRecords: Array<RecordModel>;\r\n\r\n\t@deserializeAs(StepModel)\r\n\tSteps: Array<StepModel>;\r\n\r\n\t@deserializeAs(ThumbnailModel)\r\n\tThumbnails: Array<ThumbnailModel>;\r\n\r\n\t@deserializeAs(LinkModel)\r\n\tLinks: Array<LinkModel>;\r\n\r\n\t@deserializeAs(PriorityModel)\r\n\tPriorities: Array<PriorityModel>;\r\n\r\n\t@deserialize\r\n\tHasTodoType: boolean;\r\n\r\n\t@deserialize\r\n\tIsTodoEnabled: boolean;\r\n\r\n\t@deserialize\r\n\tIsTypeHierarchyCorrect: boolean;\r\n\r\n\t@deserialize\r\n\tMailEntityId: number;\r\n}","import * as ko from 'knockout';\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class KanbanViewModel {\r\n constructor(id: number, name: string) {\r\n this.Id = id;\r\n this.Name = name;\r\n this.LockedTableView = ko.observable(null);\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsEditingAllowed: boolean;\r\n\r\n @deserialize\r\n IsDeletingAllowed: boolean;\r\n\r\n LockedTableView: KnockoutObservable<boolean>;\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { KanbanViewModel } from 'Core/Controls/Kanban/Models/KanbanViewModel';\r\n\r\nexport class ViewListResponseModel {\r\n @deserializeAs(KanbanViewModel)\r\n KanbanViews: Array<KanbanViewModel>;\r\n\r\n @deserialize\r\n IsAddingRecordAllowed: boolean;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { EntityTypeModel } from 'Core/Controls/Kanban/Models/EntityTypeModel';\r\nimport {StatusModel, ActionModel, UserModel} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport { ViewListResponseModel } from 'Core/Controls/Kanban/Models/ViewListResponseModel';\r\nimport { IGetEntityRequestModel } from \"Core/Common/Interfaces/IGetEntityRequestModel\";\r\nimport {PROPERTIES} from \"../Constants\";\r\nimport {ICheckItemSerializedValue} from \"../../../Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\n\r\n\r\nexport interface IGetKanbanBoardTypesRequestModel {\r\n\tEntityId: number;\r\n\tScreenSubjectTypeId: number;\r\n\tShowTypeHierarchy: boolean;\r\n};\r\n\r\nexport interface IGetKanbanBoardStatusesRequestModel {\r\n EntityId: number;\r\n\tFieldId: number;\r\n\tTypeId?: number;\r\n\tSubjectTypeId?: number;\r\n\tRecordId? : number;\r\n\tRecordOwners: number[];\r\n\tShowPlanned: boolean;\r\n\tFilterByTypeHierarchy?: boolean;\r\n\tFilterByOwners: boolean;\r\n\tUseSubjectEntity: boolean;\r\n\tFilterByEntityId?: number;\r\n\tFilterByRecordId?: number;\r\n WithTags: boolean;\r\n WithSubjectImage: boolean;\r\n WithPriorities: boolean;\r\n WithCalculatedPriority: boolean;\r\n\tWithCalculatedViaCalсPrioPriority: boolean;\r\n WithMails: boolean;\r\n\tWithColor: boolean;\r\n\tWithTimers?: boolean;\r\n ViewId?: number;\r\n\tIsViewForAction?: boolean;\r\n IsToDo: boolean;\r\n TodoModel?: {\r\n EntityId: number;\r\n TypeId: number;\r\n FieldId: number;\r\n };\r\n\tWithMemo: boolean;\r\n\tWithToDoProgressBar?: boolean;\r\n};\r\n\r\ninterface IGetKanbanBoardViewListRequestModel {\r\n\tSubjectEntityId: number;\r\n}\r\n\r\ninterface IGetUserAllowanceRequestModel {\r\n\tTableId: number;\r\n\tSecurityWord: number;\r\n}\r\n\r\ninterface IBaseUpdateStatusRequestModel {\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tNewStatusId: number;\r\n\tPreviousLifeStatusId: number;\r\n\tConfirmationPassword?: string;\r\n\tCheckItems?: ICheckItemSerializedValue[];\r\n}\r\n\r\nexport interface IUpdateStatusRequestModel extends IBaseUpdateStatusRequestModel {\r\n\tActions: Array<ActionModel>;\r\n};\r\n\r\nexport interface IUpdateActionStatusRequestModel extends IBaseUpdateStatusRequestModel {\r\n\tActionsEntityId: number;\r\n\tActionRecordId: number;\r\n\tUsers: Array<UserModel>;\r\n}\r\n\r\ninterface IUpdatePriorityRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tPriorityId: number;\r\n}\r\n\r\nexport class KanbanStore {\r\n\tstatic GetTypes(params: IGetKanbanBoardTypesRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_TYPES,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tvar model = GenericDeserialize<EntityTypeModel>(data.ResultObject, EntityTypeModel);\r\n\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetStatuses(params: IGetKanbanBoardStatusesRequestModel): P.Promise<StatusModel> {\r\n\t\tvar deferredResult = P.defer<StatusModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_STATUSES,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tvar model = GenericDeserialize<StatusModel>(data.ResultObject, StatusModel);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\r\n\t\t\t\t\tfor (const warningMessage of data.Warnings) {\r\n\t\t\t\t\t\tnew Notifier().Warning(warningMessage);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject(data.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetViewList(params: IGetKanbanBoardViewListRequestModel) {\r\n\t\tconst deferredResult = P.defer<ViewListResponseModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_VIEW_LIST,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, ViewListResponseModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n\tstatic GetDefaultKanbanViewMetaData(): P.Promise<IGetEntityRequestModel> {\r\n\t\tconst deferredResult = P.defer<IGetEntityRequestModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.GET_DEFAULT_VIEW_METADATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error)\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n\tstatic GetUserAllowance(params: IGetUserAllowanceRequestModel) {\r\n\t\tconst deferred = P.defer();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/TableSecurityApi/IsUserAllowedTo\",\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},\r\n\t\t\tparams\r\n\t\t}).then(data => {\r\n\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\tdeferred.resolve(data.ResultObject);\r\n\t\t\t} else {\r\n\t\t\t\tdeferred.reject({message: data.ErrorMessage});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tstatic UpdateStatus(params: IUpdateStatusRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.UPDATE_STATUS,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdateActionStatus(params: IUpdateActionStatusRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.UPDATE_ACTION_STATUS,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdatePriority(params: IUpdatePriorityRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.KANBANBOARD.UPDATE_PRIORITY,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t})\r\n\t\t\t.fail(err => {\r\n\t\t\t\tdeferredResult.reject(err);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport { KanbanParentTypeModel } from 'Core/Controls/Kanban/Models/KanbanParentTypeModel';\r\n\r\nexport class KanbanTypeViewModel {\r\n constructor(\r\n public K_Type: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public HasFlowFolder: boolean,\r\n public ShowTypeHierarchy: boolean,\r\n public ParentTypeModels: Array<KanbanParentTypeModel>\r\n ) {\r\n this.IsSelected = ko.observable(false);\r\n }\r\n\r\n IsSelected: KnockoutObservable<boolean>;\r\n\r\n GetName(): string {\r\n const typeNameTranslation = this.TranslatedName ? this.TranslatedName : this.Name;\r\n if (!_.any(this.ParentTypeModels) || !this.ShowTypeHierarchy) {\r\n return typeNameTranslation;\r\n }\r\n\r\n const parentTypeModel = _.first(this.ParentTypeModels);\r\n const parentTypeNameTranslation = parentTypeModel.TranslatedName ? parentTypeModel.TranslatedName : parentTypeModel.Name;\r\n\r\n return `${parentTypeNameTranslation} \\\\ ${typeNameTranslation}`;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {RecordModel, LinkModel, StepModel, ActionItemModel} from 'Core/Controls/Kanban/Models/StatusModel';\r\n\r\nimport MainLinksListTemplate from 'Core/Controls/Kanban/Templates/Default/MainLinksListTemplate.html';\r\nimport NoMainLinksTemplate from 'Core/Controls/Kanban/Templates/Default/NoMainLinksTemplate.html';\r\n\r\nimport { NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class KanbanStep {\r\n\tprivate _records: KnockoutObservableArray<RecordModel>;\r\n\tprivate _links: Array<LinkModel>;\r\n\tprivate _isCollapsed: KnockoutObservable<boolean>;\r\n\r\n\tprivate _model: StepModel;\r\n\tconstructor(step: StepModel, links: Array<LinkModel>) {\r\n\t\tthis._records = ko.observableArray(step.Records);\r\n\r\n\t\tthis._isCollapsed = ko.observable(false);\r\n\t\tthis._model = step;\r\n\t\tthis._links = links;\r\n\r\n\t}\r\n\r\n\tget ActionItems(): Array<ActionItemModel> {\r\n\t\treturn this._model && this._model.ActionItems;\r\n\t}\r\n\r\n\tget Records(): KnockoutObservableArray<RecordModel> {\r\n\t\treturn this._records;\r\n\t}\r\n\r\n\tget Model(): StepModel {\r\n\t\treturn this._model && this._model;\r\n\t}\r\n\r\n\tget IsRetired(): boolean {\r\n\t\treturn this._model.IsRetired;\r\n\t}\r\n\r\n\tget Memo(): string {\r\n\t\treturn this._model.Memo;\r\n\t}\r\n\r\n\tget MemoTranslation(): string {\r\n\t\treturn this._model.MemoTranslation;\r\n\t}\r\n\r\n\tget TranslatedName(): string {\r\n\t\treturn this._model.TranslatedName || this._model.Label;\r\n\t}\r\n\r\n\tget Label(): string {\r\n\t\treturn this._model.Label;\r\n\t}\r\n\r\n\tget Id(): number {\r\n\t\treturn this._model.Id;\r\n }\r\n\r\n get MultipleActions(): boolean {\r\n return this._model.MultipleActions;\r\n }\r\n\r\n\tAddRecord(record: RecordModel) {\r\n\t\tthis._model.Records.push(record);\r\n\t\tthis._records.push(record);\r\n\t}\r\n\r\n\tClearRecords() {\r\n\t\tthis._model.Records = [];\r\n\t\tthis._records([]);\r\n\t}\r\n\r\n\tpublic HasNextStatus(currentStatus: number): boolean {\r\n\t\tvar nextStatus = _.find(this._links, (link) => { return link.IdStepFrom === currentStatus });\r\n\t\tif (nextStatus) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget IsCollapsed(): boolean {\r\n\t\treturn this._isCollapsed();\r\n\t}\r\n\r\n\tset IsCollapsed(isCollapsed: boolean) {\r\n\t\tthis._isCollapsed(isCollapsed);\r\n\t}\r\n\r\n\tGetTestTemplate(record: RecordModel) {\r\n\t\tif (record.MainLinks.length === 0) {\r\n\t\t\treturn NoMainLinksTemplate;\r\n\t\t} else {\r\n\t\t\treturn MainLinksListTemplate;\r\n\t\t}\r\n\t}\r\n\r\n\tCopy() {\r\n\t\treturn new KanbanStep(this._model.Copy(), [...this._links]);\r\n\t}\r\n}","// Module\nvar code = \"<span> ${NOTIFICATIONS.NO_LINKED_RECORDS} </span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul class=\\\"list-group\\\" data-bind=\\\"debug: $context\\\"> <!-- ko foreach: $parent.MainLinks --> <li class=\\\"list-group-item\\\"> <!-- ko template: {name: 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate'} --> <!-- /ko --> <span class=\\\"panel-text\\\" style=\\\"vertical-align:middle\\\" data-bind=\\\"text: $parent.RecordName\\\"></span> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data), css: {'kanban-full-screen': _isFullScreen()}\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"kanbard-board-root table-toolbar-line\\\"> <div class=\\\"action-type-row\\\"> <div class=\\\"search-block\\\"> <!-- ko if: _isTodoToggleShown --> <label class=\\\"kanban-board-root__todo-toggle-block\\\"> <span class=\\\"kanban-board-root__todo-toggle-wrapper\\\"> <input type=\\\"checkbox\\\" class=\\\"kanban-board-root__todo-toggle-checkbox\\\" data-bind=\\\"checked: _isTodoSelected\\\"> <i class=\\\"fa fa-toggle-on\\\" data-bind=\\\"attr: {'data-toggle-on-name': 'On'}\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-bind=\\\"attr: {'data-toggle-on-name': 'Off'}\\\"></i> </span> <span class=\\\"kanban-board-root__todo-toggle-name\\\"><!-- ko text: Model.TodoTypeName --><!-- /ko --></span> </label> <!-- /ko --> <input type=\\\"text\\\" class=\\\"form-control input-medium\\\" placeholder=\\\"Kanban Search...\\\" data-bind=\\\"attr: {placeholder: _labels.KANBAN_SEARCH + '...', autocomplete: 'off'},\\r\\n textInput: _searchTerm,\\r\\n searchExtention: { search: $data.Search.bind($data) },\\r\\n enterKey: Search,\\r\\n escKey: ClearSearch,\\r\\n preventBubble: ['submit']\\\"> <button type=\\\"button\\\" data-bind=\\\"visible: _searchTerm, click: ClearSearch\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> <!--ko if: _isKanbanViewsShown--> <query-dropdowns params=\\\"\\r\\n view: _chosenKanbanView,\\r\\n viewList: _kanbanViews,\\r\\n allowViewListUnset: true,\\r\\n isAddingRecordAllowed: _isAddingRecordAllowed,\\r\\n enableEditView: _isEditingAllowed,\\r\\n enableDeleteView: _isDeletingAllowed,\\r\\n withExportFeatures: false,\\r\\n newView: NewKanbanView.bind($data),\\r\\n editView: EditKanbanView.bind($data),\\r\\n copyView: CopyKanbanView.bind($data),\\r\\n deleteView: DeleteKanbanView.bind($data)\\\" class=\\\"kanban-query-dropdowns\\\"> </query-dropdowns> <!-- /ko --> <!--ko if: _isTypesShown --> <!-- <div class=\\\"kanban-typed-box\\\">--> <!-- ko fastForEach: _entityTypes --> <label data-bind=\\\"text: GetName(),\\r\\n attr: {'type-id': K_Type},\\r\\n click: $parent.SelectType.bind($parent),\\r\\n css: { 'active': $data.IsSelected }\\\" class=\\\"panel-title action-type-id btn kanban-action-type-btn action-type-btn\\\"></label> <!-- /ko --> <!-- </div>--> <!-- /ko --> </div> <a class=\\\"kanban-fullscreen-btn\\\" data-bind=\\\"tooltip: { content: _fullScreenTooltip(),\\r\\n position: {\\r\\n x: 'left',\\r\\n y: 'center'\\r\\n },\\r\\n outside: 'x'\\r\\n }, click: $data.ChangeFullScreen.bind($data), css: {'is-full-screen': _isFullScreen()}\\\"></a> </div> </div> <!-- ko if: IsRuntimeMode() --> <!-- ko ifnot: _isTodoSelected --> <default-kanban class=\\\"js-default-kanban\\\" params=\\\"\\r\\n screen: _screen,\\r\\n selectedTypeObservable: _selectedTypeObservable,\\r\\n generalProperties: GeneralProperties,\\r\\n searchString: _searchString,\\r\\n selectedUsers: _selectedUsers,\\r\\n showPlanned: _showPlanned,\\r\\n showTypeError: _showTypeError,\\r\\n isTodoToggleShown: _isTodoToggleShown,\\r\\n titleFieldId: Model.TitleFieldId,\\r\\n kanbanSubjectId: Model.KanbanSubjectId,\\r\\n kanbanSubjectName: _kanbanSubjectName,\\r\\n viewId: _viewId\\r\\n \\\"> </default-kanban> <!-- /ko --> <!-- ko if: _isTodoSelected --> <todo-kanban class=\\\"js-todo-kanban\\\" params=\\\"\\r\\n screen: _screen,\\r\\n selectedTypeObservable: _selectedTypeObservable,\\r\\n noTypesLoaded: _noTypesLoaded,\\r\\n generalProperties: GeneralProperties,\\r\\n searchString: _searchString,\\r\\n selectedUsers: _selectedUsers,\\r\\n showPlanned: _showPlanned,\\r\\n isTodoToggleShown: _isTodoToggleShown,\\r\\n titleFieldId: Model.TitleFieldId,\\r\\n kanbanSubjectId: Model.KanbanSubjectId,\\r\\n viewId: _viewId,\\r\\n todoEntityId: Model.TodoEntityId,\\r\\n todoTypeId: Model.TodoTypeId,\\r\\n todoFieldId: Model.TodoFieldId,\\r\\n controlId: _controlId,\\r\\n loadStatuses: _loadStatuses,\\r\\n timerControl: _timerControl\\r\\n \\\"> </todo-kanban> <!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n ACTION_SCREEN_TYPE: 'ActionScreenType',\r\n WITH_TAGS: 'WithTags',\r\n WITH_SUBJECT_IMAGE: 'WithSubjectImage',\r\n SHOW_ALIAS: 'ShowAlias',\r\n WITH_DATE_BADGES: 'WithDateBadges',\r\n WITH_PRIORITIES: 'WithPriorities',\r\n PROGRESS_BAR_TYPE: 'ProgressBarType',\r\n WITH_MEMO: 'WithMemo',\r\n WITH_MAILS: 'WithMails',\r\n READ_ONLY: 'ReadOnly',\r\n HEIGHT_IMAGE: 'HeightImage',\r\n COLOR_BAR: 'ColorBar',\r\n ALWAYS_SHOW_DEADLINE: 'AlwaysShowDeadline',\r\n HIDE_OWNER: 'HideOwner',\r\n BACKGROUND_COLOR: 'BackgroundColor',\r\n SHOW_TOOLTIP: 'ShowTooltip'\r\n};","//Common\r\nimport * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\nimport * as _ from 'underscore';\r\nimport $ from \"jquery\";\r\n\r\nimport {KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {TagModel} from 'Core/Controls/Kanban/Models/TagModel';\r\nimport {\r\n ActionModel,\r\n CardThumbnailModel, ParentOrChildRecordModel,\r\n PriorityModel, RecordModel,\r\n ThumbnailModel,\r\n UserModel\r\n} from 'Core/Controls/Kanban/Models/StatusModel';\r\n\r\nimport {FileModel} from 'Core/Controls/Image/Models/ImageDataModel';\r\nimport {ImageDataStore} from 'Core/Controls/Image/Stores/ImageDataStore';\r\nimport {ColorConverter} from \"Core/Components/ColorSelector/ColorConverter\";\r\nimport {UserTypes} from \"User/UserManager\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {PathRunner} from \"Core/Components/PathRunner/PathRunner\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {TimerModel} from \"Core/Controls/Timer/Models/TimerModel\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Tooltip} from \"Core/Common/Tooltip\";\r\n\r\n//Templates\r\nimport Template from 'Core/Controls/Kanban/Templates/KanbanCard.html';\r\nimport DefaultParentOrChildRecordTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultParentOrChildRecordTemplate.html';\r\n\r\nimport DesignCardNameTemplate from 'Core/Controls/Kanban/Templates/Default/DesignCardName.html';\r\nimport DesignCardInfoTemplate from 'Core/Controls/Kanban/Templates/Default/DesignCardInfo.html';\r\nimport DesignCardAliasTemplate from 'Core/Controls/Kanban/Templates/Default/DesignCardAlias.html';\r\n\r\nimport DefaultCardNameTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultCardName.html';\r\nimport DefaultCardInfoTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultCardInfo.html';\r\nimport DefaultCardAliasTemplate from 'Core/Controls/Kanban/Templates/Default/DefaultCardAlias.html';\r\n\r\nimport TodoCardNameTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoCardName.html';\r\nimport TodoCardInfoTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoCardInfo.html';\r\nimport TodoCardAliasTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoCardAlias.html';\r\n\r\nimport TimerInCardTemplate from 'Core/Controls/Kanban/Templates/Default/TimerInCard.html';\r\n\r\nko.templates['Core/Controls/Kanban/Templates/KanbanCard'] = Template;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/DesignCardName'] = DesignCardNameTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultCardName'] = DefaultCardNameTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultCardAlias'] = DefaultCardAliasTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DesignCardAlias'] = DesignCardAliasTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/DesignCardInfo'] = DesignCardInfoTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultCardInfo'] = DefaultCardInfoTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoCardName'] = TodoCardNameTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoCardInfo'] = TodoCardInfoTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoCardAlias'] = TodoCardAliasTemplate;\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/TimerInCard'] = TimerInCardTemplate;\r\n\r\nconst defaultImage = 'data:image/jpeg;base64,/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\nfunction enhanceUserWithAvatar({user, avatarThumbnails}: { user: UserModel; avatarThumbnails: ThumbnailModel[] }) {\r\n const thumbnail = user.UserTypeName === UserTypes.Usergroup\r\n ? avatarThumbnails.find(thumbnail => thumbnail.Id === user.UserId)\r\n : avatarThumbnails.find(thumbnail => thumbnail.Id === user.ContactId);\r\n\r\n const thumbnailImage = thumbnail && thumbnail.Image;\r\n\r\n return {user, thumbnail: thumbnailImage || defaultImage};\r\n}\r\n\r\ninterface KanbanCardParams {\r\n entityId: number;\r\n recordId: number;\r\n tags: TagModel[];\r\n priority: PriorityModel;\r\n users: UserModel[];\r\n isDisabled: boolean;\r\n avatarThumbnails: KnockoutObservable<ThumbnailModel[]>;\r\n priorities: KnockoutObservable<PriorityModel[]>;\r\n thumbnail: CardThumbnailModel;\r\n mailsCount: number;\r\n parentOrChildRecords: ParentOrChildRecordModel[],\r\n color: string;\r\n warnings: string[];\r\n withGreyBackground: boolean;\r\n withDateBadges: boolean;\r\n colorBar: boolean;\r\n onPriorityUpdateError: () => void;\r\n onMailClick: () => void;\r\n progressBar: boolean;\r\n isDesign: boolean;\r\n isTodo: boolean;\r\n memo: string;\r\n readOnly: boolean;\r\n isCalculatedViaCalcPriority: boolean;\r\n heightImage: any;\r\n alwaysShowDeadline: boolean;\r\n hideOwner: boolean;\r\n showTooltip: boolean;\r\n showAlias: boolean;\r\n timerControl?: Timer;\r\n activeTimer?: TimerModel;\r\n retiredTodoActionsNumber?: number;\r\n totalTodoActionsNumber?: number;\r\n newActiveTimer?: TimerModel;\r\n actionRecord?: ActionModel;\r\n}\r\n\r\nexport class KanbanCard {\r\n private _entityId: number;\r\n private _recordId: number;\r\n _tags: TagModel[];\r\n private _priority: KnockoutObservable<PriorityModel>;\r\n _allUsersTooltip: string;\r\n _avatarThumbnails: KnockoutObservable<ThumbnailModel[]>;\r\n _priorities: KnockoutObservable<PriorityModel[]>;\r\n private _thumbnail: CardThumbnailModel;\r\n _mailsCount: number;\r\n _parentOrChildRecords: ParentOrChildRecordModel[];\r\n _color: string;\r\n _warnings: string[];\r\n _withGreyBackground: boolean;\r\n private _withDateBadges: boolean;\r\n private _colorBar: boolean;\r\n private _alwaysShowDeadline: boolean;\r\n private _hideOwner: boolean;\r\n private _onPriorityUpdateError: () => void;\r\n _onMailClick: () => void;\r\n private _progressBar: boolean;\r\n private _isDesign: boolean;\r\n private _isTodo: boolean;\r\n private _element: HTMLElement;\r\n _viewerImages: KnockoutObservable<{ Files: FileModel[] }>;\r\n _areAvatarsWrapped: KnockoutObservable<boolean>;\r\n _owner: KnockoutComputed<{ user: UserModel; thumbnail: string }>;\r\n _performers: KnockoutComputed<{ user: UserModel; thumbnail: string }[]>;\r\n _priorityColor: KnockoutComputed<string>;\r\n _priorityName: KnockoutComputed<string>;\r\n _borderColor: KnockoutComputed<string>;\r\n private _retiredTodoActionsNumber: number;\r\n private _totalTodoActionsNumber: number;\r\n private _memo: string;\r\n private _readOnly: boolean;\r\n private _isCalculatedViaCalcPriority: boolean;\r\n private _heightImage: any;\r\n private _tooltip: Tooltip;\r\n private _labels = LABELS;\r\n private _showTooltip: boolean;\r\n private _showAlias: boolean;\r\n private _isDisabled: boolean;\r\n private _notifier: Notifier;\r\n private _activeTimer: KnockoutObservable<TimerModel>;\r\n _timerControl: Timer;\r\n private _actionRecord: ActionModel;\r\n\r\n NewActiveTimer: TimerModel;\r\n\r\n constructor(params: KanbanCardParams & { element: HTMLElement }) {\r\n const {\r\n entityId,\r\n recordId,\r\n tags,\r\n priority,\r\n users,\r\n isDisabled,\r\n avatarThumbnails = ko.observable([]),\r\n priorities,\r\n thumbnail,\r\n mailsCount,\r\n parentOrChildRecords,\r\n color,\r\n warnings = [],\r\n withGreyBackground,\r\n withDateBadges = true,\r\n colorBar,\r\n onPriorityUpdateError,\r\n onMailClick,\r\n progressBar,\r\n element,\r\n memo,\r\n retiredTodoActionsNumber,\r\n totalTodoActionsNumber,\r\n readOnly,\r\n isCalculatedViaCalcPriority,\r\n heightImage,\r\n alwaysShowDeadline,\r\n hideOwner,\r\n isDesign,\r\n isTodo,\r\n showTooltip,\r\n showAlias,\r\n timerControl,\r\n activeTimer,\r\n newActiveTimer,\r\n actionRecord\r\n } = params;\r\n\r\n this._entityId = entityId;\r\n this._recordId = recordId;\r\n this._tags = tags;\r\n this._priority = ko.observable(priority);\r\n this._avatarThumbnails = avatarThumbnails;\r\n this._priorities = priorities;\r\n this._thumbnail = thumbnail;\r\n this._mailsCount = mailsCount;\r\n this._parentOrChildRecords = parentOrChildRecords;\r\n this._color = color;\r\n this._warnings = warnings;\r\n this._withGreyBackground = withGreyBackground;\r\n this._withDateBadges = withDateBadges;\r\n this._colorBar = colorBar;\r\n this._onPriorityUpdateError = onPriorityUpdateError;\r\n this._onMailClick = onMailClick;\r\n this._progressBar = progressBar;\r\n this._isDesign = isDesign;\r\n this._isTodo = isTodo;\r\n this._element = element;\r\n this._retiredTodoActionsNumber = retiredTodoActionsNumber || 0;\r\n this._totalTodoActionsNumber = totalTodoActionsNumber || 0;\r\n this._memo = memo;\r\n this._alwaysShowDeadline = alwaysShowDeadline;\r\n this._hideOwner = hideOwner;\r\n this._readOnly = readOnly;\r\n this._isCalculatedViaCalcPriority = isCalculatedViaCalcPriority;\r\n this._heightImage = heightImage;\r\n this._isDisabled = isDisabled;\r\n\r\n this._viewerImages = ko.observable();\r\n\r\n this._tooltip = null;\r\n this._showTooltip = showTooltip;\r\n this._showAlias = !!showAlias;\r\n\r\n this._notifier = new Notifier();\r\n\r\n this._activeTimer = ko.observable(null);\r\n this.NewActiveTimer = newActiveTimer;\r\n this._actionRecord = actionRecord;\r\n\r\n if (thumbnail) {\r\n const thumbnailFileModel = new FileModel();\r\n thumbnailFileModel.ImageData = thumbnail.Image;\r\n\r\n this._viewerImages({Files: [thumbnailFileModel]});\r\n }\r\n\r\n this._areAvatarsWrapped = ko.observable(true);\r\n\r\n const owner = users.find(user => user.IsOwner);\r\n const performers = _.without(users, owner);\r\n\r\n const allUsers = owner ? [owner, ...performers] : performers;\r\n this._allUsersTooltip = allUsers.map(user => user.UserName).join(', ');\r\n\r\n this._owner = ko.pureComputed(\r\n () => owner && enhanceUserWithAvatar({user: owner, avatarThumbnails: this._avatarThumbnails()})\r\n );\r\n\r\n this._performers = ko.pureComputed(() => {\r\n const shownPerformers = this._areAvatarsWrapped() ? performers.slice(0, 1) : performers;\r\n\r\n return shownPerformers.map(user => enhanceUserWithAvatar({\r\n user,\r\n avatarThumbnails: this._avatarThumbnails()\r\n }));\r\n });\r\n\r\n this._priorityColor = ko.pureComputed(() => {\r\n const priority = this._priority();\r\n\r\n if (!priority) {\r\n return undefined;\r\n }\r\n\r\n return priority.Color;\r\n });\r\n\r\n this._priorityName = ko.pureComputed(() => {\r\n const priority = this._priority();\r\n\r\n if (!priority) {\r\n return undefined;\r\n }\r\n\r\n return priority.TranslatedName || priority.Name;\r\n });\r\n\r\n this._borderColor = ko.pureComputed(() => {\r\n return this._color ? ColorConverter.ToHex(this._color) : this._priorityColor() || '#cccccc';\r\n });\r\n\r\n this._activeTimer(this.GetActiveTimer(activeTimer));\r\n\r\n this.SetTimerControlData(timerControl, this._activeTimer());\r\n }\r\n\r\n get Element(): HTMLElement {\r\n return this._element;\r\n }\r\n get EntityId(): number {\r\n return this._entityId;\r\n }\r\n\r\n get RecordId(): number {\r\n return this._recordId;\r\n }\r\n\r\n get IsParentOrChildRecords(): boolean {\r\n return this._parentOrChildRecords && this._parentOrChildRecords.length > 0\r\n }\r\n\r\n get IsTagContainer(): boolean {\r\n return this.IsPriority || this.IsWarning || this.IsTags;\r\n }\r\n\r\n get IsTags(): boolean {\r\n return !!this._tags.length;\r\n }\r\n\r\n get IsWarning(): boolean {\r\n return !!this._warnings.length;\r\n }\r\n\r\n get IsPriority(): boolean {\r\n return this._priority() && !!this._priorities().length;\r\n }\r\n\r\n get AllUsersTooltip(): string {\r\n return !this._readOnly && this._showTooltip ? this._areAvatarsWrapped() && this._allUsersTooltip : '';\r\n }\r\n\r\n GetUserNameTooltip(user: UserModel): string | boolean {\r\n return !this._readOnly && this._showTooltip ? !this._areAvatarsWrapped() && user.UserName : '';\r\n }\r\n\r\n GetParentOrChildRecordTemplate() {\r\n return $((ko as any).renderTemplateX(DefaultParentOrChildRecordTemplate, this));\r\n }\r\n\r\n GetParentOrChildRecordName(nameTranslation?: string, name?: string): string {\r\n return nameTranslation ? nameTranslation : (name ? name : '-');\r\n }\r\n\r\n GetParentOrChildRecordTypeName(typeNameTranslation?: string, typeName?: string): string {\r\n return typeNameTranslation ? typeNameTranslation : typeName;\r\n }\r\n\r\n GetTitle(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return this._labels.ITSELF;\r\n }\r\n else if(IsChild) {\r\n return this._labels.CHILD;\r\n }\r\n else {\r\n return this._labels.PARENT;\r\n }\r\n }\r\n\r\n GetIcon(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return 'fa-retweet';\r\n }\r\n else if(IsChild) {\r\n return 'fa-level-down';\r\n }\r\n else {\r\n return 'fa-level-up';\r\n }\r\n }\r\n\r\n MouseOver(typeText: string, recordModel: ParentOrChildRecordModel, evt: any){\r\n let currentEl = $(evt.currentTarget);\r\n\r\n if (Math.round(currentEl.prop('scrollWidth')) > Math.round(currentEl.outerWidth()) ){\r\n let recordName = recordModel.NameTranslation ? recordModel.NameTranslation : (recordModel.Name ? recordModel.Name : '-');\r\n let recordTypeName = recordModel.TypeNameTranslation ? recordModel.TypeNameTranslation : recordModel.TypeName;\r\n let isTypeName = (typeText === 'isTypeName');\r\n\r\n let typeNameTooltipOptions = {\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n },\r\n nameTooltipOptions = {\r\n position: {x: 'right', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n };\r\n\r\n this._tooltip = new Tooltip(evt.currentTarget,\r\n ko.unwrap(isTypeName ? recordTypeName : recordName),\r\n isTypeName ? typeNameTooltipOptions : nameTooltipOptions);\r\n this._tooltip.Show(evt.currentTarget);\r\n }\r\n }\r\n\r\n MouseOut(data, evt: any){\r\n if (this._tooltip){\r\n this._tooltip.Destroy();\r\n }\r\n }\r\n\r\n async OpenRecord(record){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n await screenManager.GetScreenByScreenType(\r\n this._entityId,\r\n ScreenTypes.ConsultScreen,\r\n record.Id\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: any) => {\r\n screen.ShowInModal();\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(screen.GetRecordId());\r\n }\r\n })\r\n .fail(err => this._notifier.Failed(err.message));\r\n }\r\n\r\n GetNameTemplate() {\r\n if (this._isDesign) {\r\n return 'Core/Controls/Kanban/Templates/Default/DesignCardName';\r\n } else if (this._isTodo) {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoCardName';\r\n } else {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultCardName';\r\n }\r\n }\r\n\r\n GetAliasTemplate() {\r\n if (this._isDesign) {\r\n return 'Core/Controls/Kanban/Templates/Default/DesignCardAlias';\r\n } else if (this._isTodo) {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoCardAlias';\r\n } else {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultCardAlias';\r\n }\r\n }\r\n\r\n GetInfoTemplate() {\r\n if (this._isDesign) {\r\n return 'Core/Controls/Kanban/Templates/Default/DesignCardInfo';\r\n } else if (this._isTodo) {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoCardInfo';\r\n } else {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultCardInfo';\r\n }\r\n }\r\n\r\n GetTimerInCardTemplate(): string {\r\n return 'Core/Controls/Kanban/Templates/Default/TimerInCard';\r\n }\r\n\r\n GetHeightImage(): string {\r\n if (this._heightImage) {\r\n let elementWidth = Math.trunc($(this._element).outerWidth()),\r\n propertyHeight = this._heightImage.Value,\r\n originalCardWidth = $(this._element).data(\"originalCardWidth\");\r\n\r\n if (originalCardWidth){\r\n return `${Math.trunc(originalCardWidth / 100 * propertyHeight)}px`;\r\n } else {\r\n $(this._element).data(\"originalCardWidth\", elementWidth);\r\n return `${Math.trunc(elementWidth / 100 * propertyHeight)}px`;\r\n }\r\n\r\n } else {\r\n return \"none\";\r\n }\r\n }\r\n\r\n CalculateProgressBar() {\r\n let calculateProgressBar = this._retiredTodoActionsNumber / this._totalTodoActionsNumber;\r\n\r\n if (this._retiredTodoActionsNumber === this._totalTodoActionsNumber) {\r\n return 100;\r\n } else {\r\n return Math.trunc(calculateProgressBar * 100);\r\n }\r\n }\r\n\r\n get ProgressBar() {\r\n return `\r\n <div class=\"progress-bar\" role=\"progressbar\" \r\n style=\"width: ${this.CalculateProgressBar()}%\" \r\n aria-valuenow=\"${this._retiredTodoActionsNumber}\" \r\n aria-valuemin=\"0\" \r\n aria-valuemax=\"${this._totalTodoActionsNumber}\"></div>\r\n `;\r\n }\r\n\r\n GetOriginalImage(file: FileModel, viewer) {\r\n if (file.OriginalImageData) {\r\n viewer.clickOnImage(file.UniqueId);\r\n return;\r\n }\r\n\r\n const thumbnailElement = this._element.querySelector<HTMLAnchorElement>('.image-open-btn');\r\n\r\n BlockUI.Block({Target: thumbnailElement});\r\n\r\n ImageDataStore.GetOriginal({\r\n RecordId: this._recordId,\r\n FieldId: this._thumbnail.FieldId\r\n })\r\n .then(attachment => {\r\n file.OriginalImageData = attachment.Base64Data;\r\n this._viewerImages.valueHasMutated();\r\n viewer.clickOnImage(file.UniqueId);\r\n })\r\n .fail(err => this._notifier.Failed(err.message))\r\n .always(() => {\r\n BlockUI.Unblock(thumbnailElement);\r\n });\r\n }\r\n\r\n OnPriorityClick() {\r\n const currentPriority = this._priority();\r\n const priorities = this._priorities();\r\n\r\n const priorityIndex = priorities.findIndex(priority => priority.Id === currentPriority.Id);\r\n\r\n this._priority(priorities[priorityIndex === 0 ? priorities.length - 1 : priorityIndex - 1]);\r\n\r\n this.DebouncedUpdatePriority();\r\n }\r\n\r\n OnAvatarsClick() {\r\n this._areAvatarsWrapped(!this._areAvatarsWrapped());\r\n }\r\n\r\n private DebouncedUpdatePriority = _.debounce(this.UpdatePriority, 1000);\r\n\r\n UpdatePriority() {\r\n if (!this._entityId || !this._recordId) {\r\n return;\r\n }\r\n\r\n KanbanStore.UpdatePriority({\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n PriorityId: this._priority().Id\r\n })\r\n .then(() => {\r\n this._notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n })\r\n .fail(err => {\r\n this._notifier.Failed(JSON.parse(err.message).Message);\r\n\r\n this._onPriorityUpdateError();\r\n });\r\n }\r\n\r\n GetActionDate(action: ActionModel) {\r\n return action.ActionDate && moment(`${action.ActionDate}Z`);\r\n }\r\n\r\n GetActionDateFormatted(action: ActionModel) {\r\n return this.GetActionDate(action).format('DD MMM YY')\r\n }\r\n\r\n GetActionDeadline(action: ActionModel) {\r\n return action.ActionDeadline && moment(`${action.ActionDeadline}Z`);\r\n }\r\n\r\n GetActionDeadlineFormatted(action: ActionModel) {\r\n return this.GetActionDeadline(action).format('DD MMM YY')\r\n }\r\n\r\n IsActionDateShown(action: ActionModel) {\r\n const actionDate = this.GetActionDate(action);\r\n const actionDeadline = this.GetActionDeadline(action);\r\n return Boolean(actionDate && (!actionDeadline || moment().isBefore(actionDate)));\r\n }\r\n\r\n UseBadgeTemplate(action: ActionModel) {\r\n const actionDate = this.GetActionDate(action);\r\n const actionDeadline = this.GetActionDeadline(action);\r\n const isActionDateShown = Boolean(actionDate && (!actionDeadline || moment().isBefore(actionDate)));\r\n\r\n return !(!this._withDateBadges || (!isActionDateShown && !actionDeadline));\r\n }\r\n\r\n get HasTimer(): boolean {\r\n return !!this._timerControl;\r\n }\r\n\r\n GetActiveTimer(activeTimer: TimerModel): TimerModel {\r\n return this.NewActiveTimer || activeTimer || null;\r\n }\r\n\r\n SetTimerControlData(timerControl, activeTimer)\r\n {\r\n if (!timerControl || !this._entityId || !this._recordId)\r\n {\r\n return null;\r\n }\r\n\r\n this._timerControl = timerControl.Clone() as Timer;\r\n this._timerControl.KanbanMode = true;\r\n this._timerControl.TimerEntityId = this._entityId;\r\n this._timerControl.TimerRecordId = this._recordId;\r\n this._timerControl.ActionRecord = this._actionRecord;\r\n\r\n if (activeTimer) {\r\n this._timerControl.CurrentDuration = activeTimer.Starting;\r\n this._timerControl.SetKanbanActiveTimer(activeTimer);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>){\r\n\r\n }\r\n\r\n GetTagFullNameTooltipContent(val1, val2, val3): string {\r\n let settings = {\r\n content: ''\r\n }\r\n settings.content = 'test'\r\n return 'test';\r\n }\r\n GetKanbanCardTemplateName(): string {\r\n return 'Core/Controls/Kanban/Templates/KanbanCard';\r\n }\r\n}\r\n\r\nko.components.register('kanban-card', {\r\n viewModel: {\r\n createViewModel: (params: KanbanCardParams, componentInfo) =>\r\n new KanbanCard({...params, element: componentInfo.element as HTMLElement})\r\n },\r\n template: `<div class=\"js-kanban-card__component\" data-bind=\"template: { name: GetKanbanCardTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\"></div>`\r\n});","// Module\nvar code = \"<div class=\\\"kanban-item__content\\\" data-bind=\\\"style: {'border-left-color': _borderColor, 'border-left-width': _colorBar ? '4px' : '0'},\\r\\n css: {'read-only': _readOnly, 'kanban-Item-Grey': _withGreyBackground},\\r\\n tooltip: {\\r\\n content: $parent.IsDisabled || $parent.IsDisabledCard ? $parent.DisabledReason : '',\\r\\n position: {\\r\\n x: 'left',\\r\\n y: 'center'\\r\\n },\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\\"> <div class=\\\"disabled-card-container\\\" data-bind=\\\"visible: $parent.IsDisabled || $parent.IsDisabledCard\\\"> <i class=\\\"fa fa-random\\\"></i> </div> <div class=\\\"kanban-item__alias-and-priority\\\" data-bind=\\\"\\\"> <!-- ko if: _showAlias --> <div class=\\\"kanban-item__info kanban-alias__info\\\"> <!--ko template: {name: $data.GetAliasTemplate.bind($data)}--><!--/ko--> </div> <!-- /ko --> <div class=\\\"kanban-item__info kanban-priority__info\\\" data-bind=\\\"visible: IsPriority\\\"> <button type=\\\"button\\\" class=\\\"kanban-item__priority-badge\\\" data-bind=\\\"\\r\\n visible: IsPriority,\\r\\n click: OnPriorityClick,\\r\\n text: _priorityName,\\r\\n style: {'color': _priorityColor, 'outline-color': _priorityColor},\\r\\n disable: _readOnly || _isCalculatedViaCalcPriority\\\"></button> </div> </div> <!-- ko with: _viewerImages --> <div data-bind=\\\"viewerJs: {\\r\\n images: Files,\\r\\n imageClasses: 'kanban-item__thumbnail',\\r\\n getOriginalImage: $parent.GetOriginalImage.bind($parent),\\r\\n getHeightImage: $parent.GetHeightImage()}\\\"></div> <!-- /ko --> <div class=\\\"kanban-item__info\\\"> <!-- ko if: IsTagContainer --> <div class=\\\"kanban-item__tag-row\\\"> <div class=\\\"kanban-item__tags\\\"> <!-- ko if: IsWarning --> <i class=\\\"fa fa-exclamation-circle\\\" data-bind=\\\"tooltip: { content: _showTooltip ? _warnings[0] : '', position: { y: 'bottom' } }\\\"></i> <!-- /ko --> <!-- ko fastForEach: _tags --> <div data-bind=\\\"text: FullName,\\r\\n ellipsisTooltip: {\\r\\n content: !$parent._readOnly && $parent._showTooltip ? FullName : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag\\\"></div> <!-- /ko --> </div> </div> <!-- /ko --> <div class=\\\"kanban-item__name\\\"> <!--ko template: {name: $data.GetNameTemplate.bind($data)}--> <!--/ko--> </div> <div class=\\\"kanban-item__progressBar\\\" data-bind=\\\"visible: _progressBar && _totalTodoActionsNumber >= 1\\\"> <div class=\\\"progress\\\" data-bind=\\\"html: ProgressBar\\\"></div> <div class=\\\"todoActionsNumber\\\"> <!-- ko text: _retiredTodoActionsNumber + '/' + _totalTodoActionsNumber --><!-- /ko --> </div> </div> <div class=\\\"kanban-item__secondary-info\\\" data-bind=\\\"visible: _memo || _mailsCount\\\"> <!--ko template: {name: $data.GetInfoTemplate.bind($data)}--><!-- /ko --> </div> <div class=\\\"kanban-item__bottom-panel\\\" data-bind=\\\"css: { 'kanban-item__bottom-panel--wrapped': !(_memo || _mailsCount) }\\\"> <!-- ko if: _memo || _mailsCount --> <div class=\\\"kanban-item__icon-container\\\"> <!--ko template: {name: $data.GetTimerInCardTemplate.bind($data)}--><!-- /ko --> <!-- ko if: _memo --> <div class=\\\"kanban-item__memo-icon\\\"> <div class=\\\"kanban-item__memo-button\\\" data-bind=\\\"tooltip: { content: _memo }, css: {'disabled': _readOnly}\\\"> <i class=\\\"fa fa-sticky-note-o\\\"></i> </div> </div> <!-- /ko--> <!-- ko if: _mailsCount --> <div class=\\\"kanban-item__mail-button-container\\\"> <button type=\\\"button\\\" data-bind=\\\"click: _onMailClick, disable: _readOnly\\\" class=\\\"kanban-item__mail-button\\\"> <i class=\\\"fa fa-envelope-o\\\"></i> </button> <div class=\\\"kanban-item__mail-count\\\"><span data-bind=\\\"text: _mailsCount\\\"></span></div> </div> <!-- /ko --> <!-- ko if: IsParentOrChildRecords --> <div class=\\\"kanban-item_parentOrChildRecord-icon kanbanCard\\\"> <i class=\\\"fa fa-sitemap\\\" data-bind=\\\"tooltip: { content: GetParentOrChildRecordTemplate(), addClass: 'jBox-padding-5px'}, css: {'disabled': _readOnly}\\\"></i> </div> <!-- /ko --> </div> <!-- /ko--> <!-- ko ifnot: _memo || _mailsCount --> <div class=\\\"kanban-item__secondary-info\\\"> <!--ko template: {name: $data.GetInfoTemplate.bind($data)}--><!-- /ko --> <!-- ko ifnot: IsParentOrChildRecords --> <!--ko template: {name: $data.GetTimerInCardTemplate.bind($data)}--><!-- /ko --> <!-- /ko --> <!-- ko if: IsParentOrChildRecords --> <div class=\\\"kanban-item_parentOrChildRecord__box\\\"> <!--ko template: {name: $data.GetTimerInCardTemplate.bind($data)}--><!-- /ko --> <div class=\\\"kanban-item_parentOrChildRecord-icon kanbanCard\\\"> <i class=\\\"fa fa-sitemap\\\" data-bind=\\\"tooltip: { content: GetParentOrChildRecordTemplate(), addClass: 'jBox-padding-5px'}, css: {'disabled': _readOnly}\\\"></i> </div> </div> <!-- /ko --> </div> <!-- /ko --> <button type=\\\"button\\\" class=\\\"kanban-item__avatars\\\" data-bind=\\\"click: OnAvatarsClick,\\r\\n tooltip: {\\r\\n content: AllUsersTooltip,\\r\\n position: { y: 'bottom' },\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px',\\r\\n closeOnMouseleave: false\\r\\n }\\\"> <span class=\\\"kanban-item__avatars-content\\\" data-bind=\\\"css: { 'kanban-item__avatars-content--wrapped': _areAvatarsWrapped }\\\"> <!-- ko ifnot: _hideOwner --> <!-- ko with: _owner --> <span> <img data-bind=\\\"attr: {'src': thumbnail, 'alt': user.UserName, 'title': $parent.GetUserNameTooltip(user)}\\\" class=\\\"kanban-item__avatar kanban-item__avatar--owner\\\"> </span> <!-- /ko --> <!-- /ko --> <!-- ko fastForEach: _performers --> <span> <img data-bind=\\\"attr: {'src': thumbnail, 'alt': user.UserName, 'title': $parent.GetUserNameTooltip(user)}\\\" class=\\\"kanban-item__avatar\\\"> </span> <!-- /ko --> </span> </button> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<button class=\\\"kanban-item__name-content\\\"> Case Name </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\" click: $parents[2].OpenConsultScreen.bind($parents[2], $parent),\\r\\n disable: $parents[2]._readOnly,\\r\\n ellipsisTooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: $parents[2]._showTooltip ? $parent.Name : '',\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"kanban-item__name-content transition line-clamp-ellipsis line-clamp-2\\\"> <!-- ko text: $parent.Name --><!-- /ko --> <!-- ko ifnot: $parent.Name --> <i class=\\\"fa transition fa-external-link\\\"></i> <!-- /ko --> </span> <span data-bind=\\\"click: $parents[2].OpenEditScreen.bind($parents[2], $parent),\\r\\n disable: $parents[2]._readOnly\\\" class=\\\"kanban-item__button-edit\\\"><i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $parent.Alias --> <div class=\\\"kanban-item__tag-row kanban-alias-row\\\"> <div class=\\\"kanban-item__tags kanban-alias-items\\\"> <div data-bind=\\\"text: $parent.Alias,\\r\\n ellipsisTooltip: {\\r\\n content: !_readOnly && _showTooltip ? $parent.Alias : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag kanban-alias-item\\\"></div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"kanban-item__tag-row kanban-alias-row\\\"> <div class=\\\"kanban-item__tags kanban-alias-items\\\"> <div data-bind=\\\"text: 'Alias',\\r\\n ellipsisTooltip: {\\r\\n content: !_readOnly && _showTooltip ? 'Alias' : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag kanban-alias-item\\\"></div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"kanban-item__secondary-info-item\\\"> <div class=\\\"transition kanban-item__action\\\">Action Name</div> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> Jun 30 </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $parent.HasAction --> <button data-bind=\\\"click: $parents[2].SelectAction.bind($parents[2], $parent), disable: $parents[2]._readOnly\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"fa fa-plus\\\"> </button> <!-- /ko --> <!-- ko ifnot: $parent.HasAction --> <!-- ko foreach: $parent.Actions --> <div class=\\\"kanban-item__secondary-info-item\\\"> <button data-bind=\\\"css: {'disabled-action': $data.IsDisabled, 'highlightedAction': HighlightedAction },\\r\\n click: $parents[3].OpenActionRecordScreen.bind($parents[3], $parent, $data),\\r\\n disable: $parents[3]._readOnly\\r\\n \\\" class=\\\"transition kanban-item__action\\\"> <!-- ko text: ActionName --> <!-- /ko --> <!-- ko ifnot: ActionName --> <i class=\\\"fa transition fa-external-link\\\"></i> <!-- /ko --> </button> <!--ko if: $parent.UseBadgeTemplate($data)--> <div class=\\\"kanban-item__secondary-info-item\\\"> <div class=\\\"kanban-item__secondary-info-item\\\"> <!--ko if: $parent.IsActionDateShown($data)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--due-date\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $parent.GetActionDateFormatted($data)--> <!--/ko--> </div> <!--/ko--> <!-- ko if: $parent._alwaysShowDeadline --> <!-- ko if: $parent.GetActionDeadline($data) --> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $parent.GetActionDeadlineFormatted($data)--> <!--/ko--> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent._alwaysShowDeadline --> <!--ko ifnot: $parent.IsActionDateShown($data)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $parent.GetActionDeadlineFormatted($data)--> <!--/ko--> </div> <!--/ko--> <!-- /ko --> </div> </div> <!--/ko--> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"click: $parents[3].OpenActionRecordScreen.bind($parents[3], $parents[2].record, $parent, false),\\r\\n disable: $parents[3]._readOnly,\\r\\n ellipsisTooltip: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcontent: $parents[3]._showTooltip ? $parent.ActionName : '',\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tisLineClampMode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tposition: {x: 'left', y: 'center'},\\r\\n \\toutside: 'x',\\r\\n \\taddClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"kanban-item__name-content line-clamp-ellipsis line-clamp-2\\\"><!-- ko text: $parent.ActionName --><!-- /ko --></span> <span data-bind=\\\"click: $parents[3].OpenActionRecordScreen.bind($parents[3], $parents[2].record, $parent, true),\\r\\n disable: $parents[3]._readOnly\\\" class=\\\"kanban-item__button-edit\\\"><i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i></span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data.UseBadgeTemplate($parent)--> <div class=\\\"kanban-item__secondary-info-item\\\"> <div class=\\\"kanban-item__secondary-info-item\\\"> <!--ko if: $data.IsActionDateShown($parent)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--due-date\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $data.GetActionDateFormatted($parent)--> <!--/ko--> </div> <!--/ko--> <!-- ko if: $data._alwaysShowDeadline --> <!-- ko if: $data.GetActionDeadline($parent) --> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $data.GetActionDeadlineFormatted($parent)--> <!--/ko--> </div> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data._alwaysShowDeadline --> <!--ko ifnot: $data.IsActionDateShown($parent)--> <div class=\\\"kanban-item__date-badge kanban-item__date-badge--deadline\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!--ko text: $data.GetActionDeadlineFormatted($parent)--> <!--/ko--> </div> <!--/ko--> <!-- /ko --> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $parent.ActionAlias --> <div class=\\\"kanban-item__tag-row kanban-alias-row\\\"> <div class=\\\"kanban-item__tags kanban-alias-items\\\"> <div data-bind=\\\"text: $parent.ActionAlias,\\r\\n ellipsisTooltip: {\\r\\n content: !_readOnly && _showTooltip ? $parent.ActionAlias : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"kanban-item__tag kanban-alias-item\\\"></div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: HasTimer --> <!-- ko with: _timerControl --> <!-- ko template: { name: GetLiveTimerForKanbanTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"record_box\\\"> <!-- ko foreach: $data._parentOrChildRecords --> <div class=\\\"record_item\\\" data-bind=\\\"click: $parent.OpenRecord.bind($parent)\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: $parent.GetIcon(IsChild, IsParent), attr: {title: $parent.GetTitle(IsChild, IsParent)}\\\"></i> <span class=\\\"typeName\\\" data-bind=\\\"event: {mouseover: $parent.MouseOver.bind($parent, 'isTypeName'),\\r\\n mouseout: $parent.MouseOut.bind($parent, $data)}\\\"><!--ko text: $parent.GetParentOrChildRecordTypeName(TypeNameTranslation, TypeName) --><!--/ko--></span> <span class=\\\"name\\\" data-bind=\\\"event: {mouseover: $parent.MouseOver.bind($parent, 'isName'),\\r\\n mouseout: $parent.MouseOut.bind($parent)}\\\"><!--ko text: $parent.GetParentOrChildRecordName(NameTranslation, Name)--><!--/ko--></span> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"actionItemsTooltip\\\"> <!-- ko foreach: $_data.ActionItems --> <div class=\\\"actionItemsTooltip__item\\\"> <span class=\\\"name\\\"> <!--ko text: NameTranslation || Name --><!--/ko--> </span> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {CONTROL_TYPES, LIFE_STATUS_GROUPS} from \"Core/Constant\";\r\nimport {IUpdateStatusRequestModel, KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {\r\n ActionModel,\r\n LinkModel,\r\n PriorityModel,\r\n RecordModel,\r\n StatusModel,\r\n StepModel,\r\n ThumbnailModel\r\n} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport {DragulaExtention} from 'Core/KnockoutExtentions/DragulaExtention';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {KanbanStep} from 'Core/Controls/Kanban/Step';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {ButtonFollowUp} from \"Core/Controls/ButtonFollowUp/ButtonFollowUp\";\r\nimport {FollowUpRecordModel} from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport type {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\n\r\nimport {FollowUpStore} from \"Core/Controls/ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {PromptDialog, Types} from 'Core/Components/Dialogs/PromptDialog/PromptDialog';\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\n\r\nimport {ConfigModel} from 'Core/GeneralProperties/Models/ConfigModel';\r\nimport {PROPERTIES} from \"Core/Controls/Kanban/Constants\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {ActionTypes} from \"Core/Common/Enums/ActionTypes\";\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog'\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {LinkList} from \"Core/Controls/LinkList/LinkList\";\r\nimport {Tab} from \"Core/Controls/Tab/Tab\";\r\nimport {TabPage} from \"Core/Controls/TabPage/TabPage\";\r\nimport {NewRelationModel} from \"Core/Controls/LinkList/Models/NewRelationModel\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport \"Core/Controls/Kanban/KanbanCard\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nimport {PathRunner} from \"Core/Components/PathRunner/PathRunner\";\r\n\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\n\r\nimport {FollowUpLifeStatuses} from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport {SubjectActionModel} from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\n\r\nimport {ActionCheckListViewModel} from \"Core/Components/ActionCheckList/Models/View/ActionCheckListViewModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {ProgressBarInfoModel} from \"Core/Components/ProgressBar/Models/Response/ProgressBarInfoModel\";\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {ActionCheckList} from \"Core/Components/ActionCheckList/ActionCheckList\";\r\nimport {ICheckItemSerializedValue} from \"Core/Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\nimport {LifeStatusSimpleModel} from \"Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel\";\r\nimport {KanbanTypeViewModel} from \"Core/Controls/Kanban/Models/KanbanTypeViewModel\";\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nvar CLASSES = {\r\n FORBID_DRAG: 'forbid-drag',\r\n ALLOW_DRAG: 'allow-drag'\r\n}\r\n\r\nfunction getPopoverTemplate(classNames: string) {\r\n return _.escape(`\r\n <div class=\"popover ${classNames}\" role=\"tooltip\">\r\n <div class=\"arrow\"></div>\r\n <h3 class=\"popover-title\"></h3>\r\n <div class=\"popover-content\"></div>\r\n </div>\r\n `);\r\n}\r\n\r\ninterface DragulaState {\r\n item: any,\r\n sourceIndex: any,\r\n sourceItems: any,\r\n sourceContext: any,\r\n targetIndex: any,\r\n targetItems: any\r\n}\r\n\r\n//Templates\r\nimport Template from 'Core/Controls/Kanban/Templates/Default/DefaultKanban.html';\r\nimport TodoActionItemsTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoActionItemsTemplate.html';\r\nimport {Event} from \"../../Common/Event\";\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Default/DefaultKanban'] = Template;\r\n\r\nclass DefaultKanban {\r\n private _screen: KnockoutObservable<IScreen>;\r\n private _selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n private _originSteps: KanbanStep[];\r\n private _steps: KnockoutObservableArray<KanbanStep>;\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchString: KnockoutObservable<string>;\r\n private _data: StatusModel;\r\n private _height: KnockoutObservable<number>;\r\n private _selectedUsers: KnockoutObservableArray<number>;\r\n private _showPlanned: KnockoutObservable<boolean>;\r\n private _showTypeError: KnockoutObservable<boolean>;\r\n private _lifeStatuses: LifeStatusesModel;\r\n private _dragulaState: DragulaState;\r\n private _generalProperties: ConfigModel;\r\n private _isTodoToggleShown: KnockoutObservable<boolean>;\r\n _avatarThumbnails: KnockoutObservableArray<ThumbnailModel>;\r\n _priorities: KnockoutObservableArray<PriorityModel>;\r\n private _viewId: KnockoutObservable<number>;\r\n private _elObservable: KnockoutObservable<HTMLElement>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n private _selectedUsersSubscription: KnockoutSubscription;\r\n private _showPlannedSubscription: KnockoutSubscription;\r\n private _viewIdSubscription: KnockoutSubscription;\r\n private _showTypeErrorSubscription: KnockoutSubscription;\r\n _titleFieldId: number;\r\n private _kanbanSubjectId: KnockoutObservable<number>;\r\n private _kanbanSubjectName: KnockoutObservable<string>;\r\n _withDateBadges: boolean;\r\n _progressBar: boolean;\r\n _withMemo: boolean;\r\n _readOnly: boolean;\r\n private _heightImage: any;\r\n private _calculateHeightContainerStyle: string;\r\n private _colorBar: boolean;\r\n private _alwaysShowDeadline: boolean;\r\n private _hideOwner: boolean;\r\n private _backgroundColor: string;\r\n private _showTooltip: boolean;\r\n private _showAlias: boolean;\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _isFlowFolder: boolean;\r\n private _checkList: ActionCheckList;\r\n\r\n Css: KnockoutComputed<any>;\r\n\r\n constructor(params: {\r\n screen: KnockoutObservable<IScreen>;\r\n selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n generalProperties: ConfigModel;\r\n searchString: KnockoutObservable<string>;\r\n selectedUsers: KnockoutObservableArray<number>;\r\n showPlanned: KnockoutObservable<boolean>;\r\n showTypeError: KnockoutObservable<boolean>;\r\n isTodoToggleShown: KnockoutObservable<boolean>;\r\n titleFieldId: number;\r\n kanbanSubjectId: KnockoutObservable<number>;\r\n kanbanSubjectName: KnockoutObservable<string>;\r\n viewId: KnockoutObservable<number>;\r\n }) {\r\n this._screen = params.screen;\r\n this._selectedTypeObservable = params.selectedTypeObservable;\r\n this._generalProperties = params.generalProperties;\r\n this._searchString = params.searchString;\r\n this._selectedUsers = params.selectedUsers;\r\n this._showPlanned = params.showPlanned;\r\n this._showTypeError = params.showTypeError;\r\n this._titleFieldId = params.titleFieldId;\r\n this._kanbanSubjectId = params.kanbanSubjectId;\r\n this._kanbanSubjectName = params.kanbanSubjectName;\r\n this._viewId = params.viewId;\r\n this._isTodoToggleShown = params.isTodoToggleShown;\r\n this._elObservable = ko.observable(null);\r\n this._originSteps = [];\r\n this._steps = ko.observableArray([]);\r\n this._hasData = ko.observable(true);\r\n this._avatarThumbnails = ko.observableArray();\r\n this._priorities = ko.observableArray();\r\n this._lifeStatuses = null;\r\n this._dragulaState = null;\r\n this._withDateBadges = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_DATE_BADGES);\r\n this._progressBar = this._generalProperties.GetPropertyValue(PROPERTIES.PROGRESS_BAR_TYPE);\r\n this._withMemo = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MEMO);\r\n this._readOnly = this._generalProperties.GetPropertyValue(PROPERTIES.READ_ONLY);\r\n this._heightImage = this._generalProperties.GetPropertyValue(PROPERTIES.HEIGHT_IMAGE);\r\n this._colorBar = this._generalProperties.GetPropertyValue(PROPERTIES.COLOR_BAR);\r\n this._alwaysShowDeadline = this._generalProperties.GetPropertyValue(PROPERTIES.ALWAYS_SHOW_DEADLINE);\r\n this._hideOwner = this._generalProperties.GetPropertyValue(PROPERTIES.HIDE_OWNER);\r\n this._backgroundColor = this._generalProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR);\r\n this._showTooltip = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_TOOLTIP);\r\n this._showAlias = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_ALIAS);\r\n this._height = ko.observable(null);\r\n this.Css = ko.computed(() => {\r\n return {\r\n 'min-height': this._height() + 'px',\r\n 'background-color': !!this._backgroundColor && this._backgroundColor\r\n }\r\n });\r\n this._calculateHeightContainerStyle = null;\r\n\r\n this._searchString.subscribe(() => {\r\n this.Search();\r\n });\r\n this._followUpLifeStatuses = null;\r\n this._isFlowFolder = null;\r\n this._checkList = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n PubSub.subscribe('KANBAN_FULLSCREEN', (message: any, data: boolean)=> {\r\n this.SetContainerHeight(data);\r\n });\r\n }\r\n\r\n private InitDragula() {\r\n _.each(DragulaExtention.FindGroups('KanbanBoard'), (item) => DragulaExtention.DestroyGroup(item));\r\n\r\n var kanbanBoardDrake = DragulaExtention.AddGroupWithOptions('KanbanBoard',\r\n {\r\n accepts: (el, target, source) => {\r\n var record = ko.dataFor(el) as RecordModel;\r\n var targetStep = ko.dataFor(target) as KanbanStep;\r\n return targetStep.HasNextStatus(record.LifestatusId);\r\n },\r\n\r\n moves: (el, target, source) => {\r\n var record = ko.dataFor(el) as RecordModel;\r\n if (!record.Actions || record.IsDisabled) {\r\n return false;\r\n }\r\n\r\n const actions = _.filter(record.Actions, action => !action.IsDisabled);\r\n let step = _.find(this.Steps(), item => item.Id === record.LifestatusId)\r\n\r\n if (actions.length > 1 && !step.MultipleActions) {\r\n return false;\r\n }\r\n\r\n var result = true;\r\n _.each(record.Actions, action => {\r\n if (!action.ActionRecordId || action.IsDisabled) {\r\n result = false;\r\n return;\r\n }\r\n });\r\n\r\n if (result) {\r\n let isActionTypeAction = _.find(record.Actions, (action) => {\r\n return (action.ActionTypeName === 'Action' && !action.IsDisabled) || (action.ActionTypeId == 0 && !action.IsDisabled);\r\n });\r\n return !isActionTypeAction ? result = false : result;\r\n\r\n } else {\r\n return result;\r\n }\r\n }\r\n\r\n });\r\n\r\n kanbanBoardDrake.drake.on('drag',\r\n (el) => {\r\n\r\n var record = ko.dataFor(el) as RecordModel;\r\n\r\n _.each(kanbanBoardDrake.drake.containers,\r\n (container) => {\r\n var kanbanStep = ko.dataFor(container) as KanbanStep;\r\n\r\n if (kanbanStep.HasNextStatus(record.LifestatusId)) {\r\n $(container).addClass(CLASSES.ALLOW_DRAG);\r\n } else {\r\n $(container).addClass(CLASSES.FORBID_DRAG);\r\n }\r\n });\r\n\r\n });\r\n\r\n kanbanBoardDrake.drake.on('dragend',\r\n (el) => {\r\n\r\n _.each(kanbanBoardDrake.drake.containers,\r\n (container) => {\r\n $(container).removeClass(CLASSES.ALLOW_DRAG);\r\n $(container).removeClass(CLASSES.FORBID_DRAG);\r\n });\r\n });\r\n\r\n if (this._readOnly) {\r\n kanbanBoardDrake.drake.destroy();\r\n }\r\n }\r\n\r\n ListenForStatusesLoad() {\r\n this._selectedTypeSubscription = this._selectedTypeObservable.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._selectedUsersSubscription = this._selectedUsers.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._showPlannedSubscription = this._showPlanned.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._viewIdSubscription = this._viewId.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._showTypeErrorSubscription = this._showTypeError.subscribe(() => {\r\n this.ShowTypeError();\r\n });\r\n this.LoadStatuses();\r\n }\r\n\r\n ShowTypeError(){\r\n if(this._showTypeError()) {\r\n new Notifier().Warning(NOTIFICATIONS.ERROR_GETTING_LIFESTATUSES\r\n .replace('{EntityName}', this.SubjectEntityName));\r\n this._showTypeError(false);\r\n }\r\n }\r\n\r\n LoadStatuses() {\r\n const selectedType = this._selectedTypeObservable();\r\n const selectedUsers = this._selectedUsers();\r\n const showPlanned = this._showPlanned();\r\n const viewId = this._screen().IsConsultScreen? 0 : this._viewId();\r\n this._isFlowFolder = this._selectedTypeObservable() && this._selectedTypeObservable().HasFlowFolder;\r\n\r\n if (selectedType === null || selectedUsers.length === 0 || showPlanned === null || viewId === null) {\r\n return;\r\n }\r\n\r\n const el = this._elObservable() ? {Target: this._elObservable()} : {};\r\n BlockUI.Block(el);\r\n KanbanStore.GetStatuses({\r\n EntityId: this.SubjectEntity,\r\n FieldId: this._titleFieldId,\r\n TypeId: selectedType ? selectedType.K_Type : null,\r\n SubjectTypeId: this._screen().GetTableTypeId(),\r\n FilterByTypeHierarchy: this._selectedTypeObservable() && this._selectedTypeObservable().ShowTypeHierarchy,\r\n FilterByOwners: true,\r\n UseSubjectEntity: this.UseKanbanSubject,\r\n FilterByEntityId: this.FilterByEntityId,\r\n FilterByRecordId: this.FilterByRecordId,\r\n RecordOwners: selectedUsers,\r\n ShowPlanned: showPlanned,\r\n WithTags: !this._generalProperties.GetPropertyValue(PROPERTIES.WITH_TAGS),\r\n WithSubjectImage: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_SUBJECT_IMAGE),\r\n WithPriorities: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Show',\r\n WithCalculatedPriority: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Calculated',\r\n WithCalculatedViaCalсPrioPriority: this.IsCalculatedViaCalcPriority,\r\n WithMails: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MAILS),\r\n WithColor: this._colorBar,\r\n ViewId: viewId,\r\n IsToDo: false,\r\n WithMemo: this._withMemo,\r\n WithToDoProgressBar: this._progressBar\r\n }).always(() => {\r\n BlockUI.Unblock(this._elObservable());\r\n })\r\n .then((status: StatusModel) => {\r\n this._steps([]);\r\n this.InitDragula();\r\n this.SetData(status);\r\n this._data = status;\r\n this._hasData(status.Steps.length > 0);\r\n this._isTodoToggleShown(status.HasTodoType);\r\n this._avatarThumbnails(status.Thumbnails);\r\n this._priorities(status.Priorities);\r\n this.HeaderHeightResize();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n\r\n SetData(status: StatusModel) {\r\n var steps = [];\r\n _.each(status.Records,\r\n (record: RecordModel) => {\r\n let isActionTypeAction = _.find(record.Actions, (action) => {\r\n return (action.ActionTypeName === 'Action' && !action.IsDisabled) || (action.ActionTypeId == 0 && !action.IsDisabled);\r\n });\r\n record.IsDisabledCard = !isActionTypeAction;\r\n\r\n _.each(record.Actions,\r\n (action) => {\r\n if ((action.ActionTypeName === 'Action' && !action.IsDisabled) ||\r\n (action.ActionTypeId == 0 && !action.IsDisabled)) {\r\n action.HighlightedAction = true;\r\n } else {\r\n action.HighlightedAction = false;\r\n }\r\n });\r\n });\r\n\r\n _.each(status.Steps,\r\n (step: StepModel) => {\r\n if (step.Enabled) {\r\n if (!step.IsRetired) {\r\n step.Records = _.filter(status.Records, (record: RecordModel) => {\r\n return record.LifestatusId === step.Id;\r\n });\r\n }\r\n\r\n var links = _.filter(status.Links, (link: LinkModel) => {\r\n return link.IdStepTo === step.Id;\r\n });\r\n var kanbanStep = new KanbanStep(step, links);\r\n steps.push(kanbanStep);\r\n }\r\n });\r\n\r\n this._originSteps = steps;\r\n\r\n if (this._searchString()) {\r\n this.Search()\r\n } else {\r\n this._steps(steps);\r\n }\r\n }\r\n\r\n TopHeight() {\r\n let allPadding = 91,\r\n pageHeaderHeight = $(\"body\").find('.page-header.navbar').height(),\r\n actionBarSubFormHeight = $(\"body\").find('.actionBarSubForm').outerHeight(),\r\n kanbanBoardRootHeight = $(this._elObservable()).find('.kanbard-board-root').outerHeight(),\r\n panelTitleHeight = $(this._elObservable()).find('.kanban-column').find('.panel-title').outerHeight();\r\n\r\n return allPadding + pageHeaderHeight + actionBarSubFormHeight + kanbanBoardRootHeight + panelTitleHeight;\r\n }\r\n\r\n AfterRenderSteps(list) {\r\n this.SetContainerStyle();\r\n }\r\n\r\n SetContainerStyle(isFullscreen?: boolean) {\r\n const $container = $(this._elObservable()).find('.kanban-container').first();\r\n let calculate = $container.offset().top + 35;\r\n\r\n if (!MobileChecker.IsMobile() && calculate != this.TopHeight()) {\r\n let pageHeaderHeight = $(\"body\").find('.page-header.navbar').height(),\r\n kanbanBoardRootHeight = $(this._elObservable()).find('.kanbard-board-root').outerHeight(),\r\n panelTitleHeight = $(this._elObservable()).find('.kanban-column').find('.panel-title').outerHeight();\r\n\r\n calculate = pageHeaderHeight + kanbanBoardRootHeight + panelTitleHeight + 50;\r\n\r\n if (isFullscreen) {\r\n calculate = kanbanBoardRootHeight;\r\n } else {\r\n $container.css('min-height', `auto`);\r\n return;\r\n }\r\n }\r\n\r\n $container.css('min-height',`calc(100vh - ${calculate}px)`);\r\n }\r\n\r\n SetContainerHeight(isFullscreen: boolean): void {\r\n const $container = $(this._elObservable()).find('.js-default-kanban__component');\r\n const toolbarHeight = $(this._elObservable()).find('.table-toolbar-line').outerHeight();\r\n\r\n let calculate: number = 45;\r\n\r\n if (isFullscreen) {\r\n calculate = toolbarHeight\r\n } else {\r\n $container.find('.kanban-container').first().css('min-height', `auto`);\r\n }\r\n $container.css('height', isFullscreen ? `calc(100vh - ${calculate}px)`: 'auto');\r\n }\r\n\r\n HeaderHeightResize() {\r\n const defaultKanbanHtml = $(this._elObservable()).find('.js-default-kanban');\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize, defaultKanbanHtml[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(defaultKanbanHtml[0], () => {\r\n unbindResize();\r\n window.removeEventListener(\"scroll\", this.RepositionDefaultKanbanHeaderOnScroll, false)\r\n });\r\n window.addEventListener(\"scroll\", this.RepositionDefaultKanbanHeaderOnScroll, false );\r\n }\r\n\r\n RepositionDefaultKanbanHeaderOnScroll = () => {\r\n const kanbanContainer = $(this._elObservable()).find('.js-default-kanban').find('.kanban-container');\r\n if (!kanbanContainer.hasClass('board-root')) {\r\n window.removeEventListener(\"scroll\", this.RepositionDefaultKanbanHeaderOnScroll, false)\r\n return false;\r\n }\r\n const scrollTop = $(window).scrollTop();\r\n const allTitleElement = this._elObservable().querySelectorAll(\".kanban-column:not(.retired-column):not(.collapsed) > .panel-title\");\r\n const titleElementHeight = $(this._elObservable().querySelector(\".kanban-column:not(.retired-column):not(.collapsed) > .panel-title\")).outerHeight();\r\n const boundingRect = $(this._elObservable()).find('.board-root')[0].getBoundingClientRect();\r\n const positionKanbanBoardRoot = $(this._elObservable()).find('.board-root').offset().top + 6;\r\n let fixedHeaderHeight: number = 0;\r\n let calculate: number = 0;\r\n\r\n if (window.innerWidth > 991) {\r\n const headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n fixedHeaderHeight = headerElement ? headerElement.offsetHeight : 0;\r\n }\r\n\r\n if ((boundingRect.top + 5) < fixedHeaderHeight) {\r\n calculate = Math.abs((positionKanbanBoardRoot - (scrollTop + fixedHeaderHeight)));\r\n }\r\n\r\n if (((boundingRect.bottom - 15) - fixedHeaderHeight - titleElementHeight) <= 0) {\r\n return false;\r\n }\r\n\r\n _.each(allTitleElement, (title: HTMLDivElement) => {\r\n title.style.top = calculate + \"px\";\r\n });\r\n }\r\n\r\n OnResize = () => {\r\n this.RepositionDefaultKanbanHeaderOnScroll();\r\n };\r\n\r\n Collapsing(item: KanbanStep, element) {\r\n item.IsCollapsed = !item.IsCollapsed;\r\n element.currentTarget.style.top = 0 + 'px';\r\n }\r\n\r\n get Steps(): KnockoutObservableArray<KanbanStep> {\r\n return this._steps;\r\n }\r\n\r\n get IsCalculatedViaCalcPriority(): boolean {\r\n return this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'WithCalculatedViaCalсPrio';\r\n }\r\n\r\n GetActionItemsTemplate(data){\r\n return $((ko as any).renderTemplateX(TodoActionItemsTemplate, {$_data: data}));\r\n }\r\n\r\n ShowCheckListKanban(record: RecordModel, step: KanbanStep){\r\n FlowFolderStore.GetProgressBarInfo({ EntityId: record.EntityId, RecordId: record.RecordId })\r\n .then((result: ProgressBarInfoModel) => {\r\n const nextLifeStatus = _.find(result.NextLifeStatuses.Child.LifeStatuses, (lifeStatus)=> lifeStatus.Id === step.Model.Id);\r\n result.NextLifeStatuses.Child.CheckLists = _.filter(result.NextLifeStatuses.Child.CheckLists, (checkList) => checkList.LifeStatusId === step.Model.Id);\r\n\r\n this.CheckListKanban(result.NextLifeStatuses, result.FlowFolder, record, step, nextLifeStatus);\r\n });\r\n }\r\n\r\n CheckListKanban(result: LifeStatusesGeneralModel,\r\n flowFolderModel: FlowFolderModel,\r\n kanbanRecordModel: RecordModel,\r\n kanbanStep: KanbanStep,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n if (result == null || !result.Child) {\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (!this._followUpLifeStatuses){\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n }\r\n\r\n const screenParams: ScreenParamsModel = { EntityId: kanbanRecordModel.EntityId, RecordId: kanbanRecordModel.RecordId };\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n\r\n const showCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0);\r\n\r\n if (showCheckLists) {\r\n this.ShowCheckLists(result,\r\n this._isFlowFolder && !this._screen().IsEditScreen,\r\n screenParams,\r\n flowFolderModel,\r\n kanbanRecordModel,\r\n nextLifeStatus);\r\n return;\r\n } else {\r\n this.TryToApproveLifeStatus(result, kanbanRecordModel, kanbanStep);\r\n }\r\n\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel,\r\n isFlowFolder: boolean,\r\n screenParams,\r\n flowFolderModel: FlowFolderModel,\r\n kanbanRecordModel: RecordModel,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n const currentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus,\r\n KanbanMod: true\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_CANCEL',\r\n this,\r\n eventArgs => {\r\n this.CancelUpdateProcess();\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_SAVE',\r\n this,\r\n eventArgs => {\r\n const lifeStatusesSerializedData = eventArgs.data.serializedData;\r\n\r\n if (nextLifeStatus.ApprovalName === 'Password' || nextLifeStatus.ApprovalName === 'Yes/No'){\r\n this.AproveLifeStatus({\r\n currentLifeStatus: currentLifeStatus,\r\n nextLifeStatus: nextLifeStatus\r\n }, kanbanRecordModel, nextLifeStatus.Id, lifeStatusesSerializedData[0].CheckItems);\r\n\r\n } else {\r\n this.UpdateStatus(kanbanRecordModel,\r\n lifeStatusesSerializedData[0].LifeStatusId,\r\n lifeStatusesSerializedData[0].CheckItems,\r\n null);\r\n }\r\n });\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.InitFlowFolder(isFlowFolder, screenParams.EntityId, flowFolderModel);\r\n this._checkList.Show();\r\n }\r\n\r\n AfterDropCase(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n var record = item as RecordModel;\r\n var step = targetContext as KanbanStep;\r\n this._dragulaState = {\r\n item: item,\r\n sourceIndex: sourceIndex,\r\n sourceItems: sourceItems,\r\n sourceContext: sourceContext,\r\n targetIndex: targetIndex,\r\n targetItems: targetItems\r\n };\r\n if (record) {\r\n let action = _.first(record.Actions),\r\n isActionItems = !!(step.ActionItems && step.ActionItems.length),\r\n sourceMultipleActions = sourceContext.Model.MultipleActions,\r\n oneAction = item.Actions.length == 1;\r\n\r\n if (isActionItems && (oneAction ? oneAction : !sourceMultipleActions) ) {\r\n this.ShowCheckListKanban(record, step);\r\n\r\n } else if (action.ActionsEntityId) {\r\n\r\n FollowUpStore.GetStatuses(\r\n {\r\n ActionEntityId: action.ActionsEntityId,\r\n EntityId: record.EntityId,\r\n RecordId: record.RecordId\r\n }).then(result => {\r\n this.TryToApproveLifeStatus(result, record, step);\r\n });\r\n }\r\n }\r\n\r\n }\r\n\r\n CancelUpdateProcess() {\r\n this._dragulaState.sourceItems.splice(this._dragulaState.sourceIndex, 1);\r\n this._dragulaState.sourceItems.splice(this._dragulaState.sourceIndex, 0, this._dragulaState.item);\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n TryToApproveLifeStatus(lifeStatusesModel: LifeStatusesGeneralModel, record: RecordModel, step: KanbanStep) {\r\n this._lifeStatuses = lifeStatusesModel.Child;\r\n const nextLifeStatus = _.find(lifeStatusesModel.Child.LifeStatuses, (lifeStatus)=> lifeStatus.Id === step.Model.Id);\r\n\r\n if (this._lifeStatuses.LifeStatuses.length === 0) {\r\n new Notifier().Warning(NOTIFICATIONS.NEXT_STATUS_NOT_AVAILABLE);\r\n } else {\r\n this.AproveLifeStatus({\r\n currentLifeStatus: lifeStatusesModel.Child.CurrentLifeStatus,\r\n nextLifeStatus: nextLifeStatus\r\n }, record, step.Id);\r\n }\r\n }\r\n\r\n AproveLifeStatus(aprovalRelatedData, record, stepId, checkItems?: ICheckItemSerializedValue[]) {\r\n const confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n .replace('{fromstatus}', aprovalRelatedData.currentLifeStatus.Name)\r\n .replace('{tostatus}', aprovalRelatedData.nextLifeStatus.Name);\r\n\r\n const checkItemsValue:ICheckItemSerializedValue[] = (checkItems && checkItems.length ? checkItems : null);\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateStatus(record, stepId, checkItemsValue);\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n this,\r\n () => {\r\n this.SaveCheckList();\r\n this.CancelUpdateProcess();\r\n });\r\n const approvalName = aprovalRelatedData.nextLifeStatus.ApprovalName || 'Off';\r\n switch (approvalName) {\r\n case 'Off':\r\n this.UpdateStatus(record, stepId, checkItemsValue);\r\n break;\r\n case 'Password':\r\n const passwordPrompt = new PromptDialog(\r\n {\r\n Type: Types.Password,\r\n Label: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n Value: '',\r\n MinHeight: 200,\r\n Required: true,\r\n RequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n ShowNotification: false,\r\n CloseOnSave: false\r\n });\r\n passwordPrompt.Show();\r\n\r\n passwordPrompt.On('Save', this,\r\n (eventargs) => {\r\n const password = eventargs.data.value;\r\n if (password) {\r\n BlockUI.Block();\r\n\r\n FollowUpStore.ConfirmPassword({password: password})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((response) => {\r\n if (response) {\r\n passwordPrompt.Hide(false);\r\n this.UpdateStatus(record, stepId, checkItemsValue, password);\r\n } else {\r\n passwordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\r\n this.SaveCheckList();\r\n this.CancelUpdateProcess();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n }\r\n );\r\n\r\n passwordPrompt.On('Cancel', this, () => {\r\n this.SaveCheckList();\r\n this.CancelUpdateProcess();\r\n });\r\n break;\r\n\r\n case 'Yes/No':\r\n confirmationDialog.Show();\r\n break;\r\n }\r\n }\r\n\r\n UpdateStatus(record: RecordModel, stepId, checkItems?: ICheckItemSerializedValue[], password?) {\r\n const requestModel: IUpdateStatusRequestModel = {\r\n SubjectEntityId: record.EntityId,\r\n SubjectRecordId: record.RecordId,\r\n NewStatusId: stepId,\r\n Actions: record.Actions,\r\n PreviousLifeStatusId: record.LifestatusId\r\n };\r\n\r\n if (checkItems && checkItems.length) {\r\n requestModel.CheckItems = checkItems;\r\n }\r\n\r\n if (password) requestModel.ConfirmationPassword = password;\r\n\r\n const el = this._elObservable();\r\n BlockUI.Block({Target: el});\r\n KanbanStore.UpdateStatus(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock(el);\r\n })\r\n .then(() => {\r\n this.LoadStatuses();\r\n new Notifier().Success(NOTIFICATIONS.STATUS_UPDATED);\r\n record.LifestatusId = stepId;\r\n this._dragulaState.sourceItems.splice(this._dragulaState.sourceIndex, 1);\r\n this._dragulaState.targetItems.splice(this._dragulaState.targetIndex, 0, this._dragulaState.item);\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n\r\n }\r\n\r\n SaveCheckList(){\r\n if (this._checkList){\r\n this._checkList.SaveCheckList();\r\n }\r\n }\r\n\r\n set Height(height: number) {\r\n this._height(height);\r\n }\r\n\r\n private GetConsultScreenType(): ScreenTypes {\r\n return ScreenTypes.ConsultScreen;\r\n }\r\n\r\n private GetEditScreenType(): ScreenTypes {\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n private GetScreenTypeFromProperty(propertyName: string): ScreenTypes {\r\n const screenTypeName = this._generalProperties.GetPropertyValue(propertyName);\r\n if (screenTypeName) {\r\n if (screenTypeName.Value == 'ConsultScreen') {\r\n return ScreenTypes.ConsultScreen\r\n }\r\n\r\n if (screenTypeName.Value == 'EditScreen') {\r\n return ScreenTypes.EditScreen\r\n }\r\n }\r\n\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n OpenConsultScreen(record: RecordModel) {\r\n this.OpenScreen(record.EntityId,\r\n record.TypeId,\r\n record.RecordId,\r\n null,\r\n DataModes.Default,\r\n record,\r\n this.GetConsultScreenType());\r\n }\r\n\r\n OpenEditScreen(record: RecordModel) {\r\n this.OpenScreen(record.EntityId,\r\n record.TypeId,\r\n record.RecordId,\r\n null,\r\n DataModes.Default,\r\n record,\r\n this.GetEditScreenType());\r\n }\r\n\r\n OpenActionRecordScreen(record: RecordModel, action: ActionModel) {\r\n let followUpRecord = new FollowUpRecordModel();\r\n followUpRecord.Actions = record.Actions;\r\n this.OpenScreen(action.ActionsEntityId,\r\n action.ActionTypeId,\r\n action.ActionRecordId,\r\n followUpRecord,\r\n DataModes.Default,\r\n record,\r\n this.GetScreenTypeFromProperty(PROPERTIES.ACTION_SCREEN_TYPE));\r\n }\r\n\r\n async OpenScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n screenType: ScreenTypes,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n BlockUI.Block();\r\n\r\n if (screenType == ScreenTypes.EditScreen) {\r\n LockManager.Instance.TryLock(entityId, recordId)\r\n .then(() => {\r\n screenManager.IsTypeTransformationRequired(entityId, recordId)\r\n .then((result: any) => {\r\n if (result) {\r\n const typeScreen = new TypeScreen(entityId, recordTypeId, true, false);\r\n\r\n typeScreen.On(\"TYPE_SELECTED\",\r\n this,\r\n (eventArgs) => {\r\n UserVarsManager.Instance.RemoveFromRecent(recordId, entityId, recordTypeId);\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const typeName = eventArgs.data.TypeName;\r\n\r\n UserVarsManager.Instance.AddRecent(entityId, recordId, typeId);\r\n\r\n this.ShowEditScreen(entityId, typeId, recordId, record, mode, activeCard, typeName, openMailTab)\r\n });\r\n\r\n typeScreen.Show();\r\n } else {\r\n this.ShowEditScreen(entityId, recordTypeId, recordId, record, mode, activeCard, null, openMailTab)\r\n }\r\n });\r\n })\r\n .fail(() => BlockUI.Unblock());\r\n } else if (screenType == ScreenTypes.ConsultScreen) {\r\n screenManager.GetScreenByScreenType(\r\n entityId,\r\n screenType,\r\n recordId\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(entityId, screen.IsSpecialScreenExist).LoadNewData(recordId);\r\n }\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n }\r\n\r\n private async ShowEditScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n typeName: string = null,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n TableTypeName: typeName,\r\n RecordId: recordId,\r\n DataMode: mode\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === entityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE',\r\n this,\r\n () => {\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On('RECORD_SAVED',\r\n this,\r\n () => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n let editScreen = screen as EditScreen;\r\n editScreen.Close();\r\n\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n this.LoadStatuses();\r\n });\r\n\r\n screen.On('COPY', this, async (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || recordTypeId;\r\n await this.NewRecord(activeCard, {\r\n EntityId: entityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n\r\n var followUpControl = screen.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n\r\n if (followUpControl) {\r\n followUpControl.SetRecord(record);\r\n\r\n screen.On(\"FOLLOWUP_RECORD\",\r\n this,\r\n (eventArgs) => {\r\n screen.Close();\r\n\r\n const followUpRecordModel = followUpControl.GetRecord();\r\n const currentLifestatus = followUpRecordModel ? followUpRecordModel.CurrentLifeStatus : null;\r\n\r\n BlockUI.Block();\r\n if (followUpRecordModel && (followUpRecordModel.LifeStatusSort === LIFE_STATUS_GROUPS.RETIRED\r\n || followUpRecordModel.LifeStatusNoActionNode\r\n || (currentLifestatus\r\n && (currentLifestatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE\r\n || currentLifestatus.FollowupModeName === FollowupModes.EDIT_CURRENT)))) {\r\n BlockUI.Unblock();\r\n return;\r\n }\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n RecordId: recordId,\r\n LoadAsExample: recordId > 0,\r\n DataMode: DataModes.FollowUp,\r\n SubjectLifestatusId: followUpRecordModel ? followUpRecordModel.LifeStatusId : null\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n this.EditScreenInFollowUpMode(screen);\r\n }).fail(error => {\r\n new Notifier($(this._elObservable())).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n Search() {\r\n this._steps([]);\r\n\r\n this.InitDragula();\r\n\r\n const searchDelegate = (record: RecordModel) => this.RecordMatchesByCard(record) || this.RecordMatchesByAction(record) || this.RecordMatchesByLink(record);\r\n this.SearchRecordsBySearchTerm(searchDelegate);\r\n\r\n this._hasData(this._steps().length > 0);\r\n }\r\n\r\n private SearchRecordsBySearchTerm(filterDelegate: (record: RecordModel) => boolean) {\r\n if (!this._searchString()) {\r\n this._steps(this._originSteps);\r\n return;\r\n }\r\n\r\n const newSteps = [];\r\n\r\n for (const step of this._originSteps) {\r\n const newStep = step.Copy();\r\n newStep.ClearRecords();\r\n\r\n for (const record of step.Records()) {\r\n const match = filterDelegate(record);\r\n if (match) {\r\n newStep.AddRecord(record);\r\n }\r\n }\r\n\r\n newSteps.push(newStep);\r\n }\r\n\r\n this._steps(newSteps);\r\n }\r\n\r\n private RecordMatchesByCard(record: RecordModel) {\r\n return record.Name && record.Name.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1;\r\n }\r\n\r\n private RecordMatchesByAction(record: RecordModel) {\r\n return record.Actions\r\n .filter(a => !!a.ActionName)\r\n .filter(a => a.ActionName.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1).length > 0;\r\n }\r\n\r\n private RecordMatchesByLink(record: RecordModel) {\r\n for (const link of record.MainLinks) {\r\n const match = link.RecordName && link.RecordName.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1;\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n\r\n for (const user of record.Users) {\r\n const match = user.UserName && user.UserName.toUpperCase().indexOf(this._searchString().toUpperCase()) > -1;\r\n if (match) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private EditScreenInFollowUpMode(editScreen: EditScreen) {\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n editScreen.IsDataFromExample = true;\r\n editScreen.UseLinking = true;\r\n editScreen.ParentRecordId = editScreen.GetRecordId();\r\n\r\n editScreen.On('FOLLOWUP',\r\n this,\r\n (eventArgs) => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.On(\"RECORD_SAVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseAllLocks();\r\n });\r\n\r\n editScreen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.ShowInModal();\r\n }\r\n\r\n SelectAction(card: RecordModel) {\r\n const globalManager = GlobalManager.Instance;\r\n const actionGlobal = globalManager.GetGlobal(GLOBALS.ACTION_TABLE);\r\n const parentTypeId = this.SubjectEntityName === actionGlobal ? card.TypeId : 0;\r\n const typeScreen = new TypeScreen(null, parentTypeId, false, false, actionGlobal, [ActionTypes.ACTION]);\r\n typeScreen\r\n .On(\"TYPE_SELECTED\", this, async eventArgs => { await this.NewRecord(card, eventArgs.data); })\r\n .On(\"TYPES_NOT_FOUND\", this, eventArgs => new Notifier($(this._elObservable())).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n typeScreen.Show();\r\n }\r\n\r\n private async NewRecord(activeCard: RecordModel, newRecordSettings: any, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n const actionEntityId = newRecordSettings.EntityId;\r\n const typeId = newRecordSettings.TypeId;\r\n const kindId = newRecordSettings.KindId;\r\n const exampleRecordId = newRecordSettings.ExampleRecordId;\r\n\r\n const actionSubjectRecord = new ActionSubjectRecordModel(activeCard.EntityId, activeCard.RecordId);\r\n\r\n if (actionEntityId) {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: actionEntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: activeCard.LifestatusId,\r\n ActionSubjectRecord: actionSubjectRecord,\r\n DataMode: dataMode,\r\n AliasSuffix: aliasSuffix\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._elObservable()));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n\r\n screen.On('LINK_LIST_DATA_LOADED', this, eventArgs => {\r\n if (dataMode === DataModes.Default) {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n const relationModel = _.find(linkListControl.DataModel().Entities(), relatedEntity => {\r\n return relatedEntity.EntityId === activeCard.EntityId;\r\n });\r\n\r\n if (relationModel) {\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = activeCard.LinkName;\r\n newRelation.Id = activeCard.RecordId;\r\n newRelation.IsMain = true;\r\n newRelation.TypeName = this._selectedTypeObservable().Name;\r\n linkListControl.AddRecord(activeCard.RecordId, relationModel, newRelation);\r\n }\r\n }\r\n\r\n });\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.SaveImmediately = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n screen.On('RECORD_SAVED', this, eventArgs => this.LoadStatuses());\r\n screen.On('COPY', this, async (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || typeId;\r\n await this.NewRecord(activeCard, {\r\n EntityId: actionEntityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n screen.ShowInModal();\r\n });\r\n } else {\r\n var notifier = new Notifier($(this._elObservable()));\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n private OpenMailTab(screen: IScreen) {\r\n const tab = screen.GetControl<Tab>(CONTROL_TYPES.Tab);\r\n\r\n if (tab) {\r\n for (const tabPage of tab.GetSubControls() as TabPage[]) {\r\n const grid = tabPage.GetSubControls().find(control => control.GetType() === CONTROL_TYPES.Grid);\r\n if (grid && grid.GetModel().EntityId === this._data.MailEntityId) {\r\n tab.SetActiveTabPage(tabPage);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private get UseKanbanSubject() {\r\n return !!this._kanbanSubjectId();\r\n }\r\n\r\n private get UseFilterByEntityRecord() {\r\n return this._screen().IsConsultScreen;\r\n }\r\n\r\n private get SubjectEntity() {\r\n return this.UseKanbanSubject\r\n ? this._kanbanSubjectId()\r\n : this._screen().GetEntityId();\r\n }\r\n\r\n private get SubjectEntityName() {\r\n return this.UseKanbanSubject\r\n ? this._kanbanSubjectName()\r\n : this._screen().GetEntityName();\r\n }\r\n\r\n private get FilterByEntityId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetEntityId()\r\n : null;\r\n }\r\n\r\n private get FilterByRecordId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetRecordId()\r\n : null;\r\n }\r\n\r\n OnPriorityUpdateError() {\r\n this.LoadStatuses();\r\n }\r\n\r\n OnMailClick(record: RecordModel) {\r\n this.OpenScreen(\r\n record.EntityId,\r\n record.TypeId,\r\n record.RecordId,\r\n null,\r\n DataModes.Default,\r\n record,\r\n this.GetEditScreenType(),\r\n true\r\n );\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>){\r\n this._elObservable(el[0].parentElement.parentElement.parentElement);\r\n this.ListenForStatusesLoad();\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0], () => {\r\n PubSub.unsubscribe('KANBAN_FULLSCREEN');\r\n });\r\n }\r\n\r\n GetRootDefaultTemplateName(): string {\r\n return 'Core/Controls/Kanban/Templates/Default/DefaultKanban';\r\n }\r\n\r\n dispose() {\r\n this._selectedTypeSubscription.dispose();\r\n this._selectedUsersSubscription.dispose();\r\n this._showPlannedSubscription.dispose();\r\n this._viewIdSubscription.dispose();\r\n this._showTypeErrorSubscription.dispose();\r\n }\r\n}\r\n\r\nko.components.register('default-kanban', {\r\n viewModel: DefaultKanban,\r\n template: `<div class=\"js-default-kanban__component\" data-bind=\"template: { name: GetRootDefaultTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\"></div>`\r\n});","// Module\nvar code = \"<div class=\\\"clearfix\\\"></div> <div class=\\\"clearfix\\\" data-bind=\\\"visible: !_hasData()\\\"> <div class=\\\"alert alert-block alert-info\\\"> <h4 class=\\\"alert-heading\\\">Lifestatuses are not created!</h4> <p> Please, create lifestatuses. </p> </div> </div> <div data-bind=\\\"visible: _hasData, style: Css\\\" class=\\\"kanban-container board-root clearfix\\\"> <!-- ko fastForEach: {data: Steps, afterQueueFlush: $data.AfterRenderSteps.bind($data)} --> <!-- ko ifnot: IsRetired --> <div data-bind=\\\"css: {'retired-column': IsRetired, 'collapsed': _isCollapsed }\\\" class=\\\"kanban-column clearfix\\\"> <span data-bind=\\\"click: $parent.Collapsing.bind($data)\\\" class=\\\"panel-title\\\"> <!-- ko if: $parent._showTooltip --> <!--ko if: MemoTranslation || Memo --> <div class=\\\"status-description-info\\\" data-bind=\\\"tooltip: { content: MemoTranslation || Memo }\\\"> <i class=\\\"fa fa-info-circle\\\"></i> </div> <!--/ko--> <!--/ko--> <span data-bind=\\\"text: TranslatedName,\\r\\n ellipsisTooltip: {\\r\\n content: $parent._showTooltip ? TranslatedName : '',\\r\\n options: {\\r\\n isLineClampMode: true\\r\\n }\\r\\n }\\\"></span> <!-- ko if: ActionItems && ActionItems.length > 0 --> <!-- ko if: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\" data-bind=\\\"tooltip: { content: $parent.GetActionItemsTemplate($data), addClass: 'jBox-padding-5px'}\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- ko ifnot: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- /ko --> </span> <div data-bind=\\\"visible: !_isCollapsed(), dragula: {\\r\\n data: Records,\\r\\n group: 'KanbanBoard',\\r\\n afterDrop: $parent.AfterDropCase.bind($parent),\\r\\n disabled: $parents[1]._readOnly\\r\\n },\\r\\n css: { dustbin: IsRetired }\\\" class=\\\"kanban-container\\\"> <div class=\\\"kanban-item\\\"> <kanban-card params=\\\"\\r\\n entityId: EntityId,\\r\\n recordId: RecordId,\\r\\n tags: Tags,\\r\\n priority: Priority,\\r\\n users: Users,\\r\\n isDisabled: IsDisabled,\\r\\n avatarThumbnails: $parents[1]._avatarThumbnails,\\r\\n priorities: $parents[1]._priorities,\\r\\n thumbnail: Thumbnail,\\r\\n mailsCount: MailsCount,\\r\\n parentOrChildRecords: ParentOrChildRecords,\\r\\n warnings: Warnings,\\r\\n color: Color,\\r\\n withGreyBackground: IsDisabled || IsDisabledCard,\\r\\n withDateBadges: $parents[1]._withDateBadges,\\r\\n colorBar: $parents[1]._colorBar,\\r\\n onPriorityUpdateError: $parents[1].OnPriorityUpdateError.bind($parents[1]),\\r\\n onMailClick: $parents[1].OnMailClick.bind($parents[1], $data),\\r\\n progressBar: $parents[1]._progressBar,\\r\\n memo: ReplaceMemoText,\\r\\n retiredTodoActionsNumber: RetiredTodoActionsNumber,\\r\\n totalTodoActionsNumber: TotalTodoActionsNumber,\\r\\n readOnly: $parents[1]._readOnly,\\r\\n isCalculatedViaCalcPriority: $parents[1].IsCalculatedViaCalcPriority,\\r\\n alwaysShowDeadline: $parents[1]._alwaysShowDeadline,\\r\\n hideOwner: $parents[1]._hideOwner,\\r\\n heightImage: $parents[1]._heightImage,\\r\\n isTodo: false,\\r\\n showTooltip: $parents[1]._showTooltip,\\r\\n showAlias: $parents[1]._showAlias\\r\\n \\\"> </kanban-card> </div> </div> </div> <!-- /ko --> <!-- /ko --> <div class=\\\"retiredBox\\\"> <!-- ko fastForEach: {data: Steps, afterQueueFlush: $data.AfterRenderSteps.bind($data)} --> <!-- ko if: IsRetired --> <div data-bind=\\\"css: {'retired-column': IsRetired, 'collapsed': _isCollapsed }\\\" class=\\\"kanban-column isRetiredColumn clearfix\\\"> <span data-bind=\\\"click: $parent.Collapsing.bind($data)\\\" class=\\\"panel-title\\\"> <!-- ko if: $parent._showTooltip --> <!--ko if: MemoTranslation || Memo --> <div class=\\\"status-description-info\\\" data-bind=\\\"tooltip: { content: MemoTranslation || Memo }\\\"> <i class=\\\"fa fa-info-circle\\\"></i> </div> <!--/ko--> <!--/ko--> <span data-bind=\\\"text: TranslatedName,\\r\\n ellipsisTooltip: {\\r\\n content: $parent._showTooltip ? TranslatedName : '',\\r\\n options: {\\r\\n isLineClampMode: true\\r\\n }\\r\\n }\\\"></span> </span> <div data-bind=\\\"visible: !_isCollapsed(), dragula: {\\r\\n data: Records,\\r\\n group: 'KanbanBoard',\\r\\n afterDrop: $parent.AfterDropCase.bind($parent),\\r\\n disabled: $parents[1]._readOnly\\r\\n },\\r\\n css: { dustbin: IsRetired }\\\" class=\\\"kanban-container\\\"> <div class=\\\"kanban-item\\\" data-bind=\\\"debug: $parents[1].ShowAlias\\\"> <kanban-card params=\\\"\\r\\n entityId: EntityId,\\r\\n recordId: RecordId,\\r\\n tags: Tags,\\r\\n priority: Priority,\\r\\n users: Users,\\r\\n isDisabled: IsDisabled,\\r\\n avatarThumbnails: $parents[1]._avatarThumbnails,\\r\\n priorities: $parents[1]._priorities,\\r\\n thumbnail: Thumbnail,\\r\\n mailsCount: MailsCount,\\r\\n parentOrChildRecords: ParentOrChildRecords,\\r\\n color: Color,\\r\\n warnings: Warnings,\\r\\n withGreyBackground: IsDisabled || IsDisabledCard,\\r\\n withDateBadges: $parents[1]._withDateBadges,\\r\\n colorBar: $parents[1]._colorBar,\\r\\n onPriorityUpdateError: $parents[1].OnPriorityUpdateError.bind($parents[1]),\\r\\n onMailClick: $parents[1].OnMailClick.bind($parents[1], $data),\\r\\n progressBar: $parents[1]._progressBar,\\r\\n memo: ReplaceMemoText,\\r\\n retiredTodoActionsNumber: RetiredTodoActionsNumber,\\r\\n totalTodoActionsNumber: TotalTodoActionsNumber,\\r\\n readOnly: $parents[1]._readOnly,\\r\\n isCalculatedViaCalcPriority: $parents[1].IsCalculatedViaCalcPriority,\\r\\n alwaysShowDeadline: $parents[1]._alwaysShowDeadline,\\r\\n hideOwner: $parents[1]._hideOwner,\\r\\n heightImage: $parents[1]._heightImage,\\r\\n isTodo: false,\\r\\n showTooltip: $parents[1]._showTooltip,\\r\\n showAlias: $parents[1]._showAlias\\r\\n \\\"> </kanban-card> </div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","export const ActionTypes = {\r\n\tACTION: \"Action\"\r\n};","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {IUpdateActionStatusRequestModel, KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {\r\n ActionModel, ParentOrChildRecordModel,\r\n PriorityModel,\r\n RecordModel,\r\n StatusModel,\r\n StepModel,\r\n ThumbnailModel\r\n} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport type {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\n\r\nimport {FollowUpRecordModel} from 'Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel';\r\nimport {ButtonFollowUp} from 'Core/Controls/ButtonFollowUp/ButtonFollowUp';\r\n\r\nimport {ConfigModel} from 'Core/GeneralProperties/Models/ConfigModel';\r\nimport {TABLE_SECURITY_WORDS} from 'Core/Constants/TableSecurityWords';\r\nimport {FollowupModes} from 'Core/Constants/FollowupModes';\r\nimport {CONTROL_TYPES, LIFE_STATUS_GROUPS} from 'Core/Constant';\r\nimport {PROPERTIES} from './Constants';\r\n\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {NewRelationModel} from 'Core/Controls/LinkList/Models/NewRelationModel';\r\nimport {Tab} from 'Core/Controls/Tab/Tab';\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage';\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\n\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport 'Core/Controls/Kanban/KanbanCard';\r\nimport {FollowUpStore} from \"../ButtonFollowUp/Stores/FollowUpStore\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {PromptDialog, Types} from \"../../Components/Dialogs/PromptDialog/PromptDialog\";\r\nimport {LifeStatusSimpleModel} from \"../ButtonFollowUp/Models/LifestatusSimpleModel\";\r\nimport {Tooltip} from \"Core/Common/Tooltip\";\r\nimport {BaseScreen} from \"../../Screens/BaseScreen\";\r\nimport {PathRunner} from \"../../Components/PathRunner/PathRunner\";\r\n\r\nimport {LifeStatusesGeneralModel} from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport {FlowFolderModel} from \"Core/Components/ProgressBar/Models/Response/FlowFolderModel\";\r\nimport {KanbanStep} from 'Core/Controls/Kanban/Step';\r\nimport {FollowUpLifeStatuses} from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport {ActionCheckList} from \"Core/Components/ActionCheckList/ActionCheckList\";\r\nimport {LifeStatusesModel} from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport {ICheckItemSerializedValue} from \"../../Components/ActionCheckList/CheckItems/ICheckItemSerializedValue\";\r\nimport {FlowFolderStore} from \"../../Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {ProgressBarInfoModel} from \"../../Components/ProgressBar/Models/Response/ProgressBarInfoModel\";\r\nimport {KanbanTypeViewModel} from \"Core/Controls/Kanban/Models/KanbanTypeViewModel\";\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\ninterface TodoKanbanParams {\r\n screen: KnockoutObservable<IScreen>;\r\n selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n noTypesLoaded: KnockoutObservable<boolean>;\r\n generalProperties: ConfigModel;\r\n searchString: KnockoutObservable<string>;\r\n selectedUsers: KnockoutObservableArray<number>;\r\n showPlanned: KnockoutObservable<boolean>;\r\n isTodoToggleShown: KnockoutObservable<boolean>;\r\n titleFieldId: number;\r\n kanbanSubjectId: KnockoutObservable<number>;\r\n viewId: KnockoutObservable<number>;\r\n todoEntityId: KnockoutObservable<number>;\r\n todoTypeId: KnockoutObservable<number>;\r\n todoFieldId: KnockoutObservable<number>;\r\n controlId: number;\r\n loadStatuses?: boolean;\r\n timerControl: Timer;\r\n}\r\n\r\n//Templates\r\nimport Template from 'Core/Controls/Kanban/Templates/Todo/TodoKanban.html';\r\nimport TodoParentOrChildRecordTemplate from 'Core/Controls/Kanban/Templates/Todo/TodoParentOrChildRecordTemplate.html';\r\nimport TodoActionItemsTemplate from \"Core/Controls/Kanban/Templates/Todo/TodoActionItemsTemplate.html\";\r\n\r\nko.templates['Core/Controls/Kanban/Templates/Todo/TodoKanban'] = Template;\r\n\r\nclass TodoKanban {\r\n private _screen: KnockoutObservable<IScreen>;\r\n private _selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n private _noTypesLoaded: KnockoutObservable<boolean>;\r\n private _searchString: KnockoutObservable<string>;\r\n private _selectedUsers: KnockoutObservableArray<number>;\r\n private _showPlanned: KnockoutObservable<boolean>;\r\n private _generalProperties: ConfigModel;\r\n private _isTodoToggleShown: KnockoutObservable<boolean>;\r\n private _viewId: KnockoutObservable<number>;\r\n private _todoEntityId: KnockoutObservable<number>;\r\n private _todoTypeId: KnockoutObservable<number>;\r\n private _todoFieldId: KnockoutObservable<number>;\r\n private _elObservable: KnockoutObservable<HTMLElement>;\r\n private _element: HTMLElement;\r\n private _draggingFrom: KnockoutObservable<{ recordId: number; lifestatusId: number }>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n private _noTypesLoadedSubscription: KnockoutSubscription;\r\n private _selectedUsersSubscription: KnockoutSubscription;\r\n private _showPlannedSubscription: KnockoutSubscription;\r\n private _viewIdSubscription: KnockoutSubscription;\r\n private _guid: string;\r\n _titleFieldId: number;\r\n private _kanbanSubjectId: KnockoutObservable<number>;\r\n _withDateBadges: boolean;\r\n _withMemo: boolean;\r\n _readOnly: boolean;\r\n _colorBar: boolean;\r\n _loadStatuses: boolean;\r\n private _timerControl: Timer;\r\n private _heightImage: any;\r\n private _userVars: UserVarsManager;\r\n private _controlId: number\r\n private _alwaysShowDeadline: boolean;\r\n private _hideOwner: boolean;\r\n private _backgroundColor: string;\r\n private _showTooltip: boolean;\r\n private _showAlias: boolean;\r\n\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _checkList: ActionCheckList;\r\n private _isFlowFolder: boolean;\r\n private _lifeStatuses: LifeStatusesModel;\r\n\r\n _status: KnockoutObservable<StatusModel>;\r\n _isCreationAllowed: KnockoutObservable<boolean>;\r\n\r\n _recordsWithTodoActions: KnockoutComputed<{\r\n record: RecordModel;\r\n groupedActions: {\r\n [lifestatusId: string]: KnockoutObservableArray<ActionModel>;\r\n };\r\n }[]>;\r\n\r\n _avatarThumbnails: KnockoutComputed<ThumbnailModel[]>;\r\n _priorities: KnockoutComputed<PriorityModel[]>;\r\n _isTypeHierarchyCorrect: KnockoutComputed<boolean>;\r\n _isNewButtonEnabled: KnockoutComputed<boolean>;\r\n\r\n _labels = LABELS;\r\n\r\n private _tooltip: Tooltip;\r\n\r\n constructor(params: TodoKanbanParams & { element: HTMLElement }) {\r\n this._screen = params.screen;\r\n this._selectedTypeObservable = params.selectedTypeObservable;\r\n this._noTypesLoaded = params.noTypesLoaded;\r\n this._generalProperties = params.generalProperties;\r\n this._searchString = params.searchString;\r\n this._selectedUsers = params.selectedUsers;\r\n this._showPlanned = params.showPlanned;\r\n this._isTodoToggleShown = params.isTodoToggleShown;\r\n this._titleFieldId = params.titleFieldId;\r\n this._kanbanSubjectId = params.kanbanSubjectId;\r\n this._viewId = params.viewId;\r\n this._todoEntityId = params.todoEntityId;\r\n this._todoTypeId = params.todoTypeId;\r\n this._todoFieldId = params.todoFieldId;\r\n this._elObservable = ko.observable(null);\r\n this._element = params.element;\r\n this._controlId = params.controlId;\r\n this._guid = Guid.NewGuid();\r\n if (!this._userVars) {\r\n this._userVars = UserVarsManager.Instance;\r\n }\r\n\r\n this._tooltip = null;\r\n\r\n this._loadStatuses = params.loadStatuses;\r\n\r\n this._timerControl = params.timerControl;\r\n\r\n this._withDateBadges = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_DATE_BADGES);\r\n this._withMemo = this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MEMO);\r\n this._readOnly = this._generalProperties.GetPropertyValue(PROPERTIES.READ_ONLY);\r\n this._heightImage = this._generalProperties.GetPropertyValue(PROPERTIES.HEIGHT_IMAGE);\r\n this._colorBar = this._generalProperties.GetPropertyValue(PROPERTIES.COLOR_BAR);\r\n this._alwaysShowDeadline = this._generalProperties.GetPropertyValue(PROPERTIES.ALWAYS_SHOW_DEADLINE);\r\n this._hideOwner = this._generalProperties.GetPropertyValue(PROPERTIES.HIDE_OWNER);\r\n this._backgroundColor = this._generalProperties.GetPropertyValue(PROPERTIES.BACKGROUND_COLOR);\r\n this._showTooltip = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_TOOLTIP);\r\n this._showAlias = this._generalProperties.GetPropertyValue(PROPERTIES.SHOW_ALIAS);\r\n\r\n this._status = ko.observable({\r\n Records: [],\r\n Steps: [],\r\n Thumbnails: [],\r\n Links: [],\r\n Priorities: [],\r\n HasTodoType: true,\r\n IsTodoEnabled: true,\r\n IsTypeHierarchyCorrect: true,\r\n MailEntityId: undefined\r\n });\r\n this._isCreationAllowed = ko.observable();\r\n\r\n this._draggingFrom = ko.observable({recordId: undefined, lifestatusId: undefined});\r\n\r\n this._recordsWithTodoActions = ko.pureComputed(() => {\r\n const status = this._status();\r\n const searchStringValue = this._searchString();\r\n const searchString = searchStringValue && searchStringValue.toUpperCase();\r\n\r\n const todoTypeId = this._todoTypeId();\r\n\r\n _.each(status.Records, (record) => {\r\n let isKanbanBoardExpanded = this._userVars.GetKanbanBoardAccordionGroup(this._controlId, record.EntityId, record.RecordId, true);\r\n record.AriaExpanded(isKanbanBoardExpanded);\r\n record.AriaExpanded.subscribe((newValue) => {\r\n this._userVars.SetKanbanBoardAccordionGroup(this._controlId, record.EntityId, record.RecordId, newValue);\r\n })\r\n })\r\n\r\n if (status.Records[0] !== undefined) {\r\n const recordsWithActions = status.Records.map(record => ({\r\n record,\r\n actions: record.Actions.filter(action => action.ActionTypeId === todoTypeId)\r\n }));\r\n\r\n const filteredRecordsWithActions = searchString\r\n ? _.compact(\r\n recordsWithActions.map(recordWithAction => {\r\n const {record, actions} = recordWithAction;\r\n\r\n if (\r\n [record.Name, record.LifeStatusTranslatedName || record.LifestatusName].some(\r\n label => label && label.toUpperCase().includes(searchString)\r\n )\r\n ) {\r\n return recordWithAction;\r\n }\r\n\r\n const filteredActions = actions.filter(\r\n action =>\r\n (action.ActionName && action.ActionName.toUpperCase().includes(searchString)) ||\r\n action.Users.some(\r\n user => user.UserName && user.UserName.toUpperCase().includes(searchString)\r\n )\r\n );\r\n\r\n return filteredActions.length > 0 ? {record, actions: filteredActions} : undefined;\r\n })\r\n )\r\n : recordsWithActions;\r\n\r\n return filteredRecordsWithActions.map(({record, actions}) => ({\r\n record,\r\n groupedActions: _.mapObject(\r\n _.groupBy(actions, (action) => action.ActionLifestatusId),\r\n // Conversion to observable because of some inflexibility of dragula extension\r\n actions => ko.observableArray(actions)\r\n )\r\n }));\r\n }\r\n\r\n return [];\r\n });\r\n\r\n this._avatarThumbnails = ko.pureComputed(() => {\r\n const status = this._status();\r\n\r\n return status.Thumbnails;\r\n });\r\n\r\n this._priorities = ko.computed(() => {\r\n const status = this._status();\r\n \r\n return status.Priorities;\r\n });\r\n\r\n this._isTypeHierarchyCorrect = ko.pureComputed(() => {\r\n const status = this._status();\r\n\r\n return status.IsTypeHierarchyCorrect;\r\n });\r\n\r\n this._isNewButtonEnabled = ko.pureComputed(() =>\r\n this._isCreationAllowed() && !this._readOnly && this._isTypeHierarchyCorrect()\r\n );\r\n\r\n this._followUpLifeStatuses = null;\r\n this._isFlowFolder = null;\r\n this._checkList = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n PubSub.subscribe('KANBAN_FULLSCREEN', (message: any, data: boolean)=> {\r\n this.SetContainerHeight(data);\r\n });\r\n }\r\n\r\n get IsCalculatedViaCalcPriority(): boolean {\r\n return this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'WithCalculatedViaCalсPrio';\r\n }\r\n\r\n get HasTimer(): boolean {\r\n return !!this._timerControl;\r\n }\r\n\r\n GetBackgroundColor(): string {\r\n return `${!!this._backgroundColor && this._backgroundColor}`\r\n }\r\n\r\n GetToDoKanbanGroupWidth(): string {\r\n let stepWidth = '180px',\r\n stepMargin = '5px',\r\n amendment = '10px';\r\n\r\n return `calc((${this._status().Steps.length} * ${stepWidth}) + (${this._status().Steps.length} * ${stepMargin}) - ${amendment})`\r\n }\r\n\r\n SetContainerHeight(isFullscreen: boolean): void {\r\n const $todoKanban__component = $(this._elObservable()).find('.js-todo-kanban__component');\r\n const $container = $todoKanban__component.find('.todo-kanban');\r\n const toolbarHeight = $(this._elObservable()).find('.table-toolbar-line').outerHeight();\r\n\r\n let calculate: number = 45;\r\n\r\n if (isFullscreen) {\r\n calculate = toolbarHeight\r\n }\r\n\r\n $container.css('height', isFullscreen ? `calc(100vh - ${calculate}px)`: 'auto');\r\n }\r\n\r\n ListenForStatusesLoad() {\r\n this._selectedTypeSubscription = this._selectedTypeObservable.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._noTypesLoadedSubscription = this._noTypesLoaded.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._selectedUsersSubscription = this._selectedUsers.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._showPlannedSubscription = this._showPlanned.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n this._viewIdSubscription = this._viewId.subscribe(() => {\r\n this.LoadStatuses();\r\n });\r\n\r\n if(this._loadStatuses){\r\n this.LoadStatuses();\r\n }\r\n\r\n if (this._screen().IsConsultScreen && !this._loadStatuses && this._viewId() !== null ){\r\n this.LoadStatuses();\r\n }\r\n }\r\n\r\n LoadStatuses() {\r\n this._isFlowFolder = this._selectedTypeObservable() && this._selectedTypeObservable().HasFlowFolder;\r\n\r\n const recordId = this._screen().GetRecordId();\r\n const selectedUsers = this._selectedUsers();\r\n const showPlanned = this._showPlanned();\r\n\r\n const selectedType = this._selectedTypeObservable() ? this._selectedTypeObservable().K_Type : null;\r\n const isTypeSelected = !!selectedType || this._noTypesLoaded();\r\n\r\n const isViewSelected = this._viewId() !== null;\r\n\r\n const canLoadData = selectedUsers.length > 0 && showPlanned !== null && isTypeSelected && isViewSelected;\r\n\r\n if (!canLoadData) {\r\n return;\r\n }\r\n \r\n return this.LoadStatusesForAllRecords();\r\n }\r\n\r\n LoadStatusesForAllRecords() {\r\n const el = this._elObservable();\r\n BlockUI.Block({Target: el});\r\n return KanbanStore.GetStatuses({\r\n EntityId: this.SubjectEntity,\r\n FieldId: this._titleFieldId,\r\n TypeId: this._selectedTypeObservable() ? this._selectedTypeObservable().K_Type : null,\r\n SubjectTypeId: this._screen().GetTableTypeId(),\r\n FilterByTypeHierarchy: this._selectedTypeObservable() && this._selectedTypeObservable().ShowTypeHierarchy,\r\n FilterByOwners: true,\r\n UseSubjectEntity: this.UseKanbanSubject,\r\n FilterByEntityId: this.FilterByEntityId,\r\n FilterByRecordId: this.FilterByRecordId,\r\n RecordOwners: this._selectedUsers(),\r\n ShowPlanned: this._showPlanned(),\r\n WithTags: !this._generalProperties.GetPropertyValue(PROPERTIES.WITH_TAGS),\r\n WithSubjectImage: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_SUBJECT_IMAGE),\r\n WithPriorities: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Show',\r\n WithCalculatedPriority: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Calculated',\r\n WithCalculatedViaCalсPrioPriority: this.IsCalculatedViaCalcPriority,\r\n WithMails: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MAILS),\r\n WithColor: this._colorBar,\r\n WithTimers: this.HasTimer,\r\n ViewId: this._viewId(),\r\n IsToDo: true,\r\n TodoModel: {\r\n EntityId: this._todoEntityId(),\r\n TypeId: this._todoTypeId(),\r\n FieldId: this._todoFieldId()\r\n },\r\n WithMemo: this._withMemo\r\n })\r\n .then((status: StatusModel) => {\r\n this._status(status);\r\n\r\n this._isTodoToggleShown(status.HasTodoType);\r\n this.HeaderHeightResize();\r\n\r\n if (\r\n this._isCreationAllowed() === undefined &&\r\n !this._readOnly &&\r\n status.IsTypeHierarchyCorrect &&\r\n status.Records.length > 0 &&\r\n status.IsTodoEnabled\r\n ) {\r\n return this.LoadUserAllowanceToCreate(this._todoEntityId());\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(el);\r\n });\r\n }\r\n\r\n GetActionItemsTemplate(data){\r\n return $((ko as any).renderTemplateX(TodoActionItemsTemplate, {$_data: data}));\r\n }\r\n\r\n LoadStatusesForRecord(recordId: number) {\r\n let targetElement = this._elObservable() ? {Target: this._elObservable()} : {};\r\n BlockUI.Block(targetElement);\r\n return KanbanStore.GetStatuses({\r\n RecordId: recordId,\r\n EntityId: this.SubjectEntity,\r\n FieldId: this._titleFieldId,\r\n FilterByOwners: true,\r\n UseSubjectEntity: this.UseKanbanSubject,\r\n FilterByEntityId: this.FilterByEntityId,\r\n FilterByRecordId: this.FilterByRecordId,\r\n RecordOwners: this._selectedUsers(),\r\n ShowPlanned: this._showPlanned(),\r\n WithTags: !this._generalProperties.GetPropertyValue(PROPERTIES.WITH_TAGS),\r\n WithSubjectImage: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_SUBJECT_IMAGE),\r\n WithPriorities: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Show',\r\n WithCalculatedPriority: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_PRIORITIES).Value === 'Calculated',\r\n WithCalculatedViaCalсPrioPriority: this.IsCalculatedViaCalcPriority,\r\n WithMails: this._generalProperties.GetPropertyValue(PROPERTIES.WITH_MAILS),\r\n WithColor: this._colorBar,\r\n WithTimers: this.HasTimer,\r\n IsToDo: true,\r\n ViewId: this._viewId(),\r\n IsViewForAction: this._screen().IsConsultScreen,\r\n TodoModel: {\r\n EntityId: this._todoEntityId(),\r\n TypeId: this._todoTypeId(),\r\n FieldId: this._todoFieldId()\r\n },\r\n WithMemo: this._withMemo\r\n }).then((status: StatusModel) => {\r\n if(!status || !status.Records || status.Records.length === 0){\r\n return;\r\n }\r\n\r\n const [newRecord] = status.Records;\r\n\r\n const oldStatus = this._status();\r\n\r\n const changedRecordIndex = oldStatus.Records.findIndex(record => record.RecordId === recordId);\r\n\r\n this._status({\r\n ...oldStatus,\r\n Steps: status.Steps,\r\n Links: status.Links,\r\n Thumbnails: status.Thumbnails,\r\n Priorities: status.Priorities,\r\n Records: [\r\n ...oldStatus.Records.slice(0, changedRecordIndex),\r\n newRecord,\r\n ...oldStatus.Records.slice(changedRecordIndex + 1)\r\n ]\r\n });\r\n\r\n this.HeaderHeightResize();\r\n\r\n if (\r\n this._isCreationAllowed() === undefined &&\r\n !this._readOnly &&\r\n status.IsTypeHierarchyCorrect &&\r\n status.Records.length > 0 &&\r\n status.IsTodoEnabled\r\n ) {\r\n return this.LoadUserAllowanceToCreate(this._todoEntityId());\r\n }\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(this._elObservable());\r\n });\r\n }\r\n\r\n LoadUserAllowanceToCreate(actionsEntityId: number) {\r\n return KanbanStore.GetUserAllowance({\r\n TableId: actionsEntityId,\r\n SecurityWord: TABLE_SECURITY_WORDS.CREATE\r\n }).then((isCreationAllowed: boolean) => {\r\n this._isCreationAllowed(isCreationAllowed);\r\n });\r\n }\r\n\r\n AfterDrop(\r\n item: RecordModel,\r\n action: ActionModel,\r\n sourceIndex: number,\r\n sourceItems: any,\r\n sourceContext: StepModel,\r\n targetIndex: number,\r\n targetItems: any,\r\n targetContext: StepModel\r\n ) {\r\n let record = item as RecordModel;\r\n let isActionItems = !!(targetContext.ActionItems && targetContext.ActionItems.length);\r\n\r\n if (record){\r\n if (isActionItems){\r\n this.ShowCheckListKanban(action, record, targetContext);\r\n } else {\r\n FollowUpStore.GetStatuses({\r\n RecordId: action.ActionRecordId,\r\n EntityId: action.ActionsEntityId\r\n }).then(result => {\r\n this.ApproveLifeStatus({\r\n action,\r\n record,\r\n currentLifeStatus: result.Child.CurrentLifeStatus,\r\n nextLifeStatus: result.Child.LifeStatuses.find(lifestatus => lifestatus.Id === targetContext.Id)\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n ShowCheckListKanban(action: ActionModel, record: RecordModel, targetContext: StepModel){\r\n FlowFolderStore.GetProgressBarInfo({ EntityId: action.ActionsEntityId, RecordId: action.ActionRecordId })\r\n .then((result: ProgressBarInfoModel) => {\r\n result.NextLifeStatuses.Child.CheckLists = _.filter(result.NextLifeStatuses.Child.CheckLists, (checkList) => checkList.LifeStatusId === targetContext.Id);\r\n let nextLifeStatus = result.NextLifeStatuses.Child.LifeStatuses.find(lifestatus => lifestatus.Id === targetContext.Id);\r\n this.CheckListKanban(\r\n result.NextLifeStatuses,\r\n result.FlowFolder,\r\n action,\r\n record,\r\n targetContext,\r\n nextLifeStatus\r\n );\r\n });\r\n }\r\n\r\n CheckListKanban(result: LifeStatusesGeneralModel,\r\n flowFolderModel: FlowFolderModel,\r\n action: ActionModel,\r\n record: RecordModel,\r\n targetContext: StepModel,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n if (result == null || !result.Child) {\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (!this._followUpLifeStatuses){\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n }\r\n\r\n const screenParams: ScreenParamsModel = { EntityId: action.ActionsEntityId, RecordId: action.ActionRecordId };\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n\r\n const isShowCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0);\r\n\r\n if (isShowCheckLists) {\r\n this.ShowCheckLists(result,\r\n this._isFlowFolder && !this._screen().IsEditScreen,\r\n screenParams,\r\n flowFolderModel,\r\n action,\r\n record,\r\n nextLifeStatus);\r\n return;\r\n } else {\r\n this.ApproveLifeStatus({\r\n action,\r\n record,\r\n currentLifeStatus: result.Child.CurrentLifeStatus,\r\n nextLifeStatus: result.Child.LifeStatuses.find(lifestatus => lifestatus.Id === targetContext.Id)\r\n });\r\n }\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel,\r\n isFlowFolder: boolean,\r\n screenParams,\r\n flowFolderModel: FlowFolderModel,\r\n action: ActionModel,\r\n record: RecordModel,\r\n nextLifeStatus: LifeStatusSimpleModel) {\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus,\r\n KanbanMod: true\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_CANCEL',\r\n this,\r\n eventArgs => {\r\n this.LoadStatusesForAllRecords();\r\n });\r\n this._checkList.On('KANBAN_CHECKLIST_SAVE',\r\n this,\r\n eventArgs => {\r\n\r\n const checkItemsValue: ICheckItemSerializedValue[] = eventArgs.data.serializedData[0].CheckItems;\r\n\r\n if(nextLifeStatus.ApprovalName === 'Password' || nextLifeStatus.ApprovalName === 'Yes/No'){\r\n this.ApproveLifeStatus({\r\n action,\r\n record,\r\n currentLifeStatus: result.Child.CurrentLifeStatus,\r\n nextLifeStatus: nextLifeStatus,\r\n checkItems: checkItemsValue\r\n });\r\n } else {\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id, checkItems: checkItemsValue, password: null});\r\n }\r\n });\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.InitFlowFolder(isFlowFolder, screenParams.EntityId, flowFolderModel);\r\n this._checkList.Show();\r\n }\r\n\r\n ApproveLifeStatus({action, record, currentLifeStatus, nextLifeStatus, checkItems}: {\r\n action: ActionModel;\r\n record: RecordModel;\r\n currentLifeStatus: LifeStatusSimpleModel;\r\n nextLifeStatus: LifeStatusSimpleModel;\r\n checkItems?: ICheckItemSerializedValue[];\r\n }) {\r\n if (nextLifeStatus.ApprovalName === 'Password') {\r\n const passwordPrompt = new PromptDialog(\r\n {\r\n Type: Types.Password,\r\n Label: CONFIRMATIONS.PLEASE_TYPE_YOUR_PASSWORD_TO_CONFIRM,\r\n Value: '',\r\n MinHeight: 200,\r\n Required: true,\r\n RequiredErrorMessage: LABELS.PASSWORD + ' ' + NOTIFICATIONS.IS_REQUIRED,\r\n ShowNotification: false,\r\n CloseOnSave: false\r\n });\r\n passwordPrompt.Show();\r\n\r\n passwordPrompt.On('Save', this,\r\n (eventargs) => {\r\n const password = eventargs.data.value;\r\n if (password) {\r\n BlockUI.Block();\r\n\r\n FollowUpStore.ConfirmPassword({password: password})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((response) => {\r\n if (response) {\r\n passwordPrompt.Hide(false);\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id, checkItems: (checkItems && checkItems.length ? checkItems : null), password});\r\n } else {\r\n passwordPrompt.ExternalInvalidActionHandling(NOTIFICATIONS.INCORRECT_PASSWORD);\r\n this.SaveCheckList();\r\n this.LoadStatusesForAllRecords();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n });\r\n }\r\n }\r\n );\r\n\r\n passwordPrompt.On('Cancel', this, () => {\r\n this.SaveCheckList();\r\n this.LoadStatusesForAllRecords();\r\n });\r\n } else if (nextLifeStatus.ApprovalName === 'Yes/No') {\r\n const confirmationText = CONFIRMATIONS.ARE_SURE_TO_CHANGE_LIFESTATUS\r\n .replace('{fromstatus}', currentLifeStatus.Name)\r\n .replace('{tostatus}', nextLifeStatus.Name);\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n this,\r\n () => {\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id, checkItems: (checkItems && checkItems.length ? checkItems : null)});\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n this,\r\n () => {\r\n this.SaveCheckList();\r\n this.LoadStatusesForAllRecords();\r\n });\r\n\r\n confirmationDialog.Show();\r\n } else {\r\n this.UpdateStatus({action, record, newStatusId: nextLifeStatus.Id});\r\n }\r\n }\r\n\r\n SaveCheckList(){\r\n if (this._checkList){\r\n this._checkList.SaveCheckList();\r\n }\r\n }\r\n\r\n UpdateStatus({action, record, newStatusId, checkItems, password}: {\r\n action: ActionModel;\r\n record: RecordModel;\r\n newStatusId: number;\r\n checkItems?: ICheckItemSerializedValue[]\r\n password?: string\r\n }) {\r\n const groupEl = this._element.querySelector<HTMLDivElement>(`[data-record-id=\"${record.RecordId}\"]`);\r\n BlockUI.Block({Target: groupEl});\r\n\r\n const requestModel: IUpdateActionStatusRequestModel = {\r\n SubjectEntityId: record.EntityId,\r\n SubjectRecordId: record.RecordId,\r\n ActionsEntityId: action.ActionsEntityId,\r\n ActionRecordId: action.ActionRecordId,\r\n PreviousLifeStatusId: action.ActionLifestatusId,\r\n NewStatusId: newStatusId,\r\n Users: action.Users\r\n }\r\n\r\n if(password){\r\n requestModel.ConfirmationPassword = password;\r\n }\r\n\r\n if (checkItems && checkItems.length) {\r\n requestModel.CheckItems = checkItems;\r\n }\r\n\r\n KanbanStore.UpdateActionStatus(requestModel)\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n })\r\n .always(() =>\r\n this.LoadStatusesForAllRecords()\r\n .always(() => {\r\n BlockUI.Unblock(groupEl);\r\n })\r\n );\r\n }\r\n\r\n HeaderHeightResize() {\r\n const todoKanbanHtml = $(this._elObservable()).find('.js-todo-kanban');\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize, todoKanbanHtml[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(todoKanbanHtml[0], () => {\r\n unbindResize();\r\n window.removeEventListener(\"scroll\", this.RepositionToDoKanbanHeaderOnScroll, false)\r\n });\r\n window.addEventListener(\"scroll\", this.RepositionToDoKanbanHeaderOnScroll, false);\r\n }\r\n\r\n RepositionToDoKanbanHeaderOnScroll = () => {\r\n const kanbanContainer = $(this._elObservable()).find('.js-todo-kanban').find('.kanban-container');\r\n if (!kanbanContainer.hasClass('todo-kanban')) {\r\n window.removeEventListener(\"scroll\", this.RepositionToDoKanbanHeaderOnScroll, false);\r\n return false;\r\n }\r\n const scrollTop = $(window).scrollTop();\r\n const titleElement: HTMLDivElement = this._elObservable().querySelector(\".todo-kanban > .todo-kanban__container > .todo-kanban__titles\");\r\n const toDoKanbanContainer: HTMLDivElement = this._elObservable().querySelector(\".todo-kanban > .todo-kanban__container\");\r\n const titleElementHeight = $(titleElement).outerHeight();\r\n const boundingRect = $(this._elObservable()).find('.todo-kanban')[0].getBoundingClientRect();\r\n const positionKanbanBoardRoot = $(this._elObservable()).find('.todo-kanban').offset().top + 6;\r\n let fixedHeaderHeight: number = 0;\r\n let calculate: number = 0;\r\n\r\n toDoKanbanContainer.style.paddingTop = titleElementHeight + 'px';\r\n\r\n if (window.innerWidth > 991) {\r\n const headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n fixedHeaderHeight = headerElement ? headerElement.offsetHeight : 0;\r\n }\r\n\r\n if ((boundingRect.top) < fixedHeaderHeight) {\r\n calculate = Math.abs((positionKanbanBoardRoot - (scrollTop + fixedHeaderHeight + 3)));\r\n }\r\n\r\n if ((boundingRect.bottom - fixedHeaderHeight - titleElementHeight) <= 0) {\r\n return false;\r\n }\r\n titleElement.style.top = calculate + \"px\";\r\n }\r\n\r\n OnResize = () => {\r\n this.RepositionToDoKanbanHeaderOnScroll();\r\n };\r\n\r\n Accepts(el: HTMLElement, target: HTMLElement, source: HTMLElement) {\r\n const targetData: StepModel = ko.dataFor(target);\r\n const sourceData: StepModel = ko.dataFor(source);\r\n\r\n return this._status().Links.some(link => sourceData.Id === link.IdStepFrom && targetData.Id === link.IdStepTo);\r\n }\r\n\r\n\r\n\r\n Moves(el: HTMLElement, target: HTMLElement, source: HTMLElement) {\r\n const targetData: StepModel = ko.dataFor(target);\r\n const sourceData: StepModel = ko.dataFor(source);\r\n const record = ko.dataFor(el) as ActionModel;\r\n\r\n return !record.IsDisabled;\r\n }\r\n\r\n IsCardInvalid(el: HTMLElement) {\r\n return el.classList.contains('todo-kanban__retired-card');\r\n }\r\n\r\n OnDrag({recordId}: { recordId: number }, action: ActionModel) {\r\n this._draggingFrom({recordId, lifestatusId: action.ActionLifestatusId});\r\n }\r\n\r\n OnDragEnd() {\r\n this._draggingFrom({recordId: undefined, lifestatusId: undefined});\r\n }\r\n\r\n SelectAction(record: RecordModel) {\r\n const todoEntityId = this._todoEntityId();\r\n const parentTypeId = this.SubjectEntity === todoEntityId ? record.TypeId : 0;\r\n const typeScreen = new TypeScreen(todoEntityId, parentTypeId, false, false, null, [{Id: this._todoTypeId()}]);\r\n typeScreen\r\n .On('TYPE_SELECTED', this, eventArgs => this.NewRecord(record, eventArgs.data))\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier($(this._elObservable())).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n typeScreen.Show();\r\n }\r\n\r\n private async NewRecord(record: RecordModel, newRecordSettings: any, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n const actionEntityId = newRecordSettings.EntityId;\r\n const typeId = newRecordSettings.TypeId;\r\n const kindId = newRecordSettings.KindId;\r\n const exampleRecordId = newRecordSettings.ExampleRecordId;\r\n\r\n if (actionEntityId) {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: actionEntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n AliasSuffix: aliasSuffix\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier();\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n let editScreen = screen as EditScreen;\r\n\r\n editScreen.On('LINK_LIST_DATA_LOADED', this, eventArgs => {\r\n if (dataMode === DataModes.Default) {\r\n let linkListControl = eventArgs.data.Control as LinkList;\r\n const relationModel = _.find(linkListControl.DataModel().Entities(), relatedEntity => {\r\n return relatedEntity.EntityId === record.EntityId;\r\n });\r\n\r\n if (relationModel) {\r\n let newRelation = new NewRelationModel();\r\n newRelation.Name = record.LinkName;\r\n newRelation.Id = record.RecordId;\r\n newRelation.IsMain = true;\r\n newRelation.TypeName = record.TypeName;\r\n linkListControl.AddRecord(record.RecordId, relationModel, newRelation);\r\n }\r\n }\r\n\r\n });\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.SaveImmediately = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n editScreen.On('RECORD_SAVED', this, () => {\r\n const groupEl = this._element.querySelector<HTMLDivElement>(`[data-record-id=\"${record.RecordId}\"]`);\r\n BlockUI.Block({Target: groupEl});\r\n \r\n this.LoadStatusesForAllRecords()\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(groupEl);\r\n });\r\n });\r\n editScreen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || typeId;\r\n this.NewRecord(record, {\r\n EntityId: actionEntityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n editScreen.ShowInModal();\r\n });\r\n } else {\r\n var notifier = new Notifier($(this._elObservable()));\r\n notifier.Failed(NOTIFICATIONS.GRID_SUBJECT_NOT_FOUND);\r\n }\r\n }\r\n\r\n private GetEditScreenType(): ScreenTypes {\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n private GetScreenTypeFromProperty(propertyName: string): ScreenTypes {\r\n const screenTypeName = this._generalProperties.GetPropertyValue(propertyName);\r\n if (screenTypeName) {\r\n if (screenTypeName.Value === 'ConsultScreen') {\r\n return ScreenTypes.ConsultScreen;\r\n }\r\n\r\n if (screenTypeName.Value === 'EditScreen') {\r\n return ScreenTypes.EditScreen;\r\n }\r\n }\r\n\r\n return ScreenTypes.EditScreen;\r\n }\r\n\r\n OpenActionRecordScreen(record: RecordModel, action: ActionModel, onlyEditScreen: boolean) {\r\n const followUpRecord = new FollowUpRecordModel();\r\n followUpRecord.Actions = record.Actions;\r\n this.OpenScreen(\r\n action.ActionsEntityId,\r\n action.ActionTypeId,\r\n action.ActionRecordId,\r\n followUpRecord,\r\n DataModes.Default,\r\n record,\r\n onlyEditScreen ? ScreenTypes.EditScreen : this.GetScreenTypeFromProperty(PROPERTIES.ACTION_SCREEN_TYPE)\r\n );\r\n }\r\n\r\n private async OpenScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n screenType: ScreenTypes,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n\r\n if (screenType === ScreenTypes.EditScreen) {\r\n LockManager.Instance.TryLock(entityId, recordId)\r\n .then(() => {\r\n screenManager.IsTypeTransformationRequired(entityId, recordId)\r\n .then((result: any) => {\r\n if (result) {\r\n const typeScreen = new TypeScreen(entityId, recordTypeId, true, false);\r\n\r\n typeScreen.On(\"TYPE_SELECTED\",\r\n this,\r\n (eventArgs) => {\r\n UserVarsManager.Instance.RemoveFromRecent(recordId, entityId, recordTypeId);\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const typeName = eventArgs.data.TypeName;\r\n\r\n UserVarsManager.Instance.AddRecent(entityId, recordId, typeId);\r\n\r\n this.ShowEditScreen(entityId, typeId, recordId, record, mode, activeCard, typeName, openMailTab)\r\n });\r\n\r\n typeScreen.Show();\r\n } else {\r\n this.ShowEditScreen(entityId, recordTypeId, recordId, record, mode, activeCard, null, openMailTab)\r\n }\r\n });\r\n })\r\n .fail(() => BlockUI.Unblock());\r\n } else if (screenType === ScreenTypes.ConsultScreen) {\r\n screenManager.GetScreenByScreenType(\r\n entityId,\r\n screenType,\r\n recordId\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n }\r\n }\r\n\r\n private async ShowEditScreen(\r\n entityId: number,\r\n recordTypeId: number,\r\n recordId: number,\r\n record: FollowUpRecordModel,\r\n mode: DataModes,\r\n activeCard: RecordModel,\r\n typeName: string = null,\r\n openMailTab?: boolean\r\n ) {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n BlockUI.Block();\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n TableTypeName: typeName,\r\n RecordId: recordId,\r\n DataMode: mode\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === entityId && eventArgs.data.RecordId === recordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE',\r\n this,\r\n () => {\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On('RECORD_SAVED',\r\n this,\r\n () => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_SAVED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n });\r\n\r\n screen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n const editScreen = screen as EditScreen;\r\n editScreen.Close();\r\n\r\n LockManager.Instance.ReleaseLock(entityId, recordId);\r\n this.LoadStatuses();\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || recordTypeId;\r\n this.NewRecord(activeCard, {\r\n EntityId: entityId,\r\n TypeId: copyTableType,\r\n ExampleRecordId: eventArgs.data.recordId\r\n }, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n const followUpControl = screen.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n\r\n if (followUpControl) {\r\n followUpControl.SetRecord(record);\r\n\r\n screen.On(\"FOLLOWUP_RECORD\",\r\n this,\r\n (eventArgs) => {\r\n screen.Close();\r\n\r\n const followUpRecordModel = followUpControl.GetRecord();\r\n const currentLifestatus = followUpRecordModel ? followUpRecordModel.CurrentLifeStatus : null;\r\n\r\n BlockUI.Block();\r\n if (followUpRecordModel && (followUpRecordModel.LifeStatusSort === LIFE_STATUS_GROUPS.RETIRED\r\n || followUpRecordModel.LifeStatusNoActionNode\r\n || (currentLifestatus\r\n && (currentLifestatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE\r\n || currentLifestatus.FollowupModeName === FollowupModes.EDIT_CURRENT)))) {\r\n BlockUI.Unblock();\r\n return;\r\n }\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: recordTypeId,\r\n RecordId: recordId,\r\n LoadAsExample: recordId > 0,\r\n DataMode: DataModes.FollowUp,\r\n SubjectLifestatusId: followUpRecordModel ? followUpRecordModel.LifeStatusId : null\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n this.EditScreenInFollowUpMode(screen);\r\n }).fail(error => {\r\n new Notifier($(this._elObservable())).Warning(error.message);\r\n });\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n if (openMailTab) {\r\n this.OpenMailTab(screen);\r\n }\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n private EditScreenInFollowUpMode(editScreen: EditScreen) {\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n editScreen.IsDataFromExample = true;\r\n editScreen.UseLinking = true;\r\n\r\n editScreen.On('FOLLOWUP',\r\n this,\r\n (eventArgs) => {\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.On(\"RECORD_SAVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadStatuses();\r\n LockManager.Instance.ReleaseAllLocks();\r\n });\r\n\r\n editScreen.On(\"RECORD_REMOVED\",\r\n this,\r\n (eventArgs) => {\r\n const notifier = new Notifier($(this._elObservable()));\r\n notifier.Success(NOTIFICATIONS.RECORD_REMOVED);\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n this.LoadStatuses();\r\n });\r\n\r\n editScreen.ShowInModal();\r\n }\r\n\r\n private OpenMailTab(screen: IScreen) {\r\n const tab = screen.GetControl<Tab>(CONTROL_TYPES.Tab);\r\n\r\n if (tab) {\r\n for (const tabPage of tab.GetSubControls() as TabPage[]) {\r\n const grid = tabPage.GetSubControls().find(control => control.GetType() === CONTROL_TYPES.Grid);\r\n if (grid && grid.GetModel().EntityId === this._status().MailEntityId) {\r\n tab.SetActiveTabPage(tabPage);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n IsDraggingCssClassApplied({\r\n recordId,\r\n lifestatusId,\r\n isForAllow\r\n }: {\r\n recordId: number;\r\n lifestatusId: number;\r\n isForAllow: boolean;\r\n }) {\r\n const draggingFrom = this._draggingFrom();\r\n\r\n if (!draggingFrom.recordId || recordId !== draggingFrom.recordId) {\r\n return false;\r\n }\r\n\r\n const isAllowed = this._status().Links.some(\r\n link => draggingFrom.lifestatusId === link.IdStepFrom && lifestatusId === link.IdStepTo\r\n );\r\n\r\n return isForAllow ? isAllowed : !isAllowed;\r\n }\r\n\r\n OnPriorityUpdateError(recordId: number) {\r\n const groupEl = this._element.querySelector<HTMLDivElement>(`[data-record-id=\"${recordId}\"]`);\r\n BlockUI.Block({Target: groupEl});\r\n \r\n this.LoadStatusesForAllRecords()\r\n .fail(error => {\r\n new Notifier().Failed(error);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(groupEl);\r\n });\r\n }\r\n\r\n OnMailClick({record, action}: { record: RecordModel, action: ActionModel }) {\r\n const followUpRecord = new FollowUpRecordModel();\r\n followUpRecord.Actions = record.Actions;\r\n this.OpenScreen(\r\n action.ActionsEntityId,\r\n action.ActionTypeId,\r\n action.ActionRecordId,\r\n followUpRecord,\r\n DataModes.Default,\r\n record,\r\n this.GetScreenTypeFromProperty(PROPERTIES.ACTION_SCREEN_TYPE),\r\n true\r\n );\r\n }\r\n\r\n OpenConsultScreen(_, data, evt) {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_CONSULT_SCREEN, {\r\n EntityId: data.record.EntityId,\r\n RecordId: data.record.RecordId,\r\n TypeId: data.record.TypeId,\r\n IsOpenInModal: true\r\n });\r\n }\r\n\r\n GetParentOrChildRecordTemplate(_TodoKanban, recordModel) {\r\n return $((ko as any).renderTemplateX(TodoParentOrChildRecordTemplate, {$_data: _TodoKanban, record: recordModel}));\r\n }\r\n\r\n async OpenRecord(_TodoKanban, RecordModel, ParentOrChildRecord){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetScreenByScreenType(\r\n _TodoKanban.SubjectEntity,\r\n ScreenTypes.ConsultScreen,\r\n ParentOrChildRecord.Id\r\n )\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: any) => {\r\n screen.ShowInModal();\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n PathRunner.Instance.GetUnit(screen.GetEntityId(), screen.IsSpecialScreenExist).LoadNewData(screen.GetRecordId());\r\n }\r\n })\r\n .fail((err) => { new Notifier().Failed(err.message); });\r\n }\r\n\r\n GetParentOrChildRecordName(nameTranslation?: string, name?: string): string {\r\n return nameTranslation ? nameTranslation : (name ? name : '-');\r\n }\r\n\r\n GetParentOrChildRecordTypeName(typeNameTranslation?: string, typeName?: string): string {\r\n return typeNameTranslation ? typeNameTranslation : typeName;\r\n }\r\n\r\n GetTitle(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return this._labels.ITSELF;\r\n }\r\n else if(IsChild) {\r\n return this._labels.CHILD;\r\n }\r\n else {\r\n return this._labels.PARENT;\r\n }\r\n }\r\n\r\n GetIcon(IsChild: boolean, IsParent: boolean) {\r\n if(IsChild && IsParent) {\r\n return 'fa-retweet';\r\n }\r\n else if(IsChild) {\r\n return 'fa-level-down';\r\n }\r\n else {\r\n return 'fa-level-up';\r\n }\r\n }\r\n\r\n private get UseKanbanSubject() {\r\n return !!this._kanbanSubjectId();\r\n }\r\n\r\n private get UseFilterByEntityRecord() {\r\n return this._screen().IsConsultScreen;\r\n }\r\n\r\n private get SubjectEntity() {\r\n return this.UseKanbanSubject\r\n ? this._kanbanSubjectId()\r\n : this._screen().GetEntityId();\r\n }\r\n\r\n private get FilterByEntityId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetEntityId()\r\n : null;\r\n }\r\n\r\n private get FilterByRecordId() {\r\n return this.UseFilterByEntityRecord\r\n ? this._screen().GetRecordId()\r\n : null;\r\n }\r\n\r\n MouseOver(typeText: string, recordModel: ParentOrChildRecordModel, evt: any){\r\n let currentEl = $(evt.currentTarget);\r\n\r\n if (Math.round(currentEl.prop('scrollWidth')) > Math.round(currentEl.outerWidth()) ){\r\n let recordName = recordModel.NameTranslation ? recordModel.NameTranslation : (recordModel.Name ? recordModel.Name : '-');\r\n let recordTypeName = recordModel.TypeNameTranslation ? recordModel.TypeNameTranslation : recordModel.TypeName;\r\n let isTypeName = (typeText === 'isTypeName');\r\n\r\n let typeNameTooltipOptions = {\r\n position: {x: 'left', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n },\r\n nameTooltipOptions = {\r\n position: {x: 'right', y: 'center'},\r\n outside: 'x',\r\n zIndex: 500001\r\n };\r\n\r\n this._tooltip = new Tooltip(evt.currentTarget,\r\n ko.unwrap(isTypeName ? recordTypeName : recordName),\r\n isTypeName ? typeNameTooltipOptions : nameTooltipOptions);\r\n this._tooltip.Show(evt.currentTarget);\r\n }\r\n }\r\n\r\n MouseOut(data, evt: any){\r\n if (this._tooltip){\r\n this._tooltip.Destroy();\r\n }\r\n }\r\n\r\n OpenEditScreen(_, data, evt) {\r\n this.OpenScreen(data.record.EntityId,\r\n data.record.TypeId,\r\n data.record.RecordId,\r\n null,\r\n DataModes.Default,\r\n data.record,\r\n this.GetEditScreenType());\r\n }\r\n\r\n AfterRenderSubject(elements: HTMLElement[]) {\r\n const subjectContainer = elements[1];\r\n const childrenCount = subjectContainer.parentElement.children.length;\r\n const requiredCount = this._recordsWithTodoActions().length;\r\n\r\n if (childrenCount === requiredCount) {\r\n BlockUI.Unblock();\r\n }\r\n }\r\n AfterRender(el: Array<HTMLElement>){\r\n this._elObservable(el[0].parentElement.parentElement.parentElement);\r\n this.ListenForStatusesLoad();\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0], () => {\r\n PubSub.unsubscribe('KANBAN_FULLSCREEN');\r\n });\r\n }\r\n\r\n GetRootToDoTemplateName(): string {\r\n return 'Core/Controls/Kanban/Templates/Todo/TodoKanban';\r\n }\r\n\r\n dispose() {\r\n this._selectedTypeSubscription.dispose();\r\n this._selectedUsersSubscription.dispose();\r\n this._showPlannedSubscription.dispose();\r\n this._viewIdSubscription.dispose();\r\n }\r\n}\r\n\r\nko.components.register('todo-kanban', {\r\n viewModel: {\r\n createViewModel: (params: TodoKanbanParams, componentInfo) =>\r\n new TodoKanban({...params, element: componentInfo.element as HTMLElement})\r\n },\r\n template: `<div class=\"js-todo-kanban__component\" data-bind=\"template: { name: GetRootToDoTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }\"></div>`\r\n});\r\n","// Module\nvar code = \"<div class=\\\"kanban-container todo-kanban\\\" data-bind=\\\"style: {'background-color': GetBackgroundColor()}\\\"> <div class=\\\"todo-kanban__container\\\"> <div class=\\\"todo-kanban__titles\\\"> <!-- ko foreach: _status().Steps --> <div class=\\\"todo-kanban__title\\\" data-bind=\\\"\\\"> <div class=\\\"todo-kanban__title-box\\\"> <!-- ko if: $parent._showTooltip --> <!--ko if: MemoTranslation || Memo --> <div class=\\\"status-description-info\\\" data-bind=\\\"tooltip: { content: MemoTranslation || Memo }\\\"> <i class=\\\"fa fa-info-circle\\\"></i> </div> <!--/ko--> <!--/ko--> <span class=\\\"todo-kanban__title-box__name\\\" data-bind=\\\"text: TranslatedName || Label,\\r\\n ellipsisTooltip: {\\r\\n content: $parent._showTooltip && !$parent._readOnly ? TranslatedName || Label : '',\\r\\n options: {\\r\\n isLineClampMode: true\\r\\n }\\r\\n }\\\"></span> <!-- tooltip: { content: $parent._showTooltip && !$parent._readOnly ? TranslatedName || Label : '' }\\\"></span>--> <!-- ko if: ActionItems && ActionItems.length > 0 --> <!-- ko if: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\" data-bind=\\\"tooltip: { content: $parent.GetActionItemsTemplate($data), addClass: 'jBox-padding-5px'}\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- ko ifnot: !$parent._readOnly && $parent._showTooltip --> <span class=\\\"actionItemsButton\\\"><i class=\\\"fa fa-list-ul\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> <div data-bind=\\\"fastForEach: _recordsWithTodoActions\\\"> <div data-bind=\\\"attr: { 'data-record-id': record.RecordId }, style: {'min-width': $parent.GetToDoKanbanGroupWidth()}\\\" class=\\\"todo-kanban__group\\\"> <div class=\\\"todo-kanban__group-header\\\" data-bind=\\\"css: {groupClosed: !record.AriaExpanded()}\\\"> <button type=\\\"button\\\" data-bind=\\\"attr: { 'data-target': '#record-' + record.RecordId,\\r\\n 'aria-expanded': record.AriaExpanded() ? 'true' : 'false' },\\r\\n css: {collapsed: !record.AriaExpanded()},\\r\\n click: record.ToggleAccordion.bind($parent, $data)\\\" class=\\\"todo-kanban__toggle-button\\\"> <i class=\\\"fa fa-chevron-down\\\"></i> </button> <!-- ko if: record.Name && record.Name.length > 0 --> <div class=\\\"todo-kanban__group-name\\\" data-bind=\\\"click: $parent.OpenConsultScreen.bind($parent, $parent), css: {'disabled': $parent._readOnly}\\\"> <!-- ko text: record.Name --> <!-- /ko --> </div> <!-- /ko --> <!-- ko ifnot: record.Name && record.Name.length > 0 --> <i class=\\\"fa fa-external-link\\\" data-bind=\\\"click: $parent.OpenConsultScreen.bind($parent, $parent), css: {'disabled': $parent._readOnly}\\\"></i> <!-- /ko --> <div class=\\\"todo-kanban__group-badge\\\"> <!-- ko text: record.LifeStatusTranslatedName || record.LifestatusName --> <!-- /ko --> </div> <div class=\\\"todo-kanban__button-container\\\"> <!-- ko if: record.ParentOrChildRecords && record.ParentOrChildRecords.length > 0 --> <div class=\\\"kanban-item_parentOrChildRecord-icon\\\"> <i class=\\\"fa fa-sitemap\\\" data-bind=\\\"tooltip: { content: $parent._showTooltip ? $parent.GetParentOrChildRecordTemplate($parent, record) : '', addClass: 'jBox-padding-5px'}\\\"></i> </div> <!-- /ko --> <span data-bind=\\\"click: $parent.OpenEditScreen.bind($parent, $parent),\\r\\n css: {'disabled': $parent._readOnly}\\\" class=\\\"todo-kanban__button-edit\\\"> <i class=\\\"fa fa-pencil\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <div class=\\\"todo-kanban__right-buttons-group-container\\\"> <div class=\\\"todo-kanban__new-button-container\\\"> <button class=\\\"todo-kanban__new-button\\\" data-bind=\\\"\\r\\n click: $parent.SelectAction.bind($parent, record),\\r\\n enable: $parent._isNewButtonEnabled\\r\\n \\\"> <i class=\\\"fa fa-plus\\\"></i><!-- ko text: $parent._labels.NEW --> <!-- /ko --> </button> <!-- ko ifnot: $parent._isTypeHierarchyCorrect --> <div class=\\\"todo-kanban__new-button-tooltip-container\\\" data-bind=\\\"\\r\\n tooltip: {\\r\\n content: $parent._showTooltip ? $parent._labels.KANBAN_TYPE_HIERARCHY_VIOLATION : '',\\r\\n position: { y: 'bottom' }\\r\\n }\\r\\n \\\"></div> <!-- /ko --> </div> </div> </div> <div data-bind=\\\"attr: { id: 'record-' + record.RecordId,\\r\\n 'aria-expanded': record.AriaExpanded() ? 'true' : 'false' },\\r\\n css: { in: record.AriaExpanded() }\\\" class=\\\"collapse\\\"> <div class=\\\"todo-kanban__columns\\\"> <!-- ko fastForEach: { data: $parent._status().Steps, as: 'step' } --> <div data-bind=\\\"\\r\\n dragula: {\\r\\n data: step.IsRetired ? [{}] : ($parent.groupedActions[step.Id] || []),\\r\\n group: 'KanbanBoard-' + $parents[1]._guid,\\r\\n afterDrop: $parents[1].AfterDrop.bind($parents[1], $parent.record ),\\r\\n accepts: $parents[1].Accepts.bind($parents[1]),\\r\\n invalid: $parents[1].IsCardInvalid.bind($parents[1]),\\r\\n onDrag: $parents[1].OnDrag.bind($parents[1], { recordId: $parent.record.RecordId }),\\r\\n onDragEnd: $parents[1].OnDragEnd.bind($parents[1]),\\r\\n moves: $parents[1].Moves.bind($parents[1]),\\r\\n disabled: $parents[1]._readOnly\\r\\n },\\r\\n css: {\\r\\n 'todo-kanban__column--retired': step.IsRetired,\\r\\n 'todo-kanban__column--allow-drag': $parents[1].IsDraggingCssClassApplied({ recordId: $parent.record.RecordId, lifestatusId: step.Id, isForAllow: true }),\\r\\n 'todo-kanban__column--forbid-drag': $parents[1].IsDraggingCssClassApplied({ recordId: $parent.record.RecordId, lifestatusId: step.Id, isForAllow: false })\\r\\n },\\r\\n attr: { 'data-text': step.Label }\\r\\n \\\" class=\\\"todo-kanban__column\\\"> <!-- ko if: step.IsRetired --> <div class=\\\"todo-kanban__retired-card\\\"></div> <!-- /ko --> <!-- ko ifnot: step.IsRetired --> <div class=\\\"kanban-item\\\"> <kanban-card params=\\\"\\r\\n entityId: ActionsEntityId,\\r\\n recordId: ActionRecordId,\\r\\n tags: Tags,\\r\\n priority: Priority,\\r\\n users: Users,\\r\\n isDisabled: IsDisabled,\\r\\n avatarThumbnails: $parents[2]._avatarThumbnails,\\r\\n priorities: $parents[2]._priorities,\\r\\n thumbnail: Thumbnail,\\r\\n mailsCount: MailsCount,\\r\\n color: Color,\\r\\n withGreyBackground: IsDisabled || IsDisabledCard,\\r\\n warnings: Warnings,\\r\\n withDateBadges: $parents[2]._withDateBadges,\\r\\n colorBar: $parents[2]._colorBar,\\r\\n memo: ReplaceActionMemoText,\\r\\n onPriorityUpdateError: $parents[2].OnPriorityUpdateError.bind($parents[2], $parents[1].record.RecordId),\\r\\n onMailClick: $parents[2].OnMailClick.bind($parents[2], { record: $parents[1].record, action: $data }),\\r\\n readOnly: $parents[2]._readOnly,\\r\\n isCalculatedViaCalcPriority: $parents[2].IsCalculatedViaCalcPriority,\\r\\n alwaysShowDeadline: $parents[2]._alwaysShowDeadline,\\r\\n hideOwner: $parents[2]._hideOwner,\\r\\n heightImage: $parents[2]._heightImage,\\r\\n isTodo: true,\\r\\n showTooltip: $parents[2]._showTooltip,\\r\\n showAlias: $parents[2]._showAlias,\\r\\n timerControl: $parents[2]._timerControl,\\r\\n activeTimer: ActiveTimer,\\r\\n newActiveTimer: NewActiveTimer,\\r\\n actionRecord: $data\\r\\n \\\"> </kanban-card> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"record_box\\\"> <!-- ko foreach: record.ParentOrChildRecords --> <div class=\\\"record_item\\\" data-bind=\\\"click: $parent.$_data.OpenRecord.bind(this, $parent.$_data, $parent.record)\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: $parent.$_data.GetIcon(IsChild, IsParent), attr: {title: $parent.$_data.GetTitle(IsChild, IsParent)}\\\"></i> <span class=\\\"typeName\\\" data-bind=\\\"event: {mouseover: $parent.$_data.MouseOver.bind($parent.$_data, 'isTypeName'),\\r\\n mouseout: $parent.$_data.MouseOut.bind($parent.$_data)}\\\"><!--ko text: $parent.$_data.GetParentOrChildRecordTypeName(TypeNameTranslation, TypeName) --><!--/ko--></span> <span class=\\\"name\\\" data-bind=\\\"event: {mouseover: $parent.$_data.MouseOver.bind($parent.$_data, 'isName'),\\r\\n mouseout: $parent.$_data.MouseOut.bind($parent.$_data)}\\\"><!--ko text: $parent.$_data.GetParentOrChildRecordName(NameTranslation, Name)--><!--/ko--></span> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {CONTROL_TYPES, DEFAULT_ICONS, RenderModes} from \"Core/Constant\";\r\nimport {KanbanStore} from 'Core/Controls/Kanban/Stores/KanbanStore';\r\nimport {TableStore} from \"Core/Common/Stores/TableStore\";\r\nimport {EntityTypeModel} from 'Core/Controls/Kanban/Models/EntityTypeModel';\r\nimport {StepModel} from 'Core/Controls/Kanban/Models/StatusModel';\r\nimport {KanbanViewModel} from 'Core/Controls/Kanban/Models/KanbanViewModel';\r\nimport {KanbanTypeViewModel} from \"Core/Controls/Kanban/Models/KanbanTypeViewModel\";\r\nimport {KanbanStep} from 'Core/Controls/Kanban/Step';\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam, IScreen} from \"Core/Screens/IScreen\";\r\nimport {BaseScreen} from \"Core/Screens/BaseScreen\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {QueryBuilder as QueryBuilderControl} from \"Core/Controls/QueryBuilder/QueryBuilder\";\r\nimport {DeleteQueryStore} from \"QueryBuilder/Stores/DeleteQueryStore\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Kanban/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/Kanban/Templates/Toolbar.html';\r\nimport DesignTemplate from 'Core/Controls/Kanban/Templates/Design.html';\r\n\r\nimport KanbanConfigJson from 'Core/Controls/Kanban/Configs/kanban-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {UserManager} from \"../../../User/UserManager\";\r\nimport * as _ from \"underscore\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\n\r\nimport {GridStore} from \"Core/Controls/Grid/Stores/GridStore\";\r\nimport {ViewModes} from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\n\r\nimport \"Core/Controls/Kanban/DefaultKanban\";\r\nimport \"Core/Controls/Kanban/TodoKanban\";\r\nimport \"Core/Controls/Kanban/KanbanCard\";\r\nimport \"Core/Components/QueryDropdowns/QueryDropdowns\";\r\nimport {CheckedUserAndGroup} from \"Core/Controls/SelectUser/SelectUser\";\r\n\r\nko.templates['Core/Controls/Kanban/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Kanban/Templates/Design'] = DesignTemplate;\r\n\r\nexport class KanbanBoard extends BaseControl {\r\n private _selectedType: KanbanTypeViewModel;\r\n private _isKanbanViewsShown: KnockoutObservable<boolean>;\r\n private _isTypesShown: KnockoutObservable<boolean>;\r\n private _noTypesLoaded: KnockoutObservable<boolean>;\r\n private _entityTypes: KnockoutObservableArray<KanbanTypeViewModel>;\r\n private _steps: KnockoutObservableArray<KanbanStep>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _searchString: KnockoutObservable<string>;\r\n private _kanbanSubjectName: KnockoutObservable<string>;\r\n private _controlId: number;\r\n private _loadStatuses: boolean;\r\n private _timerControl: Timer;\r\n private _isFullScreen: KnockoutObservable<boolean>;\r\n private _fullScreenTooltip: KnockoutObservable<string>;\r\n _screen: KnockoutObservable<IScreen>;\r\n _kanbanViews: KnockoutObservableArray<KanbanViewModel>;\r\n _isAddingRecordAllowed: KnockoutObservable<boolean>;\r\n _selectedTypeObservable: KnockoutObservable<KanbanTypeViewModel>;\r\n _selectedUsers: KnockoutObservableArray<number>;\r\n _showPlanned: KnockoutObservable<boolean>;\r\n _showTypeError: KnockoutObservable<boolean>;\r\n _isTodoToggleShown: KnockoutObservable<boolean>;\r\n _isTodoSelected: KnockoutObservable<boolean>;\r\n _chosenKanbanView: KnockoutObservable<KanbanViewModel>;\r\n _isEditingAllowed: KnockoutComputed<boolean>;\r\n _isDeletingAllowed: KnockoutComputed<boolean>;\r\n _viewId: KnockoutComputed<number>;\r\n _labels = LABELS;\r\n\r\n _designCardSecondaryInfoTemplate = `\r\n <div class=\"kanban-item__secondary-info-item\">\r\n <div class=\"transition kanban-item__action\">Action Name</div>\r\n <div class=\"kanban-item__date-badge kanban-item__date-badge--deadline\">\r\n <i class=\"fa fa-clock-o\"></i>\r\n Jun 30\r\n </div>\r\n </div>\r\n `;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, KanbanConfigJson);\r\n\r\n this._selectedType = null;\r\n this._entityTypes = ko.observableArray([]);\r\n this._steps = ko.observableArray([]);\r\n this._searchTerm = ko.observable(null);\r\n this._searchString = ko.observable(null);\r\n this._screen = ko.observable();\r\n this._kanbanViews = ko.observableArray([]);\r\n this._isAddingRecordAllowed = ko.observable(true);\r\n this._selectedTypeObservable = ko.observable(null);\r\n this._selectedUsers = ko.observableArray([]);\r\n this._showPlanned = ko.observable(null);\r\n this._isTodoToggleShown = ko.observable(true);\r\n this._isKanbanViewsShown = ko.observable(true);\r\n this._isTypesShown = ko.observable(true);\r\n this._noTypesLoaded = ko.observable(false);\r\n this._showTypeError = ko.observable(false);\r\n this._kanbanSubjectName = ko.observable(null);\r\n\r\n this._loadStatuses = false;\r\n\r\n this._controlId = params.Model.Id;\r\n\r\n this._isFullScreen = ko.observable(false);\r\n\r\n this._fullScreenTooltip = ko.observable(LABELS.MAXIMIZE);\r\n\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.Kanban));\r\n const renderMode = this._renderMode();\r\n\r\n const isDesignMode = renderMode === RenderModes.Design;\r\n if (isDesignMode) {\r\n this.InitForDesignMode();\r\n }\r\n\r\n if (this.IsRuntimeMode()) {\r\n this.InitForRuntimeMode();\r\n }\r\n }\r\n\r\n private InitForDesignMode() {\r\n const stepNames = ['To Do', 'In Progress', 'Done'];\r\n\r\n const kanbanSteps = stepNames\r\n .map(stepName => new StepModel({Label: stepName}))\r\n .map(stepModel => new KanbanStep(stepModel, []));\r\n\r\n this._steps(kanbanSteps);\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private InitForRuntimeMode() {\r\n const screen = this._form.GetScreen();\r\n\r\n this._screen(screen);\r\n\r\n if (this._form.GetScreen().IsConsultScreen) {\r\n this._isTodoSelected = ko.observable(true);\r\n } else {\r\n this._isTodoSelected = ko.observable(UserVarsManager.Instance.GetKanbanTodoSelected(this.GetControlId()) || false);\r\n }\r\n\r\n this._isKanbanViewsShown(this._isTodoSelected() || !this._form.GetScreen().IsConsultScreen);\r\n\r\n this._isTodoSelected.subscribe(isTodoSelected => {\r\n this._isKanbanViewsShown(this._isTodoSelected() || !this._form.GetScreen().IsConsultScreen);\r\n\r\n if(this._form.GetScreen() && !this._selectedTypeObservable()){\r\n this.LoadTypes();\r\n }\r\n\r\n if(isTodoSelected){\r\n this._loadStatuses = true;\r\n }\r\n\r\n UserVarsManager.Instance.SetKanbanTodoSelected(this.GetControlId(), isTodoSelected);\r\n\r\n setTimeout(()=>{\r\n PubSub.publish('KANBAN_FULLSCREEN', this._isFullScreen());\r\n }, 500);\r\n });\r\n\r\n this._chosenKanbanView = ko.observable();\r\n this._chosenKanbanView.subscribe(chosenKanbanView => {\r\n this.SetKanbanView(chosenKanbanView.Id);\r\n });\r\n\r\n this._isEditingAllowed = ko.pureComputed(() => {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n return chosenKanbanView && chosenKanbanView.IsEditingAllowed;\r\n });\r\n this._isDeletingAllowed = ko.pureComputed(() => {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n return chosenKanbanView && chosenKanbanView.IsDeletingAllowed;\r\n });\r\n this._viewId = ko.pureComputed(() => {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n return chosenKanbanView ? chosenKanbanView.Id : null;\r\n }).extend({notify: 'always'});\r\n\r\n const timerControl = this.GetSubControls() && _.find(this.GetSubControls(), control => control.GetControlTypeName() === CONTROL_TYPES.Timer\r\n && control instanceof Timer);\r\n this._timerControl = timerControl && timerControl as Timer;\r\n\r\n screen.On('UsersSelectionChanged', this, (eventArgs) => {\r\n\r\n const groupIds = _.filter(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.GroupId), groupId => groupId !== null) as number[];\r\n const userIds = _.flatten(_.map(eventArgs.data?.SelectedUsersAndGroups, (item: CheckedUserAndGroup) => item.UserIds));\r\n const combinedIds = groupIds.concat(userIds);\r\n const uniqueIds = _.uniq(combinedIds);\r\n\r\n this._selectedUsers(uniqueIds);\r\n this._showPlanned(eventArgs.data.ShowPlanned);\r\n\r\n if (this._selectedUsers().length === 0) {\r\n this._selectedUsers.push(UserManager.Instance.CurrentUser.Id);\r\n }\r\n });\r\n }\r\n\r\n private LoadTypes() {\r\n KanbanStore.GetTypes({\r\n EntityId: this.SubjectEntity,\r\n ScreenSubjectTypeId: this.Screen.GetTableTypeId(),\r\n ShowTypeHierarchy: !this.UseKanbanSubject && this.Screen.IsConsultScreen\r\n })\r\n .then(data => {\r\n this._entityTypes(this.MapToKanbanTypeViewModels(data));\r\n\r\n const selectedType = this.GetSelectedType();\r\n\r\n if (selectedType) {\r\n this.SelectType(selectedType);\r\n }\r\n else if (!this._isTodoSelected()) {\r\n this._showTypeError(true);\r\n }\r\n else {\r\n this._noTypesLoaded(true);\r\n }\r\n });\r\n }\r\n\r\n private LoadViewList({withBlockUI}: { withBlockUI?: boolean } = {}) {\r\n const queryDropdowns = this._el.querySelector<HTMLElement>('query-dropdowns');\r\n\r\n if (withBlockUI) {\r\n BlockUI.Block({Target: queryDropdowns});\r\n }\r\n\r\n KanbanStore.GetViewList({SubjectEntityId: this.QueryRootEntityId})\r\n .then(data => {\r\n this._isAddingRecordAllowed(data.IsAddingRecordAllowed);\r\n\r\n const kanbanViews = [new KanbanViewModel(0, LABELS.DEFAULT_VIEW), ...data.KanbanViews];\r\n\r\n this._kanbanViews(kanbanViews);\r\n\r\n const kanbanViewId = this.GetKanbanView();\r\n\r\n this._chosenKanbanView(\r\n kanbanViews.find(kanbanView => kanbanView.Id === kanbanViewId) || kanbanViews[0]\r\n );\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(queryDropdowns);\r\n });\r\n }\r\n\r\n LoadKanbanSubjectInfo() {\r\n TableStore.Get({TableId: this.Model.KanbanSubjectId})\r\n .then((tableModel: any) => {\r\n this._kanbanSubjectName(tableModel.Name);\r\n this.LoadTypes();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n IsRuntimeMode() {\r\n const renderMode = this._renderMode();\r\n return renderMode !== RenderModes.Design && renderMode !== RenderModes.ToolBar;\r\n }\r\n\r\n SelectType(kanbanTypeViewModel: KanbanTypeViewModel) {\r\n if (this._selectedType) {\r\n this._selectedType.IsSelected(false);\r\n }\r\n this._selectedType = kanbanTypeViewModel;\r\n this._selectedType.IsSelected(true);\r\n this._selectedTypeObservable(this._selectedType);\r\n\r\n this.SetKanbanLastType();\r\n }\r\n\r\n get EntityTypes() {\r\n return this._entityTypes;\r\n }\r\n\r\n private get UseKanbanSubject() {\r\n return !!this.Model.KanbanSubjectId;\r\n }\r\n\r\n private get SubjectEntity() {\r\n return this.UseKanbanSubject\r\n ? this.Model.KanbanSubjectId\r\n : this.Screen.GetEntityId();\r\n }\r\n\r\n private get QueryRootEntityId() {\r\n return this.Screen.IsConsultScreen\r\n ? this.Model.TodoEntityId\r\n : this.SubjectEntity;\r\n }\r\n\r\n Search() {\r\n this._searchString(this._searchTerm());\r\n }\r\n\r\n ClearSearch() {\r\n this._searchTerm(null);\r\n this.Search();\r\n }\r\n ChangeFullScreen(): void {\r\n this._isFullScreen(!this._isFullScreen());\r\n setTimeout(()=>{\r\n PubSub.publish('KANBAN_FULLSCREEN', this._isFullScreen());\r\n }, 500);\r\n\r\n this._fullScreenTooltip(this._isFullScreen() ? LABELS.MINIMIZE : LABELS.MAXIMIZE);\r\n }\r\n\r\n NewKanbanView() {\r\n BlockUI.Block();\r\n\r\n KanbanStore.GetDefaultKanbanViewMetaData()\r\n .then(async(data) =>{\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((editScreen: BaseScreen) => {\r\n editScreen.ShowInModal();\r\n\r\n return GridStore.GetDefaultTableView({\r\n ControlId: 0,\r\n ViewMode: ViewModes.KanbanQuery,\r\n SubjectEntityId: this.QueryRootEntityId\r\n })\r\n .then(data => {\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectEntityId(this.QueryRootEntityId);\r\n queryBuilderControl.SetSubjectRecordId(this.Screen.GetRecordId());\r\n queryBuilderControl.SetQueryTypeName(ViewModes.KanbanQuery);\r\n queryBuilderControl.SetFilterByOwners(true);\r\n queryBuilderControl.InitQuery(data);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SetKanbanView(eventArgs.data.RecordId);\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n }\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n });\r\n });\r\n }\r\n\r\n EditKanbanView() {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n const kanbanViewId = chosenKanbanView && chosenKanbanView.Id;\r\n\r\n if (!kanbanViewId) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n KanbanStore.GetDefaultKanbanViewMetaData()\r\n .then(data => {\r\n LockManager.Instance.TryLock(data.TableId, kanbanViewId)\r\n .then(async () => {\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: kanbanViewId\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((editScreen: BaseScreen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === data.TableId && eventArgs.data.RecordId === kanbanViewId) {\r\n editScreen.Close();\r\n }\r\n });\r\n editScreen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(data.TableId, kanbanViewId);\r\n });\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, () => {\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetQueryTypeName(ViewModes.KanbanQuery);\r\n queryBuilderControl.SetSubjectRecordId(this.Screen.GetRecordId());\r\n queryBuilderControl.SetFilterByOwners(true);\r\n\r\n editScreen.On('RECORD_SAVED', this, () => {\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n CopyKanbanView() {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n const kanbanViewId = chosenKanbanView && chosenKanbanView.Id;\r\n\r\n if (!kanbanViewId) {\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n KanbanStore.GetDefaultKanbanViewMetaData()\r\n .then(async data => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: kanbanViewId,\r\n LoadAsExample: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((editScreen: EditScreen) => {\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this.Screen.GetRecordId());\r\n queryBuilderControl.SetQueryTypeName(ViewModes.KanbanQuery);\r\n queryBuilderControl.SetFilterByOwners(true);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SetKanbanView(eventArgs.data.RecordId);\r\n\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n DeleteKanbanView() {\r\n const chosenKanbanView = this._chosenKanbanView();\r\n const kanbanViewId = chosenKanbanView && chosenKanbanView.Id;\r\n\r\n if (!kanbanViewId) {\r\n return;\r\n }\r\n\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n DeleteQueryStore.Delete({Id: kanbanViewId})\r\n .then(() => {\r\n this.LoadViewList({withBlockUI: true});\r\n });\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n private MapToKanbanTypeViewModels(models: EntityTypeModel[]) {\r\n return models.map(model => this.MapToKanbanTypeViewModel(model));\r\n }\r\n\r\n private MapToKanbanTypeViewModel(model: EntityTypeModel) {\r\n if (!model) {\r\n return null;\r\n }\r\n\r\n const kanbanTypeViewModel = new KanbanTypeViewModel(\r\n model.K_Type,\r\n model.Name,\r\n model.TranslatedName,\r\n model.HasFlowFolder,\r\n model.ShowTypeHierarchy,\r\n model.ParentTypeModels);\r\n\r\n return kanbanTypeViewModel;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n const onRender = () => {\r\n if (this.UseKanbanSubject) {\r\n this.LoadKanbanSubjectInfo();\r\n } else {\r\n this.LoadTypes();\r\n }\r\n\r\n this.LoadViewList();\r\n };\r\n\r\n if (this._isRendered()) {\r\n onRender();\r\n } else {\r\n this._isRendered.subscribe(onRender);\r\n }\r\n }\r\n\r\n private GetSelectedType() {\r\n const lastType = this.GetKanbanLastType();\r\n const selectedType = _.find(this._entityTypes(), type => type.K_Type === lastType) || _.first(this._entityTypes());\r\n\r\n const isScreenEntitySubjectEntity = this.Screen.GetEntityId() === this.SubjectEntity;\r\n if (!isScreenEntitySubjectEntity || !this.Screen.IsConsultScreen) {\r\n return selectedType;\r\n }\r\n\r\n const screenEntityType = this.Screen.GetTableTypeId();\r\n const screenEntityTypeIsOnKanban = _.any(this._entityTypes(), type => type.K_Type === screenEntityType);\r\n\r\n const screenEntitySubTypeIsOnKanban = _.any(this._entityTypes(), type => type.K_Type !== screenEntityType && _.contains(type.ParentTypeModels.map(m => m.K_Type), screenEntityType));\r\n\r\n if (screenEntitySubTypeIsOnKanban) {\r\n return _.find(this._entityTypes(), type => type.K_Type !== screenEntityType && _.contains(type.ParentTypeModels.map(m => m.K_Type), screenEntityType));\r\n }\r\n else if (screenEntityTypeIsOnKanban) {\r\n return _.find(this._entityTypes(), type => type.K_Type === screenEntityType);\r\n }\r\n\r\n return selectedType;\r\n }\r\n\r\n private GetKanbanLastType() {\r\n return UserVarsManager.Instance.GetKanbanLastType(this.GetControlId());\r\n }\r\n\r\n private SetKanbanLastType() {\r\n UserVarsManager.Instance.SetKanbanLastType(this.GetControlId(), this._selectedType.K_Type);\r\n }\r\n\r\n private GetKanbanView() {\r\n return UserVarsManager.Instance.GetKanbanView(this.GetControlId());\r\n }\r\n\r\n private SetKanbanView(kanbanViewId: number) {\r\n UserVarsManager.Instance.SetKanbanView(this.GetControlId(), kanbanViewId);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-compress\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <div class=\\\"clearfix\\\"> <div class=\\\"kanbard-board-root\\\"> <div class=\\\"action-type-row\\\"> <div class=\\\"action-types clearfix\\\"> <label class=\\\"panel-title btn green\\\">Incident</label> <label class=\\\"panel-title btn green\\\">Problem</label> <label class=\\\"panel-title btn green\\\">Case</label> </div> </div> </div> </div> <div class=\\\"clearfix\\\"></div> <div class=\\\"board-root clearfix\\\"> <!-- ko foreach: _steps --> <div class=\\\"kanban-column clearfix\\\"> <span class=\\\"panel-title\\\"> <span data-bind=\\\"text: Label\\\"></span> </span> <div class=\\\"kanban-container\\\"> <div class=\\\"kanban-item\\\"> <kanban-card params=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\ttags: [{ FullName: 'Tag1' }, { FullName: 'Tag2' }, { FullName: 'Tag3' }],\\r\\n\\t\\t\\t\\t\\t\\t\\tpriority: { Id: 1, Name: 'Medium', Color: '#ea7d24' },\\r\\n\\t\\t\\t\\t\\t\\t\\tusers: [{ UserName: 'Contact name', IsOwner: true }],\\r\\n\\t\\t\\t\\t\\t\\t\\tpriorities: ko.observable([{ Id: 1, Name: 'Medium', Color: '#ea7d24' }]),\\r\\n\\t\\t\\t\\t\\t\\t\\tnameTemplate: 'Case name',\\r\\n\\t\\t\\t\\t\\t\\t\\tsecondaryInfoTemplate: $parent._designCardSecondaryInfoTemplate,\\r\\n\\t\\t\\t\\t\\t\\t\\tisDesign: true\\r\\n\\t\\t\\t\\t\\t\\t\\\"> </kanban-card> </div> </div> </div> <!-- /ko --> </div> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_subControls().length --> <div class=\\\"group-control-placeholder\\\"><!--ko text: _labels.CONTROLS --><!-- /ko --></div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _subControls,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $root.AfterDropControl.bind($root) }\\\" subControls class=\\\"tab-drop-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class AutolinkModel {\r\n\t@deserialize\r\n\tLeftEntityId: number;\r\n\r\n\t@deserialize\r\n\tRightEntityId: number;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class AutoLinkedRecordModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tEntityRecordId : number;\r\n\r\n\tconstructor(partial?: Partial<AutoLinkedRecordModel>) {\r\n\t\tif (partial) {\r\n\t\t\tthis.RecordId = partial.RecordId;\r\n\t\t\tthis.EntityId = partial.EntityId;\r\n\t\t\tthis.Name = partial.Name;\r\n\t\t\tthis.NameTranslation = partial.NameTranslation\r\n\t\t\tthis.EntityRecordId = partial.EntityRecordId;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic Create(recordId: number, entityId: number, name: string, nameTranslation: string, entityRecordId: number) {\r\n\t\treturn new AutoLinkedRecordModel({\r\n\t\t\tRecordId: recordId,\r\n\t\t\tEntityId: entityId,\r\n\t\t\tName: name,\r\n\t\t\tNameTranslation: nameTranslation,\r\n\t\t\tEntityRecordId: entityRecordId\r\n\t\t});\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport { AutolinkModel } from \"Core/Controls/LinkList/Models/AutoLinkModel\";\r\nimport { AutoLinkedRecordModel } from \"Core/Controls/LinkList/Models/AutoLinkedRecordModel\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\n\r\nexport interface IRelationRecord {\r\n\tId: number;\r\n\tKSeq: number;\r\n\tLevel: number;\r\n\tIsMain: boolean;\r\n\tName: string;\r\n\tNameTranslation: string;\r\n TypeName: string;\r\n TypeTranslatedName: string;\r\n\tTypeId: number;\r\n\tIsRecordOwner: boolean;\r\n\tUserAllowance: number;\r\n}\r\n\r\n\r\nexport interface ILinkType {\r\n\tId: number;\r\n\tName: string;\r\n\tInstancingMaximum: number;\r\n}\r\n\r\n\r\nexport class LinkType {\r\n\tconstructor(LinkType?: ILinkType) {\r\n\t\tif (LinkType) {\r\n\r\n\t\t\tthis.Id = LinkType.Id;\r\n\t\t\tthis.Name = LinkType.Name;\r\n\t\t\tthis.InstancingMaximum = LinkType.InstancingMaximum;\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tInstancingMaximum: number;\r\n\r\n}\r\n\r\nexport class RelationRecord {\r\n\tconstructor(record?: IRelationRecord) {\r\n\t\tif (record) {\r\n\t\t\tthis.Id = record.Id;\r\n\t\t\tthis.KSeq = record.KSeq;\r\n\t\t\tthis.Level = record.Level;\r\n\t\t\tthis.IsMain = record.IsMain;\r\n\t\t\tthis.Name = record.Name;\r\n\t\t\tthis.NameTranslation = record.NameTranslation;\r\n this.TypeName = record.TypeName;\r\n this.TypeTranslatedName = record.TypeTranslatedName;\r\n\t\t\tthis.TypeId = record.TypeId;\r\n\t\t\tthis.IsRecordOwner = record.IsRecordOwner;\r\n\t\t\tthis.UserAllowance = record.UserAllowance;\r\n\t\t}\r\n\t\tthis.IsNew = false;\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tKSeq: number;\r\n\r\n\t@deserialize\r\n\tLevel: number;\r\n\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tIsNew: boolean;\r\n\r\n\t@deserialize\r\n\tIsRecordOwner: boolean;\r\n\r\n\t@deserialize\r\n UserAllowance: number;\r\n}\r\n\r\nexport class EntityRelations {\r\n\tconstructor() {\r\n\t\tthis.Records = [];\r\n\t\tthis.AutoLinks = [];\r\n\t\tthis.AutoLinkedRecords = [];\r\n\t\tthis.LinkTypes = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTableIcon: string;\r\n\r\n\t@deserialize\r\n\tTableIconType: string;\r\n\r\n\t@deserialize\r\n\tTableImage: string;\r\n\r\n\t@deserialize\r\n\tHasRecords: boolean;\r\n\r\n\t@deserialize\r\n\tHasFields: boolean;\r\n\r\n\t@deserialize\r\n\tHasSequence: boolean;\r\n\r\n\t@deserializeAs(AutolinkModel)\r\n\tAutoLinks: Array<AutolinkModel>;\r\n\r\n\t@deserializeAs(RelationRecord)\r\n\tRecords: Array<RelationRecord>;\r\n\r\n\t@deserializeAs(LinkType)\r\n\tLinkTypes: Array<LinkType>;\r\n\r\n\t@deserializeAs(AutoLinkedRecordModel)\r\n\tAutoLinkedRecords: Array<AutoLinkedRecordModel>;\r\n}\r\n\r\nexport class LinkListRelationsModel {\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n\t@deserialize\r\n\tMainEntityId: number;\r\n\r\n\t@deserialize\r\n\tSingleMode: boolean;\r\n\r\n\tErrorMessage: string;\r\n\r\n\tWarnings: string[];\r\n\r\n\t@deserializeAs(EntityRelations)\r\n\tEntities: Array<EntityRelations>;\r\n\r\n\t@deserializeAs(ActionSubjectRecordModel)\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n}","import * as _ from'underscore';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LinkListRelationsModel} from 'Core/Controls/LinkList/Models/LinklistRelationsModel';\r\n\r\nexport interface IGetLinkListRelationsRequestModel {\r\n\tControlId: number;\r\n\tRecordId?: number;\r\n\tEntityId?: number;\r\n\tSubjectEntityId?: number;\r\n SubjectRecordId?: number;\r\n SubjectLifeStatusId?: number;\r\n\tWithoutRelations: boolean;\r\n\tCheckOneParent: boolean;\r\n\tTableTypeId: number;\r\n};\r\n\r\nexport class LinkListRelationsStore {\r\n\tstatic GetLinkedRecords(params: IGetLinkListRelationsRequestModel): P.Promise<LinkListRelationsModel> {\r\n\t\tvar deferredResult = P.defer<LinkListRelationsModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINKLIST.GET_LINKLIST_RELATIONS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): LinkListRelationsModel {\r\n\t\tvar model = GenericDeserialize<LinkListRelationsModel>(jsonObject.ResultObject, LinkListRelationsModel);\r\n\t\tif (jsonObject.Warnings) {\r\n\t\t\tmodel.Warnings = jsonObject.Warnings;\r\n\t\t}\r\n\t\treturn model;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {USER_ALLOWANCE} from 'Core/Constants/UserAllowance';\r\nimport {SECURITY_LEVELS} from 'Core/Constants/SecurityLevels';\r\nimport {SYSTEM_TABLE_NAMES} from 'Core/Constant'\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {\r\n LinkListRelationsModel,\r\n IRelationRecord,\r\n EntityRelations\r\n} from 'Core/Controls/LinkList/Models/LinklistRelationsModel';\r\nimport {AutolinkModel} from \"Core/Controls/LinkList/Models/AutoLinkModel\";\r\nimport {AutoLinkedRecordModel} from \"Core/Controls/LinkList/Models/AutoLinkedRecordModel\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\nimport UsersNormalModeTemplate from '../Templates/UsersNormalMode.html';\r\nimport UsersSingleModeTemplate from '../Templates/UsersSingleMode.html';\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class RelationRecordViewModel {\r\n constructor(record?: IRelationRecord) {\r\n this.IsMain = ko.observable(false);\r\n if (record) {\r\n this.Id = record.Id;\r\n this.Level = record.Level;\r\n this.IsMain(record.IsMain);\r\n this.Name = record.Name;\r\n this.NameTranslation = record.NameTranslation;\r\n this.TypeName = record.TypeName;\r\n this.TypeTranslatedName = record.TypeTranslatedName;\r\n this.TypeId = record.TypeId;\r\n this.IsRecordOwner = record.IsRecordOwner;\r\n this.UserAllowance = record.UserAllowance;\r\n this.KSeq = record.KSeq;\r\n }\r\n\r\n this.Guid = Guid.NewGuid();\r\n this.IsNew = false;\r\n }\r\n\r\n Id: number;\r\n Level: number;\r\n IsMain: KnockoutObservable<boolean>;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeName: string;\r\n TypeTranslatedName: string;\r\n TypeId: number;\r\n IsNew: boolean;\r\n IsRecordOwner: boolean;\r\n UserAllowance: number;\r\n KSeq: number;\r\n Guid: string;\r\n IsNewRecord: boolean;\r\n\r\n GetName(): string {\r\n return this.NameTranslation ? this.NameTranslation : this.Name;\r\n }\r\n\r\n GetTypeName(): string {\r\n return this.TypeTranslatedName ? this.TypeTranslatedName : this.TypeName ? this.TypeName : '-';\r\n }\r\n @enumerable get IsShowPlanner(): boolean {\r\n return UserManager.Instance.CurrentUser.Id === this.Id && this.IsRecordOwner && this.PlanningAllowed;\r\n }\r\n\r\n\r\n @enumerable get PlanningAllowed(): boolean {\r\n return USER_ALLOWANCE.HasValue(USER_ALLOWANCE.PLANNING, this.UserAllowance);\r\n }\r\n\r\n @enumerable get Shared(): boolean {\r\n return (SECURITY_LEVELS.SHARED & this.Level) === SECURITY_LEVELS.SHARED;\r\n }\r\n\r\n @enumerable get SharingReady() {\r\n return (SECURITY_LEVELS.SHARING_READY & this.Level) === SECURITY_LEVELS.SHARING_READY;\r\n }\r\n\r\n @enumerable\r\n get Planner(): boolean {\r\n return (SECURITY_LEVELS.PLANNER & this.Level) === SECURITY_LEVELS.PLANNER;\r\n }\r\n\r\n @enumerable get PlannerTooltip(): string {\r\n return this.Planner\r\n ? LABELS.OWNER_IS_PLANNER\r\n : LABELS.OWNER_IS_NOT_PLANNER;\r\n }\r\n}\r\n\r\nexport class EntityRelationsViewModel {\r\n public _isValidEntity: KnockoutObservable<boolean>\r\n constructor(model: EntityRelations) {\r\n this.EntityId = model.EntityId;\r\n this.EntityName = model.EntityName;\r\n this.EntityTranslatedName = model.EntityTranslatedName == null ? model.EntityName : model.EntityTranslatedName;\r\n this.TableIcon = model.TableIcon;\r\n this.TableIconType = model.TableIconType;\r\n this.HasRecords = model.HasRecords;\r\n this.HasFields = model.HasFields;\r\n this.HasSequence = model.HasSequence;\r\n this.NoFieldsMessage = LABELS.TABLE_TEXT_NON_HAS_FIELDS;\r\n this._isValidEntity = ko.observable(true);\r\n\r\n const records = model.Records.map(record => new RelationRecordViewModel(record))\r\n .sort((left, right) => {\r\n return right.IsRecordOwner ? 1 : -1\r\n });\r\n\r\n this.Records = ko.observableArray(records);\r\n this.AutoLinks = model.AutoLinks;\r\n this.AutoLinkedRecords = ko.observableArray(model.AutoLinkedRecords);\r\n\r\n }\r\n\r\n EntityId: number;\r\n\r\n EntityName: string;\r\n\r\n EntityTranslatedName: string;\r\n\r\n TableIcon: string;\r\n\r\n TableIconType: string;\r\n\r\n TableImage: string;\r\n\r\n HasRecords: boolean;\r\n\r\n HasFields: boolean;\r\n\r\n NoFieldsMessage: string;\r\n\r\n HasSequence: boolean;\r\n\r\n Records: KnockoutObservableArray<RelationRecordViewModel>;\r\n AutoLinks: Array<AutolinkModel>;\r\n AutoLinkedRecords: KnockoutObservableArray<AutoLinkedRecordModel>;\r\n}\r\n\r\nexport class UserEntityRelationsViewModel extends EntityRelationsViewModel {\r\n RecordOwner: KnockoutComputed<RelationRecordViewModel>;\r\n SharedUsers: KnockoutComputed<RelationRecordViewModel[]>;\r\n\r\n SingleMode: boolean;\r\n\r\n constructor(model: EntityRelations, singleMode: boolean) {\r\n super(model);\r\n\r\n this.SingleMode = singleMode;\r\n\r\n this.RecordOwner = ko.computed(() => _.find(this.Records(), record => record.IsRecordOwner));\r\n this.SharedUsers = ko.computed(() => _.filter(this.Records(), user => user.Shared));\r\n }\r\n}\r\n\r\ninterface ILinkListRelationsViewModelParams {\r\n Model: LinkListRelationsModel;\r\n RecordOwner: number;\r\n IsExample: boolean;\r\n}\r\n\r\nexport class LinkListRelationsViewModel {\r\n constructor(params: ILinkListRelationsViewModelParams) {\r\n this.MainEntityId = params.Model.MainEntityId;\r\n this.ControlId = params.Model.ControlId;\r\n this.SingleMode = params.Model.SingleMode;\r\n\r\n const entities = params.Model.Entities.filter(e => e.EntityName !== 'SYS_USERS').map(entity => new EntityRelationsViewModel(entity));\r\n this.Entities = ko.observableArray(entities);\r\n\r\n const userRelation = _.find(params.Model.Entities, entity => entity.EntityName === \"SYS_USERS\");\r\n if (userRelation && userRelation.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS ){\r\n if (!!userRelation.EntityTranslatedName){\r\n userRelation.EntityTranslatedName =\r\n (userRelation.EntityTranslatedName.toUpperCase() === SYSTEM_TABLE_NAMES.SYS_USERS ? 'USERS' : userRelation.EntityTranslatedName);\r\n }\r\n if ( !userRelation.EntityTranslatedName || (userRelation.EntityTranslatedName.trim() === '') ) {\r\n userRelation.EntityTranslatedName = 'USERS';\r\n }\r\n }\r\n const userRelationViewModel = userRelation && new UserEntityRelationsViewModel(userRelation, params.Model.SingleMode);\r\n this.UserRelation = ko.observable(userRelationViewModel);\r\n }\r\n\r\n ControlId: number;\r\n\r\n MainEntityId: number;\r\n\r\n SingleMode: boolean;\r\n\r\n UserRelation: KnockoutObservable<UserEntityRelationsViewModel>;\r\n Entities: KnockoutObservableArray<EntityRelationsViewModel>;\r\n\r\n GetUsersNormalModeTemplate() {\r\n return UsersNormalModeTemplate;\r\n }\r\n\r\n GetUsersSingleModeTemplate() {\r\n return UsersSingleModeTemplate;\r\n }\r\n}","// Module\nvar code = \" <fieldset class=\\\"entity-relation\\\"> <legend data-bind=\\\"css: {'toggle-button': Records().length > 7, 'open': $parents[1].IsOpen(1)},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t click: $parents[1].CollapsingLinks.bind($parents[1], 1)\\\"> <!--ko text: EntityTranslatedName || EntityName --><!-- /ko --> <span data-bind=\\\"click: $parents[1].LinkRecord.bind($parents[1], $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[1]._labels.ADD_NEW_LINK_LABEL }\\\" class=\\\"link-entity transition\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"link-entity-arrow transition\\\"></span> </legend> <div class=\\\"entity-records\\\" data-bind=\\\"css: {'hidden-toggle': Records().length > 7, 'open': $parents[1].IsOpen(1)}\\\"> <!-- ko foreach: Records --> <div class=\\\"record-item clearfix\\\"> <!-- ko if: !$data.IsRecordOwner --> <input type=\\\"checkbox\\\" tabindex=\\\"-1\\\" data-bind=\\\"click: $parents[2].ToggleSharing.bind($parents[2], $data, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {name: $parent.EntityName, checkedValue: Id, checked: Shared}\\\" class=\\\"relation-record linklist-item link-info-item\\\"/> <pre data-bind=\\\"text: GetTypeName()\\\" class=\\\"mt-code link-info-item\\\"></pre> <!-- /ko --> <!-- ko if: $data.IsRecordOwner --> <pre class=\\\"mt-code link-info-item\\\"><!-- ko text: $parents[2]._labels.OWNER_LABEL --><!-- /ko --></pre> <!-- /ko --> <span data-bind=\\\" text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"></span> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <!-- ko if: $data.IsShowPlanner --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'planner': $data.Planner},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $parents[2].TogglePlanner.bind($parents[2], $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: {content: PlannerTooltip}\\\"> <!-- ko if: $data.Planner --> <i class=\\\"fa fa-calendar-check-o transition\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> <!-- ko if: !$data.Planner --> <i class=\\\"fa fa-calendar-times-o transition\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </span> <!-- /ko --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> <!-- ko if: !$data.IsRecordOwner --> <span class=\\\"unlink-record pull-left\\\" data-bind=\\\"click: $parents[2].UnLinkUser.bind($parents[2], $data, $parent), preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[2]._labels.REMOVE_LINK_LABEL }\\\"> <i class=\\\"fa fa-chain-broken transition\\\" aria-hidden=\\\"true\\\"></i> </span> <!-- /ko --> </div> </div> <!-- /ko --> </div> </fieldset> \";\n// Exports\nexport default code;","// Module\nvar code = \"<fieldset class=\\\"entity-relation\\\"> <legend data-bind=\\\"css: {'toggle-button': SharedUsers().length > 7, 'open': $parents[1].IsOpen(1)},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t click: $parents[1].CollapsingLinks.bind($parents[1], 1)\\\"> <!--ko text: 'USERS' --><!-- /ko --> <span data-bind=\\\"click: $parents[1].OpenUserAssignment.bind($parents[1], $data), attr: { title: $parents[1]._labels.ADD_NEW_LINK_LABEL }\\\" class=\\\"link-entity transition\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"link-entity-arrow transition\\\"></span> </legend> <div class=\\\"entity-records\\\" data-bind=\\\"css: {'hidden-toggle': SharedUsers().length > 7, 'open': $parents[1].IsOpen(1)}\\\"> <!--ko with: RecordOwner--> <div class=\\\"record-item clearfix\\\"> <pre class=\\\"mt-code link-info-item\\\" data-bind=\\\"text: $parents[2]._labels.OWNER_LABEL\\\"></pre> <label data-bind=\\\"text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"> </label> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> </div> <!--/ko--> <!-- ko foreach: SharedUsers --> <div class=\\\"record-item clearfix\\\"> <pre data-bind=\\\"text: GetTypeName()\\\" class=\\\"mt-code link-info-item\\\"></pre> <label data-bind=\\\"text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"> </label> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"unlink-record pull-left\\\" data-bind=\\\"click: $parents[2].UnLinkUser.bind($parents[2], $data, $parent), preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[2]._labels.REMOVE_LINK_LABEL }\\\"> <i class=\\\"fa fa-chain-broken transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> </div> <!-- /ko --> </div> </fieldset> \";\n// Exports\nexport default code;","import * as _ from'underscore';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize, deserialize } from 'libs/cerialize';\r\nimport {NewRelationModel} from 'Core/Controls/LinkList/Models/NewRelationModel';\r\n\r\nexport interface IGetNewRelationRequestModel {\r\n\tControlId: number;\r\n\tRecordId: number;\r\n\tEntityId: number;\r\n\tRelatedEntityId: number;\r\n RelatedRecordIds: number[];\r\n\tSubjectRecordId: number;\r\n};\r\n\r\n\r\nexport interface IGetNewAutolinkRequestModel{\r\n\tNewRelationRequestItem: IGetNewRelationRequestModel;\r\n\tRecordId: number;\r\n\tLeftEntityId: number;\r\n\tRightEntityId: number;\r\n};\r\n\r\nexport class NewRelationStore {\r\n\tstatic GetNewRelation(params: IGetNewRelationRequestModel): P.Promise<NewRelationModel[]> {\r\n\t\tvar deferredResult = P.defer<NewRelationModel[]>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINKLIST.GET_NEW_OR_EXISTING_RECORD,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n deferredResult.resolve(this.DeserializeArray(data.ResultObject));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetNewAutolinkRelation(params: IGetNewAutolinkRequestModel): P.Promise<NewRelationModel> {\r\n\t\tvar deferredResult = P.defer<NewRelationModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.LINKLIST.GET_AUTOLINK_RECORD,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): NewRelationModel {\r\n\t\tvar model = GenericDeserialize<NewRelationModel>(jsonObject, NewRelationModel);\r\n\t\treturn model;\r\n }\r\n\r\n static DeserializeArray(jsonObject: any): Array<NewRelationModel> {\r\n return jsonObject.map(item => GenericDeserialize(item, NewRelationModel));\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"EditScreenView linklist-control\\\" data-bind=\\\"click: function() { _help.ShowControlHelp.call(_help, $data); $parent.ExpandOnControlClicking() },\\r\\n\\t\\t\\t\\tcss: { 'u-cursor-pointer': !$parent._isExpanded() }\\\"> <div class=\\\"view-linklist-root\\\"> <div class=\\\"relations-root\\\"> <!-- ko with: DataModel --> <!-- ko with: UserRelation --> <div class=\\\"clearfix relationsWrapper\\\"> <div class=\\\"icon-block\\\"> <!--ko with: $parents[1].GetIcon($data)--> <div class=\\\"icon\\\" data-bind=\\\"template: { name: GetTemplateName.bind($rawData) }\\\"> </div> <!--/ko--> <div data-bind=\\\"text: SharedUsers().length\\\" class=\\\"counter\\\"></div> </div> <div class=\\\"entity-relation-container\\\"> <!--ko if: SingleMode--> <!--ko template: {html: $parent.GetUsersSingleModeTemplate}--> <!--/ko--> <!--/ko--> <!--ko ifnot: $parent.SingleMode--> <!--ko template: {html: $parent.GetUsersNormalModeTemplate}--> <!--/ko--> <!--/ko--> </div> </div> <!-- /ko --> <!-- ko foreach: Entities --> <div class=\\\"clearfix entitiesWrapper\\\" data-bind=\\\"css: {'errorValid': !_isValidEntity()}\\\"> <div class=\\\"icon-block\\\"> <!--ko with: $parents[1].GetIcon($data)--> <div class=\\\"icon\\\" data-bind=\\\"template: { name: GetTemplateName.bind($rawData) }\\\"></div> <!--/ko--> <div data-bind=\\\"text: Records().length\\\" class=\\\"counter\\\"></div> </div> <div class=\\\"entity-relation-container\\\"> <fieldset class=\\\"entity-relation\\\"> <legend data-bind=\\\"css: {'toggle-button': Records().length > 7, 'open': $parents[1].IsOpen(EntityId)},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t click: $parents[1].CollapsingLinks.bind($parents[1], EntityId)\\\"> <!--ko text: EntityTranslatedName || EntityName --><!-- /ko --> <span data-bind=\\\"click: $parents[1].LinkRecord.bind($parents[1], $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[1]._labels.ADD_NEW_LINK_LABEL }\\\" class=\\\"link-entity transition\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"link-entity-arrow transition\\\"></span> </legend> <div class=\\\"entity-records\\\" data-bind=\\\"css: {'hidden-toggle': Records().length > 7, 'open': $parents[1].IsOpen(EntityId)}\\\"> <!-- ko foreach: Records --> <div class=\\\"record-item clearfix\\\"> <input type=\\\"radio\\\" tabindex=\\\"-1\\\" data-bind=\\\"click: $parents[2].ChangeRelation.bind($parents[2], $data, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: { name: $parent.EntityName, checkedValue: Id, checked: IsMain },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click']\\\" class=\\\"relation-record linklist-item link-info-item\\\"/> <pre data-bind=\\\"text: GetTypeName()\\\" class=\\\"mt-code link-info-item\\\"></pre> <!--ko if: !!Name --> <label data-bind=\\\"text: GetName(),\\r\\n click: $parents[2].NavigateByLink.bind($parents[2], $data, $parent),\\r\\n ellipsisTooltip: {\\r\\n content: GetName() ? GetName() : '',\\r\\n options: {\\r\\n isLineClampMode: true,\\r\\n showHideOnlyOnHover: true,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px'\\r\\n }\\r\\n }\\\" class=\\\"LeftColon link-name\\\"> </label> <!-- /ko --> <div class=\\\"link-info-item pull-right link-actions-btn\\\"> <!-- text: $parents[1].HasFields --> <span class=\\\"edit-link pull-left\\\" data-bind=\\\"click: $parent.HasFields && $parents[2].EditRecord.bind($parents[2], $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {disabled: !$parent.HasFields},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t attr: {title: !$parent.HasFields ? $parent.NoFieldsMessage : $parents[2]._labels.EDIT_LINK_LABEL}\\\"> <i class=\\\"fa fa-pencil-square-o transition\\\" aria-hidden=\\\"true\\\"></i> </span> <span class=\\\"unlink-record pull-left\\\" data-bind=\\\"click: $parents[2].UnLinkRecord.bind($parents[2], $data, $parent), preventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $parents[2]._labels.REMOVE_LINK_LABEL }\\\"> <i class=\\\"fa fa-chain-broken transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> </div> <!-- ko foreach: $parent.AutoLinkedRecords --> <!--ko if: EntityRecordId === $parent.Id --> <div class=\\\"linked-block\\\"> <div class=\\\"icon-block icon-linked-block\\\"> <!--ko with: $parents[3].GetIconByEntityId(EntityId)--> <div class=\\\"icon\\\" data-bind=\\\"template: { name: GetTemplateName.bind($rawData) }\\\"></div> <!--/ko--> </div> <!--ko text: Name --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </fieldset> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> \";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\nimport * as ko from 'knockout'\r\n\r\nimport {Serialize} from 'libs/cerialize';\r\n\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Notifier} from \"Core/Common/Notifier\"\r\n\r\nimport {CONTROL_TYPES, FIELD_TYPES, FONT_NAME, RenderModes, SYSTEM_TABLE_NAMES} from 'Core/Constant'\r\nimport {SECURITY_LEVELS} from 'Core/Constants/SecurityLevels';\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {LinkListRelationsStore} from 'Core/Controls/LinkList/Stores/LinkListStore'\r\nimport {UserModel} from 'Core/Controls/LinkList/Models/UserModel';\r\nimport {EntityRelations, LinkListRelationsModel} from 'Core/Controls/LinkList/Models/LinklistRelationsModel'\r\nimport {\r\n EntityRelationsViewModel,\r\n LinkListRelationsViewModel,\r\n RelationRecordViewModel,\r\n UserEntityRelationsViewModel\r\n} from 'Core/Controls/LinkList/Models/LinkListRelationsViewModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {Icon} from 'Core/Icon/Icon'\r\nimport { SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen'\r\nimport {NewRelationStore} from 'Core/Controls/LinkList/Stores/NewRelationStore'\r\nimport {EditLinkDataModel, UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel'\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {DataModel as LinkEditorDataModel} from 'Core/Screens/Common/LinkEditor/Models/DataModel'\r\n\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\n\r\n\r\nimport {LinkEditorStore} from 'Core/Screens/Common/LinkEditor/Stores/LinkEditorStore'\r\n\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport { AutoLinkedRecordModel } from \"Core/Controls/LinkList/Models/AutoLinkedRecordModel\";\r\nimport { AutolinkModel } from \"Core/Controls/LinkList/Models/AutoLinkModel\";\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {AGENDA_TYPES} from \"Core/Constants/AgendaTypes\";\r\nimport { NewRelationModel } from \"./Models/NewRelationModel\";\r\nimport { SearchByMainRelationTypes } from 'Core/Screens/SearchScreen/Enums/Enums';\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nconst RELATION_TYPE_VALUE_FIELD: string = 'F_RELATIONTYPEVALUE';\r\n\r\nimport LinkListConfig from 'Core/Controls/LinkList/Configs/link-list-config.json';\r\n\r\n// Templates\r\nimport ViewTemplate from 'Core/Controls/LinkList/Templates/View.html'\r\nimport ToolBarTemplate from 'Core/Controls/LinkList/Templates/ToolBar.html'\r\nimport DesignTemplate from 'Core/Controls/LinkList/Templates/Design.html'\r\nimport { DataCell } from '../Grid/BaseGrid/Index';\r\n\r\nko.templates['Core/Controls/LinkList/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/LinkList/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/LinkList/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/LinkList/Templates/Design'] = DesignTemplate;\r\n\r\nexport class LinkList extends BaseControl {\r\n private _serverDataModel: LinkListRelationsModel;\r\n private _dataModel: KnockoutObservable<LinkListRelationsViewModel>;\r\n private _subjectRecordId: number;\r\n private _updateDataModel: UpdateDataModel;\r\n private _designFields: KnockoutObservableArray<AttachedFieldModel>;\r\n private _searchScreen: SearchScreen;\r\n private _openNumbers: Array<any>;\r\n private _linkTypes: Array<any>;\r\n private _linkTypesInstancesLeft: Array<any>;\r\n private _isAuoProperties: KnockoutObservable<boolean>;\r\n private _licenseName: string;\r\n\r\n private _actionGlobal: string;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, LinkListConfig);\r\n this._designFields = ko.observableArray(this._model().Fields);\r\n this._isAuoProperties = ko.observable(null);\r\n\r\n this._model.subscribe(newValue => {\r\n this._designFields(this._model().Fields);\r\n });\r\n\r\n this._designFields.subscribe(fields => {\r\n _.each(fields, (field, index) => {\r\n field.Sort = index * 10;\r\n });\r\n });\r\n\r\n this._serverDataModel = null;\r\n this._dataModel = ko.observable(null);\r\n this._linkTypes = [];\r\n this._openNumbers = [];\r\n this._licenseName = null;\r\n\r\n this._actionGlobal = GlobalManager.Instance.GetGlobal(GLOBALS.ACTION_TABLE);\r\n\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n IsAuoProperties(): boolean {\r\n _.each(this.GeneralProperties.Groups, (group) => {\r\n let propertyAuto = group.Properties.filter(property => property.Type === 'Auto');\r\n\r\n if (propertyAuto) {\r\n _.each(propertyAuto, (propertyModel)=>{\r\n this._isAuoProperties(!!propertyModel.Value);\r\n });\r\n } else {\r\n this._isAuoProperties(false);\r\n }\r\n });\r\n return this._isAuoProperties();\r\n }\r\n\r\n get LinkListAutoProperty(): boolean {\r\n return this.IsAuoProperties();\r\n }\r\n\r\n GetDefaultName() {\r\n return \"LinkList\";\r\n }\r\n\r\n private Init(): void {\r\n this.AddEvent('LinkListDispose');\r\n this.AddEvent('NEW_RECORD_SAVED');\r\n }\r\n\r\n @enumerable get DesignFields(): KnockoutObservableArray<AttachedFieldModel> {\r\n return this._designFields;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n const dataMode = this.GetForm().GetScreen().GetDataMode();\r\n this._subjectRecordId =\r\n value.RecordSpecsModel.IsNewRecord || dataMode !== DataModes.Default ? 0 : value.SubjectRecordId;\r\n const subjectLifeStatusId = this.GetForm().GetScreen().GetSubjectLifeStatusId();\r\n this.LoadDataInDefaultMode(value, subjectLifeStatusId);\r\n }\r\n\r\n private SetInitialLinkTypesState(entities) {\r\n\r\n this._linkTypes = [];\r\n entities.map(entity => this._linkTypes.push(\r\n {\r\n EntityName: entity.EntityName == null ? entity.EntityName : entity.EntityNameTranslation,\r\n Records: entity.Records.map((record) => {\r\n return {\r\n RecordId: record.Id,\r\n LinkTypes: entity.LinkTypes\r\n };\r\n }),\r\n LinkTypes: entity.LinkTypes,\r\n EntityId: entity.EntityId,\r\n }\r\n ));\r\n\r\n const stringified = JSON.stringify(this._linkTypes);\r\n this._linkTypesInstancesLeft = JSON.parse(stringified);\r\n }\r\n\r\n UpdateLinkTypesState(entityName, recordId, typeName, valueToUpdateWith) {\r\n const selectedEntity = _.where(this._linkTypesInstancesLeft, {EntityName: entityName})[0];\r\n const relatedEntity: any = selectedEntity && _.where(selectedEntity.Records, {RecordId: recordId})[0] as any;\r\n if (!relatedEntity) {\r\n return null;\r\n }\r\n const selectedLinkType = relatedEntity && _.where(relatedEntity.LinkTypes, {Name: typeName});\r\n if (!selectedLinkType) {\r\n return null;\r\n }\r\n if (selectedLinkType.length) {\r\n selectedLinkType.map((linkType: any) => {\r\n linkType.InstancingMaximum += valueToUpdateWith;\r\n });\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n\r\n GetLinkTypesState(entityName, recordId) {\r\n const relatedEntity = _.where(this._linkTypesInstancesLeft, {EntityName: entityName})[0];\r\n let relatedRecord = null;\r\n if (relatedEntity) relatedRecord = _.where(relatedEntity.Records, {RecordId: recordId})[0];\r\n\r\n return relatedRecord && relatedRecord.LinkTypes || null;\r\n }\r\n\r\n private LoadDataInDefaultMode(value: IControlValue, subjectLifeStatusId: number) {\r\n const saveButton = this._form.GetScreen().GetControl(CONTROL_TYPES.ButtonSave);\r\n this.LoadData(value, subjectLifeStatusId)\r\n .always(() => {\r\n BlockUI.Unblock(saveButton.GetWrapper());\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(model => {\r\n\r\n $(saveButton.GetWrapper()).css('pointer-events', 'auto');\r\n\t\t\t\tif (model.Warnings && model.Warnings.length > 0) {\r\n\t\t\t\t\tmodel.Warnings.forEach(warning => {\r\n\t\t\t\t\t\tif (warning) {\r\n\t\t\t\t\t\t\tnew Notifier().Failed(warning);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n this.SetInitialLinkTypesState(model.Entities);\r\n\r\n this.ApplyData(model, value.RecordSpecsModel);\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadData(value: IControlValue, subjectLifeStatusId?: number) {\r\n this._updateDataModel = new UpdateDataModel();\r\n\r\n const screenModel = this.GetForm().GetScreen();\r\n const dataMode = screenModel.GetDataMode();\r\n const actionSubjectRecord = screenModel.GetActionSubjectRecord();\r\n const tableTypeId = screenModel.GetTableTypeId();\r\n\r\n let subjectEntityId;\r\n let subjectRecordId;\r\n\r\n if (actionSubjectRecord) {\r\n subjectEntityId = actionSubjectRecord.EntityId;\r\n subjectRecordId = actionSubjectRecord.RecordId;\r\n }\r\n\r\n\t\tconst checkOneParent = dataMode === DataModes.CopyWithRelations || dataMode === DataModes.CopyToType || dataMode === DataModes.FollowUp\r\n\t\t\t|| (value.RecordSpecsModel && value.RecordSpecsModel.IsExample);\r\n\r\n return LinkListRelationsStore.GetLinkedRecords({\r\n ControlId: this.GetControlId(),\r\n RecordId: value.SubjectRecordId,\r\n EntityId: value.SubjectEntityId,\r\n SubjectEntityId: subjectEntityId,\r\n SubjectRecordId: subjectRecordId,\r\n SubjectLifeStatusId: subjectLifeStatusId,\r\n\t\t\tWithoutRelations: dataMode === DataModes.Copy,\r\n\t\t\tCheckOneParent: checkOneParent,\r\n TableTypeId: tableTypeId\r\n });\r\n }\r\n\r\n private FireDataChangeEvent(model: LinkListRelationsModel){\r\n _.each(model.Entities, (entity)=>{\r\n _.each(entity.Records, (record)=>{\r\n let field = _.find(this.Fields, f=> f.EntityId === entity.EntityId);\r\n if(record.IsMain && field){\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, record.Id);\r\n }\r\n });\r\n });\r\n }\r\n\r\n GetPrimaryKeyField(attached: AttachedFieldModel): AttachedFieldModel{\r\n let primaryKey = new AttachedFieldModel();\r\n primaryKey.FieldTypeName = FIELD_TYPES.PKey;\r\n primaryKey.Name = attached.PrimaryKeyName;\r\n primaryKey.EntityName = attached.EntityName;\r\n return primaryKey;\r\n }\r\n\r\n private ApplyData(model: LinkListRelationsModel, recordSpecs: RecordSpecsModel) {\r\n const self = this;\r\n\r\n this._updateDataModel = new UpdateDataModel();\r\n this._updateDataModel.ActionSubjectRecord = model.ActionSubjectRecord;\r\n\r\n this._serverDataModel = model;\r\n this._dataModel(new LinkListRelationsViewModel({\r\n Model: model,\r\n RecordOwner: recordSpecs.RecordOwner,\r\n IsExample: recordSpecs.IsExample\r\n }));\r\n\r\n this.FireDataChangeEvent(model);\r\n\r\n\t\tif (recordSpecs.IsNewRecord || this._subjectRecordId === 0) {\r\n\t\t\tconst editScreen = this.GetForm().GetScreen() as EditScreen;\r\n\r\n\t\t\tif (!editScreen.IsDataFromExample) {\r\n\t\t\t\t_.each(this._dataModel().Entities(), entity => {\r\n\t\t\t\t\tif (entity) {\r\n\t\t\t\t\t\t_.each(entity.Records(), record => {\r\n\t\t\t\t\t\t\tlet newRecord = new RelationRecordViewModel();\r\n\t\t\t\t\t\t\tnewRecord.Id = record.Id;\r\n\t\t\t\t\t\t\tnewRecord.Guid = record.Guid;\r\n\t\t\t\t\t\t\tnewRecord.Level = record.Level;\r\n\t\t\t\t\t\t\tnewRecord.IsNew = true;\r\n\t\t\t\t\t\t\tnewRecord.IsMain = record.IsMain;\r\n\r\n\t\t\t\t\t\t\tthis._updateDataModel.AddNewRelation(self.GetControlId(), self._subjectRecordId, entity.EntityId, newRecord);\r\n\r\n\t\t\t\t\t\t\tif (record.IsMain()) {\r\n\t\t\t\t\t\t\t\tthis.ChangeRelation(record, entity, false);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (editScreen.GetEntityName() === 'AGENDA') {\r\n\t\t\t if (editScreen.GetTableTypeName() === AGENDA_TYPES.Appointment) {\r\n if (editScreen.IsDataFromExample) {\r\n this.EnablePlanner();\r\n }\r\n }\r\n }\r\n\r\n\t\t\tthis.AddRecordOwner(recordSpecs)\r\n .then(() => this.Screen.Trigger('LINK_LIST_DATA_LOADED', {Control: this}));\r\n return;\r\n }\r\n this.Screen.Trigger('LINK_LIST_DATA_LOADED');\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n if (el) {\r\n this._el = el[0];\r\n }\r\n\r\n if (this._renderMode() !== RenderModes.Design) {\r\n const saveButton = this._form.GetScreen().GetControl(CONTROL_TYPES.ButtonSave);\r\n $(saveButton.GetWrapper()).css('pointer-events', 'none');\r\n BlockUI.Block({Target: saveButton.GetWrapper()});\r\n BlockUI.Block({Target: this._el});\r\n }\r\n super.AfterRender(el);\r\n }\r\n\r\n @enumerable get DataModel() {\r\n return this._dataModel;\r\n }\r\n\r\n @enumerable get Fields() {\r\n return this._model().Fields;\r\n }\r\n\r\n @enumerable get Name(): string {\r\n return this._model().Name === SYSTEM_TABLE_NAMES.SYS_USERS ? 'USERS' : this._model().Name;\r\n }\r\n\r\n @enumerable get LicenseName() {\r\n return this._licenseName;\r\n }\r\n\r\n set LicenseName(licenseName) {\r\n this._licenseName = licenseName;\r\n }\r\n\r\n GetDesignIcon(model: AttachedFieldModel) {\r\n const entityIcon = model.EntityIcon;\r\n entityIcon.IsImage = entityIcon.IsImage ? !_.isEmpty(entityIcon.Name) : !_.isEmpty(entityIcon.Image);\r\n entityIcon.IsIcon = !_.isEmpty(entityIcon.Name) && entityIcon.IsIcon;\r\n\r\n var icon = new Icon(entityIcon);\r\n if (!icon.IsIcon && !icon.IsImage) {\r\n return new Icon({\r\n FontName: FONT_NAME.FONT_AWESOME,\r\n Image: null,\r\n IsIcon: false,\r\n IsImage: false,\r\n Name: \"\",\r\n Id: null\r\n });\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n GetEntityName(model: AttachedFieldModel): string {\r\n if (model.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS && !!model.EntityNameTranslation){\r\n return model.EntityNameTranslation === SYSTEM_TABLE_NAMES.SYS_USERS ? 'USERS' : model.EntityNameTranslation;\r\n } else if (model.EntityName !== SYSTEM_TABLE_NAMES.SYS_USERS){\r\n return model.EntityNameTranslation || model.EntityName;\r\n } else if (model.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS && !model.EntityNameTranslation){\r\n return 'USERS';\r\n }\r\n }\r\n\r\n GetDisplayedName(model: AttachedFieldModel): string {\r\n const entityName = this.GetEntityName(model);\r\n const fieldName = model.FullName;\r\n return `${entityName}.${fieldName}`;\r\n }\r\n\r\n GetIcon(model?: EntityRelationsViewModel) {\r\n var fieldByEntity = _.find(this._model().Fields, item => {\r\n return item.EntityId === model.EntityId\r\n });\r\n\r\n const entityIcon = fieldByEntity.EntityIcon;\r\n entityIcon.IsImage = entityIcon.IsImage ? !_.isEmpty(entityIcon.Name) : !_.isEmpty(entityIcon.Image);\r\n entityIcon.IsIcon = !_.isEmpty(entityIcon.Name) && entityIcon.IsIcon;\r\n\r\n var icon = new Icon(entityIcon);\r\n if (!icon.IsIcon && !icon.IsImage) {\r\n return new Icon({\r\n FontName: FONT_NAME.FONT_AWESOME,\r\n Image: null,\r\n IsIcon: false,\r\n IsImage: false,\r\n Name: \"\",\r\n Id: null\r\n });\r\n } else {\r\n return icon;\r\n }\r\n }\r\n\r\n GetIconByEntityId(entityId: number) {\r\n let model = _.find(this._dataModel().Entities(), entity => entity.EntityId === entityId);\r\n var fieldByEntity = _.find(this._model().Fields, item => {\r\n return item.EntityId === model.EntityId\r\n });\r\n var icon = new Icon(fieldByEntity.EntityIcon);\r\n return icon;\r\n }\r\n\r\n FindLinkByRecord(recordId: number, model: EntityRelationsViewModel) {\r\n return model.Records().find(record => record.Id === recordId);\r\n }\r\n\r\n AddRecord(recordId: number, model: EntityRelationsViewModel, newRelation: NewRelationModel, openLinkEditor: boolean = false) {\r\n let isRecordFirst = model.Records().length < 1;\r\n let isMain = newRelation.IsMain || isRecordFirst;\r\n\r\n const newRecord = new RelationRecordViewModel();\r\n newRecord.Id = newRelation.Id;\r\n newRecord.Name = newRelation.Name;\r\n newRecord.NameTranslation = newRelation.NameTranslation;\r\n newRecord.IsMain(isMain);\r\n newRecord.Level = newRelation.Level;\r\n newRecord.TypeName = newRelation.TypeName;\r\n newRecord.TypeTranslatedName = newRelation.TypeTranslatedName;\r\n newRecord.IsRecordOwner = newRelation.IsRecordOwner;\r\n newRecord.UserAllowance = newRelation.UserAllowance;\r\n newRecord.IsNew = true;\r\n newRecord.IsNewRecord = newRelation.IsNewRecord;\r\n\r\n const isActionsScreen = this.GetForm().GetScreen().GetEntityName() === this._actionGlobal;\r\n\r\n if (isActionsScreen && !this._updateDataModel.ActionSubjectRecord && model.EntityName !== 'SYS_USERS') {\r\n this._updateDataModel.ActionSubjectRecord = new ActionSubjectRecordModel(model.EntityId, recordId);\r\n new Notifier().Success(NOTIFICATIONS.REFERENCE_WAS_SET);\r\n }\r\n\r\n if (model.EntityName === 'SYS_USERS' && this._dataModel().UserRelation().SingleMode) {\r\n if (newRecord.SharingReady) {\r\n newRecord.Level -= SECURITY_LEVELS.SHARING_READY;\r\n }\r\n\r\n newRecord.Level += SECURITY_LEVELS.SHARED;\r\n }\r\n\r\n this._updateDataModel.AddNewRelation(this.GetControlId(), this._subjectRecordId, model.EntityId, newRecord);\r\n\r\n model.Records.push(newRecord);\r\n this._dataModel.valueHasMutated();\r\n\r\n if (model.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n this._updateDataModel.ChangeUserLevel(model.EntityId, newRecord.Id, newRecord.Level);\r\n }\r\n\r\n if (isRecordFirst && model.EntityName !== SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n this.ChangeRelation(newRecord, model);\r\n }\r\n\r\n this.AutoLink(model.AutoLinks, newRecord.Id);\r\n\r\n if (newRelation.HasCustomFields && openLinkEditor) {\r\n this.EditRecord(model, newRecord, this._linkTypes);\r\n }\r\n\r\n if(newRecord.IsMain()){\r\n if (this._form) {\r\n\r\n let field = _.find(this.Fields, f=> f.EntityId === model.EntityId);\r\n if(field){\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, newRecord.Id);\r\n } \r\n } \r\n }\r\n\r\n\r\n return newRecord.Guid;\r\n }\r\n\r\n UpdateCustomDataByGuid(guid: string, fieldValue: { FieldId: number, FieldValue: string }[]) {\r\n let linkEditorChanges = this._updateDataModel.LinkEditorChanges.find(link => link.Guid === guid);\r\n\r\n if (!linkEditorChanges) {\r\n const link = this.FindLink(guid);\r\n if (!link) {\r\n return;\r\n }\r\n\r\n const dataModel = new LinkEditorDataModel();\r\n dataModel.EntityId = link.EntityId;\r\n dataModel.RecordId = link.Link.Id;\r\n\r\n linkEditorChanges = new EditLinkDataModel(dataModel, guid);\r\n this._updateDataModel.LinkEditorChanges.push(linkEditorChanges);\r\n }\r\n\r\n for (const value of fieldValue) {\r\n let existingValue = linkEditorChanges.FieldValues.find(v => v.FieldId === value.FieldId);\r\n\r\n if (!existingValue) {\r\n linkEditorChanges.FieldValues.push({FieldId: value.FieldId, FieldValue: ['', value.FieldValue]});\r\n continue;\r\n }\r\n\r\n existingValue.FieldValue = ['', value.FieldValue];\r\n }\r\n }\r\n\r\n GetRelations() {\r\n var searchByRelations = [];\r\n _.each(this._dataModel().Entities(), entity => {\r\n _.each(entity.Records(), record => {\r\n if (record.IsNew) {\r\n searchByRelations.push({EntityId: entity.EntityId, RecordId: record.Id, IsMain: record.IsMain()});\r\n }\r\n });\r\n\r\n });\r\n\r\n return searchByRelations;\r\n }\r\n\r\n LinkRecord(data, model: EntityRelationsViewModel, event) {\r\n event.stopPropagation();\r\n let firstSearchByMainRelations = true;\r\n let firstSearchByRelations = true;\r\n\r\n let isBulkBarcodeScanning = false;\r\n this._searchScreen = new SearchScreen({\r\n EntityId: model.EntityId,\r\n SearchTerm: '',\r\n Sharing: data.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS,\r\n SubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n SearchByRelations: this.GetRelations(),\r\n SearchByMainRelationType: SearchByMainRelationTypes.ByMainRelations,\r\n EnableBulkScan: true,\r\n MultiSelectMode: true\r\n });\r\n\r\n this._searchScreen.On('NEW_RECORD', this, () => {\r\n const selfRelation = this.GetForm().GetScreen().GetEntityId() === model.EntityId;\r\n const typeScreen = new TypeScreen(\r\n model.EntityId,\r\n selfRelation ? this.GetForm().GetScreen().GetTableTypeId() : 0,\r\n false);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(model.EntityId, typeId, kindId, exampleRecordId);\r\n this.One('NEW_RECORD_SAVED', this, eventArgs => {\r\n this.LinkSelectedRecord(model, [eventArgs.data.RecordId], true);\r\n this._searchScreen.Close();\r\n });\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n this._searchScreen.On(\"RECORDS_NOT_FOUND\", this, (eventArgs) => {\r\n if (firstSearchByMainRelations && this._searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByMainRelations) {\r\n Notifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n this._searchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n firstSearchByMainRelations = false;\r\n } else if (firstSearchByRelations && this._searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n Notifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n this._searchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n firstSearchByRelations = false;\r\n }\r\n });\r\n this._searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => this.LinkSelectedRecord(model, [eventArgs.data.RecordId], undefined, isBulkBarcodeScanning));\r\n this._searchScreen.On(\"RECORDS_SELECTED\",\r\n this,\r\n (eventArgs) => this.LinkSelectedRecord(model, eventArgs.data.Ids, undefined,isBulkBarcodeScanning)\r\n );\r\n\r\n this._searchScreen.On(\"BULK_BARCODE_SCAN_STARTED\", this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n this._searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n this._searchScreen.On(\"BULK_BARCODE_SCAN_STOPPED\", this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n this._searchScreen.Show();\r\n }\r\n\r\n private LinkSelectedRecord(model: EntityRelationsViewModel, recordIds: number[], isNewRecord: boolean = false, isBulkBarcodeScanning: boolean = false) {\r\n let isLinkingAllowed = true;\r\n let differenceIds = [];\r\n if (!model.HasSequence) {\r\n differenceIds = _.difference(recordIds, _.map(model.Records(), (item) => item.Id));\r\n isLinkingAllowed = differenceIds.length > 0;\r\n } else {\r\n differenceIds = recordIds;\r\n }\r\n\r\n if (model.EntityName === 'SYS_USERS' && this._dataModel().UserRelation().SingleMode) {\r\n isLinkingAllowed = true;\r\n }\r\n\r\n if (isLinkingAllowed) {\r\n this.AfterSelectRecord(differenceIds, model, isNewRecord, isBulkBarcodeScanning)\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n this._searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n } else {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(NOTIFICATIONS.RECORD_ALREADY_EXISTS);\r\n\r\n if (isBulkBarcodeScanning) {\r\n this._searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n }\r\n }\r\n\r\n AfterSelectRecord(recordIds: number[], model: EntityRelationsViewModel, isNewRecord: boolean = false, isBulkBarcodeScanning: boolean = false) {\r\n BlockUI.Block();\r\n return NewRelationStore.GetNewRelation({\r\n ControlId: this.GetControlId(),\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: this._subjectRecordId,\r\n RelatedEntityId: model.EntityId,\r\n RelatedRecordIds: recordIds,\r\n\t\t\tSubjectRecordId: this._subjectRecordId\r\n })\r\n .then(newRelations => {\r\n let openLinkEditor = !isBulkBarcodeScanning && newRelations.length === 1;\r\n _.each(newRelations, (newRelation) => {\r\n newRelation.IsNewRecord = isNewRecord;\r\n\r\n if (model.EntityName === 'SYS_USERS') {\r\n if (this._dataModel().UserRelation().SingleMode) {\r\n const sharedUsers = _.filter(this._dataModel().UserRelation().Records(), user => user.Shared);\r\n this.MakeSharingReady(model, sharedUsers);\r\n } else {\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n const isValid: boolean = model._isValidEntity();\r\n if (!isValid){\r\n model._isValidEntity(true);\r\n }\r\n\r\n this.AddRecord(newRelation.Id, model, newRelation, openLinkEditor);\r\n })\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n new Notifier($(this._el)).Failed(error.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n AutoLink(autoLinks: Array<AutolinkModel>, linkedRecordId: number) {\r\n _.each(autoLinks,\r\n entityToEntity => {\r\n var currentEntityFromList = _.find(this._dataModel().Entities(), entity => entity.EntityId === entityToEntity.RightEntityId);\r\n\r\n if (currentEntityFromList) {\r\n BlockUI.Block();\r\n NewRelationStore\r\n .GetNewAutolinkRelation({\r\n NewRelationRequestItem: {\r\n ControlId: this.GetControlId(),\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: this._subjectRecordId,\r\n RelatedEntityId: currentEntityFromList.EntityId,\r\n\t\t\t\t\t\t\t\tRelatedRecordIds: [-1],\r\n\t\t\t\t\t\t\t\tSubjectRecordId: this._subjectRecordId\r\n },\r\n RecordId: linkedRecordId,\r\n LeftEntityId: entityToEntity.LeftEntityId,\r\n RightEntityId: entityToEntity.RightEntityId\r\n })\r\n\r\n .then(newRelation => {\r\n if (newRelation) {\r\n\r\n if (_.filter(currentEntityFromList.Records(),\r\n item => item.Id === newRelation.Id).length > 0) {\r\n return;\r\n }\r\n\r\n let isRecordFirst = currentEntityFromList.Records().length < 1;\r\n let isMain = newRelation.IsMain || isRecordFirst;\r\n newRelation.Level = SECURITY_LEVELS.SHARED;\r\n\r\n var newRecord = new RelationRecordViewModel();\r\n newRecord.Id = newRelation.Id;\r\n newRecord.Name = newRelation.Name;\r\n newRecord.NameTranslation = newRelation.NameTranslation;\r\n newRecord.IsMain(isMain);\r\n newRecord.Level = newRelation.Level;\r\n newRecord.TypeName = newRelation.TypeName;\r\n newRecord.TypeTranslatedName = newRelation.TypeTranslatedName;\r\n\r\n this._updateDataModel\r\n .AddNewRelation(this.GetControlId(), this._subjectRecordId, currentEntityFromList.EntityId, newRecord);\r\n\r\n currentEntityFromList.Records.push(newRecord);\r\n this.AddRelatedRecord(entityToEntity.LeftEntityId, newRecord.Id, entityToEntity.RightEntityId, newRecord.Name, newRecord.NameTranslation, linkedRecordId);\r\n this._dataModel.valueHasMutated();\r\n\r\n if (currentEntityFromList.EntityName === SYSTEM_TABLE_NAMES.SYS_USERS) {\r\n this._updateDataModel.ChangeUserLevel(currentEntityFromList.EntityId, newRecord.Id, newRecord.Level);\r\n }\r\n\r\n if (isRecordFirst) {\r\n this.ChangeRelation(newRecord, currentEntityFromList);\r\n }\r\n\r\n if (currentEntityFromList.EntityName && currentEntityFromList.EntityName.toUpperCase() === 'COMPANIES') {\r\n this.ChangeMainCompany();\r\n }\r\n\r\n this.AutoLink(currentEntityFromList.AutoLinks ,newRelation.Id);\r\n new Notifier().Success(NOTIFICATIONS.RECORD_WAS_AUTOLINKED);\r\n }\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n\r\n }\r\n }\r\n );\r\n }\r\n\r\n private FindLink(guid: string) {\r\n let link = this._dataModel().UserRelation().Records().find(r => r.Guid === guid);\r\n\r\n if (link) {\r\n return {\r\n Link: link,\r\n EntityId: this._dataModel().UserRelation().EntityId\r\n };\r\n }\r\n\r\n for (const entity of this._dataModel().Entities()) {\r\n link = entity.Records().find(r => r.Guid === guid);\r\n if (link) {\r\n return {\r\n Link: link,\r\n EntityId: entity.EntityId\r\n };\r\n }\r\n }\r\n }\r\n\r\n private async NewRecord(entityId: number, tableTypeId: number, kindId: number, exampleRecordId: number) {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n ParentRecordId: this.GetForm().GetScreen().GetRecordId()\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetForm().GetScreen().GetRecordId();\r\n editScreen.UseLinking = true;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n UserVarsManager.Instance.AddRecent(entityId, eventArgs.data.RecordId, tableTypeId);\r\n this.Trigger('NEW_RECORD_SAVED', eventArgs.data);\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n private AddRelatedRecord(destinationEntityId: number, recordId: number, sourceEntityId: number, name: string, nameTranslation: string, linkedRecord: number) {\r\n let destinationEntity = _.find(this._dataModel().Entities(), entity => entity.EntityId === destinationEntityId);\r\n let relatedRecord = AutoLinkedRecordModel.Create(recordId, sourceEntityId, name, nameTranslation, linkedRecord);\r\n destinationEntity.AutoLinkedRecords.push(relatedRecord);\r\n }\r\n\r\n ChangeRelation(\r\n relationRecord: RelationRecordViewModel,\r\n entityRelations: EntityRelationsViewModel,\r\n needFindOldId: boolean = true\r\n ) {\r\n let newRelations = _.filter(this._updateDataModel.NewRelations, (item) => {\r\n return item.RelatedEntityId === entityRelations.EntityId\r\n });\r\n\r\n const isValid: boolean = entityRelations._isValidEntity();\r\n if (!isValid) {\r\n entityRelations._isValidEntity(true);\r\n }\r\n\r\n if (newRelations) {\r\n _.each(newRelations,\r\n item => {\r\n item.IsMain = item.Guid === relationRecord.Guid;\r\n });\r\n }\r\n\r\n let entity = _.find(this._serverDataModel.Entities, (x) => x.EntityId === entityRelations.EntityId);\r\n let oldRecord = _.find(entity.Records, (x) => {\r\n return x.IsMain;\r\n });\r\n\r\n let oldId = !needFindOldId ? -1 : oldRecord ? oldRecord.Id : -1;\r\n let oldKSeq = !needFindOldId ? -1 : oldRecord ? oldRecord.KSeq : -1;\r\n this._updateDataModel.ChangeRelation(entityRelations.EntityId, oldId, relationRecord.Id, relationRecord.KSeq, relationRecord.Guid, oldKSeq);\r\n\r\n _.each(entityRelations.Records(),\r\n item => {\r\n item.IsMain(item.Guid === relationRecord.Guid);\r\n });\r\n\r\n if(relationRecord.IsMain()){\r\n let field = _.find(this.Fields, f=> f.EntityId === entity.EntityId);\r\n if(relationRecord.IsMain && field){\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, relationRecord.Id);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n ChangeMainCompany() {\r\n const companiesModel = _.find(this._dataModel().Entities(), entity => entity.EntityName && entity.EntityName.toUpperCase() === 'COMPANIES');\r\n if (!companiesModel || !this.LicenseName) {\r\n return;\r\n }\r\n\r\n const mainCompany = _.find(companiesModel.Records(), record => record.IsMain());\r\n const isMainCompanySet = !!mainCompany;\r\n const isMainCompanyLicense = mainCompany && mainCompany.Name && mainCompany.Name.toUpperCase() === this.LicenseName.toUpperCase();\r\n\r\n const nonLicenseCompanies = _.filter(companiesModel.Records(), record => record.Name && record.Name.toUpperCase() !== this.LicenseName.toUpperCase());\r\n\r\n if ((isMainCompanySet && !isMainCompanyLicense) || !_.any(nonLicenseCompanies)) {\r\n return;\r\n }\r\n\r\n const firstNonLicenseCompany = _.first(nonLicenseCompanies);\r\n this.ChangeRelation(firstNonLicenseCompany, companiesModel);\r\n }\r\n\r\n UnLinkRecord(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel, displayDialog: boolean = true) {\r\n if (displayDialog) {\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.UNLINK_RECORD,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.UnLink(relationRecord, entityRelations));\r\n this.On('LinkListDispose', this, () => confirmationDialog.Close());\r\n confirmationDialog.Show();\r\n } else {\r\n this.UnLink(relationRecord, entityRelations)\r\n }\r\n }\r\n\r\n UnLinkUser(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel, displayDialog: boolean = true) {\r\n const anyUserExist = _.find(entityRelations.Records(), relation => relation.TypeName.toUpperCase() === \"USER\");\r\n const leftRelations = _.without(entityRelations.Records(), relationRecord);\r\n const anyUserLeft = !!_.find(leftRelations, relation => relation.TypeName.toUpperCase() === \"USER\");\r\n\r\n if (this._dataModel().UserRelation().SingleMode && relationRecord.IsRecordOwner) {\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARED;\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARING_READY;\r\n\r\n this._updateDataModel.ChangeUserLevel(entityRelations.EntityId, relationRecord.Id, relationRecord.Level);\r\n entityRelations.Records.valueHasMutated();\r\n return;\r\n }\r\n\r\n if (anyUserExist && !anyUserLeft) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.USER_SHOULD_BE_LINKED);\r\n return;\r\n }\r\n if (displayDialog) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.UNLINK_USER,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => this.UnLink(relationRecord, entityRelations));\r\n confirmationDialog.Show();\r\n } else {\r\n this.UnLink(relationRecord, entityRelations)\r\n }\r\n }\r\n\r\n EnablePlanner() {\r\n const recordOwner = this._dataModel().UserRelation().Records().find(r => r.IsRecordOwner);\r\n\r\n if (recordOwner.PlanningAllowed && !recordOwner.Planner) {\r\n this.TogglePlanner(recordOwner);\r\n }\r\n }\r\n\r\n TogglePlanner(relationRecord: RelationRecordViewModel) {\r\n if (!relationRecord.PlanningAllowed) return;\r\n\r\n relationRecord.Level ^= SECURITY_LEVELS.PLANNER;\r\n\r\n const entityId = this._dataModel().UserRelation().EntityId;\r\n this._updateDataModel.ChangeUserLevel(entityId, relationRecord.Id, relationRecord.Level);\r\n\r\n this._dataModel.valueHasMutated();\r\n }\r\n\r\n ToggleSharing(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel) {\r\n let entity: EntityRelations = _.find(this._serverDataModel.Entities, e => e.EntityId === entityRelations.EntityId);\r\n\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARED;\r\n relationRecord.Level ^= SECURITY_LEVELS.SHARING_READY;\r\n\r\n this._updateDataModel.ChangeUserLevel(entity.EntityId, relationRecord.Id, relationRecord.Level);\r\n this._dataModel.valueHasMutated();\r\n\r\n return true;\r\n }\r\n\r\n MakeSharingReady(entity: EntityRelationsViewModel, users: RelationRecordViewModel[]) {\r\n users.forEach(user => {\r\n if (user.Shared) {\r\n user.Level ^= SECURITY_LEVELS.SHARED;\r\n user.Level ^= SECURITY_LEVELS.SHARING_READY;\r\n\r\n this._updateDataModel.ChangeUserLevel(entity.EntityId, user.Id, user.Level);\r\n }\r\n })\r\n }\r\n\r\n NavigateByLink(record: RelationRecordViewModel, entityRelations: EntityRelationsViewModel) {\r\n const data = {\r\n EntityId: entityRelations.EntityId,\r\n RecordId: record.Id,\r\n RecordTypeId: record.TypeId,\r\n IsOpenInModal: true,\r\n Owner: this._form.GetScreen()\r\n };\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n OpenUserAssignment(userEntityRelations: UserEntityRelationsViewModel) {\r\n this._searchScreen = new SearchScreen({\r\n EntityId: userEntityRelations.EntityId,\r\n SearchTerm: '',\r\n Sharing: true,\r\n SubjectEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n SubjectTypeId: this.GetForm().GetScreen().GetTableTypeId(),\r\n SubjectRecordId: this.GetForm().GetScreen().GetRecordId(),\r\n SearchByRelations: this.GetRelations()\r\n });\r\n\r\n this._searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs) => this.LinkSelectedRecord(userEntityRelations, [eventArgs.data.RecordId]));\r\n this._searchScreen.Show();\r\n }\r\n\r\n CollapsingLinks(number, data, event) {\r\n if (data.Records().length > 7) {\r\n $(event.currentTarget).toggleClass('open');\r\n $(event.currentTarget).next('.entity-records').toggleClass('open');\r\n }\r\n\r\n if (number) {\r\n if (_.contains(this._openNumbers, number)) {\r\n this._openNumbers = _.without(this._openNumbers, number)\r\n } else {\r\n this._openNumbers.push(number);\r\n }\r\n }\r\n }\r\n\r\n IsOpen(number): boolean {\r\n return number && _.contains(this._openNumbers, number);\r\n }\r\n\r\n Deserialize() {\r\n return Serialize(this._updateDataModel);\r\n }\r\n\r\n IsValid() {\r\n const linkRequiredFields = _.filter(this.GetModel().Fields, (field) => field.LinkRequired);\r\n const linkRequiredEntitiesIds = _.map(linkRequiredFields, (field) => field.EntityId);\r\n\r\n if(linkRequiredEntitiesIds.length > 0){\r\n let errorEntities = [];\r\n _.each(this._dataModel().Entities(), (entity) =>{\r\n if(_.contains(linkRequiredEntitiesIds, entity.EntityId) && entity.Records().length == 0){\r\n entity._isValidEntity(false);\r\n errorEntities.push(entity.EntityTranslatedName || entity.EntityName);\r\n }\r\n });\r\n\r\n if(errorEntities.length > 0){\r\n this.GetForm().ValidateExpandSubForm();\r\n new Notifier().Failed(NOTIFICATIONS.LINKS_TO_ENTITIES_MUST_BE_CREATED.replace('Entities', errorEntities.join(', ')));\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n UpdateRecordOwner(user: UserModel) {\r\n const userRelation = this._dataModel().UserRelation() as EntityRelationsViewModel;\r\n if (userRelation) {\r\n const recordOwner = userRelation.Records().find(u => u.IsRecordOwner);\r\n if (recordOwner.Id === user.Id) return;\r\n\r\n let recordOwnerLevel = SECURITY_LEVELS.NEW_OWNER;\r\n\r\n if (recordOwner) {\r\n if (recordOwner.Planner) {\r\n recordOwner.Level -= SECURITY_LEVELS.PLANNER;\r\n recordOwnerLevel += SECURITY_LEVELS.PLANNER;\r\n }\r\n\r\n recordOwner.IsRecordOwner = false;\r\n recordOwner.Level -= SECURITY_LEVELS.OWNER;\r\n\r\n this._updateDataModel.ChangeUserLevel(userRelation.EntityId, recordOwner.Id, recordOwner.Level);\r\n }\r\n\r\n const newRecordOwner = userRelation.Records().find(u => u.Id == user.Id);\r\n\r\n if (newRecordOwner) {\r\n newRecordOwner.IsRecordOwner = true;\r\n newRecordOwner.Level = recordOwnerLevel;\r\n newRecordOwner.UserAllowance = user.UserAllowance;\r\n this._dataModel.valueHasMutated();\r\n\r\n this._updateDataModel.ChangeUserLevel(userRelation.EntityId, newRecordOwner.Id, newRecordOwner.Level);\r\n return;\r\n }\r\n\r\n const newRecordOwnerRelation = new NewRelationModel();\r\n newRecordOwnerRelation.Name = user.Name;\r\n newRecordOwnerRelation.Id = user.Id;\r\n newRecordOwnerRelation.TypeName = 'User';\r\n newRecordOwnerRelation.IsRecordOwner = true;\r\n newRecordOwnerRelation.Level = recordOwnerLevel;\r\n newRecordOwnerRelation.UserAllowance = user.UserAllowance;\r\n\r\n this.AddRecord(user.Id, userRelation, newRecordOwnerRelation);\r\n }\r\n }\r\n\r\n @enumerable private get IsNewRecord(): boolean {\r\n return this._subjectRecordId === 0;\r\n }\r\n\r\n @enumerable get SubjectRecordId() {\r\n return this._subjectRecordId;\r\n }\r\n\r\n private AddRecordOwner(recordSpecs: RecordSpecsModel) {\r\n let userManager = UserManager.Instance,\r\n userId = userManager.CurrentUser.Id,\r\n userName = userManager.CurrentUser.Name;\r\n\r\n BlockUI.Block();\r\n return userManager.GetUserAllowance()\r\n .then((userAllowance: number) => {\r\n let relations = this._dataModel();\r\n let userRelation: EntityRelationsViewModel = relations.UserRelation();\r\n\r\n\t\t\t\tif (userRelation) {\r\n\t\t\t\t\tlet securityLevel = SECURITY_LEVELS.NEW_OWNER;\r\n\r\n\t\t\t\t\tlet exampleOwner = _.find(userRelation.Records(), (record: RelationRecordViewModel) => record.IsRecordOwner);\r\n\t\t\t\t\tif (exampleOwner) {\r\n\t\t\t\t\t\tsecurityLevel = exampleOwner.Level;\r\n\t\t\t\t\t}\r\n\r\n let currentUserRelation = new RelationRecordViewModel({\r\n Id: userId,\r\n Name: userName,\r\n NameTranslation: null,\r\n\t\t\t\t\t\tLevel: securityLevel,\r\n IsMain: true,\r\n TypeName: \"User\",\r\n TypeTranslatedName: \"User\",\r\n TypeId: 0,\r\n IsRecordOwner: true,\r\n UserAllowance: userAllowance,\r\n KSeq: 0\r\n });\r\n\r\n let userRelations = userRelation.Records();\r\n\r\n if (recordSpecs.IsExample || exampleOwner) {\r\n\r\n let currentUser = _.find(userRelation.Records(),\r\n (record: RelationRecordViewModel) => record.Id === currentUserRelation.Id);\r\n\r\n userRelations = _.without(userRelation.Records(), exampleOwner, currentUser);\r\n }\r\n userRelations = userRelations.filter(item => item.Id !== userId);\r\n userRelations.splice(0, 0, currentUserRelation);\r\n userRelations.sort((relation) => {\r\n return relation.IsRecordOwner ? -1 : 1;\r\n });\r\n\r\n userRelation.Records(userRelations);\r\n\r\n userRelations.forEach(userLink => {\r\n this._updateDataModel.AddNewRelation(this.GetControlId(), this._subjectRecordId, userRelation.EntityId, userLink);\r\n this._updateDataModel.ChangeUserLevel(userRelation.EntityId, userLink.Id, userLink.Level);\r\n });\r\n this._dataModel(relations);\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private RemoveRelatedRecord(recordId: number, entityId: number) {\r\n _.each(this._dataModel().Entities(),\r\n entity => entity.AutoLinkedRecords.remove(el => el.RecordId === recordId && el.EntityId === entityId));\r\n }\r\n\r\n\r\n private async GetRecordData(entityRelations: EntityRelationsViewModel, relationRecord: RelationRecordViewModel, linkTypes, isUnlinkedRelationNew) {\r\n\r\n const linkEditor = (await import('Core/Screens/Common/LinkEditor/LinkEditor')).LinkEditor;\r\n\r\n let subjectEntityId = this._form.GetScreen().GetEntityId();\r\n let subjecRecordId = this._form.GetScreen().GetRecordId();\r\n let subjectTypeId = this._form.GetScreen().GetTableTypeId();\r\n let subjectKindId = this._form.GetScreen().GetKindId();\r\n\r\n let isNew = relationRecord.IsNew;\r\n let changedData = _.find(this._updateDataModel.LinkEditorChanges, item =>\r\n item.EntityId === entityRelations.EntityId && item.RecordId === relationRecord.Id && item.Guid === relationRecord.Guid);\r\n\r\n let relationModel = {\r\n MainEntityId: subjectEntityId,\r\n MainRecordId: subjecRecordId,\r\n MainRecordTypeId: subjectTypeId,\r\n MainRecordKindId: subjectKindId,\r\n RelatedEntityId: entityRelations.EntityId,\r\n RelatedRecordId: relationRecord.Id,\r\n KSeq: relationRecord.KSeq,\r\n RelationEntityName: entityRelations.EntityName\r\n };\r\n\r\n let selectedRecord = null;\r\n let relationTypeFieldSelectedValue = null;\r\n let relationTypeField: any = null;\r\n if (isUnlinkedRelationNew) {\r\n relationTypeField = _.filter((isUnlinkedRelationNew.FieldValues as any), (field: any) => {\r\n return field.FieldValue[0].split('.')[1] === RELATION_TYPE_VALUE_FIELD;\r\n })[0];\r\n const relationTypeFieldSelectedValue = relationTypeField && relationTypeField.FieldValue[1] || null;\r\n selectedRecord = relationTypeField ? relationTypeField.FieldValue[1] : null;\r\n }\r\n\r\n var deferredResult = P.defer();\r\n if (!selectedRecord && entityRelations.HasFields) {\r\n BlockUI.Block();\r\n\r\n LinkEditorStore.GetData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n MainRecordTypeId: relationModel.MainRecordTypeId,\r\n MainRecordKindId: relationModel.MainRecordKindId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n Kseq: relationModel.KSeq,\r\n IsNew: isNew\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(model => {\r\n const FRelationFieldModel = _.where(model.Fields, {\r\n Name: RELATION_TYPE_VALUE_FIELD\r\n })[0];\r\n\r\n this.GetLinkTypes(linkEditor, relationModel, FRelationFieldModel, model, changedData, null);\r\n\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n } else {\r\n this.GetLinkTypes(linkEditor, relationModel, relationTypeField, null, changedData, selectedRecord);\r\n }\r\n }\r\n\r\n private GetLinkTypes(linkEditor, relationModel, FRelationFieldModel, model, changedData, selectedRecord) {\r\n linkEditor.GetRelationTypesData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n SequenceId: relationModel.KSeq\r\n }, FRelationFieldModel,\r\n (relationTypes, relationTypeFieldData) => {\r\n let selectedRecordValue = selectedRecord || null;\r\n if (!selectedRecordValue && changedData) {\r\n selectedRecordValue = _.filter((changedData.FieldValues as any), (field: any) => {\r\n return field.FieldValue[0].split('.')[1] === RELATION_TYPE_VALUE_FIELD;\r\n })[0];\r\n\r\n selectedRecordValue = selectedRecordValue && selectedRecordValue.FieldValue[1] || null\r\n }\r\n const requiredRelationType: any = _.where(relationTypes, {\r\n RecordId: selectedRecordValue\r\n })[0];\r\n this.UpdateLinkTypesState(relationModel.RelationEntityName, relationModel.RelatedRecordId, requiredRelationType && requiredRelationType.TypeName || null, +1)\r\n }\r\n );\r\n }\r\n\r\n private UnLink(relationRecord: RelationRecordViewModel, entityRelations: EntityRelationsViewModel) {\r\n const isUnlinkedRelationNew = _.where(this._updateDataModel.LinkEditorChanges, {\r\n Guid: relationRecord.Guid\r\n })[0];\r\n\r\n if (isUnlinkedRelationNew) {\r\n this.GetRecordData(entityRelations, relationRecord, this._linkTypes, isUnlinkedRelationNew);\r\n } else {\r\n this.GetRecordData(entityRelations, relationRecord, this._linkTypes, null);\r\n }\r\n\r\n entityRelations.Records(_.without(entityRelations.Records(), relationRecord));\r\n\r\n this._updateDataModel.DeleteRelation({\r\n EntityId: entityRelations.EntityId,\r\n RecordId: relationRecord.Id,\r\n KSeq: relationRecord.KSeq,\r\n IsNew: relationRecord.IsNew,\r\n Guid: relationRecord.Guid\r\n });\r\n\r\n let field = _.find(this.Fields, f=> f.EntityId === entityRelations.EntityId);\r\n\r\n if (relationRecord.IsMain()) {\r\n let firstRecord = _.first(entityRelations.Records());\r\n if (firstRecord) {\r\n this.ChangeRelation(firstRecord, entityRelations, true);\r\n }\r\n \r\n let mainRecordId = firstRecord ? firstRecord.Id : null;\r\n this.UpdateVariable({ Field: this.GetPrimaryKeyField(field), ControlType: CONTROL_TYPES.LinkList }, mainRecordId);\r\n }\r\n\r\n if (this._updateDataModel.ActionSubjectRecord &&\r\n this._updateDataModel.ActionSubjectRecord.EntityId === entityRelations.EntityId &&\r\n this._updateDataModel.ActionSubjectRecord.RecordId === relationRecord.Id) {\r\n\r\n this._updateDataModel.ActionSubjectRecord = null;\r\n new Notifier().Warning(NOTIFICATIONS.REFERENCE_WAS_UNSET);\r\n }\r\n\r\n this._dataModel.valueHasMutated();\r\n this.RemoveRelatedRecord(relationRecord.Id, entityRelations.EntityId);\r\n }\r\n\r\n private CheckRelationTypeInstancing(entityRelations, linkTypes) {\r\n const relatedLinks = _.where(linkTypes, {\r\n EntityId: entityRelations.EntityId\r\n });\r\n return relatedLinks;\r\n }\r\n\r\n async EditRecord(entityRelations: EntityRelationsViewModel, relationRecord: RelationRecordViewModel, linkTypes) {\r\n if (!entityRelations.HasFields) {\r\n return;\r\n }\r\n\r\n const linkEditor = (await import('Core/Screens/Common/LinkEditor/LinkEditor')).LinkEditor;\r\n let subjectEntityId = this._form.GetScreen().GetEntityId();\r\n let subjectRecordId = this._form.GetScreen().GetRecordId();\r\n let subjectTypeId = this._form.GetScreen().GetTableTypeId();\r\n let subjectKindId = this._form.GetScreen().GetKindId();\r\n\r\n let isNew = relationRecord.IsNew;\r\n let data = _.find(this._updateDataModel.LinkEditorChanges, item =>\r\n item.EntityId === entityRelations.EntityId && item.RecordId === relationRecord.Id && item.Guid === relationRecord.Guid);\r\n\r\n let relation = {\r\n MainEntityId: subjectEntityId,\r\n MainRecordId: subjectRecordId,\r\n MainRecordTypeId: subjectTypeId,\r\n MainRecordKindId: subjectKindId,\r\n RelatedEntityId: entityRelations.EntityId,\r\n RelatedRecordId: relationRecord.Id,\r\n RelatedRecordTypeId: relationRecord.TypeId,\r\n KSeq: relationRecord.KSeq\r\n };\r\n\r\n linkEditor.LoadScreen(relation, isNew, data, true, this, true)\r\n .then(screen => {\r\n if (screen !== null) {\r\n let linkEditor = screen;\r\n\r\n linkEditor.On(\"SAVE_DATA\", this, eventArgs => {\r\n\r\n let data = <LinkEditorDataModel>eventArgs.data;\r\n let existsChanges = _.find(this._updateDataModel.LinkEditorChanges, item =>\r\n item.EntityId === data.EntityId && item.RecordId === data.RecordId && item.Guid === relationRecord.Guid);\r\n\r\n\r\n if (existsChanges) {\r\n _.each(data.FieldValues, item => {\r\n let value = _.find(existsChanges.FieldValues, fieldValue => fieldValue.FieldId === item.FieldId);\r\n\r\n if (value) {\r\n value.FieldValue = item.FieldValue;\r\n } else {\r\n existsChanges.FieldValues.push(item);\r\n }\r\n });\r\n } else {\r\n\r\n let editRelationData = new EditLinkDataModel(data, relationRecord.Guid);\r\n\r\n this._updateDataModel.LinkEditorChanges.push(editRelationData);\r\n\r\n const targetedEntity = _.where(this._linkTypesInstancesLeft, {\r\n EntityId: relation.RelatedEntityId\r\n })[0];\r\n if (targetedEntity) {\r\n const existsRecords = _.where(targetedEntity.Records, {\r\n RecordId: relationRecord.Id\r\n });\r\n\r\n\r\n if (existsRecords.length === 0) {\r\n targetedEntity.Records.push({\r\n RecordId: relationRecord.Id,\r\n LinkTypes: _.extend([], targetedEntity.LinkTypes)\r\n });\r\n }\r\n }\r\n\r\n }\r\n });\r\n\r\n this.On('LinkListDispose', this, () => linkEditor.Close());\r\n } else {\r\n new Notifier().Warning(LABELS.TABLE_TEXT_NON_HAS_FIELDS);\r\n }\r\n })\r\n .fail(err => new Notifier($(this._el)).Warning(err.message));\r\n }\r\n\r\n ClickLinkRequired(field: AttachedFieldModel) {\r\n field.LinkRequiredObservable(field.LinkRequiredObservable());\r\n this.ControlModify();\r\n }\r\n\r\n Dispose() {\r\n super.Dispose();\r\n this.Trigger('LinkListDispose');\r\n if (this._searchScreen) {\r\n this._searchScreen.Close();\r\n }\r\n }\r\n}","// Module\nvar code = \"<label> <div class=\\\"ToolBarPreview\\\"> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </div> </label>\";\n// Exports\nexport default code;","// Module\nvar code = \"<fieldset class=\\\"group-control grid\\\"> <legend class=\\\"group-control-label\\\"> <!-- ko text: Name --><!-- /ko --> </legend> <div data-bind=\\\"dragula: { data: DesignFields, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropEntityIntoLinkList.bind($root) },\\r\\n visible: !LinkListAutoProperty || !_isAuoProperties()\\\" class=\\\"edit-linklist-root dropentity-container\\\"> <div class=\\\"drop-entity draggable-entity clearfix\\\"> <!--ko if: EntityName !== 'SYS_USERS' --> <input data-bind=\\\"checked: LinkRequiredObservable,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $parent.ClickLinkRequired.bind($parent, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { id: Name+Id, name: Name+Id }\\\" class=\\\"custom-checkbox\\\" type=\\\"checkbox\\\"/> <label data-bind=\\\"attr: {for: Name+Id}, preventBubble: ['click'], tooltip: { content: $parent._labels.LINKED_RECORD_REQUIRED }\\\" class=\\\"label-custom-checkbox\\\"></label> <!--/ko--> <!--ko with: $parent.GetDesignIcon($data) --> <!-- ko template: { name: GetTemplateName.bind($rawData) } --><!-- /ko --> <!--/ko--> <span data-bind=\\\"text: $parent.GetDisplayedName($data)\\\" class=\\\"drop-entity-name transition\\\"></span> <!--ko if: EntityName !== 'SYS_USERS' --> <div class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveField.bind($root, $data, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"></span> </div> <!--/ko--> </div> </div> <!--ko if: LinkListAutoProperty || _isAuoProperties() --> <div class=\\\"edit-linklist-root dropentity-container\\\"> <div class=\\\"drop-entity draggable-entity clearfix\\\"> <span class=\\\"text-left additional-icon custom-color-option fa-stack fa fa-3x fa-cogs\\\"></span> <span class=\\\"drop-entity-name transition\\\">AUTO</span> </div> </div> <!--/ko--> </fieldset>\";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nimport { SecurityDataModel } from 'Core/Components/SecurityEditor/Form/Models/SecurityDataModel';\r\n\r\nexport class NewRelationModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.Id = null;\r\n\t\tthis.IsMain = false;\r\n\t\tthis.TypeName = null;\r\n this.TypeTranslatedName = null;\r\n this.Name = null;\r\n this.NameTranslation = null;\r\n\t\tthis.Level = null;\r\n\t\tthis.LinkFieldId = null;\r\n\t\tthis.IsNewLink = false;\r\n\t\tthis.IsRecordOwner = false;\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tLevel: number;\r\n\r\n\t@deserialize\r\n\tLinkFieldId: number;\r\n\r\n\t@deserialize\r\n\tIsNewLink: boolean;\r\n\r\n\t@deserialize\r\n\tHasCustomFields: boolean;\r\n\r\n\t@deserialize\r\n\tIsRecordOwner: boolean;\r\n\r\n\t@deserialize\r\n\tIsNewRecord: boolean;\r\n\r\n\tUserAllowance: number;\r\n}","import * as _ from 'underscore';\r\nimport { serialize, serializeAs } from 'libs/cerialize';\r\n\r\nimport {RelationshipTypes} from \"Core/Controls/Grid/BaseGrid/Enums/RelationshipTypes\";\r\n\r\nimport { DataModel as LinkEditorDataModel } from 'Core/Screens/Common/LinkEditor/Models/DataModel'\r\nimport { RelationRecordViewModel } from './LinkListRelationsViewModel';\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\n\r\nexport class NewRelationModel {\r\n\tconstructor(\r\n\t\tcontrolId: number,\r\n\t\trecordId: number,\r\n\t\trelatedEntityId: number,\r\n\t\trelatedRecordId: number,\r\n\t\tguid: string,\r\n\t\tlevel: number,\r\n\t\tisMain: boolean,\r\n\t\tisNewRecord: boolean\r\n\t) {\r\n\t\tthis.ControlId = controlId;\r\n\t\tthis.RecordId = recordId;\r\n\t\tthis.RelatedEntityId = relatedEntityId;\r\n\t\tthis.RelatedRecordId = relatedRecordId;\r\n\t\tthis.Level = level;\r\n\t\tthis.Guid = guid;\r\n\t\tthis.IsMain = isMain;\r\n\t\tthis.IsNewRecord = isNewRecord;\r\n\t}\r\n\r\n\t@serialize\r\n\tControlId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@serialize\r\n\tRelatedEntityId: number;\r\n\r\n\t@serialize\r\n\tRelatedRecordId: number;\r\n\r\n\t@serialize\r\n\tGuid: string;\r\n\r\n\t@serialize\r\n\tIsMain: boolean;\r\n\r\n\tLevel: number;\r\n\r\n\t@serialize\r\n IsNewRecord: boolean;\r\n}\r\n\r\nexport class DeletedRelationModel {\r\n\tconstructor(entityId: number, recordId: number, kSeq: number, relationshipType: number = RelationshipTypes.None) {\r\n\t\tthis.EntityId = entityId;\r\n\t\tthis.RecordId = recordId;\r\n\t\tthis.KSeq = kSeq;\r\n\t\tthis.RelationshipType = relationshipType;\r\n\t}\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@serialize\r\n\tKSeq: number;\r\n\r\n\t@serialize\r\n\tRelationshipType: number;\r\n}\r\n\r\nexport class ChangeRelationModel {\r\n constructor(entityId: number, oldId: number, newId: number, guid: string, kSeq?: number, oldKSeq?: number) {\r\n\t\tthis.EntityId = entityId;\r\n\t\tthis.OldId = oldId;\r\n\t\tthis.NewId = newId;\r\n\t\tthis.KSeq = kSeq;\r\n this.Guid = guid;\r\n this.OldKSeq = oldKSeq;\r\n }\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n OldId: number;\r\n\r\n @serialize\r\n OldKSeq: number;\r\n\r\n\t@serialize\r\n\tNewId: number;\r\n\r\n\t@serialize\r\n\tKSeq: number;\r\n\r\n\t@serialize\r\n\tGuid: string;\r\n}\r\n\r\nexport class ChangeSecurityModel {\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tLevel: number;\r\n}\r\n\r\ninterface DeleteRelation {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tKSeq: number;\r\n\tGuid: string;\r\n\tIsNew: boolean;\r\n}\r\n\r\nexport class FieldDataModel {\r\n\tFieldId: number;\r\n\tFieldValue: Array<string>;\r\n}\r\n\r\nexport class EditLinkDataModel {\r\n\tconstructor(model: LinkEditorDataModel, relationGuid: string) {\r\n\t\tthis.FieldValues = model.FieldValues;\r\n\t\tthis.KSeq = model.KSeq;\r\n\t\tthis.EntityId = model.EntityId;\r\n\t\tthis.RecordId = model.RecordId;\r\n\t\tthis.Guid = relationGuid;\r\n\t}\r\n\r\n\tFieldValues: Array<FieldDataModel>;\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tKSeq?: number;\r\n\tGuid: string;\r\n}\r\n\r\nexport class UpdateDataModel {\r\n\tMainEntityId: number;\r\n\tMainRecordId: number;\r\n\r\n\tReferenceLookupFieldId: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.MainRecordId = null;\r\n\t\tthis.NewRelations = [];\r\n\t\tthis.DeletedRelations = [];\r\n\t\tthis.ChangedRelations = [];\r\n\t\tthis.ChangedSecurity = [];\r\n\t\tthis.LinkEditorChanges = [];\r\n\t}\r\n\r\n\t@serializeAs(NewRelationModel)\r\n\tNewRelations: Array<NewRelationModel>;\r\n\r\n\t@serializeAs(DeletedRelationModel)\r\n\tDeletedRelations: Array<DeletedRelationModel>;\r\n\r\n\t@serializeAs(ChangeRelationModel)\r\n\tChangedRelations: Array<ChangeRelationModel>;\r\n\r\n\t@serializeAs(ChangeSecurityModel)\r\n\tChangedSecurity: Array<ChangeSecurityModel>;\r\n\r\n\t@serializeAs(LinkEditorDataModel)\r\n\tLinkEditorChanges: Array<EditLinkDataModel>;\r\n\r\n\t@serializeAs(ActionSubjectRecordModel)\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n\r\n\tAddNewRelation(controlId: number, recordId: number, relatedEntityId: number, relatedRecord: RelationRecordViewModel) {\r\n\t\tif (controlId && relatedEntityId && !!relatedRecord) {\r\n\t\t\tlet deletedRelation = _.find(this.DeletedRelations, (item) =>\r\n\t\t\t\titem.RecordId === relatedRecord.Id && item.EntityId === relatedEntityId && item.KSeq === relatedRecord.KSeq);\r\n\r\n\t\t\tif (deletedRelation) {\r\n\t\t\t\tthis.DeletedRelations = _.without(this.DeletedRelations, deletedRelation);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis.NewRelations.push(new NewRelationModel(controlId, recordId, relatedEntityId, relatedRecord.Id, relatedRecord.Guid, relatedRecord.Level, relatedRecord.IsMain(), relatedRecord.IsNewRecord));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDeleteRelation(relation: DeleteRelation) {\r\n\t\tif (relation.EntityId && relation.RecordId) {\r\n\t\t\tlet newRelation = _.find(this.NewRelations, (item) =>\r\n\t\t\t\titem.RelatedRecordId === relation.RecordId && item.RelatedEntityId === relation.EntityId && item.Guid === relation.Guid);\r\n\r\n\t\t\tif (newRelation) {\r\n\t\t\t\tthis.NewRelations = _.without(this.NewRelations, newRelation);\r\n\t\t\t}\r\n\r\n\t\t\tlet changedRelation = _.find(this.ChangedRelations, (item) =>\r\n\t\t\t\titem.EntityId === relation.EntityId && item.OldId === relation.RecordId\r\n\t\t\t\t&& (item.Guid === relation.Guid || item.KSeq === relation.KSeq));\r\n\r\n\t\t\tif (changedRelation) {\r\n\t\t\t\tthis.ChangedRelations = _.without(this.ChangedRelations, changedRelation);\r\n\t\t\t}\r\n\r\n\t\t\tlet changedLevelRecord = _.find(this.ChangedSecurity, { EntityId: relation.EntityId, Id: relation.RecordId });\r\n\t\t\tif (changedLevelRecord) {\r\n\t\t\t\tthis.ChangedSecurity = _.without(this.ChangedSecurity, changedLevelRecord);\r\n\t\t\t}\r\n\r\n\t\t\tif (relation.IsNew === false) {\r\n\t\t\t\tthis.DeletedRelations.push(new DeletedRelationModel(relation.EntityId, relation.RecordId, relation.KSeq));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tChangeRelation(entityId: number, oldId: number, newId: number, kSeq: number, guid: string, oldKSeq: number) {\r\n\t\tif (entityId && oldId && newId) {\r\n let newMainLink = new ChangeRelationModel(entityId, oldId, newId, guid, kSeq, oldKSeq);\r\n\t\t\tlet previousMainLink = _.findWhere(this.ChangedRelations, { EntityId: entityId });\r\n\t\t\tif (previousMainLink) {\r\n\t\t\t\tlet previousMainLinkIndex = this.ChangedRelations.indexOf(previousMainLink);\r\n\t\t\t\tthis.ChangedRelations.splice(previousMainLinkIndex, 1, newMainLink);\r\n\t\t\t}\r\n\t\t\tthis.ChangedRelations.push(newMainLink);\r\n\t\t}\r\n\t}\r\n\r\n\tChangeUserLevel(entityId: number, userId: number, level: number) {\r\n\t\tlet existingLink = _.findWhere(this.ChangedSecurity, { EntityId: entityId, Id: userId });\r\n\r\n\t\tif (existingLink) {\r\n\t\t\texistingLink.Level = level;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet changedSecurity = new ChangeSecurityModel();\r\n\r\n\t\tchangedSecurity.EntityId = entityId;\r\n\t\tchangedSecurity.Id = userId;\r\n\t\tchangedSecurity.Level = level;\r\n\r\n\t\tthis.ChangedSecurity.push(changedSecurity);\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class MailAddressModel {\r\n\tMailAddress: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.MailAddress = ko.observable('').extend({\r\n\t\t\temail: true,\r\n\t\t\trequired: {\r\n\t\t\t\tmessage: 'Please provide an email'\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { Modal } from \"Core/Common/Modal\";\r\nimport { Event } from 'Core/Common/Event';\r\nimport { MailAddressModel } from \"Core/Controls/Mail/Models/MailAddressModel\";\r\nimport { MailStore, IAddMailAddressRequestModel } from \"Core/Controls/Mail/Stores/MailStore\";\r\nimport { Notifier} from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { ADD_EMAIL_EVENTS } from \"Core/Controls/Mail/Events\";\r\n\r\nimport AddEmailAddressTemplate from \"Core/Controls/Mail/Templates/AddMailAddress.html\"\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nko.templates[\"Core/Controls/Mail/Templates/AddMailAddress\"] = AddEmailAddressTemplate;\r\n\r\nexport class AddEmailAddress extends Event {\r\n\tprivate _modal: Modal;\r\n\tprivate _recordId: number;\r\n\tprivate _entityId: number;\r\n\tprivate _model: KnockoutValidatedObservable<MailAddressModel>;\r\n\r\n\tconstructor(recordId: number, entityId: number) {\r\n\t\tsuper();\r\n\t\tthis._modal = new Modal();\r\n\t\tthis._recordId = recordId;\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._model = ko.validatedObservable(new MailAddressModel());\r\n\t\tthis.InitValidation();\r\n\t\tthis.AddEvent(ADD_EMAIL_EVENTS.EMAIL_SAVED);\r\n\t}\r\n\r\n\tInitValidation() {\r\n\t\tko.validation.init({ insertMessages: false }, true);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Mail/Templates/AddMailAddress';\r\n\t}\r\n\r\n\t@enumerable get Model(): KnockoutValidatedObservable<MailAddressModel> {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\t@enumerable get MailAddress(): string {\r\n\t\treturn this._model().MailAddress();\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tSave() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tvar requestModel: IAddMailAddressRequestModel = {\r\n\t\t\t\tRecordId: this._recordId,\r\n\t\t\t\tEntityId: this._entityId,\r\n\t\t\t\tMailAddress: this._model().MailAddress()\r\n\t\t\t};\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tMailStore.AddMailAddress(requestModel)\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.fail((err) => {\r\n\t\t\t\t\tvar notifier = new Notifier(null);\r\n\t\t\t\t\tnotifier.Failed(err.message);\r\n\t\t\t\t})\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tthis.Trigger(ADD_EMAIL_EVENTS.EMAIL_SAVED, { EmailAddress: this._model().MailAddress() });\r\n\t\t\t\t\tthis.Close();\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tClose() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tIsValid() {\r\n\t\tif (!this._model.isValid()) {\r\n\t\t\tthis._model.errors.showAllMessages();\r\n\t\t}\r\n\r\n\t\treturn this._model.isValid();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: Model --> <h4>Email:</h4> <input data-bind=\\\"value: MailAddress\\\" type=\\\"text\\\" class=\\\"form-control\\\"> <span data-bind=\\\"validationMessage: MailAddress\\\" class=\\\"help-block\\\"></span> <br> <!-- /ko --> <input data-bind=\\\"click: $data.Save.bind($data)\\\" class=\\\"btn btn-info\\\" type=\\\"button\\\" value=\\\"Add mail\\\">\";\n// Exports\nexport default code;","export class ScreenshotAttachmentModel {\r\n\tpublic Content: string;\r\n\tpublic Name: string;\r\n}","// Module\nvar code = \"<div class=\\\"inbox clearfix box-shadow-wrapper\\\"> <div data-bind=\\\"afterRender: AfterRender\\\" class=\\\"compose-mail-container\\\"> <div class=\\\"inbox-body\\\"> <div class=\\\"inbox-header\\\"> <span class=\\\"\\\" data-bind=\\\"text: CurrentActionText\\\"></span> </div> <div class=\\\"inbox-content inbox-compose\\\"> <div class=\\\"inbox-form-group mail-to clearfix\\\"> <label class=\\\"control-label\\\"><!--ko text: _labels.TO_ --><!--/ko-->:</label> <div class=\\\"controls controls-to\\\"> <select data-bind=\\\"select2Data: _recipients, select2: $data.GetSelect2Settings()\\\" class=\\\"form-control input-mail-to-selector\\\" placeholder=\\\"Hello\\\"> </select> <span class=\\\"inbox-cc-bcc\\\"> <span data-bind=\\\"click: ShowHideCc, css: {'opened': _isCcVisible()}\\\" class=\\\"inbox-cc\\\"> <!--ko text: _labels.CC --><!--/ko--> </span> <span data-bind=\\\"click: ShowHideBcc, css: {'opened': _isBccVisible()}\\\" class=\\\"inbox-bcc\\\"> <!--ko text: _labels.BCC --><!--/ko--> </span> </span> </div> </div> <!-- ko if: _isCcVisible--> <div class=\\\"inbox-form-group input-cc clearfix\\\"> <a data-bind=\\\"click: ShowHideCc\\\" class=\\\"close\\\" href=\\\"javascript:;\\\"> </a> <label class=\\\"control-label\\\"><!--ko text: _labels.CC --><!--/ko-->:</label> <div class=\\\"controls controls-cc\\\"> <select data-bind=\\\"select2Data: _ccRecepients, select2: $data.GetSelect2Settings('cc')\\\" class=\\\"form-control input-cc-selector\\\" placeholder=\\\"Hello\\\"> </select> </div> </div> <!-- /ko --> <!-- ko if: _isBccVisible --> <div class=\\\"inbox-form-group input-bcc clearfix\\\"> <a data-bind=\\\"click: ShowHideBcc\\\" class=\\\"close\\\" href=\\\"javascript:;\\\"> </a> <label class=\\\"control-label\\\"><!--ko text: _labels.BCC --><!--/ko-->:</label> <div class=\\\"controls controls-bcc\\\"> <select data-bind=\\\"select2Data: _bccRecepients, select2: $data.GetSelect2Settings('bcc')\\\" class=\\\"form-control input-bcc-selector\\\" placeholder=\\\"Hello\\\"> </select> </div> </div> <!-- /ko --> <div class=\\\"inbox-form-group email-subject\\\"> <label class=\\\"control-label\\\"><!--ko text: _labels.EMAIL_SUBJECT --><!--/ko-->:</label> <div class=\\\"controls\\\"> <input data-bind=\\\"value: _newSubject\\\" type=\\\"text\\\" name=\\\"subject\\\" class=\\\"mail-subject form-control\\\"> </div> </div> <textarea data-bind=\\\"attr: {id: _guid},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t tinymce : { guid: _guid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t isMailControl: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t autoresize: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t height: '100%',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t autoresize_min_height: '160',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t readOnly: false,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t autofocus: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t afterInit: $data.AfterTinyInit.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t afterChange: $data.AfterTinyChange.bind($data) }\\\" class=\\\"mail-body-editor\\\">\\r\\n\\t\\t\\t\\t</textarea> <div class=\\\"inbox-compose-attachment\\\"> <!-- ko if: _isEnableAttachment --> <!-- The fileupload-buttonbar contains buttons to add/delete files and start/cancel the upload --> <span data-bind=\\\"click: SearchAttachments\\\" id=\\\"searchButton\\\" class=\\\"btn green btn-outline fileinput-button add-documents\\\"> <i class=\\\"fa fa-plus\\\"></i> <span><!--ko text: _showAddFromDocuments() --><!-- /ko --> </span> </span> <!-- /ko --> <!-- The table listing the files available for upload/download --> <!-- ko if: Attachments().length --> <table class=\\\"table margin-top-10\\\" role=\\\"presentation\\\"> <tbody class=\\\"files\\\"> <!-- ko foreach: Attachments --> <tr class=\\\"template-download fade in\\\"> <td class=\\\"name\\\" style=\\\"padding-left:0!important;display:flex;flex-direction:row;margin-top:5px\\\"> <span data-bind=\\\"text: Name\\\" style=\\\"background:rgba(204,204,204,.3);float:left;display:block;line-height:27px;padding:0 5px\\\"></span> <!-- ko if: $parent._isEnableRemoveAttachment --> <a data-bind=\\\"click: $parent.RemoveAttachment.bind($parent)\\\" class=\\\"btn default btn-sm remove-attachment-btn\\\" data-type=\\\"\\\" data-url=\\\"\\\"> <i class=\\\"fa fa-times\\\"></i> </a> <!-- /ko --> </td> <!--<td class=\\\"delete\\\" width=\\\"10%\\\" align=\\\"right\\\"></td>--> </tr> <!-- /ko --> </tbody> </table> <!-- /ko --> </div> <div class=\\\"inbox-compose-btn\\\"> <a data-bind=\\\"click: Send\\\" class=\\\"send-button btn green\\\"> <i class=\\\"fa fa-check\\\"></i><!--ko text: _confirmations.SEND --><!--/ko--> </a> <a data-bind=\\\"click: $data.Discard.bind($data)\\\" class=\\\"btn default\\\"> <!--ko text: _labels.DISCARD --><!--/ko--> </a> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport 'lockr';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {TableStore} from \"Core/Common/Stores/TableStore\";\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {\r\n\tMailStore,\r\n\tISendMailRequestModel,\r\n\tIDestinationMail,\r\n\tICcRecipientModel,\r\n\tIBccRecipientModel\r\n} from 'Core/Controls/Mail/Stores/MailStore';\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {SearchByMainRelationTypes} from 'Core/Screens/SearchScreen/Enums/Enums';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {MailAttachmentModel} from 'Core/Controls/Mail/Models/MailAttachmentModel';\r\nimport {CookieManager} from 'Core/Common/CookieManager';\r\nimport {AddEmailAddress} from 'Core/Controls/Mail/AddEmailAddress';\r\nimport {MailItemExtendedModel} from 'Core/Controls/Mail//Models/MailItemExtendedModel';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {COMPOSER_EVENTS, ADD_EMAIL_EVENTS} from 'Core/Controls/Mail/Events';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as ConfirmationDialogEvents,\r\n\tTypes as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {ScreenshotAttachmentModel} from 'Core/Controls/Mail/Models/ScreenshotAttachmentModel';\r\nimport {IComposerOptionsModel} from 'Core/Controls/Mail/Models/ComposerOptionsModel';\r\nimport {DocumentStore} from 'Core/Controls/Document/Stores/DocumentStore';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from 'Core/Components/Translation/Locales';\r\nimport * as $ from \"jquery\";\r\n\r\nimport ComposeMailTemplate from 'Core/Controls/Mail/Templates/ComposeMailTemplate.html';\r\nimport SelectedRecepientTemplate from 'Core/Controls/Mail/Templates/SelectedRecepientTemplate.html';\r\nimport SelectOptionRecipientTemplate from 'Core/Controls/Mail/Templates/SelectOptionRecepientTemplate.html';\r\n\r\nko.templates['Core/Controls/Mail/Templates/ComposeMailTemplate'] = ComposeMailTemplate;\r\n\r\nexport class ComposeMail extends Event {\r\n\tprivate _labels: LABELS;\r\n\tprivate _confirmations: CONFIRMATIONS;\r\n\r\n\tprivate _isCcVisible: KnockoutObservable<boolean>;\r\n\tprivate _isBccVisible: KnockoutObservable<boolean>;\r\n\tprivate _sendScreenShot: KnockoutObservable<boolean>;\r\n\tprivate _newSubject: KnockoutObservable<string>;\r\n\tprivate _newBody: KnockoutObservable<string>;\r\n\tprivate _attachments: KnockoutObservableArray<MailAttachmentModel>;\r\n\tprivate _screenshots: KnockoutObservableArray<ScreenshotAttachmentModel>;\r\n\tprivate _guid: string;\r\n\tprivate _modal: Modal;\r\n\tprivate _isInModal: boolean;\r\n\tprivate _mailConnectionId: number;\r\n\tprivate _newReciver: KnockoutObservable<string>;\r\n\tprivate _newCc: KnockoutObservable<string>;\r\n\tprivate _newBcc: KnockoutObservable<string>;\r\n\tprivate _responseMailItem: MailItemExtendedModel;\r\n\r\n\tprivate _recipients: KnockoutObservableArray<IDestinationMail>;\r\n\tprivate _ccRecepients: KnockoutObservableArray<ICcRecipientModel>;\r\n\tprivate _bccRecepients: KnockoutObservableArray<IBccRecipientModel>;\r\n\tprivate _isEnableAttachment: KnockoutObservable<boolean>;\r\n\tprivate _isEnableRemoveAttachment: KnockoutObservable<boolean>;\r\n\r\n\tprivate IsReply: boolean;\r\n\tprivate IsForward: boolean;\r\n\tprivate IsReplyAll: boolean;\r\n\tprivate _currentAction: string;\r\n\tprivate _mailInfo: string;\r\n\tprivate _datetimeCreated: string;\r\n\tprivate _documentsEntityNameTranslation: KnockoutObservable<string>;\r\n\tprivate _showAddFromDocuments: KnockoutObservable<string>;\r\n\tprivate _screen: KnockoutObservable<IScreen>;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _subjectRecordId: number;\r\n\tprivate _subjectTypeId: number;\r\n\r\n\tconstructor(options?: IComposerOptionsModel) {\r\n\t\tsuper();\r\n\r\n\t\tthis._responseMailItem = options.ResponseMailItem;\r\n\t\tthis._guid = Guid.NewGuid();\r\n\t\tthis._isCcVisible = ko.observable(false);\r\n\t\tthis._isBccVisible = ko.observable(false);\r\n\t\tthis._sendScreenShot = ko.observable(options.SendScreenShot);\r\n\t\tthis._screenshots = ko.observableArray([]);\r\n\t\tthis._subjectEntityId = options.SubjectEntityId;\r\n\t\tthis._subjectRecordId = options.SubjectRecordId;\r\n\t\tthis._subjectTypeId = options.SubjectTypeId;\r\n\r\n\t\tthis.IsReply = options.IsReply;\r\n\t\tthis.IsForward = options.IsForward;\r\n\t\tthis.IsReplyAll = options.IsReplyAll;\r\n\r\n\t\tthis._newBody = ko.observable('');\r\n\t\tthis._newSubject = ko.observable('');\r\n\t\tthis._newReciver = ko.observable('');\r\n\t\tthis._newCc = ko.observable('');\r\n\t\tthis._newBcc = ko.observable('');\r\n\t\tthis._attachments = ko.observableArray([]);\r\n\r\n\t\tthis._recipients = ko.observableArray([]);\r\n\t\tthis._ccRecepients = ko.observableArray([]);\r\n\t\tthis._bccRecepients = ko.observableArray([]);\r\n\t\tthis._documentsEntityNameTranslation = ko.observable('');\r\n\t\tthis._screen = ko.observable(null);\r\n\r\n\t\tthis._isInModal = false;\r\n\t\tthis._mailConnectionId = options.MailConnectionId;\r\n\t\tthis._datetimeCreated = options.DateTimeCreated;\r\n\t\tthis._showAddFromDocuments = ko.computed(() => { return `${LABELS.ADD_FROM} ${this._documentsEntityNameTranslation()}` });\r\n\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._confirmations = CONFIRMATIONS;\r\n\r\n\t\tthis.AddEvents();\r\n\t\tthis.Init();\r\n\t\tthis._isEnableAttachment = ko.observable(true);\r\n\t\tthis._isEnableRemoveAttachment = ko.observable(true);\r\n\t\tthis._isCcVisible.subscribe(newValue=>{\r\n\t\t\tif(!newValue){\r\n\t\t\t\tthis._ccRecepients([]);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._isBccVisible.subscribe(newValue=>{\r\n\t\t\tif(!newValue){\r\n\t\t\t\tthis._bccRecepients([]);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget CurrentActionText() {\r\n\t\treturn `${this._currentAction} ${LABELS.E_MAIL}`;\r\n\t}\r\n\r\n\tAddEvents() {\r\n\t\tthis.AddEvent(COMPOSER_EVENTS.EMAIL_SENT);\r\n\t\tthis.AddEvent(COMPOSER_EVENTS.DISCARD);\r\n\t\tthis.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n\t}\r\n\r\n\tPreventWindowConfirmation() {\r\n\t\tconst eventWindowConfirmation = (event) => {\r\n\t\t\t// Cancel the event as stated by the standard.\r\n\t\t\tevent.preventDefault();\r\n\t\t\t// Chrome requires returnValue to be set.\r\n\t\t\tevent.returnValue = 'Would you like to leave the page?';\r\n\t\t\treturn 'Would you like to leave the page?'\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n\t\tthis.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n\t\t\twindow.removeEventListener('beforeunload', eventWindowConfirmation);\r\n\t\t});\r\n\t}\r\n\r\n\tAddMailTo(firstName: string, mailTo: string) {\r\n\t\tthis._recipients.push({\r\n\t\t\tMail: mailTo,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\t}\r\n\r\n\tAddMailCC(firstName: string, mailTo: string) {\r\n\t\tthis._ccRecepients.push({\r\n\t\t\tName: '',\r\n\t\t\tMail: mailTo,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\r\n\t\tthis._isCcVisible(true);\r\n\t}\r\n\r\n\tAddMailBCC(firstName: string, mailTo: string) {\r\n\t\tthis._bccRecepients.push({\r\n\t\t\tName: '',\r\n\t\t\tMail: mailTo,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\r\n\t\tthis._isBccVisible(true);\r\n\t}\r\n\r\n\tAddMailWithRecord(mailTo: string, tableId: number, recordId: number) {\r\n\t\tthis._recipients.push({\r\n\t\t\tMail: mailTo,\r\n\t\t\tTableId: tableId,\r\n\t\t\tRecordId: recordId\r\n\t\t});\r\n\t}\r\n\r\n\tAddScreen(screen: IScreen) {\r\n\t\tthis._screen(screen);\r\n\t}\r\n\r\n\tAddBody(body: string){\r\n\t\tthis._newBody(body);\r\n\t}\r\n\r\n\tAddSubject(subject: string) {\r\n\t\tthis._newSubject(subject);\r\n\t}\r\n\r\n\tDiscard() {\r\n\t\tif (this._isInModal && this._modal) {\r\n\t\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\tText: CONFIRMATIONS.DISCARD,\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\t\tTextDecline: LABELS.NO\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n\t\t\t\tthis._modal.Close();\r\n\t\t\t\tthis.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n\t\t\t});\r\n\t\t\tconfirmationDialog.Show();\r\n\t\t}\r\n\r\n\t\tthis.Trigger(COMPOSER_EVENTS.DISCARD);\r\n\t}\r\n\r\n\tInit() {\r\n\t\tif (this.IsReply) {\r\n\t\t\tthis._currentAction = LABELS.REPLY;\r\n\t\t\tthis.ComposeBody();\r\n\t\t\tthis.FillInitialDataReply();\r\n\t\t} else if (this.IsReplyAll) {\r\n\t\t\tthis._currentAction = LABELS.REPLY_TO_ALL;\r\n\t\t\tthis.ComposeBody();\r\n\t\t\tthis.FillInitialDataReplyAll();\r\n\t\t} else if (this.IsForward) {\r\n\t\t\tthis._currentAction = LABELS.FORWARD;\r\n\t\t\tthis.ComposeBody();\r\n\t\t\tthis.FillInitialDataForward();\r\n\t\t} else {\r\n\t\t\tthis.PreventWindowConfirmation();\r\n\t\t\tthis._currentAction = LABELS.NEW;\r\n\t\t}\r\n\t}\r\n\r\n\tComposeBody() {\r\n\t\tthis._mailInfo =\r\n\t\t\t`${this._datetimeCreated} ${this._responseMailItem.FromName} ${this._responseMailItem.FromAddress} wrote:`;\r\n\r\n\t\tconst newBodyWithSignature =\r\n\t\t\t'<p></p><p></p><p></p>' + '<blockquote style=\"margin: 0 0 0 .8ex; border-left: 1px #ccc solid; padding-left: 1ex;\">' + this._mailInfo + '<p></p>' + this._responseMailItem.Body + '</blockquote>';\r\n\r\n\t\tthis._newBody(newBodyWithSignature);\r\n\t}\r\n\r\n\tFillInitialDataReply() {\r\n\t\tthis._newSubject('Re: ' + this._responseMailItem.Subject);\r\n\r\n\t\tconst fromAddress = this._responseMailItem.FromAddress;\r\n\r\n\t\tthis._recipients.push({\r\n\t\t\tName: this._responseMailItem.FromName,\r\n\t\t\tMail: fromAddress,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\t}\r\n\r\n\tFillInitialDataReplyAll() {\r\n\t\tthis._newSubject('Re: ' + this._responseMailItem.Subject);\r\n\r\n\t\tthis._responseMailItem.Cc.forEach((el) => {\r\n\t\t\tthis._ccRecepients.push({\r\n\t\t\t\tMail: el,\r\n\t\t\t\tName: '',\r\n\t\t\t\tRecordId: -1,\r\n\t\t\t\tTableId: -1\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tif (this._responseMailItem.DestinationMails.length) {\r\n\t\t\tthis._responseMailItem.DestinationMails.map((el) => {\r\n\t\t\t\tif (!(el.DestinationMails && el.DestinationMails.length)) {\r\n\t\t\t\t\tthis._recipients.push({\r\n\t\t\t\t\t\tName: '',\r\n\t\t\t\t\t\tMail: el.Address,\r\n\t\t\t\t\t\tRecordId: -1,\r\n\t\t\t\t\t\tTableId: -1\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tel.DestinationMails.map((destMail) => {\r\n\t\t\t\t\tthis._recipients.push({\r\n\t\t\t\t\t\tName: destMail.Name,\r\n\t\t\t\t\t\tMail: el.Address,\r\n\t\t\t\t\t\tRecordId: destMail.RecordId,\r\n\t\t\t\t\t\tTableId: destMail.TableId\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._recipients.push({\r\n\t\t\tName: this._responseMailItem.FromName,\r\n\t\t\tMail: this._responseMailItem.FromAddress,\r\n\t\t\tRecordId: -1,\r\n\t\t\tTableId: -1\r\n\t\t});\r\n\r\n\t\tlet recipients = this._recipients().concat(this._ccRecepients());\r\n\r\n\t\tthis._recipients(recipients);\r\n\r\n\t\tthis.DeleteDuplicatedRecipients();\r\n\t}\r\n\r\n\tFillInitialDataForward() {\r\n\t\tthis._newSubject('Re: ' + this._responseMailItem.Subject);\r\n\t}\r\n\r\n\tDeleteDuplicatedRecipients() {\r\n\t\tthis._recipients(_.uniq(this._recipients(), (recipient)=>recipient.Mail));\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ComposeMailTemplate;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Controls/Mail/Templates/ComposeMailTemplate';\r\n\t}\r\n\r\n\tShowHideCc() {\r\n\t\tthis._isCcVisible(!this._isCcVisible());\r\n\t}\r\n\r\n\tShowHideBcc() {\r\n\t\tthis._isBccVisible(!this._isBccVisible());\r\n\t}\r\n\r\n\tRemoveAttachment(attachment: MailAttachmentModel) {\r\n\t\tthis._attachments.splice(this._attachments.indexOf(attachment), 1);\r\n\t}\r\n\r\n\tSend() {\r\n\t\tif (this.IsReply || this.IsForward) {\r\n\t\t\tthis.SendReplyMail();\r\n\t\t} else if (this.IsReplyAll) {\r\n\t\t\tthis.SendReplyAllMail();\r\n\t\t} else {\r\n\t\t\tthis.SendMail();\r\n\t\t}\r\n\t}\r\n\r\n\tShowInModal(mailConnectionId) {\r\n\t\tthis._mailConnectionId = mailConnectionId;\r\n\t\tthis._isInModal = true;\r\n\t\tconst self = this;\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'compose-email',\r\n\t\t\tcloseOnEsc: false,\r\n\t\t\tonOpen: function () {\r\n\t\t\t\t$(this.closeButton[0]).off('click');\r\n\t\t\t\tthis.closeButton[0].addEventListener('click', self.PreventCloseModal.bind(self));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n\r\n\tPreventCloseModal(event) {\r\n\t\tevent.stopImmediatePropagation();\r\n\r\n\t\tlet confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.CLOSE,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.YES,\r\n\t\t\tTextDecline: LABELS.NO\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis._modal.Close();\r\n\t\t\tthis.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n\t\t});\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tSendMail() {\r\n\t\tconst requestModel: ISendMailRequestModel = this.SerializeData();\r\n\r\n\t\tif (!requestModel.Recipients.length) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_RECIPIENT);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tMailStore.SendMail(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tnew Notifier().Success(NOTIFICATIONS.EMAIL_WAS_SENT);\r\n\t\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_SENT, { Mail: requestModel, Id: result.Id });\r\n\r\n\t\t\t\tif (this._modal) {\r\n\t\t\t\t\tthis._modal.Close();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._screen().Refresh();\r\n\t\t\t\tthis.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tSendReplyMail() {\r\n\t\tconst requestModel: ISendMailRequestModel = this.SerializeData();\r\n\r\n\t\tif (!requestModel.Recipients.length) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_RECIPIENT);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block({ZIndex: ZIndexManager.Instance.NextValue});\r\n\r\n\t\tMailStore.SendMail(requestModel, 'ReplyMail')\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tnew Notifier().Success(NOTIFICATIONS.EMAIL_WAS_SENT);\r\n\t\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_SENT, { Mail: requestModel, Id: result.Id });\r\n\r\n\t\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Warning(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\tSendReplyAllMail() {\r\n\t\tconst requestModel: ISendMailRequestModel = this.SerializeData();\r\n\r\n\t\tif (!requestModel.Recipients.length) {\r\n\t\t\tnew Notifier().Warning(NOTIFICATIONS.PLEASE_ADD_RECIPIENT);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tBlockUI.Block({ZIndex: ZIndexManager.Instance.NextValue});\r\n\r\n\t\tMailStore.SendMail(requestModel, 'ReplyMail')\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) => {\r\n\t\t\t\tnew Notifier().Success('Email was sent');\r\n\r\n\t\t\t\tthis.Trigger(COMPOSER_EVENTS.EMAIL_SENT, { Mail: requestModel, Id: result.Id});\r\n\t\t\t})\r\n\t\t\t.fail((err) => {\r\n\t\t\t\tnew Notifier().Warning(err.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tGetSelect2Settings(type: string = null) {\r\n\t\tconst token = CookieManager.GetAuthToken();\r\n\t\tlet isRequestInProgress = false;\r\n\r\n\t\treturn {\r\n\t\t\tajax: {\r\n\t\t\t\turl: 'api/MailApi/GetDestinationMails',\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tdelay: 500,\r\n\t\t\t\theaders: {'Authorization': `Bearer ${token}`},\r\n\r\n\t\t\t\tdata: function (params) {\r\n\t\t\t\t\tisRequestInProgress = true;\r\n\r\n\t\t\t\t\t$(\".select2-search__field\").on(\"keydown\", function(event) {\r\n\t\t\t\t\t\tif (event.keyCode === 13 && isRequestInProgress) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tSearchPart: params.term,\r\n\t\t\t\t\t\tpage: params.page\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\r\n\t\t\t\ttransport: function (params, success, failure) {\r\n\t\t\t\t\tvar $request = $.ajax(params);\r\n\r\n\t\t\t\t\tBlockUI.Block({Target: $(\".select2-container--default\").get(0)});\r\n\t\t\t\t\t$request.then(success);\r\n\t\t\t\t\t$request.fail(failure);\r\n\r\n\t\t\t\t\treturn $request;\r\n\t\t\t\t},\r\n\r\n\t\t\t\tprocessResults: function (data, params) {\r\n\t\t\t\t\tif (!data.IsSuccessfull) {\r\n\t\t\t\t\t\tnew Notifier().Failed(data.ErrorMessage);\r\n\r\n\t\t\t\t\t\treturn {results: []};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tparams.page = params.page || 1;\r\n\r\n\t\t\t\t\t_.each(data.ResultObject, (item: any) => item.id = item.TableId + '_' + item.RecordId);\r\n\r\n\t\t\t\t\t$(\".select2-search__field\").off(\"keydown\");\r\n\t\t\t\t\tisRequestInProgress = false;\r\n\t\t\t\t\tBlockUI.Unblock($(\".select2-container--default\").get(0));\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tresults: data.ResultObject,\r\n\t\t\t\t\t\tpagination: {\r\n\t\t\t\t\t\t\tmore: (params.page * 30) < data.total_count\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t},\r\n\r\n\t\t\t\tcache: false\r\n\t\t\t},\r\n\r\n\t\t\tmultiple: true,\r\n\r\n\t\t\tescapeMarkup: (markup) => markup,\r\n placeholder: \"\",\r\n\t\t\tallowClear: true,\r\n\t\t\tminimumInputLength: 3,\r\n\t\t\ttags: true,\r\n\t\t\tinitialData: this.GenerateInitialData(type),\r\n\t\t\tinitSelection: this.SetDefaultValue.bind(this, type),\r\n\t\t\ttemplateResult: this.Select2FormatData.bind(this, type),\r\n\t\t\ttemplateSelection: this.Select2FormatDataSelection.bind(this),\r\n\t\t\tvalidate: this.validateEmail,\r\n\t\t\tvalidateType: 'email',\r\n\t\t\tselectOnClose: true\r\n\t\t};\r\n\t}\r\n\r\n\tGenerateInitialData(type: string) {\r\n\t\tlet preselctedRecipients;\r\n\t\tlet recipients;\r\n\r\n\t\tif (type === 'cc') {\r\n\t\t\trecipients = this._ccRecepients();\r\n\t\t} else if (type === 'bcc') {\r\n\t\t\trecipients = this._bccRecepients();\r\n\t\t} else {\r\n\t\t\trecipients = this._recipients();\r\n\t\t}\r\n\r\n\t\tif (!recipients.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tpreselctedRecipients = recipients;\r\n\r\n\t\treturn preselctedRecipients.map((item, i) => {\r\n\t\t\treturn _.extend(item, {\r\n\t\t\t\t\tinitialDataId: 'initialData_' + i,\r\n\t\t\t\t\tid: i,\r\n\t\t\t\t\ttext: ''\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tSetDefaultValue(type: string, element, callback) {\r\n\t\tcallback(this.GetRecipients(this, type) || []);\r\n\t}\r\n\r\n\tGetRecipients(content: ComposeMail, type: string){\r\n\t\tif (type === 'cc') {\r\n\t\t\treturn this._ccRecepients();\r\n\t\t} else if (type === 'bcc') {\r\n\t\t\treturn this._bccRecepients();\r\n\t\t} else {\r\n\t\t\treturn this._recipients();\r\n\t\t}\r\n\t}\r\n\r\n\tSelect2FormatData(type: string, data) {\r\n\r\n\t\tif (data.RecordId == null) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tconst recipientName = data.Name;\r\n\r\n\t\tconst model = {\r\n\t\t\tRecipientType: type,\r\n\t\t\tParentContext: this,\r\n\t\t\tRecipientName: recipientName,\r\n\t\t\tEmail: data.Mail,\r\n\t\t\tAddEmail: this.AddEmail,\r\n\t\t\tId: data.RecordId,\r\n\t\t\tEntityId: data.TableId\r\n\t\t};\r\n\r\n\t\treturn (ko as any).renderTemplateX(SelectOptionRecipientTemplate, model);\r\n\t};\r\n\r\n\tvalidateEmail(email) {\r\n\t\tconst re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\r\n\t\treturn re.test(email);\r\n\t}\r\n\r\n\tSelect2FormatDataSelection(data) {\r\n\t\tlet recipientName = `${data.Name || ''} ${data.Mail || ''}`;\r\n\r\n\t\trecipientName = recipientName.trim() || data.text;\r\n\r\n\t\treturn (ko as any).renderTemplateX(SelectedRecepientTemplate, {RecipientName: recipientName});\r\n\t}\r\n\r\n\tAddEmail(model: any) {\r\n\r\n\t\tconst addEmail = new AddEmailAddress(model.Id, model.EntityId);\r\n\r\n\t\taddEmail.On(ADD_EMAIL_EVENTS.EMAIL_SAVED, this, (eventArgs: any) => {\r\n\t\t\t\r\n\t\t\tconst recipient = _.find(model.ParentContext.GetRecipients(model.ParentContext, model.RecipientType), (recipient: IDestinationMail) => {\r\n\t\t\t\treturn recipient.RecordId === model.Id;\r\n\t\t\t});\r\n\r\n\t\t\tif (recipient) {\r\n\t\t\t\trecipient.Mail = eventArgs.data.EmailAddress;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\taddEmail.ShowInModal();\r\n\t}\r\n\r\n\tAfterTinyInit(editor) {\r\n\t\teditor.setContent(this._newBody());\r\n\t}\r\n\r\n\tAfterTinyChange(content) {\r\n\t\tthis._newBody(content);\r\n\t}\r\n\r\n\tAddScreenShot(value: string) {\r\n\t\tconst newScreenshot = new ScreenshotAttachmentModel();\r\n\r\n\t\tnewScreenshot.Name = 'Screenshot ' + moment().format('DMMMYY-h:mm') + '.jpg';\r\n\t\tnewScreenshot.Content = value;\r\n\r\n\t\tthis.Screenshots().push(newScreenshot);\r\n\t}\r\n\r\n\tSerializeData() {\r\n\t\tconst ccList = this.SerializeCc();\r\n\t\tconst bccList = this.SerializeBcc();\r\n\t\tlet recipients = this.SerializeRecepients();\r\n\t\tlet attachmentsRequest = [];\r\n\r\n\t\tif (this.IsReplyAll && ccList) {\r\n\t\t\trecipients = this.SerializeRecepients().concat(ccList);\r\n\t\t}\r\n\r\n\t\tif (this._responseMailItem) {\r\n\t\t\tattachmentsRequest = this._responseMailItem.Attachments.map((el) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tGuid: this._responseMailItem.Guid,\r\n\t\t\t\t\tName: el.Name,\r\n\t\t\t\t\tMailConnectionId: this._mailConnectionId\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst screen = this._screen();\r\n\t\tconst subjectEntityId = this._subjectEntityId || screen?.GetEntityId();\r\n\t\tconst subjectRecordId = this._subjectRecordId || screen?.GetRecordId();\r\n\r\n\t\tconst sendMailRequestModel: ISendMailRequestModel = {\r\n\t\t\tMailConnectionId: this._mailConnectionId,\r\n\t\t\tSubject: this._newSubject(),\r\n\t\t\tBody: this.SerializeBody(),\r\n\t\t\tRecipients: recipients,\r\n\t\t\tAttachements: this.Attachments(),\r\n\t\t\tMessageId: null,\r\n\t\t\tScreenshots: this.Screenshots(),\r\n\t\t\tAttachmentsRequest: attachmentsRequest,\r\n\t\t\tSubjectEntityId: subjectEntityId,\r\n\t\t\tSubjectRecordId: subjectRecordId\r\n\t\t};\r\n\r\n\t\tif (ccList) {\r\n\t\t\tsendMailRequestModel.CcList = ccList;\r\n\t\t}\r\n\r\n\t\tif (bccList) {\r\n\t\t\tsendMailRequestModel.BccList = bccList;\r\n\t\t}\r\n\r\n\t\tif (this.IsReply || this.IsReplyAll || this.IsForward) {\r\n\t\t\tsendMailRequestModel.MessageId = this._responseMailItem.Guid;\r\n\t\t}\r\n\r\n\t\treturn sendMailRequestModel;\r\n\t}\r\n\r\n\tSerializeBody() {\r\n\t\treturn this._newBody();\r\n\t}\r\n\r\n\tSerializeRecepients(): any {\r\n\t\tconst recipients: IDestinationMail[] = [];\r\n\r\n\t\tconst recipientsFilteredData = this._recipients().filter((recipient: any) => {\r\n\t\t\treturn !!recipient.RecordId || this.validateEmail(recipient.text);\r\n\t\t});\r\n\r\n\t\t_.each(recipientsFilteredData, (recipientData: IDestinationMail | any) => {\r\n\t\t\tconst recipient: IDestinationMail = {\r\n\t\t\t\tTableId: recipientData.TableId || -1,\r\n\t\t\t\tRecordId: recipientData.RecordId || -1,\r\n\t\t\t\tMail: recipientData.Mail\r\n\t\t\t};\r\n\r\n\t\t\tif (recipient.RecordId === -1) {\r\n\t\t\t\trecipient.Mail = recipientData.text || recipientData.Mail;\r\n\t\t\t}\r\n\r\n\t\t\trecipients.push(recipient);\r\n\t\t});\r\n\r\n\t\treturn recipients;\r\n\t}\r\n\r\n\tSerializeCc(): IDestinationMail[] {\r\n\t\tconst ccList = _.map(this._ccRecepients(), (ccRecepient: any): IDestinationMail => {\r\n\t\t\treturn {\r\n\t\t\t\tTableId: ccRecepient.TableId || -1,\r\n\t\t\t\tRecordId: ccRecepient.RecordId || -1,\r\n\t\t\t\tMail: ccRecepient.Mail || ccRecepient.text\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif (ccList.length) {\r\n\t\t\treturn ccList;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSerializeBcc(): IDestinationMail[] {\r\n\t\tconst bccList = _.map(this._bccRecepients(), (bccRecepient: any): IDestinationMail => {\r\n\t\t\treturn {\r\n\t\t\t\tTableId: bccRecepient.TableId || -1,\r\n\t\t\t\tRecordId: bccRecepient.RecordId || -1,\r\n\t\t\t\tMail: bccRecepient.Mail || bccRecepient.text\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tif (bccList.length) {\r\n\t\t\treturn bccList;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget Attachments(): KnockoutObservableArray<MailAttachmentModel> {\r\n\t\treturn this._attachments;\r\n\t}\r\n\r\n\tget Screenshots(): KnockoutObservableArray<ScreenshotAttachmentModel> {\r\n\t\treturn this._screenshots;\r\n\t}\r\n\r\n\tSearchAttachments() {\r\n\t\tDocumentStore.GetDocumentEntityId().then(documentsEntityId => {\r\n\t\t\tlet firstSearchByMainRelations = true;\r\n\t\t\tlet firstSearchByRelations = true;\r\n\t\t\tlet firstSearchByLinkedDocuments = true;\r\n\r\n\t\t\tconst searchScreen = new SearchScreen({\r\n\t\t\t\tEntityId: documentsEntityId,\r\n\t\t\t\tSearchTerm: '',\r\n\t\t\t\tMultiSelectMode: true,\r\n\t\t\t\tButtonAdd: false,\r\n\t\t\t\tSubjectEntityId: this._subjectEntityId,\r\n\t\t\t\tSubjectRecordId: this._subjectRecordId,\r\n\t\t\t\tSubjectTypeId: this._subjectTypeId,\r\n\t\t\t\tShowSearchByLinkedDocuments: true\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.On('RECORD_SELECTED', this, (eventArgs) => this.OnDocumentSelected(eventArgs.data));\r\n\r\n\t\t\tsearchScreen.On('RECORDS_SELECTED', this, (eventArgs) => {\r\n\t\t\t\tthis.OnDocumentsSelected(eventArgs.data.TableId, eventArgs.data.Ids);\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.On(\"RECORDS_NOT_FOUND\", this, (eventArgs) => {\r\n\t\t\t\tif (firstSearchByMainRelations && searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByMainRelations) {\r\n\t\t\t\t\tNotifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n\t\t\t\t\tsearchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n\t\t\t\t\tfirstSearchByMainRelations = false;\r\n\t\t\t\t} else if (firstSearchByRelations && searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n\t\t\t\t\tNotifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n\t\t\t\t\tsearchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n\t\t\t\t\tfirstSearchByRelations = false;\r\n\t\t\t\t} else if (firstSearchByLinkedDocuments && searchScreen.GetFilterByRelationType() === SearchByMainRelationTypes.ByLinkedDocuments) {\r\n\t\t\t\t\tNotifier.Warning(NOTIFICATIONS.NO_DATA_FOUND_WITH_APPLIED_FILTER);\r\n\t\t\t\t\tsearchScreen.SetFilterByRelationType(SearchByMainRelationTypes.Off);\r\n\t\t\t\t\tfirstSearchByLinkedDocuments = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.Show();\r\n\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tBlockUI.Block({Target: el});\r\n\t\tTableStore.Get({TableName: \"DOCUMENTS\"})\r\n\t\t\t.then((table: any) => {\r\n\t\t\t\tthis._documentsEntityNameTranslation(table.TranslatedName || table.Name);\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(el));\r\n\t}\r\n\r\n\tprivate OnDocumentSelected(record) {\r\n\t\tif (record && record.RecordId && record.Name) {\r\n\t\t\tconst attachment = new MailAttachmentModel();\r\n\r\n\t\t\tattachment.DocumentId = record.RecordId;\r\n\t\t\tattachment.Name = record.Name;\r\n\r\n\t\t\tthis._attachments.push(attachment);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate OnDocumentsSelected(entityId: number, recordIds: number[]) {\r\n\t\tlet getRecordsPromises = [];\r\n\r\n\t\tBlockUI.Block();\r\n\t\t_.each(recordIds, (recordId) => {\r\n\t\t\tgetRecordsPromises.push(RecordStore.GetRecord({TableId: entityId, RecordId: recordId}));\r\n\t\t});\r\n\r\n\t\tP.when(...getRecordsPromises)\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.then(() => {\r\n\t\t\t\t_.each(getRecordsPromises, (promise) => {\r\n\t\t\t\t\tconst nameField = promise.result && _.find(promise.result.Fields, (field: any)=> field.FieldName === 'NAME');\r\n\t\t\t\t\tif (promise.result && nameField && promise.result.RecordId && nameField.FieldValue) {\r\n\t\t\t\t\t\tconst attachment = new MailAttachmentModel();\r\n\r\n\t\t\t\t\t\tattachment.DocumentId = promise.result.RecordId;\r\n\t\t\t\t\t\tattachment.Name = nameField.FieldValue;\r\n\r\n\t\t\t\t\t\tthis._attachments.push(attachment);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublic AttachDocument(document: MailAttachmentModel) {\r\n\t\tthis._attachments.push(document);\r\n\t}\r\n\r\n\tset IsEnableAttachment(value: boolean) {\r\n\t\tthis._isEnableAttachment(value);\r\n\t}\r\n\r\n\tset IsEnableRemoveAttachment(value: boolean) {\r\n\t\tthis._isEnableRemoveAttachment(value);\r\n\t}\r\n}","// Module\nvar code = \"<span class=\\\"select2-result-repository clearfix\\\"> <!-- ko text: RecipientName --><!-- /ko --> <!-- ko if: Email --> (<!-- ko text: Email --><!-- /ko -->) <!-- /ko --> <!-- ko ifnot: Email --> (<span data-bind=\\\"event: { mouseup: $data.AddEmail }\\\" class=\\\"show-popup\\\">click</span> to add the email) <!-- /ko --> </span>\";\n// Exports\nexport default code;","// Module\nvar code = \"<span data-bind=\\\"text: RecipientName\\\" class=\\\"mail-recipient\\\"> </span>\";\n// Exports\nexport default code;","export var COMPOSER_EVENTS = {\r\n\tEMAIL_SENT: 'EMAIL_SENT',\r\n\tDISCARD: 'DISCARD',\r\n\tEMAIL_WAS_READ: 'EMAIL_WAS_READ'\r\n};\r\n\r\nexport var ADD_EMAIL_EVENTS = {\r\n\tEMAIL_SAVED: 'EMAIL_SAVED'\r\n};\r\n\r\nexport var MAIL_LIST_EVENTS = {\r\n\tLOAD_DATA: 'LOAD_DATA',\r\n\tSAVE_TO_CYBER_BOX: 'SAVE_TO_CYBER_BOX'\r\n};","export class RecordKeyModel {\r\n\tFieldId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport class MailAttachmentModel {\r\n\tconstructor() {\r\n\t\tthis.RecordKeys = [];\r\n\t}\r\n\r\n\tpublic DocumentId: number;\r\n\tpublic Name: string;\r\n\r\n\tpublic DocumentFieldId: number;\r\n\tpublic RecordKeys: Array<RecordKeyModel>\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class MailTabModel {\r\n\tconstructor() {}\r\n\r\n\t@deserialize\r\n\tMailConnectionId: number;\r\n\t\r\n\t@deserialize\r\n\tLogin: string;\r\n\r\n\t@deserialize\r\n\tClient: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class AttachmentModel {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tContent: string;\r\n}\r\n\r\nexport class MailRelatedUserData {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}\r\n\r\nexport class UnknownMail{\r\n\t@deserialize\r\n\tMail: string;\r\n\r\n\t@deserialize\r\n\tAddressTypeId: number;\r\n\r\n\t@deserialize\r\n\tAddressTypeName: string;\r\n}\r\n\r\nexport class MailRelatedItem {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tAddressTypeId: number;\r\n\r\n\t@deserialize\r\n\tAddressTypeName: string;\r\n}\r\n\r\nexport class MailRelatedTableData {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tAddressTypeFieldId: number;\r\n\r\n\t@deserializeAs(MailRelatedItem)\r\n\tItems: MailRelatedItem[];\r\n\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n}\r\n\r\nexport class MailRelatedData {\r\n\t@deserializeAs(MailRelatedUserData)\r\n\tUsers: MailRelatedUserData[];\r\n\r\n\t@deserializeAs(MailRelatedTableData)\r\n\tEntities: MailRelatedTableData[];\r\n\r\n\t@deserializeAs(UnknownMail)\r\n\tUnknownMails: Array<UnknownMail>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.Entities = [];\r\n\t\tthis.UnknownMails = []\r\n\t}\r\n}\r\n\r\nexport class MailItemExtendedModel {\r\n\tconstructor() {\r\n\t\tthis.Attachments = [];\r\n\t}\r\n\r\n\t@deserializeAs(AttachmentModel)\r\n\tAttachments: Array<AttachmentModel>;\r\n\r\n\t@deserialize\r\n\tAttachmentsCount: number;\r\n\r\n\t@deserialize\r\n\tBody: string;\r\n\r\n\t@deserialize\r\n\tBodyText: string;\r\n\r\n\t@deserialize\r\n\tCc: string[];\r\n\r\n\t@deserialize\r\n\tDateTimeCreated: string;\r\n\r\n\t@deserialize\r\n\tDestinationMails: any[];\r\n\r\n\t@deserialize\r\n\tFromAddress: string;\r\n\r\n\t@deserialize\r\n\tFromName: string;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@deserialize\r\n\tHasAttachments: boolean;\r\n\r\n\t@deserialize\r\n\tIsInCyberbox: boolean;\r\n\r\n\t@deserialize\r\n\tIsRead: boolean;\r\n\r\n\t@deserialize\r\n\tMailType: number;\r\n\r\n\t@deserialize\r\n\tSubject: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tPop3Index: number;\r\n\r\n\t@deserializeAs(MailRelatedData)\r\n\tMailRelatedData: MailRelatedData;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class MailItemModel {\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\tIsReadObservable: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t\tthis.IsReadObservable = ko.observable();\r\n\t}\r\n\r\n\t@deserialize\r\n\tAttachmentsCount: number;\r\n\r\n\t@deserialize\r\n\tBody: string;\r\n\r\n\t@deserialize\r\n\tBodyText: string;\r\n\r\n\t@deserialize\r\n\tDateTimeCreated: string;\r\n\r\n\t@deserialize\r\n\tFromAddress: string;\r\n\r\n\t@deserialize\r\n\tFromName: string;\r\n\r\n\t@deserialize\r\n\tGuid: string;\r\n\r\n\t@deserialize\r\n\tHasAttachments: boolean;\r\n\r\n\t@deserialize\r\n\tIsInCyberbox: boolean;\r\n\r\n\t@deserialize\r\n\tIsRead: boolean;\r\n\r\n\t@deserialize\r\n\tMailType: number;\r\n\r\n\t@deserialize\r\n\tPop3Index: number;\r\n\r\n\t@deserialize\r\n\tSubject: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize';\r\nimport { MailItemModel } from \"Core/Controls/Mail/Models/MailItemModel\";\r\n\r\nexport class GetMailsResponseModel {\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n\r\n\t@deserializeAs(MailItemModel)\r\n\tItems: MailItemModel[];\r\n\r\n\r\n\r\n\t@deserialize\r\n\tTotalItems: number;\r\n}","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class TagModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {TagModel} from 'Core/Controls/Mail/Models/TagModel';\r\n\r\nexport class LinkFromMailBody {\r\n constructor() {\r\n this.Tags = [];\r\n }\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserializeAs(TagModel)\r\n Tags: TagModel[];\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { MailItemExtendedModel, MailRelatedData } from 'Core/Controls/Mail/Models/MailItemExtendedModel';\r\nimport {GetMailsResponseModel} from 'Core/Controls/Mail/Models/GetMailsResponseModel';\r\nimport { LinkFromMailBody } from 'Core/Controls/Mail/Models/LinkFromMailBody';\r\n\r\nexport interface IGetMailFolderRequestModel {\r\n\tMailConnectionId: number;\r\n\tPageSize: number;\r\n\tPage: number;\r\n}\r\n\r\nexport interface ISaveMailToCyberBoxRequestModel {\r\n\tGuid: string;\r\n}\r\n\r\nexport interface IRecipientModel {\r\n\tMailConnectionId: number;\r\n\tContactId: number;\r\n\tMailTo: string;\r\n}\r\n\r\nexport interface IDestinationMail {\r\n\tName?: string;\r\n\tRecordId: number;\r\n\tTableId: number;\r\n\tMail: string;\r\n}\r\n\r\nexport interface ICcRecipientModel {\r\n\tName: string;\r\n\tRecordId: number;\r\n\tTableId: number;\r\n\tMail: string;\r\n}\r\n\r\nexport interface IBccRecipientModel {\r\n\tName: string;\r\n\tRecordId: number;\r\n\tTableId: number;\r\n\tMail: string;\r\n}\r\n\r\nexport interface IAttachmentModel {\r\n\tDocumentId: number;\r\n\tName: string;\r\n}\r\n\r\nexport interface IScreenshotModel {\r\n\tContent: string;\r\n\tName: string;\r\n}\r\n\r\nexport interface IDownloadAttachmentRequest {\r\n\tGuid: string;\r\n\tName: string;\r\n\tMailConnectionId: number;\r\n}\r\n\r\nexport interface IGetMailRelatedDataRequest {\r\n\tFrom: string;\r\n\tTo: Array<string>;\r\n\tCC: Array<string>;\r\n\tBCC: Array<string>;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n}\r\n\r\nexport interface ISendMailRequestModel {\r\n\tMailConnectionId: number;\r\n\tMessageId: string;\r\n\tSubject: string;\r\n\tBody: string;\r\n\tSubjectEntityId: number;\r\n\tSubjectRecordId: number;\r\n\tCcList?: Array<IDestinationMail>;\r\n\tBccList?: Array<IDestinationMail>;\r\n\tRecipients: Array<IDestinationMail>;\r\n\tAttachements: Array<IAttachmentModel>;\r\n\tScreenshots?: Array<IScreenshotModel>;\r\n\tAttachmentsRequest: Array<IDownloadAttachmentRequest>;\r\n\r\n}\r\n\r\nexport interface IGetMailById {\r\n\tMailConnectionId: number;\r\n\tGuid: string;\r\n\tIsIncludeAttachmentContent: boolean;\r\n}\r\n\r\nexport interface IMailListModelRequestModel {\r\n\tMailConnectionId: number;\r\n\tGuids: Array<string>;\r\n\tIsCyberBox: boolean;\r\n}\r\n\r\nexport interface IDownloadAttachmentRequestModel {\r\n\tMailConnectionId: number;\r\n\tGuid: string;\r\n\tName: string;\r\n}\r\n\r\nexport interface IDownloadAttachmentsRequestModel {\r\n\tMailConnectionId: number;\r\n\tGuid: string;\r\n\tNames: Array<string>;\r\n}\r\n\r\nexport interface IAddMailAddressRequestModel {\r\n\tRecordId: number;\r\n\tEntityId: number;\r\n\tMailAddress: string;\r\n}\r\n\r\nexport interface GetLinkDto {\r\n\tMailBody: string;\r\n\tSubject: string;\r\n}\r\n\r\nexport class MailStore {\r\n\tstatic GetMailFolder(params: IGetMailFolderRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMails',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = GenericDeserialize<GetMailsResponseModel>(data.ResultObject, GetMailsResponseModel);\r\n\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDestinationMails(params: any): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetDestinationMails',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMailRelatedData(params: IGetMailRelatedDataRequest): P.Promise<MailRelatedData> {\r\n\t\tconst deferredResult = P.defer<MailRelatedData>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMailRelatedData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = GenericDeserialize<MailRelatedData>(data.ResultObject, MailRelatedData);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMailTabs(): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\tcacheRequest: true,\r\n\t\t\t\turl: '/api/MailApi/GetMailTabs',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = Deserialize(data.ResultList);\r\n\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SaveMailToCyberBox(params: ISaveMailToCyberBoxRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/MailApi/SaveMailToCyberBox',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic SendMail(params: ISendMailRequestModel, type: string = 'SendMail'): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: `/api/MailApi/${type}`,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMailById(params: IGetMailById): P.Promise<MailItemExtendedModel> {\r\n\t\tconst deferredResult = P.defer<MailItemExtendedModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetMailById',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tconst model = GenericDeserialize<MailItemExtendedModel>(data.ResultObject, MailItemExtendedModel);\r\n\t\t\t\t\tdeferredResult.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MarkAsRead(params: IMailListModelRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/MarkAsRead',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MarkAsUnRead(params: IMailListModelRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/MarkAsUnRead',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteMails(params: IMailListModelRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/DeleteMails',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DownloadAttachment(params: IDownloadAttachmentRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/DownloadAttachment',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DownloadAttachments(params: IDownloadAttachmentsRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/DownloadAttachments',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic AddMailAddress(params: IAddMailAddressRequestModel): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/AddMailAddress',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetLink(params: GetLinkDto): P.Promise<LinkFromMailBody> {\r\n\t\tconst deferredResult = P.defer<any>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/MailApi/GetLinkFromMailBody',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize<LinkFromMailBody>(data, LinkFromMailBody));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {deserialize, deserializeAs} from \"libs/cerialize\";\r\n\r\nexport class ItemModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t}\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tLabel: string;\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport class MultiSelectListModel {\r\n\t@deserializeAs(ItemModel)\r\n\tItems: Array<ItemModel>;\r\n\r\n\t@deserialize\r\n\tRecordsCount: number;\r\n\r\n\tconstructor() {\r\n\t\tthis.Items = [];\r\n\t}\r\n}\r\n","import * as ko from 'knockout';\r\nimport {deserialize} from 'libs/cerialize';\r\n\r\nexport class CustomColumnValueModel {\r\n\r\n constructor(){\r\n this.Value = ko.observable('');\r\n }\r\n\r\n Value: KnockoutObservable<string>;\r\n\r\n @deserialize\r\n FieldType: string;\r\n\r\n @deserialize\r\n FieldName: string;\r\n\r\n @deserialize\r\n FieldFormat: string;\r\n\r\n public static OnDeserialized(instance : CustomColumnValueModel, json : any){\r\n instance.Value(json.Value);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {IControl} from \"../../IControl\";\r\nimport {CustomColumnValueModel} from \"./CustomColumnValueModel\";\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\nexport class TimeCellModel {\r\n\r\n constructor(){\r\n this.IsEditMode = ko.observable(null);\r\n this.IsActive = ko.observable(false);\r\n this.IsSelected = ko.observable(false); \r\n this.IsCopyTo = ko.observable(false); \r\n this.IsCopyFrom = ko.observable(false);\r\n }\r\n\r\n @deserialize\r\n TimeValue: string;\r\n\r\n @deserialize\r\n CellColor: string;\r\n\r\n @deserialize\r\n IsWeekend: boolean;\r\n\r\n @deserialize\r\n TimeAxis: string;\r\n\r\n @deserialize\r\n Button1RecordId: number;\r\n\r\n @deserialize\r\n Button1TableId: number;\r\n\r\n @deserialize\r\n Button1RecordName: string;\r\n\r\n @deserialize\r\n Button2RecordId: number;\r\n\r\n @deserialize\r\n Button2TableId: number;\r\n\r\n @deserialize\r\n Button2RecordName: string;\r\n\r\n IsActive: KnockoutObservable<boolean>;\r\n IsEditMode: KnockoutObservable<boolean>;\r\n IsSelected: KnockoutObservable<boolean>;\r\n IsCopyTo: KnockoutObservable<boolean>;\r\n IsCopyFrom: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport class PlannerLevelRowModel {\r\n\r\n constructor(){\r\n this.IsExpanded = ko.observable(false);\r\n this.TimeLine = [];\r\n this.SubControls = ko.observableArray([]);\r\n this.CustomValues = [];\r\n this.IsActive = ko.observable(false);\r\n this.RowHeight = ko.observable(null);\r\n this.IsBlocked = ko.observable(false);\r\n }\r\n\r\n IsActive: KnockoutObservable<boolean>;\r\n\r\n @deserialize\r\n ControlId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n SubjectTypeId: number;\r\n\r\n @deserialize\r\n TotalRecords: number;\r\n\r\n @deserialize\r\n BarId: string;\r\n\r\n @deserialize\r\n SubjectId: number;\r\n\r\n @deserialize\r\n BarName: string;\r\n\r\n @deserialize\r\n RowColor: string;\r\n\r\n IsExpanded: KnockoutObservable<boolean>;\r\n\r\n @deserializeAs(TimeCellModel)\r\n TimeLine: Array<TimeCellModel>;\r\n\r\n @deserializeAs(CustomColumnValueModel)\r\n CustomValues: Array<CustomColumnValueModel>;\r\n \r\n @deserializeAs(IconModel)\r\n Button1Icon: IconModel;\r\n\r\n @deserialize\r\n Button1Query: string;\r\n\r\n @deserializeAs(IconModel)\r\n Button2Icon: IconModel;\r\n\r\n @deserialize\r\n Button2Query: string;\r\n\r\n @deserialize\r\n Button1TableName: string;\r\n\r\n @deserialize\r\n Button2TableName: string;\r\n\r\n SubControls: KnockoutObservableArray<IControl>;\r\n\r\n RowHeight: KnockoutObservable<number>;\r\n\r\n IsBlocked: KnockoutObservable<boolean>;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {IPlannerLevelParentRecords} from \"../PlannerLevel\";\r\n\r\nexport interface IGetPlannerLevelDataRequestModel {\r\n ControlId: number;\r\n ParentBarId: string;\r\n WeekNumber: number;\r\n StartDate: string;\r\n ViewType: string;\r\n IsRoot: boolean;\r\n RecordsPerPage: number;\r\n PageNumber: number;\r\n BarId?: string;\r\n ManagerId?: number;\r\n ParentRecords?: Array<IPlannerLevelParentRecords>;\r\n}\r\n\r\nexport interface ICreateLinkRequestModel {\r\n RecordId: number;\r\n ControlId: number;\r\n StartDate: string;\r\n ParentRecords: Array<IPlannerLevelParentRecords>;\r\n}\r\n\r\nexport interface IGetHigherResolutionPlanRequestModel {\r\n ControlId: number;\r\n ParentPlan: TimeCellModel;\r\n}\r\n\r\nexport class PlannerLevelStore {\r\n static GetPlannerLevelData(params: IGetPlannerLevelDataRequestModel): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/GetPlannerLevelData',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateOrUpdatePlan(params: any): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/CreateOrUpdatePlan',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UnlinkQueryRecord(params: any): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/UnlinkQueryRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateOrUpdatePlans(params: any): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/CreateOrUpdatePlans',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static LinkRecord(params: ICreateLinkRequestModel){\r\n let deferredResult = P.defer<any>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/CreateLink',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(null);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetHigherResolutionPlan(params: IGetHigherResolutionPlanRequestModel): P.Promise<Array<PlannerLevelRowModel>> {\r\n let deferredResult = P.defer<Array<PlannerLevelRowModel>>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/PlannerApi/GetHigherResolutionPlan',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n deferredResult.reject({message: result.ErrorMessage});\r\n } else {\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerLevelRowModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n}","export const EVENTS = {\r\n MOUSE_OVER: 'MouseOver',\r\n MOUSE_OUT: 'MouseOut',\r\n UNSELECT_CELLS: 'UNSELECT_CELLS',\r\n KEY_DOWN: 'KEY_DOWN',\r\n UPDATE_PLAN: 'UPDATE_PLAN',\r\n UNLINK_QUERY_RECORD: 'UNLINK_QUERY_RECORD',\r\n HIGHER_RESOLUTION_PLANNING: 'HIGHER_RESOLUTION_PLANNING',\r\n COPY_CELL: 'COPY_CELL',\r\n RUN_QUERY1: 'RUN_QUERY1',\r\n RUN_QUERY2: 'RUN_QUERY2',\r\n DROPDOWN_CLOSED: 'DROPDOWN_CLOSED'\r\n}","// Module\nvar code = \"<div> <div class=\\\"query-buttons-wrapper\\\"> <!-- ko if: $data._query1Icon --> <a data-bind=\\\"click: RunQuery1, style: { color: 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query1Icon --> <div class=\\\"query-icon-wrapper\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: $data._query2Icon --> <a data-bind=\\\"click: RunQuery2, style: { color: 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query2Icon --> <div class=\\\"query-icon-wrapper\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { Modal } from \"Core/Common/Modal\";\r\nimport {Event} from 'Core/Common/Event'\r\nimport { PlannerLevelRowModel, TimeCellModel } from \"../Models/PlannerLevelRowModel\";\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { EVENTS } from \"../Events\";\r\n\r\nimport Template from 'Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons.html';\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons'] = Template;\r\n\r\nexport class QueryButtons extends Event {\r\n private readonly _id: string;\r\n private _dropDown: JBoxDropDown;\r\n\r\n private _query1Icon: Icon;\r\n private _query2Icon: Icon;\r\n\r\n constructor(barModel: PlannerLevelRowModel){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this._dropDown = new JBoxDropDown({});\r\n\r\n if(barModel.Button1Icon){\r\n this._query1Icon = new Icon(barModel.Button1Icon); \r\n }\r\n \r\n if(barModel.Button2Icon){\r\n this._query2Icon = new Icon(barModel.Button2Icon); \r\n } \r\n this.AddEvent(EVENTS.RUN_QUERY1);\r\n this.AddEvent(EVENTS.RUN_QUERY2);\r\n this.AddEvent(EVENTS.DROPDOWN_CLOSED);\r\n }\r\n\r\n GetTemplateName(): string{\r\n return 'Core/Controls/PlannerLevel/RightBarCell/Templates/QueryButtons';\r\n }\r\n\r\n AfterRender(){}\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: true,\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: false,\r\n maxWidth: \"calc(100% - 7px)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n onClose: () => {\r\n this.Trigger(EVENTS.DROPDOWN_CLOSED);\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n Close() {\r\n this._dropDown.Close();\r\n }\r\n\r\n RunQuery1(_, evt){\r\n this._dropDown.Close();\r\n this.Trigger(EVENTS.RUN_QUERY1); \r\n }\r\n\r\n RunQuery2(_, evt){\r\n this._dropDown.Close();\r\n this.Trigger(EVENTS.RUN_QUERY2);\r\n }\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event'\r\nimport {TimeCellModel, PlannerLevelRowModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {EVENTS} from \"Core/Controls/PlannerLevel/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport { FormatManager, FormatParams } from \"Core/Components/FormatManager/FormatManager\";\r\nimport {EVENTS as QUERY_RESULT_PAGE_EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\nimport {\r\n\tConfirmationDialog,\r\n\tEVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {KEY_CODES} from \"Core/Controls/PlannerLevel/KeyCodes\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\n\r\nimport View from 'Core/Controls/PlannerLevel/RightBarCell/Templates/View.html';\r\nimport Edit from 'Core/Controls/PlannerLevel/RightBarCell/Templates/Edit.html';\r\nimport Query from 'Core/Controls/PlannerLevel/RightBarCell/Templates/Query.html';\r\nimport { QueryButtons } from './QueryButtons';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/View'] = View;\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/Edit'] = Edit;\r\nko.templates['Core/Controls/PlannerLevel/RightBarCell/Templates/Query'] = Query;\r\n\r\nexport class RightBarCell extends Event{\r\n private _model: TimeCellModel;\r\n private _barModel: PlannerLevelRowModel;\r\n private _value: KnockoutObservable<string>;\r\n private _displayValue: KnockoutComputed<string>;\r\n private _cellClasses: KnockoutComputed<string>;\r\n public TemplateName: KnockoutComputed<string>;\r\n private _el: HTMLElement;\r\n private _query1Icon: KnockoutObservable<Icon>;\r\n private _query1RecordName: KnockoutObservable<string>;\r\n private _query2Icon: KnockoutObservable<Icon>;\r\n private _query2RecordName: KnockoutObservable<string>;\r\n private _dropdownShown: KnockoutObservable<boolean>;\r\n\r\n private _editorWidth: KnockoutObservable<string>;\r\n private _editorHeight: KnockoutObservable<string>;\r\n private _isHightResolutionPlanning: boolean;\r\n private _readOnly: boolean;\r\n private _hideQueryButtons: boolean;\r\n CopyCellMode: boolean;\r\n\r\n constructor(model: TimeCellModel, barModel: PlannerLevelRowModel, readonly: boolean, hideQueryButtons: boolean = false){\r\n super();\r\n this._barModel = barModel;\r\n this._hideQueryButtons = hideQueryButtons;\r\n this._query1RecordName = ko.observable(model.Button1RecordName);\r\n this._query2RecordName = ko.observable(model.Button2RecordName);\r\n this._query1Icon = ko.observable(null);\r\n this._query2Icon = ko.observable(null);\r\n this._dropdownShown = ko.observable(false);\r\n\r\n if(barModel.Button1Icon){\r\n this._query1Icon(new Icon(barModel.Button1Icon)); \r\n }\r\n \r\n if(barModel.Button2Icon){\r\n this._query2Icon(new Icon(barModel.Button2Icon));\r\n } \r\n\r\n this._value = ko.observable(null);\r\n this._editorWidth = ko.observable('30px');\r\n this._editorHeight = ko.observable('30px');\r\n this._readOnly = readonly;\r\n\r\n this._displayValue = ko.computed(()=> this._value() === '0' ? '' : this._value());\r\n\r\n this._model = model;\r\n this._cellClasses = ko.computed(()=>{\r\n return `${this._model.IsActive() ? 'active-cell': ''} ${this._model.IsSelected() ? 'selected-cell': ''} ${this._model.IsCopyTo() ? 'copy-to-column': ''} ${this._model.IsCopyFrom() ? 'copy-from-column': ''}`;\r\n });\r\n\r\n this.TemplateName = ko.computed(()=>{\r\n if(this._barModel.Button1Icon || this._barModel.Button2Icon){\r\n return 'Core/Controls/PlannerLevel/RightBarCell/Templates/Query';\r\n }\r\n\r\n return this._model.IsEditMode() ? 'Core/Controls/PlannerLevel/RightBarCell/Templates/Edit' : 'Core/Controls/PlannerLevel/RightBarCell/Templates/View';\r\n });\r\n\r\n this._model.IsSelected.subscribe((newValue) => {\r\n if(!newValue){\r\n this._model.IsEditMode(false);\r\n }\r\n });\r\n\r\n this._model.IsEditMode.subscribe((newValue) =>{\r\n if(!newValue){\r\n if(this.HasChanges()){\r\n this._model.TimeValue = this._value();\r\n this.Trigger(EVENTS.UPDATE_PLAN, { CellModel: this._model, CellElement: this._el });\r\n }\r\n }\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n\r\n get ShowQueryButtons(): boolean{\r\n return (this._query1Icon() || this._query2Icon()) && this.HasData || !this._hideQueryButtons;\r\n }\r\n\r\n HasChanges(){\r\n return parseFloat(this._value().replace(',', '.')) !== parseFloat(this._model.TimeValue.replace(',','.'));\r\n }\r\n\r\n get HasData(){\r\n return parseFloat(this._value().replace(',', '.')) !== 0\r\n || this.Model.Button1RecordId != 0\r\n || this.Model.Button2RecordId != 0;\r\n }\r\n\r\n SetCopyToValue(\r\n value: string,\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number,\r\n overwrite: boolean,\r\n copyQueryButton1: boolean,\r\n copyQueryButton2: boolean\r\n ){\r\n if(this.HasData && !overwrite) return;\r\n this._value(value);\r\n this._model.TimeValue = this._value();\r\n this.Trigger(EVENTS.UPDATE_PLAN, {\r\n CellModel: this._model,\r\n Button1RecordId: copyQueryButton1 ? button1RecordId : null,\r\n Button1TableId: button1TableId,\r\n Button2RecordId: copyQueryButton2 ? button2RecordId : null,\r\n Button2TableId: button2TableId,\r\n CellElement: this._el\r\n });\r\n }\r\n\r\n set IsHightResolutionPlanning(value: boolean){\r\n this._isHightResolutionPlanning = value;\r\n if(this._isHightResolutionPlanning){\r\n this._model.IsEditMode(false);\r\n }\r\n }\r\n\r\n SelectCell(){\r\n if(!this.ShowQueryButtons && (this._query1Icon() || this._query2Icon())){\r\n if(this._query1Icon() && !this._query2Icon()){\r\n this.RunQuery1();\r\n return;\r\n }\r\n\r\n if(this._query2Icon() && !this._query1Icon()){\r\n this.RunQuery2();\r\n return;\r\n }\r\n\r\n this.ShowQueryButtonsModal();\r\n return;\r\n }\r\n\r\n if(this.CopyCellMode){\r\n this.IsCopyTo(!this.IsCopyTo());\r\n return;\r\n }\r\n\r\n if(!this._model.IsEditMode()){\r\n this.Trigger(EVENTS.UNSELECT_CELLS, { CellModel: this._model });\r\n this._model.IsSelected(true);\r\n }\r\n }\r\n\r\n ShowQueryButtonsModal(){\r\n let queryButtonsDropdown = new QueryButtons(this._barModel), target = event.target;\r\n queryButtonsDropdown.On(EVENTS.RUN_QUERY1, this, this.RunQuery1);\r\n queryButtonsDropdown.On(EVENTS.RUN_QUERY2, this, this.RunQuery2);\r\n queryButtonsDropdown.On(EVENTS.DROPDOWN_CLOSED, this, () => {this._dropdownShown(false)});\r\n if (!this._dropdownShown()) {\r\n queryButtonsDropdown.Show(target);\r\n this._dropdownShown(true);\r\n } else {\r\n queryButtonsDropdown.Close();\r\n this._dropdownShown(false)\r\n }\r\n }\r\n\r\n Init(){\r\n this._value(this.FormatValue(this._model.TimeValue));\r\n this.AddEvent(EVENTS.MOUSE_OVER);\r\n this.AddEvent(EVENTS.MOUSE_OUT);\r\n this.AddEvent(EVENTS.UNSELECT_CELLS);\r\n this.AddEvent(EVENTS.KEY_DOWN);\r\n this.AddEvent(EVENTS.UPDATE_PLAN);\r\n this.AddEvent(EVENTS.HIGHER_RESOLUTION_PLANNING);\r\n this.AddEvent(EVENTS.UNLINK_QUERY_RECORD);\r\n this.AddEvent(EVENTS.COPY_CELL);\r\n }\r\n\r\n MouseOver(){\r\n this.Trigger(EVENTS.MOUSE_OVER, { CellModel: this._model });\r\n }\r\n\r\n MouseOut(){\r\n this.Trigger(EVENTS.MOUSE_OUT, { CellModel: this._model });\r\n }\r\n\r\n StartEdit(){\r\n if(!this._readOnly) {\r\n if (!this._isHightResolutionPlanning) {\r\n if (!this._model.IsEditMode()) {\r\n this._model.IsEditMode(true);\r\n }\r\n } else {\r\n this.Trigger(EVENTS.HIGHER_RESOLUTION_PLANNING, {CellModel: this._model});\r\n }\r\n }\r\n }\r\n\r\n KeyDown(cell: RightBarCell, event){\r\n if (event.keyCode !== KEY_CODES.ENTER\r\n && event.keyCode !== KEY_CODES.UP\r\n && event.keyCode !== KEY_CODES.LEFT\r\n && event.keyCode !== KEY_CODES.RIGHT\r\n && event.keyCode !== KEY_CODES.DOWN\r\n ) {\r\n\r\n if(this._isHightResolutionPlanning && !this._readOnly){\r\n this.Trigger(EVENTS.HIGHER_RESOLUTION_PLANNING, { CellModel: this._model });\r\n return false;\r\n }\r\n\r\n if (!this._readOnly && !this._model.IsEditMode()) {\r\n let positionInfo = this._el.getBoundingClientRect();\r\n this._editorHeight(`${positionInfo.height}px`);\r\n this._editorWidth(`${positionInfo.width}px`);\r\n\r\n this._model.IsEditMode(true);\r\n if (!isNaN(event.key)) {\r\n this._value(event.key);\r\n return false;\r\n }\r\n } else {\r\n return true;\r\n }\r\n\r\n } else {\r\n this.Trigger(EVENTS.KEY_DOWN, { CellModel: this._model, Event: event, CellElement: this._el });\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get IsSelected(): KnockoutObservable<boolean>{\r\n return this._model.IsSelected;\r\n }\r\n\r\n get IsCopyTo(): KnockoutObservable<boolean>{\r\n return this._model.IsCopyTo;\r\n }\r\n\r\n get IsCopyFrom(): KnockoutObservable<boolean>{\r\n return this._model.IsCopyFrom;\r\n }\r\n\r\n get CellColor(): string {\r\n return this._model.CellColor;\r\n }\r\n\r\n get Value(): KnockoutObservable<string>{\r\n return this._value;\r\n }\r\n\r\n get TimeAxis(){\r\n return this._model.TimeAxis;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){\r\n this._el = elements[0];\r\n }\r\n\r\n SetValue(model: TimeCellModel){\r\n this._model.TimeValue = model.TimeValue;\r\n this._model.Button1RecordId = model.Button1RecordId;\r\n this._model.Button2RecordId = model.Button2RecordId;\r\n this._model.Button1TableId = model.Button1TableId;\r\n this._model.Button2TableId = model.Button2TableId;\r\n this._query1RecordName(model.Button1RecordName);\r\n this._query2RecordName(model.Button2RecordName);\r\n this._value(this.FormatValue(this._model.TimeValue));\r\n }\r\n\r\n FormatValue(value: string){\r\n return FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n\r\n RunQuery1(_ = null, evt=null){\r\n \r\n if(evt && evt.ctrlKey && this._model.Button1RecordId){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, { EntityId: this._model.Button1TableId, RecordId: this._model.Button1RecordId, IsOpenInModal: true});\r\n return;\r\n }\r\n\r\n if(this.CopyCellMode){\r\n return;\r\n }\r\n\r\n let formatManager = new FormatManager({Value: null, Format: null, TableId: null, RecordId: null});\r\n formatManager.RunQuery(this._barModel.Button1Query, ViewModes[ViewModes.Query], '', '', true, this._model.TimeAxis, false);\r\n\r\n formatManager.On(QUERY_RESULT_PAGE_EVENTS.RECORDS_SELECTED, this, (evtArgs) => {\r\n let gridRow = (evtArgs.data.SelectedRecords as Array<GridRow>)[0];\r\n\r\n if(gridRow){\r\n\r\n if(this._query1RecordName()){\r\n this.ConfirmUnlink(gridRow.EntityId, gridRow.RecordId, null, null);\r\n }else{\r\n this.LinkRecordFromQuery(gridRow.EntityId, gridRow.RecordId, null, null);\r\n }\r\n }\r\n });\r\n }\r\n\r\n RunQuery2(_ = null, evt=null){\r\n\r\n if(evt && evt.ctrlKey && this._model.Button2RecordId){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, { EntityId: this._model.Button2TableId, RecordId: this._model.Button2RecordId, IsOpenInModal: true});\r\n return;\r\n }\r\n\r\n if(this.CopyCellMode){\r\n return;\r\n }\r\n\r\n let formatManager = new FormatManager({Value: null, Format: null, TableId: null, RecordId: null});\r\n formatManager.RunQuery( this._barModel.Button2Query, ViewModes[ViewModes.Query], '', '', true, this._model.TimeAxis, false);\r\n\r\n formatManager.On(QUERY_RESULT_PAGE_EVENTS.RECORDS_SELECTED, this, (evtArgs) => {\r\n let gridRow = (evtArgs.data.SelectedRecords as Array<GridRow>)[0];\r\n if(gridRow){\r\n if(this._query2RecordName()){\r\n this.ConfirmUnlink(null, null, gridRow.EntityId, gridRow.RecordId);\r\n }else{\r\n this.LinkRecordFromQuery(null, null, gridRow.EntityId, gridRow.RecordId);\r\n }\r\n } \r\n });\r\n }\r\n\r\n ConfirmUnlink(\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number\r\n ){\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: NOTIFICATIONS.UNLINK_QUERY_RECORD,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.OK,\r\n TextDecline: LABELS.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.LinkRecordFromQuery(button1TableId, button1RecordId, button2TableId, button2RecordId);\r\n });\r\n \r\n confirmationDialog.Show();\r\n }\r\n\r\n LinkRecordFromQuery(\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number\r\n ){\r\n this.Trigger(EVENTS.UPDATE_PLAN, {\r\n CellModel: this._model,\r\n Button1RecordId: button1RecordId,\r\n Button1TableId: button1TableId,\r\n Button2RecordId: button2RecordId,\r\n Button2TableId: button2TableId,\r\n CellElement: this._el\r\n });\r\n }\r\n\r\n BuildButton1ContextMenu(cell: RightBarCell){\r\n\r\n let items = {\r\n \"copy\": { name: LABELS.COPY }\r\n };\r\n\r\n if(this._query1RecordName()){\r\n items[\"unlink\"] = { name: LABELS.UNLINK_RECORD_LABEL }\r\n }\r\n\r\n return {\r\n callback: function(key) {\r\n if(key == 'copy'){\r\n cell.Trigger(EVENTS.COPY_CELL);\r\n cell.IsCopyFrom(true);\r\n }\r\n\r\n if(key == 'unlink'){\r\n cell.Trigger(EVENTS.UNLINK_QUERY_RECORD, {\r\n CellModel: cell._model,\r\n ButtonRecordId: cell._model.Button1RecordId,\r\n ButtonTableId: cell._model.Button1TableId,\r\n CellElement: this._el\r\n }); \r\n }\r\n },\r\n items: items\r\n };\r\n }\r\n\r\n BuildButton2ContextMenu(cell: RightBarCell){\r\n let items = {\r\n \"copy\": { name: LABELS.COPY }\r\n };\r\n\r\n if(this._query2RecordName()){\r\n items[\"unlink\"] = { name: LABELS.UNLINK_RECORD_LABEL }\r\n }\r\n\r\n return {\r\n callback: function(key) {\r\n\r\n if(key == 'copy'){\r\n cell.Trigger(EVENTS.COPY_CELL);\r\n cell.IsCopyFrom(true);\r\n }\r\n\r\n if(key == 'unlink'){\r\n cell.Trigger(EVENTS.UNLINK_QUERY_RECORD, {\r\n CellModel: cell._model,\r\n ButtonRecordId: cell._model.Button2RecordId,\r\n ButtonTableId: cell._model.Button2TableId,\r\n CellElement: this._el\r\n });\r\n }\r\n\r\n },\r\n items: items\r\n };\r\n }\r\n\r\n BuildButtonContextMenu(cell: RightBarCell){\r\n let items = {\r\n \"copy\": { name: LABELS.COPY }\r\n };\r\n\r\n return {\r\n callback: function(key) {\r\n if(key == 'copy'){\r\n cell.Trigger(EVENTS.COPY_CELL);\r\n cell.IsCopyFrom(true);\r\n }\r\n },\r\n items: items\r\n };\r\n }\r\n\r\n get Model(): TimeCellModel{\r\n return this._model;\r\n }\r\n}","// Module\nvar code = \"<td data-bind=\\\"text: $data._displayValue,\\r\\n class: $data._cellClasses,\\r\\n contextMenu: { enabled: !$data._readOnly, build: $data.BuildButtonContextMenu.bind($data, $data) },\\r\\n style:{ 'background-color': CellColor },\\r\\n click: $data.SelectCell.bind($data),\\r\\n hasFocus: $data.IsSelected,\\r\\n event: {\\r\\n mouseover: $data.MouseOver.bind($data),\\r\\n mouseout: $data.MouseOut.bind($data),\\r\\n keydown: $data.KeyDown.bind($data),\\r\\n dblclick: $data.StartEdit.bind($data)\\r\\n },\\\" tabindex=\\\"0\\\" class=\\\"planner-table-number-cell\\\"></td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td data-bind=\\\"class: $data._cellClasses,\\r\\n click: $data.SelectCell.bind($data),\\r\\n style:{ 'background-color': CellColor },\\r\\n event: {\\r\\n mouseover: $data.MouseOver.bind($data),\\r\\n mouseout: $data.MouseOut.bind($data)\\r\\n },\\\" tabindex=\\\"0\\\" class=\\\"planner-table-number-cell edit-cell\\\"> <input data-bind=\\\"\\r\\n textInput: $data.Value,\\r\\n hasFocus: $data.IsSelected,\\r\\n contextMenu: { enabled: !$data._readOnly, build: $data.BuildButtonContextMenu.bind($data, $data) },\\r\\n keydownBubble: false,\\r\\n event: {\\r\\n keydown: $data.KeyDown.bind($data)\\r\\n },\\r\\n inputMask: {\\r\\n value: $data.Value,\\r\\n type: 'Decimal',\\r\\n decimalSize: 2\\r\\n },\\r\\n style: {\\r\\n width: $data._editorWidth,\\r\\n height: $data._editorHeight\\r\\n }\\r\\n \\\" type=\\\"text\\\" data-with-number-group-separators=\\\"true\\\"> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td data-bind=\\\"class: $data._cellClasses,\\r\\n click: $data.SelectCell.bind($data),\\r\\n style:{ 'background-color': CellColor },\\r\\n event: {\\r\\n mouseover: $data.MouseOver.bind($data),\\r\\n mouseout: $data.MouseOut.bind($data)\\r\\n },\\\" tabindex=\\\"0\\\" class=\\\"planner-table-number-cell edit-cell\\\"> <!-- ko if: $data.ShowQueryButtons --> <div class=\\\"queryIconBox\\\"> <!-- ko if: _query1Icon --> <a data-bind=\\\"contextMenu: { build: $data.BuildButton1ContextMenu.bind($data, $data) }, click: RunQuery1, attr: { title: _query1RecordName }, style: { color: _query1RecordName() ? 'black' : 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query1Icon --> <div class=\\\"\\\" data-bind=\\\"css: {'query2' : $parent._query1Icon && $parent._query2Icon, 'query1' : $parent._query1Icon}\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: _query2Icon --> <a data-bind=\\\"contextMenu: { build: $data.BuildButton2ContextMenu.bind($data, $data) }, click: RunQuery2, attr: { title: _query2RecordName }, style: { color: _query2RecordName() ? 'black' : 'red' }\\\" href=\\\"javascript:;\\\"> <!-- ko with: _query2Icon --> <div class=\\\"\\\" data-bind=\\\"css: {'query2' : $parent._query1Icon && $parent._query2Icon}\\\"> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> </div> <!-- /ko --> </a> <!-- /ko --> </div> <!-- /ko --> </td>\";\n// Exports\nexport default code;","export const KEY_CODES = {\r\n LEFT: 37,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n UP: 38,\r\n ENTER: 13,\r\n BACKSPACE: 8\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport {Event} from 'Core/Common/Event'\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {RightBarCell} from \"Core/Controls/PlannerLevel/RightBarCell/RightBarCell\";\r\nimport {EVENTS} from \"Core/Controls/PlannerLevel/Events\";\r\nimport {PlannerLevel} from \"../PlannerLevel\";\r\n\r\nimport Template from 'Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow.html';\r\nko.templates['Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow'] = Template;\r\n\r\nexport interface IRightBarRowOptions {\r\n Model: PlannerLevelRowModel;\r\n Level: number;\r\n ReadOnly: boolean,\r\n HideQueryButtons: boolean;\r\n}\r\n\r\nexport class RightBarRow extends Event{\r\n private _model: PlannerLevelRowModel;\r\n private _cells: KnockoutObservableArray<RightBarCell>;\r\n private _level: number;\r\n public _barClasses: KnockoutComputed<string>;\r\n private _readOnly: boolean;\r\n private _copyCellMode: boolean;\r\n private _hideQueryButtons: boolean;\r\n\r\n constructor(options: IRightBarRowOptions){\r\n super();\r\n this._model = options.Model;\r\n this._level = options.Level;\r\n this._hideQueryButtons = options.HideQueryButtons;\r\n this._cells = ko.observableArray([]);\r\n this._readOnly = options.ReadOnly;\r\n this._barClasses = ko.computed(()=>{\r\n return `level-${this._level} ${this._model.IsExpanded() ? 'open': ''} ${this._model.IsActive() ? 'active-row' : ''}`;\r\n });\r\n this.Init();\r\n }\r\n\r\n Init(){\r\n this.AddEvent(EVENTS.MOUSE_OVER);\r\n this.AddEvent(EVENTS.MOUSE_OUT);\r\n this.AddEvent(EVENTS.UNSELECT_CELLS);\r\n this.AddEvent(EVENTS.KEY_DOWN);\r\n this.AddEvent(EVENTS.UPDATE_PLAN);\r\n this.AddEvent(EVENTS.HIGHER_RESOLUTION_PLANNING);\r\n this.AddEvent(EVENTS.UNLINK_QUERY_RECORD);\r\n this.AddEvent(EVENTS.COPY_CELL);\r\n\r\n let cells = _.map(this._model.TimeLine, (timeCell) => {\r\n let cell = new RightBarCell(timeCell, this._model, this._readOnly, this._hideQueryButtons);\r\n cell.On(EVENTS.MOUSE_OVER, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.MOUSE_OVER, { CellModel: eventArgs.data.CellModel } );\r\n this._model.IsActive(true);\r\n });\r\n\r\n cell.On(EVENTS.MOUSE_OUT, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.MOUSE_OUT, { CellModel: eventArgs.data.CellModel } );\r\n this._model.IsActive(false);\r\n });\r\n\r\n cell.On(EVENTS.UNSELECT_CELLS, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.UNSELECT_CELLS, { CellModel: eventArgs.data.CellModel } );\r\n });\r\n\r\n cell.On(EVENTS.KEY_DOWN, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.KEY_DOWN, { CellModel: eventArgs.data.CellModel, Event: eventArgs.data.Event, RowModel: this._model, CellElement: eventArgs.data.CellElement } );\r\n });\r\n\r\n cell.On(EVENTS.UPDATE_PLAN, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.UPDATE_PLAN, {\r\n CellModel: eventArgs.data.CellModel,\r\n Button1RecordId: eventArgs.data.Button1RecordId,\r\n Button1TableId: eventArgs.data.Button1TableId,\r\n Button2RecordId: eventArgs.data.Button2RecordId,\r\n Button2TableId: eventArgs.data.Button2TableId,\r\n RowModel: this._model,\r\n CellElement: eventArgs.data.CellElement\r\n });\r\n });\r\n\r\n \r\n cell.On(EVENTS.UNLINK_QUERY_RECORD, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.UNLINK_QUERY_RECORD, {\r\n CellModel: eventArgs.data.CellModel,\r\n ButtonRecordId: eventArgs.data.ButtonRecordId,\r\n ButtonTableId: eventArgs.data.ButtonTableId,\r\n RowModel: this._model,\r\n CellElement: eventArgs.data.CellElement\r\n });\r\n });\r\n\r\n cell.On(EVENTS.HIGHER_RESOLUTION_PLANNING, this, (eventArgs) =>{\r\n this.Trigger(EVENTS.HIGHER_RESOLUTION_PLANNING, { CellModel: eventArgs.data.CellModel, RowModel: this._model } );\r\n });\r\n\r\n cell.On(EVENTS.COPY_CELL, this, () => {\r\n this.Trigger(EVENTS.COPY_CELL);\r\n \r\n this._copyCellMode = true;\r\n _.each(this._cells(), (item)=>{\r\n\r\n item.CopyCellMode = true;\r\n if(cell != item){\r\n item.IsCopyFrom(false);\r\n } \r\n item.IsCopyTo(false);\r\n });\r\n\r\n });\r\n\r\n return cell;\r\n });\r\n this._cells(cells);\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/PlannerLevel/RightBarRow/Templates/RightBarRow';\r\n }\r\n\r\n get IsExpanded(): KnockoutObservable<boolean>{\r\n return this._model.IsExpanded;\r\n }\r\n\r\n get SubControls(){\r\n return this._model.SubControls;\r\n }\r\n\r\n set IsHightResolutionPlanning(value: boolean){\r\n _.each(this._cells(), (cell) => {\r\n cell.IsHightResolutionPlanning = value;\r\n });\r\n\r\n _.each(this._model.SubControls(), (subControl)=>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.IsHightResolutionPlanning = value;\r\n }\r\n });\r\n }\r\n\r\n SelectCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsSelected(true);\r\n }\r\n }\r\n\r\n IsCopyToCellSelected(cellIndex: number){\r\n let selected = false;\r\n let cell = this._model.TimeLine[cellIndex];\r\n\r\n if(cell){\r\n selected = cell.IsCopyTo();\r\n }\r\n return selected;\r\n }\r\n\r\n SelectCopyToCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsCopyTo(true);\r\n }\r\n }\r\n\r\n SelectCopyFromCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsCopyFrom(true);\r\n }\r\n }\r\n\r\n get CopyFromCellIndex(): number{\r\n let copyFromCell = _.find(this._model.TimeLine, (item)=>{ return item.IsCopyFrom() });\r\n return this._model.TimeLine.indexOf(copyFromCell);\r\n }\r\n\r\n UnSelectCopyFromCells(){\r\n _.each(this._cells(), cell =>{\r\n cell.IsCopyFrom(false);\r\n cell.CopyCellMode = false;\r\n });\r\n }\r\n\r\n UnSelectCopyToCell(cellIndex: number){\r\n let cell = this._model.TimeLine[cellIndex];\r\n if(cell){\r\n cell.IsCopyTo(false);\r\n }\r\n }\r\n\r\n UnSelectCopyToCells(){\r\n _.each(this._cells(), cell =>{\r\n cell.IsCopyTo(false);\r\n });\r\n }\r\n\r\n get BarId(){\r\n return this._model.BarId;\r\n }\r\n\r\n UpdateCells(cellModels: Array<TimeCellModel>){\r\n _.each(cellModels, (cellModel) => {\r\n let cellToUpdate = _.find(this._cells(), (cell) =>{\r\n return cell.TimeAxis === cellModel.TimeAxis;\r\n });\r\n\r\n if(cellToUpdate){\r\n cellToUpdate.SetValue(cellModel);\r\n }\r\n });\r\n }\r\n\r\n get Height(): KnockoutObservable<number>{\r\n return this._model.RowHeight;\r\n }\r\n\r\n get RowColor(){\r\n return this._model.RowColor;\r\n }\r\n\r\n AfterRender(){}\r\n\r\n CopyCell(copyFromIndex: number, overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n let copyFromCell = this._cells()[copyFromIndex];\r\n _.each(this._cells(), (cell)=>{\r\n if(cell.IsCopyTo()){\r\n cell.SetCopyToValue(\r\n copyFromCell.Value(),\r\n copyFromCell.Model.Button1TableId,\r\n copyFromCell.Model.Button1RecordId,\r\n copyFromCell.Model.Button2TableId,\r\n copyFromCell.Model.Button2RecordId,\r\n overwrite,\r\n copyQueryButton1,\r\n copyQueryButton2\r\n );\r\n cell.IsCopyTo(false);\r\n }\r\n });\r\n }\r\n\r\n get HasData(): boolean{\r\n let hasData = false;\r\n _.each(this._cells(), (cell) =>{\r\n if(cell.IsCopyTo() && cell.HasData){\r\n hasData = true;\r\n }\r\n });\r\n return hasData;\r\n }\r\n\r\n get HasAnyData(): boolean{\r\n let hasData = false;\r\n _.each(this._cells(), (cell) =>{\r\n if(cell.HasData){\r\n hasData = true;\r\n }\r\n });\r\n return hasData;\r\n }\r\n}","// Module\nvar code = \"<tr data-bind=\\\"fastForEach: { data: _cells },\\r\\n class: $data._barClasses,\\r\\n style: {\\r\\n 'background-color' : $data.RowColor\\r\\n },\\r\\n attr: { height: $data.Height }\\\" class=\\\"planner-table-row\\\"> <!-- ko template: { name: $data.TemplateName, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </tr> <!-- ko if: IsExpanded --> <!-- ko foreach: SubControls --> <!-- ko template: { name: $data.GetRightBarTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","export const EVENTS = {\r\n SAVE: 'SAVE'\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport * as moment from \"moment\";\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../Models/PlannerLevelRowModel\";\r\nimport {Event} from 'Core/Common/Event'\r\nimport {EVENTS} from 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Events';\r\n\r\nimport Template from 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning.html';\r\nimport {RightBarCell} from \"../RightBarCell/RightBarCell\";\r\nimport {FormatConverter} from \"../../../../FormatEditor/FormatConverter\";\r\nko.templates['Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning'] = Template;\r\n\r\nexport class HigherResolutionPlanning extends Event{\r\n private _modal: Modal;\r\n private _higherResolutionsPlanning: PlannerLevelRowModel;\r\n private _parentPlan: TimeCellModel;\r\n private _barName: string;\r\n Cells: Array<RightBarCell>;\r\n\r\n constructor(\r\n higherResolutionPlanning: PlannerLevelRowModel,\r\n parentPlan: TimeCellModel,\r\n barName: string\r\n ){\r\n super();\r\n this._higherResolutionsPlanning = higherResolutionPlanning;\r\n this._parentPlan = parentPlan;\r\n this._barName = barName;\r\n this.Cells = [];\r\n\r\n if(!this.HasAnyPlanning()){\r\n this.CalculatePlanning();\r\n }\r\n\r\n _.each(this._higherResolutionsPlanning.TimeLine, (timeLine) =>{\r\n let cell = new RightBarCell(timeLine, this._higherResolutionsPlanning, false);\r\n this.Cells.push(cell);\r\n });\r\n\r\n this.AddEvent(EVENTS.SAVE)\r\n }\r\n\r\n CalculatePlanning(){\r\n let value = Math.floor(parseFloat(this._parentPlan.TimeValue.replace(',','.'))/this._higherResolutionsPlanning.TimeLine.length);\r\n\r\n if(value > 0){\r\n _.each(this._higherResolutionsPlanning.TimeLine, (item) =>{\r\n item.TimeValue = this.FormatValue(value.toString());\r\n\r\n if(this._higherResolutionsPlanning.TimeLine.indexOf(item) === this._higherResolutionsPlanning.TimeLine.length -1){\r\n item.TimeValue = this.FormatValue((parseFloat(item.TimeValue.replace(',', '.'))\r\n + parseFloat(this._parentPlan.TimeValue.replace(',', '.'))%this._higherResolutionsPlanning.TimeLine.length).toString());\r\n }\r\n });\r\n }else{\r\n let firstDate = _.first(this._higherResolutionsPlanning.TimeLine);\r\n if(firstDate){\r\n firstDate.TimeValue = this._parentPlan.TimeValue;\r\n }\r\n }\r\n }\r\n\r\n FormatValue(value: string){\r\n return FormatConverter.ConvertDecimal(value)\r\n }\r\n\r\n GetTemplateName(){\r\n return 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Templates/HigherResolutionPlanning';\r\n }\r\n\r\n FormatTitle(cell: RightBarCell){\r\n let startWeekDate = moment(cell.TimeAxis);\r\n let endWeekDate = moment(cell.TimeAxis).add(6, 'day');\r\n return `Week ${startWeekDate.isoWeek()}: ${startWeekDate.format('DD')}/${startWeekDate.format('MM')} - ${endWeekDate.format('DD')}/${endWeekDate.format('MM')}`;\r\n }\r\n\r\n get Title(){\r\n return `${this._barName}: ${moment(this._parentPlan.TimeAxis).format('MMMM')}, ${moment(this._parentPlan.TimeAxis).year()}`;\r\n }\r\n\r\n AfterRender(){\r\n let first =_.first(this.Cells);\r\n if(first){\r\n first.SelectCell();\r\n }\r\n }\r\n\r\n Show(){\r\n this._modal = new Modal({ addClass: 'higher-resolution-planner', height: 300, width: 350 }, false);\r\n this._modal.Show();\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n Close(){\r\n if(this._modal){\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Save(){\r\n this.Trigger(EVENTS.SAVE);\r\n }\r\n\r\n private HasAnyPlanning(){\r\n return _.filter(this._higherResolutionsPlanning.TimeLine, item => parseFloat(item.TimeValue) !== 0).length > 0;\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"text: $data.Title\\\" class=\\\"title\\\"></div> <div class=\\\"planning-list\\\"> <!-- ko foreach: $data.Cells --> <div class=\\\"form-group condition-item-simple\\\"> <div class=\\\"controls form-inline row\\\"> <!-- ko text: $parent.FormatTitle($data) --><!-- /ko --> <input data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\ttextInput: $data.Value,\\r\\n\\t\\t\\t\\t\\t\\thasFocus: $data.IsSelected,\\r\\n\\t\\t\\t\\t \\t\\tinputMask: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: $data.Value,\\r\\n\\t\\t\\t\\t\\t\\t\\ttype: 'Decimal',\\r\\n\\t\\t\\t\\t\\t\\t\\tdecimalSize: 2\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" data-with-number-group-separators=\\\"true\\\"> </div> </div> <!-- /ko --> <div class=\\\"clearfix save-button\\\"> <a data-bind=\\\"click: $data.Save\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\">Save</a> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from \"jquery\";\r\nimport * as moment from \"moment\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControl} from \"../IControl\";\r\nimport {TranslationManager} from \"../../Components/Translation/TranslationManager\";\r\n\r\nimport {IGetPlannerLevelDataRequestModel, PlannerLevelStore} from \"./Store/PlannerLevelStore\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"./Models/PlannerLevelRowModel\";\r\nimport {CONTROL_TYPES, RenderModes, FIELD_TYPES} from \"../../Constant\";\r\nimport {Icon} from \"../../Icon/Icon\";\r\nimport {EntityTypes} from \"../Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\nimport {SearchScreen} from \"../../Screens/SearchScreen/SearchScreen\";\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {TypeScreen} from \"../../Screens/TypeScreen/TypeScreen\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {CustomColumnValueModel} from \"./Models/CustomColumnValueModel\";\r\nimport {CustomColumnHeaderModel} from \"../PlannerPage/Models/CustomColumnHeaderModel\";\r\nimport {RightBarRow} from \"Core/Controls/PlannerLevel/RightBarRow/RightBarRow\";\r\nimport {EVENTS} from \"Core/Controls/PlannerLevel/Events\";\r\nimport {EVENTS as HIGHER_RESOLUTION_EVENTS} from 'Core/Controls/PlannerLevel/HigherResolutionPlanning/Events';\r\n\r\nimport Config from 'Core/Controls/PlannerLevel/Configs/planner-level-config.json';\r\nimport DesignTemplate from 'Core/Controls/PlannerLevel/Templates/Design.html';\r\nimport RightBarViewTemplate from 'Core/Controls/PlannerLevel/Templates/RightBarView.html';\r\nimport LeftBarViewTemplate from 'Core/Controls/PlannerLevel/Templates/LeftBarView.html';\r\nimport {KEY_CODES} from \"./KeyCodes\";\r\nimport {RightBarCell} from \"./RightBarCell/RightBarCell\";\r\nimport {HigherResolutionPlanning} from \"./HigherResolutionPlanning/HigherResolutionPlanning\";\r\nimport {Paginator} from \"Core/Components/Paginator/Paginator\";\r\nimport {EVENTS as PAGINATOR_EVENTS} from \"Core/Components/Paginator/Constants\";\r\nimport {AttachedFieldModel} from \"../BaseControl/Models/AttachedFieldModel\";\r\nimport {EntityTypesStore} from \"../../Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {FormatConverter} from \"../../../FormatEditor/FormatConverter\";\r\nimport { IPlannerLevelParams } from '../../UserVarsManager/UserVarsManager';\r\nimport {UserVarsManager, IPlannerPageParams} from 'Core/UserVarsManager/UserVarsManager';\r\nimport { TimeStatus } from '../../Components/Controls/TimeWriting/Constants/TimeStatus';\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nko.templates['Core/Controls/PlannerLevel/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/PlannerLevel/Templates/LeftBarView'] = LeftBarViewTemplate;\r\nko.templates['Core/Controls/PlannerLevel/Templates/RightBarView'] = RightBarViewTemplate;\r\n\r\nconst PROPERTIES = {\r\n READONLY: 'ReadOnly',\r\n ENABLE_LINK: 'EnableLinkButton',\r\n ENABLE_ADD_AND_LINK: 'EnableAdd&LinkButton',\r\n QUERY_BUTTON1: 'QueryButton1',\r\n QUERY_BUTTON2: 'QueryButton2',\r\n HIDE_QUERY_BUTTONS: 'HideQueryButtons'\r\n};\r\n\r\nexport interface IPlannerLevelParentRecords {\r\n RecordId: number;\r\n ControlId: number;\r\n BarId: string;\r\n ParentBarId: string;\r\n}\r\n\r\nexport interface ICellElement {\r\n Element: HTMLElement;\r\n Cell: TimeCellModel\r\n}\r\n\r\nexport const USER_TYPES = {\r\n PROFILE: 'Profile',\r\n USER: 'User'\r\n}\r\n\r\nexport class PlannerLevel extends BaseControl{\r\n\r\n private _dataRows: KnockoutObservableArray<PlannerLevelRowModel>;\r\n private _parentBarId: string;\r\n private _parentRecordId: number;\r\n private _parentBarSubjectId: number;\r\n private _weekNumber: number;\r\n private _startDate: string;\r\n private _level: number;\r\n private _viewType: string;\r\n private _subjectEntityIcon: KnockoutObservable<Icon>;\r\n private _subjectTitle: KnockoutObservable<string>;\r\n private _leftBarIcon: KnockoutObservable<Icon>;\r\n private _leftBarTitle: KnockoutObservable<string>;\r\n private _rightBarIcon: KnockoutObservable<Icon>\r\n private _rightBarTitle: KnockoutObservable<string>;\r\n private _enableLink: KnockoutObservable<boolean>;\r\n private _enableAddAndLink: KnockoutObservable<boolean>;\r\n private _linkUnderlyingTooltip: string;\r\n private _addAndLinkUnderlyingTooltip: string;\r\n private _readOnly: boolean;\r\n private _parentRecords: Array<IPlannerLevelParentRecords>;\r\n private _showControlName: KnockoutComputed<boolean>;\r\n private _divideRowColSpan: KnockoutObservable<number>;\r\n private _showDivideRow: KnockoutObservable<boolean>;\r\n private _customColumnHeaders: Array<CustomColumnHeaderModel>;\r\n private _timeRows: KnockoutObservableArray<RightBarRow>;\r\n private _isHightResolutionPlanning: boolean;\r\n private _paginator: KnockoutObservable<Paginator>;\r\n private _managerId: number;\r\n private _button1TableName: string;\r\n private _button2TableName: string;\r\n private _hideQueryButtons: boolean;\r\n\r\n constructor(params: IControlParam){\r\n super(params, Config)\r\n this._dataRows = ko.observableArray([]);\r\n this._parentBarId = null;\r\n this._parentRecordId = 0;\r\n this._parentBarSubjectId = 0;\r\n this._weekNumber = 36;\r\n this._startDate = moment().format('YYYY-MM-DD');\r\n this._level = 0\r\n this._subjectEntityIcon = ko.observable(null);\r\n this._leftBarIcon = ko.observable(null);\r\n this._leftBarTitle = ko.observable('');\r\n this._rightBarIcon = ko.observable(null);\r\n this._rightBarTitle = ko.observable('');\r\n this._subjectTitle = ko.observable('');\r\n this._enableLink = ko.observable(false);\r\n this._enableAddAndLink = ko.observable(false);\r\n this._linkUnderlyingTooltip = '';\r\n this._addAndLinkUnderlyingTooltip = '';\r\n this._parentRecords = [];\r\n this._divideRowColSpan = ko.observable(0);\r\n this._showDivideRow = ko.observable(false);\r\n this._customColumnHeaders = [];\r\n this._isHightResolutionPlanning = false;\r\n this._paginator = ko.observable(null);\r\n this._hideQueryButtons = false;\r\n\r\n this.ApplyProperties();\r\n this.Init();\r\n\r\n this._showControlName = ko.computed(()=>{\r\n return this._model().Fields.length === 0;\r\n });\r\n\r\n this._timeRows = ko.observableArray([]);\r\n }\r\n\r\n set IsHightResolutionPlanning(value: boolean){\r\n this._isHightResolutionPlanning = value;\r\n _.each(this._timeRows(), (timeRow) => {\r\n timeRow.IsHightResolutionPlanning = value;\r\n });\r\n }\r\n\r\n SetParentRecords(parentRecords: Array<IPlannerLevelParentRecords>){\r\n this._parentRecords = parentRecords;\r\n }\r\n\r\n set ShowDivideRow(value: boolean){\r\n this._showDivideRow(value);\r\n }\r\n\r\n ApplyProperties(){\r\n const enableLinkProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_LINK);\r\n const enableAddAndLinkProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.ENABLE_ADD_AND_LINK);\r\n this._readOnly = this.GeneralProperties.GetPropertyValue(PROPERTIES.READONLY);\r\n this._hideQueryButtons = this.GeneralProperties.GetPropertyValue(PROPERTIES.HIDE_QUERY_BUTTONS) || false;\r\n this._enableLink(enableLinkProperty && this.HasNexLevel());\r\n this._enableAddAndLink(enableAddAndLinkProperty && this.HasNexLevel());\r\n }\r\n\r\n Init(){\r\n this.InitIcons();\r\n this._model.subscribe(()=>{\r\n this.InitIcons();\r\n })\r\n\r\n this._linkUnderlyingTooltip = LABELS.LINK_UNDERLYING_RECORD.replace('{UnderlyingSubject}', this.GetNexLevelSubjectEntityName());\r\n this._addAndLinkUnderlyingTooltip = LABELS.ADD_AND_LINK_UNDERLYING_RECORD.replace('{UnderlyingSubject}', this.GetNexLevelSubjectEntityName());\r\n }\r\n\r\n get Index(){\r\n return this._parentControl.GetSubControls().indexOf(this);\r\n }\r\n\r\n HasNexLevel(){\r\n let nextPlannerLevel = _.find(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n return !!nextPlannerLevel;\r\n }\r\n\r\n GetLeftBarTemplateName(){\r\n return 'Core/Controls/PlannerLevel/Templates/LeftBarView';\r\n }\r\n\r\n GetRightBarTemplateName(){\r\n return 'Core/Controls/PlannerLevel/Templates/RightBarView';\r\n }\r\n\r\n InitIcons(){\r\n let subjectField = this._model().Fields[0];\r\n if(subjectField && subjectField.EntityTypeName === EntityTypes[EntityTypes.Entity]){\r\n if (subjectField.EntityIcon) {\r\n this._subjectEntityIcon(new Icon(subjectField.EntityIcon));\r\n }\r\n\r\n this._subjectTitle(subjectField.EntityName);\r\n }\r\n\r\n let leftBarField = this._model().Fields[1];\r\n if(leftBarField && leftBarField.EntityTypeName === EntityTypes[EntityTypes.Sub]){\r\n if (leftBarField.EntityIcon) {\r\n this._leftBarIcon(new Icon(leftBarField.EntityIcon));\r\n }\r\n\r\n this._leftBarTitle(leftBarField.EntityName);\r\n }\r\n\r\n let rightBarField = this._model().Fields[2];\r\n if(rightBarField && leftBarField.EntityTypeName === EntityTypes[EntityTypes.Sub]){\r\n if (rightBarField.EntityIcon) {\r\n this._rightBarIcon(new Icon(rightBarField.EntityIcon));\r\n }\r\n\r\n this._rightBarTitle(rightBarField.EntityName);\r\n }\r\n }\r\n\r\n IsRootLevel(){\r\n return this._parentControl.GetType() === CONTROL_TYPES.PlannerPage;\r\n }\r\n\r\n SetParentBarId(parentBarId: string, parentBarSubjectId: number){\r\n this._parentBarId = parentBarId;\r\n this._parentBarSubjectId = parentBarSubjectId;\r\n }\r\n\r\n SetLevel(level: number){\r\n this._level = level;\r\n }\r\n\r\n SetParentRecordId(parentRecordId: number){\r\n this._parentRecordId = parentRecordId;\r\n }\r\n\r\n SetViewType(viewType: string){\r\n this._viewType = viewType;\r\n }\r\n\r\n SetProjectManager(id: number){\r\n this._managerId = id;\r\n }\r\n\r\n AddSubControl(control: IControl) {\r\n this._subControls.push(control);\r\n }\r\n\r\n static GetDefaultName() {\r\n return 'New planer level';\r\n }\r\n\r\n get Title(): string {\r\n return this.GetName() || this.GetDefaultName();\r\n }\r\n\r\n private GetName(): string {\r\n let translationList = this._model().NameTranslations;\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(translationList, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n if (currentLangItem) {\r\n this._getCurrentName = currentLangItem.Translation;\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Name;\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n SetWeekNumber(weekNumber: number){\r\n this._weekNumber = weekNumber;\r\n this._dataRows([]);\r\n }\r\n\r\n SetStartDate(date: string){\r\n this._startDate = date;\r\n this._dataRows([]);\r\n }\r\n\r\n SetCustomColumnHeaders(headers: Array<CustomColumnHeaderModel>){\r\n this._customColumnHeaders = headers;\r\n }\r\n\r\n LoadData(expandAll: boolean = false, parent: PlannerLevelRowModel = null){\r\n if(this._renderMode() === RenderModes.View) {\r\n let requestModel: IGetPlannerLevelDataRequestModel = {\r\n StartDate: this._startDate,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ParentBarId: this._parentBarId,\r\n WeekNumber: this._weekNumber,\r\n ViewType: this._viewType,\r\n ManagerId: this._managerId,\r\n IsRoot: this.IsRootLevel(),\r\n RecordsPerPage: this._paginator() ? this._paginator().RecordsPerPage : 0,\r\n PageNumber: this._paginator() ? this._paginator().PageNumber : 0,\r\n }\r\n\r\n PlannerLevelStore.GetPlannerLevelData(requestModel).always(() => {\r\n if(parent != null){\r\n parent.IsBlocked(false);\r\n }\r\n }).then((result) => {\r\n this.PopulateData(result, expandAll);\r\n });\r\n }\r\n }\r\n\r\n FormatValue(value: string, fieldType: string, fieldFormat: string){\r\n\r\n let field = new FieldMetadataModel();\r\n field.Type = fieldType;\r\n field.FormatName = fieldFormat;\r\n\r\n if(fieldType === FIELD_TYPES.Decimal || fieldType === FIELD_TYPES.Integer){\r\n return this.PrepareDecimalOrInteger(value, field);\r\n }\r\n\r\n if(fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime || fieldType === FIELD_TYPES.Time){\r\n return this.PrepareTime(value, field)\r\n }\r\n\r\n if(fieldType === FIELD_TYPES.TimeSpan){\r\n return this.PrepareTimeSpan(value, field)\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private PrepareDecimalOrInteger(value: string, field: FieldMetadataModel): string {\r\n return FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n\r\n private PrepareTimeSpan(value: string, field: FieldMetadataModel): string {\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(field, true);\r\n return FormatConverter.ConvertFromDefaultFormat(value, datetimeFormat);\r\n }\r\n\r\n private PrepareTime(value: string, field: FieldMetadataModel): string {\r\n value = FormatConverter.CorrectTimezone(value);\r\n let datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(field, true);\r\n return FormatConverter.ConvertFromDefaultFormat(value, datetimeFormat);\r\n }\r\n\r\n get Button1TableName(): string{\r\n let buttonTableName = null;\r\n if(this._button1TableName){\r\n buttonTableName = this._button1TableName;\r\n }else{\r\n _.each(this._timeRows(), (row)=>{\r\n _.each(row.SubControls(), (control) =>{\r\n if(control instanceof PlannerLevel && control.Button1TableName){\r\n buttonTableName = control.Button1TableName;\r\n }\r\n });\r\n });\r\n } \r\n return buttonTableName;\r\n }\r\n\r\n get Button2TableName(): string{\r\n let buttonTableName = null;\r\n if(this._button2TableName){\r\n buttonTableName = this._button2TableName;\r\n }else{\r\n _.each(this._timeRows(), (row)=>{\r\n _.each(row.SubControls(), (control) =>{\r\n if(control instanceof PlannerLevel && control.Button2TableName){\r\n buttonTableName = control.Button2TableName;\r\n }\r\n });\r\n });\r\n } \r\n return buttonTableName;\r\n }\r\n\r\n PopulateData(data: Array<PlannerLevelRowModel>, expandAll: boolean = false){\r\n\r\n if(data.length > 0){\r\n this._button1TableName = data[0].Button1TableName;\r\n this._button2TableName = data[0].Button2TableName;\r\n }\r\n\r\n let timeRows: Array<RightBarRow> = [];\r\n _.each(data, (dataRow) =>{\r\n let customValues = dataRow.CustomValues;\r\n dataRow.CustomValues = [];\r\n _.each(this._customColumnHeaders, (header) => {\r\n let customValue = new CustomColumnValueModel();\r\n customValue.FieldName = header.FieldName;\r\n customValue.FieldType = header.FieldType;\r\n let value = _.find(customValues, (customValue) => {\r\n return customValue.FieldName === header.FieldName && customValue.FieldType === header.FieldType;\r\n });\r\n\r\n if(value){\r\n customValue.Value(this.FormatValue(value.Value(), value.FieldType, value.FieldFormat));\r\n }\r\n\r\n dataRow.CustomValues.push(customValue);\r\n });\r\n\r\n let rightBarRow = new RightBarRow( { Model: dataRow, Level: this._level, ReadOnly: this._readOnly, HideQueryButtons: this._hideQueryButtons });\r\n\r\n rightBarRow.IsHightResolutionPlanning = this._isHightResolutionPlanning;\r\n\r\n rightBarRow.On(EVENTS.MOUSE_OVER, this, (eventArgs) =>{\r\n this.MouseCellOver(eventArgs.data.CellModel);\r\n });\r\n\r\n rightBarRow.On(EVENTS.MOUSE_OUT, this, (eventArgs) =>{\r\n this.MouseCellOut(eventArgs.data.CellModel);\r\n });\r\n\r\n rightBarRow.On(EVENTS.UNSELECT_CELLS, this, (eventArgs) =>{\r\n this.UnselectParentCells(eventArgs.data.CellModel);\r\n });\r\n\r\n rightBarRow.On(EVENTS.KEY_DOWN, this, (eventArgs) =>{\r\n this.KeyDown(eventArgs.data.RowModel, eventArgs.data.CellModel, eventArgs.data.Event, eventArgs.data.CellElement);\r\n });\r\n\r\n rightBarRow.On(EVENTS.UPDATE_PLAN, this, (eventArgs) =>{\r\n this.UpdatePlan(\r\n eventArgs.data.RowModel,\r\n eventArgs.data.Button1TableId,\r\n eventArgs.data.Button1RecordId,\r\n eventArgs.data.Button2TableId,\r\n eventArgs.data.Button2RecordId,\r\n eventArgs.data.CellModel,\r\n eventArgs.data.CellElement\r\n );\r\n });\r\n\r\n rightBarRow.On(EVENTS.UNLINK_QUERY_RECORD, this, (eventArgs) =>{\r\n\r\n this.UnlinkQueryRecord(\r\n eventArgs.data.RowModel,\r\n eventArgs.data.ButtonTableId,\r\n eventArgs.data.ButtonRecordId,\r\n eventArgs.data.CellModel,\r\n eventArgs.data.CellElement\r\n );\r\n });\r\n\r\n rightBarRow.On(EVENTS.COPY_CELL, this, () =>{\r\n if(this._parentControl){\r\n (this._parentControl as any).SetCopyCellMode();\r\n }\r\n });\r\n\r\n rightBarRow.On(EVENTS.HIGHER_RESOLUTION_PLANNING, this, (eventArgs) =>{\r\n this.ShowHigherResolutionPlanning(eventArgs.data.RowModel, eventArgs.data.CellModel);\r\n });\r\n\r\n timeRows.push(rightBarRow);\r\n \r\n });\r\n\r\n this._timeRows(timeRows);\r\n this._dataRows(data);\r\n\r\n _.each(data, (row)=>{\r\n if(expandAll){\r\n this.Toggle(row, expandAll);\r\n }else{\r\n if(this.GetDefaultExpandedState(row.BarId)){\r\n this.Toggle(row, false);\r\n }\r\n }\r\n });\r\n\r\n let firstRow = _.first(this._dataRows());\r\n if(firstRow){\r\n this._divideRowColSpan(firstRow.TimeLine.length);\r\n }\r\n\r\n if(!this._paginator() && this.IsRootLevel()){\r\n this._paginator(new Paginator());\r\n this._paginator().RecordsPerPage = 20;\r\n this._paginator().On(PAGINATOR_EVENTS.CHANGE, this, () => {\r\n this.CancelCopyToSelection();\r\n this.LoadData();\r\n });\r\n }\r\n\r\n if(firstRow && this._paginator()){\r\n this._paginator().TotalRecords = firstRow.TotalRecords;\r\n }\r\n }\r\n\r\n CancelCopyToSelection(){\r\n if(this._parentControl){\r\n (this._parentControl as any).CancelCopyToSelection();\r\n }\r\n }\r\n\r\n SetCopyCellMode(){\r\n if(this._parentControl){\r\n (this._parentControl as any).SetCopyCellMode();\r\n }\r\n }\r\n \r\n WeekOfMonth(m: moment.Moment) {\r\n return m.isoWeek() - moment(m).startOf('month').isoWeek() + 1;\r\n }\r\n\r\n ShowHigherResolutionPlanning(row: PlannerLevelRowModel, cell: TimeCellModel){\r\n BlockUI.Block();\r\n \r\n let startDate = cell.TimeAxis;\r\n if(moment(cell.TimeAxis).startOf('isoWeek').month() < moment(cell.TimeAxis).month()){\r\n startDate = moment(cell.TimeAxis).add(6, 'day').format();\r\n }\r\n\r\n let requestModel: IGetPlannerLevelDataRequestModel = {\r\n StartDate: startDate,\r\n ControlId: this.GetControlId(),\r\n ParentBarId: this._parentBarId,\r\n WeekNumber: 2,\r\n ViewType: 'Week',\r\n IsRoot: this.IsRootLevel(),\r\n RecordsPerPage: 0,\r\n PageNumber: 0,\r\n BarId: row.BarId\r\n }\r\n\r\n PlannerLevelStore.GetPlannerLevelData(requestModel).always(() => {\r\n BlockUI.Unblock();\r\n }).then((result) => {\r\n if(result.length > 0){\r\n\r\n result[0].TimeLine = _.filter(result[0].TimeLine, (item) => {\r\n return moment(item.TimeAxis).month() === moment(cell.TimeAxis).month() && moment(item.TimeAxis).year() === moment(cell.TimeAxis).year();\r\n });\r\n\r\n let higherResolutionPlanning = new HigherResolutionPlanning(result[0], cell, row.BarName);\r\n higherResolutionPlanning.On(HIGHER_RESOLUTION_EVENTS.SAVE, this, () =>{\r\n let request = [];\r\n _.each(higherResolutionPlanning.Cells, (cell) =>{\r\n request.push({\r\n RecordId: row.RecordId,\r\n TimeValue: this.FormatPlanValue(cell.Value().toString()),\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: 'Week',\r\n BarId: row.BarId\r\n });\r\n });\r\n\r\n BlockUI.Block();\r\n\r\n PlannerLevelStore.CreateOrUpdatePlans({ HigherResolutionPlans: request, Plan: {\r\n RecordId: row.RecordId,\r\n TimeValue: this.FormatPlanValue(cell.TimeValue.toString()),\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: this._viewType,\r\n BarId: row.BarId\r\n } }).then((result)=>{\r\n this.UpdateCells(result);\r\n cell.IsSelected(true);\r\n this.UnselectParentCells(cell);\r\n }).always(()=>{\r\n higherResolutionPlanning.Close();\r\n BlockUI.Unblock();\r\n }).fail(data => {\r\n new Notifier(null).Failed(data.message);\r\n });\r\n\r\n });\r\n higherResolutionPlanning.Show();\r\n }\r\n });\r\n }\r\n\r\n FormatPlanValue(value: string){\r\n return value.replace(',', '.');\r\n }\r\n\r\n UpdateCells(rows: Array<PlannerLevelRowModel>){\r\n\r\n let parentControl = this.GetParentControl();\r\n if(parentControl instanceof PlannerLevel){\r\n parentControl.UpdateCells(rows);\r\n }\r\n\r\n let controlDataRows = _.filter(rows, (row) => {\r\n return row.ControlId === this.GetControlId();\r\n });\r\n\r\n _.each(controlDataRows, (dataRow) => {\r\n let dataRowToUpdate = _.find(this._dataRows(), (item) => {\r\n return dataRow.BarId === item.BarId;\r\n });\r\n\r\n if(dataRowToUpdate) {\r\n _.each(dataRow.CustomValues, (customValue) =>{\r\n let existsCustomValue = _.find(dataRowToUpdate.CustomValues, (item) => {\r\n return item.FieldType === customValue.FieldType && item.FieldName === customValue.FieldName;\r\n });\r\n\r\n if(existsCustomValue){\r\n existsCustomValue.Value(this.FormatValue(customValue.Value(), existsCustomValue.FieldType, existsCustomValue.FieldFormat));\r\n };\r\n });\r\n }\r\n }\r\n );\r\n\r\n _.each(controlDataRows, (dataRow) => {\r\n let dataRowToUpdate = _.find(this._timeRows(), (item) => {\r\n return dataRow.BarId === item.BarId;\r\n });\r\n\r\n if(dataRowToUpdate) {\r\n dataRowToUpdate.UpdateCells(dataRow.TimeLine);\r\n }\r\n }\r\n );\r\n }\r\n\r\n UnlinkQueryRecord(\r\n row: PlannerLevelRowModel,\r\n buttonTableId: number,\r\n buttonRecordId: number,\r\n cell: TimeCellModel,\r\n cellElement: HTMLElement\r\n ){\r\n BlockUI.Block({ Target: cellElement });\r\n PlannerLevelStore.UnlinkQueryRecord({\r\n UnlinkButtonRecordId: buttonRecordId,\r\n UnlinkButtonTableId: buttonTableId,\r\n RecordId: row.RecordId,\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: this._viewType,\r\n BarId: row.BarId\r\n }).then((result)=>{\r\n this.UpdateCells(result);\r\n }).always(()=>{\r\n BlockUI.Unblock(cellElement);\r\n }).fail(data => {\r\n new Notifier(null).Failed(data.message);\r\n });\r\n }\r\n\r\n UpdatePlan(\r\n row: PlannerLevelRowModel,\r\n button1TableId: number,\r\n button1RecordId: number,\r\n button2TableId: number,\r\n button2RecordId: number,\r\n cell: TimeCellModel,\r\n cellElement: HTMLElement\r\n ){\r\n BlockUI.Block({ Target: cellElement });\r\n\r\n if(button1RecordId || button2RecordId){\r\n if(this._viewType == 'Month'){\r\n cell.TimeValue = '720';\r\n }\r\n\r\n if(this._viewType == 'Week'){\r\n cell.TimeValue = '168';\r\n }\r\n\r\n if(this._viewType == 'Day'){\r\n cell.TimeValue = '24';\r\n }\r\n }\r\n\r\n PlannerLevelStore.CreateOrUpdatePlan({\r\n Button1RecordId: button1RecordId,\r\n Button1TableId: button1TableId,\r\n Button2RecordId: button2RecordId,\r\n Button2TableId: button2TableId,\r\n RecordId: row.RecordId,\r\n TimeValue: this.FormatPlanValue(cell.TimeValue.toString()),\r\n TimeAxis: cell.TimeAxis,\r\n ControlId: this.GetControlId(),\r\n ParentRecords: this._parentRecords,\r\n ViewType: this._viewType,\r\n BarId: row.BarId\r\n }).then((result)=>{\r\n this.UpdateCells(result);\r\n }).always(()=>{\r\n BlockUI.Unblock(cellElement);\r\n }).fail(data => {\r\n new Notifier(null).Failed(data.message);\r\n });\r\n }\r\n\r\n public ResetDefaultExpandedState(){\r\n let userVars = this.GetUserVars();\r\n userVars.ExpandedBarIds = [];\r\n this.SetUserVars(userVars);\r\n\r\n _.each(this._subControls(), (subControl)=>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.ResetDefaultExpandedState();\r\n }\r\n });\r\n\r\n _.each(this._dataRows(), (dataRow)=>{\r\n this.SetDefaultExpandedState(dataRow, false);\r\n });\r\n }\r\n\r\n private SetDefaultExpandedState(row: PlannerLevelRowModel, expanded: boolean){\r\n let userVars = this.GetUserVars();\r\n if(expanded){\r\n if(userVars.ExpandedBarIds.indexOf(row.BarId) < 0){\r\n userVars.ExpandedBarIds.push(row.BarId); \r\n } \r\n }else{\r\n userVars.ExpandedBarIds.splice(userVars.ExpandedBarIds.indexOf(row.BarId), 1);\r\n _.each(row.SubControls(), (subControl)=>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.ResetDefaultExpandedState();\r\n }\r\n });\r\n }\r\n this.SetUserVars(userVars);\r\n }\r\n\r\n private GetDefaultExpandedState(barId: string): boolean{\r\n let userVars = this.GetUserVars();\r\n return userVars.ExpandedBarIds.indexOf(barId) >= 0;\r\n }\r\n\r\n private GetUserVars(): IPlannerLevelParams {\r\n\t\treturn UserVarsManager.Instance.GetPlannerLevelParams(this.GetControlId());\r\n\t}\r\n\r\n\tprivate SetUserVars(params: IPlannerLevelParams) {\r\n\t\tUserVarsManager.Instance.SetPlannerLevelParams(this.GetControlId(), params);\r\n\t}\r\n\r\n Toggle(plannerLevelRow: PlannerLevelRowModel, expandAll: boolean){\r\n\r\n let planerLevelControls = _.filter(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n if(planerLevelControls.length === 0) return;\r\n\r\n plannerLevelRow.IsExpanded(!plannerLevelRow.IsExpanded());\r\n \r\n this.SetDefaultExpandedState(plannerLevelRow, plannerLevelRow.IsExpanded());\r\n plannerLevelRow.SubControls([]);\r\n if(plannerLevelRow.IsExpanded()) {\r\n plannerLevelRow.IsBlocked(true);\r\n _.each(planerLevelControls, (planerLevelControl) => {\r\n let control = planerLevelControl.Clone() as PlannerLevel;\r\n control.IsHightResolutionPlanning = this._isHightResolutionPlanning;\r\n control.SetCustomColumnHeaders(this._customColumnHeaders);\r\n control.SetParentBarId(plannerLevelRow.BarId, plannerLevelRow.SubjectId);\r\n control.SetLevel(this._level + 1);\r\n control.SetStartDate(this._startDate);\r\n control.SetViewType(this._viewType);\r\n control.SetWeekNumber(this._weekNumber);\r\n control.SetParentRecordId(plannerLevelRow.RecordId);\r\n control.SetProjectManager(this._managerId);\r\n control.SetParentRecords(this._parentRecords.concat([\r\n {\r\n BarId: plannerLevelRow.BarId,\r\n ParentBarId: this._parentBarId,\r\n ControlId: this.GetControlId(),\r\n RecordId: plannerLevelRow.RecordId\r\n }]));\r\n plannerLevelRow.SubControls.push(control);\r\n (control as PlannerLevel).LoadData(expandAll, plannerLevelRow);\r\n });\r\n }\r\n }\r\n\r\n EditValue(timeCell: TimeCellModel){\r\n timeCell.IsEditMode(true);\r\n }\r\n\r\n LinkRecord(plannerLevelRow: PlannerLevelRowModel) {\r\n let childPlannerLevel = _.find(this._subControls(), (item) => {\r\n return item.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n let currentLevelSubject = this.GetModel().Fields[0];\r\n\r\n if(childPlannerLevel){\r\n let plannerLevelSubject = childPlannerLevel.GetModel().Fields[0];\r\n\r\n if(plannerLevelSubject.EntityName === 'SYS_USERS'){\r\n\r\n EntityTypesStore.GetTypes({ EntityId: plannerLevelSubject.EntityId, ParentTypeId: 0, WithRoot: false, OnlyEnabled: true })\r\n .then((result) => {\r\n\r\n let profileType = _.find(result.TableTypes, (item) => {\r\n return item.Name === USER_TYPES.PROFILE;\r\n });\r\n\r\n if(profileType){\r\n EntityTypesStore.GetTypes({ EntityId: plannerLevelSubject.EntityId, ParentTypeId: profileType.Id, WithRoot: false, OnlyEnabled: true })\r\n .then((result) => {\r\n let userType = _.find(result.TableTypes, (item) => {\r\n return item.Name === USER_TYPES.USER;\r\n });\r\n\r\n if(userType){\r\n this.ShowSearchScreen(\r\n plannerLevelSubject,\r\n currentLevelSubject,\r\n plannerLevelRow,\r\n childPlannerLevel,\r\n [userType.Id],\r\n profileType.Id,\r\n currentLevelSubject.EntityId,\r\n 0,\r\n currentLevelSubject.EntityId,\r\n plannerLevelRow.RecordId\r\n );\r\n }\r\n });\r\n }\r\n });\r\n }else{\r\n this.ShowSearchScreen(plannerLevelSubject, currentLevelSubject, plannerLevelRow, childPlannerLevel, []);\r\n }\r\n }\r\n }\r\n\r\n ShowSearchScreen(\r\n plannerLevelSubject: AttachedFieldModel,\r\n currentLevelSubject: AttachedFieldModel,\r\n plannerLevelRow: PlannerLevelRowModel,\r\n childPlannerLevel: IControl,\r\n allowedTypes: Array<number>,\r\n parentTypeId?: number,\r\n parentEntityId?: number,\r\n parentRecordId?: number,\r\n plannerLevelEntityId?: number,\r\n plannerLevelRecordId?: number\r\n ){\r\n if(plannerLevelSubject && plannerLevelSubject.EntityTypeName === EntityTypes[EntityTypes.Entity]){\r\n let searchScreen = new SearchScreen({\r\n EntityId: plannerLevelSubject.EntityId,\r\n SubjectEntityId: parentEntityId || currentLevelSubject.EntityId,\r\n SubjectRecordId: parentRecordId || plannerLevelRow.RecordId,\r\n SubjectTypeId: parentTypeId || plannerLevelRow.SubjectTypeId,\r\n SearchTerm: '',\r\n ButtonAdd: false,\r\n SearchByTypes: allowedTypes,\r\n PlannerLevelEntityId: plannerLevelEntityId,\r\n PlannerLevelRecordId: plannerLevelRecordId\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n this.CreateLink(eventArgs.data.RecordId, plannerLevelRow, childPlannerLevel as PlannerLevel);\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n }\r\n\r\n GetNexLevelSubjectEntityName(){\r\n let nextPlannerLevel = _.find(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n if(nextPlannerLevel){\r\n let subjectEntityField = nextPlannerLevel.GetModel().Fields[0];\r\n if(subjectEntityField){\r\n return subjectEntityField.EntityName;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n MouseRowOver(row: PlannerLevelRowModel){\r\n row.IsActive(true);\r\n }\r\n\r\n MouseRowOut(row: PlannerLevelRowModel){\r\n row.IsActive(false)\r\n }\r\n\r\n MouseCellOver(cell: TimeCellModel){\r\n _.each(this._dataRows(), (dataRow) =>{\r\n let cellIndex = dataRow.TimeLine.indexOf(cell);\r\n if(cellIndex >= 0){\r\n this.ActivateParentColumn(cellIndex);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n MouseCellOut(cell: TimeCellModel){\r\n _.each(this._dataRows(), (dataRow) =>{\r\n let cellIndex = dataRow.TimeLine.indexOf(cell);\r\n if(cellIndex >= 0){\r\n this.DeactivateParentColumn(cellIndex);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n ActivateParentColumn(index: number){\r\n if(this._parentControl) {\r\n if (this._parentControl instanceof PlannerLevel) {\r\n this._parentControl.ActivateParentColumn(index);\r\n } else {\r\n (this._parentControl as any).ActivateColumn(index);\r\n }\r\n }\r\n }\r\n\r\n DeactivateParentColumn(index: number){\r\n if(this._parentControl) {\r\n if (this._parentControl instanceof PlannerLevel) {\r\n this._parentControl.DeactivateParentColumn(index);\r\n } else {\r\n (this._parentControl as any).DeactivateColumn(index);\r\n }\r\n }\r\n }\r\n\r\n UnselectParentCells(exceptCell: TimeCellModel){\r\n if(this._parentControl) {\r\n if (this._parentControl instanceof PlannerLevel) {\r\n this._parentControl.UnselectParentCells(exceptCell);\r\n } else {\r\n (this._parentControl as any).UnselectCells(exceptCell);\r\n }\r\n }\r\n }\r\n\r\n KeyDown(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n if(event.keyCode === KEY_CODES.RIGHT){\r\n this.MoveRight(row, cell, event, cellElement);\r\n } else if(event.keyCode === KEY_CODES.LEFT){\r\n this.MoveLeft(row, cell, event, cellElement);\r\n } else if(event.keyCode === KEY_CODES.UP){\r\n this.MoveUp(row, cell, event, cellElement);\r\n }else if(event.keyCode === KEY_CODES.DOWN || event.keyCode === KEY_CODES.ENTER){\r\n this.MoveDown(row, cell, event, cellElement);\r\n }\r\n }\r\n\r\n MoveDown(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let nextRowElement = $(cellElement).closest('tr').next('tr')[0];\r\n if(nextRowElement){\r\n let nextRow = ko.dataFor(nextRowElement);\r\n if(nextRow instanceof RightBarRow){\r\n this.UnselectParentCells(cell);\r\n nextRow.SelectCell(row.TimeLine.indexOf(cell));\r\n }\r\n }\r\n }\r\n\r\n MoveUp(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let previousRowElement = $(cellElement).closest('tr').prev('tr')[0];\r\n if(previousRowElement){\r\n let previousRow = ko.dataFor(previousRowElement);\r\n if(previousRow instanceof RightBarRow){\r\n this.UnselectParentCells(cell);\r\n previousRow.SelectCell(row.TimeLine.indexOf(cell));\r\n }\r\n }\r\n }\r\n\r\n MoveLeft(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let previousCellElement = $(cellElement).prev('td')[0];\r\n if(previousCellElement){\r\n let previousCell = ko.dataFor(previousCellElement);\r\n if(previousCell instanceof RightBarCell){\r\n this.UnselectParentCells(cell);\r\n previousCell.IsSelected(true);\r\n }\r\n }\r\n }\r\n\r\n MoveRight(row: PlannerLevelRowModel, cell: TimeCellModel, event, cellElement: HTMLElement){\r\n let nextCellElement = $(cellElement).next('td')[0];\r\n if(nextCellElement){\r\n let nextCell = ko.dataFor(nextCellElement);\r\n if(nextCell instanceof RightBarCell){\r\n this.UnselectParentCells(cell);\r\n nextCell.IsSelected(true);\r\n }\r\n }\r\n }\r\n\r\n UnselectCells(exceptCell: TimeCellModel){\r\n _.each(this._dataRows(), (item) => {\r\n _.each(item.SubControls(), (subControl) =>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnselectCells(exceptCell);\r\n }\r\n })\r\n\r\n _.each(item.TimeLine, (cell) => {\r\n cell.IsSelected(false);\r\n });\r\n });\r\n }\r\n\r\n ActivateColumn(index: number){\r\n _.each(this._dataRows(), (item) => {\r\n _.each(item.SubControls(), (subControl) =>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.ActivateColumn(index);\r\n }\r\n })\r\n\r\n let timeCell = item.TimeLine[index];\r\n if(timeCell){\r\n timeCell.IsActive(true);\r\n }\r\n });\r\n }\r\n\r\n DeactivateColumn(index: number){\r\n _.each(this._dataRows(), (item) => {\r\n\r\n _.each(item.SubControls(), (subControl) =>{\r\n if(subControl instanceof PlannerLevel){\r\n subControl.DeactivateColumn(index);\r\n }\r\n })\r\n\r\n\r\n let timeCell = item.TimeLine[index];\r\n if(timeCell){\r\n timeCell.IsActive(false);\r\n }\r\n });\r\n }\r\n\r\n CreateLink(\r\n recordId: number,\r\n plannerLevelRow: PlannerLevelRowModel,\r\n childPlannerLevel: PlannerLevel\r\n ){\r\n BlockUI.Block();\r\n\r\n let treeRecords = this._parentRecords.concat(\r\n [{\r\n BarId: plannerLevelRow.BarId,\r\n ParentBarId: this._parentBarId,\r\n ControlId: this.GetControlId(),\r\n RecordId: plannerLevelRow.RecordId\r\n }]\r\n );\r\n\r\n PlannerLevelStore.LinkRecord({\r\n RecordId: recordId,\r\n ControlId: childPlannerLevel.GetControlId(),\r\n StartDate: this._startDate,\r\n ParentRecords: treeRecords\r\n }).then(()=>{\r\n plannerLevelRow.IsExpanded(true);\r\n plannerLevelRow.SubControls([]);\r\n\r\n if(plannerLevelRow.IsExpanded()) {\r\n let planerLevelControls = _.filter(this._subControls(), (subControl) => {\r\n return subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n _.each(planerLevelControls, (planerLevelControl) => {\r\n let control = planerLevelControl.Clone() as PlannerLevel;\r\n control.SetParentBarId(plannerLevelRow.BarId, plannerLevelRow.SubjectId);\r\n control.SetLevel(this._level + 1);\r\n control.SetStartDate(this._startDate);\r\n control.SetParentRecords(this._parentRecords.concat([\r\n {\r\n BarId: plannerLevelRow.BarId,\r\n ParentBarId: this._parentBarId,\r\n ControlId: this.GetControlId(),\r\n RecordId: plannerLevelRow.RecordId\r\n }]));\r\n control.LoadData();\r\n plannerLevelRow.SubControls.push(control);\r\n });\r\n }\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n AddAndLink(plannerLevelRow: PlannerLevelRowModel){\r\n\r\n let childPlannerLevel = _.find(this._subControls(), (item) => {\r\n return item.GetType() === CONTROL_TYPES.PlannerLevel;\r\n });\r\n\r\n let itSelfRelation = this.GetModel().Fields[0].EntityId === childPlannerLevel.GetModel().Fields[0].EntityId;\r\n let parentType = itSelfRelation ? plannerLevelRow.SubjectTypeId : 0;\r\n\r\n let plannerLevelSubject = childPlannerLevel.GetModel().Fields[0];\r\n if(plannerLevelSubject && plannerLevelSubject.EntityTypeName === EntityTypes[EntityTypes.Entity]){\r\n let typeScreen = new TypeScreen(plannerLevelSubject.EntityId, parentType, false);\r\n\r\n typeScreen.On('TYPE_SELECTED', this, eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.AddAndLinkRecord(\r\n plannerLevelSubject.EntityId,\r\n typeId,\r\n kindId,\r\n exampleRecordId,\r\n plannerLevelRow,\r\n childPlannerLevel as PlannerLevel\r\n );\r\n }).On('TYPES_NOT_FOUND', this, (eventArgs) =>\r\n new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND)\r\n );\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n }\r\n\r\n async AddAndLinkRecord(\r\n relatedEntityId: number,\r\n typeId: number,\r\n kindId: number,\r\n exampleRecordId: number,\r\n plannerLevelRow: PlannerLevelRowModel,\r\n childPlannerLevel: PlannerLevel\r\n ){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: relatedEntityId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n }).then((screen) => {\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.CreateLink(\r\n eventArgs.data.RecordId,\r\n plannerLevelRow,\r\n childPlannerLevel\r\n );\r\n });\r\n\r\n screen.ShowInModal();\r\n\r\n });\r\n }\r\n\r\n AfterRowRender(el: Array<HTMLElement>, row: PlannerLevelRowModel){\r\n ko.tasks.schedule(() => {\r\n let height = $(el[1]).height();\r\n row.RowHeight(height);\r\n });\r\n }\r\n\r\n get Paginator(): KnockoutObservable<Paginator>{\r\n return this._paginator;\r\n }\r\n\r\n get HasPagination(): boolean {\r\n return this._level === 0 && !!this._paginator() && this._paginator().GetIsReady();\r\n }\r\n\r\n SelectCopyFromCell(index: number){\r\n _.each(this._timeRows(), (row)=>{\r\n row.SelectCopyFromCell(index);\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.SelectCopyFromCell(index);\r\n }\r\n });\r\n }); \r\n }\r\n\r\n UnSelectCopyFromCell(){\r\n _.each(this._timeRows(), (row)=>{\r\n row.UnSelectCopyFromCells();\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnSelectCopyFromCell();\r\n }\r\n });\r\n }); \r\n }\r\n\r\n\r\n SelectCopyToCell(index: number){\r\n if(this.IsCopyToCellSelected(index)){\r\n this.UnSelectCopyToCell(index);\r\n return;\r\n }\r\n _.each(this._timeRows(), (row)=>{\r\n row.SelectCopyToCell(index);\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.SelectCopyToCell(index);\r\n }\r\n });\r\n }); \r\n }\r\n\r\n IsCopyToCellSelected(index: number): boolean{\r\n let isSelected = false\r\n _.each(this._timeRows(), (row)=>{\r\n if(row.IsCopyToCellSelected(index)){\r\n isSelected = true;\r\n }\r\n }); \r\n return isSelected;\r\n }\r\n\r\n UnSelectCopyToCell(index: number){\r\n _.each(this._timeRows(), (row)=>{\r\n row.UnSelectCopyToCell(index);\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnSelectCopyToCell(index);\r\n }\r\n });\r\n }); \r\n }\r\n \r\n UnSelectCopyToCells(){\r\n _.each(this._timeRows(), (row)=>{\r\n row.UnSelectCopyToCells();\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.UnSelectCopyToCells();\r\n }\r\n });\r\n }); \r\n }\r\n\r\n CopyColumn(index: number, overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n _.each(this._timeRows(), (row)=>{\r\n\r\n if(!this._readOnly || this.HasAnyQueryButton){\r\n row.CopyCell(index, overwrite, copyQueryButton1, copyQueryButton2);\r\n }else{\r\n row.UnSelectCopyToCells();\r\n }\r\n\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.CopyColumn(index, overwrite, copyQueryButton1, copyQueryButton2);\r\n }\r\n });\r\n\r\n }); \r\n }\r\n\r\n CopyCell(overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n _.each(this._timeRows(), (row)=>{\r\n let copyFromCellIndex = row.CopyFromCellIndex;\r\n \r\n if(!this._readOnly || this.HasAnyQueryButton){\r\n if(copyFromCellIndex >= 0){\r\n row.CopyCell(copyFromCellIndex, overwrite, copyQueryButton1, copyQueryButton2);\r\n }\r\n }else{\r\n row.UnSelectCopyToCells();\r\n }\r\n\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel){\r\n subControl.CopyCell(overwrite, copyQueryButton1, copyQueryButton2);\r\n }\r\n });\r\n }); \r\n }\r\n\r\n get HasAnyQueryButton(){\r\n let hasQuery = this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_BUTTON1) || this.GeneralProperties.GetPropertyValue(PROPERTIES.QUERY_BUTTON2);\r\n return !!hasQuery;\r\n }\r\n\r\n get HasData(){\r\n let hasData = false;\r\n _.each(this._timeRows(), (row)=>{\r\n if((!this._readOnly || this.HasAnyQueryButton) && row.HasData){\r\n hasData = true;\r\n }\r\n\r\n _.each(row.SubControls(), (subControl) => {\r\n if(subControl instanceof PlannerLevel && subControl.HasData){\r\n hasData = true;\r\n }\r\n });\r\n\r\n }); \r\n\r\n return hasData; \r\n }\r\n}","// Module\nvar code = \"<div class=\\\"planner-level-item\\\"> <div class=\\\"planner-item-content\\\"> <div class=\\\"plannerItemAreaBox\\\"> <!-- ko if: _showControlName --> <!-- ko text: Name --><!-- /ko --> <!-- /ko --> <div class=\\\"plannerItemArea plannerItemArea-bold\\\"> <!-- ko with: _subjectEntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data._subjectTitle\\\" class=\\\"planner-level-text\\\"></span> </div> <div class=\\\"plannerItemArea\\\"> <!-- ko with: _leftBarIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data._leftBarTitle\\\" class=\\\"planner-level-text\\\"></span> </div> <div class=\\\"plannerItemArea\\\"> <!-- ko with: _rightBarIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data._rightBarTitle\\\" class=\\\"planner-level-text\\\"></span> </div> </div> <div class=\\\"plannerItemAreaBox plannerItemAreaBox-actionsBox\\\"> <div class=\\\"plannerItemArea plannerItemArea-actions\\\"> <button data-bind=\\\"click: $root.CreatePlannerLevel.bind($root),\\r\\n\\t\\t\\t\\t \\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: _labels.ADD_SUB_LEVEL_PLANNER }\\\" class=\\\"add-planner-sub-level-btn\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <button data-bind=\\\"click: $root.RemoveControl.bind($root, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tpreventBubble: ['click'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: _labels.DELETE_PLANNER_LEVEL }\\\" class=\\\"remove-level-btn\\\"> <i class=\\\"fa fa-times\\\"></i> </button> </div> </div> </div> <!-- ko if: _subControls().length > 0 --> <div class=\\\"over-planner-sub-levels\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $data._showDivideRow && Index !== 0 && HasPagination --> <tr data-bind=\\\"css: { 'paginator-row': !!Paginator }\\\" class=\\\"planner-table-divider-row\\\"> <td colspan=\\\"1\\\"></td> </tr> <!-- /ko --> <!-- ko foreach: { data: _dataRows, afterRender: $data.AfterRowRender } --> <tr class=\\\"planner-table-row\\\" data-bind=\\\"event: {\\r\\n mouseover: $parent.MouseRowOver.bind($data),\\r\\n mouseout: $parent.MouseRowOut($data)\\r\\n },\\r\\n style: {\\r\\n 'background-color' : $data.RowColor\\r\\n },\\r\\n css: {\\r\\n ['level-' + $parent._level] : 1,\\r\\n open : IsExpanded,\\r\\n 'active-row': $data.IsActive,\\r\\n 'copy-to-row': $data.IsCopyTo, \\r\\n 'copy-from-row': $data.IsCopyFrom\\r\\n }\\\"> <td data-bind=\\\"blockElement: $data.IsBlocked\\\" class=\\\"planner-table-name-cell\\\"> <!-- ko if: $parent._enableLink --> <a data-bind=\\\"click: $parent.LinkRecord.bind($parent, $data), tooltip: { content: $parent._linkUnderlyingTooltip }\\\" class=\\\"planner-table-link\\\"><i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i></a> <!-- /ko --> <!-- ko if: $parent._enableAddAndLink --> <a data-bind=\\\"click: $parent.AddAndLink.bind($parent, $data), tooltip: { content: $parent._addAndLinkUnderlyingTooltip }\\\" class=\\\"planner-table-link\\\"><i class=\\\"fa fa-plus\\\" aria-hidden=\\\"true\\\"></i></a> <!-- /ko --> <!-- ko with: $parent._subjectEntityIcon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: $data.BarName\\\" class=\\\"planner-bar-name\\\"></span> <!-- ko if: $parent._subControls().length > 0 --> <button class=\\\"planner-table-show-sub-items-btn\\\" data-bind=\\\"click: $parent.Toggle.bind($parent, $data, false), css : { active : IsExpanded }\\\"> <i class=\\\"fa fa-chevron-left\\\"></i> </button> <button class=\\\"planner-table-show-sub-items-btn\\\" data-bind=\\\"click: $parent.Toggle.bind($parent, $data, true)\\\"> <i data-bind=\\\"css: { 'fa-angle-double-down': !IsExpanded(), 'fa-angle-double-up': IsExpanded() }\\\" class=\\\"fa\\\"></i> </button> <!-- /ko --> </td> <!-- ko foreach: $data.CustomValues --> <td data-bind=\\\"blockElement: $parent.IsBlocked\\\" class=\\\"planner-table-name-cell-customCell\\\"> <!-- ko text: $data.Value --><!-- /ko --> </td> <!-- /ko --> </tr> <!-- ko if: IsExpanded --> <!-- ko foreach: SubControls --> <!-- ko template: { name: GetLeftBarTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: $data._showDivideRow && Index !== 0 && HasPagination --> <tr data-bind=\\\"css: { 'paginator-row': !!Paginator }\\\" class=\\\"planner-table-divider-row\\\"> <td data-bind=\\\"attr: { colspan: $data._divideRowColSpan }\\\"> <div class=\\\"planerPaginatorContainer planerPaginatorContainer--positionSticky\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> </td> </tr> <!-- /ko --> <!-- ko fastForEach: { data: _timeRows } --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\n\r\nexport class CustomColumnHeaderModel {\r\n @deserialize\r\n Title: string;\r\n\r\n @deserialize\r\n FieldType: string;\r\n\r\n @deserialize\r\n FieldName: string;\r\n}","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\n\r\nexport class ProjectManagerModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../../PlannerLevel/Models/PlannerLevelRowModel\";\r\nimport {CustomColumnHeaderModel} from \"./CustomColumnHeaderModel\";\r\nimport {ProjectManagerModel} from \"./ProjectManagerModel\";\r\n\r\nexport class TimeLineColumnModel {\r\n @deserialize\r\n TimeValue: string;\r\n\r\n @deserialize\r\n IsWeekend: boolean;\r\n}\r\n\r\nexport class PlannerPageModel {\r\n constructor(){\r\n this.PlannerLevels = [];\r\n this.CustomColumns = [];\r\n this.TimeLineColumns = [];\r\n this.ProjectManagers = [];\r\n }\r\n\r\n @deserializeAs(TimeLineColumnModel)\r\n TimeLineColumns: Array<TimeLineColumnModel>;\r\n\r\n @deserializeAs(PlannerLevelRowModel)\r\n PlannerLevels: Array<PlannerLevelRowModel>;\r\n\r\n @deserializeAs(CustomColumnHeaderModel)\r\n CustomColumns: Array<CustomColumnHeaderModel>;\r\n\r\n @deserializeAs(ProjectManagerModel)\r\n ProjectManagers: Array<ProjectManagerModel>;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {PlannerPageModel} from \"../Models/PlannerPageModel\";\r\n\r\nexport interface IGetPlannerPageDataRequestModel {\r\n ControlId: number;\r\n WeekNumber: number;\r\n StartDate: string;\r\n RecordsPerPage: number;\r\n PageNumber: number;\r\n ViewType: string;\r\n ManagerId?: number\r\n SubjectRecordId?: number;\r\n}\r\n\r\nexport class PlannerPageStore {\r\n static GetData(params: IGetPlannerPageDataRequestModel): P.Promise<PlannerPageModel>{\r\n let deferredResult = P.defer<PlannerPageModel>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/PlannerApi/GetPlannerPageData',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n if(result.IsSuccessfull){\r\n deferredResult.resolve( Deserialize(result.ResultObject, PlannerPageModel));\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {\r\n ConfirmationDialog,\r\n IConfirmationDialogOptions,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport Template from 'Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog.html';\r\n\r\nko.templates['Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog'] = Template;\r\n\r\nexport interface ICopyQueryButtonConfirmationDialogOptions extends IConfirmationDialogOptions {\r\n Entity1?: string;\r\n Entity2?: string;\r\n Width?: number;\r\n ModalClass?: string;\r\n}\r\n\r\nexport const EVENTS = {\r\n\tENTITY1_SELECTED: 'Entity1Selected',\r\n ENTITY2_SELECTED: 'Entity2Selected',\r\n ENTITY1_AND_ENTITY2_SELECTED: 'Entity1AndEntity2Selected'\r\n};\r\n\r\nexport class CopyQueryButtonConfirmationDialog extends ConfirmationDialog {\r\n private _textEntity1: KnockoutObservable<string>;\r\n private _textEntity2: KnockoutObservable<string>;\r\n private _textEntity1AndEntity2: KnockoutObservable<string>;\r\n\r\n constructor(options: ICopyQueryButtonConfirmationDialogOptions){\r\n super(options);\r\n this._textEntity1 = ko.observable(options.Entity1);\r\n this._textEntity2 = ko.observable(options.Entity2);\r\n this._textEntity1AndEntity2 = ko.observable(`${options.Entity1} and ${options.Entity2}`);\r\n }\r\n\r\n GetTemplateName() {\r\n\t\treturn 'Core/Controls/PlannerPage/Dialogs/CopyQueryButtonConfirmationDialog';\r\n }\r\n\r\n OnEntity1Click(){\r\n this.Close();\r\n this.Trigger(EVENTS.ENTITY1_SELECTED);\r\n }\r\n\r\n OnEntity2Click(){\r\n this.Close();\r\n this.Trigger(EVENTS.ENTITY2_SELECTED);\r\n }\r\n\r\n OnEntity1AndEntity2Click(){\r\n this.Close();\r\n this.Trigger(EVENTS.ENTITY1_AND_ENTITY2_SELECTED);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"confirmation-popup\\\"> <div class=\\\"header\\\"> <div class=\\\"app-logo\\\"> <img src=\\\"/img/Custom/App/official-main-logo-white.jpg\\\"> </div> <div class=\\\"icon\\\"> <!--ko if: IsQuestion--> <i class=\\\"fa fa-question-circle question\\\"></i> <!--/ko--> </div> </div> <div class=\\\"body\\\"> <p class=\\\"confirmation-text\\\" data-bind=\\\"html: _text\\\"></p> <div class=\\\"clearfix\\\"> <div class=\\\"confirmationButtons-Box\\\"> <button data-bind=\\\"click: OnEntity1Click, text: _textEntity1()\\\" class=\\\"btn btn-success\\\"></button> <button data-bind=\\\"click: OnEntity2Click, text: _textEntity2()\\\" class=\\\"btn btn-success\\\"></button> <button data-bind=\\\"click: OnEntity1AndEntity2Click, text: _textEntity1AndEntity2()\\\" class=\\\"btn btn-success\\\"></button> </div> <div class=\\\"actionButtons-Box\\\"> <button data-bind=\\\"click: OnCancelClick, text: _textDecline()\\\" class=\\\"btn btn-danger\\\"></button> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport 'editableCell';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\n\r\nimport {IControl} from \"../IControl\";\r\nimport {CONTROL_TYPES, EVENTS} from \"../../Constant\";\r\nimport {TranslationManager} from \"../../Components/Translation/TranslationManager\";\r\n\r\nimport {PlannerLevel} from \"../PlannerLevel/PlannerLevel\";\r\nimport {PlannerLevelRowModel, TimeCellModel} from \"../PlannerLevel/Models/PlannerLevelRowModel\";\r\nimport {GlobalManager, GLOBALS} from \"../../GlobalManager/GlobalManager\";\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport DesignTemplate from 'Core/Controls/PlannerPage/Templates/Design.html';\r\nimport ViewTemplate from 'Core/Controls/PlannerPage/Templates/View.html';\r\nimport {IGetPlannerPageDataRequestModel, PlannerPageStore} from \"./Store/PlannerPageStore\";\r\nimport {BlockUI} from \"../../Common/BlockUi\";\r\nimport {CustomColumnHeaderModel} from \"./Models/CustomColumnHeaderModel\";\r\nimport {TimeLineColumnModel} from \"./Models/PlannerPageModel\";\r\nimport {ProjectManagerModel} from \"./Models/ProjectManagerModel\";\r\nimport {UserVarsManager, IPlannerPageParams} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { CopyQueryButtonConfirmationDialog, EVENTS as QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS } from 'Core/Controls/PlannerPage/CopyQueryButtonConfirmationDialog';\r\n\r\nko.templates['Core/Controls/PlannerPage/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/PlannerPage/Templates/View'] = ViewTemplate;\r\n\r\nexport interface IMonth {\r\n\tTitle: string;\r\n\tIsActive: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport interface IMonthHeader {\r\n\tYear: string;\r\n\tMonths: Array<IMonth>;\r\n}\r\n\r\nexport interface IDay {\r\n\tDayNum: string;\r\n\tDayName: string;\r\n\tIsWeekend: boolean;\r\n\tIsActive: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport interface IWeek {\r\n\tTitle: string;\r\n\tIsActive: KnockoutObservable<boolean>;\r\n}\r\n\r\nexport interface IDayHeader {\r\n\tTitle: string;\r\n\tWeek: string;\r\n\tYear: string;\r\n\tStartDay: string;\r\n\tDays: Array<IDay>;\r\n}\r\n\r\nexport interface IWeekHeader {\r\n\tTitle: string;\r\n\tWeeks: Array<IWeek>;\r\n}\r\n\r\nexport const PLANNER_TYPES = {\r\n\tMONTH: 'Month',\r\n\tDAY: 'Day',\r\n\tWEEK: 'Week'\r\n}\r\n\r\nexport interface IViewType {\r\n\tValue: string,\r\n\tTitle: string\r\n}\r\n\r\nexport const PROPERTIES = {\r\n\tENABLE_MONTH_VIEW: 'EnableMonthView',\r\n\tENABLE_WEEK_VIEW: 'EnableWeekView',\r\n\tENABLE_DAY_VIEW: 'EnableDayView',\r\n\tENABLE_PROJECT_MANAGER_FILTER: 'EnableProjectManagerFilter'\r\n}\r\n\r\nexport class PlannerPage extends BaseControl{\r\n\tprivate _plannerLevels: KnockoutObservableArray<IControl>;\r\n\tprivate _startDate: KnockoutObservable<string>;\r\n\tprivate _weeks: Array<number>;\r\n\tprivate _selectedWeek: KnockoutObservable<number>;\r\n\tprivate _initialState: boolean;\r\n\tprivate _monthHeaders: KnockoutObservableArray<IMonthHeader>;\r\n\tprivate _dayHeaders: KnockoutObservableArray<IDayHeader>;\r\n\tprivate _weekHeaders: KnockoutObservableArray<IWeekHeader>;\r\n\tprivate _customColumnHeaders: KnockoutObservableArray<CustomColumnHeaderModel>;\r\n\tprivate _viewTypes: KnockoutObservableArray<IViewType>;\r\n\tprivate _selectedView: KnockoutObservable<IViewType>;\r\n\tprivate _renderViewMode: KnockoutObservable<string>;\r\n\tprivate _timeRangeLabel: KnockoutObservable<string>;\r\n\tprivate _weekPlanning: KnockoutObservable<boolean>;\r\n\tprivate _weekPlanningToggleClass: KnockoutComputed<string>;\r\n\tprivate _selectedDate: string;\r\n\tprivate _managers : KnockoutObservableArray<ProjectManagerModel>;\r\n\tprivate _manager: KnockoutObservable<ProjectManagerModel>;\r\n\tprotected _labels = LABELS;\r\n\tprivate _copyColumnMode: KnockoutObservable<boolean>;\r\n\tprivate _copyCellMode: KnockoutObservable<boolean>;\r\n\tprivate _copyFromColumnIndex: number;\r\n\tprivate _showManagerFilter: boolean;\r\n\r\n\tconstructor(params: IControlParam){\r\n\t\tsuper(params)\r\n\t\tthis._weekPlanning = ko.observable(this.GetDefaultIsWeekPlanning());\r\n\t\tthis._plannerLevels = ko.observableArray([]);\r\n\t\tthis._startDate = ko.observable(this.GetDefaultStartDate());\r\n\t\tthis._weeks = [];\r\n\t\tthis._selectedWeek = ko.observable(this.GetDefaultPeriod());\r\n\t\tthis._initialState = true;\r\n\t\tthis._monthHeaders = ko.observableArray([]);\r\n\t\tthis._dayHeaders = ko.observableArray([]);\r\n\t\tthis._weekHeaders = ko.observableArray([]);\r\n\t\tthis._managers = ko.observableArray([]);\r\n\t\tthis._manager = ko.observable(null);\r\n\t\tthis._copyColumnMode = ko.observable(false);\r\n\t\tthis._copyCellMode = ko.observable(false);\r\n\t\tthis._copyFromColumnIndex = null;\r\n\t\tthis._viewTypes = ko.observableArray([]);\r\n\t\tthis.ApplyProperties();\r\n\t\t\r\n\t\tthis._customColumnHeaders = ko.observableArray([]);\r\n\t\tthis._timeRangeLabel = ko.observable('');\r\n\r\n\t\tthis._selectedView = ko.observable(this.GetDefaultViewType());\r\n\t\tthis._renderViewMode = ko.observable(this._selectedView()?.Value);\r\n\r\n\t\tthis._weekPlanningToggleClass = ko.computed(()=>{\r\n\t\t\treturn this._weekPlanning() ? 'fa fa-toggle-on' : 'fa fa-toggle-off'\r\n\t\t});\r\n\r\n\t\tthis._selectedView.subscribe((newValue: IViewType) => {\r\n\t\t\tthis.SetDefaultViewType(newValue.Value);\r\n\t\t\tthis._weekPlanning(false);\r\n\t\t\tthis.LoadData();\r\n\r\n\t\t\tif(newValue.Value === PLANNER_TYPES.MONTH || newValue.Value === PLANNER_TYPES.WEEK){\r\n\t\t\t\tthis._timeRangeLabel(`${this._labels.MONTHS}:`);\r\n\t\t\t}\r\n\r\n\t\t\tif(newValue.Value === PLANNER_TYPES.DAY){\r\n\t\t\t\tthis._timeRangeLabel(`${this._labels.WEEKS}:`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._weekPlanning.subscribe((newValue) => {\r\n\t\t\tthis.SetDefaultIsWeekPlanning(newValue);\r\n\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\tsubControl.IsHightResolutionPlanning = newValue;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t})\r\n\r\n\t\tthis._selectedWeek.subscribe(() =>{\r\n\t\t\tthis.SetDefaultPerion(this._selectedWeek());\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\r\n\t\tfor(let weekNumber=1; weekNumber <= 36;weekNumber++){\r\n\t\t\tthis._weeks.push(weekNumber);\r\n\t\t}\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.ShowDivideRow = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.AddEvent(EVENTS.ON_PLANNER_PAGE_CLICK);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){\r\n\t\tlet parentProperties = this._parentControl.GeneralProperties; \r\n\t\tif(parentProperties.GetPropertyValue(PROPERTIES.ENABLE_MONTH_VIEW)){\r\n\t\t\tthis._viewTypes.push({ Value: PLANNER_TYPES.MONTH, Title: this._labels.MONTH });\r\n\t\t}\r\n\r\n\t\tif(parentProperties.GetPropertyValue(PROPERTIES.ENABLE_DAY_VIEW)){\r\n\t\t\tthis._viewTypes.push({ Value: PLANNER_TYPES.DAY, Title: this._labels.DAY });\r\n\t\t}\r\n\r\n\t\tif(parentProperties.GetPropertyValue(PROPERTIES.ENABLE_WEEK_VIEW)){\r\n\t\t\tthis._viewTypes.push({ Value: PLANNER_TYPES.WEEK, Title: this._labels.WEEK });\r\n\t\t}\r\n\r\n\t\tthis._showManagerFilter = parentProperties.GetPropertyValue(PROPERTIES.ENABLE_PROJECT_MANAGER_FILTER);\r\n\r\n\t\tif(this._viewTypes().length === 0){\r\n\t\t\tNotifier.Failed(NOTIFICATIONS.NO_ANY_VIEW_OPTIONS);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ResetSubControlState(){\r\n\t\t_.each(this._subControls(), (item)=>{\r\n\t\t\tif(item instanceof PlannerLevel){\r\n\t\t\t\titem.ResetDefaultExpandedState();\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate GetDefaultStartDate(): string {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tlet startDate = null;\r\n\t\tif(userVars){\r\n\t\t\tstartDate = userVars.StartDate;\r\n\t\t}\r\n\t\treturn startDate || moment().format();\r\n\t}\r\n\r\n\tprivate SetDefaultStartDate(value: string){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars.StartDate != value){\r\n\t\t\tuserVars.StartDate = value;\r\n\t\t\tthis.ResetSubControlState();\r\n\t\t\tthis.SetUserVars(userVars);\t\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetDefaultIsWeekPlanning(): boolean {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\treturn userVars.IsWeekPlannnig;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate SetDefaultIsWeekPlanning(value: boolean){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.IsWeekPlannnig = value;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate SetDefaultPerion(period: number){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.Period = period;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate GetDefaultPeriod(): number {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\treturn userVars.Period;\r\n\t\t}\r\n\t\treturn 36;\r\n\t}\r\n\r\n\tprivate SetDefaultProjectManagerId(projectManagerId: number){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.ProjectManagerId = projectManagerId;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate GetDefaultProjectManagerId(): number {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\treturn userVars.ProjectManagerId;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate GetDefaultViewType(): IViewType {\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tif(userVars){\r\n\t\t\tlet viewType = _.find(this._viewTypes(), (type)=> type.Value === userVars.ViewType);\r\n\t\t\tif(viewType) {\r\n\t\t\t\treturn viewType;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._viewTypes()[0];\r\n\t}\r\n\r\n\tprivate SetDefaultViewType(viewTypeValue: string){\t\t\r\n\t\tlet userVars = this.GetUserVars();\r\n\t\tuserVars.ViewType = viewTypeValue;\r\n\t\tthis.ResetSubControlState();\r\n\t\tthis.SetUserVars(userVars);\r\n\t}\r\n\r\n\tprivate GetUserVars(): IPlannerPageParams {\r\n\t\treturn UserVarsManager.Instance.GetPlannerPageParams(this.GetControlId());\r\n\t}\r\n\r\n\tprivate SetUserVars(params: IPlannerPageParams) {\r\n\t\tUserVarsManager.Instance.SetPlannerPageParams(this.GetControlId(), params);\r\n\t}\r\n\r\n\tToggleWeekPlanning(){\r\n\t\tthis._weekPlanning(!this._weekPlanning());\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n\r\n\tNext(){\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK){\r\n\t\t\tthis._startDate(moment(this._startDate()).add(1, 'week').format());\r\n\t\t}else{\r\n\t\t\tthis._startDate(moment(this._startDate()).add(1, 'M').format());\r\n\t\t}\r\n\t}\r\n\r\n\tNextYear(){\r\n\t\tthis._startDate(moment(this._startDate()).add(1, 'y').format());\r\n\t}\r\n\r\n\tPrevious(){\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK){\r\n\t\t\tthis._startDate(moment(this._startDate()).subtract(1, 'week').format());\r\n\t\t}else{\r\n\t\t\tthis._startDate(moment(this._startDate()).subtract(1, 'M').format());\r\n\t\t}\r\n\t}\r\n\r\n\tPreviousYear(){\r\n\t\tthis._startDate(moment(this._startDate()).subtract(1, 'y').format());\r\n\t}\r\n\r\n\tget MonthHeaders(){\r\n\t\treturn this._monthHeaders;\r\n\t}\r\n\r\n\tget DayHeaders(){\r\n\t\treturn this._dayHeaders;\r\n\t}\r\n\r\n\tget WeekHeaders(){\r\n\t\treturn this._weekHeaders;\r\n\t}\r\n\r\n\tget CustomColumnHeaders(){\r\n\t\treturn this._customColumnHeaders;\r\n\t}\r\n\r\n\tSetHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tthis._monthHeaders([]);\r\n\t\tthis._dayHeaders([]);\r\n\t\tthis._weekHeaders([]);\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.MONTH) {\r\n\t\t\tthis.BuildMonthHeader(timeLine);\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.DAY) {\r\n\t\t\tthis.BuildDayHeader(timeLine);\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK) {\r\n\t\t\tthis.BuildWeekHeader(timeLine);\r\n\t\t}\r\n\t}\r\n\r\n\tBuildWeekHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tif (timeLine) {\r\n\t\t\tlet byWeek = [];\r\n\t\t\tlet currentGroup = null;\r\n\r\n\t\t\tlet days = [];\r\n\t\t\t_.each(timeLine, (timeValue: TimeLineColumnModel) => {\r\n\t\t\t\tif(currentGroup !== null && moment(currentGroup).month() !== moment(timeValue.TimeValue).month()){\r\n\t\t\t\t\tbyWeek.push({ Month: currentGroup, Days: days });\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentGroup = timeValue.TimeValue;\r\n\t\t\t\tdays.push(timeValue);\r\n\r\n\t\t\t\tif(_.last(timeLine) === timeValue){\r\n\t\t\t\t\tbyWeek.push({ Month: currentGroup, Days: days });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t_.each(byWeek, (value) => {\r\n\t\t\t\tlet header: IWeekHeader = {\r\n\t\t\t\t\tTitle: `${moment(value.Month).format('MMMM')}, ${moment(value.Month).year()}`,\r\n\t\t\t\t\tWeeks: _.map(value.Days, (month: TimeLineColumnModel) => {\r\n\t\t\t\t\t\treturn { Title: `${this._labels.WEEK[0]}${moment(month.TimeValue).isoWeek()}`, StartDate: moment(month.TimeValue).format('DD'), IsActive: ko.observable(false) };\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._weekHeaders.push(header);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tBuildMonthHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tif (timeLine) {\r\n\t\t\tlet byYear = _.groupBy(timeLine, (timeValue) => {\r\n\t\t\t\treturn moment(timeValue.TimeValue).year();\r\n\t\t\t});\r\n\r\n\t\t\t_.each(byYear, (value, key) => {\r\n\t\t\t\tlet header: IMonthHeader = {\r\n\t\t\t\t\tYear: key,\r\n\t\t\t\t\tMonths: _.map(value, (month) => {\r\n\t\t\t\t\t\treturn { Title: moment(month.TimeValue).format('MMM'), IsActive: ko.observable(false) };\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._monthHeaders.push(header);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tBuildDayHeader(timeLine: Array<TimeLineColumnModel>){\r\n\t\tlet byWeek = [];\r\n\t\tlet currentGroup = null;\r\n\t\tif (timeLine) {\r\n\r\n\t\t\tlet days = [];\r\n\t\t\t_.each(timeLine, (timeValue: TimeLineColumnModel) => {\r\n\r\n\t\t\t\tif(currentGroup !== null && currentGroup !== moment(timeValue.TimeValue).isoWeek()){\r\n\t\t\t\t\tbyWeek.push({ Week: currentGroup, Days: days });\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentGroup = moment(timeValue.TimeValue).isoWeek();\r\n\r\n\t\t\t\tdays.push(timeValue);\r\n\r\n\t\t\t\tif(_.last(timeLine) === timeValue){\r\n\t\t\t\t\tbyWeek.push({ Week: currentGroup, Days: days });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t_.each(byWeek, (value) => {\r\n\t\t\t\tlet firstDayOfWeek = _.first(value.Days) as TimeLineColumnModel;\r\n\r\n\t\t\t\tlet header: IDayHeader = {\r\n\t\t\t\t\tTitle: `${this._labels.WEEK} ${value.Week}: ${ moment(firstDayOfWeek.TimeValue).format('DD')} ${moment(firstDayOfWeek.TimeValue).format('MMM')} ${moment(firstDayOfWeek.TimeValue).format('YYYY')}`,\r\n\t\t\t\t\tWeek: value.Week,\r\n\t\t\t\t\tStartDay: moment(_.first(value.Days)).format('DD'),\r\n\t\t\t\t\tYear: value.Week,\r\n\t\t\t\t\tDays: _.map(value.Days, (item: TimeLineColumnModel) => {\r\n\t\t\t\t\t\treturn { IsActive: ko.observable(false), DayName: moment(item.TimeValue).format('ddd'), DayNum: moment(item.TimeValue).format('DD'), IsWeekend: item.IsWeekend }\r\n\t\t\t\t\t})\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._dayHeaders.push(header);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tActivateColumn(index: number){\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel){\r\n\t\t\t\tcontrol.ActivateColumn(index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.DAY) {\r\n\t\t\tlet allDays: Array<IDay> = [];\r\n\t\t\t_.each(this._dayHeaders(), (item) => {\r\n\t\t\t\tallDays = allDays.concat(item.Days);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeDay = allDays[index];\r\n\t\t\tif (activeDay) {\r\n\t\t\t\tactiveDay.IsActive(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.MONTH) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._monthHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Months);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._weekHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Weeks);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDeactivateColumn(index: number){\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel){\r\n\t\t\t\tcontrol.DeactivateColumn(index);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.DAY) {\r\n\t\t\tlet allDays: Array<IDay> = [];\r\n\t\t\t_.each(this._dayHeaders(), (item) => {\r\n\t\t\t\tallDays = allDays.concat(item.Days);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeDay = allDays[index];\r\n\t\t\tif (activeDay) {\r\n\t\t\t\tactiveDay.IsActive(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.MONTH) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._monthHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Months);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this._selectedView().Value === PLANNER_TYPES.WEEK ) {\r\n\t\t\tlet allMonths: Array<IMonth> = [];\r\n\t\t\t_.each(this._weekHeaders(), (item) => {\r\n\t\t\t\tallMonths = allMonths.concat(item.Weeks);\r\n\t\t\t});\r\n\r\n\t\t\tlet activeMonth = allMonths[index];\r\n\t\t\tif (activeMonth) {\r\n\t\t\t\tactiveMonth.IsActive(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tUnselectCells(exceptCell: TimeCellModel){\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel){\r\n\t\t\t\tcontrol.UnselectCells(exceptCell);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tSelectDate(date: string){\r\n\t\tthis._selectedDate = moment(date).format();\r\n\t\tthis.SetDefaultStartDate(this._selectedDate);\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tprivate IsFilterBySubject(): boolean {\t\t\r\n\t\tlet subControl = _.first(this._subControls());\r\n\t\tif(subControl){\r\n\t\t\treturn this._form.GetScreen().IsConsultScreen && this._form.GetScreen().GetEntityId() === subControl.GetFieldModel().EntityId;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tLoadData(){\r\n\t\tif(!this._selectedView()){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.CancelCopy();\r\n\t\tlet requestModel: IGetPlannerPageDataRequestModel = {\r\n\t\t\tStartDate: this._selectedDate,\r\n\t\t\tControlId: this.GetControlId(),\r\n\t\t\tWeekNumber: this._selectedWeek(),\r\n\t\t\tRecordsPerPage: 20,\r\n\t\t\tPageNumber: 1,\r\n\t\t\tViewType: this._selectedView().Value,\r\n\t\t\tManagerId: this._manager() ? this._manager().Id : this.GetDefaultProjectManagerId(),\r\n\t\t\tSubjectRecordId: this.IsFilterBySubject() ? this._form.GetScreen().GetRecordId() : null\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tPlannerPageStore.GetData(requestModel)\r\n\t\t\t.always(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((result) =>{\r\n\t\t\t\tif(this._showManagerFilter && this._managers().length === 0){\r\n\t\t\t\t\tthis._managers(result.ProjectManagers);\r\n\t\t\t\t\tthis._manager(_.find(this._managers(), (item)=> item.Id === this.GetDefaultProjectManagerId()));\r\n\r\n\t\t\t\t\tthis._manager.subscribe(() =>{\r\n\t\t\t\t\t\tthis.SetDefaultProjectManagerId(this._manager() ? this._manager().Id : null);\r\n\t\t\t\t\t\tthis.LoadData();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.SetHeader(result.TimeLineColumns);\r\n\t\t\t\tthis._customColumnHeaders(result.CustomColumns);\r\n\t\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\t\tsubControl.SetWeekNumber(this._selectedWeek());\r\n\t\t\t\t\t\tlet managerId = this._manager() ? this._manager().Id : null;\r\n\t\t\t\t\t\tsubControl.SetProjectManager(managerId);\r\n\t\t\t\t\t\tsubControl.SetStartDate(this._selectedDate);\r\n\t\t\t\t\t\tsubControl.SetViewType(this._selectedView().Value);\r\n\t\t\t\t\t\tsubControl.SetCustomColumnHeaders(this._customColumnHeaders());\r\n\t\t\t\t\t\tlet controlData = _.filter(result.PlannerLevels, (item) =>{\r\n\t\t\t\t\t\t\treturn item.ControlId === subControl.GetControlId();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tsubControl.PopulateData(controlData);\r\n\t\t\t\t\t\tsubControl.Paginator().PageNumber = 1;\r\n\t\t\t\t\t\tsubControl.Paginator().RecordsPerPage = 20;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._renderViewMode(this._selectedView().Value);\r\n\t\t\t\t\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t($('.left-planner-table') as any).freezeTable('update');\r\n\t\t\t\t\t($('.right-planner-table') as any).freezeTable('update');\r\n\t\t\t\t},0);\r\n\r\n\t\t\t});\r\n\t}\r\n\r\n\tInit(){\r\n\t\tlet planerLevels = _.filter(this._subControls(), (subControl) => {\r\n\t\t\treturn subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n\t\t});\r\n\r\n\t\tthis._plannerLevels(planerLevels);\r\n\r\n\t\tthis._subControls.subscribe(()=>{\r\n\t\t\tlet planerLevels = _.filter(this._subControls(), (subControl) => {\r\n\t\t\t\treturn subControl.GetType() === CONTROL_TYPES.PlannerLevel;\r\n\t\t\t});\r\n\r\n\t\t\tthis._plannerLevels(planerLevels);\r\n\t\t});\r\n\r\n\t\tif(this._selectedView()?.Value === PLANNER_TYPES.MONTH){\r\n\t\t\tthis._timeRangeLabel(`${this._labels.MONTHS}:`);\r\n\t\t}\r\n\r\n\t\tif(this._selectedView()?.Value === PLANNER_TYPES.DAY){\r\n\t\t\tthis._timeRangeLabel(`${this._labels.WEEKS}:`);\r\n\t\t}\r\n\t}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tthis.Trigger(EVENTS.ON_PLANNER_PAGE_CLICK);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetName(): string {\r\n\t\tlet translationList = this._model().NameTranslations;\r\n\t\tlet currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n\t\tlet currentLangItem = _.find(translationList, (item) => {\r\n\t\t\treturn currentLang.Id === item.Language.K_Language;\r\n\t\t});\r\n\t\tif (currentLangItem) {\r\n\t\t\tthis._getCurrentName = currentLangItem.Translation;\r\n\t\t}\r\n\r\n\t\tif (this._getCurrentName) {\r\n\t\t\treturn this._getCurrentName;\r\n\t\t} else {\r\n\t\t\treturn this._model().Name;\r\n\t\t}\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\treturn this.GetName() || this.GetDefaultName();\r\n\t}\r\n\r\n\tstatic GetDefaultName() {\r\n\t\treturn 'New page';\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tthis._subControls.push(control);\r\n\t}\r\n\r\n\tBuildColumnContextMenu(column: IMonth | IDay | IWeek, plannerPage: PlannerPage){\r\n return {\r\n callback: function() {\r\n\t\t\t\tlet index = plannerPage.GetColumnIndex(column);\r\n\t\t\t\tplannerPage._copyFromColumnIndex = index;\r\n\t\t\t\tplannerPage.CancelCopyToSelection();\r\n\t\t\t\tplannerPage.SelectCopyFromColumn(plannerPage);\r\n\t\t\t\tlet notifiler = new Notifier();\t\r\n\t\t\t\tnotifiler.Warning(NOTIFICATIONS.SELECT_PERIOD.replace('{periodName}', plannerPage._selectedView().Title));\r\n\t\t\t\tplannerPage._copyColumnMode(true);\r\n\t\t\t},\r\n\t\t\titems: {\r\n\t\t\t\t\"copyRow\": { name: LABELS.COPY_PERIOD.replace('{periodName}', plannerPage._selectedView().Title) },\r\n }\r\n };\r\n\t}\r\n\t\r\n\tGetColumnIndex(column: IMonth | IDay | IWeek): number{\r\n\t\tlet allItems: Array<IMonth | IDay | IWeek> = [];\r\n\r\n\t\tif(this._renderViewMode() === 'Month'){\r\n\t\t\t_.each(this._monthHeaders(), (header) => {\r\n\t\t\t\tallItems = allItems.concat(header.Months);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\tif(this._renderViewMode() === 'Day'){\r\n\t\t\t_.each(this._dayHeaders(), (header) => {\r\n\t\t\t\tallItems = allItems.concat(header.Days);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this._renderViewMode() === 'Week'){\r\n\t\t\t_.each(this._weekHeaders(), (header) => {\r\n\t\t\t\tallItems = allItems.concat(header.Weeks);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn allItems.indexOf(column);\r\n\t}\r\n\r\n\tSelectColumn(index: number){\r\n\t\tif(this._copyFromColumnIndex === index) return;\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.SelectCopyToCell(index);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tSelectCopyFromColumn(page: PlannerPage){\r\n\t\t_.each(page._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.SelectCopyFromCell(page._copyFromColumnIndex);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tUnSelectCopyFromColumn(){\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.UnSelectCopyFromCell();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetButton1TableName(): string {\r\n\t\tlet button1TableName = null;\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel && control.Button1TableName){\r\n\t\t\t\tbutton1TableName = control.Button1TableName;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn button1TableName;\r\n\t}\r\n\r\n\tGetButton2TableName(): string {\r\n\t\tlet button1TableName = null;\r\n\t\t_.each(this._subControls(), (control) => {\r\n\t\t\tif(control instanceof PlannerLevel && control.Button2TableName){\r\n\t\t\t\tbutton1TableName = control.Button2TableName;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn button1TableName;\r\n\t}\r\n\r\n\tCopyColumn(){\r\n\t\tthis.ShowSelectCellSubjectConfirmation();\r\n\t}\r\n\r\n\tShowSelectCellSubjectConfirmation(){\r\n\t\tlet button1TableName = this.GetButton1TableName();\r\n\t\tlet button2TableName = this.GetButton2TableName();\r\n\r\n\t\tif(button1TableName || button2TableName){\r\n\t\t\tlet copyQueryButtonConfirmationDialog = new CopyQueryButtonConfirmationDialog({\r\n\t\t\t\tText: CONFIRMATIONS.SELECT_CELL_SUBJECT,\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tEntity1: button1TableName,\r\n\t\t\t\tEntity2: button2TableName,\r\n\t\t\t\tWidth: 500,\r\n\t\t\t\tModalClass: 'copyQueryButtonConfirmationDialog',\r\n\t\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t\t});\r\n\t\t\tcopyQueryButtonConfirmationDialog.Show();\r\n\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CancelCopyToSelection();\r\n\t\t\t});\r\n\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS.ENTITY1_SELECTED, this, ()=>{\r\n\t\t\t\tthis.ShowOverwriteDataConfirmation(true, false);\r\n\t\t\t});\r\n\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS.ENTITY2_SELECTED, this, ()=>{\r\n\t\t\t\tthis.ShowOverwriteDataConfirmation(false, true);\r\n\t\t\t});\r\n\t\t\t\t\r\n\t\t\tcopyQueryButtonConfirmationDialog.On(QUERY_BUTTON_CONFIRMATION_DIALOG_EVENTS.ENTITY1_AND_ENTITY2_SELECTED, this, ()=>{\r\n\t\t\t\tthis.ShowOverwriteDataConfirmation(true, true);\r\n\t\t\t});\r\n\t\t}else{\r\n\t\t\tthis.ShowOverwriteDataConfirmation(false, false);\r\n\t\t}\r\n\t}\r\n\r\n\tShowOverwriteDataConfirmation(copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n\t\tif(this.IsCopyToCellHasData){\r\n\t\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\t\tText: NOTIFICATIONS.COPY_PLANNER_DATA,\r\n\t\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\t\tTextConfirm: LABELS.OVERWRITE,\r\n\t\t\t\tTextSkip: LABELS.SKIP_EXISTING,\r\n\t\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CopyData(true, copyQueryButton1, copyQueryButton2);\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.SKIP_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CopyData(false, copyQueryButton1, copyQueryButton2);\r\n\t\t\t});\r\n\t\t\t\r\n\t\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, ()=>{\r\n\t\t\t\tthis.CancelCopyToSelection();\r\n\t\t\t});\r\n\r\n\t\t\tconfirmationDialog.Show();\t\t\t\r\n\r\n\t\t}else{\r\n\t\t\tthis.CopyData(true, copyQueryButton1, copyQueryButton2);\r\n\t\t}\r\n\t}\r\n\r\n\tCancelCopyToSelection(){\r\n\t\tthis._copyColumnMode(false);\r\n\t\tthis._copyCellMode(false);\r\n\t\tthis.UnSelectCopyFromColumn();\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\tsubControl.UnSelectCopyToCells();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tCopyData(overwrite: boolean, copyQueryButton1: boolean, copyQueryButton2: boolean){\r\n\t\tif(this._copyColumnMode()){\r\n\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\tsubControl.CopyColumn(this._copyFromColumnIndex, overwrite, copyQueryButton1, copyQueryButton2);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._copyColumnMode(false);\r\n\t\t\tthis._copyFromColumnIndex = null;\r\n\t\t\tthis.UnSelectCopyFromColumn();\r\n\t\t}\r\n\r\n\t\tif(this._copyCellMode()){\r\n\t\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\t\tif(subControl instanceof PlannerLevel){\r\n\t\t\t\t\tsubControl.CopyCell(overwrite, copyQueryButton1, copyQueryButton2);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis._copyCellMode(false);\r\n\t\t\tthis.CancelCopyToSelection();\r\n\t\t}\r\n\t}\r\n\r\n\tget IsCopyToCellHasData(){\r\n\t\tlet hasData = false;\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif(subControl instanceof PlannerLevel && subControl.HasData){\r\n\t\t\t\thasData = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn hasData;\r\n\t}\r\n\r\n\tCancelCopy(){\r\n\t\tthis.CancelCopyToSelection();\r\n\t}\r\n\t\r\n\tRightBarTableClick(page: PlannerPage, event: any){\t\r\n\t\tif(!page._copyColumnMode()) return;\t\r\n\t\tif($(event.target).data('index') != undefined){\r\n\t\t\tthis.SelectColumn($(event.target).data('index'));\r\n\t\t};\r\n\t}\t\r\n\r\n\tCalculateIndex(column: IMonth | IDay | IWeek){\r\n\t\treturn this.GetColumnIndex(column);\r\n\t}\r\n\r\n\tSetCopyCellMode(){\r\n\t\tthis.CancelCopyToSelection();\t\t\r\n\t\tthis._copyCellMode(true);\r\n\t}\r\n\r\n\tCopyCell(){\t\r\n\t\tthis.ShowSelectCellSubjectConfirmation();\r\n\t}\r\n}","// Module\nvar code = \"<button data-bind=\\\"css: { 'active': _isActive }\\\" class=\\\"tab tab-button\\\"> <span class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveControl.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </span> <a data-bind=\\\"text: Title, click: Click, preventBubble: ['click']\\\" class=\\\"tab-link\\\"></a> <i data-bind=\\\"click: $root.ShowControlEditor.bind($root, $data), preventBubble: ['click']\\\" class=\\\"fa fa-edit\\\"></i> </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click\\\" class=\\\"tab-link\\\"> <span data-bind=\\\"text: Title\\\"></span> </a>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {IControl} from \"../IControl\";\r\nimport {PlannerPage} from \"../PlannerPage/PlannerPage\";\r\nimport {EVENTS} from 'Core/Constant'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport Split from 'split.js';\r\nimport Config from 'Core/Controls/Planner/Config.json';\r\n\r\nimport DesignTemplate from 'Core/Controls/Planner/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/Planner/Templates/ToolBar.html';\r\nimport ViewTemplate from 'Core/Controls/Planner/Templates/View.html';\r\n\r\nko.templates['Core/Controls/Planner/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Planner/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Planner/Templates/View'] = ViewTemplate;\r\n\r\nexport class Planner extends BaseControl {\r\n\tprivate _currentPlannerPage: KnockoutObservable<PlannerPage> = ko.observable(null);\r\n\tprivate _currentTabIndex: number;\r\n\tprivate _plannerHtmlTable: HTMLTableElement;\r\n\tprivate _selection: KnockoutObservableArray<any>;\r\n\tprivate _blockElements: Array<HTMLElement>;\r\n\tprotected _labels = LABELS;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis._currentTabIndex = 0;\r\n\t\tthis._blockElements = [];\r\n\t\tthis._selection = ko.observableArray([]);\r\n\t\tthis._selection.subscribe((newValue)=>{\r\n\t\t\tif(this._plannerHtmlTable && (this._plannerHtmlTable as any)._cellSelection){\r\n\t\t\t\tlet input = (this._plannerHtmlTable as any)._cellSelection.view.inputElement;\r\n\t\t\t\tif(input){\r\n\t\t\t\t\t$(input).inputmask('Regex', {regex: '^[0-9]+$'});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tApplyProperties(){}\r\n\r\n\tResetSelection(){\r\n\t\tthis._selection([]);\r\n\t}\r\n\r\n\tBlockSelection(){\r\n\t\t_.each(this._selection(), (item) => {\r\n\t\t\tthis._blockElements.push(item.cell);\r\n\t\t\tBlockUI.Block({ Target: item.cell } );\r\n\t\t});\r\n\t}\r\n\r\n\tUnblockSelection(){\r\n\t\t_.each(this._blockElements, (item) => {\r\n\t\t\tBlockUI.Unblock(item);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tconst subControls = this._subControls();\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tsubControls.forEach((plannerPage: IControl) => {\r\n\t\t\tlet page = <PlannerPage>plannerPage;\r\n\t\t\tpage.On(EVENTS.ON_PLANNER_PAGE_CLICK, this, (args: any) => {\r\n\t\t\t\tlet plannerPage = <PlannerPage>args.source;\r\n\t\t\t\tthis.SetActiveTabPage(plannerPage, args.source._parentControl.GetControlId());\r\n\t\t\t\tthis._plannerHtmlTable = $(this._el).find('.planner-table')[0] as HTMLTableElement;\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tconst plannerTabsParams = UserVarsManager.Instance.GetPlannerTabsParams();\r\n\t\tconst activityStorage = plannerTabsParams ? plannerTabsParams.plannerTabsActivityStorage || {} : {};\r\n\r\n\t\tif (_.isEmpty(activityStorage[controlId])) {\r\n\t\t\tconst startDate = new Date();\r\n\t\t\tstartDate.setDate(startDate.getDate() - 1);\r\n\t\t\tactivityStorage[controlId] = {};\r\n\t\t\tsubControls.forEach(control => activityStorage[controlId][control.GetControlId()] = startDate.getTime());\r\n\r\n\t\t\tUserVarsManager.Instance.SetPlannerTabsParams(null, activityStorage);\r\n\t\t}\r\n\r\n\t\tconst activeTab = this.GetPreselectTab();\r\n\r\n\t\tif (activeTab) {\r\n\t\t\tactiveTab.SetIsVisible(true);\r\n\r\n\t\t\tthis.SetActiveTab(subControls.indexOf(activeTab));\r\n\t\t\tthis.SetActiveTabPage(<PlannerPage>activeTab);\r\n\r\n\t\t} else {\r\n\t\t\tconst firstVisible = subControls.find(subControl => subControl.GetIsVisible());\r\n\r\n\t\t\tif (firstVisible) {\r\n\t\t\t\tthis.SetActiveTabPage(<PlannerPage>firstVisible);\r\n\t\t\t} else if (subControls.length >= 1) {\r\n\t\t\t\tsubControls[0].SetIsVisible(true);\r\n\t\t\t\tthis.SetActiveTabPage(<PlannerPage>subControls[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetPreselectTab() {\r\n\t\tlet preSelectedPlannerTab = UserVarsManager.Instance.GetPlannerTabsParams();\r\n\t\tif (preSelectedPlannerTab && this._form) {\r\n\t\t\tconst preselectedPlannerTabData: any = _.where(preSelectedPlannerTab.activePlannerTabPageCIDs, {screenId: this._form.GetScreen().GetScreenId()})[0];\r\n\t\t\tif (!preselectedPlannerTabData) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tlet plannerTabToSelect = <PlannerPage>this._subControls().filter((control) => {\r\n\t\t\t\treturn control.GetControlId() === preselectedPlannerTabData.activePlannerTabPageCID;\r\n\t\t\t})[0];\r\n\t\t\tif (plannerTabToSelect) {\r\n\t\t\t\treturn plannerTabToSelect;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetActiveTabPage(plannerPage: PlannerPage, parentControlId?: number) {\r\n\t\tconst screen = this._form.GetScreen();\r\n\t\tconst currentPlannerPage = this._currentPlannerPage();\r\n\t\tconst tabControlId = plannerPage.GetControlId();\r\n\t\tconst plannerTabsParams = UserVarsManager.Instance.GetPlannerTabsParams();\r\n\t\tconst activityStorage = plannerTabsParams ? plannerTabsParams.plannerTabsActivityStorage : {};\r\n\r\n\t\tthis._subControls().forEach(control => control.SetIsActive(false));\r\n\r\n\t\tif(currentPlannerPage){\r\n\t\t\tcurrentPlannerPage.SetIsActive(false);\r\n\t\t}\r\n\r\n\t\tplannerPage.SetIsActive(true);\r\n\t\tthis._currentTabIndex = this._subControls().indexOf(plannerPage);\r\n\t\tthis._currentPlannerPage(plannerPage);\r\n\r\n\t\tif (parentControlId) {\r\n\t\t\tif (!activityStorage[parentControlId]) {\r\n\t\t\t\tactivityStorage[parentControlId] = {};\r\n\t\t\t}\r\n\t\t\tactivityStorage[parentControlId][tabControlId] = Date.now();\r\n\t\t}\r\n\r\n\t\tUserVarsManager.Instance.SetPlannerTabsParams({\r\n\t\t\tscreenId: screen.GetScreenId(),\r\n\t\t\tactivePlannerTabPageCID: tabControlId\r\n\t\t}, activityStorage);\r\n\r\n\t\tif (screen) {\r\n\t\t\tscreen.SetState( {ActiveControlId: tabControlId});\r\n\t\t}\r\n\t\tthis.InitSplitter();\r\n\t}\r\n\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tlet plannerPage = control as PlannerPage;\r\n\t\tthis._subControls.push(control);\r\n\r\n\t\tif (this._currentPlannerPage()) {\r\n\t\t\tthis._currentPlannerPage().SetIsActive(false);\r\n\t\t}\r\n\r\n\t\tplannerPage.SetIsActive(true);\r\n\t\tthis._currentPlannerPage(plannerPage);\r\n\r\n\t\tplannerPage.On(EVENTS.ON_PLANNER_PAGE_CLICK, this, (args: any) => {\r\n\t\t\tlet tabPage = <PlannerPage>args.source;\r\n\r\n\t\t\tif (this._currentPlannerPage()) {\r\n\t\t\t\tthis._currentPlannerPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\tplannerPage.SetIsActive(true);\r\n\t\t\tthis._currentPlannerPage(tabPage);\r\n\t\t});\r\n\t}\r\n\r\n\tRemoveControl(control: IControl) {\r\n\t\tlet wrappers = new Array<Element>(control.GetWrapper());\r\n\r\n\t\t_.each(this._currentPlannerPage().GetAllSubControls(),\r\n\t\t\t(subControl) => {\r\n\t\t\t\twrappers.push(subControl.GetWrapper());\r\n\t\t\t});\r\n\r\n\t\twrappers.map((el) => {\r\n\t\t\t$(control.GetWrapper()).add(el).fadeOut('fast', () => {\r\n\t\t\t\tlet subControls = this._subControls();\r\n\t\t\t\tlet tabPage = control as PlannerPage;\r\n\t\t\t\tthis._subControls.remove(control);\r\n\r\n\t\t\t\tif (tabPage.GetIsActive()) {\r\n\t\t\t\t\tif (this._currentTabIndex <= subControls.length - 1) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex);\r\n\t\t\t\t\t} else if (this._currentTabIndex > 0) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex - 1);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._currentPlannerPage(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.SetActiveTabPage(this._currentPlannerPage());\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tSetActiveTab(tabIndex: number) {\r\n\t\tconst subControls = this._subControls();\r\n\t\tif (subControls[tabIndex]) {\r\n\t\t\tconst tab = <PlannerPage>subControls[tabIndex];\r\n\t\t\tif (this._currentPlannerPage()) {\r\n\t\t\t\tthis._currentPlannerPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttab.SetIsActive(true);\r\n\r\n\t\t\tthis._currentPlannerPage(tab);\r\n\t\t\tthis._currentTabIndex = tabIndex;\r\n\t\t\tthis.InitSplitter();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate InitSplitter(){\r\n\t\tlet leftView = $(this._el).find('.left-planner-table')[0];\r\n\t\tlet rightView = $(this._el).find('.right-planner-table')[0];\r\n\r\n\t\tif(leftView && rightView){\r\n\t\t\tSplit([leftView, rightView], {\r\n\t\t\t\tsizes: [35, 65],\r\n\t\t\t\telementStyle: (dimension, size, gutterSize) => {\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t($('.left-planner-table') as any).freezeTable('resize');\r\n\t\t\t\t\t($('.right-planner-table') as any).freezeTable('resize');\r\n\r\n\t\t\t\t\tif(size < 20){\r\n\t\t\t\t\t\tsize = 20;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(size > 80){\r\n\t\t\t\t\t\tsize = 80;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn ({\r\n\t\t\t\t\t\t'flex-basis': `calc(${size}% - ${gutterSize}px)`,\r\n\t\t\t\t\t})\r\n\t\t\t\t},\r\n\t\t\t\tgutterStyle: (dimension, gutterSize) => ({\r\n\t\t\t\t\t'flex-basis': `${gutterSize}px`,\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t\tthis._plannerHtmlTable = $(this._el).find('.planner-table')[1] as HTMLTableElement;\r\n\t\tthis.InitSplitter();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-calendar-check-o\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper planner-control\\\"> <ul data-bind=\\\"dragula: {\\r\\n data: _subControls,\\r\\n group: 'ToolBarToDesigner',\\r\\n afterDrop: $root.AfterDropTapPageControl.bind($root)\\r\\n }\\\" class=\\\"nav nav-tabs\\\"> <li class=\\\"tab tab-button form-standard-control parent-control FormDesignerView\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </li> <!-- ko if: $index() === ($parent._subControls().length -1) --> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreatePlannerPage.bind($root, $parent),\\r\\n preventBubble: ['click'],\\r\\n tooltip:{ content: _labels.CREATE_NEW_PLANNERTAB }\\\" class=\\\"tab-link\\\"> + </a> </li> <!-- /ko --> </ul> <!-- ko if: _subControls().length === 0 --> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreatePlannerPage.bind($root),\\r\\n preventBubble: ['click']\\r\\n tooltip:{ content: _labels.CREATE_NEW_PLANNERTAB }\\\" class=\\\"tab-link\\\"> + </a> </li> </ul> <!-- /ko --> <!-- ko with: _currentPlannerPage --> <div class=\\\"active-tab-result\\\"> <button data-bind=\\\"click: $root.CreateRootLevel.bind($root), preventBubble: ['click']\\\" class=\\\"add-planner-level-btn\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!-- ko if: _plannerLevels().length > 0 --> <div class=\\\"over-planner-levels\\\"> <!-- ko foreach: _plannerLevels --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> </ul> <!--ko with: _currentPlannerPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content\\\"> <div class=\\\"over-planner-table\\\"> <div class=\\\"thead-planner-table\\\"> <div data-bind=\\\"css: { 'day-view': $data._renderViewMode() === 'Day' }\\\" class=\\\"planner-table-head-row\\\"> <div class=\\\"planner-table-date-cell\\\"> <div class=\\\"\\\"> <span class=\\\"planner-label\\\"><!-- ko text: _labels.STARTING_DATE --><!-- /ko -->:</span> <div class=\\\"plannerPagination\\\"> <a data-bind=\\\"click: $data.PreviousYear\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn previousYear\\\"> <i class=\\\"fa fa-bold fa-angle-double-left planner-navigation-icon\\\"></i> </a> <a data-bind=\\\"click: $data.Previous\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn\\\"> <i class=\\\"fa fa-bold fa-angle-left planner-navigation-icon\\\"></i> </a> <input data-bind=\\\"datetimepicker: {\\r\\n value: $data._startDate,\\r\\n onUpdate: $data.SelectDate.bind($data),\\r\\n options: {\\r\\n format: 'L',\\r\\n locale: GetLocale(),\\r\\n minDate: '1900-01-01'\\r\\n }\\r\\n }\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"/> <a data-bind=\\\"click: $data.Next\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn\\\"> <i class=\\\"fa fa-angle-right planner-navigation-icon\\\"></i> </a> <a data-bind=\\\"click: $data.NextYear\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only planner-navigation-btn previousYear\\\"> <i class=\\\"fa fa-angle-double-right planner-navigation-icon\\\"></i> </a> </div> </div> <!-- ko if: $data._viewTypes().length > 0 --> <div class=\\\"\\\"> <span class=\\\"planner-label\\\"><!-- ko text: _labels.VIEW --><!-- /ko -->:</span> <select data-bind=\\\"options: _viewTypes, value: _selectedView, optionsText: 'Title'\\\"></select> </div> <div class=\\\"\\\"> <span data-bind=\\\"text: $data._timeRangeLabel\\\" class=\\\"planner-label\\\"></span> <select data-bind=\\\"options: _weeks, value: _selectedWeek\\\"></select> </div> <!-- /ko --> <!-- ko if: $data._showManagerFilter --> <div class=\\\"\\\"> <span class=\\\"planner-label\\\"><!-- ko text: _labels.PROJECT_MANAGER --><!-- /ko -->:</span> <select data-bind=\\\"options: _managers, value: _manager, optionsText: 'Name', optionsCaption: _labels.SELECT_LABEL + '...'\\\"></select> </div> <!-- /ko --> <!-- ko if: $data._renderViewMode() === 'Month' --> <div class=\\\"planner-table-higher-resolution-toggle-cell\\\"> <label class=\\\"control-label\\\"><!-- ko text: _labels.WEEK_PLANNING --><!-- /ko -->:</label> <a data-bind=\\\"click: $data.ToggleWeekPlanning\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only u-padding-right-medium\\\"> <i data-bind=\\\"class: _weekPlanningToggleClass \\\" class=\\\"fa fa-toggle-off\\\"></i> </a> </div> <!-- /ko --> <!-- ko if: $data._copyColumnMode() --> <div class=\\\"\\\" style=\\\"float:right\\\"> <a data-bind=\\\"click: $data.CopyColumn.bind($data)\\\" class=\\\"btn green\\\"> <!-- ko text: _labels.CONFIRM_SELECTION --><!-- /ko --> </a> </div> <!-- /ko --> <!-- ko if: $data._copyCellMode() --> <div class=\\\"\\\" style=\\\"float:right\\\"> <a data-bind=\\\"click: $data.CopyCell.bind($data)\\\" class=\\\"btn green\\\"> <!-- ko text: _labels.CONFIRM_SELECTION --><!-- /ko --> </a> </div> <!-- /ko --> <!-- ko if: $data._copyColumnMode() || $data._copyCellMode() --> <div class=\\\"\\\" style=\\\"float:right\\\"> <a data-bind=\\\"click: $data.CancelCopy.bind($data)\\\" class=\\\"btn green\\\"> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> </div> <!-- /ko --> </div> <!-- ko foreach: _subControls --> <!-- ko if: $data._showDivideRow && HasPagination --> <div class=\\\"plannerHeadPaginatorBox\\\"> <div data-bind=\\\"css: { 'paginator-row': !!Paginator }\\\" class=\\\"planner-table-divider-row\\\"> <div data-bind=\\\"attr: { colspan: $data._divideRowColSpan }\\\"> <div class=\\\"planerPaginatorContainer planerPaginatorContainer--positionSticky\\\"> <!-- ko with: Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- ko if: $data._viewTypes().length > 0 --> <div class=\\\"body-planner-table\\\"> <div data-bind=\\\"freezeTable: { freezeHead: true, freezeColumn: false, namespace: 'left-planner-table' }\\\" class=\\\"left-planner-table\\\"> <table class=\\\"planner-table\\\"> <thead> <tr class=\\\"\\\"> <th> </th> </tr> <!-- ko if: _renderViewMode() === 'Day' --> <!-- ko if: DayHeaders().length > 0 --> <tr class=\\\"\\\"> <th> </th> </tr> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: CustomColumnHeaders().length > 0 --> <tr class=\\\"\\\"> <th> </th> </tr> <!-- /ko --> <!-- ko if: CustomColumnHeaders().length > 0 --> <tr class=\\\"planner-table-CustomHead-row\\\"> <th></th> <!-- ko foreach: CustomColumnHeaders --> <th class=\\\"customColumnHeader-cell\\\"><!-- ko text: $data.Title --><!-- /ko --></th> <!-- /ko --> </tr> <!-- /ko --> </thead> <tbody> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetLeftBarTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </tbody> </table> </div> <div data-bind=\\\"click: $data.RightBarTableClick.bind($data), freezeTable: { freezeHead: true, freezeColumn: false, namespace: 'right-planner-table' }\\\" class=\\\"right-planner-table\\\"> <table class=\\\"planner-table\\\"> <thead> <!-- ko if: CustomColumnHeaders().length > 0 --> <tr class=\\\"planner-table-head-row\\\"> <!--<th> <th>--> </tr> <!-- /ko --> <!-- ko if: _renderViewMode() === 'Month' --> <tr class=\\\"planner-table-head-row\\\"> <!-- ko foreach: MonthHeaders --> <th class=\\\"planner-table-year-cell\\\" data-bind=\\\"attr: { colspan: $data.Months.length }, text : $data.Year, css : $index() % 2 ? 'even' : 'odd'\\\"></th> <!-- /ko --> </tr> <tr class=\\\"planner-table-head-row\\\"> <!-- ko foreach: MonthHeaders --> <!-- ko foreach: Months --> <th class=\\\"planner-table-month-cell\\\" data-bind=\\\"\\r\\n contextMenu: { build: $parents[1].BuildColumnContextMenu.bind($parents[1], $data, $parents[1]) },\\r\\n attr: { 'data-index': $parents[1].CalculateIndex($data) },\\r\\n text : $data.Title,\\r\\n css : {\\r\\n even : $parentContext.$index() % 2,\\r\\n odd : !($parentContext.$index() % 2),\\r\\n 'active-cell': $data.IsActive\\r\\n }\\\"></th> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <!-- ko if: _renderViewMode() === 'Day' --> <tr class=\\\"planner-table-head-row\\\"> <!-- ko fastForEach: DayHeaders --> <th class=\\\"planner-table-year-cell\\\" data-bind=\\\"attr: { colspan: $data.Days.length }, text : $data.Title, css : $index() % 2 ? 'even' : 'odd'\\\"></th> <!-- /ko --> </tr> <tr class=\\\"planner-table-head-row\\\"> <!-- ko fastForEach: DayHeaders --> <!-- ko fastForEach: Days --> <th class=\\\"planner-table-month-cell\\\" data-bind=\\\"\\r\\n contextMenu: { build: $parents[1].BuildColumnContextMenu.bind($parents[1], $data, $parents[1]) },\\r\\n attr: { 'data-index': $parents[1].CalculateIndex($data) },\\r\\n css : {\\r\\n even : $parentContext.$index() % 2,\\r\\n odd : !($parentContext.$index() % 2),\\r\\n weekend: $data.IsWeekend,\\r\\n 'active-cell': $data.IsActive\\r\\n }\\\"> <!-- ko text: $data.DayName --><!-- /ko --> <br> <!-- ko text: $data.DayNum --><!-- /ko --> </th> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <!-- ko if: _renderViewMode() === 'Week' --> <tr class=\\\"planner-table-head-row\\\"> <!-- ko foreach: WeekHeaders --> <th class=\\\"planner-table-year-cell\\\" data-bind=\\\"attr: { colspan: $data.Weeks.length }, text : $data.Title, css : $index() % 2 ? 'even' : 'odd'\\\"></th> <!-- /ko --> </tr> <tr class=\\\"planner-table-head-row\\\"> <!-- ko fastForEach: WeekHeaders --> <!-- ko fastForEach: Weeks --> <th class=\\\"planner-table-month-cell\\\" data-bind=\\\"\\r\\n contextMenu: { build: $parents[1].BuildColumnContextMenu.bind($parents[1], $data, $parents[1]) },\\r\\n attr: { 'data-index': $parents[1].CalculateIndex($data) },\\r\\n css : {\\r\\n even : $parentContext.$index() % 2,\\r\\n odd : !($parentContext.$index() % 2),\\r\\n weekend: $data.IsWeekend,\\r\\n 'active-cell': $data.IsActive\\r\\n }\\\"> <!-- ko text: $data.Title --><!-- /ko --> </th> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> </thead> <tbody> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetRightBarTemplateName.bind($rawData) } --><!-- /ko --> <!-- /ko --> </tbody> </table> </div> </div> <!--/ko--> </div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\n\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {ButtonViewModel} from \"../../Models/Buttons/ButtonViewModel\";\r\n\r\nexport abstract class PortletBarButton extends Event {\r\n\tprotected Tooltip: KnockoutObservable<ITooltipConfig>;\r\n ViewModel: ButtonViewModel;\r\n\r\n\tconstructor(buttonConfig: IButtonConfig) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tGetTemplateName() { return `${this.GetButtonTemplateFolder()}/Button`; }\r\n\r\n\tGetDesignTemplateName() { return `${this.GetButtonTemplateFolder()}/Design`}\r\n\r\n\tGetPropsTemplateName() { return `${this.GetButtonTemplateFolder()}/Props` }\r\n\r\n\tAfterRender() { }\r\n\r\n\tabstract OnClickEvent(): string;\r\n\tabstract OnClick(): void;\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn \"Core/Controls/PortletBar/Templates/Buttons\";\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport RemoveButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Remove/Button.html\";\r\nimport RemoveButtonDesignTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Remove/Design.html\";\r\nimport RemovePropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Remove/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Remove/Button\"] = RemoveButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Remove/Design\"] = RemoveButtonDesignTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Remove/Props\"] = RemovePropsTemplate;\r\n\r\nexport class RemoveButtonViewModel extends ButtonViewModel {\r\n\tDisplayValue: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\r\n\t\tthis.DisplayValue = ko.observable(false);\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: OnClick, visible: ViewModel.DisplayValue, tooltip:{content: $parent._labels.REMOVE_LABEL}\\\" class=\\\"remove\\\"> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"visible: ViewModel.DisplayValue\\\" class=\\\"remove\\\"> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"\";\n// Exports\nexport default code;","import {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\"\r\nimport {RemoveButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/RemoveButtonViewModel\"\r\n\r\nexport class RemoveButton extends PortletBarButton {\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonConfig);\r\n\t\tthis.ViewModel = new RemoveButtonViewModel(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tOnClickEvent() {\r\n\t\treturn EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.Trigger(this.OnClickEvent());\r\n\t}\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn `${super.GetButtonTemplateFolder()}/Remove`;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\"\r\n\r\nimport SettingsButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Settings/Button.html\";\r\nimport SettingsButtonDesignTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Settings/Design.html\";\r\nimport SettingsPropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Settings/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Settings/Button\"] = SettingsButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Settings/Design\"] = SettingsButtonDesignTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Settings/Props\"] = SettingsPropsTemplate;\r\n\r\nexport class SettingsButtonViewModel extends ButtonViewModel {\r\n\tDisplayValue: KnockoutObservable<boolean>;\r\n PropsOpened: KnockoutObservable<boolean>;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\t\tthis.DisplayValue = ko.observable(this.Properties().Visible());\r\n this.PropsOpened = ko.observable(false);\r\n\t}\r\n}","// Module\nvar code = \"<a data-bind=\\\"tooltip: Tooltip,click: OnClick, visible: ViewModel.DisplayValue\\\" class=\\\"config\\\"> </a> <!--ko template: {name: $data.GetPropsTemplateName.bind($data)}--> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"visible: ViewModel.DisplayValue, tooltip:{content: $parent._labels.PORTLET_SETTINGS}\\\" class=\\\"config\\\"></a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul data-bind=\\\"style: {display: ViewModel.PropsOpened() ? 'block' : 'none'}\\\" class=\\\"dropdown-menu\\\" style=\\\"right:0;left:auto\\\"> <li> <div class=\\\"form-group text-center\\\"> <label class=\\\"col-md-3 control-label length\\\">Length</label> <div class=\\\"col-md-9\\\"> <input data-bind=\\\"knob: {value: $parent.RuntimeSettings().Length, min: 5}\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" data-angleoffset=\\\"-125\\\" data-anglearc=\\\"250\\\" data-width=\\\"75\\\" data-height=\\\"75\\\" class=\\\"knob\\\"> </div> </div> </li> <li> <div class=\\\"md-checkbox checkbox-centering\\\"> <input data-bind=\\\"attr:{id: ViewModel.Guid + ' expand-collapse'}, checked: $parent.RuntimeSettings().CollapseButton\\\" type=\\\"checkbox\\\" class=\\\"md-check\\\"> <label data-bind=\\\"attr:{for: ViewModel.Guid + ' expand-collapse'}\\\" class=\\\"col-md-offset-1 col-md-11 portlet-checkbox\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Expand/Collapse </label> </div> </li> <li> <div class=\\\"md-checkbox checkbox-centering\\\"> <input data-bind=\\\"attr:{id: ViewModel.Guid + ' minimize-maximize'}, checked: $parent.RuntimeSettings().ExpandButton\\\" type=\\\"checkbox\\\" class=\\\"md-check\\\"> <label data-bind=\\\"attr:{for: ViewModel.Guid + ' minimize-maximize'}\\\" class=\\\"col-md-offset-1 col-md-11 portlet-checkbox\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Minimize/Maximize </label> </div> </li> <li class=\\\"text-center\\\"> <button data-bind=\\\"click: SaveSettings\\\" class=\\\"btn btn-success col-md-12\\\">Save</button> </li> </ul>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\"\r\nimport {SettingsButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/SettingsButtonViewModel\"\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class SettingsButton extends PortletBarButton {\r\n ViewModel: SettingsButtonViewModel;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonConfig);\r\n\t\tthis.ViewModel = new SettingsButtonViewModel(buttonName, buttonConfig);\r\n\t\tthis.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.PORTLET_SETTINGS, outside: 'y', position: {x: 'center', y: LABELS.PORTLET_SETTINGS.length <= 8 ? 'top' : 'bottom'}});\r\n\t}\r\n\r\n\tOnClickEvent() {\r\n\t\treturn EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.SETTINGS_BUTTON_CLICKED;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.Trigger(this.OnClickEvent());\r\n\t\tthis.ViewModel.PropsOpened(!this.ViewModel.PropsOpened());\r\n\t}\r\n\r\n\tSaveSettings() {\r\n\t\tthis.ViewModel.PropsOpened(false);\r\n\t\tthis.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED);\r\n\t}\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn `${super.GetButtonTemplateFolder()}/Settings`;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Guid} from \"Core/Common/Guid\"\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\n\r\nexport abstract class ButtonViewModel {\r\n\tGuid: Guid;\r\n\tName: string;\r\n\tProperties: KnockoutObservable<IButtonConfig>;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tthis.Guid = Guid.NewGuid();\r\n\t\tthis.Name = buttonName;\r\n\t\tthis.Properties = ko.observable(buttonConfig);\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport { IPortletProperties } from \"Core/Controls/PortletBar/Interfaces/IPortletBarProperties\";\r\n\r\nexport class DefaultPortletProps implements IPortletProperties {\r\n\tReadOnly: KnockoutObservable<boolean> = ko.observable(true);\r\n\tSearch: KnockoutObservable<boolean> = ko.observable(true);\r\n\r\n\tPortletColor: KnockoutObservable<string> = ko.observable(\"#95a5a6\");\r\n\tUsePortletBarColor: KnockoutObservable<boolean> = ko.observable(false);\r\n\tDataSpaceColor: KnockoutObservable<string> = ko.observable(\"#fff\");\r\n\tKind: KnockoutObservable<string> = ko.observable(\"light\");\r\n\tLength: KnockoutObservable<number> = ko.observable(5);\r\n\r\n\tHeaderText: KnockoutObservable<string> = ko.observable(null);\r\n\tCollapseButton: KnockoutObservable<boolean> = ko.observable(true);\r\n\tExpandButton: KnockoutObservable<boolean> = ko.observable(false);\r\n\tSettingsButton: KnockoutObservable<boolean> = ko.observable(true);\r\n\tReloadButton: KnockoutObservable<boolean> = ko.observable(false);\r\n\tRemoveButton: KnockoutObservable<boolean> = ko.observable(true);\r\n\r\n\tUseBodySpace: KnockoutObservable<boolean> = ko.observable(true);\r\n\r\n\tprivate static _isInitialized: boolean = false;\r\n\tprivate static _props: DefaultPortletProps = null;\r\n\r\n\tstatic Props() {\r\n\t\tif (DefaultPortletProps._props === null) {\r\n\t\t\tDefaultPortletProps._props = new DefaultPortletProps();\r\n\t\t}\r\n\r\n\t\treturn DefaultPortletProps._props;\r\n\t}\r\n\r\n\tconstructor() {\r\n\t\tif (DefaultPortletProps._isInitialized) {\r\n\t\t\tthrow new Error(\"Props cannot be initialized twice. Use DefaultPortletProps.Props() instead\");\r\n\t\t}\r\n\r\n\t\tDefaultPortletProps._isInitialized = true;\r\n\t}\r\n}","// Module\nvar code = \"<a class=\\\"collapse\\\" data-bind=\\\"tooltip:Tooltip, click: $data.OnClick.bind($data)\\\"> </a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport CollapseButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Collapse/Button.html\";\r\nimport CollapsePropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Collapse/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Collapse/Button\"] = CollapseButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Collapse/Design\"] = CollapseButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Collapse/Props\"] = CollapsePropsTemplate;\r\n\r\nexport class CollapseButtonViewModel extends ButtonViewModel {\r\n\tIsCollapsed: boolean;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"md-checkbox\\\"> <input type=\\\"checkbox\\\" id=\\\"expand-collapse\\\" class=\\\"md-check\\\"> <label for=\\\"expand-collapse\\\" class=\\\"col-md-offset-1 col-md-11\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Expand/Collapse </label> </div>\";\n// Exports\nexport default code;","import {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport {CollapseButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/CollapseButtonViewModel\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport * as ko from \"knockout\";\r\n\r\nexport class CollapseButton extends PortletBarButton {\r\n ViewModel: CollapseButtonViewModel;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n super(buttonConfig);\r\n\r\n this.ViewModel = new CollapseButtonViewModel(buttonName, buttonConfig);\r\n this.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.COLLAPSE, outside: 'y', position: {x: 'center', y: LABELS.COLLAPSE.length <= 8 ? 'top' : 'bottom'}});\r\n }\r\n\r\n OnClickEvent() {\r\n return EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.COLLAPSE_BUTTON_CLICKED;\r\n }\r\n\r\n OnClick() {\r\n this.ViewModel.IsCollapsed = !this.ViewModel.IsCollapsed;\r\n this.UpdateTooltip();\r\n this.Trigger(this.OnClickEvent());\r\n }\r\n\r\n protected GetButtonTemplateFolder() {\r\n return `${super.GetButtonTemplateFolder()}/Collapse`;\r\n }\r\n\r\n private UpdateTooltip() {\r\n if (this.ViewModel.IsCollapsed) {\r\n this.Tooltip({content: LABELS.EXPAND});\r\n return;\r\n }\r\n\r\n this.Tooltip({content: LABELS.COLLAPSE});\r\n }\r\n}","// Module\nvar code = \"<a class=\\\"fullscreen\\\" data-bind=\\\"tooltip: Tooltip, click: $data.OnClick.bind($data)\\\"> </a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport ExpandButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Expand/Button.html\";\r\nimport ExpandPropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Expand/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Expand/Button\"] = ExpandButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Expand/Design\"] = ExpandButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Expand/Props\"] = ExpandPropsTemplate;\r\n\r\nexport class ExpandButtonViewModel extends ButtonViewModel {\r\n\tIsExpanded: boolean;\r\n\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"md-checkbox\\\"> <input type=\\\"checkbox\\\" id=\\\"minimize-maximize\\\" class=\\\"md-check\\\"> <label for=\\\"minimize-maximize\\\" class=\\\"col-md-offset-1 col-md-11\\\"> <span class=\\\"inc\\\"></span> <span class=\\\"check\\\"></span> <span class=\\\"box\\\"></span> Minimize/Maximize </label> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport {ExpandButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ExpandButtonViewModel\";\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ExpandButton extends PortletBarButton {\r\n ViewModel: ExpandButtonViewModel;\r\n\r\n constructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n super(buttonConfig);\r\n this.ViewModel = new ExpandButtonViewModel(buttonName, buttonConfig);\r\n this.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.MAXIMIZE, outside: 'y', position: {x: 'center', y: LABELS.MAXIMIZE.length <= 8 ? 'top' : 'bottom'}});\r\n }\r\n\r\n OnClickEvent() {\r\n return EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.EXPAND_BUTTON_CLICKED;\r\n }\r\n\r\n OnClick() {\r\n this.ViewModel.IsExpanded = !this.ViewModel.IsExpanded;\r\n this.UpdateTooltip();\r\n this.Trigger(this.OnClickEvent());\r\n }\r\n\r\n protected GetButtonTemplateFolder() {\r\n return `${super.GetButtonTemplateFolder()}/Expand`;\r\n }\r\n\r\n private UpdateTooltip() {\r\n if (this.ViewModel.IsExpanded) {\r\n this.Tooltip({content: LABELS.MINIMIZE});\r\n return;\r\n }\r\n\r\n this.Tooltip({content: LABELS.MAXIMIZE});\r\n }\r\n}","// Module\nvar code = \"<a class=\\\"reload\\\" data-bind=\\\"click: OnClick, tooltip: Tooltip\\\"> </a>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\";\r\nimport {ButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ButtonViewModel\";\r\n\r\nimport ReloadButtonTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Reload/Button.html\";\r\nimport ReloadPropsTemplate from \"Core/Controls/PortletBar/Templates/Buttons/Reload/Props.html\";\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Reload/Button\"] = ReloadButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Reload/Design\"] = ReloadButtonTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Buttons/Reload/Props\"] = ReloadPropsTemplate;\r\n\r\nexport class ReloadButtonViewModel extends ButtonViewModel {\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonName, buttonConfig);\r\n\t}\r\n}","// Module\nvar code = \"\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\"\r\nimport {ReloadButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/ReloadButtonViewModel\"\r\nimport {ITooltipConfig} from \"Core/KnockoutExtentions/TooltipExtention\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ReloadButton extends PortletBarButton {\r\n\tconstructor(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\tsuper(buttonConfig);\r\n\t\tthis.ViewModel = new ReloadButtonViewModel(buttonName, buttonConfig);\r\n\t\tthis.Tooltip = ko.observable<ITooltipConfig>({content: LABELS.REFRESH, outside: 'y', position: {x: 'center', y: LABELS.REFRESH.length <= 8 ? 'top' : 'bottom'}});\r\n\t}\r\n\r\n\tOnClickEvent() {\r\n\t\treturn EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.RELOAD_BUTTON_CLICKED;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.Trigger(this.OnClickEvent());\r\n\t}\r\n\r\n\tprotected GetButtonTemplateFolder() {\r\n\t\treturn `${super.GetButtonTemplateFolder()}/Reload`;\r\n\t}\r\n} ","import {IButtonConfig} from \"Core/Controls/PortletBar/Interfaces/IButtonConfig\"\r\nimport {PortletBarButton} from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport {CollapseButton} from \"Core/Controls/PortletBar/Managers/Buttons/CollapseButton\";\r\nimport {ExpandButton} from \"Core/Controls/PortletBar/Managers/Buttons/ExpandButton\";\r\nimport {ReloadButton} from \"Core/Controls/PortletBar/Managers/Buttons/ReloadButton\";\r\nimport {RemoveButton} from \"Core/Controls/PortletBar/Managers/Buttons/RemoveButton\";\r\nimport {SettingsButton} from \"Core/Controls/PortletBar/Managers/Buttons/SettingsButton\";\r\n\r\nexport class ButtonsFactory {\r\n\tstatic CreateButton(buttonName: string, buttonConfig: IButtonConfig): PortletBarButton {\r\n\t\treturn this[buttonName](buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static CollapseButton(buttonName: string, buttonConfig: IButtonConfig): PortletBarButton {\r\n\t\treturn new CollapseButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static ExpandButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new ExpandButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static ReloadButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new ReloadButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static RemoveButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new RemoveButton(buttonName, buttonConfig);\r\n\t}\r\n\r\n\tprivate static SettingsButton(buttonName: string, buttonConfig: IButtonConfig) {\r\n\t\treturn new SettingsButton(buttonName, buttonConfig);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\"\r\n\r\nimport { IPortletProperties } from \"Core/Controls/PortletBar/Interfaces/IPortletBarProperties\"\r\n\r\nimport { DefaultPortletProps } from \"Core/Controls/PortletBar/Defaults/DefaultPortletProps\"\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { ButtonsFactory } from \"Core/Controls/PortletBar/Utils/ButtonsFactory\";\r\nimport { PortletBarButton } from \"Core/Controls/PortletBar/Managers/Buttons/PortletBarButton\";\r\nimport { IPortletRuntimeSettings } from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\";\r\nimport { IControlParam } from \"Core/Screens/IScreen\";\r\nimport { RenderModes, EVENTS } from \"Core/Constant\";\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\nimport { BaseControl } from \"Core/Controls/BaseControl/BaseControl\";\r\n\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport {GlobalManager, GLOBALS} from \"../../GlobalManager/GlobalManager\";\r\n\r\nimport PortletBarConfig from \"Core/Controls/PortletBar/Configs/portlet-bar-config.json\";\r\n\r\nimport PortletBarTemplate from 'Core/Controls/PortletBar/Templates/View.html';\r\nimport PortletBarDesign from 'Core/Controls/PortletBar/Templates/Design.html';\r\nimport PortletBarToolBar from 'Core/Controls/PortletBar/Templates/ToolBar.html';\r\n\r\nko.templates[\"Core/Controls/PortletBar/Templates/View\"] = PortletBarTemplate;\r\nko.templates[\"Core/Controls/PortletBar/Templates/Design\"] = PortletBarDesign;\r\nko.templates[\"Core/Controls/PortletBar/Templates/ToolBar\"] = PortletBarToolBar;\r\n\r\nexport class PortletBar extends BaseControl {\r\n\tprivate _config: any;\r\n\t_labels = LABELS;\r\n\tObjectId: number;\r\n\tPortletIcon: Icon;\r\n\tButtons: KnockoutObservableArray<PortletBarButton>;\r\n\tRuntimeSettings: KnockoutObservable<IPortletRuntimeSettings>;\r\n\tIsReady: KnockoutObservable<boolean>;\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, PortletBarConfig);\r\n\r\n\t\tthis.Buttons = ko.observableArray([]);\r\n\r\n\t\tthis.Init();\r\n\t\tthis.RuntimeSettings = ko.observable(this.ExtendRuntimeSettings(null));\r\n\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tprotected ApplyProperties() {}\r\n\r\n\tget ConfigProperties(): IPortletProperties {\r\n\t\treturn this._config\r\n\t\t\t? this.GetConfigSettings()\r\n\t\t\t: new DefaultPortletProps();\r\n\t}\r\n\r\n\tget HeaderText() {\r\n\t\tconst desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\t\tlet portletControlName = this._model().Name;\r\n\r\n\t\t_.each(this.NameTranslations, item => {\r\n\t\t\tif (item.Translation && item.Translation !== '' && item.Translation !== null &&\r\n\t\t\t\titem.Language && item.Language.ShortName === desktopLanguage) {\r\n\t\t\t\tportletControlName = item.Translation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn portletControlName || this.EntityTranslatedName || this.EntityName;\r\n\t}\r\n\r\n\tget EntityName(): string {\r\n\t\treturn this._form.GetScreen().GetScreenName();\r\n\t}\r\n\r\n get EntityTranslatedName(): string {\r\n return this._form.GetScreen().GetScreenTranslatedName();\r\n }\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tApplyRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n\t\tlet self = this;\r\n\t\tself.RuntimeSettings = ko.observable(self.ExtendRuntimeSettings(runtimeSettings));\r\n\t\tself.Buttons().forEach(button => button.ViewModel.Properties().Visible(self.RuntimeSettings()[button.ViewModel.Name]()));\r\n\t\tthis.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_APPLIED, self.RuntimeSettings());\r\n\t}\r\n\r\n\tSaveSettings() {\r\n\t\tthis.ApplyRuntimeSettings(this.RuntimeSettings());\r\n\t\tthis.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this.RuntimeSettings());\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.COLLAPSE_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.EXPAND_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.RELOAD_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.SETTINGS_BUTTON_CLICKED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.RUNTIME_SETTINGS_APPLIED);\r\n\t\tthis.AddEvent(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED);\r\n\r\n\t\tthis._config = this._model().Properties;\r\n\r\n\t\tif (this._renderMode() !== RenderModes.ToolBar) {\r\n\t\t\tthis.PortletIcon = this._form.GetScreen().GetScreenIcon();\r\n\t\t}\r\n\r\n\t\tthis.Buttons(this.GetButtonsFromConfig());\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tif (this._renderMode() !== RenderModes.Design) {\r\n\t\t\tlet settingsButton = this.GetButton(\"SettingsButton\");\r\n\t\t\tif (settingsButton) {\r\n\t\t\t\tsettingsButton.On(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this, eventArgs => this.SaveSettings());\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis._model.subscribe(() => this.Init());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate BindButtonClickEvent(button: PortletBarButton) {\r\n\t\tbutton.On(button.OnClickEvent(), this, () => {\r\n\t\t\tthis.Trigger(button.OnClickEvent());\r\n\t\t});\r\n\t}\r\n\r\n\tprivate ExtendRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n\t\tlet self = this;\r\n\r\n\t\tif (!runtimeSettings) {\r\n\t\t\treturn self.GetConfigSettings();\r\n\t\t}\r\n\r\n\t\truntimeSettings.Length = runtimeSettings.Length || DefaultPortletProps.Props().Length;\r\n\t\truntimeSettings.CollapseButton = runtimeSettings.CollapseButton || DefaultPortletProps.Props().CollapseButton;\r\n\t\truntimeSettings.ExpandButton = runtimeSettings.ExpandButton || DefaultPortletProps.Props().ExpandButton;\r\n\r\n\t\truntimeSettings.ReadOnly(self.IsReadOnly());\r\n\t\truntimeSettings.Search(self.IsSearchEnabled());\r\n\t\truntimeSettings.PortletColor(self.GetPortletColor());\r\n\t\truntimeSettings.DataSpaceColor(self.GetDataSpaceColor());\r\n\t\truntimeSettings.Kind(self.GetKind());\r\n\t\truntimeSettings.UseBodySpace(self.UseBodySpace());\r\n\r\n\t\truntimeSettings.ReloadButton(self.IsButtonVisible(\"ReloadButton\"));\r\n\t\truntimeSettings.RemoveButton(self.IsButtonVisible(\"RemoveButton\"));\r\n\t\truntimeSettings.SettingsButton(self.IsButtonVisible(\"SettingsButton\"));\r\n\r\n\t\treturn runtimeSettings;\r\n\t}\r\n\r\n\tprivate GetConfigSettings(): IPortletRuntimeSettings {\r\n\t\tlet settings: IPortletRuntimeSettings = {\r\n\t\t\tReadOnly: ko.observable(this.IsReadOnly()),\r\n\t\t\tSearch: ko.observable(this.IsSearchEnabled()),\r\n\t\t\tPortletColor: ko.observable(this.GetPortletColor()),\r\n\t\t\tUsePortletBarColor: ko.observable(this.UsePortletBarColor()),\r\n\t\t\tDataSpaceColor: ko.observable(this.GetDataSpaceColor()),\r\n\t\t\tKind: ko.observable(this.GetKind()),\r\n\t\t\tHeaderText: ko.observable(this.GetHeaderText()),\r\n\t\t\tCollapseButton: ko.observable(this.IsButtonVisible(\"CollapseButton\")),\r\n\t\t\tExpandButton: ko.observable(this.IsButtonVisible(\"ExpandButton\")),\r\n\t\t\tSettingsButton: ko.observable(this.IsButtonVisible(\"SettingsButton\")),\r\n\t\t\tRemoveButton: ko.observable(this.IsButtonVisible(\"RemoveButton\")),\r\n\t\t\tReloadButton: ko.observable(this.IsButtonVisible(\"ReloadButton\")),\r\n\t\t\tLength: ko.observable(this.GetLengthFromConfig()),\r\n\t\t\tUseBodySpace: ko.observable(this.UseBodySpace())\r\n\t\t};\r\n\t\treturn settings;\r\n\t}\r\n\r\n\tprivate GetButton(buttonName: string) {\r\n\t\tlet buttons = this.Buttons().filter(button => button.ViewModel.Name === buttonName);\r\n\t\treturn buttons.length > 0 ? buttons[0] : null;\r\n\t}\r\n\r\n\tprivate IsButtonVisible(buttonName: string) {\r\n\t\tlet buttonViewModels = this.Buttons().filter(button => button.ViewModel.Name === buttonName).map(button => button.ViewModel);\r\n\r\n\t\tlet buttonViewModel = _.find(buttonViewModels, { Name: buttonName });\r\n\r\n\t\treturn buttonViewModel ? buttonViewModel.Properties().Visible() : false;\r\n\t}\r\n\r\n\tprivate IsReadOnly(): boolean {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().ReadOnly();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.ReadOnly;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().ReadOnly();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].ReadOnly;\r\n\t}\r\n\r\n\tprivate IsSearchEnabled(): boolean {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().Search();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.Search;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().Search();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].Search;\r\n\t}\r\n\r\n\tprivate GetPortletColor(): string {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().PortletColor();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.PortletColor;\r\n\r\n\t\tif (!config || config.Properties[0].PortletColor === \"\") {\r\n\t\t\treturn DefaultPortletProps.Props().PortletColor();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].PortletColor;\r\n\t}\r\n\r\n\tprivate UsePortletBarColor() {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().UsePortletBarColor();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.UsePortletBarColor;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().UsePortletBarColor();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].UsePortletBarColor;\r\n\t}\r\n\r\n\tprivate GetDataSpaceColor(): string {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().DataSpaceColor();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.UsePortletBarColor;\r\n\r\n\t\tif (!config || !config.Properties[0].UsePortletBarColor) {\r\n\t\t\treturn DefaultPortletProps.Props().DataSpaceColor();\r\n\t\t}\r\n\r\n\t\treturn this.GetPortletColor();\r\n\t}\r\n\r\n\tprivate UseBodySpace() {\r\n\t\treturn this.GetPortletColor() !== this.GetDataSpaceColor();\r\n\t}\r\n\r\n\tprivate GetKind(): string {\r\n\t\treturn \"boxed\";\r\n\t}\r\n\r\n\tprivate GetHeaderText(): string {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().HeaderText();\r\n\t\t}\r\n\r\n\t\tconst config = this._config.Header;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn DefaultPortletProps.Props().HeaderText();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].HeaderText;\r\n\t}\r\n\r\n\tprivate GetButtonsFromConfig(): Array<PortletBarButton> {\r\n\t\tif (!this._config) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tlet config = this._config.PortletBarButtons;\r\n\r\n\t\tif (!config) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet buttons: Array<PortletBarButton> = config.Properties.map(prop => {\r\n\t\t\tlet name = Object.keys(prop)[1],\r\n\t\t\t\tvisible = prop[name];\r\n\r\n\t\t\tlet button = ButtonsFactory.CreateButton(name, {\r\n\t\t\t\tVisible: ko.observable(visible)\r\n\t\t\t});\r\n\r\n\t\t\tthis.BindButtonClickEvent(button);\r\n\r\n\t\t\treturn button;\r\n\t\t});\r\n\r\n\t\treturn buttons;\r\n\t}\r\n\r\n\tprivate GetLengthFromConfig(): number {\r\n\t\tif (!this._config) {\r\n\t\t\treturn DefaultPortletProps.Props().Length();\r\n\t\t}\r\n\r\n\t\tlet config = this._config.Length;\r\n\r\n\t\tif (!config || config.Properties[0].Length === \"\") {\r\n\t\t\treturn DefaultPortletProps.Props().Length();\r\n\t\t}\r\n\r\n\t\treturn config.Properties[0].Length;\r\n\t}\r\n\r\n\tGetValue(): any {\r\n\t\tthrow new Error('GetValue not implemented');\r\n\t}\r\n\r\n\tDeserialize(): any {\r\n\t\treturn null;\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"portlet-title position-r\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: {borderColor: RuntimeSettings().PortletColor}\\\"> <div class=\\\"caption\\\"> <!--ko with: PortletIcon--> <span> <!--ko template: {name: $data.GetPortletIconTemplate.bind($data)}--><!--/ko--> </span> <!--/ko--> <span data-bind=\\\"text: HeaderText\\\" class=\\\"caption-subject uppercase\\\"> </span> </div> <div class=\\\"tools\\\"> <!--ko foreach: Buttons--> <!--ko if: ViewModel.Properties().Visible--> <!--ko template: {name: $data.GetTemplateName.bind($data)}--><!--/ko--> <!--/ko--> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"portlet-design-wrapper\\\"> <div class=\\\"portlet boxed\\\"> <div class=\\\"portlet-title position-r design-view\\\" data-bind=\\\"style: {borderColor: $data.ConfigProperties.PortletColor}\\\"> <div class=\\\"caption\\\"> <!--ko with: PortletIcon--> <span> <!--ko template: {name: $data.GetPortletIconTemplate.bind($data)}--><!--/ko--> </span> <!--/ko--> <span data-bind=\\\"text: HeaderText\\\" class=\\\"caption-subject uppercase\\\"> </span> </div> <div class=\\\"tools\\\"> <!--ko foreach: Buttons--> <!--ko if: ViewModel.Properties().Visible--> <!--ko template: {name: $data.GetDesignTemplateName.bind($data)}--><!--/ko--> <!--/ko--> <!--/ko--> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-list-alt\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage } \\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"\\\"></i> <!-- ko with: _queryBuilder --> <!-- ko template: {html: GetTemplateHtml, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {RenderModes, FIELD_TYPES, TABLE_TYPES} from 'Core/Constant';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {DEFAULT_ICONS} from 'Core/Constant'\r\nimport {QueryExpressionModel} from \"Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {Serialize, Deserialize, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport ViewTemplate from 'Core/Controls/QueryBuilder/Templates/View.html';\r\nimport ToolBarTemplate from 'Core/Controls/QueryBuilder/Templates/ToolBar.html';\r\n\r\nko.templates['Core/Controls/QueryBuilder/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/QueryBuilder/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/QueryBuilder/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/QueryBuilder/Templates/Design'] = ComplexControl.designTemplate;\r\n\r\nexport class QueryBuilder extends ComplexControl {\r\n private _queryBuilder: KnockoutObservable<any>;\r\n private _recordTypeField: AttachedFieldModel;\r\n private _recordNameField: AttachedFieldModel;\r\n private _subjectField: AttachedFieldModel;\r\n private _subjectGridField: AttachedFieldModel;\r\n private _showInMenuField: AttachedFieldModel;\r\n private _showInPortletField: AttachedFieldModel;\r\n\r\n private _lockToGridField: AttachedFieldModel;\r\n\r\n private _gridIdField: AttachedFieldModel;\r\n private _queryField: AttachedFieldModel;\r\n private _oldQueryBuilderData: string;\r\n private _newQueryBuilderData: Array<any>;\r\n private _gridId: number;\r\n\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._model().IsComplexControl = true;\r\n this._queryBuilder = ko.observable(null);\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private Init(): void {\r\n if (this.GetRenderMode() !== RenderModes.Design && this.GetRenderMode() !== RenderModes.ToolBar) {\r\n [\r\n this._recordNameField,\r\n this._recordTypeField,\r\n this._subjectField,\r\n this._queryField,\r\n this._subjectGridField,\r\n this._showInMenuField,\r\n this._lockToGridField,\r\n this._gridIdField,\r\n this._showInPortletField\r\n ] = this._model().Fields;\r\n }\r\n\r\n this._requiredFields([\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_SUBJECT', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('QUERY', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_GRIDSUBJECT', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('SHOWINMENU', FIELD_TYPES.YesNo, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('LOCKEDTOGRID', FIELD_TYPES.YesNo, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('F_GRID', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n new RequiredFieldModel('SHOWINPORTLET', FIELD_TYPES.YesNo, TABLE_TYPES.Entity, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.QueryBuilder));\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n const tableType = this._form.GetScreen().GetTableTypeName();\r\n\r\n if (value.Datas) {\r\n const queryData = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._queryField.Id;\r\n });\r\n\r\n if (queryData) {\r\n let showInMenu = false;\r\n let showInPortlet = false;\r\n\r\n if (tableType === ViewModes[ViewModes.Query]) {\r\n const showInMenuField = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._showInMenuField.Id;\r\n });\r\n\r\n const showInPortletField = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._showInPortletField.Id;\r\n });\r\n\r\n showInMenu = showInMenuField.Value === 'True' || showInMenuField.Value === true;\r\n }\r\n\r\n const showInPortletField = _.find(value.Datas, (item) => {\r\n return item.FieldId === this._showInPortletField.Id;\r\n });\r\n\r\n showInPortlet = showInPortletField.Value === 'True' || showInPortletField.Value === true;\r\n\r\n this.EditQuery(queryData.Value, showInMenu, showInPortlet);\r\n } else {\r\n this.NewQuery(tableType);\r\n }\r\n } else {\r\n this.NewQuery(tableType);\r\n }\r\n }\r\n\r\n NewQuery(queryTypeName: string) {\r\n this._oldQueryBuilderData = queryTypeName;\r\n\r\n var queryBuilder = require('../../../QueryBuilder/QueryBuilder');\r\n this._queryBuilder(new queryBuilder.QueryBuilder(false));\r\n if (queryTypeName === ViewModes[ViewModes.Query] || queryTypeName === ViewModes[ViewModes.Spim]) {\r\n this._queryBuilder().QueryTypeName = ViewModes[this._form.GetScreen().GetTableTypeName()];\r\n this._queryBuilder().NewFreeQuery();\r\n }\r\n }\r\n\r\n EditQuery(queryModel: string, showInMenu: boolean = false, showInPortlet: boolean = false) {\r\n this._oldQueryBuilderData = queryModel;\r\n\r\n var queryBuilder = require('../../../QueryBuilder/QueryBuilder');\r\n this._queryBuilder(new queryBuilder.QueryBuilder(false));\r\n this._queryBuilder().QueryTypeName = ViewModes[this._form.GetScreen().GetTableTypeName()];\r\n this._queryBuilder().EditFreeQuery(GenericDeserialize<QueryExpressionModel>(JSON.parse(queryModel), QueryExpressionModel), showInMenu, showInPortlet);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>): void {\r\n super.AfterRender(el);\r\n }\r\n\r\n Deserialize() {\r\n if (this._queryField && this._subjectField && this._queryBuilder()) {\r\n this._newQueryBuilderData = [];\r\n this._newQueryBuilderData.push([`${this._queryField.EntityName}.${this._queryField.Name}`, JSON.stringify(Serialize(this._queryBuilder().GetModel()))]);\r\n\r\n const data = [];\r\n\r\n data.push([`${this._queryField.EntityName}.${this._queryField.Name}`, JSON.stringify(Serialize(this._queryBuilder().GetModel()))]);\r\n data.push([`${this._subjectField.EntityName}.${this._subjectField.Name}`, this._queryBuilder().GetSubjectEntityId()]);\r\n\r\n if (this._subjectGridField) {\r\n data.push([`${this._subjectGridField.EntityName}.${this._subjectGridField.Name}`, this._queryBuilder().GetGridSubjectEntityId()]);\r\n }\r\n\r\n if (this._showInMenuField) {\r\n data.push([`${this._subjectGridField.EntityName}.${this._showInMenuField.Name}`, this._queryBuilder().GetShowInMenu()]);\r\n }\r\n \r\n if (this._showInPortletField) {\r\n data.push([`${this._subjectGridField.EntityName}.${this._showInPortletField.Name}`, this._queryBuilder().GetShowInPortlet()]);\r\n }\r\n\r\n if (this._gridIdField) {\r\n data.push([`${this._gridIdField.EntityName}.${this._gridIdField.Name}`, this._gridId]);\r\n }\r\n\r\n return data;\r\n }\r\n return null;\r\n }\r\n\r\n IsModified(): boolean {\r\n this.Deserialize();\r\n if (this._newQueryBuilderData.length !== 0) {\r\n let newQueryBuilderData = this._newQueryBuilderData[0][1];\r\n\r\n if (this._oldQueryBuilderData !== newQueryBuilderData.toString()) {\r\n return true;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this._queryField && this._subjectField && this._queryBuilder()) {\r\n if (this._queryBuilder().GetModel()) {\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n this._errorMessage('Please initialize query');\r\n }\r\n } else {\r\n this._isValid(false);\r\n this._errorMessage('Please initialize control');\r\n }\r\n return this._isValid();\r\n }\r\n\r\n SetSubjectEntityId(subjectEntityId: number): void {\r\n this._queryBuilder().SubjectEntityId = subjectEntityId;\r\n }\r\n\r\n SetSubjectRecordId(subjectRecordId: number): void {\r\n this._queryBuilder().SubjectRecordId = subjectRecordId;\r\n }\r\n\r\n SetQueryTypeName(queryTypeName: any): void {\r\n this._queryBuilder().QueryTypeName = queryTypeName;\r\n }\r\n\r\n SetGridId(id: number): void {\r\n this._gridId = id;\r\n }\r\n\r\n SetFilterByOwners(value: boolean) {\r\n this._queryBuilder().FilterByOwners = value;\r\n }\r\n\r\n GetQueryId(): number {\r\n return this._queryBuilder().QueryId;\r\n }\r\n\r\n InitQuery(data: QueryExpressionModel): void {\r\n this._queryBuilder().InitQuery(data);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"><img src=\\\"img/Custom/sql-256.png\\\"> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --></label> </div> \";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {CreateRecipeVersionDto} from \"../Models/Dto/CreateRecipeVersionDto\";\r\nimport {GetRecipeDataDto} from \"../Models/Dto/GetRecipeDataDto\";\r\nimport {RecipeRecordModel} from \"../RecipeEditorTree/Response/RecipeRecordModel\";\r\nimport {RecipeDataModel} from \"../Models/RecipeDataModel\";\r\nimport {DeleteRecipeVersionDto} from \"../Models/Dto/DeleteRecipeVersionDto\";\r\nimport {GetRecipeDataByVersionDto} from \"../Models/Dto/GetRecipeDataByVersionDto\";\r\nimport {CopyRecipeVersionDto} from \"../Models/Dto/CopyRecipeVersionDto\";\r\nimport {SaveRecipeDataDto} from \"../Models/Dto/SaveRecipeDataDto\";\r\nimport {CheckIfRecipeIsCreatedDto} from \"../Models/Dto/CheckIfRecipeIsCreatedDto\";\r\n\r\nexport interface GetLinkedRecordsDto {\r\n RootEntityId: number;\r\n ParentRecordId: number;\r\n VersionId: number;\r\n}\r\n\r\nexport class RecipeEditorStore {\r\n static CreateRecipeVersion(params: CreateRecipeVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/CreateRecipeVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static SaveRecipeData(params: SaveRecipeDataDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/SaveRecipeData',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteRecipeVersion(params: DeleteRecipeVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/DeleteRecipeVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CopyRecipeVersion(params: CopyRecipeVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/CopyRecipeVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRecipeDataByVersion(params: GetRecipeDataByVersionDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/GetRecipeDataByVersion',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRecipeData(params: GetRecipeDataDto): P.Promise<RecipeDataModel>{\r\n const deferredResult = P.defer<RecipeDataModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/GetRecipeData',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n\r\n }\r\n\r\n static GetLinkedRecords(requestModel: GetLinkedRecordsDto): P.Promise<RecipeRecordModel[]> {\r\n const deferredResult = P.defer<RecipeRecordModel[]>();\r\n\r\n const requestOptions: IRequestOptions = {\r\n proxy: {\r\n url: 'api/RecipeEditorApi/GetLinkedRecords',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: requestModel\r\n }\r\n\r\n Request.Send(requestOptions)\r\n .then(response => this.ResolveResponse(response, deferredResult))\r\n .fail((response) => this.ResolveFail(deferredResult, \"Error!!!!\"));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static CheckIfRecipeIsCreated(params: CheckIfRecipeIsCreatedDto): P.Promise<boolean>{\r\n const deferredResult = P.defer<boolean>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/RecipeEditorApi/CheckIfRecipeIsCreated',\r\n dataType: 'json',\r\n type: 'POST'\r\n },\r\n params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(result => {\r\n deferredResult.resolve(result);\r\n })\r\n .fail(error => {\r\n deferredResult.reject(error);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static ResolveResponse(response, deferredResult: P.Deferred<any>) {\r\n if (response.length) {\r\n deferredResult.resolve(response);\r\n return;\r\n }\r\n\r\n this.ResolveFail(deferredResult, response.ErrorMessage);\r\n }\r\n\r\n private static ResolveFail(deferredResult: P.Deferred<any>, errorMessage: string) {\r\n const error = { message: errorMessage };\r\n deferredResult.reject(error);\r\n }\r\n}","export class RecipeRecordModel {\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeId: number;\r\n TypeName: string;\r\n TypeNameTranslation: string;\r\n LifeStatusId: number;\r\n LifeStatusName: string;\r\n LifeStatusGroup: number;\r\n IsLocked: boolean;\r\n HasChildren: boolean;\r\n\r\n Children: RecipeRecordModel[];\r\n TypeColor?: string;\r\n\r\n constructor() {\r\n this.Children = []\r\n this.TypeColor = null;\r\n }\r\n}","import {RecipeRecordModel} from \"./RecipeRecordModel\";\r\n\r\nexport class RecipeResponseModel {\r\n Roots: RecipeRecordModel[];\r\n\r\n constructor() {\r\n this.Roots = [];\r\n }\r\n}","import {RecipeNodeViewModel} from \"./RecipeNodeViewModel\";\r\n\r\nexport class RecipeViewModel {\r\n private _nodes: RecipeNodeViewModel[];\r\n\r\n constructor() {\r\n this._nodes = [];\r\n }\r\n\r\n Add(node: RecipeNodeViewModel) {\r\n this._nodes.push(node);\r\n }\r\n\r\n AddRange(nodes: RecipeNodeViewModel[]) {\r\n nodes.forEach(this.Add.bind(this));\r\n }\r\n\r\n GetNode(id: string, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n this._nodes.forEach(node => node.GetNode(id, callback));\r\n }\r\n\r\n get RootNode(): RecipeNodeViewModel {\r\n return this._nodes[0];\r\n }\r\n\r\n GetNodeByRecordId(id: number, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n this._nodes.forEach(node => node.GetNodeByRecordId(id, callback));\r\n }\r\n\r\n SetInitialNode(initialNodeId: number) {\r\n this._nodes.forEach(node => node.SetInitialNode(initialNodeId));\r\n\r\n // if (this.CurrentNode) {\r\n // this.CurrentNode.SetInitialNode(initialNodeId);\r\n // }\r\n }\r\n\r\n ToJson() {\r\n return this._nodes.map(node => node.ToJson());\r\n }\r\n}","// Module\nvar code = \"<pre class=\\\"mt-code link-info-item\\\" data-bind=\\\"text: TypeName, style: { 'outline': OutlineColor, 'color': TypeColor }, attr: { id: `${Guid}_node-type` }\\\"></pre> <!-- ko if: IsLocked --> <i class=\\\"fa fa-lock\\\" data-bind=\\\"attr: { title: LockedTooltip }\\\"></i> <!-- /ko --> <span class=\\\"LeftColon link-name\\\" data-bind=\\\"text: Name, attr: { id: `${Guid}_node-name` }\\\"></span>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {LifeStatusGroupEnum, LifeStatusGroups} from \"../../../../../Common/Enums/LifeStatusGroups\";\r\n\r\nimport ItemNameTemplate from \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate.html\";\r\nimport {RecipeEditorTreeNodeViewModelMapping} from \"../../Mappings/RecipeEditorTreeNodeViewModelMapping\";\r\nko.templates[\"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate\"] = ItemNameTemplate;\r\n\r\nexport class RecipeNodeViewModel {\r\n Guid: string;\r\n Id: number;\r\n Name: string;\r\n NameTranslation: string;\r\n TypeId: number;\r\n TypeName: string;\r\n TypeNameTranslation: string;\r\n LifeStatusId: number;\r\n LifeStatusName: string;\r\n LifeStatusGroup: number;\r\n IsInitialNode: boolean;\r\n IsLocked: boolean;\r\n HasChildren: boolean;\r\n OutlineColor?: string;\r\n TypeColor?: string;\r\n LockedTooltip?: string;\r\n\r\n\r\n private _children: RecipeNodeViewModel[];\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n this.Guid = Guid.NewGuid();\r\n this._children = [];\r\n if (!this.OutlineColor){\r\n this.OutlineColor = null;\r\n }\r\n if (!this.LockedTooltip){\r\n this.LockedTooltip = null;\r\n }\r\n }\r\n\r\n get Children() {\r\n return this._children;\r\n }\r\n\r\n GetOutlineColor() {\r\n return this.TypeColor ? `1px solid ${this.TypeColor}` : null;\r\n }\r\n\r\n GetTypeColor() {\r\n return this.TypeColor ? this.TypeColor : null;\r\n }\r\n\r\n GetNameTranslation() {\r\n return this.NameTranslation ? this.NameTranslation : this.Name;\r\n }\r\n\r\n GetTypeName() {\r\n return this.TypeNameTranslation ? this.TypeNameTranslation : this.TypeName ? this.TypeName : '-';\r\n }\r\n\r\n Copy() {\r\n return RecipeEditorTreeNodeViewModelMapping.Copy(this);\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemNameTemplate\";\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Add(node: RecipeNodeViewModel) {\r\n this._children.push(node);\r\n }\r\n\r\n AddRange(nodes: RecipeNodeViewModel[]) {\r\n nodes.forEach(this.Add.bind(this));\r\n }\r\n\r\n GetNode(id: string, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n if (this.Guid === id) {\r\n callback(this);\r\n }\r\n\r\n this._children.forEach(child => child.GetNode(id, callback));\r\n }\r\n\r\n GetNodeByRecordId(id: number, callback: (matchedNode: RecipeNodeViewModel) => void) {\r\n if (this.Id === id) {\r\n callback(this);\r\n }\r\n\r\n this._children.forEach(child => child.GetNodeByRecordId(id, callback));\r\n }\r\n\r\n SetInitialNode(initialNodeId: number) {\r\n this.IsInitialNode = this.Id === initialNodeId;\r\n this._children.forEach(childRecord => childRecord.SetInitialNode(initialNodeId));\r\n }\r\n\r\n IsRetired() {\r\n return this.LifeStatusName === 'Disabled' ||\r\n (this.LifeStatusGroup && LifeStatusGroups.GetLifeStatusGroup(this.LifeStatusGroup) === LifeStatusGroupEnum.Retired);\r\n }\r\n\r\n\r\n ToJson() {\r\n const nestedNodes = this._children.map(child => child.ToJson());\r\n let children: object[] | boolean;\r\n\r\n // if (this.IsSubject || nestedNodes.length > 0) {\r\n if (nestedNodes.length > 0) {\r\n children = nestedNodes;\r\n } else {\r\n children = this.HasChildren;\r\n }\r\n\r\n return {\r\n id: this.Guid,\r\n text: (ko as any).renderTemplateXHtml(ItemNameTemplate,\r\n {\r\n TypeName: this.GetTypeName(),\r\n Name: this.GetNameTranslation(),\r\n Tooltip: this._labels.RECORD_DISABLED,\r\n IsRetired: this.IsRetired(),\r\n IsInitialNode: this.IsInitialNode,\r\n IsLocked: this.IsLocked,\r\n LockedTooltip: this._labels.LOCKED_THE_ROOT_NODE_IS_LINKED_TO_THE_LOCK_ENTITY,\r\n OutlineColor: this.GetOutlineColor(),\r\n TypeColor: this.GetTypeColor(),\r\n Guid: this.Guid\r\n }),\r\n children: children,\r\n record: this\r\n };\r\n }\r\n}","import * as _ from 'underscore'\r\nimport {RecipeRecordModel} from \"../Response/RecipeRecordModel\";\r\nimport {RecipeNodeViewModel} from \"../Models/View/RecipeNodeViewModel\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\n\r\nexport class RecipeEditorTreeNodeViewModelMapping {\r\n static MapFromResponse(record: RecipeRecordModel, typesProperty: ITypePropertyModel[]) {\r\n if (!record) {\r\n return null;\r\n }\r\n const nodeViewModel = new RecipeNodeViewModel();\r\n nodeViewModel.Id = record.Id;\r\n nodeViewModel.Name = record.Name || \"-\";\r\n nodeViewModel.NameTranslation = record.NameTranslation;\r\n nodeViewModel.TypeId = record.TypeId;\r\n nodeViewModel.TypeName = record.TypeName;\r\n nodeViewModel.TypeNameTranslation = record.TypeNameTranslation;\r\n nodeViewModel.LifeStatusId = record.LifeStatusId;\r\n nodeViewModel.LifeStatusName = record.LifeStatusName;\r\n nodeViewModel.LifeStatusGroup = record.LifeStatusGroup;\r\n nodeViewModel.IsLocked = record.IsLocked;\r\n nodeViewModel.HasChildren = record.HasChildren;\r\n nodeViewModel.TypeColor = record.TypeColor;\r\n\r\n if (!!typesProperty && !!typesProperty.length){\r\n _.each(typesProperty, (type:ITypePropertyModel)=>{\r\n if (type.TypeId === record.TypeId){\r\n nodeViewModel.TypeColor = type.TypeColor\r\n }\r\n })\r\n }\r\n\r\n const children = record.Children.map(childRecord => this.MapFromResponse(childRecord, typesProperty));\r\n nodeViewModel.AddRange(children);\r\n\r\n return nodeViewModel;\r\n }\r\n\r\n\r\n static Copy(record: RecipeNodeViewModel) {\r\n const nodeViewModel = new RecipeNodeViewModel();\r\n\r\n nodeViewModel.Id = record.Id;\r\n nodeViewModel.Name = record.Name;\r\n nodeViewModel.NameTranslation = record.NameTranslation;\r\n nodeViewModel.TypeId = record.TypeId;\r\n nodeViewModel.TypeName = record.TypeName;\r\n nodeViewModel.TypeNameTranslation = record.TypeNameTranslation;\r\n nodeViewModel.LifeStatusId = record.LifeStatusId;\r\n nodeViewModel.LifeStatusName = record.LifeStatusName;\r\n nodeViewModel.LifeStatusGroup = record.LifeStatusGroup;\r\n nodeViewModel.IsInitialNode = record.IsInitialNode;\r\n nodeViewModel.IsLocked = record.IsLocked;\r\n nodeViewModel.TypeColor = record.TypeColor;\r\n\r\n const children = record.Children.map(childRecord => this.Copy(childRecord));\r\n nodeViewModel.AddRange(children);\r\n\r\n return nodeViewModel;\r\n }\r\n}","import {RecipeResponseModel} from \"../Response/RecipeResponseModel\";\r\nimport {RecipeViewModel} from \"../Models/View/RecipeViewModel\";\r\nimport {RecipeEditorTreeNodeViewModelMapping} from \"./RecipeEditorTreeNodeViewModelMapping\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\nexport class RecipeEditorTreeViewModelMapping {\r\n static MapFromResponse(responseModel: RecipeResponseModel, typesProperty: ITypePropertyModel[]) {\r\n let viewModel = new RecipeViewModel();\r\n\r\n let roots = responseModel.Roots.map(root => RecipeEditorTreeNodeViewModelMapping.MapFromResponse(root, typesProperty));\r\n viewModel.AddRange(roots);\r\n return viewModel;\r\n }\r\n}","//Common\r\nimport * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport 'tree';\r\n\r\nimport {Guid} from \"../../../Common/Guid\";\r\nimport {RecipeNodeViewModel} from \"./Models/View/RecipeNodeViewModel\";\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\"\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {GetLinkedRecordsDto, RecipeEditorStore} from \"../Stores/RecipeEditorStore\";\r\nimport {GetRecipeDataDto} from \"../Models/Dto/GetRecipeDataDto\";\r\nimport {RecipeResponseModel} from \"./Response/RecipeResponseModel\";\r\nimport {RecipeEditorTreeViewModelMapping} from \"./Mappings/RecipeEditorTreeViewModelMapping\";\r\nimport {RecipeViewModel} from \"./Models/View/RecipeViewModel\";\r\nimport {Notifier} from \"../../../Common/Notifier\";\r\nimport {RecipeVersionModel} from \"../Models/RecipeVersionModel\";\r\nimport {RecipeEditorTreeNodeViewModelMapping} from \"./Mappings/RecipeEditorTreeNodeViewModelMapping\";\r\nimport {RecipeDataModel} from \"../Models/RecipeDataModel\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\n//Templates\r\nimport Template from \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template.html\";\r\nimport ItemTemplate from \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemTemplate.html\";\r\nimport {EllipsisTooltipExtention} from \"../../../KnockoutExtentions/EllipsisTooltipExtention\";\r\n\r\nko.templates[\"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template\"] = Template;\r\nko.templates[\"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/ItemTemplate\"] = ItemTemplate;\r\n\r\nexport interface IGetNewDataParams {\r\n recipeDataModel: RecipeDataModel,\r\n recipeSelectedVersion: RecipeVersionModel\r\n}\r\n\r\nexport class RecipeEditorTreeUnit {\r\n private _entityId: number;\r\n private _recordId: KnockoutObservable<number>;\r\n private _controlId: number;\r\n private _expanded: KnockoutObservable<boolean>;\r\n private _model: KnockoutObservable<RecipeViewModel>;\r\n private _userVars: UserVarsManager;\r\n private _labels = LABELS;\r\n\r\n private _el: HTMLElement;\r\n private _recipeEditorTree: HTMLElement;\r\n private _recipeEditorTreeId: string;\r\n private _recipeEditorTreeRendered: boolean;\r\n private _treeRendered: boolean;\r\n private _dataLoaded: KnockoutObservable<boolean>;\r\n private _selectedRecipeVersion: KnockoutObservable<RecipeVersionModel>\r\n private _jbox: jBox;\r\n\r\n private _recipeVersionModel: KnockoutObservableArray<RecipeVersionModel>\r\n private _typesProperty: ITypePropertyModel[]\r\n\r\n constructor(entityId: number, controlId: number, typesProperty: ITypePropertyModel[]) {\r\n this._recipeEditorTreeId = Guid.NewGuid();\r\n this._entityId = entityId;\r\n this._recordId = ko.observable(null);\r\n this._controlId = controlId;\r\n this._model = ko.observable(null);\r\n this._recipeVersionModel = ko.observableArray([]);\r\n this._typesProperty = typesProperty;\r\n\r\n // let isExpanded = this.GetSettingsFromLockStorage();\r\n // this._expanded = ko.observable(isExpanded);\r\n this._expanded = ko.observable(false);\r\n this._selectedRecipeVersion = ko.observable(null);\r\n\r\n this._dataLoaded = ko.observable(false);\r\n this._dataLoaded.subscribe(dataLoaded => {\r\n if (dataLoaded) {\r\n this.RenderTree();\r\n }\r\n });\r\n }\r\n\r\n ExpandCollapse() {\r\n this._expanded(!this._expanded());\r\n // this.SetSettingsToLockStorage();\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Controls/RecipeEditor/RecipeEditorTree/Templates/Template\";\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n this._recipeEditorTree = document.getElementById(this._recipeEditorTreeId);\r\n this._el = el[0];\r\n this.RenderTree();\r\n }\r\n\r\n LoadNewData(recordId: number, recipeVersions: KnockoutObservableArray<RecipeVersionModel>){\r\n const deferred = P.defer();\r\n this._dataLoaded(false);\r\n this._treeRendered = false;\r\n\r\n this._recipeVersionModel(recipeVersions());\r\n\r\n this._recordId(recordId);\r\n\r\n if (recordId){\r\n let params: GetRecipeDataDto = {\r\n RootEntityId: this._entityId,\r\n RootRecordId: recordId,\r\n ControlId: this._controlId\r\n }\r\n RecipeEditorStore.GetRecipeData(params)\r\n .then((data: RecipeDataModel) => {\r\n let roots: RecipeResponseModel = new RecipeResponseModel()\r\n roots.Roots.push(data.RecipeRecord);\r\n this.DataLoaded(roots);\r\n deferred.resolve(null);\r\n })\r\n .fail(() => {\r\n this.DataLoadFailed.bind(this)\r\n deferred.resolve(null);\r\n });\r\n }\r\n\r\n }\r\n\r\n GetNewData(params: IGetNewDataParams){\r\n const deferred = P.defer();\r\n this._dataLoaded(false);\r\n this._treeRendered = false;\r\n this._selectedRecipeVersion({\r\n VersionId: params.recipeSelectedVersion.VersionId,\r\n VersionName: params.recipeSelectedVersion.VersionName,\r\n IsActive: params.recipeSelectedVersion.IsActive,\r\n IsSelected: ko.observable(params.recipeSelectedVersion.IsSelected())\r\n })\r\n\r\n this._recipeVersionModel(params.recipeDataModel.RecipeVersions);\r\n this._recordId(params.recipeDataModel.RecipeRecord.Id);\r\n\r\n if (params.recipeDataModel){\r\n\r\n const promise = new Promise((resolve, reject) => {\r\n setTimeout(() => {\r\n resolve('Success');\r\n }, 100);\r\n });\r\n promise.then((value) => {\r\n let roots: RecipeResponseModel = new RecipeResponseModel();\r\n roots.Roots.push(params.recipeDataModel.RecipeRecord);\r\n\r\n this.DataLoaded(roots);\r\n deferred.resolve(null);\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n private DataLoadFailed(error) {\r\n new Notifier().Failed(error.message);\r\n }\r\n\r\n private DataLoaded(responseModel: RecipeResponseModel){\r\n if (responseModel) {\r\n const data = RecipeEditorTreeViewModelMapping.MapFromResponse(responseModel, this._typesProperty);\r\n this._model(data);\r\n } else {\r\n this.Clear();\r\n }\r\n\r\n if (this._model()) {\r\n // this._model().GetNodeByRecordId(this._recordId(),\r\n // record => {\r\n // if (!this._model().CurrentNode && record.IsSubject) {\r\n // this._model().CurrentNode = record;\r\n // }\r\n // });\r\n\r\n this._model().SetInitialNode(this._recordId());\r\n\r\n this._treeRendered = true;\r\n this._dataLoaded(true);\r\n }\r\n }\r\n\r\n Clear() {\r\n if (this._model()) {\r\n this._model(null);\r\n }\r\n }\r\n\r\n Destroy(){\r\n const $treeRoot = $(this._el)\r\n .next()\r\n .find('.recipeEditor-body');\r\n this.Clear();\r\n $treeRoot.jstree('destroy');\r\n }\r\n\r\n Refresh(){\r\n const $treeRoot = $(this._el)\r\n .next()\r\n .find('.recipeEditor-body');\r\n $treeRoot.jstree(true).refresh();\r\n }\r\n\r\n AddEllipsisTooltip(data) {\r\n this._model().GetNode(data.node.id, record => {\r\n this._jbox = EllipsisTooltipExtention.CreateEllipsisTooltipForPathRunner(record);\r\n });\r\n }\r\n\r\n private RenderTree() {\r\n const $treeRoot = $(this._el)\r\n .next()\r\n .find('.recipeEditor-body');\r\n\r\n $treeRoot.jstree('destroy');\r\n $treeRoot.jstree({\r\n state: {key: 'recipeEditor-state'},\r\n plugins: ['state'],\r\n core: {\r\n animation: false,\r\n data: this.ExtendTree.bind(this),\r\n multiple: false,\r\n themes: {\r\n icons: false\r\n }\r\n }\r\n });\r\n\r\n $treeRoot\r\n .on('ready.jstree', (event, data) => this.OpenCurrentNode(data))\r\n // .on('activate_node.jstree ', (event, data) => this.Navigate(data))\r\n .on('open_node.jstree', (event, data) => this.PathRunnerShowChildren(data))\r\n .on('close_node.jstree', (event, data) => this.PathRunnerHideChildren(data))\r\n .on('hover_node.jstree', (event, data) => {\r\n if (!$(`.${data.node.original.record.Guid}_tooltip`).length) {\r\n this.AddEllipsisTooltip(data);\r\n }\r\n })\r\n }\r\n\r\n PathRunnerShowChildren(data) {\r\n if ($(`.${data.node.id}_tooltip`).length) {\r\n $(`.${data.node.id}_tooltip`).remove();\r\n }\r\n }\r\n\r\n PathRunnerHideChildren(data) {\r\n if ($(`.${data.node.id}_tooltip`).length) {\r\n $(`.${data.node.id}_tooltip`).remove();\r\n }\r\n\r\n _.each(data.node.children, child => {\r\n if ($(`.${child}_tooltip`).length) {\r\n $(`.${child}_tooltip`).remove();\r\n }\r\n })\r\n }\r\n\r\n private OpenCurrentNode(data) {\r\n const currentRecord = this._model().RootNode;\r\n\r\n if (currentRecord) {\r\n if (currentRecord.HasChildren) {\r\n const currentNode = currentRecord.Guid;\r\n data.instance._open_to(currentNode);\r\n data.instance.open_node(currentNode);\r\n data.instance.disable_node(currentNode);\r\n }\r\n }\r\n }\r\n\r\n private ExtendTree(node, callback) {\r\n if (node.id === '#') {\r\n if (this._model()) {\r\n callback.call(node, this._model().ToJson());\r\n }\r\n } else {\r\n this.LoadLinkedRecords(node, this._selectedRecipeVersion())\r\n .then(linkedRecords => this.AddLinkedRecords(linkedRecords, node, callback))\r\n .fail(this.DataLoadFailed.bind(this));\r\n }\r\n }\r\n\r\n private LoadLinkedRecords(node, selectedRecipeVersionModel) {\r\n const deferredResult = P.defer<RecipeNodeViewModel[]>();\r\n\r\n const record = node.original.record;\r\n let nestedNodes = [];\r\n\r\n this._model().GetNodeByRecordId(record.Id, existingRecord => {\r\n if (existingRecord.Children.length > 0 && nestedNodes.length === 0) {\r\n nestedNodes = existingRecord.Children.map(nestedNode => nestedNode.Copy());\r\n }\r\n });\r\n\r\n if (nestedNodes.length === 0) {\r\n let parsms: GetLinkedRecordsDto = {\r\n RootEntityId: this._entityId,\r\n ParentRecordId: record.Id,\r\n VersionId: selectedRecipeVersionModel.VersionId,\r\n }\r\n\r\n RecipeEditorStore.GetLinkedRecords(parsms)\r\n .then(linkedRecords => {\r\n nestedNodes = linkedRecords.map(nestedNode => RecipeEditorTreeNodeViewModelMapping.MapFromResponse(nestedNode, this._typesProperty));\r\n deferredResult.resolve(nestedNodes);\r\n })\r\n .fail(error => deferredResult.reject(error));\r\n\r\n } else {\r\n deferredResult.resolve(nestedNodes);\r\n }\r\n\r\n return deferredResult.promise();\r\n\r\n }\r\n\r\n private AddLinkedRecords(linkedRecords: RecipeNodeViewModel[], node, callback) {\r\n const nestedNodes = linkedRecords.map(nestedNode => nestedNode.ToJson());\r\n this._model().GetNode(node.id, record => {\r\n record.AddRange(linkedRecords);\r\n });\r\n callback.call(node, nestedNodes);\r\n }\r\n\r\n\r\n}","// Module\nvar code = \"<!-- ko if: _model --> <!--<div data-bind=\\\"css: {'expand': _expanded}, attr: {id: _pathRunnerId}\\\" class=\\\"clearfix path-runner-container transition\\\">--> <div data-bind=\\\"attr: {id: _recipeEditorTreeId}\\\" class=\\\"recipeEditorTree clearfix path-runner-container transition expand\\\"> <div tabindex=\\\"-1\\\" class=\\\"path-runner-body recipeEditor-body transition linklist-control path-runner\\\"> <!--ko with: _model--> <ul class=\\\"group-item tree\\\"> <!-- ko foreach: _nodes --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </ul> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<li> <!-- ko if: _children.length > 0 --> <ul> <!-- ko foreach: _children--> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> </ul> <!-- /ko --> </li>\";\n// Exports\nexport default code;","//Units\r\nimport { RecipeEditorTreeUnit } from \"Core/Controls/RecipeEditor/RecipeEditorTree/RecipeEditorTreeUnit\";\r\n\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\nexport class RecipeEditorTree {\r\n private static _instance: RecipeEditorTree;\r\n private static _initialized: boolean;\r\n\r\n private _entityToUnit: { [enityId: number]: RecipeEditorTreeUnit };\r\n\r\n constructor() {\r\n if (RecipeEditorTree._initialized) {\r\n throw new Error(\"Path runner already initialized\");\r\n }\r\n\r\n RecipeEditorTree._initialized = true;\r\n this._entityToUnit = {};\r\n }\r\n\r\n static get Instance() {\r\n if (RecipeEditorTree._instance) {\r\n return RecipeEditorTree._instance;\r\n }\r\n\r\n RecipeEditorTree._instance = new RecipeEditorTree();\r\n\r\n return RecipeEditorTree._instance;\r\n }\r\n\r\n GetUnit(entityId: number, controlId: number, typesProperty: ITypePropertyModel[]) {\r\n let unit = this._entityToUnit[entityId];\r\n\r\n if (!unit) {\r\n unit = new RecipeEditorTreeUnit(entityId, controlId, typesProperty);\r\n this._entityToUnit[entityId] = unit;\r\n }\r\n\r\n return unit;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"currency-dropdown-wrapper\\\"> <!-- ko foreach: $data._availableRecipeVersions --> <div class=\\\"recipe-editor-version-item\\\" data-bind=\\\"css: {chosen: IsSelected, disabled: IsSelected, active: IsActive}\\\"> <a data-bind=\\\"click: $parent.OnSelectVersion.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> <i data-bind=\\\"visible: IsActive\\\" class=\\\"fa fa-check\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: VersionName --><!-- /ko --> </a> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","//Common\r\nimport * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from \"underscore\";\r\nimport 'tree';\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {CONFIRMATIONS, LABELS} from \"../../Components/Translation/Locales\";\r\nimport {IControlParam} from \"../../Screens/IScreen\";\r\nimport {RecipeDataModel} from \"./Models/RecipeDataModel\";\r\nimport {GetRecipeDataDto} from \"./Models/Dto/GetRecipeDataDto\";\r\nimport {RecipeEditorStore} from \"./Stores/RecipeEditorStore\";\r\nimport {IGetNewDataParams, RecipeEditorTreeUnit} from \"Core/Controls/RecipeEditor/RecipeEditorTree/RecipeEditorTreeUnit\";\r\nimport {RecipeRecordModel} from \"Core/Controls/RecipeEditor/RecipeEditorTree/Response/RecipeRecordModel\";\r\nimport {RecipeEditorTree} from \"./RecipeEditorTree/RecipeEditorTree\";\r\nimport {RecipeVersionModel} from \"./Models/RecipeVersionModel\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {IRecipeEditorCreateParams, RecipeEditorCreate} from \"Core/Controls/RecipeEditor/RecipeEditorCreate\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {DeleteRecipeVersionDto} from \"./Models/Dto/DeleteRecipeVersionDto\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {GetRecipeDataByVersionDto} from \"./Models/Dto/GetRecipeDataByVersionDto\";\r\nimport {SaveRecipeDataDto} from \"Core/Controls/RecipeEditor/Models/Dto/SaveRecipeDataDto\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\n\r\nimport RecipeEdit from \"Core/Controls/RecipeEditor/Templates/RecipeEdit.html\";\r\nimport RecipeVersionDropdownTemplate from \"Core/Controls/RecipeEditor/Templates/RecipeVersionDropdownTemplate.html\";\r\nko.templates[\"Core/Controls/RecipeEditor/Templates/RecipeVersionDropdownTemplate\"] = RecipeVersionDropdownTemplate;\r\nko.templates[\"Core/Controls/RecipeEditor/Templates/RecipeEdit\"] = RecipeEdit;\r\n\r\ninterface IActiveVersionType {\r\n Title: string;\r\n IsDisabled: boolean;\r\n IsChosen?: boolean;\r\n ActiveVersionId?: boolean;\r\n}\r\n\r\nconst TOGGLE_CLASSES = {\r\n ON: 'fa-toggle-on',\r\n OFF: 'fa-toggle-off'\r\n}\r\n\r\nexport interface IRecipeEditorTreeParams {\r\n RecordId: number,\r\n RecipeVersions: KnockoutObservableArray<RecipeVersionModel>,\r\n RecipeDataModel?: RecipeDataModel\r\n}\r\n\r\nexport interface IRecipeEditorEditParams {\r\n RecordId: number;\r\n EntityId: number;\r\n ControlId: number;\r\n IsAddingAllowed: boolean;\r\n IsEditingAllowed: boolean;\r\n IsDeletingAllowed: boolean;\r\n TypesProperty?: ITypePropertyModel[];\r\n}\r\n\r\nexport class RecipeEditorEdit extends Event {\r\n _labels = LABELS;\r\n private _modal: Modal;\r\n private _recordId: number;\r\n private _entityId: number;\r\n private _controlId: number;\r\n private _isAddingAllowed: boolean;\r\n private _isEditingAllowed: boolean;\r\n private _isDeletingAllowed: boolean;\r\n private _recipeDataModel: RecipeDataModel;\r\n private _recipeEditorTree: KnockoutObservable<RecipeEditorTreeUnit>\r\n private _recipeEditorCreate: KnockoutObservable<RecipeEditorCreate>;\r\n private _dropDown: JBoxDropDown;\r\n private _availableRecipeVersions: KnockoutObservableArray<RecipeVersionModel>;\r\n private _selectedRecipeVersion: KnockoutObservable<RecipeVersionModel>;\r\n private _toggleActiveVersionTypes: KnockoutObservableArray<IActiveVersionType>;\r\n private _toggleActiveVersionType: KnockoutObservable<IActiveVersionType>;\r\n private _activeVersionToggleClass: KnockoutComputed<string>;\r\n private _newVersionActive: KnockoutObservable<boolean>;\r\n private _typesProperty: ITypePropertyModel[];\r\n\r\n constructor(params: IRecipeEditorEditParams) {\r\n super();\r\n this._recordId = params.RecordId;\r\n this._entityId = params.EntityId;\r\n this._controlId = params.ControlId;\r\n this._isAddingAllowed = params.IsAddingAllowed;\r\n this._isEditingAllowed = params.IsEditingAllowed;\r\n this._isDeletingAllowed = params.IsDeletingAllowed;\r\n this._recipeDataModel = null;\r\n this._recipeEditorTree = ko.observable(null);\r\n this._recipeEditorCreate = ko.observable(null);\r\n this._availableRecipeVersions = ko.observableArray([]);\r\n this._selectedRecipeVersion = ko.observable(null);\r\n this._newVersionActive = ko.observable(false);\r\n this._typesProperty = params.TypesProperty ? params.TypesProperty : null;\r\n this.AddEvent(\"RECIPE_EDITOR_EDIT_CLOSE\");\r\n this.GetRecipeDataModel();\r\n\r\n }\r\n\r\n GetRecipeDataModel(){\r\n this._recipeEditorTree = ko.observable(RecipeEditorTree.Instance.GetUnit(this._entityId, this._controlId, this._typesProperty));\r\n\r\n const getRecipeDataParams: GetRecipeDataDto = {\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n\r\n RecipeEditorStore.GetRecipeData(getRecipeDataParams)\r\n .then((result: RecipeDataModel) => {\r\n this._recipeDataModel = result;\r\n this._recipeDataModel.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n\r\n const defaultRecipeVersion = _.find(result.RecipeVersions, (version: RecipeVersionModel) => version.IsActive);\r\n _.forEach(result.RecipeVersions, (version: RecipeVersionModel)=>{\r\n this._availableRecipeVersions.push({\r\n VersionId: version.VersionId,\r\n VersionName: version.VersionName,\r\n IsActive: version.IsActive,\r\n IsSelected: ko.observable(version.VersionId === defaultRecipeVersion.VersionId)\r\n })\r\n })\r\n if (defaultRecipeVersion){\r\n this._selectedRecipeVersion({\r\n VersionId: defaultRecipeVersion.VersionId,\r\n VersionName: defaultRecipeVersion.VersionName,\r\n IsActive: defaultRecipeVersion.IsActive,\r\n IsSelected: ko.observable(true)\r\n })\r\n this.InitToggleActiveVersionMod();\r\n }\r\n this.ShowInModal();\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: this._recipeDataModel\r\n }\r\n this.LoadRecipeEditorTree(params);\r\n\r\n })\r\n .fail(() => {\r\n this.DataLoadFailed.bind(this)\r\n });\r\n }\r\n\r\n MapRecord(result: RecipeRecordModel, typesProperty: ITypePropertyModel[]): RecipeRecordModel {\r\n if (!result) {\r\n return null;\r\n }\r\n let recordModel = new RecipeRecordModel();\r\n recordModel.Id = result.Id;\r\n recordModel.Name = result.Name;\r\n recordModel.NameTranslation = result.NameTranslation;\r\n recordModel.TypeId = result.TypeId;\r\n recordModel.TypeName = result.TypeName;\r\n recordModel.TypeNameTranslation = result.TypeNameTranslation;\r\n recordModel.LifeStatusId = result.LifeStatusId;\r\n recordModel.LifeStatusName = result.LifeStatusName;\r\n recordModel.LifeStatusGroup = result.LifeStatusGroup;\r\n recordModel.IsLocked = result.IsLocked;\r\n recordModel.HasChildren = result.HasChildren;\r\n if (!!typesProperty && !!typesProperty.length){\r\n _.each(typesProperty, (type:ITypePropertyModel)=>{\r\n if (type.TypeId === result.TypeId){\r\n recordModel.TypeColor = type.TypeColor\r\n }\r\n })\r\n }\r\n recordModel.Children = result.Children.map(childRecord => this.MapRecord(childRecord, typesProperty));\r\n\r\n return recordModel;\r\n }\r\n\r\n private DataLoadFailed(error: any): void {\r\n new Notifier().Failed(error.message);\r\n }\r\n\r\n GetValue() {\r\n let versionValue: RecipeVersionModel = {\r\n VersionId: this._selectedRecipeVersion().VersionId,\r\n VersionName: this._selectedRecipeVersion().VersionName,\r\n IsActive: this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive,\r\n IsSelected: ko.observable(this._selectedRecipeVersion().IsSelected())\r\n }\r\n return versionValue;\r\n }\r\n\r\n ShowInModal(){\r\n let self = this;\r\n let isMobile = MobileChecker.IsMobile();\r\n this._modal = new Modal({\r\n addClass: 'recipeEditorEditModal',\r\n width: isMobile ? '90vw' : '60vw',\r\n height: '60vh',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.Close.bind(self, false));\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close(){\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/RecipeEditor/Templates/RecipeEdit';\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n AddVersion(){\r\n let recipeEditorCreateParams: IRecipeEditorCreateParams = {\r\n RecordId: this._recordId,\r\n EntityId: this._entityId,\r\n ControlId: this._controlId,\r\n IsRecipeCreated: null,\r\n IsCreateRecipeVersion: true,\r\n IsAddingAllowed: this._isAddingAllowed,\r\n IsEditingAllowed: this._isEditingAllowed,\r\n IsDeletingAllowed: this._isDeletingAllowed,\r\n ICopyRecipeVersion: null,\r\n }\r\n this._recipeEditorCreate(new RecipeEditorCreate(recipeEditorCreateParams));\r\n this._recipeEditorCreate().ShowInModal();\r\n this._recipeEditorCreate().On('RECIPE_EDITOR_VERSION', this, (event)=>{\r\n let recipeDataModel: RecipeDataModel = event.data;\r\n recipeDataModel.RecipeRecord = this.MapRecord(event.data.RecipeRecord, this._typesProperty);\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: recipeDataModel\r\n }\r\n this.Update(params, recipeDataModel.RecipeVersions);\r\n this.SetActiveVersionType_On();\r\n });\r\n }\r\n\r\n CopyVersion(){\r\n let recipeEditorCreateParams: IRecipeEditorCreateParams = {\r\n RecordId: this._recordId,\r\n EntityId: this._entityId,\r\n ControlId: this._controlId,\r\n IsRecipeCreated: null,\r\n IsCreateRecipeVersion: true,\r\n IsAddingAllowed: this._isAddingAllowed,\r\n IsEditingAllowed: this._isEditingAllowed,\r\n IsDeletingAllowed: this._isDeletingAllowed,\r\n ICopyRecipeVersion: {\r\n NewVersionName: `${this._selectedRecipeVersion().VersionName} - copy`,\r\n CopiedVersionId: this._selectedRecipeVersion().VersionId\r\n },\r\n }\r\n if (this._recipeEditorCreate()){\r\n this._recipeEditorCreate = ko.observable(null);\r\n }\r\n this._recipeEditorCreate(new RecipeEditorCreate(recipeEditorCreateParams))\r\n this._recipeEditorCreate().On('COPY_RECIPE_EDITOR_VERSION', this, (event)=>{\r\n let recipeDataModel: RecipeDataModel = event.data;\r\n recipeDataModel.RecipeRecord = this.MapRecord(event.data.RecipeRecord, this._typesProperty);\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: recipeDataModel\r\n }\r\n this.Update(params, recipeDataModel.RecipeVersions);\r\n this.SetActiveVersionType_On();\r\n });\r\n\r\n this._recipeEditorCreate().ShowInModal();\r\n }\r\n\r\n SetActiveVersionType_On() {\r\n if (this._toggleActiveVersionType().Title != 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'On'\r\n }));\r\n }\r\n }\r\n\r\n DeleteVersion(){\r\n let DeleteRecipeVersionParams: DeleteRecipeVersionDto = {\r\n VersionId: this._selectedRecipeVersion().VersionId,\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n const confirmationText = CONFIRMATIONS.ARE_YOU_SURE_YOU_WANT_TO_DELETE_VERSION\r\n .replace('{VersionName}', this._selectedRecipeVersion().VersionName);\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n RecipeEditorStore.DeleteRecipeVersion(DeleteRecipeVersionParams)\r\n .then((result: RecipeDataModel) => {\r\n result.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n if (result.RecipeVersions.length){\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: result\r\n }\r\n this.Update(params, result.RecipeVersions);\r\n this.SetActiveVersionType_On();\r\n } else {\r\n this.Trigger('RECIPE_EDITOR_EDIT_CLOSE');\r\n this.Close();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n });\r\n confirmationDialog.Show();\r\n }\r\n\r\n Update(params: IRecipeEditorTreeParams, recipeVersions: Array<RecipeVersionModel>){\r\n this.SetAvailableRecipeVersions(recipeVersions);\r\n this.LoadRecipeEditorTree(params);\r\n }\r\n\r\n ClickSaveBtn(data, event) {\r\n if (this._newVersionActive()){\r\n\r\n let saveRecipeDataParams: SaveRecipeDataDto = {\r\n ActiveVersionId: this._selectedRecipeVersion().VersionId,\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n\r\n BlockUI.Block({Target: event.currentTarget});\r\n RecipeEditorStore.SaveRecipeData(saveRecipeDataParams)\r\n .then((result: RecipeDataModel) => {\r\n result.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n if (result.RecipeVersions){\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: result\r\n }\r\n this.Update(params, result.RecipeVersions);\r\n this._newVersionActive(false);\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock(event.currentTarget);\r\n $(event.currentTarget).blur();\r\n });\r\n }\r\n }\r\n\r\n ReturnToDefaultType() {\r\n if (this._toggleActiveVersionType().Title == 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = false;\r\n return type.Title === 'Off'\r\n }));\r\n }\r\n }\r\n\r\n ToggleActiveVersion(){\r\n if (!this._isEditingAllowed || (this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive)){\r\n return;\r\n }\r\n\r\n if (this._toggleActiveVersionType().Title != 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'On'\r\n }));\r\n return;\r\n } else if (this._toggleActiveVersionType().Title == 'On'){\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'Off'\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n InitToggleActiveVersionMod(){\r\n this._toggleActiveVersionTypes = ko.observableArray([\r\n {Title: 'Off', IsDisabled: false, IsChosen: false},\r\n {Title: 'On', IsDisabled: true, IsChosen: false}\r\n ]);\r\n\r\n this._toggleActiveVersionType = ko.observable(_.last(_.filter(this._toggleActiveVersionTypes(), activeVersionType => activeVersionType.IsDisabled)));\r\n\r\n this._activeVersionToggleClass = ko.computed(() =>{\r\n let toggleClass = (this._toggleActiveVersionType() && !this._toggleActiveVersionType().IsDisabled) && this._toggleActiveVersionType().Title === 'Off' ? TOGGLE_CLASSES.OFF : TOGGLE_CLASSES.ON;\r\n\r\n if (this._selectedRecipeVersion() && !this._selectedRecipeVersion().IsActive){\r\n\r\n if (this._toggleActiveVersionType().Title === 'On') {\r\n this._newVersionActive(true);\r\n } else {\r\n this._newVersionActive(false);\r\n }\r\n } else if (this._toggleActiveVersionType().Title === 'On'){\r\n this._newVersionActive(false);\r\n }\r\n\r\n return toggleClass;\r\n });\r\n }\r\n\r\n OnSelectVersion(version: RecipeVersionModel){\r\n if (version.IsSelected()){\r\n return;\r\n }\r\n\r\n if (this.IsModified()){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ALL_CHANGES_WILL_BE_LOST,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n this.SelectVersion(version);\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.DISCARD_SELECTED, this, () => {\r\n return;\r\n });\r\n confirmationDialog.Show();\r\n } else {\r\n this.SelectVersion(version)\r\n }\r\n }\r\n\r\n SelectVersion(version: RecipeVersionModel) {\r\n _.forEach(this._availableRecipeVersions(), (data: RecipeVersionModel)=>{\r\n if (version.VersionId === data.VersionId){\r\n data.IsSelected(true)\r\n } else {\r\n data.IsSelected(false);\r\n }\r\n })\r\n\r\n let GetRecipeDataByVersionParams: GetRecipeDataByVersionDto ={\r\n VersionId: version.VersionId,\r\n RootEntityId: this._entityId,\r\n RootRecordId: this._recordId,\r\n ControlId: this._controlId\r\n }\r\n RecipeEditorStore.GetRecipeDataByVersion(GetRecipeDataByVersionParams)\r\n .then((result: RecipeDataModel) => {\r\n if (result.RecipeVersions){\r\n result.RecipeRecord = this.MapRecord(result.RecipeRecord, this._typesProperty);\r\n if (version.IsActive){\r\n this._selectedRecipeVersion(version);\r\n this._toggleActiveVersionType(_.find(this._toggleActiveVersionTypes(), (type) => {\r\n type.IsChosen = false;\r\n return type.Title === 'On'\r\n }));\r\n this._newVersionActive(false);\r\n } else {\r\n this.ReturnToDefaultType();\r\n this._selectedRecipeVersion(version);\r\n }\r\n\r\n let params: IRecipeEditorTreeParams = {\r\n RecordId: null,\r\n RecipeVersions: null,\r\n RecipeDataModel: result\r\n }\r\n\r\n this.LoadRecipeEditorTree(params);\r\n this._dropDown.Close();\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n }\r\n\r\n private InitRecipeVersionDropdown(el: HTMLElement) {\r\n this._dropDown = new JBoxDropDown({\r\n target: el,\r\n bindTarget: el,\r\n bindComponent: this,\r\n otherOptions: {\r\n addClass: \"recipeVersion-dropdown\",\r\n closeOnClick: 'body',\r\n attach: undefined,\r\n height: 'auto',\r\n maxHeight: 300,\r\n isolateScroll: true,\r\n pointer: \"\",\r\n maxWidth: 400,\r\n onCloseComplete: () => {},\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n }\r\n },\r\n onCreated: () => {\r\n this._dropDown.SetContent({ content: RecipeVersionDropdownTemplate as any });\r\n },\r\n onOpen: () => {}\r\n });\r\n }\r\n\r\n SetAvailableRecipeVersions(response: Array<RecipeVersionModel>){\r\n if (!response.length){\r\n return;\r\n }\r\n this._availableRecipeVersions([]);\r\n this._selectedRecipeVersion(null);\r\n const defaultRecipeVersion = _.find(response, (version: RecipeVersionModel) => version.IsActive);\r\n _.forEach(response, (version: RecipeVersionModel)=>{\r\n this._availableRecipeVersions.push({\r\n VersionId: version.VersionId,\r\n VersionName: version.VersionName,\r\n IsActive: version.IsActive,\r\n IsSelected: ko.observable(version.VersionId === defaultRecipeVersion.VersionId)\r\n })\r\n })\r\n\r\n if (defaultRecipeVersion){\r\n this._selectedRecipeVersion({\r\n VersionId: defaultRecipeVersion.VersionId,\r\n VersionName: defaultRecipeVersion.VersionName,\r\n IsActive: defaultRecipeVersion.IsActive,\r\n IsSelected: ko.observable(true)\r\n })\r\n }\r\n }\r\n\r\n ShowAvailableRecipeVersions(data, event){\r\n let target: HTMLElement,\r\n isRecipeVersionDropdownBox = $(event.target).parents('.recipeVersionDropdownBox').length > 0;\r\n\r\n target = isRecipeVersionDropdownBox ? $(event.target).parents('.recipeVersionDropdownBox')[0] : event.currentTarget;\r\n\r\n if (!this._availableRecipeVersions().length){\r\n this.InitRecipeVersionDropdown(target);\r\n this._dropDown.Open();\r\n } else {\r\n if (this._dropDown) {\r\n this._dropDown.Toggle();\r\n } else {\r\n this.InitRecipeVersionDropdown(target);\r\n this._dropDown.Open();\r\n }\r\n }\r\n }\r\n\r\n private LoadRecipeEditorTree(params: IRecipeEditorTreeParams) {\r\n\r\n if (!this._recipeEditorTree()) {\r\n return P.resolve(null);\r\n }\r\n\r\n let getNewDataParams: IGetNewDataParams = {\r\n recipeDataModel: params.RecipeDataModel,\r\n recipeSelectedVersion: this._selectedRecipeVersion()\r\n }\r\n\r\n if (params.RecipeDataModel){\r\n return this._recipeEditorTree().GetNewData(getNewDataParams);\r\n } else {\r\n return this._recipeEditorTree().LoadNewData(params.RecordId, params.RecipeVersions);\r\n }\r\n }\r\n\r\n get ActiveVersionTooltipText(): string {\r\n return this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive ? this._labels.CANNOT_MAKE_AN_ACTIVE_VERSION_INACTIVE : '';\r\n }\r\n\r\n get RecipeVersionActive(): boolean {\r\n return !this._isEditingAllowed || (this._selectedRecipeVersion() && this._selectedRecipeVersion().IsActive);\r\n }\r\n\r\n IsModified(): boolean {\r\n return this._newVersionActive();\r\n }\r\n\r\n IsAddingAllowed(): boolean {\r\n return this._isAddingAllowed;\r\n }\r\n\r\n IsCopyingAllowed(): boolean {\r\n return this._isAddingAllowed && this._isEditingAllowed;\r\n }\r\n\r\n IsSavingAllowed(): boolean {\r\n return this._isEditingAllowed && this.IsModified();\r\n }\r\n\r\n IsDeletingAllowed(): boolean {\r\n return this._isDeletingAllowed;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"recipeEditorScreen\\\"> <div class=\\\"screen consult-screen screenForm\\\"> <!-- <b class=\\\"spacerBackground\\\"></b>--> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix consult-screen-container\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left subforms-wrapper\\\"> <div class=\\\"actionBar-Controls\\\"> <div class=\\\"versionsBox\\\"> <a data-bind=\\\"click: AddVersion, css: { disabled: !IsAddingAllowed() }\\\" href=\\\"javascript:;\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp subFormControl addButton\\\" id=\\\"addButton\\\"> <i class=\\\"fa fa-plus-circle\\\"></i><span data-bind=\\\"text: _labels.ADD\\\"></span> </a> <div class=\\\"version\\\" data-bind=\\\"text: 'Version'\\\"></div> <div class=\\\"recipeVersionDropdownBox\\\"> <!-- ko with: _selectedRecipeVersion --> <div class=\\\"form-control textarea-control selectRecipeVersion\\\" data-bind=\\\"text: VersionName\\\"></div> <!-- /ko --> <span class=\\\"btn default recipeVersionDropdownBtn jBox-content-target\\\" data-bind=\\\"click: ShowAvailableRecipeVersions\\\"> <i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <div data-bind=\\\"click: ToggleActiveVersion, css: {'recipeVersion_IsActive': RecipeVersionActive}, tooltip: {content: ActiveVersionTooltipText}\\\" class=\\\"custom-select-j toggleBox allRootBox\\\"> <a data-bind=\\\"\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only u-padding-right-medium toggleActiveVersion-btn\\\"> <i data-bind=\\\"class: _activeVersionToggleClass\\\" class=\\\"fa\\\"></i> </a> <label data-bind=\\\"text: 'Active'\\\" class=\\\"control-label\\\"/> </div> <button data-bind=\\\"click: CopyVersion,\\r\\n enableAttr: IsCopyingAllowed()\\\" type=\\\"button\\\" class=\\\"btn blue-dark subFormControl copyBtn\\\"> <i class=\\\"fa fa-copy\\\"></i><span><!-- ko text: _labels.COPY --><!-- /ko --></span> </button> <a data-bind=\\\"click: ClickSaveBtn, css: { 'disabled': !IsSavingAllowed() }\\\" tabindex=\\\"-1\\\" class=\\\"btn green subFormControl saveButton\\\"> <i class=\\\"fa fa-save\\\"></i><span><!-- ko text: _labels.SAVE --><!-- /ko --></span> </a> </div> </div> </div> <div class=\\\"bar-right\\\"> <div class=\\\"actionBar-Controls\\\"> <a data-bind=\\\"click: DeleteVersion, css: { disabled: !IsDeletingAllowed() }\\\" tabindex=\\\"-1\\\" class=\\\"btn red delete-button subFormControl\\\"> <i class=\\\"fa fa-trash\\\"></i><span data-bind=\\\"text: _labels.DELETE\\\"></span> </a> </div> <div class=\\\"action-bar-right lifestatus-bar-wrapper\\\"> <span class=\\\"text-left additional-icon custom-color-option fa-3x fa fa-indent\\\"></span> </div> </div> </div> </div> </form> </div> <div class=\\\"clearfix middle-block\\\"> <!-- ko with: _recipeEditorTree() --> <!-- ko template: {name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData)} --> <!-- /ko --> <!-- /ko --> <div class=\\\"content-block transition\\\"> <div class=\\\"row form-wrapper\\\"> <div class=\\\"mainSubForm recipeEditorScreen_right_form form-wrapper__main-sub-form fast-transition wrapped-container\\\"> </div> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {CreateRecipeVersionDto} from \"./Models/Dto/CreateRecipeVersionDto\";\r\nimport {RecipeEditorStore} from \"./Stores/RecipeEditorStore\";\r\nimport {IRecipeEditorEditParams, RecipeEditorEdit} from \"./RecipeEditorEdit\";\r\nimport {GetRecipeDataDto} from \"./Models/Dto/GetRecipeDataDto\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {CopyRecipeVersionDto} from \"./Models/Dto/CopyRecipeVersionDto\";\r\nimport {ITypePropertyModel} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {RecipeDataModel} from \"./Models/RecipeDataModel\";\r\n\r\nimport RecipeCreate from \"Core/Controls/RecipeEditor/Templates/RecipeCreate.html\";\r\nko.templates[\"Core/Controls/RecipeEditor/Templates/RecipeCreate\"] = RecipeCreate;\r\n\r\nexport interface ICopyRecipeVersion {\r\n NewVersionName: string;\r\n CopiedVersionId: number;\r\n}\r\n\r\nexport interface IRecipeEditorCreateParams {\r\n RecordId: number;\r\n EntityId: number;\r\n ControlId: number;\r\n IsRecipeCreated: boolean;\r\n IsCreateRecipeVersion: boolean;\r\n IsAddingAllowed: boolean;\r\n IsEditingAllowed: boolean;\r\n IsDeletingAllowed: boolean;\r\n ICopyRecipeVersion: ICopyRecipeVersion;\r\n TypesProperty?: ITypePropertyModel[];\r\n}\r\n\r\nexport class RecipeEditorCreate extends Event {\r\n _labels = LABELS;\r\n private _modal: Modal;\r\n private _isRecipeCreated: KnockoutObservable<boolean>\r\n private _value: KnockoutObservable<string>;\r\n private _recordId: number;\r\n private _entityId: number;\r\n private _controlId: number;\r\n private _recipeEditorEdit: KnockoutObservable<RecipeEditorEdit>\r\n private _isCreateRecipeVersion: boolean;\r\n private _isAddingAllowed: boolean;\r\n private _isEditingAllowed: boolean;\r\n private _isDeletingAllowed: boolean;\r\n private _copyRecipeVersion: ICopyRecipeVersion;\r\n private _typesProperty: ITypePropertyModel[];\r\n\r\n constructor(params: IRecipeEditorCreateParams) {\r\n super();\r\n this._copyRecipeVersion = params.ICopyRecipeVersion;\r\n this._isRecipeCreated = ko.observable(null);\r\n this._value = ko.observable(this._copyRecipeVersion ? this._copyRecipeVersion.NewVersionName: '');\r\n this._recordId = params.RecordId;\r\n this._entityId = params.EntityId;\r\n this._controlId = params.ControlId;\r\n this._recipeEditorEdit = ko.observable(null);\r\n this._isCreateRecipeVersion = params.IsCreateRecipeVersion;\r\n this._isAddingAllowed = params.IsAddingAllowed;\r\n this._isEditingAllowed = params.IsEditingAllowed;\r\n this._isDeletingAllowed = params.IsDeletingAllowed;\r\n this._typesProperty = params.TypesProperty ? params.TypesProperty : null;\r\n this.Init(params.IsRecipeCreated);\r\n this.AddEvent(\"RECIPE_EDITOR_CREATE\");\r\n this.AddEvent(\"RECIPE_EDITOR_VERSION\");\r\n this.AddEvent(\"COPY_RECIPE_EDITOR_VERSION\");\r\n this.AddEvent(\"RECIPE_EDITOR_EDIT_CLOSE\");\r\n }\r\n\r\n Init(isRecipeCreated: boolean) {\r\n this._isRecipeCreated(isRecipeCreated);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/RecipeEditor/Templates/RecipeCreate';\r\n }\r\n\r\n AfterRender(el: HTMLElement): void{\r\n\r\n }\r\n\r\n ShowInModal(){\r\n let self = this;\r\n this._modal = new Modal({\r\n addClass: 'recipeEditorCreateModal',\r\n width: '400px',\r\n height: '167px',\r\n closeOnEsc: false,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.Close.bind(self, false));\r\n }\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close(){\r\n if (this._modal) {\r\n this._modal.Close();\r\n this.Off('RECIPE_EDITOR_CREATE');\r\n }\r\n }\r\n\r\n CreateClick(data, event){\r\n if (this._value().length >= 4){\r\n BlockUI.Block({Target: event.currentTarget});\r\n if (this._copyRecipeVersion){\r\n let copyRecipeParams: CopyRecipeVersionDto = {\r\n NewVersionName: this._value(),\r\n CopiedVersionId: this._copyRecipeVersion.CopiedVersionId,\r\n RootRecordId: this._recordId,\r\n RootEntityId: this._entityId,\r\n ControlId: this._controlId\r\n }\r\n RecipeEditorStore.CopyRecipeVersion(copyRecipeParams)\r\n .always(() => {\r\n BlockUI.Unblock(event.currentTarget);\r\n })\r\n .then((result:RecipeDataModel) => {\r\n this.Trigger('COPY_RECIPE_EDITOR_VERSION', result);\r\n this.Close();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n } else {\r\n let createRecipeParams: CreateRecipeVersionDto = {\r\n VersionName: this._value(),\r\n RootRecordId: this._recordId,\r\n RootEntityId: this._entityId,\r\n ControlId: this._controlId\r\n }\r\n\r\n RecipeEditorStore.CreateRecipeVersion(createRecipeParams)\r\n .always(() => {\r\n BlockUI.Unblock(event.currentTarget);\r\n })\r\n .then((result: RecipeDataModel) => {\r\n let params: IRecipeEditorEditParams = {\r\n EntityId: this._entityId,\r\n RecordId: result.RecipeRecord.Id,\r\n ControlId: this._controlId,\r\n IsAddingAllowed: this._isAddingAllowed,\r\n IsEditingAllowed: this._isEditingAllowed,\r\n IsDeletingAllowed: this._isDeletingAllowed,\r\n TypesProperty: this._typesProperty\r\n }\r\n if (!this._isCreateRecipeVersion){\r\n this._recipeEditorEdit(new RecipeEditorEdit(params));\r\n this._recipeEditorEdit().On('RECIPE_EDITOR_EDIT_CLOSE', this, (handler)=> {\r\n this.Trigger('RECIPE_EDITOR_EDIT_CLOSE');\r\n })\r\n this.Trigger('RECIPE_EDITOR_CREATE');\r\n } else if (this._isCreateRecipeVersion){\r\n this.Trigger('RECIPE_EDITOR_VERSION', result);\r\n }\r\n this.Close();\r\n\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n })\r\n }\r\n } else {\r\n new Notifier().Failed('Minimum length of this field is 4');\r\n }\r\n }\r\n\r\n CancelClick(){\r\n this.Close();\r\n }\r\n}","// Module\nvar code = \"<!--ko ifnot: _isRecipeCreated()--> <div class=\\\"created-new-table box-shadow-wrapper\\\"> <div class=\\\"form-group form-standart-control recipe-input-container\\\" data-control-position=\\\"top\\\"> <label> <span data-bind=\\\"text: _labels.RECIPE_NAME\\\"></span> </label> <input type=\\\"text\\\" class=\\\"form-control recipe-input\\\" data-bind=\\\"textInput: _value\\\"> </div> <div class=\\\"btn-wrapper recipeCreated_buttonsBox\\\"> <button type=\\\"button\\\" data-bind=\\\"click: CreateClick\\\" class=\\\"btn green btn-table-create\\\"><!--ko text: _labels.CREATE--><!--/ko--></button> <button type=\\\"button\\\" data-bind=\\\"click: CancelClick\\\" class=\\\"btn default btn-table-close\\\"><!--ko text: _labels.CANCEL--><!--/ko--></button> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseControl, IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {IRecipeEditorCreateParams, RecipeEditorCreate} from \"Core/Controls/RecipeEditor/RecipeEditorCreate\";\r\nimport {IRecipeEditorEditParams, IRecipeEditorTreeParams, RecipeEditorEdit} from \"./RecipeEditorEdit\";\r\nimport {GetRecipeDataDto} from \"./Models/Dto/GetRecipeDataDto\";\r\nimport {CheckIfRecipeIsCreatedDto} from \"./Models/Dto/CheckIfRecipeIsCreatedDto\";\r\n\r\nimport {RecipeEditorStore} from \"./Stores/RecipeEditorStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport RecipeEditorConfig from 'Core/Controls/RecipeEditor/Config/recipe-editor-config.json';\r\n\r\nimport ViewTemplate from \"Core/Controls/RecipeEditor/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/RecipeEditor/Templates/ToolBar.html\";\r\nimport DesignTemplate from \"Core/Controls/RecipeEditor/Templates/Design.html\";\r\nimport EditTemplate from \"Core/Controls/RecipeEditor/Templates/Edit.html\";\r\nimport HelpViewTemplate from \"Core/Controls/RecipeEditor/Templates/HelpView.html\";\r\nimport {ITypePropertyModel} from \"../../GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport { PROPERTIES } from './Constants';\r\n\r\nko.templates['Core/Controls/RecipeEditor/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/RecipeEditor/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class RecipeEditor extends BaseControl {\r\n _labels = LABELS;\r\n private _iControlParams: IControlParam;\r\n private _isRecipeCreated: KnockoutObservable<boolean>;\r\n private _recipeEditorCreate: KnockoutObservable<RecipeEditorCreate>;\r\n private _recipeEditorEdit: KnockoutObservable<RecipeEditorEdit>;\r\n private _typesProperty: ITypePropertyModel[];\r\n\r\n private _isAddingAllowed: KnockoutObservable<boolean>;\r\n private _isEditingAllowed: KnockoutObservable<boolean>;\r\n private _isDeletingAllowed: KnockoutObservable<boolean>;\r\n private _isButtonEnabled: KnockoutComputed<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, RecipeEditorConfig);\r\n\r\n this._iControlParams = params;\r\n this._isRecipeCreated = ko.observable(null);\r\n this._recipeEditorCreate = ko.observable(null);\r\n this._recipeEditorEdit = ko.observable(null);\r\n\r\n this._isAddingAllowed = ko.observable(false);\r\n this._isEditingAllowed = ko.observable(false);\r\n this._isDeletingAllowed = ko.observable(false);\r\n this._isButtonEnabled = ko.computed(() => this._isRecipeCreated() ? this._isEditingAllowed() : this._isAddingAllowed());\r\n\r\n this.ApplyProperties();\r\n }\r\n\r\n CheckIfRecipeIsCreated(params: CheckIfRecipeIsCreatedDto) {\r\n RecipeEditorStore.CheckIfRecipeIsCreated(params)\r\n .then((result: boolean) => {\r\n this._isRecipeCreated(result);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(JSON.parse(error.message).Message);\r\n });\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (value.Data && value.Data.Rights && value.Data.Rights.IsRecordSecurityOk) {\r\n this._isAddingAllowed(value.Data.Rights.IsAddingRecordAllowed);\r\n this._isEditingAllowed(value.Data.Rights.IsEditingAllowed);\r\n this._isDeletingAllowed(value.Data.Rights.IsDeletingAllowed);\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n const entityId = this.GetForm() && this.GetForm().GetScreen().GetEntityId();\r\n const recordId = this.GetForm() && this.GetForm().GetScreen().GetRecordId();\r\n\r\n if ( (this._renderMode() === RenderModes.View) && (entityId && recordId) ) {\r\n this.CheckIfRecipeIsCreated({\r\n RootEntityId: entityId,\r\n RootRecordId: recordId\r\n });\r\n }\r\n }\r\n\r\n ApplyProperties() {\r\n this._typesProperty = this.GeneralProperties.GetPropertyValue(PROPERTIES.TYPES);\r\n }\r\n\r\n Click(){\r\n if (this._renderMode() === RenderModes.View){\r\n if (this._isRecipeCreated()){\r\n this.Edit();\r\n } else {\r\n this.Create();\r\n }\r\n }\r\n }\r\n\r\n Edit(){\r\n let params: IRecipeEditorEditParams = {\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n RecordId: this.GetForm().GetScreen().GetRecordId(),\r\n ControlId: this.GetControlId(),\r\n IsAddingAllowed: this._isAddingAllowed(),\r\n IsEditingAllowed: this._isEditingAllowed(),\r\n IsDeletingAllowed: this._isDeletingAllowed(),\r\n TypesProperty: this._typesProperty\r\n }\r\n\r\n this._recipeEditorEdit(new RecipeEditorEdit(params));\r\n this._recipeEditorEdit().On('RECIPE_EDITOR_EDIT_CLOSE', this, (handler)=> {\r\n this._isRecipeCreated(false);\r\n })\r\n }\r\n\r\n Create(){\r\n let recipeEditorCreateParams: IRecipeEditorCreateParams = {\r\n RecordId: this.GetForm().GetScreen().GetRecordId(),\r\n EntityId: this.GetForm().GetScreen().GetEntityId(),\r\n ControlId: this.GetControlId(),\r\n IsRecipeCreated: this._isRecipeCreated(),\r\n IsCreateRecipeVersion: null,\r\n IsAddingAllowed: this._isAddingAllowed(),\r\n IsEditingAllowed: this._isEditingAllowed(),\r\n IsDeletingAllowed: this._isDeletingAllowed(),\r\n ICopyRecipeVersion: null,\r\n TypesProperty: this._typesProperty\r\n }\r\n\r\n this._recipeEditorCreate(new RecipeEditorCreate(recipeEditorCreateParams));\r\n this._recipeEditorCreate().ShowInModal();\r\n this._recipeEditorCreate().On('RECIPE_EDITOR_CREATE', this, (handler)=>{\r\n this._isRecipeCreated(true);\r\n });\r\n this._recipeEditorCreate().On('RECIPE_EDITOR_EDIT_CLOSE', this, (handler)=>{\r\n this._isRecipeCreated(false);\r\n })\r\n }\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: { disabled: !_isButtonEnabled() }\\\" class=\\\"btn blue-dark subFormControl list-screen-button\\\"> <!--ko if: _isRecipeCreated() --> <i class=\\\"fa fa-edit\\\"></i> <span><!-- ko text: _labels.EDIT --><!-- /ko --></span> <!--/ko--> <!--ko ifnot: _isRecipeCreated() --> <i class=\\\"fa fa-plus-circle\\\"></i> <span><!-- ko text: _labels.ADD --><!-- /ko --></span> <!--/ko--> <i class=\\\"fa fa-indent\\\" aria-hidden=\\\"true\\\"></i> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"recipeEditor-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-indent\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a class=\\\"btn subFormControl recipeEditorBtn\\\" data-bind=\\\"click: Click\\\"> <span class=\\\"\\\"> <i class=\\\"fa fa-indent\\\"></i> <!--ko text: Label--><!--/ko--> </span> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"edit Template\";\n// Exports\nexport default code;","// Module\nvar code = \"Help Template\";\n// Exports\nexport default code;","export const PROPERTIES = {\r\n LOCKED_LINK_ENTITY: 'LockedLinkEntity',\r\n TYPES: 'Types'\r\n};","import {P} from \"Core/Common/Promise\";\r\nimport { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\n\r\nexport class RecordSecurityStore {\r\n\tstatic GetRecordSecurityScreen(securityProfileId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tRequest.Send({\r\n\t\t\t\tproxy: {\r\n\t\t\t\t\turl: '/api/RecordSecurityApi/GetRecordSecurityScreen',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\ttype: 'GET'\r\n\t\t\t\t},\r\n\t\t\t\tparams: { id: securityProfileId }\r\n\t\t}).then(result => deferredResult.resolve(result));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic ResetSecurity(securityProfileId: number): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/RecordSecurityApi/ResetSecurity\",\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t}, params: { id: securityProfileId }\r\n\t\t}).then(result => {\r\n\t\t\tif (result.IsSuccessfull) {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t} else {\r\n\t\t\t\tdeferredResult.reject({ message: result.ErrorMessage });\r\n\t\t\t}\r\n\t\t})\r\n\t\t\t.fail(() => deferredResult.reject({ message: \"Error reseting security\" }))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic ReserveGroup(profileId: number, groupId: number): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer();\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tRequest.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/RecordSecurityApi/ReserveGroup\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: { ProfileId: profileId, GroupId: groupId }\r\n\t\t}).then(result => {\r\n\t\t\t\tdeferredResult.resolve(null);\r\n\t\t})\r\n\t\t.fail((data) => {\r\n\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t})\r\n\t\t.always(() => BlockUI.Unblock());\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<input data-bind=\\\"click: $data.ShowSearchHelp.bind($data), hasFocus: _hasFocus, enterKey: EnterKey, textInput: _value, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" tabindex=\\\"1\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Click.bind($data)\\\" tabindex=\\\"-1\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {RenderModes} from 'Core/Constant';\r\nimport {GeneralProperties} from \"Core/GeneralProperties/GeneralProperties\";\r\nimport SearchConfig from 'Core/Controls/Search/Configs/text-search-term-config.json';\r\n\r\nimport ViewTemplate from \"Core/Controls/Search/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Search/Templates/HelpView.html\";\r\nimport DesignTemplate from \"Core/Controls/Search/Templates/Design.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Search/Templates/ToolBar.html\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nko.templates[\"Core/Controls/Search/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/Edit\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/Search/Templates/ToolBar\"] = ToolBarTemplate;\r\n\r\nexport class Search extends BaseControl {\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _hasFocus: KnockoutObservable<boolean>;\r\n\tprivate _conditions: QueryConditionGroupModel;\r\n\tprivate _alternativeEntities: number[];\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, SearchConfig);\r\n\t\tthis._value = ko.observable('');\r\n\t\tthis._hasFocus = ko.observable(false);\r\n\t\tthis._conditions = null;\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\tthis._hasFocus(!isMobile);\r\n\t}\r\n\tprivate ShowSearch() {\r\n\t\tvar screen = this._form.GetScreen();\r\n\t\tif (screen) {\r\n\t\t\tscreen.Trigger('SEARCH_RECORD');\r\n\t\t}\r\n\t}\r\n\r\n\tShowSearchHelp() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t}\r\n\t}\r\n\r\n\tEnterKey() {\r\n\t\tthis.ShowSearch();\r\n\t}\r\n\r\n\tClick() {\r\n\t\tif (this._renderMode() !== RenderModes.Design && this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ShowSearch();\r\n\t}\r\n\r\n\tSetSearchTerm(value) {\r\n\t\tthis._value(value);\r\n\t}\r\n\r\n\tGetValue(): string {\r\n\t\treturn this._value();\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\t\t\t//Condition\r\n\t\t\tif (this.Properties.Condition) {\r\n\t\t\t\t_.each(this.Properties.Condition.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.QueryCondition) {\r\n\t\t\t\t\t\tlet jsonObj = JSON.parse(property.QueryCondition);\r\n\t\t\t\t\t\tlet conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n\t\t\t\t\t\tthis._conditions = conditions;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t//AlternativeEntities\r\n\t\t\tif (this.Properties.AlternativeEntities) {\r\n\t\t\t\t_.each(this.Properties.AlternativeEntities.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.AlternativeEntities) {\r\n\t\t\t\t\t\tthis._alternativeEntities = property.AlternativeEntities;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tHasConditions(): boolean {\r\n\t\tif (this._conditions) {\r\n\t\t\treturn this._conditions.ConditionGroups.length > 0 || this._conditions.Items.length > 0;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"search-control\\\"> <input data-bind=\\\"attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" disabled=\\\"disabled\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"search-input typeahead input-medium subFormControl\\\"> <a data-bind=\\\"click: $data.Click.bind($data)\\\" tabindex=\\\"-1\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<input data-bind=\\\"hasFocus: _hasFocus, attr: { placeholder: _labels.SEARCH_WITH_DOTS }\\\" type=\\\"text\\\" class=\\\"search-input subFormControl\\\"> <a class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-search\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","import { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { SelectUserModel } from \"Core/Controls/SelectUser/Models/SelectUserModel\";\r\nimport { SelectUserByBusinessRoleModel } from \"Core/Controls/SelectUser/Models/SelectUserByBusinessRoleModel\";\r\n\r\nexport class SelectUserStore {\r\n\tstatic GetSelectUserModel(entityId: number): P.Promise<SelectUserModel> {\r\n\t\tconst requestOptions: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/ControlsApi/GetSelectUserList\",\r\n\t\t\t\ttype: \"GET\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},params: {\r\n\t\t\t\tid: entityId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst deffered = P.defer<SelectUserModel>();\r\n\r\n\t\tRequest.Send(requestOptions)\r\n\t\t\t.then(response => {\r\n\t\t\t\tif (response.IsSuccessfull) {\r\n\t\t\t\t\tconst model = response.ResultObject;\r\n\t\t\t\t\tdeffered.resolve(model);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeffered.reject({ message: response.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail(() => deffered.reject({ message: \"Error getting data\" }));\r\n\t\treturn deffered.promise();\r\n\t}\r\n\r\n\tstatic GetSelectUsersByBusinessRole(entityId: number, roleId: number): P.Promise<SelectUserByBusinessRoleModel> {\r\n\t\tconst requestOptions: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/ControlsApi/GetSelectUsersByBusinessRole\",\r\n\t\t\t\ttype: \"POST\",\r\n\t\t\t\tdataType: \"json\"\r\n\t\t\t},params: {\r\n\t\t\t\tEntityId: entityId,\r\n\t\t\t\tRoleId: roleId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst deferred = P.defer<SelectUserByBusinessRoleModel>();\r\n\r\n\t\tRequest.Send(requestOptions)\r\n\t\t\t.then(selectUserByBusinessRoleModel => {\r\n\t\t\t\tdeferred.resolve(selectUserByBusinessRoleModel);\r\n\t\t\t}).fail(err => {\r\n\t\t\t\tdeferred.reject(this.GetResponseError(err, 'Error getting data'));\r\n\t\t\t});\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n\r\n\tprivate static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n\t\tif (err.status === 400) {\r\n\t\t\treturn {message: JSON.parse(err.message).Message};\r\n\t\t}\r\n\r\n\t\treturn {message: generalError};\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nexport interface IAssignSpimCopyClassRequestModel {\r\n ClassFeaturesTableId: number;\r\n ProductFeaturesTableId: number;\r\n ProductId: number;\r\n ClassId: number;\r\n}\r\n\r\nexport interface IUpdateVersionRequestModel {\r\n ClassFeaturesTableId: number;\r\n ProductFeaturesTableId: number;\r\n ProductId: number;\r\n ClassId: number;\r\n}\r\n\r\nexport class SpimCopyStore {\r\n static GetClass(params: {ClassFeaturesTableId: number, ProductsEntityId: number, ProductId: number}): P.Promise<any> {\r\n const deferred = P.defer<any>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CONTROLS.SPIM_COPY.GET_CLASS,\r\n dataType: \"json\",\r\n type: \"GET\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(spimClass => deferred.resolve(spimClass))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error getting class\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static AssignClass(params: IAssignSpimCopyClassRequestModel): P.Promise<void> {\r\n const deferred = P.defer<void>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CONTROLS.SPIM_COPY.ASSIGN_CLASS,\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error assigning class\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static UpdateVersion(params: IUpdateVersionRequestModel): P.Promise<void> {\r\n const deferred = P.defer<void>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.CONTROLS.SPIM_COPY.UPDATE_VERSION,\r\n type: \"POST\"\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferred.resolve(null))\r\n .fail(err => deferred.reject(this.GetResponseError(err, \"Error updating version\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError, status:err.status};\r\n }\r\n\r\n}","import * as ko from 'knockout';\r\n\r\nexport class SPIMCopyControlModel {\r\n IsDefaultState: KnockoutObservable<boolean>;\r\n UpdateAvailable: KnockoutObservable<boolean>;\r\n EtimLabel: KnockoutObservable<string>;\r\n CurrentVersionNumber: KnockoutObservable<number>;\r\n\r\n constructor() {\r\n this.IsDefaultState = ko.observable(false);\r\n this.UpdateAvailable = ko.observable(false);\r\n this.EtimLabel = ko.observable('');\r\n this.CurrentVersionNumber = ko.observable(null);\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES, RenderModes, TABLE_TYPES} from \"Core/Constant\";\r\n\r\n//Controls\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {SpimCopyStore} from \"Core/Controls/SpimCopy/Stores/SPIMCopyStore\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {Grid} from \"Core/Controls/Grid/Grid\";\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport ViewTemplate from \"Core/Controls/SpimCopy/Templates/View.html\";\r\nimport HelpViewTemplate from \"Core/Controls/SpimCopy/Templates/HelpView.html\";\r\nimport ToolBarTemplate from \"Core/Controls/SpimCopy/Templates/ToolBar.html\";\r\n\r\nimport { SPIMCopyControlModel } from 'Core/Controls/SpimCopy/Models/SPIMCopyControlModel';\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nko.templates['Core/Controls/SPIMCopy/Templates/Design'] = ComplexControl.designTemplate;\r\nko.templates['Core/Controls/SPIMCopy/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/SPIMCopy/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/SPIMCopy/Templates/View'] = ViewTemplate;\r\n\r\nexport class SPIMCopy extends ComplexControl {\r\n protected _labels = LABELS;\r\n private _selectedClassId: number;\r\n private _viewModel: SPIMCopyControlModel;\r\n constructor(params: IControlParam) {\r\n super(params);\r\n this._selectedClassId = null;\r\n this._viewModel = new SPIMCopyControlModel();\r\n\r\n this.Init();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n Init() {\r\n this._requiredFields([\r\n new RequiredFieldModel('F_FEATURE', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_UNIT', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_FEATURETYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null)\r\n ]);\r\n\r\n this.InitRequiredFields();\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.Design) {\r\n if(this._isRendered()) {\r\n this.LoadClass();\r\n } else {\r\n this._isRendered.subscribe(() => this.LoadClass());\r\n }\r\n }\r\n }\r\n\r\n FillViewModel(data) {\r\n this._viewModel.EtimLabel(`${data.EtimCode} - ${data.Name}`);\r\n this._viewModel.CurrentVersionNumber(data.CurentVersionNumber);\r\n this._viewModel.UpdateAvailable(data.NewVersionNumber);\r\n const grid = this._parentControl as Grid;\r\n grid.LoadData();\r\n }\r\n\r\n LoadClass() {\r\n BlockUI.Block();\r\n const params = {\r\n ClassFeaturesTableId: this.FieldModel.EntityId,\r\n ProductsEntityId: this.GetForm().GetScreen().GetEntityId(),\r\n ProductId: this.GetForm().GetScreen().GetRecordId()\r\n };\r\n SpimCopyStore.GetClass(params).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n this._viewModel.IsDefaultState(false);\r\n this._selectedClassId = data.Id;\r\n this.FillViewModel(data);\r\n })\r\n .fail(error => {\r\n this._viewModel.IsDefaultState(true);\r\n if(error.status !== 404) {\r\n new Notifier().Failed(error.message);\r\n }\r\n });\r\n }\r\n\r\n AssignClass(recordId) {\r\n BlockUI.Block();\r\n const params = {\r\n ClassFeaturesTableId: this.FieldModel.EntityId,\r\n ProductFeaturesTableId: this._parentControl.GetFieldModel().EntityId,\r\n ProductId: this.GetForm().GetScreen().GetRecordId(),\r\n ClassId: recordId\r\n };\r\n SpimCopyStore.AssignClass(params).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.LoadClass();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n private SendUpdateVersionRequest() {\r\n BlockUI.Block();\r\n const params = {\r\n ClassFeaturesTableId: this.FieldModel.EntityId,\r\n ProductFeaturesTableId: this._parentControl.GetFieldModel().EntityId,\r\n ProductId: this.GetForm().GetScreen().GetRecordId(),\r\n ClassId: this._selectedClassId\r\n };\r\n SpimCopyStore.UpdateVersion(params).always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.LoadClass();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n UpdateVersion() {\r\n if(this._viewModel.UpdateAvailable()) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_SURE_TO_UPDATE_VERSION,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n this.SendUpdateVersionRequest();\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n Search(): void {\r\n const searchScreen = new SearchScreen({\r\n EntityName: 'SYS_THESAURI',\r\n SearchTerm: '',\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n if(eventArgs.data.TypeName !== 'Class') {\r\n new Notifier().Warning(this._labels.CLASS_RECORD_SHOULD_BE_SELECTED);\r\n return;\r\n }\r\n var recordId = eventArgs.data.RecordId;\r\n if(this._selectedClassId) {\r\n this._selectedClassId = recordId;\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.ARE_SURE_TO_CHANGE_CLASS,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n searchScreen.Close();\r\n this.AssignClass(recordId);\r\n });\r\n confirmationDialog.Show();\r\n } else {\r\n this._selectedClassId = recordId;\r\n searchScreen.Close();\r\n this.AssignClass(recordId);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-clipboard\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"spimCopy-wrapper\\\"> <span class=\\\"not-selected\\\"><!-- ko text: $parent._labels.CLASS_NOT_SELECTED --><!-- /ko --></span> <a data-bind=\\\"click: $parent.Search.bind($parent,true)\\\" href=\\\"#\\\" class=\\\"btn blue-sharp\\\"> <!-- ko text: $parent._labels.SEARCH --><!-- /ko --> </a> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko with: _viewModel--> <div class=\\\"spimCopy-wrapper\\\"> <!-- ko if: IsDefaultState --> <span class=\\\"not-selected\\\"><!-- ko text: $parent._labels.CLASS_NOT_SELECTED --><!-- /ko --></span> <a data-bind=\\\"click: $parent.Search.bind($parent,true)\\\" href=\\\"#\\\" class=\\\"btn blue-sharp\\\"> <!-- ko text: $parent._labels.SEARCH --><!-- /ko --> </a> <!-- /ko --> <!-- ko ifnot: IsDefaultState --> <div class=\\\"class-wrapper\\\"> <span data-bind=\\\"text: EtimLabel\\\"></span> </div> <a class=\\\"currentVersionNumber btn\\\" data-bind=\\\"text: CurrentVersionNumber, click: $parent.UpdateVersion.bind($parent),\\r\\n css: {'red': UpdateAvailable, 'green-soft': !UpdateAvailable()},\\r\\n attr: {disabled: !UpdateAvailable}\\\" href=\\\"#\\\"> </a> <a data-bind=\\\"click: $parent.Search.bind($parent)\\\" href=\\\"#\\\" class=\\\"btn orange change margin-l-5px\\\"> <!-- ko text: $parent._labels.CHANGE --><!-- /ko --> </a> <!-- /ko --> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpreadsheetFieldDescriptorDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserialize\r\n ValTableName?: string;\r\n\r\n @deserialize\r\n ValFieldName?: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpreadsheetCellPositionDto {\r\n @deserialize\r\n Column: string;\r\n\r\n @deserialize\r\n Row: number;\r\n}\r\n","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetCellPositionDto} from './SpreadsheetCellPositionDto';\r\nimport {SpreadsheetDimensionDirections} from '../../Enums/SpreadsheetDimensionDirections';\r\nimport {SpreadsheetFieldDescriptorDto} from './SpreadsheetFieldDescriptorDto';\r\n\r\nexport class SpreadsheetDimensionDescriptorDto {\r\n @deserialize\r\n Number: number;\r\n\r\n @deserializeAs(SpreadsheetCellPositionDto)\r\n StartPosition: SpreadsheetCellPositionDto;\r\n\r\n @deserialize\r\n Direction: SpreadsheetDimensionDirections;\r\n\r\n @deserializeAs(SpreadsheetFieldDescriptorDto)\r\n Field: SpreadsheetFieldDescriptorDto;\r\n}","import {deserialize, deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetFieldDescriptorDto} from './SpreadsheetFieldDescriptorDto';\r\nimport {SpreadsheetCellPositionDto} from './SpreadsheetCellPositionDto';\r\nimport {SpreadsheetDimensionDescriptorDto} from './SpreadsheetDimensionDescriptorDto';\r\n\r\nexport class SpreadsheetDescriptorDto {\r\n @deserializeAs(SpreadsheetFieldDescriptorDto)\r\n ValueField: SpreadsheetFieldDescriptorDto;\r\n\r\n @deserializeAs(SpreadsheetFieldDescriptorDto)\r\n PageField: SpreadsheetFieldDescriptorDto;\r\n\r\n @deserializeAs(SpreadsheetCellPositionDto)\r\n Origin: SpreadsheetCellPositionDto;\r\n\r\n @deserializeAs(SpreadsheetDimensionDescriptorDto)\r\n Dimensions: SpreadsheetDimensionDescriptorDto[];\r\n\r\n @deserialize\r\n IsView: boolean;\r\n\r\n constructor() {\r\n this.Dimensions = [];\r\n }\r\n\r\n static Deserialize(jsonObj): SpreadsheetDescriptorDto {\r\n return GenericDeserialize<SpreadsheetDescriptorDto>(jsonObj, SpreadsheetDescriptorDto);\r\n }\r\n}","import {deserializeAs, deserialize} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetCellPositionDto} from './SpreadsheetCellPositionDto';\r\n\r\nexport class SpreadsheetCellDataDto {\r\n @deserializeAs(SpreadsheetCellPositionDto)\r\n Position: SpreadsheetCellPositionDto;\r\n\r\n @deserialize\r\n Value: any;\r\n\r\n @deserialize\r\n DimensionNumber: number;\r\n\r\n get PositionName() {\r\n return `${this.Position.Column}${this.Position.Row}`;\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SpreadsheetPageDescriptorDto {\r\n @deserialize\r\n PageName: string;\r\n\r\n @deserialize\r\n PageDisplayName: string;\r\n}","import {deserializeAs} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetCellDataDto} from './SpreadsheetCellDataDto';\r\nimport {SpreadsheetPageDescriptorDto} from './SpreadsheetPageDescriptorDto';\r\n\r\nexport class SpreadsheetPageDataDto {\r\n @deserializeAs(SpreadsheetCellDataDto)\r\n CellsData: SpreadsheetCellDataDto[];\r\n\r\n @deserializeAs(SpreadsheetPageDescriptorDto)\r\n Descriptor: SpreadsheetPageDescriptorDto;\r\n\r\n constructor() {\r\n this.CellsData = [];\r\n }\r\n}","export enum SpreadsheetDimensionDirections {\r\n Horizontal,\r\n Vertical\r\n}","import {deserializeAs, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {SpreadsheetDescriptorDto} from './SpreadsheetDescriptorDto';\r\nimport {SpreadsheetPageDataDto} from './SpreadsheetPageDataDto';\r\n\r\nexport class SpreadsheetDataDto {\r\n @deserializeAs(SpreadsheetDescriptorDto)\r\n Descriptor: SpreadsheetDescriptorDto;\r\n\r\n @deserializeAs(SpreadsheetPageDataDto)\r\n Pages: SpreadsheetPageDataDto[];\r\n\r\n constructor() {\r\n this.Pages = [];\r\n }\r\n\r\n static Deserialize(jsonObj): SpreadsheetDataDto {\r\n return GenericDeserialize<SpreadsheetDataDto>(jsonObj, SpreadsheetDataDto);\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {SpreadsheetDataDto} from '../Models/Dto/SpreadsheetDataDto';\r\nimport {SpreadsheetDescriptorDto} from '../Models/Dto/SpreadsheetDescriptorDto';\r\n\r\nexport class SpreadsheetStore {\r\n GetSpreadsheetDescriptor(params: {\r\n TableId: number,\r\n HorizontalDimensionFields: string[],\r\n VerticalDimensionFields: string[],\r\n ValueField: string,\r\n PageField: string\r\n }): P.Promise<SpreadsheetDescriptorDto> {\r\n\r\n const deferred = P.defer<SpreadsheetDescriptorDto>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SpreadsheetApi/GetSpreadsheetDescriptor',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n }).then(jsonObj => {\r\n deferred.resolve(SpreadsheetDescriptorDto.Deserialize(jsonObj))\r\n }).fail(err => {\r\n deferred.reject(this.GetResponseError(err, 'Error getting spreadsheet'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetSpreadsheet(params: {\r\n TableId: number,\r\n EntityRecordId: number,\r\n HorizontalDimensionFields: string[],\r\n VerticalDimensionFields: string[],\r\n ValueField: string,\r\n PageField: string\r\n }): P.Promise<SpreadsheetDataDto> {\r\n\r\n const deferred = P.defer<SpreadsheetDataDto>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SpreadsheetApi/GetSpreadsheet',\r\n type: 'POST',\r\n dataType: 'json'\r\n },\r\n params: params\r\n }).then(jsonObj => {\r\n deferred.resolve(SpreadsheetDataDto.Deserialize(jsonObj))\r\n }).fail(err => {\r\n deferred.reject(this.GetResponseError(err, 'Error getting spreadsheet'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import {SpreadsheetNewPageDto} from './SpreadsheetNewPageDto';\r\nimport {SpreadsheetPageRemoveDto} from './SpreadsheetPageRemoveDto';\r\n\r\nexport class SpreadsheetSaveDto {\r\n public constructor(\r\n public TableId: number, public EntityRecordId: number,\r\n public NewPages: SpreadsheetNewPageDto[], public RemovedPages: SpreadsheetPageRemoveDto[],\r\n public Paged: boolean) {\r\n }\r\n}","export class SpreadsheetPageRemoveDto {\r\n constructor(public TableId: number,\r\n public EntityRecordId: number,\r\n public PageField: string,\r\n public PageName: string) {\r\n\r\n }\r\n}","import {SpreadsheetRecordDto} from './SpreadsheetRecordDto';\r\n\r\nexport class SpreadsheetNewPageDto {\r\n constructor(public TableId: number,\r\n public EntityRecordId: number,\r\n public PageField: string,\r\n public PageName: string,\r\n public ValueField: string,\r\n public CellsData: SpreadsheetRecordDto[]) {\r\n }\r\n}","import {SpreadsheetRecordFieldDto} from './SpreadsheetRecordFieldDto';\r\n\r\nexport class SpreadsheetRecordDto {\r\n constructor(public Value: string, public Fields: SpreadsheetRecordFieldDto[]) {\r\n }\r\n}","export class SpreadsheetRecordFieldDto {\r\n constructor(public FieldName: string, public Value: string) {\r\n }\r\n}","import {SpreadsheetFieldDescriptor} from './SpreadsheetFieldDescriptor';\r\nimport {SpreadsheetDimensionDescriptor} from './SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetCellPosition} from './SpreadsheetCellPosition';\r\n\r\nexport class SpreadsheetDescriptor {\r\n constructor(public ValueField: SpreadsheetFieldDescriptor,\r\n public PageField: SpreadsheetFieldDescriptor,\r\n public Origin: SpreadsheetCellPosition,\r\n public Dimensions: SpreadsheetDimensionDescriptor[],\r\n public IsView: boolean) {\r\n }\r\n\r\n get IsPaged() {\r\n return !!this.PageField;\r\n }\r\n}","import {FIELD_TYPES} from 'Core/Constant';\r\n\r\nexport class SpreadsheetFieldDescriptor {\r\n constructor(public Id: number,\r\n public Name: string,\r\n public TranslatedName: string,\r\n public TypeId: number,\r\n public Type: string,\r\n public ValTableName: string,\r\n public ValFieldName: string) {\r\n }\r\n\r\n get IsLookup() {\r\n return this.Type === FIELD_TYPES.Lookup;\r\n }\r\n}","import {SpreadsheetDimensionDirections} from '../../Enums/SpreadsheetDimensionDirections';\r\nimport {SpreadsheetCellPosition} from './SpreadsheetCellPosition';\r\nimport {SpreadsheetFieldDescriptor} from './SpreadsheetFieldDescriptor';\r\n\r\nexport class SpreadsheetDimensionDescriptor {\r\n constructor(public Field: SpreadsheetFieldDescriptor,\r\n public Direction: SpreadsheetDimensionDirections,\r\n public Number: number,\r\n public StartPosition: SpreadsheetCellPosition) {\r\n }\r\n}","export class SpreadsheetCellPosition {\r\n constructor(public Column: string, public Row: number) {\r\n\r\n }\r\n\r\n get PositionName() {\r\n return `${this.Column}${this.Row}`;\r\n }\r\n\r\n GetColumnIndex() {\r\n return this.GetColumnNumber() - 1;\r\n }\r\n\r\n GetColumnNumber() {\r\n let number = 0, pow = 1;\r\n\r\n for (let i = this.Column.length - 1; i >= 0; i--) {\r\n number += (this.Column.charCodeAt(i) - 'A'.charCodeAt(0) + 1) * pow;\r\n pow *= 26;\r\n }\r\n\r\n return number;\r\n }\r\n\r\n GetNextColumnName() {\r\n return SpreadsheetCellPosition.GetColumnNameByNumber(this.GetColumnNumber() + 1);\r\n }\r\n\r\n GetRowIndex() {\r\n return this.Row - 1;\r\n }\r\n\r\n IsSameAs(position: SpreadsheetCellPosition) {\r\n return this.Column == position.Column && this.Row === position.Row;\r\n }\r\n\r\n static Parse(cell: string) {\r\n const column = cell.match(/[A-Z]+/)[0];\r\n const row = +cell.split(column)[1];\r\n\r\n return new SpreadsheetCellPosition(column, row);\r\n }\r\n\r\n static GetColumnNameByNumber(n: number) {\r\n let columnName = '';\r\n\r\n while (n > 0) {\r\n const mod = Math.floor(n - 1) % 26;\r\n columnName = (String.fromCharCode(65 + mod)) + columnName;\r\n n = Math.floor((n - mod) / 26);\r\n }\r\n\r\n return columnName;\r\n }\r\n}","export class SpreadsheetPageDescriptor {\r\n constructor(public PageName: string, public PageDisplayName: string) {\r\n\r\n }\r\n}","import {SpreadsheetCellData} from './SpreadsheetCellData';\r\nimport {SpreadsheetDimensionDescriptor} from './SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetDescriptor} from './SpreadsheetDescriptor';\r\nimport {SpreadsheetPageDescriptor} from './SpreadsheetPageDescriptor';\r\n\r\nexport class SpreadsheetPageData {\r\n constructor(public Cells: SpreadsheetCellData[], public Dimensions: SpreadsheetDimensionDescriptor[], public Descriptor: SpreadsheetPageDescriptor) {\r\n }\r\n\r\n GetCell(name: string): SpreadsheetCellData {\r\n return this.Cells.find(c => c.cell === name);\r\n }\r\n\r\n static GetDefaultPageId() {\r\n return '<No id>';\r\n }\r\n\r\n static GetDefaultPageName() {\r\n return '<No name>';\r\n }\r\n\r\n static Empty(spreadsheetDescriptor: SpreadsheetDescriptor) {\r\n const pageDescriptor = new SpreadsheetPageDescriptor(this.GetDefaultPageId(), this.GetDefaultPageName());\r\n return new SpreadsheetPageData([], spreadsheetDescriptor.Dimensions, pageDescriptor);\r\n }\r\n}","export class SpreadsheetCellData {\r\n css: string;\r\n\r\n constructor(public cell: string, public value: any, public dimensionNumber?: number) {\r\n }\r\n}","import {SpreadsheetDescriptorDto} from '../Models/Dto/SpreadsheetDescriptorDto';\r\nimport {SpreadsheetFieldDescriptorDto} from '../Models/Dto/SpreadsheetFieldDescriptorDto';\r\nimport {SpreadsheetDimensionDescriptorDto} from '../Models/Dto/SpreadsheetDimensionDescriptorDto';\r\nimport {SpreadsheetCellPositionDto} from '../Models/Dto/SpreadsheetCellPositionDto';\r\nimport {SpreadsheetPageDataDto} from '../Models/Dto/SpreadsheetPageDataDto';\r\nimport {SpreadsheetCellDataDto} from '../Models/Dto/SpreadsheetCellDataDto';\r\n\r\nimport {SpreadsheetDescriptor} from '../Models/View/SpreadsheetDescriptor';\r\nimport {SpreadsheetFieldDescriptor} from '../Models/View/SpreadsheetFieldDescriptor';\r\nimport {SpreadsheetDimensionDescriptor} from '../Models/View/SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetCellPosition} from '../Models/View/SpreadsheetCellPosition';\r\nimport {SpreadsheetPageData} from '../Models/View/SpreadsheetPageData';\r\nimport {SpreadsheetCellData} from '../Models/View/SpreadsheetCellData';\r\nimport {SpreadsheetPageDescriptorDto} from '../Models/Dto/SpreadsheetPageDescriptorDto';\r\nimport {SpreadsheetPageDescriptor} from '../Models/View/SpreadsheetPageDescriptor';\r\n\r\nexport class SpreadsheetViewMappingProfile {\r\n ToSpreadsheetDescriptor(descriptor: SpreadsheetDescriptorDto): SpreadsheetDescriptor {\r\n const valueField = this.ToFieldDescriptor(descriptor.ValueField);\r\n const pageField = this.ToFieldDescriptor(descriptor.PageField);\r\n const origin = this.ToCellPosition(descriptor.Origin);\r\n const dimensions = this.ToDimensionDescriptors(descriptor.Dimensions);\r\n\r\n return new SpreadsheetDescriptor(valueField, pageField, origin, dimensions, descriptor.IsView);\r\n }\r\n\r\n ToFieldDescriptor(descriptor: SpreadsheetFieldDescriptorDto): SpreadsheetFieldDescriptor {\r\n return descriptor\r\n ? new SpreadsheetFieldDescriptor(descriptor.Id,\r\n descriptor.Name, descriptor.TranslatedName,\r\n descriptor.TypeId, descriptor.Type,\r\n descriptor.ValTableName, descriptor.ValFieldName)\r\n : null;\r\n }\r\n\r\n ToDimensionDescriptors(descriptors: SpreadsheetDimensionDescriptorDto[]): SpreadsheetDimensionDescriptor[] {\r\n return descriptors.map(descriptor => this.ToDimensionDescriptor(descriptor));\r\n }\r\n\r\n ToDimensionDescriptor(descriptor: SpreadsheetDimensionDescriptorDto): SpreadsheetDimensionDescriptor {\r\n const field = this.ToFieldDescriptor(descriptor.Field);\r\n const startPosition = this.ToCellPosition(descriptor.StartPosition);\r\n\r\n return new SpreadsheetDimensionDescriptor(field, descriptor.Direction, descriptor.Number, startPosition);\r\n }\r\n\r\n ToCellPosition(position: SpreadsheetCellPositionDto): SpreadsheetCellPosition {\r\n return new SpreadsheetCellPosition(position.Column, position.Row);\r\n }\r\n\r\n ToPagesData(pagesData: SpreadsheetPageDataDto[], spreadsheetDescriptor: SpreadsheetDescriptor) {\r\n return pagesData.map(pageData => this.ToPageData(pageData, spreadsheetDescriptor));\r\n }\r\n\r\n ToPageData(pageData: SpreadsheetPageDataDto, spreadsheetDescriptor: SpreadsheetDescriptor): SpreadsheetPageData {\r\n const cellsData = this.ToCellsData(pageData.CellsData);\r\n const pageDescriptor = spreadsheetDescriptor.PageField ? this.ToPageDescriptor(pageData.Descriptor, spreadsheetDescriptor.PageField) : null;\r\n return new SpreadsheetPageData(cellsData, spreadsheetDescriptor.Dimensions, pageDescriptor);\r\n }\r\n\r\n ToCellsData(cellsData: SpreadsheetCellDataDto[]): SpreadsheetCellData[] {\r\n return cellsData.map(cellData => this.ToCellData(cellData));\r\n }\r\n\r\n ToCellData(cellData: SpreadsheetCellDataDto): SpreadsheetCellData {\r\n return new SpreadsheetCellData(cellData.PositionName, cellData.Value, cellData.DimensionNumber);\r\n }\r\n\r\n ToPageDescriptor(descriptor: SpreadsheetPageDescriptorDto, pageFieldDescriptor: SpreadsheetFieldDescriptor): SpreadsheetPageDescriptor {\r\n const {defaultPageName, defaultPageDisplayName} =\r\n pageFieldDescriptor.IsLookup ? {\r\n defaultPageName: SpreadsheetPageData.GetDefaultPageId(),\r\n defaultPageDisplayName: SpreadsheetPageData.GetDefaultPageName()\r\n } : {\r\n defaultPageName: SpreadsheetPageData.GetDefaultPageName(),\r\n defaultPageDisplayName: SpreadsheetPageData.GetDefaultPageName()\r\n };\r\n\r\n return new SpreadsheetPageDescriptor(descriptor.PageName || defaultPageName, descriptor.PageDisplayName || defaultPageDisplayName);\r\n }\r\n}","import {SpreadsheetPageData} from './SpreadsheetPageData';\r\n\r\nexport class SpreadsheetData {\r\n constructor(public Pages: SpreadsheetPageData[]) {\r\n }\r\n}","import {SpreadsheetCellPosition} from './SpreadsheetCellPosition';\r\n\r\nexport class SpreadsheetCellRange {\r\n constructor(public Start: SpreadsheetCellPosition, public End: SpreadsheetCellPosition) {\r\n }\r\n\r\n get RangeName() {\r\n return `${this.Start.PositionName}:${this.End.PositionName}`;\r\n }\r\n\r\n ContainsCell(position: SpreadsheetCellPosition) {\r\n return this.Start.Row <= position.Row && this.Start.GetColumnNumber() <= position.GetColumnNumber()\r\n && this.End.Row >= position.Row && this.End.GetColumnNumber() >= position.GetColumnNumber();\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {PageName} from '../View/PageName';\r\n\r\nexport class RenamePageState {\r\n UseSearch: boolean;\r\n NameOptions: KnockoutObservableArray<PageName>;\r\n SelectedName: KnockoutObservable<PageName>;\r\n Error: KnockoutObservable<string>;\r\n\r\n constructor(selectedName: PageName, nameOptions: PageName[], useSearch: boolean) {\r\n this.UseSearch = useSearch;\r\n\r\n const value = useSearch ? selectedName : nameOptions.find(option => option.PageName === selectedName.PageName);\r\n\r\n this.NameOptions = ko.observableArray(nameOptions);\r\n this.SelectedName = ko.observable(value);\r\n\r\n this.Error = ko.observable(null);\r\n }\r\n}","export class PageName {\r\n constructor(public PageName: string, public PageDisplayName: string) {\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\nimport {RenamePageState} from './Models/State/RenamePageState';\r\n\r\nimport {PageName} from './Models/View/PageName';\r\nimport {SpreadsheetFieldDescriptor} from '../../Models/View/SpreadsheetFieldDescriptor';\r\nimport {SpreadsheetPageData} from '../../Models/View/SpreadsheetPageData';\r\n\r\nimport Template from './Templates/Template.html';\r\nimport SearchTemplate from './Templates/SearchTemplate.html';\r\nimport DropdownTemplate from './Templates/DropdownTemplate.html';\r\n\r\nko.templates['Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/Template'] = Template;\r\n\r\nexport class RenamePagePopup extends Event {\r\n private _modal: Modal;\r\n private _currentPageName: PageName;\r\n\r\n State: KnockoutObservable<RenamePageState>;\r\n\r\n constructor(private _pageField: SpreadsheetFieldDescriptor, currentName: string, currentDisplayName: string) {\r\n super();\r\n this._currentPageName = new PageName(currentName, currentDisplayName);\r\n\r\n this.State = ko.observable(null);\r\n }\r\n\r\n Show() {\r\n this.InitState()\r\n .then(() => {\r\n this._modal = new Modal({width: 400}, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n });\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n this._modal.Destroy();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Spreadsheet/Components/RenamePagePopup/Templates/Template';\r\n }\r\n\r\n GetSearchTemplate() {\r\n if (!this.State()) {\r\n return null;\r\n }\r\n\r\n return this.State().UseSearch ? SearchTemplate : DropdownTemplate;\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n SetError(error: string) {\r\n this.State().Error(error);\r\n }\r\n\r\n private InitState() {\r\n BlockUI.Block();\r\n\r\n return RecordStore.GetLookupData({\r\n TableName: this._pageField.ValTableName,\r\n DisplayValue: this._pageField.ValFieldName\r\n }).then(lookupData => {\r\n if (lookupData.Count > lookupData.Data.length) {\r\n this.State(new RenamePageState(this._currentPageName, [], true));\r\n } else {\r\n const nameOptions = lookupData.Data.map(record => new PageName(record.Value, record.Name));\r\n this.State(new RenamePageState(this._currentPageName, nameOptions, false));\r\n }\r\n\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n BlockUI.Unblock();\r\n new Notifier().Failed(error.message)\r\n })\r\n }\r\n\r\n private OnSave() {\r\n if (!this.State().SelectedName() || !this.State().SelectedName().PageDisplayName) {\r\n this.SetError('Page name cannot be empty');\r\n return;\r\n }\r\n\r\n this.Trigger('PAGE_NAME_SAVE', this.State().SelectedName());\r\n }\r\n\r\n private OnCancel() {\r\n this.Close();\r\n }\r\n\r\n private SearchForPageName() {\r\n const search = new SearchScreen({EntityName: this._pageField.ValTableName, SearchTerm: ''});\r\n\r\n search.On('RECORD_SELECTED', this, eventArgs => this.SelectPageName(eventArgs.data.RecordId, eventArgs.data.Name));\r\n\r\n search.Show();\r\n }\r\n\r\n private SelectPageName(pageName: string, pageDisplayName) {\r\n const selectedPageName = new PageName(pageName.toString(), pageDisplayName);\r\n this.State().SelectedName(selectedPageName)\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"spreadsheet-control\\\"> <div class=\\\"rename-page\\\"> <!--ko if: State--> <!--ko template: {html: $data.GetSearchTemplate.bind($data)}--> <!--/ko--> <!--/ko--> <div class=\\\"text-center\\\"> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: $data.OnSave.bind($data)\\\"> <i class=\\\"fa fa-save\\\"></i> Save </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: $data.OnCancel.bind($data)\\\"> <i class=\\\"fa fa-times\\\"></i> Cancel </button> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"form-group\\\"> <label>Page Name</label> <div class=\\\"dropdown-wraper\\\"> <div class=\\\"textarea-control form-control\\\"> <span data-bind=\\\"text: State().SelectedName() && State().SelectedName().PageDisplayName\\\"></span> </div> <div class=\\\"dropdown-controls\\\"> <button type=\\\"button\\\" class=\\\"btn default\\\" data-bind=\\\"click: $data.SearchForPageName.bind($data)\\\"> <i class=\\\"fa fa-search\\\"></i> </button> </div> </div> <!--ko if: State().Error--> <p data-bind=\\\"text: State().Error\\\" class=\\\"validation-message\\\"></p> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"form-group\\\"> <label>Page Name</label> <select class=\\\"form-control\\\" data-bind=\\\"options: State().NameOptions, optionsText: 'PageDisplayName', value: State().SelectedName\\\"></select> <!--ko if: State().Error--> <p data-bind=\\\"text: State().Error\\\" class=\\\"validation-message\\\"></p> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Spreadsheet} from 'spreadsheet';\r\n\r\nimport {RenderModes} from 'Core/Constant';\r\n\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {BaseControl, IControlValue} from '../BaseControl/BaseControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen';\r\n\r\nimport ConfigJson from 'Core/Controls/Spreadsheet/Configs/spreadsheet-config.json';\r\nimport {DimensionalTablePropertyField} from '../../GeneralProperties/Managers/DimensionalTableProperty/Models/DimensionalTablePropertyValue';\r\n\r\nimport {SpreadsheetStore} from './Store/SpreadsheetStore';\r\n\r\nimport {SpreadsheetDataDto} from './Models/Dto/SpreadsheetDataDto';\r\nimport {SpreadsheetDescriptorDto} from './Models/Dto/SpreadsheetDescriptorDto';\r\n\r\nimport {SpreadsheetSaveDto} from './Models/Dto/SpreadsheetSaveDto';\r\nimport {SpreadsheetPageRemoveDto} from './Models/Dto/SpreadsheetPageRemoveDto';\r\nimport {SpreadsheetNewPageDto} from './Models/Dto/SpreadsheetNewPageDto';\r\nimport {SpreadsheetRecordDto} from './Models/Dto/SpreadsheetRecordDto';\r\nimport {SpreadsheetRecordFieldDto} from './Models/Dto/SpreadsheetRecordFieldDto';\r\n\r\nimport {SpreadsheetViewMappingProfile} from './Mappings/SpreadsheetViewMappingProfile';\r\n\r\nimport {SpreadsheetData} from './Models/View/SpreadsheetData';\r\nimport {SpreadsheetDescriptor} from './Models/View/SpreadsheetDescriptor';\r\nimport {SpreadsheetDimensionDescriptor} from './Models/View/SpreadsheetDimensionDescriptor';\r\nimport {SpreadsheetPageData} from './Models/View/SpreadsheetPageData';\r\nimport {SpreadsheetCellPosition} from './Models/View/SpreadsheetCellPosition';\r\nimport {SpreadsheetCellData} from './Models/View/SpreadsheetCellData';\r\nimport {SpreadsheetDimensionDirections} from './Enums/SpreadsheetDimensionDirections';\r\nimport {SpreadsheetCellRange} from './Models/View/SpreadsheetCellRange';\r\n\r\nimport {RenamePagePopup} from './Components/RenamePagePopup/RenamePagePopup';\r\nimport {PageName} from './Components/RenamePagePopup/Models/View/PageName';\r\n\r\nimport ToolBarTemplate from './Templates/ToolBar.html';\r\nimport DesignTemplate from './Templates/Design.html';\r\nimport ViewTemplate from './Templates/View.html';\r\nimport EditTemplate from './Templates/Edit.html';\r\nimport HelpViewTemplate from './Templates/HelpView.html';\r\nimport LegendTemplate from './Templates/Legend.html';\r\n\r\n\r\nko.templates['Core/Controls/Spreadsheet/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Spreadsheet/Templates/HelpView'] = HelpViewTemplate;\r\n\r\nexport class SpreadsheetControl extends BaseControl {\r\n private _readonly: boolean;\r\n private _setValueWasRequested: boolean;\r\n private _isEditing: boolean;\r\n\r\n private _store: SpreadsheetStore;\r\n private _viewMappings: SpreadsheetViewMappingProfile;\r\n private _spreadsheetDescriptor: SpreadsheetDescriptor;\r\n\r\n private _renamePagePopup: RenamePagePopup;\r\n\r\n private _removedPages: string[];\r\n\r\n private _styles: any;\r\n private _rowsCount: number;\r\n private _colsCount: number;\r\n private _originCellValue: string;\r\n\r\n private _spreadsheet: Spreadsheet;\r\n\r\n IsLegendReady: KnockoutObservable<boolean>;\r\n Error: KnockoutObservable<string>;\r\n Dimension1: KnockoutObservable<string>;\r\n Dimension1Translated: KnockoutObservable<string>;\r\n\r\n Dimension2: KnockoutObservable<string>;\r\n Dimension2Translated: KnockoutObservable<string>;\r\n\r\n Dimension3: KnockoutObservable<string>;\r\n Dimension3Translated: KnockoutObservable<string>;\r\n\r\n Dimension4: KnockoutObservable<string>;\r\n Dimension4Translated: KnockoutObservable<string>;\r\n\r\n PageField: KnockoutObservable<string>;\r\n PageFieldTranslated: KnockoutObservable<string>;\r\n\r\n ValueField: KnockoutObservable<string>;\r\n ValueFieldTranslated: KnockoutObservable<string>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, ConfigJson);\r\n this.Init();\r\n }\r\n\r\n GetLegendTemplate() {\r\n return (ko as any).renderTemplateXHtml(LegendTemplate, this);\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n return;\r\n }\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this.AfterViewRender();\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.AfterEditRender();\r\n }\r\n }\r\n\r\n SetValue(value: IControlValue) {\r\n this._setValueWasRequested = true;\r\n\r\n if (this._isRendered()) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n IsValid(): boolean {\r\n if (!this._isRendered()) {\r\n return true;\r\n }\r\n\r\n if (this._spreadsheetDescriptor.PageField && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n const pagesWithoutDbId = this._spreadsheet.getSheets()\r\n .filter(sheet => !this.GetPageName(sheet.id))\r\n .map(sheet => this.GetPageDisplayName(sheet.id));\r\n\r\n if (pagesWithoutDbId.length > 0) {\r\n this.Error('Select the name for these sheets using Rename menu: ' + pagesWithoutDbId.join(', '));\r\n return false;\r\n }\r\n }\r\n\r\n if (this._isEditing) {\r\n this.Error('Please, finish editing on the spreadsheet');\r\n return false;\r\n }\r\n\r\n this.Error(null);\r\n return true;\r\n }\r\n\r\n Deserialize(): SpreadsheetSaveDto {\r\n if (!this._isRendered()) {\r\n return null;\r\n }\r\n\r\n if (this._spreadsheetDescriptor.IsView) {\r\n return null;\r\n }\r\n\r\n const newPages: SpreadsheetNewPageDto[] = this._spreadsheet.getSheets()\r\n .filter(sheet => this.GetPage(sheet.id))\r\n .map(sheet => {\r\n const origin = this.GetOriginPosition(sheet.id);\r\n let pageName = this.GetPageName(sheet.id);\r\n\r\n if (pageName === SpreadsheetPageData.GetDefaultPageId() || pageName === SpreadsheetPageData.GetDefaultPageName()) {\r\n pageName = null;\r\n }\r\n\r\n return new SpreadsheetNewPageDto(\r\n this.GetFieldModel().EntityId,\r\n this.GetEntityRecordId(),\r\n this.PageField(),\r\n pageName,\r\n this.ValueField(),\r\n this.GetCellsData(sheet.id, origin)\r\n );\r\n });\r\n\r\n const removedPages: SpreadsheetPageRemoveDto[] = this._removedPages.map(pageName => {\r\n const pageNameDto = pageName === SpreadsheetPageData.GetDefaultPageName() ? null : pageName;\r\n return new SpreadsheetPageRemoveDto(\r\n this.GetFieldModel().EntityId,\r\n this.GetEntityRecordId(),\r\n this.PageField(),\r\n pageNameDto\r\n );\r\n })\r\n\r\n const paged = !!this.PageField();\r\n return new SpreadsheetSaveDto(\r\n this.GetFieldModel().EntityId, this.GetEntityRecordId(),\r\n newPages, removedPages,\r\n paged\r\n );\r\n }\r\n\r\n private Init() {\r\n this._setValueWasRequested = false;\r\n this._isEditing = false;\r\n\r\n this._store = new SpreadsheetStore();\r\n this._viewMappings = new SpreadsheetViewMappingProfile();\r\n\r\n this._removedPages = [];\r\n\r\n this._styles = {\r\n origin: {\r\n textAlign: 'center',\r\n 'font-weight': 'bold',\r\n color: '#ddd'\r\n },\r\n dimension1: {\r\n background: '#1c87d9',\r\n color: '#fff'\r\n },\r\n dimension2: {\r\n background: '#ff9b00',\r\n color: '#fff'\r\n },\r\n dimension3: {\r\n background: '#4f4083',\r\n color: '#fff'\r\n },\r\n dimension4: {\r\n background: '#ccc',\r\n color: '#fff',\r\n 'font-weight': 'bold'\r\n },\r\n value: {\r\n 'font-weight': 'bold'\r\n }\r\n };\r\n\r\n this.IsLegendReady = ko.observable(false);\r\n\r\n if (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.HelpView) {\r\n this.InitForView();\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.InitForEdit();\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n this.InitForDesign();\r\n }\r\n }\r\n\r\n private AfterViewRender() {\r\n this._readonly = true;\r\n\r\n this.RenderSpreadsheet();\r\n\r\n if (this._setValueWasRequested) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n private AfterEditRender() {\r\n this._readonly = false;\r\n\r\n this.RenderSpreadsheet();\r\n\r\n if (this._setValueWasRequested) {\r\n this.LoadData();\r\n }\r\n }\r\n\r\n private RenderSpreadsheet() {\r\n this._colsCount = 100;\r\n this._rowsCount = 100;\r\n this._originCellValue = '@ORIGIN';\r\n\r\n this._spreadsheet = new Spreadsheet(\r\n this._el.querySelector<HTMLDivElement>('.spreadsheet'), {\r\n multiSheets: !!this.PageField(),\r\n colsCount: this._colsCount,\r\n rowsCount: this._rowsCount\r\n });\r\n }\r\n\r\n private BindEvents() {\r\n if (this._readonly) {\r\n this._spreadsheet.events.on('beforeSheetAdd', () => false);\r\n this._spreadsheet.events.on('beforeSheetRemove', () => false);\r\n this._spreadsheet.events.on('beforeSheetRename', () => false);\r\n\r\n this._spreadsheet.events.on(\"beforeEditStart\", () => false);\r\n this._spreadsheet.events.on(\"beforeValueChange\", () => false);\r\n this._spreadsheet.events.on(\"beforeStyleChange\", () => false);\r\n\r\n this._spreadsheet.events.on(\"beforecolumndelete\", () => false);\r\n this._spreadsheet.events.on(\"beforerowdelete\", () => false);\r\n this._spreadsheet.events.on(\"beforecolumnadd\", () => false);\r\n this._spreadsheet.events.on(\"beforerowadd\", () => false);\r\n } else {\r\n if (this._spreadsheetDescriptor.IsPaged && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n this.BindLookupPageContextMenuEvents();\r\n }\r\n\r\n this._spreadsheet.events.on('beforeSheetRemove', sheet => {\r\n const pageName = this.GetPageName(sheet.id);\r\n\r\n if (pageName === SpreadsheetPageData.GetDefaultPageId() || pageName === SpreadsheetPageData.GetDefaultPageName()) {\r\n this._removedPages.push(null);\r\n return;\r\n }\r\n\r\n this._removedPages.push(pageName);\r\n });\r\n\r\n this._spreadsheet.events.on('beforeSheetRename', sheet => {\r\n const pageName = this.GetPageName(sheet.id);\r\n\r\n if (pageName === SpreadsheetPageData.GetDefaultPageId() || pageName === SpreadsheetPageData.GetDefaultPageName()) {\r\n this._removedPages.push(null);\r\n return;\r\n }\r\n\r\n this._removedPages.push(pageName);\r\n });\r\n\r\n this._spreadsheet.events.on('afterSheetRename', sheet => {\r\n if (!this._spreadsheetDescriptor.PageField.IsLookup) {\r\n const pageName = this.GetPageName(sheet.id)\r\n this._spreadsheet._sheets.update(sheet.id, {\r\n pageDbId: pageName,\r\n value: pageName\r\n });\r\n }\r\n });\r\n\r\n this._spreadsheet.events.on('afterSheetAdd', sheet => {\r\n const newPageId = this._spreadsheet._dataStore._pageName2ID.get(sheet.name);\r\n const newPage = this._spreadsheet._dataStore.getPage(newPageId);\r\n const firstPage = this._spreadsheet._dataStore.getPage(0);\r\n\r\n let copiedPageData = JSON.parse(JSON.stringify(firstPage._data));\r\n _.each(copiedPageData, (data: any) => {\r\n _.each(data, (cell: any) => {\r\n if (cell && cell.css !== 'origin'){\r\n cell.value = null;\r\n }\r\n });\r\n });\r\n\r\n newPage._data = copiedPageData;\r\n });\r\n\r\n this._spreadsheet.events.on('afterEditStart', () => this._isEditing = true);\r\n this._spreadsheet.events.on('afterEditEnd', () => this._isEditing = false);\r\n this._spreadsheet.events.on('beforeValueChange', (id, value) => {\r\n\r\n });\r\n this._spreadsheet.events.on('afterValueChange', (id, value) => {\r\n\r\n });\r\n }\r\n }\r\n\r\n private BindLookupPageContextMenuEvents() {\r\n this._spreadsheet.sheetContextMenu.events.detach('click');\r\n this._spreadsheet.sheetContextMenu.events.on('click', id => {\r\n const sheetId = this.GetFocusedSheetId();\r\n switch (id) {\r\n case 'delete':\r\n this.RemovePage(sheetId);\r\n return;\r\n case 'rename':\r\n this.ShowRenamePopup(sheetId);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n private RemovePage(sheetId: string) {\r\n this._spreadsheet.removeSheet(sheetId);\r\n }\r\n\r\n private ShowRenamePopup(sheetId: string) {\r\n const pageName = this.GetPageName(sheetId);\r\n const pageDisplayName = this.GetPageDisplayName(sheetId);\r\n\r\n this._renamePagePopup = new RenamePagePopup(this._spreadsheetDescriptor.PageField, pageName, pageDisplayName);\r\n this._renamePagePopup.On('PAGE_NAME_SAVE', this, eventArgs => this.RenamePageTo(sheetId, eventArgs.data));\r\n\r\n this._renamePagePopup.Show();\r\n }\r\n\r\n private RenamePageTo(sheetId: string, pageName: PageName) {\r\n const currentPageDisplayName = this.GetPageDisplayName(sheetId);\r\n if (currentPageDisplayName === pageName.PageDisplayName) {\r\n return;\r\n }\r\n\r\n const nameIsNotUnique = !!this._spreadsheet.getSheets().find(sheet => {\r\n const pageDisplayName = this.GetPageDisplayName(sheet.id);\r\n return pageDisplayName === pageName.PageDisplayName;\r\n });\r\n if (nameIsNotUnique) {\r\n this._renamePagePopup.SetError(`A sheet ${pageName.PageDisplayName} already exists`);\r\n return;\r\n }\r\n\r\n this._spreadsheet._renameSheet(sheetId, pageName.PageDisplayName);\r\n this._spreadsheet._sheets.update(sheetId, {pageDbId: pageName.PageName, value: pageName.PageDisplayName});\r\n\r\n this._renamePagePopup.Close();\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n private InitForView() {\r\n this.Error = ko.observable(null);\r\n this.InitFields();\r\n this.ApplyRuntimeProperties();\r\n }\r\n\r\n private InitForEdit() {\r\n this.Error = ko.observable(null);\r\n this.InitFields();\r\n this.ApplyRuntimeProperties();\r\n }\r\n\r\n private InitForDesign() {\r\n this.InitFields();\r\n this.ApplyDesignProperties();\r\n }\r\n\r\n private InitFields() {\r\n this.Dimension1 = ko.observable(null);\r\n this.Dimension1Translated = ko.observable(null);\r\n\r\n this.Dimension2 = ko.observable(null);\r\n this.Dimension2Translated = ko.observable(null);\r\n\r\n this.Dimension3 = ko.observable(null);\r\n this.Dimension3Translated = ko.observable(null);\r\n\r\n this.Dimension4 = ko.observable(null);\r\n this.Dimension4Translated = ko.observable(null);\r\n\r\n this.PageField = ko.observable(null);\r\n this.PageFieldTranslated = ko.observable(null);\r\n\r\n this.ValueField = ko.observable(null);\r\n this.ValueFieldTranslated = ko.observable(null);\r\n }\r\n\r\n private ApplyDesignProperties() {\r\n const dimensionsProperty = this.GeneralProperties.GetPropertyValue('Dimensions');\r\n\r\n const valueField = dimensionsProperty && dimensionsProperty.ValueField;\r\n const pageField = dimensionsProperty && dimensionsProperty.PageField;\r\n const dimensions = dimensionsProperty && dimensionsProperty.DimensionFields || [];\r\n\r\n this.ValueField(valueField ? valueField.Name : 'Value');\r\n this.PageField(pageField ? pageField.Name : null);\r\n\r\n this.Dimension1(this.GetDimensionFieldName(dimensions, 0));\r\n this.Dimension2(this.GetDimensionFieldName(dimensions, 1));\r\n this.Dimension3(this.GetDimensionFieldName(dimensions, 2));\r\n this.Dimension4(this.GetDimensionFieldName(dimensions, 3));\r\n }\r\n\r\n private ApplyRuntimeProperties() {\r\n const dimensionsProperty = this.GeneralProperties.GetPropertyValue('Dimensions');\r\n\r\n const valueField = dimensionsProperty && dimensionsProperty.ValueField;\r\n const pageField = dimensionsProperty && dimensionsProperty.PageField;\r\n const dimensions = dimensionsProperty && dimensionsProperty.DimensionFields || [];\r\n\r\n this.ValueField(valueField.Name);\r\n this.PageField(pageField ? pageField.Name : null);\r\n\r\n if (dimensions.length > 0) {\r\n this.Dimension1(this.GetDimensionFieldName(dimensions, 0));\r\n this.Dimension2(this.GetDimensionFieldName(dimensions, 1));\r\n this.Dimension3(this.GetDimensionFieldName(dimensions, 2));\r\n this.Dimension4(this.GetDimensionFieldName(dimensions, 3));\r\n }\r\n }\r\n\r\n private GetDimensionFieldName(dimensions: DimensionalTablePropertyField[], index: number) {\r\n if (dimensions.length === 0) {\r\n return 'Dimension ' + (index + 1);\r\n }\r\n\r\n if (!dimensions[index]) {\r\n return null;\r\n }\r\n\r\n return dimensions[index].Name;\r\n }\r\n\r\n private LoadData() {\r\n const entityRecordId = this.GetForm().GetScreen().GetRecordId();\r\n\r\n if (!entityRecordId) {\r\n this.LoadEmptySpreadsheet();\r\n return;\r\n }\r\n\r\n this.LoadSpreadsheetData();\r\n }\r\n\r\n private LoadEmptySpreadsheet() {\r\n BlockUI.Block({Target: this._el});\r\n this._store.GetSpreadsheetDescriptor(this.GetRequestSpreadsheetDescriptor())\r\n .then((descriptorDto: SpreadsheetDescriptorDto) => {\r\n const descriptor = this._viewMappings.ToSpreadsheetDescriptor(descriptorDto);\r\n const emptyPage = SpreadsheetPageData.Empty(descriptor);\r\n const spreadsheetData = new SpreadsheetData([emptyPage]);\r\n\r\n this._spreadsheetDescriptor = descriptor;\r\n this.DisplaySpreadsheet(spreadsheetData);\r\n BlockUI.Unblock(this._el);\r\n this.ForceFocusOnTextControl();\r\n }).fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n ForceFocusOnTextControl(){\r\n if(this._renderMode() === RenderModes.Edit) {\r\n\r\n let isFocusableControl = _.find(this._form.GetScreen().GetAllControls(), c => c.IsFocusable());\r\n isFocusableControl && isFocusableControl.ForceFocus();\r\n\r\n }\r\n }\r\n\r\n private LoadSpreadsheetData() {\r\n BlockUI.Block({Target: this._el});\r\n this._store.GetSpreadsheet(this.GetRequestSpreadsheetParams())\r\n .then((spreadsheet: SpreadsheetDataDto) => {\r\n const descriptor = this._viewMappings.ToSpreadsheetDescriptor(spreadsheet.Descriptor);\r\n const pages = this._viewMappings.ToPagesData(spreadsheet.Pages, descriptor);\r\n const spreadsheetData = new SpreadsheetData(pages);\r\n\r\n if (spreadsheetData.Pages.length === 0) {\r\n spreadsheetData.Pages.push(SpreadsheetPageData.Empty(descriptor));\r\n }\r\n\r\n this._spreadsheetDescriptor = descriptor;\r\n this.DisplaySpreadsheet(spreadsheetData);\r\n BlockUI.Unblock(this._el)\r\n\r\n this.ForceFocusOnTextControl();\r\n })\r\n .fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n private DisplaySpreadsheet(spreadsheetData: SpreadsheetData) {\r\n if (this._spreadsheetDescriptor.IsView) {\r\n this._readonly = true;\r\n }\r\n\r\n const pageDataSets = spreadsheetData.Pages.map(page => this.BuildPageDataset(page));\r\n const spreadsheetDataset = {\r\n sheets: spreadsheetData.Pages.map((page, index) => ({\r\n name: this._spreadsheetDescriptor.PageField ? page.Descriptor.PageDisplayName : SpreadsheetPageData.GetDefaultPageName(),\r\n id: Guid.NewGuid(),\r\n data: pageDataSets[index].data\r\n }))\r\n };\r\n\r\n const dataset = {styles: this._styles, ...spreadsheetDataset};\r\n this._spreadsheet.parse(dataset);\r\n\r\n dataset.sheets.forEach((sheet, index) => {\r\n this._spreadsheet._dataStore.getPage(index).setMeta({toolbarId: sheet.id});\r\n if (this._spreadsheetDescriptor.PageField) {\r\n this._spreadsheet._sheets.update(sheet.id, {pageDbId: spreadsheetData.Pages[index].Descriptor.PageName});\r\n }\r\n });\r\n\r\n this.TranslateLegend();\r\n this.BindEvents();\r\n }\r\n\r\n private TranslateLegend() {\r\n this.ValueFieldTranslated(this._spreadsheetDescriptor.ValueField.TranslatedName || this._spreadsheetDescriptor.ValueField.Name);\r\n\r\n if (this._spreadsheetDescriptor.PageField) {\r\n this.PageFieldTranslated(this._spreadsheetDescriptor.PageField.TranslatedName || this._spreadsheetDescriptor.PageField.Name);\r\n }\r\n\r\n const dimensionObservables = [this.Dimension1Translated, this.Dimension2Translated, this.Dimension3Translated, this.Dimension4Translated];\r\n this._spreadsheetDescriptor.Dimensions.forEach((dimension) => {\r\n const observableIndex = dimension.Number - 1;\r\n dimensionObservables[observableIndex](dimension.Field.TranslatedName || dimension.Field.Name);\r\n });\r\n\r\n this.IsLegendReady(true);\r\n }\r\n\r\n private GetHorizontalDimensionFields() {\r\n return [this.Dimension1(), this.Dimension3()].filter(fieldName => !!fieldName);\r\n }\r\n\r\n private GetVerticalDimensionFields() {\r\n return [this.Dimension2(), this.Dimension4()].filter(fieldName => !!fieldName);\r\n }\r\n\r\n private GetEntityRecordId() {\r\n return this.GetForm().GetScreen().GetRecordId();\r\n }\r\n\r\n private GetRequestSpreadsheetDescriptor() {\r\n return {\r\n TableId: this.GetFieldModel().EntityId,\r\n HorizontalDimensionFields: this.GetHorizontalDimensionFields(),\r\n VerticalDimensionFields: this.GetVerticalDimensionFields(),\r\n ValueField: this.ValueField(),\r\n PageField: this.PageField(),\r\n }\r\n }\r\n\r\n private GetRequestSpreadsheetParams() {\r\n return {\r\n TableId: this.GetFieldModel().EntityId,\r\n EntityRecordId: this.GetEntityRecordId(),\r\n HorizontalDimensionFields: this.GetHorizontalDimensionFields(),\r\n VerticalDimensionFields: this.GetVerticalDimensionFields(),\r\n ValueField: this.ValueField(),\r\n PageField: this.PageField(),\r\n }\r\n }\r\n\r\n private BuildPageDataset(page: SpreadsheetPageData) {\r\n this.AddStylesToPage(page);\r\n this.AddOrigin(page);\r\n\r\n return {\r\n data: page.Cells\r\n };\r\n }\r\n\r\n private AddStylesToPage(page: SpreadsheetPageData) {\r\n page.Dimensions.forEach(dimension => {\r\n if (dimension.Direction === SpreadsheetDimensionDirections.Horizontal) {\r\n this.AddStylesToHorizontalDimension(page, dimension);\r\n } else {\r\n this.AddStylesToVerticalDimension(page, dimension);\r\n }\r\n });\r\n\r\n this.AddStylesToValueCells(page);\r\n }\r\n\r\n private GetCellsData(sheetId: string, origin: SpreadsheetCellPosition): SpreadsheetRecordDto[] {\r\n const fields =\r\n _.chain(this.GetHorizontalDimensionFields())\r\n .zip(this.GetVerticalDimensionFields())\r\n .flatten()\r\n .filter(field => !!field).value();\r\n\r\n const dimensionIndexes = Array.from(Array(fields.length).keys());\r\n const dimensionRanges = dimensionIndexes.map(index => this.GetDimensionRange(sheetId, index + 1, origin));\r\n\r\n const dimension1Range = dimensionRanges[0];\r\n const dimension2Range = dimensionRanges[1];\r\n\r\n const valuesBlockStart = new SpreadsheetCellPosition(dimension1Range.Start.Column, dimension1Range.Start.Row + 1);\r\n const valuesBlockEnd = fields.length > 1\r\n ? new SpreadsheetCellPosition(dimension1Range.End.Column, dimension2Range.End.Row)\r\n : new SpreadsheetCellPosition(dimension1Range.End.Column, dimension1Range.End.Row + 1);\r\n\r\n const valuesBlockRange = new SpreadsheetCellRange(valuesBlockStart, valuesBlockEnd);\r\n\r\n const cellsRewrite: SpreadsheetRecordDto[] = [];\r\n\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n const cellPosition = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnIndex + 1), rowIndex + 1);\r\n if (!valuesBlockRange.ContainsCell(cellPosition)) {\r\n return;\r\n }\r\n\r\n if (cell.value === null) {\r\n return;\r\n }\r\n\r\n if (cell.value.trim && cell.value.trim() === '') {\r\n return;\r\n }\r\n\r\n const dimensionRewrite = _.chain(dimensionIndexes)\r\n .map((index) => this.BuildDimensionRewrite(sheetId, index + 1, dimensionRanges[index], cellPosition, fields))\r\n .uniq(dimension => dimension.FieldName)\r\n .value();\r\n\r\n const cellRewrite = new SpreadsheetRecordDto(cell.value, dimensionRewrite);\r\n\r\n cellsRewrite.push(cellRewrite);\r\n }, valuesBlockRange.RangeName);\r\n\r\n return cellsRewrite;\r\n }\r\n\r\n private BuildDimensionRewrite(sheetId: string, dimensionNumber: number, dimensionRange: SpreadsheetCellRange, valueCellPosition: SpreadsheetCellPosition, fields: string[]) {\r\n const direction = this.GetDimensionDirection(dimensionNumber);\r\n const dimensionCellPosition = direction === SpreadsheetDimensionDirections.Horizontal\r\n ? new SpreadsheetCellPosition(valueCellPosition.Column, dimensionRange.Start.Row)\r\n : new SpreadsheetCellPosition(dimensionRange.Start.Column, valueCellPosition.Row);\r\n\r\n const dimensionValue = this.GetCellValue(sheetId, dimensionCellPosition);\r\n const fieldName = fields[dimensionNumber - 1];\r\n\r\n return new SpreadsheetRecordFieldDto(fieldName, dimensionValue);\r\n }\r\n\r\n private GetDimensionDirection(dimensionNumber: number) {\r\n return dimensionNumber % 2 === 0 ? SpreadsheetDimensionDirections.Vertical : SpreadsheetDimensionDirections.Horizontal;\r\n }\r\n\r\n private AddOrigin(page: SpreadsheetPageData) {\r\n const originCell = new SpreadsheetCellData(this._spreadsheetDescriptor.Origin.PositionName, this._originCellValue, null);\r\n originCell.css = 'origin';\r\n\r\n page.Cells.push(originCell);\r\n }\r\n\r\n private GetOriginPosition(sheetId: string) {\r\n const start = new SpreadsheetCellPosition('A', 1);\r\n const end = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(this._colsCount), this._rowsCount);\r\n const searchRange = `${start.PositionName}:${end.PositionName}`;\r\n\r\n let rowNumber: number = null, columnNumber: number = null;\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n if (cell.value === this._originCellValue) {\r\n rowNumber = rowIndex + 1;\r\n columnNumber = columnIndex + 1;\r\n }\r\n }, searchRange);\r\n\r\n if (rowNumber === null || columnNumber === null) return null;\r\n return new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnNumber), rowNumber);\r\n }\r\n\r\n private GetDimensionRange(sheetId: string, dimensionNumber: number, origin: SpreadsheetCellPosition): SpreadsheetCellRange {\r\n const dimensionStyles = this.GetStylesForDimension(dimensionNumber);\r\n\r\n const start = this.GetDimensionStart(sheetId, origin, dimensionStyles);\r\n if (!start) return null;\r\n\r\n const end = this.GetDimensionEnd(sheetId, start, dimensionStyles);\r\n return new SpreadsheetCellRange(start, end);\r\n }\r\n\r\n private GetDimensionStart(sheetId: string, origin: SpreadsheetCellPosition, dimensionStyles: any) {\r\n const end = this.GetEndOfSpreadsheetPosition();\r\n let searchRange = `${origin.PositionName}:${end.PositionName}`;\r\n\r\n let dimensionStartCell = null;\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n if (dimensionStartCell) {\r\n return;\r\n }\r\n\r\n const cellPosition = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnIndex + 1), rowIndex + 1);\r\n const cellStyles = this.GetStyle(sheetId, cellPosition) as any;\r\n if (cellStyles && cellStyles.background === dimensionStyles.background) {\r\n dimensionStartCell = cellPosition;\r\n }\r\n }, searchRange);\r\n\r\n return dimensionStartCell;\r\n }\r\n\r\n private GetDimensionEnd(sheetId: string, start: SpreadsheetCellPosition, dimensionStyles: any) {\r\n const end = this.GetEndOfSpreadsheetPosition();\r\n let searchRange = `${start.PositionName}:${end.PositionName}`;\r\n\r\n let dimensionEndCell = null;\r\n this.EachCell(sheetId, (rowIndex, columnIndex, cell) => {\r\n const cellPosition = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(columnIndex + 1), rowIndex + 1);\r\n const cellStyles = this.GetStyle(sheetId, cellPosition) as any;\r\n if (cellStyles && cellStyles.background === dimensionStyles.background) {\r\n dimensionEndCell = cellPosition;\r\n }\r\n }, searchRange);\r\n\r\n return dimensionEndCell;\r\n }\r\n\r\n private GetEndOfSpreadsheetPosition() {\r\n return new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(this._colsCount), this._rowsCount);\r\n }\r\n\r\n private AddStylesToHorizontalDimension(page: SpreadsheetPageData, dimension: SpreadsheetDimensionDescriptor) {\r\n const iterableCell = new SpreadsheetCellPosition(dimension.StartPosition.Column, dimension.StartPosition.Row);\r\n const endCell = new SpreadsheetCellPosition(SpreadsheetCellPosition.GetColumnNameByNumber(this._colsCount), iterableCell.Row);\r\n const endCellColumnNumber = endCell.GetColumnNumber();\r\n\r\n while (iterableCell.GetColumnNumber() <= endCellColumnNumber) {\r\n const valueCell = page.GetCell(iterableCell.PositionName);\r\n if (valueCell) {\r\n valueCell.css = `dimension${dimension.Number}`;\r\n } else {\r\n const cell = new SpreadsheetCellData(iterableCell.PositionName, null, dimension.Number);\r\n cell.css = `dimension${dimension.Number}`;\r\n page.Cells.push(cell);\r\n }\r\n iterableCell.Column = iterableCell.GetNextColumnName();\r\n }\r\n }\r\n\r\n private AddStylesToVerticalDimension(page: SpreadsheetPageData, dimension: SpreadsheetDimensionDescriptor) {\r\n const iterableCell = new SpreadsheetCellPosition(dimension.StartPosition.Column, dimension.StartPosition.Row);\r\n const endCell = new SpreadsheetCellPosition(dimension.StartPosition.Column, this._rowsCount);\r\n\r\n while (iterableCell.Row <= endCell.Row) {\r\n let valueCell = page.GetCell(iterableCell.PositionName);\r\n if (valueCell) {\r\n valueCell.css = `dimension${dimension.Number}`;\r\n } else {\r\n valueCell = new SpreadsheetCellData(iterableCell.PositionName, null, dimension.Number);\r\n valueCell.css = `dimension${dimension.Number}`;\r\n page.Cells.push(valueCell);\r\n }\r\n iterableCell.Row++;\r\n }\r\n }\r\n\r\n private AddStylesToValueCells(page: SpreadsheetPageData) {\r\n const dimension1Start = page.Dimensions.find(d => d.Number === 1).StartPosition;\r\n const valuePosition = new SpreadsheetCellPosition(dimension1Start.Column, dimension1Start.Row + 1);\r\n\r\n while (valuePosition.Row <= this._rowsCount) {\r\n while (valuePosition.GetColumnNumber() <= this._colsCount) {\r\n let valueCell = page.GetCell(valuePosition.PositionName);\r\n\r\n if (valueCell) {\r\n valueCell.css = 'value';\r\n } else {\r\n valueCell = new SpreadsheetCellData(valuePosition.PositionName, null, null);\r\n valueCell.css = 'value';\r\n page.Cells.push(valueCell);\r\n }\r\n\r\n valuePosition.Column = valuePosition.GetNextColumnName();\r\n }\r\n\r\n valuePosition.Column = dimension1Start.Column;\r\n valuePosition.Row++;\r\n }\r\n }\r\n\r\n private GetStylesForDimension(dimensionNumber: number) {\r\n return this._styles['dimension' + dimensionNumber];\r\n }\r\n\r\n private GetCellValue(sheetId: string, position: SpreadsheetCellPosition) {\r\n return this.GetPage(sheetId).getValue(position.GetRowIndex(), position.GetColumnIndex());\r\n }\r\n\r\n private GetStyle(sheetId: string, position: SpreadsheetCellPosition) {\r\n const pageName = this.GetPageDisplayName(sheetId);\r\n\r\n let absoluteCell = `${pageName}!${position.PositionName}`;\r\n let style = this._spreadsheet.getStyle(absoluteCell);\r\n\r\n if (!style) {\r\n absoluteCell = `'${pageName}'!${position.PositionName}`;\r\n style = this._spreadsheet.getStyle(absoluteCell);\r\n }\r\n\r\n return style;\r\n }\r\n\r\n private EachCell(sheetId: string, iterator: (rowIndex: number, columnIndex: number, cell: any) => void, searchRange: string) {\r\n this.GetPage(sheetId).eachCell(iterator, searchRange);\r\n }\r\n\r\n private GetPage(sheetId: string) {\r\n return this._spreadsheet._dataStore._pages\r\n .filter(page => !!page)\r\n .find(page => page.getMeta().toolbarId === sheetId);\r\n }\r\n\r\n private GetPageName(sheetId: string): string {\r\n if (this._spreadsheetDescriptor.IsPaged && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n return this._spreadsheet._sheets._pull[sheetId].pageDbId;\r\n }\r\n\r\n return this._spreadsheet.getSheets().find(sheet => sheet.id === sheetId).name;\r\n }\r\n\r\n private GetPageDisplayName(sheetId: string) {\r\n if (this._spreadsheetDescriptor.IsPaged && this._spreadsheetDescriptor.PageField.IsLookup) {\r\n return this._spreadsheet._sheets._pull[sheetId].value;\r\n }\r\n\r\n return this._spreadsheet.getSheets().find(sheet => sheet.id === sheetId).name;\r\n }\r\n\r\n private GetFocusedSheetId() {\r\n return this._spreadsheet._tabbar.data.getItem(this._spreadsheet._focusedSheet).id;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-table\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-control-type=\\\"Spreadsheet-control\\\" class=\\\"FormDesignerView\\\"> <table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension4()}\\\"></td> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension2()}\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <!--ko if: Dimension3--> <td class=\\\"cell cell--violet\\\" data-bind=\\\"text: Dimension3\\\"></td> <!--/ko--> </tr> <tr> <td class=\\\"cell cell--blue\\\" data-bind=\\\"text: Dimension1\\\"></td> </tr> <tr> <td class=\\\"cell cell--grey\\\" data-bind=\\\"text: Dimension4\\\"></td> <td class=\\\"cell cell--orange\\\" data-bind=\\\"text: Dimension2\\\"></td> <td class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: ValueField\\\"></td> </tr> <!--ko if: PageField--> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: PageField\\\"></td> </tr> <!--/ko--> </table> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"spreadsheet-control\\\"> <div class=\\\"spreadsheet-control-header\\\"> <!--ko if: IsLegendReady--> <div class=\\\"legend-icon\\\"> <i class=\\\"fa fa-info-circle text-info\\\" data-bind=\\\"tooltip: {content: GetLegendTemplate()}\\\"></i> </div> <!--/ko--> </div> <div class=\\\"spreadsheet-wrapper\\\"> <div class=\\\"spreadsheet\\\"></div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"spreadsheet-control\\\"> <div class=\\\"spreadsheet-control-header\\\"> <div class=\\\"error\\\" data-bind=\\\"text: Error\\\"></div> <!--ko if: IsLegendReady--> <div class=\\\"legend-icon\\\"> <i class=\\\"fa fa-info-circle text-info\\\" data-bind=\\\"tooltip: {content: GetLegendTemplate()}\\\"></i> </div> <!--/ko--> </div> <div class=\\\"spreadsheet-wrapper\\\"> <div class=\\\"spreadsheet\\\"></div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension4()}\\\"></td> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension2()}\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <!--ko if: Dimension3--> <td class=\\\"cell cell--violet\\\" data-bind=\\\"text: Dimension3\\\"></td> <!--/ko--> </tr> <tr> <td class=\\\"cell cell--blue\\\" data-bind=\\\"text: Dimension1\\\"></td> </tr> <tr> <td class=\\\"cell cell--grey\\\" data-bind=\\\"text: Dimension4\\\"></td> <td class=\\\"cell cell--orange\\\" data-bind=\\\"text: Dimension2\\\"></td> <td class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: ValueField\\\"></td> </tr> <!--ko if: PageField--> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: PageField\\\"></td> </tr> <!--/ko--> </table>\";\n// Exports\nexport default code;","// Module\nvar code = \"<table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension4()}\\\"></td> <td class=\\\"layout-cell\\\" data-bind=\\\"css: {'layout-cell--skipped': !Dimension2()}\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <!--ko if: Dimension3--> <td class=\\\"cell cell--violet\\\" data-bind=\\\"text: Dimension3Translated\\\"></td> <!--/ko--> </tr> <tr> <td class=\\\"cell cell--blue\\\" data-bind=\\\"text: Dimension1Translated\\\"></td> </tr> <tr> <td class=\\\"cell cell--grey\\\" data-bind=\\\"text: Dimension4Translated\\\"></td> <td class=\\\"cell cell--orange\\\" data-bind=\\\"text: Dimension2Translated\\\"></td> <td class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: ValueFieldTranslated\\\"></td> </tr> <!--ko if: PageField--> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\" data-bind=\\\"text: PageFieldTranslated\\\"></td> </tr> <!--/ko--> </table> \";\n// Exports\nexport default code;","import {CONTROL_TYPES} from 'Core/Constant';\r\n\r\nimport {ControlModel} from './BaseControl/Models/ControlModel';\r\nimport {ScreenTypes} from '../Common/Enums/ScreenTypes';\r\n\r\nexport interface IStaticControlsPosition {\r\n ActionBar: ControlModel[],\r\n SubForms: [ControlModel[], ControlModel[], ControlModel[], ControlModel[]],\r\n BottomBar: ControlModel[]\r\n}\r\n\r\nconst DEFAULT_POSITION: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\nexport class StaticControlsProvider {\r\n static ForScreen(type: string, followUp: boolean, isDashMain: boolean): IStaticControlsPosition {\r\n switch (type) {\r\n case ScreenTypes[ScreenTypes.ConsultScreen]:\r\n return this.ForConsultScreen(followUp);\r\n\r\n case ScreenTypes[ScreenTypes.EditScreen]:\r\n return this.ForEditScreen(followUp, isDashMain);\r\n\r\n case ScreenTypes[ScreenTypes.ListScreen]:\r\n return this.ForListScreen();\r\n\r\n case ScreenTypes[ScreenTypes.SpecialScreen]:\r\n return this.ForSpecialScreen();\r\n\r\n default: {\r\n return DEFAULT_POSITION;\r\n }\r\n }\r\n }\r\n\r\n static ForConsultScreen(followUp: boolean): IStaticControlsPosition {\r\n const controlsPosition: IStaticControlsPosition = { ActionBar: [], SubForms: [[], [], [], []], BottomBar: [] };\r\n if (followUp) {\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonFollowUp));\r\n }\r\n\r\n return controlsPosition;\r\n }\r\n\r\n static ForListScreen(): IStaticControlsPosition {\r\n return DEFAULT_POSITION;\r\n }\r\n\r\n static ForSpecialScreen() : IStaticControlsPosition {\r\n return DEFAULT_POSITION;\r\n }\r\n\r\n static ForEditScreen(followUp: boolean, isDashMain: boolean): IStaticControlsPosition {\r\n const controlsPosition: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\n if (isDashMain) {\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.Search));\r\n }\r\n\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonSave));\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonCancel));\r\n\r\n if (followUp) {\r\n controlsPosition.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonFollowUp));\r\n }\r\n\r\n return controlsPosition;\r\n }\r\n\r\n static ForLinkEditor(): IStaticControlsPosition {\r\n const controlModels: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonSave));\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonCancel));\r\n\r\n return controlModels;\r\n }\r\n\r\n static AddForLookupEditorNewRecord() {\r\n const controlModels: IStaticControlsPosition = {ActionBar: [], SubForms: [[], [], [], []], BottomBar: []};\r\n\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonSave));\r\n controlModels.ActionBar.push(this.BuildControlModel(CONTROL_TYPES.ButtonCancel));\r\n\r\n return controlModels;\r\n }\r\n\r\n private static BuildControlModel(typeName: string): ControlModel {\r\n const controlModel = new ControlModel();\r\n\r\n controlModel.TypeName = typeName;\r\n controlModel.Sort = 30;\r\n\r\n return controlModel;\r\n }\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link step-control-steps-item-container\\\"> <div class=\\\"step-control-steps-item-container_wrapper\\\"> <div class=\\\"step-control-steps-item-icon\\\"> <span class=\\\"step-control-steps-icon\\\"> <!-- ko if: _process() --><!-- ko text: Index --><!-- /ko --><!-- /ko --> <!-- ko if: _wait() --><!-- ko text: Index --><!-- /ko --><!-- /ko --> <!-- ko if: _finish() --> <span role=\\\"img\\\" aria-label=\\\"check\\\" class=\\\"anticon anticon-check step-control-steps-finish-icon\\\"> <svg viewBox=\\\"64 64 896 896\\\" focusable=\\\"false\\\" data-icon=\\\"check\\\" width=\\\"1em\\\" height=\\\"1em\\\" fill=\\\"currentColor\\\" aria-hidden=\\\"true\\\"><path d=\\\"M912 190h-69.9c-9.8 0-19.1 4.5-25.1 12.2L404.7 724.5 207 474a32 32 0 00-25.1-12.2H112c-6.7 0-10.4 7.7-6.3 12.9l273.9 347c12.8 16.2 37.4 16.2 50.3 0l488.4-618.9c4.1-5.1.4-12.8-6.3-12.8z\\\"></path></svg> </span> <!-- /ko --> </span> </div> <div class=\\\"step-control-steps-item-content\\\"> <div class=\\\"step-control-steps-item-title\\\" data-bind=\\\"text: Title\\\"> <!-- <div title=\\\"00:00:05\\\" class=\\\"step-control-steps-item-subtitle\\\">00:00:05</div>--> </div> <div class=\\\"step-control-steps-item-description\\\" data-bind=\\\"text: DescriptionToolTipContent ? DescriptionToolTipContent : Description\\\"></div> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </div> </div> </a> \";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class StepDto {\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { StepDto } from '../Models/StepRecordDto';\r\nimport { GenericDeserialize } from '../../../../libs/cerialize';\r\n\r\nexport interface GetStepRecordDto {\r\n\tPreviousStepEntityId: number;\r\n\tPreviousStepRecordId: number;\r\n\r\n\tStepScreenId: Number;\r\n}\r\n\r\nexport class StepApi {\r\n\r\n\tstatic GetStepRecord(params: GetStepRecordDto): P.Promise<StepDto>{\r\n\t\tlet deferredResult = P.defer<StepDto>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/StepApi/GetStepRecord',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize<StepDto>(data, StepDto));\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { RightBarCell } from 'Core/Controls/PlannerLevel/RightBarCell/RightBarCell';\r\nimport * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {RenderModes, EVENTS} from 'Core/Constant'\r\nimport {P} from 'Core/Common/Promise';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IControlParam, IScreen} from 'Core/Screens/IScreen'\r\n\r\nimport Config from 'Core/Controls/StepPage/config.json';\r\nimport ViewTemplate from 'Core/Controls/StepPage/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/StepPage/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/StepPage/Templates/Design.html'\r\nimport type { ProcessCardPage } from '../../Screens/ProcessCardPage/ProcessCardPage';\r\nimport { BlockUI } from '../../Common/BlockUi';\r\nimport { Notifier } from '../Grid/BaseGrid/Index';\r\nimport { StepApi } from '../Step/Stores/StepApi';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\n\r\nko.templates['Core/Controls/StepPage/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/StepPage/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/StepPage/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/StepPage/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class StepPage extends BaseControl {\r\n\t\r\n\tprivate _screen: KnockoutObservable<ProcessCardPage>;\r\n\tStepRecordId: number;\r\n\tStepEntityId: number;\r\n\tIsNewRecord: boolean;\r\n\tprivate _index: number;\r\n\tprotected _process: KnockoutObservable<boolean>;\r\n\tprotected _wait: KnockoutObservable<boolean>;\r\n\tprotected _finish: KnockoutObservable<boolean>;\r\n\tprivate _transactionId: string;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\t\tthis.StepRecordId = 0;\r\n\t\tthis._screen = ko.observable(null);\r\n\t\tthis._index = null;\r\n\t\tthis._process = ko.observable(null);\r\n\t\tthis._wait = ko.observable(null);\r\n\t\tthis._finish = ko.observable(null);\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tthis.GetTemplateName = ko.computed(() => {\r\n\t\t\tvar template = RenderModes[this._renderMode()];\r\n\t\t\tvar templateName = `Core/Controls/StepPage/Templates/${template}`;\r\n\t\t\treturn templateName;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tget IsLinked(): boolean{\r\n\t\treturn this.GeneralProperties.GetPropertyValue('Linked') == true;\r\n\t}\r\n\r\n\tApplyProperties() {\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.ApplyProperties();\r\n\t\tthis._isActive = ko.observable(false);\r\n\t\tthis.AddEvent(EVENTS.ON_TAB_CLICK);\r\n\t}\r\n\r\n\tLoadRecord({entityId, recordId, subjectRecordId, transactionId}: {entityId: number, recordId: number, subjectRecordId, transactionId: string}){\t\t\r\n\t\tthis._transactionId = transactionId;\r\n\t\tif(this.StepRecordId == 0){\r\n\t\t\tBlockUI.Block();\r\n\t\t\tStepApi.GetStepRecord({PreviousStepEntityId: entityId, PreviousStepRecordId: recordId, StepScreenId: this.ScreenId })\r\n\t\t\t.always(()=>{\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((record)=>{\r\n\r\n\t\t\t\tif(!this.IsLinked && record.EntityId == this.Screen.GetEntityId()){\r\n\t\t\t\t\tthis.StepRecordId = subjectRecordId;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.StepRecordId = record.RecordId ? record.RecordId : 0;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.StepEntityId = record.EntityId;\r\n\r\n\t\t\t\tthis.LoadScreen(this._transactionId);\r\n\t\t\t});\t\r\n\t\t}else{\r\n\t\t\tthis.LoadScreen(this._transactionId);\r\n\t\t}\r\n\t}\r\n\r\n\tasync LoadScreen(transactionId: string){\r\n\t\tthis._transactionId = transactionId;\r\n\t\tBlockUI.Block();\r\n\r\n\t\tlet screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\t\tthis.IsNewRecord = this.StepRecordId == 0;\r\n\r\n\t\tif(!this.IsNewRecord){\r\n\t\t\tawait LockManager.Instance.TryLock(this.StepEntityId, this.StepRecordId);\r\n\t\t}\t\t\r\n\r\n\t\tlet screen = (await screenManager.GetScreenById({ ScreenId: this._model().ScreenId, RecordId: this.StepRecordId }));\r\n\t\tif(screen){\r\n\t\t\tthis._screen(screen as ProcessCardPage);\r\n\t\t\tthis._screen().TransactionId = this._transactionId;\t\r\n\t\t}\r\n\t\tBlockUI.Unblock();\r\n\t}\r\n\r\n\tSave(){\r\n\t\tlet deferredResult = P.defer<any>();\r\n\t\tthis._screen().Save(true, false).then((result)=>{\r\n\t\t\tthis.StepRecordId = result.recordId;\r\n\t\t\tdeferredResult.resolve(null);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tget IsActiveTabPage(): boolean {\r\n\t\treturn this._isActive();\r\n\t}\r\n\r\n\tSetValue(value: any): void {}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tthis.Trigger(EVENTS.ON_TAB_CLICK);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n private GetName(): string {\r\n var translationList = this._model().NameTranslations;\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(translationList, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n if (currentLangItem) {\r\n this._getCurrentName = currentLangItem.Translation;\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Name;\r\n }\r\n }\r\n\r\n\tget Title(): string {\r\n\t\treturn this.GetName();\r\n\t}\r\n\r\n\tstatic GetDefaultName() {\r\n\t\treturn 'New step';\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tthis._subControls.push(control);\r\n\t}\r\n\r\n\tSelectRecord({ recordId, transactionId }: { recordId: number, transactionId: string }){\r\n\t\tif(this.Screen.GetEntityId() != this._screen().GetEntityId()){\r\n\t\t\tNotifier.Failed(`There is no process card page with ${this.Screen.GetEntityName()}`);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.StepRecordId = recordId;\r\n\t\tthis.LoadScreen(transactionId);\r\n\t}\r\n\r\n\tget EntityId(): number{\r\n\t\treturn this._screen().GetEntityId();\r\n\t}\r\n\r\n\tget EntityName(): string{\r\n\t\treturn this._screen().GetEntityName();\r\n\t}\r\n\r\n\tget ScreenId(): number{\r\n\t\treturn this._model().ScreenId;\r\n\t}\r\n\r\n\tget Index(): number {\r\n\t\treturn this._index;\r\n\t}\r\n\tset Index(index: number) {\r\n\t\tthis._index = index;\r\n\t}\r\n\r\n\tget Process(): boolean {\r\n\t\treturn this._process();\r\n\t}\r\n\tset Process(process: boolean) {\r\n\t\tthis._process(process);\r\n\t}\r\n\r\n\tget Wait(): boolean {\r\n\t\treturn this._wait();\r\n\t}\r\n\tset Wait(wait: boolean) {\r\n\t\tthis._wait(wait);\r\n\t}\r\n\r\n\tget Finish(): boolean {\r\n\t\treturn this._finish();\r\n\t}\r\n\tset Finish(finish: boolean) {\r\n\t\tthis._finish(finish);\r\n\t}\r\n}","// Module\nvar code = \"<button data-bind=\\\"css: { 'active': _isActive }\\\" class=\\\"tab tab-button\\\"> <div class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveControl.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </div> <a data-bind=\\\"text: Title, click: Click, preventBubble: ['click']\\\" class=\\\"tab-link\\\"></a> <i data-bind=\\\"click: $root.ShowControlEditor.bind($root, $data), preventBubble: ['click']\\\" class=\\\"fa fa-edit\\\"></i> </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link\\\"> <span data-bind=\\\"text: Title\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper step-tabs\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <div class=\\\"nav-steps\\\"> <button data-bind=\\\"click: $data.Previous.bind($data), attr: { disabled: !$data._isEnablePreviousBtn() }\\\" title=\\\"Previous\\\" class=\\\"btn step-btn step-prev\\\"> <span class=\\\"arrow\\\"></span> <span class=\\\"title\\\">Prev</span> </button> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData),\\r\\n afterRender: $rawData.AfterRender.bind($rawData)\\r\\n },\\r\\n css: { 'active': _isActive,\\r\\n 'step-control-steps-item-process': Process,\\r\\n 'step-control-steps-item-wait': Wait,\\r\\n 'step-control-steps-item-finish': Finish\\r\\n },\\r\\n visible: _isVisible,\\r\\n attr:{'title': Title}\\\" class=\\\"tab step-control-steps-item\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> </ul> <button data-bind=\\\"click: $data.Next.bind($data), attr: { disabled: !$data._isEnableNextBtn() }\\\" title=\\\"Next\\\" class=\\\"btn step-btn step-next\\\"> <span class=\\\"arrow\\\"></span> <span class=\\\"title\\\">Next</span> </button> </div> <!--ko with: _currentStepPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content tab-page-result step-page clearfix\\\"> <!-- ko with: $data._screen --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nexport interface IStartTransactionDto {\r\n\tId: string;\r\n}\r\n\r\nexport interface ICommitTransactionDto {\r\n\tId: string;\r\n}\r\n\r\nexport interface IRollbackTransactionDto {\r\n\tId: string;\r\n}\r\n\r\nexport class TransactionApi {\r\n\r\n\tstatic Start(params: IStartTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Start',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Commit(params: ICommitTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Commit',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Continue(params: IRollbackTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Continue',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Rollback(params: IRollbackTransactionDto): P.Promise<number>{\r\n\t\tlet deferredResult = P.defer<number>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/TransactionApi/Rollback',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { Notifier } from 'Core/Common/Notifier';\r\nimport * as ko from 'knockout'\r\n\r\nimport 'lockr';\r\n\r\nimport { BaseControl } from 'Core/Controls/BaseControl/BaseControl'\r\nimport { EVENTS } from 'Core/Constant'\r\nimport { IControlParam, IForm } from 'Core/Screens/IScreen'\r\nimport { IControl } from 'Core/Controls/IControl'\r\nimport {\r\n\tConfirmationDialog,\r\n\tTypes as DialogTypes,\r\n\tEVENTS as DIALOG_EVENTS\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport { NOTIFICATIONS } from 'Core/Components/Translation/Locales';\r\n\r\nimport ViewTemplate from 'Core/Controls/Step/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Step/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/Step/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/Step/Templates/ToolBar.html'\r\nimport { StepPage } from '../StepPage/StepPage';\r\nimport { RecordLinker } from '../../Components/RecordLinker/RecordLinker';\r\nimport { StepApi } from './Stores/StepApi';\r\nimport { TransactionApi } from './Stores/TransactionApi';\r\nimport { Guid } from '../../Common/Guid';\r\nimport { LOCK_EVENTS, LockManager } from \"Core/Components/Locker/LockManager\";\r\n\r\nko.templates['Core/Controls/Step/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Step/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Step/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Step/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Step/Templates/Design'] = DesignTemplate;\r\n\r\nexport class Step extends BaseControl {\r\n\tprivate _currentStepPage: KnockoutObservable<StepPage> = ko.observable(null);\r\n\tprivate _currentStepIndex: KnockoutObservable<number>;\r\n\tprivate _isEnablePreviousBtn: KnockoutComputed<boolean>;\r\n\tprivate _isEnableNextBtn: KnockoutComputed<boolean>;\r\n\tprivate _transactionId: string;\r\n\tprivate _pulseTimer: number;\r\n\tprivate _subjectRecordId: number;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._currentStepIndex = ko.observable(0);\r\n\r\n\t\tthis._isEnablePreviousBtn = ko.computed(() => {\r\n\t\t\treturn this._currentStepPage() && this._currentStepIndex() != 0;\r\n\t\t});\r\n\r\n\t\tthis._isEnableNextBtn = ko.computed(() => {\r\n\t\t\treturn !!this._currentStepPage();\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t\tthis.AddEvent('FINISH_PROCESS');\r\n\t}\r\n\r\n\tApplyProperties() { }\r\n\r\n\tget Tabs() {\r\n\t\treturn this._subControls;\r\n\t}\r\n\r\n\tGetForm(): IForm {\r\n\t\treturn this._form;\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis.On('AFTER_RENDER', this, () => {\r\n\r\n\t\t\tif (this.IsRunTime && !this.Screen.IsInModal()) {\r\n\t\t\t\tthis._transactionId = Guid.NewGuid();\r\n\t\t\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\t\t\tthis.RestartPulseTransaction();\r\n\t\t\t\t\tthis._currentStepPage()?.LoadScreen(this._transactionId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tko.utils.domNodeDisposal.addDisposeCallback(this._el, () => this.Dispose())\r\n\t\t});\r\n\r\n\t\tthis.SetActiveTab(0);\r\n\r\n\t\tthis._subControls().forEach((page: StepPage, index) => {\r\n\t\t\tpage.Index = index + 1;\r\n\t\t\tpage.Wait = !page.Process;\r\n\t\t\tpage.On(EVENTS.ON_TAB_CLICK, this, (eventArgs: any) => {\r\n\t\t\t\tif (this._currentStepPage() == page) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst tabPage = <StepPage>eventArgs.source;\r\n\t\t\t\tthis.SetActiveTabPage(tabPage);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tSetActiveTabPage(tabPage: StepPage) {\r\n\t\tconst currentPage = this._currentStepPage();\r\n\r\n\t\tif (currentPage) {\r\n\r\n\t\t\tif (tabPage) {\r\n\t\t\t\tconst canSwitchToAdjacentTab = Math.abs(currentPage.Index - tabPage.Index) === 1;\r\n\t\t\t\tif (!canSwitchToAdjacentTab && this.IsRunTime) {\r\n\t\t\t\t\tNotifier.Warning('Can switch only to adjacent Step');\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.IsRunTime) {\r\n\t\t\t\tcurrentPage.Save().then(() => {\r\n\t\t\t\t\tcurrentPage.Finish = true;\r\n\t\t\t\t\tcurrentPage.Process = false;\r\n\t\t\t\t\tif (currentPage.IsNewRecord) {\r\n\t\t\t\t\t\tthis.CreateLink();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcurrentPage.SetIsActive(false);\r\n\r\n\t\t\t\t\tif (tabPage) {\r\n\r\n\t\t\t\t\t\ttabPage.LoadRecord({ entityId: currentPage.EntityId, recordId: currentPage.StepRecordId, subjectRecordId: this._subjectRecordId, transactionId: this._transactionId });\r\n\r\n\t\t\t\t\t\ttabPage.SetIsActive(true);\r\n\t\t\t\t\t\ttabPage.Finish = false;\r\n\t\t\t\t\t\ttabPage.Wait = false;\r\n\t\t\t\t\t\ttabPage.Process = true;\r\n\r\n\t\t\t\t\t\tthis._currentStepIndex(this._subControls().indexOf(tabPage));\r\n\t\t\t\t\t\tthis._currentStepPage(tabPage);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tTransactionApi.Commit({ Id: this._transactionId }).then(() => {\r\n\t\t\t\t\t\t\tthis.ReleaseLock();\r\n\t\t\t\t\t\t\tthis.Trigger('FINISH_PROCESS');\r\n\t\t\t\t\t\t\tclearInterval(this._pulseTimer);\r\n\t\t\t\t\t\t\tthis._currentStepPage(null);\r\n\t\t\t\t\t\t\tthis._transactionId = null;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.IsDesignTime) {\r\n\t\t\t\tcurrentPage.SetIsActive(false);\r\n\t\t\t\ttabPage.SetIsActive(true);\r\n\t\t\t\tthis._currentStepIndex(this._subControls().indexOf(tabPage));\r\n\t\t\t\tthis._currentStepPage(tabPage);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tReleaseLock() {\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tlet stepPage = subControl as StepPage;\r\n\t\t\tLockManager.Instance.ReleaseLock(stepPage.StepEntityId, stepPage.StepRecordId);\r\n\t\t});\r\n\t}\r\n\r\n\tCreateLink() {\r\n\t\tlet previousPage: StepPage = this._subControls()[this._subControls().indexOf(this._currentStepPage()) - 1] as StepPage;\r\n\t\tconst relatedEntityName = this._currentStepPage().EntityName;\r\n\t\tif (previousPage) {\r\n\t\t\tconst mainEntityName = previousPage.EntityName;\t\t\t\r\n\t\t\tRecordLinker.LinkRecord({ TransactionId: this._transactionId, MainTableId: previousPage.EntityId, MainRecordId: previousPage.StepRecordId, LinkedTableId: this._currentStepPage().EntityId, LinkedRecordId: this._currentStepPage().StepRecordId })\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tNotifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n\t\t\t\t\t\t\t.replace('{entity1}', mainEntityName)\r\n\t\t\t\t\t\t\t.replace('{entity2}', relatedEntityName));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tif(previousPage.EntityId != this.Screen.GetEntityId() || (previousPage.EntityId == this.Screen.GetEntityId() && previousPage.StepRecordId != this._subjectRecordId)){\r\n\t\t\t\tRecordLinker.LinkRecord({ TransactionId: this._transactionId, MainTableId: this.Screen.GetEntityId(), MainRecordId: this._subjectRecordId, LinkedTableId: this._currentStepPage().EntityId, LinkedRecordId: this._currentStepPage().StepRecordId })\r\n\t\t\t\t.then((result) => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tNotifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n\t\t\t\t\t\t\t.replace('{entity1}', mainEntityName)\r\n\t\t\t\t\t\t\t.replace('{entity2}', relatedEntityName));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}else{\t\t\t\r\n\t\t\tRecordLinker.LinkRecord({ TransactionId: this._transactionId, MainTableId: this.Screen.GetEntityId(), MainRecordId: this._subjectRecordId, LinkedTableId: this._currentStepPage().EntityId, LinkedRecordId: this._currentStepPage().StepRecordId })\r\n\t\t\t.then((result) => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tNotifier.Failed(NOTIFICATIONS.COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES\r\n\t\t\t\t\t\t.replace('{entity1}', this.Screen.GetEntityName())\r\n\t\t\t\t\t\t.replace('{entity2}', relatedEntityName));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tSetActiveTab(tabIndex: number) {\r\n\t\tconst subControls = this._subControls();\r\n\t\tif (subControls[tabIndex]) {\r\n\t\t\tconst tab = <StepPage>subControls[tabIndex];\r\n\t\t\tif (this._currentStepPage()) {\r\n\t\t\t\tthis._currentStepPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttab.SetIsActive(true);\r\n\t\t\ttab.Finish = false;\r\n\t\t\ttab.Wait = false;\r\n\t\t\ttab.Process = true;\r\n\t\t\tthis._currentStepPage(tab);\r\n\t\t\tthis._currentStepIndex(tabIndex);\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: any): void {\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tvar stepPage = control as StepPage;\r\n\t\tthis._subControls.push(control);\r\n\r\n\t\tif (this._currentStepPage()) {\r\n\t\t\tthis._currentStepPage().SetIsActive(false);\r\n\t\t}\r\n\t\tstepPage.SetIsActive(true);\r\n\t\tthis._currentStepPage(stepPage);\r\n\r\n\t\tstepPage.On(EVENTS.ON_TAB_CLICK, this, () => {\r\n\t\t\tif (this._currentStepPage()) {\r\n\t\t\t\tthis._currentStepPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\tstepPage.SetIsActive(true);\r\n\t\t\tthis._currentStepPage(stepPage);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tRemoveControl(control: IControl) {\r\n\t\tvar wrappers = new Array<Element>(control.GetWrapper());\r\n\r\n\t\t_.each(this._currentStepPage().GetAllSubControls(),\r\n\t\t\t(subControl) => {\r\n\t\t\t\twrappers.push(subControl.GetWrapper());\r\n\t\t\t});\r\n\r\n\t\twrappers.map((el) => {\r\n\t\t\t$(control.GetWrapper()).add(el).fadeOut('slow', () => {\r\n\t\t\t\tvar subControls = this._subControls();\r\n\t\t\t\tvar tabPage = control as StepPage;\r\n\t\t\t\tthis._subControls.remove(control);\r\n\r\n\t\t\t\tif (tabPage.GetIsActive()) {\r\n\t\t\t\t\tif (this._currentStepIndex() <= subControls.length - 1) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentStepIndex());\r\n\t\t\t\t\t} else if (this._currentStepIndex() > 0) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentStepIndex() - 1);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._currentStepPage(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.SetActiveTabPage(this._currentStepPage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\t(this.GetForm().GetScreen() as any).OnControlRemoved(control);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tPrevious() {\r\n\t\tconst tabPage = this._subControls()[this._subControls().indexOf(this._currentStepPage()) - 1] as StepPage;\r\n\t\tthis.SetActiveTabPage(tabPage);\r\n\t}\r\n\r\n\tNext() {\r\n\t\tconst tabPage = this._subControls()[this._subControls().indexOf(this._currentStepPage()) + 1] as StepPage;\r\n\t\tthis.SetActiveTabPage(tabPage);\r\n\t}\r\n\r\n\tget CurrentTabPage(): StepPage {\r\n\t\treturn this._currentStepPage();\r\n\t}\r\n\r\n\tSelectRecord({ recordId }: { recordId: number }) {\r\n\t\tthis.SetActiveTab(0);\r\n\r\n\t\tif (this._transactionId) {\r\n\t\t\tTransactionApi.Rollback({ Id: this._transactionId }).then(() => {\r\n\t\t\t\tthis._transactionId = Guid.NewGuid();\r\n\r\n\t\t\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\t\t\tthis.RestartPulseTransaction();\r\n\t\t\t\t\tthis._currentStepPage().SelectRecord({ recordId, transactionId: this._transactionId });\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tthis._transactionId = Guid.NewGuid();\r\n\r\n\t\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\t\tthis.RestartPulseTransaction();\r\n\t\t\t\tthis._currentStepPage().SelectRecord({ recordId, transactionId: this._transactionId });\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tSelectRecord2({ recordId }: { recordId: number }) {\r\n\t\tthis.SetActiveTab(0);\r\n\t\tthis._subjectRecordId = recordId;\r\n\t\tthis._transactionId = Guid.NewGuid();\r\n\t\tTransactionApi.Start({ Id: this._transactionId }).then(() => {\r\n\t\t\tthis.RestartPulseTransaction();\r\n\t\t\tthis._currentStepPage()?.LoadRecord({ entityId: this.Screen.GetEntityId(), recordId, subjectRecordId: this._subjectRecordId, transactionId: this._transactionId });\r\n\t\t});\r\n\t}\r\n\r\n\tDispose(): void {\r\n\t\tif (this._transactionId) {\r\n\t\t\tclearInterval(this._pulseTimer);\r\n\t\t\tTransactionApi.Rollback({ Id: this._transactionId });\r\n\t\t\tthis.ReleaseLock();\r\n\t\t}\r\n\t}\r\n\r\n\tRestartPulseTransaction() {\r\n\t\tclearInterval(this._pulseTimer);\r\n\t\tthis._pulseTimer = setInterval(() => {\r\n\t\t\tTransactionApi.Continue({ Id: this._transactionId });\r\n\t\t}, 10000);\r\n\t}\r\n} ","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> <!-- ko if: _isHiddenExist --> <li class=\\\"dropdown tabdrop\\\"> <a class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" href=\\\"#\\\" aria-expanded=\\\"false\\\"><i class=\\\"fa fa-ellipsis-v\\\"></i><b class=\\\"caret\\\"></b></a><ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _subControls --> <!-- ko if: !$data.GetIsVisible() --> <li class=\\\"active\\\"> <a data-bind=\\\"text: Label, click: $parent.SetTabIsVisible.bind($parent)\\\" href=\\\"#\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\">Section test</a> </li> <!-- /ko --> <!-- /ko --> </ul> </li> <li><a data-bind=\\\"click: $data.ShowAll.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.SHOW_ALL --><!-- /ko --></a></li> <!-- /ko --> <!-- ko ifnot: _isHiddenExist --> <li data-bind=\\\"visible: _isShowHideButton\\\"><a data-bind=\\\"click: $data.SetTabsHidden.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.HIDE --><!-- /ko --></a></li> <!-- /ko --> </ul> <!--ko with: _currentTabPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\"> <ul data-bind=\\\"dragula: {\\r\\n\\t\\t\\t\\t\\t\\tdata: _subControls,\\r\\n\\t\\t\\t\\t\\t\\tgroup: 'ToolBarToDesigner',\\r\\n\\t\\t\\t\\t\\t\\tafterDrop: $root.AfterDropTapPageControl.bind($root)\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"nav nav-tabs\\\"> <li class=\\\"tab tab-button parent-control FormDesignerView\\\" data-bind=\\\"css: {'active': IsActiveTabPage}\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </li> <!-- ko if: $index() === ($parent._subControls().length -1) --> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateStepPage.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"tab-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> <!-- /ko --> </ul> <!-- ko if: _subControls().length === 0 --> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateStepPage.bind($root), preventBubble: ['click']\\\" class=\\\"tab-link create-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> </ul> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link\\\"> <span class=\\\"spreadsheet-background no-select\\\" data-bind=\\\"style: { backgroundColor: _tabSpreadsheetBackground() }, visible: _hasSpreadsheet\\\"></span> <span data-bind=\\\"text: Title\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </a> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {RenderModes, EVENTS} from 'Core/Constant'\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {IControlParam} from 'Core/Screens/IScreen'\r\n\r\nimport TabPageConfigJson from \"Core/Controls/TabPage/Config/tab-page-config.json\";\r\n\r\nimport ViewTemplate from 'Core/Controls/TabPage/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/TabPage/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/TabPage/Templates/Design.html'\r\n\r\nko.templates['Core/Controls/TabPage/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/TabPage/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/TabPage/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/TabPage/Templates/Edit'] = ViewTemplate;\r\n\r\nexport class TabPage extends BaseControl {\r\n\t\r\n\tprivate _isTabSecurityProperties: KnockoutObservable<boolean>;\r\n\t_tabSpreadsheetBackground: KnockoutObservable<string>;\r\n\t_hasSpreadsheet: boolean;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, TabPageConfigJson);\r\n\t\tthis._isTabSecurityProperties = ko.observable(false);\r\n\t\tthis._tabSpreadsheetBackground = ko.observable(null);\r\n\t\tthis._hasSpreadsheet = null;\r\n\t\tthis.Init();\r\n\r\n\t\tthis.GetTemplateName = ko.computed(() => {\r\n\t\t\tvar template = RenderModes[this._renderMode()];\r\n\t\t\tvar templateName = `Core/Controls/TabPage/Templates/${template}`;\r\n\t\t\treturn templateName;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tApplyProperties() {\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tthis._isActive = ko.observable(false);\r\n\t\tthis.AddEvent(EVENTS.ON_TAB_CLICK);\r\n\t}\r\n\r\n\tget IsActiveTabPage(): boolean {\r\n\t\treturn this._isActive();\r\n\t}\r\n\r\n\tSetSpreadsheetBackground(color: string): void {\r\n\t\tthis._tabSpreadsheetBackground(color);\r\n\t}\r\n\tSetHasSpreadsheet(data: boolean): void {\r\n\t\tthis._hasSpreadsheet = data;\r\n\t}\r\n\r\n\tSetValue(value: any): void {}\r\n\r\n\tClick(): void {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowControlHelp(this);\r\n\t\t} else {\r\n\t\t\tthis.Trigger(EVENTS.ON_TAB_CLICK);\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n private GetName(): string {\r\n var translationList = this._model().NameTranslations;\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(translationList, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n if (currentLangItem) {\r\n this._getCurrentName = currentLangItem.Translation;\r\n }\r\n\r\n if (this._getCurrentName) {\r\n return this._getCurrentName;\r\n } else {\r\n return this._model().Name;\r\n }\r\n }\r\n\r\n\tget Title(): string {\r\n\t\treturn this.GetName() || TabPage.GetDefaultName();\r\n\t}\r\n\r\n\tIsTabSecurityProperties(): boolean {\r\n\t\t_.each(this.GeneralProperties.Groups, (group) => {\r\n\t\t\tlet tabSecurityProperty = group.Properties.filter(property => property.Type === 'TabSecurity');\r\n\r\n\t\t\tif (tabSecurityProperty) {\r\n\t\t\t\t_.each(tabSecurityProperty, (propertyModel)=>{\r\n\r\n\t\t\t\t\tif (!!propertyModel.Value && propertyModel.Value.TabSecuritySettings.length >= 1){\r\n\t\t\t\t\t\tthis._isTabSecurityProperties(true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._isTabSecurityProperties(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t} else {\r\n\t\t\t\tthis._isTabSecurityProperties(false);\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn this._isTabSecurityProperties();\r\n\t}\r\n\r\n\tget TabSecurityProperties(): boolean {\r\n\t\treturn this.IsTabSecurityProperties();\r\n\t}\r\n\r\n\tstatic GetDefaultName() {\r\n\t\treturn LABELS.NEW_TAB;\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tvar isValid = true;\r\n\t\t_.each(this._subControls(), control => {\r\n\t\t\tif (!control.IsValid()) {\r\n\t\t\t\tisValid = false;\r\n\t\t\t\tthis.SetIsVisible(true);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._isValid(isValid);\r\n\t\treturn true;\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tthis._subControls.push(control);\r\n\t}\r\n}","// Module\nvar code = \"<button data-bind=\\\"css: { 'active': _isActive }\\\" class=\\\"tab tab-button\\\"> <div class=\\\"close-wrapper\\\"> <span data-bind=\\\"click: $root.RemoveControl.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"close remove-control\\\" title=\\\"Remove control\\\"> <svg viewBox=\\\"0 0 24 24\\\" style=\\\"\\\"> <path d=\\\"M22.2,4c0,0,0.5,0.6,0,1.1l-6.8,6.8l6.9,6.9c0.5,0.5,0,1.1,0,1.1L20,22.3c0,0-0.6,0.5-1.1,0L12,15.4l-6.9,6.9c-0.5,0.5-1.1,0-1.1,0L1.7,20c0,0-0.5-0.6,0-1.1L8.6,12L1.7,5.1C1.2,4.6,1.7,4,1.7,4L4,1.7c0,0,0.6-0.5,1.1,0L12,8.5l6.8-6.8c0.5-0.5,1.1,0,1.1,0L22.2,4z\\\"></path> </svg> </span> </div> <a data-bind=\\\"text: Title, click: Click, preventBubble: ['click']\\\" class=\\\"tab-link\\\"></a> <i data-bind=\\\"click: $root.ShowControlEditor.bind($root, $data), preventBubble: ['click']\\\" class=\\\"fa fa-edit\\\"></i> <i data-bind=\\\"visible: TabSecurityProperties || _isTabSecurityProperties()\\\" class=\\\"fa fa-info-circle tabSecurityPropertiesIcon\\\"></i> </button>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a data-bind=\\\"click: Click, css: {'has-error': !_isValid()}\\\" class=\\\"tab-link\\\"> <span data-bind=\\\"text: Title\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}\\\" class=\\\"fa fa-warning control-tooltip\\\" title=\\\"This tab has required field\\\"></i> </a> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko if: IsTabs --> <div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible, attr:{'title': Title}\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> <!-- ko if: _isHiddenExist --> <li class=\\\"dropdown tabdrop\\\"> <a class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" href=\\\"#\\\" aria-expanded=\\\"false\\\"><i class=\\\"fa fa-ellipsis-v\\\"></i><b class=\\\"caret\\\"></b></a><ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _subControls --> <!-- ko if: !$data.GetIsVisible() --> <li class=\\\"active\\\"> <a data-bind=\\\"text: Label, click: $parent.SetTabIsVisible.bind($parent)\\\" href=\\\"#\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\">Section test</a> </li> <!-- /ko --> <!-- /ko --> </ul> </li> <li><a data-bind=\\\"click: $data.ShowAll.bind($data), attr:{'title': _labels.SHOW_ALL}\\\" class=\\\"tabShowAll\\\"><!-- ko text: _labels.SHOW_ALL --><!-- /ko --></a></li> <!-- /ko --> <!-- ko ifnot: _isHiddenExist --> <li data-bind=\\\"visible: _isShowHideButton\\\"><a data-bind=\\\"click: $data.SetTabsHidden.bind($data), attr:{'title': _labels.HIDE}\\\" class=\\\"tabHideButton\\\"><!-- ko text: _labels.HIDE --><!-- /ko --></a></li> <!-- /ko --> </ul> <!--ko with: _currentTabPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content tab-page-result clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\n\r\nimport 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\n\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {CONTROL_TYPES, EVENTS, RenderModes} from 'Core/Constant'\r\nimport {IControlParam, IForm} from 'Core/Screens/IScreen'\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\n\r\nimport {\r\n\tConfirmationDialog, EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n\tTypes as ConfirmationTypes\r\n} from \"../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {LABELS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {SpreadsheetControl} from \"../Spreadsheet/SpreadsheetControl\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Tab/Templates/View.html'\r\nimport HelpViewTemplate from 'Core/Controls/Tab/Templates/HelpView.html'\r\nimport DesignTemplate from 'Core/Controls/Tab/Templates/Design.html'\r\nimport ToolBarTemplate from 'Core/Controls/Tab/Templates/ToolBar.html'\r\nimport {EntityTypes} from \"Core/Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {Agenda} from \"../Agenda/Agenda\";\r\n\r\nko.templates['Core/Controls/Tab/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Tab/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Tab/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Tab/Templates/Edit'] = ViewTemplate;\r\nko.templates['Core/Controls/Tab/Templates/Design'] = DesignTemplate;\r\n\r\nexport const SpreadsheetStatusColor = {\r\n\tVALID: \"#5ad539\",\r\n\tNOT_VALID: \"#FF3838\",\r\n\tEMPTY: \"#A4ABB6\"\r\n};\r\n\r\nexport class Tab extends BaseControl {\r\n\tprivate _currentTabPage: KnockoutObservable<TabPage> = ko.observable(null);\r\n\tprivate _currentTabIndex: number;\r\n\tprivate _dateRange: number;\r\n\tprivate _isHiddenExist: KnockoutObservable<boolean>;\r\n\tprivate _isShowHideButton: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params);\r\n\t\tthis._currentTabIndex = 0;\r\n\t\tthis._dateRange = 5;\r\n\t\tthis._isHiddenExist = ko.observable(false);\r\n\t\tthis._isShowHideButton = ko.observable(false);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n ApplyProperties(){}\r\n\r\n\tget Tabs() {\r\n\t\treturn this._subControls;\r\n\t}\r\n\r\n\tGetForm(): IForm {\r\n\t\treturn this._form;\r\n\t}\r\n\r\n\tget IsTabs(): boolean{\r\n\t\treturn (this._subControls().length > 0);\r\n\t}\r\n\r\n\tSpreadsheetSetActiveTabPage(page: TabPage, pageHasSpreadsheet: boolean, subControlsArr: IControl[], eventArgs: any): void {\r\n\t\tconst tabPage = <TabPage>eventArgs.source;\r\n\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: CONFIRMATIONS.YOU_CAN_LOSE_UNSAVED_DATA_IF_YOU_LEAVE,\r\n\t\t\tType: ConfirmationTypes.Question,\r\n\t\t\tTextConfirm: LABELS.OK,\r\n\t\t\tTextDecline: LABELS.CANCEL\r\n\t\t});\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.ChangeTabPageBackground(page, pageHasSpreadsheet, subControlsArr);\r\n\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\treturn;\r\n\t\t});\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tIsSpreadsheetValid(page: TabPage) {\r\n\t\t_.each(page.GetSubControls(), control => {\r\n\t\t\tif (control instanceof SpreadsheetControl) {\r\n\t\t\t\treturn control.IsValid();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate Init(): void {\r\n\t\tconst hidingDays = GlobalManager.Instance.GetGlobal(GLOBALS.TAB_HIDING_DAYS);\r\n\t\tconst subControls = this._subControls();\r\n const controlId = this.GetControlId();\r\n\r\n\t\tif (hidingDays) {\r\n\t\t\tthis._dateRange = parseInt(hidingDays);\r\n\t\t}\r\n\r\n\t\tconst spreadsheetControls: IControl[] = _.filter(subControls,(control: IControl)=> control.HasSubControl('Spreadsheet'));\r\n\t\tconst emptySpreadsheets: boolean = _.every(spreadsheetControls, (control)=> control.HasSubControl('Spreadsheet') && !control.GetModel().HasSpreadsheetData);\r\n\t\tconst thereAreSeveralSpreadsheet = spreadsheetControls.length && spreadsheetControls.length > 1;\r\n\t\t// let isValidSpreadsheet: IControl = _.find(subControls,(control: IControl)=> control.GetModel().HasSpreadsheet && control.GetModel().HasSpreadsheetData);\r\n\t\t// let isValidGreySpreadsheet: IControl = _.find(subControls,(control: IControl)=> control.GetModel().HasSpreadsheet && control.GetModel()._tabSpreadsheetBackground() === '#5ad539');\r\n\r\n\t\tsubControls.forEach((page: TabPage, num: number, subControlsArr: IControl[]) => {\r\n\t\t\tconst pageHasSpreadsheet = page.HasSubControl('Spreadsheet');\r\n\t\t\tpage.SetHasSpreadsheet(pageHasSpreadsheet);\r\n\t\t\tthis.SetTabPageBackground(page, pageHasSpreadsheet, emptySpreadsheets);\r\n\r\n page.On(EVENTS.ON_TAB_CLICK, this, (eventArgs: any) => {\r\n const tabPage = <TabPage>eventArgs.source;\r\n\t\t\t\tlet currentPageHasSpreadsheet: boolean = this._currentTabPage().HasSubControl('Spreadsheet');\r\n\r\n\t\t\t\tif (pageHasSpreadsheet && this._renderMode() === RenderModes.Edit && thereAreSeveralSpreadsheet){\r\n\r\n\t\t\t\t\t// _.each(page.GetSubControls(), (control)=>{\r\n\t\t\t\t\t// \tif (control instanceof SpreadsheetControl){\r\n\t\t\t\t\t// \t\tcontrol.IsValid();\r\n\t\t\t\t\t// \t\tdebugger;\r\n\t\t\t\t\t// \t}\r\n\t\t\t\t\t// })\r\n\t\t\t\t\tif (this.IsSpreadsheetValid(tabPage)) {\r\n\t\t\t\t\t\tthis.ChangeTabPageSpreadsheetLogic(pageHasSpreadsheet, currentPageHasSpreadsheet, emptySpreadsheets, page, subControlsArr, eventArgs);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (currentPageHasSpreadsheet && this._renderMode() === RenderModes.Edit && thereAreSeveralSpreadsheet) {\r\n\t\t\t\t\t\tif (this.IsSpreadsheetValid(tabPage)) {\r\n\t\t\t\t\t\t\tthis.SpreadsheetSetActiveTabPage(page, pageHasSpreadsheet, subControlsArr, eventArgs);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.IsSpreadsheetValid(tabPage)) {\r\n\t\t\t\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n });\r\n });\r\n\r\n\t\tlet validSpreadsheet = _.find(spreadsheetControls, (control: IControl)=> control.GetModel().HasSpreadsheetData);\r\n\t\tif (validSpreadsheet && thereAreSeveralSpreadsheet) {\r\n\t\t\tlet spreadsheetActiveTabPage = validSpreadsheet as TabPage;\r\n\t\t\tthis.SetActiveTabPage(spreadsheetActiveTabPage, spreadsheetActiveTabPage.GetParentControl().GetControlId());\r\n\t\t}\r\n\r\n\t\tconst tabsParams = UserVarsManager.Instance.GetTabsParams();\r\n\t\tconst activityStorage = tabsParams ? tabsParams.tabsActivityStorage || {} : {};\r\n\r\n\t\tif (_.isEmpty(activityStorage[controlId])) {\r\n\t\t\tconst startDate = new Date();\r\n\t\t\tthis._isHiddenExist(false);\r\n\t\t\tstartDate.setDate(startDate.getDate() - 1);\r\n\t\t\tactivityStorage[controlId] = {};\r\n subControls.forEach(control => activityStorage[controlId][control.GetControlId()] = startDate.getTime());\r\n\r\n\t\t\tUserVarsManager.Instance.SetTabsParams(null, activityStorage);\r\n\t\t} else {\r\n\t\t\tthis.SetTabsHidden();\r\n\t\t}\r\n\r\n\t\tlet tab = this.GetSourceTab() || this.GetPreselectTab();\r\n\t\tconst activeTab = tab as TabPage;\r\n\t\tLockr.rm(LOCAL_STORAGE.HYPERLINK_SOURCE);\r\n\r\n\t\tif (activeTab) {\r\n\t\t\tthis.ActiveTabSetSpreadsheetBackground(activeTab);\r\n\t\t\tactiveTab.SetIsVisible(true);\r\n\t\t\tthis.SetActiveTab(subControls.indexOf(activeTab));\r\n\t\t\tthis.SetTabIsVisible(<TabPage>activeTab);\r\n\r\n this.SetActiveTabPage(<TabPage>activeTab);\r\n\t\t} else {\r\n const firstVisible: IControl | TabPage = subControls.find((subControl: IControl | TabPage) => subControl.GetIsVisible());\r\n\r\n if (firstVisible) {\r\n\t\t\t\tthis.ActiveTabSetSpreadsheetBackground(firstVisible as TabPage);\r\n this.SetActiveTabPage(<TabPage>firstVisible);\r\n } else if (subControls.length >= 1) {\r\n\t\t\t\tthis.ActiveTabSetSpreadsheetBackground(subControls[0] as TabPage);\r\n subControls[0].SetIsVisible(true);\r\n this.SetActiveTabPage(<TabPage>subControls[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ActiveTabSetSpreadsheetBackground(activeTab: TabPage): void {\r\n\t\tif (activeTab && activeTab.HasSubControl('Spreadsheet')) {\r\n\t\t\tactiveTab.SetSpreadsheetBackground(SpreadsheetStatusColor.VALID);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetPreselectTab() {\r\n\t\tlet preSelectedTab = UserVarsManager.Instance.GetTabsParams();\r\n\t\tif (preSelectedTab && this._form) {\r\n\t\t\tconst preselectedTabData: any = _.where(preSelectedTab.activeTabPageCIDs, {screenId: this._form.GetScreen().GetScreenId()})[0];\r\n\t\t\tif (!preselectedTabData) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\tvar tabToSelect = <TabPage>this._subControls().filter((control) => {\r\n\t\t\t\treturn control.GetControlId() === preselectedTabData.activeTabPageCID;\r\n\t\t\t})[0];\r\n\t\t\tif (tabToSelect) {\r\n\t\t\t\treturn tabToSelect;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate GetSourceTab() {\r\n\t\tconst sourceEntityId = parseInt(Lockr.get(LOCAL_STORAGE.HYPERLINK_SOURCE));\r\n\r\n\t\tif (!sourceEntityId) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst tabPageControls = this.GetSubControls();\r\n\t\tconst tabPageSubControls = _.flatten(tabPageControls.map(tabPage => tabPage.GetSubControls()));\r\n\t\tconst gridControls = tabPageSubControls.filter(control => control.GetType() === CONTROL_TYPES.Grid);\r\n\r\n\t\tconst sourceGrid = _.find<BaseControl>(gridControls, grid => {\r\n\t\t\tconst attachedField = _.find(grid.Model.Fields, (field: AttachedFieldModel) => field.EntityTypeName === EntityTypes[EntityTypes.Entity]);\r\n\t\t\treturn attachedField && attachedField.EntityId === sourceEntityId;\r\n\t\t});\r\n\r\n\t\treturn sourceGrid && sourceGrid.GetParentControl();\r\n\t}\r\n\r\n\tSetTabsHidden() {\r\n\t\tconst tabParams = UserVarsManager.Instance.GetTabsParams();\r\n\t\tconst activityStorage = tabParams ? tabParams.tabsActivityStorage : {};\r\n\t\tconst subControls = this._subControls();\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tif(subControls.length > 1) {\r\n\t\t\tlet hiddenTabs = 0;\r\n\t\t\tsubControls.forEach(control => {\r\n const activeDate = activityStorage[controlId][control.GetControlId()];\r\n if (activeDate) {\r\n const oneDay = 86400000;\r\n const date1 = new Date(activeDate);\r\n const date2 = new Date();\r\n const diffDays = Math.round(Math.abs((date2.getTime() - date1.getTime()) / (oneDay)));\r\n\r\n if (diffDays > this._dateRange && !control.GetIsActive()) {\r\n control.SetIsVisible(false);\r\n this._isHiddenExist(true);\r\n hiddenTabs++\r\n }\r\n }\r\n\t\t\t});\r\n\t\t\tif(hiddenTabs === subControls.length) {\r\n const activeTab = <TabPage>(subControls.find(control => control.GetIsActive()) || subControls[0]);\r\n this.SetActiveTabPage(activeTab);\r\n this.SetTabIsVisible(activeTab);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._isShowHideButton(false);\r\n\t}\r\n\r\n\tSetActiveTabPage(tabPage: TabPage, parentControlId?: number) {\r\n const controlId = this.GetControlId();\r\n const subControls = this._subControls();\r\n\t\tconst currentPage = this._currentTabPage();\r\n const tabControlId = tabPage.GetControlId();\r\n const activeSubControl = tabPage.GetAllSubControls().find(control => control.GetIsActive());\r\n const firstSubControl = tabPage.GetAllSubControls().length && tabPage.GetAllSubControls().length > 1 ? tabPage.GetAllSubControls()[1].GetControlId() : null;\r\n const activeSubControlId = (activeSubControl) ? activeSubControl.GetControlId() : firstSubControl;\r\n const storageTabsParams = UserVarsManager.Instance.GetTabsParams();\r\n const activityStorage = storageTabsParams ? storageTabsParams.tabsActivityStorage : {};\r\n const isShowHideButton = this._isShowHideButton();\r\n\r\n\t\tif (currentPage) {\r\n currentPage.SetIsActive(false);\r\n\t\t}\r\n\r\n\t\ttabPage.SetIsActive(true);\r\n\r\n\t\tthis._currentTabIndex = this._subControls().indexOf(tabPage);\r\n\t\tthis._currentTabPage(tabPage);\r\n\r\n\t\tif (parentControlId) {\r\n\t\t\tif (!activityStorage[parentControlId]) {\r\n\t\t\t\tactivityStorage[parentControlId] = {};\r\n\t\t\t}\r\n\t\t\tactivityStorage[parentControlId][tabControlId] = Date.now();\r\n\t\t}\r\n\r\n\t\tconst screen = this._form && this._form.GetScreen();\r\n\r\n\t\tif (screen) {\r\n\t\t\tUserVarsManager.Instance.SetTabsParams({\r\n\t\t\t\tscreenId: screen.GetScreenId(),\r\n\t\t\t\tactiveTabPageCID: tabControlId\r\n\t\t\t}, activityStorage);\r\n\t\t\tscreen.SetState( {ActiveControlId: tabControlId, ActiveSubControlId: activeSubControlId});\r\n\t\t}\r\n\r\n\t\tif(isShowHideButton) {\r\n\t\t\tlet i = 0;\r\n\t\t\tlet needToHideButton = true;\r\n\t\t\twhile (i < subControls.length) {\r\n\t\t\t\tconst control = subControls[i];\r\n\t\t\t\tconst activeDate = activityStorage[controlId][control.GetControlId()];\r\n\t\t\t\tif (activeDate) {\r\n\t\t\t\t\tconst oneDay = 86400000;\r\n\t\t\t\t\tconst date1 = new Date(activeDate);\r\n\t\t\t\t\tconst date2 = new Date();\r\n\t\t\t\t\tconst diffDays = Math.round(Math.abs((date2.getTime() - date1.getTime()) / (oneDay)));\r\n\r\n if (diffDays >= this._dateRange) {\r\n needToHideButton = false;\r\n break;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n \tneedToHideButton && this._isShowHideButton(false);\r\n\t\t}\r\n\t}\r\n\r\n\tSetActiveTab(tabIndex: number, defaultParams?: {controlId: number, params, action? :string, control?: any}) {\r\n\t\tconst subControls = this._subControls();\r\n\t\tif (subControls[tabIndex]) {\r\n\t\t\tconst tab = <TabPage>subControls[tabIndex];\r\n\t\t\tif (this._currentTabPage()) {\r\n\t\t\t\tthis._currentTabPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttab.SetIsActive(true);\r\n\r\n this._currentTabPage(tab);\r\n this._currentTabIndex = tabIndex;\r\n\r\n\t\t\tif (defaultParams) {\r\n\t\t\t\tswitch (defaultParams.action) {\r\n\t\t\t\t\tcase 'OpenReplanMode' : {\r\n if (defaultParams.control) {\r\n defaultParams.control.SetRePlanMode(defaultParams.params);\r\n }\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n case 'ReturnFromScheduler' : {\r\n\t\t\t\t\t\t//go to agenda\r\n const controlAgenda = _.find(tab.GetSubControls(), (item) => {\r\n return (item.GetModel().Id === defaultParams.controlId) && (item.GetType() === CONTROL_TYPES.Agenda);\r\n }) as Agenda;\r\n\r\n if (controlAgenda) {\r\n controlAgenda.ReturnFromScheduler(defaultParams.params);\r\n }\r\n break;\r\n }\r\n case 'HyperlinkAgenda' : {\r\n\t\t\t\t\t\t//go to agenda\r\n const controlAgenda = _.find(tab.GetSubControls(), (item) => {\r\n return (item.GetModel().Id === defaultParams.controlId) && (item.GetType() === CONTROL_TYPES.Agenda);\r\n }) as Agenda;\r\n if (controlAgenda) {\r\n controlAgenda.SetStarting(defaultParams.params.starting);\r\n }\r\n break;\r\n }\r\n\t\t\t\t\tdefault : break;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: any): void {\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tAddSubControl(control: IControl) {\r\n\t\tvar tabPage = control as TabPage;\r\n\t\tthis._subControls.push(control);\r\n\r\n\t\tif (this._currentTabPage()) {\r\n\t\t\tthis._currentTabPage().SetIsActive(false);\r\n\t\t}\r\n\t\ttabPage.SetIsActive(true);\r\n\t\tthis._currentTabPage(tabPage);\r\n\r\n\t\ttabPage.On(EVENTS.ON_TAB_CLICK, this, (evntArgs: any) => {\r\n\t\t\tvar tabPage = <TabPage>evntArgs.source;\r\n\r\n\t\t\tif (this._currentTabPage()) {\r\n\t\t\t\tthis._currentTabPage().SetIsActive(false);\r\n\t\t\t}\r\n\t\t\ttabPage.SetIsActive(true);\r\n\t\t\tthis._currentTabPage(tabPage);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tRemoveControl(control: IControl) {\r\n\t\tvar wrappers = new Array<Element>(control.GetWrapper());\r\n\r\n\t\t_.each(this._currentTabPage().GetAllSubControls(),\r\n\t\t\t(subControl) => {\r\n\t\t\t\twrappers.push(subControl.GetWrapper());\r\n\t\t\t});\r\n\r\n\t\twrappers.map((el) => {\r\n\t\t\t$(control.GetWrapper()).add(el).fadeOut('slow', () => {\r\n\t\t\t\tvar subControls = this._subControls();\r\n\t\t\t\tvar tabPage = control as TabPage;\r\n\t\t\t\tthis._subControls.remove(control);\r\n\r\n\t\t\t\tif (tabPage.GetIsActive()) {\r\n\t\t\t\t\tif (this._currentTabIndex <= subControls.length - 1) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex);\r\n\t\t\t\t\t} else if (this._currentTabIndex > 0) {\r\n\t\t\t\t\t\tthis.SetActiveTab(this._currentTabIndex - 1);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._currentTabPage(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.SetActiveTabPage(this._currentTabPage());\r\n\t\t\t\t}\r\n\r\n\t\t\t\t(this.GetForm().GetScreen() as any).OnControlRemoved(control);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tget CurrentTabPage(): TabPage {\r\n\t\treturn this._currentTabPage();\r\n\t}\r\n\r\n\tShowAll() {\r\n\t\t_.each(this._subControls(), subControl => {\r\n\t\t\tsubControl.SetIsVisible(true);\r\n\t\t});\r\n\t\tthis._isHiddenExist(false);\r\n\t\tthis._isShowHideButton(true);\r\n\t}\r\n\r\n\tSetTabIsVisible(control: IControl) {\r\n\t\tcontrol.SetIsVisible(true);\r\n\t\tthis.SetActiveTabPage(<TabPage>control, this.GetControlId());\r\n\t\tthis._isHiddenExist(this._subControls().some(x => !x.GetIsVisible()));\r\n\t\tif (!this._subControls().some(x => !x.GetIsVisible())) {\r\n\t\t\tthis._isShowHideButton(false);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tSetTabPageBackground(page: TabPage, pageHasSpreadsheet: boolean, emptySpreadsheets: boolean): void {\r\n\t\tconst model: ControlModel = page.GetModel();\r\n\t\tif (pageHasSpreadsheet) {\r\n\t\t\tlet background: string = emptySpreadsheets ? SpreadsheetStatusColor.EMPTY : model.HasSpreadsheetData ? SpreadsheetStatusColor.VALID : SpreadsheetStatusColor.NOT_VALID;\r\n\t\t\tif (page.IsActiveTabPage) {\r\n\t\t\t\tbackground = model.HasSpreadsheetData ? SpreadsheetStatusColor.VALID : SpreadsheetStatusColor.NOT_VALID;\r\n\t\t\t}\r\n\t\t\tpage.SetSpreadsheetBackground(background);\r\n\t\t}\r\n\t}\r\n\r\n\tChangeTabPageBackground(page: TabPage, pageHasSpreadsheet: boolean, subControlsArr: IControl[]): void {\r\n\t\tif (pageHasSpreadsheet){\r\n\t\t\tlet allSpreadsheetsExceptSelectedOne = _.filter(subControlsArr,(control: IControl)=> control.HasSubControl('Spreadsheet') && control.GetGuid() != page.GetGuid());\r\n\t\t\tallSpreadsheetsExceptSelectedOne.forEach((pageControl: TabPage) => pageControl.SetSpreadsheetBackground(SpreadsheetStatusColor.NOT_VALID));\r\n\t\t\tpage.SetSpreadsheetBackground(SpreadsheetStatusColor.VALID);\r\n\t\t}\r\n\t}\r\n\r\n\tChangeTabPageSpreadsheetLogic(\r\n\t\tpageHasSpreadsheet: boolean,\r\n\t\tcurrentPageHasSpreadsheet: boolean,\r\n\t\temptySpreadsheets: boolean,\r\n\t\tpage: TabPage,\r\n\t\tsubControlsArr: IControl[],\r\n\t\teventArgs: any): void {\r\n\r\n\t\tconst tabPage = <TabPage>eventArgs.source;\r\n\r\n\t\tif (page.Guid === this._currentTabPage().Guid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (currentPageHasSpreadsheet) {\r\n\t\t\tthis.SpreadsheetSetActiveTabPage(page, pageHasSpreadsheet, subControlsArr, eventArgs);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!currentPageHasSpreadsheet && pageHasSpreadsheet) {\r\n\t\t\tif (emptySpreadsheets) {\r\n\t\t\t\tthis.ChangeTabPageBackground(page, pageHasSpreadsheet, subControlsArr);\r\n\t\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.ChangeTabPageBackground(page, pageHasSpreadsheet, subControlsArr);\r\n\t\t\tthis.SetActiveTabPage(tabPage, eventArgs.source._parentControl.GetControlId());\r\n\t\t}\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"fa fa-plus\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\" data-bind=\\\"click: _help.ShowControlHelp.bind(_help, $data)\\\"> <ul class=\\\"nav nav-tabs\\\"> <!-- ko foreach: _subControls --> <li data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }, css: { 'active': _isActive }, visible: _isVisible\\\" class=\\\"tab\\\" title=\\\"TabPage\\\"></li> <!-- /ko --> <!-- ko if: _isHiddenExist --> <li class=\\\"dropdown tabdrop\\\"> <a class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" href=\\\"#\\\" aria-expanded=\\\"false\\\"><i class=\\\"fa fa-ellipsis-v\\\"></i><b class=\\\"caret\\\"></b></a><ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _subControls --> <!-- ko if: !$data.GetIsVisible() --> <li class=\\\"active\\\"> <a data-bind=\\\"text: Label, click: $parent.SetTabIsVisible.bind($parent)\\\" href=\\\"#\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\">Section test</a> </li> <!-- /ko --> <!-- /ko --> </ul> </li> <li><a data-bind=\\\"click: $data.ShowAll.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.SHOW_ALL --><!-- /ko --></a></li> <!-- /ko --> <!-- ko ifnot: _isHiddenExist --> <li data-bind=\\\"visible: _isShowHideButton\\\"><a data-bind=\\\"click: $data.SetTabsHidden.bind($data)\\\" class=\\\"\\\"><!-- ko text: _labels.HIDE --><!-- /ko --></a></li> <!-- /ko --> </ul> <!--ko with: _currentTabPage--> <div data-bind=\\\"css: {'wrapped-container-tab': $parent._isWrapped}\\\" class=\\\"tab-content clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\"> <ul data-bind=\\\"dragula: {\\r\\n\\t\\t\\t\\t\\t\\tdata: _subControls,\\r\\n\\t\\t\\t\\t\\t\\tgroup: 'ToolBarToDesigner',\\r\\n\\t\\t\\t\\t\\t\\tafterDrop: $root.AfterDropTapPageControl.bind($root)\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"nav nav-tabs\\\"> <li class=\\\"tab tab-button parent-control FormDesignerView\\\" data-bind=\\\"css: {'active': IsActiveTabPage}\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </li> <!-- ko if: $index() === ($parent._subControls().length -1) --> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateTab.bind($root, $parent), preventBubble: ['click']\\\" class=\\\"tab-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> <!-- /ko --> </ul> <!-- ko if: _subControls().length === 0 --> <ul class=\\\"nav nav-tabs\\\"> <li class=\\\"tab addNewTabBtn onlyPlus\\\"> <a data-bind=\\\"click: $root.CreateTab.bind($root), preventBubble: ['click']\\\" class=\\\"tab-link create-link createNewTab\\\" title=\\\"Create new Tab\\\">+</a> </li> <li class=\\\"tab addNewTabBtn\\\"> <a data-bind=\\\"click: $root.InitializeTabs.bind($root), preventBubble: ['click']\\\" class=\\\"tab-link\\\" title=\\\"Initialize\\\">Initialize</a> </li> </ul> <!-- /ko --> <!-- ko with: _currentTabPage --> <div data-bind=\\\"dragula: { data: _subControls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"active-tab-result tab-page-result dropcontrol-container\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {deserialize} from \"libs/cerialize\";\r\nimport { deserializeAs } from \"libs/cerialize\";\r\nimport * as ko from \"knockout\";\r\n\r\nexport class TagModel {\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTagId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tGroupId: number;\r\n\r\n\t@deserialize\r\n\tGroupName: string;\r\n}\r\n\r\nexport class TagGroupModel {\r\n\tconstructor() {\r\n\t\tthis.Tags = [];\r\n\t\tthis.GroupName = '';\r\n\t}\r\n\r\n\tGroupId: number;\r\n\r\n\tGroupName: string;\r\n\r\n\tTags: Array<TagModel>;\r\n}\r\n\r\nexport class TagListScreenModel {\r\n\t@deserialize\r\n\tScreenId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: number;\r\n}\r\n\r\nexport class TagsScreenDataModel {\r\n\tconstructor() {\r\n\t\tthis.Tags = [];\r\n\t\tthis.TagListScreens = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n\t@deserializeAs(TagModel)\r\n\tTags: Array<TagModel>;\r\n\r\n\t@deserializeAs(TagListScreenModel)\r\n\tTagListScreens: Array<TagListScreenModel>;\r\n}\r\n\r\n","import { Request, IRequestOptions } from \"Core/Common/Request\";\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport {GenericDeserialize, Deserialize} from \"libs/cerialize\";\r\nimport {TagModel} from 'Core/Controls/Tag/Models/TagsScreenDataModel';\r\n\r\nexport class TagStore {\r\n\tstatic GetTags(expression: string, tagScope: number, controlId: number): P.Promise<any> {\r\n\t\tlet deferredResult = P.defer();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.TAG.GET_TAGS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {\r\n\t\t\t\tExpression: expression,\r\n\t\t\t\tTagScopeId: tagScope,\r\n\t\t\t\tControlId: controlId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultList);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => deferredResult.reject({ message: err.message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetAllTags(tagScope: number, controlId: number, byScopedRecords: boolean, hideDisabled: boolean = false): P.Promise<Array<TagModel>> {\r\n\t\tlet deferredResult = P.defer<Array<TagModel>>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.CONTROLS.TAG.GET_ALL_TAGS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {\r\n\t\t\t\tControlId: controlId,\r\n\t\t\t\tTagScopeId: tagScope,\r\n\t\t\t\tByScopedRecords: byScopedRecords,\r\n\t\t\t\tHideDisabled: hideDisabled\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultList, TagModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t}).fail((err) => deferredResult.reject({ message: err.message }));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import {serialize} from \"libs/cerialize\";\r\n\r\nexport class TagListChanges {\r\n\t@serialize\r\n\tControlId: number;\r\n\t@serialize\r\n\tDeletedTags: number[];\r\n\t@serialize\r\n\tAddedTags: number[];\r\n\r\n\tprivate _oldValues: number[];\r\n\r\n\tconstructor(controlId: number, oldValues: number[]) {\r\n\t\tthis.ControlId = controlId;\r\n\t\tthis._oldValues = !!oldValues ? oldValues : [];\r\n\t\tthis.AddedTags = [];\r\n\t\tthis.DeletedTags = [];\r\n\t}\r\n\r\n\tAddTag(tagId: number) {\r\n\t\tthis.DeletedTags = _.without(this.DeletedTags, tagId);\r\n\t\t\r\n\t\tif (this._oldValues.indexOf(tagId) < 0) {\r\n\t\t\tthis.AddedTags.push(tagId);\r\n\t\t}\r\n\t}\r\n\r\n\tDeleteTag(tagId: number) {\r\n\t\tthis.AddedTags = _.without(this.AddedTags, tagId);\r\n\t\t\r\n\t\tif (this._oldValues.indexOf(tagId) > -1) {\r\n\t\t\tthis.DeletedTags.push(tagId);\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\n\r\nexport class TagGroupViewModel {\r\n\tprivate _tags: KnockoutObservableArray<TagViewModel>;\r\n\t\r\n\tconstructor(tags: Array<TagViewModel>, name: string) {\r\n\t\tthis._tags = ko.observableArray(tags);\r\n\t\tthis.GroupName = name;\r\n\t}\r\n\r\n\tGroupId: number;\r\n\r\n\tGroupName: string;\r\n\r\n\tget Tags(): Array<TagViewModel> {\r\n\t\treturn this._tags();\r\n\t}\r\n\r\n\tget SelectedTags() {\r\n\t\treturn this._tags().filter(tag => tag.IsSelected()).length;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class TagViewModel {\r\n\tconstructor(\r\n\t\tpublic Name: string,\r\n\t\tpublic TagId: number,\r\n\t\tpublic GroupId: number,\r\n\t\tpublic TypeId: number\r\n\t) {\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t\tthis.IsExcluded = ko.observable(false);\r\n\t\tthis.IsEnabled = ko.observable(true);\r\n\t\tthis.IsFirstWord = false;\r\n\t}\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\tIsEnabled: KnockoutObservable<boolean>;\r\n\tIsExcluded: KnockoutObservable<boolean>;\r\n\tIsFirstWord: boolean;\r\n}","// Module\nvar code = \"<div class=\\\"tagbook\\\"> <!--<legend class=\\\"tagbook-legend\\\">TagBook</legend>--> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: Save\\\" tabindex=\\\"-1\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-save\\\"></i> <!--ko text: _labels.SAVE --><!-- /ko--> </a> <a data-bind=\\\"click: Cancel\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\" tabindex=\\\"-1\\\"> <i class=\\\"fa fa-close\\\"></i> <!--ko text: _labels.CANCEL --><!-- /ko--> </a> <a data-bind=\\\"click: Reset\\\" tabindex=\\\"-1\\\" class=\\\"btn red delete-button subFormControl\\\"> <i class=\\\"fa fa-trash\\\"></i> <!--ko text: _labels.RESET --><!-- /ko--> </a> </div> </div> </div> </form> </div> <div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"header\\\"> <div class=\\\"nav-panel\\\"> <ul class=\\\"first-letters-list\\\" data-bind=\\\"foreach: _firstLetters, css: {'first-letters-list-disabled': _mode() === 'group' && !_currentGroup()}\\\"> <li class=\\\"first-letters-item\\\"> <a class=\\\"btn btn-link\\\" data-bind=\\\"text: $data,\\r\\n\\t\\t\\t\\t\\t\\t\\t css: {active: $parent.IsActiveLetter($data)},\\r\\n\\t\\t\\t\\t\\t\\t\\t click: $parent.SelectLetter.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> </a> </li> </ul> <!-- ko if: _currentGroup --> <div class=\\\"current-group\\\" data-bind=\\\"click: ClearCurrentGroup\\\"> <span class=\\\"current-group-name\\\" data-bind=\\\"text: _currentGroup().Name\\\"></span> <span><i class=\\\"fa fa-arrow-up\\\"></i></span> </div> <!-- /ko --> <ul class=\\\"menu-items-list\\\"> <li class=\\\"menu-item\\\"> <a class=\\\"btn btn-link\\\" data-bind=\\\"click: ChangeMode.bind($data, 'book'), css: {active: _mode() === 'book'}\\\" href=\\\"javascript:;\\\"><!--ko text: _labels.BOOK --><!-- /ko--></a> </li> <li class=\\\"menu-item\\\"> <a class=\\\"btn btn-link\\\" data-bind=\\\"click: ChangeMode.bind($data, 'group'), css: {active: _mode() === 'group'}\\\" href=\\\"javascript:;\\\"><!--ko text: _labels.GROUP --><!-- /ko--></a> </li> </ul> </div> <div class=\\\"selected-tags\\\"> <ul class=\\\"selected-tags-list\\\" data-bind=\\\"if: _selectedTagsLength\\\"> <!-- ko foreach: _changeModel.SelectedTags --> <li class=\\\"selected-tags-item\\\"> <div class=\\\"selected-tags-name\\\" data-bind=\\\"text: $data.Name\\\"></div> <div class=\\\"selected-tags-remove\\\" data-bind=\\\"click: $parent.RemoveTag.bind($parent, $data)\\\"> <i class=\\\"fa fa-close\\\"></i> </div> </li> <!-- /ko --> </ul> <div class=\\\"selected-tags-notags\\\" data-bind=\\\"if: _selectedTagsLength() === 0\\\"> <span><!--ko text: _labels.NO_TAGS_SELECTED --><!-- /ko--></span> </div> </div> </div> <div class=\\\"body\\\"> <!-- ko with: _tagbookList --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport TagbookTemplate from \"Core/Controls/Tag/Tagbook/TagbookList/TagbookListTemplate.html\";\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\nimport { TagModel } from \"../../Models/TagsScreenDataModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class TagbookList extends Event {\r\n\tprivate _taglist: TagViewModel[];\r\n\tprivate _taglistFilteredByGroup: TagViewModel[];\r\n\tprivate _columnCount: number;\r\n\tprivate _tagGroups: any[];\r\n\tprivate _itemsPerColumn: number;\r\n\tprivate _initialTaglist: TagViewModel[];\r\n\tprivate _mappedTagsList: KnockoutObservableArray<any>;\r\n\tprivate _mappedGroupsList: KnockoutObservableArray<any>;\r\n\tprivate _mode: KnockoutObservable<string>;\r\n\tprivate _groupId: number;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(taglist: TagViewModel[], tagGroups) {\r\n\t\tsuper();\r\n\r\n\t\tthis._taglist = [...taglist];\r\n\t\tthis._taglistFilteredByGroup = [];\r\n\t\tthis._initialTaglist = taglist;\r\n\t\tthis._tagGroups = tagGroups;\r\n\t\tthis._columnCount = 1;\r\n\t\tthis._mappedTagsList = ko.observableArray([]);\r\n\t\tthis._mappedGroupsList = ko.observableArray([]);\r\n\t\tthis._itemsPerColumn = 12;\r\n\t\tthis._mode = ko.observable('book');\r\n\t\tthis._groupId = null;\r\n\r\n\t\tthis.MapToViewlist();\r\n\t}\r\n\r\n\tChangeMode(nextMode: string): void {\r\n\t\tthis._mode(nextMode);\r\n\r\n\t\tthis.MapToViewlist();\r\n\t}\r\n\r\n\tprivate MapToViewlist() {\r\n\t\tlet list;\r\n\t\tlet mappedListObservable;\r\n\r\n\t\tif (this._mode() === 'book') {\r\n\t\t\tlist = this._taglist;\r\n\t\t\tmappedListObservable = this._mappedTagsList;\r\n\t\t} else if (this._mode() === 'group') {\r\n\t\t\tlist = this._tagGroups;\r\n\t\t\tmappedListObservable = this._mappedGroupsList;\r\n\t\t}\r\n\r\n\t\tconst mappedListLength = Math.ceil(list.length / this._itemsPerColumn);\r\n\t\tlet mappedList = Array(mappedListLength >= 2 ? mappedListLength : 2).fill(null);\r\n\r\n\t\tmappedList = mappedList.map((el) => []);\r\n\r\n\t\tlist.forEach((el, index) => {\r\n\t\t\tconst arrayIndex = Math.floor(index / this._itemsPerColumn);\r\n\t\t\tconst elementIndex = index % this._itemsPerColumn;\r\n\r\n\t\t\tmappedList[arrayIndex][elementIndex] = el;\r\n\t\t});\r\n\r\n\t\tmappedListObservable(mappedList);\r\n\r\n\t\t// console.log('mappedListObservable()', mappedListObservable());\r\n\r\n\t\t// mappedListObservable.valueHasMutated();\r\n\t}\r\n\r\n\tFilterList(firstLetter: string, groupId: any, isInGroupMode?: boolean) {\r\n\t\tlet groupId_ = groupId ? groupId.Id : null;\r\n\r\n\t\tif (firstLetter === LABELS.ALL) {\r\n\t\t\tif (groupId_ === null) {\r\n\t\t\t\tthis._taglist = this._initialTaglist;\r\n\t\t\t} else {\r\n\t\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.GroupId === groupId_);\r\n\t\t\t}\r\n\r\n\t\t\tthis.MapToViewlist();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (groupId_ !== null && firstLetter !== null) {\r\n\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.Name[0].toUpperCase() === firstLetter);\r\n\t\t\tthis._taglist = this._taglist.filter((tag) => tag.GroupId === groupId_);\r\n\t\t} else if (firstLetter !== null) {\r\n\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.Name[0].toUpperCase() === firstLetter);\r\n\t\t} else if (groupId_ !== null) {\r\n\t\t\tthis._taglist = this._initialTaglist.filter((tag) => tag.GroupId === groupId_);\r\n\t\t}\r\n\r\n\t\tthis.MapToViewlist();\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tSelectTag(tag): void {\r\n\t\tthis.Trigger('TagSeleted', {data: tag});\r\n\t}\r\n\r\n\tSelectGroup(group): void {\r\n\t\tthis.Trigger('GroupSeleted', {data: group});\r\n\t}\r\n\r\n\tIdentifyGroupName(id: number): string {\r\n\t\treturn this._tagGroups.filter((group) => group.Id === id)[0].Name;\r\n\t}\r\n\r\n\tDisplayName(tag) {\r\n\t\tlet displayName = `<span>${tag.Name}</span>`;\r\n\r\n\t\tif (tag.IsFirstWord) {\r\n\t\t\tdisplayName = `<span class=\"first-word-letter\">${tag.Name[0]}</span><span>${tag.Name.slice(1)}</span>`\r\n\t\t}\r\n\r\n\t\treturn displayName;\r\n\t}\r\n\r\n\tGetTemplate(): any {\r\n\t\treturn TagbookTemplate;\r\n\t}\r\n}\r\n","// Module\nvar code = \"<div class=\\\"tagbook-list\\\"> <!-- ko if: _taglist.length --> <!-- ko if: _mode() === 'book' --> <!-- ko foreach: _mappedTagsList --> <ul class=\\\"taglist\\\" data-bind=\\\"if: $parent._taglist.length\\\"> <!-- ko foreach: $data --> <li class=\\\"taglist-item\\\" data-bind=\\\"click: $parents[1].SelectTag.bind($parents[1], $data)\\\"> <div class=\\\"taglist-tag\\\" data-bind=\\\"html: $parents[1].DisplayName($data)\\\"></div> <!-- ko if: $data.GroupId !== 0 --> - <div class=\\\"taglist-tag-group\\\" data-bind=\\\"text: $parents[1].IdentifyGroupName(GroupId), tooltip: {content: $parents[1].IdentifyGroupName(GroupId)}\\\"></div> <!-- /ko --> </li> <!-- /ko --> </ul> <!-- /ko --> <!-- /ko --> <!-- ko if: _mode() === 'group' --> <!-- ko foreach: _mappedGroupsList --> <ul class=\\\"taglist\\\" data-bind=\\\"if: $parent._taglist.length\\\"> <!-- ko foreach: $data --> <li class=\\\"taglist-item\\\" data-bind=\\\"click: $parents[1].SelectGroup.bind($parents[1], $data)\\\"> <div class=\\\"taglist-tag\\\" data-bind=\\\"text: Name\\\"></div> </li> <!-- /ko --> </ul> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: _taglist.length --> <div class=\\\"taglist-notags\\\"> <div class=\\\"taglist-notags-text\\\"><!--ko text: _labels.NO_TAGS_AVAILABLE_FOR_ENTITY --><!-- /ko--></div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {TagModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\n\r\nexport class ChangeModel {\r\n\tprivate _addedList: TagModel[];\r\n\tprivate _deletedList: TagModel[];\r\n\tprivate _selectedTags: KnockoutObservableArray<TagModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis._addedList = [];\r\n\t\tthis._deletedList = [];\r\n\t\tthis._selectedTags = ko.observableArray([]);\r\n\t}\r\n\r\n\tSelectTag(tag: TagModel): void {\r\n\t\tthis._addedList.push(tag);\r\n\t\tthis._selectedTags.push(tag);\r\n\r\n\t\tthis._deletedList.forEach((el, index) => {\r\n\t\t\tif (el.TagId === tag.TagId) {\r\n\t\t\t\tthis._deletedList.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tRemoveTag(tag: TagModel): void {\r\n\t\tthis._deletedList.push(tag);\r\n\r\n\t\tthis._addedList.forEach((el, index) => {\r\n\t\t\tif (el.TagId === tag.TagId) {\r\n\t\t\t\tthis._addedList.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get AddedList() {\r\n\t\treturn this._addedList;\r\n\t}\r\n\r\n\t@enumerable get DeletedList() {\r\n\t\treturn this._deletedList;\r\n\t}\r\n\r\n\t@enumerable get SelectedTags() {\r\n\t\treturn this._selectedTags();\r\n\t}\r\n\r\n\tset SelectedTags(data) {\r\n\t\tthis._selectedTags(data);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport TagbookTemplate from \"Core/Controls/Tag/Tagbook/TagbookTemplate.html\";\r\n\r\nko.templates[\"Core/Controls/Tag/Tagbook/TagbookTemplate\"] = TagbookTemplate;\r\n\r\nimport {TagbookList} from \"Core/Controls/Tag/Tagbook/TagbookList/TagbookList\";\r\nimport {TagModel, TagGroupModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport {TagGroupViewModel} from 'Core/Controls/Tag/ViewModels/TagGroupViewModel';\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\nimport {ChangeModel} from 'Core/Controls/Tag/Tagbook/ChangeModel';\r\nimport {IModalComponent} from 'Core/Common/Interfaces/IModalComponent';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nexport class Tagbook extends Event implements IModalComponent {\r\n\tprivate _firstLetters: KnockoutObservableArray<string>;\r\n\tprivate _activeLetter: KnockoutObservable<string>;\r\n\tprivate _tagbookList: KnockoutObservable<TagbookList>;\r\n\tprivate _taglist: TagViewModel[];\r\n\tprivate _term: string;\r\n\tprivate _groups: any[];\r\n\tprivate _selectedTagsLength: KnockoutComputed<number>;\r\n\tprivate _selectedTagsInitial: TagModel[];\r\n\tprivate _changeModel: ChangeModel;\r\n\tprivate _mode: KnockoutObservable<string>;\r\n\tprivate _currentGroup: KnockoutObservable<any>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._mode = ko.observable('book');\r\n\t\tthis._changeModel = new ChangeModel();\r\n\t\tthis._activeLetter = ko.observable(null);\r\n\t\tthis._firstLetters = ko.observableArray([]);\r\n\t\tthis._currentGroup = ko.observable(null);\r\n\t\tthis._term = null;\r\n\t\tthis._taglist = [];\r\n\t\tthis._groups = [];\r\n\t\tthis._selectedTagsLength = ko.computed(() => this._changeModel.SelectedTags.length);\r\n\t\tthis._tagbookList = ko.observable(null);\r\n\t}\r\n\r\n\tChangeMode(nextMode: string):void {\r\n\t\tthis._mode(nextMode);\r\n\t\tthis._tagbookList().ChangeMode(nextMode);\r\n\t\tthis._activeLetter(LABELS.ALL);\r\n\t\tthis._currentGroup(null);\r\n\r\n\t\tthis._tagbookList().FilterList(LABELS.ALL, this._currentGroup());\r\n\r\n\t\tthis.SetLettersList(this._taglist);\r\n\t}\r\n\r\n\tSetTagsList(tagsModel: TagGroupViewModel[], selectedTags: TagModel[], term: string) {\r\n\t\tthis._selectedTagsInitial = selectedTags;\r\n\t\tthis._changeModel.SelectedTags = [...selectedTags];\r\n\r\n\t\ttagsModel.forEach((group: TagGroupViewModel) => {\r\n\t\t\tthis._taglist = this._taglist.concat(group.Tags);\r\n\t\t\tthis._groups.push({Name: group.GroupName, Id: group.Tags[0].GroupId})\r\n\t\t});\r\n\r\n\t\tthis.SetLettersList(this._taglist);\r\n\r\n\t\tconst takbookList = new TagbookList(this._taglist, this._groups);\r\n\r\n\t\tthis._tagbookList(takbookList);\r\n\r\n\t\ttakbookList.On('TagSeleted', this, (data) => this.SelectTag(data.data));\r\n\t\ttakbookList.On('GroupSeleted', this, (data) => this.SelectGroup(data.data));\r\n\r\n\t\tif (term !== null) {\r\n\t\t\tthis.SelectLetter(term[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate SelectTag(tag: any): void {\r\n\t\tconst tagModel = tag.data;\r\n\t\tconst isTagAlreadySelected = this._changeModel.SelectedTags.filter((tag_) => tag_.TagId === tagModel.TagId).length;\r\n\r\n\t\tif (!isTagAlreadySelected) {\r\n\t\t\tconst mappedModel = this.MapToTagModel(tagModel);\r\n\r\n\t\t\tthis._changeModel.SelectTag(mappedModel);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveTag(data: TagModel): void {\r\n\t\tlet selectedTags = this._changeModel.SelectedTags;\r\n\r\n\t\tselectedTags = selectedTags.filter((tag) => tag !== data);\r\n\r\n\t\tthis._changeModel.SelectedTags = selectedTags;\r\n\r\n\t\tthis._changeModel.RemoveTag(data);\r\n\t}\r\n\r\n\tSelectGroup(data) {\r\n\t\tconst group = data.data;\r\n\r\n\t\tthis._tagbookList().ChangeMode('book');\r\n\r\n\t\tthis._currentGroup(group);\r\n\r\n\t\tconst list = this._taglist.filter((tag) => tag.GroupId === group.Id);\r\n\r\n\t\tthis.SetLettersList(list);\r\n\r\n\t\tthis._tagbookList().FilterList(LABELS.ALL, group);\r\n\t}\r\n\r\n\tClearCurrentGroup() {\r\n\t\tthis._currentGroup(null);\r\n\t\tthis.ChangeMode('group');\r\n\t}\r\n\r\n\tprivate SetLettersList(taglist): void {\r\n\t\tconst letters = this.GenerateFirstLetters(taglist);\r\n\r\n\t\tthis._activeLetter(letters[0]);\r\n\t\tthis._firstLetters(letters);\r\n\t}\r\n\r\n\tprivate GenerateFirstLetters(tagslist: TagViewModel[]): string[] {\r\n\t\tconst firstLetters = [LABELS.ALL];\r\n\r\n\t\ttagslist.sort((a, b) => {\r\n\t\t\tconst nameA = a.Name.toUpperCase();\r\n\t\t\tconst nameB = b.Name.toUpperCase();\r\n\r\n\t\t\tif (nameA < nameB) return -1;\r\n\r\n\t\t\tif (nameA > nameB) return 1;\r\n\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\tlet currentLetter;\r\n\r\n\t\ttagslist.forEach((tag: TagViewModel) => {\r\n\t\t\tconst nextLetter = tag.Name[0].toUpperCase();\r\n\r\n\t\t\tif (nextLetter !== currentLetter) {\r\n\t\t\t\ttag.IsFirstWord = true;\r\n\r\n\t\t\t\tcurrentLetter = nextLetter;\r\n\t\t\t\tfirstLetters.push(currentLetter);\r\n\t\t\t} else {\r\n\t\t\t\ttag.IsFirstWord = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn firstLetters;\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis.Trigger('Save', {\r\n\t\t\taddedTags: this._changeModel.AddedList,\r\n\t\t\tdeletedTags: this._changeModel.DeletedList,\r\n\t\t\tselectedTags: this._changeModel.SelectedTags\r\n\t\t});\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis.Trigger('Cancel');\r\n\t}\r\n\r\n\tReset() {\r\n\t\tthis._changeModel.SelectedTags = [...this._selectedTagsInitial];\r\n\t}\r\n\r\n\tSelectLetter(letter: string): void {\r\n\t\tthis._activeLetter(letter);\r\n\r\n\t\tthis._tagbookList().FilterList(this._activeLetter(), this._currentGroup());\r\n\t}\r\n\r\n\tIsActiveLetter(letter: string): boolean {\r\n\t\treturn this._activeLetter() === letter;\r\n\t}\r\n\r\n\tMapToTagModel(model: TagViewModel): TagModel {\r\n\t\tconst group = this._groups.filter((el) => el.Id === model.GroupId)[0];\r\n\r\n\t\tconst tagModel: TagModel = {\r\n\t\t\tGroupId: model.GroupId,\r\n\t\t\tGroupName: group && group.Name,\r\n\t\t\tName: model.Name,\r\n\t\t\tTagId: model.TagId,\r\n\t\t\tTypeId: model.TypeId\r\n\t\t};\r\n\r\n\t\treturn tagModel;\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Controls/Tag/Tagbook/TagbookTemplate';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tCloseComponentInModal() {\r\n\t\tthis.Trigger('Cancel');\r\n\t}\r\n}\r\n","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {TagStore} from \"Core/Controls/Tag/Stores/TagStore\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {RequiredFieldModel} from 'Core/Controls/ComplexControl/Models/RequiredFieldModel';\r\nimport {FIELD_TYPES, TABLE_TYPES, RenderModes, CONTROL_TYPES} from 'Core/Constant';\r\nimport {TagModel, TagGroupModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport {TagListChanges} from \"Core/Controls/Tag/Models/TagListChanges\";\r\nimport {Serialize, Deserialize} from 'libs/cerialize';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {DEFAULT_ICONS} from 'Core/Constant'\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {TagGroupViewModel} from 'Core/Controls/Tag/ViewModels/TagGroupViewModel';\r\nimport {TagViewModel} from 'Core/Controls/Tag/ViewModels/TagViewModel';\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport {TagsScreenDataModel, TagListScreenModel} from 'Core/Controls/Tag/Models/TagsScreenDataModel';\r\nimport { Tagbook } from 'Core/Controls/Tag/Tagbook/Tagbook';\r\nimport { GeneralProperties } from \"Core/GeneralProperties/GeneralProperties\";\r\n\r\nimport Config from \"Core/Controls/Tag/Configs/tag-config.json\";\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\n\r\nimport ListTemplate from \"Core/Controls/Tag/Templates/List.html\";\r\nimport HelpViewTemplate from \"Core/Controls/Tag/Templates/HelpView.html\";\r\nimport ViewTemplate from \"Core/Controls/Tag/Templates/View.html\";\r\nimport ToolBarTemplate from \"Core/Controls/Tag/Templates/ToolBar.html\";\r\nimport EditTemplate from \"Core/Controls/Tag/Templates/Edit.html\";\r\nimport DesignTemplate from \"Core/Controls/Tag/Templates/Design.html\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport { BlockUI } from \"../../Common/BlockUi\";\r\nimport {ResizeObserver} from \"../../Common/ResizeObserver\";\r\n\r\nko.templates[\"Core/Controls/Tag/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/HelpView\"] = HelpViewTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/Edit\"] = EditTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/Design\"] = DesignTemplate;\r\nko.templates[\"Core/Controls/Tag/Templates/List\"] = ListTemplate;\r\n\r\nexport class Tag extends ComplexControl {\r\n\tprivate _selectedTags: KnockoutObservableArray<TagModel>;\r\n\tprivate _tags: KnockoutObservableArray<TagModel>;\r\n\tprivate _tagsByGroup: KnockoutObservableArray<TagGroupViewModel>;\r\n\tprivate _isTagsLoaded: KnockoutObservable<boolean>;\r\n\tprivate _isTagsSelected: KnockoutObservable<boolean>;\r\n\tprivate _changeModel: TagListChanges;\r\n\tprivate _labelStyle: KnockoutObservable<any>;\r\n\tprivate _term: KnockoutObservable<string>;\r\n\tprivate _termOperationMessage: KnockoutObservable<string>;\r\n\tprivate _showOptions: KnockoutObservable<boolean>;\r\n\tprivate _tagScope: number;\r\n\tprivate _filterByTags: KnockoutComputed<Array<TagViewModel>>;\r\n\tprivate _isEnableDropGrid: KnockoutObservable<boolean>;\r\n\tprivate _blockTagList: KnockoutObservable<boolean>;\r\n\tprivate _preselectedTags: Array<number>;\r\n\tprivate _tagListScreens: KnockoutObservableArray<TagListScreenModel>;\r\n\tprivate _isReloadGrid: boolean;\r\n\tprivate _isNoTags: KnockoutObservable<boolean>;\r\n\tprivate _inverseGridCondition: boolean;\r\n\tprivate _tagbook: Tagbook;\r\n\tprivate _modal: Modal;\r\n\tprivate _controlId: number;\r\n\tprivate _subControlsLoading: number;\r\n\tprivate _expandFilter: KnockoutObservable<boolean>;\r\n\tprivate _stickyFilter: boolean;\r\n\r\n\tprivate readonly _minTermLength: number = 3;\r\n\r\n\tconstructor(params: IControlParam) {\r\n\t\tsuper(params, Config);\r\n\r\n\t\tthis._tags = ko.observableArray([]);\r\n\t\tthis._tagsByGroup = ko.observableArray([]);\r\n\t\tthis._selectedTags = ko.observableArray([]);\r\n\t\tthis._term = ko.observable(null);\r\n\t\tthis._labelStyle = ko.observable(null);\r\n\t\tthis._isTagsLoaded = ko.observable(false);\r\n\t\tthis._isTagsSelected = ko.observable(false);\r\n\t\tthis._isEnableDropGrid = ko.observable(false);\r\n\t\tthis._blockTagList = ko.observable(false);\r\n\t\tthis._tagListScreens = ko.observableArray([]);\r\n\t\tthis._preselectedTags = [];\r\n\t\tthis._isReloadGrid = false;\r\n\t\tthis._isNoTags = ko.observable(false);\r\n\t\tthis._inverseGridCondition = false;\r\n\t\tthis._subControlsLoading = 0;\r\n\r\n\t\tthis._controlId = this.GetControlId();\r\n\r\n\t\tthis.SetDefaultIcon(new Icon(DEFAULT_ICONS.Tag));\r\n\r\n\t\tthis._selectedTags.subscribe(() => {\r\n\t\t\tthis._isTagsSelected(this._selectedTags().length > 0);\r\n\t\t});\r\n\r\n\t\tthis._termOperationMessage = ko.observable('');\r\n\t\tthis._showOptions = ko.observable(false);\r\n\r\n\t\tthis._filterByTags = ko.computed(() => {\r\n\t\t\tlet selectedTags = [];\r\n\r\n\t\t\t_.each(this._tagsByGroup(), (group) => {\r\n\t\t\t\tconst tags = _.filter(group.Tags, (tag) => tag.IsSelected());\r\n\r\n\t\t\t\tselectedTags = selectedTags.concat(tags);\r\n\t\t\t});\r\n\r\n\t\t\treturn selectedTags;\r\n\t\t});\r\n\t\tthis._expandFilter = ko.observable(null);\r\n\t\tthis._stickyFilter = false;\r\n\r\n\t\tthis.Init();\r\n\r\n\t\tthis._model.subscribe(() => {\r\n\t\t\tif (this.Properties) {\r\n\t\t\t\tthis.ApplyProperties();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.ApplyProperties();\r\n\t}\r\n\r\n\tInit(): void {\r\n\r\n\t\tif (this._form) {\r\n\t\t\tthis._tagScope = this._form.GetScreen().GetEntityId();\r\n\t\t}\r\n\r\n\t\tthis.AddEvent('GRID_LOADED');\r\n\r\n\t\tif ((this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen])) {\r\n\r\n\t\t\tif (this._renderMode() === RenderModes.View || this._renderMode() === RenderModes.Edit) {\r\n\t\t\t\tthis._renderMode(RenderModes.List);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._renderMode() === RenderModes.Design &&\r\n\t\t\tthis._form &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen])) {\r\n\r\n\t\t\tthis._isEnableDropGrid(true);\r\n\t\t}\r\n\r\n\t\tthis._renderMode.subscribe((newValue) => {\r\n\t\t\tif (newValue === RenderModes.Design &&\r\n\t\t\t\tthis._form &&\r\n (this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.ListScreen]\r\n || this._form.GetScreen().GetType() === ScreenTypes[ScreenTypes.SpecialScreen])) {\r\n\r\n\t\t\t\tthis._isEnableDropGrid(true);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._requiredFields([\r\n\t\t\tnew RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TYPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null),\r\n\t\t\tnew RequiredFieldModel('F_TAGSCOPE', FIELD_TYPES.Lookup, TABLE_TYPES.Entity, null)\r\n\t\t]);\r\n\r\n\t\tthis.InitRequiredFields();\r\n\r\n\t\tif (this._renderMode() === RenderModes.Edit) {\r\n\t\t\tthis._term.subscribe(() => {\r\n\t\t\t\tconst termValid = this._term() && this._term().length > 0;\r\n\r\n\t\t\t\tif (!termValid) {\r\n\t\t\t\t\tthis._term(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.LoadTagsBySearchTerm();\r\n\t\t\t\tthis._showOptions(termValid);\r\n\t\t\t});\r\n\r\n\t\t\tthis._tags.subscribe(() => {\r\n\t\t\t\tthis._isTagsLoaded(this._tags().length > 0);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif (subControl instanceof Grid) {\r\n\t\t\t\tsubControl.On('START_DATA_LOAD', this, () => {\r\n\t\t\t\t\tthis._subControlsLoading = this._subControlsLoading + 1;\r\n\t\t\t\t\tthis._blockTagList(true);\r\n\t\t\t\t});\r\n\t\t\t\tsubControl.On('DATA_LOADED', this, (eventArgs) => {\r\n\t\t\t\t\tthis._subControlsLoading = this._subControlsLoading - 1;\r\n\t\t\t\t\tif (this._subControlsLoading === 0) {\r\n\t\t\t\t\t\tthis._blockTagList(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.Trigger('GRID_LOADED', {Records: subControl.GetRecordIds()});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this._renderMode() === RenderModes.List) {\r\n\t\t\tthis.InitTagList();\r\n\t\t}\r\n\t}\r\n\r\n\tApplyProperties() {\r\n\t\tif (this.Properties) {\r\n\r\n\t\t\tif (this.Properties.Conditions) {\r\n\t\t\t\tif (this.Properties.Conditions.Properties && this.Properties.Conditions.Properties[0]) {\r\n\t\t\t\t\tthis._inverseGridCondition = this.Properties.Conditions.Properties[0].InverseGridCondition;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//Label\r\n\t\t\tif (this.Properties.Label) {\r\n\t\t\t\tconst labelStyle = {backgroundColor: null, color: null};\r\n\r\n\t\t\t\t_.each(this.Properties.Label.Properties, (property: any) => {\r\n\t\t\t\t\tif (property.BackgroundColor) {\r\n\t\t\t\t\t\tlabelStyle.backgroundColor = property.BackgroundColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (property.Color) {\r\n\t\t\t\t\t\tlabelStyle.color = property.Color;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._labelStyle(labelStyle);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(value: IControlValue): void {\r\n\t\tif (value.Data) {\r\n\t\t\ttry {\r\n\t\t\t\tlet tagsJson = JSON.parse(value.Data.Value);\r\n\t\t\t\tlet tagData = Deserialize(tagsJson, TagsScreenDataModel);\r\n\r\n\t\t\t\tif (tagData) {\r\n\t\t\t\t\tthis._selectedTags(tagData.Tags);\r\n\t\t\t\t\tthis._tagListScreens(tagData.TagListScreens);\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet selectedTags = this._selectedTags() || [];\r\n\t\tlet oldTags = selectedTags.map(tag => tag.TagId);\r\n\r\n\t\tthis._changeModel = new TagListChanges(this.GetControlId(), oldTags);\r\n\t}\r\n\r\n\tDeserialize() {\r\n\t\treturn Serialize(this._changeModel);\r\n\t}\r\n\r\n\tprivate IsTermMinimum() {\r\n\t\treturn this._term() && this._term().length >= this._minTermLength;\r\n\t}\r\n\r\n\tprivate IsTagSelected(model: TagModel) {\r\n\t\tconst sameItem = _.find(this._selectedTags(), (tag: TagModel) => model.TagId === tag.TagId);\r\n\r\n\t\treturn !!sameItem;\r\n\t}\r\n\r\n\tprivate FormatItemName(tag: TagModel): string {\r\n\t\tconst groupName = tag.GroupName ? (tag.GroupName + '/') : '';\r\n\t\tconst name = tag.Name || '';\r\n\r\n\t\treturn groupName + name;\r\n\t}\r\n\r\n\tprivate RemoveItem(model: TagModel) {\r\n\t\tthis._selectedTags.splice(this._selectedTags.indexOf(model), 1);\r\n\t\tthis._changeModel.DeleteTag(model.TagId);\r\n\t\tthis._term('');\r\n\t}\r\n\r\n\tprivate SelectItem(model: TagModel) {\r\n\t\tconst isSelected = this.IsTagSelected(model);\r\n\r\n\t\tif (!isSelected) {\r\n\t\t\tthis._term('');\r\n\t\t\tthis._selectedTags.push(model);\r\n\t\t\tthis._changeModel.AddTag(model.TagId);\r\n\t\t}\r\n }\r\n\r\n SelectItems(models: TagModel[]) {\r\n _.each(models, (model) => this.SelectItem(model));\r\n }\r\n\r\n\tprivate LoadTagsBySearchTerm() {\r\n\t\tconst term = this._term();\r\n\r\n\t\tif (this.IsTermMinimum()) {\r\n\t\t\tconst controlId = this.GetControlId();\r\n\r\n\t\t\tTagStore.GetTags(term, this._tagScope, controlId)\r\n\t\t\t\t.then(res => {\r\n\t\t\t\t\tthis._tags(res);\r\n\r\n\t\t\t\t\tif (this._tags.length <= 0) {\r\n\t\t\t\t\t\tthis._termOperationMessage('No such tags');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis._termOperationMessage('');\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.fail((() => this._termOperationMessage('Unable to get tags')));\r\n\t\t} else {\r\n\t\t\tthis._termOperationMessage(`Please enter ${this._minTermLength} or more characters`);\r\n\t\t}\r\n\t}\r\n\r\n\tEnterKey() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate LoadAllTags(hideDisabled: boolean = false): P.Promise<any> {\r\n\t\tconst deferredResult = P.defer();\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tTagStore.GetAllTags(this._tagScope, controlId, false, hideDisabled)\r\n\t\t\t.then(tags => {\r\n\t\t\t\tconst tagsByGroup = _.groupBy(tags, (item) => item.GroupName);\r\n\r\n\t\t\t\tconst tagsByGroupModels = _.map(tagsByGroup, (value, key) => {\r\n\t\t\t\t\tconst groupName = key === 'null' ? 'No group' : key;\r\n\r\n\t\t\t\t\tconst tags = _.map(value, (tag) => {\r\n\t\t\t\t\t\tconst tagViewModel = new TagViewModel(tag.Name, tag.TagId, tag.GroupId, tag.TypeId);\r\n\r\n\t\t\t\t\t\ttagViewModel.IsSelected(this._preselectedTags.indexOf(tag.TagId) >= 0);\r\n\r\n\t\t\t\t\t\treturn tagViewModel;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn new TagGroupViewModel(tags, groupName);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst noGroupTags = tagsByGroupModels.find(g => g.GroupName == \"No group\");\r\n\r\n\t\t\t\tif (noGroupTags != null) {\r\n\t\t\t\t\ttagsByGroupModels.push(tagsByGroupModels.splice(tagsByGroupModels.indexOf(noGroupTags), 1)[0]);\r\n }\r\n\r\n\t\t\t\tthis._tagsByGroup(tagsByGroupModels);\r\n\t\t\t\tthis._isNoTags(this._tagsByGroup().length === 0);\r\n\r\n\t\t\t\tdeferredResult.resolve(tagsByGroupModels);\r\n\t\t\t})\r\n\t\t\t.fail((() => this._termOperationMessage('Unable to get tags')));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate LoadScopedTags() {\r\n\t\tconst controlId = this.GetControlId();\r\n\r\n\t\tTagStore.GetAllTags(this._tagScope, controlId, true)\r\n\t\t\t.then(tags => {\r\n\t\t\t\t_.each(this._tagsByGroup(), (group) => {\r\n\t\t\t\t\t_.each(group.Tags, (tag) => {\r\n\t\t\t\t\t\tconst tagInList = _.find(tags, (tag_) => tag_.TagId === tag.TagId);\r\n\r\n\t\t\t\t\t\tif (!tagInList) {\r\n\t\t\t\t\t\t\ttag.IsEnabled(false);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\ttag.IsEnabled(true);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.fail((() => this._termOperationMessage('Unable to get tags')));\r\n\t}\r\n\r\n\r\n\tprivate InitTagList() {\r\n\t\tconst loadAllTagsPromise = this.LoadAllTags();\r\n\r\n\t\tthis.On('GRID_LOADED', this, (eventArgs) => {\r\n\t\t\tif (loadAllTagsPromise.status === 0) {\r\n\t\t\t\tloadAllTagsPromise.then(() => {\r\n\t\t\t\t\tif (this._filterByTags().length === 0) {\r\n\t\t\t\t\t\tthis.LoadScopedTags();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this._isReloadGrid) {\r\n\t\t\t\t\t\tthis.FilterData();\r\n\t\t\t\t\t\tthis._isReloadGrid = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (this._isReloadGrid) {\r\n\t\t\t\t\tthis.FilterData();\r\n\t\t\t\t\tthis._isReloadGrid = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._filterByTags().length === 0) {\r\n\t\t\t\t\tthis.LoadScopedTags();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate UpdateFilter(tag: TagViewModel) {\r\n\t\tif (tag.IsEnabled()) {\r\n\t\t\ttag.IsSelected(!tag.IsSelected());\r\n\t\t\tthis.FilterData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate Exclude(tag: TagViewModel) {\r\n\t\tif (tag.IsEnabled()) {\r\n\t\t\ttag.IsExcluded(!tag.IsExcluded());\r\n\t\t\tthis.FilterData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ResetFilter() {\r\n\t\t_.each(this._filterByTags(), (tag) => tag.IsSelected(false));\r\n\r\n\t\tthis.FilterData();\r\n\t}\r\n\r\n\tprivate FilterData() {\r\n\t\tlet tagIds = [];\r\n\r\n\t\tconst tags = _.filter(this._filterByTags(), tag => !tag.IsExcluded());\r\n\r\n\t\tconst tagsByGroup = _.groupBy(tags, (item) => item.GroupId);\r\n\r\n\t\ttagIds = _.map(tagsByGroup, (value, key, object) => {\r\n\t\t\treturn _.map(value, (value_) => value_.TagId);\r\n\t\t});\r\n\r\n\t\tconst entityId = this.FieldModel.EntityId;\r\n\r\n\t\t_.each(this._subControls(), (subControl) => {\r\n\t\t\tif (subControl instanceof Grid) {\r\n\t\t\t\tsubControl.SetPageNumber(1);\r\n\t\t\t\tsubControl.FilterByTags({ EntityId: entityId, Records: tagIds, InverseCondition: this._inverseGridCondition });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset PreselectedTags(tagIds: Array<number>) {\r\n\t\tthis._preselectedTags = tagIds;\r\n\t\tthis._isReloadGrid = true;\r\n\t}\r\n\r\n\tasync GoToListScreen(listScreen: TagListScreenModel, tag: Tag, evt) {\r\n\t\tconst isOpenInModal = evt.ctrlKey\r\n\r\n\t\tconst screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n\t\tBlockUI.Block();\r\n\t\tscreenManager.GetScreenById({ ScreenId: listScreen.ScreenId})\r\n\t\t.always(()=>BlockUI.Unblock())\r\n\t\t.then(async (screen: IScreen) => {\r\n\t\t\tscreen.SetIsReady(true);\r\n\r\n\t\t\tconst tagControl = screen.GetControl<Tag>(CONTROL_TYPES.Tag);\r\n\t\t\tconst selectedTagIds = _.map(this._selectedTags(), (tag) => tag.TagId);\r\n\r\n\t\t\tif (tagControl) {\r\n\t\t\t\ttagControl.PreselectedTags = selectedTagIds;\r\n\t\t\t}\r\n\r\n\t\t\tconst menuManager = (await import('MenuManager/MenuManager')).MenuManager;\r\n\t\t\tmenuManager.Instance.GoToScreen(screen, isOpenInModal);\r\n\t\t});\r\n\t}\r\n\r\n\tExpandFilter(evt): void {\r\n\t\tthis._expandFilter(!this._expandFilter());\r\n\t}\r\n\r\n\tStickyActionBarHeight(isModal:boolean, jBoxModal, _el): number{\r\n\t\tlet stickyActionBarHeight = 0;\r\n\t\tif (isModal){\r\n\t\t\tlet actionBarBlock = jBoxModal.find('#ActionBarBlock'),\r\n\t\t\t\tactionBarSubForm = jBoxModal.find('.actionBarSubForm'),\r\n\t\t\t\tstickyActionBar = actionBarBlock.length > 0 ? actionBarBlock : actionBarSubForm.length > 0 ? actionBarSubForm : null;\r\n\r\n\t\t\tif(stickyActionBar !== null && stickyActionBar.length !== 0 && stickyActionBar.css('position') === 'sticky'){\r\n\t\t\t\tlet paddingModalPX = $(_el).parents('.jBox-content').css('padding-top'),\r\n\t\t\t\t\tpaddingModal = +paddingModalPX.substring(0, paddingModalPX.length - 2);\r\n\r\n\t\t\t\tstickyActionBarHeight = Math.abs(stickyActionBar.innerHeight() + paddingModal);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn stickyActionBarHeight;\r\n\t}\r\n\r\n\tRepositionHeaderOnScroll = (scrollPositionInContainer?: number) => {\r\n\t\tconst headElement = this._el.querySelector<HTMLDivElement>('.tag-filter-column');\r\n\t\tif (!headElement) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst boundingRect = this._el.getBoundingClientRect();\r\n\t\tconst modalTopPosition = Math.abs(($('.jBox-content').parents('.jBox-Modal').height() - $(window).height()) / 2);\r\n\t\tlet fixedHeaderHeight = 0;\r\n\t\tlet jBoxModal = $(this._el).parents('.jBox-content').parents('.jBox-Modal');\r\n\t\tlet isModal = jBoxModal.length > 0 && jBoxModal.css('display') !== 'none';\r\n\t\tif (window.innerWidth > 991) {\r\n\t\t\tconst headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n\t\t\tfixedHeaderHeight = isModal ? modalTopPosition + this.StickyActionBarHeight(isModal, jBoxModal, this._el) : headerElement ? headerElement.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\tif (boundingRect.top < fixedHeaderHeight) {\r\n\t\t\tconst distanceFromTop = Math.min(boundingRect.top * -1 + fixedHeaderHeight, boundingRect.height - 28);\r\n\t\t\theadElement.style.top = Math.max(distanceFromTop, 0) + \"px\";\r\n\t\t} else {\r\n\t\t\tconst portletToolbarHeight = $(this._el).parents('.portlet-body-content').find('.toolbar-wrapper').height();\r\n\t\t\tconst topHeaderPosition = scrollPositionInContainer && portletToolbarHeight < scrollPositionInContainer ? scrollPositionInContainer - portletToolbarHeight - 5 + \"px\" : '0';\r\n\t\t\theadElement.style.top = topHeaderPosition;\r\n\t\t}\r\n\t}\r\n\r\n\tOnResize = () => {\r\n\t\tthis.RepositionHeaderOnScroll();\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>): void {\r\n\t\tsuper.AfterRender(el);\r\n\r\n\t\tif (this._stickyFilter) { //it is necessary to modernize and make logic\r\n\t\t\tconst unbindResize = ResizeService.SubscribeWidth(this.OnResize, this._el); // subscribe on resize\r\n\t\t\tko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n\t\t\t\tunbindResize();\r\n\t\t\t\twindow.removeEventListener(\"scroll\", () => this.RepositionHeaderOnScroll())\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener(\"scroll\", () => this.RepositionHeaderOnScroll());\r\n\t\t\t$(this._el).parents('.jBox-content').on('scroll', () => this.RepositionHeaderOnScroll());\r\n\t\t\t$(this._el).parents('.portlet-body').on('scroll', () => this.RepositionHeaderOnScroll($(this._el).parents('.portlet-body').scrollTop()));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tTagbookOpen(): void {\r\n\t\tthis._tagbook = new Tagbook();\r\n\r\n\t\tthis._form.GetScreen().AttachModalComponent(this._tagbook);\r\n\r\n\t\tlet hideDisabled : boolean = true;\r\n\t\tthis.LoadAllTags(hideDisabled)\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._tagbook.SetTagsList(data, this._selectedTags(), this._term());\r\n\t\t\t});\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'tagbook-modal',\r\n\t\t\tcloseOnEsc: false\r\n\t\t});\r\n\r\n\t\tthis._tagbook.On('Save', this, (data) => {\r\n\t\t\tconst addedTags: TagModel[] = data.data.addedTags;\r\n\t\t\tconst deletedTags: TagModel[] = data.data.deletedTags;\r\n\t\t\tconst selectedTags: TagModel[] = data.data.selectedTags;\r\n\r\n\t\t\tdeletedTags.forEach((tag) => this._changeModel.DeleteTag(tag.TagId));\r\n\t\t\taddedTags.forEach((tag) => this._changeModel.AddTag(tag.TagId));\r\n\r\n\t\t\tthis._selectedTags(selectedTags);\r\n\r\n\t\t\tthis._modal.Close();\r\n\t\t});\r\n\r\n\t\tthis._tagbook.On('Cancel', this, () => {\r\n\t\t\tthis._modal.Close();\r\n\t\t});\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this._tagbook, this._modal.Wrapper);\r\n\r\n\t\tthis._modal.Show();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label title=\\\"Tag\\\"> <i class=\\\"fa fa-tags\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"tag-control clearfix\\\" data-control-type=\\\"tag-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-toggle=\\\"dropdown\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"textarea-control multi-options-list form-control clearfix\\\"> <div data-bind=\\\"css: {'empty': !_isTagsSelected()}\\\" class=\\\"pull-left tag-list-items\\\"> <!-- ko foreach: _selectedTags --> <span class=\\\"multi-option-item\\\"> <!--ko text: $parent.FormatItemName($data) --><!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: _isTagsSelected --> No Tags <!-- /ko --> </div> <div class=\\\"btn-group pull-right\\\"> <button data-bind=\\\"css: {'disabled': !_isTagsSelected()}\\\" type=\\\"button\\\" class=\\\"btn btn blue dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"> <!-- ko ifnot: _tagListScreens().length > 0 --> No screens <!-- /ko --> <!-- ko if: _tagListScreens().length > 0 --> <i class=\\\"fa fa-ellipsis-horizontal\\\"></i> Tags <i class=\\\"fa fa-angle-down\\\"></i> <!-- /ko --> </button> <!-- ko if: _tagListScreens().length > 0 --> <ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _tagListScreens --> <li> <a data-bind=\\\"click: $parent.GoToListScreen.bind($parent, $data), text: EntityName\\\" href=\\\"#\\\"></a> </li> <!-- /ko --> </ul> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"tag-control clearfix\\\" data-control-type=\\\"tag-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-toggle=\\\"dropdown\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div class=\\\"textarea-control multi-options-list form-control clearfix\\\"> <div data-bind=\\\"css: {'empty': !_isTagsSelected()}\\\" class=\\\"pull-left tag-list-items\\\"> <!-- ko foreach: _selectedTags --> <span class=\\\"multi-option-item\\\"> <!--ko text: $parent.FormatItemName($data) --><!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: _isTagsSelected --> No Tags <!-- /ko --> </div> <div class=\\\"btn-group pull-right\\\"> <button data-bind=\\\"css: {'disabled': !_isTagsSelected()}\\\" type=\\\"button\\\" class=\\\"btn btn blue dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"false\\\"> <!-- ko ifnot: _tagListScreens().length > 0 --> No screens <!-- /ko --> <!-- ko if: _tagListScreens().length > 0 --> <i class=\\\"fa fa-ellipsis-horizontal\\\"></i> Tags <i class=\\\"fa fa-angle-down\\\"></i> <!-- /ko --> </button> <!-- ko if: _tagListScreens().length > 0 --> <ul class=\\\"dropdown-menu\\\"> <!-- ko foreach: _tagListScreens --> <li> <a data-bind=\\\"click: $parent.GoToListScreen.bind($parent, $data), text: EntityName\\\" href=\\\"#\\\"></a> </li> <!-- /ko --> </ul> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"EditScreenView label-input form-standart-control tag-control clearfix\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\"> <label data-bind=\\\"text: Label, style: _labelStyle\\\"></label> <div class=\\\"multi-options-list textarea-control clearfix\\\" data-toggle=\\\"dropdown\\\"> <!-- ko foreach: _selectedTags --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\">x</a> <!--ko text: $parent.FormatItemName($data) --><!-- /ko --> </span> <!-- /ko --> <div class=\\\"autocomlete-wrapper\\\"> <input class=\\\"form-control autocomlete-input\\\" data-bind=\\\"textInput: _term, enterKey: EnterKey, attr: { placeholder: _labels.SELECT_TAG }\\\" type=\\\"text\\\"> <button class=\\\"btn-sm tagbook-open-btn\\\" data-bind=\\\"click: TagbookOpen\\\"> <i class=\\\"fa fa-bars\\\"></i> </button> </div> <!-- ko if: _showOptions --> <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\"> <!-- ko foreach: _tags --> <li data-bind=\\\"css: {'disabled': $parent.IsTagSelected($data, $parent)}\\\"> <a data-bind=\\\"text: $parent.FormatItemName($data), click: $parent.SelectItem.bind($parent, $data)\\\"></a> </li> <!-- /ko --> <!-- ko ifnot: _isTagsLoaded --> <li><a data-bind=\\\"text: _termOperationMessage\\\"></a></li> <!-- /ko --> </ul> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"FormDesignerView form-designer-view drop-control-container complex-control form-standart-control new-control\\\"> <div class=\\\"portlet light drop-control-portlet\\\"> <div data-bind=\\\"click: Expand, preventBubble: ['click'], css: { expanded: _isExpanded() }\\\" class=\\\"collapse-button toggle-button\\\" data-button=\\\"collapse\\\"> <span data-button=\\\"collapse\\\" class=\\\"link-entity-arrow\\\"></span> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"portlet-title\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: Title\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" aria-describedby=\\\"sizing-addon1\\\" placeholder=\\\"\\\" readonly=\\\"readonly\\\"/> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsEntitySelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn setting-button\\\" type=\\\"button\\\">...</button> </span> </div> </div> <div data-bind=\\\"visible: IsExpanded\\\" class=\\\"portlet-content\\\"> <div class=\\\"\\\"> <!-- ko foreach: RequiredFields --> <div class=\\\"portlet-body\\\"> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: FieldName\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" class=\\\"form-control\\\" placeholder=\\\"\\\" aria-describedby=\\\"sizing-addon1\\\" readonly=\\\"readonly\\\"> <span class=\\\"input-group-addon\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: false\\\" type=\\\"checkbox\\\"> </span> <span class=\\\"input-group-btn\\\"> <button class=\\\"btn\\\" type=\\\"button\\\">...</button> </span> </div> </div> <!-- /ko --> </div> </div> </div> <!-- ko if: $data._isEnableDropGrid --> <div data-bind=\\\"dragula: { data: _subControls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"group-elements\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"tag-control-list clearfix\\\"> <div data-bind=\\\"blockElement: $data._blockTagList, css:{'open-filter': _expandFilter()}\\\" class=\\\"tag-filter-column\\\"> <div class=\\\"tag-filter-column-wrap\\\"> <div class=\\\"tag-open-btn transition\\\" data-bind=\\\"click: $data.ExpandFilter.bind($data)\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </div> <div class=\\\"tag-filter-column-content\\\"> <!-- ko if: $data._isNoTags --> <div class=\\\"alert alert-block alert-info h5\\\"><!-- ko text: _labels.NO_AVAILABLE_TAGS --><!-- /ko --></div> <!-- /ko --> <!-- ko foreach: _tagsByGroup --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\" data-toggle=\\\"collapse\\\" data-target=\\\"#tags-group\\\" data-bind=\\\"attr:{'data-target':'#tags-group'+$index()}\\\" aria-expanded=\\\"false\\\"> <i class=\\\"fa fa-chevron-right\\\"></i> <i class=\\\"fa fa-chevron-down\\\"></i> <div class=\\\"panel-heading-content\\\"> <span class=\\\"panel-heading-content__name\\\" data-bind=\\\"ellipsisTooltip: {\\r\\n content: GroupName ? GroupName : '',\\r\\n options: {\\r\\n isLineClampMode: false,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n },\\r\\n text: GroupName\\\"></span> <span class=\\\"panel-heading-content__select-tag\\\" data-bind=\\\"text: SelectedTags\\\"></span> </div> </div> <div class=\\\"panel-body tag-group collapse\\\" data-bind=\\\"attr:{'id':'tags-group'+$index()}\\\"> <!-- ko foreach: Tags --> <div class=\\\"tag-group-item\\\" data-bind=\\\"css: { 'disabled': !$data.IsEnabled()}, click: $parents[1].UpdateFilter.bind($parents[1], $data)\\\"> <label data-bind=\\\"style: { textDecoration: $data.IsEnabled() ? '' : 'line-through' }\\\" class=\\\"tag-group-item-label\\\"> <input data-bind=\\\"uniform: IsSelected, enableAttr: $data.IsEnabled\\\" type=\\\"checkbox\\\"> <span data-bind=\\\"ellipsisTooltip: {\\r\\n content: Name ? Name : '',\\r\\n options: {\\r\\n isLineClampMode: false,\\r\\n position: {x: 'left', y: 'center'},\\r\\n outside: 'x',\\r\\n addClass: 'ellipsis-tooltip jBox-padding-5px'\\r\\n }\\r\\n },\\r\\n text: Name\\\" class=\\\"tag-name\\\"></span> </label> </div> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> </div> <div class=\\\"tag-result-column\\\"> <div class=\\\"clearfix is-filter-tag\\\"> <!-- ko foreach: _filterByTags --> <span data-bind=\\\"click: $parent.Exclude.bind($parent, $data), css: { 'label-default': IsExcluded, 'label-success': !IsExcluded() }\\\" class=\\\"label tag-item\\\"><!-- ko text: Name --><!-- /ko --> <a class=\\\"remove-tag\\\" data-bind=\\\"click: $parent.UpdateFilter.bind($parent, $data)\\\" href=\\\"#\\\">x</a> </span> <!-- /ko --> <!-- ko if: _filterByTags().length > 0 --> <button data-bind=\\\"click: $data.ResetFilter.bind($data)\\\" class=\\\"btn btn-xs\\\" type=\\\"button\\\"><i class=\\\"fa blue fa-reply\\\"></i> Reset</button> <!-- /ko --> </div> <div class=\\\"clearfix\\\"> <!-- ko foreach: _subControls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","export const CONTROL_TYPES_LINK = {\r\n\tMail: {name: 'Mail', icon: 'fa fa-send'},\r\n\tURL: {name: 'URL', icon: 'fa fa-globe'},\r\n\tSKYPE: {name: 'SKYPE', icon: 'fa fa-skype'},\r\n\tLinkedin: {name: 'Linkedin', icon: 'fa fa-linkedin'},\r\n\tFacebook: {name : \"Facebook\", icon: \"fa fa-facebook-square\"},\r\n\tYouTube: {name : \"YouTube\", icon: \"fa fa-youtube-play\"},\r\n\tTwitter: {name : \"Twitter\", icon: \"fa fa-twitter-square\"},\r\n\tInstagram: {name : \"Instagram\", icon: \"fa fa-instagram\"},\r\n\tPinterest: {name : \"Pinterest\", icon: \"fa fa-pinterest-square\"},\r\n\tMedium: {name : \"Medium\", icon: \"fa fa-medium\"},\r\n\tSQL: {name: 'SQL', icon: ''}\r\n};","export const PHONE_NUMBER_LENGTH = [\r\n {iso2: 'af', min: 9, max: 9},\r\n {iso2: 'al', min: 6, max: 9},\r\n {iso2: 'dz', min: 8, max: 9},\r\n {iso2: 'as', min: 10, max: 10},\r\n {iso2: 'ad', min: 6, max: 9},\r\n {iso2: 'ao', min: 9, max: 9},\r\n {iso2: 'ai', min: 10, max: 10},\r\n {iso2: 'ag', min: 10, max: 10},\r\n {iso2: 'ar', min: 10, max: 11},\r\n {iso2: 'am', min: 8, max: 8},\r\n {iso2: 'aw', min: 7, max: 7},\r\n {iso2: 'au', min: 5, max: 10},\r\n {iso2: 'at', min: 4, max: 13},\r\n {iso2: 'az', min: 7, max: 9},\r\n {iso2: 'bs', min: 7, max: 11},\r\n {iso2: 'bh', min: 8, max: 8},\r\n {iso2: 'bd', min: 6, max: 10},\r\n {iso2: 'bb', min: 7, max: 11},\r\n {iso2: 'by', min: 5, max: 11},\r\n {iso2: 'be', min: 8, max: 9},\r\n {iso2: 'bz', min: 7, max: 11},\r\n {iso2: 'bj', min: 8, max: 8},\r\n {iso2: 'bm', min: 7, max: 11},\r\n {iso2: 'bt', min: 6, max: 8},\r\n {iso2: 'bo', min: 7, max: 9},\r\n {iso2: 'ba', min: 6, max: 9},\r\n {iso2: 'bw', min: 7, max: 8},\r\n {iso2: 'br', min: 8, max: 11},\r\n {iso2: 'io', min: 7, max: 7},\r\n {iso2: 'vg', min: 7, max: 11},\r\n {iso2: 'bn', min: 7, max: 7},\r\n {iso2: 'bg', min: 4, max: 9},\r\n {iso2: 'bf', min: 8, max: 8},\r\n {iso2: 'bi', min: 8, max: 8},\r\n {iso2: 'kh', min: 6, max: 10},\r\n {iso2: 'cm', min: 8, max: 9},\r\n {iso2: 'ca', min: 11, max: 11},\r\n {iso2: 'cv', min: 7, max: 7},\r\n {iso2: 'bq', min: 7, max: 8},\r\n {iso2: 'ky', min: 7, max: 11},\r\n {iso2: 'cf', min: 8, max: 8},\r\n {iso2: 'td', min: 8, max: 8},\r\n {iso2: 'cl', min: 9, max: 11},\r\n {iso2: 'cn', min: 7, max: 17},\r\n {iso2: 'cx', min: 5, max: 10},\r\n {iso2: 'cc', min: 5, max: 10},\r\n {iso2: 'co', min: 7, max: 11},\r\n {iso2: 'km', min: 7, max: 7},\r\n {iso2: 'cd', min: 7, max: 9},\r\n {iso2: 'cg', min: 9, max: 9},\r\n {iso2: 'ck', min: 5, max: 5},\r\n {iso2: 'cr', min: 8, max: 10},\r\n {iso2: 'ci', min: 8, max: 8},\r\n {iso2: 'hr', min: 6, max: 9},\r\n {iso2: 'cu', min: 4, max: 8},\r\n {iso2: 'cw', min: 7, max: 8},\r\n {iso2: 'cy', min: 8, max: 8},\r\n {iso2: 'cz', min: 9, max: 12},\r\n {iso2: 'dk', min: 8, max: 8},\r\n {iso2: 'dj', min: 8, max: 8},\r\n {iso2: 'dm', min: 7, max: 11},\r\n {iso2: 'do', min: 8, max: 11},\r\n {iso2: 'ec', min: 7, max: 11},\r\n {iso2: 'eg', min: 7, max: 10},\r\n {iso2: 'sv', min: 7, max: 11},\r\n {iso2: 'gq', min: 9, max: 9},\r\n {iso2: 'er', min: 6, max: 7},\r\n {iso2: 'ee', min: 7, max: 10},\r\n {iso2: 'et', min: 7, max: 9},\r\n {iso2: 'fk', min: 5, max: 5},\r\n {iso2: 'fo', min: 6, max: 6},\r\n {iso2: 'fj', min: 7, max: 11},\r\n {iso2: 'fi', min: 5, max: 10},\r\n {iso2: 'fr', min: 9, max: 9},\r\n {iso2: 'gf', min: 9, max: 9},\r\n {iso2: 'pf', min: 6, max: 8},\r\n {iso2: 'ga', min: 7, max: 8},\r\n {iso2: 'gm', min: 7, max: 7},\r\n {iso2: 'ge', min: 6, max: 9},\r\n {iso2: 'de', min: 4, max: 15},\r\n {iso2: 'gh', min: 7, max: 9},\r\n {iso2: 'gi', min: 8, max: 8},\r\n {iso2: 'gr', min: 10, max: 10},\r\n {iso2: 'gl', min: 6, max: 6},\r\n {iso2: 'gd', min: 7, max: 11},\r\n {iso2: 'gp', min: 9, max: 9},\r\n {iso2: 'gu', min: 7, max: 11},\r\n {iso2: 'gt', min: 8, max: 11},\r\n {iso2: 'gg', min: 4, max: 10},\r\n {iso2: 'gn', min: 8, max: 9},\r\n {iso2: 'gw', min: 7, max: 9},\r\n {iso2: 'gy', min: 7, max: 7},\r\n {iso2: 'ht', min: 8, max: 8},\r\n {iso2: 'us', min: 11, max: 11},\r\n {iso2: 'gb', min: 7, max: 10},\r\n {iso2: 'it', min: 6, max: 11},\r\n {iso2: 'lv', min: 8, max: 8},\r\n {iso2: 'lu', min: 4, max: 11},\r\n {iso2: 'lt', min: 8, max: 8},\r\n {iso2: 'md', min: 8, max: 8},\r\n {iso2: 'mc', min: 8, max: 9},\r\n {iso2: 'nl', min: 5, max: 10},\r\n {iso2: 'nz', min: 8, max: 10},\r\n {iso2: 'no', min: 5, max: 8},\r\n {iso2: 'ph', min: 6, max: 13},\r\n {iso2: 'pl', min: 6, max: 9},\r\n {iso2: 'pt', min: 9, max: 9},\r\n {iso2: 'ru', min: 10, max: 10},\r\n {iso2: 'sm', min: 6, max: 10},\r\n {iso2: 'sg', min: 8, max: 11},\r\n {iso2: 'sk', min: 6, max: 9},\r\n {iso2: 'si', min: 5, max: 8},\r\n {iso2: 'es', min: 9, max: 9},\r\n {iso2: 'lk', min: 7, max: 9},\r\n {iso2: 'se', min: 6, max: 12},\r\n {iso2: 'ch', min: 9, max: 12},\r\n {iso2: 'tr', min: 7, max: 10},\r\n {iso2: 'ua', min: 9, max: 9},\r\n {iso2: 've', min: 10, max: 10},\r\n {iso2: 'zm', min: 3, max: 10},\r\n {iso2: 'il', min: 7, max: 12},\r\n {iso2: 'jp', min: 8, max: 17},\r\n {iso2: 'mx', min: 10, max: 11},\r\n {iso2: 'ro', min: 6, max: 9}\r\n];","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'pubsub';\r\n\r\nimport * as $ from \"jquery\";\r\n\r\nimport { TypeScreen } from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nimport {TranslationModel} from \"Core/ScreenManager/Models/TranslationModel\";\r\nimport {SelectedRecordModel} from \"Core/ScreenManager/Models/SelectedRecordModel\";\r\nimport {SelectedEntityRecordModel} from \"Core/ScreenManager/Models/SelectedEntityRecordModel\";\r\nimport {SelectedEntityModel} from \"Core/ScreenManager/Models/SelectedEntityModel\";\r\nimport {ReferenceModel} from \"Core/ScreenManager/Models/ReferenceModel\";\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\";\r\n\r\nimport { BaseControl, IControlValue } from 'Core/Controls/BaseControl/BaseControl';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { IControlParam, IScreen } from 'Core/Screens/IScreen';\r\nimport { CONTROL_TYPES, FIELD_TYPES, FONT_NAME, FONT_STYLES, LABEL_POSITIONS, RenderModes, TABLE_TYPES } from 'Core/Constant';\r\nimport { FormatManager } from 'Core/Components/FormatManager/FormatManager';\r\nimport { GeneralProperties } from 'Core/GeneralProperties/GeneralProperties';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { FieldFormat, FORMATS } from 'Core/Common/FieldFormat';\r\nimport { CONTROL_TYPES_LINK } from 'Core/Controls/Text/Constants';\r\nimport { PHONE_NUMBER_LENGTH } from \"Core/Controls/Text/PhoneNumberLengths\";\r\nimport { TranslationFieldEditor } from 'Core/Components/TranslationFieldEditor/TranslationFieldEditor';\r\nimport { IconModel } from \"../BaseControl/Models/IconModel\";\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\nimport { IntlTelInputExtention } from \"Core/KnockoutExtentions/IntlTelInputExtention\";\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\nimport { ScreenTypes } from \"../../Common/Enums/ScreenTypes\";\r\nimport { ICreateRecordRequest, IFieldDataModel, RecordStore } from \"../../Common/Stores/RecordStore\";\r\nimport { Notifier } from \"../../Common/Notifier\";\r\nimport { LABELS, NOTIFICATIONS } from 'Core/Components/Translation/Locales';\r\nimport { ITooltipConfig } from \"../../KnockoutExtentions/TooltipExtention\";\r\nimport { SipClient } from 'Core/Controls/Text/SipClient';\r\nimport { BarcodeScanner } from 'Core/Components/BarcodeScanner/BarcodeScanner';\r\nimport { DataModes } from \"Core/Enums/DataModes\";\r\nimport { EVENTS } from 'Core/Screens/Events';\r\nimport { DocumentManagerStore } from 'Core/Components/Controls/DocumentManager/Stores/DocumentManagerStore';\r\nimport { JsBarcodeExtension } from \"../../KnockoutExtentions/JsBarcodeExtension\";\r\nimport { GENERAL_PROPERTIES } from 'Core/GeneralProperties/Managers/Constants';\r\nimport { ZIndexManager } from \"../../Common/ZIndexManager\";\r\nimport { MobileChecker } from \"../../Common/MobileChecker\";\r\n\r\nimport TextConfigJson from 'Core/Controls/Text/Configs/text-config.json';\r\n\r\nimport ViewTemplate from 'Core/Controls/Text/Templates/View.html';\r\nimport HelpViewTemplate from 'Core/Controls/Text/Templates/HelpView.html';\r\nimport ToolBarTemplate from 'Core/Controls/Text/Templates/ToolBar.html';\r\nimport DesignTemplate from 'Core/Controls/Text/Templates/Design.html';\r\nimport EditTemplate from 'Core/Controls/Text/Templates/Edit.html';\r\n\r\nko.templates['Core/Controls/Text/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Text/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Text/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Text/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Text/Templates/Edit'] = EditTemplate;\r\n\r\nfunction getDecimalSize(fieldModel: AttachedFieldModel) {\r\n if (FieldFormat.IsPercentage(fieldModel.FormatName)) {\r\n return Math.max(fieldModel.Size - 2, 0);\r\n }\r\n\r\n return fieldModel.Size;\r\n}\r\n\r\nfunction getIntegerValidationMessage() {\r\n return LABELS.FILTER_RANGE_ERROR\r\n .replace('{MinValue}', FormatConverter.LocalizeDecimalOrInteger('-2147483648'))\r\n .replace('{MaxValue}', FormatConverter.LocalizeDecimalOrInteger('2147483647'));\r\n}\r\n\r\nfunction getDecimalValidationMessage(size: number) {\r\n return LABELS.DECIMAL_DIGITS_VALIDATION_MESSAGE\r\n .replace('{decimalDigits}', `${size}`)\r\n .replace('{totalDigits}', '29')\r\n}\r\n\r\nfunction isInIntegerBounds(value: number) {\r\n return -2147483648 <= value && value <= 2147483647;\r\n}\r\n\r\ninterface ICountryData {\r\n name: string;\r\n iso2: string;\r\n dialCode: string;\r\n}\r\n\r\nconst DEFAULT_COUNTRY_CODE_VALUE = 'nl';\r\n\r\nexport class Text extends BaseControl {\r\n private _isNewRecord: boolean;\r\n private _value: KnockoutObservable<string>;\r\n private _serverTranslations: TranslationModel[];\r\n private _labelStyle: KnockoutObservable<any>;\r\n private _textInputStyle: KnockoutObservable<any>;\r\n private _textHeight: KnockoutObservable<any>;\r\n private _originalValue: string;\r\n private _formatter: KnockoutObservable<FormatManager>;\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _hasTranslations: KnockoutObservable<boolean>;\r\n private _hasTemplate: KnockoutObservable<boolean>;\r\n private _validationMsg: KnockoutObservable<string>;\r\n private _reference: KnockoutObservable<ReferenceModel>;\r\n private _phoneCountry: string;\r\n private _phoneCode: string;\r\n private _waitForPhoneCode = false;\r\n private _globalCountry: string;\r\n private _calculatedDependsOnValue: string;\r\n private _tooltip: KnockoutObservable<ITooltipConfig>;\r\n private _referenceConsultScreen: KnockoutObservable<IScreen>;\r\n private _isHyperlink: KnockoutObservable<boolean>;\r\n private _dataRecordId: number;\r\n private _isMobile: MobileChecker;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, TextConfigJson);\r\n\r\n this._value = ko.observable(null);\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n this._labelStyle = ko.observable(null);\r\n this._textHeight = ko.observable(null);\r\n this._textInputStyle = ko.observable({});\r\n this._formatter = ko.observable(null);\r\n this._hasTemplate = ko.observable(null);\r\n this._validationMsg = ko.observable(this._labels.THIS_FIELD_IS_REQUIRED);\r\n this._reference = ko.observable(null);\r\n this._referenceConsultScreen = ko.observable(null);\r\n this._isVisible = ko.observable(true);\r\n this._isHyperlink = ko.observable(false);\r\n this._isMobile = MobileChecker.IsMobile();\r\n\r\n this.SetPhoneCountry();\r\n this.SetPhoneCode();\r\n\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n this._translationFieldEditor.On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n\r\n this._hasTranslations = ko.observable(false);\r\n\r\n this.ApplyProperties();\r\n\r\n const screen = this._form && this._form.GetScreen();\r\n if (screen) {\r\n screen.On(EVENTS.DATA_CHANGED, this, (evt) => {\r\n if (evt.data && evt.data.ScreenVariable && this.FieldModel.FilledById != 0) {\r\n\r\n let dynamicField = _.find(this.FieldModel.DynamicFields, (field) => {\r\n return field === evt.data.ScreenVariable.Field.Id\r\n });\r\n\r\n if (dynamicField && !this._resetDependsOnValue()) {\r\n this.UpdateDependsOnValue();\r\n }\r\n }\r\n });\r\n }\r\n this.ApplyFormatter();\r\n\r\n this._tooltip = ko.observable(null);\r\n\r\n this.GetTemplateName = ko.computed(() => {\r\n if(this._isHideIfDataLoading()){\r\n return 'Core/Controls/BaseControl/Templates/DataLoadTemplate';\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Design) {\r\n if (this._model().Predefined) {\r\n return 'Core/Controls/BaseControl/Templates/PredefinedDesignWrapper';\r\n }\r\n\r\n if (this._isStatic) {\r\n return 'Core/Controls/BaseControl/Templates/StaticDesignWrapper';\r\n }\r\n\r\n return 'Core/Controls/BaseControl/Templates/DesignWrapper';\r\n }\r\n\r\n if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Reference && this._renderMode() === RenderModes.Edit) {\r\n return 'Core/Controls/Text/Templates/View';\r\n }\r\n\r\n let template = RenderModes[this._renderMode()];\r\n return `Core/Controls/${this.GetType()}/Templates/${template}`;\r\n });\r\n }\r\n\r\n get IsPercentageIcon() : boolean {\r\n return !!(this._value() && this._value().length !== 0 && this.FieldModel.FormatName === 'Percentage');\r\n }\r\n\r\n get IsBarcodeFormat(): boolean {\r\n return this.FieldModel.FormatName === \"Barcode\";\r\n }\r\n\r\n get IsDependsOn(): boolean {\r\n return this.EnableResetDependOnValue && this._resetDependsOnValue();\r\n }\r\n\r\n private UpdateDependsOnValue() {\r\n this.CalculateDependOnValue()\r\n .then(dependsOnValue => {\r\n this._calculatedDependsOnValue = this.FormatPercentageValue(dependsOnValue);\r\n this._calculatedDependsOnValue = this.ApplyCulture(this._calculatedDependsOnValue);\r\n this._value(this._calculatedDependsOnValue);\r\n if (this._resetDependsOnValue()) {\r\n this._resetDependsOnValue(false);\r\n }\r\n });\r\n }\r\n\r\n private SetPhoneCode() {\r\n const global = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_COUNTRY_CODE).toLowerCase();\r\n this._phoneCode = IntlTelInputExtention.GetCodeByIso2(global);\r\n }\r\n\r\n private SetPhoneCountry() {\r\n const global = GlobalManager.Instance.GetGlobal(GLOBALS.DEFAULT_COUNTRY_CODE).toLowerCase();\r\n if (IntlTelInputExtention.IsCountryValid(global)) {\r\n this._globalCountry = global;\r\n } else {\r\n this._globalCountry = DEFAULT_COUNTRY_CODE_VALUE;\r\n }\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.Label) {\r\n const labelStyle = { backgroundColor: null, color: null };\r\n\r\n _.each(this.Properties.Label.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n labelStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n\r\n if (property.Color) {\r\n labelStyle.color = property.Color;\r\n }\r\n });\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n if (this.Properties.BackgroundColor) {\r\n const backgroundColor = this.Properties.BackgroundColor;\r\n this._backgroundColor(backgroundColor);\r\n }\r\n\r\n if (this.Properties.TextInput) {\r\n const textInputStyle = { backgroundColor: null };\r\n\r\n _.each(this.Properties.TextInput.Properties, (property: any) => {\r\n if (property.BackgroundColor) {\r\n textInputStyle.backgroundColor = property.BackgroundColor;\r\n }\r\n });\r\n\r\n this._textInputStyle(textInputStyle);\r\n }\r\n\r\n if (this.Properties.Height) {\r\n _.each(this.Properties.Height.Properties, (property: any) => {\r\n if (property.Height) {\r\n this._textHeight(property.Height.Value);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (this._form && (this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor])) {\r\n this.ApplyLinkEditorStyles();\r\n }\r\n\r\n if(this.HideIfCondition){\r\n if(this.IsRunTime){\r\n this._isVisible(false);\r\n }\r\n }\r\n }\r\n\r\n private ApplyLinkEditorStyles() {\r\n if (!this.FieldModel.HasLinkEditorVisibility) {\r\n return;\r\n }\r\n const labelStyle = {\r\n color: null,\r\n fontWeight: null,\r\n fontStyle: null,\r\n textDecoration: null\r\n };\r\n if (this.FieldModel.FontColor) {\r\n labelStyle.color = this.FieldModel.FontColor;\r\n }\r\n labelStyle.fontWeight = FONT_STYLES.NORMAL;\r\n\r\n if (this.FieldModel.FontStyles) {\r\n _.forEach(this.FieldModel.FontStyles, (style) => {\r\n\r\n switch (style.Name.toLowerCase()) {\r\n case FONT_STYLES.BOLD:\r\n labelStyle.fontWeight = FONT_STYLES.BOLD;\r\n break;\r\n case FONT_STYLES.UNDERLINE:\r\n labelStyle.textDecoration = FONT_STYLES.UNDERLINE;\r\n break;\r\n case FONT_STYLES.ITALIC:\r\n labelStyle.fontStyle = FONT_STYLES.ITALIC;\r\n break;\r\n }\r\n })\r\n }\r\n\r\n this.Extend(labelStyle, this._labelStyle());\r\n this._labelStyle(labelStyle);\r\n }\r\n\r\n private Init(): void {\r\n this.GetFieldMaxLength();\r\n }\r\n\r\n private BindEvents() {\r\n this._model.subscribe(() => this.Init());\r\n }\r\n\r\n private InitHyperLink(data: ControlDataModel) {\r\n if (data) {\r\n this._isHyperlink(\r\n this._form &&\r\n this._form.GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen] &&\r\n this.FormatName === 'None' &&\r\n this.FieldModel.FieldTypeName === FIELD_TYPES.Text &&\r\n this.FieldModel.EntityId !== this._form.GetScreen().GetEntityId() &&\r\n this.FieldModel.EntityTypeName === TABLE_TYPES.Entity &&\r\n data.RecordId &&\r\n (data.DisplayValue || data.Value)\r\n );\r\n }\r\n }\r\n\r\n getPhoneNumberMinAndMaxLength(iso2: string) {\r\n let min, max;\r\n PHONE_NUMBER_LENGTH.map(function (el) {\r\n if (el.iso2 == iso2 && el.iso2 != undefined && el.iso2 != null) {\r\n min = el.min, max = el.max;\r\n }\r\n });\r\n return { min, max };\r\n }\r\n\r\n SetData(data: ControlDataModel) {\r\n this._dataRecordId = data.RecordId;\r\n let currentValue = data.DisplayValue || data.Value;\r\n\r\n this.InitHyperLink(data);\r\n\r\n currentValue = this.FormatPercentageValue(currentValue);\r\n\r\n let currentDefaultValue = currentValue;\r\n\r\n if (this.IsTranslatable()) {\r\n this._serverTranslations = data.Translations;\r\n\r\n const translation = this.GetTranslation(data);\r\n currentValue = translation.TranslatedValue || translation.Value;\r\n\r\n this._translationFieldEditor.LoadTranslationItems();\r\n this._translationFieldEditor.SetTranslations(data.Translations, data.DisplayValue);\r\n this._translationFieldEditor.SetTranslationMaxSize(this.GetFieldMaxLength());\r\n this._translationFieldEditor.SetActiveTranslation(translation.Language.Id);\r\n\r\n this._hasTranslations(true);\r\n }\r\n\r\n currentValue = this.ApplyCulture(currentValue);\r\n currentDefaultValue = this.ApplyCulture(currentDefaultValue);\r\n\r\n if (this.FormatName == FORMATS.PHONE_NUMBER && currentValue) {\r\n currentValue = `+${currentValue.replace(/\\D/g, '')}`;\r\n currentDefaultValue = `+${currentDefaultValue.replace(/\\D/g, '')}`;\r\n\r\n this._waitForPhoneCode = true;\r\n }\r\n\r\n this._value(currentValue);\r\n this._originalValue = currentDefaultValue;\r\n\r\n if (this.GetFieldModel() && this.GetFieldModel().FieldTypeName === FIELD_TYPES.Reference) {\r\n this.SetReferenceData(data.Reference);\r\n }\r\n this.ApplyFormatter();\r\n }\r\n\r\n private FormatPercentageValue(value: string){\r\n if (this.FieldModel\r\n && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal\r\n && FieldFormat.IsPercentage(this.FieldModel.FormatName)\r\n && this.IsModified && value) {\r\n return ((value as any).replace(',', '.') * 1 * 100).toFixed((this.FieldModel.Size < 2) ? 0 : this.FieldModel.Size - 2);\r\n }\r\n return value;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (!value.Data) return;\r\n\r\n this._isNewRecord = value.RecordSpecsModel && value.RecordSpecsModel.IsNewRecord;\r\n\r\n this.SetData(value.Data);\r\n\r\n this._value.subscribe((newValue) => {\r\n\r\n this._translationFieldEditor.SetValue(newValue);\r\n\r\n if (this.FormatName == FORMATS.PHONE_NUMBER && newValue && newValue[0] === '+') {\r\n this._value(newValue.replace('+' + this._phoneCode, ''));\r\n }\r\n\r\n if (this._calculatedDependsOnValue && this.IsEqual(newValue, this._calculatedDependsOnValue)) {\r\n this._resetDependsOnValue(true);\r\n }\r\n\r\n let textarea = $(this._el).find('.input-group').find('textarea')[0];\r\n\r\n if(textarea?.hasOwnProperty('inputmask')){\r\n $(textarea).trigger(\"keyup\");\r\n };\r\n\r\n this.UpdateVariable({ Field: this.GetFieldModel(), ControlType: CONTROL_TYPES.Text }, this._value());\r\n\r\n this.ApplyFormatter();\r\n });\r\n\r\n this._value.extend({ rateLimit: { timeout: 500, method: 'notifyWhenChangesStop' } });\r\n }\r\n\r\n IsEqual(value1: string, value2: string): boolean {\r\n if(FieldFormat.IsDecimal(this.FieldModel.FieldTypeName)){\r\n let val = parseFloat(value1?.replace(',', '.')) - parseFloat(value2?.replace(',', '.'));\r\n return val != 0 \r\n }\r\n return value1 != value2;\r\n }\r\n\r\n OpenRecordScreen(_, data, evt) {\r\n const isOpenInModal: boolean = evt.ctrlKey || this.Screen.IsInModal();\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, { EntityId: this.FieldModel.EntityId, RecordId: this._dataRecordId, IsOpenInModal: isOpenInModal });\r\n }\r\n\r\n OpenEditScreen(text: Text, evt) {\r\n const entityRecord = this._reference() && this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference() && this._reference().ReferenceTable;\r\n\r\n if (entityRecord && entityRecord.IsValid) {\r\n let options = {\r\n EntityId: entityRecord.SelectedEntity.Id,\r\n RecordId: entityRecord.SelectedRecord.Id,\r\n IsOpenInModal: evt.ctrlKey || this._form.GetScreen().IsInModal(),\r\n Owner: this._form.GetScreen()\r\n };\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, options);\r\n }\r\n\r\n if (referenceTable && !entityRecord && this._renderMode() === RenderModes.Edit) {\r\n this.CreateRecord(referenceTable.Id);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n CreateRecord(entityId: number) {\r\n const typeScreen = new TypeScreen(entityId, 0, true);\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n let eventArgsData = eventArgs.data;\r\n this.NewRecord(entityId, eventArgsData.TypeId, eventArgsData.TypeName, eventArgsData.KindId, eventArgsData.ExampleRecordId);\r\n });\r\n typeScreen.Show();\r\n }\r\n\r\n\r\n NewRecord(\r\n entityId: number,\r\n tableTypeId: number,\r\n tableTypeName: string,\r\n kindId: number,\r\n exampleRecordId: number\r\n ) {\r\n let fields: Array<IFieldDataModel> = [\r\n { Name: 'F_TYPE', Value: tableTypeId.toString() },\r\n { Name: 'F_KIND', Value: kindId.toString() }];\r\n\r\n let createRecordRequest: ICreateRecordRequest = {\r\n TableId: entityId,\r\n RequiredValidation: false,\r\n Fields: fields,\r\n ExampleRecordId: exampleRecordId ? exampleRecordId : null\r\n };\r\n\r\n RecordStore.CreateRecord(createRecordRequest).then((recordId) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n let selectedEntityRecord = new SelectedEntityRecordModel();\r\n let selectedRecord = new SelectedRecordModel();\r\n selectedRecord.Id = recordId;\r\n selectedRecord.Memo = '';\r\n selectedRecord.TypeName = tableTypeName;\r\n selectedEntityRecord.SelectedRecord = selectedRecord;\r\n let selectedEntityModel = new SelectedEntityModel();\r\n selectedEntityModel.Id = this._reference().ReferenceTable.Id;\r\n selectedEntityModel.Icon = this._reference().ReferenceTable.EntityIcon;\r\n selectedEntityModel.Name = this._reference().ReferenceTable.Name;\r\n selectedEntityModel.Translation = this._reference().ReferenceTable.Translation;\r\n selectedEntityRecord.SelectedEntity = selectedEntityModel;\r\n this._reference().Name = '';\r\n this._reference().RecordId = recordId;\r\n this._value('');\r\n this._reference().IsModified = true;\r\n this._reference().SelectedEntityRecord = selectedEntityRecord;\r\n this.SetReferenceDataForEditMode();\r\n this.LoadReferenceConsultScreen();\r\n }).fail((err) => {\r\n let notifier = new Notifier(null);\r\n notifier.Failed(JSON.parse(err.message).Message);\r\n });\r\n }\r\n\r\n private GetClassName(): string {\r\n const classes = [this.FormatName, this._textHeight(), this._isIconVisible && 'with-icon'];\r\n\r\n if (this._reference()) {\r\n if (this._reference().SelectedEntityRecord ||\r\n (this._renderMode() === RenderModes.Edit && this._reference().ReferenceTable && this._reference().ReferenceTable.IsValid)) {\r\n classes.push('marker-link');\r\n }\r\n }\r\n\r\n return classes.join(' ');\r\n }\r\n\r\n private SetInvalidIcon() {\r\n let iconModel = new IconModel();\r\n iconModel.IsImage = false;\r\n iconModel.IsIcon = true;\r\n iconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n iconModel.Name = 'fa-times';\r\n\r\n this._icon(new Icon(iconModel));\r\n }\r\n\r\n private SetIcon(icon: IconModel) {\r\n this._icon(new Icon(icon));\r\n }\r\n\r\n SetReferenceData(reference: ReferenceModel) {\r\n this._reference(reference);\r\n\r\n if (!reference) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.REFERENCE_TABLE_NOT_SET);\r\n return;\r\n } else {\r\n if (reference.SelectedEntityRecord && !reference.SelectedEntityRecord.SelectedEntity) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.TABLE_NOT_FOUND);\r\n return;\r\n } else if (reference.SelectedEntityRecord && !reference.SelectedEntityRecord.SelectedRecord) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.RECORD_NOT_FOUND);\r\n return;\r\n } else if (reference.ReferenceTable && !reference.ReferenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this._value(NOTIFICATIONS.INVALID_REFERENCE_TABLE);\r\n return;\r\n } else {\r\n if (this._renderMode() === RenderModes.View) {\r\n this.SetReferenceDataForViewMode();\r\n return;\r\n }\r\n\r\n if (this._renderMode() === RenderModes.Edit) {\r\n this.SetReferenceDataForEditMode();\r\n this.LoadReferenceConsultScreen();\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private SetReferenceDataForViewMode() {\r\n const entityRecord = this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference().ReferenceTable;\r\n\r\n if (referenceTable && referenceTable.IsValid) {\r\n this.SetInvalidIcon();\r\n this._value(LABELS.NO_RECORD);\r\n return;\r\n }\r\n\r\n if (entityRecord) {\r\n this.Label(entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name);\r\n this.SetIcon(entityRecord.SelectedEntity.Icon);\r\n if (entityRecord.SelectedRecord.Name) {\r\n this._value(entityRecord.SelectedRecord.Name)\r\n } else {\r\n this._value('<i class=\"fa fa-external-link\"></i>');\r\n }\r\n }\r\n }\r\n\r\n private SetReferenceDataForEditMode() {\r\n const entityRecord = this._reference().SelectedEntityRecord;\r\n const referenceTable = this._reference().ReferenceTable;\r\n\r\n if (!entityRecord && referenceTable) {\r\n this._value(`${this._labels.CREATE}...`);\r\n this.Label(referenceTable.Translation || referenceTable.Name);\r\n this.SetIcon(referenceTable.EntityIcon);\r\n return;\r\n } else if (entityRecord) {\r\n if (this._form.GetScreen().IsLinkEditor) {\r\n this.AddStyle('display', 'none');\r\n }\r\n this.Label(entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name);\r\n this.SetIcon(entityRecord.SelectedEntity.Icon);\r\n this._value(entityRecord.SelectedEntity.Translation || entityRecord.SelectedEntity.Name);\r\n if (entityRecord.SelectedRecord.Name) {\r\n this._value(entityRecord.SelectedRecord.Name);\r\n } else {\r\n this._value('<i class=\"fa fa-external-link\"></i>');\r\n }\r\n }\r\n }\r\n\r\n ApplyCulture(value: string): string {\r\n if (!!value && this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return FormatConverter.ConvertDecimal(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>): void {\r\n super.AfterRender(elements);\r\n this._el = _.find(elements, (element) => element.nodeType === 1);\r\n if (!this.FieldModel) return;\r\n\r\n const formatName = this.FieldModel.FormatName;\r\n if ((FieldFormat.IsDecimal(formatName) ||\r\n FieldFormat.IsCurrency(formatName) ||\r\n FieldFormat.IsPercentage(formatName) ||\r\n this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Integer)\r\n && (this._renderMode() === RenderModes.Edit)) {\r\n this.AddEventListenerChangeValue(elements);\r\n }\r\n\r\n this._tooltip({\r\n content: this.LineBreak || this.Reference ? this.FormatDisplayValue : _.escape(this.FormatDisplayValue),\r\n onlyOnOverflow: true,\r\n addClass: 'ellipsis-tooltip',\r\n })\r\n }\r\n\r\n AddEventListenerChangeValue(parentEl) {\r\n const textarea = $(parentEl).find('.es-textarea-control')[0];\r\n\r\n if (!textarea) return;\r\n\r\n textarea.onkeyup = () => {\r\n const actualValue: any = $(textarea).val();\r\n\r\n if (!actualValue.length) {\r\n this._value(actualValue);\r\n }\r\n };\r\n }\r\n\r\n Deserialize() {\r\n if (this.FormatName === FORMATS.PHONE_NUMBER && this._phoneCode && this.IsModified && this._value()) {\r\n this._value(this._phoneCode + '-' + this._value().replace(/\\D/g, '').replace('-', ''));\r\n }\r\n\r\n const undoPhoneChange = () => {\r\n const value = this._value();\r\n if (this.FormatName === FORMATS.PHONE_NUMBER && this._phoneCode && this.IsModified && value) {\r\n const dashPosition = value.indexOf('-');\r\n this._value(value.substr(dashPosition + 1));\r\n }\r\n };\r\n\r\n if (this.FieldModel\r\n && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal\r\n && FieldFormat.IsPercentage(this.FieldModel.FormatName)\r\n && this.IsModified && this._value()) {\r\n this._value(String((parseFloat(\r\n this._value().replace(',', '.')) / 100)\r\n .toFixed(this.FieldModel.Size)));\r\n }\r\n\r\n if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Reference) {\r\n if (this._reference() && (this._reference().IsModified)) {\r\n if (!this._reference()) {\r\n this._value(null);\r\n }\r\n if (this._reference().ReferenceTable) {\r\n this._value(`${this._reference().ReferenceTable.Id}`);\r\n }\r\n if (this._reference().SelectedEntityRecord) {\r\n this._value(`${this._reference().SelectedEntityRecord.SelectedEntity.Id};${this._reference().SelectedEntityRecord.SelectedRecord.Id}`);\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n const field = _.first(this._model().Fields);\r\n\r\n this.RemoveNotAllowedSymbols();\r\n\r\n if (!this._isReadonly && field) {\r\n let serializedValue = [`${field.EntityName}.${field.Name}`];\r\n\r\n if (!this.IsTranslatable()) {\r\n serializedValue.push(this._value());\r\n } else {\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n serializedValue.push(defaultTranslation);\r\n\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n const changedTranslations = activeTranslations.map(translation => {\r\n const languageShortName = TranslationManager.Instance.GetLanguageById(translation.LanguageId).ShortName;\r\n\r\n return !translation.Value ? `${languageShortName}_` : `${languageShortName}_${translation.Value}`;\r\n });\r\n\r\n serializedValue.push(...changedTranslations);\r\n }\r\n\r\n undoPhoneChange();\r\n\r\n return serializedValue;\r\n }\r\n\r\n undoPhoneChange();\r\n\r\n return null;\r\n }\r\n\r\n IsModified(): boolean {\r\n if (super.IsModified() || this._isNewRecord) {\r\n return true;\r\n }\r\n\r\n if (!this.IsTranslatable()) {\r\n return this._value() !== this._originalValue;\r\n }\r\n\r\n const defaultTranslation = this._translationFieldEditor.GetDefaultTranslation().Value;\r\n const activeTranslations = this._translationFieldEditor.GetTranslations(false);\r\n\r\n const translationDiffExists = _.any(activeTranslations, activeTranslation => {\r\n const serverTranslation = _.find(this._serverTranslations, serverTranslation => serverTranslation.LanguageId === activeTranslation.LanguageId);\r\n return serverTranslation && activeTranslation.Value !== serverTranslation.Value;\r\n });\r\n\r\n return defaultTranslation !== this._originalValue || translationDiffExists;\r\n }\r\n\r\n GetValue(): any {\r\n return this._value();\r\n }\r\n\r\n get Value(): any {\r\n return this._value();\r\n }\r\n\r\n GetTranslations() {\r\n return this._translationFieldEditor.GetTranslations(false);\r\n }\r\n\r\n GetDefaultTranslation() {\r\n return this._translationFieldEditor.GetDefaultTranslation();\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this.GetFieldModel() && this.GetFieldModel().IsVirtual) {\r\n this._isValid(true);\r\n return true;\r\n }\r\n\r\n this.SetDefaultValueByTranslation();\r\n if (this._isRequired && this._hasTranslations()) {\r\n\r\n let defaultItem = _.find(this._translationFieldEditor.TranslationItemsList, (item) => {\r\n return item.Language.IsDefault;\r\n });\r\n\r\n if (defaultItem && defaultItem.Value()) {\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n }\r\n } else {\r\n if (this._isRequired && (!this._value() || this._value() === '')) {\r\n this._isValid(false);\r\n } else if (this.FormatName === FORMATS.PHONE_NUMBER) {\r\n const value = this._value();\r\n const formattedValue = this.GetFormattedPhoneNumber(value ? value.replace(/\\D/g, '') : '');\r\n\r\n if (\r\n formattedValue &&\r\n intlTelInputUtils.getValidationError(formattedValue, this._phoneCountry ?? this._globalCountry)\r\n ) {\r\n let errorCode = parseInt(intlTelInputUtils.getValidationError(formattedValue, this._phoneCountry ?? this._globalCountry));\r\n let { min, max } = this.getPhoneNumberMinAndMaxLength(this._phoneCountry);\r\n\r\n if (errorCode === intlTelInputUtils.validationError.TOO_SHORT) {\r\n this._validationMsg(`${NOTIFICATIONS.MINIMUM_LENGTH_OF_THIS_FIELD} ${min}`);\r\n } else if (errorCode === intlTelInputUtils.validationError.TOO_LONG) {\r\n this._validationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${max}`);\r\n } else if (errorCode == intlTelInputUtils.validationError.NOT_A_NUMBER) {\r\n this._validationMsg(`${NOTIFICATIONS.MINIMUM_LENGTH_OF_THIS_FIELD} ${min}`);\r\n }\r\n this._isValid(false);\r\n } else {\r\n this._isValid(true);\r\n }\r\n } else if (this.FormatName === FORMATS.DUTCH_POSTAL_CODE && this._isRequired) {\r\n let formattedValue = this._value() ? this._value().replace(/[^0-9\\sA-Z]/g, '') : '';\r\n if (formattedValue.length < 7) {\r\n this._validationMsg(LABELS.DUTCH_POSTAL_CODE_MUST_BE_FULFILLED);\r\n this._isValid(false);\r\n }\r\n } else if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Integer) {\r\n const value = this._value();\r\n if (value === undefined || value === null || value === '') {\r\n this._isValid(true);\r\n } else {\r\n if (isInIntegerBounds(Number(value))) {\r\n this._isValid(true);\r\n } else {\r\n this._validationMsg(getIntegerValidationMessage());\r\n this._isValid(false);\r\n }\r\n }\r\n } else if (this.FieldModel && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal) {\r\n const value = this._value();\r\n if (value === undefined || value === null || value === '') {\r\n this._isValid(true);\r\n } else {\r\n const [integerPart, decimalPart = ''] = value.replace('-', '').split(/[.,]/);\r\n\r\n const size = getDecimalSize(this.FieldModel);\r\n\r\n if (decimalPart.length <= size && integerPart.length + decimalPart.length <= 29) {\r\n this._isValid(true);\r\n } else {\r\n this._validationMsg(getDecimalValidationMessage(size));\r\n this._isValid(false);\r\n }\r\n }\r\n } else {\r\n this._isValid(true);\r\n }\r\n }\r\n return this._isValid();\r\n }\r\n\r\n ValidateTranslation(translationValue: string) {\r\n const fieldMaxLength = this.GetFieldMaxLength()\r\n if (translationValue && fieldMaxLength > 0 && translationValue.length >= fieldMaxLength) {\r\n this._isValid(false);\r\n this._validationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${fieldMaxLength}`);\r\n } else {\r\n this._isValid(true);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n }\r\n\r\n SetDefaultValueByTranslation() {\r\n if (this._isRequired && this._hasTranslations()) {\r\n\r\n let defaultItem = _.find(this._translationFieldEditor.TranslationItemsList, (item) => {\r\n return item.Language.IsDefault;\r\n });\r\n\r\n if (defaultItem && !defaultItem.Value()) {\r\n\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(this._translationFieldEditor.TranslationItemsList, (item) => {\r\n return currentLang.Id === item.Language.Id;\r\n });\r\n\r\n if (currentLangItem.Value()) {\r\n defaultItem.Value(currentLangItem.Value());\r\n } else {\r\n let first = _.first(this._translationFieldEditor.TranslationItemsList);\r\n if (first) {\r\n defaultItem.Value(first.Value());\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n OnPastePhoneNumber(type, ev) {\r\n let pastedText = ev.originalEvent.clipboardData.getData('text');\r\n pastedText = pastedText.replace(/\\D/g, '');\r\n this._value(this.GetFormattedPhoneNumber(pastedText));\r\n return true;\r\n }\r\n\r\n GetFormattedPhoneNumber(value: string): string {\r\n if (value.startsWith('0')) {\r\n return value.substr(1);\r\n }\r\n\r\n const withoutPlus = value.replace('+', '');\r\n const withoutCode = withoutPlus.startsWith(this._phoneCode) ? withoutPlus.replace(this._phoneCode, '') : withoutPlus;\r\n\r\n if (withoutCode.startsWith('0')) {\r\n return withoutCode.substr(1);\r\n }\r\n\r\n return withoutCode;\r\n }\r\n\r\n OnKeyUpValidation(that, event): boolean {\r\n if (FormatManager.IsSocialFormat(this.FormatName)) {\r\n const value = this._value();\r\n const formattedUrl = FormatManager.FormatUrlForSocial(value);\r\n if (formattedUrl) {\r\n this._value(formattedUrl);\r\n this._isValid(true);\r\n } else {\r\n this._isValid(false);\r\n this._validationMsg(`${NOTIFICATIONS.INCORRECT_URL_PLEASE_TYPE_FULL_URL_LIKE}`);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n if (this._value() && this.GetFieldMaxLength() > 0 && this._value().length >= this.GetFieldMaxLength()) {\r\n this._isValid(false);\r\n this._validationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${this.GetFieldMaxLength()}`);\r\n } else if (this._value() && this.FieldModel.FieldTypeName === FIELD_TYPES.Integer && !isInIntegerBounds(Number(this._value()))) {\r\n this._isValid(false);\r\n this._validationMsg(getIntegerValidationMessage());\r\n } else if (this._value() && this.FieldModel.FieldTypeName === FIELD_TYPES.Decimal && this._value().replace(/[-.,]/g, '').length > 29) {\r\n const size = getDecimalSize(this.FieldModel);\r\n\r\n this._isValid(false);\r\n this._validationMsg(getDecimalValidationMessage(size));\r\n } else {\r\n this._isValid(true);\r\n this._validationMsg(this._labels.THIS_FIELD_IS_REQUIRED);\r\n }\r\n\r\n this.FormatEditableValue(event);\r\n return this._isValid();\r\n }\r\n\r\n private FormatUrl(value): string {\r\n return value() && value().includes('://') ? value() : `http://${value()}`;\r\n }\r\n\r\n ApplyFormatter() {\r\n if (this.GetRenderMode() === RenderModes.View) {\r\n let screen = this.GetForm().GetScreen();\r\n\r\n this._formatter(new FormatManager({\r\n Screen: this.Screen,\r\n Icon: this.GetIconNameForLinkType(),\r\n Value: this._value(),\r\n Format: this.FormatName,\r\n TableId: screen.GetEntityId(),\r\n RecordId: screen.GetRecordId(),\r\n Label: this._model().Name,\r\n LabelPosition: this._model().LabelPosition,\r\n LabelStyle: this._labelStyle\r\n }));\r\n this._hasTemplate(!!this._formatter() && this._formatter().HasTemplate);\r\n }\r\n }\r\n\r\n IsSocialViewActive(): boolean {\r\n return (FormatManager.IsSocialFormat(this.FormatName)\r\n || FormatManager.IsSkypeFormat(this.FormatName))\r\n && this._hasTemplate();\r\n }\r\n\r\n IsLinkTypeControl(): boolean {\r\n return CONTROL_TYPES_LINK[this.FormatName];\r\n }\r\n\r\n IsBarcodeButtonVisible() {\r\n return FieldFormat.IsBarcode(this.FormatName) && !this.FieldModel.IsVirtual && !this.GetCombinedReadOnly();\r\n }\r\n\r\n IsBarcodeValid() {\r\n return JsBarcodeExtension.Validate(this.FormatDisplayValue);\r\n }\r\n\r\n GetTooltipContent() {\r\n let tooltipContent = null;\r\n\r\n if (this.FormatDisplayValue) {\r\n tooltipContent = this._labels.VALUE_CANNOT_BE_CONVERTED_TO_BARCODE;\r\n } else {\r\n tooltipContent = this._labels.EMPTY;\r\n }\r\n\r\n return tooltipContent;\r\n }\r\n\r\n GetIconNameForLinkType(): string {\r\n return CONTROL_TYPES_LINK[this.FormatName] ? CONTROL_TYPES_LINK[this.FormatName].icon : null;\r\n }\r\n\r\n FormatEditableValue = (event: { target: HTMLTextAreaElement }) => {\r\n const value = event.target.value;\r\n this._value(this.ModifyValueByFormat(value));\r\n };\r\n\r\n ModifyValueByFormat(value: string) {\r\n let result: string;\r\n if (FieldFormat.IsUppercase(this.FormatName)) {\r\n result = value.toUpperCase();\r\n } else if (FieldFormat.IsLowercase(this.FormatName)) {\r\n result = value.toLowerCase();\r\n } else if (FieldFormat.IsStartswithcapital(this.FormatName)) {\r\n if (value.length > 0) {\r\n result = value.charAt(0).toUpperCase() + value.slice(1);\r\n } else {\r\n result = value;\r\n }\r\n } else {\r\n result = value;\r\n }\r\n return result;\r\n };\r\n\r\n get LineBreak(): boolean {\r\n const value = this._value();\r\n if (value == null) {\r\n return null;\r\n }\r\n const preparedValue = value.toString().replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n return preparedValue.indexOf('<br>') !== -1;\r\n }\r\n\r\n get Reference(): boolean {\r\n return !!this._reference();\r\n }\r\n\r\n get FormatDisplayValue(): string {\r\n const value = this._value();\r\n if (value == null) {\r\n return value;\r\n }\r\n\r\n const preparedValue = value.toString().replace(/(?:\\r\\n|\\r|\\n)/g, '<br>');\r\n\r\n const formattedValue = this.ModifyValueByFormat(preparedValue);\r\n\r\n const lineBreak = preparedValue.indexOf('<br>') !== -1;\r\n\r\n if (\r\n _.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this.FieldModel.FieldTypeName) &&\r\n this.FieldModel.FormatName !== FORMATS.PHONE_NUMBER\r\n ) {\r\n return FormatConverter.LocalizeDecimalOrInteger(formattedValue);\r\n }\r\n\r\n return lineBreak ? formattedValue.replace(/<(?!br\\s*\\/?)[^>]+>/g, '') : formattedValue;\r\n }\r\n\r\n ToggleTranslations() {\r\n this._translationFieldEditor.Toggle();\r\n }\r\n\r\n ChangeTranslation(translation: ITranslationValue) {\r\n const value = this.ApplyCulture(translation.Value);\r\n this._value(value);\r\n this.ApplyFormatter();\r\n this.ValidateTranslation(value);\r\n }\r\n\r\n RemoveNotAllowedSymbols() {\r\n if (this.FieldModel.FormatName !== FORMATS.PHONE_NUMBER) {\r\n return;\r\n }\r\n\r\n const regex = /(\\(_\\)|_|\\(\\)|-(?=\\D))/gi;\r\n\r\n const result = this._value() &&\r\n this._value()\r\n .split(regex)[0]\r\n .replace(' ', '');\r\n\r\n this._value(result);\r\n }\r\n\r\n GetFieldMaxLength(): number {\r\n const fieldData = this._model().Fields[0];\r\n if (!fieldData) {\r\n return;\r\n }\r\n\r\n const maxLength = (fieldData.FieldTypeName === FIELD_TYPES.Decimal) ? -1 : fieldData.Size;\r\n\r\n return maxLength > 0 ? maxLength : -1;\r\n }\r\n\r\n OnPhoneListener(countryData: ICountryData, resetValue: boolean) {\r\n if (resetValue) {\r\n this._value('');\r\n }\r\n this._phoneCountry = countryData.iso2;\r\n this._phoneCode = countryData.dialCode;\r\n\r\n if (this._waitForPhoneCode) {\r\n this._value(this.GetFormattedPhoneNumber(this._value()));\r\n this._originalValue = this.GetFormattedPhoneNumber(this._originalValue);\r\n\r\n this._waitForPhoneCode = false;\r\n }\r\n }\r\n\r\n OpenBarcodeScanner() {\r\n const barcodeScanner = new BarcodeScanner();\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n this._value(eventArgs.data.value);\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n MakeCall() {\r\n //SipClient.Instance.MakeCall(this._value());\r\n }\r\n\r\n GetPhoneCode(): string {\r\n return this._phoneCode;\r\n }\r\n\r\n ResetDependOnValue() {\r\n this.UpdateDependsOnValue();\r\n }\r\n\r\n async LoadReferenceConsultScreen() {\r\n if (this._reference() && this.Screen.IsLinkEditor) {\r\n let referenceTable = this.GetReferenceTable();\r\n let referenceRecord = this.GetReferenceRecord();\r\n\r\n if (!!referenceTable && !!referenceRecord) {\r\n BlockUI.Block({ Target: this._el });\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetScreenByScreenType(\r\n referenceTable,\r\n ScreenTypes.ConsultScreen,\r\n referenceRecord,\r\n DataModes.Default,\r\n this.Screen.IsLinkEditor\r\n )\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((screen: IScreen) => {\r\n screen.RecordOpenInPopUp(!!this._reference(), this.Screen.IsLinkEditor);\r\n screen.SetIsReady(true);\r\n screen.IsReferenceScreen = true;\r\n screen.On('REFRESH_REFERENCE_SCREEN', this, ()=> this.LoadReferenceConsultScreen());\r\n this._referenceConsultScreen(screen);\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n }\r\n }\r\n\r\n private GetReferenceTable() {\r\n return this._reference().SelectedEntityRecord ? this._reference().SelectedEntityRecord.SelectedEntity.Id : this._reference().ReferenceTable.Id;\r\n }\r\n\r\n private GetReferenceRecord() {\r\n return this._reference().SelectedEntityRecord ? this._reference().SelectedEntityRecord.SelectedRecord.Id : this._reference().RecordId;\r\n }\r\n\r\n get ReferenceConsultScreen(): KnockoutObservable<IScreen> {\r\n return this._referenceConsultScreen;\r\n }\r\n\r\n set BackgroundColor(value: string){\r\n let textInputStyle = { backgroundColor: value };\r\n this._textInputStyle(textInputStyle);\r\n };\r\n\r\n get BackgroundColor(): string{\r\n return this._textInputStyle() && this._textInputStyle().backgroundColor;\r\n };\r\n\r\n PrintBarCode(){\r\n DocumentManagerStore.PrintLabel({ Barcode: this._value() }).fail(err=>new Notifier().Failed(err.message));\r\n }\r\n\r\n ForceFocus(){\r\n let textareaElement = $(this._el).find('.input-group').find('textarea');\r\n\r\n setTimeout(() => {\r\n textareaElement.click();\r\n }, 200);\r\n\r\n textareaElement.one('click', ()=> {\r\n textareaElement.focus();\r\n })\r\n }\r\n}","// Module\nvar code = \"<div data-control-type=\\\"text-control\\\" class=\\\"ToolBarPreview\\\"> <label data-bind=\\\"attr: { title: Label }\\\"> <i class=\\\"fa fa-font\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <!--ko if: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"text-control inline-social-link\\\"> <!-- ko with: _formatter --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!--ko ifnot: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"blockElement: $data._isDataLoading, style: { display: _display }, click: _help.ShowControlHelp.bind(_help, $data)\\\" class=\\\"text-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix popover-multiline-container\\\"> <!--ko if: _hasTemplate --> <!-- ko with: _formatter --> <label class=\\\"text-contol-label\\\" data-bind=\\\"tooltip: $parent.DescriptionToolTip, style: $parent._labelStyle\\\"> <strong data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\ttemplate: {\\r\\n\\t\\t\\t\\t\\t\\t\\thtml: $data.GetTemplate.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tdata: { _onlyLabel: true, _isIconHidden: !$parent._isIconVisible, _isGrid: _isGrid }\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\\"> </strong> <span class=\\\"text-contol-label__name\\\" data-bind=\\\"text: $parent.Label\\\"></span> </label> <div data-bind=\\\"css: $parent.GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: $parent.OpenEditScreen.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': $parent.Label ,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': $parent._reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\tstyle: $parent._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\thtmlMode: true\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control link-type-control-input\\\"> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _hasTemplate --> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"tooltip: DescriptionToolTip, style: _labelStyle, css: _textHeight()\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label\\\"></span> </label> <!--ko if: FormatName === \\\"Phone number\\\" || FormatName === \\\"Barcode\\\" --> <!--ko if: FormatName === \\\"Phone number\\\" --> <div class=\\\"intl-wrapper\\\"> <a data-bind=\\\"attr: {href: _value() ? 'tel:+' + _phoneCode + _value(): 'javascript:void(0)'}, css: {'clickable': _value()}\\\"> <span data-bind=\\\"css: {[FormatName]: true, [_textHeight()]: true}, textInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttext: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tellipsisTooltip: {content: '+' + _phoneCode + _value()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tintlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'aggressive',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinitialCountry: _globalCountry\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlistener: $data.OnPhoneListener.bind($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t attr: {'value': _value, 'data-text': Label}\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl\\\"> </span> <i data-bind=\\\"click: $data.MakeCall.bind($data)\\\" class=\\\"fa fa-phone make-call\\\" aria-hidden=\\\"true\\\"></i> </a> </div> <!-- /ko --> <!--ko if: FormatName === \\\"Barcode\\\" --> <!--ko if: IsBarcodeValid() --> <svg data-bind=\\\"jsBarcode: {code: FormatDisplayValue, options: {height: 40, width: 2, displayValue: true}}\\\" class=\\\"barcode-svg\\\"></svg> <!-- /ko --> <!--ko ifnot: IsBarcodeValid() --> <div class=\\\"ban-icon\\\" data-bind=\\\"tooltip: { content: GetTooltipContent() }\\\"> <i class=\\\"fa fa-ban\\\" aria-hidden=\\\"true\\\"></i> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko ifnot: FormatName === \\\"Phone number\\\" || FormatName === \\\"Barcode\\\" --> <!-- ko if: _isHyperlink --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.OpenRecordScreen.bind($data, $parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttext: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control textarea-control_hyperlink\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isHyperlink --> <!-- ko if: LineBreak || Reference --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.OpenEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thtml: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> </div> <!-- /ko --> <!-- ko ifnot: LineBreak || Reference --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.OpenEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttext: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko if: IsBarcodeButtonVisible() && IsBarcodeValid() --> <button data-bind=\\\"click: PrintBarCode\\\" class=\\\"btn blue-sharp barcode-print-button\\\"> <i class=\\\"fa fa-print\\\"></i> </button> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"style: { display: _display, backgroundColor: _backgroundColor}\\\" class=\\\"text-control inline-social-link\\\"> <!-- ko with: _formatter --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <!--ko ifnot: (IsSocialViewActive()) --> <div data-control-type=\\\"text-control\\\" data-bind=\\\"style: { display: _display }\\\" class=\\\"text-control\\\"> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" class=\\\"ConsultScreenView label-input form-standart-control clearfix popover-multiline-container\\\"> <!--ko if: _hasTemplate --> <!-- ko with: _formatter --> <label class=\\\"text-contol-label\\\" data-bind=\\\"attr: {'title': $parent.Label }, style: $parent._labelStyle\\\"> <span data-bind=\\\"\\r\\n\\t\\t\\t\\t\\ttemplate: {\\r\\n\\t\\t\\t\\t\\t\\thtml: $data.GetTemplate.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tdata: { _onlyLabel: true, _isIconHidden: !$parent._isIconVisible, _isGrid: _isGrid }\\r\\n\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\\"> </span> <span data-bind=\\\"text: $parent.Label, attr: {'title': $parent.Label }\\\"></span> </label> <div data-bind=\\\"css: $parent.GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\tattr: { 'data-text': $parent.Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': $parent._reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\tstyle: $parent._textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\thtmlMode: true\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control link-type-control-input\\\"> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!--ko ifnot: _hasTemplate --> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"attr: {'title': Label }, style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <!--ko if: FormatName === \\\"Phone number\\\" --> <div class=\\\"intl-wrapper\\\"> <a data-bind=\\\"attr: {href: _value() ? 'tel:+' + _phoneCode + _value(): 'javascript:void(0)'}, css: {'clickable': _value()}\\\"> <input data-bind=\\\"css: {[FormatName]: true, [_textHeight()]: true }, textInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t value: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t intlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'aggressive',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t \\t\\t\\tinitialCountry: _globalCountry\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t \\t\\tlistener: $data.OnPhoneListener.bind($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t },\\r\\n\\t\\t\\t\\t\\t\\t\\t attr: {'value': _value, placeholder: Label}\\\" readonly=\\\"readonly\\\" disabled=\\\"disabled\\\" type=\\\"phone\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl\\\" rows=\\\"1\\\"/> <i class=\\\"fa fa-phone make-call\\\" aria-hidden=\\\"true\\\"></i> </a> </div> <!-- /ko --> <!--ko ifnot: FormatName === \\\"Phone number\\\" --> <div data-bind=\\\"css: GetClassName(),\\r\\n\\t\\t\\t\\t\\t\\tclick: $data.OpenEditScreen.bind($data),\\r\\n\\t\\t\\t\\t\\t\\tattr: { 'data-text': Label,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t'data-value': !!_value(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t'data-toggle': _reference() ? 'popover' : '' },\\r\\n\\t\\t\\t\\t\\t\\ttooltip: _tooltip,\\r\\n\\t\\t\\t\\t\\t\\thtml: FormatDisplayValue,\\r\\n\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\ttriggerMode: 'hover',\\r\\n\\t\\t\\t\\t\\t\\thtmlMode: true,\\\" data-placement=\\\"left\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"attr: { 'data-control-position': LabelPosition }\\\" data-control-type=\\\"text-control\\\" class=\\\"FormDesignerView label-input form-standart-control clearfix\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <label data-bind=\\\"style: _labelStyle\\\"> <!-- ko if: _isIconVisible --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: Label, attr: {'title': Label }\\\"></span> </label> <div data-bind=\\\"attr: { 'data-text': Label }, text: _value, style: _textInputStyle, css: { _textHeight, 'with-icon': _isIconVisible}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label textarea-control\\\"></div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko if: $data._isVisible --> <div data-bind=\\\"blockElement: $data._isDataLoading, click: _help.ShowControlHelp.bind(_help, $data), css: {'full-width-control': FieldModel.FullWidth}\\\" class=\\\"text-control\\\"> <!--<input type=\\\"text\\\" data-bind=\\\"hasFocus: IsTextFocused\\\"/>--> <div data-bind=\\\"attr: { 'data-control-position': LabelPosition },\\r\\n\\t\\t\\t\\t\\t\\tstyle: { display: _display, backgroundColor: _backgroundColor},\\r\\n\\t\\t\\t\\t\\t\\tcss: {'has-error wobble animated': !_isValid()}\\\" data-control-type=\\\"text-control\\\" class=\\\"EditScreenView label-input form-standart-control clearfix\\\"> <label data-bind=\\\"style: _labelStyle, css: _textHeight()\\\"> <span data-bind=\\\"text: Label, tooltip: DescriptionToolTip\\\"></span> <i data-bind=\\\"css: {'hidden': _isValid},\\r\\n\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: _validationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <!-- ko if: IsLinkTypeControl() --> <!--<div class=\\\"link-type-icon-wrapper\\\">\\r\\n\\t\\t\\t\\t<i data-bind=\\\"css: {[GetIconNameForLinkType()]: true}\\\"></i>\\r\\n\\t\\t\\t</div>--> <!-- /ko --> <!--ko if: LabelPosition === \\\"NoLabel\\\" --> <!--<span class=\\\"link-type-icon-wrapper\\\" style=\\\"position: absolute; top: 1px;\\\">\\r\\n\\t\\t\\t\\t<i class=\\\"fa fa-send\\\"></i>\\r\\n\\t\\t\\t</span>--> <!-- /ko --> <!--ko if: FormatName === \\\"Phone number\\\" --> <input data-bind=\\\"autogrow: {},\\r\\n\\t\\t\\t\\t\\t\\t\\tcss: {[FormatName]: true, [_textHeight()]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t'link-type-control-input': IsLinkTypeControl()},\\r\\n\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\ttextInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\tevent: { blur: OnBlur },\\r\\n\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\tintlTelInput: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tautoPlaceholder: 'aggressive',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tutilsScript: 'intlTelInput-utils',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tseparateDialCode: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thiddenInput: 'full_phone',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tinitialCountry: _globalCountry,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdropdownContainer: document.body,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tisModal: _form && _form.GetScreen().IsInModal(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tscreen: _form && _form.GetScreen()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlistener: $data.OnPhoneListener.bind($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tinputMask: { type: 'Decimal', value: _value },\\r\\n\\t\\t\\t\\t\\t\\t\\tattr: {'readonly': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'required': _isRequired,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'value': _value\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': OnKeyUpValidation, 'paste': $data.OnPastePhoneNumber.bind($data)}\\\" type=\\\"phone\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl entlTelInput--edit-mode\\\" rows=\\\"1\\\"/> <!-- /ko --> <!--ko ifnot: FormatName === \\\"Phone number\\\"--> <div class=\\\"input-group\\\" data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[FormatName]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'barcode': IsBarcodeFormat\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\"> <textarea data-bind=\\\"autogrow: {},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[FormatName]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t[_textHeight()]: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'displayIcon': FormatName === 'Currency',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'link-type-control-input': IsLinkTypeControl(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'input-with-translations': _hasTranslations(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'input-with-barcode-button': IsBarcodeButtonVisible()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: _value,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tinputMask: { fieldModel: FieldModel, value: _value },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: _textInputStyle,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'readonly': GetCombinedReadOnly(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'required': _isRequired,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'tabindex': GetCombinedReadOnly() ? -1 : 1,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'maxlength': GetFieldMaxLength(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'placeholder' : Label},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': OnKeyUpValidation, blur : OnKeyUpValidation}\\\" type=\\\"text\\\" class=\\\"form-control control record-field with-label es-textarea-control subFormControl\\\" rows=\\\"1\\\" data-with-number-group-separators=\\\"true\\\">\\r\\n\\t\\t\\t\\t</textarea> <!-- ko if: IsBarcodeButtonVisible() --> <button data-bind=\\\"click: OpenBarcodeScanner\\\" class=\\\"btn blue-sharp text-control__barcode-button\\\"> <i class=\\\"fa fa-barcode\\\"></i> </button> <!-- /ko --> <!-- ko ifnot: IsBarcodeFormat --> <!-- ko if: IsDependsOn --> <span class=\\\"input-group-addon u-cursor-pointer\\\" data-bind=\\\"click: $data.ResetDependOnValue\\\"> <i class=\\\"fa fa-refresh\\\"></i> </span> <!--/ko--> <!--ko if: _hasTranslations--> <div data-bind=\\\"css: { 'is-mobile': _isMobile }\\\" class=\\\"translation-container\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: ToggleTranslations\\\"> <!--ko with: _translationFieldEditor._activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img\\\" data-bind=\\\"attr: {src: Language.Flag}\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: _translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!--/ko--> <!-- ko if: IsBarcodeButtonVisible() --> <button data-bind=\\\"click: OpenBarcodeScanner\\\" class=\\\"btn blue-sharp text-control__barcode-button\\\"> <i class=\\\"fa fa-barcode\\\"></i> </button> <!-- /ko --> <!--ko if: FormatName === 'Currency' --> <span class=\\\"currencyIcon\\\"></span> <!--/ko--> <!--ko if: IsPercentageIcon --> <span data-bind=\\\"css: {'is-depends-on': IsDependsOn}\\\" class=\\\"percentageIcon\\\"></span> <!--/ko--> <!--/ko--> </div> <!-- /ko --> <!--<i data-bind=\\\"click: $data.ResetDependOnValue\\\" class=\\\"fa fa-refresh\\\"></i>--> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","//Libs\r\nimport * as moment from \"moment\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\nexport class DateTime {\r\n\tstatic GetWeekNumber(date: Date): number {\r\n\t\treturn moment(date).isoWeek();\r\n\t}\r\n\r\n\tstatic DestructDate(date: Date): IDestructedDate {\r\n\t\tconst weekAndYear: IDestructedDate = {\r\n\t\t\tWeekNumber: this.GetWeekNumber(date),\r\n\t\t\tYear: this.GetWeekYear(date)\r\n\t\t}\r\n\r\n\t\treturn weekAndYear;\r\n\t}\r\n\r\n\tstatic GetWeekYear(date: Date): number {\r\n\t\treturn moment(date).isoWeekYear();\r\n\t}\r\n\r\n\tstatic GetWeekDescription(date: Date): string {\r\n return moment(date).format(DATE_FORMATS.LONG_DATE_SHORT_WEEK.MomentFormat);\r\n }\r\n\r\n\tstatic GetWeekStart(date: Date): Date {\r\n\t\treturn moment(date).startOf(\"isoWeek\").toDate();\r\n\t}\r\n\r\n\tstatic GetWeekStartByNumber(week: number, year: number): Date {\r\n\t\treturn moment().year(year).isoWeek(week).startOf(\"isoWeek\").toDate();\r\n\t}\r\n\r\n\tstatic GetWeekEnd(date: Date): Date {\r\n\t\treturn moment(date).endOf(\"isoWeek\").toDate();\r\n\t}\r\n\r\n\tstatic GetPrevWeekStartDate(date: Date) {\r\n\t\tconst weekStartDate = this.GetWeekStart(date);\r\n\t\treturn this.AddDays(weekStartDate, -7);\r\n\t}\r\n\r\n\tstatic GetNextWeekStartDate(date: Date) {\r\n\t\tconst weekEndDate = this.GetWeekEnd(date);\r\n\t\treturn this.AddSeconds(weekEndDate, 1);\r\n\t}\r\n\r\n\tstatic GetDatesBetween(start: Date, end: Date): Date[] {\r\n\t\tconst datesRange: Date[] = [];\r\n\t\tlet current = new Date(start.toString());\r\n\r\n\t\twhile (current <= end) {\r\n\t\t\tdatesRange.push(new Date(current.toString()));\r\n\t\t\tcurrent = this.AddDays(current, 1);\r\n\t\t}\r\n\r\n\t\treturn datesRange;\r\n\t}\r\n\r\n\tstatic GetWeeksCount(year: number): number {\r\n\t\treturn moment(new Date(year, 1, 1)).isoWeeksInYear();\r\n\t}\r\n\r\n\tstatic AddMinutes(date: Date, minutes: number): Date {\r\n\t\treturn moment(date).add(\"minutes\", minutes).toDate();\r\n\t}\r\n\r\n\tstatic AddSeconds(date: Date, seconds: number): Date {\r\n\t\treturn moment(date).add(\"seconds\", seconds).toDate();\r\n\t}\r\n\r\n\tstatic AreSame(first: Date, second: Date, withTime: boolean = false): boolean {\r\n\t\tif (withTime) {\r\n\t\t\treturn first === second;\r\n\t\t}\r\n\r\n const firstCopy = moment(new Date(first.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n const secondCopy = moment(new Date(second.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n\r\n\t\treturn firstCopy === secondCopy;\r\n\t}\r\n\r\n\tstatic Max(first: Date, second: Date, withTime: boolean = false): Date {\r\n\t\tif (withTime) {\r\n\t\t\treturn first >= second\r\n\t\t\t\t? first\r\n\t\t\t\t: second;\r\n\t\t}\r\n\r\n const firstCopy = moment(new Date(first.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n const secondCopy = moment(new Date(second.toString())).hours(0).minutes(0).seconds(0).milliseconds(0).toDate();\r\n\r\n\t\treturn firstCopy >= secondCopy\r\n\t\t\t? first\r\n\t\t\t: second;\r\n\t}\r\n\r\n\tprivate static AddDays(date: Date, days: number): Date {\r\n\t\tconst newDate = new Date(date.valueOf());\r\n\t\tnewDate.setDate(newDate.getDate() + days);\r\n\t\treturn newDate;\r\n\t}\r\n}\r\n\r\nexport interface IDestructedDate {\r\n\tWeekNumber: number;\r\n\tYear: number;\r\n}","import {Event} from \"Core/Common/Event\";\r\n\r\nexport abstract class TimeWritingView extends Event {\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tabstract GetTemplate();\r\n\r\n\tabstract Show(params: any): void;\r\n\r\n\tAfterRender(): void {\r\n\r\n\t}\r\n\r\n\tCanBeUpdated() {\r\n\t\treturn true;\r\n\t}\r\n}","import { Week } from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\nexport class State {\r\n\tYear: number;\r\n\tSelectedWeek: Week;\r\n\r\n\tconstructor(initializers?: Partial<State>) {\r\n\t\tif (initializers) {\r\n\t\t\tthis.Year = initializers.Year;\r\n\t\t\tthis.SelectedWeek = initializers.SelectedWeek;\r\n\t\t}\r\n\t}\r\n}","//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Request} from \"Core/Common/Request\";\r\nimport {Deserialize} from 'libs/cerialize';\r\n\r\n//UI\r\n\r\n//Models\r\nimport {YearDataResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/YearDataResponseModel\";\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {DisapprovedReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReportResponseModel\";\r\nimport {TimeCloseReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/TimeCloseReportResponseModel\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n\r\nexport class TimeWritingStore {\r\n static GetUsers(timeTableId: number) {\r\n const deferredResult = P.defer<UsersResponseModel>();\r\n\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetTimeWritingUsers\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n }, params: {timeTableId: timeTableId}\r\n }).then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse('Error getting users', deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDay(params: {\r\n ControlId: number,\r\n TimeTableId: number,\r\n SubjectEntityId: number | null,\r\n SubjectRecordId: number | null,\r\n Date: string,\r\n UserId: number\r\n }): P.Promise<TimeWritingReportResponseModel> {\r\n const deferredResult = P.defer<TimeWritingReportResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetTimeWritingReportForDay\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => {\r\n this.ResolveObjectResponse(response, deferredResult);\r\n if (response.ResultObject.WeekReports[0].Messages.length > 0) {\r\n response.ResultObject.WeekReports[0].Messages.forEach(message => {\r\n switch (message.Type) {\r\n case \"Warning\":\r\n new Notifier().Warning(message.Message);\r\n break;\r\n case \"Success\":\r\n new Notifier().Success(message.Message);\r\n break;\r\n case \"Failed\":\r\n new Notifier().Failed(message.Message);\r\n break;\r\n }\r\n })\r\n }\r\n }).fail(() => this.RejectResponse(\"Error getting day data\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDays(params: {\r\n ControlId: number,\r\n TimeTableId: number,\r\n SubjectEntityId: number | null,\r\n SubjectRecordId: number | null,\r\n StartDate: string,\r\n EndDate: string,\r\n UserId: number\r\n }): P.Promise<TimeWritingReportResponseModel> {\r\n const deferredResult = P.defer<TimeWritingReportResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetTimeWritingReportForDays\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => {\r\n this.ResolveObjectResponse(response, deferredResult);\r\n }).fail(() => this.RejectResponse(\"Error getting day data\", deferredResult));\r\n return deferredResult.promise();\r\n }\r\n\r\n static CloseDate(params: {\r\n TimeCloseDate: string,\r\n UserId: number\r\n }): P.Promise<TimeCloseReportResponseModel> {\r\n const deferredResult = P.defer<TimeCloseReportResponseModel>();\r\n\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/CloseDate\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error setting time close date\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDisapproved(params: {\r\n ControlId: number,\r\n TimeTableId: number,\r\n SubjectEntityId: number | null,\r\n SubjectRecordId: number | null,\r\n UserId: number\r\n }): P.Promise<DisapprovedReportResponseModel> {\r\n const deferredResult = P.defer<DisapprovedReportResponseModel>();\r\n\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetDisapprovedReport\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: params\r\n }).then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error getting disapproved data\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetYear(model: { Year: number, EntityId: number, UserId: number, SubjectEntityId: number, SubjectRecordId: number }): P.Promise<YearDataResponseModel> {\r\n const deferredResult = P.defer<YearDataResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/GetYearReport\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => {\r\n this.ResolveObjectResponse(response, deferredResult);\r\n })\r\n .fail(() => this.RejectResponse(\"Error getting reservation by year\", deferredResult));\r\n return deferredResult.promise();\r\n }\r\n\r\n static CreateReservation(model: SaveReservationRequestModel) {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/CreateReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static AcceptReservation(model: SaveReservationRequestModel) {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/AcceptReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateReservation(model: SaveReservationRequestModel): P.Promise<any> {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/UpdateReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteReservation(model: DeleteReservationRequestModel): P.Promise<any> {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/DeleteReservation\",\r\n type: \"POST\",\r\n dataType: \"json\"\r\n },\r\n params: model\r\n }).then(response => this.ResolveResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetSubject(entityId: number, recordId: number) {\r\n const deferredResult = P.defer();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/RecordsApi/Get\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: {\r\n TableId: entityId,\r\n RecordId: recordId\r\n }\r\n })\r\n .then(response => deferredResult.resolve(response))\r\n .fail(() => this.RejectResponse(\"Error updating reservation\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static ValidateTimeWritingSubject(tableId: number, recordId: number) {\r\n const deferredResult = P.defer<any>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: \"/api/ControlsApi/ValidateTimeWritingSubject\",\r\n type: \"GET\",\r\n dataType: \"json\"\r\n },\r\n params: {\r\n tableId: tableId,\r\n recordId: recordId\r\n }\r\n })\r\n .then(response => this.ResolveObjectResponse(response, deferredResult))\r\n .fail(() => this.RejectResponse(\"Error validating time writing subject\", deferredResult));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private static ResolveResponse(response, deferredResult: P.Deferred<any>) {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }\r\n\r\n private static ResolveObjectResponse<T>(response, deferredResult: P.Deferred<T>) {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(response.ResultObject);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }\r\n\r\n private static RejectResponse<T>(message: string, deferredResult: P.Deferred<T>) {\r\n deferredResult.reject({message: message});\r\n }\r\n}","import {UsersViewModel} from \"./UsersViewModel\";\r\n\r\nexport class YearDataViewModel {\r\n\tYear: number;\r\n\tQuaters: Quater[];\r\n\r\n\tCurrentYear: number;\r\n\tCurrentWeek: number;\r\n DataBySubject: boolean;\r\n\r\n\tUsers: UsersViewModel;\r\n\r\n\tconstructor() {\r\n\t\tthis.Quaters = [];\r\n\t\tthis.DataBySubject = false;\r\n\t}\r\n\r\n\tIsCurrentYear() {\r\n\t\treturn this.Year === this.CurrentYear;\r\n\t}\r\n\r\n\tIsCurrentWeek(week: Week) {\r\n\t\treturn this.IsCurrentYear() && week.Number === this.CurrentWeek;\r\n\t}\r\n\r\n\tNavigationAllowed(week: Week) {\r\n\t\treturn this.Year < this.CurrentYear ||\r\n\t\t\t(this.Year === this.CurrentYear && week.Number <= this.CurrentWeek);\r\n\t}\r\n}\r\n\r\nexport class Quater {\r\n\tWeeks: Week[];\r\n\r\n\tconstructor(initializers?: Partial<Quater>) {\r\n\t\tlet weeks = [];\r\n\r\n\t\tif (initializers) {\r\n\t\t\tweeks = initializers.Weeks || [];\r\n\t\t}\r\n\r\n\t\tthis.Weeks = weeks;\r\n\t}\r\n}\r\n\r\nexport class Week {\r\n\tNumber: number;\r\n\tBooked: any;\r\n\tSaldo: any;\r\n\tIsEditable: boolean;\r\n\tEmpty: boolean;\r\n HasDisapprovedHours: boolean;\r\n}","//Store models\r\nimport { WeekDataResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/WeekDataResponseModel\";\r\n\r\n//View models\r\nimport { Week } from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\nexport class WeekMappings {\r\n\tstatic OnViewModel(model: WeekDataResponseModel): Week {\r\n const week = new Week();\r\n\r\n\t\tweek.Number = model.WeekNumber;\r\n\t\tweek.Booked = Math.round(model.Booked * 100) / 100;\r\n\t\tweek.Saldo = Math.round(model.Saldo * 100) / 100;\r\n\t\tweek.IsEditable = model.IsEditable;\r\n\t\tweek.Empty = true;\r\n\t\tweek.HasDisapprovedHours = model.HasDisapprovedHours;\r\n\r\n\t\treturn week;\r\n\t}\r\n}","//Libs\r\nimport * as _ from \"underscore\";\r\n\r\n//Store models\r\nimport { YearDataResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/YearDataResponseModel\";\r\n\r\n//View models\r\nimport { YearDataViewModel, Quater } from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\n//Mappings\r\nimport { WeekMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Year/WeekMappings\";\r\n\r\nexport class YearMappingProfile {\r\n\tstatic OnViewModel(model: YearDataResponseModel): YearDataViewModel {\r\n\t\tconst viewModel = new YearDataViewModel();\r\n\r\n\t\tconst weeks = model.Summaries.map(week => WeekMappings.OnViewModel(week));\r\n\r\n\t\t// it was \"-\" instead of \"0\" while you have no record data Booked && Saldo\r\n\t\tlet firstRecord = _.find(weeks, function (week) { return week.Booked != 0 });\r\n\r\n\t\tlet emptyWeeks = weeks.every(function (elem) {\r\n\t\t\tvar bookedCheck = (elem.Booked == 0 && elem.Saldo == 0);\r\n\t\t\tif (bookedCheck) {\r\n\t\t\t\telem.Booked = \" - \";\r\n\t\t\t\telem.Saldo = \" - \";\r\n\t\t\t}\r\n\t\t\treturn bookedCheck;\r\n\t\t});\r\n\r\n\t\t_.each(weeks, week => {\r\n\t\t\tif (week.Saldo == 0) {\r\n\t\t\t\tweek.Booked = \" - \";\r\n\t\t\t\tweek.Saldo = \" - \";\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst chunkedWeeks = this.Chunk(weeks, 4);\r\n\r\n\t\tviewModel.DataBySubject = model.DataBySubject;\r\n\t\tviewModel.Quaters = chunkedWeeks.map(weeksOfQuater => new Quater({ Weeks: weeksOfQuater }));\r\n return viewModel;\r\n\t}\r\n\t\r\n\tprivate static Chunk<T>(array: Array<T>, chunks: number): T[][] {\r\n\t\tconst elementsInChunk = array.length / chunks;\r\n\r\n\t\tconst dictionary = _.groupBy(array, (element, index) => Math.floor(index / elementsInChunk));\r\n\r\n\t\tconst chunkedArray = Object.keys(dictionary).map(key => dictionary[key]);\r\n\t\treturn chunkedArray;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet box blue time-writing-control year-template\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <!-- ko with: _viewModel --> <i class=\\\"fa fa-calendar\\\"></i> <!--ko text: $parent._labels.YEAR_OVERVIEW --><!-- /ko--> (<!--ko text: $parent._labels.NORM_40_HOURS --><!-- /ko-->) <!-- /ko --> </div> <div class=\\\"caption time-writting-caption-centered\\\"> <i class=\\\"glyphicon glyphicon-arrow-left prev-page\\\" data-bind=\\\"click: OnPrevYearClick\\\"></i> <!-- ko with: _viewModel --> <div class=\\\"current-year\\\"> <span class=\\\"navigation-link\\\" data-bind=\\\"text: Year, click: $parent.OnCurrentYearClick.bind($parent)\\\"></span> </div> <!-- /ko --> <!-- ko if: _isPastYear --> <i class=\\\"glyphicon glyphicon-arrow-right next-page\\\" data-bind=\\\"click: OnNextYearClick\\\"></i> <!-- /ko --> <!-- ko ifnot: _isPastYear --> <i class=\\\"glyphicon glyphicon-arrow-right next-page disabled\\\"></i> <!-- /ko --> </div> <div class=\\\"caption pull-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko with: _viewModel --> <!-- ko foreach: Quaters --> <div class=\\\"weeks-table clearfix\\\"> <div class=\\\"week-row clearfix\\\"> <div class=\\\"week-column title-column\\\"><!--ko text: $parents[1]._labels.WEEK --><!-- /ko--></div> <!-- ko foreach: Weeks--> <div class=\\\"week-column\\\"> <!-- ko if: HasDisapprovedHours --> <i class=\\\"fa fa-clock-o icon-red\\\" aria-hidden=\\\"true\\\" data-bind=\\\"attr:{ title: $parents[2]._labels.WEEK_DISAP_RECORDS}\\\"></i> <!-- /ko --> <span class=\\\"week\\\" data-bind=\\\"text: Number,\\r\\n\\t\\t\\t\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'current': $parents[1].IsCurrentWeek($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'editable': IsEditable,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t'navigatable': $parents[1].NavigationAllowed($data)\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tclick: $parents[2].OnWeekClick.bind($parents[2], $data)\\\"></span> </div> <!-- /ko --> </div> <div class=\\\"week-row clearfix\\\"> <div class=\\\"week-column title-column\\\"><!--ko text: $parents[1]._labels.BOOKED --><!-- /ko--></div> <!-- ko foreach: Weeks--> <div data-bind=\\\"text: Booked, css: {'current-week': Number == $parents[2]._currentWeek()}\\\" class=\\\"week-column\\\"></div> <!-- /ko --> </div> <!--ko if: !$parents[1]._dataBySubject() --> <div class=\\\"week-row clearfix\\\"> <div class=\\\"week-column title-column\\\"><!--ko text: $parents[1]._labels.SALDO --><!-- /ko--></div> <!-- ko foreach: Weeks--> <div data-bind=\\\"text: Saldo, css: {'current-week': Number == $parents[2]._currentWeek()}\\\" class=\\\"week-column\\\"></div> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {UserManager} from \"User/UserManager\";\r\n\r\nexport class UsersResponseModel {\r\n\tUsers: UserResponseModel[];\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t}\r\n\r\n\tstatic CreateDefault() {\r\n\t\tconst currentUser = UserManager.Instance.CurrentUser;\r\n\t\tconst defaultUser = new UserResponseModel();\r\n\r\n\t\tdefaultUser.Id = currentUser.Id;\r\n\t\tdefaultUser.Name = currentUser.Name;\r\n\r\n\t\tconst model = new UsersResponseModel();\r\n\t\tmodel.Users = [defaultUser];\r\n\r\n\t\treturn model;\r\n\t}\r\n}\r\n\r\nexport class UserResponseModel {\r\n\tId: number;\r\n\tName: string;\r\n}","import * as ko from 'knockout';\r\n\r\nexport class UsersViewModel {\r\n\tUsers: KnockoutObservableArray<UserViewModel>;\r\n\tSelectedUser: KnockoutObservable<UserViewModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = ko.observableArray([]);\r\n\t\tthis.SelectedUser = ko.observable(null);\r\n\t}\r\n}\r\n\r\nexport class UserViewModel {\r\n\tId: number;\r\n\tName: string;\r\n}","import {UserResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\nexport class UserMappings {\r\n\tstatic OnViewModel(user: UserResponseModel) {\r\n\t\tconst userViewModel = new UserViewModel();\r\n\r\n\t\tuserViewModel.Id = user.Id;\r\n\t\tuserViewModel.Name = user.Name;\r\n\r\n\t\treturn userViewModel;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {UsersViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\nimport {UserMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UserMappings\";\r\nimport { UserManager } from \"User/UserManager\";\r\n\r\nexport class UsersMappingProfile {\r\n\tstatic OnViewModel(model: UsersResponseModel) {\r\n\t\tconst viewModel = new UsersViewModel();\r\n\r\n\t\tconst users = model.Users.map(user => UserMappings.OnViewModel(user));\r\n\t\tconst selectedUser = _.find(users, user => user.Id === UserManager.Instance.CurrentUser.Id);\r\n\r\n\t\tviewModel.Users(users);\r\n\t\tviewModel.SelectedUser(selectedUser);\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n//Utils\r\nimport {DateTime, IDestructedDate} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Year/State\";\r\n\r\n//ViewModels\r\nimport {YearDataViewModel, Week} from \"Core/Components/Controls/TimeWriting/Models/View/YearDataViewModel\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//StoreModels\r\nimport {YearDataResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Year/Response/YearDataResponseModel\";\r\n\r\n//Mappings\r\nimport {YearMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Year/YearMappingProfile\";\r\n\r\n//Templates\r\nimport YearTemplate from \"Core/Components/Controls/TimeWriting/Templates/YearTemplate.html\";\r\nimport {IYearViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Year/IYearViewSettings\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {UserManager} from \"../../../../../../User/UserManager\";\r\nimport {UsersResponseModel} from \"../../Models/Store/Day/Response/UsersResponseModel\";\r\nimport {UsersMappingProfile} from \"../../Mappings/Day/UsersMappingProfile\";\r\nimport {UsersViewModel, UserViewModel} from \"../../Models/View/UsersViewModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nexport class YearView extends TimeWritingView {\r\n private _currentDate: IDestructedDate;\r\n private _state: KnockoutObservable<State>;\r\n private _viewModel: KnockoutObservable<YearDataViewModel>;\r\n private _isPastYear: KnockoutComputed<boolean>;\r\n private _currentWeek: KnockoutObservable<number>;\r\n private _labels = LABELS;\r\n private _dataBySubject: KnockoutObservable<boolean>;\r\n\r\n constructor(private _settings: IYearViewSettings) {\r\n super();\r\n this._currentDate = DateTime.DestructDate(new Date());\r\n this._state = ko.observable(new State({Year: this._currentDate.Year}));\r\n this._viewModel = ko.observable(null);\r\n this._currentWeek = ko.observable(null);\r\n this._isPastYear = ko.computed(() => this._state().Year < this._currentDate.Year, this);\r\n this._dataBySubject = ko.observable(null);\r\n }\r\n\r\n GetTemplate() {\r\n return YearTemplate;\r\n }\r\n\r\n Show(year: number, userId?: number) {\r\n this._state(new State({\r\n Year: year\r\n }));\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n if (usersList) {\r\n this.LoadData(year, usersList.SelectedUser().Id)\r\n .then(model => this.RenderData(model, usersList))\r\n .fail(error => this.ShowError(error.message));\r\n } else {\r\n const loadDataPromise = this.LoadData(year, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise).then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id));\r\n }\r\n }\r\n\r\n OnCurrentYearClick() {\r\n this.Show(this._viewModel().CurrentYear);\r\n }\r\n\r\n OnPrevYearClick() {\r\n const year = this._state().Year - 1;\r\n this.Show(year);\r\n }\r\n\r\n OnNextYearClick() {\r\n const year = this._state().Year + 1;\r\n this.Show(year);\r\n }\r\n\r\n OnWeekClick(week: Week) {\r\n if (this._viewModel().NavigationAllowed(week)) {\r\n this._state().SelectedWeek = week;\r\n this.Trigger(\"WeekSelected\", {State: this._state(), UserId: this._viewModel().Users.SelectedUser().Id});\r\n }\r\n }\r\n\r\n private LoadData(year: number, userId: number) {\r\n return TimeWritingStore.GetYear({\r\n Year: year,\r\n EntityId: this._settings.EntityId,\r\n UserId: userId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId\r\n });\r\n }\r\n\r\n private RenderData(model: YearDataResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n const viewModel = YearMappingProfile.OnViewModel(model);\r\n\r\n viewModel.Year = this._state().Year;\r\n viewModel.CurrentWeek = this._currentDate.WeekNumber;\r\n viewModel.CurrentYear = this._currentDate.Year;\r\n viewModel.Users = users;\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n this._currentWeek(viewModel.CurrentWeek);\r\n this._dataBySubject(viewModel.DataBySubject);\r\n\r\n this._viewModel(viewModel);\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private UserSelected(user: UserViewModel) {\r\n this.Show(this._state().Year);\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n}","export enum DAYS_OF_WEEK {\r\n\tSunday,\r\n\tMonday,\r\n\tTuesday,\r\n\tWednesday,\r\n\tThursday,\r\n\tFriday,\r\n\tSaturday\r\n}","export enum TimeStatus {\r\n Disapproved = 'Disapproved',\r\n Booked = 'Booked',\r\n Approved = 'Approved'\r\n}\r\n","// Module\nvar code = \"<!-- ko foreach: _cellEditors --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> \";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\n\r\n//Models\r\nimport {\r\n Subject,\r\n AllowedEntity,\r\n LookupField,\r\n LookupValue\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\n//Templates\r\nimport RowEditorTemplate from \"Core/Components/Controls/TimeWriting/Templates/RowEditorTemplate.html\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {TimeStatus} from \"Core/Components/Controls/TimeWriting/Constants/TimeStatus\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {FieldFormat} from \"Core/Common/FieldFormat\";\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\nimport {TranslationFieldEditor} from \"../../../TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {ITranslationValue} from \"../../../TranslationFieldEditor/ITranslationValue\";\r\nimport {TranslationManager} from \"../../../Translation/TranslationManager\";\r\nimport {TranslationItem} from \"../../../TranslationFieldEditor/TranslationItem\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport DropDownContentTemplate from 'Core/Controls/MultiSelect/Templates/DropDownContent.html';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\nimport {ItemModel} from 'Core/Controls/MultiSelect/Models/MultiSelectListModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nexport class RowEditor {\r\n private _guid: string;\r\n public _day: string;\r\n private _lookupFields: LookupField[];\r\n private _cellEditors: CellEditor[];\r\n private _state: State;\r\n\r\n constructor(guid: string, day: string, lookupFields: LookupField[], ...cellEditors: CellEditor[]) {\r\n this._guid = guid;\r\n if (day) {\r\n this._day = day;\r\n }\r\n this._lookupFields = lookupFields;\r\n this._cellEditors = cellEditors;\r\n }\r\n\r\n get Guid() {\r\n return this._guid;\r\n }\r\n\r\n get IsEditState() {\r\n return this._state === State.Edit;\r\n }\r\n\r\n get IsNewState() {\r\n return this._state === State.New;\r\n }\r\n\r\n SetState(state: State) {\r\n this._state = state;\r\n this._cellEditors.forEach(editor => editor.SetState(state));\r\n }\r\n\r\n CancelChanges() {\r\n this.GetValueCellEditors()\r\n .forEach((editor: ValueCellEditor<any>) => editor.RollbackChanges());\r\n }\r\n\r\n SaveChanges() {\r\n this.GetValueCellEditors()\r\n .forEach((editor: ValueCellEditor<any>) => editor.CommitChanges());\r\n }\r\n\r\n GetTemplate() {\r\n return RowEditorTemplate;\r\n }\r\n\r\n Validate() {\r\n const validationEditors = this.GetValidationCellEditors();\r\n\r\n if (!_.any(validationEditors)) {\r\n return true;\r\n }\r\n\r\n const validationResults = validationEditors.map((editor: ValidationCellEditor<any>) => editor.Valid());\r\n const allEditorsAreValid = _.all(validationResults, result => result);\r\n\r\n return allEditorsAreValid;\r\n }\r\n\r\n private GetValueCellEditors() {\r\n return this._cellEditors\r\n .filter(editor => (editor instanceof ValueCellEditor));\r\n }\r\n\r\n private GetValidationCellEditors() {\r\n return this._cellEditors\r\n .filter(editor => (editor instanceof ValidationCellEditor));\r\n }\r\n}\r\n\r\nexport class WeekRowEditor {\r\n private _guid: string;\r\n public _day: string;\r\n private _lookupFields: LookupField[];\r\n private _cellEditors: CellEditor[];\r\n\r\n constructor(guid: string, day: string, lookupFields: LookupField[], ...cellEditors: CellEditor[]) {\r\n this._guid = guid;\r\n if (day) {\r\n this._day = day;\r\n }\r\n this._lookupFields = lookupFields;\r\n this._cellEditors = cellEditors;\r\n }\r\n\r\n get Guid() {\r\n return this._guid;\r\n }\r\n\r\n get Day() {\r\n return this._day;\r\n }\r\n\r\n GetTemplate() {\r\n return RowEditorTemplate;\r\n }\r\n}\r\n\r\nexport interface ICell {\r\n Name: string;\r\n Label;\r\n ViewTemplate: any;\r\n Visible: KnockoutObservable<boolean>;\r\n ClassName: string;\r\n Size?: any;\r\n}\r\n\r\nexport interface IDynamicCell extends ICell {\r\n EditTemplate: any;\r\n Size?: any;\r\n}\r\n\r\nexport interface IValueCell<T> extends IDynamicCell {\r\n Value: KnockoutObservable<T>;\r\n Editable: boolean;\r\n}\r\n\r\ninterface IValidationRule<T> {\r\n Validate: (value: T) => boolean;\r\n Message?: string;\r\n}\r\n\r\ninterface IValidated<T> {\r\n Valid: KnockoutObservable<boolean>;\r\n Rule: IValidationRule<T>;\r\n}\r\n\r\nexport interface IValidationCell<T> extends IValueCell<T> {\r\n RequiredRule?: IValidationRule<T>;\r\n MinLengthRule?: IValidationRule<T>;\r\n MaxLenghtRule?: IValidationRule<T>;\r\n}\r\n\r\ninterface IDropdownOption {\r\n FieldValue: number;\r\n DisplayValue: string;\r\n}\r\n\r\ninterface ITextCell extends IValidationCell<string> {\r\n Translations: KnockoutObservableArray<TranslationItem>;\r\n IsTranslate: boolean;\r\n}\r\n\r\nexport interface IDropdownCell<T extends IDropdownOption> extends IValidationCell<T> {\r\n Options: KnockoutObservableArray<T>;\r\n RequiresSearch: boolean;\r\n ValTableId: number;\r\n ValFieldId: number;\r\n ValFieldTypeName: string;\r\n ValFieldFormatName: string;\r\n ValFieldSize: number;\r\n}\r\n\r\ninterface IDecimalCell extends IValidationCell<number> {\r\n FormatName: string;\r\n}\r\n\r\ninterface IDateCell extends IValidationCell<Date> {\r\n FormatName: string;\r\n}\r\n\r\nexport interface ISubjectCell extends IValidationCell<Subject> {\r\n IsNewState: KnockoutObservable<boolean>;\r\n AllowedEntities: AllowedEntity[];\r\n OnEntityClick: (entity: AllowedEntity) => void;\r\n OnEntityIconClick: () => void;\r\n OnSubjectClick: () => void;\r\n}\r\n\r\nexport interface IActionsCell extends IDynamicCell {\r\n Accepted: boolean;\r\n OnAcceptReservation: (guid: string) => void;\r\n OnEditReservation: (guid: string) => void;\r\n OnDeleteReservation: (guid: string) => void;\r\n OnSaveReservationChanges: (guid: string) => void;\r\n OnCancelReservationChanges: (guid: string) => void;\r\n TimeStatus: string;\r\n}\r\n\r\n\r\nexport class CellEditor {\r\n protected _cell: ICell;\r\n protected _state: KnockoutObservable<State>;\r\n protected _template: KnockoutObservable<any>;\r\n\r\n constructor(cell: ICell) {\r\n this._cell = cell;\r\n this._state = ko.observable(State.Read);\r\n this._template = ko.observable(this._cell.ViewTemplate);\r\n }\r\n\r\n GetState() {\r\n return this._state();\r\n }\r\n\r\n SetState(state: State) {\r\n this._state(state);\r\n }\r\n}\r\n\r\nexport class DynamicCellEditor extends CellEditor {\r\n protected _cell: IDynamicCell;\r\n protected _labels = LABELS;\r\n private _timeStatus = TimeStatus;\r\n\r\n constructor(cell: IDynamicCell) {\r\n super(cell);\r\n this._state.subscribe(() => this._template(this.GetTemplate()), this);\r\n\r\n if (cell.Size) {\r\n this._cell.Size = cell.Size;\r\n }\r\n }\r\n\r\n protected GetTemplate() {\r\n switch (this._state()) {\r\n case State.Read:\r\n return this._cell.ViewTemplate;\r\n case State.Edit:\r\n case State.New:\r\n return this._cell.EditTemplate;\r\n default:\r\n return this._cell.ViewTemplate;\r\n }\r\n }\r\n}\r\n\r\nexport class ValueCellEditor<T> extends DynamicCellEditor {\r\n protected _cell: IValueCell<T>;\r\n protected _originalValue: KnockoutObservable<T>;\r\n\r\n constructor(cell: IValueCell<T>) {\r\n super(cell);\r\n\r\n this._originalValue = ko.observable(cell.Value());\r\n }\r\n\r\n RollbackChanges() {\r\n if (this._cell.Editable) {\r\n this._cell.Value(this._originalValue());\r\n }\r\n }\r\n\r\n CommitChanges() {\r\n if (this._cell.Editable) {\r\n this._originalValue(this._cell.Value());\r\n }\r\n }\r\n\r\n protected GetTemplate() {\r\n switch (this._state()) {\r\n case State.Read:\r\n return this._cell.ViewTemplate;\r\n case State.Edit:\r\n case State.New:\r\n return this._cell.Editable ? this._cell.EditTemplate : this._cell.ViewTemplate;\r\n default:\r\n return this._cell.ViewTemplate;\r\n }\r\n }\r\n}\r\n\r\nexport class ValidationCellEditor<T> extends ValueCellEditor<T> {\r\n protected _requiredValidation: IValidated<T>;\r\n protected _minLengthValidation: IValidated<T>;\r\n protected _maxLengthValidation: IValidated<T>;\r\n protected _startValue: string;\r\n\r\n protected _valid: KnockoutComputed<boolean>;\r\n\r\n constructor(protected _cell: IValidationCell<T>) {\r\n super(_cell);\r\n\r\n const requiredRule = _cell.RequiredRule || {Validate: () => true};\r\n const minLengthRule = _cell.MinLengthRule || {Validate: () => true};\r\n const maxLengthRule = _cell.MaxLenghtRule || {Validate: () => true};\r\n\r\n this._requiredValidation = {\r\n Valid: ko.observable(true),\r\n Rule: requiredRule\r\n };\r\n this._minLengthValidation = {\r\n Valid: ko.observable(true),\r\n Rule: minLengthRule\r\n };\r\n this._maxLengthValidation = {\r\n Valid: ko.observable(true),\r\n Rule: maxLengthRule\r\n };\r\n\r\n this._valid = ko.computed(() => this._requiredValidation.Valid() && this._minLengthValidation.Valid() && this._maxLengthValidation.Valid(), this);\r\n\r\n this._cell.Value.subscribe(() => this.Validate());\r\n }\r\n\r\n Valid() {\r\n this.Validate();\r\n return this._valid();\r\n }\r\n\r\n PreventLetters(d, e) {\r\n const code = e.keyCode;\r\n const character = String.fromCharCode(code);\r\n const digitsOnly = /[1234567890.,:]/g;\r\n if (character.match(digitsOnly)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n private Validate() {\r\n const validations = [\r\n this._requiredValidation,\r\n this._minLengthValidation,\r\n this._maxLengthValidation\r\n ];\r\n\r\n const value = this._cell.Value();\r\n\r\n validations.forEach(validation => validation.Valid(true));\r\n const failedValidation = _.find(validations, (validation: IValidated<T>) => !validation.Rule.Validate(value));\r\n\r\n if (failedValidation) {\r\n failedValidation.Valid(false);\r\n }\r\n }\r\n}\r\n\r\nexport class TextCellEditor extends ValidationCellEditor<string> {\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _translations: KnockoutObservableArray<TranslationItem>;\r\n private _isTranslate: boolean;\r\n private _displayValue: KnockoutObservable<string>;\r\n\r\n constructor(cell: ITextCell) {\r\n super(cell);\r\n this._translations = cell.Translations;\r\n this._isTranslate = cell.IsTranslate;\r\n this._displayValue = ko.observable(cell.Value());\r\n\r\n if (this._isTranslate) {\r\n\r\n if (this._translations().length === 0) {\r\n this._translations(TranslationManager.Instance.Languages.filter(language => language.Id > 0).map(language => new TranslationItem(language)));\r\n }\r\n\r\n this._translationFieldEditor = new TranslationFieldEditor();\r\n this._translationFieldEditor\r\n .On(\"TranslationChanged\", this, eventArgs => this.SetTranslation(eventArgs.data))\r\n .On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n this._translationFieldEditor.LoadTranslationItems();\r\n\r\n const translationValues: ITranslationValue[] = this._translations().map(item => {\r\n return {\r\n LanguageId: item.Language.Id,\r\n Value: item.Value()\r\n }\r\n });\r\n\r\n this._translationFieldEditor.SetTranslations(translationValues, this._cell.Value());\r\n const activeTranslation = TranslationManager.Instance.GetTranslation(this._cell.Value(), translationValues);\r\n this._translationFieldEditor.SetActiveTranslation(activeTranslation.Language.Id);\r\n this._displayValue(activeTranslation.TranslatedValue);\r\n\r\n this._displayValue.subscribe(newValue => this._translationFieldEditor.SetValue(newValue));\r\n } else {\r\n this._displayValue.subscribe(value => this._cell.Value(value));\r\n }\r\n }\r\n\r\n ToggleTranslations() {\r\n this._translationFieldEditor.Toggle();\r\n }\r\n\r\n private SetTranslation(translation: TranslationItem) {\r\n if (translation.Language.Id !== 0) {\r\n const fieldTranslation = _.find(this._translations(), item => item.Language.Id === translation.Language.Id);\r\n fieldTranslation.Value(translation.Value());\r\n } else {\r\n this._cell.Value(translation.Value());\r\n }\r\n }\r\n\r\n private ChangeTranslation(translation: ITranslationValue) {\r\n if (translation.LanguageId === 0) {\r\n this._cell.Value(translation.Value);\r\n }\r\n this._displayValue(translation.Value);\r\n }\r\n}\r\n\r\nexport class DropdownCellEditor<T extends IDropdownOption> extends ValidationCellEditor<T> {\r\n protected _cell: IDropdownCell<T>;\r\n private _currentValue: KnockoutObservable<T>;\r\n\r\n constructor(cell: IDropdownCell<T>) {\r\n super(cell);\r\n\r\n this._cell.Value(cell.Value());\r\n this._currentValue = ko.observable(null);\r\n this._currentValue.subscribe(value => this._cell.Value(value));\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return LABELS.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this._cell.ValFieldTypeName)) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value) * 100).toFixed(this._cell.ValFieldSize < 2 ? 0 : this._cell.ValFieldSize - 2)\r\n : value\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n FormatSelectValue(dropdownOption: IDropdownOption) {\r\n return this.FormatValue(dropdownOption.DisplayValue);\r\n }\r\n\r\n SetState(state: State) {\r\n switch (state) {\r\n case State.Read:\r\n this.SetReadState(this._cell.Value());\r\n break;\r\n\r\n case State.New:\r\n this.SetNewState();\r\n break;\r\n\r\n case State.Edit:\r\n this.SetEditState(this._cell.Value());\r\n break;\r\n }\r\n\r\n super.SetState(state);\r\n }\r\n\r\n ShowSearchScreen() {\r\n const searchScreen = new SearchScreen({\r\n ButtonAdd: false,\r\n EntityId: this._cell.ValTableId,\r\n SearchTerm: ''\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n if (this._cell.ValFieldId) {\r\n this.ReplaceSelectedValue(<number>this._cell.ValTableId,\r\n <number>this._cell.ValFieldId,\r\n <number>eventArgs.data.RecordId);\r\n } else {\r\n const selectedRecord = {\r\n FieldValue: <number>eventArgs.data.RecordId,\r\n DisplayValue: <string>eventArgs.data.Name\r\n };\r\n\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n protected ReplaceSelectedValue(tableId: number, fieldId: number, recordId: number) {\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: tableId, RecordId: recordId})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === fieldId);\r\n\r\n if (selected) {\r\n const selectedRecord = {\r\n FieldValue: recordId,\r\n DisplayValue: selected.FieldValue\r\n };\r\n\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n new Notifier().Warning('You can not see created record');\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error applying created record');\r\n }\r\n\r\n });\r\n }\r\n\r\n private FindOption(id: number) {\r\n return _.find(this._cell.Options(), option => option.FieldValue === id);\r\n }\r\n\r\n private SetReadState(requestedValue: LookupValue) {\r\n this._currentValue(<any>requestedValue);\r\n this._cell.Value(<any>requestedValue);\r\n }\r\n\r\n private SetNewState() {\r\n const value = !this._cell.RequiresSearch && _.first(this._cell.Options()) || null;\r\n this._currentValue(value);\r\n }\r\n\r\n private SetEditState(requestedValue: LookupValue) {\r\n if (!this._cell.RequiresSearch) {\r\n const value = requestedValue && this.FindOption(requestedValue.FieldValue) || _.first(this._cell.Options());\r\n this._currentValue(value);\r\n }\r\n }\r\n}\r\n\r\nexport class MultiSelectCellEditor<T extends IDropdownOption> extends ValidationCellEditor<T> {\r\n Items: KnockoutObservableArray<any>;\r\n SelectedItems: KnockoutComputed<Array<ItemModel>>;\r\n protected _cell: IDropdownCell<T>;\r\n private _currentValue: KnockoutObservable<T>;\r\n private _showEmptyValue: KnockoutObservable<boolean>;\r\n\r\n private _tooltip: JBoxDropDown;\r\n\r\n constructor(cell: IDropdownCell<T>) {\r\n super(cell);\r\n\r\n this.Items = ko.observableArray([]);\r\n this.SelectedItems = ko.computed(() => this.Items().filter(item => item.IsSelected), this);\r\n\r\n const items = cell.Value() && cell.Value().FieldValue != null ? cell.Value().FieldValue.toString().split(\";\") : [];\r\n\r\n if (!this._cell.RequiresSearch) {\r\n this.Items = ko.observableArray(_.map(this._cell.Options().filter(option => option.FieldValue != 0), option => {\r\n return {\r\n RecordId: option.FieldValue,\r\n Label: option.DisplayValue,\r\n IsSelected: ko.observable(items.indexOf(option.FieldValue.toString()) !== -1)\r\n }\r\n }));\r\n } else {\r\n if (items.length > 0) {\r\n const labels = cell.Value().DisplayValue != null ? cell.Value().DisplayValue.toString().split(\";\") : [];\r\n this.Items = ko.observableArray(items.map(function (item, i) {\r\n return {RecordId: item, Label: labels[i], IsSelected: ko.observable(true)}\r\n }));\r\n }\r\n }\r\n\r\n this._cell.Value(cell.Value());\r\n this._currentValue = ko.observable(null);\r\n this._currentValue.subscribe(value => this._cell.Value(value));\r\n this._showEmptyValue = ko.observable(true);\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return LABELS.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this._cell.ValFieldTypeName)) {\r\n const splitValues = value.split(';');\r\n\r\n const formattedValues = splitValues.map(singleValue =>\r\n FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(singleValue) * 100).toFixed(\r\n this._cell.ValFieldSize < 2 ? 0 : this._cell.ValFieldSize - 2\r\n )\r\n : singleValue\r\n )\r\n );\r\n\r\n return formattedValues.join(';');\r\n }\r\n\r\n return value;\r\n }\r\n\r\n FormatSingleValue(value: string) {\r\n if (!value) {\r\n return LABELS.EMPTY_VALUE;\r\n }\r\n\r\n if (_.contains([FIELD_TYPES.Decimal, FIELD_TYPES.Integer], this._cell.ValFieldTypeName)) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.ValFieldFormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value) * 100).toFixed(this._cell.ValFieldSize < 2 ? 0 : this._cell.ValFieldSize - 2)\r\n : value\r\n );\r\n }\r\n\r\n return value;\r\n }\r\n\r\n SetState(state: State) {\r\n switch (state) {\r\n case State.Read:\r\n this.SetReadState(this._cell.Value());\r\n break;\r\n\r\n case State.New:\r\n this.SetNewState();\r\n break;\r\n\r\n case State.Edit:\r\n this.SetEditState(this._cell.Value());\r\n break;\r\n }\r\n\r\n const items = this.Items().filter(item => item.IsSelected());\r\n this.CheckEmptyMultiSelect(items);\r\n super.SetState(state);\r\n }\r\n\r\n ShowSearchScreen(model, evt: MouseEvent) {\r\n if (this._cell.RequiresSearch) {\r\n\r\n const searchScreen = new SearchScreen({\r\n ButtonAdd: false,\r\n EntityId: this._cell.ValTableId,\r\n SearchTerm: ''\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const selectedTtem = this.Items().find(item => item.RecordId == <number>eventArgs.data.RecordId);\r\n if (!selectedTtem) {\r\n this.ReplaceSelectedValue(this._cell.ValTableId, <number>this._cell.ValFieldId, eventArgs.data.RecordId, <string>eventArgs.data.Name);\r\n } else {\r\n selectedTtem.IsSelected(true);\r\n }\r\n });\r\n\r\n searchScreen.Show();\r\n } else {\r\n if (!this._tooltip) {\r\n const target: any = evt.currentTarget;\r\n this._tooltip = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: DropDownContentTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n this._tooltip.Toggle();\r\n }\r\n }\r\n\r\n protected ReplaceSelectedValue(tableId: number, fieldId: number, recordId: number, name: string) {\r\n RecordStore.GetRecord({TableId: tableId, RecordId: recordId})\r\n .then((record: any) => {\r\n\r\n const selected = _.find(record.Fields, (item: any) => item.FieldId === fieldId);\r\n\r\n this.Items.push({\r\n RecordId: recordId,\r\n Label: selected ? selected.FieldValue : name,\r\n IsSelected: ko.observable(true)\r\n });\r\n const items = this.Items().filter(item => item.IsSelected);\r\n const selectedRecord = {\r\n FieldValue: <string>items.map(a => a.RecordId).join(\";\"),\r\n DisplayValue: <string>items.map(a => a.Label).join(\";\")\r\n };\r\n\r\n this.CheckEmptyMultiSelect(items);\r\n this._cell.Value(<any>selectedRecord);\r\n })\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n new Notifier().Warning('You can not see created record');\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error applying created record');\r\n }\r\n\r\n });\r\n }\r\n\r\n private FindOption(id: number) {\r\n return _.find(this._cell.Options(), option => option.FieldValue == id);\r\n }\r\n\r\n private SetReadState(requestedValue: LookupValue) {\r\n this._currentValue(<any>requestedValue);\r\n this._cell.Value(<any>requestedValue);\r\n }\r\n\r\n private SetNewState() {\r\n }\r\n\r\n private SetEditState(requestedValue: LookupValue) {\r\n }\r\n\r\n SelectItem(item: ItemModel) {\r\n item.IsSelected(true);\r\n const items = this.Items().filter(item => item.IsSelected());\r\n const selectedRecord = {\r\n FieldValue: <string>items.map(a => a.RecordId).join(\";\"),\r\n DisplayValue: <string>items.map(a => a.Label).join(\";\")\r\n };\r\n\r\n this.CheckEmptyMultiSelect(items);\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n\r\n RemoveItem(item: ItemModel) {\r\n item.IsSelected(false);\r\n const items = this.Items().filter(item => item.IsSelected());\r\n const selectedRecord = {\r\n FieldValue: <string>items.map(a => a.RecordId).join(\";\"),\r\n DisplayValue: <string>items.map(a => a.Label).join(\";\")\r\n };\r\n\r\n this.CheckEmptyMultiSelect(items);\r\n this._cell.Value(<any>selectedRecord);\r\n }\r\n\r\n CheckEmptyMultiSelect(selectedItems: Array<ItemModel>) {\r\n if (selectedItems.length === 0) {\r\n this._showEmptyValue(true);\r\n } else {\r\n this._showEmptyValue(false);\r\n }\r\n }\r\n}\r\n\r\nexport class IntegerCellEditor extends ValidationCellEditor<number> {\r\n constructor(cell: IValidationCell<number>) {\r\n super(cell);\r\n }\r\n\r\n FormatValue(value: string) {\r\n return value && FormatConverter.LocalizeDecimalOrInteger(value);\r\n }\r\n}\r\n\r\nexport class DecimalCellEditor extends ValidationCellEditor<number> {\r\n protected _cell: IDecimalCell;\r\n\r\n constructor(cell: IDecimalCell) {\r\n super(cell);\r\n }\r\n\r\n FormatValue(value: string) {\r\n return (\r\n value &&\r\n FormatConverter.LocalizeDecimalOrInteger(\r\n this._cell.FormatName === FieldFormat.PERCENTAGE\r\n ? (Number(value) * 100).toFixed(this._cell.Size < 2 ? 0 : this._cell.Size - 2)\r\n : value\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport class DateTimeCellEditor extends ValidationCellEditor<Date> {\r\n protected _cell: IDateCell;\r\n\r\n constructor(cell: IDateCell) {\r\n super(cell);\r\n }\r\n\r\n GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetFormat() {\r\n const format = FormatConverter.GetDateFormatFromFieldModel({\r\n FieldTypeName: FIELD_TYPES.DateTime,\r\n FormatName: this._cell.FormatName\r\n });\r\n return format || DATE_FORMATS.DATE_TIME['MomentFormat'];\r\n }\r\n\r\n DateChanged(event) {\r\n this._cell.Value(event || null);\r\n }\r\n}\r\n\r\nexport class DateCellEditor extends ValidationCellEditor<Date> {\r\n protected _cell: IDateCell;\r\n\r\n constructor(cell: IDateCell) {\r\n super(cell);\r\n }\r\n\r\n GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetFormat() {\r\n const format = FormatConverter.GetDateFormatFromFieldModel({\r\n FieldTypeName: FIELD_TYPES.Date,\r\n FormatName: this._cell.FormatName\r\n });\r\n return format || DATE_FORMATS.SHORT_DATE['MomentFormat'];\r\n }\r\n\r\n DateChanged(event) {\r\n this._cell.Value(event || null);\r\n }\r\n}\r\n\r\nexport class TimeCellEditor extends ValidationCellEditor<string> {\r\n constructor(cell: IValidationCell<string>) {\r\n super(cell);\r\n }\r\n\r\n GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetFormat() {\r\n return DATE_FORMATS.TIME['MomentFormat'];\r\n }\r\n\r\n DateChanged(event) {\r\n const newDate = event ? moment(event).format(this.GetFormat()) : null;\r\n this._cell.Value(newDate);\r\n }\r\n}\r\n\r\nexport class SubjectCellEditor extends ValidationCellEditor<Subject> {\r\n constructor(cell: ISubjectCell) {\r\n super(cell);\r\n }\r\n}\r\n\r\nexport class DescriptionCellEditor extends ValidationCellEditor<string> {\r\n constructor(protected _cell: IValidationCell<string>) {\r\n super(_cell);\r\n }\r\n}\r\n\r\nexport class ActionsCellEditor extends DynamicCellEditor {\r\n constructor(cell: IActionsCell) {\r\n super(cell);\r\n }\r\n}\r\n\r\nexport enum State {\r\n Read,\r\n Edit,\r\n New\r\n}","export enum ViewState {\r\n\tRead,\r\n\tEdit,\r\n\tNew\r\n}","//Utils\r\nimport { DateTime } from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\nexport class State {\r\n\tDate: Date;\r\n\r\n\tconstructor(initializers?: Partial<State>) {\r\n\t\tif (initializers) {\r\n\t\t\tthis.Date = initializers.Date;\r\n\t\t}\r\n\t}\r\n\r\n\tget Year() {\r\n\t\treturn DateTime.GetWeekYear(this.Date);\r\n\t}\r\n\r\n\tget Week() {\r\n\t\treturn DateTime.GetWeekNumber(this.Date); \r\n\t}\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport * as _ from 'underscore';\r\n\r\n//Common\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\n//Constants\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\n//UI\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {UsersViewModel} from \"./UsersViewModel\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {TranslationItem} from \"Core/Components/TranslationFieldEditor/TranslationItem\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\nexport class DayDataViewModel {\r\n WeekId: string;\r\n\r\n Date: Date;\r\n Day: string;\r\n Year: number;\r\n Week: number;\r\n TimeClosedDate: Date;\r\n DaysOfWeek: DayOfWeekStatistics[];\r\n LookupFields: LookupField[];\r\n DefaultValues: DefaultValue[];\r\n TranslatedFields: TranslatedField[];\r\n HasDisapprovals: boolean;\r\n\r\n RequestedDate: RequestedDate;\r\n AllowedEntities: AllowedEntity[];\r\n\r\n Users: UsersViewModel;\r\n StartBySchedule: Date;\r\n\r\n constructor() {\r\n this.WeekId = Guid.NewGuid();\r\n this.DaysOfWeek = [];\r\n this.AllowedEntities = [];\r\n this.HasDisapprovals = false;\r\n }\r\n\r\n get ClosedWeek() {\r\n return _.all(this.DaysOfWeek, dow => dow.ClosedDate);\r\n }\r\n\r\n get WeekDescription() {\r\n const formattedDate = moment(this.Date).format(DATE_FORMATS.LONG_DATE_SHORT_WEEK.MomentFormat);\r\n //return `${this.Year}-${this.Week}: ${formattedDate}`;\r\n return `${formattedDate}`;\r\n }\r\n\r\n get WeekNumber() {\r\n return `${this.Week}`;\r\n }\r\n\r\n get Booked() {\r\n const newSum = (sum: number, booked: any) => Math.round((sum + booked) * 100) / 100;\r\n this.IsWeekend();\r\n return this.DaysOfWeek.reduce((sum: number, current: DayOfWeekStatistics) => newSum(sum, current.Booked), 0);\r\n }\r\n\r\n get SelectedUser() {\r\n return this.Users.SelectedUser();\r\n }\r\n\r\n IsWeekend() {\r\n _.each(this.DaysOfWeek,\r\n day => {\r\n if (moment(day.Date).isoWeekday() === 6 || moment(day.Date).isoWeekday() === 7) {\r\n day.Weekend = true;\r\n }\r\n });\r\n }\r\n\r\n IsActive(day: DayOfWeekStatistics) {\r\n return day.Date.getDate() === this.Date.getDate();\r\n }\r\n\r\n IsNormBooked(day: DayOfWeekStatistics) {\r\n return day.Booked >= 8;\r\n }\r\n}\r\n\r\nexport class RequestedDate {\r\n Reservations: KnockoutObservableArray<Reservation>;\r\n\r\n constructor() {\r\n this.Reservations = ko.observableArray([]);\r\n }\r\n}\r\n\r\nexport class Reservation {\r\n Guid: string;\r\n Id: number;\r\n AgendaId: number;\r\n Start: KnockoutObservable<Date>;\r\n TimeSpent: KnockoutObservable<Date>;\r\n To: KnockoutObservable<Date>;\r\n Subject: KnockoutObservable<Subject>;\r\n Description: KnockoutObservable<string>;\r\n TimeStatus: KnockoutObservable<string>;\r\n Ovw: KnockoutObservable<LookupValue>;\r\n Pay: KnockoutObservable<LookupValue>;\r\n HourKind: KnockoutObservable<LookupValue>;\r\n Accepted: boolean;\r\n OptionalData: OptionalFieldData[];\r\n\r\n constructor() {\r\n\r\n this.Guid = Guid.NewGuid();\r\n this.Start = ko.observable(null);\r\n this.TimeSpent = ko.observable(null);\r\n this.To = ko.observable(null);\r\n this.Subject = ko.observable(null);\r\n this.Description = ko.observable(null);\r\n this.TimeStatus = ko.observable(null);\r\n this.Ovw = ko.observable(null);\r\n this.Pay = ko.observable(null);\r\n this.HourKind = ko.observable(null);\r\n this.OptionalData = [];\r\n\r\n this.AfterInit();\r\n }\r\n\r\n get StartFormat() {\r\n return moment(this.Start()).format(\"HH:mm\");\r\n }\r\n\r\n get ToFormat() {\r\n return moment(this.To()).format(\"HH:mm\");\r\n }\r\n\r\n get TimeSpentFormat() {\r\n const timeSpent = moment(this.TimeSpent());\r\n return timeSpent.format(\"HH:mm\");\r\n }\r\n\r\n GetOptionalField(fieldName: string) {\r\n return _.find(this.OptionalData, f => f.FieldName === fieldName);\r\n }\r\n\r\n GetOptionalValue(fieldName: string) {\r\n return this.GetOptionalField(fieldName).FieldValue;\r\n }\r\n\r\n GetTranslations(fieldName: string) {\r\n return this.GetOptionalField(fieldName).Translations;\r\n }\r\n\r\n SetOptionalValue(fieldName: string, value: any) {\r\n const field = this.GetOptionalField(fieldName);\r\n field.FieldValue(value);\r\n }\r\n\r\n ChangeDate(date: Date) {\r\n const startTime = this.Start();\r\n const startDate = new Date(date.toString());\r\n\r\n startDate.setHours(startTime.getHours(), startTime.getMinutes());\r\n this.Start(startDate);\r\n\r\n const timeSpent = this.TimeSpent();\r\n const timeDate = new Date(date.toString());\r\n\r\n timeDate.setHours(timeSpent.getHours(), timeSpent.getMinutes());\r\n this.TimeSpent(timeDate);\r\n }\r\n\r\n static ReserveFor(start: Date, timeSpent: Date, subject: Subject, optionalFields: AttachedFieldModel[]) {\r\n const model = new Reservation();\r\n model.Start(start);\r\n model.TimeSpent(timeSpent);\r\n model.Subject(subject || Subject.NotSpecified());\r\n model.OptionalData = optionalFields.map(field => new OptionalFieldData({\r\n FieldName: field.Name,\r\n FieldType: field.FieldTypeName,\r\n FieldValue: ko.observable(null),\r\n Translations: ko.observableArray([])\r\n }));\r\n\r\n return model;\r\n }\r\n\r\n private AfterInit() {\r\n this.BindTimeChangesEvents();\r\n }\r\n\r\n private BindTimeChangesEvents() {\r\n this.Start.subscribe(() => this.CalculateTo());\r\n this.TimeSpent.subscribe(() => this.CalculateTo());\r\n this.To.subscribe(() => this.CalculateDuration());\r\n }\r\n\r\n private CalculateTo() {\r\n if (!this.Start() || !this.TimeSpent()) {\r\n this.To(null);\r\n return;\r\n }\r\n\r\n const start = moment(this.Start());\r\n const timeSpent = moment(this.TimeSpent());\r\n const to = moment(start).add(timeSpent.hours(), 'h').add(timeSpent.minutes(), 'm');\r\n\r\n if (!to.isSame(moment(this.To()))) {\r\n this.To(to.toDate());\r\n }\r\n }\r\n\r\n private CalculateDuration() {\r\n if (!this.Start() || !this.To()) {\r\n this.TimeSpent(null);\r\n return;\r\n }\r\n\r\n const to = moment(this.To());\r\n const start = moment(this.Start());\r\n const timeSpent = moment(to).add(-start.hours(), 'h').add(-start.minutes(), 'm');\r\n\r\n if (!timeSpent.isSame(moment(this.TimeSpent()))) {\r\n this.TimeSpent(timeSpent.toDate());\r\n }\r\n }\r\n}\r\n\r\nexport class Subject {\r\n EntityId: number;\r\n EntityName: string;\r\n SubjectId: number;\r\n SubjectName: string;\r\n Icon: Icon;\r\n PathToRoot: string[];\r\n\r\n private _notSpecified: boolean;\r\n\r\n get SubjectLabel() {\r\n if (this.PathToRoot) {\r\n return [...this.PathToRoot.reverse(), this.SubjectName].join(' > ');\r\n }\r\n\r\n return this.SubjectName;\r\n }\r\n\r\n constructor(initialization?: Partial<Subject>) {\r\n this._notSpecified = false;\r\n\r\n if (initialization) {\r\n this.EntityId = initialization.EntityId;\r\n this.EntityName = initialization.EntityName;\r\n this.SubjectId = initialization.SubjectId;\r\n this.SubjectName = initialization.SubjectName;\r\n this.Icon = initialization.Icon;\r\n this.PathToRoot = initialization.PathToRoot;\r\n }\r\n }\r\n\r\n GoToRecordScreen() {\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.EntityId,\r\n RecordId: this.SubjectId,\r\n IsOpenInModal: true\r\n });\r\n\r\n }\r\n\r\n\r\n get NotSpecified() {\r\n return this._notSpecified;\r\n }\r\n\r\n static NotSpecified(): Subject {\r\n const model = new Subject();\r\n\r\n model.EntityId = 0;\r\n model.Icon = new Icon(new IconModel());\r\n model.SubjectName = \"\";\r\n\r\n model._notSpecified = true;\r\n\r\n return model;\r\n }\r\n}\r\n\r\nexport class DayOfWeekStatistics {\r\n Name: string;\r\n Date: Date;\r\n ClosedDate: boolean;\r\n Booked: any;\r\n Weekend: boolean;\r\n Hovered: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.Hovered = ko.observable(false);\r\n }\r\n\r\n get DayDescription() {\r\n let currentDay = new Date();\r\n currentDay.setHours(0, 0, 0, 0);\r\n\r\n if (this.Weekend) {\r\n //if saturday/sunday it will be '-' if not booked\r\n return this.Booked == 0 ? `${this.Name} - ` : `${this.Name} ${this.Booked}`;\r\n } else if (this.Date.getTime() > currentDay.getTime() && this.Booked == 0) {\r\n //future\r\n return `- ${this.Name}`;\r\n } else {\r\n return `${this.Booked} ${this.Name}`;\r\n }\r\n }\r\n}\r\n\r\nexport class LookupField {\r\n Id: number;\r\n Name: string;\r\n RequiresSearch: boolean;\r\n Values: LookupValue[];\r\n ValTableId: number;\r\n ValFieldId: number;\r\n ValFieldTypeName: string;\r\n ValFieldFormatName: string;\r\n ValFieldSize: number;\r\n\r\n constructor() {\r\n this.Values = [];\r\n }\r\n}\r\n\r\nexport class DefaultValue {\r\n Id: number;\r\n Name: string;\r\n TypeName: string;\r\n DefaultValue: any;\r\n\r\n constructor(partial?: Partial<DefaultValue>) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n this.Name = partial.Name;\r\n this.TypeName = partial.TypeName;\r\n this.DefaultValue = this.ProcessValue(partial.DefaultValue);\r\n }\r\n }\r\n\r\n private ProcessValue(value: any): any {\r\n if (this.TypeName === FIELD_TYPES.DateTime) {\r\n return new Date(FormatConverter.CorrectTimezone(value));\r\n }\r\n\r\n if (this.TypeName === FIELD_TYPES.Date) {\r\n return new Date(value);\r\n }\r\n\r\n return value;\r\n }\r\n}\r\n\r\nexport class TranslatedField {\r\n Id: number;\r\n\r\n constructor(partial?: Partial<TranslatedField>) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n }\r\n }\r\n}\r\n\r\nexport class LookupValue {\r\n FieldValue: number;\r\n DisplayValue: string;\r\n\r\n constructor(partial?: Partial<LookupValue>) {\r\n if (partial) {\r\n this.FieldValue = partial.FieldValue;\r\n this.DisplayValue = partial.DisplayValue;\r\n }\r\n }\r\n}\r\n\r\nexport class OptionalFieldData {\r\n FieldName: string;\r\n FieldType: string;\r\n FieldValue: KnockoutObservable<any>;\r\n Translations: KnockoutObservableArray<TranslationItem>;\r\n\r\n constructor(partial?: Partial<OptionalFieldData>) {\r\n if (partial) {\r\n this.FieldName = partial.FieldName;\r\n this.FieldType = partial.FieldType;\r\n this.FieldValue = partial.FieldValue;\r\n this.Translations = partial.Translations;\r\n } else {\r\n this.Translations = ko.observableArray([]);\r\n this.FieldValue = ko.observable(null);\r\n }\r\n }\r\n}\r\n\r\nexport class AllowedEntity {\r\n Id: number;\r\n Name: string;\r\n Icon: Icon;\r\n\r\n constructor(partial?: Partial<AllowedEntity>) {\r\n if (partial) {\r\n this.Id = partial.Id;\r\n this.Name = partial.Name;\r\n this.Icon = partial.Icon;\r\n }\r\n }\r\n}","export class SaveReservationRequestModel {\r\n Id: number;\r\n AgendaId: number;\r\n Start: string;\r\n TimeSpent: string;\r\n Subject: SaveSubjectRequestModel;\r\n Description: string;\r\n OverWorkIndicatorId: number;\r\n PaymentIndicatorId: number;\r\n HourKindIndicatorId: number;\r\n\r\n TimeTableId: number;\r\n UserId: number;\r\n\r\n OptionalData: SaveOptionalDataRequestModel[];\r\n\r\n constructor() {\r\n this.OptionalData = [];\r\n }\r\n}\r\n\r\nexport class SaveSubjectRequestModel {\r\n EntityId: number;\r\n SubjectId: number;\r\n}\r\n\r\nexport class FieldDataTranslation {\r\n constructor(public Language: LanguageData,\r\n public Translation: string){\r\n\r\n }\r\n}\r\n\r\nexport class LanguageData {\r\n constructor(public K_Language: number,\r\n public Name: string,\r\n public ShortName: string){\r\n\r\n }\r\n}\r\n\r\nexport class SaveOptionalDataRequestModel {\r\n constructor(public FieldName: string, public FieldValue: string, public Translations: FieldDataTranslation[]) {\r\n\r\n }\r\n}","export class DeleteReservationRequestModel {\r\n\tId: number;\r\n\tTimeTableId: number;\r\n}","//Store models\r\nimport { SubjectResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/SubjectResponseModel\";\r\nimport { SaveSubjectRequestModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\n\r\n//View models\r\nimport { Subject } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\n//UI\r\nimport { Icon } from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\nexport class SubjectMappings {\r\n\tstatic OnViewModel(model: SubjectResponseModel): Subject {\r\n\t\tconst viewModel = new Subject();\r\n\r\n\t\tviewModel.EntityId = model.EntityId;\r\n\t\tviewModel.EntityName = model.EntityName;\r\n\t\tviewModel.SubjectId = model.SubjectId;\r\n\t\tviewModel.SubjectName = model.SubjectName;\r\n\t\tviewModel.Icon = this.SelectIcon(model.Icon);\r\n\t\tviewModel.PathToRoot = model.PathToRoot;\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n\r\n\tstatic OnSaveModel(model: Subject): SaveSubjectRequestModel {\r\n\t\tconst requestModel = new SaveSubjectRequestModel();\r\n\r\n\t\trequestModel.EntityId = model.EntityId;\r\n\t\trequestModel.SubjectId = model.SubjectId;\r\n\r\n\t\treturn requestModel;\r\n\t}\r\n\r\n\tprivate static SelectIcon(model: IconModel): Icon {\r\n\t\tif (model && model.Id > 0) {\r\n\t\t\treturn new Icon(model);\r\n\t\t}\r\n\r\n\t\tconst defaultIconModel = new IconModel();\r\n\r\n\t\tdefaultIconModel.Name = 'fa-file';\r\n\t\tdefaultIconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n\t\tdefaultIconModel.IsIcon = true;\r\n\t\tdefaultIconModel.IsImage = false;\r\n\r\n\t\treturn new Icon(defaultIconModel);\r\n\t}\r\n}","//Store models\r\nimport {LookupValueResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Common/Response/LookupValueResponseModel\";\r\n\r\n//View models\r\nimport {LookupValue} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\nexport class LookupValueMappings {\r\n static OnViewModel(model: LookupValueResponseModel): LookupValue {\r\n const viewModel = new LookupValue();\r\n\r\n viewModel.FieldValue = model.Id;\r\n viewModel.DisplayValue = model.Value;\r\n\r\n return viewModel;\r\n }\r\n}","//Libs\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as moment from \"moment\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\n\r\n//Translations\r\nimport {TranslationItem} from \"Core/Components/TranslationFieldEditor/TranslationItem\";\r\nimport {LanguageModel} from \"Core/Components/Translation/Models/LanguageModel\";\r\nimport {ITranslationValue} from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\n//Utils\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//Store models\r\nimport {DayReservationResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/DayReservationResponseModel\";\r\nimport {\r\n FieldDataTranslation,\r\n LanguageData,\r\n SaveOptionalDataRequestModel,\r\n SaveReservationRequestModel\r\n} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//ViewModels\r\nimport {OptionalFieldData, Reservation} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\n//Mappings\r\nimport {SubjectMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/SubjectMappings\";\r\nimport {LookupValueMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Common/LookupValueMappings\";\r\nimport {TranslationManager} from \"../../../../Translation/TranslationManager\";\r\n\r\nexport class ReservationMappings {\r\n static OnViewModel(model: DayReservationResponseModel): Reservation {\r\n const viewModel = new Reservation();\r\n\r\n viewModel.Id = model.Id;\r\n viewModel.AgendaId = model.AgendaId;\r\n viewModel.Start(new Date(FormatConverter.CorrectTimezone(model.Start.toString())));\r\n viewModel.TimeSpent(model.TimeSpent);\r\n viewModel.Subject(SubjectMappings.OnViewModel(model.Subject));\r\n viewModel.Description(model.Description);\r\n viewModel.Ovw(model.OverWorkIndicator ? LookupValueMappings.OnViewModel(model.OverWorkIndicator) : null);\r\n viewModel.Pay(model.PaymentIndicator ? LookupValueMappings.OnViewModel(model.PaymentIndicator) : null);\r\n viewModel.HourKind(model.HourKindIndicator ? LookupValueMappings.OnViewModel(model.HourKindIndicator) : null);\r\n viewModel.Accepted = model.Accepted;\r\n viewModel.TimeStatus(model.TimeStatus);\r\n viewModel.OptionalData = model.OptionalData.map(field => {\r\n let value: any = field.FieldValue;\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n value = {\r\n FieldValue: field.FieldValue,\r\n DisplayValue: field.DisplayValue\r\n }\r\n } else if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n value = {\r\n FieldValue: field.FieldValue,\r\n DisplayValue: field.DisplayValue\r\n }\r\n }else if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n value = !!field.FieldValue && field.FieldValue !== \"False\";\r\n } else if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n value = field.FieldValue!= null ? new Date(FormatConverter.CorrectTimezone(field.FieldValue)) : null;\r\n } else if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n value = field.FieldValue && new Date(field.FieldValue);\r\n }\r\n\r\n return new OptionalFieldData({\r\n FieldName: field.FieldName,\r\n FieldType: field.FieldTypeName,\r\n FieldValue: ko.observable(value),\r\n Translations: ko.observableArray(field.FieldValueTranslations.map(translationValue => this.OnTranslationItem(translationValue)))\r\n })\r\n });\r\n return viewModel;\r\n }\r\n\r\n static OnTranslationItem(translationValue: ITranslationValue) {\r\n const language = _.find(TranslationManager.Instance.Languages, language => language.Id === translationValue.LanguageId);\r\n const translationItem = new TranslationItem(language);\r\n translationItem.Value(translationValue.Value);\r\n\r\n return translationItem;\r\n }\r\n\r\n static OnSaveModel(model: Reservation): SaveReservationRequestModel {\r\n const requestModel = new SaveReservationRequestModel();\r\n\r\n requestModel.Id = model.Id;\r\n requestModel.AgendaId = model.AgendaId;\r\n requestModel.Start = FormatConverter.ConvertToUTC(moment(model.Start()).format(DATE_FORMATS.DATE_TIME.Format), DATE_FORMATS.DATE_TIME.Format);\r\n requestModel.TimeSpent = moment(model.TimeSpent()).format(DATE_FORMATS.DATE_TIME.Format);\r\n requestModel.Subject = SubjectMappings.OnSaveModel(model.Subject());\r\n requestModel.Description = model.Description();\r\n\r\n const ovwId = (model.Ovw() && model.Ovw().FieldValue) ? model.Ovw().FieldValue : null;\r\n const payId = (model.Pay() && model.Pay().FieldValue) ? model.Pay().FieldValue : null;\r\n const hourKindId = (model.HourKind() && model.HourKind().FieldValue) ? model.HourKind().FieldValue : null;\r\n\r\n requestModel.OverWorkIndicatorId = ovwId;\r\n requestModel.PaymentIndicatorId = payId;\r\n requestModel.HourKindIndicatorId = hourKindId;\r\n\r\n requestModel.OptionalData = model.OptionalData.map(data => {\r\n let value = null;\r\n\r\n switch (data.FieldType) {\r\n case FIELD_TYPES.Lookup:\r\n value = data.FieldValue() && data.FieldValue().FieldValue;\r\n break;\r\n\r\n case FIELD_TYPES.MultiSelect:\r\n value = data.FieldValue() && data.FieldValue().FieldValue;\r\n break;\r\n\r\n case FIELD_TYPES.DateTime:\r\n const dateTime = moment(data.FieldValue()).utc();\r\n value = dateTime.isValid() ? dateTime.format(DATE_FORMATS.DATE_TIME.Format) : null;\r\n break;\r\n\r\n case FIELD_TYPES.Time:\r\n value = data.FieldValue() && moment(data.FieldValue(), DATE_FORMATS.TIME.MomentFormat).format(DATE_FORMATS.TIME.Format);\r\n break;\r\n\r\n case FIELD_TYPES.Date:\r\n const date = moment(data.FieldValue());\r\n value = date.isValid() ? date.format(DATE_FORMATS.SHORT_DATE.Format) : null;\r\n break;\r\n\r\n case FIELD_TYPES.TimeSpan:\r\n value = data.FieldValue() && moment(data.FieldValue(), DATE_FORMATS.DATE_TIME.MomentFormat).format(DATE_FORMATS.DATE_TIME.Format);\r\n break;\r\n\r\n default:\r\n value = data.FieldValue();\r\n break;\r\n }\r\n\r\n const translations = data.Translations().map(item =>\r\n new FieldDataTranslation(\r\n new LanguageData(item.Language.Id, item.Language.Name, item.Language.ShortName),\r\n item.Value()));\r\n\r\n return new SaveOptionalDataRequestModel(data.FieldName, value, translations);\r\n });\r\n\r\n return requestModel;\r\n }\r\n\r\n static OnDeleteModel(model: Reservation): DeleteReservationRequestModel {\r\n const requestModel = new DeleteReservationRequestModel();\r\n\r\n requestModel.Id = model.Id;\r\n\r\n return requestModel;\r\n }\r\n}","//Store models\r\nimport { DayReservationsResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/DayReservationsResponseModel\";\r\n\r\n//View models\r\nimport { RequestedDate } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\n//Mappings\r\nimport { ReservationMappings } from \"./ReservationMappings\";\r\n\r\nexport class RequestedDateMappings {\r\n\tstatic OnViewModel(model: DayReservationsResponseModel): RequestedDate {\r\n\t\tconst viewModel = new RequestedDate();\r\n\r\n\t\tconst reservations = model.Reservations.map(reservation => ReservationMappings.OnViewModel(reservation));\r\n\r\n\t\tviewModel.Reservations(reservations);\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n}","import * as moment from 'moment';\r\n\r\n//Constants\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\n//Store models\r\nimport { DayReportSummaryResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/DayReportSummaryResponseModel\";\r\n\r\n//ViewModels\r\nimport { DayOfWeekStatistics } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\nexport class DayMappings {\r\n\tstatic OnViewModel(model: DayReportSummaryResponseModel): DayOfWeekStatistics {\r\n\t\tconst date = new Date(model.Date);\r\n\r\n\t\tconst day = new DayOfWeekStatistics();\r\n\r\n\t\tday.Name = moment(date).format(DATE_FORMATS.WEEKDAY_SHORTNAME.MomentFormat);\r\n\t\tday.Date = date;\r\n\t\tday.Booked = Math.round(model.Booked * 100) / 100;\r\n\t\tday.ClosedDate = model.ClosedDate;\r\n\r\n\t\treturn day;\r\n\t}\r\n}","//UI\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\n\r\n//Store models\r\nimport {AllowedEntityResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/AllowedEntityResponseModel\";\r\n\r\n//View models\r\nimport {AllowedEntity} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\nexport class EntityMappings {\r\n static OnViewModel(model: AllowedEntityResponseModel): AllowedEntity {\r\n const entity = new AllowedEntity();\r\n\r\n entity.Id = model.Id;\r\n entity.Name = model.Name;\r\n entity.Icon = this.SelectIcon(model.Icon);\r\n\r\n return entity;\r\n }\r\n\r\n private static SelectIcon(model: IconModel): Icon {\r\n if (model && model.Id > 0) {\r\n return new Icon(model);\r\n }\r\n\r\n const defaultIconModel = new IconModel();\r\n\r\n defaultIconModel.Name = 'fa-file';\r\n defaultIconModel.FontName = FONT_NAME.FONT_AWESOME;\r\n defaultIconModel.IsIcon = true;\r\n defaultIconModel.IsImage = false;\r\n\r\n return new Icon(defaultIconModel);\r\n }\r\n}","import {FieldResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Common/Response/FieldResponseModel\";\r\nimport {LookupField} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\nimport {LookupValueMappings} from \"./LookupValueMappings\";\r\n\r\nexport class LookupFieldMappings {\r\n static OnViewModel(field: FieldResponseModel): LookupField {\r\n const lookupField = new LookupField();\r\n\r\n lookupField.Id = field.Id;\r\n lookupField.Name = field.Name;\r\n lookupField.RequiresSearch = field.RequiresSearch;\r\n lookupField.Values = field.Values.map(value => LookupValueMappings.OnViewModel(value));\r\n lookupField.ValFieldTypeName = field.ValFieldTypeName;\r\n lookupField.ValFieldFormatName = field.ValFieldFormatName;\r\n lookupField.ValFieldSize = field.ValFieldSize;\r\n\r\n return lookupField;\r\n }\r\n}","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Store models\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//View models\r\nimport {\r\n DayDataViewModel,\r\n DefaultValue,\r\n Reservation,\r\n TranslatedField\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\"\r\n\r\n//Mappings\r\nimport {RequestedDateMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/RequestedDateMappings\";\r\nimport {DayMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappings\";\r\nimport {EntityMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/EntityMappings\";\r\nimport {ReservationMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/ReservationMappings\";\r\nimport {LookupFieldMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Common/LookupFieldMappings\";\r\nimport {FormatConverter} from \"../../../../../../FormatEditor/FormatConverter\";\r\nimport {DayReportResponseModel} from '../../Models/Store/Day/Response/DayReportResponseModel';\r\nimport {WeekReportResponseModel} from '../../Models/Store/Day/Response/WeekReportResponseModel';\r\n\r\nexport class DayMappingProfile {\r\n static OnViewModel(dayReport: DayReportResponseModel, weekReport: WeekReportResponseModel): DayDataViewModel {\r\n const viewModel = new DayDataViewModel();\r\n viewModel.RequestedDate = RequestedDateMappings.OnViewModel(dayReport.DayReservations);\r\n viewModel.StartBySchedule = dayReport.DaySchedule && new Date(FormatConverter.CorrectTimezone(dayReport.DaySchedule.Starting.toString()));\r\n\r\n viewModel.DaysOfWeek = weekReport.DayReports.map(day => DayMappings.OnViewModel(day));\r\n viewModel.AllowedEntities = dayReport.GlobalSettings.AllowedEntities.map(entity => EntityMappings.OnViewModel(entity));\r\n viewModel.LookupFields = dayReport.Fields.filter(field => field.TypeName === FIELD_TYPES.Lookup || field.TypeName === FIELD_TYPES.MultiSelect).map(field => LookupFieldMappings.OnViewModel(field));\r\n\r\n viewModel.DefaultValues = dayReport.Fields.filter(field => field.DefaultValue).map(field => new DefaultValue({\r\n Id: field.Id,\r\n DefaultValue: field.DefaultValue,\r\n Name: field.Name,\r\n TypeName: field.TypeName\r\n }));\r\n viewModel.TranslatedFields = dayReport.Fields.filter(field => field.IsTranslate).map(field => new TranslatedField({\r\n Id: field.Id,\r\n }));\r\n viewModel.HasDisapprovals = dayReport.HasDisapprovals;\r\n\r\n return viewModel;\r\n }\r\n\r\n static OnSaveModel(model: Reservation): SaveReservationRequestModel {\r\n return ReservationMappings.OnSaveModel(model);\r\n }\r\n\r\n static OnDeleteModel(model: Reservation): DeleteReservationRequestModel {\r\n return ReservationMappings.OnDeleteModel(model);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box time-writing-control\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"time-writing-caption clearfix\\\"> <div class=\\\"container-fluid time-writing-header\\\"> <div class=\\\"row weekly-container\\\"> <div class=\\\"weekly-subcontainer weekly-subcontainer-left days-container\\\"> <!--Todo: create translations--> <!-- ko with: _viewModel --> <!-- ko foreach: DaysOfWeek --> <div class=\\\"day-column selected-day\\\"> <span class=\\\"navigation-link\\\" data-bind=\\\"click: $parents[1].OnDayClick.bind($parents[1], $data.Date),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t text: DayDescription,\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {'selected': $parent.IsActive($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t \\t 'current-date': $data.Date.getTime() == $parents[1]._compareCurrentDate.getTime(),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t \\t 'booked-norm-date': $parent.IsNormBooked($data) && !$parent.IsActive($data)}\\\"> </span> <!--ko if: $parents[1].TimeCloseDateVisiblePerDay || $parents[1].TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parents[1].HoverOnDayClose.call($parents[1], event, $data.Date),\\r\\n mouseout: $parents[1].HoverOutDayClose.call($parents[1], event)\\r\\n },\\r\\n click: $parents[1].OnCloseDayClicked.bind($parents[1], event, $data.Date)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedDate, attr: {'id': DayDescription, 'disabled': $data.ClosedDate || $parents[1].IsFutureDate($data.Date)}\\\"/> <label data-bind=\\\"attr: {'for': DayDescription}, css: {'hovered': $data.Hovered }\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"week-hours selected-day\\\"> <div class=\\\"navigation-link\\\" data-bind=\\\"click: $parent.OnWeekClick.bind($parent)\\\"> <span data-bind=\\\"text: Booked\\\"></span> <span> <!--ko text: $parent._labels.WEEK --><!-- /ko--> </span> </div> <!--ko if: $parent.TimeCloseDateVisiblePerWeek || $parent.TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parent.HoverOnWeekClose.call($parent, event),\\r\\n mouseout: $parent.HoverOutWeekClose.call($parent, event)\\r\\n },\\r\\n click: $parent.OnCloseWeekClicked.bind($parent, event)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedWeek, attr: {id: WeekId, disabled: $data.ClosedWeek || $parent._isDisableWeekBtn()}\\\"/> <label data-bind=\\\"attr: {for: WeekId}\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-center week-container\\\"> <i class=\\\"glyphicon glyphicon-arrow-left prev-page\\\" data-bind=\\\"click: OnPrevWeekClick\\\"></i> <!-- ko with: _viewModel --> <div class=\\\"header-button\\\" style=\\\"position:relative;display:inline-block\\\"> <!-- ko with: $parent._state --> <input data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdatetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: Date,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tonUpdate: $parents[1].SelectDate.bind($parents[1]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlocale: $parents[1].GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tformat: $parents[1].GetShortDateFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxDate: 'now',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n vertical: 'bottom'\\r\\n }\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"> <!-- /ko --> <!--ko text: $parent._labels.WEEK --><!-- /ko--> <!-- ko text: WeekNumber --> <!-- /ko --> (<span> <!-- ko text: WeekDescription --> <!-- /ko --> </span>) </div> <!-- /ko --> <!-- ko if: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right prev-page\\\" data-bind=\\\"click: OnNextWeekClick\\\"></i> <!-- /ko --> <!-- ko ifnot: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right next-page disable\\\"></i> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> <div class=\\\"weekly-subcontainer yearwiew-container weekly-subcontainer-right\\\"> <span class=\\\"navigation-link yearwiew-link\\\" data-bind=\\\"click: OnYearClick\\\"> <span class=\\\"icon-magnifier\\\"></span> <!--ko text: _labels.YEARVIEW --><!-- /ko--> </span> </div> <!--ko with: _viewModel--> <!-- ko if: HasDisapprovals --> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <a class=\\\"btn red btn-disapprove\\\" data-bind=\\\"click: $parent.OnDisapprovedClick.bind($parent)\\\"> <!--ko text: $parent._labels.DISAPPROVED --><!-- /ko--> </a> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko if: _isFutureDay() --> <div class=\\\"splash-message\\\" data-bind=\\\"text: _labels.WRITING_TIME_FOR_FUTURE_NOT_ALLOWED\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isFutureDay() --> <div class=\\\"timewriting-day-table clearfix\\\"> <div class=\\\"timewriting-day-table__content\\\"> <table> <thead class=\\\"timewriting-table-header timewriting-table-rows clearfix\\\"> <th></th> <th class=\\\"timewriting-table-column__name\\\"><!--ko text: _labels.SUBJECT --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isFromVisible\\\"> <!--ko text: _labels.FROM --><!-- /ko--></th> <th data-bind=\\\"visible: _isDashVisible\\\"></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isToVisible\\\"> <!--ko text: _labels.TO --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isDurationVisible\\\"> <!--ko text: _labels.DURATION --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isHourVisible\\\"> <!--ko text: _labels.HOUR --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isOvwVisible\\\"> <!--ko text: _labels.OVW --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isPayVisible\\\"> <!--ko text: _labels.PAY --><!-- /ko--></th> <!--ko foreach: GetCustomFieldNames()--> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"css: $data.Type\\\"><!--ko text: $data.Name --> <!-- /ko--></th> <!--/ko--> <th class=\\\"timewriting-table-column__full-width\\\"></th> </thead> <tbody class=\\\"timewriting-table-body\\\"> <!-- ko foreach: _rowEditors --> <tr class=\\\"timewriting-row-fields\\\"> <td rowspan=\\\"2\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name !== 'Description' && $data._cell.Name !== 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <td class=\\\"timewriting-table-column__empty-cell\\\"></td> </tr> <tr class=\\\"timewriting-row-description\\\"> <td data-bind=\\\"attr: { colspan: $parents[0]._countOfVisibleColumns + 1 }\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> <div class=\\\"timewriting-day-table__add-row\\\"> <a href=\\\"#\\\" class=\\\"btn btn-primary btn-timewriting-plus\\\" data-bind=\\\"click: OnAddLineClick, visible: _isEditable() && _isReadState(), tooltip:{content: _labels.ADD_LINE}\\\"> <i class=\\\"fa fa-plus-circle\\\"></i> </a> </div> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value text\\\"> <!-- ko if: _displayValue() != null && _displayValue().length >= 20 --> <span data-bind=\\\"text: _cell.Value, tooltip:{ content: _displayValue}\\\"></span> <!-- /ko --> <!-- ko if: _displayValue() != null && _displayValue().length < 20 --> <span data-bind=\\\"text: _displayValue\\\"></span> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"input-group\\\"> <input type=\\\"text\\\" data-bind=\\\"textInput: _displayValue,\\r\\n\\t\\t css: {'invalid': !_valid()},\\r\\n\\t\\t attr: { maxlength: _cell.Size ? _cell.Size : '' }\\\" class=\\\"form-control timewriting-table-input\\\"/> <!--ko if: _isTranslate --> <div class=\\\"translation-container\\\" data-bind=\\\"style: { 'z-index': $parents[2]._zIndex }\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: ToggleTranslations\\\"> <!--ko with: _translationFieldEditor._activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img\\\" data-bind=\\\"attr: {src: Language.Flag}\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: _translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value description\\\"> <span data-bind=\\\"text: _cell.Value\\\"></span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value description-edit\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" data-bind=\\\"value: _cell.Value, css: {'invalid': !_valid()}\\\" class=\\\"form-control\\\"/> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko with: _minLengthValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko with: _maxLengthValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value integer\\\"> <span data-bind=\\\"text: FormatValue(_cell.Value())\\\"></span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" data-bind=\\\"value: _cell.Value, inputMask: { type: 'Integer', value: _cell.Value }\\\" class=\\\"form-control\\\" data-with-number-group-separators=\\\"true\\\"/> </span> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value decimal\\\"> <span data-bind=\\\"text: FormatValue(_cell.Value())\\\"></span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" data-bind=\\\"value: _cell.Value, inputMask: { type: 'Decimal', value: _cell.Value, decimalSize: _cell.Size }\\\" class=\\\"form-control\\\" data-with-number-group-separators=\\\"true\\\"/> </span> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value subject\\\"> <!-- ko with: _cell.Value --> <span class=\\\"subject-icon\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <!-- ko if: SubjectLabel && SubjectLabel.length >= 50 --> <span class=\\\"navigation-link\\\" data-bind=\\\"text: SubjectLabel,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tclick: GoToRecordScreen,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttooltip:{ content: SubjectLabel }\\\"></span> <!-- /ko --> <!-- ko if: !SubjectLabel || SubjectLabel.length < 50 --> <span class=\\\"navigation-link\\\" data-bind=\\\"text: SubjectLabel, click: GoToRecordScreen\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value subject subject-edit\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <!-- ko with: _cell --> <!-- ko with: Value --> <!-- ko if: NotSpecified --> <!-- ko if: $parent.IsNewState --> <!-- ko foreach: $parent.AllowedEntities --> <!-- ko with: Icon --> <span data-bind=\\\"click: $parents[2].OnEntityClick.bind($parent, $parent)\\\" class=\\\"allowed-entity subject-icon\\\"> <span data-bind=\\\"tooltip:{content: $parent.Name}\\\"> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> </span> </span> <!-- /ko --> <!-- /ko --> <!-- /ko --> <span data-bind=\\\"text: SubjectLabel\\\"></span> <!-- ko if: $parent.IsNewState --> <!-- ko with: $parents[1]._requiredValidation --> <!-- ko if: !Valid() --> <div data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: NotSpecified --> <!-- ko if: $parent.IsNewState --> <span class=\\\"subject-icon\\\" data-bind=\\\"click: $parent.OnEntityIconClick\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <!-- ko ifnot: $parent.IsNewState --> <span class=\\\"subject-icon\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <!-- /ko --> <span class=\\\"navigation-link\\\" data-bind=\\\"click: $parent.OnSubjectClick\\\"> <span data-bind=\\\"text: SubjectLabel\\\"></span> </span> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value subject\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <!-- ko with: _cell --> <!-- ko with: Value --> <span class=\\\"subject-icon\\\"> <!-- ko with: Icon --> <!-- ko template: {name: GetTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </span> <span data-bind=\\\"text: SubjectLabel\\\"></span> <!--/ko--> <!--/ko--> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\"><span data-bind=\\\"text: _cell.Label\\\"></span>:</div> <span> <!-- ko with: _cell.Value --> <!-- ko text: $parent.FormatValue(DisplayValue) --> <!-- /ko --> <!-- /ko --> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div> <!--ko if: _cell.RequiresSearch--> <div class=\\\"searchContainer\\\" data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\"> <!--ko if: _cell.Value --> <!--ko with: _cell.Value--> <div class=\\\"dropdown-wraper form-control\\\" data-bind=\\\"tooltip:{ content: $parent.FormatValue(DisplayValue)}\\\"> <!--ko text: $parent.FormatValue(DisplayValue)--><!--/ko--> </div> <!--/ko--> <!--/ko--> <!--ko ifnot: _cell.Value --> <div class=\\\"dropdown-wraper form-control\\\"></div> <!--/ko--> <a class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></a> </div> <!--/ko--> <!--ko ifnot: _cell.RequiresSearch--> <select class=\\\"form-control\\\" data-bind=\\\"\\r\\n options: _cell.Options,\\r\\n optionsText: $data.FormatSelectValue.bind($data),\\r\\n value: _currentValue\\r\\n \\\"></select> <!--/ko--> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </div> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\"><span data-bind=\\\"text: _cell.Label\\\"></span>:</div> <span data-bind=\\\"css: {empty: _showEmptyValue()}\\\"> <!-- ko with: _cell.Value --> <!-- ko text: $parent.FormatValue(DisplayValue) --> <!-- /ko --> <!-- /ko --> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value form-standart-control MultiSelect\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"timewriting-table-column__multi-select-container\\\"> <div data-bind=\\\"\\\" class=\\\"multi-options-list dropdown-wraper form-control\\\"> <!-- ko foreach: Items --> <!-- ko if: IsSelected --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\">x</a> <!--ko text: $parent.FormatSingleValue(Label) --><!-- /ko --> </span> <!--/ko--> <!--/ko--> <!-- ko if: _showEmptyValue() --> <span class=\\\"empty\\\" data-bind=\\\"text: !Items().length > 0 ? $data._labels.NO_RECORDS_TO_SELECT : $data._labels.SELECT_VALUE_LABEL\\\"></span> <!-- /ko --> </div> <!-- ko if: _cell.RequiresSearch --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\"></span> <!-- /ko --> <!-- ko ifnot: _cell.RequiresSearch --> <span class=\\\"btn default dropdown-search-icon\\\" data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\"><i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value Time\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"text\\\" readonly=\\\"readonly\\\" class=\\\"time-editor\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\tlocale: GetLocale(),\\r\\n\\t\\t\\t\\tformat: GetFormat()\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\\"/> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"form-group timewriting-day-datetimepicker\\\"> <div class=\\\"input-group date\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\t\\t\\t\\t\\tonUpdate: $data.DateChanged.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tonClear: $data.DateChanged.bind($data, null),\\r\\n\\t\\t\\t\\t\\t\\t\\tnotFormatted: true,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tlocale: GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: GetFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tminDate: '1900-01-01',\\r\\n\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t}\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\"/> <span class=\\\"input-group-addon\\\"> <span class=\\\"glyphicon glyphicon-calendar\\\"></span> </span> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </div> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\"><span data-bind=\\\"text: _cell.Label\\\"></span>:</div> <input autocomplete=\\\"off\\\" type=\\\"text\\\" readonly=\\\"readonly\\\" class=\\\"time-editor\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\tformat: 'HH:mm'\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t }\\\"/> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value time time-edit\\\" data-bind=\\\"css: _cell.ClassName, visible: _cell.Visible\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <div class=\\\"timewriting-day-datetimepicker\\\"> <div class=\\\"input-group date\\\" data-bind=\\\"datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: _cell.Value,\\r\\n\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tformat: 'HH:mm',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tallowInputToggle: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tkeyBinds: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tup: null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdown: null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tright: null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tleft: null\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\tonUpdate: function(newDate) {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t_cell.Value(newDate);\\r\\n\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t}\\\"> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"valueUpdate: 'input', event: {keypress: PreventLetters}\\\"/> <span class=\\\"input-group-addon\\\"> <span class=\\\"glyphicon glyphicon-time\\\"></span> </span> </div> <!-- ko with: _requiredValidation --> <!-- ko if: !Valid() --> <span data-bind=\\\"text: Rule.Message\\\" class=\\\"text-danger\\\"></span> <!-- /ko --> <!-- /ko --> </div> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value yesNo\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _cell.Value, uniform: _cell.Value\\\" disabled=\\\"disabled\\\"/> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value\\\"> <div class=\\\"timewriting-table-mobile-label\\\" data-bind=\\\"text: _cell.Label\\\"></div> <span> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _cell.Value, uniform: _cell.Value\\\"/> </span> </td>\";\n// Exports\nexport default code;","// Module\nvar code = \"<td class=\\\"timewriting-table-column__value dash\\\" data-bind=\\\"visible: _cell.Visible\\\"> - </td>\";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {SERVER_REQUEST_ERRORS} from \"Core/Common/Enums/ServerRequestErrors\";\r\n\r\n//User\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\n//Components\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\n//Screens\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\n//Constants\r\nimport {DAYS_OF_WEEK} from \"Core/Components/Controls/TimeWriting/Constants/DaysOfWeek\";\r\nimport {TimeStatus} from \"Core/Components/Controls/TimeWriting/Constants/TimeStatus\";\r\n\r\n\r\n//Settings\r\nimport {IDayViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Day/IDayViewSettings\";\r\n\r\n//Utils\r\nimport {DateTime} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\nimport {\r\n ActionsCellEditor,\r\n CellEditor,\r\n DateCellEditor,\r\n DateTimeCellEditor,\r\n DecimalCellEditor,\r\n DescriptionCellEditor,\r\n DropdownCellEditor,\r\n IntegerCellEditor,\r\n MultiSelectCellEditor,\r\n RowEditor,\r\n State as RowEditorState,\r\n SubjectCellEditor,\r\n TextCellEditor,\r\n TimeCellEditor,\r\n ValidationCellEditor,\r\n ValueCellEditor\r\n} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\nimport {WeekView} from \"Core/Components/Controls/TimeWriting/Views/Week/WeekView\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {ViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/ViewState\";\r\n\r\n//ViewModels\r\nimport {\r\n AllowedEntity,\r\n DayDataViewModel,\r\n DefaultValue,\r\n LookupField,\r\n OptionalFieldData,\r\n Reservation,\r\n Subject\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\nimport {UsersViewModel, UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//Store models\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//Mappings\r\nimport {DayMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile\";\r\nimport {UsersMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile\";\r\n\r\n//Templates\r\nimport DayTemplate from \"Core/Components/Controls/TimeWriting/Templates/DayTemplate.html\";\r\n//TextColumn\r\nimport TextViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html\";\r\nimport TextEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html\";\r\n\r\nimport DescriptionViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html\";\r\nimport DescriptionEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html\";\r\n\r\n//Integer\r\nimport IntegerViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html\";\r\nimport IntegerEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html\";\r\n\r\n//Decimal\r\nimport DecimalViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html\";\r\nimport DecimalEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html\";\r\n\r\n//Subject\r\nimport SubjectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html\";\r\nimport SelectableSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectableSubjectEdit.html\";\r\nimport SelectedSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectedSubjectEdit.html\";\r\n//Dropdown\r\nimport DropdownViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html\";\r\nimport DropdownEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html\";\r\n\r\n//Multiselect\r\nimport MultiselectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/View.html\";\r\nimport MultiselectEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/Edit.html\";\r\n\r\n//DateTime\r\nimport DateTimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html\";\r\nimport DateTimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html\";\r\n\r\n//Time\r\nimport TimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html\";\r\nimport TimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html\";\r\n\r\n//YesNo\r\nimport YesNoViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html\";\r\nimport YesNoEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html\";\r\n\r\n//Actions\r\nimport ActionsViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Day/View.html\";\r\nimport ActionsEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Day/Edit.html\";\r\n//Dash\r\nimport DashViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html\";\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\n\r\n\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { DayReportResponseModel } from \"../../Models/Store/Day/Response/DayReportResponseModel\";\r\nimport { QueryConditionGroupModel } from \"Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup\";\r\nimport { GenericDeserialize } from \"libs/cerialize\";\r\n\r\nexport class DayView extends TimeWritingView {\r\n private _state: KnockoutObservable<State>;\r\n private _currentDate: Date;\r\n private _currentValue;\r\n private _isPastWeek: KnockoutComputed<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _viewModel: KnockoutObservable<DayDataViewModel>;\r\n\r\n private _viewState: KnockoutObservable<ViewState>;\r\n private _isReadState: KnockoutComputed<boolean>;\r\n private _isEditState: KnockoutComputed<boolean>;\r\n private _isNewState: KnockoutComputed<boolean>;\r\n private _isFutureDay: KnockoutObservable<boolean>;\r\n private _isDisableWeekBtn: KnockoutObservable<boolean>;\r\n\r\n private _countOfVisibleColumns: number;\r\n private _isFromVisible: KnockoutObservable<boolean>;\r\n private _isDashVisible: KnockoutObservable<boolean>;\r\n private _isToVisible: KnockoutObservable<boolean>;\r\n private _isDurationVisible: KnockoutObservable<boolean>;\r\n private _isHourVisible: KnockoutObservable<boolean>;\r\n private _isOvwVisible: KnockoutObservable<boolean>;\r\n private _isPayVisible: KnockoutObservable<boolean>;\r\n\r\n private _rowEditors: KnockoutObservableArray<RowEditor>;\r\n private _compareCurrentDate: Date;\r\n private _labels = LABELS;\r\n private _confirmations = CONFIRMATIONS;\r\n private _timeStatus = TimeStatus;\r\n\r\n private _initialDateSet = true;\r\n private _userId: number;\r\n\r\n constructor(private _settings: IDayViewSettings) {\r\n super();\r\n this._currentDate = new Date();\r\n this._state = ko.observable(new State({Date: new Date()}));\r\n this._isPastWeek = ko.computed(() => DateTime.GetWeekYear(this._state().Date) < DateTime.GetWeekYear(this._currentDate) || DateTime.GetWeekNumber(this._state().Date) < DateTime.GetWeekNumber(this._currentDate), this);\r\n this._isEditable = ko.observable(false);\r\n this._viewModel = ko.observable(null);\r\n\r\n this._viewState = ko.observable(ViewState.Read);\r\n this._isReadState = ko.computed(() => this._viewState() === ViewState.Read, this);\r\n this._isEditState = ko.computed(() => this._viewState() === ViewState.Edit, this);\r\n this._isNewState = ko.computed(() => this._viewState() === ViewState.New, this);\r\n this._rowEditors = ko.observableArray([]);\r\n this._compareCurrentDate = this._currentDate;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._isFutureDay = ko.observable(false);\r\n this._isDisableWeekBtn = ko.observable(false);\r\n\r\n const visibleFields = this._settings.Properties.Groups.find(group => group.Name === \"VisibleFields\").Properties;\r\n const dashVisibility = visibleFields.find(field => field.Name === \"START\").Value && visibleFields.find(field => field.Name === \"TO\").Value;\r\n\r\n this._countOfVisibleColumns = visibleFields.filter(f => f.Value === true).length + dashVisibility + this._settings.CustomFields.length;\r\n\r\n this._isFromVisible = ko.observable(visibleFields.find(field => field.Name === \"START\").Value);\r\n this._isDashVisible = ko.observable(dashVisibility);\r\n this._isToVisible = ko.observable(visibleFields.find(field => field.Name === \"TO\").Value);\r\n this._isDurationVisible = ko.observable(visibleFields.find(field => field.Name === \"TIMESPENT\").Value);\r\n this._isHourVisible = ko.observable(visibleFields.find(field => field.Name === \"F_HOURKIND\").Value);\r\n this._isOvwVisible = ko.observable(visibleFields.find(field => field.Name === \"F_OVERWORKINDICATOR\").Value);\r\n this._isPayVisible = ko.observable(visibleFields.find(field => field.Name === \"F_PAYMENTINDICATOR\").Value);\r\n }\r\n\r\n private GetTimeCloseDateVisibility() {\r\n const timeCloseDateOption = this._settings.Properties.Groups.find(group => group.Name === 'TimeCloseDateVisibility').Properties[0].Value;\r\n return timeCloseDateOption && timeCloseDateOption.Value || 'PerDay';\r\n }\r\n\r\n private InitAllowedEntities(dayReport: DayReportResponseModel) {\r\n let condition = this._settings.Properties.GetPropertyValue('AllowedEntityQueryCondition');\r\n\r\n if(condition){\r\n let conditions = GenericDeserialize<QueryConditionGroupModel>(JSON.parse(condition), QueryConditionGroupModel);\r\n if(conditions){\r\n dayReport.GlobalSettings.AllowedEntities = [_.find(dayReport.GlobalSettings.AllowedEntities, (entity)=> entity.Id === conditions.EntityId )];\r\n }\r\n }\r\n }\r\n\r\n get TimeCloseDateVisible() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility !== 'Hidden';\r\n }\r\n\r\n get TimeCloseDateVisiblePerDay() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility === 'PerDay';\r\n }\r\n\r\n get TimeCloseDateVisiblePerWeek() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility === 'PerWeek';\r\n }\r\n\r\n get TimeCloseDateVisiblePerDayAndWeek() {\r\n const visibility = this.GetTimeCloseDateVisibility();\r\n return visibility === 'PerDayAndWeek';\r\n }\r\n\r\n GetTemplate() {\r\n return DayTemplate;\r\n }\r\n\r\n CanBeUpdated() {\r\n return this._viewState() === ViewState.Read;\r\n }\r\n\r\n Show(date: Date, userId?: number) {\r\n this._userId = userId;\r\n this._initialDateSet = true;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._state(new State({\r\n Date: date\r\n }));\r\n\r\n BlockUI.Block();\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n if (usersList) {\r\n this.LoadData(date, usersList.SelectedUser().Id)\r\n .then(dayReportResponse => this.RenderData(dayReportResponse, usersList))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n } else {\r\n const loadDataPromise = this.LoadData(date, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise).then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id)).fail(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n ShowStatic() {\r\n this._state(new State({\r\n Date: new Date()\r\n }));\r\n\r\n this.RenderStaticData();\r\n }\r\n\r\n OnDisapprovedClick() {\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n const selectedUser = usersList && usersList.SelectedUser().Id;\r\n\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger(\"DisapprovedClicked\", {State: this._state(), UserId: selectedUser});\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger(\"DisapprovedClicked\", {State: this._state(), UserId: selectedUser});\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger(\"DisapprovedClicked\", this._state());\r\n });\r\n }\r\n\r\n OnPrevWeekClick() {\r\n const prevWeekStartDate = DateTime.GetPrevWeekStartDate(this._state().Date);\r\n if (this._viewState() === ViewState.Read) {\r\n this.Show(prevWeekStartDate);\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Show(prevWeekStartDate);\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Show(prevWeekStartDate);\r\n });\r\n }\r\n\r\n private SelectDate(date: Date) {\r\n if (!this._initialDateSet) {\r\n this.Show(date, this._userId);\r\n } else {\r\n this._initialDateSet = false;\r\n }\r\n return true;\r\n }\r\n\r\n OnYearClick() {\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n });\r\n }\r\n\r\n OnWeekClick() {\r\n const startDate = DateTime.GetWeekStart(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate();\r\n\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger('WeekClicked', {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n UserId: this._viewModel().SelectedUser.Id\r\n });\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger('WeekClicked', {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n UserId: this._viewModel().SelectedUser.Id\r\n });\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger('WeekClicked', {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n UserId: this._viewModel().SelectedUser.Id\r\n });\r\n });\r\n }\r\n\r\n OnNextWeekClick() {\r\n const nextWeekStartDate = DateTime.GetNextWeekStartDate(this._state().Date);\r\n if (this._viewState() === ViewState.Read) {\r\n this.Show(nextWeekStartDate);\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Show(nextWeekStartDate);\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Show(nextWeekStartDate);\r\n });\r\n }\r\n\r\n OnCloseDayClicked(evt, date: Date) {\r\n if (!evt.target.control.disabled) {\r\n const confirmationText = CONFIRMATIONS.SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE;\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: this._labels.YES,\r\n TextDecline: this._labels.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.CloseDate(date));\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n OnCloseWeekClicked(evt) {\r\n if (!evt.target.control.disabled) {\r\n const confirmationText = CONFIRMATIONS.SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE;\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: confirmationText,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: this._labels.YES,\r\n TextDecline: this._labels.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n const dateToClose = this._viewModel().DaysOfWeek.slice().reverse().find(day => moment().diff(moment(day.Date)) >= 0).Date;\r\n this.CloseDate(dateToClose);\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n private UpdateWeekCheckbox() {\r\n let daysOfWeekUntilToday = this._viewModel().DaysOfWeek.filter(day => moment().diff(moment(day.Date)) >= 0);\r\n this._isDisableWeekBtn(_.every(daysOfWeekUntilToday, dow => dow.ClosedDate));\r\n }\r\n\r\n private CloseDate(date: Date) {\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n const selectedUser = usersList && usersList.SelectedUser().Id;\r\n TimeWritingStore.CloseDate({\r\n TimeCloseDate: moment(date).format(),\r\n UserId: selectedUser\r\n })\r\n .then(() => this.Show(date, selectedUser))\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n OnDayClick(date: Date) {\r\n if (this._viewState() === ViewState.Read) {\r\n this.Show(date);\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Show(date);\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Show(date);\r\n });\r\n }\r\n\r\n OnAddLineClick() {\r\n const defaultTimeSpentValue = this._viewModel().DefaultValues.find(item => item.Name === 'TIMESPENT');\r\n const durationInMinutes = () => {\r\n const durationMoment = moment(defaultTimeSpentValue.DefaultValue);\r\n return durationMoment.hours() * 60 + durationMoment.minutes();\r\n };\r\n const duration = defaultTimeSpentValue ? durationInMinutes() : 60;\r\n\r\n const lastReservationTime = this.GetLastReservationTime();\r\n const timeOverflow = (lastReservationTime.getHours() === 0 && lastReservationTime.getMinutes() === 0);\r\n\r\n if (!lastReservationTime || timeOverflow) {\r\n new Notifier().Warning(NOTIFICATIONS.TIME_OVERFLOW);\r\n return;\r\n }\r\n\r\n const timeSpentMoment = moment(new Date(this._state().Date.toString())).hours(0).minutes(duration).seconds(0)\r\n\r\n const timeSpent = timeSpentMoment.toDate();\r\n\r\n this.GetNewReservationSubject().then(reservationSubject => {\r\n const reservation = Reservation.ReserveFor(lastReservationTime, timeSpent, reservationSubject, this._settings.CustomFields);\r\n this._viewModel().RequestedDate.Reservations.push(reservation);\r\n\r\n this._viewState(ViewState.New);\r\n this.AddRowEditor(reservation, this._viewModel().LookupFields, this._viewModel().AllowedEntities, RowEditorState.New, this._viewModel());\r\n });\r\n }\r\n\r\n OnReservationEdit(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n rowEditor.SetState(RowEditorState.Edit);\r\n\r\n this._viewState(ViewState.Edit);\r\n }\r\n\r\n OnReservationDelete(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n this.AskDeleteConfirmation(() => {\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const deleteModel = DayMappingProfile.OnDeleteModel(reservation);\r\n deleteModel.TimeTableId = this._settings.EntityId;\r\n\r\n this.DeleteReservation(deleteModel)\r\n .then(() => this.SaveAndReload(rowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n });\r\n }\r\n\r\n OnSaveReservationChanges() {\r\n BlockUI.Block();\r\n this.SaveReservation()\r\n .then(rowEditor => this.SaveAndReload(rowEditor))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n OnReservationAccept(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const acceptModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n acceptModel.TimeTableId = this._settings.EntityId;\r\n acceptModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n this.AcceptReservation(acceptModel)\r\n .then(() => this.SaveAndReload(rowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n }\r\n\r\n CancelChanges() {\r\n const editRow = _.find(this._rowEditors(), editor => editor.IsEditState || editor.IsNewState);\r\n this.OnCancelReservationChanges(editRow.Guid);\r\n }\r\n\r\n OnCancelReservationChanges(guid: string) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.Guid === guid);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n if (rowEditor.IsNewState) {\r\n this._viewModel().RequestedDate.Reservations().pop();\r\n this.CancelNewReservation(rowEditor);\r\n } else {\r\n this.CancelReservationChanges(rowEditor);\r\n }\r\n }\r\n\r\n IsFutureDate(date: Date) {\r\n return moment().diff(moment(date)) < 0;\r\n }\r\n\r\n HoverOnDayClose(evt, date) {\r\n if (evt.type === \"mouseover\" && evt.target.control && !evt.target.control.disabled) {\r\n this._viewModel().DaysOfWeek.forEach(day => {\r\n if (!day.ClosedDate) {\r\n day.Hovered(moment(day.Date).diff(moment(date)) <= 0);\r\n }\r\n });\r\n }\r\n }\r\n\r\n HoverOutDayClose(evt) {\r\n if (evt.type === \"mouseout\" && evt.target.control && !evt.target.control.disabled) {\r\n this._viewModel().DaysOfWeek.forEach(day => {\r\n day.Hovered(false);\r\n });\r\n }\r\n }\r\n\r\n HoverOnWeekClose(evt) {\r\n if (evt.type === \"mouseover\") {\r\n this._viewModel().DaysOfWeek.forEach(day => {\r\n if (!this._viewModel().ClosedWeek) {\r\n day.Hovered(moment().diff(moment(day.Date)) >= 0)\r\n }\r\n });\r\n }\r\n }\r\n\r\n HoverOutWeekClose(evt) {\r\n if (evt.type === \"mouseout\") {\r\n this._viewModel().DaysOfWeek.forEach(day => day.Hovered(false));\r\n }\r\n }\r\n\r\n OnAllowedEntityClick(entity: AllowedEntity) {\r\n const rowEditor = _.find(this._rowEditors(), editor => editor.IsNewState);\r\n\r\n if (!rowEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === rowEditor.Guid);\r\n\r\n this.SearchSubjectForEntity(entity, reservation);\r\n }\r\n\r\n SelectSubjectMode(reservation: Reservation) {\r\n reservation.Subject(Subject.NotSpecified());\r\n }\r\n\r\n private UserSelected(user: UserViewModel) {\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private GetNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n if (this._settings.SubjectEntityId === null) {\r\n deferred.resolve(null);\r\n } else {\r\n this.RequestNewReservationSubject().always(subject => deferred.resolve(subject))\r\n }\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private RequestNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n const subjectIsAllowed = _.any(this._viewModel().AllowedEntities, e => e.Id === this._settings.SubjectEntityId);\r\n if (!subjectIsAllowed) {\r\n deferred.resolve(null);\r\n } else {\r\n TimeWritingStore.GetSubject(this._settings.SubjectEntityId, this._settings.SubjectRecordId)\r\n .then(record => {\r\n const nameField = _.find<any>((<any>record).Fields, field => field.FieldName.toUpperCase() === \"NAME\");\r\n const subject = new Subject({\r\n EntityId: this._settings.SubjectEntityId,\r\n EntityName: this._settings.SubjectEntityName,\r\n SubjectId: this._settings.SubjectRecordId,\r\n SubjectName: nameField.FieldValue,\r\n Icon: this._settings.SubjectEntityIcon\r\n });\r\n deferred.resolve(subject);\r\n })\r\n .fail(() => deferred.resolve(null));\r\n }\r\n return deferred.promise();\r\n }\r\n\r\n private CancelNewReservation(rowEditor: RowEditor) {\r\n const rowEditorIndex = this._rowEditors.indexOf(rowEditor);\r\n this._rowEditors.splice(rowEditorIndex, 1);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private CancelReservationChanges(rowEditor: RowEditor) {\r\n rowEditor.CancelChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadData(date: Date, userId: number): P.Promise<TimeWritingReportResponseModel> {\r\n return TimeWritingStore.GetDay({\r\n ControlId: this._settings.ControlId,\r\n TimeTableId: this._settings.EntityId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId,\r\n Date: moment(date).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format(),\r\n UserId: userId,\r\n });\r\n }\r\n\r\n private RenderData(model: TimeWritingReportResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n this.InitAllowedEntities(model.DayReports[0]);\r\n const viewModel = DayMappingProfile.OnViewModel(model.DayReports[0], model.WeekReports[0]);\r\n\r\n viewModel.Date = this._state().Date;\r\n viewModel.Day = DAYS_OF_WEEK[this._state().Date.getDay()];\r\n viewModel.Year = this._state().Year;\r\n viewModel.Week = this._state().Week;\r\n viewModel.Users = users;\r\n viewModel.TimeClosedDate = new Date();\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n const dayReport = model.DayReports[0];\r\n\r\n viewModel.HasDisapprovals = dayReport.HasDisapprovals;\r\n\r\n for (const reservation of viewModel.RequestedDate.Reservations()) {\r\n if (!_.any(reservation.OptionalData)) {\r\n this._settings.CustomFields.forEach(field => reservation.OptionalData.push(new OptionalFieldData({\r\n FieldName: field.Name,\r\n FieldValue: ko.observable(null),\r\n FieldType: field.FieldTypeName,\r\n Translations: ko.observableArray([])\r\n })));\r\n }\r\n }\r\n\r\n this._isFutureDay(this.IsFuture());\r\n this._isEditable(dayReport.Editable);\r\n this._viewState(ViewState.Read);\r\n this._rowEditors([]);\r\n this.InitRowEditors(viewModel);\r\n this._initialDateSet = true;\r\n this._viewModel(viewModel);\r\n\r\n if (dayReport.GlobalSettings.FreezeTime === undefined) {\r\n new Notifier().Warning(NOTIFICATIONS.FREEZE_TIME_NOT_SPECIFIED);\r\n }\r\n this.UpdateWeekCheckbox();\r\n BlockUI.Unblock();\r\n }\r\n\r\n GetShortDateFormat() {\r\n return DATE_FORMATS.SHORT_DATE['Format'];\r\n }\r\n\r\n private GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n private IsFuture() {\r\n return moment().diff(moment(this._state().Date)) < 0;\r\n }\r\n\r\n private RenderStaticData() {\r\n const viewModel = new DayDataViewModel();\r\n viewModel.Date = this._state().Date;\r\n viewModel.Day = DAYS_OF_WEEK[this._state().Date.getDay()];\r\n viewModel.Year = this._state().Year;\r\n viewModel.Week = this._state().Week;\r\n viewModel.Users = new UsersViewModel();\r\n\r\n this._isEditable(false);\r\n this._rowEditors([]);\r\n this._initialDateSet = true;\r\n this._viewModel(viewModel);\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private ShowWarning(message: string) {\r\n new Notifier().Warning(message);\r\n }\r\n\r\n private ShowNotification(message: string) {\r\n new Notifier().Success(message);\r\n }\r\n\r\n private GetCustomFieldNames() {\r\n return this._settings.CustomFields.map(field => {\r\n return {Name: field.FieldNameTranslation, Type: field.FieldTypeName}\r\n });\r\n }\r\n\r\n private InitRowEditors(viewModel: DayDataViewModel) {\r\n viewModel.RequestedDate.Reservations().forEach(reservation => this.AddRowEditor(reservation, viewModel.LookupFields, viewModel.AllowedEntities, RowEditorState.Read, viewModel));\r\n }\r\n\r\n private AddRowEditor(reservation: Reservation, lookupFields: LookupField[], allowedEntities: AllowedEntity[], state: RowEditorState, viewModel: DayDataViewModel) {\r\n const rowEditor = this.GenerateRowEditor(reservation, lookupFields, allowedEntities, viewModel);\r\n rowEditor.SetState(state);\r\n this._rowEditors.push(rowEditor);\r\n }\r\n\r\n private GenerateOptionalCellEditor(field: AttachedFieldModel, reservation: Reservation, lookupFields: LookupField[], viewModel: DayDataViewModel): CellEditor {\r\n if (this._isNewState()) {\r\n const defaultValue = viewModel.DefaultValues.find(item => item.Name === field.Name) || new DefaultValue();\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n const dropdownFieldValue = +defaultValue.DefaultValue;\r\n const dropdownValue = _.find(dropdownField.Values, value => value.FieldValue === dropdownFieldValue);\r\n reservation.SetOptionalValue(field.Name, dropdownValue);\r\n } else {\r\n reservation.SetOptionalValue(field.Name, defaultValue.DefaultValue);\r\n }\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new DropdownCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n const multiSelectField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new MultiSelectCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(multiSelectField.Values),\r\n RequiresSearch: multiSelectField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: MultiselectViewCellTemplate,\r\n EditTemplate: MultiselectEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Integer) {\r\n return new IntegerCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: IntegerViewCellTemplate,\r\n EditTemplate: IntegerEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return new DecimalCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DecimalViewCellTemplate,\r\n EditTemplate: DecimalEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n Size: field.Size,\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n return new DateTimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n return new DateCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Time) {\r\n return new TimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.TimeSpan) {\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n return new ValueCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: YesNoViewCellTemplate,\r\n EditTemplate: YesNoEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description'\r\n });\r\n }\r\n\r\n return new TextCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TextViewCellTemplate,\r\n EditTemplate: TextEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && !!value\r\n },\r\n Size: field.Size,\r\n Translations: reservation.GetTranslations(field.Name),\r\n IsTranslate: _.some(viewModel.TranslatedFields, item => item.Id === field.Id)\r\n });\r\n }\r\n\r\n private GenerateRowEditor(reservation: Reservation, lookupFields: LookupField[], allowedEntities: AllowedEntity[], viewModel: DayDataViewModel) {\r\n const customFieldCellEditors = this._settings.CustomFields.map(field => this.GenerateOptionalCellEditor(field, reservation, lookupFields, viewModel));\r\n\r\n const hourKindLookupField = _.find(lookupFields, f => f.Name === \"F_HOURKIND\");\r\n const ovwLookupField = _.find(lookupFields, f => f.Name === \"F_OVERWORKINDICATOR\");\r\n const payLookupField = _.find(lookupFields, f => f.Name === \"F_PAYMENTINDICATOR\");\r\n\r\n return new RowEditor(reservation.Guid,\r\n null,\r\n lookupFields,\r\n new SubjectCellEditor({\r\n Name: \"Subject\",\r\n Label: this._labels.SUBJECT,\r\n Value: reservation.Subject,\r\n ViewTemplate: SubjectViewCellTemplate,\r\n EditTemplate: reservation.Subject().NotSpecified ? SelectableSubjectEditTemplate : SelectedSubjectEditTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n OnEntityClick: this.OnAllowedEntityClick.bind(this),\r\n OnEntityIconClick: this.SelectSubjectMode.bind(this, reservation),\r\n OnSubjectClick: this.SearchSubject.bind(this, reservation),\r\n AllowedEntities: allowedEntities,\r\n IsNewState: this._isNewState,\r\n RequiredRule: {\r\n Validate: value => !value.NotSpecified,\r\n Message: this._labels.SELECT__RESERVATION_SUBJECT\r\n },\r\n ClassName: 'subject'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"Start\",\r\n Label: this._labels.FROM,\r\n Value: reservation.Start,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isFromVisible,\r\n ClassName: 'from'\r\n }),\r\n new CellEditor({\r\n Name: \"-\",\r\n Label: \"\",\r\n ViewTemplate: DashViewCellTemplate,\r\n Visible: this._isDashVisible,\r\n ClassName: 'dash'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"To\",\r\n Label: this._labels.TO,\r\n Value: reservation.To,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isToVisible,\r\n ClassName: 'to'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"TimeSpent\",\r\n Label: this._labels.TIME,\r\n Value: reservation.TimeSpent,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isDurationVisible,\r\n ClassName: 'duration'\r\n }),\r\n new DescriptionCellEditor({\r\n Name: \"Description\",\r\n Label: this._labels.DESCRIPTION,\r\n Value: reservation.Description,\r\n ViewTemplate: DescriptionViewCellTemplate,\r\n EditTemplate: DescriptionEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n RequiredRule: {\r\n Validate: value => value && value.length > 0,\r\n Message: this._labels.SPECIFY_RESERVATION_DESCRIPTION\r\n },\r\n MinLengthRule: {\r\n Validate: value => value.length >= 3,\r\n Message: this._labels.DESCRIPTION_MIN_LENGTH.replace('{minLengthValidation}', '3')\r\n },\r\n MaxLenghtRule: {\r\n Validate: value => value.length <= 80,\r\n Message: this._labels.DESCRIPTION_MAX_LENGTH.replace('{maxLengthValidation}', '80')\r\n },\r\n ClassName: 'description'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Hour\",\r\n Label: this._labels.HOUR,\r\n Value: reservation.HourKind,\r\n Options: ko.observableArray(hourKindLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: hourKindLookupField.ValTableId,\r\n ValFieldId: hourKindLookupField.ValFieldId,\r\n ValFieldTypeName: hourKindLookupField.ValFieldTypeName,\r\n ValFieldFormatName: hourKindLookupField.ValFieldFormatName,\r\n ValFieldSize: hourKindLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isHourVisible,\r\n ClassName: 'hour'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Ovw\",\r\n Label: this._labels.OVW,\r\n Value: reservation.Ovw,\r\n Options: ko.observableArray(ovwLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: ovwLookupField.ValTableId,\r\n ValFieldId: ovwLookupField.ValFieldId,\r\n ValFieldTypeName: ovwLookupField.ValFieldTypeName,\r\n ValFieldFormatName: ovwLookupField.ValFieldFormatName,\r\n ValFieldSize: ovwLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isOvwVisible,\r\n ClassName: 'ovw'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Pay\",\r\n Label: this._labels.PAY,\r\n Value: reservation.Pay,\r\n Options: ko.observableArray(payLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: payLookupField.ValTableId,\r\n ValFieldId: payLookupField.ValFieldId,\r\n ValFieldTypeName: payLookupField.ValFieldTypeName,\r\n ValFieldFormatName: payLookupField.ValFieldFormatName,\r\n ValFieldSize: payLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isPayVisible,\r\n ClassName: 'pay'\r\n }),\r\n ...customFieldCellEditors,\r\n new ActionsCellEditor({\r\n Name: \"Actions\",\r\n Label: this._labels.ACTIONS,\r\n ViewTemplate: ActionsViewCellTemplate,\r\n EditTemplate: ActionsEditCellTemplate,\r\n Visible: this._isEditable() ? this._isReadState : ko.observable(false),\r\n Accepted: reservation.Accepted,\r\n OnEditReservation: this.OnReservationEdit.bind(this, reservation.Guid),\r\n OnDeleteReservation: this.OnReservationDelete.bind(this, reservation.Guid),\r\n OnAcceptReservation: this.OnReservationAccept.bind(this, reservation.Guid),\r\n OnSaveReservationChanges: this.OnSaveReservationChanges.bind(this),\r\n OnCancelReservationChanges: this.OnCancelReservationChanges.bind(this, reservation.Guid),\r\n TimeStatus: reservation.TimeStatus(),\r\n ClassName: 'actions',\r\n })\r\n );\r\n }\r\n\r\n private GetLastReservationTime(): Date {\r\n const reservations = this._viewModel().RequestedDate.Reservations();\r\n const lastReservation = _.last(reservations);\r\n\r\n if (lastReservation) {\r\n const lastReservationTime = lastReservation.To();\r\n return lastReservationTime;\r\n }\r\n\r\n let startingDateTime = this._viewModel().StartBySchedule;\r\n\r\n //If startingTime by schedule is in future\r\n if (startingDateTime && startingDateTime > new Date()) {\r\n startingDateTime = null;\r\n }\r\n\r\n if (!startingDateTime) {\r\n const defaultStartingValue = this._viewModel().DefaultValues.find(item => item.Name === 'START');\r\n startingDateTime = defaultStartingValue && defaultStartingValue.DefaultValue && moment(FormatConverter.CorrectTimezone(defaultStartingValue.DefaultValue)).toDate();\r\n }\r\n\r\n if (startingDateTime) {\r\n const hours = moment(startingDateTime).hours();\r\n const minutes = moment(startingDateTime).minutes();\r\n const reservationTime = moment().hours(hours).minutes(minutes).seconds(0);\r\n return reservationTime.toDate();\r\n }\r\n\r\n const defaultReservationTime = moment(this._state().Date).hours(8).minutes(0).seconds(0).toDate();\r\n return defaultReservationTime;\r\n }\r\n\r\n private SearchSubject(reservation: Reservation) {\r\n const subject = reservation.Subject();\r\n\r\n const searchScreen = new SearchScreen({\r\n EntityId: subject.EntityId,\r\n SearchTerm: \"\",\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubject(eventArgs.data, reservation, searchScreen));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SearchSubjectForEntity(entity: AllowedEntity, reservation: Reservation) {\r\n const searchScreen = new SearchScreen({\r\n ConditionToggler: true,\r\n ControlId: this._settings.ControlId,\r\n EntityId: entity.Id,\r\n SearchTerm: \"\",\r\n ButtonAdd: false,\r\n CloseAfterSelectingRecord: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubjectForEntity(eventArgs.data, entity, reservation, searchScreen));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SelectSubject(subjectData: any, reservation: Reservation, searchScreen: SearchScreen) {\r\n const oldSubject = reservation.Subject();\r\n\r\n const newSubject = new Subject({\r\n EntityId: oldSubject.EntityId,\r\n EntityName: oldSubject.EntityName,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: oldSubject.Icon\r\n });\r\n\r\n TimeWritingStore.ValidateTimeWritingSubject(subjectData.TableId, newSubject.SubjectId)\r\n .then(validationModel => {\r\n if (validationModel.IsValid) {\r\n reservation.Subject(newSubject);\r\n searchScreen.Close();\r\n } else {\r\n const allowedTypes = validationModel.LowestLevelTypes.map(item => item.Name).join(', ');\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_FOLLOWING_TYPES_ARE_ALLOWED.replace('{LowestLevelTypes}', allowedTypes));\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private SelectSubjectForEntity(subjectData: any, entity: AllowedEntity, reservation: Reservation, searchScreen: SearchScreen) {\r\n const newSubject = new Subject({\r\n EntityId: entity.Id,\r\n EntityName: entity.Name,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: entity.Icon\r\n });\r\n\r\n TimeWritingStore.ValidateTimeWritingSubject(subjectData.TableId, newSubject.SubjectId)\r\n .then(validationModel => {\r\n if (validationModel.IsValid) {\r\n if (subjectData.Name) {\r\n reservation.Subject(newSubject);\r\n } else {\r\n BlockUI.Block();\r\n\r\n this.GetSelectedSubjectData(entity.Id, subjectData.RecordId)\r\n .always(() => BlockUI.Unblock())\r\n .then((subjectRecord: any) => {\r\n const nameField = subjectRecord.Fields.find(f => f.FieldName === 'NAME');\r\n if (nameField) {\r\n newSubject.SubjectName = nameField.FieldValue;\r\n reservation.Subject(newSubject);\r\n }\r\n });\r\n }\r\n searchScreen.Close();\r\n } else {\r\n const allowedTypes = validationModel.LowestLevelTypes.map(item => item.Name).join(', ');\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_FOLLOWING_TYPES_ARE_ALLOWED.replace('{LowestLevelTypes}', allowedTypes));\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private CreateReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.CreateReservation(reservation);\r\n }\r\n\r\n private AcceptReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.AcceptReservation(reservation);\r\n }\r\n\r\n private UpdateReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.UpdateReservation(reservation);\r\n }\r\n\r\n private DeleteReservation(reservation: DeleteReservationRequestModel) {\r\n return TimeWritingStore.DeleteReservation(reservation);\r\n }\r\n\r\n private CommitChanges(rowEditor: RowEditor) {\r\n rowEditor.SaveChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n this._viewState(ViewState.Read);\r\n this.ShowNotification(NOTIFICATIONS.CHANGES_APPLIED);\r\n }\r\n\r\n private SaveAndReload(rowEditor: RowEditor) {\r\n this.CommitChanges(rowEditor);\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private AskConfirmation(message: string, onConfirm: () => void, onDecline: () => void) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: message,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: this._labels.YES,\r\n TextDecline: this._labels.CANCEL\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => onConfirm());\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => onDecline());\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private AskSaveConfirmation(onConfirm: () => void, onDecline: () => void) {\r\n this.AskConfirmation(this._confirmations.SAVE_CHANGES, onConfirm, onDecline);\r\n }\r\n\r\n private AskDeleteConfirmation(onConfirm: () => void) {\r\n this.AskConfirmation(this._confirmations.ARE_YOUR_SURE_TO_DELETE_RECORDS, onConfirm, () => {\r\n });\r\n }\r\n\r\n private GetActiveRow() {\r\n return _.find(this._rowEditors(), (rowEditor: RowEditor) => rowEditor.IsNewState || rowEditor.IsEditState);\r\n }\r\n\r\n private SaveReservation(): P.Promise<RowEditor> {\r\n\r\n const result = P.defer<RowEditor>();\r\n\r\n const rowEditor = this.GetActiveRow();\r\n\r\n if (!rowEditor) {\r\n this._viewState(ViewState.Read);\r\n result.reject({message: NOTIFICATIONS.ROW_EDITOR_NOT_FOUND});\r\n return result.promise();\r\n }\r\n\r\n if (!rowEditor.Validate()) {\r\n result.reject({message: NOTIFICATIONS.FILL_REQUIRED_DATA});\r\n return result.promise();\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === rowEditor.Guid);\r\n if (this._state().Date) {\r\n reservation.ChangeDate(this._state().Date);\r\n }\r\n\r\n const endTime = reservation.Start().getHours() +\r\n reservation.Start().getMinutes() / 60 +\r\n reservation.TimeSpent().getHours() +\r\n reservation.TimeSpent().getMinutes() / 60;\r\n\r\n if (endTime > 24) {\r\n result.reject({message: NOTIFICATIONS.DURATION_IS_TOO_LONG});\r\n return result.promise();\r\n }\r\n\r\n const updateModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n updateModel.TimeTableId = this._settings.EntityId;\r\n updateModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n const isNewReservation = rowEditor.IsNewState;\r\n\r\n if (isNewReservation) {\r\n this.CreateReservation(updateModel)\r\n .then(() => result.resolve(rowEditor))\r\n .fail(error => result.reject({message: error.message}));\r\n } else {\r\n this.UpdateReservation(updateModel)\r\n .then(() => result.resolve(rowEditor))\r\n .fail(error => result.reject({message: error.message}));\r\n }\r\n\r\n return result.promise();\r\n }\r\n\r\n private GetSelectedSubjectData(entityId: number, recordId: number) {\r\n return RecordStore.GetRecord({TableId: entityId, RecordId: recordId})\r\n .fail((error) => {\r\n if (error.requestError === SERVER_REQUEST_ERRORS.NOT_FOUND) {\r\n new Notifier().Warning(LABELS.NO_ACCESS_LABEL);\r\n } else if (error.requestError === SERVER_REQUEST_ERRORS.INTERNAL) {\r\n new Notifier().Failed('Error getting record');\r\n }\r\n });\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <!-- ko if: Accepted --> <!-- ko if: TimeStatus == $parent._timeStatus.Approved --> <a href=\\\"javascript:void(0)\\\" class=\\\"btn btn btn-success\\\"> <i class=\\\"fa fa-lock\\\"></i> </a> <!-- /ko --> <!-- ko if: TimeStatus === $parent._timeStatus.Disapproved || TimeStatus === $parent._timeStatus.Booked --> <a href=\\\"#\\\" class=\\\"btn btn-info\\\" data-bind=\\\"visible: Visible, click: OnEditReservation, tooltip:{content: $parent._labels.EDIT}\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"visible: Visible, click: OnDeleteReservation, tooltip:{content: $parent._labels.DELETE}\\\"> <i class=\\\"fa fa-trash\\\"></i> </a> <!-- /ko --> <!-- ko if: TimeStatus === $parent._timeStatus.Disapproved --> <div class=\\\"timewriting-table-column__disapproved-icon\\\"> <i class=\\\"fa fa-clock-o icon-red icon-big\\\" aria-hidden=\\\"true\\\" data-bind=\\\"attr:{ title: $parent._labels.RECOLRD_IS_DISAP}\\\"></i> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: Accepted === false --> <a href=\\\"#\\\" class=\\\"btn btn-warning accept\\\" data-bind=\\\"click: OnAcceptReservation\\\"> <!-- ko text: $parent._labels.ACCEPT --><!-- /ko --> </a> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <a href=\\\"#\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnSaveReservationChanges, tooltip:{content: $parent._labels.SAVE}\\\"> <i class=\\\"fa fa-save\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancelReservationChanges, tooltip:{content: $parent._labels.CANCEL}\\\"> <i class=\\\"fa fa-close\\\"></i> </a> <!-- ko if: TimeStatus === $parent._timeStatus.Disapproved --> <div class=\\\"timewriting-table-column__disapproved-icon\\\"> <i class=\\\"fa fa-clock-o icon-red icon-big\\\" aria-hidden=\\\"true\\\" data-bind=\\\"attr: { title: $parent._labels.RECOLRD_IS_DISAP}\\\"></i> </div> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\n\r\nimport {AllowedEntity, DayOfWeekStatistics, LookupField, Reservation, TranslatedField} from './DayDataViewModel';\r\nimport {UsersViewModel} from './UsersViewModel';\r\nimport {DATE_FORMATS} from '../../../../../Constants/DateTimeFormats';\r\n\r\nexport class WeekDataViewModel {\r\n Week: number;\r\n Days: DayOfWeekViewModel[];\r\n DaysOfWeek: DayOfWeekStatistics[];\r\n Users: UsersViewModel;\r\n AllowedEntities: AllowedEntity[];\r\n LookupFields: LookupField[];\r\n TranslatedFields: TranslatedField[];\r\n\r\n constructor() {\r\n this.Days = [];\r\n this.DaysOfWeek = [];\r\n this.Users = null;\r\n this.AllowedEntities = [];\r\n this.TranslatedFields = [];\r\n }\r\n\r\n get WeekNumber() {\r\n return `${this.Week}`;\r\n }\r\n\r\n get WeekDescription() {\r\n const formattedDate = moment(this.DaysOfWeek[0].Date).format(DATE_FORMATS.LONG_DATE_SHORT_WEEK.MomentFormat);\r\n return `${formattedDate}`;\r\n }\r\n\r\n get Booked() {\r\n const newSum = (sum: number, booked: any) => Math.round((sum + booked) * 100) / 100;\r\n this.IsWeekend();\r\n return this.DaysOfWeek.reduce((sum: number, current: DayOfWeekStatistics) => newSum(sum, current.Booked), 0);\r\n }\r\n\r\n get SelectedUser() {\r\n return this.Users.SelectedUser();\r\n }\r\n\r\n get Reservations() {\r\n return _.chain(this.Days).map(day => day.Reservations).flatten().value();\r\n }\r\n\r\n IsActive(day: DayOfWeekStatistics) {\r\n return day.Date.getDate() === new Date().getDate();\r\n }\r\n\r\n IsNormBooked(day: DayOfWeekStatistics) {\r\n return day.Booked >= 8;\r\n }\r\n\r\n IsWeekend() {\r\n _.each(this.DaysOfWeek,\r\n day => {\r\n if (moment(day.Date).isoWeekday() === 6 || moment(day.Date).isoWeekday() === 7) {\r\n day.Weekend = true;\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport class DayOfWeekViewModel {\r\n Day: string;\r\n Reservations: Reservation[];\r\n\r\n constructor() {\r\n this.Reservations = [];\r\n }\r\n}","import * as moment from 'moment';\r\n\r\nimport {TimeWritingReportResponseModel} from '../../Models/Store/Day/Response/TimeWritingReportResponseModel';\r\nimport {DayOfWeekViewModel, WeekDataViewModel} from '../../Models/View/WeekDataViewModel';\r\nimport {DayReportResponseModel} from '../../Models/Store/Day/Response/DayReportResponseModel';\r\nimport {ReservationMappings} from '../Day/ReservationMappings';\r\nimport {EntityMappings} from '../Day/EntityMappings';\r\nimport {FIELD_TYPES} from '../../../../../Constant';\r\nimport {LookupFieldMappings} from '../Common/LookupFieldMappings';\r\nimport {TranslationManager} from '../../../../Translation/TranslationManager';\r\nimport {TranslatedField} from '../../Models/View/DayDataViewModel';\r\nimport {DayMappings} from '../Day/DayMappings';\r\n\r\nexport class WeekMappingProfile {\r\n static OnViewModel(model: TimeWritingReportResponseModel): WeekDataViewModel {\r\n const viewModel = new WeekDataViewModel();\r\n\r\n viewModel.Days = model.DayReports.map(day => DayOfWeekMappingProfile.OnViewModel(day));\r\n viewModel.DaysOfWeek = model.WeekReports[0].DayReports.map(day => DayMappings.OnViewModel(day));\r\n\r\n viewModel.AllowedEntities = model.DayReports[0].GlobalSettings.AllowedEntities.map(entity => EntityMappings.OnViewModel(entity));\r\n viewModel.LookupFields = model.DayReports[0].Fields\r\n .filter(field => field.TypeName === FIELD_TYPES.Lookup || field.TypeName === FIELD_TYPES.MultiSelect)\r\n .map(field => LookupFieldMappings.OnViewModel(field));\r\n viewModel.TranslatedFields = model.DayReports[0].Fields\r\n .filter(field => field.IsTranslate)\r\n .map(field => new TranslatedField({\r\n Id: field.Id,\r\n }));\r\n\r\n return viewModel;\r\n }\r\n}\r\n\r\nexport class DayOfWeekMappingProfile {\r\n static OnViewModel(model: DayReportResponseModel): DayOfWeekViewModel {\r\n const viewModel = new DayOfWeekViewModel();\r\n\r\n viewModel.Day = moment(model.DayDate).locale(TranslationManager.Instance.GetCurrentLanguage().ShortName).format('ddd');\r\n viewModel.Reservations = model.DayReservations.Reservations.map(reservation => ReservationMappings.OnViewModel(reservation));\r\n\r\n return viewModel;\r\n }\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as moment from \"moment\";\r\nimport * as _ from \"underscore\";\r\n\r\n//Constants\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Templates\r\nimport WeekTemplate from \"Core/Components/Controls/TimeWriting/Templates/WeekTemplate.html\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\n\r\n//Settings\r\nimport {IWeekViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Week/IWeekViewSettings\";\r\n\r\n//TextColumn\r\nimport TextViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html\";\r\nimport TextEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html\";\r\n\r\nimport DescriptionViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html\";\r\nimport DescriptionEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html\";\r\n\r\n//Integer\r\nimport IntegerViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html\";\r\nimport IntegerEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html\";\r\n\r\n//Decimal\r\nimport DecimalViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html\";\r\nimport DecimalEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html\";\r\n\r\n//Subject\r\nimport SubjectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html\";\r\n//Dropdown\r\nimport DropdownViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html\";\r\nimport DropdownEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html\";\r\n\r\n//Multiselect\r\nimport MultiselectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/View.html\";\r\nimport MultiselectEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Multiselect/Edit.html\";\r\n\r\n//DateTime\r\nimport DateTimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html\";\r\nimport DateTimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html\";\r\n\r\n//Time\r\nimport TimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html\";\r\nimport TimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html\";\r\n\r\n//YesNo\r\nimport YesNoViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html\";\r\nimport YesNoEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html\";\r\n\r\n//Dash\r\nimport DashViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n//User\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\n//Store models\r\nimport {TimeWritingReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/TimeWritingReportResponseModel\";\r\n\r\n//ViewModels\r\nimport {\r\n AllowedEntity,\r\n DayDataViewModel, DefaultValue,\r\n LookupField,\r\n OptionalFieldData,\r\n Reservation,\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\nimport {UsersViewModel, UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\n//Mappings\r\nimport {DayMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile\";\r\nimport {UsersMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {ViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/ViewState\";\r\n\r\n//Utils\r\nimport {\r\n CellEditor, DateCellEditor,\r\n DateTimeCellEditor,\r\n DecimalCellEditor,\r\n DescriptionCellEditor,\r\n DropdownCellEditor,\r\n IntegerCellEditor,\r\n MultiSelectCellEditor,\r\n SubjectCellEditor, TextCellEditor, TimeCellEditor,\r\n ValidationCellEditor, ValueCellEditor, WeekRowEditor\r\n} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\n\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {WeekMappingProfile} from '../../Mappings/Week/WeekMappingProfile';\r\nimport {WeekDataViewModel} from '../../Models/View/WeekDataViewModel';\r\nimport {DateTime} from '../../Utils/DateTime';\r\nimport {DATE_FORMATS} from '../../../../../Constants/DateTimeFormats';\r\n\r\nexport class WeekView extends TimeWritingView {\r\n private _state: KnockoutObservable<State>;\r\n private _currentDate: Date;\r\n private _isPastWeek: KnockoutComputed<boolean>;\r\n private _viewModel: KnockoutObservable<WeekDataViewModel>;\r\n\r\n private _viewState: KnockoutObservable<ViewState>;\r\n private _isReadState: KnockoutComputed<boolean>;\r\n private _isEditState: KnockoutComputed<boolean>;\r\n private _isNewState: KnockoutComputed<boolean>;\r\n private _isFutureDay: KnockoutObservable<boolean>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _rowEditors: KnockoutObservableArray<WeekRowEditor>;\r\n private _compareCurrentDate: Date;\r\n\r\n private _isFromVisible: KnockoutObservable<boolean>;\r\n private _isDashVisible: KnockoutObservable<boolean>;\r\n private _isToVisible: KnockoutObservable<boolean>;\r\n private _isDurationVisible: KnockoutObservable<boolean>;\r\n private _isHourVisible: KnockoutObservable<boolean>;\r\n private _isOvwVisible: KnockoutObservable<boolean>;\r\n private _isPayVisible: KnockoutObservable<boolean>;\r\n\r\n private _initialDateSet = true;\r\n\r\n private _countOfVisibleColumns: number;\r\n\r\n private _groupedRows: KnockoutObservable<any>;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor(private _settings: IWeekViewSettings) {\r\n super();\r\n this._state = ko.observable(new State({Date: new Date()}));\r\n this._currentDate = new Date();\r\n this._isPastWeek = ko.computed(() => DateTime.GetWeekYear(this._state().Date) < DateTime.GetWeekYear(this._currentDate) || DateTime.GetWeekNumber(this._state().Date) < DateTime.GetWeekNumber(this._currentDate), this);\r\n this._viewModel = ko.observable(null);\r\n\r\n this._isFutureDay = ko.observable(false);\r\n this._isEditable = ko.observable(false);\r\n this._viewState = ko.observable(ViewState.Read);\r\n this._rowEditors = ko.observableArray([]);\r\n this._compareCurrentDate = this._currentDate;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._groupedRows = ko.observable(null);\r\n this._isReadState = ko.computed(() => this._viewState() === ViewState.Read, this);\r\n this._isEditState = ko.computed(() => this._viewState() === ViewState.Edit, this);\r\n this._isNewState = ko.computed(() => this._viewState() === ViewState.New, this);\r\n\r\n const visibleFields = this._settings.Properties.Groups.find(group => group.Name === \"VisibleFields\").Properties;\r\n const dashVisibility = visibleFields.find(field => field.Name === \"START\").Value && visibleFields.find(field => field.Name === \"TO\").Value;\r\n\r\n this._countOfVisibleColumns = visibleFields.filter(f => f.Value === true).length + dashVisibility + this._settings.CustomFields.length;\r\n\r\n this._isFromVisible = ko.observable(visibleFields.find(field => field.Name === \"START\").Value);\r\n this._isDashVisible = ko.observable(dashVisibility);\r\n this._isToVisible = ko.observable(visibleFields.find(field => field.Name === \"TO\").Value);\r\n this._isDurationVisible = ko.observable(visibleFields.find(field => field.Name === \"TIMESPENT\").Value);\r\n this._isHourVisible = ko.observable(visibleFields.find(field => field.Name === \"F_HOURKIND\").Value);\r\n this._isOvwVisible = ko.observable(visibleFields.find(field => field.Name === \"F_OVERWORKINDICATOR\").Value);\r\n this._isPayVisible = ko.observable(visibleFields.find(field => field.Name === \"F_PAYMENTINDICATOR\").Value);\r\n }\r\n\r\n Show({startDate, endDate}: { startDate: Date, endDate: Date }, userId?: number) {\r\n this._initialDateSet = true;\r\n this._compareCurrentDate.setHours(0, 0, 0, 0);\r\n this._state(new State({\r\n Date: startDate\r\n }));\r\n\r\n BlockUI.Block();\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n if (usersList) {\r\n this.LoadData(startDate, endDate, usersList.SelectedUser().Id)\r\n .then(model => this.RenderData(model, usersList))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n } else {\r\n const loadDataPromise = this.LoadData(startDate, endDate, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise)\r\n .then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id))\r\n .fail(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n OnPrevWeekClick() {\r\n const startDate = DateTime.GetPrevWeekStartDate(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n OnNextWeekClick() {\r\n const startDate = DateTime.GetNextWeekStartDate(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n OnYearClick() {\r\n this.Trigger(\"YearClicked\", {State: this._state(), UserId: this._viewModel().SelectedUser.Id});\r\n }\r\n\r\n OnWeekClick() {\r\n const startDate = DateTime.GetWeekStart(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n OnDayClick(date: Date) {\r\n this.Trigger(\"DayClicked\", {Date: date, UserId: this._viewModel().SelectedUser.Id});\r\n }\r\n\r\n SelectDate(date: Date) {\r\n if (!this._initialDateSet) {\r\n this.Trigger(\"DayClicked\", {Date: date, UserId: this._viewModel().SelectedUser.Id});\r\n } else {\r\n this._initialDateSet = false;\r\n }\r\n return true;\r\n }\r\n\r\n UserSelected(user: UserViewModel) {\r\n const startDate = DateTime.GetWeekStart(this._state().Date);\r\n const endDate = moment(startDate).add(7, 'days').toDate()\r\n this.Show({startDate, endDate});\r\n }\r\n\r\n private RenderData(model: TimeWritingReportResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n const viewModel = WeekMappingProfile.OnViewModel(model);\r\n\r\n viewModel.Users = users;\r\n viewModel.Week = this._state().Week;\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n for (const reservation of viewModel.Reservations) {\r\n if (!_.any(reservation.OptionalData)) {\r\n this._settings.CustomFields.forEach(field => reservation.OptionalData.push(new OptionalFieldData({\r\n FieldName: field.Name,\r\n FieldValue: ko.observable(null),\r\n FieldType: field.FieldTypeName,\r\n Translations: ko.observableArray([])\r\n })));\r\n }\r\n }\r\n this._isEditable(model.DayReports[0].Editable);\r\n this._viewState(ViewState.Read);\r\n this._rowEditors([]);\r\n this.InitRowEditors(viewModel);\r\n this._groupedRows(_.values(_.groupBy(this._rowEditors(), (rowEditor) => rowEditor.Day)));\r\n this._initialDateSet = true;\r\n this._viewModel(viewModel);\r\n\r\n if (model.DayReports[0].GlobalSettings.FreezeTime === undefined) {\r\n new Notifier().Warning(NOTIFICATIONS.FREEZE_TIME_NOT_SPECIFIED);\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n private InitRowEditors(viewModel: WeekDataViewModel) {\r\n for (let dayDescriptor of viewModel.Days) {\r\n dayDescriptor.Reservations\r\n .filter(res => res.Accepted)\r\n .forEach(reservation => this.AddRowEditor(reservation, dayDescriptor.Day, viewModel.LookupFields, viewModel.AllowedEntities, viewModel));\r\n }\r\n }\r\n\r\n private AddRowEditor(reservation: Reservation, day: string, lookupFields: LookupField[], allowedEntities: AllowedEntity[], viewModel: WeekDataViewModel) {\r\n const rowEditor = this.GenerateRowEditor(reservation, day, lookupFields, allowedEntities, viewModel);\r\n this._rowEditors.push(rowEditor);\r\n }\r\n\r\n private GenerateRowEditor(reservation: Reservation, day: string, lookupFields: LookupField[], allowedEntities: AllowedEntity[], viewModel: WeekDataViewModel) {\r\n const customFieldCellEditors = this._settings.CustomFields.map(field => this.GenerateOptionalCellEditor(field, reservation, lookupFields, viewModel));\r\n const hourKindLookupField = _.find(lookupFields, f => f.Name === \"F_HOURKIND\");\r\n const ovwLookupField = _.find(lookupFields, f => f.Name === \"F_OVERWORKINDICATOR\");\r\n const payLookupField = _.find(lookupFields, f => f.Name === \"F_PAYMENTINDICATOR\");\r\n\r\n return new WeekRowEditor(reservation.Guid,\r\n day,\r\n lookupFields,\r\n new SubjectCellEditor({\r\n Name: \"Subject\",\r\n Label: this._labels.SUBJECT,\r\n Value: reservation.Subject,\r\n ViewTemplate: SubjectViewCellTemplate,\r\n EditTemplate: null,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n OnEntityClick: null,\r\n OnEntityIconClick: null,\r\n OnSubjectClick: null,\r\n AllowedEntities: allowedEntities,\r\n IsNewState: this._isNewState,\r\n RequiredRule: {\r\n Validate: value => !value.NotSpecified,\r\n Message: this._labels.SELECT__RESERVATION_SUBJECT\r\n },\r\n ClassName: 'subject'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"Start\",\r\n Label: this._labels.FROM,\r\n Value: reservation.Start,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isFromVisible,\r\n ClassName: 'from'\r\n }),\r\n new CellEditor({\r\n Name: \"-\",\r\n Label: \"\",\r\n ViewTemplate: DashViewCellTemplate,\r\n Visible: this._isDashVisible,\r\n ClassName: 'dash'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"To\",\r\n Label: this._labels.TO,\r\n Value: reservation.To,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isToVisible,\r\n ClassName: 'to'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"TimeSpent\",\r\n Label: this._labels.TIME,\r\n Value: reservation.TimeSpent,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isDurationVisible,\r\n ClassName: 'duration'\r\n }),\r\n new DescriptionCellEditor({\r\n Name: \"Description\",\r\n Label: this._labels.DESCRIPTION,\r\n Value: reservation.Description,\r\n ViewTemplate: DescriptionViewCellTemplate,\r\n EditTemplate: DescriptionEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n RequiredRule: {\r\n Validate: value => value && value.length > 0,\r\n Message: this._labels.SPECIFY_RESERVATION_DESCRIPTION\r\n },\r\n MinLengthRule: {\r\n Validate: value => value.length >= 3,\r\n Message: this._labels.DESCRIPTION_MIN_LENGTH.replace('{minLengthValidation}', '3')\r\n },\r\n MaxLenghtRule: {\r\n Validate: value => value.length <= 80,\r\n Message: this._labels.DESCRIPTION_MAX_LENGTH.replace('{maxLengthValidation}', '80')\r\n },\r\n ClassName: 'description'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Hour\",\r\n Label: this._labels.HOUR,\r\n Value: reservation.HourKind,\r\n Options: ko.observableArray(hourKindLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: hourKindLookupField.ValTableId,\r\n ValFieldId: hourKindLookupField.ValFieldId,\r\n ValFieldTypeName: hourKindLookupField.ValFieldTypeName,\r\n ValFieldFormatName: hourKindLookupField.ValFieldFormatName,\r\n ValFieldSize: hourKindLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isHourVisible,\r\n ClassName: 'hour'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Ovw\",\r\n Label: this._labels.OVW,\r\n Value: reservation.Ovw,\r\n Options: ko.observableArray(ovwLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: ovwLookupField.ValTableId,\r\n ValFieldId: ovwLookupField.ValFieldId,\r\n ValFieldTypeName: ovwLookupField.ValFieldTypeName,\r\n ValFieldFormatName: ovwLookupField.ValFieldFormatName,\r\n ValFieldSize: ovwLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isOvwVisible,\r\n ClassName: 'ovw'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Pay\",\r\n Label: this._labels.PAY,\r\n Value: reservation.Pay,\r\n Options: ko.observableArray(payLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: payLookupField.ValTableId,\r\n ValFieldId: payLookupField.ValFieldId,\r\n ValFieldTypeName: payLookupField.ValFieldTypeName,\r\n ValFieldFormatName: payLookupField.ValFieldFormatName,\r\n ValFieldSize: payLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: this._isPayVisible,\r\n ClassName: 'pay'\r\n }),\r\n ...customFieldCellEditors,\r\n );\r\n }\r\n\r\n private GenerateOptionalCellEditor(field: AttachedFieldModel, reservation: Reservation, lookupFields: LookupField[], viewModel: WeekDataViewModel): CellEditor {\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new DropdownCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n const multiSelectField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new MultiSelectCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(multiSelectField.Values),\r\n RequiresSearch: multiSelectField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: MultiselectViewCellTemplate,\r\n EditTemplate: MultiselectEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Integer) {\r\n return new IntegerCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: IntegerViewCellTemplate,\r\n EditTemplate: IntegerEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return new DecimalCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DecimalViewCellTemplate,\r\n EditTemplate: DecimalEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n Size: field.Size,\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n return new DateTimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n return new DateCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Time) {\r\n return new TimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.TimeSpan) {\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n return new ValueCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: YesNoViewCellTemplate,\r\n EditTemplate: YesNoEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description'\r\n });\r\n }\r\n\r\n return new TextCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TextViewCellTemplate,\r\n EditTemplate: TextEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && !!value\r\n },\r\n Size: field.Size,\r\n Translations: reservation.GetTranslations(field.Name),\r\n IsTranslate: _.some(viewModel.TranslatedFields, item => item.Id === field.Id)\r\n });\r\n }\r\n\r\n private LoadData(startDate: Date, endDate: Date, userId: number): P.Promise<TimeWritingReportResponseModel> {\r\n return TimeWritingStore.GetDays({\r\n ControlId: this._settings.ControlId,\r\n TimeTableId: this._settings.EntityId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId,\r\n StartDate: moment(startDate).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format(),\r\n EndDate: moment(endDate).set({hours: 0, minutes: 0, seconds: 0}).utcOffset(0, true).format(),\r\n UserId: userId,\r\n }).always(() => BlockUI.Unblock());\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private GetCustomFieldNames() {\r\n return this._settings.CustomFields.map(field => {\r\n return {Name: field.FieldNameTranslation, Type: field.FieldTypeName}\r\n });\r\n }\r\n\r\n GetTemplate() {\r\n return WeekTemplate;\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private GetLocale() {\r\n return moment.locale();\r\n }\r\n\r\n GetShortDateFormat() {\r\n return DATE_FORMATS.SHORT_DATE['Format'];\r\n }\r\n}\r\n","// Module\nvar code = \"<div class=\\\"portlet box time-writing-control time-writing-control__week-view\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"time-writing-caption clearfix\\\"> <div class=\\\"container-fluid time-writing-header\\\"> <div class=\\\"row weekly-container\\\"> <div class=\\\"weekly-subcontainer weekly-subcontainer-left days-container\\\"> <!--Todo: create translations--> <!-- ko with: _viewModel --> <!-- ko foreach: DaysOfWeek --> <div class=\\\"day-column selected-day\\\"> <span class=\\\"navigation-link\\\" data-bind=\\\"click: $parents[1].OnDayClick.bind($parents[1], $data.Date),\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t text: DayDescription,\\r\\n\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t css: {'booked-norm-date': $parent.IsNormBooked($data)}\\\"> </span> <!--ko if: $parents[1].TimeCloseDateVisiblePerDay || $parents[1].TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parents[1].HoverOnDayClose.call($parents[1], event, $data.Date),\\r\\n mouseout: $parents[1].HoverOutDayClose.call($parents[1], event)\\r\\n },\\r\\n click: $parents[1].OnCloseDayClicked.bind($parents[1], event, $data.Date)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedDate, attr: {'id': DayDescription, 'disabled': $data.ClosedDate || $parents[1].IsFutureDate($data.Date)}\\\"/> <label data-bind=\\\"attr: {'for': DayDescription}, css: {'hovered': $data.Hovered }\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"week-hours selected-day\\\"> <div class=\\\"navigation-link selected\\\" data-bind=\\\"click: $parent.OnWeekClick.bind($parent)\\\"> <span data-bind=\\\"text: Booked\\\"></span> <span> <!--ko text: $parent._labels.WEEK --><!-- /ko--> </span> </div> <!--ko if: $parent.TimeCloseDateVisiblePerWeek || $parent.TimeCloseDateVisiblePerDayAndWeek--> <div class=\\\"custom\\\" data-bind=\\\"event: {\\r\\n mouseover: $parent.HoverOnWeekClose.call($parent, event),\\r\\n mouseout: $parent.HoverOutWeekClose.call($parent, event)\\r\\n },\\r\\n click: $parent.OnCloseWeekClicked.bind($parent, event)\\\"> <input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ClosedWeek, attr: {id: WeekId, disabled: $data.ClosedWeek || $parent._isDisableWeekBtn()}\\\"/> <label data-bind=\\\"attr: {for: WeekId}\\\"></label> </div> <!-- /ko --> </div> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-center week-container\\\"> <i class=\\\"glyphicon glyphicon-arrow-left prev-page\\\" data-bind=\\\"click: OnPrevWeekClick\\\"></i> <!-- ko with: _viewModel --> <div class=\\\"header-button\\\" style=\\\"position:relative;display:inline-block\\\"> <!-- ko with: $parent._state --> <input data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdatetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: Date,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tonUpdate: $parents[1].SelectDate.bind($parents[1]),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlocale: $parents[1].GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tformat: $parents[1].GetShortDateFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxDate: 'now'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"> <!-- /ko --> <!--ko text: $parent._labels.WEEK --><!-- /ko--> <!-- ko text: WeekNumber --> <!-- /ko --> (<span> <!-- ko text: WeekDescription --> <!-- /ko --> </span>) </div> <!-- /ko --> <!-- ko if: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right prev-page\\\" data-bind=\\\"click: OnNextWeekClick\\\"></i> <!-- /ko --> <!-- ko ifnot: _isPastWeek --> <i class=\\\"glyphicon glyphicon-arrow-right next-page disable\\\"></i> <!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> <div class=\\\"weekly-subcontainer yearwiew-container weekly-subcontainer-right\\\"> <span class=\\\"navigation-link yearwiew-link\\\" data-bind=\\\"click: OnYearClick\\\"> <span class=\\\"icon-magnifier\\\"></span> <!--ko text: _labels.YEARVIEW --><!-- /ko--> </span> </div> </div> </div> </div> </div> <div class=\\\"portlet-body\\\"> <!-- ko if: _isFutureDay() --> <div class=\\\"splash-message\\\" data-bind=\\\"text: _labels.WRITING_TIME_FOR_FUTURE_NOT_ALLOWED\\\"> </div> <!-- /ko --> <!-- ko ifnot: _isFutureDay() --> <div class=\\\"timewriting-day-table clearfix\\\"> <div class=\\\"timewriting-day-table__content\\\"> <table> <thead class=\\\"timewriting-table-header timewriting-table-rows clearfix\\\"> <th></th> <th></th> <th class=\\\"timewriting-table-column__name\\\"><!--ko text: _labels.SUBJECT --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isFromVisible\\\"> <!--ko text: _labels.FROM --><!-- /ko--></th> <th data-bind=\\\"visible: _isDashVisible\\\"></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isToVisible\\\"> <!--ko text: _labels.TO --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isDurationVisible\\\"> <!--ko text: _labels.DURATION --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isHourVisible\\\"> <!--ko text: _labels.HOUR --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isOvwVisible\\\"> <!--ko text: _labels.OVW --><!-- /ko--></th> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"visible: _isPayVisible\\\"> <!--ko text: _labels.PAY --><!-- /ko--></th> <!--ko foreach: GetCustomFieldNames()--> <th class=\\\"timewriting-table-column__name\\\" data-bind=\\\"css: $data.Type\\\"><!--ko text: $data.Name --> <!-- /ko--></th> <!--/ko--> <th class=\\\"timewriting-table-column__full-width\\\"></th> </thead> <!-- ko foreach: _groupedRows --> <tbody> <tr> <td data-bind=\\\"attr: { rowspan: $data.length * 2 + 1 }\\\" class=\\\"timewriting-table-column__dayName\\\"> <!--ko text: $data[0]._day--><!--/ko--> </td> </tr> <!-- ko foreach: $data --> <tr> <td rowspan=\\\"2\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name !== 'Description' && $data._cell.Name !== 'Actions' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <td class=\\\"timewriting-table-column__empty-cell\\\"></td> </tr> <tr class=\\\"timewriting-table-column__description\\\"> <td data-bind=\\\"attr: { colspan: $parents[1]._countOfVisibleColumns + 1 }\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> <!-- /ko --> </table> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {RowEditor} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\n\r\nexport class DisapprovedEditor {\r\n RowEditor: RowEditor;\r\n DisapprovedInfo: DisapprovedInfo;\r\n\r\n constructor(disapprovedInfo: DisapprovedInfo, rowEditor: RowEditor) {\r\n this.RowEditor = rowEditor;\r\n this.DisapprovedInfo = disapprovedInfo;\r\n }\r\n}\r\n\r\nexport class DisapprovedInfo {\r\n DisapprovedReason: string;\r\n Comment: string;\r\n BookedCounter: number;\r\n WeekNumber: number;\r\n Date: string;\r\n\r\n constructor(disapprovedReason: string, comment: string, bookedCounter: number, weekNumber: number, date: string) {\r\n this.DisapprovedReason = disapprovedReason;\r\n this.Comment = comment;\r\n this.BookedCounter = bookedCounter;\r\n this.WeekNumber = weekNumber;\r\n this.Date = date;\r\n }\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\n\r\nimport {UsersViewModel} from \"./UsersViewModel\";\r\nimport {AllowedEntity, LookupField, Reservation} from \"./DayDataViewModel\";\r\n\r\nexport class DisapprovedDataViewModel {\r\n AllowedEntities: AllowedEntity[];\r\n Users: UsersViewModel;\r\n BookedCounter: number;\r\n Comment: string;\r\n DisapprovedReason: string;\r\n RequestedDate: DisapprovedRequestedDate;\r\n LookupFields: LookupField[];\r\n\r\n constructor() {\r\n this.AllowedEntities = [];\r\n this.LookupFields = [];\r\n }\r\n\r\n get SelectedUser() {\r\n return this.Users.SelectedUser();\r\n }\r\n}\r\n\r\nexport class DisapprovedRequestedDate {\r\n Reservations: KnockoutObservableArray<DisapprovedReservation>;\r\n\r\n constructor() {\r\n this.Reservations = ko.observableArray([]);\r\n }\r\n}\r\n\r\nexport class DisapprovedReservation extends Reservation{\r\n Comment: string;\r\n DisapprovedReason: string;\r\n BookedCounter: number;\r\n Date: string;\r\n WeekNumber: number;\r\n}","import * as ko from \"knockout\";\r\n\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\n//Store models\r\nimport {DisapprovedReservationResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReservationResponseModel\";\r\n\r\n//Utils\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\n//ViewModels\r\nimport {DisapprovedReservation} from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\"\r\n\r\n//Mappings\r\nimport {SubjectMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Day/SubjectMappings\";\r\nimport {LookupValueMappings} from \"Core/Components/Controls/TimeWriting/Mappings/Common/LookupValueMappings\";\r\nimport {OptionalFieldData} from \"../../Models/View/DayDataViewModel\";\r\n\r\nexport class DisapprovedReservationMappings {\r\n static OnViewModel(model: DisapprovedReservationResponseModel): DisapprovedReservation {\r\n const viewModel = new DisapprovedReservation();\r\n\r\n viewModel.Id = model.Id;\r\n viewModel.AgendaId = model.AgendaId;\r\n viewModel.Start(new Date(FormatConverter.CorrectTimezone(model.Start.toString())));\r\n viewModel.TimeSpent(model.TimeSpent);\r\n viewModel.Subject(SubjectMappings.OnViewModel(model.Subject));\r\n viewModel.Description(model.Description);\r\n viewModel.Ovw(model.OverWorkIndicator ? LookupValueMappings.OnViewModel(model.OverWorkIndicator) : null);\r\n viewModel.Pay(model.PaymentIndicator ? LookupValueMappings.OnViewModel(model.PaymentIndicator) : null);\r\n viewModel.HourKind(model.HourKindIndicator ? LookupValueMappings.OnViewModel(model.HourKindIndicator) : null);\r\n viewModel.Accepted = model.Accepted;\r\n viewModel.BookedCounter = model.BookedCounter;\r\n viewModel.DisapprovedReason = model.DisapprovedReason;\r\n viewModel.Comment = model.Comment;\r\n\r\n // viewModel.OptionalData = model.OptionalData.map(field => new OptionalFieldData({\r\n // FieldName: field.FieldName,\r\n // FieldType:\r\n // field.FieldTypeName,\r\n // FieldValue: ko.observable(field.FieldTypeName === FIELD_TYPES.Lookup ? {\r\n // FieldValue: field.FieldValue,\r\n // DisplayValue: field.DisplayValue\r\n // } : field.FieldValue)\r\n // }\r\n // ));\r\n\r\n return viewModel;\r\n }\r\n}","//View models\r\nimport {DisapprovedRequestedDate} from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\";\r\n\r\n//Mappings\r\nimport { DisapprovedReservationMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedReservationMappings\";\r\n\r\n\r\nexport class DisapprovedRequestedDateMappings {\r\n static OnViewModel(model: any): DisapprovedRequestedDate {\r\n const viewModel = new DisapprovedRequestedDate();\r\n\r\n const reservations = model.Reservations.map(reservation => DisapprovedReservationMappings.OnViewModel(reservation));\r\n viewModel.Reservations(reservations);\r\n\r\n return viewModel;\r\n }\r\n}","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\n//Store models\r\nimport { DisapprovedReportResponseModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReportResponseModel\";\r\nimport { SaveReservationRequestModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport { DeleteReservationRequestModel } from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//View models\r\nimport { Reservation } from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\nimport { DisapprovedDataViewModel } from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\"\r\n\r\n//Mappings\r\nimport {DisapprovedRequestedDateMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedRequestedDateMappings\";\r\nimport { EntityMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Day/EntityMappings\";\r\nimport { ReservationMappings } from \"Core/Components/Controls/TimeWriting/Mappings/Day/ReservationMappings\";\r\nimport {LookupFieldMappings} from \"../Common/LookupFieldMappings\";\r\n\r\nexport class DisapprovedMappingProfile {\r\n static OnViewModel(model: DisapprovedReportResponseModel): DisapprovedDataViewModel {\r\n const viewModel = new DisapprovedDataViewModel();\r\n viewModel.RequestedDate = DisapprovedRequestedDateMappings.OnViewModel(model.DayReservations);\r\n viewModel.AllowedEntities = model.GlobalSettings.AllowedEntities.map(entity => EntityMappings.OnViewModel(entity));\r\n viewModel.LookupFields = model.Fields.filter(field => field.TypeName === FIELD_TYPES.Lookup ).map(field => LookupFieldMappings.OnViewModel(field));\r\n\r\n return viewModel;\r\n }\r\n\r\n static OnSaveModel(model: Reservation): SaveReservationRequestModel {\r\n return ReservationMappings.OnSaveModel(model);\r\n }\r\n\r\n static OnDeleteModel(model: Reservation): DeleteReservationRequestModel {\r\n return ReservationMappings.OnDeleteModel(model);\r\n }\r\n}","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\n//Common\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\n//User\r\nimport {UserManager} from \"User/UserManager\";\r\n\r\n//Components\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS, Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\n//Screens\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\n//Settings\r\nimport {IDayViewSettings} from \"Core/Components/Controls/TimeWriting/Views/Day/IDayViewSettings\";\r\n\r\nimport {\r\n RowEditor,\r\n CellEditor,\r\n ActionsCellEditor,\r\n ValueCellEditor,\r\n DropdownCellEditor,\r\n MultiSelectCellEditor,\r\n SubjectCellEditor,\r\n DescriptionCellEditor,\r\n State as RowEditorState,\r\n IntegerCellEditor,\r\n DecimalCellEditor,\r\n DateTimeCellEditor,\r\n DateCellEditor,\r\n TimeCellEditor,\r\n ValidationCellEditor\r\n} from \"Core/Components/Controls/TimeWriting/Utils/RowEditor\";\r\nimport {DisapprovedEditor, DisapprovedInfo} from \"Core/Components/Controls/TimeWriting/Utils/DisapprovedEditor\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\n\r\n//State\r\nimport {State} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {ViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/ViewState\";\r\n\r\n//ViewModels\r\nimport {\r\n AllowedEntity, LookupField,\r\n Reservation,\r\n Subject,\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DayDataViewModel\";\r\n\r\nimport {UsersViewModel, UserViewModel} from \"Core/Components/Controls/TimeWriting/Models/View/UsersViewModel\";\r\n\r\n//Stores\r\nimport {TimeWritingStore} from \"Core/Components/Controls/TimeWriting/Stores/TimeWritingStore\";\r\n\r\n//Store models\r\nimport {SaveReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/SaveReservationRequestModel\";\r\nimport {DeleteReservationRequestModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Request/DeleteReservationRequestModel\";\r\n\r\n//Mappings\r\nimport {DayMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/DayMappingProfile\";\r\nimport {UsersMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Day/UsersMappingProfile\";\r\n\r\n//Templates\r\nimport DisapprovedTemplate from \"Core/Components/Controls/TimeWriting/Templates/DisapprovedTemplate.html\";\r\n//TextColumn\r\nimport TextViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/View.html\";\r\nimport TextEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Text/Edit.html\";\r\n\r\nimport DescriptionViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/View.html\";\r\nimport DescriptionEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Description/Edit.html\";\r\n//Subject\r\nimport SubjectViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/View.html\";\r\nimport SelectableSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectableSubjectEdit.html\";\r\nimport SelectedSubjectEditTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Subject/SelectedSubjectEdit.html\";\r\n\r\n//Integer\r\nimport IntegerViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/View.html\";\r\nimport IntegerEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Integer/Edit.html\";\r\n\r\n//Decimal\r\nimport DecimalViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/View.html\";\r\nimport DecimalEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Decimal/Edit.html\";\r\n\r\n//DateTime\r\nimport DateTimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/View.html\";\r\nimport DateTimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/DateTime/Edit.html\";\r\n\r\n//YesNo\r\nimport YesNoViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/View.html\";\r\nimport YesNoEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/YesNo/Edit.html\";\r\n\r\n//Dropdown\r\nimport DropdownViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/View.html\";\r\nimport DropdownEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Base/Dropdown/Edit.html\";\r\n//Time\r\nimport TimeViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/View.html\";\r\nimport TimeEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Time/Edit.html\";\r\n//Actions\r\nimport ActionsViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Disapproved/View.html\";\r\nimport ActionsEditCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Actions/Disapproved/Edit.html\";\r\n//Dash\r\nimport DashViewCellTemplate\r\n from \"Core/Components/Controls/TimeWriting/Templates/CellEditors/Specific/Dash/View.html\";\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {UserVarsManager} from \"Core/UserVarsManager/UserVarsManager\";\r\n\r\n\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {UsersResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Day/Response/UsersResponseModel\";\r\nimport {\r\n DisapprovedDataViewModel,\r\n DisapprovedReservation\r\n} from \"Core/Components/Controls/TimeWriting/Models/View/DisapprovedDataViewModel\";\r\nimport {DisapprovedReportResponseModel} from \"Core/Components/Controls/TimeWriting/Models/Store/Disapproved/Response/DisapprovedReportResponseModel\";\r\nimport {DisapprovedMappingProfile} from \"Core/Components/Controls/TimeWriting/Mappings/Disapproved/DisapprovedMappingProfile\";\r\nimport {DateTime} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {FIELD_TYPES} from \"Core/Constant\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nexport class DisapprovedView extends TimeWritingView {\r\n private _state: KnockoutObservable<State>;\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _viewModel: KnockoutObservable<DisapprovedDataViewModel>;\r\n\r\n private _viewState: KnockoutObservable<ViewState>;\r\n private _isReadState: KnockoutComputed<boolean>;\r\n private _isEditState: KnockoutComputed<boolean>;\r\n private _isNewState: KnockoutComputed<boolean>;\r\n\r\n private _disapprovedEditors: KnockoutObservableArray<DisapprovedEditor>;\r\n private _labels = LABELS;\r\n\r\n constructor(private _settings: IDayViewSettings) {\r\n super();\r\n this._state = ko.observable(new State({Date: new Date()}));\r\n this._isEditable = ko.observable(false);\r\n this._viewModel = ko.observable(null);\r\n\r\n this._viewState = ko.observable(ViewState.Read);\r\n this._isReadState = ko.computed(() => this._viewState() === ViewState.Read, this);\r\n this._isEditState = ko.computed(() => this._viewState() === ViewState.Edit, this);\r\n this._isNewState = ko.computed(() => this._viewState() === ViewState.New, this);\r\n this._disapprovedEditors = ko.observableArray([]);\r\n }\r\n\r\n GetTemplate() {\r\n return DisapprovedTemplate;\r\n }\r\n\r\n CanBeUpdated() {\r\n return this._viewState() === ViewState.Read;\r\n }\r\n\r\n Show(date: Date, userId?: number) {\r\n this._state(new State({\r\n Date: date\r\n }));\r\n\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n\r\n if (usersList && userId) {\r\n const selectedUser = usersList.Users().find(user => user.Id === userId);\r\n if (selectedUser) {\r\n usersList.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n if (usersList) {\r\n this.LoadData(date, usersList.SelectedUser().Id)\r\n .then(disapprovedReportResponse => this.RenderData(disapprovedReportResponse, usersList))\r\n .fail(error => this.ShowError(error.message));\r\n } else {\r\n const loadDataPromise = this.LoadData(date, userId || UserManager.Instance.CurrentUser.Id);\r\n const loadUsersPromise = this.LoadUsers();\r\n\r\n loadDataPromise.fail(error => this.ShowError(error.message));\r\n loadUsersPromise.fail(error => this.ShowError(error.message));\r\n\r\n P.when(loadDataPromise, loadUsersPromise).then(result => this.RenderData(result[0], result[1], userId || UserManager.Instance.CurrentUser.Id));\r\n }\r\n BlockUI.Unblock();\r\n }\r\n\r\n OnDayViewClick() {\r\n const usersList = this._viewModel() && this._viewModel().Users;\r\n const selectedUser = usersList && usersList.SelectedUser().Id;\r\n\r\n if (this._viewState() === ViewState.Read) {\r\n this.Trigger(\"DayViewClicked\", {State: this._state(), UserId: selectedUser});\r\n return;\r\n }\r\n\r\n this.AskSaveConfirmation(() => {\r\n this.SaveReservation()\r\n .then((rowEditor: RowEditor) => {\r\n this.CommitChanges(rowEditor);\r\n this.Trigger(\"DayViewClicked\", {State: this._state(), UserId: selectedUser});\r\n })\r\n .fail(error => this.ShowError(error.message));\r\n }, () => {\r\n this.CancelChanges();\r\n this.Trigger(\"DayViewClicked\", this._state());\r\n });\r\n }\r\n\r\n OnReservationEdit(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n disapprovedEditor.RowEditor.SetState(RowEditorState.Edit);\r\n\r\n this._viewState(ViewState.Edit);\r\n }\r\n\r\n OnReservationDelete(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n this.ShowError(\"Row not found\");\r\n return;\r\n }\r\n\r\n this.AskDeleteConfirmation(() => {\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const deleteModel = DayMappingProfile.OnDeleteModel(reservation);\r\n deleteModel.TimeTableId = this._settings.EntityId;\r\n\r\n this.DeleteReservation(deleteModel)\r\n .then(() => this.SaveAndReload(disapprovedEditor.RowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n });\r\n }\r\n\r\n OnSaveReservationChanges() {\r\n BlockUI.Block();\r\n this.SaveReservation()\r\n .then(rowEditor => this.SaveAndReload(rowEditor))\r\n .fail(error => {\r\n this.ShowError(error.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n OnReservationAccept(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n this.ShowError(\"Row not found\");\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === guid);\r\n\r\n const acceptModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n acceptModel.TimeTableId = this._settings.EntityId;\r\n acceptModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n this.AcceptReservation(acceptModel)\r\n .then(() => this.SaveAndReload(disapprovedEditor.RowEditor))\r\n .fail(error => this.ShowError(error.message));\r\n }\r\n\r\n CancelChanges() {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.IsEditState || editor.RowEditor.IsNewState);\r\n\r\n this.OnCancelReservationChanges(disapprovedEditor.RowEditor.Guid);\r\n }\r\n\r\n OnCancelReservationChanges(guid: string) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.Guid === guid);\r\n\r\n if (!disapprovedEditor) {\r\n new Notifier().Failed(NOTIFICATIONS.ROW_EDITOR_NOT_FOUND);\r\n return;\r\n }\r\n\r\n if (disapprovedEditor.RowEditor.IsNewState) {\r\n this.CancelNewReservation(disapprovedEditor);\r\n } else {\r\n this.CancelReservationChanges(disapprovedEditor.RowEditor);\r\n }\r\n }\r\n\r\n OnAllowedEntityClick(entity: AllowedEntity) {\r\n const disapprovedEditor = _.find(this._disapprovedEditors(), editor => editor.RowEditor.IsNewState);\r\n\r\n if (!disapprovedEditor) {\r\n this.ShowError(\"Row not found\");\r\n this._viewState(ViewState.Read);\r\n return;\r\n }\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === disapprovedEditor.RowEditor.Guid);\r\n\r\n this.SearchSubjectForEntity(entity, reservation);\r\n }\r\n\r\n SelectSubjectMode(reservation: Reservation) {\r\n reservation.Subject(Subject.NotSpecified());\r\n }\r\n\r\n private UserSelected(user: UserViewModel) {\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private GetNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n if (this._settings.SubjectEntityId === null) {\r\n deferred.resolve(null);\r\n } else {\r\n this.RequestNewReservationSubject().always(subject => deferred.resolve(subject))\r\n }\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private RequestNewReservationSubject(): P.Promise<Subject> {\r\n const deferred = P.defer<Subject>();\r\n\r\n const subjectIsAllowed = _.any(this._viewModel().AllowedEntities, e => e.Id === this._settings.SubjectEntityId);\r\n if (!subjectIsAllowed) {\r\n deferred.resolve(null);\r\n } else {\r\n TimeWritingStore.GetSubject(this._settings.SubjectEntityId, this._settings.SubjectRecordId)\r\n .then(record => {\r\n const nameField = _.find<any>((<any>record).Fields, field => field.FieldName.toUpperCase() === \"NAME\");\r\n const subject = new Subject({\r\n EntityId: this._settings.SubjectEntityId,\r\n EntityName: this._settings.SubjectEntityName,\r\n SubjectId: this._settings.SubjectRecordId,\r\n SubjectName: nameField.FieldValue,\r\n Icon: this._settings.SubjectEntityIcon\r\n });\r\n deferred.resolve(subject);\r\n })\r\n .fail(() => deferred.resolve(null));\r\n }\r\n return deferred.promise();\r\n }\r\n\r\n private CancelNewReservation(disapprovedEditor: DisapprovedEditor) {\r\n const disapprovedEditorIndex = this._disapprovedEditors.indexOf(disapprovedEditor);\r\n this._disapprovedEditors.splice(disapprovedEditorIndex, 1);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private CancelReservationChanges(rowEditor: RowEditor) {\r\n rowEditor.CancelChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n\r\n this._viewState(ViewState.Read);\r\n }\r\n\r\n private LoadUsers() {\r\n return TimeWritingStore.GetUsers(this._settings.EntityId)\r\n .then(users => users.Users.length === 0\r\n ? UsersResponseModel.CreateDefault()\r\n : UsersMappingProfile.OnViewModel(users)\r\n )\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadData(date: Date, userId: number): P.Promise<DisapprovedReportResponseModel> {\r\n return TimeWritingStore.GetDisapproved({\r\n ControlId: this._settings.ControlId,\r\n TimeTableId: this._settings.EntityId,\r\n SubjectEntityId: this._settings.SubjectEntityId,\r\n SubjectRecordId: this._settings.SubjectRecordId,\r\n UserId: userId\r\n });\r\n }\r\n\r\n private RenderData(model: DisapprovedReportResponseModel, users: UsersViewModel, selectedUserId?: number) {\r\n const viewModel = DisapprovedMappingProfile.OnViewModel(model);\r\n viewModel.Users = users;\r\n\r\n if (selectedUserId) {\r\n const selectedUser = viewModel.Users.Users().find(user => user.Id === selectedUserId);\r\n if (selectedUser) {\r\n viewModel.Users.SelectedUser(selectedUser);\r\n }\r\n }\r\n\r\n this._isEditable(model.Editable);\r\n this._disapprovedEditors([]);\r\n this.InitRowEditors(viewModel);\r\n this._viewModel(viewModel);\r\n\r\n if (model.GlobalSettings.FreezeTime === undefined) {\r\n this.ShowWarning(\"Freeze time not specified\");\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n private ShowError(message: string) {\r\n new Notifier().Failed(message);\r\n }\r\n\r\n private ShowWarning(message: string) {\r\n new Notifier().Warning(message);\r\n }\r\n\r\n private ShowNotification(message: string) {\r\n new Notifier().Success(message);\r\n }\r\n\r\n private InitRowEditors(viewModel: DisapprovedDataViewModel) {\r\n viewModel.RequestedDate.Reservations().forEach(reservation => {\r\n let weekNumber = DateTime.GetWeekNumber(reservation.Start());\r\n let date = DateTime.GetWeekDescription(reservation.Start());\r\n this.AddDisapprovedEditor(reservation, viewModel.LookupFields, viewModel.AllowedEntities, RowEditorState.Read, weekNumber, date);\r\n });\r\n }\r\n\r\n private AddDisapprovedEditor(reservation: DisapprovedReservation,\r\n lookupFields: LookupField[],\r\n allowedEntities: AllowedEntity[],\r\n state: RowEditorState,\r\n weekNumber: number,\r\n date: string) {\r\n const rowEditor = this.GenerateRowEditor(reservation, lookupFields, allowedEntities);\r\n rowEditor.SetState(state);\r\n const disapprovedInfo = new DisapprovedInfo(reservation.DisapprovedReason, reservation.Comment, reservation.BookedCounter, weekNumber, date);\r\n\r\n this._disapprovedEditors.push(new DisapprovedEditor(disapprovedInfo, rowEditor));\r\n }\r\n\r\n private GenerateCellEditor(field: AttachedFieldModel, reservation: Reservation, lookupFields: LookupField[]): CellEditor {\r\n if (field.FieldTypeName === FIELD_TYPES.Lookup) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new DropdownCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.MultiSelect) {\r\n const dropdownField = _.find(lookupFields, f => f.Name === field.Name);\r\n\r\n return new MultiSelectCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n Options: ko.observableArray(dropdownField.Values),\r\n RequiresSearch: dropdownField.RequiresSearch,\r\n ValTableId: field.ValTableId,\r\n ValFieldId: field.ValFieldId,\r\n ValFieldTypeName: field.ValFieldTypeName,\r\n ValFieldFormatName: field.ValFieldFormatName,\r\n ValFieldSize: field.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'ovw',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value && value.FieldValue\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Integer) {\r\n return new IntegerCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: IntegerViewCellTemplate,\r\n EditTemplate: IntegerEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Decimal) {\r\n return new DecimalCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DecimalViewCellTemplate,\r\n EditTemplate: DecimalEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: null,\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n Size: field.Size,\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.DateTime) {\r\n return new DateTimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'from',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Date) {\r\n return new DateCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: DateTimeViewCellTemplate,\r\n EditTemplate: DateTimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'from',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n },\r\n FormatName: field.FormatName\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Time) {\r\n return new TimeCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'DateTime',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.TimeSpan) {\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'from',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.YesNo) {\r\n return new ValueCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: YesNoViewCellTemplate,\r\n EditTemplate: YesNoEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description'\r\n });\r\n }\r\n\r\n return new ValidationCellEditor({\r\n Name: field.Name,\r\n Label: field.FieldNameTranslation,\r\n Value: reservation.GetOptionalValue(field.Name),\r\n ViewTemplate: TextViewCellTemplate,\r\n EditTemplate: TextEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n ClassName: 'description',\r\n RequiredRule: {\r\n Message: `${field.FieldNameTranslation} is required`,\r\n Validate: value => !field.IsRequired || value !== null && value !== undefined\r\n }\r\n });\r\n }\r\n\r\n private GenerateRowEditor(reservation: Reservation, lookupFields: LookupField[], allowedEntities: AllowedEntity[]) {\r\n // const customFieldCellEditors = this._settings.CustomFields.map(field => this.GenerateCellEditor(field, reservation, lookupFields));\r\n const customFieldCellEditors = [];\r\n const visibleFields = this._settings.Properties.Groups[0].Properties;\r\n\r\n const hourKindLookupField = _.find(lookupFields, f => f.Name === \"F_HOURKIND\");\r\n const ovwLookupField = _.find(lookupFields, f => f.Name === \"F_OVERWORKINDICATOR\");\r\n const payLookupField = _.find(lookupFields, f => f.Name === \"F_PAYMENTINDICATOR\");\r\n\r\n return new RowEditor(reservation.Guid,\r\n null,\r\n lookupFields,\r\n new SubjectCellEditor({\r\n Name: \"Subject\",\r\n Label: this._labels.SUBJECT,\r\n Value: reservation.Subject,\r\n ViewTemplate: SubjectViewCellTemplate,\r\n EditTemplate: reservation.Subject().NotSpecified ? SelectableSubjectEditTemplate : SelectedSubjectEditTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n OnEntityClick: this.OnAllowedEntityClick.bind(this),\r\n OnEntityIconClick: this.SelectSubjectMode.bind(this, reservation),\r\n OnSubjectClick: this.SearchSubject.bind(this, reservation),\r\n AllowedEntities: allowedEntities,\r\n IsNewState: this._isNewState,\r\n RequiredRule: {\r\n Validate: value => !value.NotSpecified,\r\n Message: this._labels.SELECT__RESERVATION_SUBJECT\r\n },\r\n ClassName: 'subject'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"Start\",\r\n Label: this._labels.FROM,\r\n Value: reservation.Start,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'START').Value),\r\n ClassName: 'from'\r\n }),\r\n new CellEditor({\r\n Name: \"-\",\r\n Label: \"\",\r\n ViewTemplate: DashViewCellTemplate,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'START').Value && visibleFields.find(field => field.Name === 'TO').Value),\r\n ClassName: 'dash'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"To\",\r\n Label: this._labels.TO,\r\n Value: reservation.To,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: false,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'TO').Value),\r\n ClassName: 'to'\r\n }),\r\n new ValidationCellEditor({\r\n Name: \"TimeSpent\",\r\n Label: this._labels.DURATION,\r\n Value: reservation.TimeSpent,\r\n ViewTemplate: TimeViewCellTemplate,\r\n EditTemplate: TimeEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'TIMESPENT').Value),\r\n ClassName: 'duration'\r\n }),\r\n new DescriptionCellEditor({\r\n Name: \"Description\",\r\n Label: this._labels.DESCRIPTION,\r\n Value: reservation.Description,\r\n ViewTemplate: DescriptionViewCellTemplate,\r\n EditTemplate: DescriptionEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(true),\r\n RequiredRule: {\r\n Validate: value => value && value.length > 0,\r\n Message: this._labels.SPECIFY_RESERVATION_DESCRIPTION\r\n },\r\n MinLengthRule: {\r\n Validate: value => value.length >= 3,\r\n Message: this._labels.DESCRIPTION_MIN_LENGTH.replace('{minLengthValidation}', '3')\r\n },\r\n MaxLenghtRule: {\r\n Validate: value => value.length <= 80,\r\n Message: this._labels.DESCRIPTION_MAX_LENGTH.replace('{maxLengthValidation}', '80')\r\n },\r\n ClassName: 'description'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Hour\",\r\n Label: this._labels.HOUR,\r\n Value: reservation.HourKind,\r\n Options: ko.observableArray(hourKindLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: hourKindLookupField.ValTableId,\r\n ValFieldId: hourKindLookupField.ValFieldId,\r\n ValFieldTypeName: hourKindLookupField.ValFieldTypeName,\r\n ValFieldFormatName: hourKindLookupField.ValFieldFormatName,\r\n ValFieldSize: hourKindLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === 'F_HOURKIND').Value),\r\n ClassName: 'hour'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Ovw\",\r\n Label: this._labels.OVW,\r\n Value: reservation.Ovw,\r\n Options: ko.observableArray(ovwLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: ovwLookupField.ValTableId,\r\n ValFieldId: ovwLookupField.ValFieldId,\r\n ValFieldTypeName: ovwLookupField.ValFieldTypeName,\r\n ValFieldFormatName: ovwLookupField.ValFieldFormatName,\r\n ValFieldSize: ovwLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === \"F_OVERWORKINDICATOR\").Value),\r\n ClassName: 'ovw'\r\n }),\r\n new DropdownCellEditor({\r\n Name: \"Pay\",\r\n Label: this._labels.PAY,\r\n Value: reservation.Pay,\r\n Options: ko.observableArray(payLookupField.Values),\r\n RequiresSearch: false,\r\n ValTableId: payLookupField.ValTableId,\r\n ValFieldId: payLookupField.ValFieldId,\r\n ValFieldTypeName: payLookupField.ValFieldTypeName,\r\n ValFieldFormatName: payLookupField.ValFieldFormatName,\r\n ValFieldSize: payLookupField.ValFieldSize,\r\n ViewTemplate: DropdownViewCellTemplate,\r\n EditTemplate: DropdownEditCellTemplate,\r\n Editable: true,\r\n Visible: ko.observable(visibleFields.find(field => field.Name === \"F_PAYMENTINDICATOR\").Value),\r\n ClassName: 'pay'\r\n }),\r\n ...customFieldCellEditors,\r\n new ActionsCellEditor({\r\n Name: \"Actions\",\r\n Label: this._labels.ACTIONS,\r\n ViewTemplate: ActionsViewCellTemplate,\r\n EditTemplate: ActionsEditCellTemplate,\r\n Visible: this._isEditable() ? this._isReadState : ko.observable(false),\r\n Accepted: reservation.Accepted,\r\n OnEditReservation: this.OnReservationEdit.bind(this, reservation.Guid),\r\n OnDeleteReservation: this.OnReservationDelete.bind(this, reservation.Guid),\r\n OnAcceptReservation: this.OnReservationAccept.bind(this, reservation.Guid),\r\n OnSaveReservationChanges: this.OnSaveReservationChanges.bind(this),\r\n OnCancelReservationChanges: this.OnCancelReservationChanges.bind(this, reservation.Guid),\r\n TimeStatus: reservation.TimeStatus(),\r\n ClassName: 'actions'\r\n })\r\n );\r\n }\r\n\r\n private SearchSubject(reservation: Reservation) {\r\n const subject = reservation.Subject();\r\n\r\n const searchScreen = new SearchScreen({\r\n EntityId: subject.EntityId,\r\n SearchTerm: \"\",\r\n ButtonAdd: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubject(eventArgs.data, reservation));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SearchSubjectForEntity(entity: AllowedEntity, reservation: Reservation) {\r\n const searchScreen = new SearchScreen({\r\n ConditionToggler: true,\r\n ControlId: this._settings.ControlId,\r\n EntityId: entity.Id,\r\n SearchTerm: \"\",\r\n ButtonAdd: false\r\n });\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, eventArgs => this.SelectSubjectForEntity(eventArgs.data, entity, reservation));\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n private SelectSubject(subjectData: any, reservation: Reservation) {\r\n const oldSubject = reservation.Subject();\r\n\r\n const newSubject = new Subject({\r\n EntityId: oldSubject.EntityId,\r\n EntityName: oldSubject.EntityName,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: oldSubject.Icon\r\n });\r\n\r\n reservation.Subject(newSubject);\r\n }\r\n\r\n private SelectSubjectForEntity(subjectData: any, entity: AllowedEntity, reservation: Reservation) {\r\n const newSubject = new Subject({\r\n EntityId: entity.Id,\r\n EntityName: entity.Name,\r\n SubjectId: subjectData.RecordId,\r\n SubjectName: subjectData.Name,\r\n Icon: entity.Icon\r\n });\r\n\r\n reservation.Subject(newSubject);\r\n }\r\n\r\n private AcceptReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.AcceptReservation(reservation);\r\n }\r\n\r\n private UpdateReservation(reservation: SaveReservationRequestModel) {\r\n return TimeWritingStore.UpdateReservation(reservation);\r\n }\r\n\r\n private DeleteReservation(reservation: DeleteReservationRequestModel) {\r\n return TimeWritingStore.DeleteReservation(reservation);\r\n }\r\n\r\n private CommitChanges(rowEditor: RowEditor) {\r\n rowEditor.SaveChanges();\r\n rowEditor.SetState(RowEditorState.Read);\r\n this._viewState(ViewState.Read);\r\n this.ShowNotification(NOTIFICATIONS.CHANGES_APPLIED);\r\n }\r\n\r\n private SaveAndReload(rowEditor: RowEditor) {\r\n this.CommitChanges(rowEditor);\r\n this.Show(this._state().Date);\r\n }\r\n\r\n private AskConfirmation(message: string, onConfirm: () => void, onDecline: () => void) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: message,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: \"Yes\",\r\n TextDecline: \"Cancel\"\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => onConfirm());\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => onDecline());\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n private AskSaveConfirmation(onConfirm: () => void, onDecline: () => void) {\r\n this.AskConfirmation(\"Save changes?\", onConfirm, onDecline);\r\n }\r\n\r\n private AskDeleteConfirmation(onConfirm: () => void) {\r\n this.AskConfirmation(\"Are you sure you want delete this record?\", onConfirm, () => {\r\n });\r\n }\r\n\r\n private GetActiveRow() {\r\n return _.find(this._disapprovedEditors(), (item: DisapprovedEditor) => item.RowEditor.IsNewState || item.RowEditor.IsEditState);\r\n }\r\n\r\n private SaveReservation(): P.Promise<RowEditor> {\r\n\r\n const result = P.defer<RowEditor>();\r\n\r\n const disapprovedEditor = this.GetActiveRow();\r\n\r\n if (!disapprovedEditor) {\r\n this._viewState(ViewState.Read);\r\n result.reject({message: \"Row not found\"});\r\n return result.promise();\r\n }\r\n\r\n if (!disapprovedEditor.RowEditor.Validate()) {\r\n result.reject({message: \"Fill required data\"});\r\n return result.promise();\r\n }\r\n\r\n\r\n const reservation = _.find(this._viewModel().RequestedDate.Reservations(), reservation => reservation.Guid === disapprovedEditor.RowEditor.Guid);\r\n reservation.ChangeDate(this._state().Date);\r\n\r\n const updateModel = DayMappingProfile.OnSaveModel(reservation);\r\n\r\n updateModel.TimeTableId = this._settings.EntityId;\r\n updateModel.UserId = this._viewModel().SelectedUser.Id;\r\n\r\n this.UpdateReservation(updateModel)\r\n .then(() => result.resolve(disapprovedEditor.RowEditor))\r\n .fail(error => result.reject({message: error.message}));\r\n\r\n return result.promise();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box time-writing-control disapproved\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"time-writing-caption clearfix\\\"> <div class=\\\"container-fluid time-writing-header\\\"> <div class=\\\"row weekly-container\\\"> <div class=\\\"weekly-subcontainer weekly-subcontainer-left days-container\\\"> <a data-bind=\\\"click: OnDayViewClick\\\" class=\\\"btn blue-dark return-button\\\"> <i class=\\\"fa fa-mail-reply-all\\\" align=\\\"center\\\"></i> <!-- ko text: _labels.RETURN --><!-- /ko --> </a> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-center week-container\\\"> <!-- ko text: _labels.DISAP_OVERVIEW --><!-- /ko --> </div> <div class=\\\"weekly-subcontainer weekly-subcontainer-right\\\"> <!--ko with: _viewModel--> <select class=\\\"form-control\\\" data-bind=\\\"options: Users.Users, optionsText: 'Name', value: Users.SelectedUser, event: {change: $parent.UserSelected.bind($parent, Users.SelectedUser())}\\\"></select> <!--/ko--> </div> </div> </div> </div> </div> <div class=\\\"portlet-body disapproved-portlet-body\\\"> <div class=\\\"timewriting-day-table clearfix timewriting-disapproved\\\"> <div class=\\\"timewriting-day-table__content\\\"> <div class=\\\"timewriting-table-body timewriting-table-rows timewriting-table-striped\\\"> <!-- ko foreach: _disapprovedEditors --> <div class=\\\"row timewriting-table-row\\\"> <div class=\\\"timewriting-disapproved__content-row\\\"> <div class=\\\"timewriting-table-item-disapproved disap-counter\\\"> <span class=\\\"badge badge-light badge-counter\\\" data-bind=\\\"text: DisapprovedInfo.BookedCounter ? DisapprovedInfo.BookedCounter : '0',\\r\\n tooltip: {content: $parent._labels.BOOKED_COUNTER}\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold\\\"><!-- ko text: $parent._labels.DATE --><!-- /ko --> :</span> <span data-bind=\\\"text: DisapprovedInfo.Date ? DisapprovedInfo.Date : '-'\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold\\\"><!-- ko text: $parent._labels.WEEK --><!-- /ko --> : </span> <span data-bind=\\\"text: DisapprovedInfo.WeekNumber ? DisapprovedInfo.WeekNumber : '-'\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold timewriting-table-mobile-label-visible-sm\\\"><!-- ko text: $parent._labels.DISAP_REASON --><!-- /ko -->:</span> <span class=\\\"bold timewriting-table-mobile-label-visible-xs\\\"><!-- ko text: $parent._labels.REASON --><!-- /ko -->:</span> <span data-bind=\\\"text: DisapprovedInfo.DisapprovedReason ? DisapprovedInfo.DisapprovedReason : '-'\\\"></span> </div> <div class=\\\"timewriting-table-item-disapproved\\\"> <span class=\\\"bold\\\"><!-- ko text: $parent._labels.COMMENT --><!-- /ko --> :</span> <span data-bind=\\\"text: DisapprovedInfo.Comment ? DisapprovedInfo.Comment : '-'\\\"></span> </div> </div> <div class=\\\"timewriting-disapproved__content-row\\\"> <!-- ko with: RowEditor --> <div class=\\\"timewriting-disapproved__content-wrapper\\\"> <div class=\\\"timewriting-disapproved__row\\\"> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name !== 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div> <!-- ko foreach: $data._cellEditors --> <!-- ko if: $data._cell.Name === 'Description' --> <!-- ko template: {html: _template} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <!-- ko if: Accepted --> <a href=\\\"#\\\" class=\\\"btn btn-info\\\" data-bind=\\\"visible: Visible, click: OnEditReservation, tooltip:{content: $parent._labels.EDIT}\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"visible: Visible, click: OnDeleteReservation, tooltip:{content: $parent._labels.DELETE}\\\"> <i class=\\\"fa fa-trash\\\"></i> </a> <!-- /ko --> <!-- ko ifnot: Accepted --> <a href=\\\"#\\\" class=\\\"btn btn-warning accept\\\" data-bind=\\\"click: OnAcceptReservation\\\"> <!-- ko text: $parent._labels.ACCEPT --><!-- /ko --> </a> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _cell --> <div class=\\\"timewriting-table-column__actions-buttons\\\"> <a href=\\\"#\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: OnSaveReservationChanges, tooltip:{content: $parent._labels.SAVE}\\\"> <i class=\\\"fa fa-save\\\"></i> </a> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancelReservationChanges, tooltip:{content: $parent._labels.CANCEL}\\\"> <i class=\\\"fa fa-close\\\"></i> </a> </div> <!-- /ko -->\";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\n\r\n//Common\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\n//Params\r\nimport {ITimeWritingParams} from \"Core/Components/Controls/TimeWriting/ITimeWritingParams\";\r\n\r\n//Utils\r\nimport {DateTime} from \"Core/Components/Controls/TimeWriting/Utils/DateTime\";\r\n\r\n//Icon\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n\r\n//Views\r\nimport {TimeWritingView} from \"Core/Components/Controls/TimeWriting/Views/TimeWritingView\";\r\nimport {YearView} from \"Core/Components/Controls/TimeWriting/Views/Year/YearView\";\r\nimport {DayView} from \"Core/Components/Controls/TimeWriting/Views/Day/DayView\";\r\nimport {WeekView} from \"Core/Components/Controls/TimeWriting/Views/Week/WeekView\";\r\nimport {DisapprovedView} from \"Core/Components/Controls/TimeWriting/Views/Day/DisapprovedView\";\r\n\r\n\r\n//States\r\nimport {State as DayViewState} from \"Core/Components/Controls/TimeWriting/Views/Day/State\";\r\nimport {State as YearViewState} from \"Core/Components/Controls/TimeWriting/Views/Year/State\";\r\n\r\n//Templates\r\nimport TimeWritingTemplate from \"Core/Components/Controls/TimeWriting/Templates/TimeWriting.html\";\r\nimport {AttachedFieldModel} from \"../../../Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {ConfigModel} from \"Core/GeneralProperties/Models/ConfigModel\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nko.templates[\"Core/Components/Controls/TimeWriting/Templates/TimeWriting\"] = TimeWritingTemplate;\r\n\r\nexport class TimeWriting extends Event {\r\n private _controlId: number;\r\n private _entityId: number;\r\n\r\n private _subjectEntityId: number;\r\n private _subjectEntityName: string;\r\n private _subjectEntityIcon: Icon;\r\n\r\n private _recordId: number | null;\r\n private _recordName: string;\r\n\r\n private _customFields: AttachedFieldModel[];\r\n private _properties: ConfigModel;\r\n\r\n private _view: KnockoutObservable<TimeWritingView>;\r\n private _isReady: KnockoutObservable<boolean>;\r\n private _currentDate: KnockoutObservable<Date>;\r\n private _zIndex: number;\r\n\r\n constructor(params: ITimeWritingParams) {\r\n super();\r\n\r\n this._controlId = params.ControlId;\r\n this._entityId = params.EntityId;\r\n\r\n this._subjectEntityId = params.SubjectEntityId;\r\n this._subjectEntityName = params.SubjectEntityName;\r\n this._subjectEntityIcon = params.SubjectEntityIcon;\r\n\r\n this._recordId = params.SubjectRecordId;\r\n this._recordName = params.SubjectRecordName;\r\n\r\n this._customFields = params.CustomFields;\r\n\r\n this._properties = params.Properties;\r\n\r\n this._view = ko.observable(null);\r\n this._isReady = ko.observable(false);\r\n this._currentDate = ko.observable(null);\r\n this._zIndex = ZIndexManager.Instance.NextValue;\r\n }\r\n\r\n get DayViewIsUsed() {\r\n return this._view() instanceof DayView;\r\n }\r\n\r\n Render(node: HTMLElement) {\r\n ko.cleanNode(node);\r\n ko.applyBindings(this, node);\r\n }\r\n\r\n GetTemplateName() {\r\n return \"Core/Components/Controls/TimeWriting/Templates/TimeWriting\";\r\n }\r\n\r\n AfterRender() {\r\n this._isReady(true);\r\n }\r\n\r\n Show(date: Date) {\r\n this.SwitchToDayView(date);\r\n }\r\n\r\n ShowStatic() {\r\n this.SwitchToStaticDayView();\r\n }\r\n\r\n CanBeUpdated() {\r\n return this._view().CanBeUpdated();\r\n }\r\n\r\n private SwitchToDayView(date: Date, userId?: number) {\r\n const dayView = new DayView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n SubjectEntityIcon: this._subjectEntityIcon,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n dayView.On('WeekClicked', this, eventArgs => this.RequestWeek(eventArgs.data.StartDate, eventArgs.data.EndDate, eventArgs.data.UserId));\r\n dayView.On(\"YearClicked\", this, eventArgs => this.RequestYear(eventArgs.data.State, eventArgs.data.UserId));\r\n dayView.On('DisapprovedClicked', this, (eventArgs) => {\r\n if (eventArgs.data.State && eventArgs.data.UserId) {\r\n this.RequestDisapproved(eventArgs.data.State.Date, eventArgs.data.UserId);\r\n }\r\n });\r\n dayView.Show(date, userId);\r\n this._view(dayView);\r\n }\r\n\r\n private SwitchToWeekView(startDate: Date, endDate: Date, userId: number) {\r\n const weekView = new WeekView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n\r\n weekView.On('DayClicked', this, eventArgs => this.OnDayClicked(eventArgs.data.Date, eventArgs.data.UserId));\r\n weekView.On(\"YearClicked\", this, eventArgs => this.RequestYear(eventArgs.data.State, eventArgs.data.UserId));\r\n\r\n weekView.Show({startDate, endDate}, userId);\r\n this._view(weekView);\r\n }\r\n\r\n private SwitchToStaticDayView() {\r\n const dayView = new DayView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n SubjectEntityIcon: this._subjectEntityIcon,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n dayView.ShowStatic();\r\n this._view(dayView);\r\n }\r\n\r\n private SwitchToYearView(year: number, userId?: number) {\r\n const yearView = new YearView({\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectRecordId: this._recordId\r\n });\r\n yearView.On(\"WeekSelected\", this, eventArgs => this.OnWeekClicked(eventArgs.data.State, eventArgs.data.UserId));\r\n yearView.Show(year, userId);\r\n this._view(yearView);\r\n }\r\n\r\n private SwitchToDisapprovedView(date: Date, userId?: number) {\r\n const disapprovedView = new DisapprovedView({\r\n ControlId: this._controlId,\r\n EntityId: this._entityId,\r\n SubjectEntityId: this._subjectEntityId,\r\n SubjectEntityName: this._subjectEntityName,\r\n SubjectRecordId: this._recordId,\r\n SubjectRecordName: this._recordName,\r\n SubjectEntityIcon: this._subjectEntityIcon,\r\n CustomFields: this._customFields,\r\n Properties: this._properties\r\n });\r\n\r\n disapprovedView.On(\"DayViewClicked\", this, eventArgs => this.SwitchToDayView(eventArgs.data.State.Date, eventArgs.data.UserId));\r\n disapprovedView.Show(date, userId);\r\n this._view(disapprovedView);\r\n }\r\n\r\n private RequestYear(state: DayViewState, userId?: number) {\r\n this.SwitchToYearView(state.Year, userId);\r\n }\r\n\r\n private RequestDisapproved(date: Date, userId: number) {\r\n this.SwitchToDisapprovedView(date, userId);\r\n }\r\n\r\n private RequestWeek(startDate: Date, endDate: Date, userId: number) {\r\n this.SwitchToWeekView(startDate, endDate, userId);\r\n }\r\n\r\n private OnWeekClicked(state: YearViewState, userId: number) {\r\n const weekStartDate = DateTime.GetWeekStartByNumber(state.SelectedWeek.Number, state.Year);\r\n this.SwitchToDayView(weekStartDate, userId);\r\n }\r\n\r\n private OnDayClicked(date: Date, userId: number) {\r\n this.SwitchToDayView(date, userId);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: _view --> <!-- ko template: {html: GetTemplate, afterRender: AfterRender} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _component --> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","//Libs\r\nimport * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n//Constants\r\nimport {DEFAULT_ICONS, FIELD_TYPES, RenderModes, TABLE_TYPES, SortGroups} from \"Core/Constant\";\r\n\r\nimport {Icon} from \"Core/Icon/Icon\";\r\n//Control\r\nimport {ComplexControl} from \"Core/Controls/ComplexControl/ComplexControl\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {IControlValue} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {RequiredFieldModel} from \"Core/Controls/ComplexControl/Models/RequiredFieldModel\";\r\nimport TimeWritingConfig from 'Core/Controls/TimeWriting/Configs/time-writing-config.json';\r\n//Components\r\nimport {TimeWriting as TimeWritingComponent} from \"Core/Components/Controls/TimeWriting/TimeWriting\";\r\n//Templates\r\nimport ViewTemplate from \"Core/Controls/TimeWriting/Templates/View.html\";\r\nimport DesignTemplate from \"Core/Controls/TimeWriting/Templates/Design.html\";\r\nimport ToolBarTemplate from \"Core/Controls/TimeWriting/Templates/ToolBar.html\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {AttachedFieldModel} from \"../BaseControl/Models/AttachedFieldModel\";\r\nimport {FieldModel} from \"../../../QueryBuilder/Models/FieldModel\";\r\nimport {EntityModel} from \"../../../QueryBuilder/Models/EntityModel\";\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"../../Components/Translation/Locales\";\r\nimport {DesignScreen} from \"../../Screens/DesignScreen/DesignScreen\";\r\nimport {GeneralProperties} from \"../../GeneralProperties/GeneralProperties\";\r\n\r\nko.templates[\"Core/Controls/TimeWriting/Templates/View\"] = ViewTemplate;\r\nko.templates[\"Core/Controls/TimeWriting/Templates/ToolBar\"] = ToolBarTemplate;\r\nko.templates[\"Core/Controls/TimeWriting/Templates/Design\"] = DesignTemplate;\r\n\r\nexport class TimeWriting extends ComplexControl {\r\n private _component: TimeWritingComponent;\r\n private _customFields: KnockoutObservableArray<AttachedFieldModel>;\r\n protected _isRendered: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IControlParam) {\r\n super(params, TimeWritingConfig);\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n if (this._renderMode() === RenderModes.View) {\r\n this._component.ShowStatic();\r\n }\r\n }\r\n\r\n ApplyProperties(){}\r\n\r\n SetValue(value: IControlValue) {\r\n if (this._renderMode() !== RenderModes.View || !value.SubjectEntityId || !value.SubjectRecordId) {\r\n return;\r\n }\r\n\r\n const screen = this.GetForm().GetScreen();\r\n const screenType = screen.GetType();\r\n const params = {\r\n ControlId: this.GetControlId(),\r\n EntityId: this._model().EntityId,\r\n SubjectEntityId: null,\r\n SubjectEntityName: null,\r\n SubjectEntityIcon: null,\r\n SubjectRecordId: null,\r\n SubjectRecordName: null,\r\n CustomFields: this._customFields(),\r\n Properties: this.GeneralProperties\r\n };\r\n\r\n if (screenType === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n params.SubjectEntityId = value.SubjectEntityId;\r\n params.SubjectEntityName = screen.GetEntityName();\r\n params.SubjectEntityIcon = screen.GetScreenIcon();\r\n params.SubjectRecordId = value.SubjectRecordId;\r\n }\r\n\r\n this._component = new TimeWritingComponent(params);\r\n screen.On('AGENDA_CHANGED', this, () => {\r\n if (this._component.DayViewIsUsed && this._component.CanBeUpdated()) {\r\n this._component.Show(new Date());\r\n }\r\n });\r\n\r\n this._isRendered.subscribe(() => this._component.Show(new Date()));\r\n }\r\n\r\n GetAttachedTableId() {\r\n return this._model().SubTableId || this._model().EntityId;\r\n }\r\n\r\n Init() {\r\n this.SetDefaultIcon(new Icon(DEFAULT_ICONS.TimeWriting));\r\n this._requiredFields([\r\n new RequiredFieldModel('BOOKEDTIMESUBJECT', FIELD_TYPES.Reference, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_USER', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('NAME', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('START', FIELD_TYPES.DateTime, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('TIMESPENT', FIELD_TYPES.TimeSpan, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_OVERWORKINDICATOR', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_PAYMENTINDICATOR', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_HOURKIND', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('BOOKEDCOUNTER', FIELD_TYPES.Integer, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('COMMENT', FIELD_TYPES.Text, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_TIMESTATUS', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null),\r\n new RequiredFieldModel('F_DISAPPROVEREASON', FIELD_TYPES.Lookup, TABLE_TYPES.Sub, null)\r\n ]);\r\n this.InitRequiredFields();\r\n this.InitCustomFields();\r\n this.InitRuntime();\r\n }\r\n\r\n BindEvents() {\r\n if (this._renderMode() === RenderModes.Design) {\r\n const oldAttachedTableId = this.GetAttachedTableId();\r\n\r\n this._model.subscribe(() => {\r\n if (oldAttachedTableId !== this.GetAttachedTableId()) {\r\n this.Init();\r\n }\r\n });\r\n }\r\n }\r\n\r\n InitCustomFields() {\r\n const requiredFields = this._requiredFields();\r\n const customFields = _.filter(this._model().Fields, field => !_.some(requiredFields, rf => rf.DefaultName === field.Name));\r\n this._customFields = ko.observableArray(customFields);\r\n }\r\n\r\n InitRuntime() {\r\n if (this._renderMode() !== RenderModes.ToolBar && this._renderMode() !== RenderModes.Design) {\r\n this._component = new TimeWritingComponent({\r\n ControlId: this.GetControlId(),\r\n EntityId: this.GetAttachedTableId(),\r\n SubjectEntityId: null,\r\n SubjectEntityName: null,\r\n SubjectEntityIcon: null,\r\n SubjectRecordId: null,\r\n SubjectRecordName: null,\r\n CustomFields: this._customFields(),\r\n Properties: this.GeneralProperties\r\n });\r\n }\r\n }\r\n\r\n FormatFieldName(field: AttachedFieldModel) {\r\n if (field.FieldNameTranslation) {\r\n return field.FieldNameTranslation;\r\n }\r\n\r\n return field.Name;\r\n }\r\n\r\n GetComplexControlDesignTemplate() {\r\n return ComplexControl.designTemplate;\r\n }\r\n\r\n AfterDropField(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (targetContext instanceof TimeWriting && item instanceof FieldModel && sourceContext instanceof EntityModel) {\r\n const field = item as FieldModel;\r\n const table = sourceContext as EntityModel;\r\n\r\n if (table.EntityId !== this.GetAttachedTableId()) {\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_CUSTOM_FIELDS_ALLOWED);\r\n return;\r\n }\r\n\r\n if (!SortGroups.InCustom(field.Sort) || field.IsSystem) {\r\n new Notifier().Warning(NOTIFICATIONS.ONLY_CUSTOM_FIELDS_ALLOWED);\r\n return;\r\n }\r\n\r\n const alreadyAddedField = _.some(this._model().Fields, f => f.Name === field.FieldName);\r\n\r\n if (alreadyAddedField) {\r\n new Notifier().Warning(NOTIFICATIONS.FIELD_ALREADY_ADDED);\r\n return;\r\n }\r\n\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n attachedFieldModel.EntityName = table.EntityName;\r\n attachedFieldModel.EntityNameTranslation = table.EntityNameTranslation;\r\n attachedFieldModel.EntityTypeName = table.TypeName;\r\n attachedFieldModel.EntityId = table.EntityId;\r\n\r\n this._customFields.push(attachedFieldModel);\r\n this._model().Fields.push(attachedFieldModel);\r\n\r\n this.DesignChanged();\r\n }\r\n\r\n if(targetContext instanceof TimeWriting && item instanceof AttachedFieldModel){\r\n targetItems.splice(targetIndex, 0, sourceItems.splice(sourceIndex, 1)[0]);\r\n this.DesignChanged();\r\n\r\n _.forEach(targetItems(), (targetItem: AttachedFieldModel, i) => {\r\n targetItem.Sort = i * 10;\r\n })\r\n }\r\n }\r\n\r\n RemoveField(customField: AttachedFieldModel) {\r\n const customFieldIndex = this._customFields.indexOf(customField);\r\n this._customFields.splice(customFieldIndex, 1);\r\n\r\n const attachedFieldIndex = this._model().Fields.indexOf(customField);\r\n this._model().Fields.splice(attachedFieldIndex, 1);\r\n\r\n this.DesignChanged();\r\n }\r\n\r\n DesignChanged() {\r\n (this.GetForm().GetScreen() as DesignScreen).HasChanges = true;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"ToolBarPreview\\\"> <label> <i class=\\\"glyphicon glyphicon-time\\\" aria-hidden=\\\"true\\\"></i> <!-- ko text: GetControlTypeTranslatedName() --><!-- /ko --> </label> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!--ko template: {html: GetComplexControlDesignTemplate}--><!--/ko--> <div class=\\\"edit-grid-root dropfield-container group-elements\\\"> <!-- ko if: !_customFields().length --> <div class=\\\"group-control-placeholder\\\">Custom fields</div> <!-- /ko --> <div data-bind=\\\"dragula: { data: _customFields,\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t group: 'ToolBarToDesigner',\\r\\n\\t\\t \\t\\t\\t\\t\\t\\t afterDrop: $data.AfterDropField.bind($data) }\\\" class=\\\"tab-drop-container\\\"> <div class=\\\"alert draggable-field position-r subTableField\\\"> <div data-bind=\\\"click: $parent.RemoveField.bind($parent, $data), preventBubble: ['click']\\\" class=\\\"close-wrapper\\\"> <span class=\\\"close remove-control\\\" title=\\\"Remove field\\\"></span> </div> <!--ko text: $parent.FormatFieldName.call($parent, $data) --><!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as moment from 'moment';\r\n\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { Icon } from 'Core/Icon/Icon';\r\n\r\nimport { TimerStore } from 'Core/Controls/Timer/Stores/TimerStore';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport {CONFIRMATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_EVENTS,\r\n Types\r\n} from \"../../../Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {PUB_SUB_EVENTS} from \"../../../../MenuManager/PubSubEvents\";\r\nimport {IActiveTimer, IActiveTimerModal, TimerModel} from \"Core/Controls/Timer/Models/TimerModel\";\r\nimport {StopTimerResponseModel} from 'Core/Controls/Timer/Models/StopTimerResponseModel';\r\n\r\nimport ActiveTimersModalTemplate from 'Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal.html';\r\nko.templates['Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal'] = ActiveTimersModalTemplate;\r\n\r\nexport class ActiveTimersModal extends Event{\r\n private _modal: Modal;\r\n private _labels = LABELS;\r\n private _activeTimersModal: KnockoutObservableArray<IActiveTimerModal>;\r\n private _el: HTMLElement;\r\n private _notifier: Notifier;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._notifier = new Notifier();\r\n this._el = null;\r\n this._modal = new Modal(\r\n {\r\n width: 480,\r\n closeOnEsc: true,\r\n addClass: 'active-timers-modal-container jBox-padding-10px',\r\n blockScroll: true\r\n },\r\n false\r\n );\r\n this._activeTimersModal = ko.observableArray([]);\r\n }\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n if (this._modal){\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n OnOvertimeClick(timer: IActiveTimerModal) {\r\n const newOvertime = !timer.Overtime();\r\n TimerStore.SetOvertime({ Id: timer.Id, Overtime: newOvertime })\r\n .then(() => timer.Overtime(newOvertime))\r\n .fail(error => this._notifier.Failed(error.message));\r\n }\r\n\r\n StopTimer(timer: IActiveTimerModal){\r\n const dialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.DO_YOU_WANT_TO_STOP_RECORD_NAME.replace(\r\n '{recordName}',\r\n `<b>${timer.SubjectName}</b>`\r\n ),\r\n Type: Types.Question\r\n });\r\n\r\n dialog.On(CONFIRMATION_EVENTS.CONFIRM_SELECTED, this, () =>{\r\n const activeTimersWrapper = $(this._el).find('.active-timers')[0];\r\n\r\n BlockUI.Block({Target: activeTimersWrapper});\r\n TimerStore.StopTimer({EntityId: timer.EntityId, RecordId: timer.RecordId })\r\n .always(() => {\r\n BlockUI.Unblock(activeTimersWrapper);\r\n })\r\n .then((responseModel: StopTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n this._activeTimersModal.splice(this._activeTimersModal.indexOf(timer), 1);\r\n\r\n const stopTimers: Array<IActiveTimer> = [this.GetActiveTimerFromActiveTimerModal(timer)];\r\n this.Trigger('STOP_TIMER', stopTimers);\r\n\r\n if (!this._activeTimersModal().length){\r\n this.Close();\r\n }\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n });\r\n\r\n dialog.Show();\r\n }\r\n\r\n GoToRecordScreen(timer: IActiveTimerModal, event){\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n IsOpenInModal: event.ctrlKey\r\n });\r\n\r\n if (!event.ctrlKey){\r\n this.Close();\r\n }\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Controls/Timer/ActiveTimersModal/Templates/ActiveTimersModal';\r\n }\r\n\r\n GetActiveTimerFromActiveTimerModal(activeTimerModal: IActiveTimerModal | TimerModel): IActiveTimer {\r\n const timer = activeTimerModal as IActiveTimerModal | TimerModel;\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer instanceof TimerModel ? timer.Subject.TranslatedName || timer.Subject.Name : timer.SubjectName\r\n }\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n if (el){\r\n this._el = el[0];\r\n }\r\n\r\n const activeTimerWrapper = $(this._el).find('.active-timers')[0];\r\n BlockUI.Block({Target: activeTimerWrapper});\r\n TimerStore.GetActiveTimers()\r\n .always(()=>{BlockUI.Unblock(activeTimerWrapper);})\r\n .then((timers: TimerModel[]) => {\r\n this._activeTimersModal(\r\n timers.map((timer: TimerModel ) => {\r\n const duration = moment().diff(moment(`${timer.Starting}Z`));\r\n const overtimeObservable = ko.observable(timer.Overtime);\r\n const maxDurationComputed = ko.pureComputed(() => (overtimeObservable() ? 17 : 9) * 60 * 60 * 1000);\r\n\r\n const timersMenu: Array<IActiveTimer> = [this.GetActiveTimerFromActiveTimerModal(timer)];\r\n PubSub.publish('START_ACTIVE_TIMER', timersMenu);\r\n\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n Duration: ko.observable(duration),\r\n DurationFormatted: moment.utc(duration).format(DATE_FORMATS.LONG_TIME.Format),\r\n MaxDuration: maxDurationComputed,\r\n KnobColor: ko.pureComputed(() =>\r\n duration > maxDurationComputed() ? '#e7505a' : overtimeObservable() ? '#5c9bd1' : '#28a745'\r\n ),\r\n Overtime: overtimeObservable,\r\n Tooltip: ko.pureComputed(() =>\r\n LABELS.SET_THE_MAXIMUM_DURATION_TO_HOURS.replace(\r\n '{hours}',\r\n `${overtimeObservable() ? 9 : 17}`\r\n )\r\n ),\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name,\r\n Icon: new Icon(timer.Subject.Icon)\r\n };\r\n })\r\n );\r\n this._modal.Reposition();\r\n });\r\n }\r\n}\r\n","// Module\nvar code = \"<div class=\\\"active-timers-modal box-shadow-wrapper\\\"> <div class=\\\"active-timers-modal__header\\\"> <!-- ko text: _labels.ACTIVE_TIMERS --><!-- /ko --> </div> <div class=\\\"active-timers\\\"> <!-- ko foreach: _activeTimersModal --> <div class=\\\"active-timers-modal__timer-block\\\"> <div class=\\\"active-timers-modal__progress-icon\\\"> <input data-bind=\\\"knob: { value: Duration, max: MaxDuration, fgColor: KnobColor }\\\" data-readOnly=\\\"true\\\" data-width=\\\"30\\\" data-height=\\\"30\\\" data-displayInput=\\\"false\\\" data-bgColor=\\\"#ccc\\\"> </div> <div class=\\\"active-timers-modal__subject-container\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span class=\\\"active-timers-modal__subject\\\" data-bind=\\\"click: $parent.GoToRecordScreen.bind($parent)\\\"> <!-- ko text: SubjectName --><!-- /ko --> </span> </div> <div class=\\\"active-timers-modal__duration\\\"> <!-- ko text: DurationFormatted --><!-- /ko --> </div> <div data-bind=\\\"css: { 'active-timers-modal__overtime--enabled': Overtime }\\\" class=\\\"active-timers-modal__overtime\\\"> <button class=\\\"delete-timer-button\\\" data-bind=\\\"click: $parent.StopTimer.bind($parent)\\\"> <i class=\\\"fa fa-stop\\\" aria-hidden=\\\"true\\\"></i> </button> <button class=\\\"overtime-button\\\" data-bind=\\\"click: $parent.OnOvertimeClick, tooltip: { content: Tooltip(),\\r\\n position: {\\r\\n x: 'left',\\r\\n y: 'center'\\r\\n },\\r\\n outside: 'x',\\r\\n addClass: 'jBox-padding-5px' }\\\"> <i class=\\\"fa fa-history\\\"></i> </button> </div> </div> <!-- /ko --> <!-- ko if: _activeTimersModal().length === 0 --> <div class=\\\"no-active-timers-modal\\\"> <span data-bind=\\\"text: _labels.NO_ACTIVE_TIMERS + ' :('\\\"></span> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { Icon } from 'Core/Icon/Icon';\r\n\r\nexport interface IActiveTimerModal {\r\n Id: number;\r\n Duration: KnockoutObservable<number>;\r\n DurationFormatted: string;\r\n MaxDuration: KnockoutComputed<number>;\r\n KnobColor: KnockoutComputed<string>;\r\n Overtime: KnockoutObservable<boolean>;\r\n Tooltip: KnockoutObservable<string>;\r\n SubjectName: string;\r\n Icon: Icon;\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nexport interface IActiveTimer {\r\n Id: number;\r\n SubjectName: string;\r\n EntityId: number;\r\n RecordId: number;\r\n}\r\n\r\nclass Subject {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserializeAs(IconModel)\r\n Icon: IconModel;\r\n}\r\n\r\nexport class TimerModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Starting: string;\r\n\r\n @deserialize\r\n Overtime: boolean;\r\n\r\n @deserializeAs(Subject)\r\n Subject: Subject;\r\n\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n}\r\n","import {Deserialize} from 'libs/cerialize';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {TimerModel} from 'Core/Controls/Timer/Models/TimerModel';\r\nimport {StartTimerResponseModel} from 'Core/Controls/Timer/Models/StartTimerResponseModel';\r\nimport {StopTimerResponseModel} from 'Core/Controls/Timer/Models/StopTimerResponseModel';\r\n\r\nimport {NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\n\r\nexport class TimerStore {\r\n static GetIsTimerStarted(params: { EntityId: number; RecordId: number }) {\r\n const deferred = P.defer<boolean>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/GetFirstTimer',\r\n type: 'GET'\r\n },\r\n params\r\n }).then(() => {\r\n return deferred.resolve(true);\r\n }).fail(error => {\r\n if (error.status === 404) {\r\n return deferred.resolve(false);\r\n }\r\n\r\n return deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_READING_TIMER_STATE));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static GetActiveTimers() {\r\n const deferred = P.defer<TimerModel[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/GetActiveTimers',\r\n type: 'GET'\r\n }\r\n }).then(data => {\r\n const result: TimerModel[] = Deserialize(data, TimerModel);\r\n deferred.resolve(result);\r\n })\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_GETTING_ACTIVE_TIMERS)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static CheckActiveTimers(params: { EntityId: number; RecordId: number; ActiveTimers: string; DefaultHourkind: number }) {\r\n const deferred = P.defer<boolean>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/CheckActiveTimers',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(data => {\r\n const result: boolean = Deserialize(data);\r\n deferred.resolve(result);\r\n })\r\n .fail(error => deferred.reject(this.GetResponseError(error, \"Error checking active timers\")));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static StartTimer(params: { EntityId: number; RecordId: number; ActiveTimers: string, DefaultHourkind: number }) {\r\n const deferred = P.defer<StartTimerResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/StartTimer',\r\n type: 'POST'\r\n },\r\n params\r\n }).then((data: StartTimerResponseModel) => deferred.resolve(data))\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_STARTING_TIMER)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static StopTimer(params: { EntityId: number; RecordId: number }) {\r\n const deferred = P.defer<any>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/StopTimer',\r\n type: 'POST'\r\n },\r\n params\r\n })\r\n .then((data: StopTimerResponseModel) => deferred.resolve(data))\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_STOPPING_TIMER)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n static SetOvertime(params: { Id: number; Overtime: boolean }) {\r\n const deferred = P.defer<any>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/TimerApi/SetOvertime',\r\n type: 'POST'\r\n },\r\n params\r\n }).then(data => deferred.resolve(null))\r\n .fail(error => deferred.reject(this.GetResponseError(error, NOTIFICATIONS.ERROR_SETTING_OVERTIME)));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}\r\n","export const ActiveTimers = {\r\n NoLimitations: 'NoLimitations',\r\n OneActivePerEntity: 'OneActivePerEntity',\r\n OneActiveForAll: 'OneActiveForAll'\r\n}\r\nexport const PROPERTIES = {\r\n TIMER_AUTOSTART: 'TimerAutoStart'\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\n\r\nconst TimeRegex = /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d$/; //hh:mm:ss\r\n\r\nexport class LiveTimer {\r\n private _timerIntervalId: number | null = null;\r\n private _pausedDuration: number = 0;\r\n private _initTimer: KnockoutObservable<boolean>;\r\n private _formattedDuration: KnockoutObservable<string>\r\n\r\n public CurrentDuration: KnockoutObservable<number>;\r\n\r\n // Test: KnockoutComputed<string>;\r\n\r\n constructor(currentDuration: string | null = null) {\r\n this._initTimer = ko.observable(!!currentDuration);\r\n const totalSeconds = currentDuration ? this.GetDurationInSeconds(currentDuration) : 0;\r\n this.CurrentDuration = ko.observable(totalSeconds);\r\n this._formattedDuration = ko.observable(null);\r\n\r\n this._formattedDuration.subscribe((newValue) => {\r\n });\r\n }\r\n\r\n get InitTimer(): boolean {\r\n return this._initTimer();\r\n }\r\n\r\n HasValidDuration(duration: string): boolean {\r\n return TimeRegex.test(duration);\r\n }\r\n\r\n StartTimer() {\r\n if (this._timerIntervalId) {\r\n clearInterval(this._timerIntervalId);\r\n this._timerIntervalId = null;\r\n }\r\n\r\n this._timerIntervalId = setInterval(() => {\r\n this.CurrentDuration(this.CurrentDuration() + 1);\r\n this._formattedDuration(this.FormattedDuration(this.CurrentDuration()));\r\n }, 1000);\r\n }\r\n\r\n PauseTimer() {\r\n if (this._timerIntervalId) {\r\n clearInterval(this._timerIntervalId);\r\n this._timerIntervalId = null;\r\n this._pausedDuration = this.CurrentDuration();\r\n }\r\n }\r\n\r\n StopTimer() {\r\n if (this._timerIntervalId) {\r\n clearInterval(this._timerIntervalId);\r\n this._timerIntervalId = null;\r\n }\r\n\r\n this._pausedDuration = 0;\r\n this.CurrentDuration(0);\r\n this._formattedDuration('00:00:00');\r\n this._initTimer(false);\r\n }\r\n\r\n UpdateCurrentDuration(currentDuration: string = '00:00:00') {\r\n this._initTimer(true);\r\n const totalSeconds = this.GetDurationInSeconds(currentDuration);\r\n this.CurrentDuration(totalSeconds);\r\n }\r\n\r\n private GetDurationInSeconds(duration: string): number {\r\n const [hours, minutes, seconds] = duration.split(':');\r\n return (+hours * 3600) + (+minutes * 60) + (+seconds);\r\n }\r\n\r\n private TimerIsPaused() {\r\n return this._timerIntervalId === null;\r\n }\r\n\r\n private FormattedDuration(currentDuration?: number): string {\r\n const currDuration = this.TimerIsPaused() ? this._pausedDuration : currentDuration;\r\n const hours = Math.floor(currDuration / 3600);\r\n const minutes = Math.floor((currDuration % 3600) / 60);\r\n const seconds = currDuration % 60;\r\n\r\n return `${hours.toString().padStart(2, '0')}:${minutes\r\n .toString()\r\n .padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\nimport * as moment from \"moment\";\r\n\r\nimport {BaseControl, IControlValue} from '../BaseControl/BaseControl';\r\nimport {IControlParam, IForm, IScreen} from 'Core/Screens/IScreen';\r\n\r\nimport TimerConfigJson from 'Core/Controls/Timer/Configs/timer-config.json';\r\nimport {GeneralProperties} from 'Core/GeneralProperties/GeneralProperties';\r\nimport {ActiveTimersModal} from 'Core/Controls/Timer/ActiveTimersModal/ActiveTimersModal';\r\nimport {TimerStore} from 'Core/Controls/Timer/Stores/TimerStore';\r\n\r\nimport {\r\n ConfirmationDialog, EVENTS as CONFIRMATION_DIALOG_EVENTS, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {CONFIRMATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {DATE_FORMATS} from \"Core/Constants/DateTimeFormats\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport {ActiveTimers} from \"./Constants/ActiveTimers\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {LiveTimer} from \"Core/Controls/Timer/LiveTimer\";\r\nimport {TimerModel, IActiveTimer} from \"Core/Controls/Timer/Models/TimerModel\";\r\nimport {StartTimerResponseModel} from 'Core/Controls/Timer/Models/StartTimerResponseModel';\r\nimport {StopTimerResponseModel} from 'Core/Controls/Timer/Models/StopTimerResponseModel';\r\nimport {EventArgs} from \"Core/Common/Event\";\r\n\r\nimport {KanbanCard} from \"Core/Controls/Kanban/KanbanCard\"\r\nimport {ActionModel} from \"Core/Controls/Kanban/Models/StatusModel\";\r\n\r\nimport ViewTemplate from 'Core/Controls/Timer/Templates/View.html';\r\nimport EditTemplate from 'Core/Controls/Timer/Templates/Edit.html';\r\nimport DesignTemplate from 'Core/Controls/Timer/Templates/Design.html';\r\nimport ToolBarTemplate from 'Core/Controls/Timer/Templates/ToolBar.html';\r\nimport HelpViewTemplate from 'Core/Controls/Timer/Templates/HelpView.html';\r\nimport LiveTimerForKanbanTemplate from 'Core/Controls/Timer/Templates/LiveTimerForKanban.html';\r\n\r\nko.templates['Core/Controls/Timer/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Controls/Timer/Templates/Edit'] = EditTemplate;\r\nko.templates['Core/Controls/Timer/Templates/Design'] = DesignTemplate;\r\nko.templates['Core/Controls/Timer/Templates/ToolBar'] = ToolBarTemplate;\r\nko.templates['Core/Controls/Timer/Templates/HelpView'] = HelpViewTemplate;\r\nko.templates['Core/Controls/Timer/Templates/LiveTimerForKanban'] = LiveTimerForKanbanTemplate;\r\n\r\nexport class Timer extends BaseControl {\r\n HasTimerStarted = ko.observable(false);\r\n private _defaultHourkind: number;\r\n private _defaultActiveTimers: string;\r\n\r\n private _activeTimers: KnockoutObservableArray<IActiveTimer>;\r\n\r\n private _timerEntityId: KnockoutObservable<number>;\r\n private _timerRecordId: KnockoutObservable<number>;\r\n private _currentDuration: KnockoutObservable<string>;\r\n\r\n private _liveTimer: KnockoutObservable<LiveTimer>;\r\n private _kanbanMode: boolean;\r\n private _notifier: Notifier;\r\n private _actionRecord: ActionModel;\r\n\r\n private _timerAutoStart: boolean;\r\n constructor(params: IControlParam) {\r\n super(params, TimerConfigJson);\r\n\r\n this._notifier = new Notifier();\r\n this._style = ko.computed(() => {\r\n return {\r\n backgroundColor: this._backgroundColor(),\r\n color: this._color(),\r\n borderColor: this._borderColor(),\r\n borderWidth: this._border() ? '1px' : '0'\r\n };\r\n });\r\n\r\n this._activeTimers = ko.observableArray([]);\r\n\r\n this._timerEntityId = ko.observable(null);\r\n this._timerRecordId = ko.observable(null);\r\n this._currentDuration = ko.observable(null);\r\n\r\n this._timerAutoStart = false;\r\n\r\n this.ApplyProperties();\r\n\r\n this._liveTimer = ko.observable(new LiveTimer(null));\r\n this._kanbanMode = false;\r\n this._actionRecord = null;\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n const self = this;\r\n\r\n PubSub.subscribe('STOP_ACTIVE_TIMERS',(message, data: Array<IActiveTimer>) =>{\r\n const stopTimer: IActiveTimer = data[0];\r\n\r\n if (stopTimer && this.TimerEntityId === stopTimer.EntityId && this.TimerRecordId === stopTimer.RecordId){\r\n self.HasTimerStarted(false);\r\n self.ResetTimersInActionRecord(self.ActionRecord);\r\n self.StopLiveTimer(self);\r\n }\r\n\r\n const idToDelete = stopTimer.Id;\r\n const indexToDelete = self._activeTimers().findIndex((item) => item.Id === idToDelete);\r\n if (indexToDelete !== -1) {\r\n self._activeTimers.splice(indexToDelete, 1);\r\n }\r\n })\r\n\r\n PubSub.subscribe('START_ACTIVE_TIMERS', (message, data: Array<TimerModel>) => {\r\n const startTimer: TimerModel = data[0];\r\n\r\n if (startTimer && this.TimerEntityId === startTimer.EntityId && this.TimerRecordId === startTimer.RecordId){\r\n this.HasTimerStarted(true);\r\n\r\n if (this.KanbanMode) {\r\n this.ActionRecord.NewActiveTimerModel = startTimer;\r\n }\r\n this.StartLiveTimer(startTimer);\r\n\r\n const activeTimers: Array<IActiveTimer> = _.map(data, (timer: TimerModel) => {\r\n let activeTimer: IActiveTimer = {\r\n Id: timer.Id,\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n }\r\n return activeTimer;\r\n });\r\n\r\n const activeTimerIds = new Set(this._activeTimers().map(timer => timer.Id));\r\n this._activeTimers.push(...activeTimers.filter(timer => !activeTimerIds.has(timer.Id)));\r\n\r\n PubSub.publish('START_ACTIVE_TIMER', activeTimers);\r\n } else {\r\n if (this._defaultActiveTimers !== ActiveTimers.NoLimitations && this._activeTimers().length){\r\n _.each(this._activeTimers(), (timer: IActiveTimer) => {\r\n if (this.TimerRecordId === timer.RecordId) {\r\n PubSub.publish('STOP_ACTIVE_TIMERS', [timer]);\r\n }\r\n })\r\n }\r\n }\r\n })\r\n\r\n }\r\n get ActiveTimers() : KnockoutObservableArray<IActiveTimer> {\r\n return this._activeTimers;\r\n }\r\n\r\n get TimerAutostart(): boolean {\r\n return this._timerAutoStart\r\n }\r\n\r\n set TimerEntityId(entityId: number) {\r\n this._timerEntityId(entityId);\r\n };\r\n\r\n get TimerEntityId(): number {\r\n const form: IForm = this.GetForm();\r\n return this._timerEntityId() ||\r\n (form && form.GetScreen() && form.GetScreen().GetEntityId());\r\n };\r\n\r\n set TimerRecordId(recordId: number) {\r\n this._timerRecordId(recordId);\r\n };\r\n\r\n get TimerRecordId(): number {\r\n const form: IForm = this.GetForm();\r\n return this._timerRecordId() ||\r\n (form && form.GetScreen() && form.GetScreen().GetRecordId());\r\n };\r\n\r\n set ActionRecord(record: ActionModel) {\r\n this._actionRecord = record;\r\n }\r\n\r\n get ActionRecord(): ActionModel {\r\n return this._actionRecord\r\n }\r\n\r\n set KanbanMode(data: boolean) {\r\n this._kanbanMode = data;\r\n }\r\n\r\n get KanbanMode(): boolean {\r\n return this._kanbanMode\r\n }\r\n\r\n set CurrentDuration(starting: string) {\r\n const durationInt = moment().diff(moment(`${starting}Z`));\r\n const durationFormatted = moment.utc(durationInt).format(DATE_FORMATS.LONG_TIME.Format);\r\n\r\n this._currentDuration(durationFormatted);\r\n }\r\n\r\n get CurrentDuration(): string {\r\n return this._currentDuration();\r\n }\r\n\r\n get TooltipValue(): string {\r\n return LABELS.START_TIMER;\r\n }\r\n\r\n SetValue(value: IControlValue): void {\r\n if (!this.TimerEntityId || !this.TimerRecordId) {\r\n this._model().IsDisabledByCondition = true;\r\n }\r\n }\r\n\r\n ShowConfirmModalForCheckActiveTimers(target?: HTMLElement){\r\n let confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.THE_TIMER_IS_ALREADY_STARTED,\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n TimerStore.StartTimer({EntityId: this.TimerEntityId, RecordId: this.TimerRecordId, ActiveTimers: this._defaultActiveTimers, DefaultHourkind: this._defaultHourkind })\r\n .always(() => {\r\n BlockUI.Unblock(target ? target : null);\r\n })\r\n .then((responseModel: StartTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n this.HasTimerStarted(true);\r\n PubSub.publish('START_ACTIVE_TIMERS', [responseModel.ActiveTimer]);\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n\r\n InitTimer() {\r\n if (this.HasTimerStarted()) {\r\n this.StopTimer(this.TimerEntityId, this.TimerRecordId);\r\n return;\r\n }\r\n\r\n if (this._defaultActiveTimers === ActiveTimers.NoLimitations) {\r\n this.StartTimer(this.TimerEntityId, this.TimerRecordId, this._el);\r\n return;\r\n }\r\n\r\n this.CheckActiveTimers(this.TimerEntityId, this.TimerRecordId);\r\n }\r\n\r\n OnTimerClick() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n this.InitTimer();\r\n }\r\n\r\n OpenActiveTimersModal() {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n const activeTimersModal = new ActiveTimersModal();\r\n activeTimersModal.On('STOP_TIMER', this, (data: EventArgs)=>{\r\n const activeTimer: IActiveTimer = data.data;\r\n if (this.TimerEntityId === activeTimer.EntityId && this.TimerRecordId === activeTimer.RecordId){\r\n this.HasTimerStarted(false);\r\n }\r\n PubSub.publish('STOP_ACTIVE_TIMERS', activeTimer);\r\n })\r\n activeTimersModal.Show();\r\n }\r\n\r\n AutoStopActiveTimer(): void {\r\n if (this.Screen.AllowTimerAutoStop && this.IsRunTime && this.IsConsultScreen ) {\r\n if (this._timerAutoStart && this.HasTimerStarted()) {\r\n const stopTimer: IActiveTimer = _.find(this._activeTimers(), timer=> timer.RecordId === this.TimerRecordId && timer.EntityId === this.TimerEntityId);\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: LABELS.STOP_THE_TIMER_FOR.replace('{recordName}', `<b>${stopTimer.SubjectName}</b>`),\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: LABELS.YES,\r\n TextDecline: LABELS.NO\r\n });\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n this.StopTimer(this.TimerEntityId, this.TimerRecordId);\r\n });\r\n\r\n confirmationDialog.Show();\r\n }\r\n }\r\n }\r\n\r\n AutoStartTimer() {\r\n if (!this.HasTimerStarted() && this.IsRunTime && this.IsConsultScreen) {\r\n if (this._timerAutoStart) {\r\n this.OnTimerClick();\r\n }\r\n }\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n const self = this;\r\n if (el) {\r\n this._el = el[0];\r\n }\r\n\r\n if (this.TimerEntityId && this.TimerRecordId && !this.KanbanMode) {\r\n TimerStore.GetIsTimerStarted({EntityId: this.TimerEntityId, RecordId: this.TimerRecordId})\r\n .then((isTimerStarted: boolean) => {\r\n this.HasTimerStarted(isTimerStarted);\r\n this.AutoStartTimer();\r\n })\r\n .fail((error) => {\r\n this._notifier.Failed(error.message)\r\n });\r\n this.GetActiveTimers();\r\n }\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(this._el, () => {\r\n self.StopLiveTimer(self);\r\n self.AutoStopActiveTimer();\r\n });\r\n }\r\n\r\n GetActiveTimers(){\r\n TimerStore.GetActiveTimers()\r\n .then(timers => {\r\n this._activeTimers(\r\n timers.map(timer => {\r\n return {\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n };\r\n })\r\n );\r\n if (this._activeTimers().length){\r\n PubSub.publish('START_ACTIVE_TIMERS', timers);\r\n }\r\n })\r\n }\r\n\r\n StopTimer(_entityId: number = null, _recordId: number = null, target?: HTMLElement): void{\r\n const entityId = _entityId ? _entityId : this.TimerEntityId;\r\n const recordId = _recordId ? _recordId : this.TimerRecordId;\r\n\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n TimerStore.StopTimer({EntityId: entityId, RecordId: recordId })\r\n .always(() => {\r\n BlockUI.Unblock(target ? target : null);\r\n })\r\n .then((responseModel: StopTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n this.HasTimerStarted(false);\r\n const stopTimer: IActiveTimer = _.find(this._activeTimers(), timer=> timer.RecordId === recordId && timer.EntityId === entityId);\r\n if (stopTimer){\r\n const timers: Array<IActiveTimer> = [stopTimer]\r\n PubSub.publish('STOP_ACTIVE_TIMERS', timers);\r\n }\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n }\r\n\r\n StartTimer(_entityId: number = null, _recordId: number = null, target?: HTMLElement): void {\r\n const entityId = _entityId ? _entityId : this.TimerEntityId;\r\n const recordId = _recordId ? _recordId : this.TimerRecordId;\r\n\r\n BlockUI.Block(BlockUI.GetTargetObjectFromTarget(target));\r\n TimerStore.StartTimer({EntityId: entityId, RecordId: recordId, ActiveTimers: this._defaultActiveTimers, DefaultHourkind: this._defaultHourkind})\r\n .always(() => {\r\n BlockUI.Unblock(target ? target : null);\r\n })\r\n .then((responseModel: StartTimerResponseModel) => {\r\n _.each(responseModel.WarningMessages, message => this._notifier.Failed(message));\r\n\r\n if (this._timerAutoStart) {\r\n let timerName: string = `<b>${responseModel.ActiveTimer.Subject.TranslatedName ||responseModel.ActiveTimer.Subject.Name}</b>`;\r\n new Notifier().Success(LABELS.THE_TIMER_FOR_STARTED_AUTOMATICALLY.replace('{recordName}', timerName));\r\n }\r\n PubSub.publish('START_ACTIVE_TIMERS', [responseModel.ActiveTimer]);\r\n })\r\n .fail(error => this._notifier.Failed(error.message));\r\n }\r\n\r\n CheckActiveTimers(_entityId: number = null, _recordId: number = null, target?: HTMLElement): void {\r\n const entityId = _entityId ? _entityId : this.TimerEntityId;\r\n const recordId = _recordId ? _recordId : this.TimerRecordId;\r\n\r\n BlockUI.Block();\r\n TimerStore.CheckActiveTimers({EntityId: entityId, RecordId: recordId, ActiveTimers: this._defaultActiveTimers, DefaultHourkind: this._defaultHourkind})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result){\r\n this.ShowConfirmModalForCheckActiveTimers(target);\r\n } else {\r\n this.HasTimerStarted(true);\r\n this.GetActiveTimers();\r\n }\r\n })\r\n .fail(error => {\r\n this._notifier.Failed(error.message)\r\n });\r\n }\r\n\r\n ApplyProperties() {\r\n if (this.Properties) {\r\n if (this.Properties.Hourkinds) {\r\n\r\n _.each(this.Properties.Hourkinds.Properties, (property: any) => {\r\n if (property.DefaultHourkind) {\r\n this._defaultHourkind = parseInt(property.DefaultHourkind.Value) || null;\r\n }\r\n });\r\n }\r\n\r\n if (this.Properties.ActiveTimers) {\r\n\r\n _.each(this.Properties.ActiveTimers.Properties, (property: any) => {\r\n if (property.DefaultActiveTimers) {\r\n this._defaultActiveTimers = property.DefaultActiveTimers.Value || null;\r\n }\r\n });\r\n }\r\n\r\n if (this.Properties.AutoStart) {\r\n _.each(this.Properties.AutoStart.Properties, (property: any) => {\r\n this._timerAutoStart = property.TimerAutoStart || this._model().IsAutoStartByCondition;\r\n });\r\n }\r\n\r\n this.AssignProperty('Styling', 'BackgroundColor', this._backgroundColor);\r\n this.AssignProperty('Styling', 'TextColor', this._color);\r\n this.AssignProperty('Styling', 'Border', this._border);\r\n this.AssignProperty('Styling', 'BorderColor', this._borderColor);\r\n }\r\n }\r\n\r\n private AssignProperty(groupedBy: string, propertyName: string, propertyHolder: KnockoutObservable<any> | any) {\r\n if (this.Properties[groupedBy]) {\r\n _.each(this.Properties[groupedBy].Properties,\r\n (property: any) => {\r\n if (property.hasOwnProperty(propertyName)) {\r\n propertyHolder(property[propertyName]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n StopLiveTimer(_self?: Timer){\r\n const liveTimer = _self?.KanbanMode ? _self._liveTimer() : this.KanbanMode && this._liveTimer();\r\n\r\n if (liveTimer?.InitTimer) {\r\n liveTimer.StopTimer();\r\n }\r\n }\r\n\r\n StartLiveTimer(timer: TimerModel){\r\n if (this.KanbanMode){\r\n const durationInt = moment().diff(moment(`${timer.Starting}Z`));\r\n const durationFormatted = moment.utc(durationInt).format(DATE_FORMATS.LONG_TIME.Format);\r\n this.SetLiveTimerCurrentDuration(durationFormatted);\r\n }\r\n }\r\n\r\n SetLiveTimerCurrentDuration(currentDuration: string): void {\r\n const liveTimer = this._liveTimer();\r\n if ( liveTimer.HasValidDuration(currentDuration) ) {\r\n liveTimer.UpdateCurrentDuration(currentDuration);\r\n liveTimer.StartTimer();\r\n }\r\n }\r\n\r\n SetKanbanActiveTimer(timer: TimerModel) {\r\n const durationInt = moment().diff(moment(`${timer.Starting}Z`));\r\n const durationFormatted = moment.utc(durationInt).format(DATE_FORMATS.LONG_TIME.Format);\r\n this.HasTimerStarted(true);\r\n\r\n this._activeTimers().push({\r\n EntityId: timer.EntityId,\r\n RecordId: timer.RecordId,\r\n Id: timer.Id,\r\n SubjectName: timer.Subject.TranslatedName || timer.Subject.Name\r\n });\r\n\r\n this.SetLiveTimerCurrentDuration(durationFormatted);\r\n }\r\n\r\n ResetTimersInActionRecord(actionRecord: ActionModel): void {\r\n if (actionRecord) {\r\n actionRecord.NewActiveTimerModel = null;\r\n actionRecord.ActiveTimer = null;\r\n }\r\n }\r\n\r\n OnTimerClickFromKanbanCard(kanbanCard: KanbanCard, timer: Timer, event: JQuery.ClickEvent<HTMLElement>): void {\r\n if (this._help.IsHelpButtonPressed()) {\r\n this._help.ShowControlHelp(this);\r\n return;\r\n }\r\n\r\n const target: HTMLElement = kanbanCard && kanbanCard.Element as HTMLElement;\r\n\r\n if (this.HasTimerStarted()) {\r\n this.StopTimer(this.TimerEntityId, this.TimerRecordId, target);\r\n return;\r\n }\r\n\r\n if (this._defaultActiveTimers === ActiveTimers.NoLimitations) {\r\n this.StartTimer(this.TimerEntityId, this.TimerRecordId, target);\r\n return;\r\n }\r\n\r\n this.CheckActiveTimers(this.TimerEntityId, this.TimerRecordId, target);\r\n }\r\n\r\n GetLiveTimerForKanbanTemplateName() {\r\n return 'Core/Controls/Timer/Templates/LiveTimerForKanban';\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button data-bind=\\\"click: OnTimerClick, style: _style\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp timer-button\\\"> <i class=\\\"fa fa-clock-o\\\" aria-hidden=\\\"true\\\" data-bind=\\\"css:{'spin': HasTimerStarted}\\\"></i> <span> <!-- ko if: HasTimerStarted --> <!-- ko text: _labels.STOP --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: HasTimerStarted --> <!-- ko text: _labels.START --><!-- /ko --> <!-- /ko --> </span> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button data-bind=\\\"click: OpenActiveTimersModal, tooltip: { content: _labels.CLICK_TO_SHOW_ACTIVE_TIMERS }, style: _style\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp\\\"><i class=\\\"fa fa-hourglass\\\" aria-hidden=\\\"true\\\"></i></button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button data-bind=\\\"click: OnTimerClick, attr: { disabled: IsDisabledByCondition }, style: _style\\\" tabindex=\\\"-1\\\" class=\\\"btn blue-sharp timer-button\\\"> <i class=\\\"fa fa-clock-o\\\" data-bind=\\\"css:{'spin': HasTimerStarted}\\\"></i> <span> <!-- ko if: HasTimerStarted --> <!-- ko text: _labels.STOP --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: HasTimerStarted --> <!-- ko text: _labels.START --><!-- /ko --> <!-- /ko --> </span> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"attr: { disabled: IsDisabledByCondition }, style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button data-bind=\\\"click: OpenActiveTimersModal, attr: { disabled: IsDisabledByCondition }, tooltip: { content: _labels.CLICK_TO_SHOW_ACTIVE_TIMERS }, style: _style\\\" tabindex=\\\"-1\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\" class=\\\"btn blue-sharp\\\"><i class=\\\"fa fa-hourglass\\\"></i></button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-right:none;border-top-right-radius:unset;border-bottom-right-radius:unset\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: _labels.TIMER --><!-- /ko --> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\"> <i class=\\\"fa fa-hourglass\\\"></i> </button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<a href=\\\"javascript:;\\\" class=\\\"btn blue-sharp subFormControl\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: _labels.TIMER --><!-- /ko --> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"subFormControl timer-control--box\\\"> <span class=\\\"timer-control\\\"> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-right:none;border-top-right-radius:unset;border-bottom-right-radius:unset\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: _labels.TIMER --><!-- /ko --> </button> <span class=\\\"timer-control__wrapperSeparator\\\" data-bind=\\\"style: {\\r\\n backgroundColor: _backgroundColor,\\r\\n borderTopStyle: 'solid',\\r\\n borderBottomStyle: 'solid',\\r\\n borderTopColor: _borderColor,\\r\\n borderBottomColor: _borderColor,\\r\\n borderTopWidth: _border ? '1px' : '0',\\r\\n borderBottomWidth: _border ? '1px' : '0',\\r\\n borderRadius: 'unset'\\r\\n }\\\"> <span class=\\\"timer-control__separator\\\" data-bind=\\\"style: {backgroundColor: _color}\\\"></span> </span> <button class=\\\"btn blue-sharp\\\" data-bind=\\\"style: _style\\\" style=\\\"border-left:none;border-bottom-left-radius:unset;border-top-left-radius:unset\\\"> <i class=\\\"fa fa-hourglass\\\"></i> </button> </span> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"kanban-card-timer\\\" data-bind=\\\"click: OnTimerClickFromKanbanCard.bind($data, $parent), tooltip: {content: TooltipValue}\\\"> <div class=\\\"kanban-card-timer__icon-box\\\"> <i class=\\\"fa fa-clock-o\\\" data-bind=\\\"css:{'spin': HasTimerStarted}\\\"></i> </div> <!-- ko with: _liveTimer() --> <!-- ko if: $parent.HasTimerStarted() --> <!-- ko if: _initTimer() --> <span class=\\\"kanban-card-timer__duration slide-in-animated\\\" data-bind=\\\"text: _formattedDuration()\\\"></span> <!-- /ko --> <!-- /ko --> <!-- <span class=\\\"kanban-card-timer__duration\\\" data-bind=\\\"text: _formattedDuration(), css: {'animated-text': _initTimer(), 'visible-duration': _initTimer(), 'not-visible-duration': !_initTimer()}\\\"></span>--> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export enum DataModes {\r\n\tDefault,\r\n\tFollowUp,\r\n\tCopy,\r\n\tCopyWithRelations,\r\n\tCopyToType\r\n}","export class LifeStatuses {\r\n\tstatic Enabled = new LifeStatuses(\"Enabled\");\r\n\tstatic Disabled = new LifeStatuses(\"Disabled\");\r\n\r\n\tprivate readonly _name: string;\r\n\r\n\tprivate constructor(name: string) {\r\n\t\tthis._name = name;\r\n\t}\r\n\r\n\tget Name() {\r\n\t\treturn this._name;\r\n\t}\r\n\r\n\tstatic GetAll() {\r\n\t\treturn [\r\n\t\t\tLifeStatuses.Enabled.Name,\r\n\t\t\tLifeStatuses.Disabled.Name\r\n\t\t];\r\n\t}\r\n}","export enum SearchGroups {\r\n\tAll,\t\t\t\r\n\tActive,\t\t\t\r\n\tArchive,\t\t\r\n\tExample,\t\t\r\n\r\n\tPlanned,\r\n\tAcquired,\r\n\tMaintained,\r\n\tOperational,\r\n\tRetired\r\n}\r\n\r\nexport const LifeStatusGroupIndexes = [0, 1, 2, 3];\r\n\r\nexport const SimpleFilterGroupsSet = [0, 1, 2, 3];\r\n\r\nexport const MappedSearchGroups = {\r\n\t[SearchGroups[0]]: 0,\r\n\t[SearchGroups[1]]: 1,\r\n\t[SearchGroups[2]]: 6,\r\n\t[SearchGroups[3]]: 8,\r\n\r\n\t[SearchGroups[4]]: 2,\r\n\t[SearchGroups[5]]: 3,\r\n\t[SearchGroups[6]]: 4,\r\n\t[SearchGroups[7]]: 5,\r\n\t[SearchGroups[8]]: 7,\r\n\t[SearchGroups[9]]: 1\r\n};","import * as moment from 'moment';\r\n\r\nimport { DATE_FORMATS } from 'Core/Constants/DateTimeFormats';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\n\r\nexport interface ErrorItem {\r\n Error: string;\r\n Timestamp: string;\r\n}\r\n\r\nconst errors: ErrorItem[] = [];\r\n\r\nexport const ErrorHolder = {\r\n SaveError: (error: string) => {\r\n errors.push({\r\n Error: error,\r\n Timestamp: moment(FormatConverter.ShiftTimeZone(moment().format(), true)).format(\r\n DATE_FORMATS.FULL_DATETIME.Format\r\n )\r\n });\r\n },\r\n GetErrors: () => errors\r\n};\r\n","import * as ko from \"knockout\";\r\n\r\nexport abstract class BaseProperty {\r\n private _name: string;\r\n\tprivate _type: string;\r\n\tprivate _valueRequired: boolean;\r\n\tprotected _isEnabled: KnockoutObservable<boolean>;\r\n\tprivate _warningMessage: KnockoutObservable<string>;\r\n\tprivate _propertyDescriptionType: string;\r\n\r\n Value: KnockoutObservable<any>;\r\n\r\n\tconstructor(property: IPropertyDescription, isEnabled: boolean = true) {\r\n this._name = property.Name;\r\n\t\tthis._type = property.PropertyManager;\r\n\t\tthis._propertyDescriptionType = property.Type;\r\n\t\tthis._valueRequired = property.ValueRequired;\r\n\t\tthis._isEnabled = ko.observable(isEnabled);\r\n\t\tthis._warningMessage = ko.observable(null);\r\n\t}\r\n\r\n\tget PropertyDescriptionType() {\r\n\t\treturn this._propertyDescriptionType\r\n\t}\r\n\r\n\tOnInit() {\r\n\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return \"\";\r\n }\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n\r\n\tget IsEnabled(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEnabled;\r\n\t}\r\n\r\n\tSetEnabled(enable: boolean) {\r\n\t\tthis._isEnabled(enable);\r\n\t}\r\n\r\n get Name() {\r\n return this._name;\r\n }\r\n\r\n get Type() {\r\n return this._type;\r\n\t}\r\n\r\n\tget ValueRequired() {\r\n\t\treturn this._valueRequired;\r\n\t}\r\n\r\n\tset WarningMessage(warningMessage: string) {\r\n\t\tthis._warningMessage(warningMessage);\r\n\t}\r\n\r\n\tget WarningMessage(): string {\r\n\t\treturn this._warningMessage();\r\n\t}\r\n\r\n GetDefaultValue(): any { }\r\n\r\n\tSetValue(propertyValue: any) { }\r\n\r\n\tIsValid(): boolean { return true; }\r\n\r\n\tErrorMessage(): string { return null; }\r\n\r\n\tReset() {};\r\n}\r\n\r\nexport interface IPropertyOption {\r\n\tName: string;\r\n\tValue: any;\r\n}\r\n\r\nexport interface IPropertyDescription {\r\n Name: string;\r\n\tType: string;\r\n\tPropertyManager: string;\r\n\tValueRequired: boolean;\r\n Options: Array<IPropertyOption>;\r\n Source: ISource;\r\n\tDefaultValue?: any;\r\n}\r\n\r\nexport interface IPropertySortOption {\r\n\tFieldId: number;\r\n\tSortOrder: number;\r\n}\r\n\r\nexport interface ISource {\r\n TableName: string;\r\n Value: string;\r\n DisplayValue: string;\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {BaseProperty, IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nexport class BaseSelectProperty extends BaseProperty {\r\n protected _options: KnockoutObservableArray<IPropertyOption>;\r\n private _initialValue: KnockoutObservable<IPropertyOption>;\r\n private _labels = LABELS;\r\n\r\n Value: KnockoutObservable<IPropertyOption>;\r\n IsInitiated: KnockoutObservable<boolean>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption) {\r\n super(property);\r\n\r\n this._options = ko.observableArray([]);\r\n this._initialValue = ko.observable(propertyValue);\r\n this.Value = ko.observable(null);\r\n this.IsInitiated = ko.observable(false);\r\n }\r\n\r\n get Options(): KnockoutObservableArray<IPropertyOption> {\r\n return this._options;\r\n }\r\n\r\n GetDefaultValue() {\r\n return _.first(this._options());\r\n }\r\n\r\n SetValue(propertyValue: IPropertyOption, isSearchMode?: boolean): void {\r\n if (!propertyValue) {\r\n this.Value(this.GetDefaultValue());\r\n return;\r\n }\r\n\r\n let selectedValue = _.find(this._options(), option => option.Value === propertyValue.Value);\r\n\r\n this.Value(selectedValue || this.GetDefaultValue());\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this.ValueRequired) {\r\n return this.Value() && this.Value().Value;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n Init(options: IPropertyOption[], propertyValue: IPropertyOption, isSearchMode?: boolean) {\r\n this.SetOptions(options);\r\n this.SetValue(propertyValue, isSearchMode);\r\n this.IsInitiated(true);\r\n }\r\n\r\n private SetOptions(options: IPropertyOption[]) {\r\n if (!this.ValueRequired) {\r\n const selectLabel = LABELS.SELECT_LABEL + '....';\r\n const empty: IPropertyOption = {Name: selectLabel, Value: null};\r\n\r\n let firstElem = _.first(options);\r\n if (firstElem && firstElem.Name !== selectLabel && !!firstElem.Value){\r\n options.unshift(empty);\r\n }\r\n }\r\n\r\n this._options(options);\r\n }\r\n\r\n RewriteOptions(options: IPropertyOption[]) {\r\n this.SetOptions(options);\r\n\r\n if (this._initialValue()) {\r\n this.SetValue(this._initialValue());\r\n this._initialValue(null);\r\n }\r\n }\r\n}","export const CHECKBOX_PROPERTIES = {\r\n HIDE_CAPTION: 'HideCaption'\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport {ColorModel} from \"Core/Components/ColorSelector/ColorModels/ColorModel\";\r\nimport {HexColorModel} from \"Core/Components/ColorSelector/ColorModels/Hex/HexColorModel\";\r\n\r\nimport ColorPickerTemplate from \"Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker\"] = ColorPickerTemplate;\r\n\r\nexport class ColorPicker extends BaseProperty {\r\n private _colorModel: ColorModel;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n this.Init();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/ColorPicker/Templates/ColorPicker\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return '';\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n this._colorModel.SetColor(this.Value());\r\n }\r\n\r\n private Init() {\r\n this._colorModel = new HexColorModel({Label: this.Name, InitialColor: this.Value()});\r\n\r\n this._colorModel.On(\"COLOR_SET\", this, eventArgs => this.Value(eventArgs.data.Name));\r\n this._colorModel.On('COLOR_RESET', this, () => this.Value(null));\r\n }\r\n}\r\n\r\n","// Module\nvar code = \"<!-- ko with: _colorModel --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","export const GENERAL_PROPERTIES = {\r\n HIDE_IF_CONDITION: 'HideIfCondition'\r\n}","import * as _ from \"underscore\";\r\nimport * as ko from \"knockout\";\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {BaseSelectProperty} from \"Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty\";\r\nimport {SearchScreen} from \"Core/Screens/SearchScreen/SearchScreen\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport SelectPropertyTemplate\r\n from \"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty.html\";\r\nimport SelectPropertyTemplateSource\r\n from \"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty\"] = SelectPropertyTemplate;\r\nko.templates[\"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource\"] = SelectPropertyTemplateSource;\r\n\r\nexport class SelectProperty extends BaseSelectProperty {\r\n private _templateName: string;\r\n private _isSearch: KnockoutObservable<boolean>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _tableName: string;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, getData: boolean = true) {\r\n super(property, propertyValue);\r\n this._templateName = \"Core/GeneralProperties/Managers/SelectProperty/Templates/SelectProperty\";\r\n this._isSearch = ko.observable(null);\r\n this._searchTerm = ko.observable('');\r\n this._tableName = '';\r\n\r\n if (property.Source && getData) {\r\n this._templateName = 'Core/GeneralProperties/Managers/SelectProperty/Templates/SelectPropertySource';\r\n this._tableName = property.Source.TableName;\r\n RecordStore.GetLookupData({\r\n TableName: property.Source.TableName,\r\n Value: property.Source.Value,\r\n DisplayValue: property.Source.DisplayValue\r\n }).then((result) => {\r\n let items: IPropertyOption[] = _.map(result.Data,\r\n (item: IPropertyOption) => {\r\n return {Name: item.Name, Value: item.Value}\r\n });\r\n this._isSearch(result.Count > items.length);\r\n this.Init(items, propertyValue, result.Count > items.length);\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n } else {\r\n this.Init(property.Options || [], propertyValue);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return this._templateName;\r\n }\r\n\r\n SetValue(propertyValue: IPropertyOption, isSearchMode?: boolean): void {\r\n if (!propertyValue) {\r\n this.Value(this.GetDefaultValue());\r\n return;\r\n }\r\n\r\n let selectedValue: IPropertyOption = null;\r\n if (isSearchMode) {\r\n selectedValue = propertyValue;\r\n } else {\r\n selectedValue = _.find(this._options(), option => option.Value === propertyValue.Value);\r\n }\r\n\r\n this.Value(selectedValue || this.GetDefaultValue());\r\n }\r\n\r\n Clear () {\r\n const selectLabel = LABELS.SELECT_LABEL + '....';\r\n const empty: IPropertyOption = {Name: selectLabel, Value: null};\r\n this.Value(empty);\r\n }\r\n\r\n Search(): void {\r\n const searchScreen = new SearchScreen({\r\n EntityName: this._tableName,\r\n SearchTerm: this._searchTerm(),\r\n ButtonAdd: false,\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n this.Value({Name: `${eventArgs.data.Name}`, Value: `${eventArgs.data.RecordId}`});\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"property-container\\\" data-bind=\\\"css: {'is-search-mode': _isSearch()}\\\"> <span data-bind=\\\"text: Name\\\"></span> <!-- ko if: !_isSearch() --> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> <!-- /ko --> <!-- ko if: _isSearch() --> <div class=\\\"search-select-box\\\"> <span data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"formBtnTitle search-input search-input-name typeahead input-medium form-control\\\"> <!-- ko if: Value() --> <!--ko text: Value().Name --><!--/ko--> <!-- /ko --> <!-- ko if: !Value() --> <!--ko text: 'Select ...' --><!--/ko--> <!-- /ko --> </span> <a data-bind=\\\"click: $data.Search.bind($data,true)\\\" class=\\\"subFormControl search-magnifier\\\"> <span class=\\\"icon-magnifier\\\"></span> </a> <a data-bind=\\\"click: $data.Clear.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"subFormControl search-magnifier red\\\" style=\\\"\\\"> <i class=\\\"fa fa-times\\\"></i> </a> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","export class BusinessRoleRestrictions {\r\n static get View() {\r\n return new BusinessRoleRestriction('Hide', 2, 'fa-eye')\r\n }\r\n\r\n static get Create() {\r\n return new BusinessRoleRestriction('Create', 4, 'fa-plus-square-o')\r\n }\r\n\r\n static get Update() {\r\n return new BusinessRoleRestriction('Update', 8, 'fa-pencil')\r\n }\r\n\r\n static get Delete() {\r\n return new BusinessRoleRestriction('Delete', 16, 'fa-trash-o');\r\n }\r\n\r\n static AsList(value?: number) {\r\n const list = [this.View, this.Create, this.Update, this.Delete];\r\n if (!value && value !== 0) return list;\r\n\r\n return list.filter(restriction => (restriction.Value & value) === restriction.Value);\r\n }\r\n}\r\n\r\nclass BusinessRoleRestriction {\r\n constructor(public readonly Name: string, public readonly Value: number, public readonly IconName: string) {\r\n }\r\n\r\n PresentIn(value: number) {\r\n return (this.Value & value) === this.Value;\r\n }\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BusinessRoleDto} from './Models/BusinessRoleDto';\r\n\r\nexport class TabSecurityStore {\r\n\r\n GetBusinessRoles() {\r\n const deferred = P.defer<BusinessRoleDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/BusinessRolesApi/GetBusinessRoles',\r\n type: 'GET'\r\n }\r\n })\r\n .then(roles => deferred.resolve(roles))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error getting business roles')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n GetUserBusinessRoles(userId: number) {\r\n const deferred = P.defer<BusinessRoleDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/BusinessRolesApi/GetUserBusinessRoles',\r\n type: 'GET'\r\n },\r\n params: { userId }\r\n })\r\n .then(roles => deferred.resolve(roles))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error getting business roles')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport {BaseProperty, IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport WebSizePropertyTemplate\r\n from \"Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty\"] = WebSizePropertyTemplate;\r\n\r\nexport interface IWebSizeValue {\r\n Value: number;\r\n Unit: {\r\n Name: string;\r\n Value: any;\r\n }\r\n}\r\n\r\nexport class WebSizeProperty extends BaseProperty{\r\n private _options: KnockoutObservableArray<IPropertyOption>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IWebSizeValue) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n this._options = ko.observableArray([]);\r\n\r\n this.Init(property.Options || [], propertyValue);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/WebSizeProperty/Templates/WebSizeProperty\";\r\n }\r\n\r\n private Init(options: IPropertyOption[], propertyValue: IWebSizeValue) {\r\n this.SetOptions(options);\r\n this.SetValue(propertyValue);\r\n }\r\n\r\n private SetOptions(options: IPropertyOption[]) {\r\n this._options(options);\r\n }\r\n\r\n get Options(): KnockoutObservableArray<IPropertyOption> {\r\n return this._options;\r\n }\r\n\r\n SetValue(propertyValue: IWebSizeValue): void {\r\n if (propertyValue) {\r\n if (propertyValue.Unit){\r\n propertyValue.Unit = _.find(this._options(), option => option.Value === propertyValue.Unit.Value);\r\n } else {\r\n let unit = _.find(this._options(), option => option.Value === propertyValue.Value)\r\n propertyValue = {\r\n Value: 100,\r\n Unit: unit\r\n }\r\n }\r\n\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetDefaultValue(): any {\r\n return {\r\n Value: 100,\r\n Unit: '%'\r\n };\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <label data-bind=\\\"text: Name\\\"></label> <!--ko with: Value--> <div class=\\\"numberPixelOrPercentage\\\"> <input data-bind=\\\"value: Value,\\r\\n integerInputMask: { allowMinus: false, rightAlign: false },\\r\\n attr:{name: $parent.Type}\\\" class=\\\"form-control\\\"/> <select data-bind=\\\"options: $parent.Options, optionsText: 'Name', value: Unit\\\" class=\\\"form-control\\\"></select> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SubFlowDto {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}\r\n","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { SubFlowDto } from './SubFlowDto';\r\nimport { Deserialize } from 'libs/cerialize';\r\n\r\nexport interface IGetSubFlowsDto{\r\n EntityId: number;\r\n TypeId: number;\r\n}\r\n\r\nexport class SubFlowStore {\r\n\r\n static GetSubFlows(params: IGetSubFlowsDto) {\r\n const deferred = P.defer<SubFlowDto[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/FormDesignerApi/GetSubFlows',\r\n type: 'GET'\r\n },\r\n params: params\r\n })\r\n .then(subFlows => {\r\n deferred.resolve(Deserialize(subFlows, SubFlowDto))})\r\n .fail(error => {\r\n\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n}","import { Grid } from 'Core/Controls/Grid/Grid';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\nimport {BaseSelectProperty} from 'Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\n\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/SubFlowProperty/Template.html';\r\nimport { SubFlowStore } from './SubFlowStore';\r\nimport { SubFlowDto } from './SubFlowDto';\r\nimport { CONTROL_TYPES, TABLE_TYPES } from '../../../Constant';\r\n\r\nko.templates['Core/GeneralProperties/Managers/SubFlowProperty/Template'] = Template;\r\n\r\nexport class SubFlowProperty extends BaseSelectProperty {\r\n private _control: IControl;\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, control: IControl) {\r\n super(property, propertyValue);\r\n\r\n this._control = control;\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/SubFlowProperty/Template';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(subFlows => {\r\n this.PopulateData(subFlows);\r\n })\r\n .fail(error => {\r\n Notifier.Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return SubFlowStore.GetSubFlows({ EntityId: this.EntityId, TypeId: this.TypeId });\r\n }\r\n\r\n get EntityId(){\r\n let parentControl = this._control.GetParentControl();\r\n if(!parentControl){\r\n return this._control.Screen.GetEntityId();\r\n }\r\n\r\n if(parentControl && parentControl.GetType() == CONTROL_TYPES.Grid){\r\n return this.GridSubjectEntityId;\r\n }\r\n }\r\n\r\n get TypeId(){\r\n let parentControl = this._control.GetParentControl();\r\n\r\n if(!parentControl){\r\n return this._control.Screen.GetTableTypeId();\r\n }\r\n\r\n if(parentControl && parentControl.GetType() == CONTROL_TYPES.Grid){\r\n return 0;\r\n }\r\n }\r\n\r\n get GridSubjectEntityId(){\r\n let gridSubjectField = _.find(this._control.GetParentControl().GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if(gridSubjectField){\r\n return gridSubjectField.EntityId;\r\n }\r\n return null;\r\n }\r\n\r\n private PopulateData(subFlows: SubFlowDto[]){\r\n\r\n let items: IPropertyOption[] = _.map(subFlows,\r\n (item: SubFlowDto) => {\r\n return {Name: item.Name, Value: item.Id}\r\n });\r\n\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value, enableAttr: IsEnabled()\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport CheckboxPropertyTemplate from \"Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty\"] = CheckboxPropertyTemplate;\r\n\r\nexport class CheckboxProperty extends BaseProperty {\r\n constructor(property: IPropertyDescription, propertyValue: boolean, isEnabled: boolean = true) {\r\n super(property, isEnabled);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/CheckboxProperty/Templates/CheckboxProperty\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return false;\r\n }\r\n\r\n SetValue(propertyValue: boolean): void {\r\n this.Value(propertyValue);\r\n\t}\r\n}","// Module\nvar code = \"<label> <span data-bind=\\\"text: Name\\\"></span> <input data-bind=\\\"checked: Value, attr:{name: Type, disabled: !IsEnabled()}\\\" type=\\\"checkbox\\\"> </label> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport InputNumberPropertyTemplate from \"Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty\"] = InputNumberPropertyTemplate;\r\n\r\nexport class InputNumberProperty extends BaseProperty {\r\n constructor(property: IPropertyDescription, propertyValue: number) {\r\n super(property);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/InputNumberProperty/Templates/InputNumberProperty\";\r\n }\r\n\r\n SetValue(propertyValue: number): void {\r\n if (propertyValue) {\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetDefaultValue() {\r\n return 0;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <label data-bind=\\\"text: Name\\\"></label> <input data-bind=\\\"value: Value, attr:{name: Type}\\\" type=\\\"number\\\" class=\\\"form-control\\\"/> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport InputTextPropertyTemplate from \"Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty.html\";\r\nko.templates[\"Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty\"] = InputTextPropertyTemplate;\r\n\r\nexport class InputTextProperty extends BaseProperty {\r\n\tprivate _oldValue: string;\r\n\tprivate _isValid: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string) {\r\n\t\tsuper(property);\r\n\t\tthis.Value = ko.observable(propertyValue || '');\r\n\t\tthis._oldValue = this.Value();\r\n\t\tthis._isValid = ko.observable(true);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/InputTextProperty/Templates/InputTextProperty\";\r\n\t}\r\n\r\n\tSetValue(propertyValue: string): void {\r\n\t\tif (propertyValue) {\r\n\t\t\tthis.Value(propertyValue);\r\n\t\t\tthis._oldValue = propertyValue;\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\treturn this.CheckValidInput();\r\n\t}\r\n\r\n\tprivate CheckValidInput(): boolean {\r\n\t\tif (this.ValueRequired) {\r\n\t\t\tconst value = this.Value();\r\n\t\t\tconst isValid = value === this._oldValue || this.Value().toString() !== '';\r\n\r\n\t\t\tthis._isValid(isValid);\r\n\t\t\treturn isValid;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container rss-properties clearfix\\\"> <div class=\\\"form-group clearfix\\\"> <label data-bind=\\\"text: Name\\\"></label> <input data-bind=\\\"value : Value ? Value : '', attr:{name: Type, disabled: !IsEnabled()}\\\" class=\\\"form-control\\\"/> </div> <!-- ko if: !_isValid() --> <div class=\\\"form-group clearfix\\\"> <label class=\\\"has-error control-label\\\">Please, input value</label> </div> <!--/ko--> <!-- ko if: WarningMessage --> <div class=\\\"property-container--warningBox\\\"> <div class=\\\"iconBox\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i></div> <div class=\\\"textBox\\\"><span data-bind=\\\"text: WarningMessage\\\"></span></div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\nimport {BaseSelectProperty} from 'Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\n\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport SelectEntityTypePropertyTemplate\r\n from 'Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty.html';\r\nimport { CONTROL_TYPES, TABLE_TYPES } from '../../../Constant';\r\nimport type { Grid } from 'Core/Controls/Grid/Grid';\r\n\r\nko.templates['Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty'] = SelectEntityTypePropertyTemplate;\r\n\r\nexport class SelectEntityTypeProperty extends BaseSelectProperty {\r\n private _control: IControl;\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, control: IControl) {\r\n super(property, propertyValue);\r\n\r\n this._control = control;\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n ErrorMessage(): string {\r\n return 'Wait for the control\\'s data load';\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/SelectEntityTypeProperty/Templates/SelectEntityTypeProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(data => {\r\n this.PopulateData(data.TableTypes);\r\n })\r\n .fail(error => {\r\n Notifier.Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return EntityTypesStore.GetAllTypes({\r\n EntityId: this.SubjectEntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n });\r\n }\r\n\r\n get SubjectEntityId(): number{\r\n if(this._control.GetType() === CONTROL_TYPES.ButtonCopy){\r\n let parentControl = this._control.GetParentControl();\r\n if((this._control.Screen.IsConsultScreen || this._control.Screen.IsEditScreen) && parentControl && parentControl.GetType() === CONTROL_TYPES.Grid){\r\n\r\n let fieldModel = _.find(parentControl.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if (!fieldModel) {\r\n fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Sub\r\n });\r\n }\r\n\r\n if (fieldModel) {\r\n return fieldModel.EntityId;\r\n }\r\n }\r\n\r\n if(this._control.Screen.IsListScreen){\r\n return this._control.GetForm().GetScreen().GetEntityId(); \r\n }\r\n }\r\n\r\n return this._control.GetForm().GetScreen().GetEntityId();\r\n }\r\n\r\n private PopulateData(tableTypes: TableTypeModel[]){\r\n const nonDashTypes = _.filter(tableTypes, tableType => tableType.Id !== 0);\r\n\r\n let items: IPropertyOption[] = _.map(nonDashTypes,\r\n (item: TableTypeModel) => {\r\n return {Name: item.GetName(), Value: item.Id}\r\n });\r\n\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value, enableAttr: IsEnabled()\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as _ from \"underscore\";\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {IPropertyDescription, IPropertyOption} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {BaseSelectProperty} from \"Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty\";\r\nimport {EntitiesStore} from \"Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore\";\r\n\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport SelectLockedLinkEntityPropertyTemplate\r\n from \"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty\"] = SelectLockedLinkEntityPropertyTemplate;\r\n\r\nexport class SelectLockedLinkEntityProperty extends BaseSelectProperty {\r\n private _control: IControl;\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption, control: IControl) {\r\n super(property, propertyValue);\r\n\r\n this._control = control;\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n ErrorMessage(): string {\r\n return 'Wait for the control\\'s data load';\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/Templates/SelectLockedLinkEntityProperty\";\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(entities => {\r\n this.PopulateData(entities);\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this._control.Screen.GetEntityId(),\r\n TableTypeId: this._control.Screen.GetTypeId()\r\n });\r\n }\r\n\r\n private PopulateData(entities: EntityModel[]){\r\n const subjectEntityId = this._control.Screen.GetEntityId();\r\n const lockedEntities = _.filter(entities, entity => entity.TypeName === TABLE_TYPES.Entity && entity.EntityId !== subjectEntityId);\r\n\r\n let items: IPropertyOption[] = _.map(lockedEntities,\r\n (item: EntityModel) => {\r\n return {Name: item.EntityName, Value: item.EntityId}\r\n });\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container selectLocked-container\\\"> <span class=\\\"selectLocked-container--name\\\" data-bind=\\\"text: Name\\\"></span> <label> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> </label> <div class=\\\"property-container--warningBox\\\"> <div class=\\\"iconBox\\\"><i class=\\\"fa fa-exclamation-triangle\\\" aria-hidden=\\\"true\\\"></i></div> <div class=\\\"textBox\\\"><span data-bind=\\\"text: _labels.WILL_BE_APPLICABLE_DURING_UNLINKING_OF_ANY_PART_OF_RECIPE\\\"></span></div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {TableStore} from 'Core/Common/Stores/TableStore';\r\nimport {RecordStore} from 'Core/Common/Stores/RecordStore';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {\r\n BaseProperty,\r\n IPropertyDescription,\r\n ISource\r\n} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {ItemModel} from 'Core/Controls/MultiSelect/Models/MultiSelectListModel';\r\nimport {LookupEditorStore} from 'LookupEditor/Store/LookupEditorStore';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\n\r\nimport DropDownContentTemplate from 'Core/GeneralProperties/Managers/MultiSelectProperty/Templates/DropDownContent.html';\r\nimport MultiSelectPropertyTemplate from \"Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty\"] = MultiSelectPropertyTemplate;\r\n\r\nexport class MultiSelectProperty extends BaseProperty {\r\n Items: KnockoutObservableArray<ItemModel>;\r\n SelectedItems: KnockoutObservableArray<ItemModel>;\r\n\r\n private _showMultiSelectText: KnockoutComputed<boolean>;\r\n\r\n private _separator: string;\r\n private _el: HTMLElement;\r\n private _tooltip: JBoxDropDown;\r\n\r\n private _showSearchScreen: KnockoutObservable<boolean>;\r\n private _searchScreenIfRecordsCount: number;\r\n private _searchScreen: SearchScreen;\r\n\r\n private _tableId: number;\r\n private _source: ISource;\r\n\r\n private _labels = LABELS;\r\n\r\n Value: KnockoutObservable<string>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string) {\r\n super(property);\r\n\r\n this._source = property.Source;\r\n\r\n this.Items = ko.observableArray([]);\r\n this.SelectedItems = ko.observableArray([]);\r\n this._showMultiSelectText = ko.computed(() => this.SelectedItems().length === 0);\r\n\r\n this._separator = ';';\r\n\r\n this._showSearchScreen = ko.observable(false);\r\n const searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n this._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\r\n this.Value = ko.observable(propertyValue);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/MultiSelectProperty/Templates/MultiSelectProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this.LoadData();\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block({Target: this._el});\r\n TableStore.Get({TableName: this._source.TableName})\r\n .then((tableModel: any) => {\r\n this._tableId = tableModel.Id;\r\n RecordStore.GetCount(this._tableId)\r\n .then(recordsCount => {\r\n const showSearchScreen = recordsCount && Number(recordsCount) > this._searchScreenIfRecordsCount;\r\n this._showSearchScreen(showSearchScreen);\r\n\r\n if (this._showSearchScreen())\r\n {\r\n this.LoadDataForSearch();\r\n } else {\r\n this.LoadDataForDropdown();\r\n }\r\n })\r\n .fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n })\r\n .fail(error => {\r\n BlockUI.Unblock(this._el);\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n\r\n private LoadDataForSearch()\r\n {\r\n const selectedItemsIdsString = this.Value() ? this.Value().split(';') : [];\r\n if (!_.any(selectedItemsIdsString))\r\n {\r\n BlockUI.Unblock(this._el);\r\n return;\r\n }\r\n\r\n const selectedItemsIds = selectedItemsIdsString.map(item => item ? Number(item) : 0);\r\n this.AddRecordsByIds(selectedItemsIds);\r\n }\r\n\r\n private LoadNewDataForSearch(selectedItemsIds: number[]) {\r\n _.each(this.Items(), item => item.IsSelected(_.contains(selectedItemsIds, item.RecordId)));\r\n\r\n const existingItemsIds = _.map(this.Items(), item => item.RecordId);\r\n const newItems = _.difference(selectedItemsIds, existingItemsIds);\r\n\r\n if (!_.any(newItems)) {\r\n this.UpdateSelectedItems();\r\n return;\r\n }\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.AddRecordsByIds(newItems);\r\n }\r\n\r\n private AddRecordsByIds(itemsIds: number[]) {\r\n LookupEditorStore.GetRecordsByIds(this._tableId, itemsIds)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((records: any) => {\r\n const fieldName = this._source.DisplayValue;\r\n\r\n _.each(records, (record: any) => {\r\n const chosenField = _.find(record.Fields, (field: any) => field.FieldName === fieldName);\r\n const newItem = new ItemModel();\r\n\r\n newItem.Label = chosenField.FieldValue;\r\n newItem.RecordId = record.RecordId;\r\n newItem.IsSelected(true);\r\n\r\n this.Items.push(newItem);\r\n });\r\n\r\n this.UpdateSelectedItems();\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private LoadDataForDropdown()\r\n {\r\n LookupEditorStore.GetRecords(this._tableId)\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then((records: any) => {\r\n const fieldName = this._source.DisplayValue;\r\n const selectedItemsIds = this.Value() ? this.Value().split(';') : [];\r\n\r\n _.each(records, (record: any) => {\r\n const chosenField = _.find(record.Fields, (field: any) => field.FieldName === fieldName);\r\n const newItem = new ItemModel();\r\n\r\n newItem.Label = chosenField.FieldValue;\r\n newItem.RecordId = record.RecordId;\r\n\r\n const isItemSelected = _.contains(selectedItemsIds, String(newItem.RecordId));\r\n newItem.IsSelected(isItemSelected);\r\n\r\n this.Items.push(newItem);\r\n });\r\n\r\n this.UpdateSelectedItems();\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n FormatValue(value: string) {\r\n if (!value) {\r\n return this._labels.EMPTY_VALUE;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n SelectItem(item: ItemModel) {\r\n item.IsSelected(true);\r\n this.UpdateSelectedItems();\r\n }\r\n\r\n RemoveItem(item: ItemModel) {\r\n item.IsSelected(false);\r\n this.UpdateSelectedItems();\r\n }\r\n\r\n UpdateSelectedItems() {\r\n var selectedItems = [];\r\n _.each(this.Items(),\r\n item => {\r\n if (item.IsSelected()) {\r\n selectedItems.push(item);\r\n }\r\n });\r\n this.SelectedItems(selectedItems);\r\n\r\n const itemIds = this.SelectedItems().map(item => item.RecordId);\r\n this.Value(itemIds.join(\";\"));\r\n }\r\n\r\n ShowListSearchScreen(model, evt: MouseEvent) {\r\n if (this._showSearchScreen()) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n\r\n this._searchScreen = new SearchScreen({\r\n EntityId: this._tableId,\r\n SearchTerm: '',\r\n ButtonAdd: false,\r\n MultiSelectMode: true,\r\n SelectedRecordIds: _.map(this.SelectedItems(), (item) => item.RecordId)\r\n });\r\n\r\n this._searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n this.LoadNewDataForSearch([evtArgs.data.RecordId]);\r\n });\r\n\r\n this._searchScreen.On('RECORDS_SELECTED', this, (eventArgs) => {\r\n this.LoadNewDataForSearch(eventArgs.data.Ids);\r\n });\r\n\r\n this._searchScreen.Show();\r\n } else {\r\n if (this.Items().length > 0) {\r\n\r\n if (!this._tooltip) {\r\n const target: any = evt.currentTarget;\r\n this._tooltip = new JBoxDropDown({\r\n bindComponent: this,\r\n target: target,\r\n otherOptions: {\r\n addClass: \"multi-select-dropdown\",\r\n attach: undefined,\r\n pointer: \"\",\r\n isolateScroll: true,\r\n content: DropDownContentTemplate as any,\r\n position: {\r\n x: \"right\",\r\n y: \"bottom\"\r\n },\r\n height: 'auto',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n maxHeight: 200\r\n },\r\n bindTarget: target,\r\n bindOnCreate: true\r\n });\r\n }\r\n\r\n this._tooltip.Toggle();\r\n }\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <div class=\\\"FormDesignerView label-input form-standart-control dropdown-container multiselect clearfix\\\"> <div class=\\\"multi-select-container\\\" data-bind=\\\"css: {'edit-screen__multi-select-dropdown': !_showSearchScreen()}\\\"> <div data-bind=\\\"attr: { 'data-val-search': _showSearchScreen() ? 'True' : 'False'}\\\" class=\\\"form-control multi-options-list textarea-control\\\"> <!-- ko foreach: SelectedItems --> <span class=\\\"multi-option-item\\\"> <a data-bind=\\\"click: $parent.RemoveItem.bind($parent, $data), preventBubble: ['click']\\\" href=\\\"javascript:;\\\"><i class=\\\"fa fa-times-circle\\\" aria-hidden=\\\"true\\\"></i></a> <span><!--ko text: $parent.FormatValue(Label) --><!-- /ko --></span> </span> <!-- /ko --> <!-- ko if: _showMultiSelectText() --> <span class=\\\"selectText\\\" data-bind=\\\"text: !_showSearchScreen() && !Items().length > 0 ? $data._labels.NO_RECORDS_TO_SELECT : $data._labels.SELECT_LABEL + '...'\\\"></span> <!-- /ko --> </div> <!-- ko if: _showSearchScreen() --> <span class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"></span> <!-- /ko --> <!-- ko ifnot: _showSearchScreen() --> <span class=\\\"btn default dropdown-search-icon\\\" data-bind=\\\"click: $data.ShowListSearchScreen.bind($data)\\\"><i class=\\\"fa fa-caret-down\\\" aria-hidden=\\\"true\\\"></i></span> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko foreach: Items --> <div class=\\\"multi-select-item\\\" data-bind=\\\"css: {active: IsSelected, disabled: IsSelected }\\\"> <a data-bind=\\\"text: $parent.FormatValue(Label), click: $parent.SelectItem.bind($parent, $data)\\\" href=\\\"javascript:;\\\"> </a> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport InputUrlPropertyTemplate from \"Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty.html\";\r\nko.templates[\"Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty\"] = InputUrlPropertyTemplate;\r\n\r\nexport class InputUrlProperty extends BaseProperty {\r\n\tprivate _isValid: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string) {\r\n\t\tsuper(property);\r\n\t\tthis.Value = ko.observable(propertyValue || '');\r\n\t\tthis._isValid = ko.observable(true);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/InputUrlProperty/Templates/InputUrlProperty\";\r\n\t}\r\n\r\n\tSetValue(propertyValue: number): void {\r\n\t\tif (propertyValue) {\r\n\t\t\tthis.Value(propertyValue);\r\n\t\t}\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\treturn this.CheckValidUrl();\r\n\t}\r\n\r\n\tprivate CheckValidUrl(): boolean {\r\n\t\tvar isValid = this.Value().toString() !== '';\r\n\t\tthis._isValid(isValid);\r\n\t\treturn isValid;\r\n\r\n\t\t//todo create correct regexp for url\r\n\t\t//var url = this.Value().toString();\r\n\t\t//var urlEtalon = \"(http|ftp|https)://[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&:/~+#-]*[\\w@?^=%&/~+#-])?\";\r\n\t\t//var pattern = new RegExp(urlEtalon); // fragment locater\r\n\r\n\t\t//return pattern.test(url);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container rss-properties clearfix\\\"> <div class=\\\"form-group clearfix\\\" data-bind=\\\"css: {'has-error': !_isValid()}\\\"> <input data-bind=\\\"textInput: Value ? Value : '', attr:{name: Type}\\\" placeholder=\\\"Enter URL\\\" class=\\\"form-control\\\"/> </div> <!-- ko if: !_isValid() --> <div class=\\\"form-group clearfix\\\"> <label class=\\\"has-error control-label\\\"><!-- ko text: _labels.PLEASE_SPECIFY_THE_URL --><!-- /ko --></label> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"dropzone: { url: 'ScreenForm/SaveUploadedFile',\\r\\n\\t\\t\\t\\t\\t\\t\\tautoProcessQueue: false,\\r\\n\\t\\t\\t\\t\\t\\t\\tpreviewsContainer: false,\\r\\n\\t\\t\\t\\t\\t\\t\\tmaxFilesize: $data.MaxFileSize,\\r\\n\\t\\t\\t\\t\\t\\t\\taddedfile: $data.AfterUpload.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\tacceptedFiles: $data._extension()\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tcss: {'has-error': !_isValid()}\\\" class=\\\"dropzone\\\"> <div class=\\\"dz-message custom image-message\\\" data-dz-message> <span><!-- ko text: $data._dropZoneLabel --><!-- /ko --> <i class=\\\"fa fa-file-image-o\\\" aria-hidden=\\\"true\\\"></i></span> <!-- ko with: Value --> <div> <a data-bind=\\\"click: $parent.Download.bind($parent), preventBubble: ['click']\\\" href=\\\"javascript:;\\\" text=\\\"\\\" title=\\\"Download\\\"> <i class=\\\"fa fa-download\\\" aria-hidden=\\\"true\\\"> <!-- ko text: FileName --><!-- /ko --> </i> </a> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport Template from \"Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate.html\";\r\nimport { IControl } from \"../../../Controls/IControl\";\r\nimport { CONTROL_TYPES } from \"../../../Constant\";\r\nimport { FileDownloader } from \"../../../Components/FileDownloader/FileDownloader\";\r\nko.templates[\"Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate\"] = Template;\r\n\r\nexport class FileUploadProperty extends BaseProperty {\r\n\tprivate _isValid: KnockoutObservable<boolean>;\r\n\tprivate _control: IControl;\r\n\tprivate _labels = LABELS;\r\n\tprivate _extension: KnockoutObservable<string>;\r\n\tprivate _dropZoneLabel: KnockoutObservable<string>;\r\n\tMaxFileSize: number;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n\t\tsuper(property);\r\n\t\tthis._isValid = ko.observable(true);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\t\tthis._extension = ko.observable('');\r\n\t\tthis._dropZoneLabel = ko.observable('');\r\n\t\tthis._control = control;\r\n\t\tthis.MaxFileSize = 5;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/FileUploadProperty/Templates/FileUploadPropertyTemplate\";\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetValue(propertyValue: string): void {\r\n\t\tthis.Value(propertyValue);\r\n\t}\r\n\r\n\tDownload(){\r\n\t\tFileDownloader.DownloadBase64(this.Value().FileData, this.Value().FileName);\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tif(this._control.GetControlTypeName() === CONTROL_TYPES.CrystalViewer){\r\n\t\t\tthis._extension('.rpt');\r\n\t\t\tthis._dropZoneLabel(this._labels.DROP_REPORT_HERE);\r\n\t\t}\r\n\r\n\t\tif(this._control.GetControlTypeName() === CONTROL_TYPES.IFrameExtension){\r\n\t\t\tthis._dropZoneLabel('Drop extension application ZIP');\r\n\t\t\tthis._extension('.zip');\r\n\t\t}\r\n\t}\r\n\r\n\tAfterUpload(file) {\r\n\t\tvar reader = new FileReader();\r\n\t\treader.onloadend = () => {\r\n\t\t\tif (file.status === 'removed') {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tvar base64Data = (reader.result as string).split(',')[1];\r\n\t\t\tthis.Value({ FileName: file.name, FileData: base64Data });\r\n\t\t}\r\n\r\n\t\treader.readAsDataURL(file);\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tvar result = this.Value() != null;\r\n\t\tthis._isValid(result);\r\n\t\treturn result;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {ConditionBuilder} from \"QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {EntityMetadataStore} from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport {QueryConditionGroupModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport {CONTROL_TYPES, TABLE_TYPES} from \"Core/Constant\";\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport Template\r\n from \"Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate.html\";\r\nimport {EntityTypes} from \"Core/Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport { IControlAttachedField } from \"Core/Screens/BaseScreen\";\r\nimport { GENERAL_PROPERTIES } from \"../Constants\";\r\nimport { GLOBALS, GlobalManager } from \"Core/GlobalManager/GlobalManager\";\r\nimport { TableStore } from \"Core/Common/Stores/TableStore\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate\"] = Template;\r\n\r\n\r\ninterface IAllowedEntity{\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport class QueryConditionProperty extends BaseProperty {\r\n private _conditionBuilder: KnockoutObservable<ConditionBuilder>;\r\n private _control: IControl;\r\n private _el: HTMLElement;\r\n private _allowedEntities: KnockoutObservableArray<IAllowedEntity>;\r\n private _allowedEntity: KnockoutObservable<IAllowedEntity>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n this._control = control;\r\n this._allowedEntities = ko.observableArray([]);\r\n this._allowedEntity = ko.observable(null);\r\n this._conditionBuilder = ko.observable(null);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/QueryConditionProperty/Templates/QueryConditionPropertyTemplate\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return '';\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n Reset() {\r\n this.Value('');\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.TimeWriting) {\r\n this.InitAllowedEntityCondition();\r\n return;\r\n }\r\n\r\n if(this.Name === GENERAL_PROPERTIES.HIDE_IF_CONDITION){\r\n this.InitShowIfConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Search) {\r\n this.InitSearchConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Dropdown || this._control.GetType() === CONTROL_TYPES.MultiSelect) {\r\n this.InitDropdownConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Grid) {\r\n this.InitGridConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.GenericButton\r\n || this._control.GetType() === CONTROL_TYPES.Basket\r\n || this._control.GetType() === CONTROL_TYPES.Invoicing\r\n || this._control.GetType() === CONTROL_TYPES.Timer) {\r\n this.InitSearchConditions();\r\n return;\r\n }\r\n\r\n if (this._control.GetType() === CONTROL_TYPES.Book) {\r\n this.InitBookConditions();\r\n return;\r\n }\r\n }\r\n\r\n private InitSearchConditions() {\r\n if (this._control) {\r\n let entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n this.InitConditionBuilder(entityId, []);\r\n }\r\n }\r\n\r\n\r\n private InitGridConditions() {\r\n let screenFields = this.GetScreenFields();\r\n if (this._control) {\r\n let gridSubjectEntityId = null;\r\n if (this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen]) {\r\n gridSubjectEntityId = this._control.GetForm().GetScreen().GetEntityId();\r\n } else {\r\n let fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if (!fieldModel) {\r\n fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Sub\r\n });\r\n }\r\n\r\n if (fieldModel) {\r\n gridSubjectEntityId = fieldModel.EntityId;\r\n }\r\n }\r\n\r\n if (gridSubjectEntityId) {\r\n this.InitGridConditionBuilder(gridSubjectEntityId, screenFields);\r\n }\r\n }\r\n }\r\n\r\n private InitBookConditions() {\r\n const fieldModel = _.first(this._control.GetModel().Fields);\r\n\r\n if (fieldModel) {\r\n this.InitConditionBuilder(fieldModel.EntityId, []);\r\n }\r\n }\r\n\r\n private InitDropdownConditions() {\r\n var screenFields = this.GetScreenFields();\r\n const entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n\r\n if (this._control) {\r\n var fieldModel = this._control.GetFieldModel();\r\n if (fieldModel && fieldModel.ValTableId) {\r\n screenFields = _.filter(screenFields, (item) => {\r\n return item.Field.Id !== fieldModel.Id\r\n });\r\n this.InitConditionBuilder(fieldModel.ValTableId, screenFields);\r\n } else {\r\n this.InitConditionBuilder(entityId, []);\r\n }\r\n }\r\n }\r\n\r\n private async InitAllowedEntityCondition(){\r\n const global = await GlobalManager.Instance.GetGlobal(GLOBALS.ALLOWED_ENTITIES);\r\n const entities = global.split('|');\r\n for (const entity of entities) {\r\n let table = await TableStore.GetStruct({ TableName: entity }) as any;\r\n this._allowedEntities.push({ Id: table.Id, Name: table.Name });\r\n }\r\n\r\n if(!this.Value() && this._allowedEntities().length > 0){\r\n this.InitConditionBuilder(this._allowedEntities()[0].Id, []);\r\n }\r\n\r\n if(this.Value() && this._allowedEntities().length > 0){\r\n let jsonObj = JSON.parse(this.Value());\r\n let conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n this._allowedEntity(_.find(this._allowedEntities(), (entity)=>entity.Id === conditions.EntityId));\r\n this.InitConditionBuilder(conditions.EntityId, []);\r\n }\r\n\r\n this._allowedEntity.subscribe((newValue)=>{ \r\n this.Value(null);\r\n this.InitConditionBuilder(newValue.Id, []);\r\n });\r\n }\r\n\r\n private InitShowIfConditions() {\r\n var screenFields = this.GetScreenFields();\r\n const entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n if (this._control) {\r\n var fieldModel = this._control.GetFieldModel();\r\n if (fieldModel) {\r\n screenFields = _.filter(screenFields, (item) => {\r\n return item.Field.Id !== fieldModel.Id\r\n });\r\n this.InitConditionBuilder(entityId, screenFields);\r\n }\r\n }\r\n }\r\n\r\n private GetScreenFields(): Array<IControlAttachedField> {\r\n var screenFields: Array<IControlAttachedField> = [];\r\n if (this._control.GetForm()) {\r\n var excludedControlTypes = [CONTROL_TYPES.Grid, CONTROL_TYPES.Document, CONTROL_TYPES.Image];\r\n screenFields = this._control.GetForm().GetScreen().GetAllAttachedFields(excludedControlTypes, false);\r\n }\r\n return screenFields;\r\n }\r\n\r\n private InitConditionBuilder(entityId: number, screenFields: Array<IControlAttachedField>) {\r\n this._conditionBuilder(new ConditionBuilder(null, screenFields, false));\r\n var conditions = new QueryConditionGroupModel();\r\n\r\n if (this.Value()) {\r\n let jsonObj = JSON.parse(this.Value());\r\n conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n }\r\n\r\n const blockTarget = this._el.parentNode as HTMLElement;\r\n BlockUI.Block({ Target: blockTarget });\r\n EntityMetadataStore.GetEntityMetadata({EntityId: entityId})\r\n .always(() => {\r\n BlockUI.Unblock(blockTarget);\r\n })\r\n .then((entityMetadata) => {\r\n this._conditionBuilder().InitByEntity(entityMetadata.EntityMetadata, conditions, screenFields);\r\n });\r\n\r\n this._conditionBuilder().On('CHANGED', this, () => {\r\n this.Value(JSON.stringify(Serialize(this._conditionBuilder().ConditionModel)));\r\n });\r\n }\r\n\r\n private InitGridConditionBuilder(entityId: number, screenFields: Array<IControlAttachedField>) {\r\n this._conditionBuilder(new ConditionBuilder(null, [], false));\r\n var conditions = new QueryConditionGroupModel();\r\n\r\n if (this.Value()) {\r\n var jsonObj = JSON.parse(this.Value());\r\n conditions = GenericDeserialize<QueryConditionGroupModel>(jsonObj, QueryConditionGroupModel);\r\n }\r\n\r\n EntityMetadataStore.GetEntityMetadata({EntityId: entityId})\r\n .always(() => {\r\n })\r\n .then((entityMetadata) => {\r\n let entities = [];\r\n entities.push(entityMetadata.EntityMetadata);\r\n if (entityMetadata.EntityMetadata.Type === EntityTypes[EntityTypes.Entity]) {\r\n if (this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.EditScreen] || this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n let subjectEntityId = this._control.GetForm().GetScreen().GetEntityId();\r\n let screenSubjectEntity = _.find(entityMetadata.RelatedEntitiesMetadata, (item) => {\r\n return item.EntityMetadata.Id === subjectEntityId\r\n });\r\n entities.push(screenSubjectEntity.LinkEntityMetadata);\r\n }\r\n }\r\n this._conditionBuilder().InitByEntities(entities, conditions, screenFields);\r\n });\r\n\r\n this._conditionBuilder().On('CHANGED', this, () => {\r\n this.Value(JSON.stringify(Serialize(this._conditionBuilder().ConditionModel)));\r\n });\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n this.Init();\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _allowedEntities().length > 0 --> <select data-bind=\\\"options: _allowedEntities, optionsText: 'Name', value: _allowedEntity\\\" class=\\\"form-control\\\"></select> <!-- /ko --> <!-- ko with: _conditionBuilder --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { QueryBuilder } from \"QueryBuilder/QueryBuilder\";\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from \"QueryBuilder/Events\";\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/QueryBuilderProperty/Template.html\";\r\n\r\nko.templates['Core/GeneralProperties/Managers/QueryBuilderProperty/Templates/Template'] = Template;\r\n\r\nexport class QueryBuilderProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _queryBuilder: QueryBuilder;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n\t\tsuper(property);\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n\t\tthis._control = control;\r\n\t\tthis._queryBuilder = this.InitQueryBuilder();\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/GeneralProperties/Managers/QueryBuilderProperty/Templates/Template';\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.LoadQueryExpression();\r\n\t}\r\n\r\n\tprivate InitQueryBuilder() {\r\n\t\tconst queryBuilder = new QueryBuilder(true, false, false);\r\n\t\tqueryBuilder.QueryType = ViewModes.Query;\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, eventArgs => {\r\n\t\t\tthis.Value(eventArgs.data.QueryText);\r\n\t\t\tnew Notifier().Success('Query saved');\r\n\t\t});\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, () => this.LoadQueryExpression());\r\n\r\n\t\treturn queryBuilder;\r\n\t}\r\n\r\n\tprivate LoadQueryExpression() {\r\n\t\tif (this.Value() === this.GetDefaultValue()) {\r\n\t\t\tthis.InitDefaultQuery();\r\n\t\t} else {\r\n\t\t\tconst expressionModel = JSON.parse(this.Value());\r\n\t\t\tthis._queryBuilder.EditFreeQuery(expressionModel, false);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate InitDefaultQuery() {\r\n\t\tconst screen = this._control.GetForm().GetScreen();\r\n\r\n\t\tif (screen.IsSubjectScreen()) {\r\n\t\t\tconst subjectEntityId = screen.GetEntityId();\r\n\t\t\tthis._queryBuilder.InitQueryByEntityId(subjectEntityId);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._queryBuilder.NewFreeQuery();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _queryBuilder --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"multi-options-list textarea-control clearfix alternativeEntities\\\"> <div class=\\\"entities-group\\\"> <!-- ko foreach: SelectedEntities --> <div class=\\\"btn-group\\\"> <button type=\\\"button\\\" data-bind=\\\"click: $parent.DeselectEntity.bind($parent)\\\" class=\\\"btn btn-light\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"> <!-- ko template: {name: $parent.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: EntityTranslatedName\\\" class=\\\"name\\\"></span> <i class=\\\"fa fa-close transition\\\"></i> </button> </div> <!-- /ko --> <!-- ko if: SelectedEntities().length === 0 --> <h3> <!-- ko text: _labels.NO_ALTERNATIVE_ENTITIES_WERE_SELECTED --><!-- /ko --> </h3> <!-- /ko --> </div> <div class=\\\"list-group\\\"> <!-- ko foreach: Entities --> <!-- ko ifnot: SelectedStatus --> <a href=\\\"javascript:void(0)\\\" data-bind=\\\"click: $parent.SelectEntity.bind($parent)\\\" class=\\\"list-group-item list-group-item-action\\\"> <!-- ko template: {name: $parent.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: EntityTranslatedName\\\" class=\\\"name\\\"></span> </a> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { EntityModel } from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\n\r\nexport class AlternativeEntitiesPropertyStore {\r\n\tstatic GetAlternativeEntities(entityId: number): P.Promise<EntityModel[]>{\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tlet params = {\r\n\t\t\tEntityId: entityId\r\n\t\t};\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.FORM_DESIGNER.GET_ALTERNATIVE_ENTITIES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams).then(data => {\r\n\t\t\tdeferredResult.resolve(data);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport Template from 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty.html';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { EntityModel } from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\nimport { AlternativeEntitiesPropertyStore }\r\n\tfrom \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Stores/AlternativeEntitiesPropertyStore\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty\"] = Template;\r\n\r\nimport AlternativeIconTemplate from 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate.html';\r\nko.templates['Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate'] = AlternativeIconTemplate;\r\n\r\n\r\nexport class AlternativeEntitiesProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _showOptions: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tEntities: KnockoutObservableArray<EntityModel>;\r\n\tSelectedEntities: KnockoutObservableArray<EntityModel>;\r\n\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl, getData: boolean = true) {\r\n\t\tsuper(property);\r\n\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n\t\t//property is stored into value after that it will be saved automaticly\r\n\t\tthis.Value([]);\r\n\r\n\t\tthis._control = control;\r\n\r\n\t\tthis._showOptions = ko.observable(true);\r\n\r\n\t\tthis.Init(getData);\r\n\r\n\t\tthis.Entities = ko.observableArray([]);\r\n\t\tthis.SelectedEntities = ko.observableArray([]);\r\n\t}\r\n\r\n\tInit(getData: boolean = true) {\r\n\t\tif(getData) {\r\n\t\t\tthis.GetAlternativeEntities();\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/AlternativeEntitiesProperty\";\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSelectEntity(entity: EntityModel) {\r\n\t\tentity.SelectedStatus(true);\r\n\t\tthis.SelectedEntities.push(entity);\r\n\t\tthis.Value().push(entity.EntityId);\r\n\t}\r\n\r\n\tDeselectEntity(entity: EntityModel) {\r\n\t\tentity.SelectedStatus(false);\r\n\t\tconst filteredSelecteEntities = _.filter(this.SelectedEntities(), (selectedEntity: EntityModel) => {\r\n\t\t\treturn selectedEntity.EntityId !== entity.EntityId;\r\n\t\t});\r\n\t\tthis.Value(_.filter(this.Value(),\r\n\t\t\t(entityId: number) => {\r\n\t\t\t\treturn entityId !== entity.EntityId;\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.SelectedEntities(filteredSelecteEntities);\r\n\r\n\t}\r\n\r\n\tGetIconTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate\";\r\n\t}\r\n\r\n\tGetAlternativeEntities() {\r\n\t\tBlockUI.Block();\r\n\t\tlet entityId = this._control.GetForm().GetScreen().GetEntityId();\r\n\t\tAlternativeEntitiesPropertyStore.GetAlternativeEntities(entityId)\r\n\t\t\t.then(entities => {\r\n\t\t\t\tconst alternativeEntities = (this._control as any)._alternativeEntities;\r\n\t\t\t\talternativeEntities && alternativeEntities.map((entityId) => {\r\n\t\t\t\t\tthis.Value().push(entityId);\r\n\t\t\t\t});\r\n\t\t\t\tthis.Entities(entities.map((entity) => {\r\n\r\n\t\t\t\t\tconst mappedEntity = _.extend(entity, {\r\n\t\t\t\t\t\tSelectedStatus: this.Value().indexOf(entity.EntityId) !== -1 ?\r\n\t\t\t\t\t\t\tko.observable(true) :\r\n\t\t\t\t\t\t\tko.observable(false)\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.Value().indexOf(entity.EntityId) !== -1 && this.SelectedEntities.splice(this.Value().indexOf(entity.EntityId), 1, mappedEntity);\r\n\r\n\t\t\t\t\treturn mappedEntity;\r\n\t\t\t\t}));\r\n\r\n\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock())\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"multi-options-list textarea-control clearfix typesPropertyContainer\\\"> <div class=\\\"entities-group\\\"> <!-- ko foreach: SelectedColorTypes --> <div class=\\\"btn-group\\\"> <button class=\\\"btn btn-light\\\" aria-haspopup=\\\"true\\\" aria-expanded=\\\"false\\\"> <span class=\\\"colorBox\\\" data-bind=\\\"click: $parent.ChangeTypeColor.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'nonColor': !TypeColor()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstyle: { 'background-color': TypeColor }\\\"></span> <span data-bind=\\\"text: Name\\\" class=\\\"name\\\"></span> <i class=\\\"fa fa-close transition\\\" data-bind=\\\"click: $parent.DeselectType.bind($parent)\\\"></i> </button> </div> <!-- /ko --> <!-- ko if: SelectedColorTypes().length === 0 --> <h3><!-- ko text: 'No types were selected' --><!-- /ko --></h3> <!-- /ko --> </div> <div class=\\\"list-group\\\"> <!-- ko foreach: ColorTypes --> <!-- ko ifnot: SelectedStatus --> <a href=\\\"javascript:void(0)\\\" data-bind=\\\"click: $parent.SelectType.bind($parent)\\\" class=\\\"list-group-item list-group-item-action\\\"> <span data-bind=\\\"text: Name\\\" class=\\\"name\\\"></span> </a> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"\\\"> <!-- ko with: _colorModel --> <!-- ko template: {html: $data.GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { BaseProperty, IPropertyDescription } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { TypeColorModel } from \"Core/GeneralProperties/Managers/TypesProperty/Models/TypeColorModel\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { EntityTypesStore, IGetTypesRequestModel } from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty.html';\r\nko.templates[\"Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty\"] = Template;\r\n\r\nimport TypePropertyColorDropdown from \"Core/GeneralProperties/Managers/TypesProperty/Templates/TypePropertyColorDropdown.html\";\r\nimport {HexColorModel} from \"../../../Components/ColorSelector/ColorModels/Hex/HexColorModel\";\r\nimport {ColorModel} from \"../../../Components/ColorSelector/ColorModels/ColorModel\";\r\nko.templates[\"Core/GeneralProperties/Managers/TypesProperty/Templates/TypePropertyColorDropdown\"] = TypePropertyColorDropdown;\r\n\r\nexport interface ITypePropertyModel {\r\n\tTypeId: number;\r\n\tTypeName: string;\r\n\tTypeColor: string;\r\n}\r\n\r\nexport class TypesProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _showOptions: KnockoutObservable<boolean>;\r\n\tprivate _types: KnockoutObservableArray<TableTypeModel>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\tprivate _colorModel: ColorModel;\r\n\tprivate _el: HTMLElement;\r\n\r\n\tColorTypes: KnockoutObservableArray<TypeColorModel>;\r\n\tSelectedColorTypes: KnockoutObservableArray<TypeColorModel>;\r\n\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n\t\tsuper(property);\r\n\r\n\t\tthis.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n\t\t//property is stored into value after that it will be saved automaticly\r\n\t\tthis.Value([]);\r\n\r\n\t\tthis._control = control;\r\n\r\n\t\tthis._showOptions = ko.observable(true);\r\n\r\n\t\tthis._types = ko.observableArray([]);\r\n\r\n\t\tthis.ColorTypes = ko.observableArray([]);\r\n\t\tthis.SelectedColorTypes = ko.observableArray([]);\r\n\t}\r\n\r\n\tInit() {\r\n\t\tthis.GetTypes();\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/TypesProperty/Templates/TypesProperty\";\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tsuper.AfterRender(el);\r\n\t\tthis._el = el[0];\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tSetValue(propertyValue: string): void {\r\n\t\tthis.Value(propertyValue);\r\n\t\tthis._colorModel.SetColor(this.Value());\r\n\t}\r\n\r\n\tSelectType(type: TypeColorModel) {\r\n\t\ttype.SelectedStatus(true);\r\n\t\tthis.SelectedColorTypes.push(type);\r\n\t\tlet entityProperty: ITypePropertyModel = {\r\n\t\t\tTypeId: type.Id,\r\n\t\t\tTypeName: type.Name,\r\n\t\t\tTypeColor: type.TypeColor()\r\n\t\t}\r\n\t\tthis.Value().push(entityProperty);\r\n\t}\r\n\r\n\tDeselectType(selectType: TypeColorModel) {\r\n\t\tselectType.SelectedStatus(false);\r\n\t\tconst filteredSelectedTypes = _.filter(this.SelectedColorTypes(), (type: TypeColorModel) => {\r\n\t\t\treturn type.Id !== selectType.Id;\r\n\t\t});\r\n\t\tthis.Value(_.filter(this.Value(),\r\n\t\t\t(type: ITypePropertyModel) => {\r\n\t\t\t\treturn selectType.Id !== type.TypeId;\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tthis.SelectedColorTypes(filteredSelectedTypes);\r\n\t}\r\n\r\n\tChangeTypeColor(selectType: TypeColorModel, event) {\r\n\t\tthis._colorModel = new HexColorModel({Label: null, InitialColor: selectType.TypeColor(), Positions: 'top left'});\r\n\t\tthis._colorModel.On(\"COLOR_SET\", this, eventArgs => {\r\n\t\t\tthis.ChangeColor(selectType, eventArgs);\r\n\t\t});\r\n\t\tthis._colorModel.On('COLOR_RESET', this, () => {\r\n\t\t\tthis.ChangeColor(selectType, null);\r\n\t\t});\r\n\r\n\t\tconst container = event.currentTarget;\r\n\t\tlet options = {\r\n\t\t\ttarget: container,\r\n\t\t\tbindTarget: container,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"colorPopUp\",\r\n\t\t\t\tcloseOnClick: 'body',\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tmaxHeight: 300,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tmaxWidth: 400,\r\n\t\t\t\tminWidth: 240,\r\n\t\t\t\tonCloseComplete: () => {this._dropDown.Destroy()},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"center\",\r\n\t\t\t\t\ty: \"top\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: TypePropertyColorDropdown as any });\r\n\t\t\t},\r\n\t\t\tonOpen: () => {}\r\n\t\t}\r\n\t\tthis._dropDown = new JBoxDropDown(options);\r\n\t\tthis._dropDown.Open();\r\n\t}\r\n\r\n\tChangeColor(selectType: TypeColorModel, eventArgs) {\r\n\t\t_.each(this.Value(), (value: ITypePropertyModel)=> {\r\n\t\t\tif (value.TypeId === selectType.Id){\r\n\t\t\t\tvalue.TypeColor = eventArgs ? eventArgs.data.Name : null;\r\n\t\t\t}\r\n\t\t});\r\n\t\t_.each(this.SelectedColorTypes(), (value: TypeColorModel)=> {\r\n\t\t\tif (value.Id === selectType.Id){\r\n\t\t\t\tvalue.TypeColor(eventArgs ? eventArgs.data.Name : null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetTypes() {\r\n\t\tBlockUI.Block({Target: this._el});\r\n\t\tlet request: IGetTypesRequestModel = {\r\n\t\t\tEntityId: this._control.GetForm().GetScreen().GetEntityId(),\r\n\t\t\tParentTypeId: 0,\r\n\t\t\tWithRoot: false,\r\n\t\t\tOnlyEnabled: false\r\n\t\t};\r\n\r\n\t\tEntityTypesStore.GetAllTypes(request)\r\n\t\t\t.then((data)=> {\r\n\r\n\t\t\t\tconst typesColor = (this._control as any)._typesProperty;\r\n\t\t\t\ttypesColor && typesColor.map(( type: ITypePropertyModel ) => {\r\n\t\t\t\t\tthis.Value().push(type);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._types(data.TableTypes);\r\n\r\n\t\t\t\tthis.ColorTypes(this._types().map((type: TableTypeModel) => {\r\n\r\n\t\t\t\t\tlet typeSelected = _.find(this.Value(), (value: ITypePropertyModel) => {\r\n\t\t\t\t\t\treturn value.TypeId === type.Id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst mappedType = _.extend(type, {\r\n\t\t\t\t\t\tSelectedStatus: ko.observable(!!typeSelected),\r\n\t\t\t\t\t\tTypeColor: ko.observable(!!typeSelected ? typeSelected.TypeColor : null)\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t!!typeSelected && this.SelectedColorTypes.push(mappedType);\r\n\r\n\t\t\t\t\treturn mappedType;\r\n\t\t\t\t}));\r\n\t\t\t})\r\n\t\t\t.always(() => BlockUI.Unblock(this._el))\r\n\t\t\t.fail((err) => new Notifier().Failed(err.message));\r\n\t}\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {SubTableViewDto} from \"./Models/SubTableViewDto\";\r\n\r\nexport class Store {\r\n static GetSubTableViews(entityId: number): P.Promise<SubTableViewDto[]> {\r\n return Request.Send({\r\n proxy: {\r\n url: '/api/BackLinkApi/GetSubTableViews',\r\n type: 'GET',\r\n dataType: 'json'\r\n }, params: {entityId: entityId}\r\n });\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {SubTableViewDto} from \"../Store/Models/SubTableViewDto\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\n\r\nexport class ViewModel extends Event {\r\n BackLinkSettings: KnockoutObservableArray<BackLinkingSettings>;\r\n SubTableViews: SubTableView[];\r\n\r\n constructor(propertyValue: any[], subTableViews: SubTableViewDto[]) {\r\n super();\r\n\r\n this.SubTableViews = this.MapSubTableViews(subTableViews);\r\n\r\n const settings = this.MapSettings(propertyValue);\r\n settings.forEach(s => s.On('SETTINGS_UPDATED', this, () => this.PublishChanges()));\r\n\r\n this.BackLinkSettings = ko.observableArray(settings);\r\n }\r\n\r\n AddSettings() {\r\n const settings = new BackLinkingSettings({});\r\n settings.On('SETTINGS_UPDATED', this, () => this.PublishChanges());\r\n\r\n this.BackLinkSettings.push(settings);\r\n this.PublishChanges();\r\n }\r\n\r\n RemoveSettings(settings: BackLinkingSettings) {\r\n const index = this.BackLinkSettings.indexOf(settings);\r\n this.BackLinkSettings.splice(index, 1);\r\n this.PublishChanges();\r\n }\r\n\r\n private MapSettings(propertyValue: any[]) {\r\n if (!propertyValue) return [];\r\n return propertyValue.map(settings => BackLinkingSettings.FromJSON(settings, this.SubTableViews));\r\n }\r\n\r\n private MapSubTableViews(subTableViews: SubTableViewDto[]) {\r\n return subTableViews.map(view => new SubTableView(view.Id, view.TranslatedName || view.Name));\r\n }\r\n\r\n private PublishChanges() {\r\n const changes = {\r\n Settings: this.BackLinkSettings().map(settings => {\r\n return {\r\n ButtonName: settings.NameTranslations().length && settings.NameTranslations()[0].Translation,\r\n SubTableView: settings.SubTableView() && settings.SubTableView().Id,\r\n Intention: settings.Intention(),\r\n NameTranslations: settings.NameTranslations().length && _.map(settings.NameTranslations().slice(1), (item: any) => {\r\n return {Id: item.Language.K_Language, Value: item.Translation}\r\n })\r\n };\r\n })\r\n };\r\n\r\n this.Trigger('SETTINGS_UPDATED', changes);\r\n }\r\n}\r\n\r\nexport interface IBackLinkingSettingsOptions {\r\n ButtonName?: string,\r\n SubTableView?: SubTableView,\r\n Intention?: string,\r\n Translations?: Array<{Id: number, Value: string}>\r\n}\r\n\r\nexport class BackLinkingSettings extends Event {\r\n ButtonName: KnockoutObservable<string>;\r\n SubTableView: KnockoutObservable<SubTableView>;\r\n Intention: KnockoutObservable<string>;\r\n NameTranslations: KnockoutObservableArray<TranslationModel>;\r\n protected SelectedName: KnockoutObservable<TranslationModel>;\r\n protected NameTranslationsOpened: KnockoutObservable<boolean>;\r\n\r\n constructor(model: IBackLinkingSettingsOptions) {\r\n super();\r\n\r\n this.ButtonName = ko.observable(model.ButtonName);\r\n this.ButtonName.subscribe(() => this.PublishChanges());\r\n\r\n this.SubTableView = ko.observable(model.SubTableView);\r\n this.SubTableView.subscribe(() => this.PublishChanges());\r\n\r\n this.Intention = ko.observable(model.Intention);\r\n this.Intention.subscribe(() => this.PublishChanges());\r\n\r\n this.NameTranslationsOpened = ko.observable(false);\r\n this.SelectedName = ko.observable(null);\r\n\r\n this.NameTranslations = ko.observableArray(null);\r\n this.InitTranslations(model.Translations);\r\n\r\n this.NameTranslations.subscribe(() => this.PublishChanges());\r\n }\r\n\r\n private InitTranslations(translations) {\r\n const translationItems = TranslationManager.Instance.Languages.map(language => {\r\n const model = new TranslationModel();\r\n model.Language = new LanguageModel(language.Id);\r\n model.Language.FlagBase64 = language.Flag;\r\n model.Language.ShortName = language.ShortName;\r\n model.Language.Name = language.Name;\r\n model.Translation = '';\r\n if (!model.Language.K_Language) {\r\n model.Translation = this.ButtonName();\r\n }\r\n return model;\r\n });\r\n\r\n this.NameTranslations(translationItems);\r\n this.SelectedName(this.GetNameTranslation());\r\n\r\n if (translations) {\r\n _.forEach(translations, (item: any) => {\r\n const current = _.find(this.NameTranslations(), (translation) => translation.Language.K_Language === item.Id);\r\n if (current) {\r\n current.Translation = item.Value;\r\n }\r\n });\r\n }\r\n this.SetDefaultTranslation();\r\n }\r\n\r\n private GetNameTranslation() {\r\n\t\tconst name = _.find(this.NameTranslations(), language => language.Selected && language.Translation !== '' && language.Translation !== null);\r\n return name || _.first(this.NameTranslations());\r\n }\r\n\r\n\r\n static FromJSON(settings, subTableViews: SubTableView[]) {\r\n const subTableView = _.find(subTableViews, view => view.Id === settings.SubTableView);\r\n return new BackLinkingSettings( {\r\n ButtonName: settings.ButtonName,\r\n SubTableView: subTableView,\r\n Intention: settings.Intention,\r\n Translations: settings.NameTranslations\r\n });\r\n }\r\n\r\n private PublishChanges() {\r\n this.Trigger('SETTINGS_UPDATED', {\r\n ButtonName: this.NameTranslations().length && this.NameTranslations()[0].Translation,\r\n SubTableView: this.SubTableView() && this.SubTableView().Id,\r\n Intention: this.Intention(),\r\n Translations: this.NameTranslations().length && _.map(this.NameTranslations().slice(1), (item: any) => {\r\n return {Id: item.Language.K_Language, Value: item.Translation}\r\n })\r\n });\r\n }\r\n\r\n get DefaultTranslation() {\r\n return _.find(this.NameTranslations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n ShowNameTranslations() {\r\n this.NameTranslationsOpened(true);\r\n }\r\n\r\n ToggleNameTranslations() {\r\n if (this.NameTranslationsOpened()) {\r\n this.HideNameTranslations();\r\n } else {\r\n this.ShowNameTranslations();\r\n }\r\n }\r\n\r\n HideNameTranslations() {\r\n this.NameTranslationsOpened(false);\r\n }\r\n\r\n SelectNameTranslation(translationModel: TranslationModel) {\r\n this.SelectedName(translationModel);\r\n this.HideNameTranslations();\r\n }\r\n\r\n UpdateTranslationList() {\r\n let languages = this.NameTranslations().slice();\r\n this.NameTranslations([]);\r\n this.NameTranslations(languages);\r\n }\r\n\r\n ChangeTranslation() {\r\n let current = _.find(this.NameTranslations(), (item) => {\r\n return item.Language.K_Language === this.SelectedName().Language.K_Language;\r\n });\r\n this.SelectedName(current);\r\n this.NameTranslations.valueHasMutated();\r\n }\r\n\r\n private SetDefaultTranslation() {\r\n const defLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let defTranslation = _.find(this.NameTranslations(), (translation) => translation.Language.K_Language === defLang.Id);\r\n if (defTranslation && defTranslation.Translation) {\r\n this.SelectedName(defTranslation);\r\n }\r\n }\r\n}\r\n\r\nexport class SubTableView {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\n\r\n\r\nimport {Store} from \"./Store/Store\";\r\n\r\nimport {ViewModel} from \"./Models/ViewModel\";\r\n\r\nimport BackLinkingPropertyTemplate\r\n from \"Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty\"] = BackLinkingPropertyTemplate;\r\n\r\nexport class BackLinkingProperty extends BaseProperty {\r\n private _initValue: any[];\r\n private _control: IControl;\r\n\r\n private _viewModel: KnockoutObservable<ViewModel>;\r\n private _labels = LABELS;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: any[], control: IControl) {\r\n super(property);\r\n\r\n this._initValue = propertyValue || this.GetDefaultValue();\r\n this._control = control;\r\n this._viewModel = ko.observable(null);\r\n\r\n this.Value = ko.observable(propertyValue);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/BackLinkingProperty/Templates/BackLinkingProperty\";\r\n }\r\n\r\n SetValue(propertyValue: any[]): void {\r\n\r\n }\r\n\r\n GetDefaultValue(): any[] {\r\n return [];\r\n }\r\n\r\n OnInit() {\r\n const fieldModel = this._control.GetFieldModel();\r\n\r\n if (fieldModel) {\r\n BlockUI.Block();\r\n\r\n Store.GetSubTableViews(this._control.GetFieldModel().EntityId)\r\n .then(dto => {\r\n this._viewModel(new ViewModel(this._initValue, dto));\r\n this._viewModel().On('SETTINGS_UPDATED', this, eventArgs => this.ApplyChanges(eventArgs.data));\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n }\r\n\r\n private ApplyChanges(changes) {\r\n this.Value(changes.Settings);\r\n }\r\n}","// Module\nvar code = \"<table class=\\\"table\\\"> <thead> <tr> <th><!-- ko text: _labels.BUTTON_NAME --><!-- /ko --></th> <th><!-- ko text: _labels.SUB_TABLE_VIEW --><!-- /ko --></th> <th><!-- ko text: _labels.INTENTION --><!-- /ko --></th> <th> </th> </tr> </thead> <tbody> <!--ko with: _viewModel--> <!--ko foreach: BackLinkSettings--> <tr> <td class=\\\"language-parrent-drop\\\"> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input type=\\\"text\\\" class=\\\"form-control language-edit-field\\\" data-bind=\\\"textInput: Translation, event:{keyup: $parent.UpdateTranslationList.bind($parent)}\\\"> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </td> <td> <select class=\\\"form-control\\\" data-bind=\\\"options: $parent.SubTableViews, value: $data.SubTableView, optionsText: 'Name'\\\"></select> </td> <td> <select class=\\\"form-control\\\" data-bind=\\\"value: Intention\\\"> <option value=\\\"FillLookup\\\"><!-- ko text: $parents[1]._labels.FILL_LOOKUP --><!-- /ko --></option> <option value=\\\"MakeBackLink\\\"><!-- ko text: $parents[1]._labels.MAKE_A_BACK_LINK --><!-- /ko --></option> </select> </td> <td> <a href=\\\"#\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: $parent.RemoveSettings.bind($parent, $data)\\\"> <i class=\\\"fa fa-times\\\"></i> </a> </td> </tr> <!--/ko--> <!--/ko--> </tbody> </table> <!--ko if: _viewModel--> <a href=\\\"#\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: _viewModel().AddSettings.bind(_viewModel())\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!--/ko--> <!--ko ifnot: _viewModel--> <a href=\\\"#\\\" class=\\\"btn btn-success disabled\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!--/ko-->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {\r\n\tBaseProperty,\r\n\tIPropertyDescription,\r\n\tIPropertyOption,\r\n\tIPropertySortOption\r\n} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport { SortOrder } from 'QueryBuilder/Enums';\r\n\r\nimport QuerySortPropertyTemplate from \"Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty.html\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty\"] = QuerySortPropertyTemplate;\r\n\r\nexport class QuerySortProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _fields: KnockoutObservableArray<AttachedFieldModel>;\r\n\tprivate _selectedField: KnockoutObservable<AttachedFieldModel>;\r\n\tprivate _orderByDescending: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: IPropertySortOption, control: IControl) {\r\n\t\tsuper(property);\r\n\t\tthis._control = control;\r\n\t\tthis._fields = ko.observableArray([]);\r\n\t\tthis._selectedField = ko.observable(null);\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._orderByDescending = ko.observable(false);\r\n\r\n\t\tthis.Init(propertyValue);\r\n\r\n\t\tthis._selectedField.subscribe((newValue)=>{\r\n\t\t\tif( newValue) {\r\n\t\t\t\tthis.Value( { FieldId: newValue.Id, SortDirection: this._orderByDescending() ? SortOrder.Descending : SortOrder.Ascending });\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._orderByDescending.subscribe((newValue) => {\r\n\t\t\tthis.Value().SortOrder = newValue ? SortOrder.Descending : SortOrder.Ascending;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init(propertyValue: IPropertySortOption) {\r\n\r\n if (this._control) {\r\n const types = [\r\n FIELD_TYPES.Currency, FIELD_TYPES.Document, FIELD_TYPES.Icon, FIELD_TYPES.Image, FIELD_TYPES.Reference,\r\n FIELD_TYPES.Memo, FIELD_TYPES.MultiSelect, FIELD_TYPES.Password\r\n ];\r\n\r\n const attachedFields = this._control.GetModel().Fields;\r\n\r\n const sortingFields = _.filter(attachedFields,\r\n field => !_.contains(types, field.FieldTypeName) && !field.IsVirtual);\r\n\r\n this._fields(sortingFields);\r\n\t\t}\r\n\r\n\t\tthis.SetValue(propertyValue);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/GeneralProperties/Managers/QuerySortProperty/Templates/QuerySortProperty\";\r\n\t}\r\n\r\n\tFormatFieldName(field: AttachedFieldModel){\r\n\t\treturn field.FieldNameTranslation || field.Name;\r\n\t}\r\n\r\n\tGetDefaultValue() {\r\n\t\tlet firstField = _.first(this._fields());\r\n\t\tif(firstField){\r\n\t\t\treturn {\r\n\t\t\t\tFieldId: firstField.Id,\r\n\t\t\t\tSortOrder: SortOrder.Ascending\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tSetValue(propertyValue: IPropertySortOption): void {\r\n\t\tif (!propertyValue) {\r\n\t\t\tthis.Value(this.GetDefaultValue());\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet value: IPropertySortOption = {\r\n\t\t\tFieldId : 0,\r\n\t\t\tSortOrder: SortOrder.Ascending\r\n\t\t}\r\n\r\n\t\tthis.Value({ FieldId: 0, SortOrder: SortOrder.Ascending } );\r\n\r\n\t\tlet field = _.find(this._fields(), (field)=>{\r\n\t\t\treturn field.Id === propertyValue.FieldId;\r\n\t\t});\r\n\r\n\t\tif(field) {\r\n\t\t\tvalue.FieldId = field.Id;\r\n\t\t\tthis._selectedField(field);\r\n\t\t}\r\n\r\n\t\tlet orderByDescending = propertyValue.SortOrder === SortOrder.Descending ? true : false;\r\n\r\n\t\tvalue.SortOrder = propertyValue.SortOrder;\r\n\t\tthis.Value(value);\r\n\r\n\t\tthis._orderByDescending(orderByDescending);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container sortingItem\\\"> <select data-bind=\\\"options: _fields, optionsText: 'FullName', value: _selectedField\\\" class=\\\"form-control\\\"></select> <span class=\\\"inputCheckbox\\\"><input data-bind=\\\"checked: _orderByDescending\\\" type=\\\"checkbox\\\">Desc</span> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { EntityTypesStore } from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport { P } from \"Core/Common/Promise\";\r\nimport { TableStore } from \"Core/Common/Stores/TableStore\";\r\nimport { SearchScreen, ISelectedRecord } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {RecordStore} from \"Core/Common/Stores/RecordStore\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty\"] = Template;\r\n\r\nexport class QuerySelectorProperty extends BaseProperty {\r\n QueryName: KnockoutObservable<string>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, getData: boolean = true) {\r\n super(property, true);\r\n this.QueryName = ko.observable(null);\r\n this.Value = ko.observable(propertyValue);\r\n this.Value.subscribe(()=>{\r\n this.LoadData(getData);\r\n });\r\n this.LoadData(getData);\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/QuerySelectorProperty/Templates/QuerySelectorProperty\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n LoadData(getData: boolean = true){\r\n if(this.Value() && getData){\r\n TableStore\r\n .Get({ TableName: 'Queries' })\r\n .then((table: any) => {\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({TableId: table.Id, RecordId: this.Value()})\r\n .always(() => BlockUI.Unblock())\r\n .then((record: any) => {\r\n let nameField = _.find(record.Fields, (field: any)=> field.FieldName === 'NAME');\r\n if(nameField){\r\n this.QueryName(nameField.FieldValue);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n \r\n Add(){\r\n EntityTypesStore.GetTypes({\r\n EntityId: 0,\r\n ParentTypeId: 0,\r\n WithRoot: true,\r\n OnlyEnabled: true,\r\n EntityName: 'Queries'\r\n }).then(tableTypesModel => {\r\n \r\n let queryType = _.find(tableTypesModel.TableTypes, (type) => type.Name === 'Query');\r\n\r\n this.ShowSearchScreen( 'Queries', false, [queryType.Id]).then((searchScreen) => {\r\n searchScreen.On('RECORD_SELECTED', this, (evtArgs) => {\r\n let record = evtArgs.data as ISelectedRecord;\r\n this.Value(record.RecordId);\r\n });\r\n });\r\n })\r\n }\r\n\r\n ShowSearchScreen(\r\n\t\ttableName: string,\r\n\t\tmultiSelect: boolean = false,\r\n\t\tsearchTypes: Array<number> = []\r\n\t): P.Promise<SearchScreen> {\r\n\t\tconst deferredResult = P.defer<SearchScreen>();\r\n\t\tTableStore.Get({ TableName: tableName }).then((table: any) => {\r\n\r\n\t\t\tconst searchScreen = new SearchScreen({\r\n\t\t\t\tButtonAdd: false,\r\n\t\t\t\tEntityId: table.Id,\r\n\t\t\t\tSearchTerm: '',\r\n\t\t\t\tControlId: 0,\r\n\t\t\t\tConditionToggler: false,\r\n\t\t\t\tMultiSelectMode: multiSelect,\r\n\t\t\t\tSearchByTypes: searchTypes\r\n\t\t\t});\r\n\r\n\t\t\tsearchScreen.Show();\r\n\t\t\tdeferredResult.resolve(searchScreen);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n Clear(){\r\n this.Value(null);\r\n this.QueryName(null);\r\n }\r\n}","// Module\nvar code = \"<div> <!-- ko if: Value --> <a data-bind=\\\"click: Add, text: QueryName\\\" href=\\\"javascript:;\\\"></a> <!-- /ko --> <!-- ko ifnot: Value --> <a data-bind=\\\"click: Add\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only green\\\" title=\\\"Add\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!-- /ko --> <!-- ko if: Value --> <a data-bind=\\\"click: Clear\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red\\\" title=\\\"Remove\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseProperty, IPropertyDescription} from '../BaseProperty';\r\nimport {IConsultScreenLayoutValue} from './IConsultScreenLayoutValue';\r\n\r\nimport Template\r\n from 'Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty.html';\r\n\r\nko.templates['Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty'] = Template;\r\n\r\nexport class ConsultScreenLayout extends BaseProperty {\r\n constructor(property: IPropertyDescription, propertyValue: any) {\r\n super(property);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/ConsultScreenLayout/Templates/ConsultScreenLayoutProperty';\r\n }\r\n\r\n SetValue(propertyValue: any) {\r\n if (propertyValue) {\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetDefaultValue(): IConsultScreenLayoutValue {\r\n return {\r\n ActionBar: {\r\n Checked: true\r\n },\r\n MainBlocks: {\r\n Checked: true,\r\n Minimized: false\r\n },\r\n BottomBar: {\r\n Checked: true\r\n }\r\n };\r\n }\r\n\r\n ToggleActionBar() {\r\n this.Value().ActionBar.Checked = !this.Value().ActionBar.Checked;\r\n this.Value.valueHasMutated();\r\n }\r\n\r\n ToggleMainBlocks() {\r\n this.Value().MainBlocks.Checked = !this.Value().MainBlocks.Checked;\r\n\r\n if (!this.Value().MainBlocks.Checked) {\r\n this.Value().MainBlocks.Minimized = false;\r\n }\r\n\r\n this.Value.valueHasMutated();\r\n }\r\n\r\n ToggleMinimizeMainBlocks() {\r\n this.Value().MainBlocks.Minimized = !this.Value().MainBlocks.Minimized;\r\n this.Value.valueHasMutated();\r\n }\r\n\r\n ToggleBottomBar() {\r\n this.Value().BottomBar.Checked = !this.Value().BottomBar.Checked;\r\n this.Value.valueHasMutated();\r\n }\r\n}","// Module\nvar code = \"<!--ko with: Value--> <div class=\\\"consult-screen-layout\\\"> <div class=\\\"action-bar\\\" data-bind=\\\"css: {checked: ActionBar.Checked}, click: $parent.ToggleActionBar.bind($parent)\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> <div class=\\\"block-check\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: {\\r\\n checked: ActionBar.Checked,\\r\\n 'fa-check-circle-o': ActionBar.Checked,\\r\\n 'fa-circle-o': !ActionBar.Checked\\r\\n },\\r\\n click: $parent.ToggleActionBar.bind($parent)\\\"></i> </div> </div> <div class=\\\"main-blocks\\\" data-bind=\\\"click: $parent.ToggleMainBlocks.bind($parent)\\\"> <div class=\\\"main-block\\\" data-bind=\\\"css: {checked: MainBlocks.Checked}\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\" data-bind=\\\"css: {checked: MainBlocks.Checked}\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> </div> <div class=\\\"main-block\\\" data-bind=\\\"css: {checked: MainBlocks.Checked}\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> <div class=\\\"block-check\\\"> <i class=\\\"fa fa-list-alt\\\" data-bind=\\\"tooltip: {content: 'Minimize main blocks'},\\r\\n style: {opacity: MainBlocks.Checked ? 1 : 0},\\r\\n css: {checked: MainBlocks.Minimized,},\\r\\n click: $parent.ToggleMinimizeMainBlocks.bind($parent)\\\"></i> <i class=\\\"fa\\\" data-bind=\\\"css: {\\r\\n checked: MainBlocks.Checked,\\r\\n 'fa-check-circle-o': MainBlocks.Checked,\\r\\n 'fa-circle-o': !MainBlocks.Checked\\r\\n },\\r\\n click: $parent.ToggleMainBlocks.bind($parent)\\\"></i> </div> </div> </div> <div class=\\\"bottom-bar\\\" data-bind=\\\"css: {checked: BottomBar.Checked}, click: $parent.ToggleBottomBar.bind($parent)\\\"> <div class=\\\"controls-preview\\\"> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> <div class=\\\"control-preview\\\"></div> </div> <div class=\\\"block-check\\\"> <i class=\\\"fa\\\" data-bind=\\\"css: {\\r\\n checked: BottomBar.Checked,\\r\\n 'fa-check-circle-o': BottomBar.Checked,\\r\\n 'fa-circle-o': !BottomBar.Checked\\r\\n },\\r\\n click: $parent.ToggleBottomBar.bind($parent)\\\"></i> </div> </div> </div> <!--/ko-->\";\n// Exports\nexport default code;","import {BusinessRole} from 'Core/GeneralProperties/Managers/TabSecurity/Models/BusinessRole';\r\nimport {BusinessRoleRestrictions} from 'Core/GeneralProperties/Managers/TabSecurity/Enums/BusinessRoleRestrictions';\r\n\r\nexport class BusinessRolesDisplaySettings {\r\n public _restrictions: { Name: string; IconName: string }[];\r\n\r\n constructor(public Role: BusinessRole, value: number) {\r\n this._restrictions = BusinessRoleRestrictions\r\n .AsList(value)\r\n .map((restriction) => {\r\n return {\r\n Name: restriction.Name,\r\n IconName: restriction.IconName\r\n }\r\n });\r\n }\r\n\r\n get Restrictions() {\r\n return this._restrictions.slice();\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {ITabSecurityParams} from 'Core/GeneralProperties/Managers/TabSecurity/ITabSecurityParams';\r\n\r\nimport {BusinessRolesDisplaySettings} from './Models/BusinessRolesDisplaySettings';\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/TabSecurity/Views/DisplayView/Templates/Template.html'\r\n\r\nexport class TabSecurityDisplayView extends Event {\r\n private _settings: KnockoutObservableArray<BusinessRolesDisplaySettings>;\r\n private _restrictionsIcons: KnockoutObservableArray<BusinessRolesDisplaySettings>;\r\n\r\n constructor(params: ITabSecurityParams) {\r\n super();\r\n this._settings = ko.observableArray(this.MapToSettings(params));\r\n this._restrictionsIcons = ko.observableArray(this.MapToRestrictionsIcon(params));\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n RequestEditView() {\r\n this.Trigger('RequestEditView');\r\n }\r\n\r\n private MapToSettings(params: ITabSecurityParams) {\r\n return params.Settings.map(settings => {\r\n const role = params.Roles.find(role => role.Id === settings.RoleId);\r\n return role\r\n ? new BusinessRolesDisplaySettings(role, settings.Value)\r\n : null;\r\n }).filter(settings => settings !== null);\r\n }\r\n\r\n private MapToRestrictionsIcon(params: ITabSecurityParams) {\r\n let mapToRestrictions = this.MapToSettings(params).map(settings => {\r\n return settings._restrictions;\r\n });\r\n return _.uniq(_.flatten(mapToRestrictions, true), false, restrictions => restrictions.Name);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"tab-security\\\"> <div class=\\\"tab-security__header\\\"> <!--ko if: _settings().length === 0--> <button type=\\\"button\\\" class=\\\"btn-new\\\" data-bind=\\\"click: $data.RequestEditView.bind($data)\\\"> <i class=\\\"fa fa-plus\\\"></i> Add </button> <!--/ko--> <!--ko if: _settings().length > 0--> <button type=\\\"button\\\" class=\\\"btn-edit\\\" data-bind=\\\"click: $data.RequestEditView.bind($data)\\\"> <i class=\\\"fa fa-edit\\\"></i> Edit </button> <!--/ko--> </div> <!--ko if: _settings().length > 0--> <div class=\\\"restriction-rules\\\"> <!--ko foreach: _settings--> <div class=\\\"restriction-rule\\\"> <div class=\\\"restriction-rule__role\\\" data-bind=\\\"text: Role.DisplayName\\\"></div> <div class=\\\"restriction-rule__values\\\"> <!--ko foreach: Restrictions--> <div class=\\\"restriction-value\\\" data-bind=\\\"text: $data.Name\\\"></div> <!--/ko--> </div> </div> <!--/ko--> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BusinessRoleRestrictions} from 'Core/GeneralProperties/Managers/TabSecurity/Enums/BusinessRoleRestrictions';\r\nimport {BusinessRole} from 'Core/GeneralProperties/Managers/TabSecurity/Models/BusinessRole';\r\n\r\nexport class BusinessRolesEditSettings {\r\n View: KnockoutObservable<boolean>;\r\n Create: KnockoutObservable<boolean>;\r\n Update: KnockoutObservable<boolean>;\r\n Delete: KnockoutObservable<boolean>;\r\n\r\n constructor(public Role: BusinessRole, value: number) {\r\n this.View = ko.observable(BusinessRoleRestrictions.View.PresentIn(value));\r\n this.Create = ko.observable(BusinessRoleRestrictions.Create.PresentIn(value));\r\n this.Update = ko.observable(BusinessRoleRestrictions.Update.PresentIn(value));\r\n this.Delete = ko.observable(BusinessRoleRestrictions.Delete.PresentIn(value));\r\n }\r\n\r\n get Value() {\r\n return (this.View() && BusinessRoleRestrictions.View.Value) +\r\n (this.Create() && BusinessRoleRestrictions.Create.Value) +\r\n (this.Update() && BusinessRoleRestrictions.Update.Value) +\r\n (this.Delete() && BusinessRoleRestrictions.Delete.Value);\r\n }\r\n\r\n get AnyRestrictions() {\r\n return this.View() || this.Create() || this.Update() || this.Delete();\r\n }\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\n\r\nimport {ITabSecurityEditParams} from './ITabSecurityEditParams';\r\n\r\nimport {IBusinessRoleSettings} from '../../ITabSecurityValue';\r\nimport {BusinessRolesEditSettings} from './Models/BusinessRolesEditSettings';\r\n\r\nimport EditTemplate from 'Core/GeneralProperties/Managers/TabSecurity/Views/EditView/Templates/Template.html'\r\n\r\nko.templates['Core/GeneralProperties/Managers/TabSecurity/Templates/Edit'] = EditTemplate;\r\n\r\nexport class TabSecurityEditView extends Event {\r\n private _settings: KnockoutObservableArray<BusinessRolesEditSettings>;\r\n private _modal: Modal;\r\n\r\n constructor(params: ITabSecurityEditParams) {\r\n super();\r\n this._settings = ko.observableArray(this.MapToSettings(params));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/GeneralProperties/Managers/TabSecurity/Templates/Edit';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({\r\n addClass: 'jBox-padding-15px',\r\n maxWidth: 470,\r\n maxHeight: 450,\r\n closeButton: false,\r\n closeOnClick: false,\r\n closeOnEsc: false\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n this._modal.Destroy();\r\n }\r\n\r\n Save() {\r\n const settings: IBusinessRoleSettings[] = this._settings()\r\n .filter(settings => settings.Value > 0)\r\n .map(settings => {\r\n return {RoleId: settings.Role.Id, Value: settings.Value}\r\n });\r\n\r\n this.Trigger('SaveChanges', {Settings: settings});\r\n }\r\n\r\n Cancel() {\r\n this.Close();\r\n }\r\n\r\n private MapToSettings(params: ITabSecurityEditParams) {\r\n return params.Roles.map(role => {\r\n const restriction = params.Settings.find(restriction => restriction.RoleId === role.Id);\r\n const value = restriction ? restriction.Value : 0;\r\n return new BusinessRolesEditSettings(role, value);\r\n });\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"tab-security-edit\\\"> <div class=\\\"tab-security-edit__actions\\\"> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: $data.Save.bind($data)\\\">Save</button> <button type=\\\"button\\\" class=\\\"btn btn-default\\\" data-bind=\\\"click: $data.Cancel.bind($data)\\\">Cancel</button> </div> <div class=\\\"tab-security-edit__header\\\"> <span>Tab Security</span> </div> <div class=\\\"tab-security-edit__table\\\"> <table class=\\\"table tab-security-edit__rules\\\"> <thead> <tr> <th class=\\\"first-cell\\\">Business roles</th> <th>Hide</th> </tr> </thead> <tbody> <!--ko foreach: _settings--> <tr> <td class=\\\"first-cell\\\" data-bind=\\\"text: Role.DisplayName, style: {'font-weight': Role.Id == null ? 'bold' : ''}\\\"></td> <td><input type=\\\"checkbox\\\" data-bind=\\\"checked: View\\\"></td> </tr> <!--/ko--> </tbody> </table> </div> <p class=\\\"tab-security-edit__hint\\\"> Tick a checkbox to restrict functionality for an appropriate business role </p> </div> </div>\";\n// Exports\nexport default code;","export class BusinessRole {\r\n constructor(\r\n public Id: number,\r\n public Name: string,\r\n public TranslatedName: string) {\r\n }\r\n\r\n get DisplayName() {\r\n return this.TranslatedName || this.Name;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {BaseProperty, IPropertyDescription} from '../BaseProperty';\r\nimport {ITabSecurityValue} from './ITabSecurityValue';\r\n\r\nimport {TabSecurityDisplayView} from './Views/DisplayView/TabSecurityDisplayView';\r\nimport {TabSecurityEditView} from './Views/EditView/TabSecurityEditView';\r\n\r\nimport {TabSecurityStore} from './Stores/TabSecurityStore';\r\n\r\nimport {BusinessRoleDto} from './Stores/Models/BusinessRoleDto';\r\nimport {BusinessRole} from './Models/BusinessRole';\r\n\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/TabSecurity/Templates/Template.html'\r\n\r\nko.templates['Core/GeneralProperties/Managers/TabSecurity/Templates/Template'] = Template;\r\n\r\nexport class TabSecurity extends BaseProperty {\r\n private readonly _store: TabSecurityStore;\r\n private readonly _displayView: KnockoutObservable<TabSecurityDisplayView>;\r\n\r\n private _el: HTMLElement;\r\n private _roles: BusinessRole[];\r\n\r\n constructor(property: IPropertyDescription, propertyValue: any) {\r\n super(property);\r\n\r\n this._store = new TabSecurityStore();\r\n this._displayView = ko.observable(null);\r\n\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n SetValue(propertyValue: any) {\r\n if (propertyValue) {\r\n this.Value(propertyValue);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/TabSecurity/Templates/Template';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n this.LoadRestrictions()\r\n .then(() => this.InitDisplayView());\r\n }\r\n\r\n GetDefaultValue(): ITabSecurityValue {\r\n return {\r\n TabSecuritySettings: []\r\n }\r\n }\r\n\r\n InitDisplayView() {\r\n const displayView = new TabSecurityDisplayView({\r\n Roles: this._roles,\r\n Settings: this.Value().TabSecuritySettings\r\n });\r\n\r\n displayView.On('RequestEditView', this, () => this.OpenEditView());\r\n\r\n this._displayView(displayView);\r\n }\r\n\r\n OpenEditView() {\r\n const editView = new TabSecurityEditView({\r\n Roles: this._roles,\r\n Settings: this.Value().TabSecuritySettings\r\n });\r\n\r\n editView.On('SaveChanges', this, eventArgs => {\r\n this.Value().TabSecuritySettings = eventArgs.data.Settings;\r\n this.Value.valueHasMutated();\r\n\r\n editView.Close();\r\n this.InitDisplayView();\r\n });\r\n\r\n editView.Show();\r\n }\r\n\r\n private LoadRestrictions() {\r\n BlockUI.Block({Target: this._el});\r\n return this._store.GetBusinessRoles()\r\n .then(roles => {\r\n this._roles = this.MapToRoles(roles);\r\n return P.resolve(null);\r\n })\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock(this._el));\r\n }\r\n\r\n private MapToRoles(rolesDto: BusinessRoleDto[]) {\r\n const roles = rolesDto.map(roleDto => new BusinessRole(roleDto.Id, roleDto.Name, roleDto.TranslatedName));\r\n roles.unshift(new BusinessRole(null, 'Without Role', null));\r\n\r\n return roles;\r\n }\r\n}","// Module\nvar code = \"<div> <!--ko with: _displayView--> <!--ko template: {html: $data.GetTemplate.bind($data)}--><!--/ko--> <!--/ko--> </div>\";\n// Exports\nexport default code;","import { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { Deserialize } from 'libs/cerialize';\r\nimport { DWPackageModel } from \"Core/GeneralProperties/Managers/DWPackageProperty/Models/DWPackageModel\";\r\n\r\nexport class DWPackagePropertyStore {\r\n static GetDataWizardPackages(): P.Promise<DWPackageModel[]>{\r\n\t\tvar deferredResult = P.defer<any>();\r\n \r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n url: URL.CANVAS.GET_DW_PACKAGES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\t\tRequest.Send(requestParams).then(data => {\r\n deferredResult.resolve(data.ResultObject);\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport Template from 'Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty.html';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BaseProperty, IPropertyDescription, IPropertyOption } from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport { DWPackageModel } from \"Core/GeneralProperties/Managers/DWPackageProperty/Models/DWPackageModel\";\r\nimport { DWPackagePropertyStore }\r\n from \"Core/GeneralProperties/Managers/DWPackageProperty/Stores/DWPackagePropertyStore\";\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty\"] = Template;\r\n\r\nexport class DWPackageProperty extends BaseProperty {\r\n private _options: KnockoutObservableArray<IPropertyOption>;\r\n private SelectedOption: KnockoutObservable<IPropertyOption>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: number, getData: boolean = true) {\r\n super(property);\r\n\r\n this._options = ko.observableArray([]);\r\n this.Value = ko.observable(null);\r\n this.SelectedOption = ko.observable(null);\r\n\r\n if(getData) {\r\n DWPackagePropertyStore.GetDataWizardPackages().then((result) => {\r\n let items: IPropertyOption[] = _.map(result,\r\n (item: DWPackageModel) => {\r\n return { Name: item.Name, Value: item.Id }\r\n });\r\n this.Init(items, propertyValue);\r\n }).fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n }\r\n\r\n get Options(): KnockoutObservableArray<IPropertyOption> {\r\n return this._options;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/DWPackageProperty/Templates/DWPackageProperty\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return _.first(this._options());\r\n }\r\n\r\n SetValue(propertyValue: number): void {\r\n this.SelectedOption.subscribe((newValue)=>{\r\n if(newValue){\r\n this.Value(newValue.Value)\r\n }\r\n });\r\n \r\n if (!propertyValue) {\r\n this.SelectedOption(this.GetDefaultValue());\r\n }else{\r\n let selectedValue = _.find(this._options(), option => option.Value === propertyValue);\r\n this.SelectedOption(selectedValue); \r\n }\r\n }\r\n\r\n IsValid(): boolean {\r\n if (this.ValueRequired) {\r\n return this.Value();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private Init(options: IPropertyOption[], propertyValue: number) {\r\n this.SetOptions(options);\r\n this.SetValue(propertyValue);\r\n }\r\n\r\n private SetOptions(options: IPropertyOption[]) {\r\n if (!this.ValueRequired) {\r\n const empty: IPropertyOption = { Name: LABELS.SELECT_LABEL + '....', Value: null };\r\n options.unshift(empty);\r\n }\r\n\r\n this._options(options);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: SelectedOption\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nimport {DimensionField} from './DimensionField';\r\n\r\nexport class Dimension extends Event {\r\n private _initialized: boolean;\r\n private _oldSelectedField: DimensionField;\r\n\r\n Fields: KnockoutObservableArray<DimensionField>;\r\n SelectedField: KnockoutObservable<DimensionField>;\r\n\r\n constructor(fields: DimensionField[], selectedFieldId?: number) {\r\n super();\r\n\r\n this._initialized = false;\r\n\r\n this.Fields = ko.observableArray(fields);\r\n\r\n this.SelectedField = ko.observable(selectedFieldId ? fields.find(field => field.Id === selectedFieldId) : null);\r\n\r\n this.SelectedField.subscribe(oldSelectedField => this._oldSelectedField = oldSelectedField, undefined, 'beforeChange');\r\n this.SelectedField.subscribe(() => {\r\n if (!this._initialized) {\r\n this._initialized = true;\r\n return;\r\n }\r\n\r\n this.Trigger('SelectedField');\r\n });\r\n\r\n if (this.SelectedField()) {\r\n this._initialized = true;\r\n }\r\n }\r\n\r\n get OldSelectedField() {\r\n return this._oldSelectedField;\r\n }\r\n}","export class DimensionField {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}\r\n","export class DimensionalTablePropertyValue {\r\n constructor(public ValueField: DimensionalTablePropertyField,\r\n public PageField: DimensionalTablePropertyField,\r\n public DimensionFields: DimensionalTablePropertyField[]) {\r\n }\r\n}\r\n\r\nexport class DimensionalTablePropertyField {\r\n constructor(public Id: number, public Name: string) {\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {TableStore} from 'Core/Common/Stores/TableStore';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport {BaseProperty, IPropertyDescription} from '../BaseProperty';\r\n\r\nimport {Dimension} from './Models/Dimension';\r\nimport {DimensionField} from './Models/DimensionField';\r\nimport {DimensionalTablePropertyField, DimensionalTablePropertyValue} from './Models/DimensionalTablePropertyValue';\r\n\r\nimport DimensionalTablePropertyTemplate\r\n from \"Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty.html\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty\"] = DimensionalTablePropertyTemplate;\r\n\r\nexport class DimensionalTableProperty extends BaseProperty {\r\n private _control: IControl;\r\n private _el: HTMLElement;\r\n private _labels = LABELS;\r\n\r\n private _maxDimensions: number;\r\n private _tableFields: DimensionField[];\r\n\r\n private _valueFieldChangedSub: KnockoutSubscription;\r\n private _pageFieldChangeSub: KnockoutSubscription;\r\n\r\n ValueField: KnockoutObservable<DimensionField>;\r\n PageField: KnockoutObservable<DimensionField>;\r\n\r\n ValueFields: KnockoutObservableArray<DimensionField>;\r\n Dimensions: KnockoutObservableArray<Dimension>;\r\n PageFields: KnockoutObservableArray<DimensionField>;\r\n\r\n AnyDimensionSelected: KnockoutComputed<boolean>;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n super(property);\r\n\r\n this._control = control;\r\n this._maxDimensions = 4;\r\n this._tableFields = [];\r\n\r\n this.ValueField = ko.observable(null);\r\n this.PageField = ko.observable(null);\r\n\r\n this.ValueFields = ko.observableArray([]);\r\n this.Dimensions = ko.observableArray([]);\r\n this.PageFields = ko.observableArray([]);\r\n\r\n this.AnyDimensionSelected = ko.computed(() => this.Dimensions().length > 0, this);\r\n\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n }\r\n\r\n IsValid(): boolean {\r\n return this.Value() && this.Value().ValueField && this.Value().DimensionFields.length > 0;\r\n }\r\n\r\n Reset() {\r\n this.Value(this.GetDefaultValue());\r\n this.OnInit();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/DimensionalTableProperty/Templates/DimensionalTableProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[0];\r\n }\r\n\r\n GetDefaultValue(): any {\r\n return null;\r\n }\r\n\r\n OnInit() {\r\n const fieldModel = this._control.GetFieldModel();\r\n if (fieldModel) {\r\n const tableId = fieldModel.EntityId;\r\n\r\n BlockUI.Block({Target: this._el});\r\n TableStore.GetStruct({TableId: tableId})\r\n .always(() => {\r\n BlockUI.Unblock(this._el);\r\n })\r\n .then(tableStruct => {\r\n this.InitDimensionFields(tableStruct);\r\n\r\n if (this.Value()) {\r\n this.FillViewModel();\r\n } else {\r\n this.Dimensions([]);\r\n }\r\n\r\n this.BindEvents();\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n }\r\n\r\n OnValueFieldChange() {\r\n //if deselected\r\n if (!this.ValueField()) {\r\n this.PageField(null);\r\n this.Dimensions([]);\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n return;\r\n }\r\n\r\n //add dimension if possible\r\n if (this.Dimensions().length === 0) {\r\n this.AddDimension();\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n }\r\n }\r\n\r\n OnPageFieldChange() {\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n }\r\n\r\n OnDimensionalFieldSelect(dimension: Dimension) {\r\n const index = this.Dimensions().indexOf(dimension);\r\n\r\n //if deselected\r\n if (!dimension.SelectedField()) {\r\n this.Dimensions.splice(index + 1);\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n return;\r\n }\r\n\r\n //add dimension if possible\r\n if (this.Dimensions().length < this._maxDimensions && index === this.Dimensions().length - 1) {\r\n this.AddDimension();\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n return;\r\n }\r\n\r\n this.UpdateValue();\r\n this.UpdateAvailableFields();\r\n }\r\n\r\n private InitDimensionFields(tableStruct: any) {\r\n const allowedFieldTypes = [FIELD_TYPES.Integer, FIELD_TYPES.Decimal, FIELD_TYPES.Lookup, FIELD_TYPES.Text];\r\n\r\n const fields = _.chain(tableStruct.Fields)\r\n .filter(field => field.Sort >= 3000 && field.Sort <= 7999)\r\n .filter(field => field.IsPhysicalField)\r\n .filter(field => _.contains(allowedFieldTypes, field.Type))\r\n .map(field => new DimensionField(field.Id, field.Name))\r\n .value();\r\n\r\n this._tableFields = fields;\r\n\r\n this.ValueFields(fields);\r\n this.PageFields(fields);\r\n }\r\n\r\n private FillViewModel() {\r\n const valueField = this._tableFields.find(field => field.Id === this.Value().ValueField.Id);\r\n const pageField = this.Value().PageField && this._tableFields.find(field => field.Id === this.Value().PageField.Id);\r\n this.ValueField(valueField);\r\n this.PageField(pageField);\r\n\r\n this.Value().DimensionFields.forEach(field => this.AddDimension(field.Id));\r\n\r\n if (this.Value().DimensionFields.length < this._maxDimensions) {\r\n this.AddDimension();\r\n }\r\n\r\n this.UpdateAvailableFields();\r\n }\r\n\r\n private BindEvents() {\r\n if (this._valueFieldChangedSub) {\r\n this._valueFieldChangedSub.dispose();\r\n this._pageFieldChangeSub.dispose();\r\n }\r\n\r\n this._valueFieldChangedSub = this.ValueField.subscribe(() => this.OnValueFieldChange());\r\n this._pageFieldChangeSub = this.PageField.subscribe(() => this.OnPageFieldChange());\r\n }\r\n\r\n private AddDimension(selectedFieldId?: number) {\r\n const dimension = this.CreateDimension(selectedFieldId)\r\n this.Dimensions.push(dimension);\r\n }\r\n\r\n private CreateDimension(selectedFieldId?: number) {\r\n const dimension = new Dimension(this._tableFields, selectedFieldId);\r\n dimension.On('SelectedField', this, () => this.OnDimensionalFieldSelect(dimension));\r\n return dimension;\r\n }\r\n\r\n private UpdateValue() {\r\n if (!this.ValueField()) {\r\n this.Value(null);\r\n this.PageField(null);\r\n return;\r\n }\r\n\r\n const valueField = new DimensionalTablePropertyField(this.ValueField().Id, this.ValueField().Name);\r\n const pageField = this.PageField() ? new DimensionalTablePropertyField(this.PageField().Id, this.PageField().Name) : null;\r\n\r\n const dimensionFields: DimensionalTablePropertyField[] = this.Dimensions()\r\n .filter(dimension => dimension.SelectedField())\r\n .map(dimension => new DimensionalTablePropertyField(dimension.SelectedField().Id, dimension.SelectedField().Name));\r\n\r\n const value = new DimensionalTablePropertyValue(valueField, pageField, dimensionFields);\r\n this.Value(value);\r\n }\r\n\r\n private UpdateAvailableFields() {\r\n const dimensionFields = this.Dimensions().map(dimension => dimension.SelectedField());\r\n const valueField = this.ValueField();\r\n const pageField = this.PageField();\r\n const selectedFields = [valueField, pageField, ...dimensionFields].filter(field => !!field);\r\n\r\n const availableValueFields = _.without(this._tableFields, ...selectedFields.filter(field => field !== this.ValueField()))\r\n this.ValueFields(availableValueFields);\r\n\r\n this.Dimensions().forEach(dimension => {\r\n const otherSelectedFields = selectedFields.filter(field => field !== dimension.SelectedField());\r\n const availableFields = _.without(this._tableFields, ...otherSelectedFields);\r\n dimension.Fields(availableFields);\r\n });\r\n\r\n const availablePageFields = _.without(this._tableFields, ...selectedFields.filter(field => field !== this.PageField()))\r\n this.PageFields(availablePageFields);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"dimensional-table-property\\\"> <table class=\\\"spreadsheet-design\\\"> <tr> <td class=\\\"layout-cell\\\"></td> <td class=\\\"layout-cell\\\"></td> <td class=\\\"layout-cell\\\"></td> </tr> <tr> <td rowspan=\\\"2\\\" colspan=\\\"2\\\"></td> <td class=\\\"cell cell--violet\\\">Dimension 3</td> </tr> <tr> <td class=\\\"cell cell--blue\\\">Dimension 1</td> </tr> <tr> <td class=\\\"cell cell--grey\\\">Dimension 4</td> <td class=\\\"cell cell--orange\\\">Dimension 2</td> <td class=\\\"cell cell--bold cell--centered\\\">Value</td> </tr> <tr> <td colspan=\\\"3\\\" class=\\\"cell cell--bold cell--centered\\\">Page</td> </tr> </table> <div class=\\\"dimensions-mapping\\\"> <div class=\\\"form-group\\\"> <label>Value</label> <select class=\\\"form-control\\\" data-bind=\\\"options: ValueFields, optionsText: 'Name', optionsCaption: _labels.SELECT_VALUE_LABEL, value: ValueField\\\"></select> </div> <!--ko foreach: Dimensions--> <div class=\\\"form-group\\\"> <label> Dimension <span data-bind=\\\"text: ($index() + 1)\\\"></span> </label> <select class=\\\"form-control\\\" data-bind=\\\"options: Fields, optionsText: 'Name', optionsCaption: $parent._labels.SELECT_VALUE_LABEL, value: SelectedField\\\"></select> </div> <!--/ko--> <!--ko if: AnyDimensionSelected--> <div class=\\\"form-group\\\"> <label>Page</label> <select class=\\\"form-control\\\" data-bind=\\\"options: PageFields, optionsText: 'Name', optionsCaption: _labels.SELECT_VALUE_LABEL, value: PageField\\\"></select> </div> <!--/ko--> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {\r\n\tBaseProperty,\r\n\tIPropertyDescription,\r\n\tIPropertyOption,\r\n\tIPropertySortOption\r\n} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CardScreenModel } from 'QueryBuilder/Models/CardScreenModel';\r\nimport {CONTROL_TYPES, TABLE_TYPES} from \"Core/Constant\";\r\n\r\nimport {EntityTypes} from \"Core/Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template.html\";\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { BlockUI } from \"../../../Common/BlockUi\";\r\n\r\nko.templates['Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template'] = Template;\r\n\r\nexport class CardScreenProperty extends BaseProperty {\r\n\tprivate _control: IControl;\r\n\tprivate _labels = LABELS;\r\n\tprivate _screens: KnockoutObservableArray<CardScreenModel>;\r\n\tprivate _selectedScreen: KnockoutObservable<CardScreenModel>;\r\n\tprivate _el: HTMLElement;\r\n\r\n\r\n\tconstructor(property: IPropertyDescription, propertyValue: number, control: IControl, getData: boolean = true) {\r\n\t\tsuper(property);\r\n\t\tthis._control = control;\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._screens = ko.observableArray([]);\r\n\t\tthis._selectedScreen = ko.observable(null);\r\n\t\tthis.SetValue(propertyValue, getData);\r\n\r\n\t\tthis._selectedScreen.subscribe((newValue) => {\r\n\t\t\tif(newValue){\r\n\t\t\t\tthis.Value(newValue.Id);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.Value(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tthis._el = el[0];\r\n\t\tsuper.AfterRender(el);\r\n\t}\r\n\r\n\tSetValue(propertyValue: number, getData: boolean = true){\r\n\t\tif(getData) {\r\n\t\t\tQueryBuilderStore.GetCardScreens({EntityId: this.GridSubjectEntityId})\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t})\r\n\t\t\t\t.then((screens) => {\r\n\r\n\t\t\t\t\tthis._screens(screens);\r\n\r\n\t\t\t\t\tlet selectedScreen = _.find(screens, (screen) => {\r\n\t\t\t\t\t\treturn screen.Id === propertyValue;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (selectedScreen) {\r\n\t\t\t\t\t\tthis._selectedScreen(selectedScreen);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.Value(propertyValue);\r\n\t}\r\n\r\n\tget GridSubjectEntityId() {\r\n if (this._control) {\r\n let gridSubjectEntityId = null;\r\n if (this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen] || this._control.GetForm().GetScreen().GetTypeName() === ScreenTypes[ScreenTypes.ListScreen]) {\r\n gridSubjectEntityId = this._control.GetForm().GetScreen().GetEntityId();\r\n } else {\r\n let fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Entity\r\n });\r\n\r\n if (!fieldModel) {\r\n fieldModel = _.find(this._control.GetModel().Fields, (field) => {\r\n return field.EntityTypeName === TABLE_TYPES.Sub\r\n });\r\n }\r\n\r\n if (fieldModel) {\r\n gridSubjectEntityId = fieldModel.EntityId;\r\n }\r\n }\r\n\r\n return gridSubjectEntityId;\r\n }\r\n }\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/GeneralProperties/Managers/CardScreenProperty/Templates/Template';\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: _labels.TEMPLATE_SCREEN\\\"></span> <select data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: _screens,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsCaption: _labels.SELECT_TEMPLATE_SCREEN,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedScreen\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate.html\";\r\nimport { EntityTypesStore, IGetTypesRequestModel } from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate\"] = Template;\r\n\r\n\r\nexport class TemplateTypeProperty extends BaseProperty {\r\n private _el: HTMLElement;\r\n private _control: IControl;\r\n private _types: KnockoutObservableArray<TableTypeModel>;\r\n private _selectedType: KnockoutObservable<TableTypeModel>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n super(property);\r\n this._control = control;\r\n this._types = ko.observableArray([]);\r\n this._selectedType = ko.observable(null);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n this._selectedTypeSubscription = null;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/TemplateTypeProperty/TemplateTypePropertyTemplate\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n OnInit(): void {\r\n if(this._control.GetFieldModel()) {\r\n let request: IGetTypesRequestModel = {\r\n EntityId: this._control.GetFieldModel().EntityId,\r\n ParentTypeId: 0,\r\n WithRoot: false,\r\n OnlyEnabled: true\r\n };\r\n\r\n EntityTypesStore.GetTypes(request).then((data)=> {\r\n _.each(data.TableTypes, (type) =>{\r\n type.Name = type.Name + ' only';\r\n });\r\n\r\n this._types(data.TableTypes);\r\n\r\n if(this.Value()){\r\n let selectedType = _.find(data.TableTypes, (type) => type.Id === this.Value());\r\n if(selectedType){\r\n this._selectedType(selectedType);\r\n }else{\r\n this.Value(null);\r\n } \r\n }\r\n\r\n this._selectedTypeSubscription = this._selectedType.subscribe((newValue)=> {\r\n if(newValue && newValue.Id){\r\n this.Value(newValue.Id);\r\n }else{\r\n this.Value(null);\r\n }\r\n }); \r\n \r\n });\r\n }\r\n }\r\n\r\n Reset() {\r\n if(this._selectedTypeSubscription){\r\n this._selectedTypeSubscription.dispose();\r\n }\r\n this.OnInit();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {}\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"></div> <select data-bind=\\\"options: $data._types, optionsText: 'Name', value: $data._selectedType, optionsCaption: 'All'\\\" class=\\\"form-control\\\"></select> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport { TemplateModel } from 'Core/Controls/ButtonTemplate/Models/TemplateModel';\r\nimport { ButtonTemplateStore, IMergeAndSaveRequestModel, IGetTemplatesRequestModel } from 'Core/Controls/ButtonTemplate/Stores/ButtonTemplateStore';\r\n\r\nimport Template from \"Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate.html\";\r\nimport { EntityTypesStore, IGetTypesRequestModel } from \"Core/Screens/TypeScreen/Stores/EntityTypesStore\";\r\n\r\nko.templates[\"Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate\"] = Template;\r\n\r\n\r\nexport class DocumentTemplateProperty extends BaseProperty {\r\n private _el: HTMLElement;\r\n private _control: IControl;\r\n private _templates: KnockoutObservableArray<TemplateModel>;\r\n private _selectedTemplate: KnockoutObservable<TemplateModel>;\r\n private _selectedTypeSubscription: KnockoutSubscription;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: string, control: IControl) {\r\n super(property);\r\n this._control = control;\r\n this._templates = ko.observableArray([]);\r\n this._selectedTemplate = ko.observable(null);\r\n this.Value = ko.observable(propertyValue || this.GetDefaultValue());\r\n\r\n this.IsEnabled.subscribe(newValue=>{\r\n if(!newValue){\r\n this.Value(null);\r\n }\r\n });\r\n\r\n this.IsEnabled(control.GeneralProperties.GetPropertyValue('Position').Value === 'Row');\r\n\r\n control.GeneralProperties.GetPropertyManager('Position').Value.subscribe((newValue)=>{\r\n this.IsEnabled(newValue.Value == 'Row');\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/GeneralProperties/Managers/DocumentTemplateProperty/DocumentTemplatePropertyTemplate\";\r\n }\r\n\r\n GetDefaultValue() {\r\n return null;\r\n }\r\n\r\n SetValue(propertyValue: string): void {\r\n this.Value(propertyValue);\r\n }\r\n\r\n OnInit(): void {\r\n const requestModel: IGetTemplatesRequestModel = {\r\n\t\t\tSubjectEntityId: (this._control as any).ContextEntityId,\r\n\t\t\tObjectEntityId: (this._control as any).ContextEntityId,\r\n\t\t\tControlId: this._control.GetControlId()\r\n\t\t};\r\n\r\n ButtonTemplateStore.GetData(requestModel).then((templates)=>{\r\n this._templates(templates);\r\n\r\n if(this.Value()){\r\n let selectedTemplate = _.find(templates, (template) => template.Id === this.Value());\r\n if(selectedTemplate){\r\n this._selectedTemplate(selectedTemplate);\r\n }else{\r\n this.Value(null);\r\n }\r\n }\r\n\r\n this._selectedTemplate.subscribe((newValue)=> {\r\n if(newValue && newValue.Id){\r\n this.Value(newValue.Id);\r\n }else{\r\n this.Value(null);\r\n }\r\n }); \r\n });\r\n }\r\n\r\n Reset() {\r\n this.OnInit();\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {}\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"></div> <span data-bind=\\\"text: Name\\\">Position</span> <select data-bind=\\\"options: $data._templates, enable: IsEnabled, optionsText: 'Name', value: $data._selectedTemplate, optionsCaption: 'Select...'\\\" class=\\\"form-control\\\"></select> \";\n// Exports\nexport default code;","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class ExampleAppointmentResponseModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {ExampleAppointmentResponseModel} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/Models/ExampleAppointmentResponseModel';\r\n\r\nexport class ExampleAppointmentStore {\r\n static GetExampleAppointments() {\r\n const deferred = P.defer<ExampleAppointmentResponseModel[]>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/FormDesignerApi/GetExampleAppointments',\r\n type: 'GET'\r\n }\r\n })\r\n .then(exampleAppointments => {\r\n deferred.resolve(Deserialize(exampleAppointments, ExampleAppointmentResponseModel))});\r\n\r\n return deferred.promise();\r\n }\r\n}","import * as _ from 'underscore';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IPropertyDescription, IPropertyOption} from 'Core/GeneralProperties/Managers/BaseProperty';\r\nimport {BaseSelectProperty} from 'Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty';\r\n\r\nimport {ExampleAppointmentStore} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/ExampleAppointmentStore';\r\nimport {ExampleAppointmentResponseModel} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Stores/Models/ExampleAppointmentResponseModel';\r\n\r\nimport Template from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty.html';\r\n\r\nko.templates['Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty'] = Template;\r\n\r\nexport class ExampleAppointmentProperty extends BaseSelectProperty {\r\n private _propertyValue: IPropertyOption;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _el: HTMLElement;\r\n\r\n constructor(property: IPropertyDescription, propertyValue: IPropertyOption) {\r\n super(property, propertyValue);\r\n\r\n this._propertyValue = propertyValue;\r\n this._isValid = ko.observable(true);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this._isValid();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/Templates/ExampleAppointmentProperty';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n super.AfterRender(el);\r\n this._el = el[0];\r\n\r\n this._isValid(false);\r\n\r\n BlockUI.Block({Target: this._el});\r\n this.LoadData()\r\n .then(exampleAppointments => {\r\n this.PopulateData(exampleAppointments);\r\n })\r\n .fail(error => {\r\n Notifier.Failed(error.message);\r\n })\r\n .always(() => {\r\n this._isValid(true);\r\n BlockUI.Unblock(this._el);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n return ExampleAppointmentStore.GetExampleAppointments();\r\n }\r\n\r\n private PopulateData(exampleAppointments: ExampleAppointmentResponseModel[]){\r\n let items: IPropertyOption[] = _.map(exampleAppointments,\r\n (item: ExampleAppointmentResponseModel) => {\r\n return {Name: item.Name, Value: item.Id}\r\n });\r\n\r\n this.Init(items, this._propertyValue);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"property-container\\\"> <span data-bind=\\\"text: Name\\\"></span> <select data-bind=\\\"options: Options, optionsText: 'Name', value: Value\\\" class=\\\"form-control\\\"></select> </div>\";\n// Exports\nexport default code;","import { SubFlowProperty } from './../Managers/SubFlowProperty/SubFlowProperty';\r\nimport {PropertyManagers} from \"Core/GeneralProperties/Enums/PropertyManagers\";\r\nimport {BaseProperty, IPropertyDescription} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {CheckboxProperty} from \"Core/GeneralProperties/Managers/CheckboxProperty/CheckboxProperty\";\r\nimport {InputNumberProperty} from \"Core/GeneralProperties/Managers/InputNumberProperty/InputNumberProperty\";\r\nimport {InputTextProperty} from \"Core/GeneralProperties/Managers/InputTextProperty/InputTextProperty\";\r\nimport {ColorPicker} from \"Core/GeneralProperties/Managers/ColorPicker/ColorPicker\";\r\nimport {SelectProperty} from \"Core/GeneralProperties/Managers/SelectProperty/SelectProperty\";\r\nimport {SelectEntityTypeProperty} from \"Core/GeneralProperties/Managers/SelectEntityTypeProperty/SelectEntityTypeProperty\";\r\nimport {SelectLockedLinkEntityProperty} from \"Core/GeneralProperties/Managers/SelectLockedLinkEntityProperty/SelectLockedLinkEntityProperty\";\r\nimport {MultiSelectProperty} from \"Core/GeneralProperties/Managers/MultiSelectProperty/MultiSelectProperty\";\r\nimport {WebSizeProperty} from \"Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\nimport {InputUrlProperty} from \"Core/GeneralProperties/Managers/InputUrlProperty/InputUrlProperty\";\r\nimport {FileUploadProperty} from \"Core/GeneralProperties/Managers/FileUploadProperty/FileUploadProperty\";\r\nimport {QueryConditionProperty} from \"Core/GeneralProperties/Managers/QueryConditionProperty/QueryConditionProperty\";\r\nimport {QueryBuilderProperty} from \"Core/GeneralProperties/Managers/QueryBuilderProperty/QueryBuilderProperty\";\r\nimport {AlternativeEntitiesProperty} from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/AlternativeEntitiesProperty\";\r\nimport {TypesProperty} from \"Core/GeneralProperties/Managers/TypesProperty/TypesProperty\";\r\nimport {BackLinkingProperty} from \"Core/GeneralProperties/Managers/BackLinkingProperty/BackLinkingProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {QuerySortProperty} from \"Core/GeneralProperties/Managers/QuerySortProperty/QuerySortProperty\";\r\nimport {QuerySelectorProperty} from \"Core/GeneralProperties/Managers/QuerySelectorProperty/QuerySelectorProperty\";\r\nimport {ConsultScreenLayout} from 'Core/GeneralProperties/Managers/ConsultScreenLayout/ConsultScreenLayout';\r\nimport {TabSecurity} from 'Core/GeneralProperties/Managers/TabSecurity/TabSecurity';\r\nimport { DWPackageProperty } from 'Core/GeneralProperties/Managers/DWPackageProperty/DWPackageProperty';\r\nimport {DimensionalTableProperty} from '../Managers/DimensionalTableProperty/DimensionalTableProperty';\r\nimport {CardScreenProperty} from '../Managers/CardScreenProperty/CardScreenProperty';\r\nimport { TemplateTypeProperty } from \"../Managers/TemplateTypeProperty/TemplateTypeProperty\";\r\nimport { DocumentTemplateProperty } from \"../Managers/DocumentTemplateProperty/DocumentTemplateProperty\";\r\nimport {ExampleAppointmentProperty} from 'Core/GeneralProperties/Managers/ExampleAppointmentProperty/ExampleAppointmentProperty';\r\n\r\nexport class PropertyManagersFactory {\r\n\tprivate static _initialized: boolean;\r\n\tprivate static _propertyNameToProperty: { [name: string]: (property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) => BaseProperty } = {};\r\n\r\n\tstatic GetPropertyManager(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean = true): BaseProperty {\r\n\t\tthis.Init();\r\n\t\treturn this._propertyNameToProperty[property.PropertyManager](property, propertyValue, control, getData);\r\n\t}\r\n\r\n\tprivate static Init() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.CheckboxProperty] = this.GetCheckBoxProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.InputTextProperty] = this.GetInputTextProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.InputNumberProperty] = this.GetInputNumberProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.ColorPicker] = this.GetColorPicker.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SelectProperty] = this.GetSelectProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SelectEntityTypeProperty] = this.GetSelectEntityTypeProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SelectLockedLinkEntityProperty] = this.GetSelectLockedLinkEntityProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.MultiSelectProperty] = this.GetMultiSelectProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.WebSizeProperty] = this.GetWebSizeProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.InputUrlProperty] = this.GetInputUrlProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.FileUploadProperty] = this.GetFileUploadProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QueryConditionProperty] = this.GetQueryConditionProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QueryBuilderProperty] = this.GetQueryBuilderProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.AlternativeEntitiesProperty] = this.GetAlternativeEntitiesProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.TypesProperty] = this.GetTypesProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.BackLinkingProperty] = this.GetBackLinkingProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QuerySortProperty] = this.GetQuerySortProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.QuerySelectorProperty] = this.GetQuerySelectorProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.ConsultScreenLayout] = this.GetConsultScreenLayoutProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.TabSecurity] = this.GetTabSecurityProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.DimensionalTable] = this.GetDimensionalTableProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.CardScreenProperty] = this.GetCardScreenProperty.bind(this);\r\n this._propertyNameToProperty[PropertyManagers.DWPackageProperty] = this.GetDWPackageProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.TemplateTypeProperty] = this.GetTemplateTypeProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.DocumentTemplateProperty] = this.GetDocumentTemplateProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.SubFlowProperty] = this.GetSubFlowProperty.bind(this);\r\n\t\t\tthis._propertyNameToProperty[PropertyManagers.ExampleAppointmentProperty] = this.GetExampleAppointmentProperty.bind(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static GetCardScreenProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n\t\treturn new CardScreenProperty(property, propertyValue, control, getData);\r\n\t}\r\n\r\n\tprivate static GetCheckBoxProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new CheckboxProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetInputTextProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new InputTextProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetInputNumberProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new InputNumberProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetColorPicker(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new ColorPicker(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetSelectProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean ) {\r\n\t\treturn new SelectProperty(property, propertyValue, getData);\r\n\t}\r\n\r\n\tprivate static GetSelectEntityTypeProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new SelectEntityTypeProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetSelectLockedLinkEntityProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new SelectLockedLinkEntityProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetMultiSelectProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new MultiSelectProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetWebSizeProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new WebSizeProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetInputUrlProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new InputUrlProperty(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetFileUploadProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new FileUploadProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQueryConditionProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new QueryConditionProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQueryBuilderProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new QueryBuilderProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetAlternativeEntitiesProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n\t\treturn new AlternativeEntitiesProperty(property, propertyValue, control, getData);\r\n\t}\r\n\r\n\tprivate static GetTypesProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new TypesProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetBackLinkingProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new BackLinkingProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQuerySortProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new QuerySortProperty(property, propertyValue, control);\r\n\t}\r\n\r\n\tprivate static GetQuerySelectorProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n\t\treturn new QuerySelectorProperty(property, propertyValue, getData);\r\n\t}\r\n\r\n\tprivate static GetConsultScreenLayoutProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new ConsultScreenLayout(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetTabSecurityProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new TabSecurity(property, propertyValue);\r\n\t}\r\n\r\n\tprivate static GetDimensionalTableProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new DimensionalTableProperty(property, propertyValue, control);\r\n }\r\n\r\n private static GetDWPackageProperty(property: IPropertyDescription, propertyValue: any, control: IControl, getData: boolean) {\r\n return new DWPackageProperty(property, propertyValue, getData);\r\n }\r\n\r\n\tprivate static GetTemplateTypeProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n return new TemplateTypeProperty(property, propertyValue, control);\r\n }\r\n\r\n\tprivate static GetDocumentTemplateProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n return new DocumentTemplateProperty(property, propertyValue, control);\r\n }\r\n\r\n\tprivate static GetSubFlowProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n return new SubFlowProperty(property, propertyValue, control);\r\n }\r\n\r\n\tprivate static GetExampleAppointmentProperty(property: IPropertyDescription, propertyValue: any, control: IControl) {\r\n\t\treturn new ExampleAppointmentProperty(property, propertyValue);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {\r\n ConfigStructModel,\r\n GroupStructModel,\r\n PropertyStructModel\r\n} from \"Core/GeneralProperties/Models/ConfigStructModel\";\r\nimport {PropertyManagersFactory} from \"Core/GeneralProperties/Utils/PropertyManagersFactory\";\r\nimport {BaseProperty} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {SelectProperty} from \"Core/GeneralProperties/Managers/SelectProperty/SelectProperty\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport { Guid } from \"Core/Common/Guid\";\r\n\r\nexport class ConfigModel {\r\n Groups: Array<GroupModel>;\r\n\r\n constructor(configStruct: ConfigStructModel, properties: any, control: IControl) {\r\n if (properties) {\r\n this.Groups = this.FilterGroups(configStruct.Groups, control).map(groupStruct => {\r\n let group = properties[groupStruct.Name];\r\n return new GroupModel(groupStruct, group, control);\r\n });\r\n } else {\r\n this.Groups = this.FilterGroups(configStruct.Groups, control).map(groupStruct => new GroupModel(groupStruct, null, control));\r\n }\r\n }\r\n\r\n SetPropertyEnabled(typeName: string, enabled: boolean) {\r\n let property = this.GetProperty(typeName);\r\n if (property) {\r\n property.PropertyManager.SetEnabled(enabled);\r\n }\r\n }\r\n\r\n ResetProperty(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n if (property) {\r\n property.PropertyManager.Reset();\r\n }\r\n }\r\n\r\n GetPropertyDefaultValue(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n if (property) {\r\n return property.PropertyManager.GetDefaultValue();\r\n }\r\n }\r\n\r\n GetPropertyValue(typeName: string, groupName: string = null) {\r\n let property = this.GetProperty(typeName, groupName);\r\n return property ? property.Value : undefined;\r\n }\r\n\r\n GetPropertyManager(typeName: string, groupName: string = null): BaseProperty {\r\n let property = this.GetProperty(typeName, groupName);\r\n return property ? property.PropertyManager : undefined;\r\n }\r\n\r\n GetPropertyName(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n return property ? property.Name : undefined;\r\n }\r\n\r\n SetPropertyValue(type: string, value: any) {\r\n let property = this.GetProperty(type);\r\n\r\n if (property) {\r\n property.Value = value;\r\n }\r\n }\r\n\r\n HasProperty(typeName: string) {\r\n let property = this.GetProperty(typeName);\r\n\r\n return !!property;\r\n }\r\n\r\n SetPropertyOptions(type: string, options: any) {\r\n\t let property = this.GetProperty(type);\r\n\r\n\t if (property) {\r\n\t\t\tproperty.Options = options;\r\n\t }\r\n }\r\n\r\n Serialize(): string {\r\n let serializedConfig = {};\r\n\r\n this.Groups.forEach(group => {\r\n let serializedGroup = serializedConfig[group.Name] = {Properties: []};\r\n\r\n let serializedProperties = group.Properties.map(property => {\r\n let serializedProperty = {\r\n PropertyManager: property.PropertyManager.Type,\r\n [property.Type]: property.Value || property.PropertyManager.GetDefaultValue()\r\n };\r\n\r\n return serializedProperty;\r\n });\r\n\r\n serializedGroup.Properties = serializedProperties;\r\n });\r\n\r\n return JSON.stringify(serializedConfig);\r\n }\r\n\r\n IsValid(): boolean {\r\n return this.Groups.every(group => group.IsValid());\r\n }\r\n\r\n IsValidToSave(): boolean {\r\n return this.Groups.every(group => group.IsValidToSave());\r\n }\r\n\r\n GetPropertiesErrors(): string[] {\r\n let propertiesErrors = [];\r\n _.each(this.Groups, group => propertiesErrors = propertiesErrors.concat(group.GetPropertiesErrors()));\r\n\r\n const uniqueErrors = _.uniq(propertiesErrors);\r\n return uniqueErrors;\r\n }\r\n\r\n private FilterGroups(groups: GroupStructModel[], control: IControl) {\r\n if (control && control.GetForm()) {\r\n const screenType = control.GetForm().GetScreen().GetType();\r\n const parentControlType = control.GetParentControl();\r\n return groups\r\n .filter(group => !group.Screens || group.Screens.length === 0 || group.Screens.indexOf(screenType) > -1)\r\n .filter(group => !group.ParentControls || group.ParentControls.length === 0 || parentControlType && group.ParentControls.indexOf(parentControlType.GetType()) > -1);\r\n }\r\n\r\n return groups;\r\n }\r\n\r\n private GetProperty(typeName: string, groupName: string = null): PropertyModel {\r\n let propertyGroup =\r\n _.find(this.Groups,\r\n (group: GroupModel) => (group.Name === groupName || groupName == null) && _.any(_.filter(group.Properties, (property: PropertyModel) => property.Type === typeName)));\r\n if (!propertyGroup) {\r\n return null;\r\n }\r\n\r\n let groupProperties = _.map(propertyGroup.Properties, (property: PropertyModel) => property);\r\n\r\n let property = _.find(groupProperties, (property: PropertyModel) => property.Type === typeName) || null;\r\n\r\n return property;\r\n }\r\n}\r\n\r\nexport class GroupModel {\r\n Id: string;\r\n Name: string;\r\n Properties: Array<PropertyModel>;\r\n Expanded: KnockoutObservable<boolean>;\r\n\r\n constructor(groupStruct: GroupStructModel, groupData: any, control: IControl) {\r\n this.Id = Guid.NewGuid();\r\n this.Name = groupStruct.Name;\r\n this.Properties = this.MergePropertyStructWithData(groupStruct, groupData, control);\r\n this.Expanded = ko.observable(false);\r\n }\r\n\r\n private MergePropertyStructWithData(groupStruct: GroupStructModel, groupData: any, control: IControl) {\r\n let properties = groupStruct.Properties.map(propertyStruct => {\r\n if (groupData) {\r\n let property = this.GetProperty(groupData.Properties, propertyStruct.Type);\r\n\r\n if (property) {\r\n let propertyValue = property[propertyStruct.Type];\r\n return new PropertyModel(propertyStruct, control, propertyValue);\r\n }\r\n }\r\n\r\n return new PropertyModel(propertyStruct, control, null);\r\n });\r\n\r\n return properties;\r\n }\r\n\r\n private GetProperty(groupProperties: any, propertyName: string) {\r\n return _.find(groupProperties, property => property.hasOwnProperty(propertyName));\r\n }\r\n\r\n public IsValid(): boolean {\r\n var result = this.Properties.every(property => property.IsValid);\r\n this.Expanded(!result);\r\n return result;\r\n }\r\n\r\n public IsValidToSave(): boolean {\r\n var result = this.Properties.every(property => property.IsValidToSave);\r\n this.Expanded(!result);\r\n return result;\r\n }\r\n\r\n public GetPropertiesErrors(): string[] {\r\n return _.map(this.Properties, property => property.ErrorMessage);\r\n }\r\n\r\n Toggle() {\r\n this.Expanded(!this.Expanded());\r\n }\r\n}\r\n\r\nexport class PropertyModel {\r\n Name: string;\r\n Type: string;\r\n ValueRequired: boolean;\r\n\r\n private _propertyManager: KnockoutObservable<BaseProperty>;\r\n private _control: IControl;\r\n private _property: PropertyStructModel;\r\n\r\n private _value: KnockoutComputed<any>;\r\n private _propertyValue: any;\r\n\r\n constructor(property: PropertyStructModel, control: IControl, propertyValue?: any) {\r\n this.Name = property.Name;\r\n this.Type = property.Type;\r\n this.ValueRequired = property.ValueRequired;\r\n\r\n this._control = control;\r\n this._property = property;\r\n this._propertyManager = ko.observable(null);\r\n\r\n\r\n this._propertyValue = propertyValue == null ? property.DefaultValue : propertyValue;\r\n\r\n this._value = ko.computed(() => {\r\n if (this._propertyManager()) {\r\n return this.PropertyManager.Value();\r\n }\r\n return this._propertyValue;\r\n\r\n }, this\r\n );\r\n }\r\n\r\n CheckForPropertyManager(getData: boolean = true) {\r\n if (!this._propertyManager()) {\r\n const manager = PropertyManagersFactory.GetPropertyManager(this._property, this._propertyValue, this._control, getData);\r\n manager.OnInit();\r\n\r\n this._propertyManager(manager);\r\n }\r\n }\r\n\r\n @enumerable get PropertyManager(): BaseProperty {\r\n this.CheckForPropertyManager();\r\n\r\n return this._propertyManager();\r\n }\r\n\r\n @enumerable get PropertyManagerForSave(): BaseProperty {\r\n this.CheckForPropertyManager(false);\r\n\r\n return this._propertyManager();\r\n }\r\n\r\n @enumerable get IsValid(): boolean {\r\n return this.PropertyManager.IsValid();\r\n }\r\n\r\n @enumerable get IsValidToSave(): boolean {\r\n return this.PropertyManagerForSave.IsValid();\r\n }\r\n\r\n @enumerable get ErrorMessage(): string {\r\n return this.PropertyManager.ErrorMessage();\r\n }\r\n\r\n @enumerable get Value(): any {\r\n return this._value();\r\n }\r\n\r\n set Value(value: any) {\r\n this._propertyValue = value;\r\n\t}\r\n\r\n @enumerable get Options(): any {\r\n\t\treturn this._property.Options;\r\n }\r\n\r\n set Options(options: any) {\r\n\t\tconst property = this.PropertyManager as SelectProperty;\r\n\t\tif (property) {\r\n\t\t\tproperty.RewriteOptions(options);\r\n\t\t}\r\n }\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {GlobalModel} from 'Core/GlobalManager/Models/GlobalModel';\r\n\r\nexport interface IGetGlobalByNameRequestModel {\r\n GlobalName: string;\r\n};\r\n\r\nexport interface IGetGlobalByNamesRequestModel {\r\n GlobalNames: Array<string>;\r\n};\r\n\r\nexport class GlobalStore {\r\n static GetGlobalByNames(params: IGetGlobalByNamesRequestModel): P.Promise<Array<GlobalModel>> {\r\n const deferredResult = P.defer<Array<GlobalModel>>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/GlobalsApi/GetGlobals',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(this.DeserializeGlobals(data)))\r\n .fail(err => deferredResult.reject(this.GetResponseError(err, 'Error loading globals')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetGlobalByName(params: IGetGlobalByNameRequestModel): P.Promise<GlobalModel> {\r\n const deferredResult = P.defer<GlobalModel>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/GlobalsApi/GetGlobal',\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(global => deferredResult.resolve(this.Deserialize(global)))\r\n .fail(err => deferredResult.reject(this.GetResponseError(err, `Error getting global ${params.GlobalName}`)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateUserGlobals(userGlobals: GlobalModel[]) {\r\n const deferredResult = P.defer<void>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: '/api/GlobalsApi/UpdateUserGlobals',\r\n type: 'POST'\r\n }, params: {UserGlobals: userGlobals}\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(() => deferredResult.resolve(null))\r\n .fail(err => deferredResult.reject(this.GetResponseError(err, `Error updating user globals`)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeserializeGlobals(jsonObject: any): any {\r\n return GenericDeserialize(jsonObject, GlobalModel);\r\n }\r\n\r\n static Deserialize(jsonObject: any): GlobalModel {\r\n return <GlobalModel>Deserialize(jsonObject, GlobalModel);\r\n }\r\n\r\n private static GetResponseError(err: P.Rejection, generalError: string) {\r\n if (err.status === 400) {\r\n return JSON.parse(err.message).Message;\r\n }\r\n\r\n return generalError;\r\n }\r\n}","export const CULTURE_CODES = {\r\n ps_AF: {Country: 'Afghanistan', Language: 'Pashto', CultureCode: 'ps-AF'},\r\n prs_AF: {Country: 'Afghanistan', Language: 'Dari', CultureCode: 'prs-AF'},\r\n sq_AL: {Country: 'Albania', Language: 'Albanian', CultureCode: 'sq-AL'},\r\n ar_DZ: {Country: 'Algeria', Language: 'Arabic', CultureCode: 'ar-DZ'},\r\n es_AR: {Country: 'Argentina', Language: 'Spanish', CultureCode: 'es-AR'},\r\n hy_AM: {Country: 'Armenia', Language: 'Armenian', CultureCode: 'hy-AM'},\r\n en_AU: {Country: 'Australia', Language: 'English', CultureCode: 'en-AU'},\r\n de_AT: {Country: 'Austria', Language: 'German', CultureCode: 'de-AT'},\r\n ar_BH: {Country: 'Bahrain', Language: 'Arabic', CultureCode: 'ar-BH'},\r\n bn_BD: {Country: 'Bangladesh', Language: 'Bengali', CultureCode: 'bn-BD'},\r\n eu_ES: {Country: 'Basque', Language: 'Basque', CultureCode: 'eu-ES'},\r\n be_BY: {Country: 'Belarus', Language: 'Belarusian', CultureCode: 'be-BY'},\r\n fr_BE: {Country: 'Belgium', Language: 'French', CultureCode: 'fr-BE'},\r\n nl_BE: {Country: 'Belgium', Language: 'Dutch', CultureCode: 'nl-BE'},\r\n en_BZ: {Country: 'Belize', Language: 'English', CultureCode: 'en-BZ'},\r\n es_VE: {Country: 'Bolivarian Republic of Venezuela', Language: 'Spanish', CultureCode: 'es-VE'},\r\n quz_BO: {Country: 'Bolivia', Language: 'Quechua', CultureCode: 'quz-BO'},\r\n es_BO: {Country: 'Bolivia', Language: 'Spanish', CultureCode: 'es-BO'},\r\n pt_BR: {Country: 'Brazil', Language: 'Portuguese', CultureCode: 'pt-BR'},\r\n ms_BN: {Country: 'Brunei Darussalam', Language: 'Malay', CultureCode: 'ms-BN'},\r\n bg_BG: {Country: 'Bulgaria', Language: 'Bulgarian', CultureCode: 'bg-BG'},\r\n km_KH: {Country: 'Cambodia', Language: 'Khmer', CultureCode: 'km-KH'},\r\n fr_CA: {Country: 'Canada', Language: 'French', CultureCode: 'fr-CA'},\r\n en_CA: {Country: 'Canada', Language: 'English', CultureCode: 'en-CA'},\r\n en_029: {Country: 'Caribbean', Language: 'English', CultureCode: 'en-029'},\r\n ca_ES: {Country: 'Catalan', Language: 'Catalan', CultureCode: 'ca-ES'},\r\n arn_CL: {Country: 'Chile', Language: 'Mapudungun', CultureCode: 'arn-CL'},\r\n es_CL: {Country: 'Chile', Language: 'Spanish', CultureCode: 'es-CL'},\r\n es_CO: {Country: 'Colombia', Language: 'Spanish', CultureCode: 'es-CO'},\r\n es_CR: {Country: 'Costa Rica', Language: 'Spanish', CultureCode: 'es-CR'},\r\n hr_HR: {Country: 'Croatia', Language: 'Croatian', CultureCode: 'hr-HR'},\r\n az_Cyrl_AZ: {Country: 'Cyrillic, Azerbaijan', Language: 'Azeri', CultureCode: 'az-Cyrl-AZ'},\r\n sr_Cyrl_BA: {Country: 'Cyrillic, Bosnia and Herzegovina', Language: 'Serbian', CultureCode: 'sr-Cyrl-BA'},\r\n bs_Cyrl_BA: {Country: 'Cyrillic, Bosnia and Herzegovina', Language: 'Bosnian', CultureCode: 'bs-Cyrl-BA'},\r\n mn_MN: {Country: 'Cyrillic, Mongolia', Language: 'Mongolian', CultureCode: 'mn-MN'},\r\n sr_Cyrl_ME: {Country: 'Cyrillic, Montenegro', Language: 'Serbian', CultureCode: 'sr-Cyrl-ME'},\r\n sr_Cyrl_RS: {Country: 'Cyrillic, Serbia', Language: 'Serbian', CultureCode: 'sr-Cyrl-RS'},\r\n sr_Cyrl_CS: {Country: 'Cyrillic, Serbia and Montenegro (Former', Language: 'Serbian )', CultureCode: 'sr-Cyrl-CS'},\r\n tg_Cyrl_TJ: {Country: 'Cyrillic, Tajikistan', Language: 'Tajik', CultureCode: 'tg-Cyrl-TJ'},\r\n uz_Cyrl_UZ: {Country: 'Cyrillic, Uzbekistan', Language: 'Uzbek', CultureCode: 'uz-Cyrl-UZ'},\r\n cs_CZ: {Country: 'Czech Republic', Language: 'Czech', CultureCode: 'cs-CZ'},\r\n da_DK: {Country: 'Denmark', Language: 'Danish', CultureCode: 'da-DK'},\r\n es_DO: {Country: 'Dominican Republic', Language: 'Spanish', CultureCode: 'es-DO'},\r\n quz_EC: {Country: 'Ecuador', Language: 'Quechua', CultureCode: 'quz-EC'},\r\n es_EC: {Country: 'Ecuador', Language: 'Spanish', CultureCode: 'es-EC'},\r\n ar_EG: {Country: 'Egypt', Language: 'Arabic', CultureCode: 'ar-EG'},\r\n es_SV: {Country: 'El Salvador', Language: 'Spanish', CultureCode: 'es-SV'},\r\n et_EE: {Country: 'Estonia', Language: 'Estonian', CultureCode: 'et-EE'},\r\n am_ET: {Country: 'Ethiopia', Language: 'Amharic', CultureCode: 'am-ET'},\r\n fo_FO: {Country: 'Faroe Islands', Language: 'Faroese', CultureCode: 'fo-FO'},\r\n fi_FI: {Country: 'Finland', Language: 'Finnish', CultureCode: 'fi-FI'},\r\n sv_FI: {Country: 'Finland', Language: 'Swedish', CultureCode: 'sv-FI'},\r\n se_FI: {Country: 'Finland', Language: 'Sami, Northern', CultureCode: 'se-FI'},\r\n sms_FI: {Country: 'Finland', Language: 'Sami, Skolt', CultureCode: 'sms-FI'},\r\n smn_FI: {Country: 'Finland', Language: 'Sami, Inari', CultureCode: 'smn-FI'},\r\n mk_MK: {Country: 'Former Yugoslav Republic of Macedonia', Language: 'Macedonian', CultureCode: 'mk-MK'},\r\n fr_FR: {Country: 'France', Language: 'French', CultureCode: 'fr-FR'},\r\n br_FR: {Country: 'France', Language: 'Breton', CultureCode: 'br-FR'},\r\n oc_FR: {Country: 'France', Language: 'Occitan', CultureCode: 'oc-FR'},\r\n co_FR: {Country: 'France', Language: 'Corsican', CultureCode: 'co-FR'},\r\n gsw_FR: {Country: 'France', Language: 'Alsatian', CultureCode: 'gsw-FR'},\r\n gl_ES: {Country: 'Galician', Language: 'Galician', CultureCode: 'gl-ES'},\r\n ka_GE: {Country: 'Georgia', Language: 'Georgian', CultureCode: 'ka-GE'},\r\n de_DE: {Country: 'Germany', Language: 'German', CultureCode: 'de-DE'},\r\n hsb_DE: {Country: 'Germany', Language: 'Upper Sorbian', CultureCode: 'hsb-DE'},\r\n dsb_DE: {Country: 'Germany', Language: 'Lower Sorbian', CultureCode: 'dsb-DE'},\r\n el_GR: {Country: 'Greece', Language: 'Greek', CultureCode: 'el-GR'},\r\n kl_GL: {Country: 'Greenland', Language: 'Greenlandic', CultureCode: 'kl-GL'},\r\n qut_GT: {Country: 'Guatemala', Language: \"K'iche\", CultureCode: 'qut-GT'},\r\n es_GT: {Country: 'Guatemala', Language: 'Spanish', CultureCode: 'es-GT'},\r\n es_HN: {Country: 'Honduras', Language: 'Spanish', CultureCode: 'es-HN'},\r\n hu_HU: {Country: 'Hungary', Language: 'Hungarian', CultureCode: 'hu-HU'},\r\n is_IS: {Country: 'Iceland', Language: 'Icelandic', CultureCode: 'is-IS'},\r\n hi_IN: {Country: 'India', Language: 'Hindi', CultureCode: 'hi-IN'},\r\n bn_IN: {Country: 'India', Language: 'Bengali', CultureCode: 'bn-IN'},\r\n pa_IN: {Country: 'India', Language: 'Punjabi', CultureCode: 'pa-IN'},\r\n gu_IN: {Country: 'India', Language: 'Gujarati', CultureCode: 'gu-IN'},\r\n or_IN: {Country: 'India', Language: 'Oriya', CultureCode: 'or-IN'},\r\n ta_IN: {Country: 'India', Language: 'Tamil', CultureCode: 'ta-IN'},\r\n te_IN: {Country: 'India', Language: 'Telugu', CultureCode: 'te-IN'},\r\n kn_IN: {Country: 'India', Language: 'Kannada', CultureCode: 'kn-IN'},\r\n ml_IN: {Country: 'India', Language: 'Malayalam', CultureCode: 'ml-IN'},\r\n as_IN: {Country: 'India', Language: 'Assamese', CultureCode: 'as-IN'},\r\n mr_IN: {Country: 'India', Language: 'Marathi', CultureCode: 'mr-IN'},\r\n sa_IN: {Country: 'India', Language: 'Sanskrit', CultureCode: 'sa-IN'},\r\n kok_IN: {Country: 'India', Language: 'Konkani', CultureCode: 'kok-IN'},\r\n en_IN: {Country: 'India', Language: 'English', CultureCode: 'en-IN'},\r\n id_ID: {Country: 'Indonesia', Language: 'Indonesian', CultureCode: 'id-ID'},\r\n fa_IR: {Country: 'Iran', Language: 'Persian', CultureCode: 'fa-IR'},\r\n ar_IQ: {Country: 'Iraq', Language: 'Arabic', CultureCode: 'ar-IQ'},\r\n ga_IE: {Country: 'Ireland', Language: 'Irish', CultureCode: 'ga-IE'},\r\n en_IE: {Country: 'Ireland', Language: 'English', CultureCode: 'en-IE'},\r\n ur_PK: {Country: 'Islamic Republic of Pakistan', Language: 'Urdu', CultureCode: 'ur-PK'},\r\n he_IL: {Country: 'Israel', Language: 'Hebrew', CultureCode: 'he-IL'},\r\n it_IT: {Country: 'Italy', Language: 'Italian', CultureCode: 'it-IT'},\r\n en_JM: {Country: 'Jamaica', Language: 'English', CultureCode: 'en-JM'},\r\n ja_JP: {Country: 'Japan', Language: 'Japanese', CultureCode: 'ja-JP'},\r\n ar_JO: {Country: 'Jordan', Language: 'Arabic', CultureCode: 'ar-JO'},\r\n kk_KZ: {Country: 'Kazakhstan', Language: 'Kazakh', CultureCode: 'kk-KZ'},\r\n sw_KE: {Country: 'Kenya', Language: 'Kiswahili', CultureCode: 'sw-KE'},\r\n ko_KR: {Country: 'Korea', Language: 'Korean', CultureCode: 'ko-KR'},\r\n ar_KW: {Country: 'Kuwait', Language: 'Arabic', CultureCode: 'ar-KW'},\r\n ky_KG: {Country: 'Kyrgyzstan', Language: 'Kyrgyz', CultureCode: 'ky-KG'},\r\n lo_LA: {Country: 'Lao P.D.R.', Language: 'Lao', CultureCode: 'lo-LA'},\r\n tzm_Latn_DZ: {Country: 'Latin, Algeria', Language: 'Tamazight', CultureCode: 'tzm-Latn-DZ'},\r\n az_Latn_AZ: {Country: 'Latin, Azerbaijan', Language: 'Azeri', CultureCode: 'az-Latn-AZ'},\r\n hr_BA: {Country: 'Latin, Bosnia and Herzegovina', Language: 'Croatian', CultureCode: 'hr-BA'},\r\n bs_Latn_BA: {Country: 'Latin, Bosnia and Herzegovina', Language: 'Bosnian', CultureCode: 'bs-Latn-BA'},\r\n sr_Latn_BA: {Country: 'Latin, Bosnia and Herzegovina', Language: 'Serbian', CultureCode: 'sr-Latn-BA'},\r\n iu_Lat_CA: {Country: 'Latin, Canada', Language: 'Inuktitut', CultureCode: 'iu-Latn-CA'},\r\n sr_Latn_ME: {Country: 'Latin, Montenegro', Language: 'Serbian', CultureCode: 'sr-Latn-ME'},\r\n ha_Latn_NG: {Country: 'Latin, Nigeria', Language: 'Hausa', CultureCode: 'ha-Latn-NG'},\r\n sr_Latn_RS: {Country: 'Latin, Serbia', Language: 'Serbian', CultureCode: 'sr-Latn-RS'},\r\n sr_Latn_CS: {Country: 'Latin, Serbia and Montenegro (Former', Language: 'Serbian )', CultureCode: 'sr-Latn-CS'},\r\n uz_Latn_UZ: {Country: 'Latin, Uzbekistan', Language: 'Uzbek', CultureCode: 'uz-Latn-UZ'},\r\n lv_LV: {Country: 'Latvia', Language: 'Latvian', CultureCode: 'lv-LV'},\r\n ar_LB: {Country: 'Lebanon', Language: 'Arabic', CultureCode: 'ar-LB'},\r\n ar_LY: {Country: 'Libya', Language: 'Arabic', CultureCode: 'ar-LY'},\r\n de_LI: {Country: 'Liechtenstein', Language: 'German', CultureCode: 'de-LI'},\r\n lt_LT: {Country: 'Lithuania', Language: 'Lithuanian', CultureCode: 'lt-LT'},\r\n lb_LU: {Country: 'Luxembourg', Language: 'Luxembourgish', CultureCode: 'lb-LU'},\r\n de_LU: {Country: 'Luxembourg', Language: 'German', CultureCode: 'de-LU'},\r\n fr_LU: {Country: 'Luxembourg', Language: 'French', CultureCode: 'fr-LU'},\r\n ms_MY: {Country: 'Malaysia', Language: 'Malay', CultureCode: 'ms-MY'},\r\n en_MY: {Country: 'Malaysia', Language: 'English', CultureCode: 'en-MY'},\r\n dv_MV: {Country: 'Maldives', Language: 'Divehi', CultureCode: 'dv-MV'},\r\n mt_MT: {Country: 'Malta', Language: 'Maltese', CultureCode: 'mt-MT'},\r\n es_MX: {Country: 'Mexico', Language: 'Spanish', CultureCode: 'es-MX'},\r\n moh_CA: {Country: 'Mohawk', Language: 'Mohawk', CultureCode: 'moh-CA'},\r\n fr_MC: {Country: 'Monaco', Language: 'French', CultureCode: 'fr-MC'},\r\n ar_MA: {Country: 'Morocco', Language: 'Arabic', CultureCode: 'ar-MA'},\r\n ne_NP: {Country: 'Nepal', Language: 'Nepali', CultureCode: 'ne-NP'},\r\n nl_NL: {Country: 'Netherlands', Language: 'Dutch', CultureCode: 'nl-NL'},\r\n fy_NL: {Country: 'Netherlands', Language: 'Frisian', CultureCode: 'fy-NL'},\r\n mi_NZ: {Country: 'New Zealand', Language: 'Maori', CultureCode: 'mi-NZ'},\r\n en_NZ: {Country: 'New Zealand', Language: 'English', CultureCode: 'en-NZ'},\r\n es_NI: {Country: 'Nicaragua', Language: 'Spanish', CultureCode: 'es-NI'},\r\n yo_NG: {Country: 'Nigeria', Language: 'Yoruba', CultureCode: 'yo-NG'},\r\n ig_NG: {Country: 'Nigeria', Language: 'Igbo', CultureCode: 'ig-NG'},\r\n nb_NO: {Country: 'Norway', Language: 'Norwegian, BokmÃ¥l', CultureCode: 'nb-NO'},\r\n se_NO: {Country: 'Norway', Language: 'Sami, Northern', CultureCode: 'se-NO'},\r\n nn_NO: {Country: 'Norway', Language: 'Norwegian, Nynorsk', CultureCode: 'nn-NO'},\r\n smj_NO: {Country: 'Norway', Language: 'Sami, Lule', CultureCode: 'smj-NO'},\r\n sma_NO: {Country: 'Norway', Language: 'Sami, Southern', CultureCode: 'sma-NO'},\r\n ar_OM: {Country: 'Oman', Language: 'Arabic', CultureCode: 'ar-OM'},\r\n es_PA: {Country: 'Panama', Language: 'Spanish', CultureCode: 'es-PA'},\r\n es_PY: {Country: 'Paraguay', Language: 'Spanish', CultureCode: 'es-PY'},\r\n quz_PE: {Country: 'Peru', Language: 'Quechua', CultureCode: 'quz-PE'},\r\n es_PE: {Country: 'Peru', Language: 'Spanish', CultureCode: 'es-PE'},\r\n fil_PH: {Country: 'Philippines', Language: 'Filipino', CultureCode: 'fil-PH'},\r\n pl_PL: {Country: 'Poland', Language: 'Polish', CultureCode: 'pl-PL'},\r\n pt_PT: {Country: 'Portugal', Language: 'Portuguese', CultureCode: 'pt-PT'},\r\n bo_CN: {Country: 'PRC', Language: 'Tibetan', CultureCode: 'bo-CN'},\r\n ii_CN: {Country: 'PRC', Language: 'Yi', CultureCode: 'ii-CN'},\r\n ug_CN: {Country: 'PRC', Language: 'Uyghur', CultureCode: 'ug-CN'},\r\n es_PR: {Country: 'Puerto Rico', Language: 'Spanish', CultureCode: 'es-PR'},\r\n ar_QA: {Country: 'Qatar', Language: 'Arabic', CultureCode: 'ar-QA'},\r\n en_PH: {Country: 'Republic of the Philippines', Language: 'English', CultureCode: 'en-PH'},\r\n ro_RO: {Country: 'Romania', Language: 'Romanian', CultureCode: 'ro-RO'},\r\n ru_RU: {Country: 'Russia', Language: 'Russian', CultureCode: 'ru-RU'},\r\n tt_RU: {Country: 'Russia', Language: 'Tatar', CultureCode: 'tt-RU'},\r\n ba_RU: {Country: 'Russia', Language: 'Bashkir', CultureCode: 'ba-RU'},\r\n sah_RU: {Country: 'Russia', Language: 'Yakut', CultureCode: 'sah-RU'},\r\n rw_RW: {Country: 'Rwanda', Language: 'Kinyarwanda', CultureCode: 'rw-RW'},\r\n ar_SA: {Country: 'Saudi Arabia', Language: 'Arabic', CultureCode: 'ar-SA'},\r\n wo_SN: {Country: 'Senegal', Language: 'Wolof', CultureCode: 'wo-SN'},\r\n zh_CN: {Country: 'Simplified, PRC', Language: 'Chinese', CultureCode: 'zh-CN'},\r\n zh_SG: {Country: 'Simplified, Singapore', Language: 'Chinese', CultureCode: 'zh-SG'},\r\n en_SG: {Country: 'Singapore', Language: 'English', CultureCode: 'en-SG'},\r\n sk_SK: {Country: 'Slovakia', Language: 'Slovak', CultureCode: 'sk-SK'},\r\n sl_SI: {Country: 'Slovenia', Language: 'Slovenian', CultureCode: 'sl-SI'},\r\n tn_ZA: {Country: 'South Africa', Language: 'Setswana', CultureCode: 'tn-ZA'},\r\n xh_ZA: {Country: 'South Africa', Language: 'isiXhosa', CultureCode: 'xh-ZA'},\r\n zu_ZA: {Country: 'South Africa', Language: 'isiZulu', CultureCode: 'zu-ZA'},\r\n af_ZA: {Country: 'South Africa', Language: 'Afrikaans', CultureCode: 'af-ZA'},\r\n nso_ZA: {Country: 'South Africa', Language: 'Sesotho sa Leboa', CultureCode: 'nso-ZA'},\r\n en_ZA: {Country: 'South Africa', Language: 'English', CultureCode: 'en-ZA'},\r\n es_ES: {Country: 'Spain, International Sort', Language: 'Spanish', CultureCode: 'es-ES'},\r\n si_LK: {Country: 'Sri Lanka', Language: 'Sinhala', CultureCode: 'si-LK'},\r\n sv_SE: {Country: 'Sweden', Language: 'Swedish', CultureCode: 'sv-SE'},\r\n se_SE: {Country: 'Sweden', Language: 'Sami, Northern', CultureCode: 'se-SE'},\r\n smj_SE: {Country: 'Sweden', Language: 'Sami, Lule', CultureCode: 'smj-SE'},\r\n sma_SE: {Country: 'Sweden', Language: 'Sami, Southern', CultureCode: 'sma-SE'},\r\n rm_CH: {Country: 'Switzerland', Language: 'Romansh', CultureCode: 'rm-CH'},\r\n de_CH: {Country: 'Switzerland', Language: 'German', CultureCode: 'de-CH'},\r\n it_CH: {Country: 'Switzerland', Language: 'Italian', CultureCode: 'it-CH'},\r\n fr_CH: {Country: 'Switzerland', Language: 'French', CultureCode: 'fr-CH'},\r\n iu_Cans_CA: {Country: 'Syllabics, Canada', Language: 'Inuktitut', CultureCode: 'iu-Cans-CA'},\r\n syr_SY: {Country: 'Syria', Language: 'Syriac', CultureCode: 'syr-SY'},\r\n ar_SY: {Country: 'Syria', Language: 'Arabic', CultureCode: 'ar-SY'},\r\n th_TH: {Country: 'Thailand', Language: 'Thai', CultureCode: 'th-TH'},\r\n mn_Mong_CN: {Country: 'Traditional Mongolian, PRC', Language: 'Mongolian', CultureCode: 'mn-Mong-CN'},\r\n zh_HK: {Country: 'Traditional, Hong Kong S.A.R.', Language: 'Chinese', CultureCode: 'zh-HK'},\r\n zh_MO: {Country: 'Traditional, Macao S.A.R.', Language: 'Chinese', CultureCode: 'zh-MO'},\r\n zh_TW: {Country: 'Traditional, Taiwan', Language: 'Chinese', CultureCode: 'zh-TW'},\r\n en_TT: {Country: 'Trinidad and Tobago', Language: 'English', CultureCode: 'en-TT'},\r\n ar_TN: {Country: 'Tunisia', Language: 'Arabic', CultureCode: 'ar-TN'},\r\n tr_TR: {Country: 'Turkey', Language: 'Turkish', CultureCode: 'tr-TR'},\r\n tk_TM: {Country: 'Turkmenistan', Language: 'Turkmen', CultureCode: 'tk-TM'},\r\n ar_AE: {Country: 'U.A.E.', Language: 'Arabic', CultureCode: 'ar-AE'},\r\n uk_UA: {Country: 'Ukraine', Language: 'Ukrainian', CultureCode: 'uk-UA'},\r\n cy_GB: {Country: 'United Kingdom', Language: 'Welsh', CultureCode: 'cy-GB'},\r\n gd_GB: {Country: 'United Kingdom', Language: 'Scottish Gaelic', CultureCode: 'gd-GB'},\r\n en_GB: {Country: 'United Kingdom', Language: 'English', CultureCode: 'en-GB'},\r\n en_US: {Country: 'United States', Language: 'English', CultureCode: 'en-US'},\r\n es_US: {Country: 'United States', Language: 'Spanish', CultureCode: 'es-US'},\r\n es_UY: {Country: 'Uruguay', Language: 'Spanish', CultureCode: 'es-UY'},\r\n vi_VN: {Country: 'Vietnam', Language: 'Vietnamese', CultureCode: 'vi-VN'},\r\n ar_YE: {Country: 'Yemen', Language: 'Arabic', CultureCode: 'ar-YE'},\r\n en_ZW: {Country: 'Zimbabwe', Language: 'English', CultureCode: 'en-ZW'},\r\n};\r\n","import * as _ from 'underscore';\r\nimport {GlobalStore} from 'Core/GlobalManager/Stores/GlobalStore';\r\nimport {GlobalModel} from 'Core/GlobalManager/Models/GlobalModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport * as $ from \"jquery\";\r\nimport {CULTURE_CODES} from \"Core/Constants/CultureCodes\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport enumerable from '../Common/Decorators/EnumerableDecorator';\r\n\r\nexport const GLOBALS = {\r\n POPUP_HEIGHT_IN_PERCENT: 'PopupHeightInPercent',\r\n POPUP_WIDHT_IN_PERCENT: 'PopupWidthInPercent',\r\n CONSULT_GRID_PAGE_LINES: 'ConsultGridPageLines',\r\n LIST_GRID_PAGE_LINES: 'ListGridPageLines',\r\n ALLOWED_ENTITIES: 'AllowedEntities',\r\n OTHER_GRID_PAGE_LINES: 'OtherGridPageLines',\r\n SEARCH_SCREEN_IF_RECORDS_COUNT: 'SearchScreenIf',\r\n LOCK_TIME: 'LockTime',\r\n CD_DATABASE_ID: 'CdDbId',\r\n CYBERDESK: 'CyberDesk',\r\n SUPERUSER_MAIL: 'Superusermail',\r\n TAB_HIDING_DAYS: 'TabHidingDays',\r\n REMEMBER_SELECT_USER: 'RememberSelectUser',\r\n ACTION_TABLE: 'ActionTable',\r\n USER_VARS_UPDATE_TIME: 'UserVarsUpdateTime',\r\n CULTURE_SETTINGS: 'CultureSettings',\r\n DESKTOP_LANGUAGE: 'DesktopLanguage',\r\n PATH_RUNNER_PARENTS_AMOUNT: 'PathRunnerParentsAmount',\r\n APPOINTMENT_DURATION: 'AppointmentDuration',\r\n NUMBER_OF_PERIODS: 'Number of periods',\r\n STARTING_TIME: 'Starting time',\r\n PERIOD_DURATION: 'Period Duration',\r\n USER_GROUPS: 'Usergroups',\r\n RESOURCES: 'Resources',\r\n DELETE_MAIL_AFTER_SAVING: 'DeleteMailAfterSaving',\r\n AUTO_MAIL_SAVING: 'AutoMailSaving',\r\n DEFAULT_COUNTRY_CODE: 'DefaultCountryCode',\r\n SUBJECT: 'Subject',\r\n DEFAULT_CURRENCY: 'DefaultCurrency',\r\n PREVIOUS_WEEKS_NUMBER: 'PreviousWeeksNumber',\r\n SHOW_CONTROL_ICONS: 'ShowControlIcons',\r\n ARTICLE_STORAGE_ENTITY: 'ArticleStorageEntity',\r\n HOME_SCREEN: 'HomeScreen',\r\n THEME: 'Theme',\r\n SHOW_PROFILE_SELECTOR: 'ShowProfileSelector',\r\n SHOW_BREADCRUMBS: 'ShowBreadcrumbs',\r\n MY_SETTINGS: 'MySettings',\r\n BASIC_MODE: 'BasicMode',\r\n READONLY_CREDENTIALS: 'ReadonlyCredentials',\r\n LOCK_SCREEN_HOURS: 'LockScreenHours',\r\n GOOGLE_MAPS_API_KEY: 'GoogleMapsAPIKey',\r\n MEMO_TIMESTAMP_FORMAT: 'Memo Timestamp Format',\r\n ENABLE_DD_AI_ASSISTANT: 'EnabledOnDD'\r\n};\r\n\r\nexport class GlobalManager {\r\n private static instance: GlobalManager;\r\n private static allowInstantiation: boolean;\r\n private _globals: Array<GlobalModel>;\r\n private _getAllGlobalPromises: P.Promise<any>[];\r\n\r\n constructor() {\r\n if (!GlobalManager.allowInstantiation) {\r\n throw new Error(\"Use MenuManager.Instance instead\");\r\n }\r\n this._getAllGlobalPromises = [];\r\n this._globals = [];\r\n }\r\n\r\n static get Instance(): GlobalManager {\r\n if (GlobalManager.instance == null) {\r\n GlobalManager.allowInstantiation = true;\r\n GlobalManager.instance = new GlobalManager();\r\n GlobalManager.allowInstantiation = false;\r\n }\r\n\r\n return GlobalManager.instance;\r\n }\r\n\r\n public AddGlobal(global: GlobalModel) {\r\n const cashedGlobal = _.find(this._globals, (item) => {\r\n return item.Name === global.Name;\r\n });\r\n\r\n if (cashedGlobal) {\r\n cashedGlobal.Value = global.Value;\r\n } else {\r\n this._globals.push(global);\r\n }\r\n }\r\n\r\n GetGlobal(name: string) {\r\n const globalDescriptor = this.GetGlobalDescriptor(name);\r\n return globalDescriptor ? globalDescriptor.Value : null;\r\n }\r\n\r\n GetGlobalDescriptor(name: string) : GlobalModel {\r\n const cashedGlobal = _.find(this._globals, (item) => {\r\n return item.Name === name;\r\n });\r\n return cashedGlobal || null;\r\n }\r\n\r\n public AddCulture(global: GlobalModel) {\r\n const currentCulture = global.Value;\r\n let cultureCode = _.map(CULTURE_CODES, (num, key) => {\r\n return num.CultureCode;\r\n });\r\n let code = _.find(cultureCode, item => item === currentCulture);\r\n\r\n if (code) {\r\n this.AddGlobal(global);\r\n } else {\r\n let newGlobal = global,\r\n localCulture;\r\n if (window.navigator.languages) {\r\n localCulture = window.navigator.languages[0];\r\n } else {\r\n localCulture = (window.navigator as any).userLanguage || window.navigator.language;\r\n }\r\n newGlobal.Value = localCulture;\r\n this.AddGlobal(newGlobal);\r\n new Notifier().Warning(NOTIFICATIONS.INVALID_CULTURE.replace('{currentCulture}', currentCulture).replace('{localCulture}', localCulture));\r\n }\r\n }\r\n\r\n AddDesktopLanguage(global: GlobalModel) {\r\n const currentDesktopLanguage = global.Value;\r\n const language = TranslationManager.Instance.GetLanguageByShortName(currentDesktopLanguage);\r\n\r\n if (!language) {\r\n const defaultDesktopLanguage = 'EN';\r\n global.Value = defaultDesktopLanguage;\r\n new Notifier().Warning(\r\n NOTIFICATIONS.INVALID_DESKTOP_LANGUAGE\r\n .replace('{currentDesktopLanguage}', currentDesktopLanguage)\r\n .replace('{defaultDesktopLanguage}', defaultDesktopLanguage)\r\n );\r\n }\r\n\r\n this.AddGlobal(global);\r\n }\r\n\r\n LoadGlobals(addDesktopLanguage: boolean = true): P.Promise<any> {\r\n BlockUI.Block();\r\n const deferredResult = P.defer<any>();\r\n const params = {\r\n GlobalNames: Object.keys(GLOBALS).map(globalName => GLOBALS[globalName])\r\n };\r\n\r\n GlobalStore.GetGlobalByNames(params)\r\n .always(() => BlockUI.Unblock())\r\n .then(globals => {\r\n _.each(globals, global => {\r\n if (global.Name === GLOBALS.CULTURE_SETTINGS) {\r\n this.AddCulture(global);\r\n } else if (global.Name === GLOBALS.DESKTOP_LANGUAGE && addDesktopLanguage) {\r\n this.AddDesktopLanguage(global);\r\n } else {\r\n this.AddGlobal(global);\r\n }\r\n });\r\n deferredResult.resolve(null);\r\n })\r\n .fail((err) => {\r\n const $preloader = $('.preloader');\r\n $preloader.detach();\r\n new Notifier().Show({Message: err.message, Type: {Color: 'red', Title: ''}});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n UpdateUserGlobals(userGlobals: GlobalModel[]) {\r\n return GlobalStore.UpdateUserGlobals(userGlobals)\r\n .then(() => userGlobals.forEach(global => this.AddGlobal(global)))\r\n .fail(err => new Notifier().Failed(err.message));\r\n }\r\n\r\n GetCulture(): string {\r\n return this.GetGlobal(GLOBALS.CULTURE_SETTINGS) || 'en-GB';\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class GlobalModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tKeepInSession: boolean;\r\n\r\n\t@deserialize\r\n\tLockToDefault: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}","import * as ko from 'knockout'\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel'\r\n\r\nimport { IconStore } from './IconStore';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport {FONT_NAME, ICON_NAME} from \"Core/Constant\";\r\n\r\n// Templates\r\nimport IconTemplate from 'Core/Icon/Templates/Icon.html';\r\nimport PortletIconTemplate from 'Core/Icon/Templates/PortletIcon.html';\r\nko.templates['Core/Icon/Templates/Icon'] = IconTemplate;\r\nko.templates['Core/Icon/Templates/PortletIcon'] = PortletIconTemplate;\r\n\r\nconst FONT_NAME_TO_CSS = {\r\n\t'fontawesome-webfont': 'fa fa-3x fa-stack',\r\n\t'Social-Icons': 'socicon-btn',\r\n\t'Simple-Line-Icons': 'simple-icons'\r\n}\r\n\r\nexport class Icon {\r\n\tprivate _model: IconModel;\r\n\tprivate _imageUrl: KnockoutObservable<string>;\r\n\r\n\tconstructor(model: IconModel) {\r\n\t\tthis._model = model;\r\n\t\tthis._imageUrl = ko.observable(this._model && this._model.Image);\r\n\t}\r\n\r\n\tprivate LoadImage(){\r\n\t\tif(this._model.IsImage && _.isEmpty(this._model.Image)){\r\n\t\t\tIconStore.GetImageIcon(this._model.Id).then((image)=>{\r\n\t\t\t\tthis._imageUrl(image);\r\n\t\t\t\tthis._model.Image = image;\r\n\t\t\t}).fail((err)=>{\r\n\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget FontName(): string {\r\n\t\treturn `${FONT_NAME_TO_CSS[this._model.FontName]} ${this._model.Name}`;\r\n\t}\r\n\r\n\tget Name(): string {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\tget Id(): number {\r\n\t\treturn this._model.Id;\r\n\t}\r\n\r\n\tget IconFontName(): string {\r\n\t\treturn this._model.FontName;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\tthis.LoadImage();\r\n\t\treturn 'Core/Icon/Templates/Icon';\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\tthis.LoadImage();\r\n\t\treturn IconTemplate;\r\n\t}\r\n\r\n\tGetPortletIconTemplate() {\r\n\t\tthis.LoadImage();\r\n\t\treturn 'Core/Icon/Templates/PortletIcon';\r\n\t};\r\n\r\n\tGetIconTemplate(classes: string = '') {\r\n\t\tif (this._model) {\r\n\t\t\tlet iconClass = this._model.IsIcon ? `` : ``,\r\n\t\t\t\timageClass = this._model.IsImage ? `` : ``;\r\n\r\n\t\t\tif (this._model.IsImage && !this._model.IsIcon) {\r\n\t\t\t\treturn `<img class=\"img-responsive image-centered image-icon ${classes}\" src=\"${this._model.Image}\" alt=\"${this._model.Name}\">`;\r\n\t\t\t}\r\n\r\n\t\t\tlet iconDataName = this._model.Name ? `data-icon-font-name=\"${this._model.FontName}\"` : ``,\r\n\t\t\t\ticonName = !this._model.Name ? '' : this._model.Name;\r\n\r\n\t\t\tswitch (this._model.FontName) {\r\n\t\t\t\tcase FONT_NAME.FONT_AWESOME:\r\n\t\t\t\t\tif (this._model.Name === ICON_NAME.EMPTY_ICON){\r\n\t\t\t\t\t\treturn `<i class=\"noImageNoIconBox ${iconName} ${classes}\" ${iconDataName} data-icon-name=\"${iconName}\"></i>`;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn `<i class=\"fa ${iconName} ${classes}\" ${iconDataName}></i>`;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\tcase FONT_NAME.SOCIAL_ICONS:\r\n\t\t\t\t\treturn `<i class=\"socicon-btn ${iconName} ${classes}\" ${iconDataName}></i>`;\r\n\r\n\t\t\t\tcase FONT_NAME.SIMPLE_LINE:\r\n\t\t\t\t\treturn `<i class=\"${iconName} ${classes}\" ${iconDataName}></i>`;\r\n\r\n\t\t\t\tcase null:\r\n\t\t\t\t\treturn `<i class=\"noImageNoIconBox\" data-icon-font-name=\"no-Image-No-Icon\"></i>`;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn `<i class=\"${iconName} ${classes}\" ${iconDataName} data-icon-font-name=\"TestDefaultName\"></i>`;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn `<i class=\"noImageNoIconBox\" data-icon-font-name=\"null-icon-model\"></i>`;\r\n\t}\r\n\r\n\tget IsImage() {\r\n\t\treturn this._model.IsImage;\r\n\t}\r\n\r\n\tget Image() {\r\n\t\treturn this._model.Image;\r\n\t}\r\n\r\n\tget IsIcon() {\r\n\t\treturn this._model.IsIcon && (this._model.Name != '');\r\n\t}\r\n\r\n\tget NoIconNoImage(): boolean {\r\n\t\treturn !this.IsIcon && !this.IsImage\r\n\t}\r\n\r\n\tget Model(): IconModel{\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget IsSocialIcon(){\r\n\t\treturn this.IconFontName === FONT_NAME.SOCIAL_ICONS;\r\n\t}\r\n\r\n\tget IsFontAwesome(){\r\n\t\treturn this.IconFontName === FONT_NAME.FONT_AWESOME;\r\n\t}\r\n\r\n\tget SimpleLineIcon(){\r\n\t\treturn this.IconFontName === FONT_NAME.SIMPLE_LINE;\r\n\t}\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\n\r\nexport class IconStore {\r\n static GetImageIcon(iconId: number): P.Promise<string> {\r\n const deferredResult = P.defer<string>();\r\n\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.ICON.GET_IMAGE_ICON,\r\n type: 'GET',\r\n xhrFields:{\r\n\t\t\t\t\tresponseType: 'blob'\r\n\t\t\t\t}\r\n }, params: { IconId: iconId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data =>{\r\n var blob = new Blob([data], { type: 'application/octet-stream' });\r\n var urlCreator = window.URL || window.webkitURL;\r\n var imageUrl = urlCreator.createObjectURL(blob);\r\n deferredResult.resolve(imageUrl);\r\n }).fail(data => {});\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\n\r\nexport class AddCssForAllExtention {\r\n static Init() {\r\n ko.bindingHandlers.addCssForAll = {\r\n init: (element, valueAccessor) => {\r\n const $current = $(element);\r\n const params: AddCssForAllParams = ko.unwrap(valueAccessor());\r\n $current.on(params.eventAdd, (event) => {\r\n $(`.${params.class}`).addClass(params.toggleClass);\r\n });\r\n $current.on(params.eventRemove, (event) => {\r\n $(`.${params.class}`).removeClass(params.toggleClass);\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface AddCssForAllParams {\r\n eventAdd: string,\r\n eventRemove: string,\r\n class: string,\r\n toggleClass: string,\r\n}","import * as ko from 'knockout';\r\nimport * as $ from \"jquery\";\r\nimport {ZIndexManager} from \"../Common/ZIndexManager\";\r\n\r\nexport class AlignDropdown {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.alignDropdown = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tconst params: AlignDropdownParams = ko.unwrap(valueAccessor());\r\n\r\n\t\t\t\tconst dropdownType = params.type; // type of dropdown\r\n\t\t\t\tconst verticalAlign = params.directions.vertical; // if dropdown needed to manage vertical position\r\n\t\t\t\tconst horizontalAlign = params.directions.horizontal; // if dropdown needed to manage horizontal position\r\n\t\t\t\tconst addEventOnclick = params.addEventOnclick; // if need to add on click recalculation to open button\r\n\t\t\t\tconst dropdownInsideOverflow = params.dropdownInsideOverflow; //if dropdown located inside overflow: hidden block;\r\n\r\n\t\t\t\tlet $dropdownContainer, // main dropdown container\r\n\t\t\t\t\tappliedClassNameHorizontal, // class name for horizontal align\r\n\t\t\t\t\tappliedClassNameVertical, // class name for vertical align\r\n\t\t\t\t\t$dropdownList, // dropdown list (may be same as dropdown container)\r\n\t\t\t\t\t$target, // usually button that opens dropdown\r\n\t\t\t\t\tisRightSidebar = $('body').hasClass('page-sidebar-reversed'),\r\n $targetParent;\r\n\r\n\t\t\t\tif (!horizontalAlign && !verticalAlign) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (dropdownType === 'bootstrap') {\r\n\t\t\t\t\t$target = $(element);\r\n\t\t\t\t\t$targetParent = $(element).parent();\r\n\t\t\t\t\t$dropdownContainer = $target.parent();\r\n\t\t\t\t\tappliedClassNameVertical = 'dropup';\r\n\t\t\t\t\tappliedClassNameHorizontal = 'dropdown-menu-right';\r\n\t\t\t\t\t$dropdownList = $target.next();\r\n\t\t\t\t} else if (dropdownType === 'generic') {\r\n\t\t\t\t\t$target = $(element).parent();\r\n\t\t\t\t\t$dropdownContainer = $(params.applyToElement);\r\n\t\t\t\t\tappliedClassNameVertical = 'align-up';\r\n\t\t\t\t\tappliedClassNameHorizontal = 'align-left';\r\n\t\t\t\t\t$dropdownList = $dropdownContainer;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\taddEventOnclick && $target.on('click', changeAlignment);\r\n\r\n\t\t\t\twindow.addEventListener('resize', function() {\r\n changeAlignment();\r\n if (dropdownInsideOverflow) {\r\n if ($targetParent.hasClass('open')) {\r\n $targetParent.removeClass('open');\r\n $targetParent.trigger('hidden.bs.dropdown');\r\n }\r\n }\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// whether we need to wait for knockout to render dropdown list or not\r\n\t\t\t\tif (params.waitForRender) {\r\n\t\t\t\t\tsetTimeout(changeAlignment, 0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchangeAlignment();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction changeAlignment() {\r\n\t\t\t\t\tconst windowWidth = isRightSidebar ? $('#mainMenu').offset().left : document.body.clientWidth;\r\n\t\t\t\t\tconst windowHeight = document.body.clientHeight;\r\n\t\t\t\t\tconst buttonOffsetX = $target.offset().left;\r\n\t\t\t\t\tconst buttonOffsetY = $target.offset().top;\r\n\t\t\t\t\tconst buttonHeight = $target.height();\r\n\t\t\t\t\tconst buttonWidth = $target.width();\r\n\r\n\t\t\t\t\tconst isMultiDropdown: boolean =\r\n\t\t\t\t\t\tdropdownType === 'bootstrap' &&\r\n\t\t\t\t\t\t$dropdownContainer\r\n\t\t\t\t\t\t\t.find('.dropdown-menu')\r\n\t\t\t\t\t\t\t.children()\r\n\t\t\t\t\t\t\t.hasClass('dropdown-submenu');\r\n\r\n\t\t\t\t\tconst dropdownWidth = $dropdownList.width() > 170 ? $dropdownList.width() : 170;\r\n\t\t\t\t\tconst dropdownHeight = $dropdownList.height();\r\n\r\n\t\t\t\t\tif (verticalAlign &&\r\n\t\t\t\t\t\twindowHeight - buttonOffsetY - buttonHeight < dropdownHeight + 30 &&\r\n\t\t\t\t\t\tbuttonOffsetY > dropdownHeight) {\r\n\t\t\t\t\t\t$dropdownContainer.addClass(appliedClassNameVertical);\r\n\t\t\t\t\t} else if (verticalAlign) {\r\n\t\t\t\t\t\t$dropdownContainer.removeClass(appliedClassNameVertical);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (horizontalAlign && windowWidth - buttonOffsetX - buttonWidth < dropdownWidth) {\r\n\t\t\t\t\t\t$dropdownList.addClass(appliedClassNameHorizontal);\r\n\t\t\t\t\t} else if (horizontalAlign &&\r\n\t\t\t\t\t\tisMultiDropdown &&\r\n\t\t\t\t\t\twindowWidth - buttonOffsetX < 2 * dropdownWidth &&\r\n\t\t\t\t\t\tbuttonOffsetX > dropdownWidth) {\r\n\t\t\t\t\t\t$dropdownList.addClass(appliedClassNameHorizontal);\r\n\t\t\t\t\t} else if (horizontalAlign) {\r\n\t\t\t\t\t\t$dropdownList.removeClass(appliedClassNameHorizontal);\r\n\t\t\t\t\t}\r\n }\r\n\r\n\t\t\t\tif (dropdownInsideOverflow) {\r\n\t\t\t\t\tconst $parent = $(element).parent('.dropdown').parent();\r\n\r\n $(element).parent('.dropdown').on('show.bs.dropdown', function () {\r\n \tconst $button = $(this).children('.dropdown-toggle');\r\n\r\n \t$(this).parent().css({\r\n\t\t\t\t\t\t\twidth: $(this).parent().width(),\r\n\t\t\t\t\t\t\theight: $(this).parent().height()\r\n\t\t\t\t\t\t});\r\n\r\n $button.css({\r\n\t\t\t\t\t\t\tpadding: $button.css('padding')\r\n\t\t\t\t\t\t});\r\n $('body').append($(this).css({\r\n position:'absolute',\r\n left: $(this).offset().left,\r\n top: $(this).offset().top,\r\n 'z-index': ZIndexManager.Instance.NextValue\r\n }).detach());\r\n });\r\n\r\n $targetParent.on('hidden.bs.dropdown', function() {\r\n $parent.append($(this).css({\r\n position: 'static'\r\n }).detach());\r\n });\r\n\t\t\t\t}\r\n }\r\n\t\t};\r\n\t}\r\n}\r\n\r\nexport interface AlignDropdownParams {\r\n\ttype: string;\r\n\tapplyToElement?: string;\r\n\tdirections: {\r\n\t\thorizontal?: boolean;\r\n\t\tvertical?: boolean;\r\n\t},\r\n\taddEventOnclick?: boolean;\r\n\twaitForRender?: boolean;\r\n dropdownInsideOverflow?: boolean;\r\n}","import * as ko from \"knockout\"\r\n\r\nexport class AllowBindingsExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.allowBindings = {\r\n\t\t\tinit: function (elem, valueAccessor) {\r\n\t\t\t\tvar shouldAllowBindings = ko.unwrap(valueAccessor());\r\n\t\t\t\treturn { controlsDescendantBindings: !shouldAllowBindings };\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class AnimateExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.animate = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\t$(element).animate({ scrollTop: options._scrollValue() });\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport 'jquery';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\n\r\nexport class AutoCompleteExtention {\r\n\r\n static Init() {\r\n ko.bindingHandlers.autoComplete = {\r\n init: (element, valueAccessor) => {\r\n let source = valueAccessor().source;\r\n if (source.length != 0){\r\n this.InitAutocomplete(element, valueAccessor);\r\n }\r\n },\r\n\r\n update: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n let valueUnwrapped = ko.unwrap(valueAccessor());\r\n if (valueUnwrapped.source.length != 0){\r\n this.InitAutocomplete(element, valueUnwrapped, true);\r\n }\r\n }\r\n };\r\n }\r\n\r\n private static InitAutocomplete(element, valueAccessor, update?: boolean){\r\n const OnSelect = update ? valueAccessor.onSelect : valueAccessor().onSelect;\r\n let source = update ? valueAccessor.source : valueAccessor().source;\r\n let options = update ? valueAccessor.options : valueAccessor().options;\r\n\r\n $(element).autocomplete({\r\n minLength: options && options.minLength ? options.minLength : null,\r\n autoFocus: options && options.autoFocus ? options.autoFocus : false,\r\n source: source,\r\n open: function(){\r\n $(this).autocomplete('widget').css({\r\n 'z-index': ZIndexManager.Instance.NextValue,\r\n 'max-width': $(this).outerWidth() + 'px'\r\n });\r\n return false;\r\n },\r\n select: function (event, ui) {\r\n OnSelect(ui.item);\r\n }\r\n });\r\n }\r\n}","import * as ko from 'knockout';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nconst Updater = (element: HTMLElement, valueAccessor) => {\r\n\tvar block = ko.unwrap(valueAccessor());\r\n\tconst isElementBlocked = element.dataset.isBlocked;\r\n\tif (block && !isElementBlocked) {\r\n\t\telement.dataset.isBlocked = \"true\";\r\n\t\tBlockUI.Block({ Target: element });\r\n\t} else if (!block && isElementBlocked == \"true\") {\r\n\t\telement.dataset.isBlocked = \"\";\r\n\t\tBlockUI.Unblock(element);\r\n\t}\r\n}\r\n\r\nexport class BlockElementExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.blockElement = {\r\n\t\t\tinit: Updater,\r\n\r\n\t\t\tupdate: Updater\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class BootstrapCollapseExtention {\r\n\r\n static Init() {\r\n ko.bindingHandlers.collapse = {\r\n init: (element, valueAccessor) => {\r\n var value: any = valueAccessor();\r\n let $collapse = $(element).collapse();\r\n\r\n $collapse.on('hidden.bs.collapse', () => value.onClose());\r\n $collapse.on('show.bs.collapse', () => value.onOpen());\r\n\r\n value.onReady($collapse);\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'bootstrap-multiselect';\r\nimport $ from \"jquery\";\r\n\r\nexport class BootstrapMultiselect {\r\n\tprivate static $multiselect: any;\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.multiselect = {\r\n\t\t\tinit: (element, valueAccessor, allBindings) => {\r\n\t\t\t\tthis.$multiselect = $(element) as any;\r\n\r\n\t\t\t\t($(element) as any).multiselect(valueAccessor());\r\n\r\n\t\t\t\t// let elementOffset = ($(element) as any).parent().offset();\r\n\t\t\t\t// let jBoxContent = ($(element) as any).closest( \".jBox-content\" );\r\n\t\t\t\tlet multiselectContainer = ($(element) as any).parent().find('.multiselect-container');\r\n\t\t\t\tmultiselectContainer.css({\r\n\t\t\t\t\t'max-width': '100%'\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor, allBindings) => {\r\n\t\t\t\tconst options = allBindings().options();\r\n\r\n\t\t\t\tthis.$multiselect.multiselect('setOptions', options);\r\n\t\t\t\tthis.$multiselect.multiselect('rebuild');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tstatic Update() {\r\n\t\tthis.$multiselect && this.$multiselect.multiselect('rebuild');\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nexport class BootstrapPopoverExtention {\r\n\tstatic RenderHtmlString(html, data) {\r\n\t\tconst node = new DOMParser().parseFromString(html, \"text/html\");\r\n\t\tko.applyBindings(data, node.body);\r\n\t\tvar res = node.body.innerHTML.toString();\r\n\t\tko.cleanNode(node);\r\n\t\treturn res;\r\n\t}\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.popover = {\r\n\t\t\tinit: (element, valueAccessor, allBindings) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tconst source = allBindings.get('popoverTitle');\r\n\t\t\t\tconst triggerMode = allBindings.get('triggerMode') || 'click';\r\n\t\t\t\tconst htmlMode = allBindings.get('htmlMode') || false;\r\n\t\t\t\tconst sourceUnwrapped = ko.unwrap(source);\r\n\r\n\t\t\t\tlet result = options;\r\n\r\n\t\t\t\tif (allBindings.get('koData')) {\r\n\t\t\t\t\tresult = this.RenderHtmlString(options, allBindings.get('koData'));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t($(element) as any).popover({\r\n\t\t\t\t\ttrigger: triggerMode,\r\n\t\t\t\t\tcontent: result,\r\n\t\t\t\t\ttitle: sourceUnwrapped,\r\n\t\t\t\t\thtml: htmlMode\r\n\t\t\t\t});\r\n\r\n\r\n\t\t\t},\r\n\t\t\tupdate(element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n\t\t\t\tvar value = valueAccessor();\r\n\t\t\t\tko.bindingHandlers.value.update(element, valueAccessor, allBindings, viewModel, bindingContext);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'bootstrapSwitch';\r\n\r\nexport class BootstrapSwitchExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.bootstrapSwitch = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\toptions['onSwitchChange'] = (event, state) => {\r\n\t\t\t\t\tif (options.value) {\r\n\t\t\t\t\t\toptions.value(state);\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\t$(element).bootstrapSwitch(options);\r\n\t\t\t},\r\n\t\t\tupdate(element, valueAccessor) {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tif (options.value) {\r\n\t\t\t\t\t$(element).bootstrapSwitch('state', options.value(), true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\n\r\nexport class Canvas {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.canvas = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tif (options && options.context) {\r\n\t\t\t\t\tvar context = element.getContext('2d');\r\n\t\t\t\t\toptions.context(context);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'contextMenu';\r\nlet id = 0;\r\nexport class ContextMenu {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.contextMenu = {\r\n\t\t\tinit: (element, valueAccessor) => {\t\t\t\t\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tif(options.hasOwnProperty('enabled') && !ko.unwrap(options.enabled)){\r\n\t\t\t\t\treturn;\t\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\tlet contextMenuSelector = `context-menu${id++}`;\r\n\t\t\t\t$(element).addClass(contextMenuSelector);\r\n\t\t\t\toptions.selector = `.${contextMenuSelector}`;\r\n\t\t\t\t$.contextMenu(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as $ from 'jquery';\r\nimport * as ko from \"knockout\"\r\n\r\nimport 'cropper';\r\n\r\nexport class CropperExtention {\r\n // README v2.2.5\r\n // https://github.com/fengyuanchen/cropper/blob/v2.2.5/README.md\r\n\r\n static Init() {\r\n ko.bindingHandlers.cropper = {\r\n init: (element, valueAccessor, allBindings, viewModel) => {\r\n let self = this;\r\n let options = valueAccessor();\r\n\r\n options.built = () => {\r\n if (options.afterCrop) {\r\n options.afterCrop($(element).cropper('getCroppedCanvas').toDataURL(options.type));\r\n }\r\n };\r\n\r\n\r\n $(element).on('cropend.cropper', function (e: JQuery.Event) {\r\n self.CroppedCanvas(options, this);\r\n });\r\n\r\n $(element).on('zoom.cropper', function (e: JQuery.Event) {\r\n self.CroppedCanvas(options, this);\r\n });\r\n\r\n $(element).cropper(options);\r\n }\r\n }\r\n }\r\n\r\n private static CroppedCanvas(options, $this){\r\n if (options.afterCrop) {\r\n if (options.type === 'image/jpeg' ||\r\n options.type === 'image/jpg' ||\r\n options.type === 'image/jpe' ) {\r\n options.afterCrop($($this).cropper('getCroppedCanvas', {fillColor: '#fff'}).toDataURL(options.type));\r\n } else {\r\n options.afterCrop($($this).cropper('getCroppedCanvas').toDataURL(options.type));\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class CustomScrollbarExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.customScrollbar = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).customScrollbar(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class CustomTableExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.customTable = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet insideModal = null;\r\n\t\t\t\tlet modalWrapperClass = '.jBox-container';\r\n\t\t\t\tlet modalScrollClass = '.jBox-content';\r\n\t\t\t\tlet sysTableClassName = '.sys-table';\r\n\t\t\t\tlet headerWrapClassName = '.header-wrap';\r\n\t\t\t\tlet scrollHeaderClassName = '.scroll-header';\r\n\t\t\t\tconst formWrapper = '.jBox-container .form-wrapper';\r\n\t\t\t\tconst tabs = '.jBox-container .tabs';\r\n\t\t\t\tconst sysTableHeader = '.jBox-container .sys-table-header';\r\n\t\t\t\tconst actionBarBlock = '.jBox-container #ActionBarBlock'\r\n\r\n\t\t\t\tinsideModal = $(element).closest(modalWrapperClass);\r\n\r\n\r\n\t\t\t\tlet windowHeight = null;\r\n\t\t\t\tlet documentHeight = null;\r\n\r\n\t\t\t\tlet tableWidth = 0;\r\n\t\t\t\tlet scrollWidth = 0;\r\n\r\n\t\t\t\tlet tableContainer = $(element).closest(sysTableClassName);\r\n\t\t\t\tlet scrollRepeaterTop = $(tableContainer).find(headerWrapClassName);\r\n\t\t\t\tlet scrollHeader = $(tableContainer).find(scrollHeaderClassName);\r\n\r\n\t\t\t\tif (insideModal.length) {\r\n\t\t\t\t\ttableWidth = $(element).width();\r\n\t\t\t\t\tscrollWidth = $(element).innerWidth();\r\n\r\n\t\t\t\t\twindowHeight = $(modalScrollClass).height();\r\n\t\t\t\t\tdocumentHeight = $(modalScrollClass).innerHeight();\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttableWidth = $(element).width();\r\n\t\t\t\t\tscrollWidth = $(element).innerWidth();\r\n\r\n\t\t\t\t\twindowHeight = $(window).height();\r\n\t\t\t\t\tdocumentHeight = $(document).height();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(scrollRepeaterTop).css({\r\n\t\t\t\t\t'overflow-x': 'auto',\r\n\t\t\t\t\t'overflow-y': 'hidden'\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(scrollHeader).width(scrollWidth);\r\n\r\n\t\t\t\tif (documentHeight > windowHeight) {\r\n\t\t\t\t\tconst outerHeight = $(actionBarBlock).outerHeight() + $(formWrapper).outerHeight() + $(tabs).outerHeight() + $(sysTableHeader).outerHeight();\r\n\t\t\t\t\tconst height = $(actionBarBlock).height() + $(formWrapper).height() + $(tabs).height() + $(sysTableHeader).height();\r\n\r\n\t\t\t\t\t$(element).parent().css({\r\n\t\t\t\t\t\t'height': windowHeight - height - 20,\r\n\t\t\t\t\t\t'overflow': 'auto'\r\n\t\t\t\t\t})\r\n\t\t\t\t}\r\n\t\t\t\t$(window).trigger('resize');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport 'datetimepicker';\r\nimport * as moment from 'moment';\r\nimport {WeekFormatUtils} from 'Core/Controls/DateTime/WeekFormatUtils';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nconst timeFormats = [\r\n DATE_FORMATS.TIME.Format,\r\n DATE_FORMATS.LONG_TIME.Format,\r\n DATE_FORMATS.TIME_SPAN.Format,\r\n DATE_FORMATS.TIME_SPAN_LONG.Format\r\n];\r\n\r\nexport class DatetimepickerExtention {\r\n static Init() {\r\n \r\n const valHook = ($.valHooks.input as any);\r\n // Extension of jQuery.fn.val\r\n // Inspired by https://github.com/RobinHerbots/Inputmask\r\n const valHookGet =\r\n $.valHooks.input && valHook.get\r\n ? valHook.get\r\n : function (element: HTMLInputElement) {\r\n return element.value;\r\n };\r\n\r\n const valHookSet =\r\n $.valHooks.input && valHook.set\r\n ? valHook.set\r\n : function (element: HTMLInputElement, value: string) {\r\n element.value = value;\r\n return value;\r\n };\r\n\r\n $.valHooks.input = {\r\n get: function (element: HTMLInputElement) {\r\n const dataGetInputValue: ((value: string) => string) | undefined = $(element).data('getWeekFormat');\r\n if (dataGetInputValue) {\r\n const savedValue = $(element).data('savedValue');\r\n if (savedValue) {\r\n return savedValue;\r\n }\r\n return dataGetInputValue(element.value) || '';\r\n }\r\n\r\n return valHookGet(element);\r\n },\r\n set: function (element: HTMLInputElement, value: string) {\r\n const dataSetInputValue: ((value: string) => string) | undefined = $(element).data('setWeekFormat');\r\n if (dataSetInputValue) {\r\n $(element).data('savedValue', value);\r\n\r\n const formattedValue = dataSetInputValue(value);\r\n if (!formattedValue) {\r\n return undefined;\r\n }\r\n\r\n element.value = formattedValue;\r\n return formattedValue;\r\n }\r\n\r\n return valHookSet(element, value);\r\n }\r\n };\r\n\r\n ko.bindingHandlers.datetimepicker = {\r\n init: (element, valueAccessor) => {\r\n const options = valueAccessor();\r\n const updateValueCallback = options.onUpdate || (value => {\r\n });\r\n\r\n this.SetInputParse(options);\r\n\r\n let scrollContainer;\r\n let gridScrollContainer;\r\n let listener;\r\n\r\n function resizePicker() {\r\n const picker: HTMLDivElement = this.parentElement.querySelector(\".bootstrap-datetimepicker-widget\");\r\n const {top, left, width, height} = this.querySelector(\".time-picker-button\").getBoundingClientRect();\r\n const pickerHeight = picker.offsetHeight;\r\n const pickerWidth = picker.offsetWidth;\r\n picker.style.right = \"auto\";\r\n picker.style.left = left + (width / 2 - pickerWidth / 2) + \"px\";\r\n\r\n if (window.innerHeight < top + pickerHeight) {\r\n picker.style.top = (top - pickerHeight) + \"px\";\r\n picker.classList.add(\"icon-bottom\");\r\n } else {\r\n picker.style.top = (top + height) + \"px\";\r\n picker.classList.remove(\"icon-bottom\");\r\n }\r\n scrollContainer = this.closest(\".jBox-content\");\r\n gridScrollContainer = this.closest(\".grid-container-wrapper\");\r\n }\r\n\r\n\r\n if (options.options) {\r\n const isWeekFormat = options.options.format === WeekFormatUtils.GetLocalizedWeekFormat();\r\n\r\n if (isWeekFormat) {\r\n const input = element instanceof HTMLInputElement ? element : element.querySelector('input');\r\n\r\n WeekFormatUtils.PatchWeekFormatInput(input, options.options.format);\r\n }\r\n\r\n const pickerOptions = isWeekFormat ? WeekFormatUtils.PatchWeekFormatOptions(options.options) : options.options;\r\n\r\n $(element).datetimepicker(pickerOptions)\r\n .on('dp.hide, dp.change', (e: any) => {\r\n if (!e.date && (options.options.format == 'HH:mm')) {\r\n updateValueCallback(\"0\");\r\n }\r\n if (e.date && e.date._d) {\r\n updateValueCallback(e.date.toDate());\r\n }\r\n })\r\n .on('dp.show', function (e: any) {\r\n\r\n $('#Condition, #Filtering, .table-scrollable, .tag-control-list')\r\n .css('overflow', 'visible');\r\n\r\n // if datetimepicker is inside grid\r\n let gridCell = $(this).closest('.flex-grid-tdata');\r\n\r\n if (gridCell.length > 0) {\r\n\r\n resizePicker.call(this);\r\n listener = resizePicker.bind(this);\r\n\r\n window.addEventListener(\"resize\", listener, false);\r\n window.addEventListener(\"scroll\", listener, false);\r\n scrollContainer && scrollContainer.addEventListener(\"scroll\", listener, false);\r\n gridScrollContainer && gridScrollContainer.addEventListener(\"scroll\", listener, false);\r\n }\r\n })\r\n .on('dp.hide', function (e: any) {\r\n $('#Condition, #Filtering, .table-scrollable, .tag-control-list')\r\n .css({'overflow-x': 'auto', 'overflow-y': 'auto'});\r\n\r\n scrollContainer && scrollContainer.removeEventListener(\"scroll\", listener, false);\r\n gridScrollContainer && gridScrollContainer.removeEventListener(\"scroll\", listener, false);\r\n window.removeEventListener(\"resize\", listener, false);\r\n window.removeEventListener(\"scroll\", listener, false);\r\n });\r\n\r\n\r\n $(element).find('input')\r\n .on('keyup', function (e: any) {\r\n if (!$(this).val()) {\r\n updateValueCallback('');\r\n }\r\n });\r\n\r\n if (options.changeTheCaret) {\r\n $(element).find('input')\r\n .on('keydown', function (e: any) {\r\n let caretPos = this.selectionStart;\r\n\r\n switch (e.which) {\r\n case 37:\r\n e.preventDefault();\r\n this.setSelectionRange(caretPos - 1, caretPos - 1);\r\n break;\r\n case 39:\r\n e.preventDefault();\r\n this.setSelectionRange(caretPos + 1, caretPos + 1);\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n },\r\n\r\n update(element, valueAccessor) {\r\n const options = valueAccessor();\r\n const updateValueCallback = options.onUpdate || (value => {\r\n });\r\n const clearValueCallback = options.onClear || (value => {\r\n });\r\n const resetBtn = $(element).find('.date-remove');\r\n\r\n if (options.value) {\r\n let dateTimeValue = options.value instanceof Function ? options.value() : options.value;\r\n\r\n if (\r\n (!options.notFormatted && options.options.format !== WeekFormatUtils.GetLocalizedWeekFormat()) ||\r\n (dateTimeValue instanceof Date && timeFormats.indexOf(options.options.format) > -1)\r\n ) {\r\n dateTimeValue = moment(dateTimeValue).format(options.options.format);\r\n }\r\n\r\n $(element).data('DateTimePicker').date(dateTimeValue || null);\r\n\r\n $(resetBtn).on('click', () => {\r\n $(element).data('DateTimePicker').clear();\r\n clearValueCallback();\r\n updateValueCallback();\r\n });\r\n }\r\n }\r\n };\r\n }\r\n\r\n private static SetInputParse(options) {\r\n const currentFormat = options.options.format;\r\n\r\n if (!currentFormat) {\r\n return;\r\n }\r\n\r\n if (timeFormats.indexOf(currentFormat) > -1) {\r\n const fallbackMomentOfTime = moment('23:59', DATE_FORMATS.TIME.Format);\r\n\r\n options.options.parseInputDate = (inputValue) => {\r\n if (inputValue === 'Invalid date') {\r\n inputValue = '0';\r\n }\r\n\r\n if (inputValue && inputValue.indexOf(':') === -1) {\r\n const value = inputValue.replace(\",\", \".\");\r\n const minsRest = value % 1;\r\n\r\n const hours = Math.floor(value);\r\n const minutes = Math.round((minsRest % 1) * 60);\r\n\r\n if (hours < 0 || hours >= 24 || minutes < 0 || minutes >= 60) {\r\n return fallbackMomentOfTime;\r\n }\r\n\r\n const hrs = (hours < 10) ? (\"0\" + hours) : hours.toString();\r\n const mins = (minutes < 10) ? (\"0\" + minutes) : minutes.toString();\r\n\r\n const res = hrs + \":\" + mins;\r\n const momentOfTime = moment(res, 'hh:mm');\r\n\r\n if (!momentOfTime.isValid()) {\r\n return fallbackMomentOfTime;\r\n }\r\n\r\n return momentOfTime;\r\n }\r\n\r\n return moment(inputValue, currentFormat);\r\n };\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nexport class DebugExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.debug = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tconsole.log('Knockoutbinding:');\r\n\t\t\t\tconsole.log(element);\r\n\t\t\t\tconsole.log(valueAccessor());\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class DirtyFlagExtention {\r\n\tprivate static flag : Result;\r\n\tstatic Init() {\r\n\t\t(ko as any).dirtyFlag = <T>(currentState: T, isInitiallyDirty: boolean = false) => new Result(currentState, isInitiallyDirty);\r\n\t}\r\n}\r\n\r\nclass Result {\r\n\tprivate _currentState : KnockoutObservable<any>;\r\n\tprivate _initialState: KnockoutObservable<string>;\r\n\tprivate _isInitiallyDirty: boolean;\r\n\r\n\tIsDirty: KnockoutComputed<boolean>;\r\n\r\n\tconstructor(currentState: any, isInitiallyDirty: boolean = false) {\r\n\t\tthis._currentState = ko.observable(currentState);\r\n\t\tthis._initialState = ko.observable(ko.toJSON(this._currentState()));\r\n\t\tthis._isInitiallyDirty = isInitiallyDirty;\r\n\r\n\t\tthis.IsDirty = ko.computed(() => {\r\n\t\t\treturn this._isInitiallyDirty || (this._initialState() !== ko.toJSON(this._currentState()));\r\n\t\t}, this);\r\n\t}\r\n\r\n\tCommit() {\r\n\t\tthis._initialState(ko.toJSON(this._currentState()));\r\n\t\tthis._isInitiallyDirty = false;\r\n\t}\r\n\r\n\tGetInitialState() {\r\n\t\treturn ko.toJS(this._initialState());\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as dragula from 'dragula';\r\n\r\nexport class DragulaExtention {\r\n private static FOREACH_OPTIONS_PROPERTIES = ['afterAdd', 'afterMove', 'afterRender', 'as', 'beforeRemove'];\r\n private static LIST_KEY = 'ko_dragula_list';\r\n private static AFTER_DROP_KEY = 'ko_dragula_afterDrop';\r\n private static AFTER_DELETE_KEY = 'ko_dragula_afterDelete';\r\n private static AFTER_CLONE_KEY = 'ko_dragula_afterClone';\r\n private static DRAG_KEY = 'ko_dragula_drag';\r\n private static DRAG_END_KEY = 'ko_dragula_dragEnd';\r\n\r\n private static unwrap = ko.unwrap;\r\n private static setData = ko.utils.domData.set;\r\n private static getData = ko.utils.domData.get;\r\n private static foreachBinding = ko.bindingHandlers.foreach;\r\n private static fastForEachBinding = ko.bindingHandlers.fastForEach;\r\n private static addDisposeCallback = ko.utils.domNodeDisposal.addDisposeCallback;\r\n private static cloneBackup;\r\n private static copying;\r\n\r\n private static groups = [];\r\n\r\n static Init() {\r\n this.FOREACH_OPTIONS_PROPERTIES = ['afterAdd', 'afterMove', 'afterRender', 'as', 'beforeRemove'];\r\n this.LIST_KEY = 'ko_dragula_list';\r\n this.AFTER_DROP_KEY = 'ko_dragula_afterDrop';\r\n this.AFTER_DELETE_KEY = 'ko_dragula_afterDelete';\r\n this.AFTER_CLONE_KEY = 'ko_dragula_afterClone';\r\n this.DRAG_KEY = 'ko_dragula_drag';\r\n\r\n this.unwrap = ko.unwrap;\r\n this.setData = ko.utils.domData.set;\r\n this.getData = ko.utils.domData.get;\r\n this.foreachBinding = ko.bindingHandlers.foreach;\r\n this.addDisposeCallback = ko.utils.domNodeDisposal.addDisposeCallback;\r\n this.groups = [];\r\n var self = this;\r\n\r\n ko.bindingHandlers.dragula = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n var options = self.unwrap(valueAccessor()) || {};\r\n var foreachOptions = self.MakeForeachOptions(valueAccessor, options);\r\n self.setData(element, self.LIST_KEY, foreachOptions.data);\r\n self.setData(element, self.AFTER_DROP_KEY, options.afterDrop);\r\n self.setData(element, self.AFTER_DELETE_KEY, options.afterDelete);\r\n self.setData(element, self.DRAG_KEY, options.onDrag);\r\n self.setData(element, self.DRAG_END_KEY, options.onDragEnd);\r\n\r\n if (options.useFastForEach) {\r\n self.fastForEachBinding.init(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n } else {\r\n self.foreachBinding.init(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n }\r\n\r\n if (options.disabled) {\r\n return {controlsDescendantBindings: true};\r\n }\r\n\r\n if (options.group) {\r\n self.CreateOrUpdateDrakeGroup(element, options);\r\n } else {\r\n (() => {\r\n var drake = self.CreateDrake(element, options);\r\n self.addDisposeCallback(element, () => {\r\n return drake.destroy();\r\n });\r\n })();\r\n }\r\n\r\n return {\r\n controlsDescendantBindings: true\r\n };\r\n },\r\n\r\n update(element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var options = self.unwrap(valueAccessor()) || {};\r\n var foreachOptions = self.MakeForeachOptions(valueAccessor, options);\r\n\r\n self.setData(element, self.LIST_KEY, foreachOptions.data);\r\n self.setData(element, self.AFTER_DROP_KEY, options.afterDrop);\r\n self.setData(element, self.DRAG_KEY, options.onDrag);\r\n self.setData(element, self.DRAG_END_KEY, options.onDragEnd);\r\n\r\n if (options.useFastForEach) {\r\n self.fastForEachBinding.init(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n } else {\r\n self.foreachBinding.update(element, () => {\r\n return foreachOptions;\r\n }, allBindings, viewModel, bindingContext);\r\n }\r\n }\r\n };\r\n }\r\n\r\n static MakeForeachOptions(valueAccessor, options) {\r\n var templateOptions = {\r\n data: options.data || valueAccessor()\r\n };\r\n\r\n this.FOREACH_OPTIONS_PROPERTIES.forEach((option) => {\r\n if (options.hasOwnProperty(option)) {\r\n templateOptions[option] = options[option];\r\n }\r\n });\r\n\r\n return templateOptions;\r\n }\r\n\r\n static CreateOrUpdateDrakeGroup(container, options) {\r\n var group = this.FindGroup(options.group);\r\n if (group) {\r\n group.drake.containers.push(container);\r\n } else {\r\n group = this.AddGroup(options.group, this.CreateDrake(container, options));\r\n }\r\n\r\n this.addDisposeCallback(container, () => {\r\n return this.RemoveContainer(group, container);\r\n });\r\n }\r\n\r\n static AddGroupWithOptions(name, options) {\r\n var drake = dragula(options);\r\n this.RegisterEvents(drake);\r\n return this.AddGroup(name, drake);\r\n }\r\n\r\n static FindGroup(name) {\r\n for (var i = 0; i < this.groups.length; i++) {\r\n if (this.groups[i].name === name) {\r\n return this.groups[i];\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n static FindGroups(name) {\r\n var result = [];\r\n for (var i = 0; i < this.groups.length; i++) {\r\n if (this.groups[i].name === name) {\r\n result.push(this.groups[i]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n static AddGroup(name, drake) {\r\n var group = {\r\n name: name, drake: drake\r\n };\r\n this.groups.push(group);\r\n return group;\r\n }\r\n\r\n static RegisterEvents(drake) {\r\n drake.on('drop', this.OnDrop.bind(this));\r\n drake.on('drag', this.OnDrag.bind(this));\r\n drake.on('remove', this.OnRemove.bind(this));\r\n drake.on('cancel', this.OnCancel.bind(this));\r\n drake.on('cloned', this.OnCloned.bind(this));\r\n }\r\n\r\n static RemoveContainer(group, container) {\r\n var index = group.drake.containers.indexOf(container);\r\n group.drake.containers.splice(index, 1);\r\n\r\n if (!group.drake.containers.length) {\r\n this.DestroyGroup(group);\r\n }\r\n }\r\n\r\n static DestroyGroup(group) {\r\n var index = this.groups.indexOf(group);\r\n this.groups.splice(index, 1);\r\n group.drake.destroy();\r\n }\r\n\r\n static CreateDrake(element, options) {\r\n var drake = dragula([element], options);\r\n this.RegisterEvents(drake);\r\n return drake;\r\n }\r\n\r\n static OnDrop(el, target, source) {\r\n if (!target) {\r\n return;\r\n }\r\n var item = ko.dataFor(el);\r\n if (this.copying) {\r\n item = ko.dataFor(this.cloneBackup);\r\n this.copying = false;\r\n }\r\n var context = ko.contextFor(el);\r\n\r\n var sourceItems = this.getData(source, this.LIST_KEY);\r\n\r\n if (!sourceItems) {\r\n target.removeChild(el);\r\n return;\r\n }\r\n\r\n var sourceIndex = sourceItems.indexOf(item);\r\n\r\n var targetItems = this.getData(target, this.LIST_KEY);\r\n var targetIndex = Array.prototype.indexOf.call(target.children, el);\r\n var sourceContext = ko.dataFor(source);\r\n var targetContext = ko.dataFor(target);\r\n\r\n target.removeChild(el);\r\n\r\n /*if (this.copying) {\r\n var koCopy = item.Clone ? item.Clone() : mapping.fromJS(mapping.toJS(item));\r\n sourceItems.splice(sourceIndex, 1);\r\n sourceItems.splice(sourceIndex, 0, koCopy);\r\n targetItems.splice(targetIndex, 0, item);\r\n this.copying = false;\r\n } else {\r\n sourceItems.splice(sourceIndex, 1);\r\n targetItems.splice(targetIndex, 0, item);\r\n }*/\r\n\r\n var afterDrop = this.getData(target, this.AFTER_DROP_KEY);\r\n if (afterDrop) {\r\n afterDrop.call(context, item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n var onDragEnd = this.getData(target, this.DRAG_END_KEY);\r\n if (onDragEnd) {\r\n onDragEnd.call(context, item);\r\n }\r\n }\r\n\r\n static OnDrag(el, source) {\r\n var item = ko.dataFor(el);\r\n var context = ko.contextFor(el);\r\n var sourceItems = this.getData(source, this.LIST_KEY);\r\n var onDrag = this.getData(source, this.DRAG_KEY);\r\n if (onDrag) {\r\n onDrag.call(context, item, sourceItems);\r\n }\r\n }\r\n\r\n static OnRemove(el, container) {\r\n var item = ko.dataFor(el);\r\n var sourceItems = this.getData(container, this.LIST_KEY);\r\n var sourceIndex = sourceItems.indexOf(item);\r\n var context = ko.contextFor(el);\r\n\r\n sourceItems.splice(sourceIndex, 1);\r\n\r\n var afterDelete = this.getData(container, this.AFTER_DELETE_KEY);\r\n if (afterDelete) {\r\n afterDelete.call(context, item, sourceIndex, sourceItems);\r\n }\r\n\r\n var onDragEnd = this.getData(container, this.DRAG_END_KEY);\r\n if (onDragEnd) {\r\n onDragEnd.call(context, item);\r\n }\r\n }\r\n\r\n static OnCancel(el, container) {\r\n if (container) {\r\n var item = ko.dataFor(el);\r\n var sourceItems = this.getData(container, this.LIST_KEY);\r\n var sourceIndex = sourceItems.indexOf(item);\r\n\r\n container.removeChild(el);\r\n\r\n sourceItems.splice(sourceIndex, 1);\r\n sourceItems.splice(sourceIndex, 0, item);\r\n\r\n var onDragEnd = this.getData(container, this.DRAG_END_KEY);\r\n if (onDragEnd) {\r\n onDragEnd.call(ko.contextFor(el), item);\r\n }\r\n }\r\n }\r\n\r\n static OnCloned(clone, original, type) {\r\n if (type === 'copy') {\r\n this.copying = true;\r\n this.cloneBackup = original;\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nexport class DropdownExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.dropdown = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\t//var options = valueAccessor();\r\n\t\t\t\t//const updateValueCallback = options.onUpdate || (value => { });\r\n\t\t\t\tconsole.log(element, valueAccessor());\r\n\t\t\t\t//if (options.options) {\r\n\t\t\t\tconsole.log($(element));\r\n\t\t\t\t$(element).on('show.bs.dropdown', (e: any) => {\r\n\t\t\t\t\t\tconsole.log('show');\r\n\t\t\t\t\t\t$('#Condition, #Filtering').css('overflow', 'visible');\r\n\r\n\t\t\t\t\t}).on('hide.bs.dropdown', (e: any) => {\r\n\t\t\t\t\t\tconsole.log('hide');\r\n\t\t\t\t\t\t$('#Condition, #Filtering').css({ 'overflow-x': 'auto', 'overflow-y': 'hidden' });\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t//}\r\n\t\t\t},\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout'\r\nimport 'jquery'\r\n\r\nimport Dropzone from 'dropzone'\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class DropzoneExtenion {\r\n static Init() {\r\n\r\n ko.bindingHandlers.dropzone = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n const options = valueAccessor();\r\n const dropzoneInstance = new Dropzone(element, options);\r\n let rawData = ko.unwrap(bindingContext.$rawData);\r\n\r\n dropzoneInstance.on('addedfiles', (files) => {\r\n setTimeout(() => { \r\n if (dropzoneInstance.files.length > bindingContext.$rawData.MaxFilesQty) {\r\n Array.prototype.forEach.call(files, file => dropzoneInstance.removeFile(file));\r\n new Notifier().Failed(NOTIFICATIONS.ALLOWED_FILES_AMOUNT_EXCEEDED.replace('{amount}', bindingContext.$rawData.MaxFilesQty));\r\n return;\r\n }\r\n\r\n Array.prototype.forEach.call(files, file => {\r\n if (file.size === 0) {\r\n dropzoneInstance.removeFile(file);\r\n new Notifier().Failed(NOTIFICATIONS.EMPTY_SIZE_FILES_RESTRICTION);\r\n return;\r\n }\r\n if ((file.size / (1024 * 1024)) > rawData.MaxFileSize) {\r\n return;\r\n }\r\n });\r\n\r\n const uploadSessionSize = dropzoneInstance.files.filter(file => file.status === 'queued').map(file => file.size).reduce((prevFileSize, currentFileSize) => prevFileSize + currentFileSize, 0);\r\n if ((uploadSessionSize / (1024 * 1024)) > rawData.MaxUploadingFilesSize) {\r\n Array.prototype.forEach.call(files, function (file) {\r\n if (file.previewElement.parentNode != null) {\r\n dropzoneInstance.removeFile(file)\r\n }\r\n });\r\n new Notifier().Failed(NOTIFICATIONS.ALLOWED_FILES_SIZE_EXCEEDED.replace('{size}', bindingContext.$rawData.MaxUploadingFilesSize));\r\n return;\r\n }\r\n\r\n const combinedSize = dropzoneInstance.files.map(file => file.size).reduce((prevFileSize, currentFileSize) => prevFileSize + currentFileSize, 0);\r\n if ((combinedSize / (1024 * 1024)) > bindingContext.$rawData.MaxCombinedSize) {\r\n Array.prototype.forEach.call(files, function (file) {\r\n if (file.previewElement.parentNode != null) {\r\n dropzoneInstance.removeFile(file)\r\n }\r\n });\r\n new Notifier().Failed(NOTIFICATIONS.OVERAL_FILE_SIZE_EXCEEDED);\r\n return;\r\n }\r\n\r\n const acceptedTypes: Array<string> = options && options.acceptedFiles\r\n ? options.acceptedFiles.split(',') : null;\r\n if (acceptedTypes) {\r\n let invalidFiles: Array<string> = [];\r\n Array.prototype.forEach.call(files, file => {\r\n if (!_.any(acceptedTypes, extension => file.name.toLowerCase().endsWith(extension))) {\r\n dropzoneInstance.removeFile(file);\r\n invalidFiles.push(file.name);\r\n }\r\n });\r\n\r\n if (invalidFiles.length > 0) {\r\n const message = `${NOTIFICATIONS.ALLOWED_FILE_EXTENSIONS_ARE_EXTENSIONS}. ${NOTIFICATIONS.CANNOT_UPLOAD_FILES}`\r\n .replace('{FileExtensions}', acceptedTypes.join(', '))\r\n .replace('{Files}', invalidFiles.join(', '));\r\n new Notifier().Failed(message);\r\n return;\r\n }\r\n }\r\n\r\n if (bindingContext.$rawData && bindingContext.$rawData.AfterUpload) {\r\n Array.prototype.forEach.call(files, file => bindingContext.$rawData.AfterUpload(file));\r\n }\r\n })\r\n });\r\n\r\n dropzoneInstance.on('addedfile', (file) => {\r\n if (file.status === 'preloaded' && bindingContext.$rawData && bindingContext.$rawData.AfterUpload) {\r\n bindingContext.$rawData.AfterUpload(file);\r\n }\r\n });\r\n\r\n ko.utils.domData.set(element, 'preloadFinished', false);\r\n\r\n dropzoneInstance.on('removedfile', (file) => {\r\n file.status = 'removed';\r\n\r\n if (typeof bindingContext.$rawData.ImageDelete === \"function\") {\r\n bindingContext.$rawData.ImageDelete(file);\r\n }\r\n });\r\n\r\n dropzoneInstance.on('error', (file) => {\r\n if ((file.size / (1024 * 1024)) > rawData.MaxFileSize) {\r\n dropzoneInstance.removeFile(file);\r\n new Notifier().Failed(NOTIFICATIONS.FILE_SIZE_IS_TOO_BIG.replace('{MaxFileSize}', rawData.MaxFileSize));\r\n }\r\n });\r\n\r\n ko.utils.domData.set(element, 'dropZoneInstance', dropzoneInstance);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n dropzoneInstance.off();\r\n dropzoneInstance.destroy();\r\n });\r\n },\r\n update: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n if (!bindingContext.$data.IsImageGallery) {\r\n return;\r\n }\r\n const images = bindingContext.$rawData._dataModel && bindingContext.$rawData._dataModel() && bindingContext.$rawData._dataModel().Files || null;\r\n if (images !== null && !ko.utils.domData.get(element, 'preloadFinished')) {\r\n const dropzoneInstance = ko.utils.domData.get(element, 'dropZoneInstance');\r\n if (images) {\r\n for (var i = 0; i < images.length; i++) {\r\n const imageToInject = _.extend(images[i], {\r\n preloaded: true,\r\n accepted: true,\r\n status: 'preloaded',\r\n upload: {filename: images[i].CacheFile ? images[i].CacheFile.name : (images[i].Name ? images[i].Name : 'prev' + i)},\r\n size: images[i].Size ? images[i].Size : images[i].CacheFile.size\r\n });\r\n dropzoneInstance.emit('addedfile', imageToInject);\r\n if (!!imageToInject.CacheFile) {\r\n dropzoneInstance.emit('thumbnail', imageToInject, imageToInject.CacheFile.dataURL || 'data:image/jpeg;base64,' + imageToInject.CacheFile.dataURL);\r\n } else {\r\n dropzoneInstance.emit('thumbnail', imageToInject, imageToInject.ImageData || 'data:image/jpeg;base64,' + imageToInject.ImageData);\r\n }\r\n if (imageToInject.ImageData) {\r\n dropzoneInstance.emit('complete', imageToInject);\r\n }\r\n dropzoneInstance.files.push(imageToInject);\r\n }\r\n }\r\n ko.utils.domData.set(element, 'preloadFinished', true);\r\n\r\n }\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\nimport {ZIndexManager} from \"Core/Common/ZIndexManager\";\r\n\r\n// customOptions\r\n// showHideOnlyOnHover - Restarts the tooltip on hover over the element.\r\n// isLineClampMode - Triggers the tooltip upon reaching a certain height, used together with the \".line-clamp-ellipsis\" class, but can be used without it\r\n\r\nexport class EllipsisTooltipExtention {\r\n private _jbox: jBox;\r\n private static _tooltip: Tooltip | null = null;\r\n\r\n static Init() {\r\n const self = this;\r\n ko.bindingHandlers.ellipsisTooltip = {\r\n init: (element, valueAccessor) => {\r\n const options = ko.unwrap(valueAccessor()).options;\r\n \r\n const updateEllipsisTooltip = () => {\r\n if (options && options.isLineClampMode){ //Used in conjunction with the \".line-clamp-ellipsis\" class, but can be used without it\r\n let currentEl = $(element);\r\n if (currentEl[0].offsetHeight < currentEl[0].scrollHeight ||\r\n currentEl[0].offsetWidth < currentEl[0].scrollWidth) {\r\n // your element have overflow\r\n if (options.showHideOnlyOnHover) {\r\n self.ShowTooltip(element, valueAccessor);\r\n } else {\r\n self.Update(element, valueAccessor);\r\n }\r\n } else {\r\n self.HideTooltip(options);\r\n }\r\n } else {\r\n let currentEl = $(element),\r\n parrentEl = currentEl.parent(),\r\n rightCoorCurrent = currentEl.offset().left + currentEl.prop('scrollWidth'),\r\n rightCoorParent = parrentEl.offset().left + parrentEl.prop('scrollWidth');\r\n\r\n if (rightCoorCurrent > rightCoorParent) {\r\n if (options && options.showHideOnlyOnHover) {\r\n self.ShowTooltip(element, valueAccessor);\r\n } else {\r\n self.Update(element, valueAccessor);\r\n }\r\n } else {\r\n self.HideTooltip(options);\r\n }\r\n }\r\n }\r\n\r\n $(document).ready(updateEllipsisTooltip);\r\n\r\n if (options && options.showHideOnlyOnHover) {\r\n $(element).on('mouseenter', function () {\r\n setTimeout(updateEllipsisTooltip, 1);\r\n });\r\n $(element).on('mouseleave', function () {\r\n setTimeout(()=> {\r\n self.HideTooltip(options);\r\n }, 1)\r\n });\r\n }\r\n \r\n }\r\n };\r\n }\r\n\r\n private static ShowTooltip(element, valueAccessor) {\r\n const options = ko.unwrap(valueAccessor()) as ITooltipConfig;\r\n\r\n if ((options && options.options) && options.options.showHideOnlyOnHover) {\r\n const otherOptions = options.options;\r\n if (!this._tooltip) {\r\n this._tooltip = new Tooltip(element, options.content, otherOptions);\r\n }\r\n \r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n });\r\n\r\n this._tooltip.Show(element);\r\n }\r\n }\r\n\r\n private static HideTooltip(options) {\r\n if (options && options.showHideOnlyOnHover) {\r\n if (this._tooltip) {\r\n this._tooltip.Close();\r\n this._tooltip.Destroy();\r\n this._tooltip = null;\r\n }\r\n }\r\n }\r\n\r\n private static Update(element, valueAccessor) {\r\n const options = ko.unwrap(valueAccessor()) as ITooltipConfig;\r\n const otherOptions = options.options;\r\n const tooltip = new Tooltip(element, options.content, otherOptions);\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n });\r\n }\r\n\r\n static CreateEllipsisTooltipForPathRunner(record) {\r\n let currentNodeType = $(`#${record.Guid}_node-type`),\r\n currentAnchor = $(`#${record.Guid}_anchor`),\r\n jbox;\r\n\r\n if (!!currentAnchor.length && !!currentNodeType){\r\n if (currentAnchor.prop('offsetWidth') < currentAnchor.prop('scrollWidth') || currentNodeType.prop('offsetWidth') < currentNodeType.prop('scrollWidth')) {\r\n jbox = new jBox('Tooltip', {\r\n content: `<b>${record.TypeNameTranslation || record.TypeTranslatedName || record.TypeName}:</b> ${record.TranslatedName || record.NameTranslation || record.Name}`,\r\n addClass: `${record.Guid}_tooltip path-runner-tooltip`,\r\n closeOnClick: true,\r\n closeOnMouseleave: true,\r\n target: $(`#${record.Guid}_anchor`),\r\n zIndex: ZIndexManager.Instance.NextValue\r\n });\r\n jbox.open();\r\n\r\n return jbox;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport interface ITooltipConfig {\r\n content: string;\r\n options: any;\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class EnableAttrExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.enableAttr = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar enabled = ko.unwrap(valueAccessor());\r\n\t\t\t\tif (enabled) {\r\n\t\t\t\t\t$(element).removeAttr('disabled');\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t$(element).attr('disabled', 'disabled');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class EnterKeyExtention {\r\n\tstatic Init() {\r\n\t\tvar ENTER_KEY_CODE = 13;\r\n\r\n\t\tko.bindingHandlers.enterKey = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n let accessor = valueAccessor();\r\n\t\t\t\t$(element).keypress((event) => {\r\n\t\t\t\t\tlet keyCode = (event.which ? event.which : event.keyCode);\r\n if (keyCode === ENTER_KEY_CODE) {\r\n if (accessor instanceof Function) {\r\n accessor.call(viewModel, event);\r\n return false;\r\n }\r\n accessor.handler.call(viewModel, event);\r\n return accessor.bubble;\r\n }\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nvar original = new ko.bindingProvider();\r\nexport class ErrorHandlingBindingProvider implements KnockoutBindingProvider {\r\n\tgetBindingAccessors(node: Node, bindingContext: KnockoutBindingContext): { [index: string]: string; } {\r\n\t\tvar result = {};\r\n\t\t\r\n\t\t//catch general errors parsing binding syntax\r\n\t\ttry {\r\n\t\t\tresult = original.getBindingAccessors(node, bindingContext);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tif (console && console.log) {\r\n\t\t\t\tconsole.log(\"Error in binding syntax: \" + e.message, node); \r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t//catch errors when actually evaluating the value of a binding\r\n\t\tko.utils.objectForEach(result, (key, value) => {\r\n\t\t\tresult[key] = () => {\r\n\t\t\t\tvar result = null;\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tresult = value(); \r\n\t\t\t\t}\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tif (console && console.log) {\r\n\t\t\t\t\t\tconsole.log(\"Error in \\\"\" + key + \"\\\" binding: \" + e.message);\r\n\t\t\t\t\t\tconsole.log('Node :', node);\r\n\t\t\t\t\t\tif (bindingContext && bindingContext.$data) {\r\n\t\t\t\t\t\t\tconsole.log('Model :', bindingContext.$data);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\treturn result;\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn (result) as any;\r\n\t}\r\n\r\n\tnodeHasBindings = original.nodeHasBindings;\r\n\tgetBindings = original.getBindings;\r\n\r\n\t\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nexport class EscKeyExtension {\r\n static Init() {\r\n const ESC_KEY_CODE = 27;\r\n\r\n ko.bindingHandlers.escKey = {\r\n init: (element, valueAccessor, allBindings, viewModel) => {\r\n const callback = valueAccessor();\r\n $(element).keyup(event => {\r\n const keyCode = event.which || event.keyCode;\r\n if (keyCode === ESC_KEY_CODE) {\r\n callback.call(viewModel);\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n };\r\n }\r\n}","/// <reference path=\"../../libs/typings/jqueryUi.d.ts\"/>\r\n/// <reference path=\"../../libs/typings/cropper.d.ts\"/>\r\n\r\nimport * as ko from \"knockout\";\r\nimport \"knockoutSelect2\";\r\nimport * as $ from \"jquery\";\r\nimport \"jqueryUi\";\r\n\r\n\r\nimport 'jqueryUniform';\r\n\r\nimport 'knockout-sortable';\r\n\r\n\r\nimport { DragulaExtention } from 'Core/KnockoutExtentions/DragulaExtention';\r\nimport { DropzoneExtenion } from 'Core/KnockoutExtentions/DropzoneExtention';\r\nimport { FullCalendarExtention } from 'Core/KnockoutExtentions/FullCalendarExtention';\r\nimport { InputMaskExtention, MaskFormater } from 'Core/KnockoutExtentions/InputMaskExtention';\r\nimport { IntlTelInputExtention } from 'Core/KnockoutExtentions/IntlTelInputExtention';\r\nimport { DebugExtention } from 'Core/KnockoutExtentions/DebugExtention';\r\nimport { ViewerJsExtention } from 'Core/KnockoutExtentions/ViewerJsExtention';\r\nimport { DirtyFlagExtention } from 'Core/KnockoutExtentions/DirtyFlagExtention';\r\nimport { ErrorHandlingBindingProvider } from 'Core/KnockoutExtentions/ErrorHandlingBindingProvider';\r\nimport { RenderTemplateXExtention } from 'Core/KnockoutExtentions/RenderTemplateXExtention';\r\nimport { SubformResizeExtention } from 'Core/KnockoutExtentions/SubformResizeExtention';\r\nimport { PreventBubbleExtention } from 'Core/KnockoutExtentions/PreventBubbleExtention';\r\nimport { NiceScrollExtention } from 'Core/KnockoutExtentions/NiceScrollExtention';\r\nimport { SlimScrollExtention } from 'Core/KnockoutExtentions/SlimScrollExtention';\r\nimport { ResizableExtention } from 'Core/KnockoutExtentions/ResizableExtention';\r\nimport { CustomScrollbarExtention } from 'Core/KnockoutExtentions/CustomScrollbarExtention';\r\nimport { ToggleExtention } from 'Core/KnockoutExtentions/ToggleExtention';\r\nimport { DatetimepickerExtention } from 'Core/KnockoutExtentions/DatetimepickerExtention';\r\nimport { EnterKeyExtention } from 'Core/KnockoutExtentions/EnterKeyExtention';\r\nimport { EscKeyExtension } from \"Core/KnockoutExtentions/EscKeyExtension\";\r\nimport { KnobExtention } from 'Core/KnockoutExtentions/KnobExtention';\r\nimport { CropperExtention } from 'Core/KnockoutExtentions/CropperExtention';\r\nimport { EnableAttrExtention } from 'Core/KnockoutExtentions/EnableAttrExtention';\r\nimport { AnimateExtention } from 'Core/KnockoutExtentions/AnimateExtention';\r\nimport { TinymceExtention } from 'Core/KnockoutExtentions/TinymceExtention';\r\nimport { MiniColorsExtention } from 'Core/KnockoutExtentions/MiniColorsExtention';\r\nimport { OptionExtention } from 'Core/KnockoutExtentions/OptionExtention';\r\nimport { TooltipExtention } from 'Core/KnockoutExtentions/TooltipExtention';\r\nimport { EllipsisTooltipExtention } from 'Core/KnockoutExtentions/EllipsisTooltipExtention';\r\nimport { BootstrapSwitchExtention } from 'Core/KnockoutExtentions/BootstrapSwitchExtention';\r\nimport { BootstrapPopoverExtention } from 'Core/KnockoutExtentions/BootstrapPopoverExtention';\r\nimport { ScrollFixerExtention } from 'Core/KnockoutExtentions/ScrollFixerExtention';\r\nimport { CustomTableExtention } from 'Core/KnockoutExtentions/CustomTableExtention';\r\nimport { UniformExtention } from 'Core/KnockoutExtentions/UniformExtention';\r\nimport { SmoothHeightExtention } from 'Core/KnockoutExtentions/SmoothHeightExtention';\r\nimport { KnockoutValidationExtensions } from \"Core/KnockoutExtentions/KnockoutValidationExtensions\";\r\nimport { ScreenHeightExtention } from 'Core/KnockoutExtentions/ScreenHeightExtention';\r\nimport { TabNavigationExtention } from 'Core/KnockoutExtentions/TabNavigationExtention';\r\nimport { AllowBindingsExtention } from 'Core/KnockoutExtentions/AllowBindingsExtention';\r\nimport { Canvas } from 'Core/KnockoutExtentions/Canvas';\r\nimport { BlockElementExtention } from 'Core/KnockoutExtentions/BlockElement';\r\nimport { AutoCompleteExtention } from 'Core/KnockoutExtentions/AutoComplete';\r\nimport { SearchExtention } from 'Core/KnockoutExtentions/SearchExtention';\r\nimport { TextAreAutogrowExtention } from 'Core/KnockoutExtentions/TextAreAutogrowExtention';\r\nimport { DropdownExtention } from 'Core/KnockoutExtentions/DropdownExtention';\r\nimport { AlignDropdown } from 'Core/KnockoutExtentions/AlignDropdown';\r\nimport { BootstrapMultiselect } from 'Core/KnockoutExtentions/BootstrapMultiselect';\r\nimport { BootstrapCollapseExtention } from 'Core/KnockoutExtentions/BootstrapCollapseExtention';\r\nimport { ScrollSynchronizingExtention } from 'Core/KnockoutExtentions/ScrollSynchronizingExtention';\r\nimport { ForEachPropExtention } from 'Core/KnockoutExtentions/ForEachPropExtention';\r\nimport { GroupedCheckboxExtention } from 'Core/KnockoutExtentions/GroupedCheckboxExtention'\r\nimport { MultilineEllipsis } from 'Core/KnockoutExtentions/MultilineEllipsis';\r\nimport { AddCssForAllExtention } from 'Core/KnockoutExtentions/AddCssForAllExtention'\r\nimport { IframeContentExtention } from 'Core/KnockoutExtentions/IframeContentExtention'\r\nimport { HasScrollBarExtention } from 'Core/KnockoutExtentions/HasScrollBarExtention';\r\nimport { FreezeTableExtention } from 'Core/KnockoutExtentions/FreezeTableExtention';\r\nimport { DecimalInputMaskExtension } from \"Core/KnockoutExtentions/InputMask/DecimalInputMask\";\r\nimport { IntegerInputMaskExtension } from \"Core/KnockoutExtentions/InputMask/IntegerInputMask\";\r\nimport { TippyExtention } from \"Core/KnockoutExtentions/TippyExtention\";\r\nimport { ContextMenu } from 'Core/KnockoutExtentions/ContextMenu';\r\nimport { PrismExtension } from \"../../AdminDashboard/KnockoutExtensions/PrismExtension\";\r\nimport { JsBarcodeExtension } from \"Core/KnockoutExtentions/JsBarcodeExtension\";\r\n\r\n\r\nexport class KnockoutExtenions {\r\n\tstatic Init() {\r\n\t\tDragulaExtention.Init();\r\n\t\tDropzoneExtenion.Init();\r\n\t\tFullCalendarExtention.Init();\r\n\t\tInputMaskExtention.Init();\r\n\t\tIntegerInputMaskExtension.Init();\r\n\t\tDecimalInputMaskExtension.Init();\r\n\t\tIntlTelInputExtention.Init();\r\n\t\tDebugExtention.Init();\r\n\t\tViewerJsExtention.Init();\r\n\t\tDirtyFlagExtention.Init();\r\n\t\tRenderTemplateXExtention.Init();\r\n\t\tSubformResizeExtention.Init();\r\n\t\tPreventBubbleExtention.Init();\r\n\t\tNiceScrollExtention.Init();\r\n\t\tSlimScrollExtention.Init();\r\n\t\tResizableExtention.Init();\r\n\t\tCustomScrollbarExtention.Init();\r\n\t\tToggleExtention.Init();\r\n\t\tDatetimepickerExtention.Init();\r\n\t\tEnterKeyExtention.Init();\r\n\t\tEscKeyExtension.Init();\r\n\t\tKnobExtention.Init();\r\n\t\tCropperExtention.Init();\r\n\t\tEnableAttrExtention.Init();\r\n\t\tAnimateExtention.Init();\r\n\t\tTinymceExtention.Init();\r\n\t\tMiniColorsExtention.Init();\r\n\t\tOptionExtention.Init();\r\n\t\tTooltipExtention.Init();\r\n\t\tEllipsisTooltipExtention.Init();\r\n\t\tBootstrapSwitchExtention.Init();\r\n\t\tBootstrapPopoverExtention.Init();\r\n\t\tScrollFixerExtention.Init();\r\n\t\tCustomTableExtention.Init();\r\n\t\tUniformExtention.Init();\r\n\t\tSmoothHeightExtention.Init();\r\n\t\tKnockoutValidationExtensions.Init();\r\n\t\tScreenHeightExtention.Init();\r\n\t\tTabNavigationExtention.Init();\r\n\t\tAllowBindingsExtention.Init();\r\n\t\tCanvas.Init();\r\n\t\tBlockElementExtention.Init();\r\n\t\tAutoCompleteExtention.Init();\r\n\t\tSearchExtention.Init();\r\n\t\tTextAreAutogrowExtention.Init();\r\n\t\tDropdownExtention.Init();\r\n\t\tAlignDropdown.Init();\r\n\t\tBootstrapMultiselect.Init();\r\n\t\tBootstrapCollapseExtention.Init();\r\n\t\tScrollSynchronizingExtention.Init();\r\n\t\tForEachPropExtention.Init();\r\n\t\tGroupedCheckboxExtention.Init();\r\n\t\tMultilineEllipsis.Init();\r\n\t\tAddCssForAllExtention.Init();\r\n\t\tIframeContentExtention.Init();\r\n\t\tHasScrollBarExtention.Init();\r\n\t\tFreezeTableExtention.Init();\r\n\t\tTippyExtention.Init();\r\n\t\tContextMenu.Init();\r\n\t\tPrismExtension.Init();\r\n\t\tJsBarcodeExtension.Init();\r\n\r\n\t\tko.bindingProvider.instance = new ErrorHandlingBindingProvider();\r\n\r\n\t\t//JQuery draggable\r\n\t\tko.bindingHandlers.draggable = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).draggable(options);\r\n\t\t\t\t$(element).disableSelection();\r\n\t\t\t\tif (options.topPosition) {\r\n\t\t\t\t\t$(element).css('top', options.topPosition());\r\n\t\t\t\t}\r\n\t\t\t\tif (options.leftPosition) {\r\n\t\t\t\t\t$(element).css('left', options.leftPosition());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tupdate(element, valueAccessor) {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\tif (options.enabled) {\r\n\t\t\t\t\t$(element).draggable(options.enabled() ? \"enable\" : \"disable\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//JQuery droppable\r\n\t\tko.bindingHandlers.droppable = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).droppable(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class ForEachPropExtention{\r\n static Init() {\r\n ko.bindingHandlers.foreachprop = {\r\n transformObject: function (obj) {\r\n var properties = [];\r\n ko.utils.objectForEach(obj, function (key, value) {\r\n properties.push({ key: key, value: value });\r\n });\r\n return properties;\r\n },\r\n init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {\r\n var properties = ko.pureComputed(function () {\r\n var obj = ko.utils.unwrapObservable(valueAccessor());\r\n return ko.bindingHandlers.foreachprop.transformObject(obj);\r\n });\r\n ko.applyBindingsToNode(element, { foreach: properties }, bindingContext);\r\n return { controlsDescendantBindings: true };\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'freeze-table-private';\r\n\r\nexport class FreezeTableExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.freezeTable = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\t($(element) as any).freezeTable(ko.unwrap(valueAccessor()));\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport 'jquery';\r\nimport 'fullcalendar';\r\nimport 'fullcalendar-scheduler';\r\nimport 'libs/FullCalendar/locale-all';\r\n\r\nexport class FullCalendarExtention {\r\n\r\n static Init() {\r\n ko.bindingHandlers.fullCalendar = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n let ctrlIsPressed = false;\r\n const $element = $(element);\r\n const options = valueAccessor();\r\n\r\n function setEventsCopyable(isCopyable) {\r\n ctrlIsPressed = !ctrlIsPressed;\r\n $(\".fc-appointment\").draggable().draggable(\"option\", \"disabled\", !isCopyable);\r\n }\r\n\r\n if (options.options) {\r\n const eventAfterAllRender = function (view) {\r\n $(\".fc-appointment\").each(function() {\r\n const $event = $(this);\r\n const event = $event.data(\"fcSeg\").footprint.eventDef;\r\n $event.data(\"eventObj\", event);\r\n $event.draggable({\r\n disabled: true,\r\n helper: \"clone\",\r\n revert: true,\r\n revertDuration: 0,\r\n zIndex: 9999,\r\n start: (event, ui) => {\r\n $(ui.helper).css({ height: $(this).height(), width: $(this).width(), opacity: 0.7});\r\n },\r\n stop(event, ui) {\r\n if (ctrlIsPressed) {\r\n setEventsCopyable(true);\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n $(document).on('keydown.fullCalendar', function(e) {\r\n if (e.ctrlKey && !ctrlIsPressed) {\r\n setEventsCopyable(true);\r\n }\r\n });\r\n\r\n $(document).on('keyup.fullCalendar',function(e) {\r\n if (ctrlIsPressed) {\r\n setEventsCopyable(false);\r\n }\r\n });\r\n\r\n if (options.options.eventAfterAllRender) {\r\n options.options.eventAfterAllRender = function (view) {\r\n options.options.eventAfterAllRender(view);\r\n eventAfterAllRender(view);\r\n }\r\n } else {\r\n options.options.eventAfterAllRender = eventAfterAllRender;\r\n }\r\n\r\n $element.fullCalendar(options.options);\r\n $element.on(\"remove\", () => {\r\n $(document).off('keydown.fullCalendar');\r\n $(document).off('keyup.fullCalendar');\r\n })\r\n\r\n if (ko.isObservable(options.groupByResource)) {\r\n options.groupByResource.subscribe(newValue => {\r\n $(element).fullCalendar('option', 'groupByResource', newValue);\r\n $(element).fullCalendar('rerenderEvents');\r\n $(element).fullCalendar('getCalendar') && $(element).fullCalendar('getCalendar').updateViewSize(true);\r\n // ($(element) as any).fullCalendar('updateSize');\r\n });\r\n }\r\n\r\n if (ko.isObservable(options.resources)) {\r\n options.resources.subscribe(newResources => {\r\n $(element).fullCalendar('getCalendar') && $(element).fullCalendar('getCalendar').updateViewSize(true);\r\n // $(element).fullCalendar('refetchResources');\r\n // $(element).fullCalendar('option', 'resources', newResources);\r\n // $(element).fullCalendar('rerenderEvents');\r\n });\r\n }\r\n }\r\n },\r\n\r\n update: (element, valueAccessor) => {\r\n const $element = $(element);\r\n const options = valueAccessor();\r\n\r\n const resources = options.resources && options.resources() || [];\r\n const specialDays = options.specialDays && options.specialDays() || [];\r\n const freeDays = resources.filter(resource => resource.freeDay).map(resource => {\r\n return {\r\n resourceId: resource.id,\r\n rendering: 'background',\r\n backgroundColor: 'red',\r\n start: resource.start,\r\n end: resource.end\r\n }\r\n });\r\n\r\n const events = (options.events && options.events() || []).concat(specialDays).concat(freeDays);\r\n\r\n $element.fullCalendar('removeEvents', null);\r\n $element.fullCalendar('addEventSource', events);\r\n $element.fullCalendar('refetchResources');\r\n $element.fullCalendar('option', 'businessHours', options.businessHours());\r\n $element.fullCalendar('addEventSource', options.specialDays());\r\n\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\n\r\nexport class GroupedCheckboxExtention {\r\n static Init() {\r\n ko.bindingHandlers.groupedCheckbox = {\r\n init: (element) => {\r\n const $group = $(element);\r\n\r\n const updateGroupState = ($nestedCheckbox: JQuery) => {\r\n const groupId = $nestedCheckbox.attr('data-option');\r\n const $group = $('#' + groupId);\r\n const $nestedCheckboxes = $('[data-option=\"' + groupId + '\"]');\r\n\r\n const allCheckboxesChecked = $nestedCheckboxes.filter(':checked').length === $nestedCheckboxes.length;\r\n $group.prop('checked', allCheckboxesChecked);\r\n\r\n const anyCheckboxChecked = $nestedCheckboxes.filter(':checked:first').length > 0;\r\n $group.prop({indeterminate: !allCheckboxesChecked && anyCheckboxChecked});\r\n };\r\n\r\n const updateOtherCheckboxes = ($nestedCheckbox: JQuery) => {\r\n const checkboxId = $nestedCheckbox.attr('checkbox-id');\r\n const checkboxType = $nestedCheckbox.attr('data-type');\r\n const checkboxChecked = $nestedCheckbox.is(':checked');\r\n\r\n const $otherCheckboxes = $('[checkbox-id=\"' + checkboxId + '\"][data-type=\"'+checkboxType+'\"]');\r\n $otherCheckboxes.prop('checked', checkboxChecked);\r\n\r\n $otherCheckboxes.each((index, otherCheckbox) => updateGroupState($(otherCheckbox)));\r\n };\r\n\r\n $(() => {\r\n const $nestedCheckboxes = $('[data-option=\"' + $group.attr('id') + '\"]');\r\n const $nestedCheckboxesChecked = $nestedCheckboxes.filter(':checked');\r\n\r\n if ($nestedCheckboxesChecked.length && ($nestedCheckboxesChecked.length < $nestedCheckboxes.length)) {\r\n $group.prop({indeterminate: true});\r\n }\r\n\r\n $group.change(() => {\r\n const groupChecked = $group.is(':checked');\r\n $nestedCheckboxes.prop('checked', groupChecked);\r\n $nestedCheckboxes.each((index, nestedCheckbox) => updateOtherCheckboxes($(nestedCheckbox)));\r\n });\r\n\r\n $nestedCheckboxes.change(event => {\r\n const $checkbox = $(event.target);\r\n updateGroupState($checkbox);\r\n updateOtherCheckboxes($checkbox);\r\n });\r\n });\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\n\r\ninterface IHasScrollBarExtention {\r\n addClass: string,\r\n position: string,\r\n isReady: boolean,\r\n checkElement: string\r\n}\r\n\r\nexport class HasScrollBarExtention {\r\n static Init() {\r\n ko.bindingHandlers.hasScrollBar = {\r\n update: (element: HTMLElement, valueAccessor) => {\r\n const options: IHasScrollBarExtention = valueAccessor();\r\n const $element = $(element);\r\n const isReady = ko.unwrap(options.isReady);\r\n const $checkElement = $element.find(options.checkElement);\r\n if (isReady) {\r\n if (options.position === 'vertical') {\r\n if ($checkElement.get(0).scrollHeight > $checkElement.height()) {\r\n $element.addClass(options.addClass);\r\n }\r\n } else if (options.position === 'horizontal') {\r\n if ($checkElement.get(0).scrollWidth > $checkElement.width()) {\r\n $element.addClass(options.addClass);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as $ from 'jquery';\r\n\r\nexport class IframeContentExtention {\r\n static Init() {\r\n ko.bindingHandlers.iframeContent = {\r\n update: function (element, valueAccessor) {\r\n let value = ko.unwrap(valueAccessor());\r\n\r\n setTimeout(function () {\r\n const doc = ($(element)[0] as any).contentWindow.document;\r\n const $body = $('body', doc);\r\n $body.html(value);\r\n }, 0);\r\n }\r\n };\r\n }\r\n}","import * as ko from 'knockout';\r\nimport 'jqueryInputmask';\r\nimport 'inputmaskExtensions';\r\nimport 'inputmaskRegEx';\r\nimport 'inputmaskNumeric';\r\nimport 'jqueryInputmask';\r\nimport * as moment from 'moment';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {FormatConverter} from 'FormatEditor/FormatConverter';\r\nimport {AdditionalAliases} from 'Core/KnockoutExtentions/InputMask/AdditionalAliases';\r\n\r\nInputmask.extendAliases(AdditionalAliases);\r\n\r\nexport class MaskFormater {\r\n\tpublic static Format(el: HTMLElement, fieldModel: AttachedFieldModel, value: any, fieldType?: string, fieldNumExceptNegative?: boolean, fieldSize?: number) {\r\n\t\tconst defaultValue = value;\r\n\r\n\t\tif (value == null) {\r\n\t\t\tvalue = '';\r\n\t\t}\r\n\r\n\t\tlet formatName;\r\n\t\tlet size = 2;\r\n\t\tif(fieldSize){\r\n\t\t\tsize = fieldSize;\r\n\t\t}\r\n\t\tif (defaultValue) {\r\n\t\t\t$(el).val(value);\r\n\t\t}\r\n\r\n\t\tif (fieldModel) {\r\n\t\t\tformatName = fieldModel.FormatName;\r\n\t\t\tif (fieldModel.FieldTypeName === FIELD_TYPES.Decimal && fieldModel.FormatName === 'None') {\r\n\t\t\t\tformatName = FieldFormat.DECIMAL;\r\n\t\t\t}\r\n\r\n\t\t\tif (fieldModel.FieldTypeName === FIELD_TYPES.Currency) {\r\n\t\t\t\tformatName = FieldFormat.CURRENCY;\r\n\t\t\t}\r\n\t\t\tsize = fieldModel.Size;\r\n\t\t} else if (fieldType) {\r\n\t\t\tformatName = fieldType;\r\n\t\t}\r\n\r\n\t\tconst decimalSeparator = FormatConverter.GetSeparator();\r\n\t\tconst groupSeparator = FormatConverter.GetGroupSeparator();\r\n\r\n\t\tconst decimalInputMask = {\r\n\t\t\tradixPoint: decimalSeparator,\r\n\t\t\tdigits: size,\r\n\t\t\tintegerDigits: 29 - size,\r\n\t\t\tautoGroup: true,\r\n\t\t\tgroupSeparator,\r\n\t\t\tautoUnmask: true,\r\n\t\t\trightAlign: false\r\n\t\t};\r\n\r\n\t\t(moment as any).createFromInputFallback = config => config._d = new Date(config._i);\r\n\r\n\t\tif (FieldFormat.IsUppercase(formatName)) {\r\n\t\t\tvalue = value.toUpperCase();\r\n\t\t\t$(el).css('text-transform', 'uppercase');\r\n\t\t} else if (FieldFormat.IsLowercase(formatName)) {\r\n\t\t\tvalue = value.toLowerCase();\r\n\t\t\t$(el).css('text-transform', 'lowercase');\r\n\t\t} else if (FieldFormat.IsStartswithcapital(formatName)) {\r\n\t\t\tvalue = value.charAt(0).toUpperCase() + value.substr(1);\r\n\t\t}\r\n\r\n\t\telse if (FieldFormat.IsShortDate(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('YYYY-MM-DD');\r\n\t\t} else if (FieldFormat.IsLongDate(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('dddd, YYYY-MM-DD HH:mm');\r\n\t\t} else if (FieldFormat.IsLongTime(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('HH:mm:ss');\r\n\t\t} else if (FieldFormat.IsTime(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('HH:mm');\r\n\t\t} else if (FieldFormat.IsDateTime(formatName)) {\r\n\t\t\tlet time = value ? moment(value) : moment();\r\n\t\t\tvalue = time.format('YYYY-MM-DD HH:mm');\r\n\t\t}\r\n\r\n\t\telse if (FieldFormat.IsCurrency(formatName)) {\r\n\t\t\tif (el.dataset.withNumberGroupSeparators === 'true') {\r\n\t\t\t\t$(el).inputmask('patchedDecimal', decimalInputMask);\r\n\t\t\t} else {\r\n\t\t\t\t$(el).inputmask('Regex', {\r\n\t\t\t\t\tregex: '-?[0-9]{0,' + (29 - size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + size + '}'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (FieldFormat.IsPercentage(formatName)) {\r\n\t\t\tif (el.dataset.withNumberGroupSeparators === 'true') {\r\n\t\t\t\t$(el).inputmask('patchedDecimal', { ...decimalInputMask, digits: Math.max(size - 2, 0) });\r\n\t\t\t} else if (size > 2) {\r\n\t\t\t\t$(el).inputmask('Regex', {regex: '-?[0-9]{0,' + (29 - size + 2) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + (size - 2) + '}'});\r\n\t\t\t} else {\r\n\t\t\t\t$(el).inputmask('Regex', {regex: '-?[0-9]{0,' + 29 + '}$'});\r\n\t\t\t}\r\n\t\t} else if (FieldFormat.IsDecimal(formatName)) {\r\n\t\t\tif (el.dataset.withNumberGroupSeparators === 'true') {\r\n\t\t\t\t$(el).inputmask('patchedDecimal', decimalInputMask);\r\n\t\t\t} else {\r\n\t\t\t\t$(el).inputmask('Regex', {\r\n\t\t\t\t\tregex: '-?[0-9]{0,' + (29 - size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + size + '}'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if ((fieldModel && fieldModel.FieldTypeName === FIELD_TYPES.Integer) || FieldFormat.IsInteger(formatName)) {\r\n\t\t\ttry {\r\n if (el.dataset.withNumberGroupSeparators === 'true') {\r\n $(el).inputmask('integer', {\r\n integerDigits: 10,\r\n autoGroup: true,\r\n groupSeparator,\r\n autoUnmask: true,\r\n rightAlign: false\r\n });\r\n } else if (fieldNumExceptNegative) {\r\n $(el).inputmask('Regex', {regex: '^[0-9]+$'});\r\n } else {\r\n $(el).inputmask('Regex', {regex: '^-?[0-9]+$'});\r\n }\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\telse if (FieldFormat.IsIPAddress(formatName)) {\r\n\t\t\tMaskFormater.IpAddress(el);\r\n\t\t} else if (FieldFormat.IsPhonenumber(formatName)) {\r\n\t\t\t$(el).inputmask('+9{1,10}(9{1,10}) 9-999 99 999', {numericInput: false});\r\n\t\t} else if (FieldFormat.IsMail(formatName)) {\r\n\t\t\t$(el).inputmask({\r\n mask: '*{1,64}@[*{1,254}.*{2,254}[.*{1,2}]]*{4,254}',\r\n greedy: false,\r\n onBeforePaste: (pastedValue, option) => {\r\n pastedValue = pastedValue.toLowerCase();\r\n\r\n return pastedValue.replace('mailto:', '');\r\n },\r\n definitions: {\r\n '*': {\r\n validator: \"[0-9A-Za-z!#$\\.%&'*+/=?^_`{|}~\\-]\",\r\n cardinality: 1,\r\n casing: \"lower\"\r\n }\r\n }\r\n });\r\n\t\t} else if (FieldFormat.IsDutchPostalCode(formatName)) {\r\n\t\t\t$(el).inputmask({\r\n\t\t\t\tmask: '9{4} a{2}',\r\n\t\t\t\tgreedy: false,\r\n\t\t\t\tdefinitions: {\r\n\t\t\t\t\t'9': {\r\n\t\t\t\t\t\tvalidator: \"[0-9]\",\r\n\t\t\t\t\t\tcardinality: 1,\r\n\t\t\t\t\t\tcasing: \"lower\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t'a': {\r\n\t\t\t\t\t\tvalidator: \"[A-Za-z]\",\r\n\t\t\t\t\t\tcardinality: 1,\r\n\t\t\t\t\t\tcasing: \"upper\"\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate static IpAddress(el: HTMLElement) {\r\n\t\t$(el).inputmask({\r\n\t\t\talias: 'ip',\r\n\t\t\t'placeholder': '_'\r\n\t\t});\r\n\r\n\t\tfunction validateIPAddress(inputID) {\r\n\t\t\t$(inputID).on('focusout', function () {\r\n\t\t\t\tconst $this = $(this);\r\n\t\t\t\tconst entered_ip = $this.val().toString();\r\n\r\n\t\t\t\tif (entered_ip) {\r\n\t\t\t\t\tconst ip_fields_array = entered_ip.split('.');\r\n\t\t\t\t\tconst formatted_ip = entered_ip.replace(/_/g, '');\r\n\t\t\t\t\tconst ip_error = document.createElement('span');\r\n\r\n\t\t\t\t\tip_error.setAttribute('id', 'ip_error');\r\n\r\n\t\t\t\t\tconst error_message = document.createTextNode(formatted_ip + ' is an incorrect IPv4 address');\r\n\r\n\t\t\t\t\tip_error.appendChild(error_message);\r\n\r\n\t\t\t\t\tconst ip_correct = document.createElement('span');\r\n\r\n\t\t\t\t\tip_correct.setAttribute('id', 'ip_success');\r\n\r\n\t\t\t\t\tconst success_message = document.createTextNode(formatted_ip + ' is a correct IPv4 address');\r\n\r\n\t\t\t\t\tip_correct.appendChild(success_message);\r\n\r\n\t\t\t\t\tconst array_length = ip_fields_array.length;\r\n\t\t\t\t\tconst regex = /^0([0-9])+/;\r\n\r\n\t\t\t\t\tfor (let i = 0; i < array_length; i++) {\r\n\t\t\t\t\t\tconst ip_field = ip_fields_array[i];\r\n\t\t\t\t\t\tconst regex_result = regex.test(ip_field.replace(/_/g, ''));\r\n\r\n\t\t\t\t\t\tif (ip_field == '___' || regex_result) {\r\n\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t.siblings('#ip_success')\r\n\t\t\t\t\t\t\t\t.remove();\r\n\r\n\t\t\t\t\t\t\tif (!$this.siblings('#ip_error').length) {\r\n\t\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t\t\t\t.append(ip_error);\r\n\r\n\t\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t\t.removeClass('has-success')\r\n\t\t\t\t\t\t\t\t\t.addClass('has-error');\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t} else if (!$this.siblings('#ip_success').length) {\r\n\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t.parent()\r\n\t\t\t\t\t\t\t\t.append(ip_correct);\r\n\r\n\t\t\t\t\t\t\t$this\r\n\t\t\t\t\t\t\t\t.removeClass('has-error')\r\n\t\t\t\t\t\t\t\t.addClass('has-success');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t$(inputID).on('focus', function () {\r\n\t\t\t\t$(this)\r\n\t\t\t\t\t.siblings('#ip_success, #ip_error')\r\n\t\t\t\t\t.remove();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tvalidateIPAddress(el);\r\n\t}\r\n}\r\n\r\nexport class InputMaskExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.inputMask = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tconst options = valueAccessor();\r\n\t\t\t\tif (options.fieldModel) {\r\n\t\t\t\t const fieldModel = options.fieldModel as AttachedFieldModel;\r\n\t\t\t\t MaskFormater.Format(element, fieldModel, options.value());\r\n\t\t\t\t} else if (options.numExceptNegative) {\r\n\t\t\t\t\tMaskFormater.Format(element, null, options.value(), options.type, options.numExceptNegative);\r\n } else if(options.decimalSize){\r\n\t\t\t\t\tconst value = options.value instanceof Function ? options.value() : options.value;\r\n\t\t\t\t\tMaskFormater.Format(element, null, value, options.type, null, options.decimalSize);\r\n\t\t\t\t} else if (options.type) {\r\n\t\t\t\t\tMaskFormater.Format(element, null, options.value(), options.type);\r\n }\r\n\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","function isZero(stringifiedNumber: string) {\r\n const [integerPart, decimalPart] = stringifiedNumber.replace('-', '').split('.');\r\n\r\n return [...integerPart].every(digit => digit === '0') && (!decimalPart || [...decimalPart].every(digit => digit === '0'));\r\n}\r\n\r\n// Based on onBeforeWrite function from inputmask.numeric.extensions.js\r\n// Taken off additional conversions from string to number and from number to string which don't work well on large numbers\r\nexport const AdditionalAliases = {\r\n 'patchedDecimal': {\r\n alias: 'decimal',\r\n onBeforeWrite: function (e, buffer, caretPos, opts) {\r\n var rslt;\r\n if (e && (e.type === \"blur\" || e.type === \"checkval\" || e.type === \"keydown\")) {\r\n var maskedValue = opts.numericInput ? buffer.slice().reverse().join(\"\") : buffer.join(\"\"),\r\n processValue = maskedValue.replace(opts.prefix, \"\");\r\n processValue = processValue.replace(opts.suffix, \"\");\r\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.groupSeparator), \"g\"), \"\");\r\n if (opts.radixPoint === \",\") processValue = processValue.replace(opts.radixPoint, \".\");\r\n //handle negation symbol\r\n var isNegative = processValue.match(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"));\r\n isNegative = isNegative !== null && isNegative.length === 1;\r\n processValue = processValue.replace(new RegExp(\"[-\" + Inputmask.escapeRegex(opts.negationSymbol.front) + \"]\", \"g\"), \"\");\r\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.negationSymbol.back) + \"$\"), \"\");\r\n //strip placeholder at the end\r\n if (isNaN(opts.placeholder)) {\r\n processValue = processValue.replace(new RegExp(Inputmask.escapeRegex(opts.placeholder), \"g\"), \"\");\r\n }\r\n processValue = processValue === opts.negationSymbol.front ? processValue + \"0\" : processValue;\r\n\r\n if (processValue !== \"\" && isFinite(processValue)) {\r\n var absoluteProcessValue = processValue;\r\n var signedProcessValue = isNegative ? `-${processValue}` : processValue;\r\n if (opts.min !== null && isFinite(opts.min) && parseFloat(signedProcessValue) < parseFloat(opts.min)) {\r\n absoluteProcessValue = opts.min.replace('-', '');\r\n isNegative = opts.min < 0;\r\n maskedValue = undefined;\r\n } else if (opts.max !== null && isFinite(opts.max) && parseFloat(signedProcessValue) > parseFloat(opts.max)) {\r\n absoluteProcessValue = opts.max.replace('-', '');\r\n isNegative = opts.max < 0;\r\n maskedValue = undefined;\r\n }\r\n\r\n processValue = absoluteProcessValue.replace(\".\", opts.radixPoint).split('');\r\n if (isFinite(opts.digits)) {\r\n var radixPosition = $.inArray(opts.radixPoint, processValue);\r\n var rpb = $.inArray(opts.radixPoint, maskedValue);\r\n if (radixPosition === -1) {\r\n processValue.push(opts.radixPoint);\r\n radixPosition = processValue.length - 1;\r\n }\r\n for (var i = 1; i <= opts.digits; i++) {\r\n if (!opts.digitsOptional && (processValue[radixPosition + i] === undefined || processValue[radixPosition + i] === opts.placeholder.charAt(0))) {\r\n processValue[radixPosition + i] = \"0\";\r\n } else if (rpb !== -1 && maskedValue[rpb + i] !== undefined) {\r\n processValue[radixPosition + i] = processValue[radixPosition + i] || maskedValue[rpb + i];\r\n }\r\n }\r\n\r\n if (processValue[processValue.length - 1] === opts.radixPoint) {\r\n delete processValue[processValue.length - 1];\r\n }\r\n }\r\n\r\n if (isNegative && (!isZero(absoluteProcessValue) || e.type !== \"blur\")) {\r\n processValue.unshift(opts.negationSymbol.front);\r\n processValue.push(opts.negationSymbol.back);\r\n }\r\n processValue = (opts.prefix + processValue.join(\"\")).split(\"\");\r\n if (opts.numericInput) processValue = processValue.reverse();\r\n rslt = opts.postFormat(processValue, opts.numericInput ? caretPos : caretPos - 1, opts);\r\n if (rslt.buffer) rslt.refreshFromBuffer = rslt.buffer.join(\"\") !== buffer.join(\"\");\r\n return rslt;\r\n }\r\n }\r\n if (opts.autoGroup) {\r\n rslt = opts.postFormat(buffer, opts.numericInput ? caretPos : caretPos - 1, opts);\r\n rslt.caret = caretPos <= opts.prefix.length ? rslt.pos : rslt.pos + 1;\r\n return rslt;\r\n }\r\n }\r\n }\r\n};\r\n","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport 'jqueryInputmask';\r\nimport 'inputmaskExtensions';\r\nimport 'inputmaskRegEx';\r\n\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\n\r\ninterface IDecimalInputMaskOptions {\r\n CanBeNegative: boolean;\r\n CanBeZero: boolean;\r\n Size: number;\r\n}\r\n\r\nexport class DecimalInputMaskExtension {\r\n static Init() {\r\n ko.bindingHandlers.decimalInputMask = {\r\n init: (element, valueAccessor: KnockoutObservable<IDecimalInputMaskOptions>) => {\r\n const options = this.ExtendOptions(valueAccessor());\r\n\r\n const decimalSeparator = this.GetSeparator();\r\n if (options.CanBeNegative && options.Size !== 0){\r\n $(element).inputmask('Regex', {regex: '-?[0-9]{0,' + (29 - options.Size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + options.Size + '}'});\r\n } else if (options.CanBeNegative && options.Size === 0) {\r\n $(element).inputmask('Regex', {regex: '-?[0-9]{0,' + (29 - options.Size) + '}'});\r\n } else if (!options.CanBeNegative && options.Size !== 0) {\r\n $(element).inputmask('Regex', {regex: '[0-9]{0,' + (29 - options.Size) + '}[' + decimalSeparator + ']{1}[0-9]{0,' + options.Size + '}'});\r\n } else {\r\n $(element).inputmask('Regex', {regex: '[0-9]{0,' + (29 - options.Size) + '}'});\r\n }\r\n }\r\n }\r\n }\r\n\r\n private static ExtendOptions(options: IDecimalInputMaskOptions): IDecimalInputMaskOptions {\r\n return {\r\n CanBeNegative: options.CanBeNegative !== undefined ? options.CanBeNegative : true,\r\n CanBeZero: options.CanBeZero !== undefined ? options.CanBeZero : true,\r\n Size: options.Size\r\n };\r\n }\r\n\r\n private static GetSeparator(): string {\r\n const culture = FormatConverter.GetLocale();\r\n const n = 1.1;\r\n return n.toLocaleString(culture).substring(1, 2);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\n\r\nimport 'jqueryInputmask';\r\nimport 'inputmaskNumeric';\r\n\r\nexport class IntegerInputMaskExtension {\r\n static Init() {\r\n ko.bindingHandlers.integerInputMask = {\r\n init: (element, valueAccessor: KnockoutObservable<object>) => {\r\n $(element).inputmask('integer', valueAccessor());\r\n }\r\n }\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport 'intl-tel-input';\r\nimport 'intl-tel-input-utils';\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nexport class IntlTelInputExtention {\r\n static Init() {\r\n ko.bindingHandlers.intlTelInput = {\r\n init: (element, valueAccessor) => {\r\n const params = valueAccessor();\r\n const options = params.options;\r\n const isModal: boolean = !!options.isModal;\r\n const isDropdownContainer: boolean = !!options.dropdownContainer;\r\n const screen = options.screen;\r\n\r\n const iti = window.intlTelInput(element, options);\r\n const country = iti.getSelectedCountryData();\r\n\r\n if (country) {\r\n if (params.listener) {\r\n params.listener(iti.getSelectedCountryData(), false);\r\n }\r\n }\r\n\r\n $(element).on('countrychange', () => {\r\n $(element).val('');\r\n\r\n params.listener(iti.getSelectedCountryData(), true);\r\n });\r\n\r\n if (isModal && isDropdownContainer){\r\n $(iti.dropdown).css('zIndex', ZIndexManager.Instance.NextValue);\r\n\r\n $(screen._modal._wrapper).parents('.jBox-content').on('scroll', () => this.OnScroll(iti));\r\n }\r\n }\r\n }\r\n }\r\n\r\n static OnScroll(iti) {\r\n iti._2(); //in the library this is key: \"_closeDropdown\";\r\n //here you can take the developer file: https://cdnjs.com/libraries/intl-tel-input/14.0.6\r\n }\r\n\r\n static IsCountryValid(country: string): boolean {\r\n const allCountries = window.intlTelInputGlobals.getCountryData();\r\n const selectedCountry = _.find(allCountries, item => item.iso2 === country);\r\n return !!selectedCountry;\r\n }\r\n\r\n static GetCodeByIso2(iso2: string): string {\r\n const allCountries = window.intlTelInputGlobals.getCountryData();\r\n const selectedCountry = _.find(allCountries, item => item.iso2 === iso2);\r\n\r\n return selectedCountry ? selectedCountry.dialCode: '31';\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport * as JsBarcode from \"jsbarcode\";\r\n\r\nexport class JsBarcodeExtension {\r\n static Init() {\r\n ko.bindingHandlers.jsBarcode = {\r\n init: (element, valueAccessor) => {\r\n const options = ko.unwrap(valueAccessor()) as IBarcodeConfig;\r\n const otherOptions = options.options;\r\n\r\n JsBarcode(element, options.code, otherOptions);\r\n }\r\n };\r\n }\r\n\r\n static Validate(barcode) {\r\n let isValid = false;\r\n\r\n if (barcode) {\r\n if (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(barcode)) {\r\n isValid = true;\r\n }\r\n }\r\n\r\n return isValid;\r\n }\r\n}\r\n\r\nexport interface IBarcodeConfig {\r\n code: string;\r\n options: any;\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport \"knob\";\r\n\r\nexport class KnobExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.knob = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet value = Math.round(ko.unwrap(options.value));\r\n\t\t\t\tlet minCount = options.min || 0;\r\n\r\n\t\t\t\t$(element).knob({\r\n\t\t\t\t\tmin: minCount,\r\n\t\t\t\t\tmax: ko.unwrap(options.max),\r\n\t\t\t\t\tfgColor: ko.unwrap(options.fgColor),\r\n\t\t\t\t\trelease: newValue => {\r\n\t\t\t\t\t\tif (newValue < minCount) {\r\n\t\t\t\t\t\t\toptions.value(Math.round(minCount));\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\toptions.value(Math.round(newValue));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(element).val(value).trigger('change');\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet max = ko.unwrap(options.max);\r\n\t\t\t\tlet fgColor = ko.unwrap(options.fgColor);\r\n\t\t\t\tif (max || fgColor) {\r\n\t\t\t\t\t$(element).trigger('configure', { max, fgColor });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport 'knockoutValidation';\r\n\r\nexport class KnockoutValidationExtensions {\r\n\tstatic Init() {\r\n\t\tko.validation.rules['areSame'] = {\r\n\t\t\tgetValue: o => typeof o === 'function' ? o() : o,\r\n\t\t\tvalidator: function (val, otherField) {\r\n\t\t\t\treturn val === this.getValue(otherField);\r\n\t\t\t},\r\n\t\t\tmessage: 'The fields must have the same value'\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'minicolors';\r\n\r\nexport class MiniColorsExtention {\r\n static Init() {\r\n ko.bindingHandlers.miniColors = {\r\n init: (element, valueAccessor) => {\r\n let options = valueAccessor();\r\n $(element)\r\n .minicolors({\r\n theme: options.theme,\r\n defaultValue: '',\r\n change: (colorValue: string) => options.changed(colorValue),\r\n changeDelay: 200,\r\n animationEasing: 'swing',\r\n inline: !!options.inline,\r\n position: !!options.position ? options.position : 'bottom left'\r\n });\r\n },\r\n update: (element, valueAccessor) => {\r\n let options = valueAccessor();\r\n if (options.value) {\r\n const value = options.value() || '';\r\n if ($(element).minicolors('value') !== value) {\r\n $(element).minicolors('value', value);\r\n }\r\n } else {\r\n $(element).val('');\r\n $(element).minicolors('destroy');\r\n $(element)\r\n .minicolors({\r\n theme: options.theme,\r\n change: (colorValue: string) => options.changed(colorValue),\r\n changeDelay: 200,\r\n animationEasing: 'swing',\r\n inline: !!options.inline,\r\n position: !!options.position ? options.position : 'bottom left'\r\n });\r\n }\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\n\r\nexport class MultilineEllipsis {\r\n static Init() {\r\n ko.bindingHandlers.truncate = {\r\n update: (element, valueAccessor) => {\r\n var value = valueAccessor();\r\n var $element = $(element);\r\n $element.text(value());\r\n while (element.scrollHeight > element.offsetHeight) {\r\n $element.text(function (index, text) {\r\n return text.replace(/\\W*\\s(\\S)*$/, '...');\r\n });\r\n }\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\nimport 'jqery.nicescroll';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nexport class NiceScrollExtention {\r\n\tstatic Init() {\r\n\t\t//JQuery nicescroll\r\n\t\t//default options: scrollForMobile: false, horizontalScrollWithShift: false\r\n //don't use it with dragula\r\n\r\n\t\tko.bindingHandlers.niceScroll = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\tlet isMobile = MobileChecker.IsMobile();\r\n\t\t\t\tif (!isMobile || options.scrollForMobile) {\r\n\t\t\t\t\tif (options.horizontalScrollWithShift) {\r\n\t\t\t\t\t\telement.addEventListener('wheel', (event: WheelEvent) => {\r\n\t\t\t\t\t\t\tif (!event.shiftKey) {\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tevent.stopImmediatePropagation();\r\n\t\t\t\t\t\t\telement.scrollLeft += event.deltaY;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(element).niceScroll(options);\r\n\r\n\t\t\t\t\tif (options.horizontalCursorClass) {\r\n\t\t\t\t\t\t$(element).getNiceScroll(0).cursorh.addClass(options.horizontalCursorClass);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class OptionExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.option = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar value = ko.utils.unwrapObservable(valueAccessor());\r\n\t\t\t\tko.selectExtensions.writeValue(element, value);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nexport class PreventBubbleExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.preventBubble = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar eventName = ko.utils.unwrapObservable(valueAccessor());\r\n\t\t\t\tvar arr = eventName;\r\n\t\t\t\tif (!eventName.pop) {\r\n\t\t\t\t\tarr = [arr];\r\n\t\t\t\t}\r\n\t\t\t\tfor (var p in arr) {\r\n\t\t\t\t\tko.utils.registerEventHandler(element, arr[p], (event) => {\r\n\t\t\t\t\t\tevent.cancelBubble = true;\r\n\t\t\t\t\t\tif (event.stopPropagation && event.type != 'beforeunload') {\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n};","import * as ko from 'knockout'\r\nimport * as $ from 'jquery'\r\n\r\nexport class RenderTemplateXExtention {\r\n static Init() {\r\n (ko as any).renderTemplateX = (htmlTemplate, data) => {\r\n var temp = document.createElement('DIV');\r\n ko.applyBindingsToNode(temp, {template: {html: htmlTemplate, data: data}});\r\n var html = temp.childNodes;\r\n temp.remove();\r\n return html;\r\n };\r\n\r\n (ko as any).renderTemplateXHtml = (htmlTemplate, data) => {\r\n var temp = document.createElement('DIV');\r\n ko.applyBindingsToNode(temp, {template: {html: htmlTemplate, data: data}});\r\n var result = $(temp).html();\r\n temp.remove();\r\n return result;\r\n }\r\n\r\n (ko as any).renderTemplateXByTemplateName = (templateName, data) => {\r\n const wrapper = document.createElement('div');\r\n wrapper.setAttribute('data-bind', `template: { name: '${templateName}'}`);\r\n\r\n ko.applyBindings(data, wrapper);\r\n return wrapper;\r\n };\r\n }\r\n}","import * as ko from 'knockout';\r\nimport 'jquery';\r\n\r\nexport class ResizableExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.resizable = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\toptions.minWidth = ko.unwrap(options.minWidth);\r\n\t\t\t\toptions.minHeight = ko.unwrap(options.minHeight);\r\n\t\t\t\t$(element).resizable(options);\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\toptions.minWidth = ko.unwrap(options.minWidth);\r\n\t\t\t\toptions.minHeight = ko.unwrap(options.minHeight);\r\n\t\t\t\t$(element).resizable(options);\r\n\t\t\t\t$(element).trigger('resize');\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class ScreenHeightExtention {\r\n\tstatic _preventResize: boolean = false;\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.screenHeight = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tconst ViewBody = $('#viewBody');\r\n\t\t\t\tconst FourthColumn = ViewBody.find('.fourth-column');\r\n\t\t\t\tconst RightColumn = ViewBody.find('.rightColumn');\r\n\r\n\t\t\t\tlet listener;\r\n\t\t\t\tthis.ResizeContainer.call(this, element, ViewBody, FourthColumn, RightColumn);\r\n\t\t\t\tlistener = this.ResizeContainer.bind(this, element, ViewBody, FourthColumn, RightColumn);\r\n\r\n\t\t\t\tconst unbindResize = ResizeService.SubscribeHeight(this.OnResize.bind(this, element, ViewBody, FourthColumn, RightColumn), RightColumn[0]); // subscribe on resize\r\n\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback(RightColumn[0], () => {\r\n\t\t\t\t\tunbindResize();\r\n\t\t\t\t\twindow.removeEventListener(\"resize\", listener, false);\r\n\t\t\t\t});\r\n\t\t\t\twindow.addEventListener('resize', listener, false);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tstatic OnResize = (element, viewBody, fourthColumn, rightColumn) => {\r\n\t\tScreenHeightExtention.ResizeContainer(element, viewBody, fourthColumn, rightColumn);\r\n\t};\r\n\r\n\tstatic ResizeContainer = (element, viewBody, fourthColumn, rightColumn) => {\r\n\t\tlet paddingElement: number = 40;\r\n\t\tlet pageElements: number = 0;\r\n\t\tlet screenHeight = window.innerHeight;\r\n\t\tlet actionBarSubForm = viewBody.find('.actionBarSubForm');\r\n\t\tpageElements = actionBarSubForm.outerHeight(true);\r\n\r\n\t\tlet fixedHeaderHeight: number = 0;\r\n\t\tlet calculate: number = 0;\r\n\r\n\t\tlet fourthColumnHeight = fourthColumn.innerHeight()\r\n\t\tlet rightColumnHeight = rightColumn.innerHeight()\r\n\r\n\t\tif (window.innerWidth > 991) {\r\n\t\t\tconst headerElement: HTMLDivElement = document.querySelector(\"body > .page-header\");\r\n\t\t\tfixedHeaderHeight = headerElement ? headerElement.offsetHeight : 0;\r\n\t\t}\r\n\t\tcalculate = Math.abs(fixedHeaderHeight + pageElements + paddingElement);\r\n\t\tlet expectedHeight = screenHeight - calculate;\r\n\r\n\t\tif ( expectedHeight > 400 ) {\r\n\t\t\t$(element).css({\r\n\t\t\t\t'max-height': (fourthColumnHeight < rightColumnHeight) ? rightColumnHeight : expectedHeight,\r\n\t\t\t\t'position': 'sticky',\r\n\t\t\t\t'top': fixedHeaderHeight + 20\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t$(element).css({\r\n\t\t\t\t'max-height': 540,\r\n\t\t\t\t'position': 'static'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class ScrollFixerExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.scrollFixer = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tlet isChrome = !!window['chrome'] && !!window['chrome'].webstore;\r\n\t\t\t\tlet isIE = /*@cc_on!@*/false || !!document['documentMode'];\r\n\t\t\t\tlet isEdge = !isIE && !!window['StyleMedia'];\r\n\t\t\t\tlet isOpera = (!!window['opr'] && !!window['addons']) || !!window['opera'] || navigator.userAgent.indexOf(' OPR/') >= 0;\r\n\t\t\t\tif (isChrome || isOpera || isEdge) {\r\n\t\t\t\t\t$(element).bind('mousewheel DOMMouseScroll', function (e) {\r\n\t\t\t\t\t\tvar scrollTo = 0;\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\tif (e.type == 'mousewheel') {\r\n\t\t\t\t\t\t\tscrollTo = (e.originalEvent['wheelDelta'] * -1);\r\n\t\t\t\t\t\t} else if (e.type == 'DOMMouseScroll') {\r\n\t\t\t\t\t\t\tscrollTo = 40 * e.originalEvent['detail'];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t$(this).scrollTop(scrollTo + $(this).scrollTop());\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\ninterface IScrollSynchOptions {\r\n topScroll: string;\r\n bottomScroll: string;\r\n}\r\n\r\nexport class ScrollSynchronizingExtention {\r\n static Init() {\r\n ko.bindingHandlers.syncScroll = {\r\n init: (element, valueAccessor: any) => {\r\n\r\n let options: IScrollSynchOptions = {\r\n topScroll: valueAccessor().topScroll,\r\n bottomScroll: valueAccessor().bottomScroll\r\n };\r\n\r\n if (options.topScroll && options.bottomScroll) {\r\n let $topEl = $(element).find(options.topScroll);\r\n let $bottomEl = $(element).find(options.bottomScroll);\r\n\r\n $topEl.scroll(function() {\r\n let length = $(this).scrollLeft();\r\n $bottomEl.scrollLeft(length);\r\n });\r\n\r\n $bottomEl.scroll(function() {\r\n let length = $(this).scrollLeft();\r\n $topEl.scrollLeft(length);\r\n });\r\n }\r\n }\r\n }\r\n\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class SearchExtention {\r\n\tstatic Init() {\r\n\r\n\t\tko.bindingHandlers.searchExtention = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\tvar typingTimer;\r\n\t\t\t\tvar doneTypingInterval = 500;\r\n\t\t\t\tvar $input = $(element);\r\n\t\t\t\tvar backSpace = 8;\r\n\t\t\t\tvar shiftCode = 16;\r\n\t\t\t\tvar regExp = null;\r\n\r\n\t\t\t\tif (options.regexp) {\r\n\t\t\t\t\tregExp = options.regexp;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//on keyup, start the countdown\r\n\t\t\t\t$input.on('keyup', function (evt) {\r\n\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t\tvar inp = String.fromCharCode(evt.keyCode);\r\n\r\n\t\t\t\t\t//need to move part with \"regexp\" somewhere\r\n\t\t\t\t\tif (regExp) {\r\n\t\t\t\t\t\tif (regExp.test(inp) || evt.keyCode == backSpace || evt.keyCode == shiftCode) {\r\n\t\t\t\t\t\t\ttypingTimer = setTimeout(doneTyping, doneTypingInterval);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttypingTimer = setTimeout(doneTyping, doneTypingInterval);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//on keydown, clear the countdown \r\n\t\t\t\t$input.on('keydown', function (evt) {\r\n\t\t\t\t\tclearTimeout(typingTimer);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//user is \"finished typing,\" do something\r\n\t\t\t\tfunction doneTyping() {\r\n\t\t\t\t\tif (options.search) {\r\n\t\t\t\t\t\toptions.search();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\nimport 'jquerySlimscroll';\r\n\r\nexport class SlimScrollExtention {\r\n\tstatic Init() {\r\n\t\t//JQuery slimscroll\r\n\t\tko.bindingHandlers.slimScroll = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\t$(element).slimScroll(options);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class SmoothHeightExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.smoothHeight = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tlet options = valueAccessor();\r\n\t\t\t\t$(element).animate({ height: options.height() }, 300);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class SubformResizeExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.subformResize = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\tvar subForms = $(element).find('.mainSubForm');\r\n\t\t\t\tvar subformFirst = $(subForms.eq(0));\r\n\t\t\t\tvar subformSecond = $(subForms.eq(1));\r\n\t\t\t\tvar subformThird = $(subForms.eq(2));\r\n\t\t\t\tvar subformsParent = $(subForms).find('.row.form-wrapper');\r\n\t\t\t\tvar adaptiveBlockClassName = 'adaptive-block';\r\n\t\t\t\tvar bodyTag = 'body';\r\n\t\t\t\tvar closedMenuClassName = 'page-sidebar-closed';\r\n\r\n\t\t\t\tvar subformFirstHeight = $(subformFirst).height();\r\n\t\t\t\tvar subformSecondHeight = $(subformSecond).height();\r\n\t\t\t\tvar subformThirdHeight = $(subformThird).height();\r\n\r\n\t\t\t\tvar smallerBlock = 0;\r\n\r\n\t\t\t\tif ($(window).width() < 992 && $(window).width() > 768) {\r\n\t\t\t\t\tif (!$(subformThird).hasClass(adaptiveBlockClassName)) {\r\n\t\t\t\t\t\t$(subformThird).addClass(adaptiveBlockClassName);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (subformFirstHeight > subformSecondHeight) {\r\n\t\t\t\t\t\tsmallerBlock = subformSecondHeight;\r\n\t\t\t\t\t\t$(subformThird).css('right', '0');\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsmallerBlock = subformFirstHeight;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(subformsParent).css('min-height', smallerBlock + subformThirdHeight + 30);\r\n\t\t\t\t\t$(subformThird).css('top', smallerBlock + 15);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$(window).on('resize', function () {\r\n\t\t\t\t\tif (($(window).width() < 992 && $(window).width() > 768) || (!$(bodyTag).hasClass(closedMenuClassName) && $(window).width() < 1300 && $(window).width() > 768)) {\r\n\t\t\t\t\t\tif (!$(subformThird).hasClass(adaptiveBlockClassName)) {\r\n\t\t\t\t\t\t\t$(subformThird).addClass(adaptiveBlockClassName);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (subformFirstHeight > subformSecondHeight) {\r\n\t\t\t\t\t\t\tsmallerBlock = subformSecondHeight;\r\n\t\t\t\t\t\t\t$(subformThird).css('right', '0');\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tsmallerBlock = subformFirstHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$(subformsParent).css('min-height', smallerBlock + subformThirdHeight + 30);\r\n\t\t\t\t\t\t$(subformThird).css('top', smallerBlock + 15);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(subformThird).removeClass(adaptiveBlockClassName);\r\n\t\t\t\t\t\t$(subformThird).css({\r\n\t\t\t\t\t\t\t'top': '',\r\n\t\t\t\t\t\t\t'right': ''\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t$(subformsParent).css('min-height', '');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n};","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class TabNavigationExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.tabNavigation = {\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\t$(window).off('keydown');\r\n\t\t\t\tlet arrowTop = 38;\r\n\t\t\t\tlet arrowBottom = 40;\r\n\t\t\t\tlet tabBtn = 9;\r\n\t\t\t\tlet viewBody = document.getElementById('viewBody');\r\n\t\t\t\tvar parentContainer = null;\r\n\t\t\t\tvar closestSearch = null;\r\n\r\n\t\t\t\t$(\"body\").on('keydown', '.tab-key-navigation tr', function (e) {\r\n\t\t\t\t\tif (e.keyCode == arrowBottom) {\r\n\t\t\t\t\t\t$(e.target).next().focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (e.keyCode == arrowTop) {\r\n\t\t\t\t\t\t$(e.target).prev().focus();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$(window).on('keydown', function (e) {\r\n\t\t\t\t\tif (e.keyCode == tabBtn) {\r\n\t\t\t\t\t\t$('.focus-guard').on('focus', function () {\r\n\t\t\t\t\t\t\tparentContainer = null;\r\n\t\t\t\t\t\t\tparentContainer = null;\r\n\t\t\t\t\t\t\tvar firstElement = null;\r\n\t\t\t\t\t\t\tparentContainer = $(this).offsetParent();\r\n\t\t\t\t\t\t\tclosestSearch = $(parentContainer).find('.search-input');\r\n\t\t\t\t\t\t\tif ($(closestSearch).length) {\r\n\t\t\t\t\t\t\t\t$(closestSearch).focus();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tfirstElement = $(parentContainer).find(\"[tabindex='1']\").first();\r\n\t\t\t\t\t\t\t\t$(firstElement).focus();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport 'jquery';\r\nimport 'jqueryAutogrow';\r\n\r\nexport class TextAreAutogrowExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.autogrow = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n\t\t\t\tvar timerId = setInterval(() => {\r\n\t\t\t\t\tif (element.offsetWidth > 0 || element.offsetHeight > 0) {\r\n\t\t\t\t\t\t($(element) as any).autogrow({ vertical: true, horizontal: false });\r\n\t\t\t\t\t\tclearInterval(timerId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 200);\r\n\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n\t\t\t\t\tclearInterval(timerId);\r\n\t\t\t\t\tconst shadowId = $(element).data(\"shadow-id\");\r\n\t\t\t\t\tif (shadowId) {\r\n\t\t\t\t\t\t$(\"#\" + shadowId).remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport 'jquery';\r\nimport 'tinymceTheme';\r\nimport 'tinymceAdvList';\r\nimport 'tinymceAutoLink';\r\nimport 'tinymceLists';\r\nimport 'tinymceLink';\r\nimport 'tinymceImage';\r\nimport 'tinymcePreview';\r\nimport 'tinymceAnchor';\r\nimport 'tinymceCode';\r\nimport 'tinymcePrint';\r\nimport 'tinymceSearchreplace';\r\nimport 'tinymceFullscreen';\r\nimport 'tinymceVisualblocks';\r\nimport 'tinymceCharmap';\r\nimport 'tinymceAutoresize';\r\nimport 'tinymceTable';\r\nimport 'tinymcePaste';\r\nimport 'tinymceMedia';\r\nimport 'tinymceInsertdatetime';\r\nimport 'tinymceNoneditable';\r\nimport 'tinymceIcon';\r\nimport 'tinymceImageTools';\r\nimport 'tinymceHelp';\r\nimport 'tinymcePageBreak';\r\nimport 'tinymceVisualChars';\r\n\r\nimport {UserManager} from 'User/UserManager';\r\nimport {edit} from \"ace-builds\";\r\nimport * as moment from \"moment\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class TinymceExtention {\r\n\tstatic AddProtocol(url: string){\r\n\t\tif (!/^(https?:)?\\/\\//i.test(url)) {\r\n\t\t\treturn 'http://' + url;\r\n\t\t}\r\n\t\treturn url;\r\n\t}\r\n\r\n\tstatic ChangeTimestampFormat(format: string | null): string {\r\n\t\tconst defaultFormatValue = 'DD/MM/YY';\r\n\t\tconst formatType = format || defaultFormatValue;\r\n\r\n\t\tconst isValidMomentFormat: boolean = formatType === defaultFormatValue || moment(moment().format(formatType)).isValid();\r\n\t\tconst date: string = moment(new Date()).format(isValidMomentFormat ? formatType : defaultFormatValue);\r\n\r\n\t\tif (!isValidMomentFormat) {\r\n\t\t\tlet message = NOTIFICATIONS.WRONG_FORMAT_IN_MEMO_TIMESTAMP_FORMAT_GLOBAL\r\n\t\t\t\t.replace('{formatValue}', `<strong class=\"format-value\">${formatType}</strong>`)\r\n\t\t\t\t.replace('{defaultFormatValue}', `<strong class=\"default-format-value\">${defaultFormatValue}</strong>`)\r\n\t\t\tnew Notifier().Warning(message);\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.tinymce = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n\t\t\t\tconst options = valueAccessor();\r\n\t\t\t\tconst scroll = $(window).scrollTop();\r\n\t\t\t\tconst autofocusTarget = options.autofocus ? `${options.guid}` : null;\r\n\r\n\t\t\t\t(tinymce as any).baseURL = `${__webpack_public_path__}tinymce`;\r\n\r\n\t\t\t\tconst tinymceStyles =\r\n\t\t\t\t\t`.mce-content-body {\r\n\t\t\t\t\t\t padding-bottom: 4px !important;\r\n\t\t\t\t\t\t font-size: 13px !important;\r\n\t\t\t\t\t }\r\n\t\t\t\t\t \r\n\t\t\t\t\t .reply-signature-body {\r\n\t\t\t\t\t \tcolor: #666 !important;\r\n\t\t\t\t\t \tfont-style: italic !important;\r\n\t\t\t\t\t }\r\n\t\t\t\t\t `;\r\n\r\n\t\t\t\tconst tinymceOptions: any = {\r\n\t\t\t\t\textended_valid_elements : 'a[next-status|command-type|href|subscription-entity]',\r\n\t\t\t\t\tselector: `#${options.guid}`,\r\n\t\t\t\t\tmin_height: +options.min_height || 200,\r\n\t\t\t\t\theight: +options.height || '100%',\r\n\t\t\t\t\tmax_height: !!+options.max_height ? +options.max_height : '',\r\n\t\t\t\t\tresize: false,\r\n\t\t\t\t\tlink_assume_external_targets: true,\r\n\t\t\t\t\tdocument_base_url: '/',\r\n\t\t\t\t\tcontent_css: [`${__webpack_public_path__}codepen.css`],\r\n\t\t\t\t\tcontent_style: tinymceStyles,\r\n\t\t\t\t\tplugins: ['link image imagetools table'],\r\n\t\t\t\t\tcontextmenu: \"link image imagetools table\",\r\n\t\t\t\t\tquickEdit: options.quickEdit,\r\n\t\t\t\t\tisMailControl: options.isMailControl,\r\n\t\t\t\t\tautoresize: options.autoresize,\r\n\t\t\t\t\tfontsize_formats: \"8pt 10pt 12pt 14pt 18pt 24pt 36pt\",\r\n\t\t\t\t\tremoved_menuitems: 'spellchecker',\r\n\t\t\t\t\tpaste_data_images: true,\r\n\t\t\t\t\tconvert_urls: false,\r\n\t\t\t\t\tremove_script_host: false,\r\n table_responsive_width: false,\r\n table_default_styles: {\r\n collapse: 'collapse',\r\n },\r\n table_default_attributes: {\r\n border: '1',\r\n },\r\n\t\t\t\t\tmobile: {\r\n\t\t\t\t\t\ttheme: 'silver',\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// enable 'autoresize' plugin but only on grid\r\n\t\t\t\tif (tinymceOptions.autoresize && (tinymceOptions.quickEdit || tinymceOptions.isMailControl)) {\r\n\t\t\t\t\ttinymceOptions.plugins.push('autoresize');\r\n\t\t\t\t} else if (tinymceOptions.autoresize){\r\n\t\t\t\t\ttinymceOptions.plugins.push('autoresize');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (options.readOnly) {\r\n\t\t\t\t\tif (!options.quickEdit){\r\n\t\t\t\t\t\ttinymceOptions.min_height = !!+options.height || 100;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttinymceOptions.toolbar = false;\r\n\t\t\t\t\ttinymceOptions.menubar = false;\r\n\t\t\t\t\ttinymceOptions.statusbar = false;\r\n\t\t\t\t\ttinymceOptions.readonly = 1;\r\n\r\n\t\t\t\t\ttinymceOptions.plugins.push(\r\n\t\t\t\t\t\t'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'print', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'paste', 'code', 'help', 'pagebreak', 'searchreplace', 'visualchars'\r\n\t\t\t\t\t);\r\n\r\n\r\n\t\t\t\t\ttinymceOptions.init_instance_callback = (editor) => {\r\n\r\n\t\t\t\t\t\teditor.on('OpenNotification', function (notification) {\r\n if(notification.close && notification.settings && notification.settings.text.includes('blob:outlook-mobile-compose')){\r\n notification.close();\r\n } \r\n });\r\n\r\n\t\t\t\t\t\teditor.show();\r\n\t\t\t\t\t\t$(window).scrollTop(scroll);\r\n\t\t\t\t\t\toptions.afterInit(editor);\r\n\r\n\t\t\t\t\t\t$(editor.getBody()).find('a').click(function (e) {\r\n\t\t\t\t\t\t\tvar url = e.target.getAttribute('href');\r\n\t\t\t\t\t\t\twindow.open(TinymceExtention.AddProtocol(url));\r\n\t\t\t\t\t\t\te.stopPropagation();\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (tinymceOptions.quickEdit) {\r\n\t\t\t\t\ttinymceOptions.toolbar = options.languages ? 'translations' : false;\r\n\t\t\t\t\ttinymceOptions.menubar = false;\r\n\t\t\t\t\ttinymceOptions.statusbar = false;\r\n\t\t\t\t\ttinymceOptions.readonly = 0;\r\n\t\t\t\t\ttinymceOptions.nowrap = false;\r\n\r\n\t\t\t\t\ttinymceOptions.height = '200';\r\n\t\t\t\t\ttinymceOptions.min_height = '200';\r\n\t\t\t\t\ttinymceOptions.max_height = '200';\r\n\r\n\t\t\t\t\ttinymceOptions.plugins.push(\r\n\t\t\t\t\t\t'advlist', 'autolink', 'lists', 'link', 'charmap', 'print', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'paste', 'code', 'help', 'pagebreak', 'searchreplace', 'noneditable', 'visualchars'\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\ttinymceOptions.auto_focus = autofocusTarget;\r\n\r\n\t\t\t\t\ttinymceOptions.init_instance_callback = (editor) => {\r\n\r\n\t\t\t\t\t\teditor.on('OpenNotification', function (notification) {\r\n if(notification.close && notification.settings && notification.settings.text.includes('blob:outlook-mobile-compose')){\r\n notification.close();\r\n } \r\n });\r\n\r\n\t\t\t\t\t\teditor.show();\r\n\t\t\t\t\t\t$(window).scrollTop(scroll);\r\n\t\t\t\t\t\toptions.afterInit(editor);\r\n\r\n\t\t\t\t\t\teditor.on('Change', (e) => {\r\n\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\teditor.on('click', function (e) {\r\n\t\t\t\t\t\t\tif (e.target.nodeName === 'A') {\r\n\t\t\t\t\t\t\t\tvar url = e.target.getAttribute('href');\r\n\t\t\t\t\t\t\t\twindow.open(TinymceExtention.AddProtocol(url));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\ttinymceOptions.setup = (editor) => {\r\n\t\t\t\t\t\teditor.ui.registry.addButton('usertime',\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttitle: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ttooltip: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ticon: 'user',\r\n\r\n\t\t\t\t\t\t\t\tonAction: () => {\r\n\t\t\t\t\t\t\t\t\tconst content = editor.getContent({format: 'html'});\r\n\t\t\t\t\t\t\t\t\tconst userManager = UserManager.Instance;\r\n\r\n\t\t\t\t\t\t\t\t\tconst userNameAndDate =\r\n\t\t\t\t\t\t\t\t\t\t'<p><span style=\"text-decoration: underline;\" data-mce-style=\"text-decoration: underline;\"><strong>' + '<<< ' +\r\n\t\t\t\t\t\t\t\t\t\tuserManager.CurrentUser.Name +\r\n\t\t\t\t\t\t\t\t\t\t', at ' +\r\n\t\t\t\t\t\t\t\t\t\tnew Date().toLocaleString('en-US', options) + ' >>>' +\r\n\t\t\t\t\t\t\t\t\t\t'</strong></span></p>';\r\n\r\n\t\t\t\t\t\t\t\t\teditor.setContent(userNameAndDate + '<br />' + '<span id=\"_cursor\" />' + content);\r\n\t\t\t\t\t\t\t\t\teditor.selection.select(editor.dom.select('#_cursor')[0]);\r\n\t\t\t\t\t\t\t\t\teditor.selection.collapse(0);\r\n\t\t\t\t\t\t\t\t\teditor.dom.remove('_cursor');\r\n\r\n\t\t\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttinymceOptions.nowrap = false;\r\n\t\t\t\t\ttinymceOptions.readonly = 0;\r\n\r\n\t\t\t\t\ttinymceOptions.plugins.push(\r\n\t\t\t\t\t\t'advlist', 'autolink', 'lists', 'link', 'charmap', 'print', 'preview', 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', 'insertdatetime', 'media', 'table', 'paste', 'code', 'help', 'pagebreak' ,'searchreplace', 'noneditable', 'visualchars'\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\ttinymceOptions.toolbar = 'insertfile undo redo | styleselect | bold italic underline | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link | usertime | forecolor backcolor | fontsizeselect | translations';\r\n\r\n\t\t\t\t\ttinymceOptions.auto_focus = autofocusTarget;\r\n\r\n\t\t\t\t\ttinymceOptions.init_instance_callback = (editor) => {\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\teditor.on('OpenNotification', function (notification) {\r\n\t\t\t\t\t\t\tif(notification.close && notification.settings && notification.settings.text.includes('blob:outlook-mobile-compose')){\r\n\t\t\t\t\t\t\t\tnotification.close();\r\n\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t });\r\n\r\n\t\t\t\t\t\teditor.show();\r\n\t\t\t\t\t\t$(window).scrollTop(scroll);\r\n\t\t\t\t\t\toptions.afterInit(editor);\r\n\r\n\t\t\t\t\t\teditor.on('Change', (e) => {\r\n\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\teditor.on('click', function (e) {\r\n\t\t\t\t\t\t\tif (e.target.nodeName === 'A') {\r\n\t\t\t\t\t\t\t\tvar url = e.target.getAttribute('href');\r\n\t\t\t\t\t\t\t\twindow.open(TinymceExtention.AddProtocol(url));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\ttinymceOptions.setup = (editor) => {\r\n\t\t\t\t\t\teditor.ui.registry.addButton('usertime',\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttitle: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ttooltip: 'Add timestamp and user name',\r\n\t\t\t\t\t\t\t\ticon: 'user',\r\n\r\n\t\t\t\t\t\t\t\tonAction: () => {\r\n\t\t\t\t\t\t\t\t\tconst content = editor.getContent({format: 'html'});\r\n\t\t\t\t\t\t\t\t\tconst userManager = UserManager.Instance;\r\n\t\t\t\t\t\t\t\t\tconst userName = userManager.CurrentUser.Name;\r\n\r\n\t\t\t\t\t\t\t\t\tconst userNameAndDate = `\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p><span style=\"text-decoration: underline;\" data-mce-style=\"text-decoration: underline;\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<strong>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<<< ${userName}, at ${TinymceExtention.ChangeTimestampFormat(GlobalManager.Instance.GetGlobal(GLOBALS.MEMO_TIMESTAMP_FORMAT))} >>>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</strong>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span></p>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t`;\r\n\r\n\t\t\t\t\t\t\t\t\teditor.setContent(`${userNameAndDate}<br /><span id=\"_cursor\" />${content}`);\r\n\t\t\t\t\t\t\t\t\teditor.selection.select(editor.dom.select('#_cursor')[0]);\r\n\t\t\t\t\t\t\t\t\teditor.selection.collapse(0);\r\n\t\t\t\t\t\t\t\t\teditor.dom.remove('_cursor');\r\n\r\n\t\t\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tif (options.languages) {\r\n\t\t\t\t\t\t\tconst container = editor.container || '.tox-editor-container';\r\n\t\t\t\t\t\t\tconst languages = options.languages.List.map(language => {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\ttype: 'menuitem',\r\n\t\t\t\t\t\t\t\t\ttext: language.Name,\r\n\t\t\t\t\t\t\t\t\tonAction: function () {\r\n\t\t\t\t\t\t\t\t\t\tif (options.afterChange) {\r\n\t\t\t\t\t\t\t\t\t\t\toptions.afterChange(editor.getContent());\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\toptions.onChangeLanguage(language.Id);\r\n\r\n\t\t\t\t\t\t\t\t\t\t$(container)\r\n\t\t\t\t\t\t\t\t\t\t\t.find('.tox-toolbar')\r\n\t\t\t\t\t\t\t\t\t\t\t.find('.tox-toolbar__group')\r\n\t\t\t\t\t\t\t\t\t\t\t.last()\r\n\t\t\t\t\t\t\t\t\t\t\t.find('.tox-tbtn__select-label')\r\n\t\t\t\t\t\t\t\t\t\t\t.text(`Translations ${language.ShortName}`);\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tlet languageActive = options.languages.Active.ShortName;\r\n\t\t\t\t\t\t\teditor.ui.registry.addMenuButton('translations', {\r\n\t\t\t\t\t\t\t\ttext: `Translations ${languageActive}`,\r\n\t\t\t\t\t\t\t\tfetch: function (callback) {\r\n\t\t\t\t\t\t\t\t\tlet items = languages;\r\n\t\t\t\t\t\t\t\t\tcallback(items);\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttinymce.init(tinymceOptions);\r\n\r\n\t\t\t\tko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n\t\t\t\t\tconst instance = tinymce.get(options.guid);\r\n\r\n\t\t\t\t\tif (instance) {\r\n\t\t\t\t\t\tinstance.remove();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport * as tippy from \"tippy\";\r\n\r\n\r\nexport class TippyExtention {\r\n static Init() {\r\n\r\n ko.bindingHandlers.tippy = {\r\n init: (element, valueAccessor) => {\r\n var options = valueAccessor();\r\n (tippy as any)(element, options);\r\n }\r\n };\r\n }\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class ToggleExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.toggle = {\r\n\t\t\tinit: (element, valueAccessor, allBindings, viewModel, bindingContext) => { },\r\n\r\n\t\t\tupdate(element, valueAccessor) {\r\n\t\t\t\tvar options = valueAccessor();\r\n\t\t\t\tif (options.show) {\r\n\t\t\t\t\tif (options.show() === true) {\r\n\t\t\t\t\t\t$(element).toggle(\"slow\");\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$(element).toggle(options.show());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {Tooltip} from 'Core/Common/Tooltip';\r\n\r\nclass TooltipCollection {\r\n\r\n private _tooltips: Array<any>;\r\n\r\n constructor() {\r\n this._tooltips = [];\r\n }\r\n\r\n HasElement(element) {\r\n return !!this.Get(element);\r\n }\r\n\r\n Add(element, value) {\r\n const tooltip = new Tooltip(element, ko.unwrap(value.content), {\r\n position: value.position,\r\n outside: value.outside,\r\n pointer: value.pointer,\r\n closeOnMouseleave: value.closeOnMouseleave\r\n });\r\n tooltip.AddClass(value.addClass);\r\n this._tooltips.push({\r\n element: element,\r\n tooltip: tooltip\r\n });\r\n }\r\n\r\n Remove(element) {\r\n const tooltip = this.Get(element);\r\n tooltip.tooltip.Destroy();\r\n const index = this._tooltips.indexOf(tooltip);\r\n this._tooltips.splice(index, 1);\r\n }\r\n\r\n SetContent(element, options) {\r\n const tooltip = this.Get(element).tooltip;\r\n tooltip.SetContent(ko.unwrap(options.content));\r\n tooltip.AddClass(options.addClass);\r\n }\r\n\r\n private Get(element) {\r\n return _.find(this._tooltips, (tooltip) => tooltip.element === element);\r\n }\r\n}\r\n\r\nexport class TooltipExtention {\r\n\r\n private static _collection: TooltipCollection = new TooltipCollection();\r\n\r\n static Init() {\r\n ko.bindingHandlers.tooltip = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, () => {\r\n this.DestroyTooltip(element);\r\n });\r\n },\r\n update: (element, valueAccessor) => {\r\n const options = ko.unwrap(valueAccessor()) as ITooltipConfig;\r\n\t\t\t\tif (!options || !options.content) {\r\n\t\t\t\t\tthis.DestroyTooltip(element);\r\n return;\r\n }\r\n\r\n this.ExtendOptions(options);\r\n\r\n if (options.onlyOnOverflow) {\r\n this.RenderOnOverflow(element, options);\r\n } else {\r\n this.Render(element, options);\r\n }\r\n }\r\n };\r\n }\r\n\r\n private static ExtendOptions(options: ITooltipConfig) {\r\n if (!options.hasOwnProperty('onlyOnOverflow')) {\r\n options.onlyOnOverflow = false;\r\n }\r\n }\r\n\r\n private static RenderOnOverflow(element: HTMLInputElement, options: ITooltipConfig) {\r\n const $element = $(element);\r\n const elementText = $element.text() && $element.text().toLowerCase();\r\n const tooltipContent = options.content && options.content.toLowerCase();\r\n\r\n if (element.scrollWidth > element.offsetWidth || elementText !== tooltipContent) {\r\n this.Render(element, options);\r\n } else {\r\n this.DestroyTooltip(element);\r\n }\r\n }\r\n\r\n private static Render(element, options: ITooltipConfig) {\r\n if (!this._collection.HasElement(element)) {\r\n this._collection.Add(element, options);\r\n } else {\r\n this._collection.SetContent(element, options);\r\n }\r\n }\r\n\r\n private static DestroyTooltip(element) {\r\n if (this._collection.HasElement(element)) {\r\n this._collection.Remove(element);\r\n }\r\n }\r\n}\r\n\r\nexport interface ITooltipConfig {\r\n content: string;\r\n onlyOnOverflow?: boolean;\r\n position?: { x: string, y: string },\r\n outside?: string,\r\n pointer?: string,\r\n closeOnMouseleave?: boolean,\r\n addClass?: string,\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery';\r\n\r\nexport class UniformExtention {\r\n\tstatic Init() {\r\n\t\tko.bindingHandlers.uniform = {\r\n\t\t\tinit: (element, valueAccessor) => {\r\n\t\t\t\t$(element).uniform();\r\n\t\t\t\tvar value = valueAccessor();\r\n\t\t\t\tvar isChecked = false;\r\n\t\t\t\tif (value instanceof Function) {\r\n\t\t\t\t\tisChecked = value();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisChecked = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isChecked) {\r\n\t\t\t\t\t$(element).parent(\"span\").addClass('checked');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(element).parent(\"span\").removeClass('checked');\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tupdate: (element, valueAccessor) => {\r\n\t\t\t\tvar value = valueAccessor();\r\n\r\n\t\t\t\tvar isChecked = false;\r\n\t\t\t\tif (value instanceof Function) {\r\n\t\t\t\t\tisChecked = value();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tisChecked = value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isChecked) {\r\n\t\t\t\t\t$(element).parent(\"span\").addClass('checked');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(element).parent(\"span\").removeClass('checked');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n}","import * as ko from \"knockout\"\r\nimport 'jquery'\r\nimport * as Viewer from \"viewer\";\r\n\r\nimport {BlockUI as BlockUi} from 'Core/Common/BlockUi';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\nimport {MarkerArea} from \"markerjs2\";\r\n\r\nexport class ViewerJsExtention {\r\n static viewModel = null;\r\n static markerArea = null;\r\n static annotationsShown = false;\r\n static markerButton = null;\r\n static currentImage = null;\r\n\r\n static Init() {\r\n ko.bindingHandlers.viewerJs = {\r\n init: (element, valueAccessor, allBindings, viewModel, bindingContext) => {\r\n const self = this;\r\n this.viewModel = viewModel;\r\n const options = valueAccessor();\r\n let viewer = null;\r\n const template =\r\n `<!--ko with: $data -->\r\n\t\t\t\t\t\t<!--ko foreach: Images -->\r\n\t\t\t\t\t\t\t<div class=\"gallery-item\">\r\n\t\t\t\t\t\t\t\t<div class=\"mix mix_all\" >\r\n\t\t\t\t\t\t\t\t\t<div class=\"mix-inner\">\r\n\t\t\t\t\t\t\t\t\t\t<img data-bind=\"attr: { src: ImageData, 'data-original': OriginalImageData, 'data-id': UniqueId }, \r\n class: $parent.ImageClasses,\r\n style: {'max-height': $parent.GetHeightImage}\" \r\n\t\t\t\t\t\t\t\t\t\t class=\"max-width-50p\" width=\"\" height=\"\" alt=\"No Image\">\r\n\t\t\t\t\t\t\t\t\t\t<a class=\"image-open-btn\" data-bind=\"click: $parent.ShowImage\"></a>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<!-- /ko -->\r\n\t\t\t\t\t<!-- /ko -->`;\r\n\r\n const data = {\r\n Images: options.images,\r\n ImageClasses: options.imageClasses,\r\n AnnotationsEnabled: options.annotationsEnabled,\r\n ShowImage: (image, evt) => {\r\n self.currentImage = image\r\n options.getOriginalImage(image, viewer);\r\n },\r\n GetHeightImage: options.getHeightImage || function (){},\r\n ShowAnnotations: options.showAnnotations\r\n };\r\n\r\n //if (options.template) {\r\n //ko.templates['Template'] = options.template;\r\n ko.templates['Template'] = template;\r\n ko.renderTemplate('Template', data, null, element);\r\n //}\r\n\r\n\r\n const opt = {\r\n markerable: data.AnnotationsEnabled || false, //markerjs button for annotations available\r\n button: true, // Show the button on the top-right of the viewer\r\n inline: false, // Enable inline mode\r\n navbar: false, // Show the navbarwer\r\n title: false, // Show the title\r\n toolbar: true, // Show the toolbar\r\n tooltip: true, // Show the tooltip with image ratio (percentage) when zoom in or zoom out\r\n movable: true, // Enable to move the image\r\n zoomable: true, // Enable to zoom the image\r\n rotatable: true, // Enable to rotate the image\r\n scalable: true, // Enable to scale the image\r\n transition: true, // Enable CSS3 Transition for some special elements\r\n fullscreen: true, // Enable to request fullscreen when play\r\n keyboard: true, // Enable keyboard support\r\n url: 'data-original',\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n filter() { // Initiate correct array for non loaded original images\r\n return true;\r\n },\r\n marker() {\r\n let annotations = self.viewModel.Files[viewer.index].Annotations || self.currentImage.Annotations;\r\n\r\n if (annotations && opt.markerable) {\r\n if (data.ShowAnnotations) {\r\n self.DisableViewerControls(viewer);\r\n\r\n self.markerArea = new MarkerArea(viewer.image);\r\n self.markerButton = viewer.image.parentNode.parentNode.getElementsByClassName(\"viewer-marker\")[0];\r\n self.markerArea.uiStyleSettings.editingControlsInactive = true;\r\n self.markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue;\r\n if (self.markerButton) {\r\n self.markerButton.classList.add(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"none\";\r\n }\r\n self.markerArea.addCloseEventListener(() => {\r\n self.EnableViewerControls(viewer);\r\n self.annotationsShown = false;\r\n self.markerButton.classList.remove(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"auto\";\r\n });\r\n\r\n self.markerArea.show(true);\r\n self.annotationsShown = true;\r\n\r\n self.markerArea.restoreState(JSON.parse(annotations));\r\n } else {\r\n\r\n if (self.annotationsShown) {\r\n self.DisableViewerControls(viewer);\r\n\r\n self.markerArea = new MarkerArea(viewer.image);\r\n self.markerButton = viewer.image.parentNode.parentNode.getElementsByClassName(\"viewer-marker\")[0];\r\n self.markerArea.uiStyleSettings.editingControlsInactive = true;\r\n self.markerArea.uiStyleSettings.zIndex = ZIndexManager.Instance.NextValue;\r\n if (self.markerButton) {\r\n self.markerButton.classList.add(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"none\";\r\n }\r\n self.markerArea.addCloseEventListener(() => {\r\n self.EnableViewerControls(viewer);\r\n self.annotationsShown = true;\r\n self.markerButton.classList.remove(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"auto\";\r\n });\r\n\r\n self.markerArea.show(true);\r\n self.annotationsShown = false;\r\n\r\n self.markerArea.restoreState(JSON.parse(annotations));\r\n\r\n return;\r\n }\r\n\r\n self.annotationsShown = true;\r\n }\r\n }\r\n },\r\n view(e) {\r\n let annotations = self.viewModel.Files[e.detail.index].Annotations || self.currentImage.Annotations;\r\n if (annotations == null) {\r\n viewer.options.markerable = false;\r\n } else {\r\n viewer.options.markerable = true;\r\n }\r\n },\r\n viewed() {\r\n if (!self.annotationsShown && opt.markerable) {\r\n opt.marker();\r\n\r\n if (self.markerButton) {\r\n self.markerButton.classList.add(\"disabled\");\r\n self.markerButton.style.pointerEvents = \"none\";\r\n }\r\n }\r\n },\r\n hide() {\r\n if (self.markerArea) {\r\n self.markerArea.close(true);\r\n }\r\n\r\n if (data.ShowAnnotations){\r\n self.annotationsShown = false;\r\n } else {\r\n self.annotationsShown = true;\r\n }\r\n }\r\n };\r\n\r\n viewer = new Viewer(element, opt);\r\n\r\n viewer.next = () => {\r\n if (viewer.index + 1 < options.images.length) {\r\n\r\n let image = options.images[viewer.index + 1];\r\n if (image.OriginalImageData == null) {\r\n BlockUi.Block();\r\n options.getOriginalImage(image, viewer, true);\r\n } else {\r\n viewer.view(Math.min(viewer.index + 1, viewer.length - 1));\r\n }\r\n }\r\n }\r\n viewer.prev = () => {\r\n if (viewer.index > 0) {\r\n\r\n let image = options.images[viewer.index - 1];\r\n if (image.OriginalImageData == null) {\r\n BlockUi.Block();\r\n options.getOriginalImage(image, viewer, false);\r\n } else {\r\n viewer.view(Math.max(viewer.index - 1, 0));\r\n }\r\n }\r\n }\r\n viewer.clickOnImage = (imageId: number, direction: boolean) => {\r\n\r\n BlockUi.Unblock();\r\n const im = $('body').find('.mix-inner').find(\"img[data-id=\" + imageId + \"]\");\r\n viewer.hide(); // hide viewer when image was changed;\r\n if (im) {\r\n im.click();\r\n }\r\n self.CustomTooltip();\r\n }\r\n return {controlsDescendantBindings: true};\r\n }\r\n };\r\n }\r\n\r\n static CustomTooltip() {\r\n let toolbar = $('body').find('.viewer-toolbar');\r\n\r\n if (toolbar.length != 0) {\r\n this.BootstrapTooltip(toolbar.find('.viewer-zoom-in'), LABELS.ZOOM_IN);\r\n this.BootstrapTooltip(toolbar.find('.viewer-zoom-out'), LABELS.ZOOM_OUT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-one-to-one'), LABELS.ACTUAL_SIZE);\r\n this.BootstrapTooltip(toolbar.find('.viewer-reset'), LABELS.ROTATE_FLIP);\r\n this.BootstrapTooltip(toolbar.find('.viewer-prev'), LABELS.PREVIOUS);\r\n this.BootstrapTooltip(toolbar.find('.viewer-next'), LABELS.NEXT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-rotate-left'), LABELS.ROTATE_LEFT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-rotate-right'), LABELS.ROTATE_RIGHT);\r\n this.BootstrapTooltip(toolbar.find('.viewer-flip-horizontal'), LABELS.FLIP_HORIZONTALLY);\r\n this.BootstrapTooltip(toolbar.find('.viewer-flip-vertical'), LABELS.FLIP_VERTICALLY);\r\n this.BootstrapTooltip(toolbar.find('.viewer-marker'), LABELS.ANNOTATIONS);\r\n }\r\n }\r\n\r\n static BootstrapTooltip(element: JQuery, text: string) {\r\n let options = {\r\n container: 'body',\r\n template: '<div class=\"tooltip customZIndex\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>'\r\n };\r\n\r\n let tooltipElement = $(element)\r\n .attr('data-toggle', 'tooltip')\r\n .attr('title', text);\r\n tooltipElement.tooltip(options);\r\n }\r\n\r\n static DisableViewerControls(viewer: Viewer) {\r\n viewer.options.movable = false;\r\n viewer.options.zoomable = false;\r\n viewer.options.rotatable = false;\r\n viewer.options.flippable = false;\r\n }\r\n\r\n static EnableViewerControls(viewer: Viewer) {\r\n viewer.options.movable = true;\r\n viewer.options.zoomable = true;\r\n viewer.options.rotatable = true;\r\n viewer.options.flippable = true;\r\n }\r\n}\r\n","import {LIFE_STATUS_GROUPS} from \"Core/Constant\";\r\n\r\nexport const TOOL_MARKUP = [\r\n '<g class=\"link-tool\">',\r\n '<g class=\"tool-remove\" event=\"link:remove\">',\r\n '<circle r=\"11\" />',\r\n '<path transform=\"scale(.8) translate(-16, -16)\" d=\"M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z\"/>',\r\n '</g>',\r\n '</g>'\r\n].join('');\r\n\r\nexport const LABEL_MARKUP = [\r\n '<g class=\"label\">',\r\n '<rect/>',\r\n '<text/>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/exclamation.png\" y=\"5\" data-type=\"30000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/ban.png\" y=\"5\" data-type=\"20000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/check-square.png\" y=\"5\" data-type=\"10000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/step-forward.png\" y=\"-25\" x=\"-20\" data-type=\"4000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/check.png\" y=\"-25\" data-type=\"3000\" visibility=\"hidden\"></image>',\r\n '<image width=\"15\" height=\"15\" xlink:href=\"img/Rappid/font-awesome-black/key.png\" y=\"-25\" data-type=\"2000\" visibility=\"hidden\"></image>',\r\n '</g>'\r\n].join('');\r\n\r\nexport const START_CIRCLE_MODEL = {\r\n fill: '#000',\r\n stroke: '#000',\r\n 'stroke-width': 1,\r\n style: {\r\n 'pointer-events': 'non‌​e'\r\n },\r\n};\r\n\r\nexport const CELL_OPTIONS = {\r\n markup: '',\r\n position: {\r\n x: 0,\r\n y: 0\r\n },\r\n size: {\r\n width: 80,\r\n height: 60\r\n },\r\n attrs: {\r\n 'image[data-name=\"OnLifestatusSetTrigger\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bolt.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"retired\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/archive.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"NoActionNode\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bell-slash-o.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"MultipleActions\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/clone.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"Locked\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/chain.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n text: {\r\n text: '',\r\n fill: 'White',\r\n 'font-weight': 'normal',\r\n 'font-size': 14\r\n },\r\n rect: {\r\n fill: '#4a83b6',\r\n stroke: '#2d5f8b',\r\n 'stroke-width': 2,\r\n },\r\n sort: LIFE_STATUS_GROUPS.PLANNED.toString(),\r\n isStart: false,\r\n ActionItems: [],\r\n translations: []\r\n },\r\n ports: {items: []}\r\n};\r\n\r\nexport const CELL_OPTIONS_START = {\r\n markup: '',\r\n position: {\r\n x: 30,\r\n y: 30\r\n },\r\n size: {\r\n width: 40,\r\n height: 40\r\n },\r\n attrs: {\r\n 'image[data-name=\"OnLifestatusSetTrigger\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bolt.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"retired\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/archive.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"NoActionNode\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/bell-slash-o.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"MultipleActions\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/clone.png',\r\n width: 20,\r\n height: 20,\r\n x: 5,\r\n y: 5,\r\n visibility: 'hidden'\r\n },\r\n 'image[data-name=\"Locked\"]': {\r\n 'xlink:href': 'img/Rappid/font-awesome-black/chain.png',\r\n width: 20,\r\n height: 20,\r\n x: 80,\r\n y: 35,\r\n visibility: 'hidden'\r\n },\r\n text: {\r\n text: 'Start',\r\n fill: '#fff',\r\n 'font-weight': 'normal',\r\n 'font-size': 14\r\n },\r\n sort: LIFE_STATUS_GROUPS.PLANNED.toString(),\r\n isStart: true,\r\n circle: START_CIRCLE_MODEL,\r\n ActionItems: []\r\n },\r\n ports: {items: []}\r\n};\r\n\r\nexport const LINK_OPTIONS = {\r\n source: {id: 0},\r\n target: {id: 0},\r\n labels: [{\r\n position: .5,\r\n attrs: {\r\n text: {\r\n text: '',\r\n 'font-weight': 'bold',\r\n },\r\n 'image[data-type=\"2000\"]': {\r\n visibility: 'hidden'\r\n },\r\n 'image[data-type=\"3000\"]': {\r\n visibility: 'hidden'\r\n },\r\n 'image[data-type=\"4000\"]': {\r\n visibility: 'hidden'\r\n }\r\n }\r\n }],\r\n vertices: [],\r\n attrs: {\r\n '.marker-target': {d: 'M 0 -5 L -10 0 L 0 5 Z' },\r\n '.connection': {\r\n strokeWidth: 2,\r\n stroke: '#000000'\r\n }\r\n},\r\n router: {\r\n name: 'normal'\r\n },\r\n connector: {\r\n name: 'smooth'\r\n }\r\n};\r\n\r\nexport enum COLORS {\r\n BLACK = '#000000',\r\n WHITE = '#ffffff',\r\n GREEN = 'rgb(49, 208, 198)'\r\n};\r\n\r\nexport enum LIFECYCLE_EVENTS {\r\n\tINSPECT_CHECK_LIST_CHANGE = 'change:attrs/checklist',\r\n INSPECT_TRANSITION_CHANGE_COLOR = 'change:attrs/.connection/stroke',\r\n INSPECT_TRANSITION_CHANGE_APPROVAL = 'change:attrs/approvalId',\r\n INSPECT_TRANSITION_CHANGE_STEPS_SCREEN = 'change:attrs/stepsScreenId',\r\n INSPECT_TRANSITION_CHANGE_NEXTALLOWED = 'change:attrs/nextAllowed',\r\n INSPECT_TRANSITION_CHANGE_TEST_CONDITION = 'change:attrs/testCondition',\r\n INSPECT_NODE_CHANGE_TRIGGER = 'change:attrs/OnLifestatusSetTrigger',\r\n INSPECT_NODE_CHANGE_DURATION = 'change:attrs/DateElapsed',\r\n INSPECT_NODE_CHANGE_AUTOCOMPLETE = 'change:attrs/IsAutocomplete',\r\n INSPECT_NODE_CHANGE_DEADLINE = 'change:attrs/DeadlineElapsed',\r\n INSPECT_NODE_CHANGE_SORT = 'change:attrs/sort',\r\n INSPECT_NODE_CHANGE_NO_ACTION = 'change:attrs/NoActionNode',\r\n INSPECT_NODE_CHANGE_MULTIPLE_ACTIONS = 'change:attrs/MultipleActions',\r\n INSPECT_NODE_CHANGE_LOCKED = 'change:attrs/Locked',\r\n TOOLBAR_RESET = 'reset:pointerclick',\r\n TOOLBAR_PRINT = 'print:pointerclick',\r\n TOOLBAR_AUTOLAYOUT = 'layout:pointerclick',\r\n TOOLBAR_FULLSCREEN = 'fullscreen:pointerclick',\r\n TOOLBAR_ZOOM = 'zoomSlider:change',\r\n ADVANCED_MODE_TOGGLE = 'toggleAdvancedMode:change',\r\n PAPER_CLICK = 'cell:pointerdown',\r\n LINK_REMOVE = 'link:remove',\r\n BLANK_CLICK = 'blank:pointerdown',\r\n CELL_POINTER_CLICK = 'cell:pointerclick',\r\n HALO_ENABLE = 'action:enable:pointerdown',\r\n HALO_DISABLE = 'action:disable:pointerdown',\r\n DIALOG_DELETELINK = 'action:deleteLink',\r\n DIALOG_CANCELDELETE = 'action:cancelDeleteLink',\r\n DIALOG_DISABLENODE = 'action:disableNode',\r\n DIALOG_CANCELDISABLENODE = 'action:cancelDisableNode',\r\n FULLSCREEN_WEBKIT = 'webkitfullscreenchange',\r\n FULLSCREEN_MOZ = 'mozfullscreenchange',\r\n FULLSCREEN = 'fullscreenchange',\r\n WINDOW_RESIZE = 'resize',\r\n LINK_HIGHTLIGHT = 'hightlight',\r\n LINK_UNHIGHTLIGHT = 'unHighlight',\r\n REMOVE_LINKS = 'removeLinks',\r\n MOUSEWHEEL = 'mousewheel DOMMouseScroll',\r\n ADD_BUTTON_CLICK = 'cell:addbutton:pointerdown',\r\n DEFAULT_RETIRED = 'change:attrs/DefaultRetired',\r\n INSPECT_NODE_CHANGE_SUB_FLOW_LINKED_ENTITY = 'change:attrs/SubFlowLinkedEntity',\r\n INSPECT_NODE_CHANGE_SUB_FLOW_TYPE = 'change:attrs/SubFlowType',\r\n INSPECT_NODE_CHANGE_SUB_FLOW_STATUS = 'change:attrs/SubFlowStatus',\r\n}\r\n\r\nexport enum HALO_HANDLES {\r\n RESIZE = 'resize',\r\n FORK = 'fork',\r\n LINK = 'link',\r\n CLONE = 'clone',\r\n UNLINK = 'unlink',\r\n REMOVE = 'remove',\r\n ROTATE = 'rotate',\r\n DISABLE = 'disable',\r\n ENABLE = 'enable'\r\n}\r\n\r\nexport enum LINK_CUSTOM_ATTRS {\r\n PASSWORD = 'image[data-type=\"2000\"]',\r\n YESNO = 'image[data-type=\"3000\"]',\r\n APPROVALID = 'approvalId',\r\n STEPSSCREENID = 'stepsScreenId',\r\n STEPSSCREENICON = 'image[data-type=\"4000\"]'\r\n}\r\n\r\nexport enum TEST_CONDITION_CUSTOM_ATTRS {\r\n VALID = 'image[data-type=\"10000\"]',\r\n NOT_VALID = 'image[data-type=\"20000\"]',\r\n ERROR = 'image[data-type=\"30000\"]',\r\n TESTCONDITION = 'testCondition'\r\n}\r\n\r\nexport enum CELL_CUSTOM_ATTRS {\r\n TRIGGER = 'image[data-name=\"OnLifestatusSetTrigger\"]',\r\n RETIRED = 'image[data-name=\"retired\"]',\r\n NO_ACTION = 'image[data-name=\"NoActionNode\"]',\r\n MULTIPLE_ACTIONS = 'image[data-name=\"MultipleActions\"]',\r\n LOCKED = 'image[data-name=\"Locked\"]',\r\n COPY_BUTTON = 'foreignObject[class=\"rect-with-image-copy-button-container\"]',\r\n DELETE_BUTTON = 'foreignObject[class=\"rect-with-image-delete-button-container\"]',\r\n DEFAULT_RETIRED = 'image[data-name=\"DefaultRetired\"]',\r\n}\r\n\r\nexport enum INSPECTOR_HTML_ATTRS {\r\n SUB_FLOW_LINKED_ITEMS = '[data-attribute=\"attrs/SubFlowLinkedEntity\"]',\r\n SUB_FLOW_TYPE = '[data-attribute=\"attrs/SubFlowType\"]',\r\n SUB_FLOW_STATUS = '[data-attribute=\"attrs/SubFlowStatus\"]',\r\n}\r\n\r\nexport enum NODE_TYPES {\r\n CONVENTIONAL = 'Conventional',\r\n STATUS = 'Status',\r\n ERROR = 'Error',\r\n APPROVE = 'Approve',\r\n MESSAGE = 'Message',\r\n FUNCTION = 'Function',\r\n TEST = 'Test',\r\n PARSE = 'Parse',\r\n JOIN = 'Join',\r\n SECURITY = 'Security',\r\n START_ACTION = 'StartAction',\r\n SUB_FLOW = 'Subflow'\r\n}\r\n\r\nexport enum NODE_TYPES_ID {\r\n START,\r\n CONVENTIONA,\r\n STATUS,\r\n ERROR,\r\n APPROVE,\r\n MESSAGE,\r\n FUNCTION,\r\n TEST,\r\n PARSE,\r\n JOIN,\r\n SECURITY,\r\n START_ACTION,\r\n SUB_FLOW\r\n}\r\n\r\nexport const DEFAULT_LINK_ATTRS = {\r\n '.connection': {stroke: '#000000', strokeWidth: 2},\r\n '.marker-target': {d: 'M 0 -5 L -10 0 L 0 5 Z' }\r\n};\r\n\r\n\r\n","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport { CanvasModel } from \"Core/Controls/CanvasDesigner/Models/CanvasModel\";\r\nimport { ModelState } from \"Core/Common/Enums/ModelState\";\r\n\r\nexport class DwPackageDto{\r\n\r\n constructor(init?: Partial<DwPackageDto>){ \r\n Object.assign(this, init);\r\n }\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserializeAs(CanvasModel)\r\n Canvas: CanvasModel;\r\n\r\n @deserialize\r\n State: ModelState;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class FollowupModeDto{\r\n @deserialize\r\n Id: number;\r\n \r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class NodeTypeDto{\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}","import { Guid } from '../../../Common/Guid';\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { FollowupModeDto } from \"./FollowupModeDto\";\r\nimport { NodeTypeDto } from \"./NodeTypeDto\";\r\nimport { TriggerDto } from './TriggerDto';\r\n\r\nexport class LifecycleStepDto {\r\n\r\n constructor(init?: Partial<LifecycleStepDto>){\r\n Object.assign(this, init);\r\n }\r\n\r\n @deserialize\r\n Guid: string;\r\n\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n ActionItems: []\r\n\r\n @deserialize\r\n DateElapsed: string;\r\n\r\n @deserialize\r\n DeadlineElapsed: string;\r\n\r\n @deserialize\r\n DictionaryId: number;\r\n\r\n @deserialize\r\n Enabled: boolean\r\n\r\n @deserialize\r\n ExampleId: number;\r\n\r\n @deserialize\r\n FLifestatus: number;\r\n\r\n @deserializeAs(FollowupModeDto)\r\n FollowupMode: FollowupModeDto;\r\n\r\n @deserialize\r\n IsAutocomplete: boolean;\r\n\r\n @deserialize\r\n IsNew: boolean;\r\n\r\n @deserialize\r\n IsRetired: boolean;\r\n\r\n @deserialize\r\n Json: string;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n LifeStatusGuid: string;\r\n\r\n @deserialize\r\n MultipleActions: boolean;\r\n\r\n @deserialize\r\n NoActionNode: boolean;\r\n\r\n @deserialize\r\n Locked: boolean;\r\n\r\n @deserialize\r\n DefaultRetired: boolean;\r\n\r\n @deserialize\r\n FSubflow: number;\r\n\r\n @deserialize\r\n FSubflowGuid: string;\r\n\r\n @deserializeAs(NodeTypeDto)\r\n NodeType: NodeTypeDto;\r\n\r\n @deserialize\r\n Sort: number;\r\n\r\n @deserialize\r\n Memo: string;\r\n\r\n @deserialize\r\n MemoTranslation: string;\r\n\r\n @deserialize\r\n MemoTranslations: Array<TranslationModel>;\r\n\r\n @deserializeAs(TranslationModel)\r\n Translations: Array<TranslationModel>;\r\n\r\n @deserializeAs(TriggerDto)\r\n Trigger: TriggerDto;\r\n\r\n @deserialize\r\n UserId: number;\r\n\r\n @deserialize\r\n DisplaySort: number;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport { DwPackageDto } from \"./DwPackageDto\";\r\nimport { ModelState } from \"../../../Common/Enums/ModelState\";\r\n\r\nexport class TriggerDto {\r\n\r\n constructor(init?: Partial<TriggerDto>){\r\n Object.assign(this, init);\r\n }\r\n\r\n @deserialize\r\n ExecuteSync: boolean;\r\n\r\n @deserializeAs(DwPackageDto)\r\n DwPackages: Array<DwPackageDto>;\r\n \r\n @deserialize\r\n State: ModelState;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class OperationResultModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tIsSuccessfull: boolean;\r\n\r\n\t@deserialize\r\n\tErrorMessage: string;\r\n\r\n\t@deserialize\r\n\tIsServerError: boolean;\r\n\r\n\t@deserialize\r\n\tErrorOccured: string;\r\n\r\n\t@deserializeAs(String)\r\n\tExceptions: Array<String>;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport {RecordSpecsModel } from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport {LanguageInfoModel} from \"Core/Components/Translation/Models/LanguageInfoModel\";\r\n\r\nimport {ControlToolBarModel} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlToolBarModel'\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { ActionSubjectRecordModel } from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\n\r\nexport class ScreenModel {\r\n\tconstructor(init?: Partial<ScreenModel>) {\r\n\t\tthis.TranslationModel = [];\r\n\t\tthis.SubForms = [];\r\n\t\tObject.assign(this, init);\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n @deserializeAs(TranslationModel)\r\n TranslationModel: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityNameTranslation: string;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tEntityColor: string;\r\n\r\n\t@deserialize\r\n\tEntityIconImage: string;\r\n\r\n\t@deserialize\r\n\tFieldCollectionId: number;\r\n\r\n\t@deserialize\r\n\tTableTypeId: number;\r\n\r\n\t@deserialize\r\n TableTypeName: string;\r\n\r\n @deserialize\r\n TableTypeNameTranslation: string;\r\n\r\n @deserialize\r\n TableTypeFlowFolder: boolean;\r\n\r\n\t@deserialize\r\n\tKindId: number;\r\n\r\n\t@deserialize\r\n\tScreenTypeId: number;\r\n\r\n\t@deserialize\r\n\tScreenTypeName: string;\r\n\r\n\t@deserialize\r\n\tTemplateName: string;\r\n\r\n\t@deserialize\r\n\tIsDashMain: boolean;\r\n\r\n\t@deserialize\r\n\tIsEditScreenExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsListScreenExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsSpecialScreenExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsDashboardScreenExist: boolean;\r\n\r\n @deserialize\r\n\tIsConsultScreenExist: boolean;\r\n\r\n @deserialize\r\n\tIsStepsScreenExist: boolean;\r\n\r\n @deserialize\r\n\tScreenDoesNotExistError: boolean;\r\n\r\n @deserialize\r\n\tScreenDoesNotExistErrorMessage: boolean;\r\n\r\n\t@deserialize\r\n\tShowFollowUp: boolean;\r\n\r\n\t@deserializeAs(SubFormModel)\r\n\tActionBar: SubFormModel;\r\n\r\n\t@deserializeAs(SubFormModel)\r\n\tBottomBar: SubFormModel;\r\n\r\n\t@deserializeAs(SubFormModel)\r\n\tSubForms: Array<SubFormModel>;\r\n\r\n\t@deserializeAs(ScreenDataModel)\r\n\tData: ScreenDataModel;\r\n\r\n\t@deserializeAs(LanguageInfoModel)\r\n\tLanguages: Array<LanguageInfoModel>;\r\n\r\n\t@deserializeAs(RecordSpecsModel)\r\n\tRecordSpecs: RecordSpecsModel;\r\n\r\n\t@deserialize\r\n\tProperties: string;\r\n\r\n\t@deserialize\r\n\tEntityProperties: string;\r\n\r\n\tDataMode: DataModes;\r\n SubjectLifestatusId: number;\r\n ActionSubjectRecord?: ActionSubjectRecordModel;\r\n IsNested: boolean;\r\n NestedLevel: number;\r\n AliasSuffix: string;\r\n\r\n\t@deserialize\r\n\tIsEnablePathRunner: boolean;\r\n}\r\n\r\nexport class FieldCollectionModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\tconstructor(id?: number, name?: string){\r\n\t\tthis.Id = isNaN(Number(id)) ? null : id;\r\n\t\tthis.Name = name;\r\n\t}\r\n}\r\n\r\nexport class TypedScreenModel {\r\n\t@deserialize\r\n\tFormId: number;\r\n\r\n\t@deserialize\r\n\tFieldCollectionId: number;\r\n\r\n\t@deserialize\r\n\tTableTypeId: number;\r\n}\r\n\r\nexport class TableType {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n GetName(): string {\r\n return this.TranslatedName ? this.TranslatedName : this.Name ? this.Name : '-'\r\n }\r\n\r\n constructor(id?: number, name?: string, translatedName?: string){\r\n\t\tthis.Id = id;\r\n this.Name = name;\r\n this.TranslatedName = translatedName;\r\n }\r\n}\r\n\r\nexport class FormTypeModel {\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n TypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n FormId: number;\r\n\r\n GetTypeName(): string {\r\n return this.TypeTranslatedName ? this.TypeTranslatedName : this.TypeName ? this.TypeName : '-'\r\n }\r\n}\r\n\r\nexport class DesignScreenModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldCollections = [];\r\n\t\tthis.TypedScreens = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tFormId: number;\r\n\r\n\t@deserializeAs(ScreenModel)\r\n\tExistingScreenViewModel: ScreenModel;\r\n\r\n\t@deserializeAs(FieldCollectionModel)\r\n\tFieldCollections: Array<FieldCollectionModel>;\r\n\r\n\t@deserializeAs(TypedScreenModel)\r\n\tTypedScreens: Array<TypedScreenModel>;\r\n\r\n\t@deserializeAs(TableType)\r\n\tEntityTypes: Array<TableType>;\r\n\r\n\r\n\t@deserializeAs(ControlToolBarModel)\r\n\tControlToolbar: ControlToolBarModel;\r\n\r\n\t@deserializeAs(LanguageModel)\r\n\tLanguages: Array<LanguageModel>;\r\n\r\n\t@deserializeAs(FormTypeModel)\r\n\tScreenTypes: Array<FormTypeModel>;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tIcons: Array<IconModel>\r\n\r\n\t@deserialize\r\n\tFormProperties: string;\r\n}","import {Guid} from 'Core/Common/Guid';\r\n\r\nimport {deserialize, serialize, serializeAs} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {SubFormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\n\r\nexport class SubFormModel {\r\n constructor() {\r\n this.Guid = Guid.NewGuid();\r\n this.Controls = [];\r\n this.Properties = new SubFormProperties();\r\n this.Removable = false;\r\n }\r\n\r\n @serialize\r\n @deserialize\r\n Guid: string;\r\n\r\n @deserialize\r\n @serialize\r\n Id: number;\r\n\r\n @serialize\r\n @deserialize\r\n Name: string;\r\n\r\n @deserializeAs(ControlModel)\r\n Controls: Array<ControlModel>;\r\n\r\n @serializeAs(SubFormProperties)\r\n @deserializeAs(SubFormProperties)\r\n Properties: SubFormProperties;\r\n\r\n Removable: boolean;\r\n}","export enum PortletStates {\r\n\tNoChanges,\r\n\tNew,\r\n\tChanged,\r\n\tDeleted\r\n}","import {Event} from \"Core/Common/Event\";\r\n\r\nimport {PortletManager} from \"Core/Portlets/Managers/Runtime/PortletManager\";\r\n\r\nexport interface EventHandlerCallback {\r\n\tHandler: (portletManager: PortletManager) => void;\r\n}\r\nexport class PortletManagerEventHandlersFactory<THandlerOwner extends Event, TEventEmitter extends Event> {\r\n\tconstructor(private _handlerOwner: THandlerOwner, private _eventEmitter: TEventEmitter, private _handlers: { [eventName: string]: EventHandlerCallback }) {\r\n\r\n\t}\r\n\r\n\tBindEvent(eventName: string) {\r\n\t\tif (this._handlers[eventName]) {\r\n\t\t\tthis._eventEmitter.On(eventName, this, () => this._handlers[eventName].Handler.call(this._handlerOwner, this._eventEmitter));\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {PortletRenderModes} from \"Core/Constant\"\r\n\r\nexport abstract class BasePortletManager extends Event {\r\n\tprotected renderMode: KnockoutObservable<PortletRenderModes>;\r\n\tprotected isChanged: boolean;\r\n\tprotected isReady: boolean;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.isChanged = false;\r\n\t\tthis.isReady = false;\r\n\t\tthis.renderMode = ko.observable(PortletRenderModes.View);\r\n\t\tthis.IsInViewMode = ko.computed(() => this.renderMode() === PortletRenderModes.View);\r\n\t\tthis.IsInDesignMode = ko.computed(() => this.renderMode() === PortletRenderModes.Design);\r\n\t}\r\n\r\n\tget IsReady(): boolean {\r\n\t\treturn this.isReady;\r\n\t}\r\n\r\n\tget RenderMode() {\r\n\t\treturn this.renderMode();\r\n\t}\r\n\r\n\tSwitchRenderMode(renderMode: PortletRenderModes) {\r\n\t\tthis.renderMode(renderMode);\r\n\t}\r\n\r\n\tIsInViewMode: KnockoutComputed<boolean>;\r\n\tIsInDesignMode: KnockoutComputed<boolean>;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {Guid} from \"Core/Common/Guid\"\r\n\r\nimport {Portlet} from \"Core/Portlets/Models/Runtime/Portlet\"\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\n\r\nexport class DesignedPortlet {\r\n\t@deserialize\r\n\tGuid: Guid;\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n ScreenId: number;\r\n\r\n @deserializeAs(ScreenModel)\r\n ScreenModel: ScreenModel;\r\n\r\n\t@deserialize\r\n\tRowPosition: number;\r\n\r\n\t@deserialize\r\n\tColPosition: number;\r\n\r\n\tState: PortletStates;\r\n\r\n\tstatic Map(portletToSave: Portlet, position: IPosition, state: PortletStates) {\r\n\t\tlet portletStoreModel = new DesignedPortlet();\r\n\r\n\t\tportletStoreModel.Guid = portletToSave.Guid;\r\n\t\tportletStoreModel.Id = portletToSave.ObjectId;\r\n\t\tportletStoreModel.Name = portletToSave.Name || portletToSave.ScreenName;\r\n\t\tportletStoreModel.ScreenId = portletToSave.ScreenId;\r\n\t\tportletStoreModel.RowPosition = position.RowNumber;\r\n\t\tportletStoreModel.ColPosition = position.ColNumber;\r\n\t\tportletStoreModel.State = state;\r\n\r\n\t\treturn portletStoreModel;\r\n\t}\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {DesignedPortlet} from \"Core/Portlets/Models/Store/DesignedPortlet\";\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\n\r\nexport class DesignedPortletSpace {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tIsMain: boolean;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserializeAs(DesignedPortlet)\r\n\tPortlets: Array<DesignedPortlet>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Portlets = Array<DesignedPortlet>();\r\n\t}\r\n\r\n\tstatic Map(portletSpace: PortletSpace): DesignedPortletSpace {\r\n\t\tlet portletSpaceStoreModel = new DesignedPortletSpace();\r\n\r\n\t\tportletSpaceStoreModel.Id = portletSpace.ObjectId;\r\n\t\tportletSpaceStoreModel.Name = portletSpace.Name;\r\n\t\tportletSpaceStoreModel.IsMain = portletSpace.IsMain;\r\n\t\tportletSpaceStoreModel.Memo = portletSpace.Memo;\r\n\r\n\t\treturn portletSpaceStoreModel;\r\n\t}\r\n}","import {DesignedPortletSpace} from \"Core/Portlets/Models/Store/DesignedPortletSpace\";\r\n\r\nexport class PortletSpace {\r\n ObjectId: number;\r\n Name: string;\r\n IsMain: boolean;\r\n Memo: string;\r\n\r\n static Map(userPortletSpace: DesignedPortletSpace) : PortletSpace {\r\n let portletSpace = new PortletSpace();\r\n\r\n portletSpace.ObjectId = userPortletSpace.Id;\r\n portletSpace.Name = userPortletSpace.Name;\r\n portletSpace.IsMain = userPortletSpace.IsMain;\r\n portletSpace.Memo = userPortletSpace.Memo;\r\n\r\n\r\n return portletSpace;\r\n }\r\n}\r\n","import {Event} from \"Core/Common/Event\";\r\n\r\nexport interface EventHandlerCallback {\r\n\tHandler: () => void;\r\n}\r\n\r\nexport class PortletBarEventHandlersFactory<THandlerOwner extends Event, TEventEmmiter extends Event> {\r\n\tconstructor(private _handerOwner: THandlerOwner, private _eventEmitter: TEventEmmiter, private _handlers: { [eventName: string]: EventHandlerCallback }) {\r\n\r\n\t}\r\n\r\n\tBindEvent(eventName: string) {\r\n\t\tif (this._handlers[eventName]) {\r\n\t\t\tthis._eventEmitter.On(eventName, this, () => {\r\n\t\t\t\tthis._handlers[eventName].Handler.apply(this._handerOwner);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\"\r\n\r\nimport {IPortletRuntimeSettings} from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\"\r\nimport {ReadableRuntimeSettings} from \"Core/Controls/PortletBar/Utils/ReadableRuntimeSettings\"\r\n\r\nexport class RuntimeSettingsReader {\r\n\tconstructor(public RuntimeSettings?: IPortletRuntimeSettings) { }\r\n\r\n\tstatic GetRuntimeSettings(readableRuntimeSettings: ReadableRuntimeSettings): IPortletRuntimeSettings {\r\n\t\tif (!readableRuntimeSettings) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet dataSpaceColor = readableRuntimeSettings.UsePortletBarColor ? readableRuntimeSettings.PortletColor : \"#fff\";\r\n\t\t\r\n\t\tlet reader = new RuntimeSettingsReader({\r\n\t\t\tReadOnly: ko.observable(readableRuntimeSettings.ReadOnly),\r\n\t\t\tSearch: ko.observable(readableRuntimeSettings.Search),\r\n\t\t\tPortletColor: ko.observable(readableRuntimeSettings.PortletColor),\r\n\t\t\tUsePortletBarColor: ko.observable(readableRuntimeSettings.UsePortletBarColor),\r\n\t\t\tDataSpaceColor: ko.observable(dataSpaceColor),\r\n\t\t\tKind: ko.observable(readableRuntimeSettings.Kind),\r\n\t\t\tLength: ko.observable(readableRuntimeSettings.Length),\r\n\t\t\tHeaderText: ko.observable(readableRuntimeSettings.HeaderText),\r\n\t\t\tCollapseButton: ko.observable(readableRuntimeSettings.CollapseButton),\r\n\t\t\tExpandButton: ko.observable(readableRuntimeSettings.ExpandButton),\r\n\t\t\tSettingsButton: ko.observable(readableRuntimeSettings.SettingsButton),\r\n\t\t\tReloadButton: ko.observable(readableRuntimeSettings.ReloadButton),\r\n\t\t\tRemoveButton: ko.observable(readableRuntimeSettings.RemoveButton),\r\n\t\t\tUseBodySpace: ko.observable(readableRuntimeSettings.PortletColor !== dataSpaceColor)\r\n\t\t});\r\n\r\n\t\treturn reader.RuntimeSettings;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS, PortletRenderModes, RenderModes} from \"Core/Constant\";\r\nimport {P} from \"Core/Common/Promise\";\r\n\r\nimport {BasePortletManager} from \"Core/Portlets/Managers/Base/BasePortletManager\"\r\nimport {EntityPortlet} from \"Core/Portlets/Models/Design/Explorer/EntityPortlet\"\r\nimport type {Portlet} from \"Core/Portlets/Models/Runtime/Portlet\"\r\nimport {ScreenStore} from 'Core/ScreenManager/Stores/ScreenStore';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IPortletParams} from \"Core/Portlets/IPortletParams\";\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\n\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\";\r\n\r\nimport {EventHandlerCallback, PortletBarEventHandlersFactory} from \"Core/Portlets/Utils/PortletBarEventHandlersFactory\"\r\nimport {RemoveButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/RemoveButtonViewModel\"\r\nimport {SettingsButtonViewModel} from \"Core/Controls/PortletBar/Models/Buttons/SettingsButtonViewModel\";\r\nimport {ReloadButtonViewModel} from 'Core/Controls/PortletBar/Models/Buttons/ReloadButtonViewModel';\r\n\r\nimport {SettingsButton} from \"Core/Controls/PortletBar/Managers/Buttons/SettingsButton\";\r\nimport {RemoveButton} from \"Core/Controls/PortletBar/Managers/Buttons/RemoveButton\";\r\nimport {ReloadButton} from 'Core/Controls/PortletBar/Managers/Buttons/ReloadButton';\r\n\r\nimport {IPortletRuntimeSettings} from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\";\r\n\r\nimport {RuntimeSettingsReader} from \"Core/Controls/PortletBar/Utils/RuntimeSettingsReader\";\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport PortletManagerTemplate from 'Core/Portlets/Templates/PortletManager.html';\r\n\r\nko.templates[\"Core/Portlets/Templates/PortletManager\"] = PortletManagerTemplate;\r\n\r\nexport class PortletManager extends BasePortletManager {\r\n private _params: IPortletParams;\r\n private _portlet: Portlet;\r\n private _labels = LABELS;\r\n\r\n get Portlet() {\r\n return this._portlet;\r\n }\r\n\r\n constructor(params: IPortletParams) {\r\n super();\r\n\r\n this._params = params;\r\n this.renderMode(params.IsNew ? PortletRenderModes.Design : PortletRenderModes.View);\r\n }\r\n\r\n async LoadPortlet(portletId: number, screenId: number, position: IPosition, model: ScreenModel) {\r\n this.SetPortletSubject(model);\r\n\r\n const portlet = (await import (\"Core/Portlets/Models/Runtime/Portlet\")).Portlet;\r\n this._portlet = new portlet(model);\r\n this.Portlet.ObjectId = portletId;\r\n this.Portlet.Position = position;\r\n\r\n this.BindPortletEvents();\r\n this.ApplyRuntimeSettings();\r\n }\r\n\r\n GeneratePortlet(portlet: EntityPortlet): P.Promise<any> {\r\n let deferedResult = P.defer<any>();\r\n\r\n ScreenStore.GetScreenById({\r\n ScreenId: portlet.ScreenId\r\n })\r\n .then(async (screen: ScreenModel) => {\r\n this.SetPortletSubject(screen);\r\n\r\n const portletType = (await import (\"Core/Portlets/Models/Runtime/Portlet\")).Portlet;\r\n\r\n this._portlet = new portletType(screen);\r\n this.Portlet.State = this._params.IsNew ? PortletStates.New : PortletStates.NoChanges;\r\n\r\n this.Portlet.Position = portlet.Position;\r\n this.Portlet.OldPosition = portlet.Position;\r\n\r\n this.BindPortletEvents();\r\n this.ApplyRuntimeSettings();\r\n this.SwitchRenderMode(PortletRenderModes.Design);\r\n\r\n deferedResult.resolve(null);\r\n });\r\n\r\n return deferedResult.promise();\r\n }\r\n\r\n ReloadPortlet() {\r\n this._portlet.Refresh();\r\n }\r\n\r\n SwitchRenderMode(renderMode: PortletRenderModes) {\r\n if (renderMode === PortletRenderModes.View) {\r\n renderMode = this.Portlet.GetRuntimeSettings().ReadOnly() ? PortletRenderModes.View : PortletRenderModes.Edit;\r\n }\r\n\r\n super.SwitchRenderMode(renderMode);\r\n\r\n this.Portlet.PortletBar.Buttons()\r\n .filter(button => button instanceof RemoveButton)\r\n .forEach(button => (<RemoveButtonViewModel>button.ViewModel).DisplayValue(button.ViewModel.Properties().Visible() && renderMode === PortletRenderModes.Design));\r\n\r\n this.Portlet.PortletBar.Buttons()\r\n .filter(button => button instanceof SettingsButton)\r\n .forEach(button => (<SettingsButtonViewModel>button.ViewModel).DisplayValue(button.ViewModel.Properties().Visible() && renderMode !== PortletRenderModes.Design));\r\n }\r\n\r\n SetState(state: PortletStates) {\r\n this.Portlet.State = state;\r\n }\r\n\r\n SetStateForcibly(state: PortletStates) {\r\n this.Portlet.State = state;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/Portlets/Templates/PortletManager\";\r\n }\r\n\r\n AfterRender() {\r\n }\r\n\r\n AddRuntimeSettings() {\r\n let runtimeSettings = this.Portlet.GetRuntimeSettings();\r\n\r\n let userVariables = UserVarsManager.Instance;\r\n\r\n userVariables.SetPortletSettings(this.Portlet.ObjectId, ko.toJSON(runtimeSettings));\r\n }\r\n\r\n private SetPortletSubject(model: ScreenModel) {\r\n if (this._params.Subject) {\r\n model.EntityId = this._params.Subject.EntityId;\r\n model.Data = new ScreenDataModel();\r\n model.Data.RecordId = this._params.Subject && this._params.Subject.RecordId;\r\n }\r\n }\r\n\r\n private GetRenderMode(screen: ScreenModel): RenderModes {\r\n let [portletBarControl, ...otherControls] = screen.SubForms[0].Controls;\r\n\r\n let config;\r\n\r\n try {\r\n config = JSON.parse(portletBarControl.Properties);\r\n } catch (err) {\r\n return RenderModes.View;\r\n }\r\n\r\n if (!config || !config.ReadOnly) {\r\n return RenderModes.View;\r\n }\r\n\r\n return config.ReadOnly.Properties[0].ReadOnly ? RenderModes.View : RenderModes.Edit;\r\n }\r\n\r\n private ApplyRuntimeSettings() {\r\n this.Portlet.ApplyRuntimeSettings(this.GetRuntimeSettings());\r\n }\r\n\r\n private GetRuntimeSettings(): IPortletRuntimeSettings {\r\n let variablesManager = UserVarsManager.Instance;\r\n\r\n let runtimeSettings = variablesManager.GetPortleteSettings(this.Portlet.ObjectId);\r\n\r\n return RuntimeSettingsReader.GetRuntimeSettings(runtimeSettings);\r\n }\r\n\r\n private UpdateRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n let userVariables = UserVarsManager.Instance;\r\n if (this.Portlet.State !== PortletStates.New) {\r\n userVariables.SetPortletSettings(this.Portlet.ObjectId, ko.toJSON(runtimeSettings));\r\n }\r\n }\r\n\r\n private BindPortletEvents() {\r\n let controlButtonsClickEvents = EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS;\r\n\r\n let controlButtonsEventsHandlers: { [eventName: string]: EventHandlerCallback } = {};\r\n controlButtonsEventsHandlers[EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED] = {Handler: this.RemovePortlet}\r\n controlButtonsEventsHandlers[EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.RELOAD_BUTTON_CLICKED] = {Handler: this.ReloadPortlet}\r\n\r\n let controlButtonsHandlersFactory = new PortletBarEventHandlersFactory<PortletManager, Portlet>(this, this.Portlet, controlButtonsEventsHandlers);\r\n\r\n Object.keys(controlButtonsClickEvents).forEach(event => {\r\n controlButtonsHandlersFactory.BindEvent(controlButtonsClickEvents[event]);\r\n });\r\n\r\n this.Portlet.On(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this, eventArgs => this.UpdateRuntimeSettings(eventArgs.data));\r\n }\r\n\r\n private RemovePortlet() {\r\n this.Trigger(EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED, this);\r\n }\r\n}","// Module\nvar code = \"<!-- ko with: Portlet--> <!-- ko template: {name: GetTemplateName(), afterRender: AfterRender} --> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {PortletsCollection} from \"Core/Portlets/Models/Design/Explorer/PortletsCollection\"\r\nimport PortleteExplolerTemplate from \"Core/Portlets/Templates/PortletExplorer.html\";\r\nko.templates[\"Core/Portlets/Templates/PortletExplorer\"] = PortleteExplolerTemplate;\r\n\r\nexport class PortletsExplorer extends Event {\r\n\tprivate _container: HTMLElement;\r\n\tprivate _portletsCollection: KnockoutObservable<PortletsCollection>;\r\n\r\n\tconstructor(portletsCollection: PortletsCollection) {\r\n\t\tsuper();\r\n\t\tthis._portletsCollection = ko.observable(portletsCollection);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn \"Core/Portlets/Templates/PortletExplorer\";\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis.Trigger(EVENTS.PORTLETS.EXPLORER_LOADED);\r\n\t}\r\n} ","// Module\nvar code = \"<div id=\\\"accordion\\\" class=\\\"panel-group\\\"> <!-- ko foreach: _portletsCollection().Entities --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr: {href: '#' + Name}, text: TableTranslatedName || Name\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Name}\\\" class=\\\"panel-collapse collapse\\\"> <div data-bind=\\\"foreach: Portlets\\\" class=\\\"panel-body\\\"> <div class=\\\"portlet-draggable\\\"> <div data-bind=\\\"attr: {screenid: ScreenId, guid: Guid, name: ScreenName}, text: ScreenTranslatedName || ScreenName\\\"></div> </div> </div> </div> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {ScreenModel} from \"Core/Models/Screens/ScreenModel\"\r\n\r\nimport {Guid} from \"Core/Common/Guid\"\r\n\r\nexport class EntityPortlet {\r\n\tGuid: Guid;\r\n\r\n\t@deserialize\r\n\tScreenId: number;\r\n\r\n\t@deserialize\r\n ScreenName: string;\r\n\r\n @deserialize\r\n ScreenTranslatedName: string;\r\n\r\n @deserializeAs(ScreenModel) \r\n ScreenModel: ScreenModel;\r\n\r\n\tPosition: IPosition;\r\n\tOldPosition: IPosition;\r\n} ","import {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {IPortletInfo} from \"Core/Portlets/Models/Common/Interfaces/IPortletInfo\"\r\n\r\nexport interface IKeyValuePair<TKey, TValue> {\r\n\tKey: TKey;\r\n\tValue: TValue;\r\n}\r\n\r\nexport class GuidToPortletInfoMap {\r\n\tprivate _keys: Array<string>;\r\n\tprivate _dictionary: { [guid: string]: IPortletInfo };\r\n\r\n\tconstructor() {\r\n\t\tthis._keys = new Array<string>();\r\n\t\tthis._dictionary = {};\r\n\t}\r\n\r\n\tAdd(guid: string, portletInfo: IPortletInfo) {\r\n\t\tthis._keys.push(guid);\r\n\t\tthis._dictionary[guid] = portletInfo;\r\n\t}\r\n\r\n\tGet(guid: string) {\r\n\t\treturn this._dictionary[guid];\r\n\t}\r\n\r\n\tToArray() {\r\n\t\tlet array = new Array<IKeyValuePair<string, IPortletInfo>>();\r\n\r\n\t\tthis._keys.forEach(key => array.push({\r\n\t\t\tKey: key,\r\n\t\t\tValue: this._dictionary[key]\r\n\t\t}));\r\n\r\n\t\treturn array;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {Guid} from \"Core/Common/Guid\"\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Constant\";\r\n\r\nimport {PortletsCollection} from \"Core/Portlets/Models/Design/Explorer/PortletsCollection\"\r\nimport {PortletsExplorer} from \"Core/Portlets/Models/Design/Explorer/PortletsExplorer\"\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\"\r\nimport {EntityPortlet} from \"Core/Portlets/Models/Design/Explorer/EntityPortlet\"\r\nimport {PortletManager} from \"Core/Portlets/Managers/Runtime/PortletManager\"\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\nimport {GuidToPortletInfoMap} from \"Core/Portlets/Utils/GuidToPortletInfoMap\"\r\nimport {IPortletInfo} from \"Core/Portlets/Models/Common/Interfaces/IPortletInfo\";\r\n\r\nexport interface IDraggable {\r\n\tGuid: Guid;\r\n\tPrevPosition: IPosition;\r\n\tNewPosition: IPosition;\r\n}\r\n\r\nexport class PortletDesignManager extends Event {\r\n\tprivate _portletsCollection: PortletsCollection;\r\n\tprivate _portletExplorer: KnockoutObservable<PortletsExplorer>;\r\n\tprivate _draggedFromExplorer: boolean;\r\n\r\n\tprivate _portletExplorereLoaded: boolean;\r\n\tprivate _draggablePortlets: Array<JQuery>;\r\n\tprivate _attachedPortlets: JQuery;\r\n\r\n\tconstructor(portletsCollection: PortletsCollection) {\r\n\t\tsuper();\r\n\r\n\t\tportletsCollection.Entities.map(entity => entity.Portlets.forEach(portlet => portlet.Guid = Guid.NewGuid()));\r\n\r\n\t\tthis._portletsCollection = portletsCollection;\r\n\t\tthis._portletExplorer = ko.observable(new PortletsExplorer(portletsCollection));\r\n\t\tthis._draggedFromExplorer = false;\r\n\r\n\t\tthis._draggablePortlets = [];\r\n\r\n\t\tthis.BindEvents();\r\n\t}\r\n\r\n\tDestroyDragAndDrop() {\r\n\t\tthis._draggablePortlets.forEach((draggable: JQuery) => draggable.sortable(\"destroy\"));\r\n\t}\r\n\r\n\tInitDesignMode() {\r\n\t\tlet $explorer = $(\".portlet-explorer\");\r\n\t\tlet $exploredPortlets = $explorer.find(\".portlet-draggable\");\r\n\t\tlet $attachedPortlets = $(\".portlet-attached\");\r\n\r\n\t\tthis._draggablePortlets = new Array<JQuery>($exploredPortlets, $attachedPortlets);\r\n\t\tthis._attachedPortlets = $attachedPortlets;\r\n\r\n\t\tvar self = this;\r\n\t\t$exploredPortlets.sortable({\r\n\t\t\tconnectWith: $attachedPortlets,\r\n\t\t\thelper(event, portlet: JQueryUI.Sortable) {\r\n\t\t\t\tthis.copyHelper = portlet.clone().insertAfter(portlet);\r\n\r\n\t\t\t\t$(this).data('copied', true);\r\n\r\n\t\t\t\treturn portlet.clone();\r\n\t\t\t},\r\n\t\t\tstart() {\r\n\t\t\t\tself._draggedFromExplorer = true;\r\n\t\t\t},\r\n\t\t\tbeforeStop(event, portlet) {\r\n\t\t\t\tlet copied = $(this).data('copied');\r\n\t\t\t\tlet droppedIntoExplorer = portlet.item.closest('.portlet-explorer').length > 0;\r\n\r\n\t\t\t\tif (copied && droppedIntoExplorer) {\r\n\t\t\t\t\tthis.copyHelper.remove();\r\n\t\t\t\t\tthis.copyHelper = null;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tstop() {\r\n\t\t\t\tlet copied = $(this).data('copied');\r\n\r\n\t\t\t\tif (!copied) {\r\n\t\t\t\t\tthis.copyHelper.remove();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.copyHelper = null;\r\n\t\t\t}\r\n\t\t}).disableSelection();\r\n\r\n\t\t$attachedPortlets.sortable({\r\n\t\t\tconnectWith: $attachedPortlets,\r\n\t\t\thandle: \".portlet-title\",\r\n\t\t\tplaceholder: \"portlet-sortable-placeholder\",\r\n\t\t\topacity: .8,\r\n\t\t\trevert: 250,\r\n\t\t\tforcePlaceholderSize: true,\r\n\t\t\ttolerance: \"pointer\",\r\n\t\t\tcancel: \".portlet-fullscreen\",\r\n\t\t\tstart(event, portlet) {\r\n\t\t\t\tself._draggedFromExplorer = false;\r\n\r\n\t\t\t\tlet rowNumber = portlet.item.index();\r\n\t\t\t\tlet colNumber = portlet.item.closest('.portlet-block').data('number');\r\n\r\n\t\t\t\tportlet.item.attr('data-prev-row', rowNumber);\r\n\t\t\t\tportlet.item.attr('data-prev-col', colNumber);\r\n\t\t\t},\r\n\t\t\tupdate: (event, portlet) => {\r\n\t\t\t\tlet screenId = parseInt(portlet.item.attr('screenId'));\r\n\t\t\t\tlet guid = portlet.item.attr('guid');\r\n\t\t\t\tlet rowPositon = portlet.item.index();\r\n\t\t\t\tlet colPositon = portlet.item.closest('.portlet-block').data('number');\r\n\r\n\t\t\t\tlet position: IPosition = {\r\n\t\t\t\t\tRowNumber: rowPositon,\r\n\t\t\t\t\tColNumber: colPositon\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif (self._draggedFromExplorer) {\r\n\t\t\t\t\tportlet.item.remove();\r\n\t\t\t\t\tself.AddNewPortlet(guid, screenId, position);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet prevRowPosition = portlet.item.data('prevRow');\r\n\t\t\t\t\tlet prevColPosition = portlet.item.data('prevCol');\r\n\r\n\t\t\t\t\tlet prevPosition: IPosition = {\r\n\t\t\t\t\t\tRowNumber: prevRowPosition,\r\n\t\t\t\t\t\tColNumber: prevColPosition\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tself.ChangePortletPosition(guid, prevPosition, position);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}).disableSelection();\r\n\t}\r\n\r\n\tGetPositions(): GuidToPortletInfoMap {\r\n\t\tlet guidToPosition = new GuidToPortletInfoMap();\r\n\r\n\t\tthis._attachedPortlets.toArray().forEach(portletScope => {\r\n\t\t\tlet $portletScope = $(portletScope);\r\n\t\t\tlet $portlets = $portletScope.find('.portlet');\r\n\r\n\t\t\t$portlets.toArray().forEach(portlet => {\r\n\t\t\t\tlet $portlet = $(portlet);\r\n\t\t\t\tlet guid = $portlet.attr('guid');\r\n\r\n\t\t\t\tlet position: IPosition = {\r\n\t\t\t\t\tRowNumber: $portlet.index(),\r\n\t\t\t\t\tColNumber: $portlet.closest('.portlet-attached').data('number')\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet state = $portlet.attr('state');\r\n\r\n\t\t\t\tlet portletInfo: IPortletInfo = {\r\n\t\t\t\t\tPosition: position,\r\n\t\t\t\t\tState: PortletStates[state]\r\n\t\t\t\t};\r\n\r\n\t\t\t\tguidToPosition.Add(guid, portletInfo);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn guidToPosition;\r\n\t}\r\n\r\n\tprivate OnPortletExlorerLoaded() {\r\n\t\tif (!this._portletExplorereLoaded) {\r\n\t\t\tthis.InitDesignMode();\r\n\t\t}\r\n\t\tthis._portletExplorereLoaded = true;\r\n\t}\r\n\r\n\tprivate BindEvents() {\r\n\t\tthis._portletExplorer().On(EVENTS.PORTLETS.EXPLORER_LOADED, this, () => this.OnPortletExlorerLoaded());\r\n\t}\r\n\r\n\tprivate AddNewPortlet(guid: Guid, screenId: number, position: IPosition) {\r\n\t\tlet portlet = new EntityPortlet();\r\n\t\tportlet.Guid = guid;\r\n\t\tportlet.ScreenId = screenId;\r\n\t\tportlet.Position = position;\r\n\r\n\t\tthis.Trigger(EVENTS.PORTLETS.NEW_PORTLET_ADDED, portlet);\r\n\t}\r\n\r\n\tprivate ChangePortletPosition(guid: Guid, prevPosition: IPosition, newPosition: IPosition) {\r\n\t\tlet droppedObject: IDraggable = {\r\n\t\t\tGuid: guid,\r\n\t\t\tPrevPosition: prevPosition,\r\n\t\t\tNewPosition: newPosition\r\n\t\t};\r\n\r\n\t\tthis.Trigger(EVENTS.PORTLETS.PORTLET_POSITION_CHANGED, droppedObject);\r\n\t}\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport {EntityPortlets} from \"Core/Portlets/Models/Design/Explorer/EntityPortlets\"\r\n\r\nexport class PortletsCollection {\r\n\t@deserialize\r\n\tEntities: Array<EntityPortlets>\t\r\n} \r\n","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\n\r\nimport {DesignedPortletSpace} from \"Core/Portlets/Models/Store/DesignedPortletSpace\"\r\nimport {PortletsCollection} from \"Core/Portlets/Models/Design/Explorer/PortletsCollection\"\r\nimport {AddPortletSpaceDto} from \"Core/Portlets/Models/Store/AddPortletSpaceDto\";\r\nimport {CopyPortletSpaceDto} from \"Core/Portlets/Models/Store/CopyPortletSpaceDto\";\r\n\r\nexport class PortletSpaceStore {\r\n\tstatic GetPortletSpaces(controlId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_PORTLET_SPACES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: {controlId: controlId || 0}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetMainPortletSpace(): P.Promise<DesignedPortletSpace> {\r\n\t\tlet deferredResult = P.defer<DesignedPortletSpace>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_PORTLET_SPACE,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(portletSpace => deferredResult.resolve(<DesignedPortletSpace>Deserialize(portletSpace, DesignedPortletSpace)))\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPortletSpace(id: number): P.Promise<DesignedPortletSpace> {\r\n\t\tlet deferredResult = P.defer<DesignedPortletSpace>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_PORTLET_SPACE_BY_ID,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: {id: id}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(portletSpace => deferredResult.resolve(<DesignedPortletSpace>Deserialize(portletSpace, DesignedPortletSpace)))\r\n\t\t\t.fail(error => deferredResult.reject(error));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPortletsExplorer(): P.Promise<PortletsCollection> {\r\n\t\tlet deferredResult = P.defer<PortletsCollection>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.GET_AVAILABLE_PORTLETS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(portletEntities => deferredResult.resolve(<PortletsCollection>Deserialize(portletEntities, PortletsCollection)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UpdatePortletSpace(changedPortletSpace: DesignedPortletSpace): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.UPDATE_PORTLET_SPACE,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: changedPortletSpace\r\n\t\t});\r\n\t}\r\n\r\n\tstatic CreatePortletSpace(params: AddPortletSpaceDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.CREATE_PORTLET_SPACE,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t});\r\n\t}\r\n\r\n\tstatic CopyPortletSpace(params: CopyPortletSpaceDto) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.COPY_PORTLET_SPACE,\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t});\r\n\t}\r\n\r\n\tstatic UpdatePortletSpaceInfo(portletSpaceId: number, name: string, isMain?: boolean) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.UPDATE_PORTLET_SPACE_INFO,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {Id: portletSpaceId, Name: name, IsMain: isMain}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic BindToControl(portletSpaceId: number, controlId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.BIND_TO_CONTROL,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: {PortletSpaceId: portletSpaceId, controlId: controlId}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic DeletePortletSpace(id: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.PORTLETS.DELETE_PORTLET_SPACE,\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: {id: id}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\n\r\nexport class PortletSpaceEditorModel {\r\n PortletSpaceName: KnockoutObservable<string>;\r\n\r\n ShowCopyFromDropdown: KnockoutComputed<boolean>;\r\n CopyFromPortletSpace: KnockoutObservable<PortletSpace>;\r\n AllPortletSpaces: KnockoutObservableArray<PortletSpace>;\r\n\r\n constructor() {\r\n this.PortletSpaceName = ko.observable('').extend({\r\n required: {\r\n message: LABELS.PLEASE_ENTER_PORTLET_SPACE_NAME\r\n }\r\n });\r\n\r\n this.AllPortletSpaces = ko.observableArray([]);\r\n this.CopyFromPortletSpace = ko.observable(null);\r\n this.ShowCopyFromDropdown = ko.computed(() => _.any(this.AllPortletSpaces()));\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {Event} from \"Core/Common/Event\";\r\n\r\nimport {PortletSpaceEditorModel} from \"Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModel\";\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport Template from 'Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal.html';\r\n\r\nko.templates['Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal'] = Template;\r\n\r\nexport const EVENTS = {\r\n SAVE_PORTLET_SPACE: 'SAVE_PORTLET_SPACE'\r\n};\r\n\r\nexport interface IPortletSpaceEditorParams {\r\n Name?: string;\r\n AllPortletSpaces?: Array<PortletSpace>;\r\n}\r\n\r\nexport interface ISavePortletSpaceParams {\r\n Name: string;\r\n CopyFromId: number;\r\n}\r\n\r\nexport class PortletSpaceEditorModal extends Event {\r\n private _model: KnockoutValidatedObservable<PortletSpaceEditorModel>;\r\n private _modal: Modal;\r\n private _labels = LABELS;\r\n\r\n constructor(params: IPortletSpaceEditorParams) {\r\n super();\r\n\r\n this._model = ko.validatedObservable(new PortletSpaceEditorModel());\r\n\r\n if (params.Name) {\r\n this._model().PortletSpaceName(params.Name);\r\n }\r\n\r\n if (params.AllPortletSpaces && _.any(params.AllPortletSpaces)) {\r\n const newPortletSpace = new PortletSpace();\r\n newPortletSpace.ObjectId = 0;\r\n newPortletSpace.Name = this._labels.NEW;\r\n\r\n let allPortletSpaces = [newPortletSpace];\r\n params.AllPortletSpaces.forEach(val => allPortletSpaces.push(Object.assign({}, val)));\r\n\r\n this._model().AllPortletSpaces(allPortletSpaces);\r\n this._model().CopyFromPortletSpace(newPortletSpace);\r\n }\r\n\r\n this._modal = new Modal({\r\n addClass: 'jBox-padding-15px',\r\n width: 350,\r\n minHeight: 200\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this.InitValidation();\r\n }\r\n\r\n InitValidation() {\r\n ko.validation.init({ insertMessages: false }, true);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n Show() {\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n IsValid() {\r\n if (!this._model.isValid()) {\r\n this._model.errors.showAllMessages();\r\n }\r\n\r\n return this._model.isValid();\r\n }\r\n\r\n SavePortletSpace() {\r\n if (this.IsValid()) {\r\n const model = this._model();\r\n\r\n const params: ISavePortletSpaceParams = {Name: model.PortletSpaceName(), CopyFromId: model.CopyFromPortletSpace() && model.CopyFromPortletSpace().ObjectId};\r\n this.Trigger(EVENTS.SAVE_PORTLET_SPACE, params);\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"form\\\"> <fieldset> <legend> <span data-bind=\\\"text: _labels.PORTLET_SPACE_INFO\\\"></span> </legend> <!--ko with: _model--> <div class=\\\"form-group\\\"> <span data-bind=\\\"text: $parent._labels.PORTLET_SPACE_NAME\\\"></span> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"value: PortletSpaceName\\\"> <span data-bind=\\\"validationMessage: PortletSpaceName\\\" class=\\\"validation-message\\\"></span> </div> <!-- ko if: ShowCopyFromDropdown() --> <div class=\\\"form-group\\\"> <span data-bind=\\\"text: $parent._labels.SELECT_EXISTING_PORTLET_SPACE\\\"></span> <select class=\\\"form-control\\\" data-bind=\\\"options: AllPortletSpaces, optionsText: 'Name', value: CopyFromPortletSpace\\\"></select> </div> <!--/ko--> <!--/ko--> <div> <button type=\\\"button\\\" class=\\\"btn btn-success\\\" data-bind=\\\"click: SavePortletSpace\\\"> <span data-bind=\\\"text: _labels.SAVE\\\"></span> </button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" data-bind=\\\"click: Close\\\"> <span data-bind=\\\"text: _labels.CANCEL\\\"></span> </button> </div> </fieldset> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as $ from \"jquery\";\r\nimport * as _ from 'underscore';\r\nimport \"bootstrapContextMenu\";\r\n\r\nimport {EventHandlerCallback, PortletManagerEventHandlersFactory} from \"Core/Portlets/Utils/PortletManagerEventHandlersFactory\"\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {PortletRenderModes} from \"Core/Constant\"\r\nimport {BasePortletManager} from \"Core/Portlets/Managers/Base/BasePortletManager\"\r\nimport {DesignedPortletSpace} from \"Core/Portlets/Models/Store/DesignedPortletSpace\"\r\nimport {DesignedPortlet} from \"Core/Portlets/Models/Store/DesignedPortlet\"\r\nimport {PortletSpace} from \"Core/Portlets/Models/Runtime/PortletSpace\"\r\nimport {EntityPortlet} from \"Core/Portlets/Models/Design/Explorer/EntityPortlet\"\r\nimport {PortletManager} from \"Core/Portlets/Managers/Runtime/PortletManager\"\r\nimport {PortletDesignManager, IDraggable} from \"Core/Portlets/Managers/Design/PortletDesignManager\"\r\nimport {PortletSpaceStore} from \"Core/Portlets/Stores/PortletSpaceStore\"\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\"\r\n\r\nimport {\r\n\tPortletSpaceEditorModal,\r\n\tISavePortletSpaceParams,\r\n\tEVENTS as PORTLET_SPACE_EDITOR_EVENTS\r\n} from \"Core/Portlets/Modals/PortletSpaceEditorModal/PortletSpaceEditorModal\";\r\n\r\nimport {\r\n\tTypes as DecisionDialogTypes,\r\n\tEVENTS as DECISION_DIALOG_EVENTS,\r\n\tDecisionDialog\r\n} from \"Core/Components/Dialogs/DecisionDialog/DecisionDialog\";\r\nimport {\r\n\tConfirmationDialog,\r\n\tTypes as DialogTypes,\r\n\tEVENTS as DIALOG_EVENTS\r\n} from \"Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\n\r\nimport {IPortletSpaceParams} from \"Core/Portlets/IPortletSpaceParams\";\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport PortletSpaceTemplate from \"Core/Portlets/Templates/PortletSpace.html\";\r\nimport Rejection = P.Rejection;\r\n\r\nko.templates[\"Core/Portlets/Templates/PortletSpace\"] = PortletSpaceTemplate;\r\n\r\nexport class PortletSpaceManager extends BasePortletManager {\r\n\tprivate _params: IPortletSpaceParams;\r\n\tprivate _mainPortletSpaceId: number;\r\n\r\n\tprivate _portletSpaces: KnockoutObservableArray<PortletSpace>;\r\n\tprivate _portletSpace: KnockoutObservable<PortletSpace>;\r\n\r\n\tprivate _portletManagers1: KnockoutObservableArray<PortletManager>;\r\n\tprivate _portletManagers2: KnockoutObservableArray<PortletManager>;\r\n\tprivate _portletManagers3: KnockoutObservableArray<PortletManager>;\r\n\r\n\tprivate _newPortlets: Array<PortletManager>;\r\n\tprivate _removedPortlets: Array<PortletManager>;\r\n\r\n\tprivate _portletDesignManager: KnockoutObservable<PortletDesignManager>;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tprivate _isRendered: KnockoutObservable<boolean>;\r\n\tprivate _portletsAreLoaded: KnockoutObservable<boolean>;\r\n\r\n\tprivate _labels = LABELS;\r\n\r\n\tIsChanged: KnockoutObservable<boolean>;\r\n\tIsMain: KnockoutComputed<boolean>;\r\n\r\n\tconstructor(params: IPortletSpaceParams) {\r\n\t\tsuper();\r\n\r\n\t\tthis._params = params;\r\n\t\tthis._portletSpaces = ko.observableArray([]);\r\n\t\tthis._portletSpace = ko.observable(null);\r\n\t\tthis._portletDesignManager = ko.observable(null);\r\n\r\n\t\tthis._portletManagers1 = ko.observableArray([]);\r\n\t\tthis._portletManagers2 = ko.observableArray([]);\r\n\t\tthis._portletManagers3 = ko.observableArray([]);\r\n\r\n\t\tthis.IsChanged = ko.observable(false);\r\n\t\tthis.IsMain = ko.computed(() => this._portletSpace() && this._portletSpace().ObjectId === this._mainPortletSpaceId);\r\n\r\n\t\tthis._isReady = ko.observable(true);\r\n\r\n\t\tthis._isRendered = ko.observable(false);\r\n\t\tthis._portletsAreLoaded = ko.observable(false);\r\n\t}\r\n\r\n\tget IsReady(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tSwitchRenderMode(renderMode: PortletRenderModes) {\r\n\t\tsuper.SwitchRenderMode(renderMode);\r\n\r\n\t\tthis.GetPortletManagers().forEach((columnManagers: KnockoutObservableArray<PortletManager>) =>\r\n\t\t\tcolumnManagers().forEach((manager: PortletManager) => manager.SwitchRenderMode(renderMode))\r\n\t\t);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn \"Core/Portlets/Templates/PortletSpace\";\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis._isRendered(true);\r\n\t\treturn this.IsReady;\r\n\t}\r\n\r\n\tLoad() {\r\n\t\treturn this.LoadPortletSpaces()\r\n\t\t\t.then(() => {\r\n\t\t\t\tif (this._mainPortletSpaceId) {\r\n\t\t\t\t\treturn this.LoadPortlets(this._mainPortletSpaceId)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tChangePortletSpace(portletSpaceId: number) {\r\n\t\tif (this.IsChanged()) {\r\n\t\t\tconst decisionDialog = new DecisionDialog({\r\n\t\t\t\tText: this._labels.CONFIRMATION_FOR_UNSAVED_CHANGES,\r\n\t\t\t\tType: DecisionDialogTypes.Question,\r\n\t\t\t});\r\n\r\n\t\t\tdecisionDialog.On(\r\n\t\t\t\tDECISION_DIALOG_EVENTS.CONFIRM_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t() => this.SaveChanges()\r\n\t\t\t\t\t.then(() => this.SwitchPortletSpace(portletSpaceId))\r\n\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t.fail(error => this.ShowError(error)));\r\n\r\n\t\t\tdecisionDialog.On(\r\n\t\t\t\tDECISION_DIALOG_EVENTS.DISCARD_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t() => this.SwitchPortletSpace(portletSpaceId)\r\n\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t.fail(error => this.ShowError(error)));\r\n\r\n\t\t\tdecisionDialog.Show();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn this.SwitchPortletSpace(portletSpaceId).then(() => this.EnableDesignMode());\r\n\t}\r\n\r\n\tMakeMain() {\r\n\t\tif (this._params.Control) {\r\n\t\t\tthis.BindToControl();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.SavePortletSpaceInfo(this._portletSpace().Name, true);\r\n\t\t}\r\n\t}\r\n\r\n\tEnableDesignMode() {\r\n\t\tthis._newPortlets = new Array<PortletManager>();\r\n\t\tthis._removedPortlets = new Array<PortletManager>();\r\n\r\n\t\tthis.SwitchRenderMode(PortletRenderModes.Design);\r\n\r\n\t\tif (this._portletDesignManager() !== null) {\r\n\t\t\tthis._portletDesignManager().InitDesignMode();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\treturn PortletSpaceStore.GetPortletsExplorer()\r\n\t\t\t.then(portletsCollection => {\r\n\t\t\t\tthis._portletDesignManager(new PortletDesignManager(portletsCollection));\r\n\t\t\t\tthis._portletDesignManager()\r\n\t\t\t\t\t.On(EVENTS.PORTLETS.NEW_PORTLET_ADDED, this, (eventArgs: any) => this.AddNewPortlet(eventArgs.data))\r\n\t\t\t\t\t.On(EVENTS.PORTLETS.PORTLET_POSITION_CHANGED, this, (eventArgs: any) => this.ChangePortletPosition(eventArgs.data));\r\n\t\t\t});\r\n\t}\r\n\r\n\tEnableViewMode() {\r\n\t\tthis.SwitchRenderMode(PortletRenderModes.View);\r\n\r\n\t\tthis._newPortlets = new Array<PortletManager>();\r\n\t\tthis._removedPortlets = new Array<PortletManager>();\r\n\r\n\t\tthis._portletDesignManager().DestroyDragAndDrop();\r\n\t\tthis.ProcessEachManager((columnManagers, manager) => {\r\n\t\t\tmanager.SetState(PortletStates.NoChanges);\r\n\t\t\tmanager.SwitchRenderMode(PortletRenderModes.View);\r\n\t\t});\r\n\t}\r\n\r\n\tSaveChanges() {\r\n\t\tlet designedPortletSpace = DesignedPortletSpace.Map(this._portletSpace());\r\n\r\n\t\tlet portletGuidToInfo = this._portletDesignManager().GetPositions().ToArray();\r\n\r\n\t\tportletGuidToInfo.forEach(pair => {\r\n\t\t\tthis.GetPortletManagerByCriteria((manager: PortletManager) => manager.Portlet.Guid === pair.Key).then(manager => {\r\n\t\t\t\tdesignedPortletSpace.Portlets.push(DesignedPortlet.Map(manager.Portlet, pair.Value.Position, manager.Portlet.State));\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis._removedPortlets.forEach((manager: PortletManager) =>\r\n\t\t\tdesignedPortletSpace.Portlets.push(DesignedPortlet.Map(manager.Portlet, manager.Portlet.Position, manager.Portlet.State))\r\n\t\t);\r\n\r\n\t\treturn PortletSpaceStore.UpdatePortletSpace(designedPortletSpace)\r\n\t\t\t.then(() => {\r\n\t\t\t\tthis.IsChanged(false);\r\n\t\t\t\tnew Notifier().Success(this._labels.PORTLET_SPACE_WAS_UPDATED);\r\n\t\t\t\treturn this.ChangePortletSpace(this._portletSpace().ObjectId);\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error));\r\n\t}\r\n\r\n\tBackToView() {\r\n\t\tthis.EnableViewMode();\r\n\t\tif (this._mainPortletSpaceId) {\r\n\t\t\tthis.SwitchPortletSpace(this._mainPortletSpaceId).fail(error => this.ShowError(error));\r\n\t\t}\r\n\t}\r\n\r\n\tRollbackChanges() {\r\n\t\treturn this.SwitchPortletSpace(this._portletSpace().ObjectId)\r\n\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t.fail(error => this.ShowError(error));\r\n\t}\r\n\r\n\tRemovePortlet(portletManager: PortletManager) {\r\n\t\tif (portletManager.Portlet.State === PortletStates.New) {\r\n\t\t\tlet index = this._newPortlets.indexOf(portletManager);\r\n\t\t\tthis._newPortlets.splice(index, 1);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tportletManager.SetState(PortletStates.Deleted);\r\n\t\tthis._removedPortlets.push(portletManager);\r\n\t\tthis.IsChanged(true);\r\n\t}\r\n\r\n\tCreatePortletSpace() {\r\n\t\tif (this.IsChanged()) {\r\n\t\t\tconst decisionDialog = new DecisionDialog({\r\n\t\t\t\tText: 'You have unsaved changes. Do you want to save them?',\r\n\t\t\t\tType: DecisionDialogTypes.Question\r\n\t\t\t});\r\n\r\n\t\t\tdecisionDialog.On(DECISION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.SaveChanges().then(() => this.CreatePortletSpaceForce()));\r\n\t\t\tdecisionDialog.On(DECISION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\t\tthis.SwitchPortletSpace(this._portletSpace().ObjectId)\r\n\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t.then(() => this.CreatePortletSpaceForce());\r\n\t\t\t});\r\n\t\t\tdecisionDialog.Show();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.CreatePortletSpaceForce();\r\n\t}\r\n\r\n\tEditPortletSpace() {\r\n\t\tconst portletSpace = this._portletSpace();\r\n\r\n\t\tconst modal = new PortletSpaceEditorModal({\r\n\t\t\tName: portletSpace.Name\r\n\t\t});\r\n\r\n\t\tmodal.On(PORTLET_SPACE_EDITOR_EVENTS.SAVE_PORTLET_SPACE, this, eventArgs => {\r\n\t\t\tconst params = eventArgs.data as ISavePortletSpaceParams;\r\n\t\t\tthis.SavePortletSpaceInfo(params.Name).then(() => modal.Close());\r\n\t\t});\r\n\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tDeletePortletSpace() {\r\n\t\tif (this._portletSpace().ObjectId === this._mainPortletSpaceId) {\r\n\t\t\tnew Notifier().Warning('You cannot delete main portlet space');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst dialog = new ConfirmationDialog({\r\n\t\t\tText: this._labels.PORTLET_SPACE_WILL_BE_DELETED,\r\n\t\t\tType: DialogTypes.Warning\r\n\t\t});\r\n\r\n\t\tdialog.On(DIALOG_EVENTS.CONFIRM_SELECTED, this, () => this.DeletePortletSpaceForce());\r\n\r\n\t\tdialog.Show();\r\n\t}\r\n\r\n\tprivate GetClasses(portletsColumnNumber: number) {\r\n\t\tif (this.IsInDesignMode()) {\r\n\t\t\treturn 'design-mode';\r\n\t\t}\r\n\r\n\t\tlet classes = [];\r\n\t\tconst division = [this._portletManagers1()[0], this._portletManagers2()[0], this._portletManagers3()[0]].filter(portlet => !!portlet).length;\r\n\r\n\t\tlet columnManager = null;\r\n\r\n\t\tswitch (portletsColumnNumber) {\r\n\t\t\tcase 1:\r\n\t\t\t\tcolumnManager = this._portletManagers1();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 2:\r\n\t\t\t\tcolumnManager = this._portletManagers2();\r\n\t\t\t\tbreak;\r\n\t\t\tcase 3:\r\n\t\t\t\tcolumnManager = this._portletManagers3();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif(!columnManager[0]) {\r\n\t\t\tclasses.push('portlet-block-empty');\r\n\t\t\treturn classes.join(' ');\r\n\t\t}\r\n\r\n\t\tif (division !== 0) {\r\n\t\t\tclasses.push('portlet-block-1-of-' + division);\r\n\t\t}\r\n\r\n\t\treturn classes.join(' ');\r\n\t}\r\n\r\n\tprivate SavePortletSpaceInfo(name: string, isMain?: boolean) {\r\n\t\tconst portletSpace = this._portletSpace();\r\n\t\tconst portletSpaceId = portletSpace.ObjectId;\r\n\r\n\t\tBlockUI.Block();\r\n\t\treturn PortletSpaceStore.UpdatePortletSpaceInfo(portletSpace.ObjectId, name, isMain)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst portletSpaces = this._portletSpaces();\r\n\t\t\t\tconst portletSpace = _.find(portletSpaces, ps => ps.ObjectId === portletSpaceId);\r\n\r\n\t\t\t\tif (isMain) {\r\n\t\t\t\t\tthis._mainPortletSpaceId = portletSpaceId;\r\n\t\t\t\t\tportletSpaces.forEach(ps => ps.IsMain = false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tportletSpace.Name = name;\r\n\t\t\t\tportletSpace.IsMain = isMain;\r\n\r\n\t\t\t\tthis._portletSpace().Name = name;\r\n\t\t\t\tthis._portletSpace().IsMain = isMain;\r\n\t\t\t\tthis._portletSpace.valueHasMutated();\r\n\r\n\t\t\t\tthis._portletSpaces([]);\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate BindToControl() {\r\n\t\tconst portletSpace = this._portletSpace();\r\n\t\tconst portletSpaceId = portletSpace.ObjectId;\r\n\r\n\t\tBlockUI.Block();\r\n\t\treturn PortletSpaceStore.BindToControl(portletSpaceId, this._params.Control.Id)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst portletSpaces = this._portletSpaces();\r\n\t\t\t\tconst portletSpace = _.find(portletSpaces, ps => ps.ObjectId === portletSpaceId);\r\n\r\n\t\t\t\tthis._mainPortletSpaceId = portletSpaceId;\r\n\t\t\t\tportletSpaces.forEach(ps => ps.IsMain = false);\r\n\r\n\t\t\t\tportletSpace.IsMain = true;\r\n\r\n\t\t\t\tthis._portletSpace().IsMain = true;\r\n\t\t\t\tthis._portletSpace.valueHasMutated();\r\n\r\n\t\t\t\tthis._portletSpaces([]);\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate CreatePortletSpaceForce() {\r\n\t\tconst modal = new PortletSpaceEditorModal({\r\n\t\t\tAllPortletSpaces: this._portletSpaces()\r\n\t\t});\r\n\r\n\t\tmodal.On(PORTLET_SPACE_EDITOR_EVENTS.SAVE_PORTLET_SPACE, this, eventArgs => {\r\n\t\t\tconst params = eventArgs.data as ISavePortletSpaceParams;\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tthis.SaveNewPortletSpace(params)\r\n\t\t\t\t.then(newPortletSpace => {\r\n\t\t\t\t\tmodal.Close();\r\n\r\n\t\t\t\t\tif (this._portletSpaces().length === 0) {\r\n\t\t\t\t\t\tthis._mainPortletSpaceId = newPortletSpace.Id;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst portletSpace = PortletSpace.Map(newPortletSpace);\r\n\t\t\t\t\tthis._portletSpaces.push(portletSpace);\r\n\r\n\t\t\t\t\tthis.SwitchPortletSpace(newPortletSpace.Id)\r\n\t\t\t\t\t\t.then(() => this.EnableDesignMode())\r\n\t\t\t\t\t\t.fail(error => this.ShowError(error));\r\n\t\t\t\t})\r\n\t\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t\t.always(() => BlockUI.Unblock());\r\n\t\t});\r\n\r\n\t\tmodal.Show();\r\n\t}\r\n\r\n\tprivate SwitchPortletSpace(portletSpaceId: number) {\r\n\t\tthis._portletSpace(null);\r\n\t\tthis.IsChanged(false);\r\n\r\n\t\tthis.GetPortletManagers().forEach((columnManagers: KnockoutObservableArray<PortletManager>) => columnManagers([]));\r\n\t\treturn this.LoadPortlets(portletSpaceId);\r\n\t}\r\n\r\n\tprivate SaveNewPortletSpace(params: ISavePortletSpaceParams) {\r\n\t\treturn params.CopyFromId !== 0\r\n\t\t\t? PortletSpaceStore.CopyPortletSpace({ Name: params.Name, CopyFromId: params.CopyFromId })\r\n\t\t\t: PortletSpaceStore.CreatePortletSpace({ Name: params.Name });\r\n\t}\r\n\r\n\tprivate DeletePortletSpaceForce() {\r\n\t\tconst portletSpaceId = this._portletSpace().ObjectId;\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tPortletSpaceStore.DeletePortletSpace(portletSpaceId)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconst portletSpaces = this._portletSpaces();\r\n\t\t\t\tconst portletSpaceIndex = _.findIndex(portletSpaces, portletSpace => portletSpace.ObjectId === this._portletSpace().ObjectId);\r\n\r\n\t\t\t\tportletSpaces.splice(portletSpaceIndex, 1);\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\r\n\t\t\t\tif (portletSpaceId !== this._mainPortletSpaceId) {\r\n\t\t\t\t\tthis.SwitchPortletSpace(this._mainPortletSpaceId)\r\n\t\t\t\t\t\t.then(() => this.EnableDesignMode());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._portletSpaces().length > 0) {\r\n\t\t\t\t\tthis._mainPortletSpaceId = this._portletSpaces()[0].ObjectId;\r\n\r\n\t\t\t\t\tthis.SwitchPortletSpace(this._mainPortletSpaceId)\r\n\t\t\t\t\t\t.then(() => this.EnableDesignMode());\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._mainPortletSpaceId = null;\r\n\t\t\t\tthis._portletSpace(null);\r\n\t\t\t\tthis.GetPortletManagers().forEach((columnManagers: KnockoutObservableArray<PortletManager>) => columnManagers([]));\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate ShowError(error: Rejection) {\r\n\t\tnew Notifier().Failed(JSON.parse(error.message).Message);\r\n\t}\r\n\r\n\tprivate LoadPortletSpaces() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\treturn PortletSpaceStore.GetPortletSpaces(this._params.Control && this._params.Control.Id)\r\n\t\t\t.then(portletSpacesDesign => {\r\n\t\t\t\tconst portletSpaces = portletSpacesDesign.map(portletSpace => PortletSpace.Map(portletSpace));\r\n\t\t\t\tthis._portletSpaces(portletSpaces);\r\n\r\n\t\t\t\tconst mainPortletSpace: PortletSpace = _.find<any>(portletSpaces, portletSpace => portletSpace.IsMain) || portletSpaces[0];\r\n\t\t\t\tthis._mainPortletSpaceId = mainPortletSpace && mainPortletSpace.ObjectId;\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate LoadPortlets(portletSpaceId: number) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\treturn PortletSpaceStore.GetPortletSpace(portletSpaceId)\r\n\t\t\t.then(async designedPortletSpace => {\r\n\t\t\t\tif (designedPortletSpace !== null) {\r\n\t\t\t\t\tawait this.ApplyPortletSpace(designedPortletSpace);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => this.ShowError(error))\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate AddNewPortlet(portlet: EntityPortlet) {\r\n\t\tlet portletManager = new PortletManager({\r\n\t\t\tSubject: this._params.Subject,\r\n\t\t\tIsNew: true\r\n\t\t});\r\n\r\n\t\tportletManager.GeneratePortlet(portlet).then(() => {\r\n\t\t\tthis.ChangePortletPosition({\r\n\t\t\t\tGuid: portletManager.Portlet.Guid,\r\n\t\t\t\tPrevPosition: portlet.Position,\r\n\t\t\t\tNewPosition: portlet.Position\r\n\t\t\t});\r\n\r\n\t\t\tlet columnManagers = this.GetPortletManagersOfColumn(portlet.Position.ColNumber);\r\n\t\t\tthis.InsertInPosition(columnManagers(), portletManager, portlet.Position.RowNumber);\r\n\t\t\tcolumnManagers(columnManagers());\r\n\t\t});\r\n\r\n\t\tthis.BindPortletManagerEvents(portletManager);\r\n\r\n\t\tthis._newPortlets.push(portletManager);\r\n\r\n\t\tthis.IsChanged(true);\r\n\t}\r\n\r\n\tprivate async ApplyPortletSpace(designedPortletSpace: DesignedPortletSpace) {\r\n\t\tthis._portletSpace(PortletSpace.Map(designedPortletSpace));\r\n\r\n\t\tfor(let portlet of designedPortletSpace.Portlets){\r\n\r\n if (portlet && portlet.ScreenModel && portlet.ScreenModel.SubForms.length === 0) continue;\r\n\r\n\t\t\tlet portletManager = new PortletManager({\r\n\t\t\t\tSubject: this._params.Subject,\r\n\t\t\t\tIsNew: false\r\n\t\t\t});\r\n\r\n\t\t\tthis.BindPortletManagerEvents(portletManager);\r\n\r\n\t\t\tawait portletManager.LoadPortlet(portlet.Id, portlet.ScreenId, {\r\n\t\t\t\tRowNumber: portlet.RowPosition,\r\n\t\t\t\tColNumber: portlet.ColPosition\r\n\t\t\t}, portlet.ScreenModel);\r\n\r\n\t\t\tthis.InsertInObservableList(this.GetPortletManagersOfColumn(portlet.ColPosition), portletManager, portlet.RowPosition);\r\n\t\t};\r\n\r\n\t\tif (this._portletsAreLoaded()) {\r\n\t\t\tthis._portletsAreLoaded.valueHasMutated();\r\n\t\t} else {\r\n\t\t\tthis._portletsAreLoaded(true);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ChangePortletPosition(droppedObject: IDraggable) {\r\n\t\tthis.GetPortletManagerByCriteria(manager => manager.Portlet.Guid === droppedObject.Guid).then(manager => {\r\n\t\t\treturn manager || this.GetByCriteria(this._newPortlets, manager => manager.Portlet.Guid === droppedObject.Guid);\r\n\t\t}).then(droppedPortletManager => {\r\n\t\t\tif (droppedPortletManager.Portlet.State === PortletStates.NoChanges) {\r\n\t\t\t\tdroppedPortletManager.SetState(PortletStates.Changed);\r\n\t\t\t\tthis._newPortlets.push(droppedPortletManager);\r\n\t\t\t}\r\n\r\n\t\t\tthis.IsChanged(true);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate BindPortletManagerEvents(manager: PortletManager) {\r\n\t\tlet controlButtonsClickEvents = EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS;\r\n\r\n\t\tlet handlers: { [eventName: string]: EventHandlerCallback } = {};\r\n\t\thandlers[EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS.REMOVE_BUTTON_CLICKED] = {Handler: this.RemovePortlet}\r\n\r\n\t\tlet eventHandlersFactory = new PortletManagerEventHandlersFactory(this, manager, handlers);\r\n\r\n\t\tObject.keys(controlButtonsClickEvents).forEach(event => eventHandlersFactory.BindEvent(controlButtonsClickEvents[event]));\r\n\t}\r\n\r\n\t//Helpers--------------------------------------------------------\r\n\tprivate ProcessByCriteria<TElement>(list: Array<TElement>, criteria: (element: TElement) => boolean, delegate: (element: TElement) => void) {\r\n\t\t_.where(list, criteria).forEach(delegate);\r\n\t}\r\n\r\n\tprivate GetByCriteria<TElement>(list: Array<TElement>, criteria: (element: TElement) => boolean) {\r\n\t\treturn _.find(list, criteria);\r\n\t}\r\n\r\n\t//Concrete helpers----------------------------------------------\r\n\tprivate GetPortletManagerByCriteria(criteria: (manager: PortletManager) => boolean): P.Promise<PortletManager> {\r\n\t\tlet deferredResult = P.defer<PortletManager>();\r\n\r\n\t\tthis.GetPortletManagers().map((columnManagers: KnockoutObservableArray<PortletManager>) => {\r\n\t\t\tcolumnManagers().filter(criteria).forEach((manager: PortletManager) => deferredResult.resolve(manager));\r\n\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate GetPortletManagers(): Array<KnockoutObservableArray<PortletManager>> {\r\n\t\treturn [this._portletManagers1, this._portletManagers2, this._portletManagers3];\r\n\t}\r\n\r\n\tprivate GetPortletManagersOfColumn(columnNumber: number): KnockoutObservableArray<PortletManager> {\r\n\t\treturn this.GetPortletManagers()[columnNumber];\r\n\t}\r\n\r\n\tprivate ProcessEachManager(delegate: (columnManagers: KnockoutObservableArray<PortletManager>, manager: PortletManager) => void) {\r\n\t\tthis.GetPortletManagers().map((columnManagers: KnockoutObservableArray<PortletManager>) => {\r\n\t\t\tcolumnManagers().forEach((manager: PortletManager) => delegate(columnManagers, manager));\r\n\t\t});\r\n\t}\r\n\r\n\tprivate ProcessManagersByCriteria(criteria: (manager: PortletManager) => boolean,\r\n\t\t\t\t\t\t\t\t\t delegate: (columnManagers: KnockoutObservableArray<PortletManager>, manager: PortletManager) => void) {\r\n\r\n\t\tthis.GetPortletManagers().map((columnManagers: KnockoutObservableArray<PortletManager>) => {\r\n\t\t\tcolumnManagers().filter(criteria).forEach((manager: PortletManager) => delegate(columnManagers, manager));\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InsertInPosition<TElement>(list: Array<TElement>, element: TElement, insertPosition: number) {\r\n\t\tlet length = list.length;\r\n\r\n\t\tif (length === 0) {\r\n\t\t\tlist[insertPosition] = element;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlist.push(list[length - 1]);\r\n\r\n\t\tfor (let positionToShift = list.length - 1; positionToShift > insertPosition; positionToShift--) {\r\n\t\t\tlist[positionToShift] = list[positionToShift - 1];\r\n\t\t}\r\n\r\n\t\tlist[insertPosition] = element;\r\n\t}\r\n\r\n\tprivate InsertInObservableList<TElement>(list: KnockoutObservableArray<TElement>, element: TElement, insertPosition: number) {\r\n\t\tlet length = list.length;\r\n\r\n\t\tif (length === 0) {\r\n\t\t\tlist.splice(insertPosition, 0, element);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlist.push(list()[length - 1]);\r\n\r\n\t\tfor (let positionToShift = list.length - 1; positionToShift > insertPosition; positionToShift--) {\r\n\t\t\tlist.splice(positionToShift, 0, list()[positionToShift - 1]);\r\n\t\t}\r\n\r\n\t\tlist.splice(insertPosition, 1, element);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet-space-editor-toolbox clearfix\\\" data-bind=\\\"visible: IsInDesignMode\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: CreatePortletSpace\\\" href=\\\"#\\\" title=\\\"Create portlet space\\\" class=\\\"btn btn-primary\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> <!--ko if: _portletSpace--> <a data-bind=\\\"click: DeletePortletSpace\\\" title=\\\"Delete portlet space\\\" href=\\\"#\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-trash\\\"></i> </a> <div class=\\\"btn-group\\\"> <a class=\\\"btn btn-primary dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" data-bind=\\\"alignDropdown: {type: 'bootstrap', directions: {vertical: true, horizontal: true}, addEventOnclick: true}\\\"> <i class=\\\"fa fa-user\\\"></i> <!--ko with: _portletSpace--> <span data-bind=\\\"text: Name\\\"></span> <!--/ko--> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul class=\\\"dropdown-menu\\\"> <!--ko foreach: _portletSpaces--> <li data-bind=\\\"click: $parent.ChangePortletSpace.bind($parent, $data.ObjectId)\\\"> <a> <span data-bind=\\\"text: $data.Name\\\"></span> </a> </li> <!--/ko--> </ul> </div> <a data-bind=\\\"click: EditPortletSpace\\\" title=\\\"Edit portlet space\\\" href=\\\"#\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> <div class=\\\"make-main\\\"> <!--ko if: IsMain--> <a href=\\\"#\\\" class=\\\"btn btn-default main-active\\\" data-bind=\\\"attr: {title: _labels.MAIN_PORTLET}\\\"> <i class=\\\"fa fa-home\\\"></i> </a> <!--/ko--> </div> <!--ko ifnot: IsMain--> <a data-bind=\\\"click: MakeMain\\\" href=\\\"#\\\" class=\\\"btn btn-success\\\"> <i class=\\\"fa fa-home\\\"></i> Make Main </a> <!--/ko--> <!--/ko--> </div> <div class=\\\"pull-right\\\"> <!--ko if: IsChanged--> <a data-bind=\\\"click: SaveChanges\\\" href=\\\"#\\\" title=\\\"Save\\\" class=\\\"btn btn-success\\\"> <i class=\\\"fa fa-save\\\"></i> </a> <a data-bind=\\\"click: RollbackChanges\\\" href=\\\"#\\\" title=\\\"Cancel\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-times\\\"></i> </a> <!--/ko--> <!--ko ifnot: IsChanged--> <a data-bind=\\\"click: BackToView\\\" href=\\\"#\\\" title=\\\"Back to view\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-sign-out\\\"></i> </a> <!--/ko--> </div> </div> <div class=\\\"portlet-space-toolbox\\\"> <div data-bind=\\\"visible:IsInViewMode\\\"> <a class=\\\"enable-design-mode-btn\\\" data-bind=\\\"click: EnableDesignMode.bind($data),tooltip:{content: _labels.MY_DAILY_STUFF}\\\"> <i class=\\\"fa fa-cog\\\"></i> </a> </div> </div> <!-- ko if: _portletSpace--> <div id=\\\"portlet-area\\\" class=\\\"portlet-area\\\"> <div class=\\\"row portlet-container\\\"> <div data-bind=\\\"css: {'design-mode': IsInDesignMode}\\\" class=\\\"portlet-block portlet-explorer\\\"> <!-- ko with: _portletDesignManager --> <!-- ko with: _portletExplorer--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div data-bind=\\\"css: {'portletBlock-design-mode': IsInDesignMode}, class: GetClasses(1)\\\" data-number=\\\"0\\\" class=\\\"portlet-block portlet-attached\\\"> <!--ko foreach: _portletManagers1--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data), visible: $rawData.IsReady} --> <!-- /ko --> <!--/ko--> </div> <div data-bind=\\\"css: {'portletBlock-design-mode': IsInDesignMode}, class: GetClasses(2)\\\" data-number=\\\"1\\\" class=\\\"portlet-block portlet-attached\\\"> <!--ko foreach: _portletManagers2--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data), visible: $rawData.IsReady} --> <!-- /ko --> <!--/ko--> </div> <div data-bind=\\\"css: {'portletBlock-design-mode': IsInDesignMode}, class: GetClasses(3)\\\" data-number=\\\"2\\\" class=\\\"portlet-block portlet-attached\\\"> <!--ko foreach: _portletManagers3--> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data), visible: $rawData.IsReady} --> <!-- /ko --> <!--/ko--> </div> </div> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {EVENTS} from \"Core/Constant\";\r\nimport {Guid} from \"Core/Common/Guid\";\r\n\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {BaseScreen} from \"Core/Screens/BaseScreen\";\r\nimport {ScreenModel} from \"Core/Models/Screens/ScreenModel\";\r\nimport {IPosition} from \"Core/Portlets/Models/Common/Interfaces/IPosition\";\r\nimport {PortletBar} from \"Core/Controls/PortletBar/PortletBar\";\r\nimport {IPortletRuntimeSettings} from \"Core/Controls/PortletBar/Interfaces/IPortletRuntimeSettings\";\r\nimport {Grid} from \"Core/Controls/Grid/Grid\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\n\r\nimport PortletTemplate from 'Core/Portlets/Templates/Portlet.html';\r\nimport {PortletStates} from \"Core/Portlets/Enums/PortletStates\";\r\n\r\nko.templates[\"Core/Portlets/Templates/Portlet\"] = PortletTemplate;\r\n\r\nexport class Portlet extends BaseScreen {\r\n private _portletBarControl: PortletBar;\r\n private _grid: Grid;\r\n\r\n ObjectId: number;\r\n Name: string;\r\n State: PortletStates;\r\n Position: IPosition;\r\n OldPosition: IPosition;\r\n\r\n get Guid(): Guid {\r\n return this._guid;\r\n }\r\n\r\n get ScreenId(): number {\r\n return this.GetScreenId();\r\n }\r\n\r\n get ScreenName(): string {\r\n return this.GetScreenName();\r\n }\r\n\r\n get ScreenTranslatedName(): string {\r\n return this.GetScreenTranslatedName();\r\n }\r\n\r\n get EntityId(): number {\r\n return this._model.EntityId;\r\n }\r\n\r\n get PortletBar(): PortletBar {\r\n return this._portletBarControl;\r\n }\r\n\r\n constructor(screen: ScreenModel) {\r\n let [portletBar, ...otherControls] = screen.SubForms[0].Controls;\r\n screen.SubForms[0].Controls = otherControls;\r\n\r\n super(screen, RenderModes.View);\r\n\r\n this.Init(screen, portletBar);\r\n\r\n this.BindPortletBarEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return \"Core/Portlets/Templates/Portlet\";\r\n }\r\n\r\n AfterRender(el): void {\r\n }\r\n\r\n AddRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n this.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, runtimeSettings);\r\n }\r\n\r\n ApplyRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n this._portletBarControl.ApplyRuntimeSettings(runtimeSettings);\r\n let appliedSettings = this._portletBarControl.RuntimeSettings();\r\n this.GetAllControls().forEach(control => {\r\n control.ChangeProperty('Search', appliedSettings.Search());\r\n control.ChangeProperty('ReadOnly', appliedSettings.ReadOnly());\r\n });\r\n }\r\n\r\n GetRuntimeSettings(): IPortletRuntimeSettings {\r\n return this._portletBarControl.RuntimeSettings();\r\n }\r\n\r\n Refresh() {\r\n if (this._grid) {\r\n this._grid.LoadData();\r\n }\r\n }\r\n\r\n private Init(screen: ScreenModel, portletBar: ControlModel) {\r\n this.Name = this.ScreenTranslatedName || this.ScreenName;\r\n this._guid = Guid.NewGuid();\r\n this.State = PortletStates.NoChanges;\r\n\r\n this._portletBarControl = new PortletBar({\r\n Model: portletBar,\r\n Form: this.SubForms[0],\r\n RenderMode: RenderModes.View\r\n });\r\n\r\n this._portletBarControl.ObjectId = this.ObjectId;\r\n\r\n this._grid = this.GetControl<Grid>(\"Grid\");\r\n }\r\n\r\n private BindPortletBarEvents() {\r\n let events = EVENTS.PORTLETS.PORTLET_BAR.CONTROL_BUTTONS;\r\n\r\n Object.keys(events).forEach(event => {\r\n let eventName = events[event];\r\n this._portletBarControl.On(eventName, this, () => this.Trigger(eventName));\r\n });\r\n\r\n this._portletBarControl.One(EVENTS.PORTLETS.RUNTIME_SETTINGS_APPLIED, this, eventArgs => this.ApplyControlSettings(eventArgs.data));\r\n this._portletBarControl.On(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, this, eventArgs => this.UpdateRuntimeSettings(eventArgs.data));\r\n }\r\n\r\n\r\n private ApplyControlSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n if (this._grid) {\r\n this._grid.SetRecordsPerPage(runtimeSettings.Length());\r\n\r\n if (this._model.Data) {\r\n this._grid.SetValue({\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._model.Data.RecordId,\r\n RecordSpecsModel: null\r\n });\r\n } else {\r\n this._grid.LoadData();\r\n }\r\n\r\n ['EnableLinkButton', 'EnableAdd&LinkButton', 'EnableAddQueryButton']\r\n .forEach(property => this._grid.ChangeProperty(property, false));\r\n }\r\n }\r\n\r\n private UpdateRuntimeSettings(runtimeSettings: IPortletRuntimeSettings) {\r\n this.ApplyControlSettings(runtimeSettings);\r\n this.Trigger(EVENTS.PORTLETS.RUNTIME_SETTINGS_UPDATED, runtimeSettings);\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"attr: {\\r\\n\\t\\t\\t\\t\\tscreenId: ScreenId,\\r\\n\\t\\t\\t\\t\\tguid: Guid,\\r\\n\\t\\t\\t\\t\\tstate: State\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t\\t'boxed': PortletBar.RuntimeSettings().Kind() === 'boxed',\\r\\n\\t\\t\\t\\t\\t\\t'light': PortletBar.RuntimeSettings().Kind() === 'light',\\r\\n\\t\\t\\t\\t\\t\\t'body-space': PortletBar.RuntimeSettings().UseBodySpace()\\r\\n\\t\\t\\t\\t\\t}\\\" class=\\\"portlet body-space\\\"> <!--ko with: PortletBar --> <!--ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }--> <!--/ko--> <!--/ko--> <div data-bind=\\\"scrollFixer: {}\\\" class=\\\"portlet-body overflow-a unselectable\\\"> <div data-bind=\\\"style: { backgroundColor: PortletBar.RuntimeSettings().DataSpaceColor }\\\"> <!--ko foreach: SubForms--> <!--ko foreach: Controls--> <div class=\\\"portlet-body-content portlet-grid-box\\\"> <div data-bind=\\\"template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) }\\\"></div> </div> <!--/ko--> <!--/ko--> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {Text} from 'Core/Controls/Text/Text'\r\nimport {ICell} from 'Core/ProfilePage/Deduplication/DeduplicationEditor/ICell';\r\nimport {DeduplicationStore, Actions} from 'Core/ProfilePage/Deduplication/Stores/DeduplicationStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {DeduplicationGrid} from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationGrid';\r\n\r\nimport Template from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationCell.html';\r\n\r\nimport {FIELD_TYPES} from 'Core/Constant'\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\n\r\nexport class DeduplicationCell implements ICell {\r\n\tprivate _grid: DeduplicationGrid;\r\n\r\n\tprivate _fieldName: string;\r\n\tpublic _fieldId: number;\r\n\tprivate _value: KnockoutObservable<string>;\r\n\tprivate _type: string;\r\n\tprivate _types = FIELD_TYPES;\r\n\tprivate _isEditMode: KnockoutObservable<boolean>;\r\n\tprivate _editor: KnockoutObservable<Text>;\r\n\tprivate _popUpTriggerAction: boolean = false;\r\n\tprivate _popUpAction: boolean = false;\r\n\tprivate _kSeq: number;\r\n\tprivate _entityId: number;\r\n\tprivate _entityName: string;\r\n\tpublic _selectionType: KnockoutObservable<string>;\r\n\tprivate _selectedAlignedTd: KnockoutObservable<boolean>;\r\n\tprivate _parentRow: any;\r\n\tprivate _deduplicationInstance: any;\r\n\tprivate _tooltipValue: KnockoutObservable<string>;\r\n\tprivate _leftRecordId: number;\r\n\tprivate _rightRecordId: number;\r\n\r\n\tconstructor(fieldId: number,\r\n\t\t\t\tvalue: string,\r\n\t\t\t\ttype: string,\r\n\t\t\t\trow?: any,\r\n\t\t\t\tIsSelected?: boolean,\r\n\t\t\t\tSelectionType?: string,\r\n\t\t\t\tactionType?: string,\r\n\t\t\t\tkSeq?: number,\r\n\t\t\t\tentityId?: number,\r\n\t\t\t\tentityName?: string,\r\n\t\t\t\tdeduplicationInstance?: any) {\r\n\t\tthis._type = type;\r\n\r\n\t\tlet endValue = value;\r\n\t\tthis._tooltipValue = ko.observable('');\r\n\r\n\t\tif (endValue && endValue.length > 25) {\r\n\t\t\tendValue = endValue.substr(0, 25) + '...';\r\n\t\t\tthis._tooltipValue(value);\r\n\t\t\tif (this._type === FIELD_TYPES.Memo) {\r\n\t\t\t\tendValue = '...';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._value = ko.observable(endValue);\r\n\t\tthis._kSeq = kSeq;\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._entityName = entityName;\r\n\t\tthis._selectedAlignedTd = ko.observable(false);\r\n\t\tthis._parentRow = row;\r\n\t\tthis._fieldId = fieldId;\r\n\t\tthis._selectionType = ko.observable(SelectionType);\r\n\t\tthis._deduplicationInstance = deduplicationInstance;\r\n\r\n\t\tif (actionType === 'popUpTrigger') {\r\n\t\t\tthis._popUpTriggerAction = true;\r\n\t\t} else if (actionType === 'popUpAction') {\r\n\r\n\r\n\t\t\tthis._popUpAction = true;\r\n\r\n\t\t} else if (actionType === 'popUpData') {\r\n\t\t\tif (IsSelected) {\r\n\t\t\t\tthis._selectedAlignedTd(true)\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._grid = new DeduplicationGrid();\r\n\t\tthis._grid.On(EVENTS.SAVE_CHANGES, this, ()=> this.SaveChanges());\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\r\n\tSaveChanges() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst changesToSave = [];\r\n\t\tlet Deduplication = this._grid.Rows()[0].Model.Deduplication;\r\n\t\tthis._grid.Rows().map((row: any) => {\r\n\t\t\tif (row._disabled()) return;\r\n\t\t\tlet fieldId = null;\r\n\t\t\tlet actionType = null\r\n\t\t\trow.Cells().map((cell: DeduplicationCell) => {\r\n\t\t\t\tif (cell._fieldId) {\r\n\t\t\t\t\tfieldId = cell._fieldId;\r\n\t\t\t\t}\r\n\t\t\t\tif (cell._selectionType()) {\r\n\t\t\t\t\tactionType = cell._selectionType();\r\n\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tif (fieldId && actionType && actionType !== 'leftSide') {\r\n\t\t\t\tchangesToSave.push({\r\n\t\t\t\t\tFieldId: fieldId,\r\n\t\t\t\t\tAction: Actions[actionType]\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n \r\n const params = {\r\n EntityId: this._entityId,\r\n KSeq: this._kSeq,\r\n Changes: [...changesToSave]\r\n }\r\n\r\n\t\tDeduplicationStore.DeduplicateMatched(params).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._grid.Cancel();\r\n\t\t\tthis._deduplicationInstance.GetRecordsList();\r\n\r\n\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tGetDeduplicationRecord() {\r\n\r\n\t\tthis.InitLockWithRequest();\r\n\r\n\r\n\t}\r\n\r\n\tInitLockWithRequest() {\r\n\t\tconst params = {\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tKSeq: this._kSeq\r\n\t\t};\r\n\r\n\t\tDeduplicationStore.GetDeduplicationMatchedRecordModel(params).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis._grid.RenderModal();\r\n\t\t\tBlockUI.Unblock(this._grid.GetModal().Wrapper);\r\n\r\n\t\t\tthis._grid.SetPopUpData(\r\n\t\t\t\tresult.ResultObject,\r\n\t\t\t\tthis._entityName,\r\n\t\t\t\tthis._deduplicationInstance,\r\n\t\t\t\tthis._entityId,\r\n\t\t\t\tthis._kSeq\r\n\t\t\t);\r\n\t\t}).fail((err) => {\r\n\t\t\tnew Notifier().Failed(err.message);\r\n\t\t});\r\n\t}\r\n\r\n\r\n\tSelectAction(selectionToActivate) {\r\n\t\tconst cells: Array<DeduplicationCell> = this._parentRow.Cells()\r\n\t\tconst indexOfActionCell = _.findIndex(cells,\r\n\t\t\t(cell: DeduplicationCell) => {\r\n\t\t\t\treturn cell._popUpAction;\r\n\t\t\t});\r\n\t\tthis._selectionType(selectionToActivate);\r\n\t\tcells && cells.map((cell) => {\r\n\t\t\tcell._selectedAlignedTd(false);\r\n\t\t});\r\n\t\tif (selectionToActivate === 'leftSide') {\r\n\t\t\tcells[indexOfActionCell - 1]._selectedAlignedTd(true);\r\n\t\t} else if (selectionToActivate === 'merge') {\r\n\t\t\tcells[indexOfActionCell - 1]._selectedAlignedTd(true);\r\n\t\t\tcells[indexOfActionCell + 1]._selectedAlignedTd(true);\r\n\t\t} else if (selectionToActivate === 'rightSide') {\r\n\t\t\tcells[indexOfActionCell + 1]._selectedAlignedTd(true);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\t@enumerable get Value(): KnockoutObservable<string> {\r\n\t\treturn this._value;\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\n'Core/ProfilePage/Deduplication/DeduplicationEditor'\r\n\r\nimport { DeduplicationRow } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationRow';\r\nimport { DeduplicationHeader } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationHeader';\r\n\r\nimport Template from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGrid.html';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\nimport {GridDataModel} from \"Core/Controls/Grid/Models/GridDataModel/GridDataModel\";\r\nimport {GridColumnModel} from \"Core/Controls/Grid/Models/GridDataModel/GridColumnModel\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\n\r\nimport DeduplicationGridTemplate from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp.html';\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp'] = DeduplicationGridTemplate;\r\n\r\nexport class DeduplicationGrid extends Event{\r\n\tprivate _modal: Modal;\r\n\tprivate _labels = LABELS;\r\n\tprivate _rows: KnockoutObservableArray<DeduplicationRow>;\r\n\tprivate _headerColumns: KnockoutObservableArray<DeduplicationHeader>;\r\n\r\n\r\n\tprivate _entityId: number;\r\n\tprivate _kSeq: number;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis._rows = ko.observableArray([]);\r\n\t\tthis._headerColumns = ko.observableArray([]);\r\n\r\n this.AddEvent(EVENTS.SORT);\r\n this.AddEvent(EVENTS.SAVE_CHANGES);\r\n }\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n @enumerable get Columns() {\r\n return this._headerColumns();\r\n }\r\n\r\n GetModal(){\r\n\t\treturn this._modal;\r\n\t}\r\n\r\n ResetSort(excludecolumn: DeduplicationHeader) {\r\n _.each(this._headerColumns(), item => {\r\n if (item !== excludecolumn) {\r\n item.ResetSort();\r\n }\r\n });\r\n }\r\n\r\n\tAfterRender() {}\r\n\r\n\tSetData(deduplications: GridDataModel, entityName: string, deduplicationInstance, restoreSortState?: boolean) {\r\n\t\tif (!deduplications) return;\r\n const headerColumns = [];\r\n\t\tthis._rows([]);\r\n\r\n\t\t_.each(deduplications.Columns, (deduplicationHeader: any, i: number) => {\r\n\t\t\tif (i !== 1) {\r\n\t\t\t\tconst headerName = i === 0 && '%' || deduplicationHeader.FieldMetadata.NameTranslated || deduplicationHeader.FieldMetadata.Name;\r\n const headerColumn = new DeduplicationHeader(deduplicationHeader, headerName);\r\n const oldHeader = this._headerColumns()[i];\r\n\r\n if (oldHeader) {\r\n if (restoreSortState) {\r\n headerColumn.SortOrder = oldHeader.SortOrder;\r\n }\r\n }\r\n\r\n headerColumn.On(EVENTS.SORT, this, (eventArgs: any) => {\r\n this.ResetSort(eventArgs.source);\r\n var sortColumns = [];\r\n _.each(this.Columns, (column) => {\r\n if (column.IsEnableSort) {\r\n sortColumns.push(column.GetSortModel());\r\n }\r\n });\r\n this.Trigger(EVENTS.SORT, { SortColumns: sortColumns });\r\n });\r\n\r\n headerColumns.push(headerColumn);\r\n\t\t\t}\r\n\t\t});\r\n\r\n headerColumns.push(new DeduplicationHeader(new GridColumnModel(), ''));\r\n\r\n this._headerColumns(headerColumns);\r\n\r\n\t\t_.each(deduplications.Rows, (deduplication) => {\r\n\t\t\tconst row = new DeduplicationRow(deduplication, true, entityName, deduplicationInstance);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tGetSelectionType(leftRecordRowCell): string {\r\n\t\tif (leftRecordRowCell.Type === 'MultiSelect' || leftRecordRowCell.Type === 'Memo') {\r\n\t\t\treturn 'merge';\r\n\t\t}\r\n\r\n\t\tconst fieldName = leftRecordRowCell.DefaultFieldName;\r\n\r\n\t\tif (fieldName === 'CHANGEDATE' || fieldName === 'CHANGEDBY') {\r\n\t\t\treturn 'notApplicable';\r\n\t\t}\r\n\r\n\t\tif (fieldName === 'CREATEDATE' || fieldName === 'CREATEDBY') {\r\n\t\t\treturn 'rightSide';\r\n\t\t}\r\n\r\n\t\treturn 'leftSide';\r\n\t}\r\n\r\n\r\n\tSetPopUpData(deduplications: any, entityName: string, deduplicationInstance: any, entityId: number, kSeq: number) {\r\n\t\tif (!deduplications) return;\r\n\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._kSeq = kSeq;\r\n\r\n\t\tthis._rows([]);\r\n\t\tthis._headerColumns([]);\r\n\t\tconst headers: Array<string> = [entityName, 'Record 1', 'Action', 'Record 2'];\r\n\r\n\t\t_.each(headers, (deduplicationHeader: string) => {\r\n\t\t\tthis._headerColumns.push(new DeduplicationHeader(new GridColumnModel(), deduplicationHeader));\r\n\t\t});\r\n\r\n\t\t_.each(deduplications.LeftRecord.Data, (leftRecordRowCell: any, i) => {\r\n\t\t\tconst selectionType = this.GetSelectionType(leftRecordRowCell);\r\n\t\t\tconst rowToInject = {\r\n\t\t\t\tData: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: leftRecordRowCell.FieldName\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(leftRecordRowCell),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'leftSide' || selectionType === 'merge',\r\n Type: leftRecordRowCell.Type\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tDisplayValue: 'Action'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: deduplications.RightRecord.Data[i].FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(deduplications.RightRecord.Data[i]),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'rightSide' || selectionType === 'merge',\r\n Type: leftRecordRowCell.Type\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tIsDisabled: leftRecordRowCell.IsSystem,\r\n\t\t\t\tIsMergeEnabled: leftRecordRowCell.Type === 'MultiSelect' || leftRecordRowCell.Type === 'Text' || leftRecordRowCell.Type === 'Memo',\r\n\t\t\t\tSelectionType: selectionType,\r\n\t\t\t\tDeduplicationInstance: deduplicationInstance,\r\n\t\t\t\tLeftRecordId: deduplications.LeftRecord.Id,\r\n\t\t\t\tRightRecordId: deduplications.RightRecord.Id\r\n\t\t\t};\r\n\t\t\tvar row = new DeduplicationRow(rowToInject);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tSetPopUpDataFromSearch(deduplications: any, entityName: string, deduplicationInstance: any, entityId: number) {\r\n\t\tif (!deduplications) return;\r\n\r\n\t\tthis._entityId = entityId;\r\n\r\n\t\tthis._rows([]);\r\n\t\tthis._headerColumns([]);\r\n\t\tconst headers: Array<string> = [entityName, 'Record 1', 'Action', 'Record 2'];\r\n\t\t_.each(headers, (deduplicationHeader: string) => {\r\n\t\t\tthis._headerColumns.push(new DeduplicationHeader(new GridColumnModel(), deduplicationHeader));\r\n\t\t});\r\n\r\n\t\t_.each(deduplications.LeftRecord.Data, (leftRecordRowCell: any, i) => {\r\n\t\t\tconst selectionType = this.GetSelectionType(leftRecordRowCell);\r\n\t\t\tconst rowToInject = {\r\n\t\t\t\tData: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: leftRecordRowCell.FieldName\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: leftRecordRowCell.FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(leftRecordRowCell),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'leftSide' || selectionType === 'merge',\r\n\t\t\t\t\t\tType: leftRecordRowCell.Type\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tDisplayValue: 'Action'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFieldId: deduplications.RightRecord.Data[i].FieldId,\r\n\t\t\t\t\t\tDisplayValue: this.FormatValue(deduplications.RightRecord.Data[i]),\r\n\t\t\t\t\t\tIsSelected: selectionType === 'rightSide' || selectionType === 'merge',\r\n\t\t\t\t\t\tType: leftRecordRowCell.Type\r\n\t\t\t\t\t}\r\n\t\t\t\t],\r\n\t\t\t\tIsDisabled: leftRecordRowCell.IsSystem,\r\n\t\t\t\tIsMergeEnabled: leftRecordRowCell.Type === 'MultiSelect' || leftRecordRowCell.Type === 'Text' || leftRecordRowCell.Type === 'Memo',\r\n\t\t\t\tSelectionType: selectionType,\r\n\t\t\t\tDeduplicationInstance: deduplicationInstance,\r\n\t\t\t\tLeftRecordId: deduplications.LeftRecord.Id,\r\n\t\t\t\tRightRecordId: deduplications.RightRecord.Id\r\n\t\t\t};\r\n\t\t\tvar row = new DeduplicationRow(rowToInject);\r\n\t\t\tthis._rows.push(row);\r\n\t\t});\r\n\t}\r\n\r\n\tFormatValue(record: any): string {\r\n\t\tif (record.Type == CONTROL_TYPES.TimeSpan && record.Value) {\r\n\t\t\treturn moment(record.Value).format(DATE_FORMATS.LONG_TIME.Format);\r\n\t\t}\r\n\t\treturn record.Value;\r\n\t}\r\n\r\n\r\n\t@enumerable get Rows(): KnockoutObservableArray<DeduplicationRow> {\r\n\t\treturn this._rows;\r\n\t}\r\n\r\n\t@enumerable get Headers(): KnockoutObservableArray<DeduplicationHeader> {\r\n\t\treturn this._headerColumns;\r\n\t}\r\n\r\n\tSaveChanges(){\r\n\t\tthis.Trigger(EVENTS.SAVE_CHANGES);\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis._modal.Close();\r\n\t}\r\n\r\n\tResetRows() {\r\n\t\tthis._rows([]);\r\n\t}\r\n\r\n\tShowModal() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t\tBlockUI.Block({ Target: this._modal.Wrapper });\r\n\t\t}\r\n\t}\r\n\r\n\tRenderModal() {\r\n\r\n\t\tthis._modal = new Modal({\r\n\t\t\taddClass: 'deduplication-modal jBox-padding-20px'\r\n\t\t});\r\n\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\r\n\t\tthis.ShowModal();\r\n\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationGridPopUp';\r\n\t}\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport {BaseColumn, SortOrder} from 'Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn';\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {GridColumnModel} from \"Core/Controls/Grid/Models/GridDataModel/GridColumnModel\";\r\nimport {SortModel} from \"Core/Controls/Grid/Models/SortModel\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\nimport {extractLookupValFieldMetadata} from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\n\r\nexport class DeduplicationHeader extends BaseColumn{\r\n\tprivate _columnName: string;\r\n\r\n\tconstructor(model: GridColumnModel, columnName: string) {\r\n super(model);\r\n\r\n this._columnName = columnName;\r\n\t}\r\n\r\n\t@enumerable get Title(): string {\r\n\t\treturn this._columnName;\r\n\t}\r\n\r\n get IsEnableSort(): boolean {\r\n return this._model.IsEnableSort;\r\n }\r\n\r\n ResetSort() {\r\n\t\tthis._sortOrder(SortOrder.Both);\r\n }\r\n\r\n\tget SortOrder() {\r\n\t\treturn this._sortOrder();\r\n\t}\r\n\r\n\tset SortOrder(order) {\r\n\t\tthis._sortOrder(order);\r\n\t}\r\n\r\n\tGetSortModel(): SortModel {\r\n\t\tconst model = new SortModel();\r\n\r\n\t\tmodel.OrderColumn = this._model.Alias;\r\n\t\tmodel.SortOrder = this._sortOrder();\r\n\r\n\t\treturn model;\r\n\t}\r\n\r\n\r\n\tSort() {\r\n BlockUI.Block();\r\n\t\tif (this._sortOrder() === SortOrder.Both) {\r\n\t\t\tthis._sortOrder(SortOrder.Asc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Asc) {\r\n\t\t\tthis._sortOrder(SortOrder.Desc);\r\n\t\t} else if (this._sortOrder() === SortOrder.Desc) {\r\n\t\t\tthis._sortOrder(SortOrder.Both);\r\n\t\t}\r\n\t\tthis.Trigger(EVENTS.SORT);\r\n }\r\n\r\n\tGetClassNames(model: any, classNames?: string[]): string {\r\n\t\tlet result: string;\r\n\t\tlet additionalClassNames: string;\r\n\t\tif(!this.IsEnableSort){\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tif (model.FieldMetadata) {\r\n\t\t\tresult =\r\n\t\t\t\tmodel.FieldMetadata.Type.toString() + ' ' + model.FieldMetadata.FormatName.toString().replace(' ', '');\r\n\r\n\t\t\tif (model.FieldMetadata.Type === FIELD_TYPES.Lookup) {\r\n\t\t\t\tconst validationFieldMetadata = extractLookupValFieldMetadata(model.FieldMetadata);\r\n\r\n\t\t\t\tif (validationFieldMetadata) {\r\n\t\t\t\t\tresult += ` ${validationFieldMetadata.Type} ${validationFieldMetadata.FormatName.toString().replace(\r\n\t\t\t\t\t\t' ',\r\n\t\t\t\t\t\t''\r\n\t\t\t\t\t)}`;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (model.Type) {\r\n\t\t\tresult = model.Type;\r\n\t\t} else {\r\n\t\t\tresult = '';\r\n\t\t}\r\n\r\n\t\tif (classNames) {\r\n\t\t\tadditionalClassNames = classNames.join(' ');\r\n\r\n\t\t\treturn result + ' ' + additionalClassNames;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { DeduplicationCell } from \"Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationCell\";\r\nimport { DeduplicationModel } from \"Core/ProfilePage/Deduplication/Models/DeduplicationModel\";\r\nimport { DeduplicationActionCell } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationActionCell';\r\nimport { ICell } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/ICell';\r\nimport { EVENTS } from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Events';\r\n//import { UpdateDeduplicationModel } from 'Core/ProfilePage/Deduplication/Models/UpdateDeduplicationModel';\r\nimport { IDictionary } from 'Core/Screens/BaseScreen';\r\nimport { DeduplicationStore } from 'Core/ProfilePage/Deduplication/Stores/DeduplicationStore';\r\n\r\nimport { IKeyValuePair } from 'Core/Portlets/Utils/GuidToPortletInfoMap';\r\nimport { NOTIFICATIONS, LABELS, CONFIRMATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport Template from 'Core/ProfilePage/Deduplication/DeduplicationEditor/Templates/DeduplicationRow.html';\r\nimport enumerable from '../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class DeduplicationRow {\r\n\tprivate _cells: KnockoutObservableArray<ICell>;\r\n\tprivate _model: any;\r\n\tprivate _mainGrid: boolean;\r\n\tprivate _disabled: KnockoutObservable<boolean>;\r\n\tprivate _mergedEnabled: KnockoutObservable<boolean>;\r\n\tprivate _entityName: string;\r\n\tprivate deduplicationIntance: any;\r\n\r\n\r\n\tconstructor(model: any, mainGrid?: boolean, entityName?: string, deduplicationIntance?: any) {\r\n\t\tthis._mainGrid = mainGrid || false;\r\n\t\tthis._model = model;\r\n\t\tthis._cells = ko.observableArray([]);\r\n\t\tthis._disabled = ko.observable(false);\r\n\t\tthis._mergedEnabled = ko.observable(false);\r\n\t\tthis._entityName = entityName;\r\n\t\tthis.deduplicationIntance = this._model.DeduplicationInstance || deduplicationIntance;\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\t@enumerable get Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tInit() {\r\n\t\tconst editCells = [];\r\n\r\n\t\t_.each(this._model.Data, (rowCell: any, i: number) => {\r\n\t\t\tif (rowCell.DisplayValue === 'Action') {\r\n\t\t\t\tthis._cells.push(new DeduplicationCell(\r\n\t\t\t\t\trowCell.FieldId,\r\n\t\t\t\t\t'',\r\n\t\t\t\t\t'',\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis._model.SelectionType,\r\n\t\t\t\t\t'popUpAction',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.deduplicationIntance)\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tif (i === 1 && this._mainGrid) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tconst cell = new DeduplicationCell(\r\n\t\t\t\t\trowCell.FieldId,\r\n\t\t\t\t\trowCell.DisplayValue,\r\n\t\t\t\t\trowCell.Type,\r\n\t\t\t\t\tthis,\r\n\t\t\t\t\trowCell.IsSelected,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\t'popUpData',\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tthis.deduplicationIntance);\r\n\t\t\t\tthis._cells.push(cell);\r\n\t\t\t\teditCells.push(cell);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t\tthis._disabled(this._model.IsDisabled);\r\n\t\tthis._mergedEnabled(this._model.IsMergeEnabled);\r\n\t\tif (this._model.EntityId) {\r\n\t\t\tconst kSeq = this._model.Data[1].DisplayValue;\r\n\t\t\tconst entityId = this._model.EntityId;\r\n\t\t\tthis._cells.push(new DeduplicationCell(\r\n\t\t\t\tnull,\r\n\t\t\t\t'',\r\n\t\t\t\t'',\r\n\t\t\t\tthis,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\t'popUpTrigger',\r\n\t\t\t\tkSeq,\r\n\t\t\t\tentityId,\r\n\t\t\t\tthis._entityName,\r\n\t\t\t\tthis.deduplicationIntance));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\r\n\t}\r\n\r\n\t@enumerable get Cells(): KnockoutObservableArray<ICell> {\r\n\t\treturn this._cells;\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { URL } from 'Core/Common/Url';\r\nimport { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { GenericDeserialize } from 'libs/cerialize';\r\nimport { DeduplicationSubjectsModel, GetMatchedRecords } from 'Core/ProfilePage/Deduplication/Models/DeduplicationSubjectsModel';\r\n//import { MatchedRecordsModel } from 'Core/ProfilePage/Deduplication/Models/MatchedRecordsModel';\r\n\r\n\r\n\r\ninterface IMatchedRecordsModel {\r\n\tEntityId: number;\r\n\tPageNumber: number;\r\n\tRecordsPerPage: number;\r\n\tSort: Array<any>;\r\n}\r\n\r\ninterface IMatchAllModel {\r\n\tEntityId: number;\r\n}\r\n\r\ninterface IDeleteAllModel {\r\n\tEntityId: number;\r\n}\r\n\r\nexport enum Actions {\r\n\tleftSide = 0,\r\n\trightSide = 1,\r\n\tmerge = 2\r\n}\r\n\r\n\r\n\r\ninterface IDeduplicationMatchedRecordModel {\r\n\tEntityId: number,\r\n\tKSeq: number\r\n}\r\n\r\ninterface IDeduplicationRecordModel {\r\n EntityId: number,\r\n LeftRecordId: number,\r\n RightRecordId: number\r\n}\r\n\r\n\r\ninterface IDeduplicationAllModel {\r\n\tEntityId: number,\r\n\tMinimumRate: number\r\n}\r\n\r\ninterface IDeduplicationFieldModel {\r\n\tAction: number,\r\n\tFieldId: number\r\n}\r\n\r\ninterface IDeduplicationMatchedModel {\r\n\tEntityId: number,\r\n\tKSeq: number,\r\n\tChanges: Array<IDeduplicationFieldModel>\r\n}\r\n\r\ninterface IDeduplicationModel {\r\n EntityId: number,\r\n LeftRecordId: number,\r\n RightRecordId: number,\r\n Changes: Array<IDeduplicationFieldModel>\r\n}\r\n\r\n\r\nexport class DeduplicationStore {\r\n\tstatic GetDeduplicationSubjects(): P.Promise<Array<DeduplicationSubjectsModel>> {\r\n\t\tvar deferredResult = P.defer<Array<DeduplicationSubjectsModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/GetCurrentEntityTypeDeduplicationSubjects\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMatchedRecords(params: IMatchedRecordsModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/GetMatchedRecords\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic DeduplicateAll(params: IDeduplicationAllModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/DeduplicateAll\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic MatchAll(params: IMatchAllModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/MatchAll\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(JSON.parse(error.message).Message);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteAll(params: IDeleteAllModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/DeleteAll\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(JSON.parse(error.message).Message);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetDeduplicationMatchedRecordModel(params: IDeduplicationMatchedRecordModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n url: \"api/DeduplicationApi/GetDeduplicationMatchedRecordModel\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static GetDeduplicationRecordModel(params: IDeduplicationRecordModel): P.Promise<any> {\r\n var deferredResult = P.defer<any>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/DeduplicationApi/GetDeduplicationRecordModel\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n\r\n\tstatic DeduplicateMatched(params: IDeduplicationMatchedModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/DeduplicationApi/DeduplicateMatched\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static Deduplicate(params: IDeduplicationModel): P.Promise<any> {\r\n var deferredResult = P.defer<any>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/DeduplicationApi/Deduplicate\",\r\n dataType: \"json\",\r\n type: \"POST\"\r\n }, params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n\r\n\tstatic GetMatchingStatus(entityId: number): P.Promise<any> {\r\n var deferredResult = P.defer<any>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: \"api/DeduplicationApi/GetMatchingStatus\",\r\n dataType: \"json\",\r\n type: \"GET\"\r\n\t\t\t}, params: { EntityId: entityId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(data));\r\n\r\n return deferredResult.promise();\r\n }\t\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class LicenseHolderModel {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tLicenseUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tLicenseConnectUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveConnectUsersNumber: number;\r\n\t@deserialize\r\n\tLicenseRemoteUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveRemoteUsersNumber: number;\r\n\t@deserialize\r\n\tLicenseLimited1UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveLimited1UsersNumber: number;\r\n\t@deserialize\r\n\tLicenseLimited2UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveLimited2UsersNumber: number;\r\n\t@deserialize\r\n\tLicenseLimited3UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveLimited3UsersNumber: number;\r\n\r\n\t@deserialize\r\n\tLicensePortalUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActivePortalUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tLicenseGDPRUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tActiveGDPRUsersNumber: number;\r\n\r\n\t@deserialize\r\n\tMaxRole: number;\r\n\r\n\t@deserialize\r\n\tUserMaxRole: string;\r\n\r\n\t@deserialize\r\n\tExpirationDate: Date;\r\n\r\n\t@deserialize\r\n\tImage: string;\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { LicenseHolderModel } from 'Core/ProfilePage/LicenseHolder/Models/LicenseHolderModel';\r\nimport { AttachmentModel } from \"Core/Controls/Image/Models/AttachmentModel\";\r\n\r\nexport class LicenseHolderStore {\r\n\tstatic GetLicenseHolderModel(): P.Promise<LicenseHolderModel> {\r\n\t\tvar deferredResult = P.defer<LicenseHolderModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.AUTH.GET_CACHED_LICENSE,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject(data.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic UploadLicenseLogo(params: AttachmentModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.AUTH.UPLOAD_LICENSE_LOGO,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject(data.ErrorMessage);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): LicenseHolderModel {\r\n\t\tvar model = GenericDeserialize<LicenseHolderModel>(jsonObject, LicenseHolderModel);\r\n\t\treturn model;\r\n\t}\r\n\t\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport default class Exception {\r\n\t@deserialize\r\n\tMessage: string;\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nimport Exception from \"Core/Results/Exceptions/Base/Exception\";\r\n\r\ninterface IOperationResult {\r\n\tIsSuccessful: boolean;\r\n\tErrorMessage: string;\r\n}\r\n\r\nexport default class OperationResult {\r\n\t@deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n FollowUpRecordId: number;\r\n\r\n\t@deserialize\r\n\tSequence: number;\r\n\r\n\t@deserialize\r\n\tMainLinkRecordId: number;\r\n\r\n\t@deserialize\r\n\tExampleTypeId: number;\r\n\r\n\t@deserialize\r\n\tIsSuccessfull: boolean;\r\n\r\n\t@deserialize\r\n\tErrorMessage: string;\r\n\r\n\t@deserialize\r\n\tOperationMessage: string;\r\n\r\n\t@deserializeAs(Exception)\r\n\tExceptions: Array<Exception>;\r\n\r\n\t@deserialize\r\n\tWarnings: string[];\r\n\r\n\tget Exception() {\r\n\t\treturn this.ErrorMessage;\r\n\t}\r\n\r\n\tconstructor(options?: IOperationResult) {\r\n\t\tif (options) {\r\n\t\t\tthis.ErrorMessage = options.ErrorMessage;\r\n\t\t\tthis.IsSuccessfull = options.IsSuccessful;\r\n\t\t}\r\n\t}\r\n}\t","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class ActionSubjectRecordModel {\r\n @deserialize\r\n ActionEntityId: number;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\t@serialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tRecordName: string;\r\n\r\n\t@deserialize\r\n\tRecordTranslatedName: string;\r\n\r\n\t@deserialize\r\n RecordTypeName: string;\r\n\r\n\t@deserialize\r\n\tRecordTypeTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatusId: number;\r\n\r\n\t@deserialize\r\n\tLifeStatusName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatusTranslatedName: string;\r\n\r\n @deserialize\r\n IsFollowUpDisabled: boolean;\r\n\r\n @deserialize\r\n DisabledReason: string;\r\n\r\n @deserialize\r\n FollowupModeId: number;\r\n\r\n @deserialize\r\n FollowupModeName: string;\r\n\r\n get DisplayRecordTypeName(): string{\r\n \treturn this.RecordTypeTranslatedName || this.RecordTypeName;\r\n\t}\r\n\r\n\tget DisplayRecordName(): string{\r\n\t\treturn this.RecordTranslatedName || this.RecordName;\r\n\t}\r\n\r\n\tconstructor(entityId?: number, recordId?: number) {\r\n\t\tthis.EntityId = entityId;\r\n\t\tthis.RecordId = recordId;\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { ReferenceModel } from \"./ReferenceModel\";\r\nimport { RightsModel } from \"./RightsModel\";\r\nimport { TranslationModel } from \"./TranslationModel\";\r\n\r\n\r\nexport class ControlDataModel {\r\n\tconstructor(init?: Partial<ControlDataModel>) {\r\n\t\tthis.ControlId = 0;\r\n\t\tthis.FieldName = null;\r\n\t\tthis.FieldId = null;\r\n\t\tthis.Value = '';\r\n\t\tthis.Translations = [];\r\n\t\tthis.ValFieldTypeName = null;\r\n\t\tthis.LabelOriginalValue = '';\r\n\t\tObject.assign(this, init);\r\n\t}\r\n\r\n\t@deserialize\r\n\tControlId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n\t@deserialize\r\n\tValue: string | any;\r\n\r\n\t@deserialize\r\n\tLabelOriginalValue: string | any;\r\n\r\n\t@deserialize\r\n\tValues: any;\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tDisplayValue: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\t@deserializeAs(ReferenceModel)\r\n\tReference: ReferenceModel;\r\n\r\n\tRights: RightsModel;\r\n\r\n\tFieldName: string;\r\n\t\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tValFieldTypeName: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class LifeStatusInfo {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tLastStatusDate: Date;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\tModified: boolean;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\tconstructor(name?: string, lastStatusDate?: Date) {\r\n\t\tthis.Name = name;\r\n\t\tthis.LastStatusDate = lastStatusDate;\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport interface IRecordExampleParams {\r\n\tIsExample: boolean;\r\n\tPossibleToExample: boolean;\r\n}\r\n\r\nexport class RecordExampleModel {\r\n\t@deserialize\r\n\tIsExample: boolean;\r\n \r\n\t@deserialize\r\n\tPossibleToExample: boolean;\r\n\r\n\tconstructor(params?: IRecordExampleParams) {\r\n\t\tif (params) {\r\n\t\t\tthis.IsExample = params.IsExample;\r\n\t\t\tthis.PossibleToExample = params.PossibleToExample;\r\n\t\t}\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport interface IRecordPersonalizationParams {\r\n\tIsPersonalized: boolean;\r\n\tPossibleToPersonalize: boolean;\r\n}\r\n\r\nexport class RecordPersonalizationModel {\r\n\t@deserialize\r\n\tIsPersonalized: boolean;\r\n\t@deserialize\r\n\tPossibleToPersonalize: boolean;\r\n\r\n\tconstructor(params?: IRecordPersonalizationParams) {\r\n\t\tif (params) {\r\n\t\t\tthis.IsPersonalized = params.IsPersonalized;\r\n\t\t\tthis.PossibleToPersonalize = params.PossibleToPersonalize;\r\n\t\t}\r\n\t}\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { LifeStatusInfo } from \"./LifeStatusInfo\";\r\nimport { RecordExampleModel } from \"./RecordExampleModel\";\r\nimport { RecordPersonalizationModel } from \"./RecordPersonalizationModel\";\r\n\r\nexport interface IRecordSpecsParams {\r\n\tRecordPersonalization: RecordPersonalizationModel;\r\n\tLifeStatusInfo: LifeStatusInfo;\r\n\tRecordExampleInfo: RecordExampleModel;\r\n}\r\n\r\nexport class RecordSpecsModel {\r\n\t@deserialize\r\n\tIsNewRecord: boolean;\r\n\r\n\t@deserializeAs(RecordPersonalizationModel)\r\n\tRecordPersonalization: RecordPersonalizationModel;\r\n\r\n\t@deserializeAs(RecordExampleModel)\r\n\tRecordExampleInfo: RecordExampleModel;\r\n\r\n\t@deserializeAs(LifeStatusInfo)\r\n\tLifeStatusInfo: LifeStatusInfo;\r\n\r\n\t@deserialize\r\n\tRecordOwner: number;\r\n\r\n\t@deserialize\r\n\tIsExample: boolean;\r\n\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\t@deserialize\r\n\tIsDisabled: boolean;\r\n\r\n\tconstructor(params?: IRecordSpecsParams) {\r\n\t\tthis.IsNewRecord = true;\r\n\r\n\t\tif (params) {\r\n\t\t\tthis.RecordPersonalization = params.RecordPersonalization;\r\n\t\t\tthis.LifeStatusInfo = params.LifeStatusInfo;\r\n\t\t\tthis.RecordExampleInfo = params.RecordExampleInfo;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate GetDefaultParams(): IRecordSpecsParams {\r\n\t\treturn {\r\n\t\t\tRecordPersonalization: new RecordPersonalizationModel(),\r\n\t\t\tRecordExampleInfo: new RecordExampleModel(),\r\n\t\t\tLifeStatusInfo: new LifeStatusInfo()\r\n\t\t}\r\n\t}\r\n}\r\n","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { ReferenceTableModel } from \"./ReferenceTableModel\";\r\nimport { SelectedEntityRecordModel } from \"./SelectedEntityRecordModel\";\r\n\r\nexport class ReferenceModel {\r\n\t@deserializeAs(SelectedEntityRecordModel)\r\n\tSelectedEntityRecord: SelectedEntityRecordModel;\r\n\r\n\t@deserializeAs(ReferenceTableModel)\r\n\tReferenceTable: ReferenceTableModel;\r\n\r\n\t@deserialize\r\n\tIsModified: boolean;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tRecordId: number;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class ReferenceTableModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslation: string;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserialize\r\n\tValidationError: string;\r\n\r\n\t@deserialize\r\n\tIsValid: boolean;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class RightsModel {\r\n\t@deserialize\r\n\tIsDeletingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsEditingAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tChangeSecurityAllowance: boolean;\r\n\r\n\t@deserialize\r\n\tIsChangingSecurityAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsKanbanBoardExist: boolean;\r\n\r\n\t@deserialize\r\n\tIsAddingRecordAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tIsRecordSecurityOk: boolean;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nimport { TagsScreenDataModel } from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport { ControlDataModel } from \"./ControlDataModel\";\r\nimport { RightsModel } from \"./RightsModel\";\r\nimport { RecordSpecsModel } from \"./RecordSpecsModel\";\r\nimport { ActionSubjectRecordModel } from \"./ActionSubjectRecordModel\";\r\n\r\nexport class ScreenDataModel {\r\n\t@deserialize\r\n\tRecordId: number;\r\n\r\n\t@deserialize\r\n\tRecordExists: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis.ControlsData = [];\r\n\t\tthis.QueryBuilderData = [];\r\n\t\tthis.RecordId = 0;\r\n\t}\r\n\r\n\t@deserialize\r\n\tIsTypeTransformationRequired: boolean;\r\n\r\n\t@deserializeAs(ControlDataModel)\r\n\tControlsData: Array<ControlDataModel>;\r\n\r\n\t@deserializeAs(ControlDataModel)\r\n\tQueryBuilderData: Array<ControlDataModel>;\r\n\r\n\t@deserializeAs(RightsModel)\r\n\tRights: RightsModel;\r\n\r\n\t@deserializeAs(RecordSpecsModel)\r\n\tRecordSpecs: RecordSpecsModel;\r\n\r\n\t@deserializeAs(TagsScreenDataModel)\r\n\tScreenTags: Array<TagsScreenDataModel>;\r\n\r\n\t@deserializeAs(ActionSubjectRecordModel)\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class SelectedEntityModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n Translation: string;\r\n\r\n @deserializeAs(IconModel)\r\n\tIcon: IconModel;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\nimport { SelectedEntityModel } from \"./SelectedEntityModel\";\r\nimport { SelectedRecordModel } from \"./SelectedRecordModel\";\r\n\r\nexport class SelectedEntityRecordModel {\r\n\t@deserializeAs(SelectedEntityModel)\r\n\tSelectedEntity: SelectedEntityModel;\r\n\r\n\t@deserializeAs(SelectedRecordModel)\r\n\tSelectedRecord: SelectedRecordModel;\r\n\r\n\t@deserialize\r\n\tIsValid: boolean;\r\n\r\n\t@deserialize\r\n\tValidationError: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class SelectedRecordModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslation: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}","import {deserialize, deserializeAs, serialize, serializeAs} from \"libs/cerialize\";\r\n\r\nexport class TranslationModel {\r\n\t@deserialize\r\n\tLanguageId: number;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}","import 'pubsub';\r\n\r\nimport {IScreen} from 'Core/Screens/IScreen';\r\nimport {ScreenStore} from 'Core/ScreenManager/Stores/ScreenStore';\r\nimport {ScreenFactory} from 'Core/Screens/ScreenFactory';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport { ConcreteEntityModel } from '../../QueryBuilder/Models/ConcreteEntityModel';\r\n\r\nexport interface IEditScreenOptions {\r\n EntityId: number;\r\n TableTypeId?: number;\r\n TableTypeName?: string;\r\n KindId?: number;\r\n RecordId?: number;\r\n LoadAsExample?: boolean;\r\n DataMode?: DataModes;\r\n SubjectLifestatusId?: number;\r\n ActionSubjectRecord?: ActionSubjectRecordModel;\r\n ParentRecordId?: number;\r\n AliasSuffix?: string;\r\n}\r\n\r\nexport interface IGetScreenByIdParams {\r\n ScreenId: number;\r\n RecordId?: number;\r\n RaiseNotImplemented?: boolean;\r\n}\r\n\r\nlet getScreenByIdDefaultParams: IGetScreenByIdParams = {\r\n ScreenId: 0,\r\n RecordId: 0,\r\n RaiseNotImplemented: false\r\n}\r\n\r\nexport class ScreenManager {\r\n static GetScreenById(params: IGetScreenByIdParams): P.Promise<IScreen> {\r\n var deferredResult = P.defer<IScreen>();\r\n\r\n params = Object.assign({}, getScreenByIdDefaultParams, params);\r\n ScreenStore.GetScreenById({ScreenId: params.ScreenId, RecordId: params.RecordId})\r\n .then(screenModel => {\r\n if (screenModel.Id === 0) {\r\n if (params.RaiseNotImplemented) {\r\n PubSub.publish('SCREEN_NOT_IMPLEMENTED', null);\r\n }\r\n deferredResult.reject({message: 'Screen not implemented'});\r\n return;\r\n }\r\n\r\n var screen = ScreenFactory.GetScreenInstance(screenModel);\r\n if (screen) {\r\n deferredResult.resolve(screen);\r\n } else {\r\n deferredResult.reject({message: \"Error loading screen\"});\r\n }\r\n })\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetEditScreen(options: IEditScreenOptions): P.Promise<IScreen> {\r\n const dataMode = options.DataMode || DataModes.Default;\r\n const entityId = options.EntityId;\r\n\r\n let tableTypeId = options.TableTypeId;\r\n\r\n if (!tableTypeId) {\r\n tableTypeId = !options.TableTypeName ? 0 : null;\r\n }\r\n\r\n const recordId = options.RecordId || 0;\r\n const aliasSuffix = options.AliasSuffix || '';\r\n\r\n var deferredResult = P.defer<IScreen>();\r\n\r\n ScreenStore.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n TableTypeName: options.TableTypeName,\r\n KindId: options.KindId,\r\n RecordId: recordId,\r\n LoadAsExample: options.LoadAsExample,\r\n ParentRecordId: options.ParentRecordId,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: options.SubjectLifestatusId\r\n }).then(screenModel => {\r\n if (!screenModel.Id) {\r\n deferredResult.resolve(null);\r\n return;\r\n }\r\n\r\n if (dataMode === DataModes.Copy || dataMode === DataModes.CopyWithRelations || dataMode === DataModes.CopyToType) {\r\n screenModel.Data.RecordSpecs.IsNewRecord = true;\r\n }\r\n\r\n screenModel.DataMode = dataMode;\r\n screenModel.SubjectLifestatusId = options.SubjectLifestatusId;\r\n screenModel.ActionSubjectRecord = options.ActionSubjectRecord;\r\n screenModel.AliasSuffix = aliasSuffix;\r\n\r\n var screen = ScreenFactory.GetScreenInstance(screenModel);\r\n if (screen) {\r\n deferredResult.resolve(screen);\r\n } else {\r\n deferredResult.reject({message: \"This type not found in screen factory\"});\r\n }\r\n }).fail(err => {\r\n deferredResult.reject(err);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDesignScreen(screenId: number): P.Promise<DesignScreen> {\r\n var deferredResult = P.defer<DesignScreen>();\r\n BlockUI.Block();\r\n\r\n let getSubjectEntityPromise = ScreenStore.GetSubjectEntity(screenId);\r\n let getDesignScreenPromise = ScreenStore.GetDesignScreen({ FormId: screenId });\r\n\r\n P.when(getDesignScreenPromise, getSubjectEntityPromise)\r\n .always(()=>BlockUI.Unblock())\r\n .then(result => {\r\n var screen = ScreenFactory.GetDesignScreenInstance(result[0], result[1])\r\n deferredResult.resolve(screen)\r\n }).fail(err => Notifier.Failed(err.message));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static DeleteScreen(screenId: number): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreen>();\r\n BlockUI.Block();\r\n ScreenStore.DeleteScreen({FormId: screenId})\r\n .always(() => BlockUI.Unblock())\r\n .then(() => deferredResult.resolve(null))\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateScreenName(screenId: number, name: string): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreen>();\r\n BlockUI.Block();\r\n ScreenStore.UpdateScreenName({FormId: screenId, Name: name})\r\n .always(() => BlockUI.Unblock())\r\n .then(() => deferredResult.resolve(null))\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetScreenByScreenType(entityId: number,\r\n screenType: ScreenTypes,\r\n recordId: number = 0,\r\n dataMode: DataModes = DataModes.Default,\r\n isLinkEditor: boolean = false) {\r\n var deferredResult = P.defer<IScreen>();\r\n\r\n ScreenStore.GetScreenByScreenType({\r\n EntityId: entityId,\r\n ScreenType: screenType,\r\n RecordId: recordId,\r\n DataMode: dataMode\r\n })\r\n .then(screenModel => {\r\n screenModel.DataMode = dataMode;\r\n var screen = ScreenFactory.GetScreenInstance(screenModel, isLinkEditor);\r\n if (screen) {\r\n deferredResult.resolve(screen);\r\n }\r\n })\r\n .fail(err => {\r\n if (err.status === 400) {\r\n let error = JSON.parse(err.message);\r\n deferredResult.reject({\r\n message: error.Message,\r\n status: err.status\r\n });\r\n } else {\r\n deferredResult.reject({\r\n message: err.message,\r\n status: err.status\r\n });\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static IsTypeTransformationRequired(entityId: number, recordId: number): P.Promise<boolean> {\r\n var deferredResult = P.defer<boolean>();\r\n ScreenStore.IsTypeTransformationRequired({EntityId: entityId, RecordId: recordId})\r\n\t .then((data) => deferredResult.resolve(data))\r\n .fail(error => deferredResult.reject(error));\r\n\r\n return deferredResult.promise();\r\n }\r\n}\r\n","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {ScreenModel, DesignScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport { ConcreteEntityModel } from '../../../QueryBuilder/Models/ConcreteEntityModel';\r\n\r\nexport interface IGetDesignScreenByIdRequestModel {\r\n FormId: number;\r\n};\r\n\r\nexport interface IUpdateScreenNameRequestModel {\r\n FormId: number;\r\n Name: string;\r\n};\r\n\r\nexport interface IGetScreenModelByIdRequestModel {\r\n ScreenId: number;\r\n RecordId?: number;\r\n};\r\n\r\nexport interface IGetScreenByScreenType {\r\n EntityId: number;\r\n ScreenType: number;\r\n RecordId: number;\r\n DataMode: DataModes;\r\n}\r\n\r\nexport interface IGetEditScreenRequestModel {\r\n EntityId: number;\r\n\tTableTypeId?: number;\r\n\tTableTypeName?: string;\r\n\tKindId?: number;\r\n RecordId: number;\r\n LoadAsExample: boolean;\r\n ParentRecordId?: number;\r\n DataMode?: DataModes;\r\n SubjectLifestatusId?: number;\r\n}\r\n\r\nexport class ScreenStore {\r\n static GetScreenById(params: IGetScreenModelByIdRequestModel): P.Promise<ScreenModel> {\r\n var deferredResult = P.defer<ScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_SCREEN_BY_ID,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n deferredResult.resolve(this.Deserialize(data));\r\n }).fail(() => deferredResult.reject({message: \"Error getting screen\"}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetDesignScreen(params: IGetDesignScreenByIdRequestModel): P.Promise<DesignScreenModel> {\r\n var deferredResult = P.defer<DesignScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FormDesignerApi/GetScreen',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.DeserializeDesignScreen(data));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetSubjectEntity(screenId: number): P.Promise<ConcreteEntityModel> {\r\n var deferredResult = P.defer<ConcreteEntityModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FormDesignerApi/GetSubjectEntity',\r\n type: 'GET'\r\n }, params: { ScreenId: screenId }\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => deferredResult.resolve(GenericDeserialize<ConcreteEntityModel>(data, ConcreteEntityModel)));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateScreenName(params: IUpdateScreenNameRequestModel): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.UPDATE_SCREEN_NAME,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }).fail(() => deferredResult.reject({message: \"Error deleting screen\"}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\r\n static DeleteScreen(params: IGetDesignScreenByIdRequestModel): P.Promise<any> {\r\n var deferredResult = P.defer<DesignScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.DELETE_SCREEN,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(response => {\r\n if (response.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({message: response.ErrorMessage});\r\n }\r\n }).fail(() => deferredResult.reject({message: \"Error deleting screen\"}));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetScreenByScreenType(params: IGetScreenByScreenType): P.Promise<ScreenModel> {\r\n var deferredResult = P.defer<ScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_SCREEN_BY_SCREEN_TYPE,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data.ResultObject));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n\r\n })\r\n .fail(err => deferredResult.reject(err));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetEditScreen(params: IGetEditScreenRequestModel): P.Promise<ScreenModel> {\r\n var deferredResult = P.defer<ScreenModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.GET_EDIT_SCREEN,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(this.Deserialize(data.ResultObject));\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n static Deserialize(jsonObject: any): ScreenModel {\r\n var model = <ScreenModel>Deserialize(jsonObject, ScreenModel);\r\n return model;\r\n }\r\n\r\n static DeserializeDesignScreen(jsonObject: any): DesignScreenModel {\r\n var model = <DesignScreenModel>Deserialize(jsonObject.ResultObject, DesignScreenModel);\r\n return model;\r\n }\r\n\r\n static IsTypeTransformationRequired(params: any): P.Promise<boolean> {\r\n let deferredResult = P.defer<boolean>();\r\n\r\n let requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.IS_TYPE_TRANSFORMATION_REQUIRED,\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(data.ResultObject);\r\n } else {\r\n deferredResult.reject({message: data.ErrorMessage});\r\n }\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {BaseControl} from \"Core/Controls/BaseControl/BaseControl\";\r\nimport {BaseScreen} from \"Core/Screens/BaseScreen\";\r\nimport {IControlParam} from \"Core/Screens/IScreen\";\r\nimport {RenderModes, CONTROL_TYPES } from \"Core/Constant\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {Search} from \"Core/Controls/Search/Search\";\r\nimport {IForm} from \"Core/Screens/IScreen\";\r\nimport {ButtonSave} from \"Core/Controls/ButtonSave/ButtonSave\";\r\nimport {ButtonCancel} from \"Core/Controls/ButtonCancel/ButtonCancel\";\r\nimport { ButtonFollowUp } from \"Core/Controls/ButtonFollowUp/ButtonFollowUp\";\r\nimport {IStaticControlsPosition, StaticControlsProvider} from './StaticControlsProvider';\r\nimport {ControlFactory} from './ControlFactory';\r\n\r\nexport class StaticControlsInitializer {\r\n\tprivate static _initialized: boolean;\r\n\tprivate static _controlsDictionaryDelegate: { [screenType: string]: (screen: BaseScreen) => void };\r\n\r\n\tstatic AddStaticControls(screen: BaseScreen) {\r\n\t\tthis.Init();\r\n\t\tlet screenType = screen.GetType();\r\n\t\treturn this._controlsDictionaryDelegate[screenType](screen);\r\n\t}\r\n\r\n\tprivate static Init() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthis._controlsDictionaryDelegate = {};\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.ConsultScreen]] = this.AddForConsultScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.SpecialScreen]] = this.AddForSpecialScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.Dashboard]] = this.AddForDashboard.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.ListScreen]] = this.AddForListScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.EditScreen]] = this.AddForEditScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.Portlet]] = this.AddForPortlet.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.FormDesigner]] = this.AddForFormDesigner.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.LinkEditor]] = this.AddForLinkEditor.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.LookupEditorNewRecord]] = this.AddForLookupEditorNewRecord.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.QueryScreen]] = this.AddForQueryScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.CardScreen]] = this.AddForCardScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.ProcessCardPage]] = this.AddForProcessCardPage.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.StepsScreen]] = this.AddForStepsScreen.bind(this);\r\n\t\t\tthis._controlsDictionaryDelegate[ScreenTypes[ScreenTypes.EmptyScreen]] = this.AddForEmptyScreenScreen.bind(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static AddForQueryScreen(screen: BaseScreen) {}\r\n\r\n\tprivate static AddForCardScreen(screen: BaseScreen) {}\r\n\r\n\tprivate static AddForEmptyScreenScreen(screen: BaseScreen) {}\r\n\r\n private static AddForConsultScreen(screen: BaseScreen) {\r\n const staticControlsPosition = StaticControlsProvider.ForConsultScreen(screen.ShowFollowUp);\r\n this.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForSpecialScreen(screen: BaseScreen) {\r\n\t}\r\n\r\n\tprivate static AddForDashboard(screen: BaseScreen) {\r\n\t}\r\n\r\n\tprivate static AddForListScreen(screen: BaseScreen) {\r\n\t}\r\n\r\n\tprivate static AddForEditScreen(screen: BaseScreen) {\r\n\t\tconst staticControlsPosition = StaticControlsProvider.ForEditScreen(screen.ShowFollowUp, screen.IsDashMain);\r\n\t\tthis.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForLinkEditor(screen: BaseScreen) {\r\n\t\tconst staticControlsPosition = StaticControlsProvider.ForLinkEditor();\r\n\t\tthis.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForLookupEditorNewRecord(screen: BaseScreen) {\r\n\t\tconst staticControlsPosition = StaticControlsProvider.AddForLookupEditorNewRecord();\r\n\t\tthis.RegisterStaticControls(staticControlsPosition, screen);\r\n\t}\r\n\r\n\tprivate static AddForPortlet(screen: BaseScreen) { }\r\n\r\n\tprivate static AddForFormDesigner(screen: BaseScreen) { }\r\n\r\n\tprivate static AddForProcessCardPage(screen: BaseScreen) { }\r\n\r\n\tprivate static AddForStepsScreen(screen: BaseScreen) { }\r\n\r\n\tprivate static BuildControl(model: ControlModel, renderMode: RenderModes, subForm: IForm) {\r\n\t return ControlFactory.CreateControl({\r\n Model: model,\r\n Form: subForm,\r\n RenderMode: renderMode,\r\n IsStatic: true\r\n });\r\n }\r\n\r\n private static RegisterStaticControls(staticControlsPosition: IStaticControlsPosition, screen: BaseScreen) {\r\n\t\tstaticControlsPosition.ActionBar.reverse().forEach(controlModel => {\r\n const control = this.BuildControl(controlModel, screen.RenderMode, screen.ActionBar);\r\n\t\t\tscreen.ActionBar && screen.ActionBar.AddStaticControl(control);\r\n });\r\n\r\n\t\tstaticControlsPosition.SubForms.forEach((subForm, subFormIndex) => subForm.reverse().forEach(controlModel => {\r\n const control = this.BuildControl(controlModel, screen.RenderMode, screen.SubForms[subFormIndex]);\r\n screen.SubForms[subFormIndex].AddStaticControl(control);\r\n }));\r\n\r\n\t\tstaticControlsPosition.BottomBar.reverse().forEach(controlModel => {\r\n const control = this.BuildControl(controlModel, screen.RenderMode, screen.BottomBar);\r\n\t\t\tscreen.BottomBar && screen.BottomBar.AddStaticControl(control);\r\n })\r\n }\r\n}","import { GridRow } from \"Core/Controls/Grid/BaseGrid/GridRow/GridRow\";\r\n\r\nexport class MenuItemModel {\r\n\tconstructor(public row: GridRow,\r\n\t\tpublic DisplayValue: string, public Disabled: boolean) {\r\n\t}\r\n}","import * as _ from 'underscore';\r\n\r\nimport { GridRow } from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport { PathRunner } from \"Core/Components/PathRunner/PathRunner\";\r\n\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport enumerable from '../../Common/Decorators/EnumerableDecorator';\r\nimport { GlobalManager, GLOBALS } from '../../GlobalManager/GlobalManager';\r\nimport { MenuItemModel } from './Models/MenuItemModel';\r\nimport { PUB_SUB_EVENTS } from 'MenuManager/PubSubEvents';\r\n\r\nimport ViewTemplate from 'Core/Components/ScreenSwitcher/Templates/View.html';\r\n\r\n\r\nexport class ScreenSwitcher {\r\n\tprivate _previousScreen: GridRow;\r\n\tprivate _nextScreen: GridRow;\r\n\tprivate _gridRowData: any;\r\n\tprivate _currentRow: GridRow;\r\n\tprivate _screen: any;\r\n\tprivate _labels = LABELS;\r\n\tprivate _notifications = NOTIFICATIONS;\r\n\r\n\tprivate _enabled: boolean;\r\n\tprivate _menuItems: Array<MenuItemModel>;\r\n\r\n\tconstructor(currentGridRow: GridRow, gridRowData: any, screen: any) {\r\n\t\tthis._gridRowData = gridRowData;\r\n\t\tthis._screen = screen;\r\n\t\tthis._menuItems = [];\r\n\r\n\t\tthis._currentRow = currentGridRow.Model\r\n\t\t\t? _.find(gridRowData, currentGridRow.Model)\r\n\t\t\t: _.find(gridRowData, currentGridRow);\r\n\r\n\t\tconst indexOfCurrentRow = this._gridRowData.indexOf(this._currentRow);\r\n\t\tif (indexOfCurrentRow === 0) {\r\n\t\t\tthis._previousScreen = null;\r\n\t\t\tthis._nextScreen = this._gridRowData[indexOfCurrentRow + 1];\r\n\t\t} else if (indexOfCurrentRow === this._gridRowData.length - 1) {\r\n\t\t\tthis._previousScreen = this._gridRowData[indexOfCurrentRow - 1];\r\n\t\t\tthis._nextScreen = null;\r\n\t\t} else {\r\n\t\t\tthis._previousScreen = this._gridRowData[indexOfCurrentRow - 1];\r\n\t\t\tthis._nextScreen = this._gridRowData[indexOfCurrentRow + 1];\r\n\t\t}\r\n\r\n\t\tconst searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tif (this._gridRowData.length > searchScreenIfRecordsCount) {\r\n\t\t\tthis._enabled = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._enabled = true;\r\n\t\t\tthis._menuItems = this._gridRowData.map(row => this.GetMenuItem(row));\r\n\t\t}\r\n\t}\r\n\r\n private GetMenuItem(row: any): MenuItemModel {\r\n\t\tlet nameField = row.Data\r\n\t\t\t? row.Data.find(s => s.FieldMetadata.Name === \"NAME\")\r\n\t\t\t: row.Model.Data.find(s => s.FieldMetadata.Name === \"NAME\");\r\n const displayValue = nameField ? nameField.TranslatedValue ? nameField.TranslatedValue : nameField.DisplayValue : null;\r\n\r\n\t\treturn new MenuItemModel(row, displayValue, row == this._currentRow)\r\n }\r\n\r\n GetTemplate() {\r\n\t\treturn ViewTemplate;\r\n\t}\r\n\r\n\tGetEnabled():boolean {\r\n\t\treturn this._enabled;\r\n\t}\r\n\r\n\t@enumerable get GridRowData() {\r\n\t\treturn this._gridRowData;\r\n\t}\r\n\r\n\t@enumerable get NextScreen() {\r\n\t\treturn this._nextScreen;\r\n\t}\r\n\t@enumerable get CurrentRow() {\r\n\t\treturn this._currentRow;\r\n\t}\r\n\r\n\tGetPreviousScreen() {\r\n\t\tthis._screen._modal.Close();\r\n\t\tconst isSpecialScreenExist = this._previousScreen.Form && this._previousScreen.Form.GetScreen() && this._previousScreen.Form.GetScreen().IsSpecialScreenExist;\r\n\t\tPathRunner.Instance.GetUnit(this._previousScreen.EntityId, isSpecialScreenExist).LoadNewData(this._previousScreen.RecordId);\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: this._previousScreen.EntityId,\r\n\t\t\tRecordId: this._previousScreen.RecordId,\r\n\t\t\tRecordTypeId: this._previousScreen.RecordTypeId, \r\n\t\t\tIsOpenInModal: true,\r\n\t\t\tOwner: null, \r\n\t\t\tCurrentRow: this._previousScreen,\r\n\t\t\tRowList: this._gridRowData,\r\n\t\t\tIsOpenAgenda: false,\r\n\t\t\tIsHyperlink: true\r\n\t\t});\r\n\t};\r\n\r\n\tGetNextScreen() {\r\n\t\tthis._screen._modal.Close();\r\n\t\tconst isSpecialScreenExist = this._nextScreen.Form && this._nextScreen.Form.GetScreen() && this._nextScreen.Form.GetScreen().IsSpecialScreenExist;\r\n\t\tPathRunner.Instance.GetUnit(this._nextScreen.EntityId, isSpecialScreenExist).LoadNewData(this._nextScreen.RecordId);\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: this._nextScreen.EntityId,\r\n\t\t\tRecordId: this._nextScreen.RecordId,\r\n\t\t\tRecordTypeId: this._nextScreen.RecordTypeId,\r\n\t\t\tIsOpenInModal: true,\r\n\t\t\tOwner: null,\r\n\t\t\tCurrentRow: this._nextScreen,\r\n\t\t\tRowList: this._gridRowData,\r\n\t\t\tIsOpenAgenda: false,\r\n\t\t\tIsHyperlink: true\r\n\t\t});\r\n\t};\r\n\r\n\tClick(item: MenuItemModel) {\r\n\t\tthis._screen._modal.Close();\r\n\t\tconst isSpecialScreenExist = item.row.Form && item.row.Form.GetScreen() && item.row.Form.GetScreen().IsSpecialScreenExist;\r\n\t\tPathRunner.Instance.GetUnit(item.row.EntityId, isSpecialScreenExist).LoadNewData(item.row.RecordId);\r\n\t\tPubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n\t\t\tEntityId: item.row.EntityId,\r\n\t\t\tRecordId: item.row.RecordId,\r\n\t\t\tRecordTypeId: item.row.RecordTypeId,\r\n\t\t\tIsOpenInModal: true,\r\n\t\t\tOwner: null,\r\n\t\t\tCurrentRow: item.row,\r\n\t\t\tRowList: this._gridRowData,\r\n\t\t\tIsOpenAgenda: false,\r\n\t\t\tIsHyperlink: true\r\n\t\t});\r\n\t};\r\n}","// Module\nvar code = \"<a data-bind=\\\"click: GetPreviousScreen, css: { 'disabled': !_previousScreen },\\r\\n attr: {'title': _labels.PREVIOUS_RECORD}\\\" class=\\\"switch-screen-button previous\\\"> <i class=\\\"fa fa-angle-left\\\" align=\\\"center\\\"></i> </a> <div class=\\\"dropdown followListDropdown\\\"> <div data-bind=\\\" css: { 'disabled': !_enabled },\\r\\n\\t\\t\\t\\t\\t\\t alignDropdown: {\\r\\n\\t\\t\\t\\t\\t\\t \\t\\ttype: 'bootstrap',\\r\\n\\t\\t\\t\\t\\t\\t \\t\\tdirections: {vertical: true, horizontal: true},\\r\\n\\t\\t\\t\\t\\t\\t \\t\\taddEventOnclick: true\\r\\n\\r\\n\\t\\t\\t\\t\\t\\t \\t},\\r\\n\\t\\t\\t\\t\\t tooltip:{\\r\\n content: _enabled? _notifications.CLICK_TO_SEE_ALL_RECORDS_IN_THE_LIST: _notifications.THE_NUMBER_OF_RECORDS_EXCEEDS_THE_CONFIGURED_LIMIT,\\r\\n position: { x: 'center', y: 'bottom' },\\r\\n\\t\\t\\toutside: 'y'\\r\\n }\\\" type=\\\"button\\\" class=\\\"btn subFormControl followListDropdown-center-button\\\" data-toggle=\\\"dropdown\\\"> <!-- ko text: _labels.FOLLOW_LIST --><!-- /ko --> <a data-bind=\\\" css: { 'disabled': !_enabled }\\\"><i class=\\\"fa\\\" align=\\\"center\\\"></i></a> </div> <!-- ko if: _enabled --> <ul class=\\\"dropdown-menu\\\" role=\\\"menu\\\"> <!-- ko foreach: _menuItems --> <li> <a data-bind=\\\"css: { 'disabled': Disabled }, click: $parent.Click.bind($parent, $data, null)\\\" href=\\\"javascript:;\\\"> <!-- ko text: DisplayValue --><!-- /ko --> <!-- ko ifnot: DisplayValue --> <i class=\\\"fa fa-external-link\\\" aria-hidden=\\\"true\\\"></i> <!-- /ko --> </a> </li> <!-- /ko --> </ul> <!-- /ko --> </div> <a data-bind=\\\"click: GetNextScreen, css: { 'disabled': !_nextScreen },\\r\\n attr: {'title': _labels.NEXT_RECORD}\\\" class=\\\"switch-screen-button nextRecord\\\"> <i class=\\\"fa fa-angle-right\\\" align=\\\"center\\\"></i> </a>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\nimport * as $ from \"jquery\";\r\n\r\nimport 'pubsub';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {IFormParam, IScreen, IScreenState} from 'Core/Screens/IScreen';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm';\r\nimport {ActionBar} from 'Core/Screens/Forms/ActionBar/ActionBar';\r\nimport {BottomBar} from 'Core/Screens/Forms/BottomBar/BottomBar';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel';\r\nimport {BaseControl, IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {\r\n ControlTypes,\r\n CONTROL_TYPES,\r\n FIELD_TYPES,\r\n FONT_NAME,\r\n RenderModes,\r\n SYSTEM_TABLE_NAMES,\r\n SCREEN_PROPERTY_TYPE\r\n} from 'Core/Constant';\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {StaticControlsInitializer} from 'Core/Controls/StaticControlsInitializer';\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage';\r\nimport {Tab} from 'Core/Controls/Tab/Tab';\r\nimport {Tag} from 'Core/Controls/Tag/Tag';\r\nimport {UserManager} from \"User/UserManager\";\r\nimport {SelectUser} from \"Core/Controls/SelectUser/SelectUser\";\r\nimport {AttachedFieldModel} from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\nimport {TagsScreenDataModel} from \"Core/Controls/Tag/Models/TagsScreenDataModel\";\r\nimport {QueryBuilder} from 'Core/Controls/QueryBuilder/QueryBuilder';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\nimport {IModalComponent} from 'Core/Common/Interfaces/IModalComponent';\r\nimport {GridRow} from 'Core/Controls/Grid/BaseGrid/GridRow/GridRow';\r\nimport {ScreenSwitcher} from \"Core/Components/ScreenSwitcher/ScreenSwitcher\";\r\nimport {TranslationManager} from \"../Components/Translation/TranslationManager\";\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {IGetDependsOnResponse, RecordStore} from 'Core/Common/Stores/RecordStore';\r\nimport {CONFIRMATIONS, LABELS, NOTIFICATIONS} from \"../Components/Translation/Locales\";\r\nimport {PUB_SUB_EVENTS} from '../../MenuManager/PubSubEvents';\r\nimport { EVENTS } from './Events';\r\nimport { ActionSubjectRecordModel } from 'Core/ScreenManager/Models/ActionSubjectRecordModel';\r\n\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {ISettingsModal} from \"Core/Controls/FormDesigner/SettingsModal/SettingsModal\";\r\n\r\nexport interface IDictionary<T> {\r\n [K: string]: T;\r\n}\r\n\r\nexport interface IScreenVariable {\r\n Field: AttachedFieldModel;\r\n Value: string;\r\n\r\n FullName: string;\r\n}\r\n\r\n\r\nexport interface IControlAttachedField {\r\n Field: AttachedFieldModel,\r\n ControlType: string\r\n}\r\n\r\ninterface CustomStyleProperties {\r\n [key: string]: string | null;\r\n}\r\n\r\nexport class BaseScreen extends Event implements IScreen {\r\n protected _modal: Modal;\r\n protected _subForms: SubForm[];\r\n protected _actionBar: ActionBar;\r\n protected _bottomBar: BottomBar;\r\n protected _recordId: number;\r\n protected _tableTypeId: number;\r\n protected _model: ScreenModel;\r\n protected _isReady: KnockoutObservable<boolean>;\r\n private _source: IScreen;\r\n protected _controls: Array<IControl>;\r\n protected _renderMode: RenderModes;\r\n protected _dataModel: ScreenDataModel;\r\n protected _guid: string;\r\n protected _inModal: boolean;\r\n protected _isNested: boolean;\r\n protected _nestedLevel: number;\r\n protected _icon: Icon;\r\n protected _el: any;\r\n protected _modalOptions: any;\r\n protected _state: IScreenState;\r\n protected _isDashMain: boolean;\r\n protected _showFollowUp: boolean;\r\n protected _target: HTMLElement;\r\n protected _isListScreenExist: boolean;\r\n protected _isSpecialScreenExist: boolean;\r\n protected _isDashboardScreenExist: boolean;\r\n protected _isEditScreenExist: boolean;\r\n protected _isConsultScreenExist: boolean;\r\n protected _isStepsScreenExist: boolean;\r\n protected _dataMode: DataModes;\r\n protected _subjectLifeStatusId: number;\r\n protected _screenVariables: IDictionary<IScreenVariable>;\r\n protected _help: HelpBook;\r\n protected _gridRow: GridRow;\r\n protected _gridRowList: Array<GridRow>;\r\n protected _screenSwitcher: KnockoutObservable<ScreenSwitcher>;\r\n protected _actionSubjectRecord: ActionSubjectRecordModel;\r\n protected _labels = LABELS;\r\n private _modalComponents: IModalComponent[];\r\n private _controlsToUpdate: any;\r\n public IsReferenceScreen: boolean;\r\n public IsPathRunnerRefreshed: boolean;\r\n private _isQueryBuilderScreen: boolean;\r\n public AllowTimerAutoStop: boolean;\r\n private _screenFormProperties: FormProperties = {};\r\n private _screenFormEntityProperties: FormProperties = {};\r\n public ScreenBackgroundColor: string;\r\n public ScreenHeaderBackgroundColor: string;\r\n public TargetId: string;\r\n public IsOpenedViaBookControl: boolean;\r\n public ExampleAppointmentId: number;\r\n\r\n public TransactionId: string;\r\n\r\n constructor(model: ScreenModel, renderMode: RenderModes) {\r\n super();\r\n this._isDashMain = model.IsDashMain;\r\n this._isEditScreenExist = model.IsEditScreenExist;\r\n this._isListScreenExist = model.IsListScreenExist;\r\n this._isSpecialScreenExist = model.IsSpecialScreenExist;\r\n this._isDashboardScreenExist = model.IsDashboardScreenExist;\r\n this._isConsultScreenExist = model.IsConsultScreenExist;\r\n this._isStepsScreenExist = model.IsStepsScreenExist;\r\n this._showFollowUp = model.ShowFollowUp;\r\n this._guid = Guid.NewGuid();\r\n this._renderMode = renderMode;\r\n this._subForms = [];\r\n this._model = model;\r\n this._dataMode = model.DataMode;\r\n this._subjectLifeStatusId = model.SubjectLifestatusId;\r\n this.TargetId = null;\r\n this.IsOpenedViaBookControl = null;\r\n this.ExampleAppointmentId = 0;\r\n\r\n this._actionSubjectRecord = model.ActionSubjectRecord;\r\n\r\n this.InitUIColors(model);\r\n\r\n this.InitActionBar();\r\n this.InitBottomBar();\r\n this.InitSubForms();\r\n\r\n this.SetDefaultUserSelection();\r\n\r\n this._state = {ActiveControlId: null, ActiveSubControlId: null};\r\n StaticControlsInitializer.AddStaticControls(this);\r\n this._controls = this.GetAllControls();\r\n\r\n this._help = HelpBook.Instance;\r\n this._gridRow = null;\r\n this._gridRowList = null;\r\n\r\n this._isReady = ko.observable(false);\r\n this._inModal = false;\r\n this._isNested = model.IsNested;\r\n this._nestedLevel = model.NestedLevel || 0;\r\n this._modalOptions = {\r\n width: null\r\n };\r\n this._modalComponents = [];\r\n this._screenSwitcher = ko.observable(null);\r\n this._controlsToUpdate = {};\r\n\r\n this._icon = new Icon(this._model.EntityIcon);\r\n\r\n this.On('CLOSE', this, (eventArgs: any) => {\r\n this.Close();\r\n });\r\n this.On('SHOW_LIST_SCREEN', this, (eventArgs: any) => {\r\n this.ShowListScreen();\r\n });\r\n this.On('SHOW_SPECIAL_SCREEN', this, (eventArgs: any) => this.ShowSpecialScreen(eventArgs.data.ScreenType));\r\n this.On('SHOW_DASHBOARD_SCREEN', this, () => this.ShowDashboardScreen());\r\n this.On('SHOW_CONSULT_SCREEN', this, () => this.ShowConsultScreen());\r\n this.On('SHOW_PREVIOUS_SCREEN', this, (eventArgs: any) => {\r\n this.ShowPreviousScreen();\r\n });\r\n\r\n _.each(this._controls, (control: IControl) =>{\r\n control.On('CONTROL_MODIFY', this, (eventArgs: any) => {\r\n this.Trigger('CONTROL_MODIFY', {\r\n Control: eventArgs.data.Control,\r\n Screen: this\r\n })\r\n })\r\n });\r\n\r\n this.IsPathRunnerRefreshed = false;\r\n\r\n this._isQueryBuilderScreen = null;\r\n\r\n this.AllowTimerAutoStop = true;\r\n }\r\n\r\n get IsQueryBuilderScreen() {\r\n return this._isQueryBuilderScreen;\r\n }\r\n\r\n get IsLookupEditorNewRecord(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.LookupEditorNewRecord];\r\n }\r\n\r\n get IsLinkEditor(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.LinkEditor];\r\n }\r\n\r\n get IsConsultScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ConsultScreen];\r\n }\r\n\r\n get IsPortlet(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.Portlet];\r\n }\r\n\r\n get IsEditScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.EditScreen];\r\n }\r\n\r\n get IsProcessCardPageScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ProcessCardPage];\r\n }\r\n\r\n get IsCardScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.CardScreen];\r\n }\r\n\r\n get IsProcessCardScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ProcessCardPage];\r\n }\r\n\r\n get IsListScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.ListScreen];\r\n }\r\n\r\n get IsSpecialScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.SpecialScreen];\r\n }\r\n\r\n get IsDashboard(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.Dashboard];\r\n }\r\n\r\n get IsQueryScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.QueryScreen];\r\n }\r\n\r\n get IsStepsScreen(): boolean {\r\n return this.GetTypeName() === ScreenTypes[ScreenTypes.StepsScreen];\r\n }\r\n\r\n InitUIColors(model: ScreenModel): void {\r\n const deserializeProperties = (properties: string | undefined | null) =>\r\n properties ? GenericDeserialize(JSON.parse(properties), FormProperties) : new FormProperties();\r\n\r\n this._screenFormProperties = deserializeProperties(model.Properties);\r\n this._screenFormEntityProperties = deserializeProperties(model.EntityProperties);\r\n\r\n const propertyTypes = [\r\n SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR,\r\n SCREEN_PROPERTY_TYPE.SCREEN_HEADER_BACKGROUND_COLOR\r\n ];\r\n\r\n const [screenBGrColorProperties, screenHeaderBGrColorProperties] = propertyTypes.map(type =>\r\n this.FindElementByType(this._screenFormProperties.Options, type)?.Value\r\n );\r\n\r\n const [screenBGrColorEntityProperties, screenHeaderBGrColorEntityProperties] = propertyTypes.map(type =>\r\n this.FindElementByType(this._screenFormEntityProperties.Options, type)?.Value\r\n );\r\n\r\n this.ScreenBackgroundColor = screenBGrColorProperties || screenBGrColorEntityProperties;\r\n this.ScreenHeaderBackgroundColor = screenHeaderBGrColorProperties || screenHeaderBGrColorEntityProperties;\r\n }\r\n\r\n CopyTextToClipboard(value, callback) {\r\n if (!navigator.clipboard) {\r\n const textArea = document.createElement(\"textarea\");\r\n textArea.value = value;\r\n\r\n textArea.style.top = \"0\";\r\n textArea.style.left = \"0\";\r\n textArea.style.position = \"absolute\";\r\n\r\n document.body.appendChild(textArea);\r\n textArea.focus();\r\n textArea.select();\r\n\r\n try {\r\n let successful = document.execCommand(\"copy\");\r\n if (successful) {\r\n callback();\r\n }\r\n } catch (error) {\r\n new Notifier().Failed(error);\r\n return false;\r\n }\r\n\r\n document.body.removeChild(textArea);\r\n return;\r\n }\r\n\r\n navigator.clipboard.writeText(value)\r\n .then(() => {\r\n callback();\r\n }, (error) => {\r\n new Notifier().Failed(error);\r\n return false;\r\n });\r\n }\r\n\r\n RecordOpenInPopUp(reference: boolean, isScreen: boolean): boolean{\r\n return this._inModal = reference && isScreen;\r\n }\r\n\r\n IsSubjectScreen() {\r\n return false;\r\n }\r\n\r\n SetModalOptions(options: any) {\r\n this._modalOptions = {\r\n ...options\r\n };\r\n }\r\n\r\n GetDataMode(): DataModes {\r\n return this._dataMode;\r\n }\r\n\r\n GetDataModel(): ScreenDataModel {\r\n return this._dataModel;\r\n }\r\n\r\n GetSubjectLifeStatusId(): number {\r\n return this._subjectLifeStatusId;\r\n }\r\n\r\n SetRenderMode(renderMode: RenderModes) {\r\n this._renderMode = renderMode;\r\n _.each(this._controls, (item) => {\r\n item.SetRenderMode(renderMode);\r\n });\r\n }\r\n\r\n GetGuid(): string {\r\n return this._guid;\r\n }\r\n\r\n SearchRecord(): void {\r\n }\r\n\r\n EditRecord(): void {\r\n }\r\n\r\n GetRecordId(): number {\r\n return this._recordId;\r\n }\r\n\r\n GetScreenId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n GetScreenName(): string {\r\n return this._model.Name;\r\n }\r\n\r\n GetScreenTranslatedName(): string {\r\n const selectedTranslation: TranslationModel = _.find(this._model.TranslationModel, (translation: TranslationModel) => translation.Selected);\r\n if (selectedTranslation && selectedTranslation.Translation) {\r\n return selectedTranslation.Translation;\r\n }\r\n\r\n return this.GetScreenName();\r\n }\r\n\r\n GetEntityId(): number {\r\n return this._model.EntityId;\r\n }\r\n\r\n GetFieldCollectionId(): number {\r\n return this._model.FieldCollectionId;\r\n }\r\n\r\n GetTableTypeId(): number {\r\n return this._model.TableTypeId;\r\n }\r\n\r\n GetTableTypeFlowFolder(): boolean {\r\n return this._model.TableTypeFlowFolder;\r\n }\r\n\r\n GetKindId(): number {\r\n return this._model.KindId;\r\n }\r\n\r\n GetEntityIcon(): string {\r\n return this._model.EntityIcon.FontName;\r\n }\r\n\r\n GetEntityName(): string {\r\n return this._model.EntityName;\r\n }\r\n\r\n\tGetEntityNameTranslation(): string {\r\n\t\treturn this._model.EntityNameTranslation ? this._model.EntityNameTranslation : this._model.EntityName;\r\n\t}\r\n\r\n GetWrapper(): HTMLElement {\r\n return this._el;\r\n }\r\n\r\n GetControl<TControl extends IControl>(type: string): TControl {\r\n return <TControl>_.find(this.GetAllControls(), (control) => control.GetType() === type);\r\n }\r\n\r\n GetControlBy(predicate: (control: IControl) => boolean) {\r\n return this.GetAllControls().filter(predicate)[0];\r\n }\r\n\r\n SetActionSubjectRecord(value: ActionSubjectRecordModel) {\r\n this._actionSubjectRecord = value;\r\n }\r\n\r\n GetActionSubjectRecord(): ActionSubjectRecordModel {\r\n if (this._actionSubjectRecord) {\r\n this._actionSubjectRecord.ActionEntityId = this.GetEntityId();\r\n }\r\n return this._actionSubjectRecord;\r\n }\r\n\r\n get DeleteRecordConfirmation() {\r\n return this.GetEntityName() === SYSTEM_TABLE_NAMES.SYS_USERS\r\n ? CONFIRMATIONS.ARE_YOUR_SURE_TO_DISABLE_RECORDS\r\n : CONFIRMATIONS.ARE_YOUR_SURE_TO_DELETE_RECORDS;\r\n }\r\n\r\n get DeleteRecordSuccessNotification() {\r\n return this.GetEntityName() === SYSTEM_TABLE_NAMES.SYS_USERS\r\n ? NOTIFICATIONS.RECORD_DISABLED\r\n : NOTIFICATIONS.RECORD_REMOVED;\r\n }\r\n\r\n get RenderMode() {\r\n return this._renderMode;\r\n }\r\n\r\n get Icon(): Icon {\r\n return this._icon;\r\n }\r\n\r\n get IsDashMain(): boolean {\r\n return this._isDashMain;\r\n }\r\n\r\n get IsEditScreenExist(): boolean {\r\n return this._isEditScreenExist;\r\n }\r\n\r\n get IsListScreenExist(): boolean {\r\n return this._isListScreenExist;\r\n }\r\n\r\n get IsSpecialScreenExist(): boolean {\r\n return this._isSpecialScreenExist;\r\n }\r\n\r\n get IsDashboardScreenExist() : boolean {\r\n return this._isDashboardScreenExist;\r\n }\r\n\r\n get IsConsultScreenExist(): boolean {\r\n return this._isConsultScreenExist;\r\n }\r\n\r\n get IsStepsScreenExist(): boolean {\r\n return this._isStepsScreenExist;\r\n }\r\n\r\n get ScreenDoesNotExistError(): boolean {\r\n return this._model.ScreenDoesNotExistError;\r\n }\r\n\r\n get ScreenDoesNotExistErrorMessage(): boolean {\r\n return this._model.ScreenDoesNotExistErrorMessage;\r\n }\r\n\r\n\r\n get ShowFollowUp(): boolean {\r\n return this._showFollowUp;\r\n }\r\n\r\n GetScreenIcon(): Icon {\r\n return this._icon;\r\n }\r\n\r\n get SubForms(): SubForm[] {\r\n return this._subForms;\r\n }\r\n\r\n get FirstSubForm(): SubForm {\r\n return this.SubForms[0];\r\n }\r\n\r\n get ThreeSubFormsWithoutFirst(): SubForm[] {\r\n return _.rest(this.SubForms)\r\n }\r\n\r\n get WithLinkList() {\r\n return this._subForms.some((subForm: any) => subForm._model.Controls[0] && subForm._model.Controls[0].TypeName === CONTROL_TYPES.LinkList)\r\n }\r\n\r\n get NoLinkList(): boolean {\r\n return this._subForms.length <= 3;\r\n }\r\n\r\n get ActionBar(): ActionBar {\r\n return this._actionBar;\r\n }\r\n\r\n get BottomBar(): BottomBar {\r\n return this._bottomBar;\r\n }\r\n\r\n get IsBottomBarControls(): boolean {\r\n return this._bottomBar && this._bottomBar.Controls().length > 0;\r\n }\r\n\r\n HasControl(controlType: string): boolean {\r\n return !!this.GetControlByType(controlType);\r\n }\r\n\r\n AttachModalComponent(component: IModalComponent) {\r\n this._modalComponents.push(component);\r\n }\r\n\r\n private CloseModalComponents() {\r\n this._modalComponents.forEach((component) => {\r\n component.CloseComponentInModal();\r\n });\r\n }\r\n\r\n private InitActionBar(): void {\r\n if (this._model && this._model.ActionBar) {\r\n var params: IFormParam = {\r\n Model: this._model.ActionBar,\r\n RenderMode: this._renderMode,\r\n Screen: this\r\n };\r\n\r\n this._actionBar = new ActionBar(params);\r\n }\r\n }\r\n\r\n private InitBottomBar(): void {\r\n if (this._model && this._model.BottomBar) {\r\n var params: IFormParam = {\r\n Model: this._model.BottomBar,\r\n RenderMode: this._renderMode,\r\n Screen: this\r\n };\r\n this._bottomBar = new BottomBar(params);\r\n }\r\n }\r\n\r\n private InitSubForms(): void {\r\n if (this._model && this._model.SubForms) {\r\n _.each(this._model.SubForms, (model: SubFormModel, index) => {\r\n var params: IFormParam = {\r\n Model: model,\r\n RenderMode: this._renderMode,\r\n Screen: this\r\n };\r\n\r\n var subForm = new SubForm(params);\r\n\r\n if (this.IsEditScreen && index === 3) {\r\n subForm.ShowExpandButton = true;\r\n }\r\n\r\n if (this.GetType() === ScreenTypes[ScreenTypes.EditScreen] && this._renderMode !== RenderModes.Design) {\r\n if (index === 3) {\r\n if (subForm.Controls().length > 0) {\r\n this._subForms.push(subForm);\r\n }\r\n } else {\r\n this._subForms.push(subForm);\r\n }\r\n } else {\r\n this._subForms.push(subForm);\r\n }\r\n });\r\n }\r\n }\r\n\r\n SetIsQueryBuilderScreen(data: boolean): void {\r\n this._isQueryBuilderScreen = data;\r\n }\r\n\r\n SetDefaultUserSelection() {\r\n const selectUser = this.GetControl(CONTROL_TYPES.SelectUser) as SelectUser;\r\n\r\n if ((!selectUser || !selectUser.IsRememberMe) && UserManager.Instance.CurrentUser) {\r\n this.Trigger('UsersSelectionChanged', {SelectedUsers: [UserManager.Instance.CurrentUser.Id]});\r\n }\r\n }\r\n\r\n SetData(dataModel: ScreenDataModel) {\r\n if (!dataModel) {\r\n return;\r\n }\r\n\r\n const languagesReceived = _.size(this._model.Languages) > 0;\r\n\r\n this._actionSubjectRecord = dataModel.ActionSubjectRecord || this._actionSubjectRecord;\r\n\r\n let languagesUpdatedPromise = null;\r\n if (languagesReceived) {\r\n const activeLanguages = this._model.Languages.map(l => l.Id);\r\n languagesUpdatedPromise = TranslationManager.Instance.UpdateLanguages(activeLanguages)\r\n } else {\r\n languagesUpdatedPromise = TranslationManager.Instance.LoadLanguages();\r\n }\r\n\r\n languagesUpdatedPromise\r\n .then(() => {\r\n this.ApplyData(dataModel, (control, controlValue) => control.SetValue(controlValue));\r\n });\r\n }\r\n\r\n SetCurrentGridRowData(gridRow: GridRow) {\r\n this._gridRow = gridRow;\r\n }\r\n\r\n GetCurrentGridRow() {\r\n return this._gridRow;\r\n }\r\n\r\n SetGridRowListData(gridRowList: Array<GridRow>) {\r\n this._gridRowList = gridRowList;\r\n }\r\n\r\n GetCurrentGridRowList() {\r\n return this._gridRowList;\r\n }\r\n\r\n SetDefaultData(dataModel: ScreenDataModel, excludingControlsTypes = null) {\r\n const mergedDataModel = Object.assign({}, this._dataModel, dataModel);\r\n this.ApplyData(mergedDataModel, (control, controlValue) => control.SetDefaultValue(controlValue), excludingControlsTypes);\r\n }\r\n\r\n private ApplyData(dataModel: ScreenDataModel, setValueCallback: (control: IControl, controlValue: IControlValue) => void, excludingControlsTypes = null) {\r\n if (dataModel) {\r\n if (dataModel.ControlsData) {\r\n this._recordId = dataModel.RecordId;\r\n this._dataModel = dataModel;\r\n let controls = this._controls;\r\n if (excludingControlsTypes) {\r\n controls = _.filter(this._controls, control => !_.contains(excludingControlsTypes, control.GetType()));\r\n }\r\n _.each(controls,\r\n control => {\r\n let baseControl = control as BaseControl;\r\n let controlData = this.GetControlDataByControlId(control.GetControlId(), this._dataModel.ControlsData);\r\n\r\n if (!controlData) {\r\n var field = baseControl.FieldModel;\r\n if (field) {\r\n controlData = this.GetControlDataByField(field.Id, this._dataModel.ControlsData);\r\n if (!controlData) {\r\n controlData = new ControlDataModel();\r\n controlData.ControlId = control.GetControlId();\r\n controlData.Rights = this._dataModel.Rights;\r\n }\r\n } else {\r\n controlData = new ControlDataModel();\r\n controlData.Rights = this._dataModel.Rights;\r\n controlData.ControlId = control.GetControlId();\r\n }\r\n }\r\n\r\n if (!controlData.Rights) {\r\n controlData.Rights = this._dataModel.Rights;\r\n }\r\n\r\n if (control instanceof Tag) {\r\n let controlTags = this.GetTagControlData(control.GetControlId());\r\n if (controlTags) {\r\n controlData.Value = JSON.stringify(controlTags);\r\n }\r\n }\r\n\r\n if (control instanceof QueryBuilder) {\r\n let queryBuilderData = this.GetQueryBuilderControlData(control.GetControlId());\r\n\r\n var queryBuilderValue: IControlValue = {\r\n Datas: queryBuilderData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: dataModel.RecordSpecs || new RecordSpecsModel()\r\n };\r\n control.SetValue(queryBuilderValue);\r\n return;\r\n }\r\n\r\n var controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: dataModel.RecordSpecs || new RecordSpecsModel()\r\n };\r\n\r\n setValueCallback(control, controlValue);\r\n });\r\n }\r\n }\r\n\r\n _.each(this._controls, (control)=>{\r\n control.PostInit();\r\n });\r\n }\r\n\r\n GetControlDataByControlId(controlId: number, controlsData: Array<ControlDataModel>): ControlDataModel {\r\n var controlData = _.find(controlsData, (item: ControlDataModel) => {\r\n return item.ControlId === controlId\r\n });\r\n return controlData;\r\n }\r\n\r\n GetControlDataByField(fieldId: number, controlsData: Array<ControlDataModel>): ControlDataModel {\r\n var controlData = _.find(controlsData, (item: ControlDataModel) => {\r\n return item.FieldId === fieldId;\r\n });\r\n return controlData;\r\n }\r\n\r\n private GetQueryBuilderControlData(controlId: number): Array<ControlDataModel> {\r\n let data = this._model.Data;\r\n if (data) {\r\n if (data.ScreenTags) {\r\n let result = _.where(data.QueryBuilderData, (item: ControlDataModel) => item.ControlId === controlId);\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n GetFieldByFieldName(fieldName: string): AttachedFieldModel {\r\n let result;\r\n\r\n _.forEach(this.GetAllControls(), control => {\r\n let field = control.GetFieldModel();\r\n if (field && field.Name === fieldName) {\r\n result = field;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n GetControlByFieldName(fieldName: string, controlTypeName?: string): BaseControl {\r\n let controls = controlTypeName ? this.GetControlsByType(controlTypeName) : this.GetAllControls();\r\n const nameControl = _.find(controls, control => {\r\n const field = control.GetFieldModel();\r\n return field && field.Name === fieldName;\r\n });\r\n\r\n return nameControl as BaseControl;\r\n }\r\n\r\n GetControlByFieldNameOnScreenEntity(fieldName: string, controlTypeName?: string): BaseControl {\r\n let controls = controlTypeName ? this.GetControlsByType(controlTypeName) : this.GetAllControls();\r\n const screenEntityId = this.GetEntityId();\r\n\r\n const nameControl = _.find(controls, control => {\r\n const field = control.GetFieldModel();\r\n return field && field.Name === fieldName && field.EntityId === screenEntityId;\r\n });\r\n\r\n return nameControl as BaseControl;\r\n }\r\n\r\n GetDependsOnControls(fieldId: number, controlTypeName?: string): Array<IControl> {\r\n let controls = controlTypeName ? this.GetControlsByType(controlTypeName) : this.GetAllControls();\r\n\r\n let filtered = _.filter(controls, (control) => {\r\n const fieldModel = control.GetFieldModel();\r\n return fieldModel.DependsOnId && fieldModel.DependsOnId === fieldId;\r\n });\r\n\r\n return filtered;\r\n }\r\n\r\n RemoveNonEmptyDependsOn(dependsOnControls: Array<IControl>): Array<IControl> {\r\n return _.filter(dependsOnControls, (control) => {\r\n const fieldModel = control.GetFieldModel();\r\n const controlValue = control.GetValue();\r\n\r\n return fieldModel.IsVirtual || fieldModel.FieldTypeName !== FIELD_TYPES.Text\r\n || !controlValue || _.isEmpty(controlValue);\r\n });\r\n }\r\n\r\n public GetAllControls(): Array<IControl> {\r\n var controls: Array<IControl> = [];\r\n\r\n if (this._actionBar) {\r\n var actionBarControls = this._actionBar.Controls();\r\n controls = controls.concat(actionBarControls);\r\n _.each(actionBarControls, (control: IControl) => {\r\n controls = controls.concat(control.GetAllSubControls());\r\n });\r\n }\r\n\r\n if (this._bottomBar) {\r\n var bottomBarControls = this._bottomBar.Controls();\r\n controls = controls.concat(bottomBarControls);\r\n _.each(bottomBarControls, (control: IControl) => {\r\n controls = controls.concat(control.GetAllSubControls());\r\n });\r\n }\r\n\r\n _.each(this._subForms, (subForm) => {\r\n var subFormControls = subForm.Controls();\r\n controls = controls.concat(subFormControls);\r\n var subControls = [];\r\n _.each(subFormControls, (control: IControl) => {\r\n subControls = subControls.concat(control.GetAllSubControls());\r\n });\r\n controls = controls.concat(subControls);\r\n });\r\n\r\n return controls;\r\n }\r\n\r\n RenderByTargetId(target: string): void {\r\n this.TargetId = target;\r\n this._target = document.getElementById(target);\r\n ko.cleanNode(this._target);\r\n ko.applyBindings(this, this._target);\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_OPENED, this);\r\n }\r\n\r\n RenderByTarget(target: HTMLElement): void {\r\n this._target = target;\r\n ko.cleanNode(target);\r\n ko.applyBindings(this, target);\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_OPENED, this);\r\n }\r\n\r\n GetTarget(): HTMLElement {\r\n return this._target;\r\n }\r\n\r\n SetScreenStyle(isModal?: boolean, isParentControlExist?: boolean): void {\r\n const pageContainer: JQuery<HTMLElement> = $(document.body).find(\".page-container\");\r\n const pageHeader: JQuery<HTMLElement> = $(document.body).find(\".page-header.navbar\");\r\n\r\n const openInPopUpByCtrl = !isModal && this.IsInModal();\r\n if (openInPopUpByCtrl) {\r\n isModal = openInPopUpByCtrl;\r\n }\r\n\r\n if (this.ScreenBackgroundColor) {\r\n const setColorForContainer = () => {\r\n if (isParentControlExist) {\r\n let properties: CustomStyleProperties = {\r\n '--book-background-color': this.ScreenBackgroundColor,\r\n '--root-background-color': this.ScreenBackgroundColor\r\n };\r\n this.SetStyleProperty($(this._el).parent(), properties);\r\n } else if (!isModal) {\r\n let properties: CustomStyleProperties = {\r\n '--root-background-color': this.ScreenBackgroundColor\r\n };\r\n this.SetStyleProperty(pageContainer, properties);\r\n }\r\n };\r\n setColorForContainer();\r\n }\r\n\r\n if (this.ScreenHeaderBackgroundColor) {\r\n if (!isModal && !isParentControlExist) {\r\n let properties: CustomStyleProperties = {\r\n 'background-color': this.ScreenHeaderBackgroundColor,\r\n '--page-header-hover-color': this.DarkenHexColor(this.ScreenHeaderBackgroundColor, 50)\r\n };\r\n this.SetStyleProperty(pageHeader, properties);\r\n }\r\n if (isModal && !isParentControlExist) {\r\n const jBoxContainer: JQuery<HTMLElement> = $(this._el).closest(\".jBox-container\");\r\n let properties: CustomStyleProperties = {\r\n '--root-background-color': this.ScreenBackgroundColor\r\n };\r\n this.SetStyleProperty(jBoxContainer, properties);\r\n }\r\n }\r\n }\r\n\r\n SetStyleProperty(element: JQuery<HTMLElement> | null, properties: CustomStyleProperties): void {\r\n if (element && element.length) {\r\n for (const [property, value] of Object.entries(properties)) {\r\n element.get(0).style.setProperty(property, value);\r\n }\r\n }\r\n }\r\n\r\n DarkenHexColor(hex: string, amount: number): string {\r\n hex = hex.replace(/^#/, '');\r\n\r\n let r: number = parseInt(hex.substring(0, 2), 16);\r\n let g: number = parseInt(hex.substring(2, 4), 16);\r\n let b: number = parseInt(hex.substring(4, 6), 16);\r\n\r\n if (hex === '000000') { //Increasing the value of each channel\r\n r = Math.max(0, r + amount);\r\n g = Math.max(0, g + amount);\r\n b = Math.max(0, b + amount);\r\n } else { //Decrease the value of each channel\r\n r = Math.max(0, r - amount);\r\n g = Math.max(0, g - amount);\r\n b = Math.max(0, b - amount);\r\n }\r\n\r\n return \"#\" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n AfterRender(el) {\r\n this._el = el[0];\r\n }\r\n\r\n GetTypeId() {\r\n return this._model.ScreenTypeId;\r\n }\r\n\r\n GetType() {\r\n return this._model.ScreenTypeName;\r\n }\r\n\r\n get TemplateName(): string {\r\n return this._model.TemplateName;\r\n }\r\n\r\n SetRecordId(recordId: number): void {\r\n };\r\n\r\n SetRecordIdAndRender(recordId: number, target: string): void {\r\n };\r\n\r\n SetIsReady(isReady: boolean) {\r\n this._isReady(true);\r\n }\r\n\r\n GetSource() {\r\n return this._source;\r\n }\r\n\r\n SetSource(screen: IScreen) {\r\n this._source = screen;\r\n }\r\n\r\n GetTemplateName(): string {\r\n throw new Error('GetTemplateName not implemented');\r\n }\r\n\r\n ShowInModal(extraClass?: string) {\r\n const currentGridRow = this.GetCurrentGridRow();\r\n const currentGridRowList = this.GetCurrentGridRowList();\r\n\r\n if (currentGridRow && currentGridRowList) {\r\n const recordsIds = [...new Set(currentGridRowList.map(row => row.RecordId))];\r\n\r\n const distincLinkedRecords = [];\r\n\r\n recordsIds.forEach(id => distincLinkedRecords.push(currentGridRowList.find(row => row.RecordId == id)));\r\n\r\n this._screenSwitcher(new ScreenSwitcher(currentGridRow, distincLinkedRecords, this));\r\n }\r\n\r\n this._inModal = true;\r\n\r\n let isUseGlobal = !this._modalOptions.width,\r\n extraClassValue = !!extraClass ? extraClass : '',\r\n options = this._modalOptions || {};\r\n\r\n options.blockScroll = true;\r\n options.addClass = options.addClass ? options.addClass : `showScrollModal jBox-padding-15px ${extraClassValue}`;\r\n\r\n this._modal = new Modal(options, isUseGlobal);\r\n this._modal.On('CLOSE', this, () => {\r\n this.CloseModalComponents();\r\n this.Trigger(EVENTS.MODAL_CLOSE);\r\n if (this.IsConsultScreen) {\r\n this.IsPathRunnerRefreshed = true;\r\n }\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_CLOSED, this);\r\n });\r\n\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._modal.Show();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_OPENED, this);\r\n PubSub.publish(PUB_SUB_EVENTS.CHANGE_SCREEN, this);\r\n }\r\n\r\n IsInModal(): boolean {\r\n return this._inModal;\r\n }\r\n\r\n IsNested(): boolean {\r\n return this._isNested;\r\n }\r\n\r\n get NestedLevel(): number {\r\n return this._nestedLevel;\r\n }\r\n\r\n IsEntitySysUsersOrCd() {\r\n const entityName = this.GetEntityName();\r\n return entityName && (entityName === SYSTEM_TABLE_NAMES.SYS_USERS || entityName.startsWith('CD_'));\r\n }\r\n\r\n Close(skipClosedEvent?: boolean) {\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n\r\n this.Dispose();\r\n\r\n if (!skipClosedEvent) {\r\n PubSub.publish(PUB_SUB_EVENTS.SCREEN_CLOSED, this);\r\n }\r\n }\r\n\r\n GetId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n GetTypeName(): string {\r\n return this._model.ScreenTypeName;\r\n }\r\n\r\n GetTableTypeName(): string {\r\n return this._model.TableTypeName;\r\n }\r\n\r\n GetTableTypeNameTranslation(): string {\r\n return this._model.TableTypeNameTranslation;\r\n }\r\n\r\n GetControlByType(controlType: string): IControl {\r\n return _.first(this.GetControlsByType(controlType));\r\n }\r\n\r\n GetControlsByType(controlType: string): IControl[] {\r\n return _.filter(this.GetAllControls(), (control: IControl) => control.GetType() === controlType);\r\n }\r\n\r\n RestoreState(screenState: IScreenState) {\r\n if (screenState) {\r\n _.each(this._controls, (control) => {\r\n if (control.GetControlId() === screenState.ActiveControlId) {\r\n control.SetIsActive(true);\r\n if (control instanceof TabPage) {\r\n var parent = control.GetParentControl();\r\n if (parent && parent instanceof Tab) {\r\n var tabControl = <Tab>parent;\r\n tabControl.SetActiveTabPage(control);\r\n }\r\n }\r\n } else {\r\n control.SetIsActive(false);\r\n }\r\n });\r\n }\r\n }\r\n\r\n GetState(): IScreenState {\r\n return this._state;\r\n }\r\n\r\n SetState(screenState: IScreenState) {\r\n this._state = screenState;\r\n _.each(this._controls, (control) => {\r\n if (control.GetControlTypeName() !== CONTROL_TYPES.TabPage) {\r\n control.SetIsActive(null);\r\n }\r\n\r\n if (control.GetControlId() === this._state.ActiveControlId || control.GetControlId() === this._state.ActiveSubControlId) {\r\n control.SetIsActive(true);\r\n }\r\n });\r\n }\r\n\r\n Dispose() {\r\n this.GetAllControls().forEach(control => control.Dispose());\r\n }\r\n\r\n Refresh() {\r\n }\r\n\r\n async ShowListScreen(): Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), ScreenTypes.ListScreen, this._inModal);\r\n }\r\n\r\n async ShowSpecialScreen(screenType: ScreenTypes): Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), screenType, this._inModal);\r\n }\r\n\r\n async ShowDashboardScreen() : Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), ScreenTypes.Dashboard, this._inModal);\r\n }\r\n\r\n async ShowConsultScreen(): Promise<void> {\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreenByType(this.GetEntityId(), ScreenTypes.ConsultScreen, this._inModal);\r\n }\r\n\r\n async ShowPreviousScreen() {\r\n if (this._inModal) {\r\n this.Close();\r\n }\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.BackToPreviousScreen(this._inModal);\r\n }\r\n\r\n GetAllAttachedFields(excludeControlTypes: Array<string>, onlyScreenSubject: boolean): Array<IControlAttachedField> {\r\n var fields: Array<IControlAttachedField> = [];\r\n _.each(this.GetAllControls(),\r\n (control) => {\r\n if (excludeControlTypes.indexOf(control.GetType()) === -1) {\r\n _.each(control.Fields, field => {\r\n\r\n if(control.GetType() === CONTROL_TYPES.LinkList){\r\n let linkListField = new AttachedFieldModel();\r\n linkListField.EntityName = field.EntityName;\r\n linkListField.Name = field.PrimaryKeyName;\r\n linkListField.FieldTypeName = FIELD_TYPES.PKey;\r\n field = linkListField;\r\n }\r\n\r\n if (onlyScreenSubject) {\r\n if (field.EntityId === this.GetEntityId()) {\r\n fields.push({ Field: field, ControlType: control.GetControlTypeName()});\r\n }\r\n } else {\r\n fields.push({ Field: field, ControlType: control.GetControlTypeName() });\r\n }\r\n });\r\n }\r\n });\r\n return fields;\r\n }\r\n\r\n private GetTagControlData(controlId: number): TagsScreenDataModel {\r\n let data = this._model.Data;\r\n if (data) {\r\n if (data.ScreenTags) {\r\n let result = _.find(data.ScreenTags, (tagsModel: TagsScreenDataModel) => tagsModel.ControlId === controlId);\r\n return result;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n IsTypeAvailable(typeId: number, exampleTypeId: number, entityId): P.Promise<any> {\r\n BlockUI.Block();\r\n var deferredResult = P.defer<any>();\r\n\r\n EntityTypesStore.IsTypeAvailable({TypeId: typeId, ExampleTypeId: exampleTypeId, EntityId: entityId })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(isTypeAvailableModel => {\r\n if (!isTypeAvailableModel.IsTypeAvailable) {\r\n new Notifier().Warning(isTypeAvailableModel.WarningMessage);\r\n return;\r\n }\r\n\r\n deferredResult.resolve(null);\r\n })\r\n .fail(error => {\r\n new Notifier().Warning(error.message);\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n UpdateVariable(controlField: IControlAttachedField, value: string) {\r\n let variableName = `$[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n\r\n if(controlField.ControlType === CONTROL_TYPES.LinkList){\r\n variableName = `$[LinkList].[Main].[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n }\r\n\r\n let screenVariable: IScreenVariable = { FullName: variableName, Field: controlField.Field, Value: value };\r\n this.Trigger(EVENTS.DATA_CHANGED, { ScreenVariable: screenVariable });\r\n }\r\n\r\n UpdateDependsOnValues(recordId: number, dependsOnId: number, isPreselect?: boolean) {\r\n let dependsOnFields = this.GetDependsOnControls(dependsOnId, CONTROL_TYPES.Text);\r\n let fieldIds: Array<number> = [];\r\n\r\n if (isPreselect) {\r\n dependsOnFields = this.RemoveNonEmptyDependsOn(dependsOnFields);\r\n }\r\n\r\n let controlsByDependsOn = {};\r\n\r\n _.forEach(dependsOnFields, (control) => {\r\n const key = control.GetFieldModel().FilledById;\r\n if (controlsByDependsOn[key]) {\r\n controlsByDependsOn[key].push(control);\r\n } else {\r\n controlsByDependsOn[key] = [];\r\n controlsByDependsOn[key].push(control);\r\n fieldIds.push(key);\r\n }\r\n });\r\n\r\n this._controlsToUpdate[dependsOnId] = controlsByDependsOn;\r\n\r\n if (fieldIds.length) {\r\n if (recordId) {\r\n RecordStore.GetDependsOnValues({FieldIds: fieldIds, RecordId: recordId})\r\n .then((response: IGetDependsOnResponse) => {\r\n const controls = response.ResultObject;\r\n _.forEach(controls, (item) => {\r\n const controlsToUpdate = this._controlsToUpdate[dependsOnId] && this._controlsToUpdate[dependsOnId][item.Id];\r\n _.forEach(controlsToUpdate, (controlToUpdate: IControl) => {\r\n const controlData = new ControlDataModel();\r\n controlData.Value = item.Value;\r\n\r\n if (controlToUpdate.GetType() === CONTROL_TYPES.Text) {\r\n controlData.DisplayValue = item.Value;\r\n }\r\n\r\n controlToUpdate.SetValue({\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel(),\r\n Data: controlData\r\n })\r\n });\r\n });\r\n })\r\n .fail((error) => {\r\n new Notifier().Failed('Error getting data');\r\n });\r\n\r\n } else {\r\n _.forEach(fieldIds, (fieldId) => {\r\n const controlsToUpdate = this._controlsToUpdate[fieldId];\r\n _.forEach(controlsToUpdate, (control: IControl) => {\r\n const controlData = new ControlDataModel();\r\n controlData.Value = '';\r\n control.SetValue({\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel(),\r\n Data: controlData\r\n })\r\n });\r\n });\r\n }\r\n }\r\n }\r\n}","import {Width} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\n\r\nexport function isWidthValid(width: Width) {\r\n return (\r\n width && (\r\n (width.Unit.Value === 'px' && width.Value > 0) ||\r\n (width.Unit.Value === '%' && width.Value > 0 && width.Value <= 100)\r\n )\r\n );\r\n}\r\n\r\nexport function getWidthValue(width: Width) {\r\n if (!isWidthValid(width)) {\r\n return '100%';\r\n }\r\n\r\n return `${width.Value}${width.Unit.Value}`;\r\n}\r\n","export enum SoftColorScheme {\r\n RGBA\r\n}\r\n\r\nexport class SoftColorsProvider {\r\n static GetColor(index: number, scheme: SoftColorScheme) {\r\n const colorPalette = this.GetColorPallet();\r\n\r\n while (index >= colorPalette.length) {\r\n index -= colorPalette.length;\r\n }\r\n\r\n return colorPalette[index].As(scheme);\r\n }\r\n\r\n private static GetColorPallet() {\r\n const colors = ['rgba(246,219,219,0.5)', 'rgba(242,227,198,0.5)', 'rgba(211,236,225,0.5)', 'rgba(194,238,199,0.5)', 'rgba(238,210,232,0.5)'];\r\n return colors.map(rgbaColor => new SoftColor(rgbaColor));\r\n }\r\n}\r\n\r\nexport class SoftColor {\r\n constructor(private _rgba) {\r\n }\r\n\r\n As(scheme: SoftColorScheme) {\r\n switch (scheme) {\r\n case SoftColorScheme.RGBA:\r\n return this._rgba;\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\n\r\nimport {GridDataModel} from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\n\r\nexport interface IGetTabGridDataParams {\r\n TableId: number;\r\n TargetTableId: number;\r\n LookupFieldId: number;\r\n RecordId: number;\r\n PageNumber: number;\r\n RecordsPerPage: number;\r\n TableViewId: number;\r\n Sort: Array<SortModel>;\r\n ScopedRecordId: number;\r\n ScopedTableId: number;\r\n}\r\n\r\n\r\nexport interface IGetLinkEditorDefaultTableViewDto {\r\n TableId: number;\r\n TargetTableId: number;\r\n LookupFieldId: number;\r\n}\r\n\r\nexport class TabGridStore {\r\n GetGridData(params: IGetTabGridDataParams): P.Promise<GridDataModel> {\r\n const deferred = P.defer<GridDataModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n type: 'POST',\r\n dataType: 'json',\r\n url: '/api/GridApi/GetLinkEditorGridData'\r\n },\r\n params\r\n }).then(gridData => {\r\n deferred.resolve(GenericDeserialize(gridData, GridDataModel));\r\n }).fail(error => {\r\n deferred.reject(this.GetResponseError(error, 'Error reading grid data'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n\r\n GetDefaultTableView(params: IGetLinkEditorDefaultTableViewDto): P.Promise<QueryExpressionModel> {\r\n const deferred = P.defer<QueryExpressionModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n type: 'GET',\r\n dataType: 'json',\r\n url: '/api/GridApi/GetLinkEditorDefaultTableView'\r\n },\r\n params\r\n }).then(gridData => {\r\n deferred.resolve(GenericDeserialize(gridData, QueryExpressionModel));\r\n }).fail(error => {\r\n deferred.reject(this.GetResponseError(error, 'Error get default table view'));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string) {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import { ILinkEditor } from \"Core/Screens/Common/LinkEditor/LinkEditor\";\r\nimport { controlFacade } from \"./ControlFacade\";\r\n\r\nexport const linkEditorFacade = (screen: ILinkEditor)=> {\r\n\r\n const getControlByFieldName = (fieldName: string) => {\r\n let control = _.find(screen.GetAllControls(), (c) => c.GetFieldModel() && c.GetFieldModel().Name === fieldName);\r\n if(control){\r\n return controlFacade(control);\r\n }\r\n return null;\r\n }\r\n return { getControlByFieldName }\r\n}","import { GenericButton } from \"Core/Controls/GenericButton/GenericButton\";\r\nimport { BaseGrid } from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport { Grid } from \"Core/Controls/Grid/Grid\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport { ILinkEditor } from \"Core/Screens/Common/LinkEditor/LinkEditor\";\r\nimport { IForm } from \"Core/Screens/IScreen\";\r\nimport { linkEditorFacade } from \"./LinkEditorFacade\";\r\n\r\nexport const linkEditorTabGridFacade = (grid: BaseGrid, screen: ILinkEditor)=> {\r\n \r\n const getTotalRecords = () => {\r\n return grid.TotalRows;\r\n }\r\n\r\n const getScreen = ()=> {\r\n return linkEditorFacade(screen);\r\n }\r\n\r\n return { getTotalRecords, getScreen }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport { ScreenTypes } from 'Core/Common/Enums/ScreenTypes';\r\n\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\n\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\nimport {EVENTS as BASE_GRID_EVENTS} from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport { BaseGrid } from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport { GridDataModel as BaseGridDataModel } from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport {DEFAULT_RECORDS_PER_PAGE} from 'Core/Controls/Grid/Constants';\r\nimport {IBaseGridOptions} from 'Core/Controls/Grid/Models/GridDataModel/BaseGridModel';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {LockQueryStore} from 'QueryBuilder/Stores/LockQueryStore';\r\n\r\nimport {ITabTableParams} from '../TabTables/ITabTablesParams';\r\n\r\nimport {GridDataModel} from '../../Models/DataModel';\r\n\r\nimport {IGetTabGridDataParams, TabGridStore} from './Stores/TabGridStore';\r\n\r\nimport { UserManager, UserRoles } from 'User/UserManager';\r\nimport { RecordLinker } from 'Core/Components/RecordLinker/RecordLinker';\r\n\r\nimport {ActionSubjectRecordModel} from 'Core/ScreenManager/Models/ActionSubjectRecordModel';\r\nimport { SearchScreen, ISelectedRecord} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {QueryBuilder as QueryBuilderControl} from 'Core/Controls/QueryBuilder/QueryBuilder';\r\nimport {CONTROL_TYPES} from 'Core/Constant';\r\nimport {ViewGridModel} from 'Core/Controls/Grid/Models/ViewGridModel';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IGetLinkEditorGridViewListDto, ViewGridListStore} from 'Core/Controls/Grid/Stores/ViewGridListStore';\r\nimport {LOCK_EVENTS, LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {SortModel} from 'Core/Controls/Grid/Models/SortModel';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {DeleteQueryStore} from 'QueryBuilder/Stores/DeleteQueryStore';\r\nimport { BarcodeScanner } from 'Core/Components/BarcodeScanner/BarcodeScanner';\r\n\r\nimport Template from './Templates/TabGrid.html'\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { TriggerStore } from 'Core/Components/Triggers/TriggerStore';\r\nimport { IOnLinkEditorGridSaveTrigger, IOnLinkEditorUnlinkTrigger, TriggerManager } from 'Core/Components/Triggers/TriggerManager';\r\nimport { ILinkEditor } from '../../LinkEditor';\r\nimport { FunctionBuilder } from 'Core/Components/CustomFunctions/FunctionBuilder';\r\nimport { linkEditorTabGridFacade } from 'Core/Components/CustomFunctions/Facades/LinkEditorTabGridFacade';\r\n\r\nexport class TabGrid {\r\n private _labels = LABELS;\r\n\r\n private _dataLoaded: boolean;\r\n private _prevPageNumber: number;\r\n\r\n private _isEditable: KnockoutObservable<boolean>;\r\n private _showAddButton: KnockoutObservable<boolean>;\r\n private _showAddAndLinkButton: KnockoutObservable<boolean>;\r\n private _showScanAndLinkButton: KnockoutObservable<boolean>;\r\n private _showLinkButton: KnockoutObservable<boolean>;\r\n\r\n private _el: HTMLElement;\r\n\r\n private _store: TabGridStore;\r\n\r\n private _paginator: Paginator;\r\n private _baseGrid: BaseGrid;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _errorMessage: KnockoutObservable<string>;\r\n private _sorting: Array<SortModel>;\r\n\r\n \r\n private _tableView: KnockoutObservable<ViewGridModel> = ko.observable(null);\r\n private _showTableViewElement: KnockoutObservable<boolean> = ko.observable(true);\r\n private _showTableViewLookup: KnockoutObservable<boolean> = ko.observable(true);\r\n private _showFunctionLookup: KnockoutObservable<boolean> = ko.observable(true);\r\n private _isEnabled: KnockoutObservable<boolean> = ko.observable(true);\r\n private _viewGridList: KnockoutObservableArray<ViewGridModel> = ko.observableArray([]);\r\n private _isAddingRecordAllowed : KnockoutObservable<boolean> = ko.observable(true);\r\n private _enableEditTableView: KnockoutObservable<boolean> = ko.observable(false);\r\n private _enableDeleteTableView: KnockoutObservable<boolean> = ko.observable(false);\r\n private _enableLockItem: KnockoutObservable<boolean> = ko.observable(false);\r\n private _exportDataAllowed: KnockoutObservable<boolean> = ko.observable(false);\r\n private _showLockItem: boolean = UserManager.Instance.IsUserInRole(UserRoles.SuperUser);\r\n private _userVarsManager: UserVarsManager;\r\n private _isTableViewUpdating: KnockoutObservable<boolean>;\r\n private _tableViewUpdatingSubscription: KnockoutSubscription;\r\n private _showEditAllButton: KnockoutObservable<boolean>;\r\n private _editAll: KnockoutObservable<boolean>;\r\n private _guid: string;\r\n private _isDataLoading: KnockoutObservable<boolean>;\r\n\r\n constructor(private _params: ITabTableParams, private _screen: ILinkEditor) {\r\n this._dataLoaded = false;\r\n this._prevPageNumber = 1;\r\n\r\n this._isEditable = ko.observable(false);\r\n this._showAddButton = ko.observable(false);\r\n this._showAddAndLinkButton = ko.observable(false);\r\n this._showLinkButton = ko.observable(false);\r\n this._isValid = ko.observable(true);\r\n this._errorMessage = ko.observable('');\r\n this._store = new TabGridStore();\r\n this._viewGridList = ko.observableArray([]);\r\n this._userVarsManager = UserVarsManager.Instance;\r\n\r\n this._paginator = new Paginator();\r\n this._baseGrid = new BaseGrid(this.GetGridOptions());\r\n this._isTableViewUpdating = ko.observable(false);\r\n this._showScanAndLinkButton = ko.observable(false);\r\n this._showEditAllButton = ko.observable(true);\r\n this._editAll = ko.observable(true);\r\n this._guid = Guid.NewGuid();\r\n this._isDataLoading = ko.observable(false);\r\n\r\n this.Init();\r\n this.BindEvents();\r\n\r\n this._tableView.subscribe((newValue) => {\r\n this.SaveTableViewId(newValue.Id);\r\n this._enableEditTableView(newValue.IsEditingAllowed);\r\n this._enableDeleteTableView(newValue.IsDeletingAllowed);\r\n this._enableLockItem(this._showLockItem && this._tableView().Id > 0);\r\n this.LoadData();\r\n });\r\n\r\n this.UpdateTableViewList();\r\n\r\n }\r\n\r\n get IsValid(): boolean {\r\n this._baseGrid.SaveEditRows();\r\n\r\n if (this._baseGrid && this._baseGrid.HasEditRows()) {\r\n this._errorMessage('Please save record');\r\n this._isValid(false);\r\n } else {\r\n this._errorMessage('');\r\n this._isValid(true);\r\n }\r\n return this._isValid();\r\n }\r\n\r\n get ShowTableViewList(){\r\n let isSubTable = this._baseGrid.DataModel.QueryExpression.SubEntityJoins.length > 0;\r\n return !isSubTable;\r\n }\r\n\r\n get IsEditable() {\r\n const isSubTableView =\r\n this._baseGrid.DataModel.QueryExpression.SubEntityJoins.length > 0\r\n && this._baseGrid.DataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.IsView;\r\n\r\n return !isSubTableView;\r\n }\r\n\r\n get ShowAddButton() {\r\n if(this._params.LookupFieldId){\r\n return true;\r\n }\r\n\r\n const isSubTable = this._baseGrid.DataModel.QueryExpression.SubEntityJoins.length > 0;\r\n\r\n if (!isSubTable) {\r\n return false;\r\n }\r\n\r\n const isSubTableView = this._baseGrid.DataModel.QueryExpression.SubEntityJoins[0].Entity.Metadata.IsView;\r\n return !isSubTableView;\r\n }\r\n\r\n get ShowAddAndLinkButton() {\r\n const isEntity = this._baseGrid.DataModel.QueryExpression.EntityJoins.length > 0;\r\n\r\n if (isEntity) {\r\n return true;\r\n }\r\n\r\n if(this._params.LookupFieldId){\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n get ShowLinkButton() {\r\n const isEntity = this._baseGrid.DataModel.QueryExpression.EntityJoins.length > 0;\r\n\r\n if (!isEntity) {\r\n return false;\r\n }\r\n\r\n return !this._params.LookupFieldId; \r\n }\r\n\r\n ToggleEditAll(){\r\n if(this._editAll()){\r\n this._baseGrid.EditAll();\r\n this._editAll(false);\r\n }else{\r\n this._baseGrid.SaveAll();\r\n this._editAll(true);\r\n }\r\n }\r\n\r\n Init() {\r\n this.InitRecordPerPage();\r\n }\r\n\r\n ToggleLock() {\r\n if (this._tableView().Locked) {\r\n this.UnlockTableView();\r\n } else {\r\n this.LockTableView();\r\n }\r\n }\r\n\r\n LockTableView() {\r\n if (this._tableView().Id > 0) { \r\n LockQueryStore.Lock({Id: this._tableView().Id})\r\n .always(() => {\r\n\r\n })\r\n .then(() => {\r\n this._tableView().Lock();\r\n });\r\n }\r\n }\r\n\r\n UnlockTableView() {\r\n if (this._tableView().Id > 0) {\r\n LockQueryStore.Unlock({Id: this._tableView().Id})\r\n .always(() => {\r\n\r\n })\r\n .then(() => {\r\n this._tableView().Unlock();\r\n });\r\n }\r\n }\r\n\r\n BindEvents() {\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, (eventArgs: any) => {\r\n this.LoadData();\r\n this._prevPageNumber = eventArgs.data.pageNumber;\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(eventArgs.data.EntityId, eventArgs.data.RecordId, eventArgs.data.RecordTypeId);\r\n this.GoToRecordScreen(eventArgs.data);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.SORT, this, (eventArgs: any) => {\r\n this._sorting = eventArgs.data.SortColumns;\r\n this.LoadData();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UNDO_EVERY_RECORD, this, () => {\r\n\t this._editAll(true);\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_DELETED, this, async() => {\r\n\t await this.ExecuteOnLinkEditorUnlinkTrigger();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.UNLINK_RECORD, this, async() => {\r\n\t await this.ExecuteOnLinkEditorUnlinkTrigger();\r\n });\r\n\r\n this._baseGrid.On(BASE_GRID_EVENTS.RECORD_SAVED, this, async () => {\r\n\r\n let options: IOnLinkEditorGridSaveTrigger = {\r\n LeftEntityId: this._screen.LinkLeftEntityId,\r\n RightEntityId: this._screen.LinkRightEntityId,\r\n RelationTypeId: this._screen.RelationTypeId,\r\n GridEntityId: this._params.TableId\r\n }\r\n this._isDataLoading(true);\r\n\t await TriggerManager.ExecuteOnLinkEditorGridSaveTrigger(options, this._guid); \r\n this._isDataLoading(false);\r\n });\r\n \r\n PubSub.subscribe(PUB_SUB_EVENTS.EXECUTE_SCRIPT, (_, data) => {\r\n if(data && data.ObjectId === this._guid){\r\n FunctionBuilder.Execute(data.Code, data.Params, linkEditorTabGridFacade(this._baseGrid, this._screen));\r\n }\r\n });\r\n }\r\n\r\n async ExecuteOnLinkEditorUnlinkTrigger(){\r\n let options: IOnLinkEditorUnlinkTrigger = {\r\n LeftEntityId: this._screen.LinkLeftEntityId,\r\n RightEntityId: this._screen.LinkRightEntityId,\r\n RelationTypeId: this._screen.RelationTypeId,\r\n GridEntityId: this._params.TableId\r\n }\r\n this._isDataLoading(true);\r\n await TriggerManager.ExecuteOnLinkEditorUnlinkTrigger(options, this._guid); \r\n this._isDataLoading(false);\r\n }\r\n\r\n GoToRecordScreen(data: any) {\r\n data.IsOpenInModal = true;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n }\r\n\r\n\r\n InitRecordPerPage() {\r\n const recordsPerPageGlobalValue = GlobalManager.Instance.GetGlobal(GLOBALS.CONSULT_GRID_PAGE_LINES);\r\n this._paginator.RecordsPerPage = parseInt(recordsPerPageGlobalValue) || DEFAULT_RECORDS_PER_PAGE;\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._el = el;\r\n }\r\n\r\n Serialize(): GridDataModel {\r\n const dataModel = new GridDataModel();\r\n\r\n dataModel.Rows = this._baseGrid.SerializeRows();\r\n\r\n _.each(dataModel.Rows, (item)=>{\r\n item.ReferenceLookupFieldId = this._params.LookupFieldId;\r\n item.ScopedRecordId = this._params.ScopedRecordId;\r\n item.ScopedTableId = this._params.ScopedTableId;\r\n });\r\n\r\n dataModel.LinkListChanges = this._baseGrid.SerializeLinkEditorData();\r\n dataModel.LinkListChanges.forEach(linkEditor => {\r\n linkEditor.MainEntityId = this._baseGrid.Model.SubjectEntityId;\r\n linkEditor.MainRecordId = this._baseGrid.Model.SubjectRecordId;\r\n linkEditor.ReferenceLookupFieldId = this._params.LookupFieldId;\r\n });\r\n\r\n return dataModel;\r\n }\r\n\r\n NewRecord() {\r\n this._baseGrid.SelectType();\r\n }\r\n\r\n AddAndLinkRecord() {\r\n const selfRelation = this._params.TargetTableId === this._params.TableId;\r\n const typeScreen = new TypeScreen(this._params.TableId,\r\n selfRelation && !this._params.LookupFieldId ? this._params.RecordTypeId : null,\r\n false);\r\n\r\n typeScreen\r\n .On('TYPE_SELECTED', this, async eventArgs => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n const globalManager = GlobalManager.Instance;\r\n const actionGlobal = globalManager.GetGlobal(GLOBALS.ACTION_TABLE);\r\n const actionSubjectRecord = this._params.TableName === actionGlobal\r\n ? new ActionSubjectRecordModel(this._params.TargetTableId, this._params.RecordId)\r\n : null;\r\n\r\n this.BlockUI();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: this._params.TableId,\r\n TableTypeId: typeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n SubjectLifestatusId: this._params.LifeStatusId,\r\n ActionSubjectRecord: actionSubjectRecord\r\n }).fail(error=>{\r\n new Notifier().Failed(error.message);\r\n })\r\n .then(screen => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const createdRecordId = eventArgs.data.RecordId;\r\n this.LinkSelectedRecord([createdRecordId]);\r\n });\r\n\r\n this.UnblockUI();\r\n screen.ShowInModal();\r\n }).always(() => {\r\n this.UnblockUI()\r\n });\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.SUB_TYPE_NOT_FOUND));\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n LinkRecord() {\r\n const searchScreen = new SearchScreen({\r\n EntityId: this._params.TableId,\r\n SearchTerm: '',\r\n ButtonAdd: true,\r\n HasLinkingCondition: false,\r\n EnableBulkScan: true,\r\n MultiSelectMode: true,\r\n });\r\n\r\n let isBulkBarcodeScanning = false;\r\n\r\n searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n const selectedRecordId = eventArgs.data.RecordId;\r\n this.LinkSelectedRecord([selectedRecordId], {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('RECORDS_SELECTED',\r\n this,\r\n eventArgs => {\r\n this.PrepareRecordsToSelect({\r\n linkedRecordIds: eventArgs.data.Ids,\r\n isBulkBarcodeScanning: isBulkBarcodeScanning,\r\n onAfterLinking: () => {\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n }\r\n });\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STARTED', this, () => {\r\n isBulkBarcodeScanning = true;\r\n\r\n searchScreen.OpenBarcodeScannerForBulkScan();\r\n });\r\n\r\n searchScreen.On('BULK_BARCODE_SCAN_STOPPED', this, () => {\r\n isBulkBarcodeScanning = false;\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, () => {\r\n searchScreen.Close();\r\n this.AddAndLinkRecord();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n\r\n private PrepareRecordsToSelect({ linkedRecordIds, isBulkBarcodeScanning, onAfterLinking }: {\r\n linkedRecordIds: number[];\r\n isBulkBarcodeScanning: boolean;\r\n onAfterLinking?: () => void;\r\n }) {\r\n let kSeqValue = _.find(this._baseGrid.Model.QueryExpression.EntityJoins[0].LinkEntity.Metadata.Fields,\r\n field => field.Name === 'K_SEQ');\r\n if (kSeqValue) {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n this.LinkSelectedRecord(linkedRecordIds, {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: onAfterLinking\r\n });\r\n } else {\r\n let deletedRows = this._baseGrid.GetUnlinkedGridRowsByRecordIds(linkedRecordIds);\r\n\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n \r\n RecordLinker.GetExistingLinksWithRecords({\r\n MainTableId: this._params.TargetTableId,\r\n MainRecordId: this._params.RecordId,\r\n LinkedTableId: this._params.TableId,\r\n LinkedRecordIds: linkedRecordIds\r\n })\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onAfterLinking();\r\n }\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n _.each(result.ResultObject, (id) => {\r\n let deletedRow = _.find(deletedRows, (row) => row.RecordId === id)\r\n if (deletedRow) {\r\n deletedRow.LinkEditorData.DeletedRelations = _.reject(deletedRow.LinkEditorData.DeletedRelations,\r\n (item) => item.EntityId === deletedRow.EntityId\r\n && item.RecordId === deletedRow.RecordId\r\n && item.KSeq === deletedRow.KSeq);\r\n\r\n this._baseGrid.AddRow(deletedRow);\r\n\r\n setTimeout(() => {\r\n this._baseGrid.ResizeTableCellsAfterRender();\r\n }, 0);\r\n }\r\n });\r\n\r\n let newLinks = _.difference(linkedRecordIds, result.ResultObject);\r\n this.LinkSelectedRecord(newLinks, {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: onAfterLinking\r\n });\r\n });\r\n }\r\n }\r\n\r\n private LinkSelectedRecord(\r\n recordIds: number[],\r\n { isBulkBarcodeScanning, onAfterLinking }: { isBulkBarcodeScanning?: boolean; onAfterLinking?: () => void } = {}\r\n ) {\r\n const requestModel: IGetGridDataRequestModel = {\r\n ControlId: 0,\r\n TableViewId: this._tableView() ? this._tableView().Id : 0,\r\n SubjectEntityId: this._params.TargetTableId,\r\n SubjectRecordId: this._params.RecordId,\r\n SubjectTypeId: this._params.RecordTypeId,\r\n SubjectKindId: 0,\r\n SubjectStatusId: this._params.LifeStatusId,\r\n ViewMode: ViewModes.TableView,\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n Sort: [],\r\n SearchPhrase: '',\r\n FilterByOwners: false,\r\n RecordOwners: [],\r\n ShowPlanned: false,\r\n SelectedTags: [],\r\n GridSubjectEntityId: this._params.TableId,\r\n GridSubjectRecordIds: recordIds,\r\n ReferenceLookupFieldId: this._params.LookupFieldId,\r\n ScopedRecordId: this._params.ScopedRecordId,\r\n ScopedTableId: this._params.ScopedTableId\r\n };\r\n\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Block();\r\n }\r\n GridStore.GetData(requestModel)\r\n .always(() => {\r\n if (isBulkBarcodeScanning) {\r\n BlockUI.Unblock();\r\n onAfterLinking();\r\n }\r\n })\r\n .then(gridDataModel => {\r\n this._baseGrid.AddLinkedRows(gridDataModel);\r\n });\r\n }\r\n\r\n private LoadData() {\r\n const getData = () => {\r\n this.BlockUI();\r\n this._store.GetGridData(this.GetLoadData())\r\n .then(gridDataModel => {\r\n gridDataModel.SubjectEntityId = this._params.TargetTableId;\r\n gridDataModel.SubjectRecordId = +gridDataModel.QueryExpression.Condition.Items[0].Value;\r\n\r\n this._paginator.TotalRecords = gridDataModel.TotalRecords;\r\n this._baseGrid.SetData(gridDataModel, true, true);\r\n this._isEditable(this.IsEditable);\r\n this._showAddButton(this.ShowAddButton);\r\n this._showAddAndLinkButton(this.ShowAddAndLinkButton);\r\n this._showLinkButton(this.ShowLinkButton);\r\n this._showScanAndLinkButton(gridDataModel.IsScanAndLinkAllowed);\r\n\r\n this._dataLoaded = true;\r\n\r\n this._showTableViewElement(this.ShowTableViewList);\r\n this._showTableViewLookup(this.ShowTableViewList);\r\n this._showFunctionLookup(this.ShowTableViewList);\r\n\r\n this.UnblockUI();\r\n })\r\n .fail(err => {\r\n new Notifier().Failed(err.message);\r\n this.UnblockUI();\r\n });\r\n }\r\n\r\n if (this._isTableViewUpdating()) {\r\n if (this._tableViewUpdatingSubscription) {\r\n this._tableViewUpdatingSubscription.dispose();\r\n }\r\n this._tableViewUpdatingSubscription = this._isTableViewUpdating.subscribe((value) => {\r\n if (!value) {\r\n getData();\r\n }\r\n });\r\n } else {\r\n getData();\r\n }\r\n }\r\n\r\n private ScanAndLinkRecord(){\r\n let isBulkBarcodeScanning = true;\r\n const barcodeScanner = new BarcodeScanner({ isContinuous: false });\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n const { value } = eventArgs.data;\r\n\r\n GridStore.SearchByBarcode({ EntityId: this._params.TableId, Barcode: value })\r\n .then(linkedRecordId => {\r\n this.LinkSelectedRecord([linkedRecordId], {\r\n isBulkBarcodeScanning,\r\n onAfterLinking: () => {}\r\n });\r\n })\r\n .fail(error => {\r\n barcodeScanner.Reenable();\r\n new Notifier().Failed(error.message);\r\n });\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n private BlockUI() {\r\n BlockUI.Block({Target: this._el});\r\n }\r\n\r\n private UnblockUI() {\r\n BlockUI.Unblock(this._el);\r\n }\r\n\r\n private GetGridOptions(): IBaseGridOptions {\r\n return {\r\n isEditable: this._isEditable,\r\n screenType: ScreenTypes[ScreenTypes.EditScreen]\r\n };\r\n }\r\n\r\n private GetLoadData(): IGetTabGridDataParams {\r\n return {\r\n TableViewId: this._tableView() ? this._tableView().Id : 0,\r\n TableId: this._params.TableId,\r\n TargetTableId: this._params.TargetTableId,\r\n LookupFieldId: this._params.LookupFieldId,\r\n RecordId: this._params.RecordId,\r\n PageNumber: this._paginator.PageNumber,\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n Sort: this._sorting,\r\n ScopedRecordId: this._params.ScopedRecordId,\r\n ScopedTableId: this._params.ScopedTableId\r\n };\r\n }\r\n\r\n DeleteTableView() {\r\n if (this._tableView().Id > 0) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: 'Are you sure?',\r\n Type: ConfirmationTypes.Question,\r\n TextConfirm: 'Yes',\r\n TextDecline: 'Cancel'\r\n });\r\n\r\n confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n BlockUI.Block();\r\n DeleteQueryStore.Delete({Id: this._tableView().Id})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(() => {\r\n this.UpdateTableViewList();\r\n });\r\n });\r\n confirmationDialog.Show();\r\n }\r\n }\r\n\r\n EditTableView(){\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes.LinkEditor)\r\n .then(data => {\r\n\r\n LockManager.Instance.TryLock(data.TableId, this._tableView().Id)\r\n .then(async() => {\r\n\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs) => {\r\n if (eventArgs.data.TableId === data.TableId && eventArgs.data.RecordId === this._tableView().Id) {\r\n screen.Close();\r\n }\r\n });\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(data.TableId, this._tableView().Id);\r\n });\r\n\r\n const editScreen = screen as BaseScreen;\r\n\r\n editScreen.ShowInModal();\r\n\r\n editScreen.On('RECORD_DELETED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this._params.RecordId);\r\n queryBuilderControl.SetQueryTypeName(ViewModes.TableView);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n NewTableView() {\r\n BlockUI.Block();\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes.LinkEditor)\r\n .then(async(data) => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n\r\n notifier.Warning(error.message);\r\n }).then(screen => this.ShowQueryEditScreen(screen as BaseScreen));\r\n \r\n })\r\n .fail(err => {\r\n new Notifier($(this._el)).Failed(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n CopyTableView() {\r\n if (this._tableView().Id > 0) {\r\n BlockUI.Block();\r\n\r\n GridStore.GetDefaultTableViewMetaData(ScreenTypes.LinkEditor)\r\n .then(async(data) => {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: data.TableId,\r\n TableTypeId: data.TableTypeId,\r\n RecordId: this._tableView().Id,\r\n LoadAsExample: true\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .fail(error => {\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(error.message);\r\n })\r\n .then((screen) => {\r\n const editScreen = screen as EditScreen;\r\n editScreen.IsDataFromExample = true;\r\n editScreen.ShowInModal();\r\n\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectRecordId(this._params.RecordId);\r\n queryBuilderControl.SetQueryTypeName(ViewModes.TableView);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SaveTableViewId(eventArgs.data.RecordId);\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n })\r\n .fail(err => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(err.message);\r\n BlockUI.Unblock();\r\n });\r\n }\r\n }\r\n\r\n private SaveTableViewId(id: number){\r\n let key = `${this._params.TableId}_${this._params.TargetTableId}_${this._params.LookupFieldId}`;\r\n this._userVarsManager.SetLinkEditorGridView(key, id);\r\n }\r\n\r\n private GetTableViewId(){\r\n let key = `${this._params.TableId}_${this._params.TargetTableId}_${this._params.LookupFieldId}`;\r\n return this._userVarsManager.GetLinkEditorGridView(key);\r\n }\r\n\r\n private ShowQueryEditScreen(editScreen: BaseScreen){\r\n editScreen.ShowInModal();\r\n \r\n this._store.GetDefaultTableView({\r\n TableId: this._params.TableId,\r\n TargetTableId: this._params.TargetTableId,\r\n LookupFieldId: this._params.LookupFieldId\r\n }).then(data => {\r\n const queryBuilderControl = editScreen.GetControl(CONTROL_TYPES.QueryBuilder) as QueryBuilderControl;\r\n\r\n if (queryBuilderControl == null) {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Failed(NOTIFICATIONS.QUERY_BUILDER_NOT_FOUND);\r\n } else {\r\n queryBuilderControl.SetSubjectEntityId(this._params.TargetTableId);\r\n queryBuilderControl.SetSubjectRecordId(this._params.RecordId);\r\n queryBuilderControl.SetQueryTypeName(ViewModes.TableView);\r\n\r\n queryBuilderControl.InitQuery(data);\r\n\r\n editScreen.On('RECORD_SAVED', this, (eventArgs) => {\r\n this.SaveTableViewId(eventArgs.data.RecordId);\r\n this.UpdateTableViewList();\r\n });\r\n }\r\n });\r\n }\r\n\r\n private UpdateTableViewList(){\r\n this._isTableViewUpdating(true);\r\n\r\n ViewGridListStore.GetLinkEditorGridViewList({\r\n TableId: this._params.TableId,\r\n TargetTableId: this._params.TargetTableId,\r\n LookupFieldId: this._params.LookupFieldId\r\n })\r\n .always(()=>{\r\n this._isTableViewUpdating(false);\r\n })\r\n .then(data => {\r\n \r\n let defaultView = new ViewGridModel(0, LABELS.DEFAULT_VIEW);\r\n defaultView.IsEditingAllowed = false;\r\n let tableViewList = [defaultView];\r\n data.GridViews.forEach(view => view.Init());\r\n tableViewList = data.GridViews ? tableViewList.concat(data.GridViews) : tableViewList;\r\n this._viewGridList(tableViewList);\r\n\r\n let tableViewId = this.GetTableViewId();\r\n if(tableViewId){\r\n let tableView = _.find(this._viewGridList(), (view) => view.Id == tableViewId) || defaultView;\r\n this._tableView(tableView);\r\n }else{\r\n this._tableView(defaultView);\r\n }\r\n \r\n });\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._isDataLoading\\\"> <div class=\\\"clearfix table-toolbar-line\\\"> <i data-bind=\\\"css: {'hidden': _isValid}, tooltip: {}, attr: { title: $data._errorMessage }\\\" class=\\\"fa fa-warning control-tooltip\\\"></i> <query-dropdowns params=\\\"\\r\\n showElement: _showTableViewElement,\\r\\n showViewLookup: _showTableViewLookup,\\r\\n showFunctionLookup: _showFunctionLookup,\\r\\n view: _tableView,\\r\\n isEnabled: _isEnabled,\\r\\n viewList: _viewGridList,\\r\\n isAddingRecordAllowed: _isAddingRecordAllowed,\\r\\n enableEditView: _enableEditTableView,\\r\\n enableDeleteView: _enableDeleteTableView,\\r\\n enableLockItem: _enableLockItem,\\r\\n exportDataAllowed: _exportDataAllowed,\\r\\n showLockItem: _showLockItem,\\r\\n queryLocked: _tableView() ? _tableView().LockedTableView : null,\\r\\n newView: NewTableView.bind($data),\\r\\n editView: EditTableView.bind($data),\\r\\n deleteView: DeleteTableView.bind($data),\\r\\n copyView: CopyTableView.bind($data),\\r\\n toggleLock: ToggleLock.bind($data)\\r\\n \\\"> </query-dropdowns> <div class=\\\"pull-left\\\"> <!-- ko with: _paginator --> <!-- ko template: {name: GetTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"pull-right additional-buttons\\\"> <!-- ko if: _showAddButton --> <a data-bind=\\\"click: $data.NewRecord.bind($data)\\\" class=\\\"btn blue-sharp showAddButton subFormControl\\\"> <i class=\\\"icon-plus\\\"></i> <!-- ko text: _labels.NEW --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showEditAllButton() --> <a data-bind=\\\"visible: _isEditable(), click: $data.ToggleEditAll.bind($data)\\\" class=\\\"btn blue-sharp showEditAllButton subFormControl\\\"> <!-- ko if: _editAll --> <!-- ko text: _labels.EDIT_ALL --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: _editAll --> <!-- ko text: _labels.SAVE_ALL --><!-- /ko --> <!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showAddAndLinkButton --> <a data-bind=\\\"click: $data.AddAndLinkRecord.bind($data)\\\" class=\\\"btn blue-sharp tab-add-and-link-button subFormControl\\\"> <!-- ko text: _labels.ADD_AND_LINK --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showLinkButton --> <a data-bind=\\\"click: $data.LinkRecord.bind($data)\\\" class=\\\"btn blue-sharp tab-link-button subFormControl\\\"> <!-- ko text: _labels.LINK --><!-- /ko --> </a> <!-- /ko --> <!-- ko if: _showScanAndLinkButton --> <a data-bind=\\\"click: $data.ScanAndLinkRecord.bind($data)\\\" tabindex=\\\"-1\\\" href=\\\"#\\\" class=\\\"btn blue-sharp subFormControl tab-scan-and-link-button\\\"> <!-- ko text: _labels.SCAN_AND_LINK --><!-- /ko --> </a> <!-- /ko --> </div> </div> <!--ko with: _baseGrid--> <div class=\\\"grid-relative-container\\\"> <div class=\\\"grid-container-wrapper\\\"> <div data-bind=\\\"template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)}\\\"></div> </div> </div> <!--/ko--> </div>\";\n// Exports\nexport default code;","import {Guid} from 'Core/Common/Guid';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {ITabTableParams} from '../ITabTablesParams';\r\n\r\nimport {TabGrid} from '../../TabGrid/TabGrid';\r\nimport { ILinkEditor } from '../../../LinkEditor';\r\n\r\nexport class TabTableData {\r\n private _id: string;\r\n private _grid: TabGrid;\r\n\r\n constructor(private _params: ITabTableParams, screen: ILinkEditor) {\r\n this._id = Guid.NewGuid();\r\n this._grid = new TabGrid(this._params, screen);\r\n }\r\n\r\n get Id() {\r\n return this._id;\r\n }\r\n\r\n get TableName() {\r\n return this._params.TableName;\r\n }\r\n\r\n get TableTypeName() {\r\n return this._params.TableTypeName;\r\n }\r\n\r\n get TargetTableName() {\r\n return this._params.TargetTableName;\r\n }\r\n\r\n get LookupFieldId() {\r\n return this._params.LookupFieldId;\r\n }\r\n\r\n get LookupFieldName() {\r\n return this._params.LookupFieldName;\r\n }\r\n\r\n get TabName() {\r\n if (this.TableTypeName === TABLE_TYPES.Sub) {\r\n return this.TableName;\r\n }\r\n\r\n if (this.LookupFieldId) {\r\n return `${this.TableName} (${this.LookupFieldName} -> ${this.TargetTableName})`;\r\n }\r\n\r\n return `${this.TableName} (${this.TargetTableName})`;\r\n }\r\n\r\n get Grid() {\r\n return this._grid;\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {ITabTablesParams} from './ITabTablesParams';\r\nimport {TabTableData} from './Models/TabTableData';\r\n\r\nimport {GridDataModel} from '../../Models/DataModel';\r\n\r\nimport Template from './Templates/TabTables.html';\r\n\r\n\r\nexport class TabTables {\r\n Data: TabTableData[];\r\n CurrentTabTable: KnockoutObservable<TabTableData>;\r\n\r\n constructor(params: ITabTablesParams) {\r\n this.Data = params.TableParams.map(tableParams => new TabTableData(tableParams, params.Screen));\r\n this.CurrentTabTable = ko.observable(null);\r\n }\r\n\r\n GetTemplate() {\r\n return Template;\r\n }\r\n\r\n ValidateData(): boolean {\r\n let result = true;\r\n\r\n _.each(this.Data, (tab) =>{\r\n if(!tab.Grid.IsValid){\r\n result = false;\r\n };\r\n });\r\n return result;\r\n }\r\n\r\n OnTabClick(tableData: TabTableData) {\r\n this.CurrentTabTable(tableData);\r\n }\r\n\r\n SelectTab(index: number) {\r\n const tabTable = this.Data[index];\r\n\r\n if (tabTable) {\r\n this.CurrentTabTable(tabTable);\r\n }\r\n }\r\n\r\n Serialize(): GridDataModel[] {\r\n return this.Data\r\n .map(data => data.Grid.Serialize())\r\n .filter(gridData => gridData.Rows.length > 0 || gridData.LinkListChanges.length > 0);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"tab-wrapper\\\"> <div role=\\\"tabpanel\\\"> <ul class=\\\"nav nav-tabs\\\" role=\\\"tablist\\\"> <!--ko foreach: Data--> <li role=\\\"presentation\\\" class=\\\"tab\\\" data-bind=\\\", css: {'active': $data === $parent.CurrentTabTable()}\\\"> <a class=\\\"tab-link\\\" role=\\\"tab\\\" data-toggle=\\\"tab\\\" data-bind=\\\"text: TabName, click: $parent.OnTabClick.bind($parent)\\\"> </a> </li> <!--/ko--> </ul> <!--ko with: CurrentTabTable--> <div class=\\\"tab-content tab-page-result\\\"> <!--ko with: Grid--> <div data-bind=\\\"template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)}\\\"> </div> <!--/ko--> </div> <!--/ko--> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from 'underscore'\r\n\r\nimport {CONTROL_TYPES, FIELD_TYPE_TO_CONTROL, FIELD_TYPES, RenderModes, SIMPLE_CONTROLS} from 'Core/Constant';\r\nimport {ClusterModes} from \"Core/Constants/ClusterModes\";\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel'\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes'\r\nimport {IGetRelationTypesRequestModel, LinkEditorStore} from 'Core/Screens/Common/LinkEditor/Stores/LinkEditorStore'\r\nimport {LinkedFieldValueModel} from 'Core/Screens/Common/LinkEditor/Models/LinkedFieldValueModel'\r\n\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList'\r\n\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\"\r\nimport {ControlDataModel} from \"Core/ScreenManager/Models/ControlDataModel\"\r\nimport {LinkEditorModel, LinkedRecordModel} from 'Core/Screens/Common/LinkEditor/Models/LinkEditorModel'\r\nimport {DataModel, FieldDataModel} from 'Core/Screens/Common/LinkEditor/Models/DataModel'\r\n\r\nimport {P} from 'Core/Common/Promise'\r\nimport LinkEditorTemplate from 'Core/Screens/Common/LinkEditor/Templates/LinkEditor.html'\r\nimport {IControl} from \"../../../Controls/IControl\";\r\nimport {SoftColorScheme, SoftColorsProvider} from \"../../../Common/SoftColorsProvider\";\r\nimport {LABELS} from \"../../../Components/Translation/Locales\";\r\nimport {TabTables} from './Components/TabTables/TabTables';\r\nimport { IScreen } from 'Core/Controls/Grid/BaseGrid/Index';\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport { EditLinkDataModel } from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\n\r\nko.templates['Core/Screens/Common/LinkEditor/Templates/LinkEditor'] = LinkEditorTemplate;\r\n\r\nexport interface ILoadScreenRelationModel {\r\n MainEntityId: number;\r\n MainRecordId: number;\r\n MainRecordTypeId?: number;\r\n MainRecordKindId?: number;\r\n\r\n RelatedEntityId: number;\r\n RelatedRecordId: number;\r\n RelatedRecordTypeId: number;\r\n\r\n KSeq?: number;\r\n}\r\n\r\nexport interface ILinkEditor extends IScreen {\r\n LinkLeftEntityId: number;\r\n LinkRightEntityId: number;\r\n RelationTypeId: number;\r\n}\r\n\r\nexport class LinkEditor extends BaseScreen implements ILinkEditor {\r\n\r\n private _linkEditorModel: LinkEditorModel;\r\n private _tabTables: TabTables;\r\n private _relatedEntityId: number;\r\n private _relatedRecordId: number;\r\n private _mainEntityId: number;\r\n private _mainRecordTypeId: number;\r\n private _mainRecordId: number;\r\n private _kSeq: number;\r\n private _editorDataModel: DataModel;\r\n private _leftLinkedEntityName: string;\r\n private _rightLinkedEntityName: string;\r\n private _closeAfterSave: boolean = true;\r\n private _relationTypes: Array<any>;\r\n private _selectedRelationTypeId: KnockoutObservable<number>;\r\n private _selectedRelationTypeName: KnockoutObservable<string>;\r\n private _defaultDisabled: KnockoutObservable<boolean>;\r\n private _linkListInstance: LinkList;\r\n private _hasRelations: KnockoutObservable<boolean>;\r\n private _relationTypeValuesEnabled: KnockoutObservable<boolean>;\r\n\r\n constructor(screenModel: ScreenModel, linkEditorModel: LinkEditorModel = null, relation: ILoadScreenRelationModel = null) {\r\n super(screenModel, RenderModes.Edit);\r\n this._linkEditorModel = linkEditorModel;\r\n this._relatedEntityId = relation.RelatedEntityId;\r\n this._relatedRecordId = relation.RelatedRecordId;\r\n this._kSeq = relation.KSeq;\r\n this._mainEntityId = relation.MainEntityId;\r\n this._mainRecordTypeId = relation.MainRecordTypeId;\r\n this._mainRecordId = relation.MainRecordId;\r\n this._renderMode = RenderModes.Edit;\r\n this._rightLinkedEntityName = '';\r\n this._leftLinkedEntityName = '';\r\n this._relationTypes = (screenModel as any).RelationTypes || [];\r\n this._selectedRelationTypeId = ko.observable(null);\r\n this.SetFirstEnabledRelationType();\r\n this._defaultDisabled = ko.observable(!!_.find(this._relationTypes, (type) => type.Enabled));\r\n (screenModel as any).SelectedRelationTypeId && this._selectedRelationTypeId((screenModel as any).SelectedRelationTypeId);\r\n this._selectedRelationTypeName = ko.observable((screenModel as any).SelectedRelationTypeName || null);\r\n this._linkListInstance = null;\r\n this._hasRelations = ko.observable(!!this._relationTypes.length);\r\n this._relationTypeValuesEnabled = ko.observable(false);\r\n this.AddEvents();\r\n this.Init();\r\n this.SetData(screenModel.Data);\r\n\r\n\r\n this._selectedRelationTypeId.subscribe((newValue) => {\r\n this.FireUpdateVariable(newValue.toString());\r\n });\r\n }\r\n \r\n get LinkLeftEntityId() {\r\n return this._linkEditorModel.LeftLinkedEntityId\r\n };\r\n\r\n get LinkRightEntityId(){\r\n return this._linkEditorModel.RightLinkedEntityId;\r\n }\r\n\r\n get RelationTypeId(){\r\n return this._selectedRelationTypeId();\r\n }\r\n\r\n FireUpdateVariable(value: string){\r\n if(this.RelationTypeField){\r\n let fieldModel = new AttachedFieldModel();\r\n fieldModel.Id = this.RelationTypeField.Id;\r\n this.UpdateVariable({ Field: fieldModel, ControlType: CONTROL_TYPES.Dropdown }, value);\r\n } \r\n }\r\n\r\n GetEntityId(): number {\r\n return this._mainEntityId;\r\n }\r\n\r\n GetTableTypeId(): number {\r\n return this._mainRecordTypeId;\r\n }\r\n\r\n GetRecordId(): number {\r\n return this._mainRecordId;\r\n }\r\n\r\n GetKseq(): number {\r\n return this._kSeq;\r\n }\r\n\r\n GetRelatedEntityId(): number {\r\n return this._relatedEntityId;\r\n }\r\n\r\n GetRelatedRecordId(): number {\r\n return this._relatedRecordId;\r\n }\r\n\r\n get KSeq(): number {\r\n return this._kSeq;\r\n }\r\n\r\n SetRelationTypeValue(linkEditor, event) {\r\n this._selectedRelationTypeId(event.target.value);\r\n }\r\n\r\n SetFirstEnabledRelationType() {\r\n if (this._relationTypes.length && !(this._model as any).SelectedRelationTypeId) {\r\n const firstRel = _.find(this._relationTypes, (type) => type.Enabled);\r\n if (firstRel) {\r\n this._selectedRelationTypeId(firstRel.RecordId);\r\n this.FireUpdateVariable(firstRel.RecordId);\r\n }\r\n }\r\n }\r\n\r\n get ReferenceControls(): Array<IControl> {\r\n return _.filter(this.GetAllControls(), (control) => {\r\n return control.GetType() === CONTROL_TYPES.Text && control.GetFieldModel().FieldTypeName === FIELD_TYPES.Reference;\r\n });\r\n }\r\n\r\n private Init() {\r\n this.On('SAVE', this, (eventArgs: any) => {\r\n this.Save();\r\n });\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent(\"SAVE\");\r\n this.AddEvent(\"CANCEL\");\r\n this.AddEvent(\"SAVE_DATA\");\r\n this.AddEvent(\"MODAL_CLOSE\");\r\n this.AddEvent(\"DATA_CHANGED\");\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Common/LinkEditor/Templates/LinkEditor';\r\n }\r\n\r\n SetFocusOnFirstControl() {\r\n const control = this.GetControlBy(c => c.IsFocusable());\r\n if (control) {\r\n control.SetFocus(true);\r\n }\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetFocusOnFirstControl();\r\n }\r\n\r\n static LoadScreen(\r\n relationModel: ILoadScreenRelationModel,\r\n isNew: boolean,\r\n data: any,\r\n closeAfterSave: boolean = true,\r\n linkListInstance = null,\r\n requestedFromEditScreen: boolean = false\r\n ): P.Promise<LinkEditor> {\r\n var deferredResult = P.defer<LinkEditor>();\r\n BlockUI.Block();\r\n LinkEditorStore.GetData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n MainRecordTypeId: relationModel.MainRecordTypeId,\r\n MainRecordKindId: relationModel.MainRecordKindId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n Kseq: relationModel.KSeq,\r\n IsNew: isNew\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(model => {\r\n if (model !== null) {\r\n const FRelationFieldModel = _.where(model.Fields, {Name: 'F_RELATIONTYPEVALUE'})[0];\r\n\r\n this.GetRelationTypesData({\r\n MainEntityId: relationModel.MainEntityId,\r\n MainRecordId: relationModel.MainRecordId,\r\n MainRecordTypeId: relationModel.MainRecordTypeId,\r\n RelatedEntityId: relationModel.RelatedEntityId,\r\n RelatedRecordId: relationModel.RelatedRecordId,\r\n RelatedRecordTypeId: relationModel.RelatedRecordTypeId,\r\n SequenceId: relationModel.KSeq\r\n }, FRelationFieldModel,\r\n (relationTypes, relationTypeFieldData) => {\r\n let screen = this.GenerateScreen(\r\n model,\r\n data,\r\n closeAfterSave,\r\n relationTypes,\r\n relationTypeFieldData,\r\n linkListInstance,\r\n requestedFromEditScreen,\r\n relationModel\r\n );\r\n if (screen) {\r\n screen._editorDataModel = data;\r\n }\r\n deferredResult.resolve(screen);\r\n }\r\n );\r\n }\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static GetRelationTypesData(GetRelationTypesRequestModel: IGetRelationTypesRequestModel, FRelationFieldModel, callback) {\r\n if (FRelationFieldModel) {\r\n LinkEditorStore.GetRelationTypesData(GetRelationTypesRequestModel).then(model => {\r\n callback.call(this, model.Items,\r\n {\r\n FieldId: FRelationFieldModel.Id,\r\n FieldName: FRelationFieldModel.Name,\r\n FieldValue: FRelationFieldModel.Value,\r\n RelatedRecordId: GetRelationTypesRequestModel.RelatedRecordId,\r\n CurrentClusterMode: model.CurrentClusterMode,\r\n });\r\n }).fail(error => new Notifier().Failed(error.message));\r\n } else {\r\n callback();\r\n }\r\n\r\n }\r\n\r\n private static GetControlDataModel(field: LinkedFieldValueModel, model: LinkEditorModel, data: DataModel) {\r\n const controlDataModel = new ControlDataModel();\r\n controlDataModel.Reference = field.Reference;\r\n controlDataModel.ControlId = field.Id;\r\n\r\n if (data) {\r\n const existsData = _.find(data.FieldValues, item => item.FieldId === field.Id);\r\n if (existsData) {\r\n controlDataModel.Value = existsData.FieldValue[1];\r\n controlDataModel.DisplayValue = existsData.FieldValue[1];\r\n } else {\r\n controlDataModel.Value = field.Value;\r\n }\r\n } else {\r\n controlDataModel.Translations = field.Translations;\r\n controlDataModel.Value = field.Value;\r\n controlDataModel.DisplayValue = field.DisplayValue;\r\n }\r\n\r\n return controlDataModel;\r\n }\r\n\r\n get RelationTypeField(): LinkedFieldValueModel{\r\n return this._linkEditorModel.Fields.find(field => field.Name === 'F_RELATIONTYPEVALUE');\r\n }\r\n\r\n static GenerateScreen(\r\n model: LinkEditorModel,\r\n data: DataModel,\r\n closeAfterSave: boolean = true,\r\n relationTypes,\r\n relationTypeFieldData,\r\n linkListInstance,\r\n requestedFromEditScreen: boolean,\r\n relation: ILoadScreenRelationModel\r\n ): LinkEditor {\r\n let screenModel = new ScreenModel();\r\n screenModel.EntityIcon = new IconModel();\r\n screenModel.EntityIcon.FontName = \"1\";\t\t// TODO specify FontName\r\n screenModel.ScreenTypeName = ScreenTypes[ScreenTypes.LinkEditor];\r\n screenModel.ActionBar = new SubFormModel();\r\n screenModel.EntityName = model.LinkEntity;\r\n\r\n const subForm = new SubFormModel();\r\n screenModel.SubForms = [subForm];\r\n\r\n const dataModel = new ScreenDataModel();\r\n let relationTypeSelectedData = null;\r\n\r\n const propertyFields = model.Fields\r\n .filter(field => field.TypeName === FIELD_TYPES.Property)\r\n .map((field, index) => ({\r\n Field: field,\r\n BackgroundColor: SoftColorsProvider.GetColor(index, SoftColorScheme.RGBA)\r\n }));\r\n\r\n const controlledFields = model.Fields\r\n .filter(field => field.Name !== 'F_RELATIONTYPEVALUE')\r\n .filter(field => field.TypeName !== FIELD_TYPES.Property)\r\n .sort((field1, field2) => field2.Sort > field1.Sort ? -1 : 1);\r\n\r\n let controlsWithFields: ControlModel[] = [];\r\n _.each(controlledFields, field => {\r\n const controlModel = this.GetControlModel(field, model.LinkEntity);\r\n\r\n const propertyField = _.find(propertyFields, pField => pField.Field.Id === field.PropertyFieldId);\r\n if (propertyField) {\r\n controlModel.SetBackgroundColor(propertyField.BackgroundColor);\r\n }\r\n\r\n const controlDataModel = this.GetControlDataModel(field, model, data);\r\n\r\n dataModel.ControlsData.push(controlDataModel);\r\n controlsWithFields.push(controlModel);\r\n });\r\n\r\n controlsWithFields = _.chain(controlsWithFields).sortBy(control => control.Sort).sortBy(control => control.Fields[0].PropertyFieldId).value();\r\n\r\n let memoControl = _.find(controlsWithFields, control=>{\r\n return control.TypeName == CONTROL_TYPES.Memo;\r\n });\r\n\r\n if(memoControl){\r\n controlsWithFields.splice(controlsWithFields.indexOf(memoControl), 1);\r\n controlsWithFields.push(memoControl);\r\n }\r\n\r\n subForm.Controls.push(...controlsWithFields);\r\n\r\n if (data) {\r\n const relationTypeField = _.filter(data.FieldValues, field => field.FieldValue[0].split('.')[1] === 'F_RELATIONTYPEVALUE')[0];\r\n relationTypeSelectedData = relationTypeField && relationTypeField.FieldValue[1];\r\n }\r\n\r\n screenModel.Data = dataModel;\r\n\r\n if (relationTypes) {\r\n let listAvailabilityStatus = null;\r\n let SelectedRelationTypeName = null;\r\n\r\n const RelationTypes = relationTypes.map(relationType => {\r\n relationType.Id = relationTypeFieldData.FieldId;\r\n relationType.FieldName = relationTypeFieldData.FieldName;\r\n if (+relationType.RecordId === +relationTypeFieldData.FieldValue\r\n || +relationType.RecordId === +relationTypeSelectedData) {\r\n SelectedRelationTypeName = relationType.TypeName;\r\n }\r\n return relationType;\r\n });\r\n\r\n screenModel = _.extend(screenModel, {\r\n RelationTypes: RelationTypes,\r\n SelectedRelationTypeId: relationTypeFieldData.FieldValue,\r\n SelectedRelationTypeName: SelectedRelationTypeName,\r\n });\r\n\r\n if (linkListInstance) {\r\n listAvailabilityStatus = linkListInstance.GetLinkTypesState(model.RightLinkedEntityName, relationTypeFieldData.RelatedRecordId);\r\n listAvailabilityStatus && listAvailabilityStatus.map((linkType) => {\r\n if (linkType.InstancingMaximum === 0) {\r\n const targetedLinkType: any = _.where((screenModel as any).RelationTypes, {\r\n TypeName: linkType.Name\r\n });\r\n if (targetedLinkType.length) {\r\n targetedLinkType.map((linkType) => {\r\n linkType.Enabled = false;\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n const screen = new LinkEditor(screenModel, model, relation);\r\n\r\n screen._linkListInstance = linkListInstance;\r\n screen._linkEditorModel = model;\r\n screen._tabTables = !requestedFromEditScreen && model.TabSettings.length > 0\r\n ? new TabTables({ \r\n Screen: screen,\r\n TableParams: model.TabSettings.map(tabSettings => {\r\n const record = screen._linkEditorModel.LeftLinkedEntityId === tabSettings.TargetTableId\r\n ? screen._linkEditorModel.LeftLinkedRecord\r\n : screen._linkEditorModel.RightLinkedRecord;\r\n\r\n const scopedRecord = screen._linkEditorModel.LeftLinkedEntityId === tabSettings.TargetTableId\r\n ? screen._linkEditorModel.RightLinkedRecord.Id\r\n : screen._linkEditorModel.LeftLinkedRecord.Id\r\n\r\n const scopedTable = screen._linkEditorModel.LeftLinkedEntityId === tabSettings.TargetTableId\r\n ? screen._linkEditorModel.RightLinkedEntityId\r\n : screen._linkEditorModel.LeftLinkedEntityId\r\n\r\n return {\r\n ...tabSettings,\r\n RecordId: record.Id,\r\n RecordTypeId: record.TypeId,\r\n RecordTypeName: record.TypeName,\r\n LifeStatusId: record.LifeStatusId,\r\n LifeStatusName: record.LifeStatusName,\r\n ScopedRecordId: scopedRecord,\r\n ScopedTableId: scopedTable\r\n }\r\n })\r\n }) : null;\r\n\r\n if (screen._tabTables) {\r\n screen._tabTables.SelectTab(0);\r\n }\r\n\r\n screen.SetModalOptions({\r\n maxWidth: '700',\r\n addClass: 'link-editor-modal showScrollModal',\r\n minHeight: '550',\r\n height: '520',\r\n blockScroll: true\r\n });\r\n\r\n let hasRelations = relationTypes ? !!relationTypes.length : false;\r\n screen._hasRelations(hasRelations);\r\n\r\n if (model.Fields.length == 1 && model.Fields[0].Name === 'F_RELATIONTYPEVALUE' && !hasRelations) {\r\n return null;\r\n }\r\n\r\n if (hasRelations) {\r\n const relationTypeValuesEnabled = relationTypeFieldData.CurrentClusterMode === ClusterModes.Use;\r\n screen._relationTypeValuesEnabled(relationTypeValuesEnabled);\r\n }\r\n\r\n relationTypeSelectedData && screen._selectedRelationTypeId(relationTypeSelectedData);\r\n screen._leftLinkedEntityName = screen._linkEditorModel.LeftLinkedEntityTranslatedName;\r\n screen._rightLinkedEntityName = screen._linkEditorModel.RightLinkedEntityTranslatedName;\r\n screen.Show(closeAfterSave);\r\n return screen;\r\n }\r\n\r\n private Show(closeAfterSave: boolean = true) {\r\n super.ShowInModal();\r\n this._closeAfterSave = closeAfterSave;\r\n }\r\n\r\n static GetControlModel(fieldModel: LinkedFieldValueModel, entityName: string): ControlModel {\r\n const attachedField = new AttachedFieldModel();\r\n\r\n attachedField.Id = fieldModel.Id;\r\n attachedField.Name = fieldModel.Name;\r\n attachedField.FormatName = fieldModel.FormatName;\r\n attachedField.EntityName = entityName;\r\n attachedField.ValFieldId = fieldModel.ValFieldId;\r\n attachedField.ValFieldTypeName = fieldModel.ValFieldTypeName;\r\n attachedField.ValFieldFormatName = fieldModel.ValFieldFormatName;\r\n attachedField.ValFieldSize = fieldModel.ValFieldSize;\r\n attachedField.AllowCustomValue = fieldModel.AllowCustomValue;\r\n attachedField.AllowCreatingRecords = fieldModel.AllowCreatingRecords;\r\n attachedField.IsRequired = fieldModel.IsRequired;\r\n attachedField.IsReadOnly = fieldModel.IsReadOnly;\r\n attachedField.IsSystem = fieldModel.IsSystem;\r\n attachedField.IsVirtual = fieldModel.IsVirtual;\r\n attachedField.ValTableId = fieldModel.ValTableId;\r\n attachedField.ValTableName = fieldModel.ValTableName;\r\n attachedField.HasDefaultValue = fieldModel.HasDefaultValue;\r\n attachedField.FieldTypeName = fieldModel.TypeName;\r\n attachedField.Size = fieldModel.Size;\r\n attachedField.AllowInsert = fieldModel.AllowInsert;\r\n attachedField.ValTableType = fieldModel.ValTableType;\r\n attachedField.DependsOnId = fieldModel.DependsOnId;\r\n attachedField.FilledById = fieldModel.FilledById;\r\n attachedField.PropertyFieldId = fieldModel.PropertyFieldId;\r\n attachedField.DynamicFields = fieldModel.DynamicFields;\r\n attachedField.FontColor = fieldModel.FontColor;\r\n attachedField.FullWidth = fieldModel.FullWidth;\r\n attachedField.HasLinkEditorVisibility = fieldModel.HasLinkEditorVisibility;\r\n attachedField.FontStyles = fieldModel.FontStyles;\r\n attachedField.FilterByField = fieldModel.FilterByField;\r\n attachedField.HasFilter = fieldModel.HasFilter;\r\n\r\n const controlModel = new ControlModel();\r\n\r\n controlModel.Fields.push(attachedField);\r\n controlModel.Id = fieldModel.Id;\r\n controlModel.Name = fieldModel.Name;\r\n controlModel.Label = fieldModel.NameTranslated || fieldModel.Name;\r\n controlModel.LabelPosition = \"Left\";\r\n controlModel.TypeName = FIELD_TYPE_TO_CONTROL[fieldModel.TypeName];\r\n controlModel.IsRequired = fieldModel.IsRequired;\r\n controlModel.IsReadOnly = fieldModel.IsReadOnly;\r\n controlModel.FieldFlag = fieldModel.FieldFlag;\r\n controlModel.ResetDependsOnValue = fieldModel.ResetDependsOnValue;\r\n controlModel.SkipTimeShifting = fieldModel.SkipTimeShifting;\r\n controlModel.UseFieldName = true;\r\n\r\n return controlModel;\r\n }\r\n\r\n ValidateData() {\r\n var result = true;\r\n _.each(this._controls, control => {\r\n var isControlValid = control.IsValid();\r\n if (!isControlValid) {\r\n result = false;\r\n }\r\n });\r\n\r\n if(this._tabTables && !this._tabTables.ValidateData()){\r\n result = false;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n Save() {\r\n if (this.ValidateData()) {\r\n var dataModel = this.DeserializeData();\r\n if (dataModel.FieldValues.length > 0 || dataModel.Grids.length > 0) {\r\n this.Trigger(\"SAVE_DATA\", dataModel);\r\n if (this._closeAfterSave) {\r\n this.Close();\r\n }\r\n } else {\r\n this.Close();\r\n }\r\n }\r\n }\r\n\r\n GetNotifier(): Notifier {\r\n return new Notifier($(this._el));\r\n }\r\n\r\n GetLinkedRecordLabel(linkedRecord: LinkedRecordModel) {\r\n if (!linkedRecord) {\r\n return '';\r\n }\r\n\r\n return `: ${linkedRecord.TranslatedName || linkedRecord.Name}${linkedRecord.Alias ? ` - ${linkedRecord.Alias}` : ''}`;\r\n }\r\n\r\n GetRelationTypeLabel(relationType) {\r\n const typeName = relationType.TypeNameTranslation || relationType.TypeName;\r\n const name = relationType.NameTranslation || relationType.Name;\r\n const reverse = relationType.ReverseTranslation || relationType.Reverse;\r\n\r\n return `${typeName} : ${name} > ${reverse}`;\r\n }\r\n\r\n DeserializeData(): DataModel {\r\n var dataModel = new DataModel();\r\n dataModel.EntityId = this._relatedEntityId;\r\n dataModel.RecordId = this._relatedRecordId;\r\n dataModel.KSeq = this._kSeq;\r\n _.each(this._controls, control => {\r\n let controlType = control.GetType();\r\n\r\n if (SIMPLE_CONTROLS.indexOf(controlType) >= 0) {\r\n if (control.IsModified() || control.GetFieldModel().HasDefaultValue) {\r\n const data = control.Deserialize();\r\n if (data) {\r\n var fieldDataModel = new FieldDataModel();\r\n fieldDataModel.FieldId = control.GetControlId();\r\n fieldDataModel.FieldValue = data;\r\n dataModel.FieldValues.push(fieldDataModel);\r\n }\r\n }\r\n }\r\n });\r\n if (this._selectedRelationTypeId()) {\r\n const selectedRelationTypeField = _.where(this._relationTypes, {\r\n RecordId: +this._selectedRelationTypeId()\r\n })[0];\r\n let unselectedRelationtype = null;\r\n if (!selectedRelationTypeField) unselectedRelationtype = this._relationTypes[0];\r\n const fieldDataModel = new FieldDataModel();\r\n const FieldValueKey = `${this._linkEditorModel.LinkEntity}.${selectedRelationTypeField && selectedRelationTypeField.FieldName || unselectedRelationtype.FieldName}`;\r\n selectedRelationTypeField && this._linkListInstance && this._linkListInstance.UpdateLinkTypesState(this._linkEditorModel.RightLinkedEntityName, this._relatedRecordId, selectedRelationTypeField.TypeName, -1);\r\n fieldDataModel.FieldId = selectedRelationTypeField && selectedRelationTypeField.Id || unselectedRelationtype.Id;\r\n fieldDataModel.FieldValue = [FieldValueKey, selectedRelationTypeField && selectedRelationTypeField.RecordId || 0];\r\n dataModel.FieldValues.push(fieldDataModel);\r\n }\r\n\r\n dataModel.Grids = this._tabTables ? this._tabTables.Serialize() : [];\r\n\r\n return dataModel;\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\"> <div class=\\\"clearfix\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </form> </div> <div class=\\\"link-editor-container clearfix\\\"> <!--<legend data-bind=\\\"text: GetLeftLinkedEntityName()\\\"></legend>--> <div class=\\\"clearfix subFormWrapper\\\"> <div class=\\\"box-shadow-wrapper link-editor-nameContainer\\\"> <div class=\\\"link-editor-nameWrapper\\\"> <legend class=\\\"link-editor-name\\\"> <div data-bind=\\\"text: _leftLinkedEntityName + GetLinkedRecordLabel(_linkEditorModel.LeftLinkedRecord)\\\"></div> <i class=\\\"fa fa-link\\\" aria-hidden=\\\"true\\\"></i> <div data-bind=\\\"text: _rightLinkedEntityName + GetLinkedRecordLabel(_linkEditorModel.RightLinkedRecord)\\\"></div> </legend> </div> </div> <!--ko if: _hasRelations --> <div class=\\\"box-shadow-wrapper relationsDropdown\\\"> <select data-bind=\\\"attr: {value: _selectedRelationTypeId(), disabled: !_relationTypeValuesEnabled()}, event:{ change: SetRelationTypeValue}, css: {disabled: !_relationTypeValuesEnabled()}\\\" class=\\\"relation-types-select\\\"> <option value=\\\"0\\\" data-bind=\\\"attr: {selected: !_defaultDisabled()}, text: _labels.NO_RELATION_TYPE\\\">No relation type </option> <!-- ko foreach: _relationTypes --> <option title=\\\"\\\" data-bind=\\\"text: $parent.GetRelationTypeLabel($data),\\r\\n\\t\\t\\t\\t\\t\\tstyle: {backgroundColor: !IsRecordEnabled || !Enabled ? '#ccc' : ''},\\r\\n\\t\\t\\t\\t\\t\\tattr: {\\r\\n\\t\\t\\t\\t\\t\\t\\tvalue: RecordId,\\r\\n\\t\\t\\t\\t\\t\\t\\tselected: (+$parent._selectedRelationTypeId() === +RecordId),\\r\\n\\t\\t\\t\\t\\t\\t\\tdisabled: !IsRecordEnabled || !Enabled\\r\\n\\t\\t\\t\\t\\t\\t}\\\"></option> <!-- /ko --> </select> </div> <!-- /ko --> <div class=\\\"box-shadow-wrapper subFormsWrapper\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped}\\\" class=\\\"clearfix\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> <!-- /ko --> </div> </div> <!-- ko foreach: ReferenceControls --> <!-- ko with: ReferenceConsultScreen --> <!-- ko template: { name: $data.GetReferenceConsultScreenTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!--ko with: _tabTables--> <!-- ko template: { html: $data.GetTemplate.bind($data) } --> <!-- /ko --> <!-- /ko --> </div> </div> </div> \";\n// Exports\nexport default code;","import {GridRowDataModel} from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\n\r\nexport class FieldDataModel {\r\n constructor() {\r\n this.FieldValue = [];\r\n }\r\n\r\n FieldId: number;\r\n FieldValue: Array<string>;\r\n}\r\n\r\nexport class GridDataModel {\r\n Rows: GridRowDataModel[];\r\n LinkListChanges: UpdateDataModel[];\r\n}\r\n\r\nexport class DataModel {\r\n constructor() {\r\n this.FieldValues = [];\r\n this.Grids = [];\r\n }\r\n\r\n FieldValues: Array<FieldDataModel>;\r\n Grids: GridDataModel[];\r\n\r\n EntityId: number;\r\n RecordId: number;\r\n KSeq?: number;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class PropertyTable {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n}\r\n\r\nexport class PropertyMode {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}\r\n\r\nexport class PropertyFieldConfigModel {\r\n @deserializeAs(PropertyTable)\r\n PropertyTable: PropertyTable;\r\n\r\n @deserializeAs(PropertyMode)\r\n PropertyMode: PropertyMode;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize'\r\nimport { ReferenceModel } from \"Core/ScreenManager/Models/ReferenceModel\"\r\nimport {PropertyFieldConfigModel} from \"./PropertyFieldConfigModel\";\r\n\r\nexport class TranslationValue {\r\n\t@deserialize\r\n\tLanguageId: number;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n}\r\n\r\nexport class LinkedFieldValueModel {\r\n\tconstructor() {\r\n\t\tthis.IsModified = false;\r\n\t\tthis.Translations = [];\r\n\t\tthis.DynamicFields = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tValue: string;\r\n\r\n\t@deserialize\r\n\tDisplayValue: string;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tFormatName: string;\r\n\r\n\t@deserialize\r\n\tAllowCustomValue: boolean;\r\n\r\n\t@deserialize\r\n\tAllowCreatingRecords: boolean;\r\n\r\n\t@deserialize\r\n\tIsModified: boolean;\r\n\r\n\t@deserialize\r\n\tIsRequired: boolean;\r\n\r\n\t@deserialize\r\n\tIsReadOnly: boolean;\r\n\r\n\t@deserialize\r\n IsSystem: boolean;\r\n\r\n @deserialize\r\n IsVirtual: boolean;\r\n\r\n\t@deserialize\r\n\tAllowInsert: boolean;\r\n\r\n\t@deserialize\r\n\tValTableType: string;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValTableName: string;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserialize\r\n\tValFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tValFieldFormatName: string;\r\n\r\n\t@deserialize\r\n\tValFieldSize: number;\r\n\r\n\t@deserialize\r\n\tPropertyFieldId: number;\r\n\r\n\t@deserializeAs(PropertyFieldConfigModel)\r\n\tPropertyConfig: PropertyFieldConfigModel;\r\n\r\n\t@deserialize\r\n\tFilledById: number;\r\n\r\n\t@deserialize\r\n\tHasDefaultValue: boolean;\r\n\r\n\t@deserialize\r\n\tFieldFlag: number;\r\n\r\n\t@deserialize\r\n\tTranslations: Array<TranslationValue>;\r\n\r\n\t@deserialize\r\n\tNameTranslated: string;\r\n\r\n @deserialize\r\n Size: number;\r\n\r\n @deserialize\r\n\tSort: number;\r\n\r\n @deserialize\r\n DependsOnId: number;\r\n\r\n @deserialize\r\n\tDynamicFields: Array<number>;\r\n\r\n @deserialize\r\n\tResetDependsOnValue: boolean;\r\n\r\n @deserialize\r\n SkipTimeShifting: boolean;\r\n\r\n @deserialize\r\n\tFullWidth: boolean;\r\n\r\n @deserialize\r\n\tHasLinkEditorVisibility: boolean;\r\n\r\n @deserialize\r\n\tFontStyles: Array<{Id: number, Name: string}>;\r\n\r\n @deserialize\r\n FontColor: string;\r\n\r\n @deserialize\r\n Reference: ReferenceModel;\r\n\r\n\t@deserialize\r\n\tFilterByField: number;\r\n\r\n\t@deserialize\r\n\tHasFilter: boolean;\r\n}","import {deserialize} from 'libs/cerialize'\r\n\r\nexport class LinkEditorTabSettingsModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n TableId: number;\r\n\r\n @deserialize\r\n TableName: string;\r\n\r\n @deserialize\r\n TableTypeName: string;\r\n\r\n @deserialize\r\n TargetTableId: number;\r\n\r\n @deserialize\r\n TargetTableName: string;\r\n\r\n @deserialize\r\n LookupFieldId: number;\r\n\r\n @deserialize\r\n LookupFieldName: string;\r\n}","import {deserialize} from 'libs/cerialize'\r\nimport {deserializeAs} from 'libs/cerialize'\r\nimport {LinkedFieldValueModel} from 'Core/Screens/Common/LinkEditor/Models/LinkedFieldValueModel'\r\nimport {LinkEditorTabSettingsModel} from './LinkEditorTabSettingsModel';\r\n\r\nexport class LinkedRecordModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n LifeStatusName: string;\r\n\r\n @deserialize\r\n Alias: string;\r\n}\r\n\r\nexport class LinkEditorModel {\r\n @deserialize\r\n LinkTableId: number;\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n Subject: string;\r\n\r\n @deserialize\r\n LinkEntity: string;\r\n\r\n @deserialize\r\n LinkEntityTranslatedName: string;\r\n\r\n @deserialize\r\n RightLinkedEntityId: number;\r\n\r\n @deserialize\r\n RightLinkedEntityName: string;\r\n\r\n @deserialize\r\n RightLinkedEntityTranslatedName: string;\r\n\r\n @deserialize\r\n LeftLinkedEntityId: number;\r\n\r\n @deserialize\r\n LeftLinkedEntityName: string;\r\n\r\n @deserialize\r\n LeftLinkedEntityTranslatedName: string;\r\n\r\n @deserialize\r\n HasCustomFields: boolean;\r\n\r\n @deserializeAs(LinkedFieldValueModel)\r\n Fields: Array<LinkedFieldValueModel>;\r\n\r\n @deserializeAs(LinkedRecordModel)\r\n LeftLinkedRecord: LinkedRecordModel;\r\n\r\n @deserializeAs(LinkedRecordModel)\r\n RightLinkedRecord: LinkedRecordModel;\r\n\r\n @deserializeAs(LinkEditorTabSettingsModel)\r\n TabSettings: LinkEditorTabSettingsModel[];\r\n}","import * as _ from 'underscore'\r\nimport {GenericDeserialize} from 'libs/cerialize'\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Deserialize} from 'libs/cerialize'\r\n\r\nimport {LinkEditorModel} from 'Core/Screens/Common/LinkEditor/Models/LinkEditorModel'\r\n\r\nexport interface IGetLinkEditorRequestModel {\r\n\tMainEntityId: number;\r\n\tMainRecordId: number;\r\n\tMainRecordTypeId: number;\r\n\tMainRecordKindId: number;\r\n\tRelatedEntityId: number;\r\n\tRelatedRecordId: number;\r\n\tKseq: number;\r\n\tIsNew: boolean;\r\n\tErrorMessage?: string;\r\n}\r\n\r\nexport interface IGetRelationTypesRequestModel {\r\n\tMainEntityId: number,\r\n\tMainRecordId: number,\r\n\tMainRecordTypeId: number,\r\n\tRelatedEntityId: number,\r\n\tRelatedRecordId: number,\r\n\tRelatedRecordTypeId: number,\r\n\tSequenceId: number;\r\n}\r\n\r\nexport class LinkEditorStore {\r\n\tstatic GetData(params: IGetLinkEditorRequestModel): P.Promise<LinkEditorModel> {\r\n\t\tvar deferredResult = P.defer<LinkEditorModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LINK_EDITOR.GET_DATA,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tif (data.ResultObject !== null) {\r\n\t\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetRelationTypesData(params: IGetRelationTypesRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<LinkEditorModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.LINK_EDITOR.GET_RELATION_TYPES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): LinkEditorModel {\r\n\t\treturn GenericDeserialize<LinkEditorModel>(jsonObject, LinkEditorModel);\r\n\t}\r\n}","export var EVENTS = {\r\n\tREFRESH_GRID: 'REFRESH_GRID',\r\n\tLINK_BOOK_RECORD: 'LINK_BOOK_RECORD'\r\n}","import {deserialize} from 'libs/cerialize'\r\nimport {deserializeAs} from 'libs/cerialize'\r\n\r\nexport class EntityTypeModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n IsRoot: boolean;\r\n\r\n @deserialize\r\n LifeStatusId: number;\r\n\r\n @deserialize\r\n LifeStatusName: string;\r\n}","import {deserialize, serializeAs} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {TranslationModel} from \"./TranslationModel\";\r\n\r\nexport class FieldModel {\r\n\tconstructor() {\r\n\t\tthis.IsEnabled = true;\r\n\t\tthis.Translations = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n FieldName: string;\r\n\r\n @deserialize\r\n FieldNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserialize\r\n\tIsSystem: boolean;\r\n\r\n\tIsEnabled: boolean;\r\n\r\n\tEntityIcon: Icon;\r\n\r\n\tIsPrimaryKey(): boolean {\r\n\t\treturn this.FieldTypeName === 'PKey';\r\n\t};\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\t@serializeAs('FieldName')\r\n\tFullName: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class LanguageModel {\r\n\t@deserialize\r\n\tK_Language: number;\r\n}\r\n\r\nexport class TranslationModel {\r\n\t@deserialize\r\n\tTranslation: string;\r\n\r\n\r\n\t@deserialize\r\n\tLanguage: LanguageModel;\r\n}","import {deserialize} from 'libs/cerialize'\r\nimport {deserializeAs} from 'libs/cerialize'\r\nimport {FieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/FieldModel'\r\nimport {EntityTypeModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityTypeModel'\r\n\r\nexport class EntityModel {\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityFullName: string;\r\n\r\n\t@deserialize\r\n\tEntityFullNameTranslation: string;\r\n\r\n\t@deserializeAs(EntityTypeModel)\r\n\tEntityTypes: Array<EntityTypeModel>;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tIconName: string;\r\n\r\n\t@deserialize\r\n\tGraphicalIcon: string;\r\n\t\r\n\t@deserializeAs(FieldModel)\r\n\tFields: Array<FieldModel>;\r\n\r\n\t@deserialize\r\n\tIsView: boolean;\r\n}","import {deserializeAs} from 'libs/cerialize'\r\nimport {EntityModel} from \"./EntityModel\";\r\n\r\nexport class PlannerLevelEntityModel {\r\n\r\n constructor(){\r\n this.SubEntities = [];\r\n }\r\n\r\n @deserializeAs(EntityModel)\r\n Entity: EntityModel;\r\n\r\n @deserializeAs(EntityModel)\r\n SubEntities: Array<EntityModel>;\r\n\r\n}","import {deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\n\r\nexport class ImageFieldModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslated: string;\r\n\r\n @deserializeAs(TranslationModel)\r\n NameTranslations: Array<TranslationModel>;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize'\r\nimport {ImageFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/ImageFieldModel'\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\n\r\nexport class TableWithImagesModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Type: string;\r\n\r\n @deserializeAs(ImageFieldModel)\r\n ImageFields: Array<ImageFieldModel>;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n NameTranslated: string;\r\n\r\n @deserializeAs(TranslationModel)\r\n NameTranslations: Array<TranslationModel>;\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {EntityModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityModel';\r\nimport {PlannerLevelEntityModel} from \"../Models/PlannerLevelEntityModel\";\r\nimport {TableWithImagesModel} from \"../Models/TableWithImagesModel\";\r\n\r\nexport interface IGetEntitiesRequestModel {\r\n\tEntityId: number;\r\n\tTableTypeId: number;\r\n}\r\n\r\nexport interface IGetSignatureEntitiesRequestModel {\r\n\tSubjectTableId: number;\r\n}\r\n\r\nexport interface IGetImageEntitiesRequestModel {\r\n\tSubjectTableId: number;\r\n}\r\n\r\nexport class EntitiesStore {\r\n\tstatic Get(params: IGetEntitiesRequestModel): P.Promise<Array<EntityModel>> {\r\n\t\tvar deferredResult = P.defer<Array<EntityModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetEntities\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetImageEntities(params: IGetImageEntitiesRequestModel) {\r\n\t\tconst deferredResult = P.defer<Array<TableWithImagesModel>>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/ImageApi/GetImageControlConfig\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.ImageDeserialize(data.Tables));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetSignatureEntities(params: IGetSignatureEntitiesRequestModel): P.Promise<Array<TableWithImagesModel>> {\r\n\r\n\t\tvar deferredResult = P.defer<Array<TableWithImagesModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/SignatureApi/GetSignatureControlConfig\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.SignatureDeserialize(data.Tables)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetPlanerLevelEntities(params: IGetEntitiesRequestModel): P.Promise<Array<PlannerLevelEntityModel>> {\r\n\t\tlet deferredResult = P.defer<Array<PlannerLevelEntityModel>>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetPlannerLevelEntities\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultObject, PlannerLevelEntityModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetSubEntities(params: IGetEntitiesRequestModel): P.Promise<Array<EntityModel>> {\r\n\t\tvar deferredResult = P.defer<Array<EntityModel>>();\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetSubEntities\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): any {\r\n\t\tvar model = GenericDeserialize<EntityModel>(jsonObject, EntityModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tstatic SignatureDeserialize(jsonObject: any): any {\r\n\t\tvar model = GenericDeserialize<TableWithImagesModel>(jsonObject, TableWithImagesModel);\r\n\t\treturn model;\r\n\t}\r\n\r\n\tstatic ImageDeserialize(jsonObject: any): any {\r\n\t\treturn GenericDeserialize<TableWithImagesModel>(jsonObject, TableWithImagesModel);\r\n\t}\r\n}","import {serialize, deserialize, deserializeAs, serializeAs} from 'libs/cerialize';\r\nimport {GridStackWidget} from 'gridstack';\r\nimport {ISettingsModal} from \"Core/Controls/FormDesigner/SettingsModal/SettingsModal\";\r\nimport {IWebSizeValue} from \"Core/GeneralProperties/Managers/WebSizeProperty/WebSizeProperty\";\r\n\r\nexport class Width {\r\n constructor(option: IWebSizeValue) {\r\n this.Value = option.Value;\r\n this.Unit = option.Unit;\r\n }\r\n\r\n @serialize\r\n @deserialize\r\n Value: number;\r\n\r\n @serialize\r\n @deserialize\r\n Unit: {\r\n Name: string;\r\n Value: any\r\n };\r\n}\r\n\r\nexport class DashboardBlock {\r\n constructor(widget: GridStackWidget) {\r\n if (widget) {\r\n this.x = widget.x;\r\n this.y = widget.y;\r\n this.w = widget.w;\r\n this.h = widget.h;\r\n }\r\n }\r\n\r\n @serializeAs('X')\r\n @deserializeAs('X')\r\n x: number;\r\n\r\n @serializeAs('Y')\r\n @deserializeAs('Y')\r\n y: number;\r\n\r\n @serializeAs('W')\r\n @deserializeAs('W')\r\n w: number;\r\n\r\n @serializeAs('H')\r\n @deserializeAs('H')\r\n h: number;\r\n}\r\n\r\nexport class SubFormProperties {\r\n @serializeAs(DashboardBlock)\r\n @deserializeAs(DashboardBlock)\r\n DashboardBlock: DashboardBlock;\r\n}\r\n\r\nexport class FormProperties {\r\n @serialize\r\n @deserialize\r\n Options?: Array<ISettingsModal>;\r\n}","export var EVENTS = {\r\n\tRECORD_SAVED: 'RECORD_SAVED',\r\n\tRECORD_DELETED: 'RECORD_DELETED'\r\n}","import { PasswordActions } from \"Core/Controls/Password/Password\";\r\nimport { FollowUpRecordModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport { TagListChanges } from \"Core/Controls/Tag/Models/TagListChanges\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\n\r\nimport { SecurityEditorModel } from \"Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\nimport { GridRowDataModel } from 'Core/Controls/Grid/Models/UpdateDataModel/UpdateDataModel';\r\nimport {SpreadsheetSaveDto} from 'Core/Controls/Spreadsheet/Models/Dto/SpreadsheetSaveDto';\r\nimport {TypeSecuritySerializedModel} from \"Core/Controls/TypeSecurity/Models/TypeSecuritySerializedModel\";\r\n\r\nexport class DataModel {\r\n\r\n\tEntityId: number;\r\n\tEntityTypeId: number;\r\n\tKindId: number;\r\n\tRecordId: number;\r\n\tParentRecordId: number;\r\n\tParentRecordTypeId: number;\r\n\tScreenTypeId: number;\r\n\tUseLinking: boolean;\r\n\tFieldValueList: Array<Array<string>>;\r\n\tRecordSpecs: RecordSpecsModel;\r\n\tRecordSettings: SecurityEditorModel;\r\n\tAttachments: Array<any>;\r\n\tRemoveAttachments: Array<any>;\r\n\tDropAttachments: Array<any>;\r\n\tExampleRecordId: number;\r\n\tFillFromExample: boolean;\r\n\tDataMode?: DataModes;\r\n\tLinklistChanges: any;\r\n\tTableSecurityChanges: any;\r\n\tTypeSecurityChanges: TypeSecuritySerializedModel;\r\n\tRecordSecurityChanges: any;\r\n\tRecordSharingChanges: any;\r\n\tUserSecurityChanges: any;\r\n\tUserAllowanceChanges: any;\r\n\tFieldSecurityControlChanges: any;\r\n\tPasswordFieldList: Array<Array<string>>;\r\n\tPasswordAction: PasswordActions;\r\n\tFollowUpRecord: FollowUpRecordModel;\r\n\tTagsChanges: Array<TagListChanges>;\r\n\tSpreadsheets: Array<SpreadsheetSaveDto>;\r\n\tGridsData: Array<Array<GridRowDataModel>>;\r\n\tActionSubjectRecord: ActionSubjectRecordModel;\r\n\tAnnotations: Array<any>;\r\n\tLinkToSource: boolean;\r\n\tAliasSuffix: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.FieldValueList = [];\r\n\t\tthis.PasswordFieldList = [];\r\n\t\tthis.RecordSpecs = new RecordSpecsModel();\r\n\t\tthis.Attachments = [];\r\n\t\tthis.RemoveAttachments = [];\r\n\t\tthis.Annotations = [];\r\n\t\tthis.GridsData = [];\r\n\t\tthis.DropAttachments = [];\r\n\t\tthis.LinklistChanges = {\r\n\t\t\tChangedRelations: [],\r\n\t\t\tChangedSecurity: [],\r\n\t\t\tDeletedRelations: [],\r\n\t\t\tLinkEditorChanges: [],\r\n\t\t\tNewRelations: [],\r\n\t\t\tActionSubjectRecord: null\r\n\t\t};\r\n\t\tthis.Spreadsheets = [];\r\n\t}\r\n}","import * as _ from 'underscore'\r\nimport {GenericDeserialize} from 'libs/cerialize'\r\n\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Deserialize} from 'libs/cerialize'\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel'\r\nimport OperationResult from 'Core/Results/ResultModels/OperationResult'\r\n\r\nexport class InsertOrUpdateRecordStore {\r\n\tstatic UpdateData(params: DataModel, transactionId: string = null): P.Promise<OperationResult> {\r\n\t\tvar deferredResult = P.defer<OperationResult>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/ScreenFormApi/InsertOrUpdateRecord',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttransactionId: transactionId,\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t}).fail(err => {\r\n\t\t\t\tdeferredResult.reject(err);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResult {\r\n\t\tvar model = GenericDeserialize<OperationResult>(jsonObject, OperationResult);\r\n\t\treturn model;\r\n\t}\r\n}","export var EVENTS = {\r\n\tMODAL_CLOSE: 'MODAL_CLOSE',\r\n\tDATA_CHANGED: 'DATA_CHANGED'\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IScreen, IFormParam, IControlParam, IForm} from \"Core/Screens/IScreen\";\r\nimport {ControlFactory} from \"Core/Controls/ControlFactory\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {BaseForm} from \"Core/Screens/Forms/Base/BaseForm\";\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {LOCAL_STORAGE} from \"Core/Common/Enums/LocalStorageItems\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nexport class ActionBar extends BaseForm {\r\n\tIcon: string;\r\n\tprivate _activeScreen: any;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(params: IFormParam) {\r\n\t\tsuper(params);\r\n\t\tthis.Icon = params.Screen.GetEntityIcon();\r\n\t\tthis._activeScreen = params.Screen;\r\n\t}\r\n\r\n\tget IsStaticControls(): boolean {\r\n\t\treturn this.Controls().filter(control => control.IsStatic).length >= 1;\r\n\t}\r\n\r\n\tCopyRecordLink() {\r\n\t\tlet url = new URL(window.location.href);\r\n\t\tlet lastDb = Lockr.get(LOCAL_STORAGE.LAST_DB);\r\n\r\n\r\n\t\tlet urlForCopying = `${url.origin}/view?db=${lastDb}&recordId=${this._activeScreen.GetRecordId()}&entityId=${this._activeScreen.GetEntityId()}`;\r\n\r\n\t\tthis._activeScreen.CopyTextToClipboard(urlForCopying, this.Success);\r\n\r\n\t}\r\n\r\n\tSuccess() {\r\n\t\tconst notifier = new Notifier();\r\n\t\tnotifier.Success(NOTIFICATIONS.LINK_HAS_BEEN_COPIED);\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {IScreen, IFormParam, IControlParam, IForm} from \"Core/Screens/IScreen\";\r\nimport {ControlFactory} from \"Core/Controls/ControlFactory\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl';\r\n\r\nexport class BaseForm extends Event implements IForm {\r\n protected _model: SubFormModel;\r\n protected _controls: KnockoutObservableArray<IControl>;\r\n protected _screen: IScreen;\r\n protected _renderMode: RenderModes;\r\n protected _el: HTMLElement;\r\n protected _isWrapped: KnockoutObservable<boolean>;\r\n protected _controlToWrap: IControl;\r\n protected _isExpanded: KnockoutObservable<boolean>;\r\n protected _noSubControls: KnockoutObservable<boolean>;\r\n\r\n constructor(params: IFormParam) {\r\n super();\r\n this._model = params.Model;\r\n this._screen = params.Screen;\r\n this._isWrapped = ko.observable(false);\r\n this._renderMode = params.RenderMode;\r\n this._controls = ko.observableArray([]);\r\n this._renderMode = params.RenderMode;\r\n this._isExpanded = ko.observable(false);\r\n this.InitControls();\r\n\r\n this._controls.subscribe((subControls) => {\r\n _.each(subControls,\r\n (control, index) => {\r\n control.SetSort(index * 10);\r\n });\r\n });\r\n this._noSubControls = ko.observable(!this._controls().length);\r\n }\r\n\r\n GetModel() {\r\n return this._model;\r\n }\r\n\r\n GetScreen(): IScreen {\r\n return this._screen;\r\n }\r\n\r\n private InitControls(): void {\r\n _.each(this._model.Controls, (controlModel: ControlModel) => {\r\n var params: IControlParam = {\r\n Model: controlModel,\r\n Form: this,\r\n RenderMode: this._renderMode\r\n };\r\n var control = ControlFactory.CreateControl(params);\r\n if (control) {\r\n this._controls.push(control);\r\n }\r\n });\r\n }\r\n\r\n Remove() {\r\n this.Trigger('REMOVE_SUB_FORM', {subForm: this});\r\n }\r\n\r\n RemoveControl(parent, control: IControl) {\r\n if (parent instanceof BaseControl) {\r\n const parentControl = parent as BaseControl;\r\n parentControl.RemoveControl(control);\r\n } else {\r\n $(control.GetWrapper())\r\n .fadeOut('slow',\r\n () => {\r\n this._controls.remove(control);\r\n });\r\n\r\n (this.GetScreen() as any).OnControlRemoved(control);\r\n }\r\n }\r\n\r\n get Controls(): KnockoutObservableArray<IControl> {\r\n return this._controls;\r\n }\r\n\r\n AddStaticControl(control: IControl) {\r\n let isFavourite: boolean = control.GetType() === CONTROL_TYPES.ButtonFavorite;\r\n const controlNotExists = !_.any(this._controls(), c => c.GetModel().TypeName === control.GetModel().TypeName);\r\n\r\n if (!isFavourite && controlNotExists) {\r\n this._controls.unshift(control);\r\n return;\r\n }\r\n\r\n }\r\n\r\n AfterRender(el): void {\r\n this._el = el[0];\r\n }\r\n\r\n Wrap(controlToWrap: IControl, value: boolean) {\r\n this._controlToWrap = controlToWrap;\r\n this._isWrapped(value);\r\n }\r\n\r\n GetFormId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n GetFormGuid(): string {\r\n return this._model.Guid;\r\n }\r\n\r\n ValidateExpandSubForm(){\r\n\r\n }\r\n\r\n set IsExpanded(isExpanded: boolean) {\r\n this._isExpanded(isExpanded);\r\n }\r\n} ","import * as ko from \"knockout\";\r\nimport {ControlFactory} from \"Core/Controls/ControlFactory\";\r\nimport {IScreen, IFormParam, IControlParam, IForm} from \"Core/Screens/IScreen\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {SubFormModel} from 'Core/Models/Screens/SubFormModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {RenderModes} from \"Core/Constant\";\r\nimport {BaseForm} from \"Core/Screens/Forms/Base/BaseForm\";\r\n\r\nimport 'Core/Screens/Forms/BottomBar/Templates/BottomBar.html'\r\n\r\nexport class BottomBar extends BaseForm {\r\n\r\n\tconstructor(params: IFormParam) {\r\n\t\tsuper(params);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn `Core/Screens/Forms/BottomBar/Templates/BottomBar`;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport {IFormParam} from 'Core/Screens/IScreen'\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {RenderModes} from 'Core/Constant'\r\nimport {BaseForm} from \"Core/Screens/Forms/Base/BaseForm\";\r\n\r\nimport ViewTemplate from 'Core/Screens/Forms/SubForm/Templates/View.html'\r\nimport DesignTemplate from 'Core/Screens/Forms/SubForm/Templates/Design.html'\r\n\r\nko.templates['Core/Screens/Forms/SubForm/Templates/View'] = ViewTemplate;\r\nko.templates['Core/Screens/Forms/SubForm/Templates/Design'] = DesignTemplate;\r\n\r\nexport class SubForm extends BaseForm {\r\n private _guid: string;\r\n private _showRemoveButton: boolean;\r\n private _showExpandButton: KnockoutObservable<boolean>;\r\n private _configuringLayout : KnockoutObservable<boolean>;\r\n\r\n constructor(params: IFormParam) {\r\n super(params);\r\n\r\n this._showRemoveButton = params.Screen.IsDashboard && params.RenderMode === RenderModes.Design;\r\n this._showExpandButton = ko.observable(false);\r\n this._configuringLayout = ko.observable(false);\r\n this._isExpanded = ko.observable(false);\r\n\r\n this.AddEvent(\"EXPANDED\");\r\n this.AddEvent(\"COLLAPSED\");\r\n this.AddEvent(\"AFTER_DROP_CONTROL\");\r\n this.AddEvent(\"CONTROL_EDITOR_REQUESTED\");\r\n this.AddEvent(\"REMOVE_SUB_FORM\");\r\n }\r\n\r\n RenderDynamically(targetId: string, context) {\r\n const $target = $(`#${targetId}`);\r\n\r\n const wrapper = document.createElement('div');\r\n wrapper.innerHTML = `\r\n <!-- ko with: _subForm -->\r\n <!-- ko template: {name: GetTemplateName.bind($data)} -->\r\n <!-- /ko -->\r\n <!-- /ko -->\r\n `;\r\n ko.applyBindings(_.create(context, { _subForm: this }), wrapper);\r\n\r\n $target.append(wrapper);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return this._renderMode === RenderModes.Design\r\n ? 'Core/Screens/Forms/SubForm/Templates/Design'\r\n : 'Core/Screens/Forms/SubForm/Templates/View';\r\n }\r\n\r\n get IsNew() {\r\n return !this._model.Id;\r\n }\r\n\r\n get ConfiguringLayout() {\r\n return this._configuringLayout();\r\n }\r\n\r\n set ShowExpandButton(showButton: boolean) {\r\n this._showExpandButton(showButton);\r\n }\r\n\r\n get IsExpanded(): boolean {\r\n return this._isExpanded();\r\n }\r\n\r\n StartLayoutConfiguration() {\r\n this._configuringLayout(true);\r\n }\r\n\r\n ApplyLayout() {\r\n this._configuringLayout(false);\r\n }\r\n\r\n Expand() {\r\n if (this._showExpandButton()) {\r\n this._isExpanded(!this._isExpanded());\r\n if (this._isExpanded()) {\r\n this.Trigger(\"EXPANDED\");\r\n } else {\r\n this.Trigger(\"COLLAPSED\");\r\n }\r\n }\r\n }\r\n\r\n ValidateExpandSubForm() {\r\n if (this._showExpandButton() && !this._isExpanded()) {\r\n this.Trigger(\"EXPANDED\");\r\n this._isExpanded(true);\r\n }\r\n }\r\n\r\n ExpandOnControlClicking() {\r\n if (!this._isExpanded()) {\r\n this.Trigger(\"EXPANDED\");\r\n this._isExpanded(!this._isExpanded());\r\n }\r\n }\r\n\r\n AfterDropControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n this.Trigger('AFTER_DROP_CONTROL', {\r\n item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext\r\n });\r\n }\r\n\r\n ShowControlEditor(control: IControl) {\r\n this.Trigger('CONTROL_EDITOR_REQUESTED', {control});\r\n }\r\n\r\n Remove() {\r\n this.Trigger('REMOVE_SUB_FORM', {subForm: this});\r\n }\r\n}","// Module\nvar code = \"<form data-bind=\\\"css: {'full-size': _showExpandButton}\\\" role=\\\"form\\\"> <div class=\\\"form-body\\\"><!-- ko foreach: Controls --><!-- ko template: {name: $data.GetTemplateName.bind($rawData), afterRender: $data.AfterRender.bind($rawData)} --><!-- /ko --><!--/ko--></div> </form> <!--ko if: _showExpandButton--> <div data-bind=\\\"click: $data.Expand.bind($data), css: {'link-list-toggle-button-reversed': IsExpanded}\\\" class=\\\"link-list-toggle-button\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </div> <!--/ko-->\";\n// Exports\nexport default code;","// Module\nvar code = \"<form role=\\\"form\\\"> <!--ko if: _showRemoveButton--> <div class=\\\"close-wrapper\\\" data-bind=\\\"hidden: !_configuringLayout(), click: $data.Remove.bind($data), preventBubble: ['click']\\\"> <span class=\\\"close\\\"></span> </div> <!--/ko--> <div data-bind=\\\"hidden: _configuringLayout, dragula: { data: $data.Controls, group: 'ToolBarToDesigner', afterDrop: $data.AfterDropControl.bind($data) }\\\" class=\\\"form-body form-drop-container clearfix microClearfix\\\"> <!-- ko template: {name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </div> </form> <!--ko if: _showExpandButton--> <div data-bind=\\\"hidden: _configuringLayout, click: $data.Expand.bind($data), css: {'link-list-toggle-button-reversed': IsExpanded}\\\" class=\\\"link-list-toggle-button\\\"> <svg class=\\\"icon\\\"> <use xlink:href=\\\"#path-runner-icon\\\"></use> </svg> </div> <!--/ko--> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport {ProfileSelectorItem} from '../Models/ProfileSelectorItem';\r\n\r\nexport class ProfileSelectorStore {\r\n\r\n GetCreatorProfiles(entityId: number) {\r\n const deferred = P.defer<ProfileSelectorItem[]>()\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/SecurityApi/GetCreatorProfiles',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {entityId}\r\n })\r\n .then(creatorProfiles => deferred.resolve(creatorProfiles))\r\n .fail(error => this.GetResponseError(error, 'Error getting creator profiles'));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"form-group\\\"> <label data-bind=\\\"text: _labels.SELECT_SECURITY_PROFILE\\\"></label> <select class=\\\"form-control\\\" data-bind=\\\"options: Profiles, optionsText: 'Name', value: SelectedProfile, optionsCaption: _labels.SELECT_VALUE_LABEL\\\"></select> <!--ko if: Error--> <p data-bind=\\\"text: Error\\\" class=\\\"validation-message\\\"></p> <!--/ko--> </div> <div class=\\\"text-center\\\"> <button class=\\\"btn btn-success\\\" data-bind=\\\"click: OnConfirm\\\"> <i class=\\\"fa fa-check\\\"></i> <!-- ko text: _labels.CONFIRM --><!-- /ko --> </button> <button class=\\\"btn btn-danger\\\" data-bind=\\\"click: OnCancel\\\"> <i class=\\\"fa fa-times\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </button> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {SecurityProfileStore} from 'Core/Common/Security/SecurityProfile/Stores/SecurityProfileStore';\r\n\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\n\r\nimport {ProfileSelectorStore} from './Stores/ProfileSelectorStore';\r\nimport {ProfileSelectorItem} from './Models/ProfileSelectorItem';\r\n\r\nimport Template from './Templates/Template.html';\r\nimport {GlobalManager, GLOBALS} from '../../GlobalManager/GlobalManager';\r\n\r\nko.templates['Core/Screens/ProfileSelectorScreen/Templates/Template'] = Template;\r\n\r\nexport class ProfileSelectorScreen extends Event {\r\n private _originalMainProfileId: number;\r\n\r\n private _modal: Modal;\r\n private _store: ProfileSelectorStore;\r\n\r\n private _labels: LABELS;\r\n\r\n Profiles: KnockoutObservableArray<ProfileSelectorItem>;\r\n SelectedProfile: KnockoutObservable<ProfileSelectorItem>;\r\n Error: KnockoutObservable<string>;\r\n\r\n constructor(private _entityId: number, private _entityName: string) {\r\n super();\r\n\r\n this._store = new ProfileSelectorStore();\r\n this._labels = LABELS;\r\n\r\n this.Profiles = ko.observableArray([]);\r\n this.SelectedProfile = ko.observable(null);\r\n this.Error = ko.observable(null);\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/ProfileSelectorScreen/Templates/Template';\r\n }\r\n\r\n AfterRender() {\r\n\r\n }\r\n\r\n ShowIfNeeded() {\r\n\t\tif (!this.HasToBeShownByGlobal() || this.IsCdTable() || this.IsSysTable()) {\r\n this.Trigger('USED_CURRENT_PROFILE');\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n this.LoadCreatorProfiles()\r\n .then(() => this.ResolveCreatorProfiles())\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n OnConfirm() {\r\n if (!this.SelectedProfile()) {\r\n this.Error(LABELS.PLEASE_SELECT_THE_PROFILE);\r\n return;\r\n }\r\n\r\n if (this._originalMainProfileId === this.SelectedProfile().Id) {\r\n this.Trigger('USED_CURRENT_PROFILE');\r\n return;\r\n }\r\n\r\n SecurityProfileStore.SelectMainProfile(this.SelectedProfile().Id)\r\n .then(() => {\r\n PubSub.publish(PUB_SUB_EVENTS.REFRESH_SECURITY_PROFILE, null);\r\n this.Trigger('PROFILE_SELECTED');\r\n })\r\n .fail(error => new Notifier().Failed(JSON.parse(error.message).Message));\r\n }\r\n\r\n OnCancel() {\r\n this.Trigger('PROFILE_SELECTION_CANCELLED');\r\n }\r\n\r\n Close() {\r\n if (!this._modal) {\r\n return;\r\n }\r\n\r\n this._modal.Close();\r\n this._modal.Destroy();\r\n }\r\n\r\n private LoadCreatorProfiles() {\r\n return this._store.GetCreatorProfiles(this._entityId)\r\n .then(profiles => {\r\n const selectedProfile = profiles.find(profile => profile.Main);\r\n this._originalMainProfileId = selectedProfile && selectedProfile.Id;\r\n this.Profiles(profiles);\r\n })\r\n .fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n private ResolveCreatorProfiles() {\r\n if (this.Profiles().length === 0) {\r\n this.Trigger('PROFILES_NOT_FOUND');\r\n return;\r\n }\r\n if (this.Profiles().length === 1) {\r\n this.Trigger('USED_CURRENT_PROFILE');\r\n return;\r\n }\r\n\r\n this.RenderSelector();\r\n }\r\n\r\n private RenderSelector() {\r\n this._modal = new Modal({width: 400}, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n\r\n this._modal.Show();\r\n }\r\n\r\n private HasToBeShownByGlobal() {\r\n return GlobalManager.Instance.GetGlobal(GLOBALS.SHOW_PROFILE_SELECTOR) === '1';\r\n\t}\r\n\r\n\tprivate IsCdTable() {\r\n\t\treturn this._entityName && this._entityName.startsWith('CD_');\r\n\t}\r\n\r\n\tprivate IsSysTable() {\r\n\t\treturn this._entityName && this._entityName.startsWith('SYS_');\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nexport class LifeStatusViewModel {\r\n\tName: KnockoutObservable<string>;\r\n\tDate: KnockoutObservable<string>;\r\n\tEnabled: KnockoutObservable<boolean>;\r\n\r\n\tModified: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis.Name = ko.observable(null);\r\n\t\tthis.Date = ko.observable(null);\r\n\t\tthis.Enabled = ko.observable(false);\r\n\t}\r\n}","// Module\nvar code = \"<ul class=\\\"multi-level\\\"> <!-- ko if: _showStatusSelector --> <li> <a data-bind=\\\"click: $data.ShowStatusSelector.bind($data)\\\" class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\"><!-- ko text: $data._labels.STATUS_SELECTOR --><!-- /ko --></a> </li> <!-- /ko --> <!-- ko foreach: _processCardsLifeStatuses --> <li> <!-- ko ifnot: $data.DisabledReason --> <a data-bind=\\\"text: $parent.FormatDisplayValue($data), click: $parent.SelectLifeStatus.bind($parent, $data)\\\" class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\">1</a> <!-- /ko --> <!-- ko if: $data.DisabledReason --> <a class=\\\"lookup-dropdown-item\\\" href=\\\"#\\\"> <!-- ko text: $parent.FormatDisplayValue($data) --><!-- /ko --> <i class=\\\"fa fa-times-circle-o text-red\\\" data-bind=\\\"tooltip: {content: $data.DisabledReason }\\\"></i> </a> <!-- /ko --> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","import { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport * as ko from \"knockout\";\r\n\r\nimport {JBoxDropDown} from 'Core/Components/JBoxDropdown/DropDown';\r\nimport {BaseGrid} from \"Core/Controls/Grid/BaseGrid/BaseGrid\";\r\nimport {EVENTS as GRID_EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {Icon} from \"Core/Icon/Icon\";\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/QueryResultPage/Events\";\r\nimport {PivotDetailModel} from \"Core/Controls/Grid/Models/PivotDetailModel\";\r\nimport {FONT_NAME} from \"Core/Constant\";\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ZIndexManager} from 'Core/Common/ZIndexManager';\r\n\r\nimport Template from 'Core/Components/ProgressBar/ActionDropdown/Templates/ActionDropdown.html';\r\nko.templates['Core/Components/ProgressBar/ActionDropdown/Templates/ActionDropdown'] = Template;\r\n\r\nexport class ActionDropdown extends Event {\r\n private readonly _id: string;\r\n private _dropDown: JBoxDropDown;\r\n private _labels = LABELS;\r\n\r\n constructor(private _processCardsLifeStatuses: Array<LifeStatusSimpleModel>, private _showStatusSelector: boolean){\r\n super();\r\n this._id = JBoxDropDown.GetDropDownId();\r\n this.AddEvent('SHOW_STATUS_SELECTOR');\r\n this.AddEvent(EVENTS.RECORD_SELECTED);\r\n }\r\n\r\n Close(){\r\n if(this._dropDown){\r\n this._dropDown.Close();\r\n }\r\n }\r\n\r\n SelectLifeStatus(status: LifeStatusSimpleModel){\r\n this.Trigger(EVENTS.RECORD_SELECTED, { status: status });\r\n }\r\n\r\n ShowStatusSelector(){\r\n this.Trigger('SHOW_STATUS_SELECTOR');\r\n }\r\n\r\n Show(target: any){\r\n this._dropDown = new JBoxDropDown({\r\n target: target || \".\" + this._id,\r\n otherOptions: {\r\n attach: undefined,\r\n closeOnClick: 'body',\r\n position: {\r\n x: \"left\",\r\n y: \"bottom\"\r\n },\r\n onCloseComplete: () => this._dropDown.Destroy(),\r\n zIndex: ZIndexManager.Instance.NextValue,\r\n blockScroll: true,\r\n addClass: 'lookup-dropdown',\r\n maxWidth: \"calc(100%)\"\r\n },\r\n onOpen: () => {\r\n this._dropDown.SetContent({ content: Template as any });\r\n },\r\n bindComponent: this,\r\n });\r\n\r\n this._dropDown.Open();\r\n }\r\n\r\n FormatDisplayValue(status: LifeStatusSimpleModel){\r\n return _.isEmpty(status.TranslatedName) ? status.Name : status.TranslatedName;\r\n }\r\n}","import { GridStore } from 'Core/Controls/Grid/Stores/GridStore';\r\nimport * as _ from 'underscore';\r\nimport * as moment from 'moment';\r\nimport * as ko from 'knockout'\r\n\r\nimport {LifeStatuses} from \"Core/Enums/LifeStatuses\";\r\nimport {RenderModes, CONTROL_TYPES} from \"Core/Constant\";\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\n\r\nimport {IProgressBarParams} from \"Core/Components/ProgressBar/IProgressBarParams\";\r\n\r\nimport {ActionSubjectRecordModel} from \"Core/ScreenManager/Models/ActionSubjectRecordModel\";\r\nimport {LifeStatusInfo} from \"Core/ScreenManager/Models/LifeStatusInfo\";\r\nimport {RecordSpecsModel} from \"Core/ScreenManager/Models/RecordSpecsModel\";\r\nimport {LifeStatusViewModel} from \"Core/Components/ProgressBar/Models/View/LifeStatusViewModel\";\r\nimport {FlowFolderStore} from \"Core/Components/ProgressBar/Stores/FlowFolderStore\";\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\n\r\nimport ViewTemplate from 'Core/Components/ProgressBar/Templates/View.html';\r\nimport EditTemplate from 'Core/Components/ProgressBar/Templates/Edit.html';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { ActionCheckList } from \"../ActionCheckList/ActionCheckList\";\r\nimport { LifeStatusesGeneralModel } from \"Core/Controls/ButtonFollowUp/Models/LifeStatusesGeneralModel\";\r\nimport { FollowUpRecordModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel\";\r\nimport { FollowUpParentRecordModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpParentRecordModel \";\r\nimport { FollowUpLifeStatuses } from \"Core/Controls/ButtonFollowUp/FollowUpLifeStatuses\";\r\nimport { LifeStatusesModel } from 'Core/Controls/ButtonFollowUp/Models/LifeStatusesModel';\r\nimport { FollowUpOptionModel } from \"Core/Controls/ButtonFollowUp/Models/FollowUpOptionModel\";\r\nimport { BaseScreen } from \"Core/Screens/BaseScreen\";\r\nimport { SubjectActionModel } from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\n\r\n\r\nimport {Notifier} from \"../../Common/Notifier\";\r\nimport {FlowFolderModel} from \"./Models/Response/FlowFolderModel\";\r\nimport {ScreenParamsModel} from \"Core/Controls/ButtonFollowUp/Models/ScreenParamsModel\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { ProgressBarInfoModel } from './Models/Response/ProgressBarInfoModel';\r\nimport { LifeStatusSimpleModel } from 'Core/Controls/ButtonFollowUp/Models/LifestatusSimpleModel';\r\nimport { ActionDropdown } from './ActionDropdown/ActionDropdown';\r\nimport type { StepsScreen } from 'Core/Screens/StepsScreen/StepsScreen';\r\n\r\ninterface IProgressBarActiveParams {\r\n RenderMode: RenderModes;\r\n ActiveLifeStatus: LifeStatusInfo;\r\n}\r\n\r\nexport class ProgressBar {\r\n private _entityId: number;\r\n\tprivate _recordId: number;\r\n\tprivate _typeId: number;\r\n private _actionSubject: ActionSubjectRecordModel;\r\n private _recordSpecs: RecordSpecsModel;\r\n private _renderMode: RenderModes;\r\n\tprivate _lifeStatus: LifeStatusViewModel;\r\n\tprivate _help: HelpBook;\r\n private _title: KnockoutObservable<string>;\r\n private _tableTypeName: KnockoutObservable<string>;\r\n private _checkList: ActionCheckList;\r\n private _labels = LABELS;\r\n private _flowFolder: boolean;\r\n private _isEditScreen: boolean;\r\n\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _followUpLifeStatuses: FollowUpLifeStatuses;\r\n private _lifeStatuses: LifeStatusesModel;\r\n private _screen: BaseScreen;\r\n private _el: HTMLElement;\r\n private _data: ProgressBarInfoModel;\r\n\r\n constructor(params: IProgressBarParams) {\r\n this._title = ko.observable(null);\r\n this._screen = params.Screen;\r\n const tableTypeName = this._screen.GetTableTypeNameTranslation()\r\n ? this._screen.GetTableTypeNameTranslation()\r\n : this._screen.GetTableTypeName();\r\n\r\n if (tableTypeName && tableTypeName !== '-') {\r\n this._tableTypeName = ko.observable(tableTypeName +', ');\r\n }\r\n\r\n this._recordSpecs = params.RecordSpecs;\r\n\r\n this._entityId = params.EntityId;\r\n\t\tthis._recordId = params.RecordId;\r\n\t\tthis._typeId = params.TypeId;\r\n this._actionSubject = this._screen.GetActionSubjectRecord();\r\n\r\n this._flowFolder = params.Screen.GetTableTypeFlowFolder();\r\n this._isEditScreen = params.Screen.IsEditScreen;\r\n\r\n const activeParams = this.GetActiveParams(params);\r\n\r\n this._renderMode = activeParams.RenderMode;\r\n\r\n this._lifeStatus = this.MapToViewModel(activeParams.ActiveLifeStatus);\r\n this._lifeStatus.Enabled.subscribe(() => this.ModifyLifeStatus());\r\n\r\n this._lifeStatuses = null;\r\n this._followUpLifeStatuses = null;\r\n\r\n\t\tthis._help = HelpBook.Instance;\r\n }\r\n\r\n GetTemplate() {\r\n switch (this._renderMode) {\r\n case RenderModes.View:\r\n return this.GetViewTemplate();\r\n case RenderModes.Edit:\r\n return this.GetEditTemplate();\r\n default:\r\n throw new Error(`Render mode ${RenderModes[this._renderMode]} is not supported`);\r\n }\r\n }\r\n\r\n GetLifeStatus() {\r\n const lifeStatus = new LifeStatusInfo();\r\n\r\n lifeStatus.Name = this._lifeStatus.Enabled() ? LifeStatuses.Enabled.Name : LifeStatuses.Disabled.Name;\r\n lifeStatus.LastStatusDate = new Date(this._lifeStatus.Date());\r\n lifeStatus.Modified = this._lifeStatus.Modified;\r\n\r\n return lifeStatus;\r\n }\r\n\r\n\tRequestCheckList() {\r\n\t\tif (this._help.IsHelpButtonPressed()) {\r\n\t\t\tthis._help.ShowTypeHelp(this);\r\n\t\t\treturn;\r\n }\r\n\r\n if (this._screen.GetDataModel().RecordSpecs.IsDisabled) {\r\n new Notifier().Warning(this._labels.RECORD_IS_DISABLED);\r\n return;\r\n }\r\n\r\n if (!this._recordId){\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n FlowFolderStore.GetProgressBarInfo({ EntityId: this._entityId, RecordId: this._recordId })\r\n .always(()=>BlockUI.Unblock())\r\n .then(result => {\r\n this._data = result;\r\n this.DoProgressBarProcess();\r\n })\r\n .fail((err) => new Notifier().Failed(err.message));\r\n }\r\n\r\n DoProgressBarProcess(){\r\n let lifeStatuses = _.filter(this._data.NextLifeStatuses.Child.LifeStatuses, (lifeStatus)=>lifeStatus.StepsScreenId != 0);\r\n let showStatusSelector = this._data.NextLifeStatuses.Child.LifeStatuses.length != lifeStatuses.length;\r\n if(lifeStatuses.length > 0){\r\n this.ShowActionDropdown({ lifeStatuses, showStatusSelector });\r\n return;\r\n }\r\n if (this._data.NextLifeStatuses.SubjectAction) {\r\n if (this._screen.IsConsultScreen) {\r\n this.ProcessingStatuses(this._data.NextLifeStatuses, this._data.FlowFolder);\r\n } else {\r\n this.ProcessingCheckList(this._data.NextLifeStatuses);\r\n }\r\n\r\n } else {\r\n new Notifier().Warning(this._labels.ACTIVE_ACTIONS_NOT_FOUND);\r\n }\r\n \r\n }\r\n\r\n ShowStatusSelector(){\r\n this._data.NextLifeStatuses.Child.LifeStatuses = _.filter(this._data.NextLifeStatuses.Child.LifeStatuses, (lifeStatus)=>lifeStatus.StepsScreenId == 0);\r\n\r\n if (this._data.NextLifeStatuses.SubjectAction) {\r\n if (this._screen.IsConsultScreen) {\r\n this.ProcessingStatuses(this._data.NextLifeStatuses, this._data.FlowFolder);\r\n } else {\r\n this.ProcessingCheckList(this._data.NextLifeStatuses);\r\n }\r\n\r\n } else {\r\n new Notifier().Warning(this._labels.ACTIVE_ACTIONS_NOT_FOUND);\r\n }\r\n }\r\n\r\n async ShowStepsScreen(status: LifeStatusSimpleModel){\r\n BlockUI.Block();\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetScreenById({ ScreenId: status.StepsScreenId })\r\n .always(()=>BlockUI.Unblock())\r\n .then((screen: StepsScreen)=>{\r\n screen.On('FINISH_PROCESS', this, ()=>this.SwitchToNextStatus(status.Id));\r\n screen.LoadStepControlData({ recordId: this._recordId });\r\n screen.ShowInModal(); \r\n });\r\n }\r\n\r\n SwitchToNextStatus(nextStatusId: number){\r\n GridStore.SwitchToNextStatus({ EntityId: this._entityId, RecordId: this._recordId, NextStatusId: nextStatusId }).then(()=>this._screen.Refresh());\r\n }\r\n\r\n ShowActionDropdown({ lifeStatuses, showStatusSelector }: { lifeStatuses: Array<LifeStatusSimpleModel>, showStatusSelector: boolean }){\r\n let actionDropdown = new ActionDropdown(lifeStatuses, showStatusSelector);\r\n actionDropdown.On('SHOW_STATUS_SELECTOR', this, ()=>this.ShowStatusSelector());\r\n actionDropdown.On('RECORD_SELECTED', this, (evtArgs)=>this.ShowStepsScreen(evtArgs.data.status));\r\n actionDropdown.Show(this._el); \r\n }\r\n\r\n ProcessingCheckList(model: LifeStatusesGeneralModel) {\r\n if (!this._checkList) {\r\n this._checkList = new ActionCheckList({\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n FollowUpMode: false,\r\n CurrentLifestatus: model.Child.CurrentLifeStatus\r\n });\r\n }\r\n\r\n this._checkList.ProvideData(model.Child && model.Child.CheckLists);\r\n if (this._checkList.HasAnyCheckedStatuses()) {\r\n this._checkList.Show();\r\n } else {\r\n new Notifier().Warning(this._labels.THERE_ARE_NO_NEXT_STATUSES_WITH_CHECK_LIST);\r\n }\r\n }\r\n\r\n ProcessingStatuses(result: LifeStatusesGeneralModel, flowFolderModel?: FlowFolderModel) {\r\n if (result == null || !result.Child) {\r\n return;\r\n }\r\n\r\n if (!this._followUpRecord) {\r\n this._followUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n if (!this._followUpLifeStatuses){\r\n this._followUpLifeStatuses = new FollowUpLifeStatuses();\r\n }\r\n const screenParams: ScreenParamsModel = { EntityId: this._entityId, RecordId: this._recordId };\r\n\r\n if (result.Child.CurrentLifeStatus === null && result.Child.LifeStatuses.length === 1) {\r\n const firstStatus = result.Child.LifeStatuses[0];\r\n this._followUpRecord.LifeStatusId = firstStatus.Id;\r\n this._followUpRecord.LifeStatusSort = firstStatus.Sort;\r\n this._followUpRecord.LifeStatusName = firstStatus.Name;\r\n this._followUpRecord.LifeStatusNoActionNode = firstStatus.NoActionNode;\r\n this.FireFollowUp(result.SubjectAction);\r\n return;\r\n }\r\n\r\n this._followUpRecord.CurrentLifeStatus = result.Child.CurrentLifeStatus;\r\n\r\n this._lifeStatuses = result.Child;\r\n const showCheckLists = _.any(this._lifeStatuses.CheckLists, checkList => checkList.CheckItems.length > 0)\r\n && (!result.IsManyActions || result.Child.CurrentLifeStatus.MultipleActions);\r\n\r\n if (!result.IsManyActions && showCheckLists) {\r\n this.ShowCheckLists(result, this._flowFolder && !this._isEditScreen, screenParams, flowFolderModel);\r\n return;\r\n }\r\n\r\n let infiniteLoop = result.Parent && result.Child && (result.Parent.ActionSubjectRecord.RecordId === result.Child.ActionSubjectRecord.RecordId);\r\n if(!result.IsManyActions && infiniteLoop && showCheckLists) {\r\n this.ShowCheckLists(result, this._flowFolder && !this._isEditScreen, screenParams, flowFolderModel);\r\n return;\r\n }\r\n\r\n if (result.IsManyActions && !result.Child.CurrentLifeStatus.MultipleActions) {\r\n result.Child.LifeStatuses = [result.Child.CurrentLifeStatus];\r\n this._followUpLifeStatuses.Caption = LABELS.EXIST_ACTIVE_ACTIONS;\r\n } else if (showCheckLists && result.Child.CurrentLifeStatus.MultipleActions) {\r\n this.ShowCheckLists(result, this._flowFolder && !this._isEditScreen, screenParams, flowFolderModel);\r\n return;\r\n }\r\n\r\n const followUpOption = new FollowUpOptionModel();\r\n followUpOption.LifeStatuses = result.Child;\r\n\r\n let followUpParentOption: FollowUpOptionModel;\r\n if (result.Parent) {\r\n followUpParentOption = new FollowUpOptionModel();\r\n followUpParentOption.LifeStatuses = result.Parent;\r\n }\r\n\r\n if (this._lifeStatuses.LifeStatuses.length === 0) {\r\n new Notifier().Warning(NOTIFICATIONS.NEXT_STATUS_NOT_AVAILABLE);\r\n }\r\n\r\n\r\n this._followUpLifeStatuses.Init(followUpOption, followUpParentOption, screenParams);\r\n this._followUpLifeStatuses.InitFlowFolder(this._flowFolder && !this._isEditScreen, this._entityId, flowFolderModel, result);\r\n\r\n this.ShowStandardFollowUp(result);\r\n }\r\n\r\n private ShowCheckLists(result: LifeStatusesGeneralModel, isFlowFolder: boolean, screenParams, flowFolderModel: FlowFolderModel) {\r\n const actionSubject = result.Child.ActionSubjectRecord;\r\n const checkLists = result.Child.CheckLists;\r\n\r\n if (!this._checkList) {\r\n this._checkList = new ActionCheckList({\r\n EntityId: actionSubject.EntityId,\r\n RecordId: actionSubject.RecordId,\r\n FollowUpMode: true,\r\n CurrentLifestatus: result.Child.CurrentLifeStatus\r\n });\r\n this._checkList.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.FireFollowUp(result.SubjectAction);\r\n });\r\n }\r\n\r\n this._checkList.ProvideData(checkLists);\r\n this._checkList.InitFlowFolder(isFlowFolder, screenParams.EntityId, flowFolderModel, result);\r\n this._checkList.Show();\r\n }\r\n\r\n private ShowStandardFollowUp(result: LifeStatusesGeneralModel) {\r\n this._followUpLifeStatuses.On('LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.RetireChildren = eventArgs.data.RetireChildren;\r\n this.FireFollowUp(result.SubjectAction);\r\n });\r\n\r\n this._followUpLifeStatuses.On('PARENT_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n const parentRecord = new FollowUpParentRecordModel();\r\n parentRecord.ParentActionSubject = result.Parent.ActionSubjectRecord;\r\n parentRecord.CurrentLifeStatus = result.Parent.CurrentLifeStatus;\r\n parentRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n parentRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n parentRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n parentRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n parentRecord.ConfirmationPassword = eventArgs.data.Password;\r\n this._followUpRecord.FollowUpParentRecord = parentRecord;\r\n this.FireFollowUp(result.SubjectAction);\r\n });\r\n\r\n this._followUpLifeStatuses.On('CHILD_LIFESTATUS_CHOOSEN',\r\n this,\r\n eventArgs => {\r\n this._followUpRecord.LifeStatusId = eventArgs.data.LifeStatus.Id || eventArgs.data.LifeStatus.LifeStatusId;\r\n this._followUpRecord.LifeStatusSort = eventArgs.data.LifeStatus.Sort || eventArgs.data.LifeStatus.LifeStatusSort;\r\n this._followUpRecord.LifeStatusName = eventArgs.data.LifeStatus.Name || eventArgs.data.LifeStatus.LifeStatusName;\r\n this._followUpRecord.LifeStatusNoActionNode = eventArgs.data.LifeStatus.NoActionNode || eventArgs.data.LifeStatus.LifeStatusNoActionNode;\r\n this._followUpRecord.ConfirmationPassword = eventArgs.data.Password;\r\n });\r\n\r\n this._followUpLifeStatuses.On('DONE',\r\n this,\r\n () => {\r\n this._screen.Trigger('FOLLOWUP_DONE');\r\n });\r\n\r\n this._followUpLifeStatuses.ShowInModal();\r\n }\r\n\r\n CloseActionCheckList() {\r\n if (this._checkList) {\r\n this._checkList.Close();\r\n }\r\n }\r\n\r\n private GetActiveParams(params: IProgressBarParams) {\r\n switch (params.RenderMode) {\r\n case RenderModes.View:\r\n return this.GetViewActiveParams(params.RecordSpecs);\r\n case RenderModes.Edit:\r\n return this.GetEditActiveParams(params.MigratedRequired, params.RecordSpecs);\r\n default:\r\n throw new Error(`Render mode ${RenderModes[this._renderMode]} is not supported`);\r\n }\r\n }\r\n\r\n private GetViewActiveParams(recordSpecs: RecordSpecsModel): IProgressBarActiveParams {\r\n let activeRenderMode = RenderModes.View;\r\n let activeLifeStatus = recordSpecs.LifeStatusInfo;\r\n\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n private GetEditActiveParams(migratedRequired: boolean, recordSpecs: RecordSpecsModel) {\r\n let activeRenderMode: RenderModes;\r\n let activeLifeStatus = recordSpecs.LifeStatusInfo;\r\n\r\n if (recordSpecs.IsNewRecord) {\r\n activeRenderMode = RenderModes.View;\r\n\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n if (migratedRequired) {\r\n activeRenderMode = RenderModes.View;\r\n this._title(NOTIFICATIONS.TITLE_CONVERTED_TYPE_OF_RECORD);\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n const enabledDisabledStatuses = [LifeStatuses.Enabled.Name.toUpperCase(), LifeStatuses.Disabled.Name.toUpperCase()];\r\n\r\n\r\n const validStatus = !!activeLifeStatus.Name\r\n ? _.find<string>(enabledDisabledStatuses, status => status === activeLifeStatus.Name.toUpperCase())\r\n : null;\r\n activeRenderMode = validStatus ? RenderModes.Edit : RenderModes.View;\r\n\r\n return {\r\n RenderMode: activeRenderMode,\r\n ActiveLifeStatus: activeLifeStatus\r\n };\r\n }\r\n\r\n private GetViewTemplate() {\r\n return ViewTemplate;\r\n }\r\n\r\n private GetEditTemplate() {\r\n return EditTemplate;\r\n }\r\n\r\n private FireFollowUp(subjectAction: SubjectActionModel) {\r\n if (subjectAction) {\r\n this._screen.Trigger('FOLLOWUP_FROM_SUBJECT',\r\n { followUpRecord: this._followUpRecord, subjectAction: subjectAction });\r\n }\r\n }\r\n\r\n private MapToViewModel(lifeStatus: LifeStatusInfo) {\r\n const viewModel = new LifeStatusViewModel();\r\n\r\n viewModel.Name(lifeStatus.TranslatedName || lifeStatus.Name);\r\n viewModel.Date(this.FormatDate(lifeStatus.Name && FormatConverter.CorrectTimezone(lifeStatus.LastStatusDate.toString())));\r\n viewModel.Enabled(lifeStatus.Name && lifeStatus.Name.toUpperCase() === LifeStatuses.Enabled.Name.toUpperCase());\r\n\r\n return viewModel;\r\n }\r\n\r\n private ModifyLifeStatus() {\r\n this._lifeStatus.Modified = true;\r\n\r\n const lifeStatusName = this._lifeStatus.Enabled() ? LifeStatuses.Enabled.Name : LifeStatuses.Disabled.Name;\r\n\r\n this._lifeStatus.Name(lifeStatusName);\r\n this._lifeStatus.Date(this.FormatDate(new Date()));\r\n }\r\n\r\n private FormatDate(date: string | Date) {\r\n const momentDate = moment(date);\r\n return date && momentDate.isValid() ? momentDate.format(DATE_FORMATS.FULL_DATETIME.MomentFormat) : 'Date undefined';\r\n }\r\n\r\n AfterRender(elements: HTMLElement[]) {\r\n this._el = _.find(elements, (element) => element.nodeType === 1);\r\n \r\n if (this._flowFolder) {\r\n const flowFolderIcon = elements[2];\r\n\r\n $(flowFolderIcon).droppable({\r\n accept: '.recent-block-list-container__flow-folder-popover, .grid-relative-container__flow-folder-popover',\r\n tolerance: 'touch',\r\n drop: (event, ui) => {\r\n FlowFolderStore.CreateFlowRecord({\r\n EntityId: this._entityId,\r\n RecordId: this._recordId,\r\n ReferenceEntityId: ui.draggable.data('EntityId'),\r\n ReferenceRecordId: ui.draggable.data('RecordId')\r\n })\r\n .then(result => {\r\n if (result.Warnings.length > 0) {\r\n result.Warnings.forEach(warningMessage => {\r\n new Notifier().Warning(warningMessage);\r\n });\r\n } else if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n } else {\r\n new Notifier().Success(NOTIFICATIONS.DATA_SAVED);\r\n }\r\n })\r\n .fail(error => {\r\n new Notifier().Failed(error.message);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n}","// Module\nvar code = \"<!-- ko if: _flowFolder && !_isEditScreen --> <i class=\\\"fa fa-folder-open-o additional-icon flow-folder-icon\\\" data-bind=\\\"attr: { title: _labels.DRAG_N_DROP_FLOWFOLDER, trigger: 'hover'}\\\"></i> <!-- /ko --> <!-- ko with: _lifeStatus --> <!-- ko if: Name --> <div class=\\\"lifestatus-bar well\\\" data-bind=\\\"attr: { title: $parent._title , trigger: 'hover'}, click: $parent.RequestCheckList.bind($parent), preventBubble: ['click']\\\"> <div> <!-- ko if: $parent._tableTypeName --> <span data-bind=\\\"text: $parent._tableTypeName\\\" class=\\\"bold\\\"></span> <!-- /ko --> <span data-bind=\\\"text:Name\\\" class=\\\"bold\\\"></span>: </div> <div> <span data-bind=\\\"text: Date\\\" class=\\\"progressBarDate\\\"></span> </div> </div> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: _lifeStatus --> <div class=\\\"lifestatus-bar lifestatus-bar--edit\\\" data-bind=\\\"click: $parent._help.ShowTypeHelp.bind($parent._help, $parent)\\\"> <div class=\\\"name-wrap\\\"> <!-- ko if: $parent._tableTypeName --> <span data-bind=\\\"text: $parent._tableTypeName\\\" class=\\\"bold\\\"></span> <!-- /ko --> <label class=\\\"custom-toggle_container mode-check small-mode\\\"> <span class=\\\"toggle-name bold\\\">Enabled</span> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: Enabled\\\"> <i class=\\\"fa fa-toggle-on\\\" data-toggle-name=\\\"✓\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-toggle-name=\\\"X\\\"></i> </span> </label> </div> <span data-bind=\\\"text: Date\\\" class=\\\"progressBarDate\\\"></span> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import {serialize, serializeAs} from 'libs/cerialize';\r\n\r\nexport class FollowUpActionSubjectModel {\r\n\tRecordId: number;\r\n LifestatusId: number;\r\n ConfirmationPassword: string;\r\n}\r\n\r\nexport class FollowUpRecordRequestModel {\r\n\tRecordId: number;\r\n EntityId: number;\r\n RetireChildren: boolean;\r\n ActionSubject: FollowUpActionSubjectModel;\r\n ParentActionSubject: FollowUpActionSubjectModel;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport { FollowUpRecordRequestModel } from \"Core/Screens/ConsultScreen/Models/FollowUpRecordRequestModel\";\r\nimport { FollowUpRecordResponseModel } from \"Core/Screens/ConsultScreen/Models/FollowUpRecordResponseModel\";\r\nimport { UpdateRecordLifestatusRequestModel } from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusRequestModel\";\r\nimport { UpdateRecordLifestatusResponseModel } from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusResponseModel\";\r\n\r\nexport interface IGetConsultScreenDataRequestModel {\r\n\tEntityId: number;\r\n\tScreenId: number;\r\n\tRecordId: number;\r\n};\r\n\r\nexport class ScreenDataStore {\r\n\tstatic GetData(params: IGetConsultScreenDataRequestModel): P.Promise<ScreenDataModel> {\r\n\t\tvar deferredResult = P.defer<ScreenDataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/GetScreenData',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data.ResultObject));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n }\r\n\r\n static FollowUp(params: FollowUpRecordRequestModel): P.Promise<FollowUpRecordResponseModel> {\r\n var deferredResult = P.defer<FollowUpRecordResponseModel>();\r\n \r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/FollowUpApi/FollowUpRecord',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error followUp record')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static UpdateRecordLifestatus(params: UpdateRecordLifestatusRequestModel): P.Promise<UpdateRecordLifestatusResponseModel> {\r\n var deferredResult = P.defer<FollowUpRecordResponseModel>();\r\n\r\n var requestParams: IRequestOptions = {\r\n proxy: {\r\n url: 'api/RecordsApi/UpdateRecordLifestatus',\r\n dataType: 'json',\r\n type: 'POST'\r\n }, params: params\r\n };\r\n\r\n\r\n Request.Send(requestParams)\r\n .then(result => deferredResult.resolve(result))\r\n .fail(error => deferredResult.reject(this.GetResponseError(error, 'Error followUp record')));\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n\tstatic Deserialize(jsonObject: any): ScreenDataModel {\r\n\t\tvar model = GenericDeserialize<ScreenDataModel>(jsonObject, ScreenDataModel);\r\n\t\treturn model;\r\n }\r\n\r\n static GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return { message: JSON.parse(err.message).Message };\r\n }\r\n if (err.status === 500) {\r\n return { message: JSON.parse(err.message).ExceptionMessage };\r\n }\r\n\r\n return { message: generalError };\r\n }\r\n}\r\n","import {serialize, serializeAs} from 'libs/cerialize';\r\nexport class UpdateRecordLifestatusRequestModel {\r\n EntityId: number;\r\n\tRecordId: number;\r\n LifestatusId: number;\r\n}","import * as $ from \"jquery\";\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\n\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {EventArgs} from \"Core/Common/Event\";\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {Search} from 'Core/Controls/Search/Search';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {\r\n CONTROL_TYPES,\r\n LIFE_STATUS_GROUPS,\r\n RenderModes,\r\n CARD_SCREEN_PROPERTY_TYPE,\r\n SCREEN_PROPERTY_TYPE\r\n} from 'Core/Constant';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {RecordStore} from 'Core/Screens/Stores/RecordStore';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {\r\n\tDeletionModeDialog,\r\n\tEVENTS as DELETION_MODE_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog';\r\nimport {DeletionModeModel} from \"Core/Screens/Models/DeletionModeModel\";\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {PathRunner} from 'Core/Components/PathRunner/PathRunner';\r\nimport {PathRunnerUnit} from 'Core/Components/PathRunner/PathRunnerUnit';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {RecordSecurityStore} from 'Core/Controls/RecordSecurity/Stores/RecordSecurityStore';\r\nimport {EVENTS as CONSULT_SCREEN_EVENTS} from 'Core/Screens/ConsultScreen/Events';\r\nimport {EVENTS as DROP_EVENTS} from 'Core/Controls/Drop/Events';\r\n\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel'\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel'\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {ProgressBar} from 'Core/Components/ProgressBar/ProgressBar';\r\nimport {LOCK_EVENTS, LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport { ButtonFollowUp } from 'Core/Controls/ButtonFollowUp/ButtonFollowUp';\r\nimport { FollowUpRecordModel } from 'Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel';\r\nimport { FollowUpRecordRequestModel, FollowUpActionSubjectModel } from \"Core/Screens/ConsultScreen/Models/FollowUpRecordRequestModel\";\r\nimport { ScreenDataStore } from \"Core/Screens/ConsultScreen/Stores/ScreenDataStore\";\r\nimport { FollowupModes } from 'Core/Constants/FollowupModes';\r\nimport { ProfileSelectorScreen } from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\nimport { SubjectActionModel } from \"Core/Controls/ButtonFollowUp/Models/SubjectActionModel\";\r\nimport { UpdateRecordLifestatusRequestModel} from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusRequestModel\";\r\nimport { UpdateRecordLifestatusResponseModel } from \"Core/Screens/ConsultScreen/Models/UpdateRecordLifestatusResponseModel\";\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nimport {ButtonEdit} from \"Core/Controls/ButtonEdit/ButtonEdit\";\r\nimport {ButtonAdd} from \"Core/Controls/ButtonAdd/ButtonAdd\";\r\nimport {ButtonDelete} from \"Core/Controls/ButtonDelete/ButtonDelete\";\r\nimport {ButtonListScreen} from \"Core/Controls/ButtonListScreen/ButtonListScreen\";\r\nimport {ButtonSpecialScreen} from \"Core/Controls/ButtonSpecialScreen/ButtonSpecialScreen\";\r\nimport {History} from \"Core/Controls/History/History\";\r\nimport {ButtonDashboardScreen} from \"Core/Controls/ButtonDashboardScreen/ButtonDashboardScreen\";\r\nimport {IScreen} from \"Core/Screens/IScreen\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\n\r\n// Templates\r\nimport ConsultScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen.html';\r\nimport ReferenceConsultScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen.html';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen'] = ConsultScreenTemplate;\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen'] = ReferenceConsultScreenTemplate;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class ConsultScreen extends BaseScreen {\r\n private _Search: IControl;\r\n private _favouritesButton: IControl;\r\n private _pathRunner: KnockoutObservable<PathRunnerUnit>;\r\n private _progressBar: ProgressBar;\r\n private _sourceSearchTerm: KnockoutObservable<string>;\r\n private _statusDescription: string;\r\n private _isHamburgerActive: KnockoutObservable<boolean>;\r\n private _areWidthsEqual: KnockoutObservable<boolean>;\r\n private _hideButtonCaption: KnockoutObservable<boolean>;\r\n private _actionBarButtonControls: IControl[]\r\n\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.View);\r\n this._renderMode = RenderModes.View;\r\n this._pathRunner = ko.observable(null);\r\n\r\n if (!screenModel.IsNested && screenModel.Data && screenModel.IsEnablePathRunner) {\r\n this._pathRunner(PathRunner.Instance.GetUnit(this.GetEntityId(), screenModel.IsSpecialScreenExist));\r\n }\r\n\r\n this._progressBar = null;\r\n this._sourceSearchTerm = ko.observable('');\r\n this._isHamburgerActive = ko.observable(false);\r\n this._areWidthsEqual = ko.observable(false);\r\n this._hideButtonCaption = ko.observable(false);\r\n\r\n this.Init();\r\n this.SetData(screenModel.Data);\r\n this._actionBarButtonControls = [];\r\n if (this.ActionBar) {\r\n this.InitProgressBar(screenModel.Data);\r\n\r\n this._actionBarButtonControls = _.filter(this.ActionBar.Controls(), (control: IControl) =>\r\n control instanceof ButtonAdd ||\r\n control instanceof ButtonEdit ||\r\n control instanceof ButtonDelete ||\r\n control instanceof ButtonListScreen ||\r\n control instanceof ButtonSpecialScreen ||\r\n control instanceof History ||\r\n control instanceof ButtonDashboardScreen\r\n )\r\n\r\n }\r\n this.ApplyEvents();\r\n }\r\n\r\n IsSubjectScreen() {\r\n return true;\r\n }\r\n\r\n SetData(dataModel: ScreenDataModel) {\r\n if (!dataModel) {\r\n return;\r\n }\r\n\r\n if (!dataModel.Rights.IsRecordSecurityOk) {\r\n new Notifier().Warning(`Record security is not set for ${this.GetEntityName()} table`);\r\n return;\r\n }\r\n\r\n super.SetData(dataModel);\r\n }\r\n\r\n private Init() {\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('EDIT_RECORD', this, (eventArgs: any) => {\r\n this.EditRecord();\r\n });\r\n this.On('DELETE_RECORD', this, (eventArgs: any) => {\r\n this.DeleteRecord();\r\n });\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.CreateRecord();\r\n });\r\n\r\n this.On('SECURITY_RESET', this, (eventArgs: any) => this.SecurityReset());\r\n\r\n this.On('COPY_RECORD', this, (eventArgs: any) => this.OnCopy(DataModes.Copy, eventArgs.data.linkToSource));\r\n this.On('COPY_RECORD_WITH_RELATIONS', this, (eventArgs: any) => this.OnCopy(DataModes.CopyWithRelations, eventArgs.data.linkToSource));\r\n this.On('COPY_TO_TYPE', this, (eventArgs: any) => this.OnCopy(DataModes.CopyToType, eventArgs.data.linkToSource, eventArgs.data.copyToType, eventArgs.data.aliasSuffix));\r\n\r\n this.On('FOLLOWUP', this, (eventArgs: any) => {\r\n this.FollowUpFromConsultScreen();\r\n });\r\n\r\n this.On('FOLLOWUP_FROM_SUBJECT', this, (eventArgs: any) => {\r\n this.FollowUpFromSubject(eventArgs.data.followUpRecord, eventArgs.data.subjectAction);\r\n });\r\n\r\n this.On('MODIFY_LIFESTATUS', this, (eventArgs: any) => {\r\n this.ModifyLifestatus(eventArgs.data.followUpRecord);\r\n });\r\n }\r\n\r\n FollowUpFromConsultScreen() {\r\n let followUpControl = this.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n\r\n let requestModel = new FollowUpRecordRequestModel();\r\n requestModel.EntityId = this.GetEntityId();\r\n requestModel.RecordId = this.GetRecordId();\r\n\r\n const followUpRecordModel = followUpControl.GetRecord();\r\n if (followUpRecordModel) {\r\n let actionSubject = new FollowUpActionSubjectModel();\r\n actionSubject.LifestatusId = followUpControl.GetRecord().LifeStatusId;\r\n actionSubject.ConfirmationPassword = followUpControl.GetRecord().ConfirmationPassword;\r\n\r\n requestModel.ActionSubject = actionSubject;\r\n requestModel.RetireChildren = followUpControl.GetRecord().RetireChildren;\r\n }\r\n\r\n BlockUI.Block();\r\n ScreenDataStore.FollowUp(requestModel)\r\n .always(()=>BlockUI.Unblock())\r\n .then((result) => {\r\n if (followUpRecordModel &&\r\n followUpRecordModel.CurrentLifeStatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE) {\r\n const recordId = result.RecordId ? result.RecordId : this.GetRecordId();\r\n this.LoadPathRunnerData(recordId);\r\n if (this.IsInModal()) {\r\n this.Close();\r\n } else {\r\n this.LoadData(recordId, this._model.TableTypeId);\r\n }\r\n\r\n }else if (followUpRecordModel &&\r\n followUpRecordModel.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED &&\r\n followUpRecordModel.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n if (followUpRecordModel.LifeStatusNoActionNode) {\r\n this.LoadData(this.GetRecordId(), this._model.TableTypeId);\r\n } else {\r\n this.NewRecord(this._model.TableTypeId,\r\n this._model.KindId,\r\n this.GetRecordId(),\r\n null,\r\n DataModes.FollowUp,\r\n followUpRecordModel.LifeStatusId);\r\n }\r\n }\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n FollowUpFromSubject(followUpRecord: FollowUpRecordModel, subjectAction: SubjectActionModel) {\r\n if (!followUpRecord.CurrentLifeStatus \r\n ||!followUpRecord.CurrentLifeStatus.FollowupModeName \r\n || followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT\r\n || followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW) {\r\n this.ShowSubjectActionEditScreen(subjectAction, followUpRecord);\r\n } else {\r\n let requestModel = new FollowUpRecordRequestModel();\r\n requestModel.EntityId = subjectAction.EntityId;\r\n requestModel.RecordId = subjectAction.Id;\r\n requestModel.RetireChildren = followUpRecord.RetireChildren;\r\n\r\n let actionSubject = new FollowUpActionSubjectModel();\r\n actionSubject.LifestatusId = followUpRecord.LifeStatusId;\r\n actionSubject.ConfirmationPassword = followUpRecord.ConfirmationPassword;\r\n requestModel.ActionSubject = actionSubject;\r\n\r\n if (followUpRecord.FollowUpParentRecord) {\r\n let parentActionSubject = new FollowUpActionSubjectModel();\r\n parentActionSubject.RecordId = followUpRecord.FollowUpParentRecord.ParentActionSubject.RecordId;\r\n parentActionSubject.LifestatusId = followUpRecord.FollowUpParentRecord.LifeStatusId;\r\n parentActionSubject.ConfirmationPassword = followUpRecord.FollowUpParentRecord.ConfirmationPassword;\r\n requestModel.ParentActionSubject = parentActionSubject;\r\n }\r\n\r\n BlockUI.Block();\r\n ScreenDataStore.FollowUp(requestModel)\r\n .always(()=>BlockUI.Unblock())\r\n .then((result) => {\r\n if (followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.DIRECT_STATUS_UPDATE) {\r\n this.LoadData(this.GetRecordId(), this.GetTypeId());\r\n } else if (followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n if (followUpRecord.LifeStatusNoActionNode || followUpRecord.LifeStatusSort === LIFE_STATUS_GROUPS.RETIRED) {\r\n this.LoadData(this.GetRecordId(), this._model.TableTypeId);\r\n } else {\r\n this.NewSubjectActionRecord(subjectAction.EntityId,\r\n subjectAction.TypeId,\r\n subjectAction.KindId,\r\n subjectAction.Id,\r\n DataModes.FollowUp,\r\n followUpRecord.LifeStatusId);\r\n }\r\n }\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n }\r\n\r\n ModifyLifestatus(followUpRecord: FollowUpRecordModel) {\r\n let requestModel = new UpdateRecordLifestatusRequestModel();\r\n requestModel.EntityId = this.GetEntityId();\r\n requestModel.RecordId = this.GetRecordId();\r\n requestModel.LifestatusId = followUpRecord.LifeStatusId;\r\n\r\n ScreenDataStore.UpdateRecordLifestatus(requestModel)\r\n .then((result) => {\r\n this.LoadData(this.GetRecordId(), this.GetTypeId());\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n private OnCopy(dataMode: DataModes, linkToSource: boolean, copyToType: number = 0, aliasSuffix: string = '') {\r\n const tableTypeId = copyToType || this.GetTableTypeId();\r\n this.IsTypeAvailable(tableTypeId, this.GetTableTypeId(), this.GetEntityId())\r\n .then(() => this.NewRecord(tableTypeId, this.GetKindId(), this.GetRecordId(), null, dataMode, null, linkToSource, aliasSuffix));\r\n }\r\n\r\n private InitProgressBar(data: ScreenDataModel) {\r\n if (data && data.RecordSpecs && data.RecordSpecs.LifeStatusInfo) {\r\n this._progressBar = new ProgressBar({\r\n EntityId: this.GetEntityId(),\r\n RecordId: this.GetRecordId(),\r\n TypeId: this.GetTableTypeId(),\r\n Screen: this,\r\n RenderMode: this._renderMode,\r\n RecordSpecs: data.RecordSpecs\r\n });\r\n\r\n this._statusDescription = data.RecordSpecs.LifeStatusInfo.MemoTranslation || data.RecordSpecs.LifeStatusInfo.Memo;\r\n }\r\n }\r\n\r\n private ApplyEvents() {\r\n _.each(this._controls, control => {\r\n if (control.GetType() === CONTROL_TYPES.Drop) {\r\n control.On(DROP_EVENTS.DOCUMENT_UPLOADED, this, (eventArgs) =>\r\n this.Trigger(CONSULT_SCREEN_EVENTS.REFRESH_GRID, {EntityId: eventArgs.data.EntityId}));\r\n }\r\n });\r\n }\r\n\r\n private ReleaseLockOnWindowClose = () => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n window.removeEventListener('beforeunload', this.ReleaseLockOnWindowClose);\r\n };\r\n\r\n private HandleOnWindowClose() {\r\n window.addEventListener('beforeunload', this.ReleaseLockOnWindowClose);\r\n }\r\n\r\n private RemoveOnWindowCloseHandler() {\r\n window.removeEventListener('beforeunload', this.ReleaseLockOnWindowClose);\r\n }\r\n\r\n SecurityReset() {\r\n RecordSecurityStore.ResetSecurity(this.GetRecordId())\r\n .then(() => {\r\n new Notifier().Success(NOTIFICATIONS.SECURITY_RESET_DONE);\r\n PubSub.publish(PUB_SUB_EVENTS.RELOAD_SCREEN, null);\r\n PubSub.publish(PUB_SUB_EVENTS.REFRESH_MAIN_MENU, null);\r\n })\r\n .fail((error) => new Notifier().Failed(error.message));\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ConsultScreen';\r\n }\r\n\r\n GetReferenceConsultScreenTemplate() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/ConsultScreen/ReferenceConsultScreen';\r\n }\r\n\r\n SearchRecord(): void {\r\n const SearchControl = this.GetTextSearchTermControl() as Search;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n const conditionToggler = SearchControl ? SearchControl.HasConditions() : false;\r\n const searchScreen = new SearchScreen({\r\n EntityId: this.GetEntityId(),\r\n SearchTerm: searchTerm,\r\n ControlId: SearchControl != null ? SearchControl.GetControlId() : 0,\r\n ConditionToggler: conditionToggler\r\n });\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n this._sourceSearchTerm(eventArgs.data.SearchTerm);\r\n var recordId = eventArgs.data.RecordId;\r\n var typeId = eventArgs.data.TypeId;\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), recordId, typeId);\r\n this.LoadData(recordId, typeId);\r\n });\r\n\r\n\r\n searchScreen.On('ALT_ENTITY_RECORD_SELECTED', this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n data.IsOpenInModal = this.IsInModal();\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const showTypeSelector = (allowChildrenTypes: boolean) => {\r\n const parentTypeId = allowChildrenTypes ? this.GetTableTypeId() : 0;\r\n const typeScreen = new TypeScreen(this.GetEntityId(), parentTypeId, true);\r\n\r\n typeScreen\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND))\r\n .On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n searchScreen.Cancel();\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector(true);\r\n return;\r\n }\r\n\r\n const profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n searchScreen.Cancel();\r\n showTypeSelector(false);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(true);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n LoadData(recordId: number, tableTypeId: number, closeScreen: boolean = false) {\r\n if (closeScreen) {\r\n this.Close();\r\n }\r\n\r\n return this.LoadScreenFor(tableTypeId, recordId);\r\n }\r\n\r\n Refresh() {\r\n this.LoadPathRunnerData(this.GetRecordId());\r\n if(this.IsReferenceScreen){\r\n this.Trigger('REFRESH_REFERENCE_SCREEN');\r\n }else{\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n } \r\n }\r\n\r\n ProhibitionAutoStopTimerForCurrentScreen(currentScreen: IScreen, newScreen: IScreen): void {\r\n if (currentScreen && (newScreen.GetRecordId() === currentScreen.GetRecordId()) ) {\r\n\r\n let timerControl: IControl = currentScreen.GetControl('Timer');\r\n if (timerControl instanceof Timer) {\r\n if (timerControl.TimerAutostart && timerControl.HasTimerStarted()) {\r\n currentScreen.AllowTimerAutoStop = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number): Promise<any> {\r\n\r\n BlockUI.Block();\r\n return new Promise(async (resolve, reject) => {\r\n const screenManager = (await import('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n \r\n screenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.ConsultScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(async screen => {\r\n if(screen.ScreenDoesNotExistError){\r\n Notifier.Failed(screen.ScreenDoesNotExistErrorMessage);\r\n return;\r\n }\r\n this.Close();\r\n screen.SetIsReady(true);\r\n\r\n this.ProhibitionAutoStopTimerForCurrentScreen(this, screen);\r\n\r\n const menuManager = (await import (\"MenuManager/MenuManager\")).MenuManager;\r\n menuManager.Instance.GoToScreen(screen, this.IsInModal());\r\n menuManager.Instance.SelectedScreen(screen, this.IsInModal());\r\n var baseScreen = screen as BaseScreen;\r\n\r\n var textSearchTerm = baseScreen.GetControl<Search>(CONTROL_TYPES.Search);\r\n if (textSearchTerm) {\r\n textSearchTerm.SetSearchTerm(this._sourceSearchTerm());\r\n }\r\n\r\n if (screen.GetType() === ScreenTypes[ScreenTypes.ConsultScreen]) {\r\n this.LoadPathRunnerData(screen.GetRecordId()).always(() => resolve(null))\r\n } else {\r\n resolve(null);\r\n }\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.CHANGE_SCREEN, screen);\r\n })\r\n .fail(err => new Notifier().Warning(err.message));\r\n });\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === CONTROL_TYPES.Search));\r\n }\r\n\r\n DeleteRecord(): void {\r\n const notifier = new Notifier($(this._el));\r\n\r\n if (!this.GetRecordId()) {\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n return;\r\n }\r\n\r\n this.HandleOnWindowClose();\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this.GetEntityId(), this.GetRecordId())\r\n .then(() => {\r\n\t\t\t\tif (!this.IsEntitySysUsersOrCd()) {\r\n\t\t\t\t\tRecordStore.GetDeletionMode({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t\t\t\t.always(() => {\r\n\t\t\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.then(result => {\r\n\t\t\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\t\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\t\t\t\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tconst deletionMode = result.ResultObject;\r\n\r\n\t\t\t\t\t\t\tif (deletionMode.OnDelete || deletionMode.OnDelete === 0) {\r\n\t\t\t\t\t\t\t\tthis.ShowDeletionModeDialog(deletionMode);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.ShowConfirmationDialog();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.ShowConfirmationDialog();\r\n\t\t\t\t}\r\n })\r\n .fail(() => this.RemoveOnWindowCloseHandler())\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private ShowDeletionModeDialog(deletionModeModel: DeletionModeModel) {\r\n\t const deletionModeDialog = new DeletionModeDialog({\r\n\t\t DeletionMode: deletionModeModel.OnDelete,\r\n\t\t HasCustomLifeStatus: deletionModeModel.HasCustomLifeStatus\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DELETE_SELECTED, this, () => {\r\n\t\t this.UseDeleteDeletionMode();\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISABLE_SELECTED, this, () => {\r\n\t\t this.UseDisableDeletionMode();\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t this.RemoveOnWindowCloseHandler();\r\n\t });\r\n\r\n\t deletionModeDialog.Show();\r\n }\r\n\r\n\tprivate ShowConfirmationDialog() {\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: this.DeleteRecordConfirmation,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.UseDeleteDeletionMode();\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.DISCARD_SELECTED, this, () => {\r\n\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tprivate UseDeleteDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier();\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t.always(() => {\r\n\t\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (result.Warnings && result.Warnings.length > 0) {\r\n\t\t\t\t\t_.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n\r\n\t\t\t\t\tnotifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\t\t\t\t\tthis.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tnotifier.Success(this.DeleteRecordSuccessNotification);\r\n\t\t\t\t\tthis.DeleteFromRecent();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate UseDisableDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier($(this._el));\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId(), Disable: true })\r\n\t\t\t.always(() => {\r\n\t\t\t\tLockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n\t\t\t\tthis.RemoveOnWindowCloseHandler();\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnotifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\t\t\t\tthis.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n async NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string,\r\n dataMode: DataModes = DataModes.Default, subjectLifestatusId: number = null, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n ParentRecordId: this.GetRecordId(),\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.UseLinking = true;\r\n editScreen.NewlyCreatedRecord = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen\r\n .On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier();\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, tableTypeId);\r\n this.LoadPathRunnerData(eventArgs.data.RecordId);\r\n\r\n if (this.IsNested()) {\r\n this.Trigger(CONSULT_SCREEN_EVENTS.LINK_BOOK_RECORD, {EntityId: this.GetEntityId(), RecordId: eventArgs.data.RecordId});\r\n }\r\n else if (this.IsInModal()) {\r\n this.Close();\r\n } else {\r\n this.LoadData(eventArgs.data.RecordId, tableTypeId);\r\n }\r\n })\r\n .On('COPY', this, (eventArgs) => {\r\n if (this.IsInModal()) {\r\n this.Close();\r\n }\r\n\r\n const copyTableTypeId = eventArgs.data.copyToType || this._model.TableTypeId;\r\n this.IsTypeAvailable(copyTableTypeId, this._model.TableTypeId, this._model.EntityId)\r\n .then(() => this.NewRecord(copyTableTypeId, null, eventArgs.data.recordId, null, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n async NewSubjectActionRecord(entityId: number, tableTypeId: number, kindId: number, exampleRecordId: number,\r\n dataMode: DataModes = DataModes.Default, subjectLifestatusId: number = null, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n\r\n screenManager.GetEditScreen({\r\n EntityId: entityId,\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = exampleRecordId;\r\n editScreen.UseLinking = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n screen\r\n .On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n\r\n if (this.IsInModal()) {\r\n this.Close();\r\n } else {\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n }\r\n })\r\n .On('COPY', this, (eventArgs) => {\r\n if (this.IsInModal()) {\r\n this.Close();\r\n }\r\n\r\n const copyTableTypeId = eventArgs.data.copyToType || tableTypeId;\r\n this.IsTypeAvailable(copyTableTypeId, tableTypeId, entityId)\r\n .then(() => this.NewSubjectActionRecord(entityId, copyTableTypeId, kindId, eventArgs.data.recordId, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n EditRecord() {\r\n if (!this.GetRecordId()) {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n return;\r\n }\r\n\r\n\r\n if (this._dataModel.IsTypeTransformationRequired) {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true, false);\r\n\r\n typeScreen.On(\"TYPE_SELECTED\",\r\n this,\r\n (eventArgs) => {\r\n UserVarsManager.Instance.RemoveFromRecent(this.GetRecordId(), this._model.EntityId, this.GetTableTypeId());\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), this.GetRecordId(), typeId);\r\n this.ShowEditScreen(typeId, kindId);\r\n })\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier($(this._el)).Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n\r\n typeScreen.Show();\r\n } else {\r\n this.ShowEditScreen();\r\n }\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = (allowChildrenTypes: boolean) => {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const parentTypeId = allowChildrenTypes ? this.GetTableTypeId() : 0;\r\n const typeScreen = new TypeScreen(this.GetEntityId(), parentTypeId, true);\r\n\r\n typeScreen\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n })\r\n .On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n };\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector(true);\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(false);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(true);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n ShowEditScreen(newTypeId?: number, kindId?: number) {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(this.GetEntityId(), this.GetRecordId())\r\n .then(async () => {\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: newTypeId ? newTypeId : this.GetTableTypeId(),\r\n KindId: kindId,\r\n RecordId: this.GetRecordId(),\r\n DataMode: DataModes.Default\r\n })\r\n .then((screen: EditScreen) => {\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === this.GetEntityId() && eventArgs.data.RecordId === this.GetRecordId()) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId()));\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n if (newTypeId) {\r\n this._model.TableTypeId = newTypeId;\r\n }\r\n\r\n const notifier = new Notifier();\r\n\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\r\n this.LoadPathRunnerData(this.GetRecordId());\r\n\r\n if (this.IsInModal()) {\r\n this.Close();\r\n if (!eventArgs.data.IsFollowUp) {\r\n this.Trigger('RECORD_SAVED');\r\n }\r\n } else {\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n }\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Success(screen.DeleteRecordSuccessNotification);\r\n this.LoadData(null, null, this.IsInModal());\r\n this.ClearPathRunner();\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => this.OnFollowUpRecordFromEditScreen(eventArgs));\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || this._model.TableTypeId;\r\n this.IsTypeAvailable(copyTableType, this._model.TableTypeId, this._model.EntityId)\r\n .then(() => this.NewRecord(copyTableType, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n })\r\n .fail(err => BlockUI.Unblock());\r\n }\r\n\r\n ShowSubjectActionEditScreen(subjectAction: SubjectActionModel, followUpRecord: FollowUpRecordModel) {\r\n BlockUI.Block();\r\n\r\n LockManager.Instance.TryLock(subjectAction.EntityId, subjectAction.Id)\r\n .then(async () => {\r\n const screenManager = (await import ('Core/ScreenManager/ScreenManager')).ScreenManager;\r\n screenManager.GetEditScreen({\r\n EntityId: subjectAction.EntityId,\r\n TableTypeId: subjectAction.TypeId,\r\n KindId: subjectAction.KindId,\r\n RecordId: subjectAction.Id,\r\n DataMode: DataModes.Default\r\n })\r\n .then((screen: EditScreen) => {\r\n let followUpControl = screen.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n followUpControl.SetRecord(followUpRecord);\r\n\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.TableId === subjectAction.EntityId && eventArgs.data.RecordId === subjectAction.Id) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => LockManager.Instance.ReleaseLock(subjectAction.EntityId, subjectAction.Id));\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n\r\n if (this.IsInModal()) {\r\n this.Close();\r\n if (!eventArgs.data.IsFollowUp) {\r\n this.Trigger('RECORD_SAVED');\r\n }\r\n } else {\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n }\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(screen.DeleteRecordSuccessNotification);\r\n this.LoadData(this.GetRecordId(), this.GetTableTypeId());\r\n });\r\n\r\n screen.On('FOLLOWUP_RECORD', this, (eventArgs) => this.OnFollowUpSubjectActionRecordFromEditScreen(subjectAction.EntityId, subjectAction.TypeId, subjectAction.KindId, eventArgs));\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableTypeId = eventArgs.data.copyToType || subjectAction.TypeId;\r\n this.IsTypeAvailable(copyTableTypeId, subjectAction.TypeId, subjectAction.EntityId)\r\n .then(() => this.NewSubjectActionRecord(subjectAction.EntityId, copyTableTypeId, subjectAction.KindId, eventArgs.data.recordId, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n\r\n screen.ShowInModal();\r\n\r\n })\r\n .fail(err => {\r\n LockManager.Instance.ReleaseLock(subjectAction.EntityId, subjectAction.Id);\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(err.message);\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n });\r\n })\r\n .fail(err => BlockUI.Unblock());\r\n }\r\n\r\n OnFollowUpSubjectActionRecordFromEditScreen(entityId: number, typeId: number, kindId: number, eventArgs: EventArgs) {\r\n const followUp = eventArgs.data.followUpRecordModel as FollowUpRecordModel;\r\n \r\n if (!followUp) {\r\n this.NewSubjectActionRecord(entityId, typeId, kindId, eventArgs.data.RecordId, DataModes.FollowUp);\r\n } else if (followUp.LifeStatusSort !== null\r\n && followUp.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUp.LifeStatusNoActionNode) {\r\n if (!followUp.CurrentLifeStatus.FollowupModeName\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n this.NewSubjectActionRecord(entityId, typeId, kindId, eventArgs.data.recordId,DataModes.FollowUp, followUp.LifeStatusId);\r\n } else {\r\n this.LoadData(this.GetRecordId(), this._model.TableTypeId);\r\n }\r\n }\r\n }\r\n\r\n OnFollowUpRecordFromEditScreen(eventArgs: EventArgs) {\r\n const followUp = eventArgs.data.followUpRecordModel as FollowUpRecordModel;\r\n if (!followUp) {\r\n this.NewRecord(this._model.TableTypeId, this._model.KindId, eventArgs.data.recordId, null, DataModes.FollowUp);\r\n } else if (followUp.LifeStatusSort !== null\r\n && followUp.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !followUp.LifeStatusNoActionNode) {\r\n if (!followUp.CurrentLifeStatus.FollowupModeName\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || followUp.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW) {\r\n this.NewRecord(this._model.TableTypeId,\r\n this._model.KindId,\r\n eventArgs.data.recordId,\r\n null,\r\n DataModes.FollowUp,\r\n followUp.LifeStatusId);\r\n } else {\r\n this.LoadData(eventArgs.data.followUpRecordId, this._model.TableTypeId);\r\n }\r\n }else{\r\n if (!this.IsInModal()) {\r\n this.LoadData(null, null);\r\n }\r\n\r\n this.ClearPathRunner();\r\n }\r\n }\r\n\r\n SetRecordId(recordId: number): void {\r\n this._recordId = recordId;\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetScreenStyle(false, this.IsOpenedViaBookControl);\r\n\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize.bind(this, el), el[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el, () => {\r\n unbindResize();\r\n });\r\n this.CheckHideButtonCaption(el);\r\n // this.ToggleActionBar(el);\r\n }\r\n\r\n OnResize = (el) => {\r\n this.CheckHideButtonCaption(el);\r\n // this.ToggleActionBar(el);\r\n };\r\n\r\n CheckHideButtonCaption(el): void {\r\n const actionBarWrapper = $(el).find('.action-bar-wrapper');\r\n if (actionBarWrapper.length) {\r\n const actionBar_barLeft = $('.bar-left', actionBarWrapper).width();\r\n const actionBar_controls = $('.actionBar-Controls', actionBarWrapper).width();\r\n this._hideButtonCaption(actionBar_barLeft === actionBar_controls);\r\n\r\n _.each(this._actionBarButtonControls, (control: IControl)=> {\r\n control.SetHideCaption(this._hideButtonCaption());\r\n })\r\n }\r\n }\r\n\r\n // ToggleActionBar(el){\r\n // const actionBarWrapper = $(el).find('.action-bar-wrapper');\r\n // if (actionBarWrapper.length) {\r\n // const actionBar_barLeft = $('.bar-left', actionBarWrapper).width();\r\n // const actionBar_controls = $('.actionBar-Controls', actionBarWrapper).width();\r\n // this._areWidthsEqual(actionBar_barLeft === actionBar_controls);\r\n // }\r\n // }\r\n\r\n ToggleHamburger(data, event){\r\n $(event.target).find('.ham').toggleClass('active')\r\n this._isHamburgerActive(!this._isHamburgerActive());\r\n\r\n\r\n // this._hideButtonCaption(!this._hideButtonCaption());\r\n // _.each(this._actionBarButtonControls, (control: IControl)=> {\r\n // control.SetHideCaption(this._hideButtonCaption());\r\n // })\r\n }\r\n\r\n ToggleLifeStatusBarClass(data, event){\r\n if ($(window).width() <= 991){\r\n $(event.target).parents('.lifestatus-bar-wrapper').toggleClass('showLifeStatus');\r\n }\r\n }\r\n\r\n get ScreenSwitcher(): boolean {\r\n return this._screenSwitcher() && this._screenSwitcher().GetEnabled();\r\n }\r\n\r\n GridRowDataDeleteCurrentRow() {\r\n let currentRow = this._screenSwitcher().GridRowData.indexOf(this._screenSwitcher().CurrentRow);\r\n this._screenSwitcher().GridRowData.splice(currentRow, 1);\r\n }\r\n\r\n private DeleteFromRecent() {\r\n UserVarsManager.Instance.RemoveFromRecent(this.GetRecordId(), this._model.EntityId, this._model.TableTypeId);\r\n\r\n const lastRecentRecord = UserVarsManager.Instance.GetLastRecentRecordByEntityId(this._model.EntityId);\r\n\r\n if (!lastRecentRecord) {\r\n this.LoadScreenFor(0, 0);\r\n\r\n return;\r\n }\r\n\r\n if (this._screenSwitcher()) {\r\n if (this._screenSwitcher().GridRowData.length > 1) {\r\n\r\n this.GridRowDataDeleteCurrentRow();\r\n\r\n if (this._screenSwitcher().NextScreen) {\r\n this._screenSwitcher().GetNextScreen();\r\n } else {\r\n this._screenSwitcher().GetPreviousScreen();\r\n }\r\n } else {\r\n this.GridRowDataDeleteCurrentRow();\r\n this.Close();\r\n }\r\n\r\n } else {\r\n this.LoadData(lastRecentRecord.id, lastRecentRecord.typeId);\r\n this.LoadPathRunnerData(lastRecentRecord.id);\r\n }\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n private LoadPathRunnerData(recordId: number) {\r\n if (!this._pathRunner()) {\r\n return P.resolve(null);\r\n }\r\n\r\n return this._pathRunner().LoadNewData(recordId);\r\n }\r\n\r\n get IsPathRunner(): boolean {\r\n return this._pathRunner() && this._pathRunner().IsPathRunner();\r\n }\r\n\r\n get HasSpecialScreen(): boolean {\r\n return this._pathRunner() && this._pathRunner().IsSpecialScreenExist();\r\n }\r\n\r\n private ClearPathRunner() {\r\n this._pathRunner() && this._pathRunner().Clear();\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId()), attr: {'data-screen-name': $data.GetTypeName()}\\\" id=\\\"wrapper\\\"> <div class=\\\"screen consult-screen screenForm\\\"> <div class=\\\"portlet light\\\"> <div data-bind=\\\"subformResize: {}\\\" class=\\\"clearfix consult-screen-container\\\"> <!--ko if: ActionBar--> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\" data-bind=\\\"css: {'show-wrapper': _isHamburgerActive(), 'hidden-wrapper': _areWidthsEqual()}\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <div class=\\\"actionBar-Controls\\\"> <a class=\\\"subFormControl copy-link-button\\\" data-bind=\\\"click: CopyRecordLink, tooltip: {content: _labels.CLICK_TO_COPY_URL}\\\"> <i class=\\\"fa fa-link\\\"></i> </a> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <span data-bind=\\\"click: ToggleHamburger.bind($data), css: {'hamburger-btn_wrapper__hidden': !_areWidthsEqual()}\\\" class=\\\"hamburger-btn_wrapper\\\"> <svg class=\\\"hamburger-btn hamburger-btn--Rotate hamburger-btn_type_4\\\" viewBox=\\\"0 0 100 100\\\" width=\\\"80\\\" data-bind=\\\"css: {'active': _isHamburgerActive()}\\\"> <path class=\\\"hamburger-btn_line hamburger-btn--top\\\" d=\\\"m 70,33 h -40 c 0,0 -8.5,-0.149796 -8.5,8.5 0,8.649796 8.5,8.5 8.5,8.5 h 20 v -20\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--middle\\\" d=\\\"m 70,50 h -40\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--bottom\\\" d=\\\"m 30,67 h 40 c 0,0 8.5,0.149796 8.5,-8.5 0,-8.649796 -8.5,-8.5 -8.5,-8.5 h -20 v 20\\\"/> </svg> </span> <div class=\\\"bar-right\\\" data-bind=\\\"tooltip: { content: _statusDescription}\\\"> <div class=\\\"pull-right-sm lifestatus-bar-wrapper\\\"> <!-- ko with: _progressBar --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"click: ToggleLifeStatusBarClass.bind($data)\\\" class=\\\"toggleLifeStatusBarButton\\\"></span> </div> <!--ko if: ScreenSwitcher--> <div class=\\\"pull-right-sm screen-switcher-container\\\"> <!-- ko with: _screenSwitcher --> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"clearfix middle-block\\\"> <!-- ko with: $data._pathRunner --> <!-- ko template: {name: GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <div class=\\\"content-block transition\\\" data-bind=\\\"css: {'isPathRunner': IsPathRunner || HasSpecialScreen}\\\"> <div class=\\\"row form-wrapper\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form fast-transition\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"screen consult-screen screenForm\\\"> <div class=\\\"portlet light\\\"> <div data-bind=\\\"subformResize: {}\\\" class=\\\"clearfix consult-screen-container\\\"> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {ISearchScreenParam} from 'Core/Screens/IScreen';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\nimport ListScreenTemplate from 'Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen.html';\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {ProfileSelectorScreen} from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen'] = ListScreenTemplate;\r\n\r\nexport class ListScreen extends BaseScreen {\r\n private _grid: Grid;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.Edit);\r\n\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this._grid = this.GetControl<Grid>('Grid');\r\n\r\n if (this._grid) {\r\n ['EnableLinkButton', 'EnableAdd&LinkButton', 'EnableAddQueryButton']\r\n .forEach(property => this._grid.ChangeProperty(property, false));\r\n }\r\n\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.Rights = this._model.Data.Rights;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n \r\n _.each(this.GetAllControls(), (control: IControl) => { \r\n control.SetValue(controlValue);\r\n });\r\n \r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => this.SearchRecord());\r\n this.On('ADD_RECORD', this, (eventArgs: any) => this.CreateRecord());\r\n }\r\n\r\n Refresh() {\r\n this._grid.LoadData();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/Templates/AdditionalConsultScreen/ListScreen/ListScreen`;\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === 'Search'));\r\n }\r\n\r\n SearchRecord(): void {\r\n LockManager.Instance.ReleaseAllLocks();\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchControlId = SearchControl != null ? SearchControl.GetControlId() : 0;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const searchParams: ISearchScreenParam = {\r\n EntityId: this.GetEntityId(),\r\n ControlId: searchControlId,\r\n SearchTerm: searchTerm\r\n };\r\n\r\n const searchScreen = new SearchScreen(searchParams);\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs: any) => {\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, eventArgs.data.TypeId);\r\n\r\n searchScreen.Close();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.GetEntityId(),\r\n RecordId: eventArgs.data.RecordId,\r\n RecordTypeId: eventArgs.data.TypeId\r\n });\r\n });\r\n\r\n searchScreen.On('ALT_ENTITY_RECORD_SELECTED', this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const showTypeSelector = () => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n searchScreen.Cancel();\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector();\r\n return;\r\n }\r\n\r\n\t\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n searchScreen.Cancel();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n EditRecord(): void {\r\n\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string) {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .fail((err) => {\r\n var notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n\r\n return;\r\n }\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.UseLinking = true;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = () => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n }\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector();\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n LoadData(recordId: number, tableTypeId: number) {\r\n this.LoadScreenFor(tableTypeId, recordId);\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number) {\r\n if (this.IsDashMain) {\r\n this._grid.UpdateTableViewList();\r\n } else {\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.ConsultScreen, recordId)\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n })\r\n .fail(err => {\r\n new Notifier().Warning(err.message);\r\n\r\n });\r\n }\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetScreenStyle();\r\n }\r\n\r\n} ","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"list-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"list-screen-container\\\"> <!--ko if: ActionBar--> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped}\\\" class=\\\"form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import { record } from 'rrweb';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {IControlParam, ISearchScreenParam} from 'Core/Screens/IScreen'\r\nimport {CONTROL_TYPES, EVENTS} from 'Core/Constant'\r\nimport {BlockUI} from 'Core/Common/BlockUi'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {URL} from 'Core/Common/Url'\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {RenderModes} from 'Core/Constant'\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen'\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager'\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {ScreenDataStore} from 'Core/Screens/ConsultScreen/Stores/ScreenDataStore'\r\nimport {MenuManager} from 'MenuManager/MenuManager'\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes'\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel'\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel'\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\n\r\nimport SpecialScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen.html';\r\nimport {PUB_SUB_EVENTS} from \"../../../MenuManager/PubSubEvents\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {LOCK_EVENTS, LockManager} from \"../../Components/Locker/LockManager\";\r\nimport {ProfileSelectorScreen} from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\nimport { Step } from '../../Controls/Step/Step';\r\n\r\nko.templates[\"Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen\"] = SpecialScreenTemplate;\r\n\r\nexport class SpecialScreen extends BaseScreen {\r\n private _Search: IControl;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.View);\r\n this._renderMode = RenderModes.View;\r\n this.Init();\r\n }\r\n\r\n Init() {\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n this._dataModel = this._model.Data;\r\n\r\n var controlData = new ControlDataModel();\r\n controlData.Rights = this._model.Data.Rights;\r\n\r\n var controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n\r\n _.each(this._controls, (control: IControl) => {\r\n control.SetValue(controlValue);\r\n });\r\n\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('EDIT_RECORD', this, (eventArgs: any) => {\r\n if (eventArgs.data && eventArgs.data.TableTypeId && eventArgs.data.RecordId) {\r\n this.EditRecord(eventArgs.data.RecordId, eventArgs.data.TableTypeId);\r\n } else {\r\n this.EditRecord();\r\n }\r\n });\r\n\r\n this.On('NEW_RECORD', this, (eventArgs: any) => {\r\n var screenData = null;\r\n if (eventArgs.data && eventArgs.data.ScreenData instanceof ScreenDataModel) {\r\n screenData = eventArgs.data.ScreenData;\r\n }\r\n\r\n if (eventArgs.data && eventArgs.data.TableTypeId) {\r\n this.NewRecord(eventArgs.data.TableTypeId, 0, screenData);\r\n } else {\r\n this.ShowTypeScreen(screenData);\r\n }\r\n });\r\n\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.ShowProfileSelector();\r\n });\r\n }\r\n\r\n Refresh() {\r\n this.LoadData(this.GetRecordId());\r\n }\r\n\r\n SearchRecord(): void {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchControlId = SearchControl != null ? SearchControl.GetControlId() : 0;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : \"\";\r\n\r\n const searchParams: ISearchScreenParam = {\r\n EntityId: this.GetEntityId(),\r\n ControlId: searchControlId,\r\n SearchTerm: searchTerm\r\n };\r\n\r\n const searchScreen = new SearchScreen(searchParams);\r\n\r\n searchScreen.On(\"RECORD_SELECTED\", this, (eventArgs: any) => {\r\n this.SelectRecord({recordId: eventArgs.data.RecordId, typeId: eventArgs.data.TypeId});\r\n searchScreen.Close(); \r\n });\r\n\r\n searchScreen.On(\"ALT_ENTITY_RECORD_SELECTED\", this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n\r\n\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n searchScreen.On(\"NEW_RECORD\", this, (eventArgs) => {\r\n this.ShowProfileSelector(null, searchScreen);\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n SelectRecord({recordId, typeId}: {recordId: number, typeId: number}){\r\n const stepControl: Step = this.GetControlByType(CONTROL_TYPES.Step) as Step;\r\n if(stepControl){\r\n stepControl.SelectRecord({ recordId });\r\n }else{\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(),recordId, typeId);\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.GetEntityId(),\r\n RecordId: recordId,\r\n RecordTypeId: typeId,\r\n Owner: this\r\n });\r\n }\r\n }\r\n\r\n LoadData(recordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.SpecialScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n ShowProfileSelector(screenData?: ScreenDataModel, searchScreen: SearchScreen = null) {\r\n if (this.IsInModal()) {\r\n this.ShowTypeScreen(screenData, searchScreen);\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n this.ShowTypeScreen(screenData, searchScreen);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n this.ShowTypeScreen(screenData, searchScreen);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n ShowTypeScreen(screenData?: ScreenDataModel, searchScreen: SearchScreen = null) {\r\n var typeScreen = new TypeScreen(this.GetEntityId(), 0, true);\r\n typeScreen.On(\"TYPE_SELECTED\", this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n if (searchScreen) {\r\n searchScreen.Cancel();\r\n }\r\n this.NewRecord(typeId, kindId, exampleRecordId, screenData);\r\n });\r\n\r\n typeScreen.On(\"TYPES_NOT_FOUND\", this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n });\r\n typeScreen.Show();\r\n }\r\n\r\n EditRecord(recordId?: number, tableTypeId?: number) {\r\n if (!this.GetRecordId() && !recordId) {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Warning(NOTIFICATIONS.PLEASE_SELECT_ANY_RECORD);\r\n return;\r\n }\r\n\r\n BlockUI.Block();\r\n\r\n const lockedRecordId = recordId || this.GetRecordId();\r\n LockManager.Instance.TryLock(this.GetEntityId(), lockedRecordId)\r\n .then(result => {\r\n\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId || this.GetTableTypeId(),\r\n RecordId: recordId || this.GetRecordId()\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).then((screen: EditScreen) => {\r\n LockManager.Instance.On(LOCK_EVENTS.RELEASED, this, (eventArgs: any) => {\r\n if (eventArgs.data.EntityId === this.GetEntityId() && eventArgs.data.RecordId === lockedRecordId) {\r\n screen.Close();\r\n }\r\n });\r\n\r\n screen.On('MODAL_CLOSE', this, () => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), lockedRecordId);\r\n });\r\n\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n var notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_UPDATED);\r\n this.LoadData(this.GetRecordId());\r\n });\r\n\r\n screen.On(\"RECORD_REMOVED\", this, () => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), lockedRecordId);\r\n this.LoadData(this.GetRecordId());\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || this.GetTableTypeId();\r\n this.NewRecord(copyTableType, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.ShowInModal();\r\n }).fail(err => {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), lockedRecordId);\r\n let notifier = new Notifier($(this._el));\r\n notifier.Warning(err.message);\r\n });\r\n })\r\n .fail(() => {\r\n BlockUI.Unblock();\r\n });\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, screenData?: ScreenDataModel, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n BlockUI.Block();\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n DataMode: dataMode,\r\n LoadAsExample: exampleRecordId > 0,\r\n AliasSuffix: aliasSuffix\r\n }).always(() => {\r\n BlockUI.Unblock();\r\n }).fail((err) => {\r\n var notifier = new Notifier();\r\n notifier.Failed(err.message);\r\n }).then(screen => {\r\n var editScreen = <EditScreen>screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm) {\r\n editScreen.NameControlSetValue(searchTerm);\r\n }\r\n\r\n if (screenData) {\r\n editScreen.SetDefaultData(screenData);\r\n }\r\n\r\n screen.On(\"RECORD_SAVED\", this, (eventArgs) => {\r\n var notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.LoadData(eventArgs.data.RecordId);\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.On('COPY', this, (eventArgs) => {\r\n const copyTableType = eventArgs.data.copyToType || this.GetTableTypeId();\r\n this.NewRecord(copyTableType, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === \"Search\"));\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n this.SetScreenStyle();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/SpecialScreen/SpecialScreen';\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"special-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"special-screen-content\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'notBottomBar': BottomBar && !IsBottomBarControls}\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-md-12 form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {serialize, serializeAs} from 'libs/cerialize';\r\nimport {SubFormModel} from '../../../Models/Screens/SubFormModel';\r\n\r\nexport class FieldModel {\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tSort: number;\r\n\r\n\t@serialize\r\n\tLinkRequired: boolean;\r\n}\r\n\r\n\r\nexport class ControlModel {\r\n\tconstructor() {\r\n\t\tthis.Fields = [];\r\n\t\tthis.NameTranslations = [];\r\n\t\tthis.DescriptionTranslations = [];\r\n\t}\r\n\r\n\t@serialize\r\n\tId: number;\r\n\r\n\t@serialize\r\n\tName: string;\r\n\r\n\t@serialize\r\n\tTypeName: string;\r\n\r\n\t@serialize\r\n\tRecordLifeStatusId: number;\r\n\r\n\t@serialize\r\n\tDestinationTypeId: number;\r\n\r\n\t@serialize\r\n\tLabelPosition: number;\r\n\r\n\t@serialize\r\n\tGuid: String;\r\n\r\n\t@serialize\r\n\tFormId: number;\r\n\r\n\t@serialize\r\n\tFormGuid: string;\r\n\r\n\t@serialize\r\n\tParentControlId: number;\r\n\r\n\t@serialize\r\n\tParentControlGuid: string;\r\n\r\n\t@serialize\r\n\tProperties: string;\r\n\r\n\t@serialize\r\n\tSort: number;\r\n\r\n\t@serialize\r\n\tDescription: string;\r\n\r\n\t@serializeAs(FieldModel)\r\n\tFields: Array<FieldModel>;\r\n\r\n\t@serializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n\r\n @serializeAs(TranslationModel)\r\n DescriptionTranslations: Array<TranslationModel>;\r\n\r\n @serialize\r\n IconId: number;\r\n\r\n @serialize\r\n UseFieldName: boolean;\r\n\r\n @serialize\r\n\tTitleFieldId: number;\r\n\r\n\t@serialize\r\n\tKanbanSubjectId: number;\r\n\r\n\t@serialize\r\n\tTodoEntityId: number;\r\n\r\n\t@serialize\r\n\tTodoTypeId: number;\r\n\r\n\t@serialize\r\n\tTodoFieldId: number;\r\n\r\n\t@serialize\r\n\tScreenId: number;\r\n\r\n\r\n\tAddField(fieldId: number, sort: number, linkRequired?: boolean) {\r\n\t\tvar fieldModel = new FieldModel();\r\n\t\tfieldModel.Id = fieldId;\r\n\t\tfieldModel.Sort = sort;\r\n\t\tfieldModel.LinkRequired = linkRequired;\r\n\t\tthis.Fields.push(fieldModel);\r\n\t}\r\n}\r\n\r\nexport interface IMainFormUpdateModel {\r\n\tEntityId: number;\r\n\tIsMain: boolean;\r\n\tFormId: number;\r\n}\r\n\r\nexport class MainFormUpdateModel {\r\n\tconstructor(params: IMainFormUpdateModel) {\r\n\t\tthis.EntityId = params.EntityId;\r\n\t\tthis.FormId = params.FormId;\r\n\t\tthis.IsMain = params.IsMain;\r\n\t}\r\n\r\n\t@serialize\r\n\tEntityId: number;\r\n\r\n\t@serialize\r\n\tIsMain: boolean;\r\n\r\n\t@serialize\r\n\tFormId: number;\r\n}\r\n\r\nexport class UpdateScreenModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.DeletedFormIds = [];\r\n\t\tthis.DeletedControlIds = [];\r\n\t\tthis.SubForms = [];\r\n\t\tthis.Controls = [];\r\n\t}\r\n\r\n\t\r\n\t@serialize\r\n\tIsEnablePathRunner: boolean;\r\n\r\n\t@serialize\r\n\tScreenId: number;\r\n\r\n\t@serialize\r\n\tDeletedFormIds: Array<number>;\r\n\r\n\t@serialize\r\n\tDeletedControlIds: Array<number>;\r\n\r\n\t@serializeAs(SubFormModel)\r\n\tSubForms: SubFormModel[];\r\n\r\n\t@serializeAs(ControlModel)\r\n\tControls: Array<ControlModel>;\r\n\r\n\t@serializeAs(MainFormUpdateModel)\r\n\tTableFormLinks: Array<MainFormUpdateModel>;\r\n\r\n\t@serialize\r\n\tFormProperties: string;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Serialize, Deserialize, GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {UpdateScreenModel} from 'Core/Screens/DesignScreen/Models/UpdateScreenModel'\r\n\r\nexport class UpdateScreenStore {\r\n\tstatic UpdateScreen(params: UpdateScreenModel): P.Promise<UpdateScreenModel> {\r\n\t\tvar deferredResult = P.defer<UpdateScreenModel>();\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/FormDesignerApi/UpdateScreenForm',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: Serialize(params)\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\t\tdeferredResult.resolve(Deserialize(data.ResultObject));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t);\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tprivate static Serialize(model: any) {\r\n\t\treturn Serialize(model);\r\n\t}\r\n\r\n\tprivate static Deserialize(jsonObj: any): UpdateScreenModel {\r\n\t\treturn GenericDeserialize(jsonObj, UpdateScreenModel);\r\n\t}\r\n}","import {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {serializeAs} from 'libs/cerialize';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\n\r\nexport class ControlEditorModel {\r\n\tconstructor() {\r\n\t\tthis.NameTranslations = [];\r\n\t\tthis.DescriptionTranslations = [];\r\n\t\tthis.AttachedFields = [];\r\n\t}\r\n\tName: string;\r\n\tNameMaxSize: number;\r\n\tFieldName: string;\r\n FieldNameTranslation: string;\r\n EntityName: string;\r\n\tF_Type: number;\r\n\tTypeName: string;\r\n TypeTranslatedName: string;\r\n K_Control: number;\r\n\tFieldId: number;\r\n\tValTableId: number;\r\n\tValFieldId: number;\r\n\tSubFormId: number;\r\n\tMemo: string;\r\n\tMaskId: number;\r\n\tHasParentControl: boolean;\r\n\tParentControlId: number;\r\n\tParenControlType: string;\r\n\tParentControlSubFormId: number;\r\n\tLabelPos: number;\r\n\tLabelPosName: string;\r\n\tProperties: string;\r\n\tEntityId: number;\r\n\tSubTableId: number;\r\n\tRecordLifeStatusId: number;\r\n\tDestinationTypeId: number;\r\n\tDescription: string;\r\n\tIcon: IconModel;\r\n\t@serializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n @serializeAs(TranslationModel)\r\n DescriptionTranslations: Array<TranslationModel>;\r\n UseFieldName: boolean;\r\n TitleFieldId: number;\r\n KanbanSubjectId: number;\r\n TodoEntityId: number;\r\n TodoTypeId: number;\r\n TodoFieldId: number;\r\n\r\n\tAttachedFields: Array<AttachedFieldModel>;\r\n\r\n\tScreenId: number;\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <!-- ko if: TypeName === 'ButtonCopy' --> <div class=\\\"form-group pull-left dbd-icon-place\\\"> <a class=\\\"icon-btn icon-btn-lg icon-manager-btn\\\" data-bind=\\\"click: OpenIconManager\\\"> <!-- ko if: Icon && Icon.Id--> <!-- ko ifnot: Icon.Image --> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"text: !Icon.Id ? 'Select icon' : '', css: _iconModel.GetClasses(Icon.FontName, Icon.Name)\\\"></i> <!-- /ko --> <!-- ko if: Icon.Image--> <img class=\\\"img-responsive image-centered image-button\\\" data-bind=\\\"attr: {src: Icon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: !Icon || !Icon.Id --> <i class=\\\"fa-5x fa-stack custom-color-option fa empty-icon\\\" data-bind=\\\"text: 'Select icon'\\\"></i> <!-- /ko --> </a> </div> <!-- /ko --> <div class=\\\"form-group\\\" data-bind=\\\"css: {'form-group-to-right' : TypeName === 'ButtonCopy'} \\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"text: Name, click: Toggle, class: Expanded() ? '' : 'collapsed'\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"class: Expanded() ? '' : 'collapse', css: { height: Expanded() ? '' : '0'}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {Modal} from \"Core/Common/Modal\";\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {LABELS, NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\n\r\nimport {DesignScreen} from \"Core/Screens/DesignScreen/DesignScreen\";\r\n\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\n\r\nimport {ControlEditorModel} from \"../Models/ControlEditorModel\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor.html';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n CONTROL_SAVED: 'CONTROL_SAVED'\r\n};\r\n\r\nexport const CONTROL_DEFAULT_NAME: string = 'Default';\r\n\r\nexport class BaseControlEditor extends Event {\r\n private _modal: Modal;\r\n\r\n protected Control: IControl;\r\n protected SubjectEntityId: number;\r\n\r\n protected EditControl: IControl;\r\n protected EditControlModel: ControlModel;\r\n\r\n protected NameTranslations: KnockoutObservableArray<TranslationModel>;\r\n protected DescriptionTranslations: KnockoutObservableArray<TranslationModel>;\r\n protected SelectedName: KnockoutObservable<TranslationModel>;\r\n protected SelectedDescription: KnockoutObservable<TranslationModel>;\r\n\r\n protected NameFocused: KnockoutObservable<boolean>;\r\n protected NameTranslationsOpened: KnockoutObservable<boolean>;\r\n protected DescriptionTranslationsOpened: KnockoutObservable<boolean>;\r\n protected UseFieldName: KnockoutObservable<boolean>;\r\n\r\n protected Description: KnockoutObservable<string>;\r\n\r\n protected IsValid: KnockoutObservable<boolean>;\r\n private ValidationMsg: KnockoutObservable<string>;\r\n\r\n protected Labels = LABELS;\r\n\r\n constructor(control: IControl) {\r\n super();\r\n\r\n this._modal = new Modal({\r\n closeOnEsc: false,\r\n addClass: 'jBox-padding-15px',\r\n });\r\n\r\n this.NameFocused = ko.observable(true);\r\n this.NameTranslationsOpened = ko.observable(false);\r\n this.DescriptionTranslationsOpened = ko.observable(false);\r\n\r\n this.SelectedName = ko.observable(null);\r\n this.SelectedDescription = ko.observable(null);\r\n this.Description = ko.observable(null);\r\n\r\n this.UseFieldName = ko.observable(false);\r\n\r\n this.IsValid = ko.observable(true);\r\n this.ValidationMsg = ko.observable(this.Labels.THIS_FIELD_IS_REQUIRED);\r\n\r\n this.InitEditControlData(control);\r\n }\r\n\r\n get Id() {\r\n return this.EditControlModel.Id;\r\n }\r\n\r\n get TypeName() {\r\n return this.EditControlModel.TypeName;\r\n }\r\n\r\n get TypeTranslatedName() {\r\n return this.EditControlModel.TypeTranslatedName ? this.EditControlModel.TypeTranslatedName : this.TypeName;\r\n }\r\n\r\n get GeneralProperties() {\r\n return this.EditControl.GeneralProperties;\r\n }\r\n\r\n get DefaultTranslation() {\r\n return _.find(this.NameTranslations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n\r\n Show() {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n ShowNameTranslations() {\r\n this.NameTranslationsOpened(true);\r\n }\r\n\r\n ToggleNameTranslations() {\r\n if (this.NameTranslationsOpened()) {\r\n this.HideNameTranslations();\r\n } else {\r\n this.ShowNameTranslations();\r\n this.SetFocusItem(this.NameTranslations());\r\n }\r\n }\r\n\r\n ToggleDescriptionTranslations() {\r\n if (this.DescriptionTranslationsOpened()) {\r\n this.DescriptionTranslationsOpened(false);\r\n } else {\r\n this.DescriptionTranslationsOpened(true);\r\n this.SetFocusItem(this.DescriptionTranslations());\r\n }\r\n }\r\n\r\n // Add to focus the first blank item Name and item Description\r\n SetFocusItem(ArrTranslate: Array<TranslationModel>) {\r\n let focusEmptyElement = _.find(ArrTranslate, item => {\r\n if (item.Translation === undefined) {\r\n return item.Translation === undefined;\r\n } else if (item.Translation === null) {\r\n return item.Translation === null;\r\n } else if (item.Translation === '') {\r\n return item.Translation === '';\r\n }\r\n });\r\n let isMobile = MobileChecker.IsMobile();\r\n focusEmptyElement && focusEmptyElement.IsFocusedItem(!isMobile);\r\n }\r\n\r\n HideNameTranslations() {\r\n this.NameTranslationsOpened(false);\r\n }\r\n\r\n SelectNameTranslation(translationModel: TranslationModel) {\r\n this.NameFocused(true);\r\n this.SelectedName(translationModel);\r\n this.HideNameTranslations();\r\n }\r\n\r\n SelectDescriptionTranslation(translationModel: TranslationModel) {\r\n this.SelectedDescription(translationModel);\r\n this.DescriptionTranslationsOpened(false);\r\n }\r\n\r\n UpdateTranslationList() {\r\n let languages = this.NameTranslations().slice();\r\n this.NameTranslations([]);\r\n this.NameTranslations(languages);\r\n }\r\n\r\n GetFieldMaxLength(): number {\r\n if(!this.EditControlModel) {\r\n return;\r\n }\r\n const maxLength = this.EditControlModel.NameMaxSize;\r\n\r\n return maxLength > 0 ? maxLength : -1;\r\n }\r\n\r\n UpdateDescriptionTranslationList() {\r\n let languages = this.DescriptionTranslations().slice();\r\n this.DescriptionTranslations([]);\r\n this.DescriptionTranslations(languages);\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._modal.Show();\r\n }\r\n\r\n Validate(): string {\r\n if (!this.SelectedName()) {\r\n this.IsValid(false);\r\n return 'Please, provide control name';\r\n }\r\n\r\n if (!this.EditControl.IsPropertiesValid()) {\r\n this.IsValid(false);\r\n const propertiesErrors = this.EditControl.GetPropertiesErrors();\r\n\r\n const errorMessage = _.find(propertiesErrors, error => !_.isEmpty(error));\r\n return !_.isEmpty(errorMessage) ? errorMessage : NOTIFICATIONS.PLEASE_SET_ALL_PROPERTIES;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n Cancel() {\r\n this.Close();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n ChangeTranslation() {\r\n let current = _.find(this.NameTranslations(), (item) => {\r\n return item.Language.K_Language === this.SelectedName().Language.K_Language;\r\n });\r\n this.SelectedName(current);\r\n }\r\n\r\n OnKeyUpUpdateTranslationList(that, event): boolean {\r\n this.UpdateTranslationList();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n OnKeyUpChangeTranslation(that, event): boolean {\r\n this.ChangeTranslation();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n NameValidate(that, event): boolean {\r\n const fieldMaxLength = this.GetFieldMaxLength();\r\n if(that.Translation && that.Translation.length > 0 && fieldMaxLength !== -1 && that.Translation.length >= fieldMaxLength){\r\n this.IsValid(false);\r\n this.ValidationMsg(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${fieldMaxLength}`);\r\n }else {\r\n this.IsValid(true);\r\n }\r\n\r\n return this.IsValid();\r\n }\r\n\r\n ChangeDescriptionTranslation() {\r\n let current = _.find(this.DescriptionTranslations(), (item) => {\r\n return item.Language.K_Language === this.SelectedDescription().Language.K_Language;\r\n });\r\n this.SelectedDescription(current);\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = new ControlEditorModel();\r\n\r\n controlEditorModel.K_Control = this.EditControlModel.Id;\r\n controlEditorModel.Name = _.find(this.EditControlModel.NameTranslations, translationItem => translationItem.IsDefault).Translation;\r\n controlEditorModel.F_Type = this.EditControlModel.TypeId;\r\n controlEditorModel.TypeName = this.EditControlModel.TypeName;\r\n controlEditorModel.TypeTranslatedName = this.EditControlModel.TypeTranslatedName;\r\n controlEditorModel.ScreenId = this.EditControlModel.ScreenId;\r\n\r\n controlEditorModel.RecordLifeStatusId = this.EditControlModel.RecordLifeStatusId;\r\n controlEditorModel.DestinationTypeId = this.EditControlModel.DestinationTypeId;\r\n controlEditorModel.Description = _.find(this.EditControlModel.DescriptionTranslations, translationItem => translationItem.IsDefault).Translation;\r\n\r\n const generalProperties = this.EditControl.GeneralProperties;\r\n controlEditorModel.Properties = generalProperties ? generalProperties.Serialize() : null;\r\n\r\n this.EditControlModel.NameTranslations\r\n .filter(translationItem => !translationItem.IsDefault)\r\n .forEach(translationItem => controlEditorModel.NameTranslations.push(translationItem));\r\n\r\n if (this.UseFieldName()) {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n translation.Translation = '';\r\n })\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n\r\n this.EditControlModel.DescriptionTranslations\r\n .filter(translationItem => !translationItem.IsDefault)\r\n .forEach(translationItem => controlEditorModel.DescriptionTranslations.push(translationItem));\r\n\r\n const parentControl = this.EditControl.GetParentControl();\r\n\r\n controlEditorModel.ParentControlId = parentControl ? parentControl.GetControlId() : 0;\r\n controlEditorModel.HasParentControl = !!parentControl;\r\n controlEditorModel.SubFormId = parentControl ? 0 : this.EditControl.GetForm().GetFormId();\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/BaseControlEditor';\r\n }\r\n\r\n protected GetSubjectEntityId() {\r\n return this.EditControl.GetForm().GetScreen().GetEntityId();\r\n }\r\n\r\n protected GetSubjectEntityName() {\r\n return this.EditControl.GetForm().GetScreen().GetEntityName();\r\n }\r\n\r\n protected GetSubjectTableTypeId() {\r\n return this.EditControl.GetForm().GetScreen().GetTableTypeId();\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n this.Control = control;\r\n this.SubjectEntityId = control.GetForm().GetScreen().GetEntityId();\r\n\r\n this.EditControl = this.Control.Clone();\r\n\r\n this.EditControlModel = this.EditControl.GetModel();\r\n this.EditControlModel.Id = this.Control.GetControlId();\r\n\r\n this.Description(this.EditControlModel.Description);\r\n this.UseFieldName(this.EditControlModel.UseFieldName);\r\n\r\n this.InitName();\r\n }\r\n\r\n protected GetDesignScreen() {\r\n return <DesignScreen>this.EditControl.GetForm().GetScreen();\r\n }\r\n\r\n protected IsScreenOfType(...screenTypes: ScreenTypes[]) {\r\n const screenTypeName = this.GetDesignScreen().GetType();\r\n return _.any(screenTypes, requestedType => requestedType === ScreenTypes[screenTypeName]);\r\n }\r\n\r\n private InitName() {\r\n const defaultName = new TranslationModel();\r\n defaultName.Language = new LanguageModel(-1);\r\n if (this.UseFieldName()) {\r\n defaultName.Translation = this.EditControlModel.Name || (this.Control.GetFieldModel() && this.Control.GetFieldModel().Name) || CONTROL_DEFAULT_NAME;\r\n } else {\r\n defaultName.Translation = this.EditControlModel.Name;\r\n }\r\n\r\n const defaultTranslation = new TranslationModel();\r\n defaultTranslation.Language = new LanguageModel(-1);\r\n defaultTranslation.Translation = this.EditControlModel.Description;\r\n\r\n this.EditControlModel.NameTranslations.unshift(defaultName);\r\n this.EditControlModel.DescriptionTranslations.unshift(defaultTranslation);\r\n this.NameTranslations = ko.observableArray(this.EditControlModel.NameTranslations);\r\n this.DescriptionTranslations = ko.observableArray(this.EditControlModel.DescriptionTranslations);\r\n this.SelectedName(this.GetNameTranslation());\r\n this.SelectedDescription(this.GetDescriptionTranslation());\r\n }\r\n\r\n private GetNameTranslation() {\r\n const name = _.find(this.EditControlModel.NameTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null);\r\n return name || _.first(this.NameTranslations());\r\n }\r\n\r\n private GetDescriptionTranslation() {\r\n const description = _.find(this.EditControlModel.DescriptionTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null);\r\n return description || _.first(this.DescriptionTranslations());\r\n }\r\n\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nimport { TranslationModel } from \"./TranslationModel\";\r\n\r\nexport class BlobFieldModel {\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tFieldName: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tFieldNameTranslations: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tEntityNameTranslations: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tEntityNameWithFieldName: string;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {BlobFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/BlobFieldModel';\r\n\r\nexport interface IGetBlobFieldsRequestModel {\r\n\tControlTypeName: string;\r\n\tContextEntityId: number;\r\n\tIsControlInMainSubForm: boolean;\r\n};\r\n\r\nexport class BlobFieldsStore {\r\n\tstatic Get(params: IGetBlobFieldsRequestModel): P.Promise<Array<BlobFieldModel>> {\r\n\t\tvar deferredResult = P.defer<Array<BlobFieldModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetBlobFields\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif ( data.IsSuccessfull ) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): any {\r\n\t\tvar model = GenericDeserialize<BlobFieldModel>(jsonObject.Data, BlobFieldModel);\r\n\t\treturn model;\r\n\t}\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class LookupFieldModel {\r\n\t@deserialize\r\n\tLookupTableTableId: number;\r\n\r\n\t@deserialize\r\n\tLookupTableTableName: string;\r\n\r\n\t@deserialize\r\n\tLookupTableValueFieldId: number;\r\n\r\n\t@deserialize\r\n\tLookupTableValueFieldName: string;\r\n\r\n\t@deserialize\r\n\tPrimaryTableLookupFieldName: string;\r\n\t\r\n\t@deserialize\r\n\tPrimaryTableLookupFieldId: number;\r\n\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport {LookupFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/LookupFieldModel';\r\n\r\nexport interface IGetLookupFieldsRequestModel {\r\n\tContextEntityId: number;\r\n};\r\n\r\nexport class LookupFieldsStore {\r\n\tstatic GetLookup( params: IGetLookupFieldsRequestModel ): P.Promise<Array<LookupFieldModel>> {\r\n\t\tvar deferredResult = P.defer<Array<LookupFieldModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetLookupFields\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif ( data.IsSuccessfull ) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetMultiSelect(params: IGetLookupFieldsRequestModel): P.Promise<Array<LookupFieldModel>> {\r\n\t\tvar deferredResult = P.defer<Array<LookupFieldModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetMultiSelectFields\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"POST\"\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize( jsonObject: any ): any {\r\n\t\tvar model = GenericDeserialize<LookupFieldModel>(jsonObject.Data, LookupFieldModel);\r\n\t\treturn model;\r\n\t}\r\n}","export enum LabelPositions {\r\n\tNoLabel = 0,\r\n\tLeft = 1,\r\n\tUpperLeft = 2,\r\n\tUpperMiddle = 3,\r\n\tUpperRight = 4,\r\n\tRight = 5,\r\n\tLeftColon = 6\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport Dropzone from 'dropzone';\r\n\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request} from 'Core/Common/Request';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {FONT_NAME, ICON_NAME} from 'Core/Constant';\r\n\r\n// Templates\r\nimport IconManagerTemplate from 'Core/Components/IconManager/Templates/IconManager.html'\r\nko.templates['Core/Components/IconManager/Templates/IconManager'] = IconManagerTemplate;\r\n\r\nexport class IconManager extends Event {\r\n private _modal: Modal;\r\n private _icons: IconModel[];\r\n private _entityColor: string;\r\n private _groupedIcons: KnockoutObservable<any>;\r\n private _dropzoneShown: KnockoutObservable<boolean>;\r\n private _uploadetImages: any[];\r\n private dropZone: any;\r\n private FONT_NAME = FONT_NAME;\r\n private _iconModel = IconModel;\r\n\r\n constructor(icons: IconModel[]) {\r\n super();\r\n\r\n this._icons = icons;\r\n this._entityColor = null;\r\n this._groupedIcons = ko.observable(null);\r\n this._dropzoneShown = ko.observable(false);\r\n this._uploadetImages = [];\r\n this.AddEvent('ICON_SELECTED');\r\n this.InitUI();\r\n }\r\n\r\n RenderTemplate() {\r\n let i = 0;\r\n this._groupedIcons(_.groupBy(this._icons, (item) => item.FontName));\r\n\r\n _.each(this._groupedIcons(), (value: IconModel[], key: any) => {\r\n if (i === 0) {\r\n value.splice(0, 0, {\r\n Name: ICON_NAME.EMPTY_ICON,\r\n FontName: key,\r\n Image: null,\r\n IsIcon: true,\r\n IsImage: false,\r\n Id: 0\r\n });\r\n i++;\r\n }\r\n });\r\n }\r\n\r\n SetIcon(icon: IconModel) {\r\n this.Trigger('ICON_SELECTED', {Icon: icon});\r\n this._modal.Close();\r\n }\r\n\r\n InitUI() {\r\n this._modal = new Modal();\r\n this.RenderTemplate();\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({});\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n\r\n OpenDropzone() {\r\n this._dropzoneShown(true);\r\n this.InitDropzone();\r\n }\r\n\r\n HideDropzone() {\r\n this._dropzoneShown(false);\r\n }\r\n\r\n private InitDropzone() {\r\n var self = this;\r\n var dz = new Dropzone('.imagedropzone',\r\n {\r\n url: URL.CONTROLS.IMAGE.SAVE_UPLOADED_FILE,\r\n autoProcessQueue: false,\r\n addRemoveLinks: true,\r\n dictRemoveFile: '',\r\n acceptedFiles: '.png,.gif,.jpg,.jpeg,.jpe,.jif,.jfif,.jfi',\r\n });\r\n\r\n dz.on('addedfile', self.AfterUpload.bind(self));\r\n dz.on('removedfile', (file) => {\r\n var self = this;\r\n let fileIndex = self._uploadetImages.indexOf(file);\r\n if (fileIndex === -1) {\r\n const fileToRemove = self._uploadetImages.find(image => image.Image === (file as any).dataURL && image.Name === file.name);\r\n fileIndex = self._uploadetImages.indexOf(fileToRemove);\r\n }\r\n self._uploadetImages.splice(fileIndex, 1);\r\n });\r\n self.dropZone = dz;\r\n }\r\n\r\n AfterUpload(file) {\r\n var self = this;\r\n var reader = new FileReader();\r\n reader.onloadend = () => {\r\n self._uploadetImages.push({\r\n Name: file.name,\r\n FontName: 'Graphical',\r\n Image: reader.result\r\n });\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n };\r\n\r\n Upload() {\r\n var self = this;\r\n if (this._uploadetImages.length > 0) {\r\n BlockUI.Block();\r\n Request.Send({\r\n proxy: {\r\n contentType: 'application/json; charset=utf-8',\r\n type: 'POST',\r\n url: '/api/DataBaseDesignerApi/SaveIcons'\r\n }, params: JSON.stringify({ IconsList : this._uploadetImages })\r\n }).always(() => BlockUI.Unblock())\r\n .then((response) => {\r\n self._uploadetImages = [];\r\n self.dropZone.removeAllFiles(true);\r\n self._dropzoneShown(false);\r\n new Notifier().Success('Successfully saved.');\r\n self._icons.push(...response);\r\n self._groupedIcons(_.groupBy(self._icons, (item) => item.FontName));\r\n }).fail(data => { \r\n let jsonResult = JSON.parse(data.message);\r\n\t\t\t\tnew Notifier().Failed(jsonResult.Message);\r\n\t\t\t });\r\n }\r\n };\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/IconManager/Templates/IconManager';\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"icon-manager\\\" class=\\\"icon-manager box-shadow-wrapper\\\"> <div class=\\\"tab-wrapper\\\"> <ul data-bind=\\\"foreachprop: _groupedIcons\\\" class=\\\"nav nav-tabs\\\"> <li data-bind=\\\"css: {'active': $index() == 0}\\\" class=\\\"tab\\\"> <a data-toggle=\\\"tab\\\" class=\\\"tab-link\\\" data-bind=\\\"text: key, attr: {href: '#tab_' + key}\\\"> </a> </li> </ul> </div> <div class=\\\"tab-content tab-page-result\\\" data-bind=\\\"foreachprop: _groupedIcons\\\"> <div data-bind=\\\"attr: {id: 'tab_' + key}, css: {'in active': $index() == 0, 'mix-grid': key === $parent.FONT_NAME.GRAPHICAL}\\\" class=\\\"tab-pane mix-grid fade\\\"> <!--ko if: $index() == 0 --> <div class=\\\"icon-manager__dropzoneWrapper\\\"> <!--ko ifnot: $parent._dropzoneShown --> <button type=\\\"submit\\\" class=\\\"btn\\\" data-bind=\\\"click: $parent.OpenDropzone.bind($parent)\\\"> <i class=\\\"fa fa-plus\\\"></i> </button> <!-- /ko --> <!--ko if: $parent._dropzoneShown --> <button type=\\\"submit\\\" class=\\\"btn\\\" data-bind=\\\"click: $parent.HideDropzone.bind($parent)\\\"> <i class=\\\"fa fa-minus\\\"></i> </button> <div id=\\\"dropZone\\\" class=\\\"dropZoneBox\\\"> <button type=\\\"submit\\\" class=\\\"btn blue start\\\" data-bind=\\\"click: $parent.Upload.bind($parent)\\\"> <i class=\\\"fa fa-upload\\\"></i> <span> Start upload </span> </button> <form class=\\\"dropzone imagedropzone dz-clickable\\\" fieldid=\\\"dropzoneId\\\" data=\\\"\\\" id=\\\"dropFileId\\\"> <div class=\\\"dz-default dz-message\\\"></div> </form> </div> <!-- /ko --> </div> <!-- /ko --> <div class=\\\"mix-grid\\\"> <!--ko foreach: value --> <!--ko ifnot: IsImage--> <span class=\\\"icon-container\\\"> <a href=\\\"#\\\" class=\\\"icon-btn\\\" data-bind=\\\"click: $parents[1].SetIcon.bind($parents[1], $data)\\\"> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"css: $parents[1]._iconModel.GetClasses(FontName, Name)\\\"></i> </a> <span class=\\\"icon-name\\\" data-bind=\\\"text: Name.replace('fa-', '')\\\"></span> </span> <!-- /ko --> <!--ko if: IsImage--> <div class=\\\"col-md-1 col-sm-1 mix mix_all\\\"> <div class=\\\"mix-inner image-icon white-bordered\\\"> <img class=\\\"img-responsive image-centered\\\" data-bind=\\\"attr: {src: Image}, click: $parents[1].SetIcon.bind($parents[1], $data)\\\"/> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: _labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: _labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: _labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <!-- ko if: TypeName === 'GenericButton' || TypeName === 'ButtonTemplate' --> <div class=\\\"form-group pull-left dbd-icon-place\\\"> <a class=\\\"icon-btn icon-btn-lg icon-manager-btn\\\" data-bind=\\\"click: OpenIconManager\\\"> <!-- ko if: Icon && Icon.Id--> <!-- ko ifnot: Icon.Image --> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"text: !Icon.Id ? 'Select icon' : '', css: _iconModel.GetClasses(Icon.FontName, Icon.Name)\\\"></i> <!-- /ko --> <!-- ko if: Icon.Image--> <img class=\\\"img-responsive image-centered image-button\\\" data-bind=\\\"attr: {src: Icon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: !Icon || !Icon.Id --> <i class=\\\"fa-5x fa-stack custom-color-option fa empty-icon\\\" data-bind=\\\"text: 'Select icon'\\\"></i> <!-- /ko --> </a> </div> <!-- /ko --> <div class=\\\"form-group\\\" data-bind=\\\"css: {'form-group-to-right' : TypeName === 'GenericButton' || TypeName === 'ButtonTemplate'} \\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: _labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValidName(), 'has-error-without-border': !IsValidName()},\\r\\n tooltip:{ content: ValidationMsgForName() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: _currentControlName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent._isControlNameHasFocus,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenable: !$parent._useFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent._isValid()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: _showLanguageList }, click: $data.ShowLanguageList.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: _showLanguageList }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: Translations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t\\tenable: !$parent._useFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t\\thasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <!--ko if: ShowUseFieldNameToggle--> <label class=\\\"control-label\\\"><!-- ko text: _labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-off': !_useFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-on': _useFieldName()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> <!--/ko--> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: _labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: _labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: LabelPositions, optionsText: 'Title', value: SelectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: _labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: _currentControlDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent._labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: _showDescriptionsLanguageList }, click: $data.ShowDescriptionLanguageList.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: _showDescriptionsLanguageList }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: _labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div data-bind=\\\"visible: _showEntityList\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"entityId\\\"> <!-- ko text: _labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: Entities,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'EntityName',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: SelectedEntity,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalueAllowUnset: true\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"> </select> </div> </div> <div data-bind=\\\"visible: _showEntityTypesList\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"entityTypeId\\\"> <!-- ko text: _labels.TYPE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: EntityTypes, optionsText: 'Name', value: SelectedEntityType\\\" class=\\\"form-control\\\" name=\\\"entityTypeId\\\"></select> </div> </div> <div data-bind=\\\"visible: _showSubEntityList\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"subEntityId\\\"> <!-- ko text: _labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: SubEntities, optionsText: 'EntityName', value: SelectedSubEntity\\\" class=\\\"form-control\\\" name=\\\"subEntityId\\\"></select> </div> </div> <div data-bind=\\\"visible: _allowSelectField\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"fieldId\\\"> <!-- ko text: _labels.FIELD --><!-- /ko --> </label> <div> <select data-bind=\\\"options: Fields, optionsText: 'FullName', optionsAfterRender: SetOptionDisable, value: SelectedField, enableAttr: Fields().length > 0\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> <div data-bind=\\\"visible: _allowSelectField\\\" class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"maskId\\\"> <!-- ko text: _labels.MASK --><!-- /ko --> </label> <div> <select id=\\\"selectedMaskId\\\" class=\\\"form-control\\\" name=\\\"maskId\\\" disabled=\\\"disabled\\\"> <option>None</option> </select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion3\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr: { href: '#' + $data.Id }, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion3\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr: { id: $data.Id }\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport {BaseControlEditor, CONTROL_DEFAULT_NAME} from \"./BaseControlEditor\";\r\n\r\nimport {EntitiesStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore';\r\nimport {BlobFieldsStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/BlobFieldsStore';\r\nimport {LookupFieldsStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/LookupFieldsStore';\r\nimport {EntityModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityModel';\r\nimport {EntityTypeModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/EntityTypeModel';\r\nimport {FieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/FieldModel';\r\nimport {LabelPositions} from 'Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions';\r\nimport {ControlEditorModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/ControlEditorModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IconManager} from 'Core/Components/IconManager/IconManager'\r\nimport {TABLE_TYPES, CONTROL_TYPES, FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor.html'\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor'] = Template;\r\n\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {TranslationFieldEditor} from \"Core/Components/TranslationFieldEditor/TranslationFieldEditor\";\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {Drop} from \"Core/Controls/Drop/Drop\";\r\nimport {TimeWriting} from \"Core/Controls/TimeWriting/TimeWriting\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {BlobFieldModel} from '../Models/BlobFieldModel';\r\nimport { ButtonTemplate } from 'Core/Controls/ButtonTemplate/ButtonTemplate';\r\n\r\nexport interface ILabelPosition {\r\n Value: number;\r\n Title: string;\r\n}\r\n\r\nvar DEFAULT_CONTROL_NAME = \"Default name\";\r\n\r\nexport class ControlEditor extends Event {\r\n private _control: IControl;\r\n private _editControl: IControl;\r\n private _modal: Modal;\r\n private _controlName: KnockoutObservable<string>;\r\n private _controlTypeName: KnockoutObservable<string>;\r\n private _editControlModel: ControlModel;\r\n private _controlId: number;\r\n private _controlGuid: string;\r\n private _subjectEntityId: number;\r\n private _subjectSubEntityId: number;\r\n private _tableTypeId: number;\r\n private _entities: KnockoutObservableArray<EntityModel>;\r\n private _entityTypes: KnockoutObservableArray<EntityTypeModel>;\r\n private _subEntities: KnockoutObservableArray<EntityModel>;\r\n private _fields: KnockoutObservableArray<FieldModel>;\r\n private _selectedEntity: KnockoutObservable<EntityModel>;\r\n private _selectedEntityType: KnockoutObservable<EntityTypeModel>;\r\n private _selectedSubEntity: KnockoutObservable<EntityModel>;\r\n private _selectedField: KnockoutObservable<FieldModel>;\r\n private _labelPositions: KnockoutObservableArray<ILabelPosition>;\r\n private _selectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n private _controlEditorModel: ControlEditorModel;\r\n private _showEntityList: KnockoutObservable<boolean>;\r\n private _showEntityTypesList: KnockoutObservable<boolean>;\r\n private _showSubEntityList: KnockoutObservable<boolean>;\r\n private _allowSelectField: KnockoutObservable<boolean>;\r\n private _currentControlName: KnockoutObservable<TranslationModel>;\r\n private _controlNameTranslations: KnockoutObservableArray<TranslationModel>;\r\n private _currentControlDescription: KnockoutObservable<TranslationModel>;\r\n private _controlDescriptionTranslations: KnockoutObservableArray<TranslationModel>;\r\n\r\n\tprivate _blobFields: KnockoutObservableArray<BlobFieldModel>;\r\n private _useFieldName: KnockoutObservable<boolean>;\r\n\r\n private _instantaneousValue: KnockoutObservable<string>;\r\n private _isControlNameHasFocus: KnockoutObservable<boolean>;\r\n private _showLanguageList: KnockoutObservable<boolean>;\r\n private _showDescriptionsLanguageList: KnockoutObservable<boolean>;\r\n private _selectFieldSubscription: KnockoutSubscription;\r\n private _labels = LABELS;\r\n private _icon: KnockoutObservable<IconModel>;\r\n private _iconModel = IconModel;\r\n private _isValid: KnockoutObservable<boolean>;\r\n private _translationFieldEditor: TranslationFieldEditor;\r\n private _defaultEntityType: EntityTypeModel;\r\n\r\n private IsValidName: KnockoutObservable<boolean>;\r\n private ValidationMsgForName: KnockoutObservable<string>;\r\n\r\n constructor(control: IControl) {\r\n super();\r\n this._modal = new Modal();\r\n this._control = control;\r\n this._icon = ko.observable(control.GetIcon());\r\n\r\n this._editControl = control.Clone();\r\n this._editControlModel = this._editControl.GetModel();\r\n this._editControlModel.Id = control.GetControlId();\r\n this._controlName = ko.observable(this._editControlModel.Name);\r\n\t\tthis._selectFieldSubscription = null;\r\n\r\n\t\tthis._blobFields = ko.observableArray(null);\r\n this._useFieldName = ko.observable(this._editControlModel.UseFieldName);\r\n\t\tthis._useFieldName.subscribe((newValue) => {\r\n\t if (newValue) {\r\n\t\t this.UseFieldNameForControlName();\r\n\t }\r\n });\r\n\r\n const defaultName = new TranslationModel();\r\n defaultName.Language = new LanguageModel(-1);\r\n defaultName.Translation = this._editControlModel.Name || CONTROL_DEFAULT_NAME;\r\n this._editControlModel.NameTranslations.unshift(defaultName);\r\n\r\n const defaultTranslation = new TranslationModel();\r\n defaultTranslation.Language = new LanguageModel(-1);\r\n defaultTranslation.Translation = this._editControlModel.Description;\r\n this._editControlModel.DescriptionTranslations.unshift(defaultTranslation);\r\n\r\n this._controlNameTranslations = ko.observableArray(this._editControlModel.NameTranslations);\r\n this._controlDescriptionTranslations = ko.observableArray(this._editControlModel.DescriptionTranslations);\r\n\r\n this._defaultEntityType = new EntityTypeModel();\r\n this._defaultEntityType.Name = this._labels.ALL;\r\n\r\n this._subjectEntityId = this._editControl.GetForm().GetScreen().GetEntityId();\r\n this._tableTypeId = this._editControl.GetForm().GetScreen().GetTableTypeId();\r\n this._entities = ko.observableArray([]);\r\n this._entityTypes = ko.observableArray([this._defaultEntityType]);\r\n this._subEntities = ko.observableArray([]);\r\n this._fields = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n this._selectedEntityType = ko.observable(this._defaultEntityType);\r\n this._selectedSubEntity = ko.observable(null);\r\n this._selectedField = ko.observable(null);\r\n this._controlEditorModel = new ControlEditorModel();\r\n this._showEntityList = ko.observable(true);\r\n this._showEntityTypesList = ko.observable(false);\r\n this._showSubEntityList = ko.observable(false);\r\n this._allowSelectField = ko.observable(true);\r\n this._isControlNameHasFocus = ko.observable(true);\r\n this._showLanguageList = ko.observable(false);\r\n this._showDescriptionsLanguageList = ko.observable(false);\r\n this._isValid = ko.observable(true);\r\n\r\n this._labelPositions = ko.observableArray([\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]},\r\n {Value: LabelPositions.Left, Title: LabelPositions[LabelPositions.Left]},\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.UpperMiddle, Title: LabelPositions[LabelPositions.UpperMiddle]},\r\n {Value: LabelPositions.UpperRight, Title: LabelPositions[LabelPositions.UpperRight]},\r\n {Value: LabelPositions.Right, Title: LabelPositions[LabelPositions.Right]},\r\n {Value: LabelPositions.LeftColon, Title: LabelPositions[LabelPositions.LeftColon]}\r\n ]);\r\n\r\n var uniqFieldsByEntityType = _.uniq(this._editControl.GetModel().Fields, false, field => field.EntityTypeId);\r\n\r\n _.forEach(uniqFieldsByEntityType,\r\n field => {\r\n if (field.EntityTypeName === TABLE_TYPES.Entity) {\r\n this._subjectEntityId = field.EntityId;\r\n this._tableTypeId = 0;\r\n }\r\n\r\n if (field.EntityTypeName === TABLE_TYPES.Sub) {\r\n this._subjectSubEntityId = field.EntityId;\r\n }\r\n });\r\n\r\n var selectedLabelPosition = _.find(this._labelPositions(), item => {\r\n return item.Value === LabelPositions[this._editControlModel.LabelPosition]\r\n });\r\n this._selectedLabelPosition = ko.observable(selectedLabelPosition);\r\n\r\n this._selectedLabelPosition.subscribe(newValue => {\r\n this._editControlModel.LabelPosition = LabelPositions[newValue.Value];\r\n });\r\n\r\n this._selectedEntity.subscribe(newValue => {\r\n if (newValue) {\r\n let editControl = this._editControl;\r\n if (editControl instanceof ComplexControl) {\r\n editControl.AutoSelectFields([newValue]);\r\n this._fields([]);\r\n\r\n if (this._editControl instanceof Drop) {\r\n this._fields(_.filter(newValue.Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.Document;\r\n }));\r\n this._entityTypes(_.union([this._defaultEntityType], newValue.EntityTypes));\r\n this._selectedEntityType(this._defaultEntityType);\r\n }\r\n\r\n BlockUI.Block();\r\n EntitiesStore.GetSubEntities({EntityId: newValue.EntityId, TableTypeId: this._tableTypeId})\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(subEntities => {\r\n if (this._editControl instanceof Drop) {\r\n let documentFields = [];\r\n _.each(subEntities, (subEntity) => {\r\n documentFields = documentFields.concat(\r\n _.filter(subEntity.Fields, (field) => {\r\n field.FullName = `${subEntity.EntityName}, ${field.FieldName}`;\r\n return field.FieldTypeName === FIELD_TYPES.Document;\r\n }));\r\n });\r\n\r\n this._fields(this._fields().concat(documentFields));\r\n this._fields(_.uniq(this._fields(), false, field => field.FieldId));\r\n this.SetCurrentField();\r\n } else {\r\n this._subEntities(subEntities);\r\n let selectedSubEntity = _.find(subEntities, subEntity => {\r\n return subEntity.EntityId === this._subjectSubEntityId\r\n });\r\n\r\n if (selectedSubEntity) {\r\n this._selectedSubEntity(selectedSubEntity);\r\n }\r\n }\r\n });\r\n } else if (this._editControlModel.IsLookupFieldAttached) {\r\n this.LoadLookupFieldsForEntity(newValue);\r\n } else {\r\n this._fields(newValue.Fields);\r\n }\r\n\r\n var generalProperties = this._editControl.GeneralProperties;\r\n if (generalProperties && this._editControl instanceof ButtonTemplate) {\r\n generalProperties.ResetProperty('TemplateType');\r\n }\r\n }\r\n });\r\n\r\n this._selectedSubEntity.subscribe(newValue => {\r\n if (newValue) {\r\n let editControl = this._editControl;\r\n if (editControl instanceof ComplexControl) {\r\n const selectedEntity = this.SelectedEntity();\r\n editControl.AutoSelectFields([selectedEntity, newValue]);\r\n\r\n if (editControl instanceof TimeWriting) {\r\n const nameField = selectedEntity.Fields.find(field => field.FieldName === 'NAME');\r\n\r\n if (nameField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = nameField.FieldId;\r\n attachedFieldModel.Name = nameField.FieldName;\r\n attachedFieldModel.EntityName = selectedEntity.EntityName;\r\n attachedFieldModel.EntityId = selectedEntity.EntityId;\r\n attachedFieldModel.EntityTypeName = selectedEntity.TypeName;\r\n attachedFieldModel.EntityTypeId = selectedEntity.TypeId;\r\n attachedFieldModel.Sort = this._editControlModel.Fields.length * 10;\r\n attachedFieldModel.FieldTypeName = nameField.FieldTypeName;\r\n this._editControlModel.Fields.push(attachedFieldModel);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n this._currentControlName = ko.observable(null);\r\n this._currentControlDescription = ko.observable(null);\r\n\r\n this.IsValidName = ko.observable(true);\r\n this.ValidationMsgForName = ko.observable(LABELS.THIS_FIELD_IS_REQUIRED);\r\n }\r\n\r\n LoadLookupFieldsForEntity(entity: EntityModel) {\r\n var requestModel = {\r\n ContextEntityId: entity.EntityId\r\n };\r\n LookupFieldsStore.GetLookup(requestModel)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(data => {\r\n var fields = [];\r\n _.each(data, (item) => {\r\n var field = new FieldModel();\r\n field.FieldId = item.PrimaryTableLookupFieldId;\r\n field.FieldName = `${item.PrimaryTableLookupFieldName}`;\r\n field.ValTableId = item.ValTableId;\r\n field.ValFieldId = item.ValFieldId;\r\n field.FieldTypeName = FIELD_TYPES.Lookup;\r\n fields.push(field);\r\n });\r\n this._fields(fields);\r\n this.SetCurrentField();\r\n });\r\n }\r\n\r\n SetCurrent() {\r\n let translationsModel = _.find(this._editControlModel.NameTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null)\r\n || _.first(this._controlNameTranslations());\r\n\r\n this._currentControlName(translationsModel);\r\n }\r\n\r\n SetCurrentDescription() {\r\n let translationsModel = _.find(this._editControlModel.DescriptionTranslations, language => language.Selected && language.Translation !== '' && language.Translation !== null)\r\n || _.first(this._controlDescriptionTranslations());\r\n\r\n this._currentControlDescription(translationsModel);\r\n }\r\n\r\n SelectTranslation(translationModel: TranslationModel) {\r\n this._currentControlName(translationModel);\r\n this._isControlNameHasFocus(true);\r\n this._showLanguageList(false);\r\n }\r\n\r\n SelectDescriptionTranslation(translationModel: TranslationModel) {\r\n this._currentControlDescription(translationModel);\r\n this._showDescriptionsLanguageList(false);\r\n }\r\n\r\n UpdateTranslationList() {\r\n let languages = this._controlNameTranslations().slice(0);\r\n this._controlNameTranslations([]);\r\n this._controlNameTranslations(languages);\r\n }\r\n\r\n UpdateDescriptionTranslationList() {\r\n let languages = this._controlDescriptionTranslations().slice(0);\r\n this._controlDescriptionTranslations([]);\r\n this._controlDescriptionTranslations(languages);\r\n }\r\n\r\n ChangeTranslation() {\r\n let current = _.find(this._controlNameTranslations(), (item) => {\r\n return item.Language.K_Language === this._currentControlName().Language.K_Language;\r\n });\r\n this._currentControlName(current);\r\n }\r\n\r\n ChangeDescriptionTranslation() {\r\n let current = _.find(this._controlDescriptionTranslations(), (item) => {\r\n return item.Language.K_Language === this._currentControlDescription().Language.K_Language;\r\n });\r\n this._currentControlDescription(current);\r\n }\r\n\r\n ShowLanguageList(controlEditor) {\r\n this._showLanguageList(!this._showLanguageList());\r\n this.SetFocusItem(this._controlNameTranslations());\r\n }\r\n\r\n ShowDescriptionLanguageList(controlEditor) {\r\n this._showDescriptionsLanguageList(!this._showDescriptionsLanguageList());\r\n this.SetFocusItem(this._controlDescriptionTranslations());\r\n }\r\n\r\n ToggleUseFieldName() {\r\n\t this._useFieldName(!this._useFieldName());\r\n }\r\n\r\n // Add to focus the first blank item Name and item Description\r\n SetFocusItem(ArrTranslate: Array<TranslationModel>) {\r\n let focusEmptyElement = _.find(ArrTranslate, item => {\r\n if (item.Translation === undefined) {\r\n return item.Translation === undefined;\r\n } else if (item.Translation === null) {\r\n return item.Translation === null;\r\n } else if (item.Translation === '') {\r\n return item.Translation === '';\r\n }\r\n });\r\n let isMobile = MobileChecker.IsMobile();\r\n focusEmptyElement && focusEmptyElement.IsFocusedItem(!isMobile);\r\n }\r\n\r\n LoadData() {\r\n if (this._editControlModel.IsBlobFieldAttached) {\r\n this._showEntityList(false);\r\n return this.LoadBlobControlData();\r\n }\r\n\r\n if (this._editControlModel.IsLookupFieldAttached) {\r\n this._showEntityList(true);\r\n return this.LoadLookupControlData();\r\n }\r\n\r\n if (this._editControlModel.IsMultiSelectFieldAttached) {\r\n this._showEntityList(false);\r\n return this.LoadMultiSelectControlData();\r\n }\r\n\r\n if (this._editControlModel.IsFieldAttached) {\r\n return this.LoadGeneralControlData();\r\n }\r\n\r\n if (this._editControlModel.IsComplexControl) {\r\n if (this._editControl instanceof Drop) {\r\n this._allowSelectField(true);\r\n this._showEntityTypesList(true);\r\n this._showSubEntityList(false);\r\n } else {\r\n this._allowSelectField(false);\r\n this._showEntityTypesList(false);\r\n this._showSubEntityList(true);\r\n }\r\n return this.LoadGeneralControlData();\r\n }\r\n\r\n BlockUI.Unblock();\r\n this._allowSelectField(false);\r\n }\r\n\r\n LoadLookupControlData() {\r\n return EntitiesStore.Get({EntityId: this._subjectEntityId, TableTypeId: this._tableTypeId})\r\n .always(() => BlockUI.Unblock())\r\n .then(entities => {\r\n this._entities(entities);\r\n\r\n /*var selectedEntity = _.find(entities, entity => { return entity.EntityId === this._subjectEntityId });\r\n\r\n if (!selectedEntity) {\r\n selectedEntity = _.first(entities);\r\n }\r\n\r\n if (selectedEntity) {\r\n this.LoadLookupFieldsForEntity(selectedEntity);\r\n }*/\r\n });\r\n }\r\n\r\n LoadMultiSelectControlData() {\r\n var requestModel = {\r\n ContextEntityId: this._editControl.GetForm().GetScreen().GetEntityId()\r\n };\r\n var fields = [];\r\n return LookupFieldsStore.GetMultiSelect(requestModel)\r\n .always(() => BlockUI.Unblock())\r\n .then(data => {\r\n _.each(data, (item) => {\r\n var field = new FieldModel();\r\n field.FieldId = item.PrimaryTableLookupFieldId;\r\n field.FieldName = `${item.LookupTableTableName} ${item.LookupTableValueFieldName}`;\r\n fields.push(field);\r\n });\r\n this._fields(fields);\r\n this.SetCurrentField();\r\n });\r\n }\r\n\r\n LoadBlobControlData() {\r\n var isControlInMainSubForm = true;\r\n if (this._editControl.GetParentControl()) {\r\n isControlInMainSubForm = !(this._editControl.GetParentControl() instanceof TabPage);\r\n }\r\n\r\n var requestModel = {\r\n ControlTypeName: this._editControlModel.TypeName,\r\n ContextEntityId: this._editControl.GetForm().GetScreen().GetEntityId(),\r\n IsControlInMainSubForm: isControlInMainSubForm\r\n }\r\n return BlobFieldsStore.Get(requestModel)\r\n .always(() => BlockUI.Unblock())\r\n .then(data => {\r\n var fields = [];\r\n _.each(data, (item) => {\r\n var field = new FieldModel();\r\n field.FieldId = item.FieldId;\r\n field.FieldName = item.EntityNameWithFieldName;\r\n field.FullName = item.EntityNameWithFieldName;\r\n fields.push(field);\r\n\t\t\t\t});\r\n\r\n this._blobFields(data);\r\n this._fields(fields);\r\n this.SetCurrentField();\r\n });\r\n }\r\n\r\n LoadGeneralControlData() {\r\n return EntitiesStore.Get({EntityId: this._subjectEntityId, TableTypeId: this._tableTypeId})\r\n .always(() => BlockUI.Unblock())\r\n .then(entities => {\r\n entities.forEach(entity => entity.Fields = entity.Fields.filter(field => field.FieldTypeName !== FIELD_TYPES.Property));\r\n\r\n if (this._editControl instanceof Drop) {\r\n entities = _.filter(entities, entity => entity.TypeName !== TABLE_TYPES.Link);\r\n _.each(entities, (entity) => {\r\n _.each((entity.Fields), (field) => {\r\n field.FullName = `${entity.EntityName}, ${field.FieldName}`;\r\n });\r\n });\r\n }\r\n\r\n let designScreen = <DesignScreen>this._editControl.GetForm().GetScreen();\r\n let isEditScreen = designScreen.GetType() === ScreenTypes[ScreenTypes.EditScreen];\r\n let isListScreen = designScreen.GetType() === ScreenTypes[ScreenTypes.ListScreen];\r\n let isOnlySubject =\r\n (isEditScreen || isListScreen) && this._control.GetType() !== CONTROL_TYPES.Drop && !(this._editControl instanceof ComplexControl);\r\n\r\n if (isOnlySubject) {\r\n let subjectEntity = _.find(entities, entity => {\r\n return entity.EntityId === this._subjectEntityId\r\n });\r\n\r\n let existFieldIds = [];\r\n\r\n _.each(designScreen.Controls,\r\n (control) => {\r\n if (control.GetModel().Fields.length === 1) {\r\n existFieldIds.push(control.GetModel().Fields[0].Id);\r\n }\r\n });\r\n\r\n let currentField = _.first(this._editControlModel.Fields);\r\n\r\n if (currentField) {\r\n _.each(subjectEntity.Fields, (field) => {\r\n if ((_.contains(existFieldIds, field.FieldId) && currentField.Id !== field.FieldId)\r\n || field.IsPrimaryKey() || (isEditScreen && field.IsSystem)) {\r\n field.IsEnabled = false;\r\n }\r\n });\r\n } else {\r\n _.each(subjectEntity.Fields, (field) => {\r\n if (_.contains(existFieldIds, field.FieldId) || field.IsPrimaryKey() || (isEditScreen && field.IsSystem)) {\r\n field.IsEnabled = false;\r\n }\r\n });\r\n }\r\n\r\n this._entities([subjectEntity]);\r\n } else {\r\n this._entities(entities);\r\n }\r\n\r\n let selectedEntity = _.find(entities, entity => {\r\n return entity.EntityId === this._subjectEntityId\r\n });\r\n\r\n if (!selectedEntity) {\r\n selectedEntity = _.first(entities);\r\n }\r\n\r\n if (selectedEntity) {\r\n const subjectField = _.first(this._editControl.GetModel().Fields);\r\n\r\n if (this._editControl instanceof Drop) {\r\n const dropControlSubjectEntity = subjectField && _.find(this._entities(), (entity) => {\r\n return !!_.find(entity.Fields, (entityField) => {\r\n return entityField.FieldId === subjectField.Id;\r\n });\r\n });\r\n\r\n this._selectedEntity(dropControlSubjectEntity || selectedEntity);\r\n\r\n const destinationTypeId = this._editControl.GetModel().DestinationTypeId;\r\n if(destinationTypeId && destinationTypeId > 0){\r\n let entityType = _.find(this._entityTypes(), item => item.Id === destinationTypeId);\r\n entityType = entityType? entityType : _.first(this._entityTypes());\r\n this._selectedEntityType(entityType);\r\n }else{\r\n this._selectedEntityType(_.first(this._entityTypes()));\r\n }\r\n\r\n this._fields(_.filter(this._selectedEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.Document\r\n }));\r\n } else {\r\n const controlSubjectEntity = subjectField && _.find(entities, entity =>\r\n entity.EntityId === subjectField.ValTableId\r\n );\r\n if (controlSubjectEntity) {\r\n selectedEntity = controlSubjectEntity;\r\n }\r\n\r\n this._selectedEntity(selectedEntity);\r\n this._fields(selectedEntity.Fields);\r\n }\r\n this.SetCurrentField();\r\n }\r\n });\r\n }\r\n\r\n SetCurrentSubEntity() {\r\n var entity = _.first(this._subEntities());\r\n\r\n if (entity) {\r\n this._selectedSubEntity(entity);\r\n }\r\n }\r\n\r\n SetCurrentField() {\r\n let field = null;\r\n\r\n if (this._editControl instanceof Drop) {\r\n if (this._editControl.Files.length === 3) {\r\n field = this._editControlModel.Fields[2];\r\n }\r\n } else {\r\n field = _.first(this._editControlModel.Fields);\r\n }\r\n\r\n if (field) {\r\n let selectedField = _.find(this._fields(), item => {\r\n return item.FieldId === field.Id\r\n });\r\n if (selectedField) {\r\n this._selectedField(selectedField);\r\n }\r\n } else {\r\n let selectedField = _.find(this._fields(), (item) => {\r\n return item.IsEnabled\r\n });\r\n\r\n if (this._editControl instanceof Drop) {\r\n if (selectedField) {\r\n let attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = selectedField.FieldId;\r\n attachedFieldModel.Name = selectedField.FieldName;\r\n attachedFieldModel.Sort = 2 * 10;\r\n attachedFieldModel.FieldTypeName = selectedField.FieldTypeName;\r\n this._editControl.GetModel().Fields[2] = attachedFieldModel;\r\n }\r\n }\r\n\r\n this._selectedField(selectedField);\r\n\t\t\tif (this._selectedField()) {\r\n\t\t\t\tvar generalProperties = this._editControl.GeneralProperties;\r\n if (generalProperties && !(this._editControl instanceof Drop)) {\r\n if (!this._editControl.GetFieldModel()) {\r\n var attachedField = new AttachedFieldModel();\r\n this._editControl.GetModel().Fields.push(attachedField);\r\n }\r\n\r\n this._editControl.GetFieldModel().Id = this._selectedField().FieldId;\r\n this._editControl.GetFieldModel().ValTableId = this._selectedField().ValTableId;\r\n\r\n generalProperties.ResetProperty('QueryCondition');\r\n\t\t\t\t}\r\n\r\n if (this._useFieldName()) {\r\n\t this.UseFieldNameForControlName();\r\n }\r\n }\r\n }\r\n\r\n if (this._selectFieldSubscription) {\r\n this._selectFieldSubscription.dispose();\r\n }\r\n\r\n this._selectFieldSubscription = this._selectedField.subscribe(newValue => {\r\n\r\n\t\t\tif (newValue) {\r\n\t\t\t\tif (this._editControl instanceof Drop) {\r\n\t\t\t\t\tlet attachedFieldModel = new AttachedFieldModel();\r\n\t\t\t\t\tattachedFieldModel.Id = newValue.FieldId;\r\n\t\t\t\t\tattachedFieldModel.Name = newValue.FieldName;\r\n\t\t\t\t\tattachedFieldModel.Sort = 2 * 10;\r\n\t\t\t\t\tattachedFieldModel.FieldTypeName = newValue.FieldTypeName;\r\n\t\t\t\t\tthis._editControl.GetModel().Fields[2] = attachedFieldModel;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar generalProperties = this._editControl.GeneralProperties;\r\n\t\t\t\t\tif (generalProperties) {\r\n\r\n\t\t\t\t\t\tif (!this._editControl.GetFieldModel()) {\r\n\t\t\t\t\t\t\tvar attachedField = new AttachedFieldModel();\r\n\t\t\t\t\t\t\tthis._editControl.GetModel().Fields.push(attachedField);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis._editControl.GetFieldModel().Id = this._selectedField().FieldId;\r\n\t\t\t\t\t\tthis._editControl.GetFieldModel().ValTableId = this._selectedField().ValTableId;\r\n\r\n\t\t\t\t\t\tgeneralProperties.ResetProperty('QueryCondition');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._controlName(newValue.FieldName);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._useFieldName()) {\r\n\t\t\t\t\tthis.UseFieldNameForControlName();\r\n\t\t\t\t}\r\n\t\t\t}\r\n \r\n });\r\n\r\n }\r\n\r\n OpenIconManager() {\r\n const screen = this._control.GetForm().GetScreen() as DesignScreen;\r\n const icons = screen.DesignModel.Icons;\r\n\r\n let iconManager = new IconManager(icons);\r\n iconManager.Show();\r\n\r\n iconManager.On('ICON_SELECTED', this, (eventArgs) => {\r\n this._icon(eventArgs.data.Icon);\r\n });\r\n }\r\n\r\n GetFieldMaxLength(): number {\r\n if(!this._editControlModel) {\r\n return ;\r\n }\r\n const maxLength = this._editControlModel.NameMaxSize;\r\n\r\n return maxLength > 0 ? maxLength : -1;\r\n }\r\n\r\n NameValidate(that, event): boolean {\r\n const fieldMaxLength = this.GetFieldMaxLength();\r\n if(that.Translation && that.Translation.length > 0 && fieldMaxLength !== -1 && that.Translation.length >= fieldMaxLength){\r\n this.IsValidName(false);\r\n this.ValidationMsgForName(`${NOTIFICATIONS.MAXIMUM_LENGTH_OF_THIS_FIELD} ${fieldMaxLength}`);\r\n }else {\r\n this.IsValidName(true);\r\n }\r\n\r\n return this.IsValidName();\r\n }\r\n\r\n OnKeyUpUpdateTranslationList(that, event): boolean {\r\n this.UpdateTranslationList();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n OnKeyUpChangeTranslation(that, event): boolean {\r\n this.ChangeTranslation();\r\n\r\n return this.NameValidate(that, event);\r\n }\r\n\r\n get SelectedLabelPosition() {\r\n\r\n return this._selectedLabelPosition;\r\n }\r\n\r\n get LabelPositions() {\r\n return this._labelPositions;\r\n }\r\n\r\n get SelectedEntity() {\r\n return this._selectedEntity;\r\n }\r\n\r\n get SelectedEntityType() {\r\n return this._selectedEntityType;\r\n }\r\n\r\n get SelectedSubEntity() {\r\n return this._selectedSubEntity;\r\n }\r\n\r\n get SelectedField() {\r\n return this._selectedField;\r\n }\r\n\r\n get Entities() {\r\n return this._entities;\r\n }\r\n\r\n get EntityTypes() {\r\n return this._entityTypes;\r\n }\r\n\r\n get SubEntities() {\r\n return this._subEntities;\r\n }\r\n\r\n get Fields() {\r\n return this._fields;\r\n }\r\n\r\n get Id() {\r\n return this._editControlModel.Id === 0 || !this._editControlModel.Id ? this._editControl.GetGuid() : this._editControlModel.Id;\r\n }\r\n\r\n get Name() {\r\n return this._controlName;\r\n }\r\n\r\n get Translations() {\r\n return this._controlNameTranslations();\r\n }\r\n\r\n get DescriptionTranslations() {\r\n return this._controlDescriptionTranslations();\r\n }\r\n\r\n get TypeName() {\r\n return this._editControlModel.TypeName;\r\n }\r\n\r\n get TypeTranslatedName() {\r\n return this._editControlModel.TypeTranslatedName ? this._editControlModel.TypeTranslatedName : this.TypeName;\r\n }\r\n\r\n get Icon() {\r\n return this._icon();\r\n }\r\n\r\n get GeneralProperties() {\r\n return this._editControl.GeneralProperties;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ControlEditor';\r\n }\r\n\r\n Show() {\r\n this._modal = new Modal({});\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n BlockUI.Block();\r\n\r\n this.SetCurrent();\r\n this.SetCurrentDescription();\r\n this.LoadData();\r\n }\r\n\r\n Validate() {\r\n return this.IsValid() && this._editControl.IsPropertiesValid();\r\n }\r\n\r\n Save() {\r\n if (this.Validate()) {\r\n this.Deserialize();\r\n this.Trigger('CONTROL_SAVED', {UpdateControlModel: this._controlEditorModel});\r\n if (this._modal) {\r\n this._modal.Close();\r\n }\r\n } else {\r\n //todo create nice validation\r\n new Notifier().Warning(NOTIFICATIONS.PLEASE_SET_ALL_PROPERTIES);\r\n }\r\n\r\n }\r\n\r\n Deserialize() {\r\n let self = this;\r\n this._controlEditorModel.Name = this._controlName();\r\n this._controlEditorModel.K_Control = this._editControlModel.Id;\r\n this._controlEditorModel.F_Type = this._editControlModel.TypeId;\r\n this._controlEditorModel.TypeName = this._editControlModel.TypeName;\r\n this._controlEditorModel.LabelPosName = this._editControlModel.LabelPosition;\r\n this._controlEditorModel.LabelPos = LabelPositions[this._editControlModel.LabelPosition];\r\n var parentControl = this._editControl.GetParentControl();\r\n this._controlEditorModel.ParentControlId = parentControl ? parentControl.GetControlId() : 0;\r\n this._controlEditorModel.HasParentControl = parentControl ? true : false;\r\n this._controlEditorModel.FieldId = this._selectedField() ? this._selectedField().FieldId : 0;\r\n this._controlEditorModel.ValTableId = this._selectedField() ? this._selectedField().ValTableId : 0;\r\n this._controlEditorModel.ValFieldId = this._selectedField() ? this._selectedField().ValFieldId : 0;\r\n this._controlEditorModel.TypeName = this._selectedField() ? this._selectedField().FieldTypeName : '';\r\n this._controlEditorModel.FieldName = this._selectedField() ? this._selectedField().FieldName : '';\r\n this._controlEditorModel.EntityName = this._selectedEntity() ? this._selectedEntity().EntityName : this._editControl.GetForm().GetScreen().GetEntityName();\r\n\r\n this._controlEditorModel.EntityId = this._selectedEntity() ? this._selectedEntity().EntityId : this._editControl.GetForm().GetScreen().GetEntityId();\r\n this._controlEditorModel.DestinationTypeId = this._selectedEntityType() ? this._selectedEntityType().Id : 0;\r\n this._controlEditorModel.SubTableId = this._selectedSubEntity() && this._selectedSubEntity().EntityId;\r\n this._controlEditorModel.SubFormId = parentControl ? 0 : this._editControl.GetForm().GetFormId();\r\n this._controlEditorModel.Description = this._controlDescriptionTranslations()[0].Translation;\r\n this._controlEditorModel.Icon = this._icon();\r\n this._controlEditorModel.UseFieldName = this._useFieldName();\r\n\r\n var editControl = this._editControl;\r\n\r\n if (editControl instanceof ComplexControl) {\r\n this._controlEditorModel.AttachedFields = editControl.GetModel().Fields;\r\n _.forEach(this._controlEditorModel.AttachedFields, field => {\r\n let iconModel = new IconModel();\r\n iconModel.Name = this._selectedEntity().IconName;\r\n iconModel.FontName = this._selectedEntity().FontName;\r\n iconModel.Image = this._selectedEntity().GraphicalIcon;\r\n iconModel.IsIcon = this._selectedEntity().GraphicalIcon == null;\r\n iconModel.IsImage = !iconModel.IsIcon;\r\n\r\n field.EntityIcon = iconModel;\r\n });\r\n }\r\n\r\n _.each(self._editControlModel.NameTranslations, (item) => {\r\n if (item.Language.K_Language === -1) {\r\n self._controlEditorModel.Name = item.Translation;\r\n } else {\r\n self._controlEditorModel.NameTranslations.push(item);\r\n }\r\n });\r\n\r\n _.each(self._editControlModel.DescriptionTranslations, (item) => {\r\n if (item.Language.K_Language === -1) {\r\n self._controlEditorModel.Description = item.Translation;\r\n } else {\r\n self._controlEditorModel.DescriptionTranslations.push(item);\r\n }\r\n });\r\n\r\n let generalProperties = this._editControl.GeneralProperties;\r\n\r\n this._controlEditorModel.Properties = generalProperties ? generalProperties.Serialize() : null;\r\n }\r\n\r\n SetOptionDisable(option, item) {\r\n ko.applyBindingsToNode(option, {\r\n enableAttr: item.IsEnabled,\r\n css: {\r\n disabled: !item.IsEnabled\r\n }\r\n }, item);\r\n }\r\n\r\n Cancel() {\r\n this._modal.Close();\r\n }\r\n\r\n IsValid(): boolean {\r\n this.SetDefaultValueByTranslation();\r\n if (this.DefaultName.Translation) {\r\n this._isValid(true);\r\n return true;\r\n }\r\n this._isValid(false);\r\n return false;\r\n }\r\n\r\n get DefaultName() {\r\n return _.find(this.Translations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n get DefaultDescription() {\r\n return _.find(this.DescriptionTranslations, (item) => item.Language.K_Language === -1);\r\n }\r\n\r\n\tget ShowUseFieldNameToggle() {\r\n\t\treturn this.TypeName === CONTROL_TYPES.Document;\r\n\t}\r\n\r\n private SetDefaultValueByTranslation() {\r\n let defaultItem = this.DefaultName;\r\n if (defaultItem && defaultItem.Translation) {\r\n return true;\r\n } else if (defaultItem && !defaultItem.Translation) {\r\n let currentLang = TranslationManager.Instance.GetCurrentLanguage();\r\n let currentLangItem = _.find(this.Translations, (item) => {\r\n return currentLang.Id === item.Language.K_Language;\r\n });\r\n\r\n if (currentLangItem.Translation) {\r\n defaultItem.Translation = currentLangItem.Translation;\r\n } else {\r\n let first = _.find(this.Translations, (item) => {\r\n return item.Translation;\r\n });\r\n if (first) {\r\n defaultItem.Translation = first.Translation;\r\n }\r\n }\r\n }\r\n\t}\r\n\r\n\tprivate UseFieldNameForControlName() {\r\n\t\tif (this.TypeName === CONTROL_TYPES.Document) {\r\n\t\t\tconst blobField = _.find(this._blobFields(), field => this._selectedField() && field.FieldId === this._selectedField().FieldId);\r\n\t\t\tif (blobField) {\r\n\t\t\t\tconst controlName = `${blobField.EntityName}.${blobField.FieldName}`;\r\n\t\t\t\tthis._controlName(controlName);\r\n\r\n\t\t\t\t_.each(this._controlNameTranslations(),\r\n\t\t\t\t\ttranslationModel => {\r\n\t\t\t\t\t\tif (translationModel.Language.K_Language === -1) {\r\n\t\t\t\t\t\t\ttranslationModel.Translation = controlName;\r\n\t\t\t\t\t\t\tthis._currentControlName(translationModel);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst entityNameTranslation =\r\n\t\t\t\t\t\t\t_.find(blobField.EntityNameTranslations, entityTranslation => entityTranslation.Language.K_Language === translationModel.Language.K_Language);\r\n\t\t\t\t\t\tif (!entityNameTranslation || !entityNameTranslation.Translation) {\r\n\t\t\t\t\t\t\ttranslationModel.Translation = null;\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst fieldNameTranslation =\r\n\t\t\t\t\t\t\t_.find(blobField.FieldNameTranslations, fieldTranslation => fieldTranslation.Language.K_Language === translationModel.Language.K_Language);\r\n\t\t\t\t\t\tif (!fieldNameTranslation || !fieldNameTranslation.Translation) {\r\n\t\t\t\t\t\t\ttranslationModel.Translation = null;\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttranslationModel.Translation = `${entityNameTranslation.Translation}.${fieldNameTranslation.Translation}`;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tthis.UpdateTranslationList();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t hasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <label class=\\\"control-label\\\"><!-- ko text: Labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-off': !UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t'fa-toggle-on': UseFieldName()\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _labelPositions, optionsText: 'Title', value: _selectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'EntityName', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.FIELD --><!-- /ko --> </label> <div data-bind=\\\"if: _selectedEntity\\\"> <select data-bind=\\\"options: _fields, optionsText: 'FieldName',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsAfterRender: FieldSelectorAfterRender,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedField,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenableAttr: _fields().length > 0,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: { change: $data.OnSelectField.bind($data, $data) }\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout'\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport {LabelPositions} from 'Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions';\r\n\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from \"./BaseControlEditor\";\r\n\r\nimport {ILabelPosition} from \"./ControlEditor\";\r\n\r\nimport {EntitiesStore} from \"Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore\";\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\n\r\nimport {FieldModel} from \"../Models/FieldModel\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor.html';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {FIELD_TYPES} from \"../../../../Constant\";\r\nimport { GENERAL_PROPERTIES } from 'Core/GeneralProperties/Managers/Constants';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n ENTITY_SELECTED: 'ENTITY_SELECTED',\r\n FIELD_SELECTED: 'FIELD_SELECTED'\r\n};\r\n\r\nexport class FieldControlEditor extends BaseControlEditor {\r\n private _labelPositions: KnockoutObservableArray<ILabelPosition>;\r\n private _selectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n\r\n private _fields: KnockoutObservableArray<FieldModel>;\r\n private _selectedField: KnockoutObservable<FieldModel>;\r\n\r\n protected _entities: KnockoutObservableArray<EntityModel>;\r\n protected _selectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/FieldControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => this.PopulateEntities(entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n });\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedField()) {\r\n this.IsValid(false);\r\n return 'Please, select field';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.LabelPosName = this._selectedLabelPosition().Title;\r\n controlEditorModel.LabelPos = this._selectedLabelPosition().Value;\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.EntityId;\r\n controlEditorModel.EntityName = selectedEntity.EntityName;\r\n\r\n const selectedField = this._selectedField();\r\n controlEditorModel.FieldId = selectedField.FieldId;\r\n controlEditorModel.FieldName = selectedField.FieldName;\r\n controlEditorModel.FieldNameTranslation = selectedField.FieldNameTranslation;\r\n controlEditorModel.ValTableId = selectedField.ValTableId;\r\n controlEditorModel.ValFieldId = selectedField.ValFieldId;\r\n\r\n controlEditorModel.UseFieldName = this.UseFieldName();\r\n if (controlEditorModel.UseFieldName) {\r\n controlEditorModel.Name = selectedField.FieldName;\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n return controlEditorModel;\r\n }\r\n\r\n FieldSelectorAfterRender(option, item) {\r\n ko.applyBindingsToNode(option, {\r\n // has removed the functionality of the \"disabled/enabled of Fields\"\r\n enableAttr: true,\r\n css: {\r\n disabled: false\r\n }\r\n }, item);\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n\r\n this.InitLabelPositions();\r\n this.InitEntities();\r\n }\r\n\r\n protected BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, eventArgs => this.OnEntityChange());\r\n this.On(EVENTS.FIELD_SELECTED, this, () => this.OnFieldChange());\r\n\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n\r\n this.UseFieldName.subscribe((newValue) => {\r\n if (newValue) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n });\r\n }\r\n\r\n OnSelectField(selectedField) {\r\n this.Trigger(EVENTS.FIELD_SELECTED, selectedField);\r\n }\r\n\r\n InitLabelPositions() {\r\n this._labelPositions = ko.observableArray([\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]},\r\n {Value: LabelPositions.Left, Title: LabelPositions[LabelPositions.Left]},\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.UpperMiddle, Title: LabelPositions[LabelPositions.UpperMiddle]},\r\n {Value: LabelPositions.UpperRight, Title: LabelPositions[LabelPositions.UpperRight]},\r\n {Value: LabelPositions.Right, Title: LabelPositions[LabelPositions.Right]},\r\n {Value: LabelPositions.LeftColon, Title: LabelPositions[LabelPositions.LeftColon]}\r\n ]);\r\n\r\n const selectedLabelPosition = _.find(this._labelPositions(), item => item.Value === LabelPositions[this.EditControlModel.LabelPosition]);\r\n this._selectedLabelPosition = ko.observable(selectedLabelPosition);\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n\r\n this._fields = ko.observableArray([]);\r\n this._selectedField = ko.observable(null);\r\n }\r\n\r\n PopulateEntities(entities: EntityModel[]) {\r\n entities = this.FilterEntities(entities);\r\n\r\n this._entities(entities);\r\n this.MarkAcceptableFields(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this._selectedEntity(subjectEntity);\r\n }\r\n \r\n this._selectedField.subscribe(field=>{\r\n this.ResetProperties();\r\n });\r\n this.ResetProperties();\r\n }\r\n\r\n protected FilterEntities(entities: EntityModel[]) {\r\n const onlySubjectAcceptable = this.IsScreenOfType(ScreenTypes.EditScreen, ScreenTypes.ListScreen);\r\n\r\n if (onlySubjectAcceptable) {\r\n entities = entities.filter(entity => entity.EntityId === this.SubjectEntityId);\r\n }\r\n\r\n entities = _.uniq(entities, false, entity => entity.EntityId);\r\n entities.forEach(entity => entity.Fields = entity.Fields.filter(field => field.FieldTypeName !== FIELD_TYPES.Property));\r\n\r\n return entities;\r\n }\r\n\r\n protected ResetProperties(){\r\n let controlField = this.EditControl.GetFieldModel();\r\n if(this._selectedField() && this.EditControl.GeneralProperties && controlField?.Id != this._selectedField().FieldId){\r\n let attachedField = new AttachedFieldModel();\r\n attachedField.Id = this._selectedField().FieldId;\r\n this.EditControl.Fields[0] = attachedField;\r\n this.EditControl.GeneralProperties.ResetProperty(GENERAL_PROPERTIES.HIDE_IF_CONDITION);\r\n }\r\n }\r\n\r\n private MarkAcceptableFields(entities: EntityModel[]) {\r\n const usedFields = this.FindUsedFields();\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n\r\n //Disable used fields\r\n entities.forEach(entity => {\r\n entity.Fields\r\n .filter(field => (!attachedField || field.FieldId !== attachedField.Id) && _.contains(usedFields, field.FieldId))\r\n .forEach(field => field.IsEnabled = false);\r\n });\r\n }\r\n\r\n private FindUsedFields() {\r\n return this.GetDesignScreen().Controls\r\n .filter(control => control.HasOneField())\r\n .map(control => control.GetFieldModel().Id);\r\n }\r\n\r\n private OnEntityChange() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n this._fields(selectedEntity.Fields);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n if (attachedField) {\r\n const selectedField = _.find(selectedEntity.Fields, field => field.FieldId === attachedField.Id);\r\n this._selectedField(selectedField);\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n }\r\n }\r\n\r\n private OnFieldChange() {\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n } else {\r\n const translations = this.NameTranslations();\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().FieldName;\r\n this.SelectedName(defTrans);\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n }\r\n }\r\n\r\n ToggleUseFieldName() {\r\n this.UseFieldName(!this.UseFieldName());\r\n }\r\n\r\n UseFieldNameAsControlName() {\r\n let field = this._selectedField();\r\n if (field) {\r\n _.each(this.NameTranslations(), (translation) => {\r\n\r\n if (translation.Language.K_Language === -1) {\r\n translation.Translation = field.FieldName;\r\n }\r\n\r\n let fieldTranslation = _.find(field.Translations, (fieldTranslation) => {\r\n return fieldTranslation.Language.K_Language === translation.Language.K_Language;\r\n });\r\n if (fieldTranslation) {\r\n\r\n if (this.SelectedName() && this.SelectedName().Language.K_Language == fieldTranslation.Language.K_Language) {\r\n this.SelectedName().Translation = fieldTranslation.Translation;\r\n this.SelectedName.valueHasMutated();\r\n }\r\n\r\n translation.Translation = fieldTranslation.Translation;\r\n }\r\n });\r\n let translations = this.NameTranslations();\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().FieldName;\r\n this.SelectedName(defTrans);\r\n }\r\n }\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor} from \"./BaseControlEditor\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor'] = Template;\r\n\r\nexport class GridControlEditor extends BaseControlEditor {\r\n\tconstructor(control: IControl) {\r\n\t\tsuper(control);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/GridControlEditor';\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class InvoiceTable {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tPrimaryFieldId: number;\r\n\r\n\t@deserialize\r\n\tPrimaryFieldName: string;\r\n}\r\n\r\nexport class LifeStatusModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tMemo: string;\r\n\r\n\t@deserialize\r\n\tMemoTranslation: string;\r\n}\r\n\r\nexport class InvoiceType {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n TableId: number;\r\n\r\n GetName(): string {\r\n return this.TranslatedName ? this.TranslatedName : this.Name\r\n }\r\n}\r\n\r\nexport class InvoicingControlConfigOptions {\r\n\t@deserialize\r\n\tIssue: string;\r\n\r\n\t@deserializeAs(InvoiceTable)\r\n\tSourceTables: InvoiceTable[];\r\n\r\n\t@deserializeAs(LifeStatusModel)\r\n\tSourceLifeStatuses: LifeStatusModel[];\r\n\r\n\t@deserializeAs(InvoiceTable)\r\n\tDestinationTables: InvoiceTable[];\r\n\r\n\t@deserializeAs(InvoiceType)\r\n\tDestinationTypes: InvoiceType[];\r\n}","import {Request} from 'Core/Common/Request';\r\n\r\nexport class FinancialControlStore {\r\n\tstatic GetConfigOptions(subjectTypeId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/FormDesignerApi/GetInvoiceControlConfigOptions',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json'\r\n\t\t\t},\r\n\t\t\tparams: {subjectTypeId: subjectTypeId}\r\n\t\t});\r\n\t}\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\nimport {GenericDeserialize } from 'libs/cerialize';\r\n\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport { BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS } from \"../BaseControlEditor\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\n\r\nimport { AttachedFieldModel } from \"Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\n\r\nimport {\r\n\tInvoicingControlConfigOptions,\r\n\tInvoiceTable,\r\n\tInvoiceType,\r\n\tLifeStatusModel\r\n} from \"./Models/InvoicingControlConfigOptions\";\r\n\r\n\r\nimport { FinancialControlStore } from \"Core/Screens/DesignScreen/ControlEditor/Stores/Controls/FinancialControlStore\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor'] = Template;\r\n\r\nexport class InvoicingControlEditor extends BaseControlEditor {\r\n\tprivate _configIssue: string;\r\n\r\n\tprivate _sourceTables: KnockoutObservableArray<InvoiceTable>;\r\n\tprivate _selectedSourceTable: KnockoutObservable<InvoiceTable>;\r\n\r\n\tprivate _sourceLifeStatuses: KnockoutObservableArray<LifeStatusModel>;\r\n\tprivate _selectedSourceLifeStatus: KnockoutObservable<LifeStatusModel>;\r\n\r\n\tprivate _destinationTables: KnockoutObservableArray<InvoiceTable>;\r\n\tprivate _selectedDestinationTable: KnockoutObservable<InvoiceTable>;\r\n\r\n\tprivate _destinationTypes: KnockoutObservableArray<InvoiceType>;\r\n\tprivate _selectedDestinationType: KnockoutObservable<InvoiceType>;\r\n\r\n\tconstructor(control: IControl) {\r\n\t\tsuper(control);\r\n\r\n\t\tthis._sourceTables = ko.observableArray([]);\r\n\t\tthis._selectedSourceTable = ko.observable(null);\r\n\r\n\t\tthis._sourceLifeStatuses = ko.observableArray([]);\r\n\t\tthis._selectedSourceLifeStatus = ko.observable(null);\r\n\r\n\t\tthis._destinationTables = ko.observableArray([]);\r\n\t\tthis._selectedDestinationTable = ko.observable(null);\r\n\r\n\t\tthis._destinationTypes = ko.observableArray([]);\r\n\t\tthis._selectedDestinationType = ko.observable(null);\r\n\t}\r\n\r\n\tSave(): void {\r\n\t\tif (this._configIssue) {\r\n\t\t\tnew Notifier().Warning(this._configIssue);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst validationError = this.Validate();\r\n\t\tif (validationError) {\r\n\t\t\tnew Notifier().Warning(validationError);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst controlEditorModel = this.GetControlEditorModel();\r\n\t\tthis.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, { UpdateControlModel: controlEditorModel });\r\n\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tGetControlEditorModel() {\r\n\t\tconst controlEditorModel = super.GetControlEditorModel();\r\n\r\n\t\tconst sourceTable = this._selectedSourceTable();\r\n\t\tconst sourceField = new AttachedFieldModel({ Id: sourceTable.PrimaryFieldId, Name: sourceTable.PrimaryFieldName, EntityId: sourceTable.Id });\r\n\r\n\t\tconst destinationTable = this._selectedDestinationTable();\r\n\t\tcontrolEditorModel.EntityId = destinationTable.Id;\r\n\t\tcontrolEditorModel.EntityName = destinationTable.Name;\r\n\r\n\t\tconst destinationField = new AttachedFieldModel({ Id: destinationTable.PrimaryFieldId, Name: destinationTable.PrimaryFieldName, EntityId: destinationTable.Id });\r\n\t\tcontrolEditorModel.FieldId = destinationField.Id;\r\n\t\tcontrolEditorModel.FieldName = destinationField.Name;\r\n\r\n\t\tcontrolEditorModel.RecordLifeStatusId = this._selectedSourceLifeStatus().Id;\r\n\t\tcontrolEditorModel.DestinationTypeId = this._selectedDestinationType().Id;\r\n\t\tcontrolEditorModel.AttachedFields = [destinationField, sourceField];\r\n\r\n\t\tcontrolEditorModel.Icon = this.EditControlModel.Icon;\r\n\r\n\t\treturn controlEditorModel;\r\n\t}\r\n\r\n\tValidate() {\r\n\t\tconst validationError = super.Validate();\r\n\t\tif (validationError) {\r\n\t\t\treturn validationError;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedSourceTable()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_DATA_SOURCE;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedSourceLifeStatus()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_WAITING_FOR_INVOICE_LIFESTATUS;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedDestinationType()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_INVOICE_ENTITY;\r\n\t\t}\r\n\r\n\t\tif (!this._selectedDestinationType()) {\r\n\t\t\tthis.IsValid(false);\r\n\t\t\treturn this.Labels.PLEASE_SELECT_OUTPUT_RECORD_TYPE;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/FinancialControlEditor';\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement) {\r\n\t\tconst container = el[0];\r\n\t\tsuper.AfterRender(container);\r\n\r\n\t\tBlockUI.Block();\r\n\r\n\t\tthis.LoadData()\r\n .then(configOptionsResponse => {\r\n const configOptions = GenericDeserialize<InvoicingControlConfigOptions>(configOptionsResponse, InvoicingControlConfigOptions);\r\n this.ApplyConfigOptions(configOptions);\r\n })\r\n\t\t\t.always(() => BlockUI.Unblock());\r\n\t}\r\n\r\n\tprivate LoadData() {\r\n\t\tconst subjectTypeId = this.EditControl.GetForm().GetScreen().GetTableTypeId();\r\n\t\treturn FinancialControlStore.GetConfigOptions(subjectTypeId)\r\n\t}\r\n\r\n\tprivate ApplyConfigOptions(configOptions: InvoicingControlConfigOptions) {\r\n\t\tif (configOptions.Issue) {\r\n\t\t\tthis._configIssue = configOptions.Issue;\r\n\t\t\tnew Notifier().Warning(configOptions.Issue);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst controlModel = this.EditControl.GetModel();\r\n\t\tconst attachedFields = controlModel.Fields;\r\n\t\tconst recordLifeStatusId = controlModel.RecordLifeStatusId;\r\n\t\tconst destinationTypeId = controlModel.DestinationTypeId;\r\n\r\n\t\tconst defaultLifestatus = new LifeStatusModel();\r\n\t\tdefaultLifestatus.Id = null;\r\n\t\tdefaultLifestatus.Name = 'Select lifestatus';\r\n\r\n\t\tconst translatedSourceLifeStatus = configOptions.SourceLifeStatuses.find(t => t.TranslatedName !== null);\r\n\t\tif (translatedSourceLifeStatus) {\r\n\t\t\ttranslatedSourceLifeStatus.Name = translatedSourceLifeStatus.TranslatedName;\r\n\t\t}\r\n\r\n\t\tconfigOptions.SourceLifeStatuses.unshift(defaultLifestatus);\r\n\r\n\t\tthis._sourceTables(configOptions.SourceTables);\r\n\r\n\t\tconst selectedSourceTable = configOptions.SourceTables.find(table => _.any(attachedFields, field => field.EntityId === table.Id));\r\n\t\tthis._selectedSourceTable(selectedSourceTable);\r\n\r\n\t\tthis._sourceLifeStatuses(configOptions.SourceLifeStatuses);\r\n\r\n\t\tconst selectedSourceLifeStatus = configOptions.SourceLifeStatuses.find(lifeStatus => lifeStatus.Id === recordLifeStatusId);\r\n\t\tthis._selectedSourceLifeStatus(selectedSourceLifeStatus);\r\n\t\tthis._selectedSourceLifeStatus.subscribe(lifeStatus => this.EditControlModel.RecordLifeStatusId = lifeStatus.Id);\r\n\r\n\t\tthis._destinationTables(configOptions.DestinationTables);\r\n\r\n\t\tconst selectedDestinationTable = configOptions.DestinationTables.find(table => _.any(attachedFields, field => field.EntityId === table.Id));\r\n\t\tthis._selectedDestinationTable(selectedDestinationTable);\r\n\t\tthis._selectedDestinationTable.subscribe(destinationTable => this.UpdateDestinationTypes(destinationTable, configOptions), this);\r\n\r\n\t\tif(selectedDestinationTable) {\r\n\t\t\tconst destinationTypes = configOptions.DestinationTypes.filter(type => type.TableId === selectedDestinationTable.Id)\r\n\t\t\tthis._destinationTypes(destinationTypes);\r\n\r\n\t\t\tthis._selectedDestinationType(destinationTypes.find(type => type.Id === destinationTypeId));\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._selectedDestinationType(configOptions.DestinationTypes.find(type => type.Id === destinationTypeId));\r\n\t\t\tconst selectedDestinationTableId = this._selectedDestinationType()\r\n\t\t\t\t? this._selectedDestinationType().TableId\r\n\t\t\t\t: _.any(configOptions.DestinationTypes) ? configOptions.DestinationTypes[0].TableId : 0;\r\n\t\t\tconst destinationTypes = configOptions.DestinationTypes.filter(type => type.TableId === selectedDestinationTableId)\r\n\t\t\tthis._destinationTypes(destinationTypes);\r\n\t\t}\r\n\r\n\t\tthis._selectedDestinationType.subscribe(type => this.EditControlModel.DestinationTypeId = type.Id);\r\n\t}\r\n\r\n\tprivate UpdateDestinationTypes(destinationTable: InvoiceTable, configOptions: InvoicingControlConfigOptions) {\r\n\t\tconst destinationTypes = configOptions.DestinationTypes.filter(type => type.TableId === destinationTable.Id);\r\n\t\tthis._destinationTypes(destinationTypes);\r\n\t\tthis._selectedDestinationType(destinationTypes[0]);\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Source & Destination </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.DATA_SOURCE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _sourceTables, optionsText: 'Name', value: _selectedSourceTable\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.WAITING_FOR_INVOICING_LIFESTATUS --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _sourceLifeStatuses, optionsText: 'Name', value: _selectedSourceLifeStatus\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.INVOICE_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _destinationTables, optionsText: 'Name', value: _selectedDestinationTable\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.INVOICE_TYPE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _destinationTypes, optionsText: (item) => item.GetName(), value: _selectedDestinationType\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from \"./BaseControlEditor\";\r\nimport {DesignScreen} from \"Core/Screens/DesignScreen/DesignScreen\";\r\nimport {IconManager} from \"Core/Components/IconManager/IconManager\";\r\nimport {IconModel} from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor.html';\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor'] = Template;\r\n\r\nexport class GenericButtonControlEditor extends BaseControlEditor {\r\n\r\n private _labels = LABELS;\r\n private _iconModel = IconModel;\r\n private _icon: KnockoutObservable<IconModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n this._icon = ko.observable(control.GetIcon());\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/GenericButtonControlEditor';\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.Icon = this._icon();\r\n return controlEditorModel;\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n this.Close();\r\n }\r\n\r\n OpenIconManager() {\r\n const screen = this.Control.GetForm().GetScreen() as DesignScreen;\r\n const icons = screen.DesignModel.Icons;\r\n\r\n let iconManager = new IconManager(icons);\r\n iconManager.Show();\r\n\r\n iconManager.On('ICON_SELECTED', this, (eventArgs) => {\r\n this._icon(eventArgs.data.Icon);\r\n });\r\n }\r\n\r\n get Icon() {\r\n return this._icon();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group pull-left dbd-icon-place\\\"> <a class=\\\"icon-btn icon-btn-lg icon-manager-btn\\\" data-bind=\\\"click: OpenIconManager\\\"> <!-- ko if: Icon && Icon.Id--> <!-- ko ifnot: Icon.Image --> <i class=\\\"fa-5x fa-stack custom-color-option\\\" data-bind=\\\"text: !Icon.Id ? 'Select icon' : '', css: _iconModel.GetClasses(Icon.FontName, Icon.Name)\\\"></i> <!-- /ko --> <!-- ko if: Icon.Image--> <img class=\\\"img-responsive image-centered image-button\\\" data-bind=\\\"attr: {src: Icon.Image}\\\"> <!-- /ko --> <!-- /ko --> <!-- ko if: !Icon || !Icon.Id --> <i class=\\\"fa-5x fa-stack custom-color-option fa empty-icon\\\" data-bind=\\\"text: 'Select icon'\\\"></i> <!-- /ko --> </a> </div> <div class=\\\"form-group form-group-to-right\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n css: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\nimport {FieldControlEditor} from \"Core/Screens/DesignScreen/ControlEditor/Editors/FieldControlEditor\";\r\n\r\nexport class CurrencyControlEditor extends FieldControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n protected FilterEntities(entities: EntityModel[]) {\r\n let filteredEntities = [];\r\n\r\n for (let entity of entities) {\r\n const filteredFields = entity.Fields.filter(field => field.FieldTypeName === FIELD_TYPES.Currency);\r\n\r\n if (filteredFields.length > 0) {\r\n entity.Fields = filteredFields;\r\n filteredEntities.push(entity);\r\n }\r\n }\r\n\r\n return super.FilterEntities(filteredEntities);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nimport {BaseControlEditor, EVENTS} from \"./BaseControlEditor\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport {ILabelPosition} from \"./ControlEditor\";\r\nimport {LabelPositions} from \"../Enums/LabelPositions\";\r\n\r\nimport {EntityModel} from \"../Models/EntityModel\";\r\n\r\nimport {EntitiesStore} from \"../Stores/EntitiesStore\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor.html';\r\nimport {AttachedFieldModel} from '../../../../Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor'] = Template;\r\n\r\nexport class EntityControlEditor extends BaseControlEditor {\r\n protected LabelPositions: KnockoutObservableArray<ILabelPosition>;\r\n protected SelectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n\r\n protected Entities: KnockoutObservableArray<EntityModel>;\r\n protected SelectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitLabelPositions();\r\n this.InitEntities();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/EntityControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => this.PopulateEntities(entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n Validate(): string {\r\n const errorMessage = super.Validate();\r\n\r\n if (errorMessage) {\r\n this.IsValid(false);\r\n return errorMessage;\r\n }\r\n\r\n if (!this.SelectedEntity()) {\r\n this.IsValid(false);\r\n return 'Please, select entity';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n controlEditorModel.LabelPosName = this.SelectedLabelPosition().Title;\r\n controlEditorModel.LabelPos = this.SelectedLabelPosition().Value;\r\n\r\n const selectedEntity = this.SelectedEntity();\r\n if (selectedEntity) {\r\n controlEditorModel.EntityId = selectedEntity.EntityId;\r\n controlEditorModel.EntityName = selectedEntity.EntityName;\r\n }\r\n\r\n const selectedField = this.GetSelectedField();\r\n if (selectedField) {\r\n controlEditorModel.FieldId = selectedField.FieldId;\r\n }\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n protected InitLabelPositions() {\r\n this.LabelPositions = ko.observableArray([\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]},\r\n {Value: LabelPositions.Left, Title: LabelPositions[LabelPositions.Left]},\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.UpperMiddle, Title: LabelPositions[LabelPositions.UpperMiddle]},\r\n {Value: LabelPositions.UpperRight, Title: LabelPositions[LabelPositions.UpperRight]},\r\n {Value: LabelPositions.Right, Title: LabelPositions[LabelPositions.Right]},\r\n {Value: LabelPositions.LeftColon, Title: LabelPositions[LabelPositions.LeftColon]}\r\n ]);\r\n\r\n const selectedLabelPosition = _.find(this.LabelPositions(), item => item.Value === LabelPositions[this.EditControlModel.LabelPosition]);\r\n this.SelectedLabelPosition = ko.observable(selectedLabelPosition);\r\n }\r\n\r\n protected InitEntities() {\r\n this.Entities = ko.observableArray([]);\r\n this.SelectedEntity = ko.observable(null);\r\n }\r\n\r\n private GetSelectedField() {\r\n return this.SelectedEntity() && this.SelectedEntity().Fields.find(f => f.IsPrimaryKey());\r\n }\r\n\r\n protected BindEvents() {\r\n this.SelectedEntity.subscribe(entity => this.InitField(entity));\r\n }\r\n\r\n protected LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n });\r\n }\r\n\r\n protected PopulateEntities(entities: EntityModel[]) {\r\n const onlySubjectAcceptable = this.IsScreenOfType(ScreenTypes.EditScreen, ScreenTypes.ListScreen);\r\n\r\n if (onlySubjectAcceptable) {\r\n entities = entities.filter(entity => entity.EntityId === this.SubjectEntityId);\r\n }\r\n\r\n entities = _.uniq(entities, false, entity => entity.EntityId);\r\n\r\n this.Entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this.SelectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this.SelectedEntity(subjectEntity);\r\n }\r\n\r\n this.InitField(this.SelectedEntity());\r\n this.BindEvents();\r\n }\r\n\r\n protected InitField(entity: EntityModel) {\r\n const selectedField = this.GetSelectedField();\r\n if (!selectedField) {\r\n return;\r\n }\r\n\r\n let controlFieldModel = this.EditControl.GetFieldModel();\r\n if (!controlFieldModel) {\r\n controlFieldModel = new AttachedFieldModel();\r\n this.EditControl.GetModel().Fields.push(controlFieldModel);\r\n }\r\n\r\n controlFieldModel.EntityId = entity.EntityId;\r\n controlFieldModel.EntityName = entity.EntityName;\r\n\r\n controlFieldModel.Id = selectedField.FieldId;\r\n controlFieldModel.Name = selectedField.FieldName;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tenable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thasFocus: IsFocusedItem,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: LabelPositions, optionsText: 'Title', value: SelectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.ENTITY --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: Entities, optionsText: 'EntityName', value: SelectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport {EntityControlEditor} from \"./EntityControlEditor\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\n\r\nimport {EntityModel} from \"../Models/EntityModel\";\r\n\r\nexport class BasketControlEditor extends EntityControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n protected PopulateEntities(entities: EntityModel[]) {\r\n entities = _.uniq(entities, false, entity => entity.EntityId);\r\n\r\n this.Entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this.SelectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this.SelectedEntity(subjectEntity);\r\n }\r\n }\r\n}","import * as ko from 'knockout'\r\nimport * as _ from 'underscore';\r\n\r\nimport { BlockUI } from \"Core/Common/BlockUi\";\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\n\r\nimport { BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS } from \"../BaseControlEditor\";\r\nimport { IControl } from \"Core/Controls/IControl\";\r\nimport {EntitiesStore} from \"../../Stores/EntitiesStore\";\r\nimport {EntityModel} from \"../../Models/EntityModel\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor.html';\r\nimport {PlannerLevelEntityModel} from \"../../Models/PlannerLevelEntityModel\";\r\nimport {AttachedFieldModel} from \"../../../../../Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {FIELD_TYPES} from \"../../../../../Constant\";\r\nimport {IconModel} from \"../../../../../Controls/BaseControl/Models/IconModel\";\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor'] = Template;\r\n\r\nexport class PlannerLevelControlEditor extends BaseControlEditor {\r\n\r\n private _entities: KnockoutObservableArray<EntityModel>;\r\n private _selectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n private _leftBarSubEntities: KnockoutObservableArray<EntityModel>;\r\n private _selectedLeftBarSubEntity: KnockoutObservable<EntityModel>;\r\n\r\n private _rightBarSubEntities: KnockoutObservableArray<EntityModel>;\r\n private _selectedRightBarSubEntity: KnockoutObservable<EntityModel>;\r\n\r\n private _plannerLevelEntities : Array<PlannerLevelEntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this._leftBarSubEntities = ko.observableArray([]);\r\n this._selectedLeftBarSubEntity = ko.observable();\r\n\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable();\r\n\r\n this._rightBarSubEntities = ko.observableArray([]);\r\n this._selectedRightBarSubEntity = ko.observable();\r\n this._plannerLevelEntities = [];\r\n\r\n this._selectedEntity.subscribe((newValue) => {\r\n this._selectedRightBarSubEntity(null);\r\n this._selectedLeftBarSubEntity(null);\r\n if(newValue){\r\n let planerLevelEntity = _.find(this._plannerLevelEntities, (entity) =>{\r\n return entity.Entity.EntityId === newValue.EntityId;\r\n });\r\n if(planerLevelEntity){\r\n this._leftBarSubEntities(planerLevelEntity.SubEntities);\r\n this._rightBarSubEntities(planerLevelEntity.SubEntities);\r\n }\r\n }\r\n });\r\n }\r\n\r\n Save() {\r\n\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, { UpdateControlModel: controlEditorModel });\r\n\r\n this.Close();\r\n }\r\n\r\n GetControlEditorModel() {\r\n let controlEditorModel = super.GetControlEditorModel();\r\n\r\n let primaryField = _.find(this._selectedEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.PKey;\r\n });\r\n\r\n let primaryAttachedField = new AttachedFieldModel({ Id: primaryField.FieldId, Name: primaryField.FieldName, EntityId: this._selectedEntity().EntityId });\r\n let primaryIconModel = new IconModel();\r\n primaryIconModel.Name = this._selectedEntity().IconName;\r\n primaryIconModel.FontName = this._selectedEntity().FontName;\r\n primaryIconModel.Image = this._selectedEntity().GraphicalIcon;\r\n primaryIconModel.IsIcon = this._selectedEntity().GraphicalIcon == null;\r\n primaryIconModel.IsImage = !primaryIconModel.IsIcon;\r\n primaryAttachedField.EntityIcon = primaryIconModel;\r\n primaryAttachedField.EntityTypeName = this._selectedEntity().TypeName;\r\n primaryAttachedField.EntityName = this._selectedEntity().EntityName;\r\n primaryAttachedField.Sort = 0;\r\n\r\n let primaryLeftField = _.find(this._selectedLeftBarSubEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.PKey;\r\n });\r\n\r\n let primaryLeftAttachedField = new AttachedFieldModel({ Id: primaryLeftField.FieldId, Name: primaryLeftField.FieldName, EntityId: this._selectedLeftBarSubEntity().EntityId });\r\n let leftIconModel = new IconModel();\r\n leftIconModel.Name = this._selectedLeftBarSubEntity().IconName;\r\n leftIconModel.FontName = this._selectedLeftBarSubEntity().FontName;\r\n leftIconModel.Image = this._selectedLeftBarSubEntity().GraphicalIcon;\r\n leftIconModel.IsIcon = this._selectedLeftBarSubEntity().GraphicalIcon == null;\r\n leftIconModel.IsImage = !leftIconModel.IsIcon;\r\n primaryLeftAttachedField.EntityIcon = leftIconModel;\r\n primaryLeftAttachedField.EntityTypeName = this._selectedLeftBarSubEntity().TypeName;\r\n primaryLeftAttachedField.EntityName = this._selectedLeftBarSubEntity().EntityFullNameTranslation || this._selectedLeftBarSubEntity().EntityFullName;\r\n primaryLeftAttachedField.Sort = 10;\r\n\r\n let primaryRightField = _.find(this._selectedRightBarSubEntity().Fields, (field) => {\r\n return field.FieldTypeName === FIELD_TYPES.PKey;\r\n });\r\n\r\n let primaryRightAttachedField = new AttachedFieldModel({ Id: primaryRightField.FieldId, Name: primaryRightField.FieldName, EntityId: this._selectedRightBarSubEntity().EntityId });\r\n let rightIconModel = new IconModel();\r\n rightIconModel.Name = this._selectedRightBarSubEntity().IconName;\r\n rightIconModel.FontName = this._selectedRightBarSubEntity().FontName;\r\n rightIconModel.Image = this._selectedRightBarSubEntity().GraphicalIcon;\r\n rightIconModel.IsIcon = this._selectedRightBarSubEntity().GraphicalIcon == null;\r\n rightIconModel.IsImage = !rightIconModel.IsIcon;\r\n primaryLeftAttachedField.EntityIcon = rightIconModel;\r\n primaryRightAttachedField.EntityTypeName = this._selectedRightBarSubEntity().TypeName;\r\n primaryRightAttachedField.EntityName = this._selectedRightBarSubEntity().EntityFullNameTranslation || this._selectedLeftBarSubEntity().EntityFullName;\r\n primaryRightAttachedField.Sort = 20;\r\n\r\n controlEditorModel.AttachedFields = [primaryAttachedField, primaryLeftAttachedField, primaryRightAttachedField];\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n GetSubEntity(entityModel: PlannerLevelEntityModel, fieldId: number){\r\n return _.find(entityModel.SubEntities, (sub) => {\r\n return !!_.find(sub.Fields, (field) => {\r\n return field.FieldId === fieldId;\r\n });\r\n });\r\n }\r\n\r\n PopulateData(){\r\n let entities = _.map(this._plannerLevelEntities, (entity) => {\r\n return entity.Entity;\r\n });\r\n\r\n this._entities(entities);\r\n\r\n let entityField = this.EditControlModel.Fields[0];\r\n\r\n if(entityField){\r\n\r\n let subjectEntity = _.find(this._plannerLevelEntities, (entity) => {\r\n return entity.Entity.EntityId == entityField.EntityId;\r\n });\r\n\r\n if(subjectEntity) {\r\n\r\n this._selectedEntity(subjectEntity.Entity);\r\n\r\n let leftBarField = this.EditControlModel.Fields[1];\r\n\r\n if (leftBarField) {\r\n let leftBarSubEntityView = this.GetSubEntity(subjectEntity, leftBarField.Id);\r\n this._selectedLeftBarSubEntity(leftBarSubEntityView);\r\n }\r\n\r\n let rightBarField = this.EditControlModel.Fields[2];\r\n\r\n if (rightBarField) {\r\n let rightBarSubEntityView = this.GetSubEntity(subjectEntity, rightBarField.Id);\r\n this._selectedRightBarSubEntity(rightBarSubEntityView);\r\n }\r\n }\r\n }\r\n }\r\n\r\n LoadData() {\r\n BlockUI.Block();\r\n EntitiesStore.GetPlanerLevelEntities({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n }).always(()=>{\r\n BlockUI.Unblock();\r\n }).then((entities) => {\r\n this._plannerLevelEntities = entities;\r\n this.PopulateData();\r\n });\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedEntity()) {\r\n this.IsValid(false);\r\n return 'Please select entity';\r\n }\r\n\r\n if (!this._selectedLeftBarSubEntity()) {\r\n this.IsValid(false);\r\n return 'Please select left bar sub entity';\r\n }\r\n\r\n if (!this._selectedRightBarSubEntity()) {\r\n this.IsValid(false);\r\n return 'Please select right bar sub entity';\r\n }\r\n\r\n }\r\n\r\n GetTemplateName(): string {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/PlannerLevelControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n this.LoadData();\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'EntityName', value: _selectedEntity\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Left bar view </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _leftBarSubEntities, optionsText: 'EntityName', value: _selectedLeftBarSubEntity\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Right bar view </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _rightBarSubEntities, optionsText: 'EntityName', value: _selectedRightBarSubEntity\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Name.replace(' ', '')}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Name.replace(' ', '')}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {GanttChartDesignOptions} from '../Models/GanttChartDesignOptions';\r\n\r\nexport class GanttChartControlEditorStore {\r\n GetDesignOptions(entityId: number): P.Promise<GanttChartDesignOptions> {\r\n const deferred = P.defer<GanttChartDesignOptions>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/GanttChartApi/GetGanttChartControlConfig',\r\n type: 'GET',\r\n dataType: 'json',\r\n },\r\n params: {\r\n subjectTableId: entityId\r\n }\r\n })\r\n .then(options => deferred.resolve(options))\r\n .fail(err => deferred.reject(this.GetResponseError(err, 'Error getting design options')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\n\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from '../BaseControlEditor';\r\n\r\nimport {GanttChartControlEditorStore} from './Stores/GanttChartControlEditorStore';\r\nimport {GanttChartDesignOptions} from './Models/GanttChartDesignOptions';\r\n\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor.html';\r\nimport {ChartControlEditorStore} from '../ChartControl/Stores/ChartControlEditorStore';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor'] = Template;\r\n\r\nexport class GanttChartControlEditor extends BaseControlEditor {\r\n private _control: ComplexControl;\r\n private _store: GanttChartControlEditorStore;\r\n\r\n private _selectedEntity: any;\r\n\r\n private _ganttViews: KnockoutObservableArray<any>;\r\n private _selectedGanttView: KnockoutObservable<any>;\r\n\r\n private _resourcesViews: KnockoutObservableArray<any>;\r\n private _selectedResourcesView: KnockoutObservable<any>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this._control = this.EditControl as ComplexControl;\r\n this._store = new GanttChartControlEditorStore();\r\n\r\n this._selectedEntity = {Id: this.GetSubjectEntityId(), Name: this.GetSubjectEntityName()}\r\n\r\n this._ganttViews = ko.observableArray([]);\r\n this._selectedGanttView = ko.observable(null);\r\n\r\n this._resourcesViews = ko.observableArray([]);\r\n this._selectedResourcesView = ko.observable(null);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/GanttChartControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n this.LoadData();\r\n }\r\n\r\n Save() {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedGanttView()) {\r\n this.IsValid(false);\r\n return 'Please select Gantt View';\r\n }\r\n\r\n if (!this._selectedResourcesView()) {\r\n this.IsValid(false);\r\n return 'Please select Resources View';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n this._control.AutoSelectFieldsFromStruct([this._selectedGanttView()]);\r\n\r\n const resourcesViewPkey = _.find(this._selectedResourcesView().Fields, (field: any) => field.Type === FIELD_TYPES.PKey);\r\n const fieldSort = this._control.Model.Fields[this._control.Model.Fields.length - 1].Sort + 10;\r\n const resourcesAttachedField = this.CreateAttachedField(this._selectedResourcesView(), resourcesViewPkey, fieldSort);\r\n\r\n controlEditorModel.AttachedFields.push(...this._control.Model.Fields, resourcesAttachedField);\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block();\r\n\r\n this._store.GetDesignOptions(this.GetSubjectEntityId())\r\n .then(options => this.PopulateData(options))\r\n .fail(err => new Notifier().Failed(err.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private PopulateData(options: GanttChartDesignOptions) {\r\n this._ganttViews(options.GanttViews);\r\n this._resourcesViews(options.ResourcesViews);\r\n\r\n const attachedSubTableViews = _.chain(this.EditControlModel.Fields).map(f => f.EntityId).uniq().value();\r\n\r\n if (attachedSubTableViews && attachedSubTableViews.length) {\r\n const selectedGanttView = _.find(options.GanttViews, t => t.Id === attachedSubTableViews[0]);\r\n this._selectedGanttView(selectedGanttView);\r\n\r\n const selectedResourcesView = _.find(options.ResourcesViews, t => t.Id === attachedSubTableViews[1]);\r\n this._selectedResourcesView(selectedResourcesView);\r\n }\r\n }\r\n\r\n private CreateAttachedField(subTableView: any, field: any, sort: number) {\r\n const attachedField = new AttachedFieldModel({ Id: field.Id, Name: field.Name, EntityId: subTableView.Id});\r\n attachedField.EntityTypeName = subTableView.Type;\r\n attachedField.EntityName = subTableView.Name;\r\n attachedField.Sort = 10;\r\n\r\n return attachedField;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n css: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <input type=\\\"text\\\" data-bind=\\\"value: _selectedEntity.Name\\\" class=\\\"form-control\\\" disabled=\\\"disabled\\\"> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Gantt View </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _ganttViews, optionsText: 'Name', value: _selectedGanttView\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"> Resources View </legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _resourcesViews, optionsText: 'Name', value: _selectedResourcesView\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Name.replace(' ', '')}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Name.replace(' ', '')}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nimport {ProductConfiguratorDesignOptions} from '../Models/ProductConfiguratorDesignOptions';\r\n\r\nexport class ProductConfiguratorControlEditorStore {\r\n GetDesignOptions(entityId: number): P.Promise<ProductConfiguratorDesignOptions> {\r\n const deferred = P.defer<ProductConfiguratorDesignOptions>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ProductConfiguratorApi/GetDesignOptions',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {entityId}\r\n })\r\n .then(options => deferred.resolve(options))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error reading design options')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout'\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {ProductConfigurator} from 'Core/Controls/ProductConfigurator/ProductConfigurator';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport {BaseControlEditor} from '../BaseControlEditor';\r\nimport {ControlEditorModel} from '../../Models/ControlEditorModel';\r\n\r\nimport {BaseProperty} from \"Core/GeneralProperties/Managers/BaseProperty\";\r\nimport {BaseSelectProperty} from \"Core/GeneralProperties/Managers/BaseSelectProperty/BaseSelectProperty\";\r\n\r\nimport {ProductConfiguratorControlEditorStore} from './Stores/ProductConfiguratorControlEditorStore';\r\nimport {ProductsEntity, ProductsView} from './Models/ProductConfiguratorDesignOptions';\r\n\r\nimport Template\r\n from 'Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor'] = Template;\r\n\r\nexport class ProductConfiguratorControlEditor extends BaseControlEditor {\r\n private _control: ProductConfigurator;\r\n private _store: ProductConfiguratorControlEditorStore;\r\n\r\n private _tables: KnockoutObservableArray<ProductsEntity>;\r\n\r\n private _selectedTable: KnockoutObservable<ProductsEntity>;\r\n private _selectedView: KnockoutObservable<ProductsView>;\r\n private _useView: KnockoutObservable<boolean>;\r\n\r\n private _selectedProductDescription: KnockoutObservable<any>;\r\n private _useProductDescription: KnockoutObservable<boolean>;\r\n\r\n constructor(control: ProductConfigurator) {\r\n super(control);\r\n\r\n this._control = this.EditControl as ProductConfigurator;\r\n this._store = new ProductConfiguratorControlEditorStore();\r\n\r\n this._tables = ko.observableArray([]);\r\n\r\n this._selectedTable = ko.observable(null);\r\n this._selectedView = ko.observable(null);\r\n this._useView = ko.observable(false);\r\n\r\n this._selectedProductDescription = ko.observable(null);\r\n this._useProductDescription = ko.observable(false);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ProductConfiguratorControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n this.LoadData()\r\n }\r\n\r\n GetControlEditorModel(): ControlEditorModel {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n this._control.AutoSelectFieldsFromStruct([this._selectedTable()]);\r\n\r\n if (this._useView()) {\r\n const attachedFields = this._control.Model.Fields;\r\n const viewField = this._selectedView().Fields.find(f => f.IsPrimaryKey);\r\n const viewFieldSort = attachedFields[attachedFields.length - 1].Sort + 10;\r\n\r\n const attachedField = this.CreateAttachedField(this._selectedView(), viewField, viewFieldSort);\r\n this._control.Model.Fields.push(attachedField);\r\n }\r\n\r\n if (this._useProductDescription()) {\r\n const attachedFields = this._control.Model.Fields;\r\n const descriptionFieldSort = attachedFields[attachedFields.length - 1].Sort + 10;\r\n\r\n const attachedField = this.CreateAttachedField(this._selectedTable().LinkEntity, this._selectedProductDescription(), descriptionFieldSort);\r\n this._control.Model.Fields.push(attachedField);\r\n }\r\n\r\n controlEditorModel.AttachedFields.push(...this._control.Model.Fields);\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedTable()) {\r\n this.IsValid(false);\r\n return 'Please, select table'\r\n }\r\n\r\n if (this._useView() && !this._selectedView()) {\r\n this.IsValid(false);\r\n return 'Please, select sub table view'\r\n }\r\n\r\n if (this._useProductDescription() && !this._selectedProductDescription()) {\r\n this.IsValid(false);\r\n return 'Please, select description'\r\n }\r\n\r\n return null;\r\n }\r\n\r\n CheckForDescriptionFields() {\r\n return this._selectedTable() && this._selectedTable().LinkEntity\r\n && _.any(this._selectedTable().LinkEntity.Fields, field => field.IsText);\r\n }\r\n\r\n GetDescriptionFields() {\r\n return _.filter(this._selectedTable().LinkEntity.Fields, field => field.IsText);\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block();\r\n\r\n this._store.GetDesignOptions(this.GetSubjectEntityId())\r\n .then(options => this.PopulateData(options.Entities))\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n\r\n\r\n let annotation = this.GeneralProperties.GetPropertyManager('Annotations');\r\n let showAnnotations = this.GeneralProperties.GetPropertyManager('ShowAnnotations');\r\n\r\n if(annotation && showAnnotations){\r\n showAnnotations.SetEnabled(annotation.Value());\r\n\r\n if(!annotation.Value()){\r\n showAnnotations.Value(annotation.Value());\r\n }\r\n\r\n annotation.Value.subscribe((val)=>{\r\n if(!val){\r\n showAnnotations.Value(val);\r\n }\r\n \r\n showAnnotations.SetEnabled(val);\r\n });\r\n }\r\n\r\n let enableAlternativePriceCalculation = this.GeneralProperties.GetPropertyManager('EnableAlternativePriceCalculation');\r\n let alternativePriceCalculationRule = this.GeneralProperties.GetPropertyManager('AlternativePriceCalculationRule');\r\n\r\n if (enableAlternativePriceCalculation && alternativePriceCalculationRule) {\r\n alternativePriceCalculationRule.SetEnabled(enableAlternativePriceCalculation.Value());\r\n alternativePriceCalculationRule.WarningMessage = this.Labels.THE_TRANSLATION_ALTERNATIVE_PRICE_WITH_CODE_WILL_BE_USED_ON_PCF\r\n .replace('{CODE}', '1467');\r\n\r\n if (!enableAlternativePriceCalculation.Value()) {\r\n alternativePriceCalculationRule.Value(null);\r\n }\r\n\r\n enableAlternativePriceCalculation.Value.subscribe((val)=>{\r\n if (!val) {\r\n alternativePriceCalculationRule.Value(null);\r\n }\r\n\r\n alternativePriceCalculationRule.SetEnabled(val);\r\n });\r\n }\r\n\r\n const level1BaseProperty = this.GeneralProperties.GetPropertyManager('Level1');\r\n const level1 = level1BaseProperty && level1BaseProperty as BaseSelectProperty;\r\n\r\n const level2BaseProperty = this.GeneralProperties.GetPropertyManager('Level2');\r\n const level2 = level2BaseProperty && level2BaseProperty as BaseSelectProperty;\r\n\r\n const lockLevel1 = this.GeneralProperties.GetPropertyManager('LockLevel1');\r\n\r\n const self = this;\r\n\r\n if (level1 && level2 && lockLevel1) {\r\n level1.Value.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n\r\n level2.Value.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n\r\n level1.IsInitiated.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n\r\n level2.IsInitiated.subscribe(()=>{\r\n self.SetLockLevel1(lockLevel1, level1, level2);\r\n });\r\n }\r\n }\r\n\r\n SetLockLevel1(lockLevel1: BaseProperty, level1: BaseSelectProperty, level2: BaseSelectProperty) {\r\n const isLevel1Initiated = level1.IsInitiated();\r\n const isLevel2Initiated = level2.IsInitiated();\r\n\r\n if (!isLevel1Initiated || !isLevel2Initiated) {\r\n lockLevel1.SetEnabled(false);\r\n return;\r\n }\r\n\r\n const isLevel1Set = !!(level1 && level1.Value() && level1.Value().Value);\r\n const isLevel2Set = !!(level2 && level2.Value() && level2.Value().Value);\r\n\r\n if (!isLevel1Set || !isLevel2Set) {\r\n lockLevel1.Value(false);\r\n }\r\n\r\n lockLevel1.SetEnabled(isLevel1Set && isLevel2Set);\r\n }\r\n\r\n private PopulateData(entities: ProductsEntity[]) {\r\n this._tables(entities);\r\n\r\n const attachedFields = this.EditControlModel.Fields;\r\n\r\n if (attachedFields.length > 0) {\r\n const entityId = attachedFields[0].EntityId;\r\n\r\n for (let entity of entities) {\r\n if (entity.Id === entityId) {\r\n this._selectedTable(entity);\r\n break;\r\n }\r\n }\r\n\r\n if (!this._selectedTable()) {\r\n return;\r\n }\r\n\r\n const lastField = attachedFields[attachedFields.length - 1];\r\n if (lastField.EntityTypeName === TABLE_TYPES.Link) {\r\n this.PopulateProductDescription(lastField);\r\n\r\n const viewField = attachedFields[attachedFields.length - 2];\r\n if (viewField.EntityTypeName === TABLE_TYPES.Sub) {\r\n this.PopulateProductView(viewField);\r\n }\r\n }\r\n else if (lastField.EntityTypeName === TABLE_TYPES.Sub) {\r\n this.PopulateProductView(lastField);\r\n }\r\n }\r\n }\r\n\r\n private PopulateProductView(viewField: AttachedFieldModel){\r\n for (let view of this._selectedTable().Views) {\r\n if (view.Id === viewField.EntityId) {\r\n this._selectedView(view);\r\n this._useView(true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private PopulateProductDescription(descriptionField: AttachedFieldModel){\r\n if(!this.CheckForDescriptionFields) {\r\n return;\r\n }\r\n\r\n for (let description of this.GetDescriptionFields()) {\r\n if (description.Id === descriptionField.Id) {\r\n this._selectedProductDescription(description);\r\n this._useProductDescription(true);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n private CreateAttachedField(table: any, field: any, sort: number) {\r\n const attachedField = new AttachedFieldModel({ Id: field.Id, Name: field.Name, EntityId: table.Id });\r\n\r\n attachedField.EntityId = table.Id;\r\n attachedField.EntityTypeName = table.Type;\r\n attachedField.EntityName = table.Name;\r\n attachedField.Sort = sort;\r\n\r\n return attachedField;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n css: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _tables, optionsText: 'Name', value: _selectedTable\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <!--ko if: _selectedTable() && _selectedTable().Views.length > 0--> <div class=\\\"form-group\\\"> <label> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _useView\\\"> Use view </label> <div> <select data-bind=\\\"enable: _useView, options: _selectedTable().Views, optionsText: 'Name', value: _selectedView\\\" class=\\\"form-control\\\" name=\\\"subEntityId\\\"></select> </div> </div> <!--/ko--> <!--ko if: CheckForDescriptionFields() --> <div class=\\\"form-group\\\"> <label> <input type=\\\"checkbox\\\" data-bind=\\\"checked: _useProductDescription\\\"> <!-- ko text: Labels.USE_DESCRIPTION --><!-- /ko --> </label> <div> <select data-bind=\\\"enable: _useProductDescription, options: GetDescriptionFields(), optionsText: 'Name', value: _selectedProductDescription\\\" class=\\\"form-control\\\" name=\\\"subEntityId\\\"></select> </div> </div> <!--/ko--> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from \"underscore\";\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {EntitiesStore} from \"../Stores/EntitiesStore\";\r\nimport {LabelPositions} from \"../Enums/LabelPositions\";\r\nimport {TableWithImagesModel} from \"../Models/TableWithImagesModel\";\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from \"./BaseControlEditor\";\r\nimport {ILabelPosition} from \"./ControlEditor\";\r\n\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {ImageFieldModel} from \"../Models/ImageFieldModel\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor.html';\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n ENTITY_SELECTED: 'ENTITY_SELECTED',\r\n FIELD_SELECTED: 'FIELD_SELECTED'\r\n};\r\n\r\nexport class SignatureControlEditor extends BaseControlEditor {\r\n private _labelPositions: KnockoutObservableArray<ILabelPosition>;\r\n private _selectedLabelPosition: KnockoutObservable<ILabelPosition>;\r\n\r\n private _fields: KnockoutObservableArray<ImageFieldModel>;\r\n private _selectedField: KnockoutObservable<ImageFieldModel>;\r\n\r\n private _entities: KnockoutObservableArray<TableWithImagesModel>;\r\n private _selectedEntity: KnockoutObservable<TableWithImagesModel>;\r\n\r\n constructor(control: IControl){\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/SignatureControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => {\r\n this.PopulateEntities(entities)\r\n })\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n LoadData(){\r\n return EntitiesStore.GetSignatureEntities({\r\n // EntityId: this.GetSubjectEntityId()\r\n SubjectTableId: this.GetSubjectEntityId()\r\n });\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedField()) {\r\n this.IsValid(false);\r\n return 'Please, select field';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.LabelPosName = this._selectedLabelPosition().Title;\r\n controlEditorModel.LabelPos = this._selectedLabelPosition().Value;\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.Id;\r\n controlEditorModel.EntityName = selectedEntity.Name;\r\n\r\n const selectedField = this._selectedField();\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n // controlEditorModel.FieldNameTranslation = selectedField.NameTranslated;\r\n // controlEditorModel.ValTableId = selectedField.ValTableId;\r\n // controlEditorModel.ValFieldId = selectedField.ValFieldId;\r\n\r\n controlEditorModel.UseFieldName = this.UseFieldName();\r\n if (controlEditorModel.UseFieldName) {\r\n controlEditorModel.Name = selectedField.Name;\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n return controlEditorModel;\r\n }\r\n\r\n FieldSelectorAfterRender(option, item) {\r\n ko.applyBindingsToNode(option, {\r\n // has removed the functionality of the \"disabled/enabled of Fields\"\r\n enableAttr: true,\r\n css: {\r\n disabled: false\r\n }\r\n }, item);\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n\r\n this.InitLabelPositions();\r\n this.InitEntities();\r\n }\r\n\r\n protected BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, eventArgs => this.OnEntityChange());\r\n this.On(EVENTS.FIELD_SELECTED, this, () => this.OnFieldChange());\r\n\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n\r\n this.UseFieldName.subscribe((newValue) => {\r\n if (newValue) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n });\r\n }\r\n\r\n OnSelectField(selectedField) {\r\n this.Trigger(EVENTS.FIELD_SELECTED, selectedField);\r\n }\r\n\r\n InitLabelPositions(){\r\n this._labelPositions = ko.observableArray([\r\n {Value: LabelPositions.UpperLeft, Title: LabelPositions[LabelPositions.UpperLeft]},\r\n {Value: LabelPositions.NoLabel, Title: LabelPositions[LabelPositions.NoLabel]}\r\n\r\n ]);\r\n\r\n const selectedLabelPosition = _.find(this._labelPositions(), item => item.Value === LabelPositions[this.EditControlModel.LabelPosition]);\r\n this._selectedLabelPosition = ko.observable(selectedLabelPosition);\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n\r\n this._fields = ko.observableArray([]);\r\n this._selectedField = ko.observable(null);\r\n }\r\n\r\n PopulateEntities(entities: TableWithImagesModel[]){\r\n entities = _.uniq(entities, false, entity => entity.Id);\r\n\r\n this._entities(entities);\r\n // this.MarkAcceptableFields(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.Id === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.Id === this.SubjectEntityId);\r\n this._selectedEntity(subjectEntity);\r\n }\r\n }\r\n\r\n // private MarkAcceptableFields(entities: TableWithModel[]) {\r\n // const usedFields = this.FindUsedFields();\r\n // const attachedField = _.first(this.EditControlModel.Fields);\r\n // //Disable used fields\r\n // entities.forEach(entity => {\r\n // entity.ImageFields\r\n // .filter(field => (!attachedField || field.Id !== attachedField.Id) && _.contains(usedFields, field.Id))\r\n // .forEach(field => field.IsEnabled = false);\r\n // });\r\n // }\r\n\r\n // private FindUsedFields() {\r\n // return this.GetDesignScreen().Controls\r\n // .filter(control => control.HasOneField())\r\n // .map(control => control.GetFieldModel().Id);\r\n // }\r\n\r\n private OnEntityChange() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n this._fields(selectedEntity.ImageFields);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n if (attachedField) {\r\n const selectedField = _.find(selectedEntity.ImageFields, field => field.Id === attachedField.Id);\r\n this._selectedField(selectedField);\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n }\r\n }\r\n\r\n private OnFieldChange() {\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n } else {\r\n const translations = this.NameTranslations();\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n }\r\n\r\n\r\n }\r\n\r\n ToggleUseFieldName() {\r\n this.UseFieldName(!this.UseFieldName());\r\n }\r\n\r\n UseFieldNameAsControlName() {\r\n let field = this._selectedField();\r\n if (field) {\r\n _.each(this.NameTranslations(), (translation) => {\r\n\r\n if (translation.Language.K_Language === -1) {\r\n translation.Translation = field.Name;\r\n }\r\n\r\n let fieldTranslation = _.find(field.NameTranslations, (fieldTranslation) => {\r\n return fieldTranslation.Language.K_Language === translation.Language.K_Language;\r\n });\r\n if (fieldTranslation) {\r\n\r\n if (this.SelectedName() && this.SelectedName().Language.K_Language == fieldTranslation.Language.K_Language) {\r\n this.SelectedName().Translation = fieldTranslation.Translation;\r\n this.SelectedName.valueHasMutated();\r\n }\r\n\r\n translation.Translation = fieldTranslation.Translation;\r\n }\r\n });\r\n let translations = this.NameTranslations();\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n }\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName(),\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <label class=\\\"control-label\\\"><!-- ko text: Labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n 'fa-toggle-off': !UseFieldName(),\\r\\n 'fa-toggle-on': UseFieldName()\\r\\n }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _labelPositions, optionsText: 'Title', value: _selectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n </textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'Name', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.FIELD --><!-- /ko --> </label> <div data-bind=\\\"if: _selectedEntity\\\"> <select data-bind=\\\"options: _fields, optionsText: 'Name',\\r\\n optionsAfterRender: FieldSelectorAfterRender,\\r\\n value: _selectedField,\\r\\n enableAttr: _fields().length > 0,\\r\\n event: { change: $data.OnSelectField.bind($data, $data) }\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {EntityControlEditor} from '../EntityControlEditor';\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport {EntityModel} from '../../Models/EntityModel';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor'] = Template;\r\n\r\nexport class BookControlEditor extends EntityControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/BookControlEditor';\r\n }\r\n\r\n protected BindEvents() {\r\n super.BindEvents();\r\n this.SelectedEntity.subscribe(() => {\r\n this.ResetSelectOnlyProperty();\r\n });\r\n }\r\n\r\n protected PopulateEntities(entities: EntityModel[]) {\r\n entities = entities.filter(e => e.TypeName === TABLE_TYPES.Entity);\r\n\r\n this.Entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this.SelectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.EntityId === this.SubjectEntityId);\r\n this.SelectedEntity(subjectEntity);\r\n }\r\n\r\n this.InitField(this.SelectedEntity());\r\n this.BindEvents();\r\n\r\n if (!attachedEntity) {\r\n this.ResetSelectOnlyProperty();\r\n }\r\n }\r\n\r\n private ResetSelectOnlyProperty() {\r\n this.EditControl.GeneralProperties.ResetProperty('SelectOnly');\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName(),\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group labelPosition-block\\\"> <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\"> <!-- ko text: Labels.LABEL_POSITION --><!-- /ko --> </label> <div> <select data-bind=\\\"options: LabelPositions, optionsText: 'Title', value: SelectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n </textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.ENTITY --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: Entities, optionsText: 'EntityName', value: SelectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor} from \"./BaseControlEditor\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor.html';\r\nimport {TabSecurityDisplayView} from \"../../../../GeneralProperties/Managers/TabSecurity/Views/DisplayView/TabSecurityDisplayView\";\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor'] = Template;\r\n\r\nexport class TabPageControlEditor extends BaseControlEditor {\r\n\r\n private readonly _displayView: KnockoutObservable<TabSecurityDisplayView>;\r\n\tconstructor(control: IControl) {\r\n\t\tsuper(control);\r\n this._displayView = ko.observable(null);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/TabPageControlEditor';\r\n\t}\r\n\r\n get GeneralProperties() {\r\n return this.EditControl.GeneralProperties;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default tabPage\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"click: Toggle, class: Expanded() ? '' : 'collapsed'\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\"> <!-- ko text: Name --><!-- /ko --> <!-- ko foreach: Properties --> <!-- ko with: _propertyManager --> <!--ko with: _displayView --> <!--ko foreach: _restrictionsIcons --> <i data-bind=\\\"css: $data.IconName\\\" class=\\\"restriction-icon fa\\\"></i> <!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </a> </h4> </div> <div data-bind=\\\"class: Expanded() ? '' : 'collapse', css: { height: Expanded() ? '' : '0'}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {BaseControlEditor} from '../BaseControlEditor';\r\n\r\nimport {EntityModel} from '../../Models/EntityModel';\r\nimport {EntitiesStore} from '../../Stores/EntitiesStore';\r\n\r\nimport {EVENTS} from '../FieldControlEditor';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor'] = Template;\r\n\r\nexport class SpreadsheetControlEditor extends BaseControlEditor {\r\n protected _entities: KnockoutObservableArray<EntityModel>;\r\n protected _selectedEntity: KnockoutObservable<EntityModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/SpreadsheetControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0]\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => this.PopulateEntities(entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.EntityId;\r\n controlEditorModel.EntityName = selectedEntity.EntityName;\r\n\r\n const selectedField = this.EditControl.GetFieldModel();\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n controlEditorModel.FieldNameTranslation = selectedField.FieldNameTranslation;\r\n\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n LoadData() {\r\n return EntitiesStore.Get({\r\n EntityId: this.GetSubjectEntityId(),\r\n TableTypeId: this.GetSubjectTableTypeId()\r\n });\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n this.InitEntities();\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n }\r\n\r\n private PopulateEntities(entities: EntityModel[]) {\r\n entities = _.chain(entities)\r\n .filter(entity => entity.TypeName == TABLE_TYPES.Sub && _.any(entity.Fields, f => f.FieldName === 'K_SEQ'))\r\n .uniq(false, entity => entity.EntityId)\r\n .value();\r\n\r\n this._entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.EntityId === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n this.UpdateField();\r\n\r\n if (this._selectedEntity()) {\r\n this.ResetDimensions();\r\n }\r\n }\r\n\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, () => this.OnEntityChange());\r\n }\r\n\r\n private OnEntityChange() {\r\n this.UpdateField();\r\n this.ResetDimensions();\r\n }\r\n\r\n private UpdateField() {\r\n if (!this._selectedEntity()) {\r\n return;\r\n }\r\n\r\n const primaryKey = this._selectedEntity().Fields.find(field => field.IsPrimaryKey() && field.FieldName !== 'K_SEQ');\r\n\r\n let fieldModel = this.EditControl.GetFieldModel();\r\n\r\n if (!fieldModel) {\r\n fieldModel = new AttachedFieldModel({ Id: primaryKey.FieldId, Name: primaryKey.FieldName, EntityId: this._selectedEntity().EntityId });\r\n this.EditControl.GetModel().Fields.push(fieldModel);\r\n } else {\r\n fieldModel.Id = primaryKey.FieldId;\r\n fieldModel.Name = primaryKey.FieldName;\r\n fieldModel.EntityId = this._selectedEntity().EntityId;\r\n }\r\n }\r\n\r\n private ResetDimensions() {\r\n this.GeneralProperties.ResetProperty('Dimensions');\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t</textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'EntityName', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {TABLE_TYPES} from 'Core/Constant';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {ILabelPosition} from '../ControlEditor';\r\n\r\nimport {EntitiesStore} from 'Core/Screens/DesignScreen/ControlEditor/Stores/EntitiesStore';\r\nimport {LabelPositions} from 'Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions';\r\n\r\nimport {TableWithImagesModel} from '../../Models/TableWithImagesModel';\r\nimport {ImageFieldModel} from '../../Models/ImageFieldModel';\r\n\r\nimport {BaseControlEditor, EVENTS as BASE_CONTROL_EDITOR_EVENTS} from '../BaseControlEditor';\r\n\r\nimport {EVENTS} from '../SignatureControlEditor';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor'] = Template;\r\n\r\nexport class ImageControlEditor extends BaseControlEditor {\r\n private _fields: KnockoutObservableArray<ImageFieldModel>;\r\n private _selectedField: KnockoutObservable<ImageFieldModel>;\r\n\r\n private _entities: KnockoutObservableArray<TableWithImagesModel>;\r\n private _selectedEntity: KnockoutObservable<TableWithImagesModel>;\r\n\r\n private _uncheckShowAnnotations: KnockoutObservable<boolean>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n this.BindEvents();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ImageControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this.LoadData()\r\n .then(entities => {\r\n this.PopulateEntities(entities);\r\n this.EnableOrDisableShowAnnotations(container);\r\n })\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n LoadData() {\r\n return EntitiesStore.GetImageEntities({\r\n SubjectTableId: this.GetSubjectEntityId()\r\n });\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(BASE_CONTROL_EDITOR_EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n const validationError = super.Validate();\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedField()) {\r\n this.IsValid(false);\r\n return 'Please, select field';\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n const selectedEntity = this._selectedEntity();\r\n controlEditorModel.EntityId = selectedEntity.Id;\r\n controlEditorModel.EntityName = selectedEntity.Name;\r\n\r\n const selectedField = this._selectedField();\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n controlEditorModel.UseFieldName = this.UseFieldName();\r\n\r\n if (controlEditorModel.UseFieldName) {\r\n controlEditorModel.Name = selectedField.Name;\r\n } else {\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n translation.Selected = true;\r\n }\r\n });\r\n }\r\n\r\n if (this._uncheckShowAnnotations()) {\r\n let propsObj = JSON.parse(controlEditorModel.Properties);\r\n propsObj.Annotations.Properties[1].ShowAnnotations = false;\r\n\r\n let propsString = JSON.stringify(propsObj);\r\n controlEditorModel.Properties = propsString;\r\n\r\n this._uncheckShowAnnotations(false);\r\n }\r\n return controlEditorModel;\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n\r\n this.InitEntities();\r\n }\r\n\r\n BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, eventArgs => this.OnEntityChange());\r\n this.On(EVENTS.FIELD_SELECTED, this, () => this.OnFieldChange());\r\n\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n\r\n this.UseFieldName.subscribe((newValue) => {\r\n if (newValue) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n });\r\n }\r\n\r\n OnSelectField(selectedField) {\r\n this.Trigger(EVENTS.FIELD_SELECTED, selectedField);\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n\r\n this._fields = ko.observableArray([]);\r\n this._selectedField = ko.observable(null);\r\n\r\n this._uncheckShowAnnotations = ko.observable(false);\r\n }\r\n\r\n PopulateEntities(entities: TableWithImagesModel[]) {\r\n entities = _.uniq(entities, false, entity => entity.Id);\r\n\r\n if (this.EditControl.GetForm().GetScreen().IsEditScreen) {\r\n entities = _.filter(entities, entity => entity.Id === this.GetSubjectEntityId() || entity.Type === TABLE_TYPES.Sub);\r\n }\r\n\r\n this._entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n\r\n const attachedEntity = attachedField && _.find(entities, entity => entity.Id === attachedField.EntityId);\r\n\r\n if (attachedEntity) {\r\n this._selectedEntity(attachedEntity);\r\n } else {\r\n const subjectEntity = _.find(entities, entity => entity.Id === this.SubjectEntityId);\r\n this._selectedEntity(subjectEntity);\r\n }\r\n }\r\n\r\n EnableOrDisableShowAnnotations(container) {\r\n const spansArray = $(`#${container.id} .panel-default .form-group > label > span`);\r\n let useAnnotationsCheckbox = null, showAnnotationsCheckbox = null;\r\n\r\n _.each(spansArray, elem => {\r\n if (elem.innerText === this.GeneralProperties.GetPropertyName('Annotations')) {\r\n useAnnotationsCheckbox = elem.nextElementSibling;\r\n }\r\n\r\n if (elem.innerText === this.GeneralProperties.GetPropertyName('ShowAnnotations')) {\r\n showAnnotationsCheckbox = elem.nextElementSibling;\r\n }\r\n });\r\n\r\n if (!useAnnotationsCheckbox.checked) {\r\n showAnnotationsCheckbox.checked = false;\r\n this._uncheckShowAnnotations(true);\r\n showAnnotationsCheckbox.disabled = true;\r\n }\r\n\r\n let annotationsCheckboxListener = useAnnotationsCheckbox as HTMLElement;\r\n annotationsCheckboxListener.addEventListener('change', () => {\r\n if (!useAnnotationsCheckbox.checked) {\r\n showAnnotationsCheckbox.checked = false;\r\n this._uncheckShowAnnotations(true);\r\n showAnnotationsCheckbox.disabled = true;\r\n } else {\r\n this._uncheckShowAnnotations(false);\r\n showAnnotationsCheckbox.disabled = false;\r\n }\r\n })\r\n }\r\n\r\n private OnEntityChange() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n this._fields(selectedEntity.ImageFields);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n if (attachedField) {\r\n const selectedField = _.find(selectedEntity.ImageFields, field => field.Id === attachedField.Id);\r\n this._selectedField(selectedField);\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n }\r\n }\r\n }\r\n\r\n private OnFieldChange() {\r\n if (this.UseFieldName()) {\r\n this.UseFieldNameAsControlName();\r\n } else {\r\n const translations = this.NameTranslations();\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n }\r\n\r\n\r\n }\r\n\r\n ToggleUseFieldName() {\r\n this.UseFieldName(!this.UseFieldName());\r\n }\r\n\r\n UseFieldNameAsControlName() {\r\n let field = this._selectedField();\r\n if (field) {\r\n _.each(this.NameTranslations(), (translation) => {\r\n\r\n if (translation.Language.K_Language === -1) {\r\n translation.Translation = field.Name;\r\n }\r\n\r\n let fieldTranslation = _.find(field.NameTranslations, (fieldTranslation) => {\r\n return fieldTranslation.Language.K_Language === translation.Language.K_Language;\r\n });\r\n if (fieldTranslation) {\r\n\r\n if (this.SelectedName() && this.SelectedName().Language.K_Language == fieldTranslation.Language.K_Language) {\r\n this.SelectedName().Translation = fieldTranslation.Translation;\r\n this.SelectedName.valueHasMutated();\r\n }\r\n\r\n translation.Translation = fieldTranslation.Translation;\r\n }\r\n });\r\n let translations = this.NameTranslations();\r\n this.NameTranslations([]);\r\n this.NameTranslations(translations);\r\n\r\n const defTrans = this.NameTranslations()[0];\r\n defTrans.Translation = this._selectedField().Name;\r\n this.SelectedName(defTrans);\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName(),\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(),\\r\\n textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> <label class=\\\"control-label\\\"><!-- ko text: Labels.USE_FIELD_NAME --><!-- /ko --></label> <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\"> <i data-bind=\\\"css: {\\r\\n 'fa-toggle-off': !UseFieldName(),\\r\\n 'fa-toggle-on': UseFieldName()\\r\\n }\\\" class=\\\"fa transition fa-toggle-on\\\"></i> </a> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n </textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <legend class=\\\"control-editor-legend\\\"><!-- ko text: Labels.FIELD --><!-- /ko --></legend> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, optionsText: 'Name', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.FIELD --><!-- /ko --> </label> <div data-bind=\\\"if: _selectedEntity\\\"> <select data-bind=\\\"options: _fields, optionsText: 'Name',\\r\\n value: _selectedField,\\r\\n enableAttr: _fields().length > 0,\\r\\n event: { change: $data.OnSelectField.bind($data, $data) }\\\" id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {P} from 'Core/Common/Promise';\r\nimport {Request} from 'Core/Common/Request';\r\n\r\nexport interface IKanbanTodoType {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport interface IKanbanField {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\nexport interface IKanbanSubjectEntity {\r\n Id: number;\r\n Name: string;\r\n Fields: IKanbanField[];\r\n}\r\n\r\nexport interface IKanbanTodoEntity {\r\n Id: number;\r\n Name: string;\r\n Types: IKanbanTodoType[];\r\n Fields: IKanbanField[];\r\n}\r\n\r\ninterface DesignOptionsResponseModel {\r\n ScreenSubjectFields: IKanbanField[];\r\n KanbanSubjectEntities: IKanbanSubjectEntity[];\r\n TodoEntities: IKanbanTodoEntity[];\r\n}\r\n\r\nexport class KanbanControlEditorStore {\r\n GetDesignOptions(subjectEntityId: number) {\r\n const deferred = P.defer<DesignOptionsResponseModel>();\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/KanbanBoardApi/GetDesignOptions',\r\n type: 'GET',\r\n dataType: 'json'\r\n },\r\n params: {subjectEntityId}\r\n })\r\n .then((options: DesignOptionsResponseModel) => deferred.resolve(options))\r\n .fail(error => deferred.reject(this.GetResponseError(error, 'Error reading design options')));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {KanbanBoard} from 'Core/Controls/Kanban/KanbanBoard';\r\n\r\nimport {BaseControlEditor, EVENTS} from '../BaseControlEditor';\r\nimport {\r\n KanbanControlEditorStore,\r\n IKanbanSubjectEntity,\r\n IKanbanTodoEntity,\r\n IKanbanField,\r\n IKanbanTodoType\r\n} from './Stores/KanbanControlEditorStore';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor'] = Template;\r\n\r\nexport class KanbanControlEditor extends BaseControlEditor {\r\n protected EditControl: KanbanBoard;\r\n\r\n private _store: KanbanControlEditorStore;\r\n\r\n private _kanbanSubjectEntities: KnockoutObservableArray<IKanbanSubjectEntity>;\r\n private _selectedKanbanSubjectEntity: KnockoutObservable<IKanbanSubjectEntity>;\r\n\r\n private _kanbanSubjectFields: KnockoutComputed<IKanbanField[]>;\r\n private _selectedKanbanSubjectField: KnockoutObservable<IKanbanField>;\r\n\r\n private _todoEntities: KnockoutObservableArray<IKanbanTodoEntity>;\r\n private _selectedTodoEntity: KnockoutObservable<IKanbanTodoEntity>;\r\n\r\n private _todoTypes: KnockoutComputed<IKanbanTodoType[]>;\r\n private _selectedTodoType: KnockoutObservable<IKanbanTodoType>;\r\n\r\n private _todoFields: KnockoutComputed<IKanbanField[]>;\r\n private _selectedTodoField: KnockoutObservable<IKanbanField>;\r\n\r\n constructor(control: KanbanBoard) {\r\n super(control);\r\n\r\n this._store = new KanbanControlEditorStore();\r\n\r\n this._kanbanSubjectEntities = ko.observableArray([]);\r\n this._selectedKanbanSubjectEntity = ko.observable();\r\n\r\n this._kanbanSubjectFields = ko.pureComputed(() => {\r\n const selectedKanbanSubjectEntity = this._selectedKanbanSubjectEntity();\r\n return selectedKanbanSubjectEntity ? selectedKanbanSubjectEntity.Fields : [];\r\n });\r\n this._selectedKanbanSubjectField = ko.observable();\r\n\r\n this._todoEntities = ko.observableArray([]);\r\n this._selectedTodoEntity = ko.observable();\r\n\r\n this._todoTypes = ko.pureComputed(() => {\r\n const selectedTodoEntity = this._selectedTodoEntity();\r\n return selectedTodoEntity ? selectedTodoEntity.Types : [];\r\n });\r\n this._selectedTodoType = ko.observable();\r\n\r\n this._todoFields = ko.pureComputed(() => {\r\n const selectedTodoEntity = this._selectedTodoEntity();\r\n return selectedTodoEntity ? selectedTodoEntity.Fields : [];\r\n });\r\n this._selectedTodoField = ko.observable();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/KanbanControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n this.LoadData();\r\n }\r\n\r\n Save(): void {\r\n const validationError = this.Validate();\r\n\r\n if (validationError) {\r\n new Notifier().Warning(validationError);\r\n return;\r\n }\r\n const controlEditorModel = this.GetControlEditorModel();\r\n\r\n this.Trigger(EVENTS.CONTROL_SAVED, {UpdateControlModel: controlEditorModel});\r\n\r\n this.Close();\r\n }\r\n\r\n Validate() {\r\n let validationError = super.Validate();\r\n\r\n if (validationError) {\r\n return validationError;\r\n }\r\n\r\n if (!this._selectedKanbanSubjectField()) {\r\n return 'Please, select Kanban title field';\r\n }\r\n\r\n if (!this._selectedTodoEntity()) {\r\n return 'Please, select Todo entity';\r\n }\r\n\r\n if (!this._selectedTodoType()) {\r\n return 'Please, select Todo type';\r\n }\r\n\r\n if (!this._selectedTodoField()) {\r\n return 'Please, select Todo field';\r\n }\r\n\r\n return null;\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n const selectedKanbanSubjectEntity = this._selectedKanbanSubjectEntity();\r\n if (selectedKanbanSubjectEntity) {\r\n controlEditorModel.KanbanSubjectId = selectedKanbanSubjectEntity.Id;\r\n }\r\n\r\n const selectedTitleField = this._selectedKanbanSubjectField();\r\n if (selectedTitleField) {\r\n controlEditorModel.TitleFieldId = selectedTitleField.Id;\r\n }\r\n\r\n const selectedTodoEntity = this._selectedTodoEntity();\r\n if (selectedTodoEntity) {\r\n controlEditorModel.TodoEntityId = selectedTodoEntity.Id;\r\n }\r\n\r\n const selectedTodoType = this._selectedTodoType();\r\n if (selectedTodoType) {\r\n controlEditorModel.TodoTypeId = selectedTodoType.Id;\r\n }\r\n\r\n const selectedTodoField = this._selectedTodoField();\r\n if (selectedTodoField) {\r\n controlEditorModel.TodoFieldId = selectedTodoField.Id;\r\n }\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n private LoadData() {\r\n BlockUI.Block();\r\n\r\n this._store.GetDesignOptions(this.GetSubjectEntityId())\r\n .then(options => this.PopulateData(options.ScreenSubjectFields, options.KanbanSubjectEntities, options.TodoEntities))\r\n .fail(error => new Notifier().Failed(error.message))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n private PopulateData(screenSubjectFields: IKanbanField[], kanbanSubjectEntities: IKanbanSubjectEntity[], todoEntities: IKanbanTodoEntity[]) {\r\n const defaultKanbanSubject: IKanbanSubjectEntity = {\r\n Id: null,\r\n Name: this.Labels.SCREEN_SUBJECT,\r\n Fields: screenSubjectFields\r\n };\r\n kanbanSubjectEntities.unshift(defaultKanbanSubject);\r\n this._kanbanSubjectEntities(kanbanSubjectEntities);\r\n\r\n const selectedKanbanSubjectEntity = _.any(kanbanSubjectEntities, entity => entity.Id === this.EditControl.Model.KanbanSubjectId)\r\n ? kanbanSubjectEntities.find(entity => entity.Id === this.EditControl.Model.KanbanSubjectId)\r\n : defaultKanbanSubject;\r\n this._selectedKanbanSubjectEntity(selectedKanbanSubjectEntity);\r\n\r\n const selectedKanbanSubjectField = selectedKanbanSubjectEntity.Fields.find(field => field.Id === this.EditControl.Model.TitleFieldId);\r\n this._selectedKanbanSubjectField(selectedKanbanSubjectField);\r\n\r\n const selectedTodoEntity = todoEntities.find(entity => entity.Id === this.EditControl.Model.TodoEntityId);\r\n this._todoEntities(todoEntities);\r\n this._selectedTodoEntity(selectedTodoEntity);\r\n\r\n if (this._selectedTodoEntity()) {\r\n const todoTypes = this._selectedTodoEntity().Types;\r\n\r\n const selectedTodoType = todoTypes.find(type => type.Id === this.EditControl.Model.TodoTypeId);\r\n this._selectedTodoType(selectedTodoType);\r\n\r\n const todoFields = this._selectedTodoEntity().Fields;\r\n\r\n const selectedTodoField = todoFields.find(field => field.Id === this.EditControl.Model.TodoFieldId);\r\n this._selectedTodoField(selectedTodoField);\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUBJECT_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _kanbanSubjectEntities, optionsText: 'Name', value: _selectedKanbanSubjectEntity\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUBJECT_FIELD --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _kanbanSubjectFields, optionsText: 'Name', value: _selectedKanbanSubjectField\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.TODO_ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _todoEntities, optionsText: 'Name', value: _selectedTodoEntity\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.TODO_TYPE --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _todoTypes, optionsText: 'Name', value: _selectedTodoType\\\" class=\\\"form-control\\\"></select> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.TODO_FIELD --><!-- /ko --> </label> <div> <select data-bind=\\\"\\r\\n options: _todoFields,\\r\\n optionsText: 'Name',\\r\\n value: _selectedTodoField\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"text: Name, click: Toggle, class: Expanded() ? '' : 'collapsed'\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"class: Expanded() ? '' : 'collapse', css: { height: Expanded() ? '' : '0'}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {Request} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {ChartControlOptions} from '../Models/ChartControlOptions';\r\n\r\nimport {CONTROL_TYPES} from \"Core/Constant\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ChartControlEditorStore {\r\n\r\n GetControlOptions() {\r\n const deferred = P.defer<ChartControlOptions>()\r\n\r\n Request.Send({\r\n proxy: {\r\n url: '/api/ChartApi/GetControlOptions',\r\n type: 'GET',\r\n dataType: 'json',\r\n }\r\n }).then(options => {\r\n deferred.resolve(options);\r\n }).fail(err => {\r\n\t\t\tconst generalError = NOTIFICATIONS.ERROR_GETTING_CONTROL_OPTIONS.replace('{controlName}', CONTROL_TYPES.Chart);\r\n\t\t\tdeferred.reject(this.GetResponseError(err, generalError));\r\n });\r\n\r\n return deferred.promise();\r\n }\r\n\r\n private GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n if (err.status === 400) {\r\n return {message: JSON.parse(err.message).Message};\r\n }\r\n\r\n return {message: generalError};\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport clone from 'clone';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\n\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {BaseControlEditor} from '../BaseControlEditor';\r\n\r\nimport {ChartControlEditorStore} from './Stores/ChartControlEditorStore';\r\nimport {ChartEntity} from './Models/ChartEntity';\r\nimport {ChartView} from './Models/ChartView';\r\n\r\nimport {PROPERTIES} from 'Core/Controls/Chart/Constants';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor.html';\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor'] = Template;\r\n\r\nexport const EVENTS = {\r\n ENTITY_SELECTED: 'ENTITY_SELECTED',\r\n VIEW_SELECTED: 'VIEW_SELECTED'\r\n};\r\n\r\nexport class ChartControlEditor extends BaseControlEditor {\r\n private _store: ChartControlEditorStore;\r\n\r\n private _entities: KnockoutObservableArray<ChartEntity>;\r\n private _selectedEntity: KnockoutObservable<ChartEntity>;\r\n private _hasEntities: KnockoutComputed<boolean>;\r\n\r\n private _views: KnockoutObservableArray<ChartView>;\r\n private _selectedView: KnockoutObservable<ChartView>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this._store = new ChartControlEditorStore();\r\n this.InitEditControlData(control);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/ChartControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0]\r\n super.AfterRender(container);\r\n\r\n BlockUI.Block();\r\n\r\n this._store.GetControlOptions()\r\n .then(options => this.PopulateEntities(options.Entities))\r\n .always(() => BlockUI.Unblock());\r\n }\r\n\r\n GetControlEditorModel() {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n const controlEditorModel = super.GetControlEditorModel();\r\n\r\n _.each(controlEditorModel.NameTranslations, (translation) => {\r\n\t if (translation.Selected || (desktopLanguage == translation.Language.ShortName)) {\r\n\t\t translation.Selected = true;\r\n\t }\r\n });\r\n\r\n const selectedView = this._selectedView();\r\n\t\tif (!selectedView) {\r\n\t\t\treturn controlEditorModel;\r\n\t\t}\r\n\r\n controlEditorModel.EntityId = selectedView.Id;\r\n controlEditorModel.EntityName = selectedView.Name;\r\n\r\n\t\tconst selectedField = this.EditControl.GetFieldModel();\r\n\t\tif (!selectedField) {\r\n\t\t\treturn controlEditorModel;\r\n\t\t}\r\n\r\n controlEditorModel.FieldId = selectedField.Id;\r\n controlEditorModel.FieldName = selectedField.Name;\r\n\r\n return controlEditorModel;\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n this.InitEntities();\r\n }\r\n\r\n private InitEntities() {\r\n this._entities = ko.observableArray([]);\r\n this._selectedEntity = ko.observable(null);\r\n this._hasEntities = ko.computed(() => _.any(this._entities()));\r\n\r\n this._views = ko.observableArray([]);\r\n this._selectedView = ko.observable(null);\r\n }\r\n\r\n\tprivate PopulateEntities(entities: ChartEntity[]) {\r\n\t\tif (!_.any(entities)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n this._entities(entities);\r\n\r\n const attachedField = _.first(this.EditControlModel.Fields);\r\n const selectedView = attachedField && _.chain(entities)\r\n .map(entity => entity.Views)\r\n .flatten()\r\n .value()\r\n .find(v => v.PkFieldId === attachedField.Id);\r\n\r\n if (selectedView) {\r\n const selectedEntity = _.find(entities, entity => _.any(entity.Views, view => view.Id === selectedView.Id));\r\n\r\n if (selectedEntity) {\r\n this._selectedEntity(selectedEntity);\r\n this._views(selectedEntity.Views);\r\n\t\t\t\tthis._selectedView(selectedView);\r\n\t\t\t\tthis.UpdateAxisOptions();\r\n this.BindEvents();\r\n\r\n return;\r\n }\r\n }\r\n\r\n this._selectedEntity(entities[0]);\r\n this.UpdateSubTableView();\r\n this.BindEvents();\r\n }\r\n\r\n private BindEvents() {\r\n this._selectedEntity.subscribe(selectedEntity => {\r\n if (this._selectedEntity()) {\r\n this.Trigger(EVENTS.ENTITY_SELECTED, selectedEntity);\r\n }\r\n });\r\n\r\n this._selectedView.subscribe(selectedView => {\r\n if (this._selectedView()) {\r\n this.Trigger(EVENTS.VIEW_SELECTED, selectedView);\r\n }\r\n })\r\n\r\n this.On(EVENTS.ENTITY_SELECTED, this, () => this.UpdateSubTableView());\r\n\t\tthis.On(EVENTS.VIEW_SELECTED, this, () => {\r\n\t\t\tthis.UpdateField();\r\n\t\t\tthis.UpdateAxisOptions();\r\n\t\t});\r\n }\r\n\r\n private UpdateSubTableView() {\r\n const selectedEntity = this._selectedEntity();\r\n\r\n if (!selectedEntity) {\r\n return;\r\n }\r\n\r\n this._views(selectedEntity.Views);\r\n this._selectedView(selectedEntity.Views[0]);\r\n\r\n\t\tthis.UpdateField();\r\n\t\tthis.UpdateAxisOptions();\r\n }\r\n\r\n private UpdateField() {\r\n const selectedView = this._selectedView();\r\n if (!selectedView) {\r\n return;\r\n }\r\n\r\n let fieldModel = this.EditControl.GetFieldModel();\r\n\r\n if (!fieldModel) {\r\n fieldModel = new AttachedFieldModel({ Id: selectedView.PkFieldId, Name: selectedView.PkFieldName, EntityId: selectedView.Id});\r\n this.EditControl.GetModel().Fields.push(fieldModel);\r\n } else {\r\n fieldModel.Id = selectedView.PkFieldId;\r\n fieldModel.Name = selectedView.PkFieldName;\r\n fieldModel.EntityId = selectedView.Id;\r\n }\r\n\t}\r\n\r\n\tprivate UpdateAxisOptions() {\r\n\t\tconst selectedView = this._selectedView();\r\n\t\tif (!selectedView) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst generalProperties = this.EditControl.GeneralProperties;\r\n\t\tconst seriesOptions = _.map(selectedView.Fields, (f) => {\r\n\t\t\treturn {\r\n\t\t\t\tName: f.Name,\r\n\t\t\t\tValue: f.Id\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tgeneralProperties.SetPropertyOptions('Series', clone(seriesOptions));\r\n\r\n\t\tconst axisFields = _.filter(selectedView.Fields, f => f.IsInteger || f.IsDecimal || f.IsText || f.IsDate || f.IsDatetime);\r\n\t\tif (!_.any(axisFields)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst axisOptions = _.map(axisFields, (f) => {\r\n\t\t\treturn {\r\n\t\t\t\tName: f.Name,\r\n\t\t\t\tValue: f.Id\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tgeneralProperties.SetPropertyOptions(PROPERTIES.X_AXIS, clone(axisOptions));\r\n\t\tgeneralProperties.SetPropertyOptions(PROPERTIES.Y_AXIS, clone(axisOptions));\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t textInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t</textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <fieldset class=\\\"field-attachment-block\\\"> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.ENTITY --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _entities, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name', \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsCaption: !_hasEntities() ? Labels.NO_VALID_SUBTABLE_VIEW : null,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedEntity, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: !_hasEntities() }\\\" class=\\\"form-control\\\"></select> </div> </div> </div> <div class=\\\"entity-field-group\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\"> <!-- ko text: Labels.SUB_TABLE_VIEW --><!-- /ko --> </label> <div> <select data-bind=\\\"options: _views, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name', \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedView, \\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tattr: { disabled: !_hasEntities() }\\\" class=\\\"form-control\\\"></select> </div> </div> </div> </fieldset> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko with: PropertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {BaseControlEditor} from \"../BaseControlEditor\";\r\nimport {IControl} from 'Core/Controls/IControl';\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor.html';\r\nimport {BlockUI} from \"../../../../../Common/BlockUi\";\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor'] = Template;\r\n\r\nexport class RecipeEditorControlEditor extends BaseControlEditor {\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n\r\n this.InitEditControlData(control);\r\n }\r\n\r\n protected InitEditControlData(control: IControl) {\r\n super.InitEditControlData(control);\r\n // this.InitEntities();\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/DesignScreen/ControlEditor/Templates/RecipeEditorControlEditor';\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n // BlockUI.Block();\r\n // this.LoadData()\r\n // .then(entities => {\r\n // this.PopulateEntities(entities)\r\n // })\r\n // .always(() => BlockUI.Unblock());\r\n }\r\n\r\n // private InitEntities() {\r\n // this._entities = ko.observableArray([]);\r\n // this._selectedEntity = ko.observable(null);\r\n //\r\n // this._fields = ko.observableArray([]);\r\n // this._selectedField = ko.observable(null);\r\n // }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal recipeEditorControlEditor\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n textInput: Translation,\\r\\n enable: !$parent.UseFieldName()\\r\\n event:{keyup: $parent.UpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\" enable: !$parent.UseFieldName(), textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> <!-- <label class=\\\"control-label\\\"><!– ko text: Labels.USE_FIELD_NAME –><!– /ko –></label>--> <!-- <a data-bind=\\\"click: ToggleUseFieldName\\\" tabindex=\\\"-1\\\" class=\\\"control-toggle-button\\\" href=\\\"#\\\">--> <!-- <i data-bind=\\\"css: {--> <!-- 'fa-toggle-off': !UseFieldName(),--> <!-- 'fa-toggle-on': UseFieldName()--> <!-- }\\\" class=\\\"fa transition fa-toggle-on\\\"></i>--> <!-- </a>--> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <!-- <div class=\\\"form-group labelPosition-block\\\">--> <!-- <label class=\\\"control-label\\\" for=\\\"labelPositionId\\\">--> <!-- <!– ko text: Labels.LABEL_POSITION –><!– /ko –>--> <!-- </label>--> <!-- <div>--> <!-- <select data-bind=\\\"options: _labelPositions, optionsText: 'Title', value: _selectedLabelPosition\\\" id=\\\"labelPositionId\\\" class=\\\"form-control\\\" name=\\\"labelPositionId\\\"></select>--> <!-- </div>--> <!-- </div>--> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n event:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field only-vertical-resize\\\">\\r\\n </textarea> <span data-bind=\\\"css: { open: $parent.DescriptionTranslationsOpened }, click: $parent.ToggleDescriptionTranslations.bind($parent)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> </div> <!-- /ko --> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> <!-- <fieldset class=\\\"field-attachment-block\\\">--> <!-- <legend class=\\\"control-editor-legend\\\"><!– ko text: Labels.FIELD –><!– /ko –></legend>--> <!-- <div class=\\\"entity-field-group\\\">--> <!-- <div class=\\\"form-group\\\">--> <!-- <label class=\\\"control-label\\\">--> <!-- <!– ko text: Labels.ENTITY –><!– /ko –>--> <!-- </label>--> <!-- <div>--> <!-- <select data-bind=\\\"options: _entities, optionsText: 'Name', value: _selectedEntity\\\" class=\\\"form-control\\\" name=\\\"entityId\\\"></select>--> <!-- </div>--> <!-- </div>--> <!-- <div class=\\\"form-group\\\">--> <!-- <label class=\\\"control-label\\\">--> <!-- <!– ko text: Labels.FIELD –><!– /ko –>--> <!-- </label>--> <!-- <div data-bind=\\\"if: _selectedEntity\\\">--> <!-- <select data-bind=\\\"options: _fields, optionsText: 'Name',--> <!-- optionsAfterRender: FieldSelectorAfterRender,--> <!-- value: _selectedField,--> <!-- enableAttr: _fields().length > 0,--> <!-- event: { change: $data.OnSelectField.bind($data, $data) }\\\"--> <!-- id=\\\"selectedFieldId\\\" class=\\\"form-control\\\" name=\\\"fieldId\\\"></select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- </fieldset>--> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import {FIELD_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {EntityModel} from \"Core/Screens/DesignScreen/ControlEditor/Models/EntityModel\";\r\nimport {FieldControlEditor} from \"Core/Screens/DesignScreen/ControlEditor/Editors/FieldControlEditor\";\r\n\r\nexport class MapsControlEditor extends FieldControlEditor {\r\n constructor(control: IControl) {\r\n super(control);\r\n }\r\n\r\n protected FilterEntities(entities: EntityModel[]) {\r\n let filteredEntities = [];\r\n\r\n for (let entity of entities) {\r\n const filteredFields = entity.Fields.filter(field => field.FieldTypeName === FIELD_TYPES.Text);\r\n\r\n if (filteredFields.length > 0) {\r\n entity.Fields = filteredFields;\r\n filteredEntities.push(entity);\r\n }\r\n }\r\n\r\n return filteredEntities;\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"form-horizontal\\\" id=\\\"ControlEditor\\\"> <div class=\\\"fix-head clearfix\\\"> <div class=\\\"control-editor-header clearfix\\\"> <div class=\\\"box-shadow-wrapper\\\"> <legend data-bind=\\\"text: TypeName + ' control'\\\" class=\\\"control-editor-legend\\\"></legend> <div class=\\\"form-group actions\\\"> <input data-bind=\\\"click: $data.Save.bind($data), value: Labels.SAVE\\\" id=\\\"saveControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-success\\\"/> <input data-bind=\\\"click: $data.Cancel.bind($data), value: Labels.CANCEL\\\" id=\\\"canceEditingControlBtn\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\"/> </div> </div> </div> <div class=\\\"box-shadow-wrapper margin-t-20px display-flex\\\"> <div class=\\\"col-md-12 control-editor-container clearfix\\\"> <div class=\\\"control-editor-column\\\"> <fieldset class=\\\"clearfix\\\"> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlId\\\"> <!-- ko text: Labels.ID --><!-- /ko --> </label> <div> <input data-bind=\\\"textInput: Id\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlId\\\" readonly=\\\"readonly\\\"/> </div> </div> <div class=\\\"form-group\\\"> <div class=\\\"language-parrent-drop clearfix\\\"> <label class=\\\"control-label\\\" for=\\\"controlName\\\"> <!-- ko text: Labels.NAME --><!-- /ko --> <i data-bind=\\\"css: {'hidden': IsValid(), 'has-error-without-border': !IsValid()},\\r\\n tooltip:{ content: ValidationMsg() }\\\" class=\\\"fa fa-warning control-tooltip\\\"> </i> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedName --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <input data-bind=\\\"hasFocus: $parent.NameFocused,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\ttextInput: Translation,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcss: {'has-error': !$parent.IsValid()},\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n \\tevent: {'keyup': $parent.OnKeyUpUpdateTranslationList.bind($parent)}\\\" class=\\\"form-control language-edit-field\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlName\\\" required/> </div> <!-- /ko --> <span data-bind=\\\"css: { open: NameTranslationsOpened }, click: $data.ToggleNameTranslations.bind($data)\\\" class=\\\"btn caret\\\"><i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i></span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: NameTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: NameTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectNameTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation,\\r\\n hasFocus: IsFocusedItem,\\r\\n attr: {'maxlength': $parent.GetFieldMaxLength()},\\r\\n event: {'keyup': $parent.OnKeyUpChangeTranslation.bind($parent)} \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"controlType\\\"> <!-- ko text: Labels.TYPE --><!-- /ko --> </label> <div> <input id=\\\"controlTypeId\\\" type=\\\"hidden\\\" value=\\\"@Model.TypeId\\\"/> <input data-bind=\\\"textInput: TypeTranslatedName\\\" class=\\\"form-control\\\" autocomplete=\\\"off\\\" type=\\\"text\\\" id=\\\"controlType\\\" readonly=\\\"readonly\\\"/> </div> </div> </fieldset> <div class=\\\"form-group\\\"> <label class=\\\"control-label\\\" for=\\\"processCardPageScreen\\\"> Process card </label> <div> <select data-bind=\\\"blockElement: $data._isLoading, optionsCaption: 'Select...', options: _processCardPageScreens, optionsText: 'Name', value: _selectedProcessCardScreen\\\" id=\\\"processCardPageScreen\\\" class=\\\"form-control\\\" name=\\\"processCardPageScreen\\\"></select> </div> </div> <div class=\\\"form-group comments language-parrent-drop\\\"> <label class=\\\"control-label\\\" for=\\\"memo\\\"> <!-- ko text: Labels.CONTROL_DESCRIPTION --><!-- /ko --> </label> <div class=\\\"relative-block clearfix\\\"> <!-- ko with: SelectedDescription --> <div class=\\\"current-language-container clearfix\\\"> <img data-bind=\\\"attr: {'src': Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\" class=\\\"current-language-icon\\\" src=\\\"\\\"> <textarea data-bind=\\\"textInput: Translation, attr: { placeholder: $parent.Labels.MEMO_DESCRIPTION },\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tevent:{keyup: $parent.UpdateDescriptionTranslationList.bind($parent)}\\\" id=\\\"memo\\\" class=\\\"memo form-control language-edit-field\\\">\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t</textarea> </div> <!-- /ko --> <span data-bind=\\\"css: { open: DescriptionTranslationsOpened }, click: $data.ToggleDescriptionTranslations.bind($data)\\\" class=\\\"btn caret\\\"> <i class=\\\"fa fa-arrow-down transition\\\" aria-hidden=\\\"true\\\"></i> </span> <div class=\\\"clearfix\\\"> <ul data-bind=\\\"css: { visible: DescriptionTranslationsOpened }\\\" class=\\\"language-dropdown\\\" aria-labelledby=\\\"translation_list\\\"> <!-- ko foreach: DescriptionTranslations --> <li data-bind=\\\"attr: {'data-language-value': Translation, 'data-item-id': Language.K_Language}\\\" class=\\\"clearfix item languages\\\"> <label data-bind=\\\"click: $parent.SelectDescriptionTranslation.bind($parent)\\\" class=\\\"control-label\\\" for=\\\"controlName\\\"> <img data-bind=\\\"attr: { src: Language.FlagBase64 || 'img/Custom/language-default-icon.png'}\\\"> </label> <input type=\\\"text\\\" class=\\\"form-control\\\" data-bind=\\\"textInput: Translation, hasFocus: IsFocusedItem, event: {keyup: $parent.ChangeDescriptionTranslation.bind($parent) } \\\"/> </li> <!-- /ko --> </ul> </div> </div> </div> </div> <!-- ko with: GeneralProperties --> <div class=\\\"control-editor-column\\\"> <div class=\\\"portlet\\\"> <div class=\\\"portlet-body\\\"> <div class=\\\"panel-group accordion\\\" id=\\\"accordion\\\"> <!-- ko foreach: Groups --> <div class=\\\"panel panel-default\\\"> <div class=\\\"panel-heading\\\"> <h4 class=\\\"panel-title\\\"> <a data-bind=\\\"attr:{href: '#' + Id}, text: Name\\\" class=\\\"accordion-toggle accordion-toggle-styled collapsed\\\" data-toggle=\\\"collapse\\\" data-parent=\\\"#accordion\\\" aria-expanded=\\\"false\\\"></a> </h4> </div> <div data-bind=\\\"attr:{id: Id}\\\" class=\\\"panel-collapse collapse\\\" aria-expanded=\\\"false\\\" style=\\\"height:0\\\"> <div class=\\\"panel-body\\\"> <!-- ko foreach: Properties --> <div class=\\\"form-group\\\"> <!-- ko template: { afterRender: CheckForPropertyManager.bind($data) } --> <!-- ko with: _propertyManager --> <!-- ko template: { name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\n\r\nexport class ProcessCardPageModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize, GenericDeserialize} from 'libs/cerialize';\r\nimport {LookupFieldModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/LookupFieldModel';\r\nimport { ProcessCardPageModel } from '../Models/ProcessCardPageModel';\r\n\r\nexport class StepPageStore {\r\n\tstatic GetProcessCardPageScreens(): P.Promise<Array<ProcessCardPageModel>> {\r\n\t\tvar deferredResult = P.defer<Array<ProcessCardPageModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"/api/FormDesignerApi/GetProcessCardPageScreens\",\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\ttype: \"GET\"\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(Deserialize(data, ProcessCardPageModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {BaseControlEditor} from \"./BaseControlEditor\";\r\n\r\nimport Template from 'Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor.html';\r\nimport { ProcessCardPageModel } from \"../Models/ProcessCardPageModel\";\r\nimport { StepPageStore } from \"../Stores/StepPageStore\";\r\nimport { BlockUI } from \"../../../../Common/BlockUi\";\r\n\r\nko.templates['Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor'] = Template;\r\n\r\nexport class StepPageControlEditor extends BaseControlEditor {\r\n\tprivate _processCardPageScreens: KnockoutObservableArray<ProcessCardPageModel>;\r\n\tprivate _selectedProcessCardScreen: KnockoutObservable<ProcessCardPageModel>;\r\n\tprivate _isLoading: KnockoutObservable<boolean>;\r\n\t\r\n\tconstructor(control: IControl) {\t\t\r\n\t\tsuper(control);\r\n\t\tthis._isLoading = ko.observable(false);\r\n\t\tthis._processCardPageScreens = ko.observableArray([]);\r\n\t\tthis._selectedProcessCardScreen = ko.observable(null);\r\n\t\tthis.LoadData();\r\n\t}\r\n\r\n\tLoadData(){\r\n\t\tthis._isLoading(true);\r\n\t\tStepPageStore.GetProcessCardPageScreens()\r\n\t\t.always(()=>{\r\n\t\t\tthis._isLoading(false);\r\n\t\t})\r\n\t\t.then(screens=>{\r\n\t\t\tthis._processCardPageScreens(screens);\r\n\t\t\tthis._selectedProcessCardScreen(_.find(screens, screen=>screen.Id == this.EditControlModel.ScreenId));\r\n\t\t\tthis._selectedProcessCardScreen.subscribe((newValue)=>{\r\n\t\t\t\tthis.EditControlModel.ScreenId = newValue?.Id;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Screens/DesignScreen/ControlEditor/Templates/StepPageControlEditor';\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport {BaseControlEditor} from 'Core/Screens/DesignScreen/ControlEditor/Editors/BaseControlEditor';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {Behavior} from 'Core/Controls/ButtonCopy/Constants/Behavior';\r\nimport {IconManager} from 'Core/Components/IconManager/IconManager';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {DesignScreen} from 'Core/Screens/DesignScreen/DesignScreen';\r\n\r\nexport class ButtonCopyControlEditor extends BaseControlEditor {\r\n private _iconModel = IconModel;\r\n private _icon: KnockoutObservable<IconModel>;\r\n\r\n constructor(control: IControl) {\r\n super(control);\r\n this._icon = ko.observable(control.GetIcon());\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n const container = el[0];\r\n super.AfterRender(container);\r\n\r\n this.CheckProperties();\r\n }\r\n\r\n private CheckProperties() {\r\n let behavior = this.GeneralProperties.GetPropertyManager('Behavior');\r\n let type = this.GeneralProperties.GetPropertyManager('Type');\r\n let aliasSuffix = this.GeneralProperties.GetPropertyManager('AliasSuffix');\r\n\r\n if (behavior && type && aliasSuffix) {\r\n let isEnabled = behavior.Value() && behavior.Value().Value === Behavior.CopyToType;\r\n\r\n type.SetEnabled(isEnabled);\r\n aliasSuffix.SetEnabled(isEnabled);\r\n\r\n if (!isEnabled){\r\n type.SetValue(null);\r\n aliasSuffix.Value('');\r\n }\r\n\r\n behavior.Value.subscribe((val)=>{\r\n isEnabled = val && val.Value === Behavior.CopyToType;\r\n\r\n type.SetEnabled(isEnabled);\r\n aliasSuffix.SetEnabled(isEnabled);\r\n\r\n if (!isEnabled){\r\n type.SetValue(null);\r\n aliasSuffix.Value('');\r\n }\r\n });\r\n }\r\n }\r\n\r\n GetControlEditorModel() {\r\n const controlEditorModel = super.GetControlEditorModel();\r\n controlEditorModel.Icon = this._icon();\r\n return controlEditorModel;\r\n }\r\n\r\n OpenIconManager() {\r\n const screen = this.Control.GetForm().GetScreen() as DesignScreen;\r\n const icons = screen.DesignModel.Icons;\r\n\r\n let iconManager = new IconManager(icons);\r\n iconManager.Show();\r\n\r\n iconManager.On('ICON_SELECTED', this, (eventArgs) => {\r\n this._icon(eventArgs.data.Icon);\r\n });\r\n }\r\n\r\n get Icon() {\r\n return this._icon();\r\n }\r\n}","import {CONTROL_TYPES} from \"Core/Constant\";\r\n\r\nimport {IControl} from \"Core/Controls/IControl\";\r\nimport {ProductConfigurator} from 'Core/Controls/ProductConfigurator/ProductConfigurator';\r\nimport {KanbanBoard} from 'Core/Controls/Kanban/KanbanBoard';\r\nimport {Book} from 'Core/Controls/Book/Book';\r\n\r\nimport {ControlEditor} from \"../Editors/ControlEditor\";\r\n\r\nimport {BaseControlEditor} from \"../Editors/BaseControlEditor\";\r\nimport {FieldControlEditor} from \"../Editors/FieldControlEditor\";\r\n\r\nimport {GridControlEditor} from '../Editors/GridControlEditor';\r\nimport {InvoicingControlEditor} from \"../Editors/InvoicingControl/InvoicingControlEditor\";\r\nimport {GenericButtonControlEditor} from '../Editors/GenericButtonControlEditor';\r\nimport {CurrencyControlEditor} from \"../Editors/CurrencyControlEditor\";\r\nimport {BasketControlEditor} from \"../Editors/BasketControlEditor\";\r\nimport {PlannerLevelControlEditor} from \"../Editors/PLannerLevelControl/PlannerLevelControlEditor\";\r\nimport {GanttChartControlEditor} from '../Editors/GanttChartControl/GanttChartControlEditor';\r\nimport {ProductConfiguratorControlEditor} from '../Editors/ProductConfigurator/ProductConfiguratorControlEditor';\r\nimport {SignatureControlEditor} from \"../Editors/SignatureControlEditor\";\r\nimport {BookControlEditor} from '../Editors/BookControl/BookControlEditor';\r\nimport {TabPageControlEditor} from \"../Editors/TabPageControlEditor\";\r\nimport {SpreadsheetControlEditor} from '../Editors/SpreadsheetControl/SpreadsheetControlEditor';\r\nimport {ImageControlEditor} from '../Editors/Image/ImageControlEditor';\r\nimport {KanbanControlEditor} from '../Editors/KanbanControl/KanbanControlEditor';\r\nimport {ChartControlEditor} from '../Editors/ChartControl/ChartControlEditor';\r\nimport {RecipeEditorControlEditor} from \"../Editors/RecipeEditorControl/RecipeEditorControlEditor\";\r\nimport {MapsControlEditor} from \"../Editors/MapsControl/MapsControlEditor\";\r\nimport { StepPageControlEditor } from \"../Editors/StepPageControlEditor\";\r\nimport {ButtonCopyControlEditor} from 'Core/Screens/DesignScreen/ControlEditor/Editors/ButtonCopyControl/ButtonCopyControlEditor';\r\n\r\nexport class ControlEditorFactory {\r\n static GetEditor(control: IControl) {\r\n switch (control.GetType()) {\r\n case CONTROL_TYPES.StepPage:\r\n return new StepPageControlEditor(control);\r\n case CONTROL_TYPES.Grid:\r\n return new GridControlEditor(control);\r\n\r\n case CONTROL_TYPES.Basket:\r\n return new BasketControlEditor(control);\r\n\r\n case CONTROL_TYPES.Invoicing:\r\n return new InvoicingControlEditor(control);\r\n\r\n case CONTROL_TYPES.GenericButton:\r\n return new GenericButtonControlEditor(control);\r\n\r\n case CONTROL_TYPES.MultiSelect:\r\n return new FieldControlEditor(control);\r\n\r\n case CONTROL_TYPES.Image:\r\n return new ImageControlEditor(control);\r\n\r\n case CONTROL_TYPES.Signature:\r\n return new SignatureControlEditor(control);\r\n\r\n case CONTROL_TYPES.PlannerLevel:\r\n return new PlannerLevelControlEditor(control);\r\n\r\n case CONTROL_TYPES.GanttChart:\r\n return new GanttChartControlEditor(control);\r\n\r\n case CONTROL_TYPES.ProductConfigurator:\r\n return new ProductConfiguratorControlEditor(control as ProductConfigurator);\r\n\r\n case CONTROL_TYPES.Book:\r\n return new BookControlEditor(control as Book);\r\n\r\n case CONTROL_TYPES.TabPage:\r\n return new TabPageControlEditor(control);\r\n\r\n case CONTROL_TYPES.Spreadsheet:\r\n return new SpreadsheetControlEditor(control);\r\n\r\n case CONTROL_TYPES.Kanban:\r\n return new KanbanControlEditor(control as KanbanBoard);\r\n\r\n case CONTROL_TYPES.Chart:\r\n\t\t\t\treturn new ChartControlEditor(control);\r\n\r\n case CONTROL_TYPES.RecipeEditor:\r\n return new RecipeEditorControlEditor(control);\r\n\r\n case CONTROL_TYPES.Maps:\r\n return new MapsControlEditor(control);\r\n\r\n case CONTROL_TYPES.ButtonCopy:\r\n return new ButtonCopyControlEditor(control);\r\n }\r\n\r\n const controlModel = control.GetModel();\r\n\r\n if (controlModel.TypeName === CONTROL_TYPES.Currency) {\r\n return new CurrencyControlEditor(control);\r\n }\r\n\r\n if (controlModel.IsFieldAttached || controlModel.IsLookupFieldAttached || controlModel.IsColorFieldAttached) {\r\n return new FieldControlEditor(control);\r\n }\r\n\r\n if (controlModel.IsBlobFieldAttached || control.GetModel().IsComplexControl) {\r\n return new ControlEditor(control);\r\n }\r\n\r\n return new BaseControlEditor(control);\r\n }\r\n}","export class AfterDropValidation {\r\n\tIsPositionValid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext): boolean {\r\n\t\treturn true;\r\n\t}\r\n}","import {SubForm} from 'Core/Screens/Forms/SubForm/SubForm';\r\nimport {AfterDropValidation} from \"Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation\";\r\n\r\nexport class PortletAfterDropValidation extends AfterDropValidation {\r\n IsPositionValid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext): boolean {\r\n return !(targetContext instanceof SubForm) || targetIndex !== 0;\r\n }\r\n}","import { AfterDropValidation } from \"Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation\";\r\nimport { PortletAfterDropValidation } from \"Core/Screens/DesignScreen/AfterDropValidation/PortletAfterDropValidation\";\r\nimport { ScreenTypes } from \"Core/Common/Enums/ScreenTypes\";\r\n\r\nexport class ScreenTypeToDropControlValidation {\r\n\tstatic GetValidationDelegate(screenType: string): AfterDropValidation {\r\n\t\tswitch (screenType) {\r\n\t\t\tcase ScreenTypes[ScreenTypes.Portlet]:\r\n\t\t\t\treturn new PortletAfterDropValidation();\r\n\t\t\tdefault:\r\n\t\t\t\treturn new AfterDropValidation();\r\n\t\t}\r\n\t}\r\n}","import { GridStackOptions } from 'gridstack';\r\n\r\nexport const defaultGridStackOptions: GridStackOptions = {\r\n float: true,\r\n staticGrid: true,\r\n cellHeight: 100\r\n};","// Module\nvar code = \"<div class=\\\"portlet-body\\\" data-bind=\\\"style: _screenWidth(), css: {'custom-weight': _hasCustomWeight()}, class: _customStyle()\\\"> <!-- ko with: ActionBar --> <div id=\\\"actionBarSubForm\\\" class=\\\"dropcontrol-container actionBarSubForm static-controls-container\\\"> <div data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" class=\\\"action-drop-zone microClearfix\\\"> <!-- ko if: $data.IsStatic --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- ko if: !$data.IsStatic --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"action-icon-type\\\"> <!-- ko with: $parent.Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'custom-color': _hasCustomColor()}, style: _fontColor()\\\"> <div class=\\\"form-container\\\" data-bind=\\\"css: {'link-list-subform': WithLinkList}\\\"> <div class=\\\"container-scroll relative-block clearfix\\\"> <!-- ko foreach: SubForms --> <!-- ko ifnot: $data._model.Controls[0] && $data._model.Controls[0].TypeName === 'LinkList' --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"style: $parent._screenBgColor()\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" id=\\\"bottomSubForm\\\" class=\\\"dropcontrol-container microClearfix\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </div> <!-- /ko --> </div> <!-- ko foreach: SubForms --> <!-- ko if: $data._model.Controls[0] && $data._model.Controls[0].TypeName === 'LinkList' --> <div class=\\\"link-list-wrapper\\\" data-bind=\\\"css: {'link-list-opened': _isExpanded}\\\"> <div class=\\\"link-list-container\\\"> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm link-list-control col-md-4 form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> </div> </div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { ListScreen } from './../ListScreen/ListScreen';\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from 'jquery';\r\n\r\nimport clone from 'clone';\r\n\r\nimport {GenericDeserialize, Serialize} from 'libs/cerialize';\r\nimport * as GridStack from 'gridstack';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen'\r\nimport {Search} from 'Core/Controls/Search/Search'\r\nimport {ButtonFavorite} from 'Core/Controls/ButtonFavorite/ButtonFavorite'\r\nimport {Grid} from 'Core/Controls/Grid/Grid'\r\nimport {IControlParam, IForm} from 'Core/Screens/IScreen'\r\nimport {\r\n CONTROL_TYPES,\r\n FIELD_TYPE_TO_CONTROL,\r\n FIELD_TYPES,\r\n RenderModes,\r\n CARD_SCREEN_PROPERTY_TYPE\r\n} from 'Core/Constant'\r\nimport {DesignScreenModel} from 'Core/Models/Screens/ScreenModel'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {IControl} from 'Core/Controls/IControl'\r\nimport {Tab} from 'Core/Controls/Tab/Tab'\r\nimport {TabPage} from 'Core/Controls/TabPage/TabPage'\r\nimport {DragulaExtention} from 'Core/KnockoutExtentions/DragulaExtention'\r\nimport {BaseControl} from 'Core/Controls/BaseControl/BaseControl'\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList'\r\nimport {ButtonTemplate} from 'Core/Controls/ButtonTemplate/ButtonTemplate'\r\nimport {FieldModel} from 'QueryBuilder/Models/FieldModel'\r\nimport {ControlFactory} from 'Core/Controls/ControlFactory'\r\nimport {UpdateScreenStore} from 'Core/Screens/DesignScreen/Stores/UpdateScreenStore'\r\nimport {\r\n ControlModel as UpdateControlModel,\r\n MainFormUpdateModel,\r\n UpdateScreenModel\r\n} from 'Core/Screens/DesignScreen/Models/UpdateScreenModel';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {DashboardBlock, FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {ControlEditorFactory} from 'Core/Screens/DesignScreen/ControlEditor/Factory/ControlEditorFactory';\r\nimport {AttachedFieldModel} from 'Core/Controls/BaseControl/Models/AttachedFieldModel'\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm'\r\nimport {BaseForm} from 'Core/Screens/Forms/Base/BaseForm'\r\nimport {ActionBar} from 'Core/Screens/Forms/ActionBar/ActionBar'\r\nimport {BottomBar} from 'Core/Screens/Forms/BottomBar/BottomBar'\r\nimport {ControlGroup} from 'Core/Controls/FormDesigner/ToolBar/ControlToolBar/ControlGroup';\r\nimport {ControlEditorModel} from 'Core/Screens/DesignScreen/ControlEditor/Models/ControlEditorModel'\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport {Notifier} from 'Core/Common/Notifier'\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {ConcreteEntityModel} from 'QueryBuilder/Models/ConcreteEntityModel';\r\nimport {ControlGroupModel} from \"Core/Controls/FormDesigner/ToolBar/ControlToolBar/Models/ControlGroupModel\";\r\nimport {LabelPositions} from \"Core/Screens/DesignScreen/ControlEditor/Enums/LabelPositions\";\r\nimport {ScreenTypeToDropControlValidation} from \"Core/Screens/DesignScreen/AfterDropValidation/ScreenTypeToAfterDropValidation\";\r\nimport {AfterDropValidation} from \"Core/Screens/DesignScreen/AfterDropValidation/AfterDropValidation\";\r\nimport {Basket} from 'Core/Controls/Basket/Basket';\r\nimport {GenericButton} from 'Core/Controls/GenericButton/GenericButton';\r\nimport {LABELS, NOTIFICATIONS, CONFIRMATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {defaultGridStackOptions} from \"Core/Screens/Dashboard/DashboardUtils\";\r\n\r\nimport BaseDesignScreenTemplate from 'Core/Screens/Templates/DesignScreen/BaseDesignScreen.html'\r\nimport DashboardDesignScreenTemplate from 'Core/Screens/Templates/DesignScreen/DashboardDesignScreen.html'\r\nimport ProcessCardDesignScreenTemplate from 'Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen.html'\r\n\r\nimport {ComplexControl} from 'Core/Controls/ComplexControl/ComplexControl';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {GlobalManager, GLOBALS} from \"Core/GlobalManager/GlobalManager\";\r\nimport {Planner} from \"Core/Controls/Planner/Planner\";\r\nimport {PlannerPage} from \"Core/Controls/PlannerPage/PlannerPage\";\r\nimport {PlannerLevel} from \"../../Controls/PlannerLevel/PlannerLevel\";\r\nimport {SPIMCopy} from \"../../Controls/SpimCopy/SpimCopy\";\r\nimport {EntityTypes} from \"../../Controls/Grid/BaseGrid/Enums/EntityTypes\";\r\nimport {ButtonCopy} from '../../Controls/ButtonCopy/ButtonCopy';\r\nimport {KanbanBoard} from '../../Controls/Kanban/KanbanBoard';\r\nimport {SubFormModel} from '../../Models/Screens/SubFormModel';\r\nimport {RecipeEditor} from \"../../Controls/RecipeEditor/RecipeEditor\";\r\nimport {Timer} from \"Core/Controls/Timer/Timer\";\r\nimport {log} from \"fullcalendar/src/util\";\r\nimport {ISettingsModal} from \"../../Controls/FormDesigner/SettingsModal/SettingsModal\";\r\nimport { Step } from '../../Controls/Step/Step';\r\nimport { StepPage } from '../../Controls/StepPage/StepPage';\r\nimport { ButtonPlan } from '../../Controls/ButtonPlan/ButtonPlan';\r\n\r\nko.templates['Core/Screens/Templates/DesignScreen/BaseDesignScreen'] = BaseDesignScreenTemplate;\r\nko.templates['Core/Screens/Templates/DesignScreen/DashboardDesignScreen'] = DashboardDesignScreenTemplate;\r\nko.templates['Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen'] = ProcessCardDesignScreenTemplate;\r\n\r\nconst DEFAULT_LABEL_POSITION = 'Left';\r\nconst LINK_LIST_REQUIRED_ENTITY = 'SYS_USERS';\r\nconst CONRTOL_WITH_BLOBFIELDATTACHED = ['Image', 'Document'];\r\n\r\nenum RelationTypes {\r\n OneToOneSubject,\r\n OneToOne,\r\n OneToMain,\r\n OneToMany\r\n}\r\n\r\nenum SortGroups {\r\n Header,\r\n OptionalHeader,\r\n Custom,\r\n OptionalFooter,\r\n Footer,\r\n Undefined\r\n}\r\n\r\nfunction getSubFormGridOptions(subForm: SubForm) {\r\n return {\r\n id: subForm.GetFormGuid(),\r\n content: `\r\n <div class=\"mainSubForm form-wrapper__main-sub-form grid-stack-item__main-sub-form\">\r\n <div class=\"dashboardSubForm-box\" id=\"${subForm.GetFormGuid()}\"></div>\r\n </div>\r\n `\r\n };\r\n}\r\n\r\nexport class DesignScreen extends BaseScreen {\r\n private _designModel: DesignScreenModel;\r\n private _subFormsWith: KnockoutObservable<any>;\r\n private _configuringLayout: KnockoutObservable<boolean>;\r\n private _updateModel: UpdateScreenModel;\r\n\tprivate _hasChanges: KnockoutObservable<boolean>;\r\n private _afterDropValidation: AfterDropValidation;\r\n private _formProperties: FormProperties = new FormProperties();\r\n private _gridStack: GridStack;\r\n SubjectEntity: ConcreteEntityModel;\r\n\r\n private _hasCustomColor: KnockoutObservable<boolean>;\r\n private _hasCustomWeight: KnockoutObservable<boolean>;\r\n private _screenWidth: KnockoutObservable<any>;\r\n private _screenBgColor: KnockoutObservable<any>;\r\n private _screenColors: KnockoutObservable<any>;\r\n private _fontColor: KnockoutObservable<any>;\r\n private _customStyle: KnockoutObservable<any>;\r\n\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n\r\n constructor(screenModel: DesignScreenModel, subjectEntity: ConcreteEntityModel) {\r\n super(screenModel.ExistingScreenViewModel, RenderModes.Design);\r\n\r\n this.SubjectEntity = subjectEntity;\r\n this._designModel = screenModel;\r\n this._subFormsWith = ko.observable({});\r\n this._configuringLayout = ko.observable(false);\r\n this.InitCalcSubFormSize();\r\n this._updateModel = new UpdateScreenModel();\r\n this._hasChanges = ko.observable(false);\r\n this._afterDropValidation = ScreenTypeToDropControlValidation.GetValidationDelegate(this.GetType());\r\n this._hasCustomColor = ko.observable(null);\r\n this._hasCustomWeight = ko.observable(null);\r\n this._screenWidth = ko.observable(null);\r\n this._screenBgColor = ko.observable(null);\r\n this._screenColors = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._customStyle = ko.observable(null);\r\n\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n this._updateModel.IsEnablePathRunner = screenModel.ExistingScreenViewModel.IsEnablePathRunner;\r\n\r\n try {\r\n this._formProperties = GenericDeserialize(JSON.parse(screenModel.FormProperties), FormProperties);\r\n } catch (error) {\r\n }\r\n\r\n let body = $('body');\r\n if (!body.hasClass('Dashboard') && this.IsDashboard){\r\n body.addClass('Dashboard');\r\n }\r\n\r\n this.Init();\r\n this.InitEvents();\r\n }\r\n\r\n set HasCustomColor(val: boolean) {\r\n this._hasCustomColor(val);\r\n }\r\n set HasCustomWeight(val: boolean) {\r\n this._hasCustomWeight(val);\r\n }\r\n set ScreenWidth(val: string) {\r\n this._screenWidth({width: val});\r\n }\r\n set ScreenBgColor(val: string) {\r\n this._screenBgColor({backgroundColor: val})\r\n }\r\n set Color(val: string) {\r\n this._fontColor({color: val});\r\n this._hasCustomColor(!!val);\r\n }\r\n\r\n set FontFamily(val:string) {\r\n this._fontFamily(val)\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n }\r\n set FontWeight(val:string) {\r\n this._fontWeight(val)\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n this._hasCustomWeight(!!this._fontWeight());\r\n }\r\n set FontStyle(val:string) {\r\n this._fontStyle(val)\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n }\r\n\r\n private InitEvents() {\r\n this.On('CONTROL_MODIFY', this, (eventArgs: any) => {\r\n this._hasChanges(true);\r\n eventArgs.data.Control.ModelHasMutated();\r\n });\r\n }\r\n\r\n IsSubjectScreen() {\r\n const screenType = this.GetType();\r\n return screenType === ScreenTypes[ScreenTypes.ConsultScreen]\r\n || screenType === ScreenTypes[ScreenTypes.EditScreen];\r\n }\r\n\r\n get ScreenId(): number {\r\n return this._model.Id;\r\n }\r\n\r\n get ControlGroups(): Array<ControlGroupModel> {\r\n return this._designModel.ControlToolbar.Groups;\r\n }\r\n\r\n\r\n TogglePathRunner(){\r\n this._updateModel.IsEnablePathRunner = !this._updateModel.IsEnablePathRunner;\r\n this._hasChanges(true);\r\n }\r\n\r\n get IsEnablePathRunner(){\r\n return this._updateModel.IsEnablePathRunner;\r\n }\r\n\r\n StartLayoutConfiguration() {\r\n this._configuringLayout(true);\r\n\r\n if (this.IsDashboard) {\r\n this._gridStack.setStatic(false);\r\n\r\n this._subForms.forEach(subForm => subForm.StartLayoutConfiguration());\r\n }\r\n }\r\n\r\n ApplyLayout() {\r\n this._configuringLayout(false);\r\n\r\n if (this.IsDashboard) {\r\n this._gridStack.setStatic(true);\r\n\r\n this._subForms.forEach(subForm => subForm.ApplyLayout());\r\n }\r\n }\r\n\r\n private GetDefaultControlModel(controlType: string) {\r\n let controlModel = null;\r\n _.each(this.ControlGroups, (controlGroup) => {\r\n const model = _.find(controlGroup.Controls, (control) => {\r\n return control.TypeName === controlType\r\n });\r\n\r\n if (model) {\r\n controlModel = model;\r\n }\r\n });\r\n return controlModel;\r\n }\r\n\r\n get Controls(): Array<IControl> {\r\n return this._controls;\r\n }\r\n\r\n get HasChanges(): boolean {\r\n return this._hasChanges();\r\n }\r\n\r\n set HasChanges(value: boolean) {\r\n this._hasChanges(value);\r\n }\r\n\r\n get ScreenType(): string {\r\n return this._model.ScreenTypeName;\r\n }\r\n\r\n private DestroyDragula() {\r\n const toolBarToDesignerDrake = DragulaExtention.FindGroup('ToolBarToDesigner');\r\n if (toolBarToDesignerDrake) {\r\n DragulaExtention.DestroyGroup(toolBarToDesignerDrake);\r\n }\r\n }\r\n\r\n private Init() {\r\n this.DestroyDragula();\r\n this.SubForms.forEach(subForm => this.BindSubFormEvents(subForm));\r\n\r\n const toolBarToDesignerDrake = DragulaExtention.AddGroupWithOptions('ToolBarToDesigner', {\r\n accepts: (el, target, source, sibling) => {\r\n const elModel = ko.dataFor(el);\r\n const targetModel = ko.dataFor(target);\r\n const sourceModel = ko.dataFor(source);\r\n\r\n if (elModel instanceof FieldModel) {\r\n if (elModel.FieldTypeName === FIELD_TYPES.Property) {\r\n return false;\r\n }\r\n\r\n if (elModel.FieldTypeName === FIELD_TYPES.Spim) {\r\n\r\n if (!(targetModel instanceof Grid)) {\r\n return false;\r\n }\r\n\r\n const isSubTableGrid = targetModel.FieldModel && targetModel.FieldModel.EntityTypeName === EntityTypes[EntityTypes.Sub];\r\n if (!isSubTableGrid) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n if (elModel instanceof LinkList) {\r\n //allow move link list only in Main4 block\r\n let screenModel = this._designModel.ExistingScreenViewModel;\r\n let allowedLinkListSubFormIndex = 3;\r\n if (this._subForms.indexOf(targetModel) !== allowedLinkListSubFormIndex) {\r\n return false;\r\n }\r\n\r\n //forbid linkList dropping on the Edit Screen of the SYS_USERS\r\n if (screenModel.EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n if (screenModel.ScreenTypeName === ScreenTypes[ScreenTypes.EditScreen]) {\r\n return false;\r\n }\r\n }\r\n\r\n //forbid second linkList dropping\r\n if (targetModel.Controls()) {\r\n return !targetModel.Controls().some(control => control instanceof LinkList);\r\n }\r\n }\r\n\r\n //forbid second recipeEditor dropping\r\n if (elModel instanceof RecipeEditor) {\r\n return this.IsEnableDragRecipeEditor(elModel);\r\n }\r\n\r\n //prevent dragging non timer controls on kanban\r\n if (!(elModel instanceof Timer) && targetModel instanceof KanbanBoard) {\r\n return false;\r\n }\r\n\r\n //check if it is possible to drag timer control\r\n if (elModel instanceof Timer && !this.IsEnableDragTimer(targetModel)) {\r\n return false;\r\n }\r\n\r\n if (targetModel instanceof SubForm) {\r\n const form = (targetModel as SubForm);\r\n\r\n if (form.ConfiguringLayout) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent move controls or fields into tab header\r\n if (targetModel instanceof Tab && !(elModel instanceof TabPage)) {\r\n return false;\r\n }\r\n\r\n //prevent move any fields into TemplateButton container\r\n if (targetModel instanceof Grid && (elModel instanceof AttachedFieldModel || elModel instanceof FieldModel)) {\r\n if (target.hasAttribute('subControls')) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent move not allowed controls into Grid\r\n if (targetModel instanceof Grid && elModel instanceof BaseControl) {\r\n const allowedSubControlTypes = [ButtonTemplate, Basket, GenericButton, SPIMCopy, ButtonCopy, ButtonPlan];\r\n const controlTypeAllowed = !!allowedSubControlTypes.find(ct => elModel instanceof ct);\r\n\r\n if (!controlTypeAllowed) {\r\n return false;\r\n }\r\n\r\n if (elModel instanceof ButtonCopy) {\r\n const allowedScreens = [ScreenTypes[ScreenTypes.ConsultScreen], ScreenTypes[ScreenTypes.EditScreen], ScreenTypes[ScreenTypes.ListScreen]];\r\n return !!allowedScreens.find(screenType => this.GetType() === screenType);\r\n }\r\n }\r\n\r\n if (!(targetModel instanceof Grid) && elModel instanceof ButtonCopy && this.GetType() === ScreenTypes[ScreenTypes.ListScreen]) {\r\n return false;\r\n }\r\n\r\n if (!(targetModel instanceof Grid) && elModel instanceof SPIMCopy) {\r\n return false;\r\n }\r\n\r\n //prevent move field into Grid more than once\r\n if (targetModel instanceof Grid && elModel instanceof FieldModel) {\r\n const fieldAlreadyDropped = _.any(targetModel.Fields, field => field.Id === elModel.FieldId);\r\n\r\n if (fieldAlreadyDropped) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent drop Basket to any places except of Grid\r\n if (!(targetModel instanceof Grid) && elModel instanceof Basket) {\r\n return false;\r\n }\r\n\r\n //disable move TabPage control from Tab to Form\r\n if (elModel instanceof TabPage && !(targetModel instanceof Tab)) {\r\n return false;\r\n }\r\n\r\n //prevent moving fields from linkList into subForm\r\n if (elModel instanceof AttachedFieldModel && sourceModel instanceof LinkList && !(targetModel instanceof LinkList)) {\r\n return false;\r\n }\r\n\r\n //prevent moving fields from Grid into subForm\r\n if (elModel instanceof AttachedFieldModel && sourceModel instanceof Grid && !(targetModel instanceof Grid)) {\r\n return false;\r\n }\r\n\r\n //forbidden drop duplicate Field into EditScreen\r\n if ((this.GetType() === ScreenTypes[ScreenTypes.ListScreen] || this.GetType() === ScreenTypes[ScreenTypes.EditScreen]) && !(targetModel instanceof Grid)\r\n && !(targetModel instanceof LinkList && sourceModel instanceof EntityModel))\r\n {\r\n if (elModel instanceof FieldModel) {\r\n var field = <FieldModel>elModel;\r\n const controls = this.GetAllControls();\r\n let result = true;\r\n\r\n _.each(controls, (control) => {\r\n\r\n if(control.GetType() === CONTROL_TYPES.Maps){\r\n return;\r\n }\r\n\r\n const baseControl = control as BaseControl;\r\n if (control.GetModel().Fields.length === 1) {\r\n if (baseControl.GetFieldId() === field.FieldId) {\r\n $(control.GetWrapper()).addClass('has-error');\r\n result = false;\r\n }\r\n }\r\n });\r\n\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n //prevent drop Tab into himself or nested TabPage or nested grid\r\n if (elModel instanceof Tab && (targetModel instanceof TabPage || targetModel instanceof Grid)) {\r\n return false;\r\n }\r\n\r\n if (targetModel instanceof EntityModel) {\r\n return false;\r\n }\r\n\r\n //prevent drop control into himself\r\n if (ko.dataFor(el) === ko.dataFor(target)) {\r\n return false;\r\n }\r\n\r\n if (elModel instanceof FieldModel && sourceModel instanceof EntityModel && this.GetType() === ScreenTypes[ScreenTypes.EditScreen] && !(targetModel instanceof Grid)) {\r\n return this.IsEnableDragField(elModel, sourceModel, targetModel);\r\n }\r\n\r\n if (elModel instanceof Search) {\r\n return this.IsEnableDragSearchTerm(elModel);\r\n }\r\n\r\n if (elModel instanceof ButtonFavorite) {\r\n return this.IsEnableButtonFavorite(elModel);\r\n }\r\n\r\n if (elModel instanceof FieldModel && sourceModel instanceof EntityModel && this.GetType() === ScreenTypes[ScreenTypes.QueryScreen] && targetModel instanceof Grid) {\r\n return false;\r\n }\r\n\r\n if (this.GetType() === ScreenTypes[ScreenTypes.StepsScreen]) {\r\n //disable move StepPage control from Step to Form\r\n if (elModel instanceof StepPage && !(targetModel instanceof Step)) {\r\n return false;\r\n }\r\n \r\n if (sourceModel instanceof ControlGroup) {\r\n if (elModel instanceof Step) {\r\n //forbid second Step dropping\r\n return this.HasOnlyOneInstanceOf(this.GetAllControls(), Step);\r\n }\r\n }\r\n \r\n }\r\n\r\n return true;\r\n },\r\n copy: (el, source) => {\r\n const sourceModel = ko.dataFor(source);\r\n if (sourceModel instanceof ControlGroup || sourceModel instanceof EntityModel) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n moves: (el, source, handle, sibling) => {\r\n //prevent moving system fields from toolbar\r\n if (this.GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (ko.dataFor(el) instanceof FieldModel && ko.dataFor(source) instanceof EntityModel\r\n && (ko.dataFor(el) as FieldModel).IsSystem && (ko.dataFor(el) as FieldModel).FieldTypeName !== FIELD_TYPES.Reference) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent moving fields from toolbar\r\n //if (ko.dataFor(el) instanceof FieldModel && ko.dataFor(source) instanceof EntityModel) {\r\n //return this.IsEnableDragField(ko.dataFor(el), ko.dataFor(source));\r\n //};\r\n\r\n //prevent moving property field\r\n if (ko.dataFor(el) instanceof AttachedFieldModel) {\r\n const fieldModel = ko.dataFor(el) as AttachedFieldModel;\r\n\r\n //prevent moving required entity for LinkList control\r\n if (ko.dataFor(source) instanceof LinkList) {\r\n if (fieldModel.EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n return false;\r\n }\r\n }\r\n\r\n if (fieldModel.FieldTypeName === FIELD_TYPES.Property) {\r\n return false;\r\n }\r\n }\r\n\r\n //prevent moving static control\r\n if (ko.dataFor(el) instanceof BaseControl) {\r\n const control = <BaseControl>ko.dataFor(el);\r\n if (control.IsStatic) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n });\r\n\r\n toolBarToDesignerDrake.drake.on('drag', (el) => {\r\n _.each(toolBarToDesignerDrake.drake.containers, (container) => {\r\n let isShowDropContainer = true;\r\n const context = ko.dataFor(container);\r\n\r\n const elementContext = ko.dataFor(el);\r\n\r\n if (context instanceof EntityModel) {\r\n isShowDropContainer = false;\r\n }\r\n\r\n if (context instanceof ControlGroup) {\r\n isShowDropContainer = false;\r\n }\r\n\r\n if (elementContext instanceof LinkList) {\r\n let allowedLinkListSubFormIndex = 3;\r\n if (this._subForms.indexOf(context) === allowedLinkListSubFormIndex) {\r\n if (context.Controls() && !context.Controls().some(control => control instanceof LinkList)) {\r\n $(container).addClass('start-drag');\r\n }\r\n }\r\n } else {\r\n if (isShowDropContainer) {\r\n $(container).addClass('start-drag');\r\n }\r\n }\r\n });\r\n });\r\n\r\n toolBarToDesignerDrake.drake.on('dragend', () => {\r\n _.each(toolBarToDesignerDrake.drake.containers, (container) => {\r\n $(container).removeClass('start-drag');\r\n $(container).find('.has-error').removeClass('has-error');\r\n });\r\n });\r\n\r\n toolBarToDesignerDrake.drake.on('over', (el, container, source) => {\r\n const context = ko.dataFor(container);\r\n if (context instanceof SubForm && !context.IsExpanded) {\r\n context.Expand();\r\n }\r\n });\r\n }\r\n \r\n private HasOnlyOneInstanceOf<T>(array: any[], instanceType: new (...args: any[]) => T): boolean {\r\n const filteredArray = _.filter(array, (item) => item instanceof instanceType);\r\n\r\n // We check whether there is only one such element\r\n return filteredArray.length === 0;\r\n }\r\n\r\n private BindSubFormEvents(subForm: SubForm) {\r\n subForm.On('AFTER_DROP_CONTROL', this, eventArgs => {\r\n this.AfterDropControl(\r\n eventArgs.data.item,\r\n eventArgs.data.sourceIndex,\r\n eventArgs.data.sourceItems,\r\n eventArgs.data.sourceContext,\r\n eventArgs.data.targetIndex,\r\n eventArgs.data.targetItems,\r\n eventArgs.data.targetContext\r\n );\r\n });\r\n\r\n subForm.On('CONTROL_EDITOR_REQUESTED', this, eventArgs => {\r\n this.ShowControlEditor(eventArgs.data.control);\r\n });\r\n\r\n\t\tsubForm.On('REMOVE_SUB_FORM', this, eventArgs => {\r\n\t\t\tif (this.IsDashboard) {\r\n\t\t\t\tthis.ShowRemoveSubFormConfirmationDialog(eventArgs.data.subForm);\r\n\t\t\t} else {\r\n\t\t\t\tthis.RemoveSubForm(eventArgs.data.subForm);\r\n\t\t\t}\r\n\t\t});\r\n }\r\n\r\n\r\n get DesignModel(): DesignScreenModel {\r\n return this._designModel;\r\n }\r\n\r\n get FormProperties() {\r\n return this._formProperties;\r\n }\r\n\r\n GetTemplateName(): string {\r\n if (this.IsDashboard) {\r\n return 'Core/Screens/Templates/DesignScreen/DashboardDesignScreen';\r\n }\r\n\r\n if (this.IsProcessCardScreen) {\r\n return 'Core/Screens/Templates/DesignScreen/ProcessCardDesignScreen';\r\n }\r\n\r\n return 'Core/Screens/Templates/DesignScreen/BaseDesignScreen';\r\n }\r\n\r\n AfterRender(el: Array<HTMLElement>) {\r\n this._el = el[3];\r\n\r\n if (this.IsDashboard) {\r\n setTimeout(() => {\r\n this._gridStack = GridStack.addGrid(\r\n document.querySelector('#dashboard-design-container'),\r\n {\r\n ...defaultGridStackOptions,\r\n children: this.SubForms.map(subForm => ({\r\n ...subForm.GetModel().Properties.DashboardBlock,\r\n ...getSubFormGridOptions(subForm)\r\n }))\r\n }\r\n );\r\n\r\n this._gridStack.on('added removed change', () => {\r\n this._hasChanges(true);\r\n });\r\n\r\n this.SubForms.forEach(subForm => {\r\n subForm.RenderDynamically(subForm.GetFormGuid(), this);\r\n });\r\n });\r\n }\r\n\r\n let width = this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value;\r\n let bgColor = this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value;\r\n\r\n this._screenWidth({width: `${width?.Value}${width?.Unit?.Value}`});\r\n this._screenBgColor({backgroundColor: bgColor});\r\n\r\n let color = this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value\r\n this._fontColor({color: color});\r\n\r\n this._fontFamily(this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value.Value);\r\n this._fontWeight(this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value);\r\n this._fontStyle(this.FindElementByType(this._formProperties.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value.Value);\r\n\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n\r\n this._hasCustomColor(!!color);\r\n this._hasCustomWeight(!!this._fontWeight());\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n\r\n AddSubForm() {\r\n const subFormModel = new SubFormModel();\r\n subFormModel.Name = `${this._model.Name} Block`;\r\n\r\n const subForm = new SubForm({Screen: this, Model: subFormModel, RenderMode: this._renderMode});\r\n subForm.StartLayoutConfiguration();\r\n\r\n this._subForms.push(subForm);\r\n this.BindSubFormEvents(subForm);\r\n\r\n this._gridStack.addWidget(getSubFormGridOptions(subForm));\r\n subForm.RenderDynamically(subForm.GetFormGuid(), this);\r\n }\r\n\r\n GetScreenIcon(): Icon {\r\n return new Icon({\r\n IsImage: Boolean(this._model.EntityIcon.Image),\r\n IsIcon: !Boolean(this._model.EntityIcon.Image),\r\n Image: this._model.EntityIcon.Image,\r\n FontName: this._model.EntityIcon.FontName,\r\n Name: this._model.EntityIcon.Name\r\n } as IconModel);\r\n }\r\n\r\n IsEnableButtonFavorite(elModel): boolean {\r\n let controls = this.GetAllControls();\r\n let button = _.find(controls, control => control instanceof ButtonFavorite);\r\n\r\n return !!button ? elModel.GetRenderMode() !== RenderModes.ToolBar : true;\r\n }\r\n\r\n IsEnableDragSearchTerm(elModel): boolean {\r\n let controls = this.GetAllControls();\r\n let seachTermControl = _.find(controls, control => control instanceof Search);\r\n\r\n return !!seachTermControl ? elModel.GetRenderMode() !== RenderModes.ToolBar : true;\r\n }\r\n\r\n IsEnableDragRecipeEditor(elModel): boolean {\r\n let controls = this.GetAllControls();\r\n let recipeEditorControl = _.find(controls, control => control instanceof RecipeEditor);\r\n let isEnabled = true;\r\n\r\n if (!!recipeEditorControl) {\r\n if (elModel.GetGuid() !== recipeEditorControl.GetGuid()) {\r\n isEnabled = false;\r\n }\r\n }\r\n\r\n return isEnabled;\r\n }\r\n\r\n IsEnableDragTimer(targetModel): boolean {\r\n const isDragOnKanban = targetModel instanceof KanbanBoard;\r\n if ((this.GetType() === ScreenTypes[ScreenTypes.SpecialScreen] || this.GetType() === ScreenTypes[ScreenTypes.Dashboard]) && !isDragOnKanban)\r\n {\r\n return false;\r\n }\r\n\r\n const isAlreadyAddedInKanban = isDragOnKanban\r\n && _.any(targetModel.GetSubControls(), control => control instanceof Timer);\r\n\r\n return !isAlreadyAddedInKanban;\r\n }\r\n\r\n IsEnableDragField(field: FieldModel, entity: EntityModel, targetModel): boolean {\r\n if (this.GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (targetModel instanceof LinkList)\r\n {\r\n return field.FieldTypeName === FIELD_TYPES.Text && (entity.EntityId === this.GetEntityId() ||\r\n (_.contains(entity.RelationTypes, RelationTypes.OneToMany) && _.contains(entity.RelationTypes, RelationTypes.OneToMain)));\r\n }\r\n\r\n if (field.IsPrimaryKey) {\r\n return false;\r\n }\r\n\r\n if (field.FieldTypeName === FIELD_TYPES.Document) {\r\n return true;\r\n }\r\n\r\n if (entity.EntityId === this.GetEntityId()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n RemoveField(fieldObj, controlObj) {\r\n if (fieldObj instanceof AttachedFieldModel && controlObj instanceof BaseControl) {\r\n const field = fieldObj as AttachedFieldModel;\r\n const control = controlObj as BaseControl;\r\n const model = control.GetModel();\r\n model.Fields.splice(control.GetModel().Fields.indexOf(field), 1);\r\n control.ModelHasMutated();\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n RemoveControl(parent, control: BaseControl) {\r\n if (parent instanceof BaseForm) {\r\n const subForm = parent as SubForm;\r\n subForm.RemoveControl(subForm, control);\r\n } else if (parent instanceof BaseControl) {\r\n const parentControl = parent as BaseControl;\r\n parentControl.RemoveControl(control);\r\n } else {\r\n this.OnControlRemoved(control);\r\n }\r\n }\r\n\r\n OnControlRemoved(control: BaseControl) {\r\n if (!control.IsNew) {\r\n this._updateModel.DeletedControlIds.push(control.GetControlId());\r\n }\r\n\r\n this._hasChanges(true);\r\n }\r\n\r\n AddTranslationsToControl(control: IControl) {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\r\n if (control.GetModel().NameTranslations.length === 0 && this._designModel.Languages.length > 0) {\r\n _.each(this._designModel.Languages, language => {\r\n let translation = new TranslationModel();\r\n translation.Language = language;\r\n translation.Selected = desktopLanguage === language.ShortName;\r\n translation.Translation = null;\r\n\r\n control.GetModel().NameTranslations.push(translation);\r\n });\r\n }\r\n\r\n if (control.GetModel().DescriptionTranslations.length === 0 && this._designModel.Languages.length > 0) {\r\n _.each(this._designModel.Languages, language => {\r\n let translationDescr = new TranslationModel();\r\n translationDescr.Language = language;\r\n translationDescr.Selected = desktopLanguage === language.ShortName;\r\n translationDescr.Translation = null;\r\n\r\n control.GetModel().DescriptionTranslations.push(translationDescr);\r\n });\r\n }\r\n }\r\n\r\n RemoveSubForm(subForm: SubForm) {\r\n const subFormIndex = this._subForms.indexOf(subForm);\r\n\r\n if (subFormIndex > -1) {\r\n this._subForms.splice(subFormIndex, 1);\r\n }\r\n\r\n if (this.IsDashboard) {\r\n this._gridStack.removeWidget(this._el.querySelector(`[gs-id=\"${subForm.GetFormGuid()}\"]`));\r\n }\r\n\r\n if (!subForm.IsNew) {\r\n this._updateModel.DeletedFormIds.push(subForm.GetFormId());\r\n }\r\n\r\n this._hasChanges(true);\r\n }\r\n\r\n\tprivate ShowRemoveSubFormConfirmationDialog(subForm: SubForm) {\r\n\t const confirmationDialog = new ConfirmationDialog({\r\n\t\t Text: CONFIRMATIONS.SUBFORM_AND_ITS_CONTROLS_WILL_BE_DELETED,\r\n\t\t Type: ConfirmationTypes.Question\r\n\t });\r\n\r\n\t confirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.RemoveSubForm(subForm);\r\n\t });\r\n\t confirmationDialog.Show();\r\n }\r\n\r\n ShowControlEditor(control: IControl) {\r\n this.AddTranslationsToControl(control);\r\n const controlEditor = ControlEditorFactory.GetEditor(control);\r\n\r\n controlEditor.On(\"CONTROL_SAVED\", this, (eventArgs: any) => {\r\n const updateModel = eventArgs.data.UpdateControlModel as ControlEditorModel;\r\n const controlModel = control.GetModel();\r\n controlModel.LabelPositionValue = updateModel.LabelPos;\r\n controlModel.LabelPosition = updateModel.LabelPosName;\r\n controlModel.EntityId = updateModel.EntityId;\r\n controlModel.Id = updateModel.K_Control;\r\n controlModel.RecordLifeStatusId = updateModel.RecordLifeStatusId;\r\n controlModel.DestinationTypeId = updateModel.DestinationTypeId;\r\n controlModel.Description = updateModel.Description;\r\n controlModel.Properties = JSON.parse(updateModel.Properties);\r\n controlModel.NameTranslations = updateModel.NameTranslations;\r\n controlModel.DescriptionTranslations = updateModel.DescriptionTranslations;\r\n controlModel.Icon = updateModel.Icon;\r\n controlModel.UseFieldName = updateModel.UseFieldName;\r\n controlModel.Name = updateModel.Name;\r\n controlModel.TitleFieldId = updateModel.TitleFieldId;\r\n controlModel.KanbanSubjectId = updateModel.KanbanSubjectId,\r\n controlModel.TodoEntityId = updateModel.TodoEntityId;\r\n controlModel.TodoTypeId = updateModel.TodoTypeId;\r\n controlModel.TodoFieldId = updateModel.TodoFieldId;\r\n controlModel.ScreenId = updateModel.ScreenId;\r\n\r\n if (!controlModel.UseFieldName) {\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n _.each(updateModel.NameTranslations, (translation) => {\r\n if (desktopLanguage == translation.Language.ShortName) {\r\n if (translation.Translation) {\r\n controlModel.Label = translation.Translation;\r\n } else {\r\n controlModel.Label = updateModel.Name;\r\n }\r\n }\r\n });\r\n } else {\r\n controlModel.Label = updateModel.Name;\r\n controlModel.Name = updateModel.Name\r\n }\r\n\r\n const attachedField = new AttachedFieldModel();\r\n attachedField.Id = updateModel.FieldId;\r\n attachedField.ValFieldId = updateModel.ValFieldId;\r\n attachedField.ValTableId = updateModel.ValTableId;\r\n attachedField.EntityId = updateModel.EntityId;\r\n attachedField.FieldTypeName = updateModel.TypeName;\r\n attachedField.EntityId = updateModel.EntityId;\r\n attachedField.EntityName = updateModel.EntityName;\r\n attachedField.Name = updateModel.FieldName;\r\n attachedField.FieldNameTranslation = updateModel.FieldNameTranslation;\r\n\r\n attachedField.RelatedField = this.CheckEntityTypeByName(updateModel.EntityName);\r\n\r\n if (!(control instanceof Grid) && !(control instanceof ComplexControl) && attachedField.Id !== 0 && attachedField.Id !== undefined && attachedField.Id !== null) {\r\n controlModel.Fields = [attachedField];\r\n }\r\n\r\n if ((control instanceof ComplexControl || control instanceof PlannerLevel)) {\r\n if (controlModel.TypeName === CONTROL_TYPES.TimeWriting) {\r\n if (controlModel.Fields.length > 0) {\r\n if (controlModel.Fields[0].EntityId === updateModel.AttachedFields[0].EntityId) {\r\n controlModel.Fields = updateModel.AttachedFields.concat(controlModel.Fields.filter(field => !updateModel.AttachedFields.find(item => item.Id === field.Id)))\r\n } else {\r\n controlModel.Fields = updateModel.AttachedFields;\r\n }\r\n } else {\r\n controlModel.Fields = updateModel.AttachedFields;\r\n }\r\n } else {\r\n controlModel.Fields = updateModel.AttachedFields;\r\n }\r\n\r\n controlModel.SubTableId = updateModel.SubTableId;\r\n }\r\n\r\n this._hasChanges(true);\r\n control.ModelHasMutated();\r\n\r\n if (control instanceof TabPage){\r\n control.IsTabSecurityProperties();\r\n }\r\n\r\n control.UpdateLabel();\r\n });\r\n\r\n controlEditor.Show();\r\n }\r\n\r\n CreateTab(control: IControl) {\r\n if (control instanceof Tab) {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = TabPage.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.TabPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n const tabPage = new TabPage(controlParam);\r\n control.AddSubControl(tabPage);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreateStepPage(control: IControl) {\r\n if (control instanceof Step) {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = StepPage.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.StepPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n const tabPage = new StepPage(controlParam);\r\n control.AddSubControl(tabPage);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreatePlannerPage(control: IControl) {\r\n if (control instanceof Planner) {\r\n let controlModel = new ControlModel();\r\n controlModel.Name = PlannerPage.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.PlannerPage;\r\n let controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n let plannerPage = new PlannerPage(controlParam);\r\n control.AddSubControl(plannerPage);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreateRootLevel(control: IControl) {\r\n if (control instanceof PlannerPage) {\r\n let controlModel = new ControlModel();\r\n controlModel.Name = PlannerLevel.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.PlannerLevel;\r\n let controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n let plannerLevel = new PlannerLevel(controlParam);\r\n control.AddSubControl(plannerLevel);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n CreatePlannerLevel(control: IControl) {\r\n if (control instanceof PlannerLevel) {\r\n let controlModel = new ControlModel();\r\n controlModel.Name = PlannerLevel.GetDefaultName();\r\n controlModel.TypeName = CONTROL_TYPES.PlannerLevel;\r\n let controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design,\r\n CreateControl: control.CreateControl\r\n };\r\n let plannerLevel = new PlannerLevel(controlParam);\r\n control.AddSubControl(plannerLevel);\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n private InitTranslations(translationModel: TranslationModel[]): TranslationModel[] {\r\n const languages = TranslationManager.Instance.Languages;\r\n let translations: TranslationModel[] = [];\r\n const desktopLanguage = GlobalManager.Instance.GetGlobal(GLOBALS.DESKTOP_LANGUAGE);\r\n\r\n _.forEach(languages, (item) => {\r\n const defaultTranslation = new TranslationModel();\r\n const defaultLanguage = new LanguageModel();\r\n if (item.Id) {\r\n defaultLanguage.K_Language = item.Id;\r\n defaultLanguage.FlagBase64 = item.Flag;\r\n defaultLanguage.ShortName = item.ShortName;\r\n defaultLanguage.Name = item.Name;\r\n defaultTranslation.Language = defaultLanguage;\r\n const selectedTranslation = _.find(translationModel, translation => translation.Language.K_Language === item.Id);\r\n defaultTranslation.Translation = selectedTranslation == null || selectedTranslation.Translation == null\r\n ? \"\" : this.CapitalizeFirstLetter(selectedTranslation.Translation);\r\n defaultTranslation.Selected = desktopLanguage === defaultLanguage.ShortName;\r\n translations.push(defaultTranslation);\r\n }\r\n });\r\n return translations;\r\n }\r\n\r\n InitializeTabs(control: IControl) {\r\n if (control instanceof Tab) {\r\n\r\n _.each(this.SubjectEntity.RelatedSubEntitiesModel,\r\n relatedSubEntities => {\r\n _.each(relatedSubEntities.Entities,\r\n subEntity => {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = this.CapitalizeFirstLetter(subEntity.EntityName);\r\n controlModel.NameTranslations = this.InitTranslations(subEntity.Translations);\r\n controlModel.TypeName = CONTROL_TYPES.TabPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design\r\n };\r\n const tabPage = new TabPage(controlParam);\r\n const gridControl = this.GenerateGridControl(subEntity, control.GetForm(), tabPage);\r\n tabPage.AddSubControl(gridControl);\r\n control.AddSubControl(tabPage);\r\n });\r\n });\r\n\r\n _.each(this.SubjectEntity.RelatedEntities.Entities,\r\n entity => {\r\n const controlModel = new ControlModel();\r\n controlModel.Name = this.CapitalizeFirstLetter(entity.EntityName);\r\n controlModel.NameTranslations = this.InitTranslations(entity.Translations);\r\n controlModel.TypeName = CONTROL_TYPES.TabPage;\r\n const controlParam: IControlParam = {\r\n Model: controlModel,\r\n Form: control.GetForm(),\r\n ParentControl: control,\r\n RenderMode: RenderModes.Design\r\n };\r\n const tabPage = new TabPage(controlParam);\r\n const gridControl = this.GenerateGridControl(entity, control.GetForm(), tabPage);\r\n tabPage.AddSubControl(gridControl);\r\n control.AddSubControl(tabPage);\r\n });\r\n this._hasChanges(true);\r\n }\r\n }\r\n\r\n private CheckEntityTypeByName(entityName: string): boolean {\r\n if (!entityName) return false;\r\n if (entityName.indexOf('SYS_') !== -1 || entityName.indexOf('CD_') !== -1) {\r\n return entityName.split('').filter(item => item === '_').length > 1;\r\n } else {\r\n return entityName.indexOf('_') !== -1;\r\n }\r\n }\r\n\r\n AfterDropFieldIntoGrid(context, item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (targetContext instanceof Grid && item instanceof FieldModel) {\r\n const field = item as FieldModel;\r\n const entity = sourceContext as EntityModel;\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n let entityName = entity.EntityName;\r\n let entityNameTranslation = entity.EntityNameTranslation;\r\n if (entity.EntityFullName) {\r\n entityName = entity.EntityFullName;\r\n entityNameTranslation = entity.EntityFullNameTranslation;\r\n }\r\n attachedFieldModel.EntityName = entityName;\r\n attachedFieldModel.EntityNameTranslation = entityNameTranslation;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n const alreadyAddedField = _.find(targetItems, (item: any) => {\r\n return item.Id === attachedFieldModel.Id\r\n });\r\n if (alreadyAddedField) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.FIELD_ALREADY_ADDED);\r\n return;\r\n }\r\n targetItems.splice(targetIndex, 0, attachedFieldModel);\r\n }\r\n\r\n if (targetContext instanceof Grid && item instanceof AttachedFieldModel) {\r\n targetItems.splice(targetIndex, 0, sourceItems.splice(sourceIndex, 1)[0]);\r\n }\r\n this._hasChanges(true);\r\n }\r\n\r\n DropControlFromToolBarProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof BaseControl) {\r\n let parentControl = null;\r\n let subForm = null;\r\n if (targetContext instanceof BaseForm) {\r\n subForm = targetContext;\r\n }\r\n\r\n if (targetContext instanceof BaseControl) {\r\n parentControl = targetContext as BaseControl;\r\n subForm = parentControl.GetForm();\r\n }\r\n\r\n if (!subForm) {\r\n throw new Error(\"SubForm is not defined\");\r\n }\r\n if (item instanceof BaseControl) {\r\n item.SetForm(subForm);\r\n const newControl = item.ToDesignedControl() as BaseControl;\r\n newControl.Model.Id = item.Model.Id;\r\n newControl.Model.LabelPosition = item.Model.LabelPosition || DEFAULT_LABEL_POSITION;\r\n newControl.Model.Name = item.Model.Name || item.GetDefaultName();\r\n newControl.Model.FieldNameTranslation = item.Model.FieldNameTranslation;\r\n\r\n newControl.SetForm(subForm);\r\n newControl.SetParentControl(parentControl);\r\n item.SetForm(null);\r\n\r\n if (item instanceof LinkList) {\r\n let allowedFormIndex = 3;\r\n if (this._subForms.indexOf(targetContext) !== allowedFormIndex) {\r\n return;\r\n }\r\n\r\n const usersEntity = _.find(this.SubjectEntity.RelatedEntities.Entities, (entity) => {\r\n return entity.EntityName === LINK_LIST_REQUIRED_ENTITY\r\n });\r\n if (usersEntity) {\r\n\r\n const usersEntityIconModel = new IconModel();\r\n usersEntityIconModel.FontName = usersEntity.FontName;\r\n usersEntityIconModel.Image = usersEntity.GraphicalIcon;\r\n usersEntityIconModel.Name = usersEntity.IconName;\r\n usersEntityIconModel.IsImage = Boolean(usersEntityIconModel.Image);\r\n usersEntityIconModel.IsIcon = !usersEntityIconModel.IsImage;\r\n\r\n const usersModel = new AttachedFieldModel();\r\n usersModel.EntityId = usersEntity.EntityId;\r\n usersModel.EntityName = usersEntity.EntityName;\r\n usersModel.EntityNameTranslation = usersEntity.EntityNameTranslation;\r\n usersModel.EntityIcon = usersEntityIconModel;\r\n\r\n const nameField = _.find(usersEntity.Fields, (field) => {\r\n return field.FieldName && field.FieldName.toUpperCase() === 'NAME'\r\n });\r\n if (nameField) {\r\n usersModel.Id = nameField.FieldId;\r\n usersModel.Name = nameField.FieldName;\r\n usersModel.FieldNameTranslation = nameField.FieldNameTranslation;\r\n }\r\n newControl.Model.Fields.push(usersModel);\r\n }\r\n }\r\n\r\n targetItems.splice(targetIndex, 0, newControl);\r\n if (newControl.GetRenderMode() === RenderModes.ToolBar) {\r\n newControl.SetRenderMode(RenderModes.Design);\r\n }\r\n\r\n if (parentControl && parentControl instanceof TabPage && parentControl.GetSubControls().length == 1) {\r\n parentControl.Name = this.CapitalizeFirstLetter(newControl.Name);\r\n parentControl.NameTranslations = this.InitTranslations(newControl.NameTranslations);\r\n parentControl.ModelHasMutated();\r\n }\r\n }\r\n }\r\n }\r\n\r\n DropFieldFromToolBarProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n let control = null;\r\n let subForm = null;\r\n let parentControl = null;\r\n if (targetContext instanceof SubForm || targetContext instanceof ActionBar || targetContext instanceof BottomBar) {\r\n subForm = targetContext;\r\n }\r\n\r\n if (targetContext instanceof BaseControl) {\r\n parentControl = targetContext as BaseControl;\r\n subForm = parentControl.GetForm();\r\n }\r\n\r\n if (item instanceof FieldModel) {\r\n const controlType = FIELD_TYPE_TO_CONTROL[item.FieldTypeName];\r\n let controlModel = new ControlModel();\r\n const defaultControlModel = this.GetDefaultControlModel(controlType);\r\n if (defaultControlModel) {\r\n controlModel = clone(defaultControlModel);\r\n }\r\n\r\n const entity = sourceContext as EntityModel;\r\n controlModel.TypeName = controlType;\r\n controlModel.Name = item.FieldName;\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = item.FieldId;\r\n attachedFieldModel.Name = item.FieldName;\r\n attachedFieldModel.FieldNameTranslation = item.FieldNameTranslation;\r\n\r\n attachedFieldModel.FieldIcon = new IconModel();\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.EntityName = entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityNameTranslation;\r\n attachedFieldModel.FieldTypeName = item.FieldTypeName;\r\n attachedFieldModel.ValTableId = item.ValTableId;\r\n attachedFieldModel.ValFieldId = item.ValFieldId;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n if (item.FieldIcon) {\r\n attachedFieldModel.FieldIcon.Name = item.FieldIcon.Name;\r\n attachedFieldModel.FieldIcon.FontName = item.FieldIcon.IconFontName;\r\n attachedFieldModel.FieldIcon.Image = item.FieldIcon.Image;\r\n attachedFieldModel.FieldIcon.IsIcon = item.FieldIcon.IsIcon;\r\n attachedFieldModel.FieldIcon.IsImage = item.FieldIcon.IsImage;\r\n }\r\n\r\n if (controlModel.LabelPosition === undefined) {\r\n controlModel.LabelPosition = DEFAULT_LABEL_POSITION;\r\n }\r\n\r\n controlModel.EntityId = entity.EntityId;\r\n controlModel.EntityTypeName = entity.TypeName;\r\n controlModel.Fields = [attachedFieldModel];\r\n controlModel.LabelPositionValue = LabelPositions[controlModel.LabelPosition];\r\n controlModel.IsBlobFieldAttached = CONRTOL_WITH_BLOBFIELDATTACHED.indexOf(attachedFieldModel.FieldTypeName) > -1;\r\n controlModel.Label = item.FieldNameTranslation || item.FieldName;\r\n controlModel.IsFieldAttached = true;\r\n const controlParams: IControlParam = {\r\n Form: subForm,\r\n Model: controlModel,\r\n RenderMode: RenderModes.Design,\r\n ParentControl: parentControl\r\n };\r\n\r\n control = ControlFactory.CreateControl(controlParams) as BaseControl;\r\n targetItems.splice(targetIndex, 0, control);\r\n new Notifier().Success(NOTIFICATIONS.NEW_CONTROL_CREATED);\r\n\r\n if (parentControl && parentControl.GetSubControls().length == 1 && parentControl.GetType() !== CONTROL_TYPES.Group) {\r\n parentControl.Name = this.CapitalizeFirstLetter(control.Name);\r\n parentControl.NameTranslations = this.InitTranslations(item.Translations);\r\n parentControl.ModelHasMutated();\r\n }\r\n }\r\n }\r\n\r\n MovingControlProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof BaseControl) {\r\n const control = item as BaseControl;\r\n\r\n sourceItems.splice(sourceIndex, 1);\r\n targetItems.splice(targetIndex, 0, control);\r\n\r\n if (targetContext instanceof BaseForm) {\r\n control.SetForm(targetContext);\r\n }\r\n if (targetContext instanceof BaseControl) {\r\n const parentControl = targetContext as BaseControl;\r\n control.SetParentControl(targetContext);\r\n control.SetForm(parentControl.GetForm());\r\n } else {\r\n control.SetParentControl(null);\r\n }\r\n }\r\n }\r\n\r\n AfterDropEntityIntoLinkList(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof AttachedFieldModel) {\r\n if (targetIndex === 0) {\r\n if (targetItems()[0].EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n targetItems.splice(sourceIndex, 0, targetItems.splice(sourceIndex, 1)[0]);\r\n }\r\n return;\r\n }\r\n\r\n targetItems.splice(targetIndex, 0, targetItems.splice(sourceIndex, 1)[0]);\r\n this._hasChanges(true);\r\n return;\r\n }\r\n\r\n if (item instanceof FieldModel) {\r\n const entity = sourceContext as EntityModel;\r\n\r\n const alreadyAttachedField = _.find(targetItems(), (field: any) => {\r\n return field.EntityId === entity.EntityId\r\n });\r\n if (alreadyAttachedField) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.FIELD_FROM_ENTITY_NAME_IS_ALREADY_PRESENT.replace('{entityName}', entity.EntityName));\r\n return;\r\n }\r\n\r\n this.AttachFieldToLinkList(item, entity, targetIndex, targetItems, targetContext);\r\n return;\r\n }\r\n\r\n if (parseInt(item) === RelationTypes.OneToMain) {\r\n const entity = sourceContext as EntityModel;\r\n const nameField = _.find(entity.Fields, (item) => item.FieldName === 'NAME');\r\n\r\n if (nameField) {\r\n const alreadyAttachedField = _.find(targetItems(), (field: any) => {\r\n return field.EntityId === entity.EntityId\r\n });\r\n if (alreadyAttachedField) {\r\n const notifier = new Notifier();\r\n notifier.Warning(NOTIFICATIONS.ENTITY_ALREADY_ADDED);\r\n return;\r\n }\r\n\r\n this.AttachFieldToLinkList(nameField, entity, targetIndex, targetItems, targetContext);\r\n }\r\n }\r\n }\r\n\r\n private AttachFieldToLinkList(field: FieldModel, entity: EntityModel, targetIndex, targetItems, targetContext) {\r\n const parentControl = targetContext as BaseControl;\r\n const attachedField = new AttachedFieldModel();\r\n\r\n attachedField.Id = field.FieldId;\r\n attachedField.Name = field.FieldName;\r\n attachedField.FieldNameTranslation = field.FieldNameTranslation;\r\n\r\n const icon = new IconModel();\r\n const isImage = entity.GraphicalIcon !== null;\r\n icon.Image = entity.GraphicalIcon;\r\n icon.FontName = entity.FontName;\r\n icon.Name = entity.IconName;\r\n icon.IsIcon = !isImage;\r\n icon.IsImage = isImage;\r\n\r\n attachedField.EntityIcon = icon;\r\n attachedField.EntityId = entity.EntityId;\r\n attachedField.EntityName = entity.EntityName;\r\n attachedField.EntityNameTranslation = entity.EntityNameTranslation;\r\n\r\n const primaryKeyField = _.find(entity.Fields, (item) => item.IsPrimaryKey);\r\n attachedField.PrimaryKeyName = primaryKeyField?.FieldName;\r\n\r\n if (targetIndex === 0 && targetItems()[0] && targetItems()[0].EntityName === LINK_LIST_REQUIRED_ENTITY) {\r\n targetItems.push(attachedField);\r\n } else {\r\n targetItems.splice(targetIndex, 0, attachedField);\r\n }\r\n\r\n parentControl.ModelHasMutated();\r\n this._hasChanges(true);\r\n }\r\n\r\n GenerateGridControl(entity: EntityModel, subForm: IForm, parentControl: IControl) {\r\n const controlModel = new ControlModel();\r\n controlModel.Id = 0;\r\n controlModel.TypeName = CONTROL_TYPES.Grid;\r\n controlModel.Name = entity.EntityName;\r\n controlModel.Label = entity.EntityNameTranslation;\r\n controlModel.EntityTypeName = entity.TypeName;\r\n controlModel.NameTranslations = entity.Translations;\r\n controlModel.IsFieldAttached = true;\r\n const topDefaultFields = ['F_TYPE', 'F_KIND', 'NAME'];\r\n _.each(topDefaultFields, (field) => {\r\n const defaultField = _.find(entity.Fields, (item) => {\r\n return item.FieldName === field\r\n });\r\n if (defaultField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = defaultField.FieldId;\r\n attachedFieldModel.Name = defaultField.FieldName;\r\n attachedFieldModel.FieldNameTranslation = defaultField.FieldNameTranslation;\r\n attachedFieldModel.FieldTypeName = defaultField.FieldTypeName;\r\n attachedFieldModel.EntityName = entity.EntityFullName || entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityFullNameTranslation || entity.EntityNameTranslation;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n });\r\n\r\n const entityFields = _.chain(entity.Fields).filter(item => item.FieldTypeName !== FIELD_TYPES.Property)\r\n .sortBy('Sort').value();\r\n _.each(entityFields, (field) => {\r\n if (this.GetSortGroup(field.Sort) === SortGroups.Custom) {\r\n let existField = _.find(controlModel.Fields, (item) => {\r\n return item.Id === field.FieldId\r\n });\r\n if (!existField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.IsVirtual = field.IsVirtual;\r\n attachedFieldModel.IsSystem = field.IsSystem;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n attachedFieldModel.EntityName = entity.EntityFullName || entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityFullNameTranslation || entity.EntityNameTranslation;\r\n attachedFieldModel.FieldTypeName = field.FieldTypeName;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n }\r\n });\r\n\r\n\r\n if (entity.LinkEntity) {\r\n const linkEntityFields = _.chain(entity.LinkEntity.Fields).filter(item => item.FieldTypeName !== FIELD_TYPES.Property)\r\n .sortBy('Sort').value();\r\n _.each(linkEntityFields,\r\n (field) => {\r\n if (this.GetSortGroup(field.Sort) === SortGroups.Custom) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = field.FieldId;\r\n attachedFieldModel.Name = field.FieldName;\r\n attachedFieldModel.FieldNameTranslation = field.FieldNameTranslation;\r\n attachedFieldModel.FieldTypeName = field.FieldTypeName;\r\n attachedFieldModel.EntityName = entity.LinkEntity.EntityFullName || entity.LinkEntity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.LinkEntity.EntityFullNameTranslation || entity.LinkEntity.EntityNameTranslation;\r\n attachedFieldModel.EntityId = entity.LinkEntity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.LinkEntity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.LinkEntity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n });\r\n }\r\n\r\n const bottomDefaultFields = ['CREATEDATE', 'CREATEDBY'];\r\n _.each(bottomDefaultFields, (field) => {\r\n const defaultField = _.find(entity.Fields, (item) => {\r\n return item.FieldName === field\r\n });\r\n if (defaultField) {\r\n const attachedFieldModel = new AttachedFieldModel();\r\n attachedFieldModel.Id = defaultField.FieldId;\r\n attachedFieldModel.Name = defaultField.FieldName;\r\n attachedFieldModel.FieldNameTranslation = defaultField.FieldNameTranslation;\r\n attachedFieldModel.FieldTypeName = defaultField.FieldTypeName;\r\n attachedFieldModel.EntityName = entity.EntityFullName || entity.EntityName;\r\n attachedFieldModel.EntityNameTranslation = entity.EntityFullNameTranslation || entity.EntityNameTranslation;\r\n attachedFieldModel.EntityId = entity.EntityId;\r\n attachedFieldModel.EntityTypeName = entity.TypeName;\r\n attachedFieldModel.RelatedField = this.CheckEntityTypeByName(entity.EntityName);\r\n attachedFieldModel.SubTableField = entity.TypeName === \"Sub\";\r\n controlModel.Fields.push(attachedFieldModel);\r\n }\r\n });\r\n\r\n _.each(controlModel.Fields,\r\n (field, index) => {\r\n field.Sort = index * 10;\r\n });\r\n\r\n const controlParams: IControlParam = {\r\n Form: subForm,\r\n Model: controlModel,\r\n RenderMode: RenderModes.Design,\r\n ParentControl: parentControl\r\n };\r\n\r\n const control = ControlFactory.CreateControl(controlParams) as BaseControl;\r\n return control;\r\n }\r\n\r\n ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n\r\n let subForm = null;\r\n let parentControl = null;\r\n if (targetContext instanceof BaseForm) {\r\n subForm = targetContext;\r\n }\r\n\r\n if (targetContext instanceof BaseControl) {\r\n parentControl = targetContext as BaseControl;\r\n subForm = parentControl.GetForm();\r\n }\r\n\r\n const entity = sourceContext as EntityModel;\r\n const gridControl = this.GenerateGridControl(entity, subForm, parentControl);\r\n targetItems.splice(targetIndex, 0, gridControl);\r\n\r\n if (parentControl && parentControl.GetSubControls().length == 1) {\r\n parentControl.Name = this.CapitalizeFirstLetter(entity.EntityName);\r\n parentControl.NameTranslations = this.InitTranslations(entity.Translations);\r\n parentControl.ModelHasMutated();\r\n }\r\n }\r\n\r\n AfterDropTapPageControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n if (item instanceof BaseControl) {\r\n const control = item as BaseControl;\r\n sourceItems.splice(sourceIndex, 1);\r\n targetItems.splice(targetIndex, 0, control);\r\n }\r\n this._hasChanges(true);\r\n }\r\n\r\n\r\n AfterDropControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n const isExistingControl = sourceContext instanceof BaseForm || sourceContext instanceof BaseControl;\r\n if (isExistingControl) {\r\n this.DropExistingControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n this.DropNewControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n\r\n this._hasChanges(true);\r\n }\r\n\r\n Save(): P.Promise<any> {\r\n const deferredResult = P.defer<any>();\r\n\r\n if (this.Validate()) {\r\n if (this.IsDashboard) {\r\n const gridStackSaveResult = this._gridStack.save(false);\r\n const gridStackWidgets = Array.isArray(gridStackSaveResult) ? gridStackSaveResult : [];\r\n\r\n this._subForms.forEach(subForm => {\r\n subForm.GetModel().Properties.DashboardBlock = new DashboardBlock(\r\n gridStackWidgets.find(widget => widget.id === subForm.GetFormGuid())\r\n );\r\n\r\n this._updateModel.SubForms.push(subForm.GetModel());\r\n })\r\n }\r\n\r\n const controls = _.filter(this.GetAllControls(), control => !control.IsStatic || control.GetModel().Predefined);\r\n\r\n this._updateModel.Controls = [];\r\n this._updateModel.ScreenId = this.GetId();\r\n\r\n _.each(controls, (item) => {\r\n const baseControl = item as BaseControl;\r\n const controlModel = new UpdateControlModel();\r\n\r\n controlModel.Id = baseControl.GetControlId();\r\n controlModel.Guid = baseControl.GetGuid();\r\n controlModel.Name = baseControl.GetModel().Name;\r\n controlModel.NameTranslations = baseControl.GetModel().NameTranslations;\r\n controlModel.DescriptionTranslations = baseControl.GetModel().DescriptionTranslations;\r\n controlModel.TypeName = baseControl.GetType();\r\n controlModel.RecordLifeStatusId = baseControl.GetModel().RecordLifeStatusId;\r\n controlModel.DestinationTypeId = baseControl.GetModel().DestinationTypeId;\r\n controlModel.FormId = baseControl.GetForm().GetFormId();\r\n controlModel.FormGuid = baseControl.GetForm().GetFormGuid();\r\n controlModel.LabelPosition = LabelPositions[baseControl.LabelPosition];\r\n controlModel.Properties = JSON.stringify(baseControl.Properties);\r\n if(!baseControl.Properties){\r\n let getGeneralProperties = baseControl.GeneralProperties;\r\n controlModel.Properties = getGeneralProperties ? getGeneralProperties.Serialize() : null;\r\n }\r\n controlModel.Description = baseControl.Description;\r\n controlModel.IconId = baseControl.Icon ? baseControl.Icon.Id : null;\r\n controlModel.UseFieldName = baseControl.GetModel().UseFieldName;\r\n controlModel.TitleFieldId = baseControl.GetModel().TitleFieldId;\r\n controlModel.KanbanSubjectId = baseControl.GetModel().KanbanSubjectId;\r\n controlModel.TodoEntityId = baseControl.GetModel().TodoEntityId;\r\n controlModel.TodoTypeId = baseControl.GetModel().TodoTypeId;\r\n controlModel.TodoFieldId = baseControl.GetModel().TodoFieldId;\r\n controlModel.ScreenId = baseControl.GetModel().ScreenId;\r\n\r\n _.each(baseControl.GetModel().Fields,\r\n field => {\r\n controlModel.AddField(field.Id, field.Sort, field.LinkRequiredObservable());\r\n });\r\n\r\n const parentControl = baseControl.GetParentControl();\r\n if (parentControl) {\r\n controlModel.ParentControlId = parentControl.GetControlId();\r\n controlModel.ParentControlGuid = parentControl.GetGuid();\r\n }\r\n controlModel.Sort = baseControl.GetSort();\r\n this._updateModel.Controls.push(controlModel);\r\n });\r\n\r\n this._updateModel.TableFormLinks = _.map(this._designModel.ScreenTypes,\r\n (screenType) => new MainFormUpdateModel({\r\n EntityId: this._designModel.ExistingScreenViewModel.EntityId,\r\n IsMain: screenType.IsMain,\r\n FormId: screenType.FormId\r\n }));\r\n\r\n this._updateModel.FormProperties = JSON.stringify(Serialize(this._formProperties));\r\n\r\n UpdateScreenStore.UpdateScreen(this._updateModel)\r\n .then(updateScreenModel => {\r\n PubSub.publish('RELOAD_MENU_AREAS', {});\r\n this.SetSubFormIds(updateScreenModel);\r\n this.SetControlIds(updateScreenModel);\r\n\r\n this._hasChanges(false);\r\n deferredResult.resolve(null);\r\n this.AfterSaveRemoveNotInitializedControlClass();\r\n })\r\n .fail(err => {\r\n let resultMessage = `Error occured during the update: ${err.message}`;\r\n deferredResult.reject({message: resultMessage});\r\n });\r\n } else {\r\n deferredResult.reject({message: 'Please, initialize controls'});\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n SetSubFormIds(model: UpdateScreenModel) {\r\n _.each(this._subForms, subForm => {\r\n const updatedSubForm = _.find(model.SubForms, item => item.Guid === subForm.GetFormGuid());\r\n\r\n if (updatedSubForm) {\r\n subForm.GetModel().Id = updatedSubForm.Id;\r\n }\r\n });\r\n }\r\n\r\n SetControlIds(model: UpdateScreenModel) {\r\n const controls = _.filter(this.GetAllControls(), control => {\r\n return control.IsStatic === false\r\n });\r\n _.each(controls, control => {\r\n const updatedControlModel = _.find(model.Controls, item => {\r\n return item.Guid === control.GetGuid()\r\n });\r\n if (updatedControlModel) {\r\n control.GetModel().Id = updatedControlModel.Id;\r\n }\r\n });\r\n }\r\n\r\n Validate() {\r\n let isValid = true;\r\n _.each(this.GetAllControls(), (item) => {\r\n const controlModel = item.GetModel();\r\n if (item instanceof StepPage) {\r\n if (!item.GetModel().ScreenId) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else if (item instanceof PlannerLevel) {\r\n if (item.GetModel().Fields.length < 2) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else if (item instanceof KanbanBoard) {\r\n if (!(controlModel.TitleFieldId && controlModel.TodoEntityId && controlModel.TodoTypeId && controlModel.TodoFieldId)) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else if (item instanceof ComplexControl) {\r\n if (!item.IsDesignValid()) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n } else {\r\n if (controlModel.IsFieldAttached || controlModel.IsBlobFieldAttached || controlModel.IsLookupFieldAttached || controlModel.IsMultiSelectFieldAttached) {\r\n if (controlModel.Fields.length === 0) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n } else {\r\n this.SetInitializedControl(item);\r\n this.RemoveParentControlClass(item);\r\n }\r\n }\r\n }\r\n if (!item.IsPropertiesValidToSave()) {\r\n isValid = false;\r\n this.NotInitializedControl(item);\r\n }\r\n });\r\n return isValid;\r\n }\r\n\r\n RemoveParentControlClass(item: IControl){\r\n const parentControl = item.GetParentControl();\r\n if(parentControl && (parentControl.GetType() === CONTROL_TYPES.TabPage || parentControl.GetType() === CONTROL_TYPES.StepPage)){\r\n let leastOneNotInitialized = _.filter(parentControl.GetSubControls(), (control)=> !control.GetModel().InitializedControl)\r\n if ($(parentControl.GetWrapper()).hasClass('notInitializedControl')){\r\n if (leastOneNotInitialized.length === 0){\r\n $(parentControl.GetWrapper()).removeClass('notInitializedControl');\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n AfterSaveRemoveNotInitializedControlClass(){\r\n $('.notInitializedControl').removeClass('notInitializedControl');\r\n }\r\n\r\n SetInitializedControl(item: IControl){\r\n item.GetModel().SetInitializedControl(true);\r\n }\r\n\r\n NotInitializedControl(item: IControl){\r\n const parentControl = item.GetParentControl();\r\n\r\n $(item.GetWrapper()).effect('bounce');\r\n item.GetModel().SetInitializedControl(false);\r\n\r\n if (item.GetType() === CONTROL_TYPES.StepPage){\r\n if (!$(item.GetWrapper()).hasClass('notInitializedControl')){\r\n $(item.GetWrapper()).addClass('notInitializedControl');\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(item.GetWrapper()).offset().top\r\n }, 1000);\r\n }\r\n }else if (parentControl && item.GetParentControl().GetType() === CONTROL_TYPES.TabPage){\r\n if (!$(parentControl.GetWrapper()).hasClass('notInitializedControl')){\r\n $(parentControl.GetWrapper()).addClass('notInitializedControl');\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(parentControl.GetWrapper()).offset().top\r\n }, 1000);\r\n } else {\r\n $([document.documentElement, document.body]).animate({\r\n scrollTop: $(parentControl.GetWrapper()).offset().top\r\n }, 1000);\r\n }\r\n }\r\n }\r\n\r\n get SubFormsWith() {\r\n return this._subFormsWith;\r\n }\r\n\r\n InitCalcSubFormSize() {\r\n const self = this;\r\n let style = {};\r\n const mqb = window.matchMedia(\"(max-width: 1600px)\");\r\n const mqm = window.matchMedia(\"(max-width: 1270px)\");\r\n const consultSubform = () => {\r\n if (self.GetType() === ScreenTypes[ScreenTypes.EditScreen]) {\r\n if (self._subForms.length === 4) {\r\n if (mqb.matches) {\r\n style = {width: '48%'}\r\n }\r\n\r\n if (mqm.matches) {\r\n style = {width: '96%'}\r\n }\r\n\r\n if (!mqb.matches) {\r\n style = {width: '30%'}\r\n }\r\n }\r\n }\r\n if (self._subForms.length === 3) {\r\n if (mqb.matches) {\r\n style = {width: '48%'}\r\n }\r\n\r\n if (mqm.matches) {\r\n style = {width: '96%'}\r\n }\r\n\r\n if (!mqb.matches) {\r\n style = {width: '32.3%'}\r\n }\r\n }\r\n self._subFormsWith(style);\r\n };\r\n\r\n window.onresize = () => {\r\n consultSubform();\r\n }\r\n\r\n consultSubform();\r\n }\r\n\r\n GetSortGroup(sort: number) {\r\n if (_.include(_.range(1000, 1999), sort)) {\r\n return SortGroups.Header;\r\n }\r\n if (_.include(_.range(2000, 2999), sort)) {\r\n return SortGroups.OptionalHeader;\r\n }\r\n if (_.include(_.range(3000, 7999), sort)) {\r\n return SortGroups.Custom;\r\n }\r\n if (_.include(_.range(8000, 8999), sort)) {\r\n return SortGroups.OptionalFooter;\r\n }\r\n if (_.include(_.range(9000, 9999), sort)) {\r\n return SortGroups.Footer;\r\n }\r\n if (_.include([0], sort)) {\r\n return SortGroups.Undefined;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private DropNewControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n //Check sequence\r\n const positionIsValid = this._afterDropValidation.IsPositionValid(item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext);\r\n\r\n if (!positionIsValid) {\r\n return;\r\n }\r\n\r\n //Drop control from toolBar\r\n if (sourceContext instanceof ControlGroup) {\r\n this.DropControlFromToolBarProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n if (sourceContext instanceof EntityModel) {\r\n const itemNumber = parseInt(item);\r\n\r\n const screenType = this.GetType();\r\n\r\n //Drop 1:N\r\n if (\r\n itemNumber === RelationTypes.OneToMany &&\r\n _.includes(\r\n [\r\n ScreenTypes[ScreenTypes.EditScreen],\r\n ScreenTypes[ScreenTypes.ConsultScreen]\r\n ],\r\n screenType\r\n )\r\n ) {\r\n this.ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n //Drop 1:1 Subject\r\n if (\r\n itemNumber === RelationTypes.OneToOneSubject &&\r\n _.includes(\r\n [\r\n ScreenTypes[ScreenTypes.ListScreen],\r\n ScreenTypes[ScreenTypes.Portlet],\r\n ScreenTypes[ScreenTypes.SpecialScreen],\r\n ScreenTypes[ScreenTypes.Dashboard]\r\n ],\r\n screenType\r\n )\r\n ) {\r\n this.ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n //Drop 1:1\r\n if (\r\n itemNumber === RelationTypes.OneToOne &&\r\n _.includes(\r\n [\r\n ScreenTypes[ScreenTypes.EditScreen],\r\n ScreenTypes[ScreenTypes.ConsultScreen],\r\n ScreenTypes[ScreenTypes.ListScreen]\r\n ],\r\n screenType\r\n )\r\n ) {\r\n this.ConvertEntityToGrid(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n //Drop field from ToolBar\r\n this.DropFieldFromToolBarProcess(\r\n item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext\r\n );\r\n }\r\n }\r\n\r\n private DropExistingControl(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext) {\r\n const positionIsValid = this._afterDropValidation.IsPositionValid(item,\r\n sourceIndex,\r\n sourceItems,\r\n sourceContext,\r\n targetIndex,\r\n targetItems,\r\n targetContext);\r\n\r\n if (!positionIsValid) {\r\n const movingControl = targetItems.splice(sourceIndex, 1)[0];\r\n targetItems.splice(sourceIndex, 0, movingControl);\r\n return;\r\n }\r\n\r\n //Moving existing control\r\n this.MovingControlProcess(item, sourceIndex, sourceItems, sourceContext, targetIndex, targetItems, targetContext);\r\n }\r\n\r\n CapitalizeFirstLetter(stringValue: string) {\r\n return stringValue.charAt(0).toUpperCase() + stringValue.slice(1).toLowerCase();\r\n }\r\n}","// Module\nvar code = \"<!--ko if: _configuringLayout--> <div class=\\\"layout-controls clearfix\\\"> <div class=\\\"pull-right\\\"> <button class=\\\"btn blue-dark\\\" data-bind=\\\"click: AddSubForm\\\"> <i class=\\\"fa fa-plus\\\"></i> <!--ko text: _labels.ADD_SUBFORM --><!-- /ko--> </button> <button class=\\\"btn green\\\" data-bind=\\\"click: ApplyLayout\\\"> <i class=\\\"fa fa-align-left\\\"></i> <!--ko text: _labels.APPLY --><!-- /ko--> </button> </div> </div> <!--/ko--> <div class=\\\"portlet-body\\\"> <div class=\\\"row form-wrapper\\\"> <div class=\\\"form-container\\\"> <div id=\\\"dashboard-design-container\\\" class=\\\"grid-stack\\\" style=\\\"min-height:300px\\\"></div> </div> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"portlet-body process-card-design-screen\\\" data-bind=\\\"style: _screenWidth(), css: {'custom-weight': _hasCustomWeight()}, class: _customStyle()\\\"> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'custom-color': _hasCustomColor()}, style: _fontColor()\\\"> <div class=\\\"form-container\\\" data-bind=\\\"css: {'link-list-subform': WithLinkList}\\\"> <div class=\\\"left-site\\\"> <div class=\\\"form-wrapper\\\"> <!-- ko with: FirstSubForm --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"style: $parent._screenBgColor()\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> <!-- /ko --> </div> </div> <div class=\\\"right-site\\\"> <div class=\\\"form-wrapper\\\"> <!-- ko foreach: ThreeSubFormsWithoutFirst --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded}\\\" class=\\\"mainSubForm col-md-4 form-wrapper__main-sub-form\\\"> <div class=\\\"box-shadow-wrapper\\\" data-bind=\\\"style: $parent._screenBgColor()\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> <!-- /ko --> </div> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div data-bind=\\\"dragula: { data: Controls, group: 'ToolBarToDesigner', afterDrop: $root.AfterDropControl.bind($root) }\\\" id=\\\"bottomSubForm\\\" class=\\\"dropcontrol-container microClearfix\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nexport interface IRecordPersonalizationParams {\r\n\tPossibleToPersonalize: boolean;\r\n\tIsPersonal: boolean;\r\n}\r\n\r\nexport class RecordPersonalizationModel {\r\n\tPossibleToPersonalize: KnockoutObservable<boolean>;\r\n\tAlreadyPersonalized: KnockoutObservable<boolean>;\r\n\tPersonalizationSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params?: IRecordPersonalizationParams) {\r\n\t\tlet options = params || this.GetDefaultParams();\r\n\t\tthis.PossibleToPersonalize = ko.observable(options.PossibleToPersonalize);\r\n\t\tthis.AlreadyPersonalized = ko.observable(options.IsPersonal);\r\n\t\tthis.PersonalizationSelected = ko.observable(options.IsPersonal);\r\n\t}\r\n\r\n\tprivate GetDefaultParams(): IRecordPersonalizationParams {\r\n\t\treturn {\r\n\t\t\tPossibleToPersonalize: false,\r\n\t\t\tIsPersonal: false\r\n\t\t}\r\n\t}\r\n}","import * as ko from \"knockout\";\r\n\r\nimport { RecordPersonalizationModel, IRecordPersonalizationParams } from \"Core/Components/Controls/MakePersonal/Models/RecordPersonalizationModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nimport MakePersonalTemplate from \"Core/Components/Controls/MakePersonal/Templates/MakePersonal.html\";\r\n\r\nexport class MakePersonal {\r\n\tprivate _model: KnockoutObservable<RecordPersonalizationModel>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(params?: IRecordPersonalizationParams) {\r\n\t\tthis._model = ko.observable(new RecordPersonalizationModel(params));\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn MakePersonalTemplate;\r\n\t}\r\n\r\n\tGetPersonalizationInfo(): RecordPersonalizationModel {\r\n\t\treturn this._model();\r\n\t}\r\n\r\n\tget IsMakePersonal(): boolean {\r\n\t\treturn this._model() && (this._model().AlreadyPersonalized() || this._model().PersonalizationSelected() || this._model().PossibleToPersonalize())\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _model --> <!-- ko if: PossibleToPersonalize --> <label class=\\\"custom-toggle_container medium-mode\\\"> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: PersonalizationSelected\\\"> <i class=\\\"fa fa-toggle-on\\\" data-toggle-name=\\\"ON\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-toggle-name=\\\"OFF\\\"></i> </span> <span class=\\\"toggle-name\\\"><!-- ko text: $parent._labels.MAKE_PERSONAL --><!-- /ko --></span> </label> <!-- /ko --> <!-- ko if: AlreadyPersonalized --> <label class=\\\"control-label\\\"><pre>Record personalized</pre></label> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nexport interface IRecordExampleInfoParams {\r\n\tPossibleToExample: boolean;\r\n\tIsExample: boolean;\r\n}\r\n\r\nexport class RecordExampleInfoModel {\r\n\tPossibleToExample: KnockoutObservable<boolean>;\r\n\tAlreadyExample: KnockoutObservable<boolean>;\r\n\tExampleSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(params?: IRecordExampleInfoParams) {\r\n\t\tlet options = params || this.GetDefaultParams();\r\n\t\tthis.PossibleToExample = ko.observable(options.PossibleToExample);\r\n\t\tthis.AlreadyExample = ko.observable(options.IsExample);\r\n\t\tthis.ExampleSelected = ko.observable(options.IsExample);\r\n\t}\r\n\r\n\tprivate GetDefaultParams(): IRecordExampleInfoParams {\r\n\t\treturn {\r\n\t\t\tPossibleToExample: false,\r\n\t\t\tIsExample: false\r\n\t\t}\r\n\t}\r\n}","export const EVENTS = {\r\n\tMAKE_EXAMPLE: 'MAKE_EXAMPLE'\r\n}","import * as ko from \"knockout\";\r\n\r\nimport { RecordExampleInfoModel, IRecordExampleInfoParams } from \"Core/Components/Controls/MakeExample/Models/RecordExampleInfoModel\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {Event} from 'Core/Common/Event'\r\nimport {EVENTS} from \"Core/Components/Controls/MakeExample/Events\";\r\n\r\nimport MakeExampleTemplate from \"Core/Components/Controls/MakeExample/Templates/MakeExample.html\";\r\n\r\n\r\nexport class MakeExample extends Event {\r\n\tprivate _model: KnockoutObservable<RecordExampleInfoModel>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(params?: IRecordExampleInfoParams) {\r\n\t\tsuper();\r\n\t\tthis._model = ko.observable(new RecordExampleInfoModel(params));\r\n\t\tthis.AddEvent(EVENTS.MAKE_EXAMPLE);\r\n\t\tthis._model().ExampleSelected.subscribe((newValue) => {\r\n\t\t\tthis.Trigger(EVENTS.MAKE_EXAMPLE, {IsExample: newValue });\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn MakeExampleTemplate;\r\n\t}\r\n\r\n\tGetExampleInfo(): RecordExampleInfoModel {\r\n\t\treturn this._model();\r\n\t}\r\n\r\n\tget IsMakeExample(): boolean {\r\n\t\treturn this._model() && (this._model().PossibleToExample() || this._model().AlreadyExample() || this._model().ExampleSelected())\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: _model --> <!-- ko if: PossibleToExample --> <label class=\\\"custom-toggle_container medium-mode\\\"> <span class=\\\"custom-toggle_wrapper transition\\\"> <input type=\\\"checkbox\\\" class=\\\"toggle-checkbox\\\" data-bind=\\\"checked: ExampleSelected\\\"> <i class=\\\"fa fa-toggle-on\\\" data-toggle-name=\\\"ON\\\"></i> <i class=\\\"fa fa-toggle-off\\\" data-toggle-name=\\\"OFF\\\"></i> </span> <span class=\\\"toggle-name\\\"><!-- ko text: $parent._labels.MAKE_EXAMPLE --><!-- /ko --></span> </label> <!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","import { SecurityDataModel } from \"../Form/Models/SecurityDataModel\";\r\n\r\nexport class SecurityEditorModel {\r\n\tOwner: User;\r\n\tUsers: User[];\r\n\tSecurityPass: SecurityPassConfig;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = [];\r\n\t\tthis.SecurityPass = new SecurityPassConfig();\r\n\t}\r\n}\r\n\r\nexport class User {\r\n\tId: number;\r\n\tName: string;\r\n\tSecurityData: SecurityDataModel;\r\n\tLevel: number;\r\n\tRights: number;\r\n\tOptionalRights: number;\r\n\tDeleted: boolean;\r\n}\r\n\r\nexport class SecurityPassConfig {\r\n\tDoNotPass: boolean;\r\n\tPassRights: boolean;\r\n\tPassOptionalRights: boolean;\r\n\tPassInheritance: boolean;\r\n\tRefusePass: boolean;\r\n\tPassOwner: boolean;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\n\r\nimport { Modal } from \"Core/Common/Modal\";\r\n\r\nimport { SecurityEditorModel, User } from \"Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\nimport { SecurityEditorFormModel, User as UserFormModel } from \"Core/Components/SecurityEditor/Form/Models/SecurityEditorFormModel\";\r\n\r\nimport SecurityEditorFormTemplate from 'Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm.html';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nko.templates['Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm'] = SecurityEditorFormTemplate;\r\n\r\n\r\n\r\nexport const EVENTS = {\r\n ADDING_NEW_USER: 'AddingNewUser',\r\n SAVING_USERS: 'SavingUsers',\r\n SELECT_OWNER: 'SelectOwner'\r\n};\r\n\r\nexport class SecurityEditorForm extends Event {\r\n private _model: SecurityEditorFormModel;\r\n private _readonly: boolean;\r\n private _modal: Modal;\r\n private _labels = LABELS;\r\n\r\n constructor(model: SecurityEditorFormModel, readOnly: boolean) {\r\n super();\r\n\r\n this._model = model;\r\n this._readonly = readOnly;\r\n\r\n this.Init();\r\n }\r\n\r\n Show() {\r\n this._modal.Show();\r\n }\r\n\r\n Close() {\r\n this._modal.Close();\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Components/SecurityEditor/Form/Templates/SecurityEditorForm';\r\n }\r\n\r\n AfterRender(el) {\r\n\r\n }\r\n\r\n OnRemove(user: UserFormModel) {\r\n user.Deleted(true);\r\n }\r\n\r\n OnAdd() {\r\n this.Trigger(EVENTS.ADDING_NEW_USER);\r\n }\r\n\r\n OnSave() {\r\n const model = new SecurityEditorModel();\r\n model.Users = this._model.Users().map(user => {\r\n const securityEditorUser = new User();\r\n\r\n securityEditorUser.Id = user.Id;\r\n\t\t\tsecurityEditorUser.Name = user.Name;\r\n\t\t\tsecurityEditorUser.SecurityData = user.SecurityData;\r\n securityEditorUser.Rights = user.ActiveRights().Value;\r\n securityEditorUser.OptionalRights = user.ActiveOptionalRights().Value;\r\n securityEditorUser.Deleted = user.Deleted();\r\n\r\n return securityEditorUser;\r\n });\r\n\r\n const owner = new User();\r\n\r\n owner.Name = this._model.Owner().Name;\r\n\t\towner.Id = this._model.Owner().Id;\r\n\t\towner.SecurityData = this._model.Owner().SecurityData;\r\n model.Owner = owner;\r\n\r\n model.SecurityPass.PassOwner = this._model.SecurityPass.PassOwner();\r\n model.SecurityPass.DoNotPass = this._model.SecurityPass.DoNotPassRights;\r\n model.SecurityPass.PassRights = this._model.SecurityPass.PassRights;\r\n model.SecurityPass.PassOptionalRights = this._model.SecurityPass.PassOptionalRights;\r\n model.SecurityPass.PassInheritance = this._model.SecurityPass.PassInheritance();\r\n model.SecurityPass.RefusePass = this._model.SecurityPass.RefusePass();\r\n\r\n this.Trigger(EVENTS.SAVING_USERS, model);\r\n this.Close();\r\n }\r\n\r\n OnCancel() {\r\n this.Close();\r\n }\r\n\r\n AddUser(user: UserFormModel) {\r\n const existingUser = _.find<UserFormModel>(this._model.Users(), u => u.Id === user.Id);\r\n\r\n if (existingUser) {\r\n existingUser.Deleted(false);\r\n } else {\r\n this._model.Users.push(user);\r\n }\r\n }\r\n\r\n private Init() {\r\n this.InitModal();\r\n this.AddEvent(EVENTS.ADDING_NEW_USER);\r\n this.AddEvent(EVENTS.SAVING_USERS);\r\n this.AddEvent(EVENTS.SELECT_OWNER);\r\n }\r\n\r\n private InitModal() {\r\n this._modal = new Modal({\r\n width: '700',\r\n minHeight: '300'\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n private SelectOwner() {\r\n this.Trigger(EVENTS.SELECT_OWNER);\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"portlet box blue\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"caption\\\"> <span class=\\\"caption-subject\\\"> <i class=\\\"fa fa-lock\\\"></i> <!-- ko text: _labels.SECURITY_LABEL --><!-- /ko --> </span> </div> </div> <div class=\\\"portlet-body\\\"> <div class=\\\"form clearfix\\\"> <div class=\\\"form-group\\\"> <div class=\\\"lead\\\"> <div> <label class=\\\"bold\\\"><!-- ko text: _labels.PROFILE --><!-- /ko -->:</label> <span data-bind=\\\"text: _model.Owner().SecurityData.ProfileName\\\"></span> </div> <div> <label class=\\\"bold\\\"><!-- ko text: _labels.OWNER_LABEL --><!-- /ko -->:</label> <span data-bind=\\\"text: _model.Owner().Name\\\"></span> <a data-bind=\\\"click: SelectOwner\\\" class=\\\"fa fa-search\\\"></a> </div> </div> </div> <table class=\\\"table table-striped\\\"> <thead> <tr> <th><!-- ko text: _labels.USER_USER_GROUP_LABEL --><!-- /ko --></th> <th><!-- ko text: _labels.RIGHTS_LABEL --><!-- /ko --></th> <th><!-- ko text: _labels.OPTIONALS_RIGHTS_LABEL --><!-- /ko --></th> <!-- ko if: !_readonly --> <th></th> <!-- /ko --> </tr> </thead> <tbody> <!-- ko foreach: _model.Users --> <!-- ko if: !Deleted() --> <tr class=\\\"vertical-align-m\\\"> <td data-bind=\\\"text: Name\\\"></td> <!-- ko if: $parent._readonly--> <td> <span data-bind=\\\"text: ActiveRights().Name\\\"></span> </td> <td> <span data-bind=\\\"text: ActiveOptionalRights().Name\\\"></span> </td> <!-- /ko --> <!-- ko if: !$parent._readonly --> <td> <select data-bind=\\\"options:\\r\\n Rights,\\r\\n optionsText: 'Translation',\\r\\n value: ActiveRights\\\" class=\\\"form-control\\\"></select> </td> <td> <select data-bind=\\\"options:\\r\\n OptionalRights,\\r\\n optionsText: 'Translation',\\r\\n value: ActiveOptionalRights\\\" class=\\\"form-control\\\"></select> </td> <td> <a data-bind=\\\"click: $parent.OnRemove.bind($parent, $data)\\\" class=\\\"btn btn-danger\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> </td> <!-- /ko --> </tr> <!-- /ko --> <!-- /ko --> </tbody> </table> <!--ko with: _model.SecurityPass--> <div class=\\\"form clearfix\\\"> <div class=\\\"form-group pull-left\\\"> <div> <input name=\\\"passoption\\\" value=\\\"do not pass\\\" data-bind=\\\"checked: PassOption, disable: $parent._readonly\\\" type=\\\"radio\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.DO_NOT_PASS_SECURITY_LABEL --> <!-- /ko --></label> </div> <div> <input name=\\\"passoption\\\" value=\\\"pass\\\" data-bind=\\\"checked: PassOption, disable: $parent._readonly\\\" type=\\\"radio\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.PASS_RIGHTS_LABEL --><!-- /ko --></label> </div> <div> <input name=\\\"passoption\\\" value=\\\"pass optional\\\" data-bind=\\\"checked: PassOption, disable: $parent._readonly\\\" type=\\\"radio\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.PASS_OPTIONAL_RIGHTS_LABEL --> <!-- /ko --></label> </div> </div> <div class=\\\"form-group pull-right\\\"> <div> <input data-bind=\\\"uniform: PassOwner, checked: PassOwner, enable: EnablePassOwner() && !$parent._readonly\\\" type=\\\"checkbox\\\"> <label data-bind=\\\"css: {bold: EnablePassOwner() && !$parent._readonly}\\\"><!-- ko text: $parent._labels.PASS_OWNER_LABEL --> <!-- /ko --></label> </div> <div> <input data-bind=\\\"uniform: PassInheritance, checked: PassInheritance, enable: EnablePassInheritance() && !$parent._readonly\\\" type=\\\"checkbox\\\"> <label data-bind=\\\"css: {bold: EnablePassInheritance() && !$parent._readonly}\\\"><!-- ko text: $parent._labels.PASS_INHERITANCE_SETTINGS_LABEL --> <!-- /ko --></label> </div> <div> <input data-bind=\\\"uniform: RefusePass, checked: RefusePass, disable: $parent._readonly\\\" type=\\\"checkbox\\\"> <label class=\\\"bold\\\"><!-- ko text: $parent._labels.REFUSE_PASSED_SECURITY_LABEL --> <!-- /ko --></label> </div> </div> </div> <!--/ko--> <!-- ko if: _readonly --> <div class=\\\"pull-right\\\"> <button data-bind=\\\"click: OnCancel\\\" class=\\\"btn btn-default\\\"><!-- ko text: _labels.CLOSE_LABEL --> <!-- /ko --></button> </div> <!-- /ko --> <!-- ko if: !_readonly --> <button data-bind=\\\"click: OnAdd\\\" class=\\\"btn btn-primary\\\"><!-- ko text: _labels.ADD --><!-- /ko --></button> <div class=\\\"pull-right\\\"> <button data-bind=\\\"click: OnSave\\\" class=\\\"btn btn-success\\\"><!-- ko text: _labels.SAVE --> <!-- /ko --></button> <button data-bind=\\\"click: OnCancel\\\" class=\\\"btn btn-danger\\\"><!-- ko text: _labels.CANCEL --> <!-- /ko --></button> </div> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {RecordSecurityRights, Rights} from \"Core/Common/Enums/RecordSecurityRights\";\r\nimport { SecurityDataModel } from './SecurityDataModel';\r\nimport enumerable from '../../../../Common/Decorators/EnumerableDecorator';\r\n\r\nexport class SecurityEditorFormModel {\r\n\tOwner: KnockoutObservable<User>;\r\n\tUsers: KnockoutObservableArray<User>;\r\n\tSecurityPass: SecurityPassViewModel;\r\n\r\n\tconstructor() {\r\n\t\tthis.Users = ko.observableArray([]);\r\n\t\tthis.Owner = ko.observable(null);\r\n\t}\r\n}\r\n\r\nexport class User {\r\n\tId: number;\r\n\tName: string;\r\n\tSecurityData: SecurityDataModel;\r\n\tActiveRights: KnockoutObservable<Rights>;\r\n\tRights: KnockoutObservableArray<Rights>;\r\n\r\n\tActiveOptionalRights: KnockoutObservable<Rights>;\r\n\tOptionalRights: KnockoutObservableArray<Rights>;\r\n\r\n\tDeleted: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Rights = ko.observableArray(RecordSecurityRights.Instance.GetAll());\r\n\t\tthis.OptionalRights = ko.observableArray(RecordSecurityRights.Instance.GetAll());\r\n\r\n\t\tconst defaultRights = _.find<Rights>(this.Rights(), rights => rights.Name === RecordSecurityRights.Instance.NoAccess.Name);\r\n\t\tthis.ActiveRights = ko.observable(defaultRights);\r\n\r\n\t\tconst defaultOptionalRights = _.find<Rights>(this.Rights(), rights => rights.Name === RecordSecurityRights.Instance.NoAccess.Name);\r\n\t\tthis.ActiveOptionalRights = ko.observable(defaultOptionalRights);\r\n\r\n\t\tthis.Deleted = ko.observable(false);\r\n\t}\r\n\r\n\tstatic Create(id: number, name: string, securityData: SecurityDataModel, rightsValue?: number, optionaRightsValue?: number, deleted?: boolean) {\r\n\t\tconst user = new User();\r\n\r\n\t\tuser.Id = id;\r\n\t\tuser.Name = name;\r\n\t\tuser.SecurityData = securityData;\r\n\r\n\t\tif (!id) {\r\n\t\t\tuser.Name = \"Undefined\";\r\n\t\t}\r\n\r\n\t\tif (deleted) {\r\n user.Deleted(deleted);\r\n }\r\n\r\n\t\tif (rightsValue || optionaRightsValue) {\r\n\t\t\tif (rightsValue >= 512) {\r\n\t\t\t\trightsValue -= 512;\r\n\t\t\t}\r\n\r\n\t\t\tconst activeRights = _.find<Rights>(user.Rights(), r => r.Value === rightsValue);\r\n\t\t\tuser.ActiveRights(activeRights);\r\n\r\n\t\t\tconst optionalRights = _.find<Rights>(user.OptionalRights(), r => r.Value === optionaRightsValue);\r\n\t\t\tuser.ActiveOptionalRights(optionalRights);\r\n\t\t}\r\n\r\n\t\treturn user;\r\n\t}\r\n}\r\n\r\nexport class SecurityPassViewModel {\r\n\tPassOption: KnockoutObservable<string>;\r\n\tPassInheritance: KnockoutObservable<boolean>;\r\n\tRefusePass: KnockoutObservable<boolean>;\r\n\tPassOwner: KnockoutObservable<boolean>;\r\n\r\n\tEnablePassOwner: KnockoutObservable<boolean>;\r\n\tEnablePassInheritance: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis.PassOption = ko.observable(null);\r\n\t\tthis.PassInheritance = ko.observable(false);\r\n\t\tthis.RefusePass = ko.observable(false);\r\n\t\tthis.PassOwner = ko.observable(false);\r\n\r\n\t\tthis.EnablePassOwner = ko.observable(false);\r\n\t\tthis.EnablePassInheritance = ko.observable(false);\r\n\r\n\t\tthis.PassOption.subscribe(() => {\r\n\t\t\tconst passAnyRights = this.PassRights || this.PassOptionalRights;\r\n\r\n\t\t\tthis.EnablePassOwner(passAnyRights);\r\n\t\t\tthis.EnablePassInheritance(passAnyRights);\r\n\r\n\t\t\tif (!passAnyRights) {\r\n\t\t\t\tthis.PassOwner(false);\r\n\t\t\t\tthis.PassInheritance(false);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get DoNotPassRights() {\r\n\t\treturn this.PassOption() === 'do not pass';\r\n\t}\r\n\r\n\t@enumerable get PassRights() {\r\n\t\treturn this.PassOption() === 'pass';\r\n\t}\r\n\r\n\t@enumerable get PassOptionalRights() {\r\n\t\treturn this.PassOption() === 'pass optional';\r\n\t}\r\n\r\n\tstatic Create(doNotPass: boolean,\r\n\t\t\t\t passRights: boolean,\r\n\t\t\t\t passOptionalRights: boolean,\r\n\t\t\t\t passInheritance: boolean,\r\n\t\t\t\t refusePass: boolean,\r\n\t\t\t\t passOwner: boolean) {\r\n\r\n\t\tconst viewModel = new SecurityPassViewModel();\r\n\r\n\t\tconst passOption = doNotPass && 'do not pass' || passRights && 'pass' || passOptionalRights && 'pass optional';\r\n\r\n\t\tviewModel.PassOption(passOption);\r\n\t\tviewModel.PassInheritance(passInheritance);\r\n\t\tviewModel.RefusePass(refusePass);\r\n\t\tviewModel.PassOwner(passOwner);\r\n\r\n\t\treturn viewModel;\r\n\t}\r\n}","import { URL } from 'Core/Common/Url';\nimport { Request, IRequestOptions } from 'Core/Common/Request';\nimport { P } from 'Core/Common/Promise';\nimport { SecurityDataDtoModel } from '../Models/SecurityDataDtoModel';\r\n\nexport class SecurityEditorStore {\n\tstatic GetSecurityInfoForRecord(params: { EntityId: number, RecordId: number }): P.Promise<any> {\n\n\t\tvar deferredResult = P.defer<any>();\n\n\t\tvar requestParams: IRequestOptions = {\n\t\t\tproxy: {\n\t\t\t\turl: URL.SECURITY_EDITOR.GET_SECURITY_INFO_FOR_RECORD,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttype: 'POST'\n\t\t\t}, params: params\n\t\t};\n\n\t\tRequest.Send(requestParams)\n\t\t\t.then(data => this.ResolveObjectResponse(data, deferredResult))\n\t\t\t.fail(() => this.RejectResponse(\"Error getting security information\", deferredResult));\n\n\t\treturn deferredResult.promise();\n\t}\n\n\tstatic GetSecurityData(params: { UserId: number }): P.Promise<SecurityDataDtoModel> {\n\n\t\tvar deferredResult = P.defer<any>();\n\n\t\tvar requestParams: IRequestOptions = {\n\t\t\tproxy: {\n\t\t\t\turl: URL.USER.GET_SECURITY_DATA,\n\t\t\t\tdataType: 'json',\n\t\t\t\ttype: 'GET'\n\t\t\t},\n\t\t\tparams: params\n\t\t};\n\n\t\tRequest.Send(requestParams).then(data => {\n\t\t\tdeferredResult.resolve(data);\n\t\t}).fail(data => { deferredResult.reject({ message: JSON.parse(data.message).Message }) });\n\n\t\treturn deferredResult.promise();\n\t}\n\n\tprivate static ResolveObjectResponse<T>(response, deferredResult: P.Deferred<T>) {\n\t\tif (response.IsSuccessfull) {\n\t\t\tdeferredResult.resolve(response.ResultObject);\n\t\t} else {\n\t\t\tdeferredResult.reject({ message: response.ErrorMessage });\n\t\t}\n\t}\n\n\tprivate static RejectResponse<T>(message: string, deferredResult: P.Deferred<T>) {\n\t\tdeferredResult.reject({ message: message });\n\t}\n\n}","// Module\nvar code = \"<!-- ko if: _visible --> <a data-bind=\\\"click: OnClick\\\" class=\\\"btn yellow subFormControl securityEditor\\\"> <i class=\\\"fa fa-lock\\\"></i><span><!-- ko text: _labels.SECURITY_EDITOR_LABEL --><!-- /ko --></span> </a> <!-- /ko -->\";\n// Exports\nexport default code;","import { deserialize } from 'libs/cerialize';\r\n\r\nexport class SecurityDataModel {\r\n\t@deserialize\r\n\tProfileId: number;\r\n\r\n\t@deserialize\r\n\tProfileName: string;\r\n\r\n\t@deserialize\r\n\tUserAllowance: number;\r\n\r\n\tconstructor(partial?: Partial<SecurityDataModel>) {\r\n\t\tif (partial) {\r\n\t\t\tthis.ProfileId = partial.ProfileId;\r\n\t\t\tthis.ProfileName = partial.ProfileName;\r\n\t\t\tthis.UserAllowance = partial.UserAllowance;\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\n\r\nimport { Event } from \"Core/Common/Event\";\r\nimport { BlockUI } from 'Core/Common/BlockUi'\r\n\r\nimport { SearchScreen } from \"Core/Screens/SearchScreen/SearchScreen\";\r\n\r\nimport {\r\n\tSecurityEditorForm,\r\n\tEVENTS as SECURITY_EDITOR_FORM_EVENTS\r\n} from 'Core/Components/SecurityEditor/Form/SecurityEditorForm';\r\nimport { SecurityEditorModel } from \"Core/Components/SecurityEditor/Models/SecurityEditorModel\";\r\nimport {\r\n\tSecurityEditorFormModel, SecurityPassViewModel,\r\n\tUser\r\n} from \"Core/Components/SecurityEditor/Form/Models/SecurityEditorFormModel\";\r\nimport { SecurityEditorStore } from \"Core/Components/SecurityEditor/Stores/SecurityEditorStore\";\r\n\r\nimport SecurityEditorTemplate from \"Core/Components/SecurityEditor/Templates/SecurityEditor.html\";\r\nimport { Notifier } from \"Core/Common/Notifier\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { SecurityDataModel } from './Form/Models/SecurityDataModel';\r\n\r\nexport class SecurityEditor extends Event {\r\n\tprivate _entityId: number;\r\n\tprivate _recordId: number;\r\n\r\n\tprivate _visible: KnockoutObservable<boolean>;\r\n\tprivate _readonly: KnockoutObservable<boolean>;\r\n\r\n\tprivate _data: SecurityEditorModel;\r\n\tprivate _form: SecurityEditorForm;\r\n\tprivate _formModel: SecurityEditorFormModel;\r\n\tprivate _searchScreen: SearchScreen;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(entityId: number, recordId: number) {\r\n\t\tsuper();\r\n\r\n\t\tthis._entityId = entityId;\r\n\t\tthis._recordId = recordId;\r\n\r\n\t\tthis._visible = ko.observable(false);\r\n\t\tthis._readonly = ko.observable(true);\r\n\t}\r\n\r\n\tSetup(visible: boolean, readonly: boolean) {\r\n\t\tthis._visible(visible);\r\n\t\tthis._readonly(readonly);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn SecurityEditorTemplate;\r\n\t}\r\n\r\n\tOnClick() {\r\n\t\tthis.ShowEditor();\r\n\t}\r\n\r\n\tShowEditor() {\r\n\t\tif (this._formModel) {\r\n\t\t\tthis.CreateForm(this.MapToFormModel(this._data));\r\n\t\t} else {\r\n\t\t\tthis.GetServerData().then(model => {\r\n\t\t\t\tmodel.Owner.SecurityData = new SecurityDataModel({ ProfileName: model.Owner.Profile });\r\n\t\t\t\tthis._data = model;\r\n\t\t\t\tthis._formModel = this.MapToFormModel(model);\r\n\t\t\t\tthis.CreateForm(this._formModel);\r\n\t\t\t}).fail(error => new Notifier().Failed(error.message));\r\n\t\t}\r\n\t}\r\n\r\n\tCreateForm(formModel: SecurityEditorFormModel) {\r\n\t\tthis._form = new SecurityEditorForm(formModel, this._readonly());\r\n\r\n\t\tthis._form.On(SECURITY_EDITOR_FORM_EVENTS.ADDING_NEW_USER, this, () => this.SearchUsers());\r\n\t\tthis._form.On(SECURITY_EDITOR_FORM_EVENTS.SELECT_OWNER, this, () => this.SelectOwner(formModel));\r\n\t\tthis._form.On(SECURITY_EDITOR_FORM_EVENTS.SAVING_USERS, this, eventArgs => this.Save(eventArgs.data));\r\n\t\tthis._form.Show();\r\n\t}\r\n\r\n\r\n\tClose() {\r\n\t\tif (this._form) {\r\n\t\t\tthis._form.Close();\r\n\r\n\t\t\tif (this._searchScreen) {\r\n\t\t\t\tthis._searchScreen.Close();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetData() {\r\n\t\treturn this._data;\r\n\t}\r\n\r\n\tprivate GetServerData() {\r\n\t\treturn SecurityEditorStore.GetSecurityInfoForRecord({\r\n\t\t\tEntityId: this._entityId,\r\n\t\t\tRecordId: this._recordId\r\n\t\t});\r\n\t}\r\n\r\n\tprivate SearchUsers() {\r\n\t\tthis._searchScreen = new SearchScreen({\r\n\t\t\tSearchTerm: '',\r\n\t\t\tEntityName: 'SYS_USERS',\r\n\t\t\tButtonAdd: false,\r\n\t\t\tCloseAfterSelectingRecord: false\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n\t\t\tconst validTypes = ['USER', 'USERGROUP'];\r\n\r\n\t\t\tif (validTypes.indexOf(eventArgs.data.TypeName.toUpperCase()) < 0) {\r\n\t\t\t\tnew Notifier().Warning(NOTIFICATIONS.TYPE_IS_NOT_SUPPORTED);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst user = new User();\r\n\r\n\t\t\tuser.Id = eventArgs.data.RecordId;\r\n\t\t\tuser.Name = eventArgs.data.Name;\r\n\r\n\t\t\tthis._form.AddUser(user);\r\n\r\n\t\t\tthis._searchScreen.Close();\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.Show();\r\n\t}\r\n\r\n\tprivate SelectOwner(formModel: SecurityEditorFormModel) {\r\n\r\n\t\tthis._searchScreen = new SearchScreen({\r\n\t\t\tSearchTerm: '',\r\n\t\t\tEntityName: 'SYS_USERS',\r\n\t\t\tButtonAdd: false,\r\n\t\t\tCloseAfterSelectingRecord: false\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.On('RECORD_SELECTED', this, eventArgs => {\r\n\t\t\tconst validTypes = ['USER'];\r\n\r\n\t\t\tif (validTypes.indexOf(eventArgs.data.TypeName.toUpperCase()) < 0) {\r\n\t\t\t\tnew Notifier().Warning(\"This type is not supported\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tBlockUI.Block();\r\n\t\t\tSecurityEditorStore.GetSecurityData({\r\n\t\t\t\tUserId: eventArgs.data.RecordId\r\n\t\t\t})\r\n\t\t\t\t.then(securityDataDto => {\r\n\t\t\t\t\tconst securityData = new SecurityDataModel();\r\n\t\t\t\t\tsecurityData.UserAllowance = securityDataDto.UserAllowance;\r\n\r\n\t\t\t\t\tconst mainProfile = securityDataDto.SecurityProfiles.find(profile => profile.Main);\r\n\t\t\t\t\tsecurityData.ProfileId = mainProfile.Id;\r\n\t\t\t\t\tsecurityData.ProfileName = mainProfile.Name;\r\n\r\n\r\n\t\t\t\t\tconst owner = User.Create(eventArgs.data.RecordId, eventArgs.data.Name, securityData);\r\n\t\t\t\t\tformModel.Owner(owner);\r\n\t\t\t\t\tthis._searchScreen.Close();\r\n\t\t\t\t})\r\n\t\t\t\t.fail(error => new Notifier().Failed(error.message))\r\n\t\t\t\t.always(() => { BlockUI.Unblock() });\r\n\t\t});\r\n\r\n\t\tthis._searchScreen.Show();\r\n\t}\r\n\r\n\r\n\tprivate MapToFormModel(model: SecurityEditorModel) {\r\n\t\tconst formModel = new SecurityEditorFormModel();\r\n\t\tconst owner = <any>(model.Owner || {});\r\n\r\n\t\tconst user = User.Create(owner.Id, owner.Name, owner.SecurityData);\r\n\t\tformModel.Owner(user);\r\n\r\n\t\tconst users = model.Users.filter(user => user.Rights > 0 || user.OptionalRights > 0).map(user => User.Create(user.Id, user.Name, user.SecurityData, user.Rights, user.OptionalRights, user.Deleted));\r\n\t\tformModel.Users(users);\r\n\r\n\t\tformModel.SecurityPass = SecurityPassViewModel.Create(\r\n\t\t\tmodel.SecurityPass.DoNotPass,\r\n\t\t\tmodel.SecurityPass.PassRights,\r\n\t\t\tmodel.SecurityPass.PassOptionalRights,\r\n\t\t\tmodel.SecurityPass.PassInheritance,\r\n\t\t\tmodel.SecurityPass.RefusePass,\r\n\t\t\tmodel.SecurityPass.PassOwner\r\n\t\t);\r\n\r\n\t\treturn formModel;\r\n\t}\r\n\r\n\tprivate Save(data: SecurityEditorModel) {\r\n\t\tthis._data = data;\r\n\t\tthis.Trigger('SAVING_CHANGES', data);\r\n\t}\r\n}","import { SecurityDataModel } from \"Core/Components/SecurityEditor/Form/Models/SecurityDataModel\";\r\n\r\nexport class UserModel {\r\n\tconstructor(public Id: number, public Name: string, public UserAllowance) {\r\n\r\n\t}\r\n}","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SubForm} from 'Core/Screens/Forms/SubForm/SubForm';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Search} from 'Core/Controls/Search/Search';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {RenderModes, ControlTypes, SYSTEM_TABLE_NAMES, LIFE_STATUS_GROUPS} from 'Core/Constant';\r\nimport { FollowupModes } from 'Core/Constants/FollowupModes';\r\nimport {DataModel} from 'Core/Screens/EditScreen/Models/DataModel';\r\nimport {InsertOrUpdateRecordStore} from 'Core/Screens/EditScreen/Stores/InsertOrUpdateRecordStore';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {RecordPersonalizationModel} from 'Core/ScreenManager/Models/RecordPersonalizationModel';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {LifeStatusInfo} from 'Core/ScreenManager/Models/LifeStatusInfo';\r\nimport {RecordExampleModel} from 'Core/ScreenManager/Models/RecordExampleModel';\r\n\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {MakePersonal} from 'Core/Components/Controls/MakePersonal/MakePersonal';\r\nimport {MakeExample} from 'Core/Components/Controls/MakeExample/MakeExample';\r\nimport {RecordStore} from 'Core/Screens/Stores/RecordStore';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {\r\n ConfirmationDialog,\r\n EVENTS as CONFIRMATION_DIALOG_EVENTS,\r\n Types as ConfirmationTypes\r\n} from 'Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog';\r\nimport {\r\n\tDeletionModeDialog,\r\n\tEVENTS as DELETION_MODE_DIALOG_EVENTS\r\n} from 'Core/Components/Dialogs/DeletionModeDialog/DeletionModeDialog';\r\nimport {DeletionModeModel} from \"Core/Screens/Models/DeletionModeModel\";\r\nimport {Password} from 'Core/Controls/Password/Password';\r\nimport {CONTROL_TYPES, SIMPLE_CONTROLS, SECURITY_CONTROLS} from 'Core/Constant';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {DataModes} from 'Core/Enums/DataModes';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {NewRelationModel} from 'Core/Controls/LinkList/Models/NewRelationModel';\r\nimport {NOTIFICATIONS, LABELS, CONFIRMATIONS} from 'Core/Components/Translation/Locales';\r\nimport {ButtonFollowUp} from 'Core/Controls/ButtonFollowUp/ButtonFollowUp';\r\nimport {FollowUpRecordModel} from 'Core/Controls/ButtonFollowUp/Models/FollowUpRecordModel';\r\nimport {SecurityEditor} from 'Core/Components/SecurityEditor/SecurityEditor';\r\nimport {ProgressBar} from 'Core/Components/ProgressBar/ProgressBar';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\n\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {Serialize} from 'libs/cerialize';\r\nimport {LockManager} from \"Core/Components/Locker/LockManager\";\r\nimport {SecurityEditorModel} from 'Core/Components/SecurityEditor/Models/SecurityEditorModel';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {UserModel} from 'Core/Controls/LinkList/Models/UserModel';\r\nimport {EVENTS as MAKE_EXAMPLE_EVENTS} from \"Core/Components/Controls/MakeExample/Events\";\r\nimport {GetServerRequestError} from \"Core/Common/Enums/ServerRequestErrors\";\r\nimport {UpdateDataModel} from 'Core/Controls/LinkList/Models/UpdateDataModel';\r\nimport {ILoadScreenRelationModel, LinkEditor} from 'Core/Screens/Common/LinkEditor/LinkEditor';\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\nimport {BREADCRUMBS_UPDATE_RECORD_NAME} from \"MenuManager/Breadcrumbs/Breadcrumbs\";\r\n\r\n// Templates\r\nimport Template from 'Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen.html';\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen'] = Template;\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\nexport class EditScreen extends BaseScreen {\r\n private _isDataFromExample: boolean;\r\n private _isFollowUp: boolean = false;\r\n private _makePersonal: MakePersonal;\r\n private _makeExample: MakeExample;\r\n private _securityEditor: SecurityEditor;\r\n private _progressBar: ProgressBar;\r\n private _sourceSearchTerm: KnockoutObservable<string>;\r\n private _followUpRecord: FollowUpRecordModel;\r\n private _requiredControls: Array<IControl>;\r\n private _statusDescription: string;\r\n private _isHamburgerActive: KnockoutObservable<boolean>;\r\n private _areWidthsEqual: KnockoutObservable<boolean>;\r\n private _aliasSuffix: string;\r\n\r\n ParentRecordId: number = 0;\r\n ParentRecordTypeId: number = 0;\r\n UseLinking: boolean = false;\r\n SaveImmediately: boolean = true;\r\n NewlyCreatedRecord: boolean = false;\r\n LinkToSource: boolean = false;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.Edit);\r\n let self = this;\r\n this._sourceSearchTerm = ko.observable('');\r\n this._aliasSuffix = screenModel.AliasSuffix || '';\r\n\r\n MobileChecker.IsMobile();\r\n let mobileOptions = MobileChecker.IsMobile() ? {\r\n minWidth: '100%',\r\n width: '100%',\r\n height: '100%',\r\n } : {};\r\n\r\n this.SetModalOptions({\r\n minHeight: MobileChecker.IsMobile() ? '100%' : 450,\r\n closeOnEsc: false,\r\n addClass: 'edit-screen-modal showScrollModal',\r\n blockScroll: true,\r\n onOpen: function () {\r\n $(this.closeButton[0]).off('click');\r\n this.closeButton[0].addEventListener('click', self.Close.bind(self));\r\n },\r\n ...mobileOptions\r\n });\r\n\r\n this._renderMode = RenderModes.Edit;\r\n\r\n this._makePersonal = null;\r\n this._makeExample = null;\r\n this._securityEditor = null;\r\n\r\n this.AddEvents();\r\n\r\n this.Init(screenModel);\r\n\r\n this._requiredControls = _.filter(this.GetAllControls(), (control) => {\r\n return control.GetIsRequired()\r\n });\r\n\r\n this.SetData(screenModel.Data);\r\n this.InitProgressBar(screenModel.Data);\r\n\r\n if (!screenModel.Data) {\r\n screenModel.Data = new ScreenDataModel();\r\n screenModel.Data.RecordId = 0;\r\n }\r\n\r\n const changingSecurityAllowed = screenModel.Data.Rights &&\r\n screenModel.Data.Rights.ChangeSecurityAllowance &&\r\n screenModel.Data.RecordSpecs &&\r\n !screenModel.Data.RecordSpecs.IsNewRecord;\r\n\r\n const editingSecurityAllowed = screenModel.Data.Rights && screenModel.Data.Rights.IsChangingSecurityAllowed;\r\n this._securityEditor && this._securityEditor.Setup(changingSecurityAllowed, !editingSecurityAllowed);\r\n\r\n this.On('CANCEL', this, () => {\r\n this.Close();\r\n });\r\n this._isHamburgerActive = ko.observable(false);\r\n this._areWidthsEqual = ko.observable(false);\r\n }\r\n\r\n AddEvents() {\r\n this.AddEvent('CLOSE');\r\n this.AddEvent('CANCEL');\r\n this.AddEvent('ON_CHANGED_PAGE_LEAVING');\r\n this.AddEvent('SAVE');\r\n this.AddEvent('DELETE_RECORD');\r\n this.AddEvent('SEARCH_RECORD');\r\n this.AddEvent('FOLLOWUP');\r\n this.AddEvent('FOLLOWUP_DONE');\r\n this.AddEvent('COPY_RECORD');\r\n this.AddEvent('COPY_RECORD_WITH_RELATIONS');\r\n this.AddEvent('COPY_TO_TYPE');\r\n this.AddEvent('MODAL_CLOSE');\r\n this.AddEvent('RECORD_SAVED');\r\n this.AddEvent('RECORD_REMOVED');\r\n this.AddEvent('FOLLOWUP_RECORD');\r\n this.AddEvent('COPY');\r\n this.AddEvent('RECORD_DELETED');\r\n this.AddEvent('DATA_CHANGED');\r\n this.AddEvent('LINK_LIST_DATA_LOADED');\r\n this.AddEvent('READY_TO_SAVE');\r\n this.AddEvent('RECORD_SELECTED');\r\n }\r\n\r\n PreventWindowConfirmation() {\r\n const eventWindowConfirmation = (event) => {\r\n let isModifiedControl = _.find(this.GetAllControls(), (control) => {\r\n return control.IsModified();\r\n });\r\n if (isModifiedControl && this.IsInModal()) {\r\n // Cancel the event as stated by the standard.\r\n event.preventDefault();\r\n // Chrome requires returnValue to be set.\r\n event.returnValue = 'Would you like to leave the page?';\r\n return 'Would you like to leave the page?'\r\n } else {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n }\r\n };\r\n\r\n window.addEventListener('beforeunload', eventWindowConfirmation);\r\n\r\n this.On('ON_CHANGED_PAGE_LEAVING', this, () => {\r\n window.removeEventListener('beforeunload', eventWindowConfirmation);\r\n });\r\n }\r\n\r\n ToggleActionBar(el){\r\n const actionBarWrapper = $(el).find('.action-bar-wrapper');\r\n this._areWidthsEqual(false);\r\n\r\n if (actionBarWrapper.length) {\r\n const actionBar_barLeft = $('.bar-left', actionBarWrapper).width();\r\n const actionBar_controls = $('.actionBar-Controls', actionBarWrapper).width();\r\n\r\n let isLeftAndControlsEqual: boolean = actionBar_barLeft === actionBar_controls\r\n if (actionBar_barLeft === 0 && actionBar_controls == 0) {\r\n isLeftAndControlsEqual = false\r\n }\r\n\r\n this._areWidthsEqual(isLeftAndControlsEqual);\r\n }\r\n }\r\n\r\n ToggleHamburger(data, event){\r\n $(event.target).find('.ham').toggleClass('active');\r\n this._isHamburgerActive(!this._isHamburgerActive());\r\n }\r\n\r\n ToggleLifeStatusBarClass(data, event){\r\n if ($(window).width() <= 991){\r\n $(event.target).parents('.lifestatus-bar-wrapper').toggleClass('showLifeStatus');\r\n }\r\n }\r\n\r\n IsSubjectScreen() {\r\n return true;\r\n }\r\n\r\n SetData(dataModel: ScreenDataModel) {\r\n if (!dataModel) {\r\n return;\r\n }\r\n\r\n if (!dataModel.Rights.IsRecordSecurityOk) {\r\n new Notifier().Warning(`Record security is not set for ${this.GetEntityName()} table`);\r\n return;\r\n }\r\n\r\n if (dataModel.RecordSpecs.LifeStatusInfo.Name === 'Example' && dataModel.RecordSpecs.RecordExampleInfo.IsExample) {\r\n this.AllowEmptyRequiredControls(true);\r\n }\r\n\r\n super.SetData(dataModel);\r\n }\r\n\r\n private Init(screenModel: ScreenModel) {\r\n this.PreventWindowConfirmation();\r\n this.On('SAVE', this, (eventArgs: any) => {\r\n this.SaveGrids();\r\n this.Save();\r\n });\r\n this.On('DELETE_RECORD', this, (eventArgs: any) => {\r\n this.DeleteRecord();\r\n });\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('FOLLOWUP', this, (eventArgs: any) => {\r\n this.FollowUp();\r\n });\r\n this.On('FOLLOWUP_DONE', this, (eventArgs: any) => {\r\n this.FollowUp(true);\r\n });\r\n this.On('COPY_RECORD', this, (eventArgs: any) => this.OnCopy(DataModes.Copy, eventArgs.data.linkToSource));\r\n this.On('COPY_RECORD_WITH_RELATIONS', this, (eventArgs: any) => this.OnCopy(DataModes.CopyWithRelations, eventArgs.data.linkToSource));\r\n this.On('COPY_TO_TYPE', this, (eventArgs: any) => this.OnCopy(DataModes.CopyToType, eventArgs.data.linkToSource, eventArgs.data.copyToType, eventArgs.data.aliasSuffix));\r\n\r\n var bottomBar = this._bottomBar;\r\n if (bottomBar) {\r\n _.each(this.SubForms, subForm => {\r\n subForm.On('EXPANDED', this, (eventArgs: any) => {\r\n bottomBar.IsExpanded = true;\r\n });\r\n subForm.On('COLLAPSED', this, (eventArgs: any) => {\r\n bottomBar.IsExpanded = false;\r\n });\r\n });\r\n }\r\n\r\n if (screenModel.Data) {\r\n var recordSpec = screenModel.RecordSpecs || screenModel.Data.RecordSpecs;\r\n if (recordSpec) {\r\n this._makePersonal = new MakePersonal({\r\n IsPersonal: recordSpec.RecordPersonalization.IsPersonalized,\r\n PossibleToPersonalize: recordSpec.RecordPersonalization.PossibleToPersonalize\r\n });\r\n\r\n this._makeExample = new MakeExample({\r\n IsExample: recordSpec.RecordExampleInfo.IsExample,\r\n PossibleToExample: recordSpec.RecordExampleInfo.PossibleToExample\r\n });\r\n this._makeExample.On(MAKE_EXAMPLE_EVENTS.MAKE_EXAMPLE, this, (evtArgs) => {\r\n this.AllowEmptyRequiredControls(evtArgs.data.IsExample);\r\n });\r\n }\r\n\r\n this._securityEditor = new SecurityEditor(screenModel.EntityId, screenModel.Data.RecordId);\r\n this._securityEditor.On('SAVING_CHANGES', this, eventArgs => this.ApplySecurityEditorChanges(eventArgs.data));\r\n }\r\n }\r\n\r\n private AllowEmptyRequiredControls(isAllowed: boolean) {\r\n _.each(this._requiredControls, (control) => {\r\n control.SetIsRequired(!isAllowed);\r\n });\r\n }\r\n\r\n private OnCopy(dataMode: DataModes, linkToSource: boolean, copyToType: number = 0, aliasSuffix: string = '') {\r\n const self = this;\r\n this._dataMode = dataMode;\r\n\r\n if (this.ValidateData()) {\r\n this.IsTypeAvailable(copyToType || self._model.TableTypeId, self._model.TableTypeId, self._model.EntityId)\r\n .then(() => {\r\n this.DeserializeData().then(result => {\r\n UserVarsManager.Instance.RemoveFromRecent(self.GetRecordId(), self._model.EntityId, self._model.TableTypeId);\r\n this.Trigger('COPY', {recordId: result.recordId, dataMode: dataMode, linkToSource: linkToSource, copyToType: copyToType, aliasSuffix: aliasSuffix});\r\n });\r\n });\r\n }\r\n }\r\n\r\n private ApplySecurityEditorChanges(model: SecurityEditorModel) {\r\n const linkList = this.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n if (!linkList) return;\r\n\r\n linkList.UpdateRecordOwner(new UserModel(model.Owner.Id, model.Owner.Name, model.Owner.SecurityData.UserAllowance));\r\n }\r\n\r\n private InitProgressBar(data: ScreenDataModel) {\r\n if (data && data.RecordSpecs && data.RecordSpecs.LifeStatusInfo) {\r\n this._progressBar = new ProgressBar({\r\n EntityId: this.GetEntityId(),\r\n RecordId: this.GetRecordId(),\r\n TypeId: this.GetTableTypeId(),\r\n RenderMode: this._renderMode,\r\n Screen: this,\r\n RecordSpecs: data.RecordSpecs,\r\n MigratedRequired: data.IsTypeTransformationRequired\r\n });\r\n this._statusDescription = data.RecordSpecs.LifeStatusInfo.MemoTranslation || data.RecordSpecs.LifeStatusInfo.Memo;\r\n }\r\n }\r\n\r\n SetFocusOnFirstControl() {\r\n const control = this.GetControlBy(c => c.IsFocusable());\r\n if (control) {\r\n control.SetFocus(true);\r\n }\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/EditScreen/EditScreen';\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n let isModalMode: boolean = !this.TargetId || false;\r\n this.SetScreenStyle(isModalMode);\r\n\r\n if (this._dataModel) {\r\n this.SetFocusOnFirstControl();\r\n }\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el[0], ()=>{\r\n $(document).off('keydown', this.CtrlS);\r\n });\r\n\r\n $(document).keydown(this.CtrlS);\r\n\r\n const unbindResize = ResizeService.SubscribeWidth(this.OnResize.bind(this, el), el[0]); // subscribe on resize\r\n\r\n ko.utils.domNodeDisposal.addDisposeCallback(el, () => {\r\n unbindResize();\r\n });\r\n this.ToggleActionBar(el);\r\n }\r\n\r\n OnResize = (el) => {\r\n this.ToggleActionBar(el);\r\n };\r\n\r\n CtrlS = (event) => {\r\n if(event.keyCode == 83 && event.ctrlKey && MenuManager.Instance.GetTopScreen() === this) {\r\n this.Trigger('SAVE');\r\n return false;\r\n }\r\n }\r\n\r\n FollowUp(isDone: boolean = false) {\r\n const self = this;\r\n if (this.ValidateData()) {\r\n this._isFollowUp = true;\r\n\r\n this.DeserializeData().then(result => {\r\n UserVarsManager.Instance.RemoveFromRecent(self.GetRecordId(), self._model.EntityId, self._model.TableTypeId);\r\n\r\n let followUpControl = this.GetControlByType(CONTROL_TYPES.ButtonFollowUp) as ButtonFollowUp;\r\n if (!isDone) {\r\n this.Trigger('FOLLOWUP_RECORD', {recordId: result.recordId, followUpRecordModel: followUpControl.GetRecord(), followUpRecordId: result.followUpRecordId});\r\n }\r\n });\r\n }\r\n }\r\n\r\n SaveGrids() {\r\n let grids = this.GetControlsByType(CONTROL_TYPES.Grid);\r\n _.each(grids,\r\n item => {\r\n let grid = item as Grid;\r\n grid.SaveEditRows();\r\n grid.ReleaseLockRows();\r\n });\r\n }\r\n\r\n ReleaseLockGrids() {\r\n let grids = this.GetControlsByType(CONTROL_TYPES.Grid);\r\n _.each(grids,\r\n item => {\r\n let grid = item as Grid;\r\n grid.ReleaseLockRows();\r\n });\r\n }\r\n\r\n Save(close: boolean = true, refreshScreen: boolean = true) {\r\n let deferredResult = P.defer<any>();\r\n if (this._dataModel.Rights.IsRecordSecurityOk) {\r\n if (this.ValidateData()) {\r\n this.DeserializeData(close, refreshScreen).then((data) => {\r\n deferredResult.resolve(data);\r\n });\r\n }\r\n } else {\r\n new Notifier().Warning(`Record security is not set for ${this.GetEntityName()} table`);\r\n }\r\n return deferredResult.promise();\r\n }\r\n\r\n Close() {\r\n this.Trigger('ON_CHANGED_PAGE_LEAVING');\r\n if ((!this._dataModel.RecordSpecs || !this._dataModel.RecordSpecs.IsNewRecord) && !this.TransactionId) {\r\n LockManager.Instance.ReleaseLock(this.GetEntityId(), this.GetRecordId());\r\n }\r\n\r\n this.ReleaseLockGrids();\r\n this.ControlPopupsClose();\r\n super.Close();\r\n }\r\n\r\n AfterSave(refreshScreen: boolean) {\r\n if (!this.IsInModal()) {\r\n if (this._isFollowUp) {FollowupModes\r\n if (!this._followUpRecord ||\r\n (this._followUpRecord.LifeStatusSort !== null\r\n && this._followUpRecord.LifeStatusSort !== LIFE_STATUS_GROUPS.RETIRED\r\n && !this._followUpRecord.LifeStatusNoActionNode\r\n && this._actionSubjectRecord\r\n && (this._followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_CURRENT_AND_NEW\r\n || this._followUpRecord.CurrentLifeStatus.FollowupModeName === FollowupModes.EDIT_NEW))) {\r\n this.NewRecord(this.GetTableTypeId(), this.GetKindId(), this.GetRecordId(), null, DataModes.FollowUp);\r\n }\r\n } else if (this._dataMode === DataModes.Copy || this._dataMode === DataModes.CopyWithRelations || this._dataMode === DataModes.CopyToType) {\r\n this.IsTypeAvailable(this.GetTableTypeId(), this.GetTableTypeId(), this.GetEntityId())\r\n .then(() => this.NewRecord(this.GetTableTypeId(), this.GetKindId(), this.GetRecordId(), null, this._dataMode));\r\n } else {\r\n if(refreshScreen){\r\n this.LoadScreenFor(this.GetTableTypeId(), this.GetRecordId());\r\n } \r\n }\r\n } else {\r\n super.Close();\r\n }\r\n }\r\n\r\n\r\n ControlPopupsClose() {\r\n let followUpControl = this.GetControlByType(CONTROL_TYPES.ButtonFollowUp);\r\n\r\n if (followUpControl) {\r\n (followUpControl as ButtonFollowUp).Close();\r\n }\r\n\r\n if (this._securityEditor) {\r\n this._securityEditor.Close();\r\n }\r\n\r\n this._progressBar.CloseActionCheckList();\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === 'Search'));\r\n }\r\n\r\n SearchRecord(): void {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n const searchScreen = new SearchScreen({EntityId: this.GetEntityId(), SearchTerm: searchTerm});\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs) => {\r\n this._sourceSearchTerm(eventArgs.data.SearchTerm);\r\n\r\n\t\t\tconst recordId = eventArgs.data.RecordId;\r\n\t\t\tconst typeId = eventArgs.data.TypeId;\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), recordId, typeId);\r\n\r\n this.Trigger('RECORD_SELECTED', {\r\n\t\t\t\tRecordId: recordId,\r\n\t\t\t\tTableTypeId: typeId,\r\n SearchTerm: eventArgs.data.SearchTerm\r\n });\r\n });\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPES_FOUND', this, (eventArgs) => searchScreen.Cancel());\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n LoadScreenFor(tableTypeId: number, recordId: number) {\r\n BlockUI.Block();\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.EditScreen, recordId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen, this.IsInModal());\r\n var baseScreen = screen as BaseScreen;\r\n var textSearchTerm = baseScreen.GetControl<Search>('Search');\r\n if (textSearchTerm) {\r\n textSearchTerm.SetSearchTerm(this._sourceSearchTerm());\r\n }\r\n }).fail(err => new Notifier().Warning(err.message));\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm: string, dataMode: DataModes = DataModes.Default, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n ParentRecordId: this.GetRecordId(),\r\n SubjectLifestatusId: this._followUpRecord ? this._followUpRecord.LifeStatusId : null,\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.ParentRecordTypeId = this.GetTableTypeId();\r\n\r\n editScreen.UseLinking = true;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm && searchTerm !== '') {\r\n this.NameControlSetValue(searchTerm);\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n LockManager.Instance.ReleaseLock(screen.GetEntityId(), screen.GetRecordId());\r\n if (this.IsInModal() && !this.IsDashMain) {\r\n this.Trigger('RECORD_SAVED');\r\n } else {\r\n this.LoadScreenFor(tableTypeId, eventArgs.data.RecordId);\r\n }\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), eventArgs.data.RecordId, tableTypeId);\r\n });\r\n\r\n screen.On('RECORD_REMOVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(screen.DeleteRecordSuccessNotification);\r\n this.LoadScreenFor(null, null);\r\n });\r\n\r\n if (this.IsDashMain) {\r\n screen.On('COPY',\r\n this,\r\n (eventArgs: any) => {\r\n const copyTableTypeId = eventArgs.data.copyToType || this.GetTableTypeId();\r\n this.IsTypeAvailable(copyTableTypeId, this.GetTableTypeId(), this.GetEntityId())\r\n .then(() => this.NewRecord(copyTableTypeId, this.GetKindId(), eventArgs.data.recordId, null, eventArgs.data.dataMode, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix));\r\n });\r\n }\r\n\r\n screen.ShowInModal();\r\n\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n DeleteRecord(): void {\r\n const notifier = new Notifier($(this._el));\r\n let checkRecordId = this._isDataFromExample ? 0 : this.GetRecordId();\r\n\r\n if (!checkRecordId || checkRecordId === 0) {\r\n notifier.Warning(NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n return;\r\n }\r\n\r\n\t\tif (!this.IsEntitySysUsersOrCd()) {\r\n\t\t\tRecordStore.GetDeletionMode({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t\t.always(() => {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t})\r\n\t\t\t\t.then(result => {\r\n\t\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst deletionMode = result.ResultObject;\r\n\r\n\t\t\t\t\tif (deletionMode.OnDelete || deletionMode.OnDelete === 0) {\r\n\t\t\t\t\t\tthis.ShowDeletionModeDialog(deletionMode);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.ShowConfirmationDialog();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.ShowConfirmationDialog();\r\n\t\t}\r\n \r\n }\r\n\r\n\tprivate ShowDeletionModeDialog(deletionModeModel: DeletionModeModel) {\r\n\t const deletionModeDialog = new DeletionModeDialog({\r\n\t\t DeletionMode: deletionModeModel.OnDelete,\r\n\t\t\tHasCustomLifeStatus: deletionModeModel.HasCustomLifeStatus\r\n\t });\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DELETE_SELECTED, this, () => {\r\n\t\t this.UseDeleteDeletionMode();\r\n\t\t});\r\n\r\n\t deletionModeDialog.On(DELETION_MODE_DIALOG_EVENTS.DISABLE_SELECTED, this, () => {\r\n\t\t this.UseDisableDeletionMode();\r\n\t });\r\n\r\n\t deletionModeDialog.Show();\r\n }\r\n\r\n\tprivate ShowConfirmationDialog() {\r\n\t\tconst confirmationDialog = new ConfirmationDialog({\r\n\t\t\tText: this.DeleteRecordConfirmation,\r\n\t\t\tType: ConfirmationTypes.Question\r\n\t\t});\r\n\r\n\t\tconfirmationDialog.On(CONFIRMATION_DIALOG_EVENTS.CONFIRM_SELECTED, this, () => {\r\n\t\t\tthis.UseDeleteDeletionMode();\r\n\t\t});\r\n\t\tconfirmationDialog.Show();\r\n\t}\r\n\r\n\tprivate UseDeleteDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier($(this._el));\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId() })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage || NOTIFICATIONS.ERROR_DELETING_RECORD);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (result.Warnings && result.Warnings.length > 0) {\r\n\t\t\t\t\t_.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n\t\t\t\t\tthis.Trigger('RECORD_SAVED', {\r\n\t\t\t\t\t\tEntityId: this.GetEntityId(),\r\n\t\t\t\t\t\tRecordId: this.GetRecordId()\r\n\t\t\t\t\t});\r\n\t\t\t\t\tthis.Close();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.Trigger('RECORD_DELETED', { RecordId: this.GetRecordId() });\r\n\t\t\t\t\tthis.DeleteFromRecent();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate UseDisableDeletionMode() {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tconst notifier = new Notifier($(this._el));\r\n\t\tRecordStore.DeleteRecord({ EntityId: this.GetEntityId(), RecordId: this.GetRecordId(), Disable: true })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnotifier.Failed(result.ErrorMessage);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.Trigger('RECORD_SAVED', {\r\n\t\t\t\t\tEntityId: this.GetEntityId(),\r\n\t\t\t\t\tRecordId: this.GetRecordId()\r\n\t\t\t\t});\r\n\t\t\t\tthis.Close();\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tnotifier.Warning(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n private DeleteFromRecent() {\r\n UserVarsManager.Instance.RemoveFromRecent(this.GetRecordId(), this._model.EntityId, this._model.TableTypeId);\r\n this.Trigger('RECORD_REMOVED');\r\n this.Close();\r\n }\r\n\r\n set IsDataFromExample(isFromExample: boolean) {\r\n this._isDataFromExample = isFromExample;\r\n }\r\n\r\n get IsDataFromExample(): boolean {\r\n return this._isDataFromExample;\r\n }\r\n\r\n get AliasSuffix(): string {\r\n return this._aliasSuffix;\r\n }\r\n\r\n ValidateData() {\r\n var result = true;\r\n _.each(this._controls, control => {\r\n var isControlValid = control.IsValid();\r\n if (!isControlValid) {\r\n result = false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n DeserializeData(close: boolean = true, refreshScreen: boolean = true): P.Promise<any> {\r\n let deferredResult = P.defer<any>();\r\n\r\n const dataModel = new DataModel();\r\n dataModel.EntityId = this.GetEntityId();\r\n dataModel.RecordId = this._isDataFromExample ? 0 : this.GetRecordId();\r\n dataModel.ParentRecordId = this.ParentRecordId;\r\n dataModel.ParentRecordTypeId = this.ParentRecordTypeId;\r\n dataModel.ScreenTypeId = this.GetTypeId();\r\n dataModel.UseLinking = this.UseLinking;\r\n dataModel.FillFromExample = this._isDataFromExample && (this.GetDataMode() === DataModes.Default\r\n || this.GetDataMode() === DataModes.FollowUp || this.GetDataMode() === DataModes.CopyWithRelations || this.GetDataMode() === DataModes.CopyToType);\r\n dataModel.ExampleRecordId = this._isDataFromExample && (this.GetDataMode() === DataModes.Default\r\n || this.GetDataMode() === DataModes.FollowUp || this.GetDataMode() === DataModes.CopyWithRelations || this.GetDataMode() === DataModes.CopyToType) ? this.GetRecordId() : 0;\r\n dataModel.DataMode = this.GetDataMode();\r\n dataModel.EntityTypeId = this.GetTableTypeId();\r\n dataModel.KindId = this.GetKindId();\r\n dataModel.ActionSubjectRecord = this._actionSubjectRecord;\r\n dataModel.LinkToSource = this.LinkToSource;\r\n dataModel.AliasSuffix = this.AliasSuffix;\r\n\r\n let passwordControl = this.GetControl<Password>(CONTROL_TYPES.Password);\r\n\r\n if (passwordControl) {\r\n dataModel.PasswordAction = passwordControl.SelectedAction;\r\n }\r\n\r\n let personalizationInfo = this._makePersonal.GetPersonalizationInfo();\r\n let exampleInfo = this._makeExample.GetExampleInfo();\r\n\r\n dataModel.RecordSpecs = new RecordSpecsModel({\r\n RecordPersonalization: new RecordPersonalizationModel({\r\n PossibleToPersonalize: personalizationInfo.PossibleToPersonalize(),\r\n IsPersonalized: personalizationInfo.PersonalizationSelected()\r\n }),\r\n RecordExampleInfo: new RecordExampleModel({\r\n PossibleToExample: exampleInfo.PossibleToExample(),\r\n IsExample: exampleInfo.ExampleSelected()\r\n }),\r\n LifeStatusInfo: new LifeStatusInfo()\r\n });\r\n\r\n if (this._securityEditor) {\r\n dataModel.RecordSettings = this._securityEditor.GetData();\r\n }\r\n\r\n if (this._progressBar) {\r\n const lifeStatusInfo = this._progressBar.GetLifeStatus();\r\n dataModel.RecordSpecs.LifeStatusInfo = lifeStatusInfo;\r\n }\r\n\r\n if (this._isFollowUp) {\r\n dataModel.FollowUpRecord = new FollowUpRecordModel();\r\n }\r\n\r\n _.each(this._controls, control => {\r\n let controlType = control.GetType();\r\n\r\n if (SIMPLE_CONTROLS.indexOf(controlType) >= 0) {\r\n const hasChanges = control.IsModified() || control.GetFieldModel().HasDefaultValue\r\n || this._isDataFromExample || this._actionSubjectRecord;\r\n const data = control.Deserialize();\r\n if (data && hasChanges) {\r\n dataModel.FieldValueList.push(data);\r\n }\r\n }\r\n\r\n if (SECURITY_CONTROLS.indexOf(controlType) >= 0) {\r\n const data = control.Deserialize();\r\n\r\n if (data) {\r\n if (controlType === CONTROL_TYPES.TableSecurity) {\r\n dataModel.TableSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.TypeSecurity) {\r\n dataModel.TypeSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.RecordSecurity) {\r\n dataModel.RecordSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.RecordSharing) {\r\n dataModel.RecordSharingChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.UserSecurity) {\r\n dataModel.UserSecurityChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.UserAllowance) {\r\n dataModel.UserAllowanceChanges = data;\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.Password) {\r\n dataModel.PasswordFieldList.push(data);\r\n }\r\n\r\n if (controlType === CONTROL_TYPES.FieldSecurity) {\r\n dataModel.FieldSecurityControlChanges = data;\r\n }\r\n }\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Signature) {\r\n const controlAttachments = control.Deserialize();\r\n dataModel.Attachments = dataModel.Attachments.concat(controlAttachments['attachments']);\r\n dataModel.RemoveAttachments = dataModel.RemoveAttachments.concat(controlAttachments['removeAttachments']);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Image) {\r\n const controlAttachments = control.Deserialize();\r\n dataModel.Attachments = dataModel.Attachments.concat(controlAttachments['attachments']);\r\n dataModel.RemoveAttachments = dataModel.RemoveAttachments.concat(controlAttachments['removeAttachments']);\r\n dataModel.Annotations = dataModel.Annotations.concat(controlAttachments['annotations']);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.QueryBuilder) {\r\n const data = control.Deserialize();\r\n dataModel.FieldValueList = dataModel.FieldValueList.concat(data);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Drop) {\r\n const controlAttachments = control.Deserialize();\r\n dataModel.DropAttachments.push(controlAttachments);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.LinkList) {\r\n let linkListData = control.Deserialize();\r\n dataModel.LinklistChanges.ChangedRelations.push(...linkListData.ChangedRelations);\r\n dataModel.LinklistChanges.ChangedSecurity.push(...linkListData.ChangedSecurity);\r\n dataModel.LinklistChanges.DeletedRelations.push(...linkListData.DeletedRelations);\r\n dataModel.LinklistChanges.LinkEditorChanges.push(...linkListData.LinkEditorChanges);\r\n dataModel.LinklistChanges.NewRelations.push(...linkListData.NewRelations);\r\n dataModel.LinklistChanges.ActionSubjectRecord = linkListData.ActionSubjectRecord;\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Grid) {\r\n let gridData = (control as Grid).Serialize();\r\n let linkEditorChanges = (control as Grid).SerializeLinkEditorData();\r\n\r\n _.each(linkEditorChanges, (item) => {\r\n dataModel.LinklistChanges.LinkEditorChanges.push(...item.LinkEditorChanges);\r\n dataModel.LinklistChanges.DeletedRelations.push(...item.DeletedRelations);\r\n });\r\n\r\n if (gridData.length > 0) {\r\n dataModel.GridsData.push(gridData);\r\n }\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Tag) {\r\n let tagChanges = control.Deserialize();\r\n if (!dataModel.TagsChanges) {\r\n dataModel.TagsChanges = [];\r\n }\r\n dataModel.TagsChanges.push(tagChanges);\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Spreadsheet) {\r\n const spreadsheetRewrite = control.Deserialize();\r\n if (spreadsheetRewrite) {\r\n dataModel.Spreadsheets.push(spreadsheetRewrite);\r\n }\r\n }\r\n\r\n if (this._isFollowUp && control.GetType() === CONTROL_TYPES.ButtonFollowUp) {\r\n let followUpControl = control as ButtonFollowUp;\r\n this._followUpRecord = followUpControl.GetRecord();\r\n if(this._followUpRecord){\r\n dataModel.FollowUpRecord = this._followUpRecord;\r\n }\r\n }\r\n\r\n if (control.GetType() === CONTROL_TYPES.Alias && this.AliasSuffix) {\r\n const data = control.Deserialize();\r\n if (data) {\r\n dataModel.FieldValueList.push(data);\r\n }\r\n }\r\n });\r\n\r\n if (this.SaveImmediately) {\r\n BlockUI.Block();\r\n InsertOrUpdateRecordStore.UpdateData(dataModel, this.TransactionId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result.Warnings && result.Warnings.length > 0) {\r\n const notifier = new Notifier();\r\n _.each(result.Warnings, (warning) => notifier.Warning(warning));\r\n }\r\n\r\n if (result.IsSuccessfull) {\r\n if (dataModel.TableSecurityChanges || dataModel.UserSecurityChanges) {\r\n MenuManager.Instance.RefreshMenuAreas(false);\r\n }\r\n const control = this.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n const name = control ? control.GetValue() : null;\r\n this.Trigger('RECORD_SAVED', {\r\n EntityId: this.GetEntityId(),\r\n RecordId: result.Id,\r\n Name: name,\r\n IsFollowUp: this._isFollowUp\r\n });\r\n\r\n if (!this.IsQueryBuilderScreen) {\r\n PubSub.publish(BREADCRUMBS_UPDATE_RECORD_NAME, {\r\n Screen: this,\r\n Name: name\r\n });\r\n }\r\n\r\n deferredResult.resolve({ recordId: result.Id, followUpRecordId: result.FollowUpRecordId });\r\n if (close) {\r\n this.Close();\r\n }\r\n this.AfterSave(refreshScreen);\r\n\r\n if (dataModel.LinkToSource && result.Sequence) {\r\n let relation: ILoadScreenRelationModel = null;\r\n\r\n if (result.Id === result.MainLinkRecordId) {\r\n relation = {\r\n MainEntityId: dataModel.EntityId,\r\n MainRecordId: result.Id,\r\n MainRecordTypeId: dataModel.EntityTypeId,\r\n RelatedEntityId: dataModel.EntityId,\r\n RelatedRecordId: dataModel.ExampleRecordId,\r\n RelatedRecordTypeId: result.ExampleTypeId,\r\n KSeq: result.Sequence\r\n };\r\n }\r\n else {\r\n relation = {\r\n MainEntityId: dataModel.EntityId,\r\n MainRecordId: dataModel.ExampleRecordId,\r\n MainRecordTypeId: result.ExampleTypeId,\r\n RelatedEntityId: dataModel.EntityId,\r\n RelatedRecordId: result.Id,\r\n RelatedRecordTypeId: dataModel.EntityTypeId,\r\n KSeq: result.Sequence\r\n };\r\n }\r\n\r\n this.UpdateLinkRecord(relation);\r\n }\r\n else if (dataModel.ParentRecordId && dataModel.EntityTypeId != 0) {\r\n const relation: ILoadScreenRelationModel = {\r\n MainEntityId: dataModel.EntityId,\r\n MainRecordId: dataModel.ParentRecordId,\r\n MainRecordTypeId: dataModel.ParentRecordTypeId,\r\n RelatedEntityId: dataModel.EntityId,\r\n RelatedRecordId: result.Id,\r\n RelatedRecordTypeId: dataModel.EntityTypeId,\r\n KSeq: result.Sequence\r\n };\r\n\r\n this.UpdateLinkRecord(relation);\r\n }\r\n } else {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Failed(result.ErrorMessage);\r\n }\r\n }).fail(error => {\r\n const requestError = GetServerRequestError(error.status);\r\n const notifier = new Notifier($(this._el));\r\n notifier.Failed(NOTIFICATIONS.DATA_IS_NOT_SAVED);\r\n deferredResult.reject({message: null, status: error.status, requestError: requestError});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n this.Trigger('READY_TO_SAVE', dataModel);\r\n if (close) {\r\n this.Close();\r\n }\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n UpdateLinkRecord(relation: ILoadScreenRelationModel, isNew: boolean = false): P.Promise<any> {\r\n let data = null;\r\n let deferredResult = P.defer<any>();\r\n\r\n LinkEditor.LoadScreen(relation, isNew, data, false)\r\n .then(screen => {\r\n if (screen !== null) {\r\n const linkEditor = screen as LinkEditor;\r\n\r\n linkEditor.On('SAVE_DATA', this, eventArgs => {\r\n const dataModel = new DataModel();\r\n\r\n dataModel.EntityId = relation.MainEntityId;\r\n dataModel.RecordId = relation.MainRecordId;\r\n const updateDataModel = new UpdateDataModel();\r\n\r\n updateDataModel.LinkEditorChanges.push(eventArgs.data);\r\n dataModel.LinklistChanges = Serialize(updateDataModel);\r\n\r\n InsertOrUpdateRecordStore.UpdateData(dataModel, this.TransactionId)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n new Notifier($(this._el)).Success(NOTIFICATIONS.RECORD_UPDATED);\r\n linkEditor.Close();\r\n deferredResult.resolve(null);\r\n } else {\r\n linkEditor.GetNotifier().Failed(result.ErrorMessage);\r\n }\r\n });\r\n });\r\n }\r\n }).fail(err => {\r\n new Notifier($(this._el)).Warning(err.message);\r\n });\r\n return deferredResult.promise();\r\n }\r\n\r\n public NameControlSetValue(value: string) {\r\n const control = this.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._dataMode === DataModes.Default ? this._recordId : 0,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n public AddInnerRelation(relatedEntityId: number, relatedRecordId: number) {\r\n const linkList = this.GetControl(CONTROL_TYPES.LinkList) as LinkList;\r\n if (!linkList) return;\r\n\r\n const entityRelation = linkList.DataModel().Entities().find(e => e.EntityId === relatedEntityId);\r\n if (!entityRelation) return;\r\n\r\n BlockUI.Block();\r\n\r\n RecordStore.GetRecord({\r\n TableId: relatedEntityId,\r\n TableTypeId: 0,\r\n RecordId: relatedRecordId,\r\n ReadLookups: false\r\n })\r\n .always(() => BlockUI.Unblock())\r\n .then(recordDataModel => {\r\n const nameField = recordDataModel.Fields.find(f => f.FieldName === 'NAME');\r\n const linkedRecordName = nameField && nameField.FieldValue || 'N/A;'\r\n\r\n const newRelationModel = new NewRelationModel();\r\n newRelationModel.Id = relatedRecordId;\r\n newRelationModel.Name = linkedRecordName;\r\n\r\n linkList.AddRecord(relatedRecordId, entityRelation, newRelationModel);\r\n }).fail(error => {\r\n if (error.status === 404) {\r\n new Notifier().Failed('Link cannot be added. Record not found')\r\n } else {\r\n new Notifier().Failed('Error getting record for link');\r\n }\r\n });\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId()), attr: {'data-screen-name': $data.GetTypeName()}\\\" id=\\\"wrapper\\\"> <div class=\\\"screen edit-screen screenForm\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"portlet light\\\"> <div class=\\\"container relative-block\\\"> <div class=\\\"row\\\" id=\\\"ActionBarBlock\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"action-bar-wrapper\\\" data-bind=\\\"css: {'show-wrapper': _isHamburgerActive(), 'hidden-wrapper': _areWidthsEqual()}\\\"> <div class=\\\"bar-left subforms-wrapper\\\"> <!-- ko with: ActionBar --> <div class=\\\"actionBar-Controls\\\"> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- ko with: $parent._securityEditor --> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko ifnot: $parent.NewlyCreatedRecord --> <a class=\\\"subFormControl copy-link-button\\\" data-bind=\\\"click: CopyRecordLink, tooltip: {content: _labels.CLICK_TO_COPY_URL}\\\"> <i class=\\\"fa fa-link\\\"></i> </a> <!-- /ko --> </div> <!-- /ko --> </div> <span data-bind=\\\"click: ToggleHamburger.bind($data), css: {'hamburger-btn_wrapper__hidden': !_areWidthsEqual()}\\\" class=\\\"hamburger-btn_wrapper\\\"> <svg class=\\\"hamburger-btn hamburger-btn--Rotate hamburger-btn_type_4\\\" viewBox=\\\"0 0 100 100\\\" width=\\\"80\\\" data-bind=\\\"css: {'active': _isHamburgerActive()}\\\"> <path class=\\\"hamburger-btn_line hamburger-btn--top\\\" d=\\\"m 70,33 h -40 c 0,0 -8.5,-0.149796 -8.5,8.5 0,8.649796 8.5,8.5 8.5,8.5 h 20 v -20\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--middle\\\" d=\\\"m 70,50 h -40\\\"/> <path class=\\\"hamburger-btn_line hamburger-btn--bottom\\\" d=\\\"m 30,67 h 40 c 0,0 8.5,0.149796 8.5,-8.5 0,-8.649796 -8.5,-8.5 -8.5,-8.5 h -20 v 20\\\"/> </svg> </span> <div class=\\\"bar-right\\\"> <div class=\\\"action-bar-right lifestatus-bar-wrapper\\\"> <!-- ko with: _progressBar --> <div class=\\\"editScreenProgressBar\\\" data-bind=\\\"tooltip: { content: $parent._statusDescription }\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"editScreen-rightWrapper\\\"> <!-- ko with: _makePersonal --> <!-- ko if: IsMakePersonal --> <div class=\\\"make-personal-record-wrapper\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko with: _makeExample --> <!-- ko if: IsMakeExample --> <div class=\\\"make-example-record-wrapper\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <!-- ko with: _screenSwitcher --> <div class=\\\"pull-right screen-switcher-container\\\"> <!-- ko template: {html: GetTemplate.bind($data)} --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> <span data-bind=\\\"click: ToggleLifeStatusBarClass.bind($data)\\\" class=\\\"toggleLifeStatusBarButton\\\"></span> </div> </div> </div> </div> </form> </div> </div> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'noLinkList': NoLinkList}\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, show: _isExpanded, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-xs-12 col-sm-6 col-lg-4 form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\" data-bind=\\\"css: {'expanded': _isExpanded, 'noLinkList': $parent.NoLinkList}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <form role=\\\"form\\\" class=\\\"full-size\\\"> <div class=\\\"form-body\\\"> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> <span tabindex=\\\"1\\\" class=\\\"focus-guard\\\"></span> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\nimport {SearchScreen} from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport {ISearchScreenParam} from 'Core/Screens/IScreen';\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {TypeScreen} from 'Core/Screens/TypeScreen/TypeScreen';\r\nimport {EditScreen} from 'Core/Screens/EditScreen/EditScreen';\r\nimport {ScreenManager} from 'Core/ScreenManager/ScreenManager';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {MenuManager} from 'MenuManager/MenuManager';\r\nimport {ScreenTypes} from 'Core/Common/Enums/ScreenTypes';\r\nimport {Grid} from 'Core/Controls/Grid/Grid';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {PUB_SUB_EVENTS} from 'MenuManager/PubSubEvents';\r\nimport {NOTIFICATIONS, LABELS} from 'Core/Components/Translation/Locales';\r\nimport {LockManager} from 'Core/Components/Locker/LockManager';\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {IQueryScreen} from \"Core/Screens/QueryScreen/IQueryScreen\";\r\n\r\nimport ListScreenTemplate from 'Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen.html';\r\nimport {ProfileSelectorScreen} from '../ProfileSelectorScreen/ProfileSelectorScreen';\r\nimport {QueryExpressionModel} from \"../../Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel\";\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen'] = ListScreenTemplate;\r\n\r\nexport class QueryScreen extends BaseScreen implements IQueryScreen {\r\n private _grid: Grid;\r\n private _queryName: String;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.Edit);\r\n\r\n this.AddEvent('NEW_RECORD_CREATED');\r\n this.AddEvent('SEARCH_RECORD');\r\n this.AddEvent('ADD_RECORD');\r\n this.AddEvent('DATA_CHANGED');\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n if(!this._model.Data) {\r\n return;\r\n }\r\n this._grid = this.GetControl<Grid>('Grid');\r\n this._queryName = null;\r\n\r\n if (this._grid) {\r\n ['EnableLinkButton', 'EnableAdd&LinkButton', 'EnableAddQueryButton']\r\n .forEach(property => this._grid.ChangeProperty(property, false));\r\n }\r\n\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.Rights = this._model.Data ? this._model.Data.Rights : null;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n\r\n _.each(this._controls, (control: IControl) => control.SetValue(controlValue));\r\n\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => this.SearchRecord());\r\n this.On('ADD_RECORD', this, (eventArgs: any) => this.CreateRecord());\r\n }\r\n\r\n Refresh() {\r\n this._grid.LoadData();\r\n }\r\n\r\n SetRecordId(recordId: number): void {\r\n this._recordId = recordId;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/Templates/AdditionalConsultScreen/QueryScreen/QueryScreen`;\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === 'Search'));\r\n }\r\n\r\n SearchRecord(): void {\r\n LockManager.Instance.ReleaseAllLocks();\r\n\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchControlId = SearchControl != null ? SearchControl.GetControlId() : 0;\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const searchParams: ISearchScreenParam = {\r\n EntityId: this.GetEntityId(),\r\n ControlId: searchControlId,\r\n SearchTerm: searchTerm\r\n };\r\n\r\n const searchScreen = new SearchScreen(searchParams);\r\n\r\n searchScreen.On('RECORD_SELECTED', this, (eventArgs: any) => {\r\n this._tableTypeId = eventArgs.data.TypeId;\r\n this._recordId = eventArgs.data.RecordId;\r\n\r\n UserVarsManager.Instance.AddRecent(this.GetEntityId(), this._recordId, this._tableTypeId);\r\n\r\n searchScreen.Close();\r\n\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, {\r\n EntityId: this.GetEntityId(),\r\n RecordId: this._recordId,\r\n RecordTypeId: this._tableTypeId\r\n });\r\n });\r\n\r\n searchScreen.On('ALT_ENTITY_RECORD_SELECTED', this, (eventArgs) => {\r\n const data = eventArgs.data;\r\n\r\n UserVarsManager.Instance.AddRecent(data.EntityId, data.RecordId, data.TypeId);\r\n data.IsOpenInModal = false;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, data);\r\n });\r\n\r\n\r\n searchScreen.On('NEW_RECORD', this, (eventArgs) => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchScreen.SearchTerm());\r\n });\r\n\r\n this.On('NEW_RECORD_CREATED', this, () => {\r\n searchScreen.Cancel();\r\n });\r\n\r\n typeScreen.Show();\r\n });\r\n\r\n searchScreen.Show();\r\n }\r\n\r\n EditRecord(): void {\r\n\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string) {\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0\r\n })\r\n .then((screen: EditScreen) => {\r\n if (!screen) {\r\n new Notifier($(this._el)).Warning(NOTIFICATIONS.EDIT_SCREEN_NOT_EXISTS);\r\n\r\n return;\r\n }\r\n\r\n LockManager.Instance.ReleaseAllLocks();\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.ParentRecordId = this.GetRecordId();\r\n editScreen.UseLinking = true;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen.On('RECORD_SAVED', this, (eventArgs) => {\r\n const notifier = new Notifier($(this._el));\r\n notifier.Success(NOTIFICATIONS.RECORD_CREATED);\r\n this.Trigger('NEW_RECORD_CREATED');\r\n this.LoadData(eventArgs.data.RecordId);\r\n });\r\n\r\n screen.ShowInModal();\r\n });\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = () => {\r\n const typeScreen = new TypeScreen(this.GetEntityId(), this.GetTableTypeId(), true);\r\n\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n typeScreen.On('TYPES_NOT_FOUND', this, (eventArgs) => new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND));\r\n\r\n typeScreen.On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n };\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector();\r\n return;\r\n }\r\n\r\n\t\tconst profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector();\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n LoadData(recordId: number) {\r\n this.LoadScreenFor(recordId);\r\n }\r\n\r\n LoadScreenFor(recordId: number) {\r\n if (this.IsDashMain) {\r\n this._grid.UpdateTableViewList();\r\n } else {\r\n ScreenManager.GetScreenByScreenType(this.GetEntityId(), ScreenTypes.ConsultScreen, recordId)\r\n .then(screen => {\r\n screen.SetIsReady(true);\r\n MenuManager.Instance.GoToScreen(screen);\r\n })\r\n .fail(err => {\r\n new Notifier().Warning(err.message);\r\n\r\n });\r\n }\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: this._recordId,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n SetQuery(query: QueryExpressionModel, queryName: string = '') {\r\n if (this._grid) {\r\n this._grid.SetQuery(query);\r\n this._grid.SetSubjectRecord(this._recordId);\r\n }\r\n this._queryName = queryName;\r\n }\r\n} ","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"list-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body atesting-grid-container\\\"> <div class=\\\"action-bar-wrapper form-group searchToolbarFormGroup\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right pull-right search-entity-heading\\\"> <div class=\\\"caption search-screen custom-color-option\\\"> <span class=\\\"search-entity-name\\\" data-bind=\\\"text: $data._queryName\\\"></span> </div> <span class=\\\"entity-data-container\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </span> </div> </div> </div> </form> </div> <div class=\\\"clearfix\\\"> <div class=\\\"box-shadow-wrapper margin-t-5px\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped}\\\" class=\\\"form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div> <!-- ko foreach: SubForms --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as $ from \"jquery\";\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\n\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport CardScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen.html';\r\n\r\nimport { ConsultScreen } from \"Core/Screens/ConsultScreen/ConsultScreen\";\r\n\r\nimport {getWidthValue} from \"Core/Screens/CardScreen/CardScreenUtils\";\r\nimport {CARD_SCREEN_PROPERTY_TYPE} from \"../../Constant\";\r\nimport {ISettingsModal} from \"../../Controls/FormDesigner/SettingsModal/SettingsModal\";\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen'] = CardScreenTemplate;\r\n\r\nexport class CardScreen extends ConsultScreen {\r\n private _properties: FormProperties = {};\r\n\r\n private _hasCustomColor: KnockoutObservable<boolean>;\r\n private _hasCustomWeight: KnockoutObservable<boolean>;\r\n private _screenWidth: KnockoutObservable<any>;\r\n private _screenBgColor: KnockoutObservable<any>;\r\n private _screenColors: KnockoutObservable<any>;\r\n private _fontColor: KnockoutObservable<any>;\r\n private _customStyle: KnockoutObservable<any>;\r\n\r\n private _fontFamily: KnockoutObservable<string>;\r\n private _fontWeight: KnockoutObservable<string>;\r\n private _fontStyle: KnockoutObservable<string>;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n\r\n this._hasCustomColor = ko.observable(null);\r\n this._hasCustomWeight = ko.observable(null);\r\n this._screenWidth = ko.observable(null);\r\n this._screenBgColor = ko.observable(null);\r\n this._screenColors = ko.observable(null);\r\n this._fontColor = ko.observable(null);\r\n this._customStyle = ko.observable(null);\r\n\r\n this._fontFamily = ko.observable(null);\r\n this._fontWeight = ko.observable(null);\r\n this._fontStyle = ko.observable(null);\r\n\r\n try {\r\n this._properties = GenericDeserialize(JSON.parse(screenModel.Properties), FormProperties);\r\n } catch (error) {}\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/CardScreen/CardScreen';\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n super.AfterRender(el);\r\n\r\n const bgColor = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_BACKGROUND_COLOR)?.Value,\r\n screenWidth = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.SCREEN_WIDTH)?.Value,\r\n fontColor = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_COLOR)?.Value,\r\n fontFamily = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_FAMILY)?.Value.Value,\r\n fontWeight = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_WEIGHT)?.Value.Value,\r\n fontStyle = this.FindElementByType(this._properties?.Options, CARD_SCREEN_PROPERTY_TYPE.FONT_STYLE)?.Value.Value;\r\n\r\n this._screenWidth(!!screenWidth?.Value ? `calc(${getWidthValue(screenWidth)} - 5px)` : null);\r\n this._screenBgColor(!!bgColor ? bgColor : null);\r\n this._fontColor(!!fontColor ? fontColor : null);\r\n\r\n this._fontFamily(!!fontFamily ? fontFamily : null);\r\n this._fontWeight(!!fontWeight ? fontWeight : null);\r\n this._fontStyle(!!fontStyle ? fontStyle : null);\r\n\r\n this._customStyle(`${this._fontFamily()} ${this._fontWeight()} ${this._fontStyle()}`);\r\n this._hasCustomWeight(!!this._fontWeight());\r\n this._hasCustomColor(!!this._fontColor());\r\n\r\n }\r\n\r\n FindElementByType(array: ISettingsModal[], type: string): ISettingsModal | undefined {\r\n return _.find(array, { Type: type });\r\n }\r\n}","import { CONTROL_TYPES } from 'Core/Constant';\r\nimport * as ko from 'knockout';\r\n\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {ScreenDataModel} from 'Core/ScreenManager/Models/ScreenDataModel'\r\nimport {SpecialScreen} from 'Core/Screens/SpecialScreen/SpecialScreen';\r\n\r\nimport Template from 'Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen.html';\r\nimport { Step } from '../../Controls/Step/Step';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen'] = Template;\r\n\r\nexport class StepsScreen extends SpecialScreen {\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n }\r\n\r\n Init() {\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n this.SetData(this._model.Data);\r\n\r\n this.On('SEARCH_RECORD', this, (eventArgs: any) => {\r\n this.SearchRecord();\r\n });\r\n this.On('EDIT_RECORD', this, (eventArgs: any) => {\r\n if (eventArgs.data && eventArgs.data.TableTypeId && eventArgs.data.RecordId) {\r\n this.EditRecord(eventArgs.data.RecordId, eventArgs.data.TableTypeId);\r\n } else {\r\n this.EditRecord();\r\n }\r\n });\r\n\r\n this.On('NEW_RECORD', this, (eventArgs: any) => {\r\n var screenData = null;\r\n if (eventArgs.data && eventArgs.data.ScreenData instanceof ScreenDataModel) {\r\n screenData = eventArgs.data.ScreenData;\r\n }\r\n\r\n if (eventArgs.data && eventArgs.data.TableTypeId) {\r\n this.NewRecord(eventArgs.data.TableTypeId, 0, screenData);\r\n } else {\r\n this.ShowTypeScreen(screenData);\r\n }\r\n });\r\n\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.ShowProfileSelector();\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/StepsScreen/StepsScreen';\r\n }\r\n\r\n LoadStepControlData({recordId}: {recordId: number }){\r\n const stepControl: Step = this.GetControlByType(CONTROL_TYPES.Step) as Step;\r\n if(stepControl){\r\n stepControl.On('FINISH_PROCESS', this, ()=>{\r\n this.Trigger('FINISH_PROCESS');\r\n this._modal?.Close();\r\n });\r\n stepControl.SelectRecord2({ recordId });\r\n }\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"special-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"special-screen-content\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'notBottomBar': BottomBar && !IsBottomBarControls}\\\"> <!-- ko foreach: SubForms --> <div data-bind=\\\"css: {'wrapped-container': _isWrapped, 'hidden-form': _noSubControls()}\\\" class=\\\"mainSubForm col-md-12 form-wrapper__main-sub-form\\\"> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> </div> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <!-- ko with: BottomBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {ConsultScreen} from \"Core/Screens/ConsultScreen/ConsultScreen\";\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {ScreenDataModel} from \"Core/ScreenManager/Models/ScreenDataModel\";\r\nimport {RightsModel} from \"Core/ScreenManager/Models/RightsModel\";\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {SubFormModel} from \"Core/Models/Screens/SubFormModel\";\r\nimport {ControlModel} from \"Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {CONTROL_TYPES} from \"Core/Constant\";\r\n\r\nimport EmptyScreenTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen.html';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen'] = EmptyScreenTemplate;\r\n\r\nexport class EmptyScreen extends ConsultScreen {\r\n private _emptyBar: boolean;\r\n\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n this._emptyBar = true;\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/EmptyScreen/EmptyScreen';\r\n }\r\n\r\n AfterRender(el: HTMLElement[]) {\r\n super.AfterRender(el);\r\n this.SearchRecord();\r\n }\r\n\r\n static EmptyScreenModel(model): ScreenModel {\r\n let screenModel = new ScreenModel();\r\n screenModel.Data = new ScreenDataModel();\r\n screenModel.Data.RecordId = 0;\r\n screenModel.Data.Rights = new RightsModel();\r\n screenModel.Data.Rights.IsRecordSecurityOk = true;\r\n\r\n screenModel.EntityIcon = model.EntityIcon;\r\n screenModel.ScreenTypeName = ScreenTypes[ScreenTypes.EmptyScreen];\r\n screenModel.EntityId = model.EntityId;\r\n\t\tscreenModel.EntityName = model.EntityName;\r\n\t\tscreenModel.EntityNameTranslation = model.EntityNameTranslation;\r\n screenModel.ActionBar = new SubFormModel();\r\n\r\n let controlModel = new ControlModel();\r\n\r\n const searchControl = _.find(model.ActionBar.Controls, control => {\r\n const searchControlModel = control as ControlModel;\r\n return searchControlModel && searchControlModel.TypeName === CONTROL_TYPES.Search;\r\n }) as ControlModel;\r\n\r\n if (searchControl) {\r\n controlModel.Id = searchControl.Id;\r\n controlModel.Properties = searchControl.Properties;\r\n }\r\n\r\n controlModel.TypeName = CONTROL_TYPES.Search;\r\n\r\n screenModel.ActionBar.Controls = [controlModel]\r\n\r\n return screenModel;\r\n }\r\n\r\n OpenSearch(){\r\n this.SearchRecord();\r\n }\r\n}","// Module\nvar code = \"<div id=\\\"wrapper\\\" class=\\\"full-height empty-screen-page\\\"> <div class=\\\"screen consult-screen empty-screen screenForm full-height\\\"> <div class=\\\"portlet light full-height\\\"> <div data-bind=\\\"subformResize: {}\\\" class=\\\"clearfix consult-screen-container empty-screen-container full-height\\\"> <!--ko if: ActionBar--> <div class=\\\"actionBarSubForm clearfix\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body clearfix\\\"> <div class=\\\"action-bar-wrapper\\\"> <div class=\\\"bar-left\\\"> <!-- ko with: ActionBar --> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <div class=\\\"bar-right\\\"> <div class=\\\"pull-right-sm lifestatus-bar-wrapper\\\"> <!-- ko with: Icon --> <!-- ko template: { name: GetTemplateName.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </form> </div> <!-- /ko --> <div class=\\\"clearfix middle-block\\\"> <div class=\\\"content-block transition\\\"> <!-- ko if: _emptyBar --> <div class=\\\"full-width-block\\\"> <div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"emptyContent\\\"> <span><!-- ko text: _labels.NO_RECORD_SELECTED --><!-- /ko --></span> <a data-bind=\\\"click: OpenSearch.bind($data)\\\"><!-- ko text: _labels.SEARCH --><!-- /ko --></a> </div> </div> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\n\r\nimport * as GridStack from 'gridstack';\r\n\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {BaseScreen} from 'Core/Screens/BaseScreen';\r\n\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport {DataModes} from \"Core/Enums/DataModes\";\r\n\r\nimport {CONTROL_TYPES, RenderModes} from 'Core/Constant';\r\nimport {IControlValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport {LinkList} from 'Core/Controls/LinkList/LinkList';\r\nimport {ControlDataModel} from 'Core/ScreenManager/Models/ControlDataModel';\r\nimport {RecordSpecsModel} from 'Core/ScreenManager/Models/RecordSpecsModel';\r\nimport {TypeScreen} from \"Core/Screens/TypeScreen/TypeScreen\";\r\nimport {ProfileSelectorScreen} from \"Core/Screens/ProfileSelectorScreen/ProfileSelectorScreen\";\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\nimport {ScreenManager} from \"Core/ScreenManager/ScreenManager\";\r\nimport {EditScreen} from \"Core/Screens/EditScreen/EditScreen\";\r\n\r\nimport { defaultGridStackOptions } from 'Core/Screens/Dashboard/DashboardUtils';\r\n\r\nimport DashboardTemplate\r\n from 'Core/Screens/Templates/AdditionalConsultScreen/Dashboard/DashboardTemplate.html';\r\n\r\nko.templates[\"Core/Screens/Templates/AdditionalConsultScreen/Dashboard/Dashboard\"] = DashboardTemplate;\r\n\r\nexport class Dashboard extends BaseScreen {\r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel, RenderModes.View);\r\n this.Init();\r\n\r\n let body = $('body');\r\n if (!body.hasClass('Dashboard') && this.IsDashboard){\r\n body.addClass('Dashboard');\r\n }\r\n }\r\n\r\n private Init() {\r\n if (!this._model.Data) {\r\n return;\r\n }\r\n\r\n this._dataModel = this._model.Data;\r\n\r\n var controlData = new ControlDataModel();\r\n controlData.Rights = this._model.Data.Rights;\r\n\r\n var controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: -1,\r\n RecordSpecsModel: null\r\n };\r\n\r\n _.each(this._controls, (control: IControl) => {\r\n control.SetValue(controlValue);\r\n });\r\n\r\n this.On('ADD_RECORD', this, (eventArgs: any) => {\r\n this.CreateRecord();\r\n });\r\n }\r\n\r\n AfterRender(el) {\r\n super.AfterRender(el);\r\n\r\n setTimeout(() => {\r\n GridStack.addGrid(\r\n this._el.querySelector('.dashboard-container'),\r\n {\r\n ...defaultGridStackOptions,\r\n children: this.SubForms.map(subForm => ({\r\n ...subForm.GetModel().Properties.DashboardBlock,\r\n content: `<div class=\"dashboard-RuntimeContentBox\" id=\"${subForm.GetFormGuid()}\"></div>`\r\n }))\r\n }\r\n );\r\n\r\n this.SubForms.forEach(subForm => {\r\n subForm.RenderDynamically(subForm.GetFormGuid(), this);\r\n });\r\n });\r\n }\r\n\r\n CreateRecord() {\r\n const showTypeSelector = (allowChildrenTypes: boolean) => {\r\n const SearchControl = this.GetTextSearchTermControl();\r\n const searchTerm = SearchControl ? SearchControl.GetValue() : '';\r\n\r\n const parentTypeId = allowChildrenTypes ? this.GetTableTypeId() : 0;\r\n const typeScreen = new TypeScreen(this.GetEntityId(), parentTypeId, true);\r\n\r\n typeScreen\r\n .On('TYPES_NOT_FOUND', this, (eventArgs) => {\r\n new Notifier().Warning(eventArgs.data.Message || NOTIFICATIONS.TYPES_NOT_FOUND);\r\n })\r\n .On('TYPE_SELECTED', this, (eventArgs) => {\r\n const typeId = eventArgs.data.TypeId;\r\n const kindId = eventArgs.data.KindId;\r\n const exampleRecordId = eventArgs.data.ExampleRecordId;\r\n\r\n this.NewRecord(typeId, kindId, exampleRecordId, searchTerm);\r\n });\r\n\r\n typeScreen.Show();\r\n };\r\n\r\n if (this.IsInModal()) {\r\n showTypeSelector(false);\r\n return;\r\n }\r\n\r\n const profileSelectorScreen = new ProfileSelectorScreen(this.GetEntityId(), this.GetEntityName());\r\n\r\n profileSelectorScreen\r\n .On('PROFILES_NOT_FOUND', this, () => {\r\n new Notifier().Warning('Profiles with create possibilities not found');\r\n })\r\n .On('PROFILE_SELECTION_CANCELLED', this, () => {\r\n profileSelectorScreen.Close();\r\n })\r\n .On('PROFILE_SELECTED', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(false);\r\n })\r\n .On('USED_CURRENT_PROFILE', this, () => {\r\n profileSelectorScreen.Close();\r\n showTypeSelector(false);\r\n });\r\n\r\n profileSelectorScreen.ShowIfNeeded();\r\n }\r\n\r\n NewRecord(tableTypeId: number, kindId: number, exampleRecordId: number, searchTerm?: string,\r\n dataMode: DataModes = DataModes.Default, subjectLifestatusId: number = null, linkToSource: boolean = false, aliasSuffix: string = '') {\r\n BlockUI.Block();\r\n\r\n ScreenManager.GetEditScreen({\r\n EntityId: this.GetEntityId(),\r\n TableTypeId: tableTypeId,\r\n KindId: kindId,\r\n RecordId: exampleRecordId,\r\n LoadAsExample: exampleRecordId > 0,\r\n DataMode: dataMode,\r\n SubjectLifestatusId: subjectLifestatusId,\r\n ParentRecordId: this.GetRecordId(),\r\n AliasSuffix: aliasSuffix\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then((screen: EditScreen) => {\r\n const editScreen = screen;\r\n\r\n editScreen.IsDataFromExample = exampleRecordId > 0;\r\n editScreen.LinkToSource = linkToSource;\r\n\r\n if (searchTerm) {\r\n this.NameControlSetValue(editScreen, searchTerm);\r\n }\r\n\r\n screen\r\n .On('COPY', this, (eventArgs) => {\r\n if (this.IsInModal()) {\r\n this.Close();\r\n }\r\n\r\n const copyTableTypeId = eventArgs.data.copyToType || this._model.TableTypeId;\r\n this.NewRecord(copyTableTypeId, null, eventArgs.data.recordId, null, eventArgs.data.dataMode, null, eventArgs.data.linkToSource, eventArgs.data.aliasSuffix);\r\n });\r\n\r\n screen.ShowInModal();\r\n })\r\n .fail(error => {\r\n new Notifier($(this._el)).Warning(error.message);\r\n });\r\n }\r\n\r\n private NameControlSetValue(screen: EditScreen, value: string) {\r\n const control = screen.GetControlByFieldName('NAME', CONTROL_TYPES.Text);\r\n\r\n if (control) {\r\n const controlData = new ControlDataModel();\r\n\r\n controlData.FieldId = control.FieldModel.Id;\r\n controlData.Value = value;\r\n controlData.DisplayValue = value;\r\n\r\n const controlValue: IControlValue = {\r\n Data: controlData,\r\n SubjectEntityId: this._model.EntityId,\r\n SubjectRecordId: 0,\r\n RecordSpecsModel: new RecordSpecsModel()\r\n };\r\n\r\n control.SetDefaultValue(controlValue);\r\n }\r\n }\r\n\r\n GetTextSearchTermControl(): IControl {\r\n return _.first(_.filter(this.GetAllControls(), (control: IControl) => control.GetType() === CONTROL_TYPES.Search));\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/Dashboard/Dashboard';\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId())\\\" id=\\\"wrapper\\\"> <div class=\\\"dashboard-screen\\\"> <div class=\\\"portlet light\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"dashboard-screen-content\\\"> <div class=\\\"row form-wrapper\\\" data-bind=\\\"css: {'notBottomBar': BottomBar && !IsBottomBarControls}\\\"> <div class=\\\"mainSubForm col-md-12 form-wrapper__main-sub-form\\\"> <div class=\\\"dashboard-container grid-stack\\\" style=\\\"min-height:300px\\\"></div> </div> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import * as $ from 'jquery';\r\nimport * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {ScreenModel} from 'Core/Models/Screens/ScreenModel';\r\n\r\nimport {ResizeObserver} from 'Core/Common/ResizeObserver';\r\n\r\nconst ResizeService = new ResizeObserver();\r\n\r\n// Templates\r\nimport Template from 'Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen.html';\r\nimport { EditScreen } from '../EditScreen/EditScreen';\r\n\r\nko.templates['Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen'] = Template;\r\n\r\nexport class ProcessCardPage extends EditScreen {\r\n \r\n constructor(screenModel: ScreenModel) {\r\n super(screenModel);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'Core/Screens/Templates/AdditionalConsultScreen/ProcessCardScreen/ProcessCardScreen';\r\n }\r\n \r\n AfterRender(el) {\r\n if (el){\r\n this._el = el[0];\r\n }\r\n let isModalMode: boolean = !this.TargetId || false;\r\n let isParentControlExist: boolean = true;\r\n\r\n this.SetScreenStyle(isModalMode, isParentControlExist);\r\n\r\n if (this._dataModel) {\r\n this.SetFocusOnFirstControl();\r\n }\r\n }\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: _help.ShowScreenHelp.bind(_help, $data.GetScreenId()), attr: {'data-screen-name': $data.GetTypeName()}\\\" id=\\\"wrapper\\\"> <div class=\\\"screen process-card-screen screenForm\\\"> <b class=\\\"spacerBackground\\\"></b> <div class=\\\"portlet light\\\"> <div class=\\\"container relative-block\\\"> <div class=\\\"left-site\\\"> <div class=\\\"row form-wrapper\\\"> <!-- ko with: FirstSubForm --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </div> <div class=\\\"right-site\\\"> <div class=\\\"row form-wrapper\\\"> <!-- ko foreach: ThreeSubFormsWithoutFirst --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- ko if: BottomBar --> <!-- ko if: IsBottomBarControls --> <!-- ko with: BottomBar --> <div class=\\\"full-width-block\\\" data-bind=\\\"css: {'expanded': _isExpanded, 'noLinkList': $parent.NoLinkList}\\\"> <div class=\\\"box-shadow-wrapper\\\"> <form role=\\\"form\\\" class=\\\"full-size\\\"> <div class=\\\"form-body\\\"> <!-- ko foreach: Controls --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> </form> </div> </div> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","import { IScreen } from 'Core/Screens/IScreen'\r\nimport { ConsultScreen } from 'Core/Screens/ConsultScreen/ConsultScreen'\r\nimport { ListScreen } from 'Core/Screens/ListScreen/ListScreen'\r\nimport { SpecialScreen } from 'Core/Screens/SpecialScreen/SpecialScreen'\r\nimport { DesignScreen } from 'Core/Screens/DesignScreen/DesignScreen'\r\nimport { EditScreen } from 'Core/Screens/EditScreen/EditScreen'\r\nimport { LinkEditor } from 'Core/Screens/Common/LinkEditor/LinkEditor'\r\nimport { ScreenModel, DesignScreenModel } from 'Core/Models/Screens/ScreenModel'\r\nimport { Portlet } from \"Core/Portlets/Models/Runtime/Portlet\";\r\nimport { QueryScreen } from 'Core/Screens/QueryScreen/QueryScreen'\r\nimport { CardScreen } from 'Core/Screens/CardScreen/CardScreen'\r\nimport { StepsScreen } from 'Core/Screens/StepsScreen/StepsScreen';\r\nimport {EmptyScreen} from \"Core/Screens/EmptyScreen/EmptyScreen\";\r\nimport {Dashboard} from './Dashboard/Dashboard';\r\nimport { ConcreteEntityModel } from 'QueryBuilder/Models/ConcreteEntityModel'\r\nimport { ProcessCardPage } from 'Core/Screens/ProcessCardPage/ProcessCardPage'\r\n\r\nexport class ScreenFactory {\r\n\tstatic GetScreenInstance(model: ScreenModel, isLinkEditor?:boolean): IScreen {\r\n\t\tvar screen = null;\r\n\t\tif (model) {\r\n\t\t\tswitch (model.ScreenTypeName) {\r\n\t\t\t\tcase \"ConsultScreen\":\r\n\t\t\t\t\tif (model.Data !== null && !model.Data.RecordExists && !isLinkEditor){\r\n\t\t\t\t\t\tconst emptyScreenModel = EmptyScreen.EmptyScreenModel(model);\r\n\t\t\t\t\t\tscreen = new EmptyScreen(emptyScreenModel);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tscreen = new ConsultScreen(model);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"ListScreen\":\r\n\t\t\t\t\tscreen = new ListScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"Portlet\":\r\n\t\t\t\t\tscreen = new Portlet(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"SpecialScreen\":\r\n\t\t\t\t\tscreen = new SpecialScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"Dashboard\":\r\n\t\t\t\t\tscreen = new Dashboard(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"EditScreen\":\r\n\t\t\t\t\tscreen = new EditScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"LinkEditor\":\r\n\t\t\t\t\tscreen = new LinkEditor(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"QueryScreen\":\r\n\t\t\t\t\tscreen = new QueryScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"CardScreen\":\r\n\t\t\t\t\tscreen = new CardScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"ProcessCardPage\":\r\n\t\t\t\t\tscreen = new ProcessCardPage(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"StepsScreen\":\r\n\t\t\t\t\tscreen = new StepsScreen(model);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!screen) {\r\n\t\t\tconsole.log(`Not implemented screen: ${model.ScreenTypeName}`);\r\n\t\t\tconsole.log(model);\r\n\t\t}\r\n\t\treturn screen;\r\n\t}\r\n\r\n\tstatic GetDesignScreenInstance(model: DesignScreenModel, subjectEntity: ConcreteEntityModel): DesignScreen {\r\n\t\tvar screen = null;\r\n\t\tif (model) {\r\n\t\t\tscreen = new DesignScreen(model, subjectEntity);\r\n\t\t}\r\n\t\treturn screen;\r\n\t}\r\n\r\n}","export enum SearchTypes {\r\n\tNone,\r\n\tFastSearch,\r\n\tPhoneticSearch,\r\n\tFieldSearch,\r\n\tTotalSearch\r\n}\r\n\r\nexport enum RecordTypes {\r\n\tDash,\r\n\tRoot,\r\n\tAll\r\n}\r\n\r\nexport enum SearchByMainRelationTypes\r\n{\r\n\tOff,\r\n ByRelations,\r\n\tByMainRelations,\r\n\tByConditions,\r\n\tByLinkedDocuments\r\n}","export var EVENTS = {\r\n\tRECORD_SELECTED: 'RECORD_SELECTED',\r\n\tNEW_RECORD: 'NEW_RECORD',\r\n\tSELECT_RECORD: 'SELECT_RECORD',\r\n\tSORT: 'SORT',\r\n\tDUPLICATES_RECORD_SELECTED: 'DUPLICATES_RECORD_SELECTED'\r\n}","import {deserializeAs} from 'libs/cerialize';\r\nimport {UserVarsRecordModel} from 'Core/Screens/SearchScreen/Models/UserVarsRecordModel';\r\n\r\n\r\nexport class GroupNameToRecordsModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.recent = [];\r\n\t\tthis.favorites = [];\r\n\t}\r\n\r\n\t@deserializeAs(UserVarsRecordModel)\r\n\trecent: Array<UserVarsRecordModel>;\r\n\r\n\t@deserializeAs(UserVarsRecordModel)\r\n\tfavorites: Array<UserVarsRecordModel>;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SearchFieldModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tDefaultName: string;\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport {SearchFieldModel} from \"Core/Screens/SearchScreen/Models/SearchFieldModel\";\r\nimport { SearchTypes } from \"Core/Screens/SearchScreen/Enums/Enums\";\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport Exception from '../../../Results/Exceptions/Base/Exception';\r\n\r\n\r\nexport class SearchGroupItemModel {\r\n\tconstructor(public Id: number, public Name: string, public DefaultName: string, private _searchType: SearchTypes, public Disabled: boolean = false) {\r\n\r\n\t}\r\n\r\n\tget SearchType() {\r\n\t\treturn this._searchType;\r\n\t}\r\n}\r\n\r\nexport abstract class SearchGroupModel {\r\n\tprotected Items: KnockoutObservableArray<SearchGroupItemModel>;\r\n\r\n\tconstructor(public Name: string) {\r\n\t\tthis.Items = ko.observableArray();\r\n\t}\r\n\r\n\tabstract AddItem(id: number, name: string, defaultName: string);\r\n\r\n\tGetItem(name: string) {\r\n\t\tlet item = _.find(this.Items(), (item: SearchGroupItemModel) => item.Name === name);\r\n\r\n\t\treturn item || null;\r\n\t}\r\n\r\n\tHasItem(name: string): boolean {\r\n\t\treturn this.GetItem(name) !== null;\r\n\t}\r\n}\r\n\r\nclass SearchModeGroupModel extends SearchGroupModel {\r\n\tconstructor() {\r\n\t\tsuper(LABELS.SEARCH_MODES);\r\n\r\n\t\tthis.Items([\r\n\t\t\tnew SearchGroupItemModel(0, LABELS.FAST_SEARCH, null, SearchTypes.FastSearch),\r\n\t\t\tnew SearchGroupItemModel(0, LABELS.TOTAL_SEARCH, null, SearchTypes.TotalSearch),\r\n\t\t\tnew SearchGroupItemModel(0, LABELS.PHONETIC_SEARCH,null, SearchTypes.PhoneticSearch)\r\n\t\t]);\r\n\t}\r\n\r\n\tAddItem(id: number, name: string, defaultName: string) {\r\n\t\t//this.Items.push(new SearchGroupItemModel(id, name, SearchTypes.None));\r\n\t}\r\n}\r\n\r\nclass FieldSearchGroupModel extends SearchGroupModel {\r\n\tconstructor() {\r\n\t\tsuper(LABELS.SEARCH_FIELDS);\r\n\t}\r\n\r\n\tAddItem(id: number, name: string, defaultName: string) {\r\n\t\tthis.Items.push(new SearchGroupItemModel(id, name, defaultName, SearchTypes.FieldSearch));\r\n\t}\r\n}\r\n\r\nexport class SearchModeModel {\r\n\tprivate _groups: Array<SearchGroupModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis._groups = [new SearchModeGroupModel(), new FieldSearchGroupModel()];\r\n\t}\r\n\r\n\tAddSearchFields(...searchFields: Array<SearchFieldModel>) {\r\n\t\tlet searchFieldGroup = this._groups[1]//this.GetGroup(LABELS.SEARCH_FIELDS);\r\n\t\tsearchFields.forEach(searchField => searchFieldGroup.AddItem(searchField.Id, searchField.Name, searchField.DefaultName));\r\n\t}\r\n\r\n\tGetSearchItem(name: string) {\r\n\t\tlet groupWithItem = _.find(this._groups, group => group.HasItem(name));\r\n\r\n\t\tif (groupWithItem) {\r\n\t\t\treturn groupWithItem.GetItem(name);\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetDefaultMode(): SearchGroupItemModel {\r\n\t\treturn new SearchGroupItemModel(0, LABELS.FAST_SEARCH, null, SearchTypes.FastSearch);\r\n\t}\r\n\r\n\tprivate GetGroup(name: string): SearchGroupModel {\r\n\t\treturn _.find(this._groups, (group: SearchGroupModel) => group.Name === name);\r\n\t}\r\n\r\n}","import * as ko from 'knockout';\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class AlternativeSearchModel {\r\n @deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n RecordsCount: number;\r\n}\r\n\r\nexport class RowValueModel {\r\n @deserialize\r\n Key: string;\r\n\r\n @deserialize\r\n Value: string;\r\n}\r\n\r\nexport class SearchFieldModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n DefaultName: string;\r\n\r\n SortDirection: number;\r\n SortOrder: KnockoutObservable<number>;\r\n SortOrderClassName: KnockoutComputed<string>;\r\n Sort: Function;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n FormatName: string;\r\n\r\n @deserialize\r\n Size: number;\r\n\r\n @deserialize\r\n ValFieldTypeName: string;\r\n\r\n @deserialize\r\n ValFieldFormatName: string;\r\n\r\n @deserialize\r\n ValFieldSize: number;\r\n}\r\n\r\nexport class SearchResultRowModel {\r\n\r\n constructor(){\r\n this.RowValues = [];\r\n this.NestedData = ko.observable(null);\r\n }\r\n\r\n @deserialize\r\n RecordId: number;\r\n\r\n @deserialize\r\n TypeId: number;\r\n\r\n @deserialize\r\n TypeName: string;\r\n\r\n @deserialize\r\n HasChildren: boolean;\r\n\r\n @deserializeAs(RowValueModel)\r\n RowValues: Array<RowValueModel>;\r\n\r\n NestedData: KnockoutObservable<SearchResultModel>;\r\n}\r\n\r\nexport class SearchResultModel {\r\n\r\n constructor(){\r\n this.Rows = [];\r\n this.SearchFields = [];\r\n this.AlternativeSearchList = [];\r\n }\r\n\r\n @deserialize\r\n RecordsCount: number;\r\n\r\n @deserializeAs(SearchFieldModel)\r\n SearchFields: Array<SearchFieldModel>;\r\n\r\n @deserializeAs(SearchResultRowModel)\r\n Rows: Array<SearchResultRowModel>;\r\n\r\n @deserializeAs(AlternativeSearchModel)\r\n AlternativeSearchList: Array<AlternativeSearchModel>\r\n\r\n @deserialize\r\n ErrorMessage: string;\r\n\r\n @deserialize\r\n NameField: string;\r\n}","import { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport { SearchFieldModel } from 'Core/Screens/SearchScreen/Models/SearchFieldModel';\r\nimport { GroupNameToRecordsModel } from 'Core/Screens/SearchScreen/Models/GroupNameToRecordsModel';\r\nimport { IconModel } from \"Core/Controls/BaseControl/Models/IconModel\";\r\nimport { EntityModel } from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\n\r\nimport { SearchGroups } from \"Core/Enums/SearchGroups\";\r\nimport { SearchTypeModel } from 'Core/Screens/SearchScreen/Models/SearchTypeModel';\r\n\r\nexport class SearchScreenModel {\r\n\r\n\tconstructor() {\r\n\t\tthis.SearchGroups = [];\r\n\t\tthis.SearchFields = [];\r\n\t\tthis.GroupNameToRecords = new GroupNameToRecordsModel();\r\n\t}\r\n\r\n\tpublic get Name() {\r\n\t\treturn this.EntityTranslatedName === null ? this.EntityName : this.EntityTranslatedName;\r\n\t}\r\n\r\n\t@deserialize\r\n EntityId: number;\r\n\r\n @deserialize\r\n TableSecurityRights: number;\r\n\r\n @deserialize\r\n AllowDeduplicationMode: boolean;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityTypeName: string;\r\n\r\n\t@deserialize\r\n\tEntityTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tSearchTerm: string;\r\n\r\n\t@deserialize\r\n\tSharing: boolean;\r\n\r\n\t@deserialize\r\n\tAddingRecordAllowed: boolean;\r\n\r\n\t@deserialize\r\n\tAlternativeEntities: Array<EntityModel>\r\n\r\n\t@deserializeAs(SearchGroups)\r\n\tSearchGroups: Array<SearchGroups>;\r\n\r\n\t@deserializeAs(GroupNameToRecordsModel)\r\n\tGroupNameToRecords: GroupNameToRecordsModel;\r\n\r\n\t@deserializeAs(SearchFieldModel)\r\n SearchFields: Array<SearchFieldModel>;\r\n\r\n @deserializeAs(SearchTypeModel)\r\n Types: Array<SearchTypeModel>;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tIconModel: IconModel;\r\n\r\n\t@deserialize\r\n\tHasBarcodeFields: boolean;\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class SearchTypeModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nexport class UserVarsRecordModel {\r\n\r\n\tconstructor() {\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tTypeId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}","export class SearchResultCell {\r\n private _value;\r\n private _Id;\r\n constructor(value: string, id: number){\r\n this._value = value;\r\n this._Id = id;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {\r\n SearchFieldModel,\r\n SearchResultModel\r\n} from \"../Models/SearchResultModel\";\r\nimport {SearchResultRow} from \"./SearchResultRow\";\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from 'Core/Screens/SearchScreen/Events';\r\nimport {LABELS} from 'Core/Components/Translation/Locales';\r\nimport {ISearchRequestModel, SearchStore} from \"Core/Screens/SearchScreen/Stores/SearchStore\";\r\nimport {RecordTypes, SearchByMainRelationTypes} from \"Core/Screens/SearchScreen/Enums/Enums\";\r\nimport {BlockUI} from \"Core/Common/BlockUi\";\r\nimport {SortOrder} from \"Core/Controls/Grid/BaseGrid/GridColumn/BaseColumn\";\r\nimport {FormatConverter} from \"FormatEditor/FormatConverter\";\r\nimport { ISelectedRecord } from 'Core/Screens/SearchScreen/SearchScreen';\r\n\r\n// Templates\r\nimport SearchResultGridTemplate from 'Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid.html';\r\nko.templates['Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid'] = SearchResultGridTemplate;\r\n\r\nexport class SearchResultGrid extends Event{\r\n\r\n private _hasData: KnockoutObservable<boolean>;\r\n private _searchResultMessage: KnockoutObservable<string>;\r\n private _searchResult: SearchResultModel;\r\n private _columns: KnockoutObservableArray<SearchFieldModel>;\r\n private _rows: KnockoutObservableArray<SearchResultRow>;\r\n private _isSmallTable: KnockoutObservable<boolean>;\r\n private _searchRequest: ISearchRequestModel;\r\n private _container: HTMLElement;\r\n private _orderFields: Array<any>;\r\n\tprivate _showExpandButton: boolean;\r\n\tprivate _labels = LABELS;\r\n private _multiselectMode: boolean;\r\n private _selectedRecords: KnockoutObservableArray<number>;\r\n private _selectedDuplicatesRecords: KnockoutObservableArray<ISelectedRecord>;\r\n private _showDuplicatesMode: boolean;\r\n\r\n constructor(\r\n searchResult: SearchResultModel,\r\n selectedRecords: KnockoutObservableArray<number>,\r\n searchRequest: ISearchRequestModel,\r\n showExpandButton: boolean,\r\n multiselectMode: boolean,\r\n showDuplicatesMode: boolean,\r\n selectedDuplicatesRecords: KnockoutObservableArray<ISelectedRecord>,\r\n ){\r\n super();\r\n this._showExpandButton = showExpandButton;\r\n this._showDuplicatesMode = showDuplicatesMode;\r\n this._hasData = ko.observable(searchResult.Rows.length > 0);\r\n this._searchResultMessage = ko.observable(searchResult.ErrorMessage || this._labels.NO_RECORDS_FOUND);\r\n this._searchResult = searchResult;\r\n this._columns = ko.observableArray(searchResult.SearchFields);\r\n this._rows = ko.observableArray([]);\r\n this._isSmallTable = ko.observable(searchResult.SearchFields.length <= 2);\r\n this._searchRequest = searchRequest;\r\n this._orderFields = [];\r\n this._multiselectMode = multiselectMode;\r\n this._selectedRecords = selectedRecords;\r\n this._selectedDuplicatesRecords = selectedDuplicatesRecords;\r\n\r\n let rows = [];\r\n _.each(searchResult.Rows, (item) => {\r\n item.RowValues.map((row) => {\r\n if(row.Value) {\r\n const fieldMetadata = _.find(searchResult.SearchFields, (item) => {return item.Name == row.Key});\r\n if(fieldMetadata) {\r\n row.Value = this.PrepareFormattedValue({ value: row.Value, fieldMetadata });\r\n }\r\n }\r\n });\r\n\r\n let row = new SearchResultRow(item, searchResult.SearchFields);\r\n row.IsSelected.subscribe((newValue)=>{\r\n this.Trigger(SEARCH_SCREEN_EVENTS.SELECT_RECORD, { Row: row.Model, IsSelected: newValue, RowClick: row.RowClick() });\r\n });\r\n\r\n let isSelected = _.any(this._selectedRecords(), id => id === row.RecordId);\r\n\r\n row.IsSelected(!!isSelected);\r\n\r\n row.IsSelectedDuplicatesRecord.subscribe(newValue => {\r\n this.Trigger(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, {Row: row.Model, IsDuplicatesSelected: newValue});\r\n });\r\n let isSelectedDuplicatesRecord = _.any(this._selectedDuplicatesRecords(), (item: ISelectedRecord) => {\r\n return item.RecordId === row.RecordId && item.TableId === this._searchRequest.EntityId;\r\n });\r\n if (this._selectedDuplicatesRecords().length == 2){\r\n row.IsDisableDuplicateRecord(!isSelectedDuplicatesRecord);\r\n }\r\n row.IsSelectedDuplicatesRecord(isSelectedDuplicatesRecord);\r\n\r\n rows.push(row);\r\n });\r\n this._rows(rows);\r\n this._selectedDuplicatesRecords.subscribe((newValue)=>{\r\n _.each(this._rows(), (row) => {\r\n let isSelectedDuplicatesRecord = _.any(this._selectedDuplicatesRecords(), (item: ISelectedRecord) => {\r\n return item.RecordId === row.RecordId && item.TableId === this._searchRequest.EntityId;\r\n });\r\n if (this._selectedDuplicatesRecords().length == 2){\r\n row.IsDisableDuplicateRecord(!isSelectedDuplicatesRecord);\r\n } else {\r\n if (this._selectedDuplicatesRecords().length <= 1){\r\n row.IsDisableDuplicateRecord(false);\r\n row.IsSelectedDuplicatesRecord(isSelectedDuplicatesRecord);\r\n }\r\n }\r\n row.IsSelectedDuplicatesRecord(isSelectedDuplicatesRecord);\r\n });\r\n });\r\n this.AddEvent(SEARCH_SCREEN_EVENTS.SELECT_RECORD);\r\n this.AddEvent(SEARCH_SCREEN_EVENTS.SORT);\r\n this.AddEvent(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED);\r\n }\r\n\r\n PrepareFormattedValue({ value, fieldMetadata }: { value: string; fieldMetadata: SearchFieldModel }) {\r\n if (_.contains(['Date', 'Time', 'DateTime'], fieldMetadata.TypeName)) {\r\n value = FormatConverter.CorrectTimezone(value);\r\n\r\n const datetimeFormat = FormatConverter.GetDateFormatFromFieldModel(\r\n { Type: fieldMetadata.TypeName, FormatName: fieldMetadata.FormatName },\r\n true\r\n );\r\n\r\n return FormatConverter.ConvertFromDefaultFormat(value, datetimeFormat);\r\n }\r\n\r\n if (_.contains(['Decimal', 'Integer'], fieldMetadata.TypeName)) {\r\n return this.FormatDecimalOrInteger({\r\n value,\r\n formatName: fieldMetadata.FormatName,\r\n size: fieldMetadata.Size\r\n });\r\n }\r\n\r\n if (fieldMetadata.TypeName === 'Lookup') {\r\n if (_.contains(['Decimal', 'Integer'], fieldMetadata.ValFieldTypeName)) {\r\n return this.FormatDecimalOrInteger({\r\n value,\r\n formatName: fieldMetadata.ValFieldFormatName,\r\n size: fieldMetadata.ValFieldSize\r\n });\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n FormatDecimalOrInteger({ value, formatName, size }: { value: string; formatName: string; size: number }) {\r\n return FormatConverter.LocalizeDecimalOrInteger(\r\n value && formatName === 'Percentage'\r\n ? (Number(value.replace(/[.,]/g, '.')) * 100).toFixed(size < 2 ? 0 : size - 2)\r\n : value\r\n );\r\n }\r\n\r\n GetTemplateName() {\r\n return 'Core/Screens/SearchScreen/SearchResultGrid/Templates/SearchResultGrid'\r\n }\r\n\r\n AfterRender(elements: Array<HTMLElement>){\r\n this._container = elements[0];\r\n }\r\n\r\n SelectRecord(row: SearchResultRow){\r\n if (row.IsSelected()){\r\n row.RowClick(false);\r\n } else {\r\n row.RowClick(true);\r\n row.IsSelected(true);\r\n }\r\n }\r\n\r\n MultiSelectRecord(row: SearchResultRow){\r\n row.IsSelected(!row.IsSelected());\r\n }\r\n\r\n SelectRecords(ids: number[]) {\r\n if (ids && ids.length > 0 && this._multiselectMode) {\r\n _.each(this._rows(), (row) => {\r\n if (_.contains(ids, row.RecordId)) {\r\n this.SelectRecord(row);\r\n }\r\n });\r\n }\r\n }\r\n\r\n ToggleExpand(row: SearchResultRow) {\r\n if(row.HasChildren) {\r\n row.Expanded(!row.Expanded());\r\n\r\n if (row.Expanded()) {\r\n this.GetSubGriData(row);\r\n } else {\r\n row.SubGrid = null;\r\n }\r\n }\r\n }\r\n\r\n GetSubGriData(row: SearchResultRow){\r\n BlockUI.Block({ Target: this._container });\r\n this._searchRequest.SubGridParentRecordId = row.RecordId;\r\n this._searchRequest.SearchPhrase = '';\r\n this._searchRequest.AlternativeEntities = [];\r\n this._searchRequest.RecordType = RecordTypes[RecordTypes.All];\r\n this._searchRequest.SearchByMainRelationType = SearchByMainRelationTypes.Off;\r\n this._searchRequest.EnableFilter = false;\r\n this._searchRequest.ControlId = 0;\r\n this._searchRequest.ParentEntityId = 0;\r\n this._searchRequest.ParentRecordId = 0;\r\n this._searchRequest.PageNumber = null;\r\n this._searchRequest.RecordsPerPage = null;\r\n this._searchRequest.SearchByTypes = [];\r\n this._searchRequest.OrderFields = this._orderFields;\r\n\r\n SearchStore.Search(this._searchRequest)\r\n .always(()=>{\r\n BlockUI.Unblock(this._container);\r\n })\r\n .then(result => {\r\n\r\n _.each(result.SearchFields, (column) =>{\r\n if (this._orderFields[0] && this._orderFields[0].Id === column.Id) {\r\n column.SortDirection = Number(this._orderFields[0] && this._orderFields[0].Order || SortOrder.Asc);\r\n } else {\r\n column.SortDirection = Number(SortOrder.Both);\r\n }\r\n\r\n column.SortOrder = ko.observable(column.SortDirection);\r\n\r\n column.SortOrderClassName = ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!column.Id) {\r\n return 'sort-null';\r\n }\r\n return `sort-${SortOrder[column.SortOrder()].toLowerCase()}`;\r\n }\r\n });\r\n\r\n column.Sort = () => {\r\n if (!column.Id) {\r\n return;\r\n }\r\n switch (SortOrder[column.SortOrder()]) {\r\n case 'Asc':\r\n column.SortDirection = SortOrder.Desc;\r\n break;\r\n case 'Desc':\r\n column.SortDirection = SortOrder.Both;\r\n break;\r\n case 'Both':\r\n column.SortDirection = SortOrder.Asc;\r\n break;\r\n }\r\n column.SortOrder(column.SortDirection);\r\n\r\n };\r\n\r\n column.SortOrder.subscribe((order) => {\r\n this._orderFields = [{\r\n Id: column.Id,\r\n Order: order\r\n }];\r\n\r\n this.GetSubGriData(row);\r\n });\r\n });\r\n\r\n let subGrid = new SearchResultGrid(\r\n result,\r\n this._selectedRecords,\r\n this._searchRequest,\r\n this._showExpandButton,\r\n this._multiselectMode,\r\n this._showDuplicatesMode,\r\n this._selectedDuplicatesRecords);\r\n row.SubGrid = subGrid;\r\n\r\n subGrid.On(SEARCH_SCREEN_EVENTS.SELECT_RECORD, this, (eventArgs) => {\r\n this.Trigger(SEARCH_SCREEN_EVENTS.SELECT_RECORD, { Row: eventArgs.data.Row, IsSelected: eventArgs.data.IsSelected });\r\n });\r\n\r\n subGrid.On(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, this, (eventArgs) => {\r\n this.Trigger(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, { Row: eventArgs.data.Row, IsDuplicatesSelected: eventArgs.data.IsDuplicatesSelected });\r\n });\r\n\r\n $(window).trigger('resize');\r\n });\r\n }\r\n}\r\n","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport {SearchResultRowModel} from 'Core/Screens/SearchScreen/Models/SearchResultModel';\r\nimport {SearchResultGrid} from 'Core/Screens/SearchScreen/SearchResultGrid/SearchResultGrid';\r\nimport {SearchResultCell} from \"Core/Screens/SearchScreen/SearchResultGrid/SearchResultCell\";\r\nimport {SearchFieldModel} from \"Core/Screens/SearchScreen/Models/SearchFieldModel\";\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class SearchResultRow {\r\n private _model: SearchResultRowModel;\r\n private _subGrid: KnockoutObservable<SearchResultGrid>;\r\n private _toggleButtonClassName: KnockoutComputed<string>;\r\n private _cells: Array<SearchResultCell>;\r\n private _columns: Array<SearchFieldModel>;\r\n public IsSelected: KnockoutObservable<boolean>;\r\n public IsSelectedDuplicatesRecord: KnockoutObservable<boolean>;\r\n public IsDisableDuplicateRecord: KnockoutObservable<boolean>;\r\n Expanded: KnockoutObservable<boolean>;\r\n RowClick: KnockoutObservable<boolean>;\r\n\r\n constructor(model: SearchResultRowModel, columns: Array<SearchFieldModel>){\r\n this.IsSelected = ko.observable(false);\r\n this.RowClick = ko.observable(false);\r\n this.IsSelectedDuplicatesRecord = ko.observable(false);\r\n this.IsDisableDuplicateRecord = ko.observable(false);\r\n this._model = model;\r\n this._subGrid = ko.observable(null);\r\n this.Expanded = ko.observable(false);\r\n this._cells = [];\r\n this._columns = columns;\r\n this._toggleButtonClassName = ko.computed(()=>{\r\n return this.Expanded() ? 'fa-minus-circle' : 'fa-plus-circle';\r\n });\r\n this.Init();\r\n }\r\n\r\n private Init(){\r\n _.each(this._columns, (column) =>{\r\n let columnValue = _.find(this._model.RowValues, (item) =>{\r\n return item.Key === column.Name;\r\n });\r\n\r\n if(columnValue){\r\n this._cells.push(new SearchResultCell(columnValue.Value, column.Id));\r\n }\r\n });\r\n }\r\n\r\n @enumerable get HasChildren(): boolean {\r\n return this._model.HasChildren;\r\n }\r\n\r\n @enumerable get RecordId(): number{\r\n return this._model.RecordId;\r\n }\r\n\r\n set SubGrid(subGrid: SearchResultGrid){\r\n this._subGrid(subGrid);\r\n }\r\n\r\n @enumerable get Model(): SearchResultRowModel{\r\n return this._model;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {ISearchScreenParam} from 'Core/Screens/IScreen';\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {SearchScreenStore} from 'Core/Screens/SearchScreen/Stores/SearchScreenStore';\r\nimport {SearchScreenModel} from 'Core/Screens/SearchScreen/Models/SearchScreenModel';\r\nimport {\r\n FilterByAlternativeEntitiesModel,\r\n ISearchRequestModel,\r\n SearchStore\r\n} from 'Core/Screens/SearchScreen/Stores/SearchStore';\r\nimport {RecordTypes, SearchByMainRelationTypes} from 'Core/Screens/SearchScreen/Enums/Enums';\r\nimport {Paginator} from 'Core/Components/Paginator/Paginator';\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {Metronic} from 'metronic';\r\nimport {UserVarsRecordModel} from 'Core/Screens/SearchScreen/Models/UserVarsRecordModel';\r\nimport {EVENTS as PAGINATOR_EVENTS} from 'Core/Components/Paginator/Constants';\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {SearchGroupItemModel, SearchModeModel} from 'Core/Screens/SearchScreen/Models/SearchModeModel';\r\nimport {SearchFieldModel} from 'Core/Screens/SearchScreen/Models/SearchFieldModel';\r\nimport {SearchByRelationModel} from 'Core/Screens/SearchScreen/Models/SearchByRelationModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {\r\n LifeStatusGroupIndexes,\r\n MappedSearchGroups,\r\n SearchGroups,\r\n SimpleFilterGroupsSet\r\n} from 'Core/Enums/SearchGroups';\r\nimport {RECORD_SECURITY_WORDS} from 'Core/Constants/RecordSecurityWords';\r\nimport {LABELS, NOTIFICATIONS} from 'Core/Components/Translation/Locales';\r\nimport {OrderFieldModel} from 'Core/Screens/SearchScreen/Models/OrderFieldModel';\r\nimport {SYSTEM_TABLE_NAMES, TABLE_TYPES} from \"Core/Constant\";\r\nimport {SearchResultGrid} from 'Core/Screens/SearchScreen/SearchResultGrid/SearchResultGrid';\r\nimport {SearchResultRow} from \"Core/Screens/SearchScreen/SearchResultGrid/SearchResultRow\";\r\nimport {EntityModel} from \"Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Models/EntityModel\";\r\nimport {MobileChecker} from 'Core/Common/MobileChecker';\r\nimport {BarcodeScanner} from 'Core/Components/BarcodeScanner/BarcodeScanner';\r\n\r\nimport {EVENTS as SEARCH_SCREEN_EVENTS} from \"./Events\";\r\nimport {SortOrder} from \"../../Controls/Grid/BaseGrid/GridColumn/BaseColumn\";\r\nimport {P} from \"../../Common/Promise\";\r\nimport {SearchResultRowModel} from './Models/SearchResultModel';\r\nimport {DeduplicationGrid} from \"../../ProfilePage/Deduplication/DeduplicationEditor/DeduplicationGrid\";\r\nimport {Actions, DeduplicationStore} from \"Core/ProfilePage/Deduplication/Stores/DeduplicationStore\";\r\nimport {EVENTS} from \"Core/Controls/Grid/BaseGrid/Events\";\r\nimport {DeduplicationCell} from \"Core/ProfilePage/Deduplication/DeduplicationEditor/DeduplicationCell\";\r\nimport {TABLE_SECURITY_WORDS} from \"Core/Constants/TableSecurityWords\";\r\nimport EDIT = TABLE_SECURITY_WORDS.EDIT;\r\nimport DELETE = TABLE_SECURITY_WORDS.DELETE;\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\n// Templates\r\nimport SearchScreenTemplate from 'Core/Screens/SearchScreen/Templates/SearchScreen.html';\r\nimport AlternativeIconTemplate from 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate.html';\r\nimport SearchIconTemplate from 'Core/Screens/SearchScreen/Templates/IconTemplate.html';\r\nko.templates['Core/Screens/SearchScreen/Templates/SearchScreen'] = SearchScreenTemplate;\r\nko.templates['Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate'] = AlternativeIconTemplate;\r\nko.templates['Core/Screens/SearchScreen/Templates/IconTemplate'] = SearchIconTemplate;\r\n\r\ninterface IRecordType {\r\n Value: RecordTypes;\r\n Title: string;\r\n IsEnabled: boolean;\r\n}\r\n\r\ninterface IDuplicatesType {\r\n Title: string;\r\n IsDisabled: boolean;\r\n}\r\n\r\ninterface IAlternativeSubjectsType {\r\n Title: string;\r\n IsDisabled: boolean;\r\n IsChosen?: boolean;\r\n}\r\n\r\nconst FILTER_BY_RELATION_CLASSES = {\r\n OFF_FILTER_BY_RELATIONS: 'filter-by-relations-btn off-filter-by-relations',\r\n BY_RELATIONS: 'filter-by-relations-btn by-relations',\r\n BY_MAIN_RELATIONS: 'filter-by-relations-btn by-main-relations',\r\n BY_CONDITION: 'filter-by-relations-btn by-condition',\r\n BY_LINKED_DOCUMENTS: 'filter-by-relations-btn by-linked-documents'\r\n}\r\n\r\n\r\nconst TOGGLE_CLASSES = {\r\n ON: 'fa-toggle-on',\r\n OFF: 'fa-toggle-off'\r\n}\r\n\r\ninterface ISearchGroup {\r\n Id: number,\r\n Name: string\r\n}\r\n\r\nexport interface ISelectedRecord {\r\n TypeId: number,\r\n TypeName: string,\r\n RecordId: number,\r\n Name: string,\r\n TableId: number\r\n}\r\n\r\nexport class SearchScreen extends Event {\r\n private _entityId: number;\r\n private _subjectEntityId: number;\r\n private _subjectTypeId: number;\r\n private _entityName: string;\r\n private _searchRegexp: any;\r\n private _sharing: boolean;\r\n\r\n private _fieldId: number;\r\n private _leftEntityId: number;\r\n private _rightEntityId: number;\r\n private _leftRecordId: number;\r\n private _rightRecordId: number;\r\n\r\n private _entityIcon: KnockoutObservable<Icon>;\r\n private _searchTerm: KnockoutObservable<string>;\r\n private _modal: Modal;\r\n private _searchTimer: any;\r\n private _model: SearchScreenModel;\r\n private _searchResult: KnockoutObservableArray<any>;\r\n private _searchResultMessage: KnockoutObservable<string>;\r\n private _nameFieldName: string;\r\n private _recent: Array<UserVarsRecordModel>;\r\n private _favorites: Array<UserVarsRecordModel>;\r\n private _recentAndFavoritesTabIsActive: boolean;\r\n private _closeAfterSelectingRecord: boolean;\r\n private _recentRecords: KnockoutObservable<boolean>;\r\n private _searchGroups: KnockoutObservableArray<ISearchGroup>;\r\n private _searchGroup: KnockoutObservable<number>;\r\n private _focusInput: KnockoutObservable<any>;\r\n private _recordTypes: KnockoutObservableArray<IRecordType>;\r\n private _recordType: KnockoutObservable<IRecordType>;\r\n private _paginator: Paginator;\r\n private _isFirstLoad: boolean;\r\n private _isModal: boolean;\r\n private _paginationInfo: KnockoutObservable<string>;\r\n private _el: HTMLElement;\r\n private _addButtonVisible: KnockoutObservable<boolean>;\r\n private _addButtonDisabled: KnockoutObservable<boolean>;\r\n private _isClick: KnockoutObservable<boolean>;\r\n private _isAddQueryButton: boolean;\r\n private _searchMode: KnockoutObservable<SearchModeModel>;\r\n private _selectedSearchMode: KnockoutObservable<SearchGroupItemModel>;\r\n private _searchLoad: boolean;\r\n private _adaptiveRecordsCount: number;\r\n private _orderFields: Array<OrderFieldModel>;\r\n private _labels = LABELS;\r\n private _controlId: number;\r\n private _altEntities: KnockoutObservableArray<any>;\r\n public SelectedAltEntityId: number;\r\n private _isSimpleLifeStatus: KnockoutObservable<boolean>;\r\n private _enableFilter: KnockoutObservable<boolean>;\r\n private _showConditionToggle: KnockoutObservable<boolean>;\r\n private _isBaseEntity: KnockoutObservable<boolean>;\r\n private _screenData?: Array<IDynamicFieldData>;\r\n private _subjectRecordId: number;\r\n private _searchByMainRelationType: KnockoutObservable<SearchByMainRelationTypes>;\r\n private _filterByMainRelationTooltip: KnockoutComputed<string>;\r\n private _filterByMainRelationClass: KnockoutComputed<string>;\r\n private _searchByTypes: Array<number>;\r\n private _searchByRelations: Array<SearchByRelationModel>;\r\n private _isBackLinkEnabled: KnockoutObservable<boolean>\r\n private _entityType: string;\r\n private _searchFieldId: number;\r\n private _typeToggleClass: KnockoutComputed<string>;\r\n private _searchResultGrid: KnockoutObservable<SearchResultGrid>;\r\n private _plannerLevelRecordId: number;\r\n private _plannerLevelEntityId: number;\r\n private _multiSelectMode: boolean;\r\n private _selectedRecords: KnockoutObservableArray<number>;\r\n private _hasSelectedRecords: KnockoutComputed<boolean>;\r\n private _hasBarcodeFields: KnockoutObservable<boolean>;\r\n private _enableBulkScan: boolean;\r\n private _isBulkBarcodeScanning: boolean;\r\n\r\n private _duplicatesToggleClass: KnockoutComputed<string>;\r\n private _duplicatesTypes: KnockoutObservableArray<IDuplicatesType>;\r\n private _duplicatesType: KnockoutObservable<IDuplicatesType>;\r\n private _hasTwoSelectedRecords: KnockoutComputed<boolean>;\r\n private _duplicatesVisible: KnockoutObservable<boolean>;\r\n private _selectedDuplicatesRecords: KnockoutObservableArray<ISelectedRecord>;\r\n private _querySubjectId: number;\r\n private _hasLinkingCondition: boolean;\r\n private _showSearchByLinkedDocuments: boolean;\r\n private _isParentLinking: boolean;\r\n private _relatedTableId: number;\r\n private _relatedTablePk: number;\r\n private _relatedTableFieldId: number;\r\n private _alternativeSubjectsTypes: KnockoutObservableArray<IAlternativeSubjectsType>;\r\n private _alternativeSubjectsToggleClass: KnockoutComputed<string>;\r\n private _alternativeSubjectsType: KnockoutObservable<IAlternativeSubjectsType>;\r\n\r\n private _recentRecordsSubscription: KnockoutSubscription;\r\n private _recordTypeSubscription: KnockoutSubscription;\r\n private _duplicatesTypeSubscription: KnockoutSubscription;\r\n private _selectedSearchModeSubscription: KnockoutSubscription;\r\n private _searchGroupSubscription: KnockoutSubscription;\r\n private _enableFilterSubscription: KnockoutSubscription;\r\n private _searchByMainRelationTypeSubscription: KnockoutSubscription;\r\n private _kSeq: number;\r\n private _isMobile: boolean;\r\n private _showSearchToolbarIcons: KnockoutObservable<boolean>;\r\n private _searchAlternativeEntitiesShow: KnockoutObservable<boolean>;\r\n\r\n private _grid: DeduplicationGrid; \r\n private _dropDownFilterState: boolean;\r\n private _conditionValues: Array<IConditionValueDto>;\r\n\r\n constructor(params: ISearchScreenParam) {\r\n super();\r\n if (!params.EntityId && !params.EntityName) {\r\n throw new Error('EntityId or EntityName should be specified');\r\n }\r\n\r\n this._dropDownFilterState = params.DropDownFilterState; \r\n this._entityId = params.EntityId;\r\n this._entityName = params.EntityName;\r\n this._subjectEntityId = params.SubjectEntityId || null;\r\n this._subjectTypeId = params.SubjectTypeId || null;\r\n this._subjectRecordId = params.SubjectRecordId || null;\r\n this._sharing = params.Sharing || false;\r\n this._controlId = params.ControlId;\r\n this._fieldId = params.FieldId;\r\n this._leftEntityId = params.LeftEntityId;\r\n this._rightEntityId = params.RightEntityId;\r\n this._leftRecordId = params.LeftRecordId;\r\n this._rightRecordId = params.RightRecordId;\r\n this._screenData = params.ScreenData;\r\n this._model = new SearchScreenModel();\r\n this._searchResult = ko.observableArray([]);\r\n this._searchResultMessage = ko.observable('');\r\n this._searchGroups = ko.observableArray([]);\r\n this._entityIcon = ko.observable(null);\r\n this._searchTerm = ko.observable(params.SearchTerm);\r\n this._focusInput = ko.observable(true);\r\n this._searchByTypes = params.SearchByTypes;\r\n this._paginator = new Paginator(1);\r\n this._isModal = false;\r\n this._searchRegexp = /[a-zA-Z0-9-_. ]/;\r\n this._conditionValues = params.ConditionValues;\r\n\r\n this._searchGroup = ko.observable(null);\r\n this._recent = Array<UserVarsRecordModel>(null);\r\n this._favorites = Array<UserVarsRecordModel>(null);\r\n this._recentAndFavoritesTabIsActive = params.RecentAndFavoritesActive;\r\n this._closeAfterSelectingRecord = params.CloseAfterSelectingRecord === undefined ? true : params.CloseAfterSelectingRecord;\r\n this._isFirstLoad = true;\r\n this._paginationInfo = ko.observable('');\r\n this._searchMode = ko.observable(new SearchModeModel());\r\n this._searchLoad = false;\r\n this._selectedSearchMode = ko.observable(null);\r\n this._addButtonVisible = ko.observable(params.ButtonAdd || params.ButtonAdd === undefined);\r\n this._addButtonDisabled = ko.observable(false);\r\n this._isClick = ko.observable(false);\r\n this._isAddQueryButton = params.IsAddQueryButton || false;\r\n this._adaptiveRecordsCount = 0;\r\n this._orderFields = [];\r\n this._isSimpleLifeStatus = ko.observable(false);\r\n this._enableFilter = ko.observable(true);\r\n this._showConditionToggle = ko.observable(params.ConditionToggler);\r\n this._isBaseEntity = ko.observable(true);\r\n this._searchByMainRelationType = params.SearchByMainRelationType\r\n ? ko.observable(params.SearchByMainRelationType)\r\n : ko.observable(SearchByMainRelationTypes.Off);\r\n this._searchByRelations = params.SearchByRelations;\r\n this._isBackLinkEnabled = ko.observable(true);\r\n this._entityType = params.EntityType;\r\n this._searchFieldId = params.SearchFieldId;\r\n this._altEntities = ko.observableArray([]);\r\n this._searchResultGrid = ko.observable(null);\r\n this._plannerLevelEntityId = params.PlannerLevelEntityId;\r\n this._plannerLevelRecordId = params.PlannerLevelRecordId;\r\n this._multiSelectMode = params.MultiSelectMode || false;\r\n this._selectedRecords = ko.observableArray(params.SelectedRecordIds);\r\n this._hasSelectedRecords = ko.computed(() => this._selectedRecords().length > 0);\r\n this._hasBarcodeFields = ko.observable();\r\n this._enableBulkScan = params.EnableBulkScan || false;\r\n this._querySubjectId = params.QuerySubjectId;\r\n this._hasLinkingCondition = params.HasLinkingCondition;\r\n this._showSearchByLinkedDocuments = params.ShowSearchByLinkedDocuments;\r\n this._isParentLinking = params.IsParentLinking || false;\r\n this._kSeq = params.KSeq;\r\n this._isMobile = MobileChecker.IsMobile();\r\n this._showSearchToolbarIcons = ko.observable(false);\r\n this._searchAlternativeEntitiesShow = ko.observable(false);\r\n\r\n this._filterByMainRelationClass = ko.computed(() => {\r\n switch (this._searchByMainRelationType()) {\r\n case SearchByMainRelationTypes.Off:\r\n return FILTER_BY_RELATION_CLASSES.OFF_FILTER_BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByMainRelations:\r\n return FILTER_BY_RELATION_CLASSES.BY_MAIN_RELATIONS;\r\n case SearchByMainRelationTypes.ByRelations:\r\n return FILTER_BY_RELATION_CLASSES.BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByConditions:\r\n return FILTER_BY_RELATION_CLASSES.BY_CONDITION;\r\n case SearchByMainRelationTypes.ByLinkedDocuments:\r\n return FILTER_BY_RELATION_CLASSES.BY_LINKED_DOCUMENTS;\r\n default:\r\n return FILTER_BY_RELATION_CLASSES.OFF_FILTER_BY_RELATIONS\r\n }\r\n });\r\n\r\n this._filterByMainRelationTooltip = ko.computed(() => {\r\n switch (this._searchByMainRelationType()) {\r\n case SearchByMainRelationTypes.Off:\r\n return this._labels.OFF_FILTER_BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByMainRelations:\r\n return this._hasLinkingCondition ? this._labels.FILTER_BY_MAIN_RELATIONS2 : this._labels.FILTER_BY_MAIN_RELATIONS;\r\n case SearchByMainRelationTypes.ByRelations:\r\n return this._labels.FILTER_BY_RELATIONS;\r\n case SearchByMainRelationTypes.ByConditions:\r\n return this._labels.FILTER_BY_LINKING_CONDITIONS;\r\n case SearchByMainRelationTypes.ByLinkedDocuments:\r\n return this._labels.ONLY_LINKED_DOCUMENTS_ARE_SHOWN;\r\n default:\r\n return this._labels.OFF_FILTER_BY_RELATIONS;\r\n }\r\n });\r\n\r\n let isRootForFormDesigner = true;\r\n if (params.IsRootForFormDesigner) {\r\n isRootForFormDesigner = !params.IsRootForFormDesigner;\r\n }\r\n\r\n this._recordTypes = ko.observableArray([\r\n {Title: LABELS.ROOT, Value: RecordTypes.Root, IsEnabled: true},\r\n {Title: LABELS.ALL, Value: RecordTypes.All, IsEnabled: isRootForFormDesigner}]);\r\n\r\n this._recordType = ko.observable(_.last(_.filter(this._recordTypes(), recordType => recordType.IsEnabled)));\r\n\r\n this._typeToggleClass = ko.computed(() => {\r\n return this._recordType() && this._recordType().Value === RecordTypes.Root ? TOGGLE_CLASSES.ON : TOGGLE_CLASSES.OFF;\r\n });\r\n\r\n this._recentRecords = ko.observable(false);\r\n\r\n this._relatedTableId = params.RelatedTableId;\r\n this._relatedTablePk = params.RelatedTablePk;\r\n this._relatedTableFieldId = params.RelatedTableFieldId;\r\n\r\n this.InitDuplicatesMod();\r\n this._grid = new DeduplicationGrid();\r\n this._grid.On(EVENTS.SAVE_CHANGES, this, () => this.SaveChangesDeduplication());\r\n this.InitAlternativeSubjectsMod();\r\n }\r\n\r\n InitDuplicatesMod() {\r\n this._duplicatesVisible = ko.observable(false);\r\n\r\n this._duplicatesTypes = ko.observableArray([\r\n {Title: 'Off', IsDisabled: true},\r\n {Title: 'On', IsDisabled: false}]);\r\n\r\n this._duplicatesType = ko.observable(_.last(_.filter(this._duplicatesTypes(), duplicatesTypes => duplicatesTypes.IsDisabled)));\r\n\r\n this._duplicatesToggleClass = ko.computed(() => {\r\n return this._duplicatesType() && this._duplicatesType().IsDisabled ? TOGGLE_CLASSES.OFF : TOGGLE_CLASSES.ON;\r\n });\r\n\r\n this._selectedDuplicatesRecords = ko.observableArray([]);\r\n this._hasTwoSelectedRecords = ko.computed(() => {\r\n return this._selectedDuplicatesRecords().length == 2;\r\n });\r\n\r\n }\r\n\r\n private AlternativeSubjectsToggle() {\r\n if (this._alternativeSubjectsType().Title != 'On') {\r\n this._alternativeSubjectsType(_.find(this._alternativeSubjectsTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'On'\r\n }));\r\n return;\r\n } else {\r\n this._alternativeSubjectsType(_.find(this._alternativeSubjectsTypes(), (type) => {\r\n type.IsChosen = true;\r\n return type.Title === 'Off'\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n InitAlternativeSubjectsMod() {\r\n\r\n this._alternativeSubjectsTypes = ko.observableArray([\r\n {Title: 'Off', IsDisabled: true, IsChosen: false},\r\n {Title: 'On', IsDisabled: false, IsChosen: false}]);\r\n\r\n this._alternativeSubjectsType = ko.observable(_.last(_.filter(this._alternativeSubjectsTypes(), alternativeSubjectsType => alternativeSubjectsType.IsDisabled)));\r\n\r\n this._alternativeSubjectsToggleClass = ko.computed(() => {\r\n let classToggle = this._alternativeSubjectsType() && this._alternativeSubjectsType().IsDisabled ? TOGGLE_CLASSES.OFF : TOGGLE_CLASSES.ON;\r\n\r\n if (this._alternativeSubjectsType().Title === 'On') {\r\n this.SearchRecords();\r\n } else {\r\n if (this._altEntities().length > 1) {\r\n\r\n if (this._alternativeSubjectsType().IsChosen) {\r\n this.SearchRecords();\r\n }\r\n }\r\n }\r\n\r\n return classToggle;\r\n });\r\n\r\n }\r\n\r\n GetFilterByAlternativeEntities(): FilterByAlternativeEntitiesModel {\r\n const selectedMainEntityId = this._entityId;\r\n\r\n return {\r\n SubjectEntity: this._entityId,\r\n AlternativeEntities: _.filter(this._altEntities().map((altEntity) => {\r\n if (altEntity && altEntity.IsChecked && altEntity.IsChecked() && altEntity.EntityId !== selectedMainEntityId) {\r\n return altEntity.EntityId;\r\n } else {\r\n return null;\r\n }\r\n }), elem => {\r\n return elem !== null;\r\n })\r\n }\r\n }\r\n\r\n private ToggleType() {\r\n if (this._recordType().Value != RecordTypes.Root) {\r\n this._recordType(_.find(this._recordTypes(), (type) => {\r\n return type.Value === RecordTypes.Root\r\n }));\r\n return;\r\n }\r\n\r\n if (this._recordType().Value != RecordTypes.All) {\r\n this._recordType(_.find(this._recordTypes(), (type) => {\r\n return type.Value === RecordTypes.All\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n private DuplicatesToggle() {\r\n if (this._duplicatesType().Title != 'On') {\r\n this._duplicatesType(_.find(this._duplicatesTypes(), (type) => {\r\n return type.Title === 'On'\r\n }));\r\n return;\r\n } else {\r\n this._duplicatesType(_.find(this._duplicatesTypes(), (type) => {\r\n return type.Title === 'Off'\r\n }));\r\n return;\r\n }\r\n }\r\n\r\n get Paginator(): Paginator {\r\n return this._paginator;\r\n }\r\n\r\n private HandleFilters() {\r\n this._recentRecordsSubscription = this._recentRecords.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._recordTypeSubscription = this._recordType.subscribe(() => {\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n });\r\n\r\n this._duplicatesTypeSubscription = this._duplicatesType.subscribe(() => {\r\n this._selectedDuplicatesRecords([]);\r\n\r\n this.SearchRecords();\r\n });\r\n\r\n this._selectedSearchModeSubscription = this._selectedSearchMode.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._searchGroupSubscription = this._searchGroup.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._enableFilterSubscription = this._enableFilter.subscribe(() => {\r\n this.SearchRecords();\r\n });\r\n\r\n this._searchByMainRelationTypeSubscription = this._searchByMainRelationType.subscribe((newValue) => {\r\n if (this._searchTimer) {\r\n clearTimeout(this._searchTimer);\r\n }\r\n this._searchTimer = setTimeout(() => {\r\n this.SearchRecords();\r\n }, 500);\r\n });\r\n\r\n }\r\n\r\n private UnHandleFilters() {\r\n this._recentRecordsSubscription.dispose();\r\n this._recordTypeSubscription.dispose();\r\n this._duplicatesTypeSubscription.dispose();\r\n this._selectedSearchModeSubscription.dispose();\r\n this._searchGroupSubscription.dispose();\r\n this._paginator.Off(PAGINATOR_EVENTS.CHANGE, this);\r\n this._enableFilterSubscription.dispose();\r\n this._searchByMainRelationTypeSubscription.dispose();\r\n }\r\n\r\n InputChange() {\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n }\r\n\r\n GetFilterByRelationType(): SearchByMainRelationTypes {\r\n return this._searchByMainRelationType();\r\n }\r\n\r\n SetFilterByRelationType(filterType: SearchByMainRelationTypes) {\r\n this._searchByMainRelationType(filterType);\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/SearchScreen/Templates/SearchScreen`;\r\n }\r\n\r\n GetAlternativeIconTemplateName(): string {\r\n return 'Core/GeneralProperties/Managers/AlternativeEntitiesProperty/Templates/IconTemplate';\r\n }\r\n\r\n GetSearchIconTemplateName(): string {\r\n return 'Core/Screens/SearchScreen/Templates/IconTemplate';\r\n }\r\n\r\n ToggleToolbarIcons(){\r\n this._showSearchToolbarIcons(!this._showSearchToolbarIcons());\r\n }\r\n\r\n ToggleAlternativeEntities(){\r\n this._searchAlternativeEntitiesShow(!this._searchAlternativeEntitiesShow());\r\n }\r\n\r\n Render(options: any = null, isUseGlobal: boolean = true): void {\r\n let self = this;\r\n\r\n let mobileOptions = this._isMobile ? {\r\n minWidth: '100%',\r\n width: '100%',\r\n height: '100%',\r\n } : {};\r\n\r\n let defaultOptions = {\r\n addClass: 'search-modal-container showScrollModal',\r\n blockScroll: true,\r\n ...mobileOptions\r\n };\r\n\r\n this._modal = new Modal(_.extend(defaultOptions, options), this._isMobile ? false : isUseGlobal);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n this._isModal = true;\r\n this._modal.On('CLOSE', this, (eventArgs: any) => {\r\n $(window).off('keydown');\r\n self.GatherSettings();\r\n });\r\n }\r\n\r\n Close(): void {\r\n if (this._modal) {\r\n $(window).off('keydown');\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n Show(options: any = null, isUseGlobal: boolean = true, alternativeEntities: Array<EntityModel> = []): P.Promise<SearchScreenModel> {\r\n return this.LoadSearchScreenModel({showParams: {options, isUseGlobal, alternativeEntities}});\r\n }\r\n\r\n LoadSearchScreenModel({showParams, altEntityId}: {\r\n showParams?: { options: any; isUseGlobal: boolean; alternativeEntities: Array<EntityModel> };\r\n altEntityId?: number\r\n }) {\r\n BlockUI.Block();\r\n let params = altEntityId ? {EntityId: altEntityId} : {\r\n EntityId: this._entityId,\r\n TableName: this._entityName,\r\n ControlId: this._controlId,\r\n Sharing: this._sharing,\r\n FieldId: this._fieldId,\r\n LeftEntityId: this._leftEntityId,\r\n RightEntityId: this._rightEntityId,\r\n LeftRecordId: this._leftRecordId,\r\n RightRecordId: this._rightRecordId\r\n };\r\n let getSearchScreenPromise = SearchScreenStore.GetScreenModel(params)\r\n\r\n getSearchScreenPromise\r\n .then(model => {\r\n this._entityId = model.EntityId;\r\n this._model = model;\r\n const baseEntity = {\r\n EntityId: model.EntityId,\r\n EntityName: model.EntityName,\r\n EntityTranslatedName: model.EntityTranslatedName,\r\n Icon: model.IconModel,\r\n BaseEntity: true\r\n };\r\n\r\n if (baseEntity.EntityName === 'SYS_HISTORY')\r\n {\r\n this._addButtonVisible(false);\r\n }\r\n\r\n this._duplicatesVisible((EDIT & model.TableSecurityRights) === EDIT &&\r\n (DELETE & model.TableSecurityRights) === DELETE && model.AllowDeduplicationMode);\r\n\r\n if (showParams) {\r\n this._altEntities([baseEntity, ..._.extend(model.AlternativeEntities, {}), ...showParams.alternativeEntities]);\r\n const controlAltEntities = UserVarsManager.Instance.GetRecordAltEntities(this._controlId);\r\n\r\n this._altEntities().map((altEntity) => {\r\n if (!altEntity) return;\r\n if (controlAltEntities && controlAltEntities.altEntities) {\r\n if (controlAltEntities.altEntities.indexOf(altEntity.EntityId) !== -1) {\r\n altEntity.IsChecked = ko.observable(true);\r\n } else {\r\n altEntity.IsChecked = ko.observable(false);\r\n }\r\n } else {\r\n altEntity.IsChecked = ko.observable(true);\r\n }\r\n altEntity.RecordsCount = ko.observable('N/A');\r\n altEntity.IsChecked && altEntity.IsChecked.subscribe((value) => {\r\n if (!value) {\r\n altEntity.RecordsCount('N/A');\r\n }\r\n\r\n const altEntitiesData = [];\r\n\r\n this._altEntities().map((altEntity) => {\r\n altEntity.IsChecked() && altEntitiesData.push(altEntity.EntityId);\r\n });\r\n UserVarsManager.Instance.SetRecordAltEntities(this._controlId, altEntitiesData);\r\n\r\n\r\n });\r\n if (altEntity.BaseEntity) {\r\n altEntity.IsSelected = ko.observable(true);\r\n } else {\r\n altEntity.IsSelected = ko.observable(false);\r\n altEntity.BaseEntity = false;\r\n }\r\n\r\n });\r\n }\r\n this.GenerateActions();\r\n this.AddSearchGroups(model.SearchGroups);\r\n this.AddSearchFields(model.SearchFields);\r\n this._entityIcon(new Icon(model.IconModel));\r\n\r\n const isBackLinkEnabled = this._model.EntityTypeName == TABLE_TYPES.Entity && this._model.EntityName !== SYSTEM_TABLE_NAMES.SYS_USERS;\r\n this._isBackLinkEnabled(isBackLinkEnabled);\r\n if (!isBackLinkEnabled) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.Off);\r\n }\r\n\r\n this._hasBarcodeFields(model.HasBarcodeFields);\r\n\r\n if ((!this._model.SearchFields || this._model.SearchFields.length === 0) && this._entityType != TABLE_TYPES.Sub) {\r\n new Notifier().Warning(NOTIFICATIONS.NO_SEARCHABLE_FIELDS);\r\n } else {\r\n this.RestoreSearchSettings();\r\n\r\n this.CheckAddQueryButton()\r\n .then((shouldOpenScreen: boolean) => {\r\n if (shouldOpenScreen) {\r\n if (showParams) {\r\n this.Render(showParams.options, showParams.isUseGlobal);\r\n }\r\n this.SearchRecords();\r\n this.HandleFilters();\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.NO_QUERIES_FOUND);\r\n }\r\n })\r\n .fail(error => {\r\n if (error.value) {\r\n new Notifier($(this._el)).Warning(error.value);\r\n } else {\r\n new Notifier($(this._el)).Failed(error.message);\r\n }\r\n });\r\n }\r\n }).always(() => BlockUI.Unblock());\r\n\r\n return getSearchScreenPromise;\r\n }\r\n\r\n private AddSearchFields(searchFields: Array<SearchFieldModel>) {\r\n this._searchMode().AddSearchFields(...searchFields);\r\n }\r\n\r\n private SetOptionClass(option, item) {\r\n if (this.IsGroupItem(item)) {\r\n $(option).addClass('group-option');\r\n }\r\n }\r\n\r\n RestoreSearchSettings() {\r\n var searchParams = UserVarsManager.Instance.GetSearchParams(this._entityId);\r\n\r\n if (searchParams) {\r\n const searchGroupValue = searchParams.lifeStatusId || SearchGroups[SearchGroups.Active];\r\n\r\n this._searchGroup(searchGroupValue);\r\n const recentRecords = searchParams.recentRecords;\r\n const recordTypeValue = searchParams.recordTypeValue;\r\n const searchModeValue = searchParams.searchModeValue;\r\n let searchByRelations = searchParams.searchByRelationsValue;\r\n\r\n if (this._hasLinkingCondition) {\r\n searchByRelations = SearchByMainRelationTypes.ByConditions;\r\n }\r\n else if (this._showSearchByLinkedDocuments) {\r\n searchByRelations = SearchByMainRelationTypes.ByLinkedDocuments;\r\n }\r\n else if (searchByRelations === SearchByMainRelationTypes.ByLinkedDocuments) {\r\n searchByRelations = SearchByMainRelationTypes.Off;\r\n }\r\n\r\n if (this._subjectEntityId && searchByRelations && this._isBackLinkEnabled()) {\r\n this._searchByMainRelationType(searchByRelations);\r\n }\r\n\r\n let filterState = this._dropDownFilterState != null ? this._dropDownFilterState : searchParams.enableFiltering;\r\n\r\n this._enableFilter(filterState);\r\n\r\n if (recentRecords === true) {\r\n this._recentRecords(recentRecords);\r\n } else {\r\n this._recentRecords(false);\r\n }\r\n\r\n let currentRecordType = _.find(this._recordTypes(), recordType => {\r\n return recordType.Value === recordTypeValue;\r\n });\r\n\r\n if (currentRecordType && this._recordType() && this._recordType().Value != currentRecordType.Value) {\r\n this._recordType(currentRecordType);\r\n }\r\n\r\n if (searchModeValue) {\r\n this._selectedSearchMode(this._searchMode().GetSearchItem(searchModeValue.Name) || this._searchMode().GetDefaultMode());\r\n } else {\r\n this._selectedSearchMode(this._searchMode().GetDefaultMode());\r\n }\r\n } else {\r\n this._selectedSearchMode(this._searchMode().GetDefaultMode());\r\n }\r\n }\r\n\r\n get Icon(): KnockoutObservable<Icon> {\r\n return this._entityIcon;\r\n }\r\n\r\n get SearchTerm(): KnockoutObservable<string> {\r\n return this._searchTerm;\r\n }\r\n\r\n get Recent(): Array<UserVarsRecordModel> {\r\n this._recent = this._model.GroupNameToRecords.recent;\r\n return this._recent;\r\n }\r\n\r\n get Favorites(): Array<UserVarsRecordModel> {\r\n this._favorites = this._model.GroupNameToRecords.favorites;\r\n return this._favorites;\r\n }\r\n\r\n get RecentRecords(): KnockoutObservable<boolean> {\r\n this._paginator.PageNumber = 1;\r\n return this._recentRecords;\r\n }\r\n\r\n SetRecentRecords(): void {\r\n this._recentRecords(!this._recentRecords());\r\n }\r\n\r\n ToggleEnableFilterValue(): void {\r\n this._enableFilter(!this._enableFilter());\r\n }\r\n\r\n get HasRecent(): boolean {\r\n return this.Recent.length > 0;\r\n }\r\n\r\n get HasFavorites(): boolean {\r\n return this.Favorites.length > 0;\r\n }\r\n\r\n get RecordTypes(): KnockoutObservableArray<IRecordType> {\r\n return this._recordTypes;\r\n }\r\n\r\n get RecordType(): KnockoutObservable<IRecordType> {\r\n return this._recordType;\r\n }\r\n\r\n EnterKey() {\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n this._isClick(true);\r\n }\r\n\r\n SearchClick() {\r\n this._isClick(true);\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords();\r\n }\r\n\r\n OpenBarcodeScanner() {\r\n const barcodeScanner = new BarcodeScanner();\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n this._searchTerm(eventArgs.data.value);\r\n this._selectedRecords([]);\r\n this._isClick(true);\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords(undefined, true);\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n OpenBarcodeScannerForBulkScan() {\r\n const barcodeScanner = new BarcodeScanner();\r\n\r\n let value;\r\n\r\n barcodeScanner.On('SUBMIT', this, eventArgs => {\r\n this._searchTerm(eventArgs.data.value);\r\n value = eventArgs.data.value;\r\n this._selectedRecords([]);\r\n this._isClick(true);\r\n this._paginator.PageNumber = 1;\r\n this.SearchRecords(undefined, true);\r\n });\r\n\r\n barcodeScanner.On('CLOSE', this, eventArgs => {\r\n if (!value) {\r\n this.StopBulkBarcodeScan();\r\n }\r\n });\r\n\r\n barcodeScanner.Show();\r\n }\r\n\r\n StartBulkBarcodeScan() {\r\n this._isBulkBarcodeScanning = true;\r\n\r\n this.Trigger('BULK_BARCODE_SCAN_STARTED');\r\n }\r\n\r\n StopBulkBarcodeScan() {\r\n this._isBulkBarcodeScanning = false;\r\n\r\n this.Trigger('BULK_BARCODE_SCAN_STOPPED');\r\n }\r\n\r\n DivideRecordsPerPage() {\r\n const popupHeight_Global = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.POPUP_HEIGHT_IN_PERCENT));\r\n const isSearchPagination: boolean = !!this._paginator.PageNumber;\r\n\r\n const paginationDetail_navigationBtn_height = 81,\r\n multiSelectBtnHeight = this._multiSelectMode ? 35 : 0,\r\n searchPaginationBoxHeight = paginationDetail_navigationBtn_height + multiSelectBtnHeight;\r\n\r\n const searchToolbarHeight: number = this._isMobile ? 40 : 0,\r\n paddingJBox: number = this._isMobile ? 15*2 : 0,\r\n boxShadowWrapperPadding: number = this._isMobile ? 10*2 : 0,\r\n searchResultMargin: number = this._isMobile ? 10*2 : 0,\r\n recalculationMarginPadding: number = paddingJBox + boxShadowWrapperPadding + searchResultMargin;\r\n\r\n const staticSpace = (this._isMobile && isSearchPagination) ? searchPaginationBoxHeight : 160;\r\n const rowHeight = 45;\r\n const calculatedAltSpace: any = $('.alternativeEntitiesContainer').outerHeight(true);\r\n const reservedSpace = !this._isMobile && calculatedAltSpace && calculatedAltSpace + staticSpace || staticSpace;\r\n const windowHeight = window.innerHeight; //get window height\r\n\r\n let popupHeight: number = this._isMobile ? windowHeight : windowHeight * (popupHeight_Global / 100); //get popup height\r\n const heightForRows = popupHeight - parseInt(reservedSpace) - searchToolbarHeight - recalculationMarginPadding; //get height for rows inside the popup\r\n const recordsPerPage = (heightForRows - rowHeight) / rowHeight; //get approximate amount of rows\r\n\r\n if (recordsPerPage < 5) { //can't be less than 5\r\n this._adaptiveRecordsCount = 5;\r\n } else {\r\n this._adaptiveRecordsCount = Math.floor(recordsPerPage);\r\n }\r\n this._paginator.RecordsPerPage = this._adaptiveRecordsCount;\r\n }\r\n\r\n SearchByAltEntity(altEntity) {\r\n this._selectedRecords([]);\r\n if (altEntity.IsSelected() !== true) {\r\n this._altEntities().map(entity => entity.IsSelected(false));\r\n altEntity.IsSelected(true);\r\n if (altEntity.BaseEntity) {\r\n this.SelectedAltEntityId = null;\r\n } else {\r\n this.SelectedAltEntityId = altEntity.EntityId;\r\n }\r\n this.RefreshScreenAfterAltEntityChange(altEntity.EntityId);\r\n\r\n }\r\n this._isBaseEntity(this._entityId === altEntity.EntityId);\r\n }\r\n\r\n RefreshScreenAfterAltEntityChange(altEntityId: number) {\r\n this.UnHandleFilters();\r\n\r\n this._searchMode(new SearchModeModel());\r\n this._recordType(this._recordTypes()[0]);\r\n this._orderFields = [];\r\n this._searchByMainRelationType(SearchByMainRelationTypes.Off);\r\n this._paginator.PageNumber = 1;\r\n\r\n this.LoadSearchScreenModel({altEntityId});\r\n }\r\n\r\n SearchRecords(entityId?: number, isFromBarcode?: boolean) {\r\n var self = this;\r\n let element = document.getElementById('searchScreen');\r\n\r\n BlockUI.Block({\r\n Target: element\r\n });\r\n\r\n const selectedMainEntityId = entityId || (this.SelectedAltEntityId || this._entityId);\r\n var requestModel = this.GetSearchRequestModel(entityId);\r\n\r\n SearchStore.Search(requestModel)\r\n .then(result => {\r\n if (result.RecordsCount == 0) {\r\n this.Trigger('RECORDS_NOT_FOUND');\r\n }\r\n\r\n result.AlternativeSearchList && result.AlternativeSearchList.map((altEntity) => {\r\n const selectedEntity = _.find(this._altEntities(), (item) => {\r\n return item.EntityId === altEntity.EntityId;\r\n })\r\n\r\n selectedEntity && selectedEntity.RecordsCount(altEntity.RecordsCount);\r\n });\r\n\r\n let baseEntity = _.find(this._altEntities(), (item) => {\r\n return item.EntityId === selectedMainEntityId\r\n });\r\n if (baseEntity) {\r\n baseEntity.RecordsCount(result.RecordsCount);\r\n }\r\n\r\n let grid = new SearchResultGrid(\r\n result,\r\n this._selectedRecords,\r\n requestModel,\r\n this._recordType().Value === RecordTypes.Root,\r\n this._multiSelectMode && this._isBaseEntity(),\r\n this._duplicatesType().Title === 'On',\r\n this._selectedDuplicatesRecords);\r\n\r\n grid.On(SEARCH_SCREEN_EVENTS.SELECT_RECORD, this, (eventArgs) => {\r\n this.SelectRecord(eventArgs.data.Row, eventArgs.data.IsSelected, false, eventArgs.data.RowClick)\r\n });\r\n\r\n grid.On(SEARCH_SCREEN_EVENTS.DUPLICATES_RECORD_SELECTED, this, (eventArgs) => {\r\n this.SelectDuplicatesRecord(eventArgs.data.Row, eventArgs.data.IsDuplicatesSelected);\r\n });\r\n\r\n grid.On(SEARCH_SCREEN_EVENTS.SORT, this, (eventArgs) => {\r\n this._orderFields = eventArgs.data.OrderFields;\r\n this.SearchRecords();\r\n });\r\n\r\n\r\n _.each(result.SearchFields, (column) => {\r\n if (this._orderFields[0] && this._orderFields[0].Id === column.Id) {\r\n column.SortDirection = Number(this._orderFields[0] && this._orderFields[0].Order || SortOrder.Asc);\r\n } else {\r\n column.SortDirection = Number(SortOrder.Both);\r\n }\r\n\r\n column.SortOrder = ko.observable(column.SortDirection);\r\n\r\n column.SortOrderClassName = ko.computed({\r\n owner: this,\r\n read: () => {\r\n if (!column.Id) {\r\n return 'sort-null';\r\n }\r\n return `sort-${SortOrder[column.SortOrder()].toLowerCase()}`;\r\n }\r\n });\r\n\r\n column.Sort = () => {\r\n if (!column.Id) {\r\n return;\r\n }\r\n switch (SortOrder[column.SortOrder()]) {\r\n case 'Asc':\r\n column.SortDirection = SortOrder.Desc;\r\n break;\r\n case 'Desc':\r\n column.SortDirection = SortOrder.Both;\r\n break;\r\n case 'Both':\r\n column.SortDirection = SortOrder.Asc;\r\n break;\r\n }\r\n column.SortOrder(column.SortDirection);\r\n\r\n };\r\n\r\n column.SortOrder.subscribe((order) => {\r\n this._orderFields = [{\r\n Id: column.Id,\r\n Order: order\r\n }];\r\n\r\n this.SearchRecords();\r\n });\r\n });\r\n\r\n this._searchResultGrid(grid);\r\n this._searchResultGrid().SelectRecords(this._selectedRecords());\r\n\r\n this._searchResult(result.Rows);\r\n this._nameFieldName = result.NameField;\r\n this._paginator.TotalRecords = result.RecordsCount;\r\n this.UpdatePaginationInfo();\r\n $(window).trigger('resize');\r\n if (self._isClick()) {\r\n $(element).find('.search-table-row:first-child').focus();\r\n self._isClick(false);\r\n }\r\n\r\n if (isFromBarcode) {\r\n if (result.Rows.length === 1) {\r\n this.SelectRecord(result.Rows[0], false, isFromBarcode);\r\n } else if (result.Rows.length === 0) {\r\n this.StopBulkBarcodeScan();\r\n } else {\r\n const clickHandler = (event: MouseEvent) => {\r\n document.removeEventListener('click', clickHandler);\r\n\r\n const resultTables = element.querySelectorAll('table');\r\n\r\n // check on click outside of tables with search results\r\n if (![...resultTables].some(table => event.target instanceof Node && table.contains(event.target))) {\r\n this.StopBulkBarcodeScan();\r\n }\r\n };\r\n\r\n document.addEventListener('click', clickHandler);\r\n }\r\n }\r\n }).fail(error => {\r\n if (error.value) {\r\n new Notifier($(this._el)).Warning(error.value);\r\n } else {\r\n new Notifier($(this._el)).Failed(error.message);\r\n }\r\n })\r\n .always(() => {\r\n this.UnBlockSearchScreen();\r\n });\r\n\r\n this._isFirstLoad = false;\r\n }\r\n\r\n CheckAddQueryButton(): P.Promise<boolean> {\r\n const deferred = P.defer<boolean>();\r\n\r\n if (!this._isAddQueryButton) {\r\n deferred.resolve(true);\r\n return deferred.promise();\r\n }\r\n\r\n var requestModel = this.GetSearchRequestModel();\r\n\r\n SearchStore.Search(requestModel)\r\n .then(result => {\r\n let areQueriesFound = result.Rows.length !== 0;\r\n deferred.resolve(areQueriesFound);\r\n })\r\n .fail(error => deferred.reject(error));\r\n\r\n return deferred.promise();\r\n }\r\n\r\n UpdatePaginationInfo() {\r\n if (this._searchResult() && this._searchResult().length === 0) {\r\n this._paginationInfo('');\r\n } else {\r\n let startRecordNumber = this._paginator.PageNumber * this._adaptiveRecordsCount - (this._adaptiveRecordsCount - 1);\r\n let endRecordNumber = startRecordNumber + (this._searchResult() && this._searchResult().length - 1);\r\n let label = LABELS.SEARCH_SCREEN_PAGINATION\r\n .replace('{StartRecordNumber}', startRecordNumber.toString())\r\n .replace('{EndRecordNumber}', endRecordNumber.toString())\r\n .replace('{TotalRecords}', this._paginator.TotalRecords.toString());\r\n\r\n this._paginationInfo(label);\r\n }\r\n }\r\n\r\n BlockSearchScreen() {\r\n var searchResultGrid = $(this._el).find('#searchScreen');\r\n Metronic.blockUI({target: searchResultGrid});\r\n }\r\n\r\n UnBlockSearchScreen() {\r\n BlockUI.Unblock(document.getElementById('searchScreen'));\r\n if (!(this._searchResult() && this._searchResult().length)) {\r\n this._searchResultMessage(this._labels.NO_RECORDS_FOUND);\r\n }\r\n }\r\n\r\n SelectRecord(selectedRow: SearchResultRowModel, isSelected: boolean, isFromBarcode: boolean, rowClick?: boolean) {\r\n let typeId = selectedRow.TypeId;\r\n let typeName = selectedRow.TypeName;\r\n let recordId = selectedRow.RecordId;\r\n let recordName = this.GetRowValue(selectedRow.RowValues, this._nameFieldName);\r\n\r\n BlockUI.Block();\r\n SearchStore.IsUserAllowedTo({\r\n TableId: this.SelectedAltEntityId || this._entityId,\r\n RecordId: recordId,\r\n SecurityWord: RECORD_SECURITY_WORDS.ReadOnly\r\n })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n })\r\n .then(isUserAllowed => {\r\n\r\n isUserAllowed = isUserAllowed || this._model.EntityName === 'SYS_USERS';\r\n\r\n if (isUserAllowed) {\r\n if (this.SelectedAltEntityId) {\r\n var entityId = this.SelectedAltEntityId;\r\n this.Trigger('ALT_ENTITY_RECORD_SELECTED', {\r\n EntityId: entityId,\r\n TypeId: typeId,\r\n TypeName: typeName,\r\n RecordId: recordId,\r\n Name: recordName,\r\n ShowInModal: false\r\n });\r\n } else {\r\n if (this._multiSelectMode && !isFromBarcode) {\r\n let existsRecord = this._selectedRecords.indexOf(recordId) > -1;\r\n\r\n if (isSelected) {\r\n if (!existsRecord) {\r\n this._selectedRecords.push(recordId);\r\n }\r\n } else {\r\n this._selectedRecords.splice(this._selectedRecords.indexOf(recordId), 1);\r\n }\r\n\r\n if ( rowClick ){\r\n this.OneSelect()\r\n }\r\n } else {\r\n this.Trigger('RECORD_SELECTED', {\r\n TypeId: typeId,\r\n TypeName: typeName,\r\n RecordId: recordId,\r\n Name: recordName,\r\n TableId: this._entityId,\r\n SearchTerm: this._searchTerm()\r\n });\r\n }\r\n }\r\n\r\n\r\n if (this._closeAfterSelectingRecord && !this._isBulkBarcodeScanning && !this._multiSelectMode) {\r\n this.Cancel();\r\n }\r\n } else {\r\n new Notifier().Warning(NOTIFICATIONS.RECORD_IS_SEARCH_ONLY);\r\n }\r\n }).fail(error => new Notifier().Failed(error.message));\r\n }\r\n\r\n SelectDuplicatesRecord(selectedRow: SearchResultRowModel, isDuplicatesSelected: boolean) {\r\n let typeId = selectedRow.TypeId,\r\n typeName = selectedRow.TypeName,\r\n recordId = selectedRow.RecordId,\r\n recordName = this.GetRowValue(selectedRow.RowValues, this._nameFieldName);\r\n\r\n let existsDuplicatesRecord = _.find(this._selectedDuplicatesRecords(), (item) => {\r\n return item.RecordId === recordId && item.TypeId === typeId;\r\n });\r\n\r\n if (isDuplicatesSelected) {\r\n if (!existsDuplicatesRecord) {\r\n this._selectedDuplicatesRecords.push({\r\n TypeId: typeId,\r\n TypeName: typeName,\r\n RecordId: recordId,\r\n Name: recordName,\r\n TableId: this._entityId\r\n });\r\n }\r\n } else {\r\n if (!!existsDuplicatesRecord) {\r\n this._selectedDuplicatesRecords.splice(this._selectedDuplicatesRecords.indexOf(existsDuplicatesRecord), 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n SelectRecordFromRecent(userVarsRecordModel: UserVarsRecordModel) {\r\n this.Trigger('RECORD_SELECTED', {\r\n TypeId: userVarsRecordModel.TypeId,\r\n RecordId: userVarsRecordModel.Id\r\n });\r\n\r\n if (this._closeAfterSelectingRecord && !this._isBulkBarcodeScanning) {\r\n $(window).off('keydown');\r\n this.Cancel();\r\n }\r\n }\r\n\r\n SelectRecordType(recordType: IRecordType) {\r\n this._recordType(recordType);\r\n }\r\n\r\n InfoSearchValueTooltip(): string {\r\n return this._labels.SPECIAL_CHARACTERS.replace(/\\\\n/g, '<br>');\r\n }\r\n\r\n NewRecord() {\r\n this.Trigger('NEW_RECORD');\r\n }\r\n\r\n Cancel() {\r\n if (this._modal) {\r\n this.GatherSettings();\r\n $(window).off('keydown');\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n GatherSettings() {\r\n const searchModeValue = this._selectedSearchMode();\r\n const searchGroupName = this._searchGroup();\r\n const recordTypeValue = this.RecordType().Value;\r\n const enablingFiltering = this._enableFilter();\r\n UserVarsManager.Instance.SetSearchParams(\r\n this.SelectedAltEntityId || this._entityId,\r\n this._recordType,\r\n searchModeValue,\r\n searchGroupName,\r\n recordTypeValue,\r\n null,\r\n null,\r\n enablingFiltering,\r\n this._searchByMainRelationType()\r\n );\r\n }\r\n\r\n ShowModal() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n\r\n }\r\n\r\n AfterRender(el: HTMLElement) {\r\n this._el = el[0];\r\n\r\n this.ShowModal();\r\n this._focusInput(!this._isMobile);\r\n\r\n if (!this._isFirstLoad) {\r\n this.BlockSearchScreen();\r\n }\r\n }\r\n\r\n private GenerateActions() {\r\n this._addButtonDisabled(!this._model.AddingRecordAllowed);\r\n }\r\n\r\n private AddSearchGroups(searchGroups: Array<SearchGroups>) {\r\n const isSimpleLifeStatus = searchGroups.every((group, index) => {\r\n return group === SimpleFilterGroupsSet[index]\r\n });\r\n\r\n this._isSimpleLifeStatus(isSimpleLifeStatus);\r\n\r\n !this._isSimpleLifeStatus() && this.SortSearchGroups(searchGroups);\r\n\r\n const searchGroupsMapped = searchGroups.map((group) => {\r\n\r\n if (group === SearchGroups.All) {\r\n return {\r\n Name: LABELS.ALL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Active) {\r\n return {\r\n Name: LABELS.ACTIVE_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Archive) {\r\n return {\r\n Name: LABELS.ARCHIVE_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Example) {\r\n return {\r\n Name: LABELS.MAKE_EXAMPLE,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Planned) {\r\n return {\r\n Name: LABELS.RLANNED_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Acquired) {\r\n return {\r\n Name: LABELS.ACQUIRED_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Maintained) {\r\n return {\r\n Name: LABELS.MAINTAINED_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Operational) {\r\n return {\r\n Name: LABELS.OPERATIONAL_LABEL,\r\n Id: group\r\n }\r\n } else if (group === SearchGroups.Retired) {\r\n return {\r\n Name: LABELS.RETIRED_LABEL,\r\n Id: group\r\n }\r\n }\r\n });\r\n\r\n this._searchGroups(searchGroupsMapped);\r\n }\r\n\r\n private IsGroupItem(dropdownItem: ISearchGroup): boolean {\r\n return !this._isSimpleLifeStatus() &&\r\n !!LifeStatusGroupIndexes\r\n .filter((mainGroup) => {\r\n return SearchGroups[SearchGroups[mainGroup]] === dropdownItem.Id;\r\n }).length;\r\n }\r\n\r\n private SortSearchGroups(searchGroupsIndexes: number[]) {\r\n searchGroupsIndexes.sort((ind, nextInd) => {\r\n return MappedSearchGroups[SearchGroups[ind]] - MappedSearchGroups[SearchGroups[nextInd]];\r\n });\r\n }\r\n\r\n private SearchByMainRelation() {\r\n if (this._searchByMainRelationType() === SearchByMainRelationTypes.Off) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByRelations);\r\n } else if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByMainRelations);\r\n } else if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByMainRelations && this._hasLinkingCondition) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByConditions);\r\n } else if (this._showSearchByLinkedDocuments &&\r\n (this._searchByMainRelationType() === SearchByMainRelationTypes.ByMainRelations || this._searchByMainRelationType() === SearchByMainRelationTypes.ByConditions)) {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.ByLinkedDocuments);\r\n } else {\r\n this._searchByMainRelationType(SearchByMainRelationTypes.Off);\r\n }\r\n }\r\n\r\n private FindSearchGroupName() {\r\n const id = this._searchGroup();\r\n const searchGroup = _.find(this._searchGroups(), group => group.Id === id);\r\n return searchGroup && searchGroup.Name;\r\n }\r\n\r\n private GetRowValue(rowValues: any, columnName: string) {\r\n const value = _.find(rowValues,\r\n (r: any) => {\r\n return r.Key === columnName\r\n });\r\n return value ? value.Value : null;\r\n }\r\n\r\n private OneSelect() {\r\n if (this._selectedRecords().length === 1) {\r\n this.Trigger('RECORDS_SELECTED', {Ids: this._selectedRecords(), TableId: this._entityId});\r\n this.Cancel();\r\n }\r\n }\r\n\r\n private Select() {\r\n if (this._selectedRecords().length > 0) {\r\n this.Trigger('RECORDS_SELECTED', {Ids: this._selectedRecords(), TableId: this._entityId});\r\n this.Cancel();\r\n }\r\n }\r\n\r\n private Merge() {\r\n if (this._selectedDuplicatesRecords && this._selectedDuplicatesRecords().length == 2) {\r\n this.InitLockWithRequestFromDeduplication(this._selectedDuplicatesRecords());\r\n }\r\n }\r\n\r\n private GetSearchRequestModel(entityId?: number) {\r\n this._searchResultMessage('');\r\n this.DivideRecordsPerPage();\r\n\r\n let searchByRelations;\r\n if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByRelations) {\r\n searchByRelations = this._searchByRelations;\r\n } else if (this._searchByMainRelationType() === SearchByMainRelationTypes.ByMainRelations) {\r\n searchByRelations = _.filter(this._searchByRelations, item => item.IsMain);\r\n }\r\n\r\n const selectedMainEntityId = entityId || (this.SelectedAltEntityId || this._entityId);\r\n\r\n\r\n var requestModel: ISearchRequestModel = {\r\n ScreenData: this._screenData,\r\n EntityId: selectedMainEntityId,\r\n SearchType: this._selectedSearchMode().SearchType,\r\n SearchField: this._selectedSearchMode().DefaultName || this._selectedSearchMode().Name,\r\n SearchGroup: this._searchGroup(),\r\n SearchPhrase: this._searchTerm()?.trim(),\r\n RecentRecords: this._recentRecords(),\r\n RecordType: RecordTypes[this._recordType().Value],\r\n RecordsPerPage: this._paginator.RecordsPerPage,\r\n PageNumber: this._paginator.PageNumber,\r\n ParentEntityId: this._subjectEntityId,\r\n ParentTypeId: this._subjectTypeId,\r\n ParentRecordId: this._subjectRecordId,\r\n IsParentLinking: this._isParentLinking,\r\n OrderFields: this._orderFields,\r\n ControlId: this._controlId,\r\n FieldId: this._fieldId,\r\n LeftEntityId: this._leftEntityId,\r\n RightEntityId: this._rightEntityId,\r\n LeftRecordId: this._leftRecordId,\r\n RightRecordId: this._rightRecordId,\r\n KSeq: this._kSeq,\r\n EnableFilter: this._enableFilter(),\r\n SearchByMainRelationType: this._searchByMainRelationType(),\r\n SearchByRelations: searchByRelations,\r\n Sharing: this._sharing,\r\n SearchFieldId: this._searchFieldId,\r\n PlannerLevelEntityId: this._plannerLevelEntityId,\r\n PlannerLevelRecordId: this._plannerLevelRecordId,\r\n QuerySubjectId: this._querySubjectId,\r\n ConditionValues: this._conditionValues,\r\n AlternativeEntities: _.filter(this._altEntities().map((altEntity) => {\r\n if (altEntity && altEntity.IsChecked && altEntity.IsChecked() && altEntity.EntityId !== selectedMainEntityId) {\r\n return altEntity.EntityId;\r\n } else {\r\n return null;\r\n }\r\n }), elem => {\r\n return elem !== null;\r\n }),\r\n SearchByTypes: this._searchByTypes,\r\n RelatedTableFieldId: this._relatedTableFieldId,\r\n RelatedTableId: this._relatedTableId,\r\n RelatedTablePk: this._relatedTablePk\r\n };\r\n\r\n if (this._alternativeSubjectsType().Title === 'On') {\r\n requestModel.FilterByAlternativeEntities = this.GetFilterByAlternativeEntities();\r\n }\r\n\r\n return requestModel;\r\n }\r\n\r\n SaveChangesDeduplication() {\r\n const selectedRecords = this._selectedDuplicatesRecords();\r\n BlockUI.Block();\r\n\r\n const changesToSave = [];\r\n this._grid.Rows().map((row: any) => {\r\n if (row._disabled()) return;\r\n let fieldId = null;\r\n let actionType = null;\r\n row.Cells().map((cell: DeduplicationCell) => {\r\n if (cell._fieldId) {\r\n fieldId = cell._fieldId;\r\n }\r\n if (cell._selectionType()) {\r\n actionType = cell._selectionType();\r\n }\r\n });\r\n if (fieldId && actionType && actionType !== 'leftSide') {\r\n changesToSave.push({\r\n FieldId: fieldId,\r\n Action: Actions[actionType]\r\n });\r\n }\r\n });\r\n\r\n const params = {\r\n EntityId: this._entityId,\r\n LeftRecordId: selectedRecords[0].RecordId,\r\n RightRecordId: selectedRecords[1].RecordId,\r\n Changes: [...changesToSave]\r\n };\r\n\r\n DeduplicationStore.Deduplicate(params)\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._selectedDuplicatesRecords.splice(0, 2);\r\n\r\n this.SearchRecords();\r\n this._grid.Cancel();\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n\r\n InitLockWithRequestFromDeduplication(selectedDuplicatesRecords: Array<ISelectedRecord>) {\r\n const params = {\r\n EntityId: this._entityId,\r\n LeftRecordId: selectedDuplicatesRecords[0].RecordId,\r\n RightRecordId: selectedDuplicatesRecords[1].RecordId\r\n };\r\n DeduplicationStore.GetDeduplicationRecordModel(params)\r\n .then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n\r\n this._grid.RenderModal();\r\n BlockUI.Unblock(this._grid.GetModal().Wrapper);\r\n\r\n this._grid.SetPopUpDataFromSearch(\r\n result.ResultObject,\r\n this._model.EntityName,\r\n null,\r\n this._entityId\r\n );\r\n\r\n }).fail((err) => {\r\n new Notifier().Failed(err.message);\r\n });\r\n }\r\n}\r\n","import * as _ from 'underscore'\r\n\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {Deserialize} from 'libs/cerialize'\r\nimport {SearchScreenModel} from 'Core/Screens/SearchScreen/Models/SearchScreenModel'\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\n\r\nexport interface IGetSearchScreenRequestModel {\r\n\tEntityId?: number;\r\n\tTableName?: string;\r\n\tСontrolId?: number;\r\n\tSharing?: boolean;\r\n\t//,\r\n\t//GroupNameToRecords: any\r\n}\r\n\r\nexport class SearchScreenStore {\r\n\tstatic GetScreenModel(params: IGetSearchScreenRequestModel): P.Promise<SearchScreenModel> {\r\n\t\tvar deferredResult = P.defer<SearchScreenModel>();\r\n\t\tvar records = UserVarsManager.Instance.GetRecentAndFavourites(params.EntityId);\r\n\r\n\t\tparams[\"GroupNameToRecords\"] = [];\r\n\r\n\t\tparams[\"GroupNameToRecords\"].push({\r\n\t\t\tkey: \"recent\",\r\n\t\t\tvalue: records[\"recent\"]\r\n\t\t});\r\n\t\tparams[\"GroupNameToRecords\"].push({\r\n\t\t\tkey: \"favorites\",\r\n\t\t\tvalue: records[\"favorites\"]\r\n\t\t});\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/SearchApi/GetSearchScreenModel',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.Deserialize(data)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): SearchScreenModel {\r\n\t\treturn <SearchScreenModel>Deserialize(jsonObject, SearchScreenModel);\r\n\t}\r\n}","import {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {SearchTypes, SearchByMainRelationTypes} from 'Core/Screens/SearchScreen/Enums/Enums'\r\nimport {SearchGroups} from \"Core/Enums/SearchGroups\";\r\nimport { OrderFieldModel } from \"Core/Screens/SearchScreen/Models/OrderFieldModel\";\r\nimport { SearchByRelationModel } from 'Core/Screens/SearchScreen/Models/SearchByRelationModel';\r\nimport {SearchResultModel} from 'Core/Screens/SearchScreen/Models/SearchResultModel';\r\nimport {GenericDeserialize} from 'libs/cerialize';\r\nimport { IDynamicFieldData } from 'Core/Common/Stores/RecordStore';\r\nimport { IConditionValueDto } from 'Core/Common/Interfaces/IConditionValueDto';\r\n\r\nexport interface ISearchRequestModel {\r\n\tSearchType: SearchTypes;\r\n\tSearchField: string;\r\n\tEntityId: number;\r\n\tSearchGroup: SearchGroups;\r\n\tSearchPhrase: string;\r\n\tRecentRecords: boolean;\r\n\tRecordType: string;\r\n\tRecordsPerPage: number;\r\n\tPageNumber: number;\r\n\tParentEntityId?: number;\r\n\tParentTypeId?: number;\r\n\tParentRecordId?: number;\r\n\tIsParentLinking?: boolean;\r\n\tOrderFields?: Array<OrderFieldModel>;\r\n\tControlId?: number;\r\n\tFieldId?:number;\r\n\tLeftEntityId?:number;\r\n\tRightEntityId?:number;\r\n\tLeftRecordId?:number;\r\n\tRightRecordId?:number;\r\n\tAlternativeEntities?: Array<number>;\r\n\tEnableFilter?: boolean;\r\n\tScreenData?: Array<IDynamicFieldData>;\r\n SearchByMainRelationType: SearchByMainRelationTypes;\r\n SearchByTypes?: Array<number>;\r\n SearchByRelations?: Array<SearchByRelationModel>;\r\n Sharing?:boolean;\r\n SearchFieldId: number;\r\n\tSubGridParentRecordId?: number;\r\n\tPlannerLevelEntityId?: number;\r\n\tPlannerLevelRecordId?: number;\r\n\tQuerySubjectId?: number;\r\n\tRelatedTableId?: number;\r\n\tRelatedTableFieldId?: number;\r\n\tRelatedTablePk?: number;\r\n\tFilterByAlternativeEntities?: FilterByAlternativeEntitiesModel;\r\n\tKSeq?: number;\r\n\r\n\tConditionValues: Array<IConditionValueDto>;\r\n}\r\n\r\nexport interface FilterByAlternativeEntitiesModel{\r\n\tSubjectEntity: number;\r\n\tAlternativeEntities: Array<number>\r\n}\r\n\r\nexport interface ICheckRightsRequestModel {\r\n\tTableId: number;\r\n\tRecordId: number;\r\n\tSecurityWord: number;\r\n}\r\n\r\nexport class SearchStore {\r\n\tstatic Search(params: ISearchRequestModel): P.Promise<SearchResultModel> {\r\n\t\tvar deferredResult = P.defer<SearchResultModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/SearchApi/Search',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.fail(err=>{\r\n\t\t\t\tdeferredResult.reject({ message: err.message });\r\n\t\t\t})\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull && data.IsSuccessfull === true) {\r\n\t\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, SearchResultModel));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({message: data.ErrorMessage, value: data.OperationMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic IsUserAllowedTo(params: ICheckRightsRequestModel) {\r\n\t\tlet deferredResult = P.defer<any>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/RecordSecurityApi/IsUserAllowedTo',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull && data.IsSuccessfull === true) {\r\n\t\t\t\t\tdeferredResult.resolve(data.ResultObject);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import { Request, IRequestOptions } from 'Core/Common/Request';\r\nimport { P } from 'Core/Common/Promise';\r\nimport { DeletionModeModel } from \"Core/Screens/Models/DeletionModeModel\";\r\n\r\nexport interface IGetRecordRequestModel {\r\n\tTableId: number;\r\n\tTableTypeId: number;\r\n\tRecordId: number;\r\n\tReadLookups: boolean;\r\n}\r\n\r\nexport interface IGetDeletionModeRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n}\r\n\r\nexport interface IDeleteRecordRequestModel {\r\n\tEntityId: number;\r\n\tRecordId: number;\r\n\tDisable?: boolean;\r\n};\r\n\r\nexport class RecordStore {\r\n\tstatic GetRecord(params: IGetRecordRequestModel): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/RecordsApi/Get',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t});\r\n\t}\r\n\r\n\tstatic GetDeletionMode(params: IGetDeletionModeRequestModel): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<DeletionModeModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/GetDeletionMode',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(result => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => {\r\n\t\t\t\tdeferredResult.reject(error);\r\n\t\t\t});\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic DeleteRecord(params: IDeleteRecordRequestModel): P.Promise<any> {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/DeleteRecord',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t});\r\n\t}\r\n}","export var EVENTS = {\r\n\tTYPE_SELECTED: 'TYPE_SELECTED',\r\n\tTYPES_NOT_FOUND: 'TYPES_NOT_FOUND',\r\n\tTYPES_FOUND: 'TYPES_FOUND',\r\n\tCANCELLED: 'CANCELLED'\r\n};","import {deserialize} from 'libs/cerialize';\r\nimport {deserializeAs} from 'libs/cerialize';\r\n\r\nexport class ExampleRecordModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tF_Type: number;\r\n\r\n\t@deserialize\r\n\tF_Kind: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import { deserialize } from 'libs/cerialize'\r\n\r\nexport class KindModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\tget DisplayName() {\r\n\t\treturn this.TranslatedName || this.Name;\r\n\t}\r\n\r\n\tstatic CreateDashKind() {\r\n\t\tconst model = new KindModel();\r\n\t\tmodel.Id = 0;\r\n\t\tmodel.Name = '-';\r\n\t\tmodel.IsEnabled = true;\r\n\t\treturn model;\r\n\t}\r\n}","import { deserialize, deserializeAs } from 'libs/cerialize'\r\nimport {KindModel} from \"./KindModel\";\r\n\r\nexport class TableTypeModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n Name: string;\r\n\r\n @deserialize\r\n TranslatedName: string;\r\n\r\n\t@deserialize\r\n\tLifeStatus: number;\r\n\r\n\t@deserialize\r\n\tIsEnabled: boolean;\r\n\r\n\t@deserializeAs(KindModel)\r\n Kinds: KindModel[];\r\n\r\n GetName(): string {\r\n return this.TranslatedName ? this.TranslatedName : this.Name\r\n }\r\n}","import {deserializeAs} from 'libs/cerialize'\r\nimport {deserialize} from 'libs/cerialize'\r\n\r\nimport {ExampleRecordModel} from 'Core/Screens/TypeScreen/Models/ExampleRecordModel'\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel'\r\n\r\nexport class TableTypesModel {\r\n @deserializeAs(ExampleRecordModel)\r\n ExampleRecords: Array<ExampleRecordModel>;\r\n\r\n @deserializeAs(TableTypeModel)\r\n TableTypes: Array<TableTypeModel>;\r\n\r\n @deserialize\r\n TableHasCustomTypes: boolean;\r\n\r\n @deserialize\r\n WarningMessage: string;\r\n\r\n @deserialize\r\n TableId: number;\r\n\r\n\tget ShowTypeSelector() {\r\n\t\tconst enabledTypes = this.TableTypes.filter(type => type.IsEnabled);\r\n\r\n\t\tconst moreThanOneType = enabledTypes.length > 1;\r\n\t\tconst moreThanOneKind = enabledTypes.filter(type => type.Kinds.length > 0).length > 1;\r\n\r\n return moreThanOneType || moreThanOneKind;\r\n }\r\n}","import {GenericDeserialize} from 'libs/cerialize'\r\n\r\nimport {URL} from 'Core/Common/Url'\r\nimport {Request, IRequestOptions} from 'Core/Common/Request'\r\nimport {P} from 'Core/Common/Promise'\r\nimport {TableTypesModel} from 'Core/Screens/TypeScreen/Models/TableTypesModel'\r\nimport {IsTypeAvailableResponseModel} from \"Core/Screens/TypeScreen/Models/IsTypeAvailableResponseModel\";\r\n\r\nexport interface IGetTypesRequestModel {\r\n\tEntityId: number;\r\n\tParentTypeId: number;\r\n\tWithRoot: boolean;\r\n\tOnlyEnabled: boolean;\r\n\tEntityName?: string;\r\n}\r\n\r\nexport interface IIsTypeAvailableRequestModel {\r\n\tTypeId: number;\r\n\tExampleTypeId: number;\r\n\tEntityId: number;\r\n}\r\n\r\nexport class EntityTypesStore {\r\n\tstatic GetTypes(params: IGetTypesRequestModel): P.Promise<TableTypesModel> {\r\n\t\tlet deferredResult = P.defer<TableTypesModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.GET_TYPES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetAllTypes(params: IGetTypesRequestModel): P.Promise<TableTypesModel> {\r\n\t\tlet deferredResult = P.defer<TableTypesModel>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.GET_ALL_TYPES,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic IsTypeAvailable(params: IIsTypeAvailableRequestModel): P.Promise<IsTypeAvailableResponseModel> {\r\n\t\tconst deferredResult = P.defer<IsTypeAvailableResponseModel>();\r\n\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/ScreenFormApi/IsTypeAvailable',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then((result) => {\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t})\r\n\t\t\t.fail(error => deferredResult.reject(this.GetResponseError(error, 'Error checking if type is available')));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): TableTypesModel {\r\n\t\treturn GenericDeserialize<TableTypesModel>(jsonObject, TableTypesModel);\r\n\t}\r\n\r\n\tstatic GetResponseError(err: P.Rejection, generalError: string): P.Rejection {\r\n\t\tif (err.status === 400) {\r\n\t\t\treturn {message: JSON.parse(err.message).Message};\r\n\t\t}\r\n\r\n\t\treturn {message: generalError};\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {Modal} from 'Core/Common/Modal';\r\nimport {EntityTypesStore} from 'Core/Screens/TypeScreen/Stores/EntityTypesStore';\r\nimport {TableTypesModel} from 'Core/Screens/TypeScreen/Models/TableTypesModel';\r\nimport {TableTypeModel} from 'Core/Screens/TypeScreen/Models/TableTypeModel';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {ExampleRecordModel} from 'Core/Screens/TypeScreen/Models/ExampleRecordModel';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {EVENTS} from 'Core/Screens/TypeScreen/Events';\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\n\r\nimport SearchScreenTemplate from 'Core/Screens/TypeScreen/Templates/TypeScreen.html'\r\nimport {KindModel} from \"./Models/KindModel\";\r\n\r\nko.templates['Core/Screens/TypeScreen/Templates/TypeScreen'] = SearchScreenTemplate;\r\n\r\nexport class TypeScreen extends Event {\r\n private _modal: Modal;\r\n private _model: KnockoutObservable<TableTypesModel>;\r\n private _entityId: number;\r\n private _entityName: string;\r\n private _parentTypeId: number;\r\n private _withRoot: boolean;\r\n private _selectedType: KnockoutObservable<TableTypeModel>;\r\n private _selectedKind: KnockoutObservable<KindModel>;\r\n private _selectedExample: KnockoutObservable<ExampleRecordModel>;\r\n private _kinds: KnockoutObservableArray<KindModel>;\r\n private _examples: KnockoutObservableArray<ExampleRecordModel>;\r\n private _noExample: ExampleRecordModel;\r\n private _allowExamples: KnockoutObservable<boolean>;\r\n private _isSaveDisabled: KnockoutObservable<boolean>;\r\n\tprivate _isOkButtonEnabled: KnockoutComputed<boolean>;\r\n\tprivate _showKindSelector: KnockoutComputed<boolean>;\r\n private _showExampleSelector: KnockoutComputed<boolean>;\r\n private _onlyTypes: Array<string | Partial<TableTypeModel>>;\r\n private _labels = LABELS;\r\n\r\n constructor(entityId: number,\r\n parentTypeId: number = 0,\r\n withRoot: boolean = false,\r\n allowExamples: boolean = true,\r\n entityName: string = null,\r\n onlyTypes?: Array<string | Partial<TableTypeModel>>) {\r\n super();\r\n\r\n this._entityId = entityId;\r\n this._entityName = entityName;\r\n this._parentTypeId = parentTypeId;\r\n this._withRoot = withRoot;\r\n this._model = ko.observable(null);\r\n this._selectedType = ko.observable(null);\r\n this._selectedExample = ko.observable(null);\r\n this._selectedKind = ko.observable(null);\r\n this._kinds = ko.observableArray([]);\r\n this._examples = ko.observableArray([]);\r\n this._noExample = new ExampleRecordModel();\r\n this._noExample.Id = 0;\r\n this._noExample.Name = LABELS.NO_EXAMPLE_LABEL;\r\n this._allowExamples = ko.observable(allowExamples);\r\n this._isSaveDisabled = ko.observable(false);\r\n\t\tthis._isOkButtonEnabled = ko.computed(() => !this._isSaveDisabled());\r\n this._onlyTypes = onlyTypes;\r\n\r\n\t\tthis._showKindSelector = ko.computed(() => this._kinds().length > 1);\r\n\t\tthis._showExampleSelector = ko.computed(() => this._allowExamples() && this._examples().length > 1);\r\n\r\n this._selectedType.subscribe(newValue => {\r\n if (newValue) {\r\n this._kinds(newValue.Kinds);\r\n const selectedKind = _.first(newValue.Kinds);\r\n this._selectedKind(selectedKind);\r\n\r\n if (selectedKind && selectedKind.Id === 0) {\r\n var examplesByType = _.filter(this._model().ExampleRecords, item => {\r\n return item.F_Kind === 0 && item.F_Type === newValue.Id\r\n });\r\n examplesByType.unshift(this._noExample);\r\n this._examples(examplesByType);\r\n this._selectedExample(_.first(examplesByType));\r\n\t\t\t\t}\r\n }\r\n });\r\n\r\n this._selectedKind.subscribe(newValue => {\r\n if (newValue) {\r\n const examplesByKind = _.filter(this._model().ExampleRecords, item => item.F_Kind === newValue.Id\r\n\t\t\t\t\t&& item.F_Type === this._selectedType().Id);\r\n examplesByKind.unshift(this._noExample);\r\n this._examples(examplesByKind);\r\n this._selectedExample(_.first(examplesByKind));\r\n }\r\n });\r\n\r\n this.Init();\r\n }\r\n\r\n private Init() {\r\n this.AddEvent(EVENTS.TYPES_NOT_FOUND);\r\n this.AddEvent(EVENTS.TYPES_FOUND);\r\n this.AddEvent(EVENTS.TYPE_SELECTED);\r\n this.AddEvent(EVENTS.CANCELLED);\r\n\r\n this._modal = new Modal({\r\n addClass: 'typeScreenModal jBox-padding-10px',\r\n width: '350',\r\n minHeight: '300'\r\n }, false);\r\n }\r\n\r\n Show() {\r\n BlockUI.Block();\r\n EntityTypesStore.GetTypes({\r\n EntityId: this._entityId,\r\n ParentTypeId: this._parentTypeId,\r\n WithRoot: this._withRoot,\r\n OnlyEnabled: false,\r\n EntityName: this._entityName\r\n })\r\n .always(() => {\r\n BlockUI.Unblock();\r\n })\r\n .then(tableTypesModel => {\r\n if (!tableTypesModel.TableTypes.length) {\r\n this.Trigger(EVENTS.TYPES_NOT_FOUND, {\r\n Message: tableTypesModel.WarningMessage\r\n });\r\n return;\r\n }\r\n\r\n \r\n if (this._onlyTypes && this._onlyTypes.length > 0) {\r\n tableTypesModel.TableTypes = _.filter(tableTypesModel.TableTypes,\r\n type => this._onlyTypes.some(typeToMatch => {\r\n if (_.isString(typeToMatch)) {\r\n return type.Name === typeToMatch;\r\n }\r\n\r\n return _.isMatch(type, typeToMatch);\r\n }));\r\n }\r\n\r\n tableTypesModel.TableTypes.forEach(type => {\r\n\t\t\t\t\ttype.Kinds.unshift(KindModel.CreateDashKind());\r\n\t\t\t\t\ttype.Kinds = _.filter(type.Kinds, kind => kind.IsEnabled);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._model(tableTypesModel);\r\n\r\n\t\t\t\tlet firstEnabledType = _.first(tableTypesModel.TableTypes);\r\n\r\n if (!firstEnabledType) {\r\n firstEnabledType = new TableTypeModel();\r\n firstEnabledType.Id = 0;\r\n firstEnabledType.Name = '-';\r\n firstEnabledType.Kinds = [KindModel.CreateDashKind()];\r\n }\r\n\r\n this.Trigger(EVENTS.TYPES_FOUND);\r\n this._selectedType(firstEnabledType);\r\n\r\n\t\t\t\tlet enabledKinds = _.flatten(tableTypesModel.TableTypes.map(type => type.Kinds));\r\n\r\n let examplesByType = _.filter(tableTypesModel.ExampleRecords, item => {\r\n\t return item.F_Type === this._selectedType().Id;\r\n });\r\n\r\n\t\t\t\tif (tableTypesModel.TableTypes.length <= 1 && enabledKinds.length <= 1 && (!this._allowExamples() || !_.any(examplesByType))) {\r\n this.Trigger(EVENTS.TYPE_SELECTED, {\r\n TypeId: this._selectedType().Id,\r\n TypeName: this._selectedType().Name,\r\n KindId: this._selectedKind().Id,\r\n KindName: this._selectedKind().Name,\r\n ExampleRecordId: this._noExample.Id,\r\n EntityId: tableTypesModel.TableId\r\n });\r\n return;\r\n }\r\n\r\n this.Render();\r\n });\r\n }\r\n\r\n get Kinds(): KnockoutObservableArray<KindModel> {\r\n return this._kinds;\r\n }\r\n\r\n get Examples(): KnockoutObservableArray<ExampleRecordModel> {\r\n return this._examples;\r\n }\r\n\r\n get SelectedType(): KnockoutObservable<TableTypeModel> {\r\n return this._selectedType;\r\n }\r\n\r\n get TableTypes() {\r\n return this._model().TableTypes;\r\n }\r\n\r\n get ShowTypeSelector() {\r\n return this._model().ShowTypeSelector;\r\n }\r\n\r\n get SelectedKind(): KnockoutObservable<KindModel> {\r\n return this._selectedKind;\r\n }\r\n\r\n get SelectedExample(): KnockoutObservable<ExampleRecordModel> {\r\n return this._selectedExample;\r\n }\r\n\r\n GetTemplateName(): string {\r\n return `Core/Screens/TypeScreen/Templates/TypeScreen`;\r\n }\r\n\r\n Render(): void {\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper);\r\n }\r\n\r\n SetButtonDisable(enabledTypesExist: boolean) {\r\n this._isSaveDisabled(!enabledTypesExist);\r\n }\r\n\r\n SelectExample(item) {\r\n this._selectedExample(item);\r\n this.Save();\r\n }\r\n\r\n Save() {\r\n if (this._modal) {\r\n if (this._selectedType().IsEnabled) {\r\n this.Trigger(EVENTS.TYPE_SELECTED, {\r\n TypeId: this._selectedType().Id,\r\n TypeName: this._selectedType().Name,\r\n KindId: this._selectedKind().Id,\r\n KindName: this._selectedKind().Name,\r\n ExampleRecordId: this._selectedExample().Id,\r\n EntityId: this._model().TableId\r\n });\r\n this._modal.Close();\r\n } else {\r\n var message = NOTIFICATIONS.TYPE_IS_NOT_AVAILABLE.replace('{TypeName}', this._selectedType().TranslatedName);\r\n new Notifier().Warning(message);\r\n }\r\n }\r\n }\r\n\r\n Cancel() {\r\n if (this._modal) {\r\n this.Trigger(EVENTS.CANCELLED);\r\n this._modal.Close();\r\n }\r\n }\r\n\r\n AfterRender() {\r\n if (this._modal) {\r\n this._modal.Show();\r\n }\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div class=\\\"portlet light bordered type-screen\\\"> <div class=\\\"portlet-body\\\"> <!-- ko if: ShowTypeSelector --> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\"><!-- ko text: _labels.TYPE --><!-- /ko --></label> <select data-bind=\\\"options: TableTypes, optionsText: (item) => item.GetName(), value: SelectedType\\\" class=\\\"form-control\\\"> </select> </div> </div> <!--ko if: _showKindSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\">Kind</label> <select data-bind=\\\"options: Kinds,\\r\\n optionsText: 'DisplayName',\\r\\n value: SelectedKind\\\" class=\\\"form-control\\\"></select> </div> </div> <!--/ko--> <!-- ko if: _showExampleSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\"><!-- ko text: _labels.MAKE_EXAMPLE --><!-- /ko --></label> <select data-bind=\\\"options: Examples,\\r\\n optionsText: 'Name',\\r\\n value: SelectedExample\\\" class=\\\"form-control\\\"></select> </div> </div> <!--/ko--> </div> </form> <div class=\\\"form-body\\\"> <input data-bind=\\\"click: Save,\\r\\n css: { 'disabled': _isSaveDisabled },\\r\\n enableAttr: _isOkButtonEnabled,\\r\\n attr: { value: _labels.OK}\\\" type=\\\"button\\\" class=\\\"btn green\\\" id=\\\"SaveBtn\\\"> <input data-bind=\\\"click: Cancel,\\r\\n attr: {value: _labels.CANCEL}\\\" type=\\\"button\\\" class=\\\"btn default\\\" id=\\\"CancelBtn\\\"> </div> <!-- /ko --> <!-- ko ifnot: TableTypes.length > 1 --> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <!--ko if: _showKindSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <label class=\\\"control-label\\\">Kind</label> <select data-bind=\\\"options: Kinds,\\r\\n optionsText: 'DisplayName',\\r\\n value: SelectedKind\\\" class=\\\"form-control\\\"></select> </div> </div> <!--/ko--> <!-- ko if: _showExampleSelector --> <div class=\\\"form-group\\\"> <div class=\\\"row\\\"> <table class=\\\"table table-striped table-hover table-example\\\"> <thead> <tr><th class=\\\"text-left\\\"><!-- ko text: _labels.MAKE_EXAMPLE --><!-- /ko --></th></tr> </thead> <tbody> <!-- ko foreach: Examples --> <tr> <td data-bind=\\\"text: Name, click: $parent.SelectExample.bind($parent, $data)\\\" class=\\\"text-left u-cursor-pointer\\\"></td> </tr> <!-- /ko --> </tbody> </table> </div> </div> <!--/ko--> </div> </form> <div class=\\\"form-body\\\"> <input data-bind=\\\"click: Save,\\r\\n css: { 'disabled': _isSaveDisabled },\\r\\n enableAttr: _isOkButtonEnabled,\\r\\n attr: { value: _labels.OK}\\\" type=\\\"button\\\" class=\\\"btn green\\\" id=\\\"SaveBtn\\\"> <input data-bind=\\\"click: Cancel,\\r\\n attr: {value: _labels.CANCEL}\\\" type=\\\"button\\\" class=\\\"btn default\\\" id=\\\"CancelBtn\\\"> </div> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport 'lockr';\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {IPathRunnerSettings} from \"Core/UserVarsManager/UserVars/IPathRunnerSettings\";\r\nimport * as moment from \"moment\";\r\nimport {UserVarsStore} from 'Core/UserVarsManager/UserVarsStores/UserVarsStore';\r\nimport {GlobalManager, GLOBALS} from '../GlobalManager/GlobalManager';\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {NOTIFICATIONS, LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {Guid} from 'Core/Common/Guid';\r\nimport {FastFilterSaveModel} from 'Core/Controls/Grid/BaseGrid/FastFilter/FastFilterModels';\r\nimport enumerable from '../Common/Decorators/EnumerableDecorator';\r\nimport {CheckedUserAndGroup, SelectedUserType} from \"Core/Controls/SelectUser/SelectUser\";\r\n\r\nexport const GROUPS = {\r\n RECENT: 'recent',\r\n FAVORITES: 'favorites',\r\n SETTINGS: 'settings',\r\n SEARCH_PARAMS: 'searchParams',\r\n TABS_PARAMS: 'tabsParams',\r\n PLANNER_TABS_PARAMS: 'plannerTabsParams',\r\n GRID_VIEW: 'gridView',\r\n GRID_PRIORITY: 'gridPriority',\r\n PORTLET_SETTINGS: 'portletSettings',\r\n PATH_RUNNER_SETTINGS: 'pathRunnerSettings',\r\n KANBAN_LAST_SELECTED_TYPE: 'kanbanLastSelectedType',\r\n KANBAN_TODO_SELECTED: 'kanbanTodoSelected',\r\n KANBAN_VIEW: 'kanbanView',\r\n FINANCIAL_DASHBOARD_GRID_VIEW: 'financialDashboardGridView',\r\n BASKET: 'basket',\r\n DB_STATUS: 'databaseDesignerDbId',\r\n USER_SELECTION: 'userSelection',\r\n LAST_SYNC_TIME: 'lastSyncTime',\r\n ALT_ENTITIES: 'altEntities',\r\n GRID_COLUMN_FILTERS: 'gridColumnFilters',\r\n LOAD_CHART_STATES: 'loadChartStates',\r\n SCHEDULER_VIEW: 'schedulerView',\r\n SCHEDULER_SUBJECT: 'schedulerSubject',\r\n SCHEDULER_DATE: 'schedulerDate',\r\n LIFE_STATUS_ADVANCED_MODE: 'lifeStatusAdvancedMode',\r\n AGENDA_DATE: 'agendaDate',\r\n PLANNER_PAGE: 'plannerPage',\r\n PLANNER_LEVEL: 'plannerLevel',\r\n KANBAN_BOARD_ACCORDION_GROUPS: 'kanbanBoardAccordionGroups'\r\n}\r\n\r\nexport interface ISelection {\r\n RememberMe: boolean,\r\n ScreenId: number,\r\n UserSelection: Array<IUserSelection>;\r\n}\r\n\r\nexport interface IUserSelection {\r\n Guid: string;\r\n Users: Array<SelectedUserType>,\r\n UserGroups: Array<CheckedUserAndGroup>;\r\n Checked: boolean;\r\n}\r\n\r\nexport interface IPlannerPageParams {\r\n StartDate: string,\r\n ViewType: string;\r\n Period: number,\r\n ProjectManagerId: number,\r\n IsWeekPlannnig: boolean;\r\n}\r\n\r\nexport interface IPlannerLevelParams {\r\n ExpandedBarIds: Array<string>;\r\n}\r\n\r\nexport interface IKanbanBoardAccordionGroups {\r\n controlId: number,\r\n entity: {\r\n id: number,\r\n records: [{\r\n id: number,\r\n expanded: boolean\r\n }]\r\n }\r\n}\r\n\r\nexport class UserVarsManager {\r\n private static instance: UserVarsManager;\r\n private static allowInstantiation: boolean = true;\r\n private _syncInterval: any;\r\n\r\n constructor() {\r\n if (!UserVarsManager.allowInstantiation) {\r\n throw new Error('Use UserVarManager.Instance instead');\r\n }\r\n }\r\n\r\n static get Instance(): UserVarsManager {\r\n if (UserVarsManager.instance == null) {\r\n UserVarsManager.instance = new UserVarsManager();\r\n UserVarsManager.allowInstantiation = false;\r\n }\r\n\r\n return UserVarsManager.instance;\r\n }\r\n\r\n GetAll(): string {\r\n var allGroups = {};\r\n\r\n _.each(_.values(GROUPS), value => {\r\n allGroups[value] = Lockr.get(value);\r\n });\r\n\r\n return JSON.stringify(allGroups);\r\n }\r\n\r\n GetLastRecentRecordByEntityId(entityId: number): any {\r\n var recentRecords = <any>Lockr.get(GROUPS.RECENT);\r\n var entityWithRecords = _.findWhere(recentRecords, {\r\n 'entityId': entityId\r\n });\r\n\r\n if (entityWithRecords && entityWithRecords[\"records\"]) {\r\n return _.last(entityWithRecords[\"records\"]);\r\n }\r\n return null;\r\n }\r\n\r\n GetLastDbChoosen() {\r\n var databaseDesignerDbId = <any>Lockr.get(GROUPS.DB_STATUS);\r\n if (databaseDesignerDbId) {\r\n return _.last(databaseDesignerDbId);\r\n }\r\n return null;\r\n }\r\n\r\n GetTabsParams() {\r\n var tabsParams = Lockr.get(GROUPS.TABS_PARAMS);\r\n\r\n if (!tabsParams) {\r\n return null;\r\n }\r\n\r\n var entityParams = tabsParams['tabs'];\r\n return entityParams ? entityParams : null;\r\n }\r\n\r\n SetTabsParams(activeTabPageCID: any, tabsActivityStorage?: any) {\r\n let tabParams = Lockr.get(GROUPS.TABS_PARAMS) || {};\r\n let existedTabs = tabParams['tabs'] && tabParams['tabs'].activeTabPageCIDs || [];\r\n const entityParams = {\r\n activeTabPageCIDs: [...existedTabs],\r\n tabsActivityStorage: {}\r\n };\r\n if (tabsActivityStorage) {\r\n entityParams.tabsActivityStorage = tabsActivityStorage;\r\n }\r\n\r\n if (activeTabPageCID) {\r\n entityParams.activeTabPageCIDs = entityParams.activeTabPageCIDs.filter((activeTabPageData) => {\r\n return activeTabPageData.screenId !== activeTabPageCID.screenId;\r\n });\r\n\r\n entityParams.activeTabPageCIDs.push(activeTabPageCID);\r\n }\r\n\r\n if (!tabParams) {\r\n tabParams = {};\r\n }\r\n\r\n tabParams['tabs'] = entityParams;\r\n Lockr.set(GROUPS.TABS_PARAMS, tabParams);\r\n }\r\n\r\n GetPlannerTabsParams() {\r\n let plannerTabsParams = Lockr.get(GROUPS.PLANNER_TABS_PARAMS);\r\n\r\n if (!plannerTabsParams) {\r\n return null;\r\n }\r\n\r\n let entityParams = plannerTabsParams['tabs'];\r\n return entityParams ? entityParams : null;\r\n }\r\n\r\n SetPlannerTabsParams(activePlannerTabPageCID: any, plannerTabsActivityStorage?: any) {\r\n let plannerTabsParams = Lockr.get(GROUPS.PLANNER_TABS_PARAMS) || {};\r\n let existedTabs = plannerTabsParams['tabs'] && plannerTabsParams['tabs'].activePlannerTabPageCIDs || [];\r\n const entityParams = {\r\n activePlannerTabPageCIDs: [...existedTabs],\r\n plannerTabsActivityStorage: {}\r\n };\r\n if (plannerTabsActivityStorage) {\r\n entityParams.plannerTabsActivityStorage = plannerTabsActivityStorage;\r\n }\r\n\r\n if (activePlannerTabPageCID) {\r\n entityParams.activePlannerTabPageCIDs = entityParams.activePlannerTabPageCIDs.filter((activeTabPageData) => {\r\n return activeTabPageData.screenId !== activePlannerTabPageCID.screenId;\r\n });\r\n\r\n entityParams.activePlannerTabPageCIDs.push(activePlannerTabPageCID);\r\n }\r\n\r\n if (!plannerTabsParams) {\r\n plannerTabsParams = {};\r\n }\r\n\r\n plannerTabsParams['tabs'] = entityParams;\r\n Lockr.set(GROUPS.PLANNER_TABS_PARAMS, plannerTabsParams);\r\n }\r\n\r\n RemovePreselectTabData(screenId: number) {\r\n var tabsActivityStorage = this.GetTabsParams() ? this.GetTabsParams().tabsActivityStorage : {};\r\n const activeTabPageCID = this.GetTabsParams() && _.where(this.GetTabsParams().activeTabPageCIDs, {screenId: screenId})[0] || null;\r\n\r\n this.SetTabsParams(activeTabPageCID, tabsActivityStorage);\r\n }\r\n\r\n GetByEntityId(entityId: number) {\r\n var allGroups = {};\r\n _.each(_.values(GROUPS), (value) => {\r\n let groupRecords = <any>Lockr.get(value);\r\n\r\n if (groupRecords) {\r\n let entityRecords = _.findWhere(groupRecords, {'entityId': entityId});\r\n\r\n if (entityRecords) {\r\n allGroups[value] = entityRecords[\"records\"];\r\n\r\n if (value === GROUPS.RECENT) {\r\n allGroups[value].reverse();\r\n }\r\n }\r\n }\r\n });\r\n\r\n return allGroups;\r\n }\r\n\r\n GetRecordAltEntities(recordId) {\r\n var altEntities = Lockr.get(GROUPS.ALT_ENTITIES);\r\n\r\n if (!altEntities) {\r\n return null;\r\n }\r\n var recordParams = altEntities[recordId];\r\n return recordParams ? recordParams : null;\r\n }\r\n\r\n SetRecordAltEntities(recordId, altEntitiesData) {\r\n recordId = parseInt(recordId);\r\n\r\n var recordParams = {};\r\n recordParams = {\r\n altEntities: altEntitiesData\r\n };\r\n\r\n var altEntities = Lockr.get(GROUPS.ALT_ENTITIES);\r\n if (!altEntities) {\r\n altEntities = {};\r\n }\r\n\r\n altEntities[recordId] = recordParams;\r\n Lockr.set(GROUPS.ALT_ENTITIES, altEntities);\r\n }\r\n\r\n\r\n GetSearchParams(entityId) {\r\n var searchParams = Lockr.get(GROUPS.SEARCH_PARAMS);\r\n\r\n if (!searchParams) {\r\n return null;\r\n }\r\n var entityParams = searchParams[entityId];\r\n return entityParams ? entityParams : null;\r\n }\r\n\r\n SetLastDbChoosen(databaseDesignerDbId) {\r\n Lockr.set(GROUPS.DB_STATUS, databaseDesignerDbId);\r\n }\r\n\r\n SetLoadChartState(controlId: number, state: boolean) {\r\n const loadChartStates = Lockr.get(GROUPS.LOAD_CHART_STATES) || {};\r\n\r\n if (!loadChartStates[controlId]) {\r\n loadChartStates[controlId] = {};\r\n }\r\n\r\n loadChartStates[controlId] = state;\r\n\r\n Lockr.set(GROUPS.LOAD_CHART_STATES, loadChartStates);\r\n }\r\n\r\n GetLoadChartState(controlId: number): boolean {\r\n const loadChartStates = Lockr.get(GROUPS.LOAD_CHART_STATES) || {};\r\n\r\n if (loadChartStates[controlId] == null) {\r\n return true;\r\n } else {\r\n return loadChartStates[controlId];\r\n }\r\n }\r\n\r\n GetGridColumnFilters(recordId: number) {\r\n const gridColumnFilters = Lockr.get(GROUPS.GRID_COLUMN_FILTERS);\r\n\r\n return gridColumnFilters ? gridColumnFilters[recordId] : null;\r\n }\r\n\r\n HasFastFilter(recordId: number) {\r\n let filteredList = this.GetGridColumnFilters(recordId);\r\n if (filteredList && filteredList.length) {\r\n let filteredItem = _.find(filteredList, (item: any) => item.Values.length);\r\n\r\n return !!filteredItem;\r\n }\r\n\r\n return !!(filteredList && filteredList.length);\r\n }\r\n\r\n ResetGridFilters(recordId: number = -1) {\r\n let gridColumnFilters = Lockr.get(GROUPS.GRID_COLUMN_FILTERS);\r\n\r\n if (gridColumnFilters) {\r\n gridColumnFilters[recordId] = [];\r\n }\r\n\r\n Lockr.set(GROUPS.GRID_COLUMN_FILTERS, gridColumnFilters);\r\n }\r\n\r\n SetGridColumnFilters(recordId: number = -1, filters: FastFilterSaveModel[]) {\r\n let gridColumnFilters = Lockr.get(GROUPS.GRID_COLUMN_FILTERS);\r\n\r\n if (!gridColumnFilters) {\r\n gridColumnFilters = {};\r\n } else {\r\n // check if uservars has a valid model, if not - clear it\r\n try {\r\n const currentFilter: FastFilterSaveModel = gridColumnFilters[recordId];\r\n\r\n let isModelValid = !currentFilter\r\n || (typeof currentFilter[0].FieldId === 'number'\r\n && typeof currentFilter[0].FieldAlias === 'string'\r\n && Array.isArray(currentFilter[0].Values));\r\n\r\n if (!isModelValid) {\r\n throw new Error('invalid uservars model, cleaning...');\r\n }\r\n } catch (error) {\r\n gridColumnFilters[recordId] = [];\r\n }\r\n }\r\n\r\n filters.forEach((filter: FastFilterSaveModel) => {\r\n if (gridColumnFilters[recordId]) {\r\n let isFilterAlreadyExists = false;\r\n\r\n gridColumnFilters[recordId] = gridColumnFilters[recordId].map((existedFilter: FastFilterSaveModel) => {\r\n if (existedFilter.TableViewId === filter.TableViewId && existedFilter.FieldAlias === filter.FieldAlias) {\r\n isFilterAlreadyExists = true;\r\n\r\n return filter;\r\n } else {\r\n return existedFilter;\r\n }\r\n });\r\n\r\n if (!isFilterAlreadyExists) {\r\n gridColumnFilters[recordId].push(filter);\r\n }\r\n } else {\r\n gridColumnFilters[recordId] = [filter];\r\n }\r\n });\r\n\r\n Lockr.set(GROUPS.GRID_COLUMN_FILTERS, gridColumnFilters);\r\n }\r\n\r\n SetSearchParams(entityId, recordTypeName, searchModeValue, lifeStatusId, recordTypeValue, searchMode?, searchField?, enableFiltering?, searchByRelations?) {\r\n entityId = parseInt(entityId);\r\n\r\n var entityParams = {};\r\n entityParams = {\r\n recordTypeName: recordTypeName,\r\n searchMode: searchMode,\r\n searchField: searchField,\r\n searchModeValue: searchModeValue,\r\n lifeStatusId: lifeStatusId,\r\n recordTypeValue: recordTypeValue,\r\n enableFiltering: enableFiltering,\r\n searchByRelationsValue: searchByRelations\r\n };\r\n\r\n var searchParams = Lockr.get(GROUPS.SEARCH_PARAMS);\r\n if (!searchParams) {\r\n searchParams = {};\r\n }\r\n\r\n searchParams[entityId] = entityParams;\r\n Lockr.set(GROUPS.SEARCH_PARAMS, searchParams);\r\n }\r\n\r\n GetRecentAndFavourites(entityId: number): any {\r\n //var allGroups = this.GetByEntityId(entityId);\r\n return this.GetByEntityId(entityId);\r\n\r\n //return {\r\n //\trecent: allGroups[GROUPS.RECENT],\r\n //\tfavorites: allGroups[GROUPS.FAVOURITES]\r\n //};\r\n }\r\n\r\n\r\n GetPortleteSettings(portletId) {\r\n var portletsSettings = Lockr.get(GROUPS.PORTLET_SETTINGS) || {};\r\n return portletsSettings[portletId];\r\n }\r\n\r\n SetPortletSettings(portletId: number, settings: any) {\r\n settings = JSON.parse(settings);\r\n var portletsSettings = Lockr.get(GROUPS.PORTLET_SETTINGS) || {};\r\n\r\n portletsSettings[portletId] = settings;\r\n\r\n Lockr.set(GROUPS.PORTLET_SETTINGS, portletsSettings);\r\n }\r\n\r\n GetSettingsColor() {\r\n return this.GetSettings()['color'];\r\n }\r\n\r\n GetKanbanLastType(controlId: number): number {\r\n const types = Lockr.get(GROUPS.KANBAN_LAST_SELECTED_TYPE) || {};\r\n return types[controlId];\r\n }\r\n\r\n SetKanbanLastType(controlId: number, typeId: number) {\r\n const types = Lockr.get(GROUPS.KANBAN_LAST_SELECTED_TYPE) || {};\r\n types[controlId] = typeId;\r\n\r\n Lockr.set(GROUPS.KANBAN_LAST_SELECTED_TYPE, types);\r\n }\r\n\r\n GetKanbanTodoSelected(controlId: number): boolean {\r\n const kanbanTodoSelectedValues = Lockr.get(GROUPS.KANBAN_TODO_SELECTED) || {};\r\n return kanbanTodoSelectedValues[controlId];\r\n }\r\n\r\n SetKanbanTodoSelected(controlId: number, isKanbanTodoSelected: boolean) {\r\n const kanbanTodoSelectedValues = Lockr.get(GROUPS.KANBAN_TODO_SELECTED) || {};\r\n kanbanTodoSelectedValues[controlId] = isKanbanTodoSelected;\r\n\r\n Lockr.set(GROUPS.KANBAN_TODO_SELECTED, kanbanTodoSelectedValues);\r\n }\r\n\r\n GetFinancialDashboardGridView(controlId: number): number {\r\n const gridViews = Lockr.get(GROUPS.FINANCIAL_DASHBOARD_GRID_VIEW) || {};\r\n return gridViews[controlId];\r\n }\r\n\r\n SetFinancialDashboardGridView(controlId: number, gridViewId: number) {\r\n const gridViews = Lockr.get(GROUPS.FINANCIAL_DASHBOARD_GRID_VIEW) || {};\r\n gridViews[controlId] = gridViewId;\r\n\r\n Lockr.set(GROUPS.FINANCIAL_DASHBOARD_GRID_VIEW, gridViews);\r\n }\r\n\r\n GetKanbanView(controlId: number): number {\r\n const kanbanViews = Lockr.get(GROUPS.KANBAN_VIEW) || {};\r\n return kanbanViews[controlId];\r\n }\r\n\r\n SetKanbanView(controlId: number, kanbanViewId: number) {\r\n const kanbanViews = Lockr.get(GROUPS.KANBAN_VIEW) || {};\r\n kanbanViews[controlId] = kanbanViewId;\r\n\r\n Lockr.set(GROUPS.KANBAN_VIEW, kanbanViews);\r\n }\r\n\r\n GetSettings() {\r\n var settings = Lockr.get(GROUPS.SETTINGS);\r\n return settings != undefined ? settings : {}\r\n }\r\n\r\n SetSettingsColor(color) {\r\n var value = this.GetSettings();\r\n value['color'] = color;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n\r\n UservarsLastSync() {\r\n const globalValue = Number(GlobalManager.Instance.GetGlobal(GLOBALS.USER_VARS_UPDATE_TIME)) || 30;\r\n const syncItervalTime = globalValue * 60000;\r\n\r\n this.UpdateUserVars();\r\n\r\n this._syncInterval = setInterval(() => this.UpdateUserVars(), syncItervalTime);\r\n }\r\n\r\n SignOut() {\r\n clearInterval(this._syncInterval);\r\n }\r\n\r\n UpdateUserVars() {\r\n if (!CookieManager.GetAuthToken()) return;\r\n\r\n UserVarsStore.UpdateUserVars({'UserVariables': this.GetAll()}).then(result => {\r\n if (result && !result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n Lockr.set(GROUPS.LAST_SYNC_TIME, moment().toISOString());\r\n });\r\n }\r\n\r\n GetSettingsCustomThemeName() {\r\n return this.GetSettings()['customThemeName'];\r\n }\r\n\r\n GetSettingsCustomThemeColor() {\r\n return this.GetSettings()['customThemeColor'];\r\n }\r\n\r\n GetSettingsCustomColor() {\r\n return this.GetSettings()['customColor'];\r\n }\r\n\r\n GetSettingsLayoutMode() {\r\n return this.GetSettings()['style'];\r\n }\r\n\r\n GetSettingsSidebarBorders() {\r\n return this.GetSettings()['sidebarBorders'];\r\n }\r\n\r\n SetSettingsSidebarBorders(sidebarBorders) {\r\n var value = this.GetSettings();\r\n value['sidebarBorders'] = sidebarBorders;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsLayoutMode(style) {\r\n var value = this.GetSettings();\r\n value['style'] = style;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsCustomThemeName(customThemeName) {\r\n var value = this.GetSettings();\r\n value['customThemeName'] = customThemeName;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsCustomThemeColor(customThemeColor) {\r\n var value = this.GetSettings();\r\n value['customThemeColor'] = customThemeColor;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n SetSettingsCustomColor(customColor) {\r\n var value = this.GetSettings();\r\n value['customColor'] = customColor;\r\n Lockr.set(GROUPS.SETTINGS, value);\r\n }\r\n\r\n RestoreFromJson(jsonString: string) {\r\n var jsonObject = JSON.parse(jsonString);\r\n this.Clear();\r\n\r\n _.each(jsonObject, (objValue, key: string) => {\r\n Lockr.set(key, objValue);\r\n });\r\n }\r\n\r\n AddSelection(screenId: number, userGroups: Array<CheckedUserAndGroup>, users: SelectedUserType[], rememberMe: boolean) {\r\n const userSelectionData = this.GetUserSelections();\r\n let selectionByScreenId = _.find(userSelectionData, (selection: ISelection) => selection.ScreenId === screenId);\r\n\r\n const userSelection: IUserSelection = {\r\n Guid: Guid.NewGuid(),\r\n Users: users,\r\n UserGroups: userGroups,\r\n Checked: true\r\n };\r\n\r\n if (_.isEmpty(userSelectionData)) {\r\n const data: ISelection[] = [{\r\n RememberMe: rememberMe,\r\n ScreenId: screenId,\r\n UserSelection: [userSelection]\r\n }];\r\n\r\n Lockr.set(GROUPS.USER_SELECTION, data);\r\n return;\r\n }\r\n\r\n if (_.isEmpty(selectionByScreenId)) {\r\n selectionByScreenId = {\r\n RememberMe: rememberMe,\r\n ScreenId: screenId,\r\n UserSelection: [userSelection]\r\n };\r\n\r\n userSelectionData.push(selectionByScreenId);\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionData);\r\n return;\r\n }\r\n\r\n selectionByScreenId.UserSelection.unshift(userSelection);\r\n\r\n if (selectionByScreenId.UserSelection.length > 10) {\r\n selectionByScreenId.UserSelection.pop();\r\n }\r\n\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionData);\r\n }\r\n\r\n GetUserSelections(): ISelection[] {\r\n return <ISelection[]>Lockr.get(GROUPS.USER_SELECTION);\r\n }\r\n\r\n GetUserSelection(screenId: number): ISelection {\r\n const allSelections = this.GetUserSelections();\r\n let selection = _.find(allSelections, (selection: ISelection) => selection.ScreenId === screenId);\r\n if(selection){\r\n selection.UserSelection = _.filter(selection.UserSelection, (selection) => selection != null);\r\n }\r\n return selection;\r\n }\r\n\r\n SetUserSelection(screeId: number, userSelectionData: ISelection[]) {\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionData);\r\n }\r\n\r\n SetRememberUserSelection(screenId: number, rememberMe: boolean) {\r\n const userSelectionsData = this.GetUserSelections();\r\n let currentSelection = _.find<ISelection>(userSelectionsData, selection => selection.ScreenId === screenId);\r\n\r\n if (currentSelection) {\r\n currentSelection.RememberMe = rememberMe;\r\n Lockr.set(GROUPS.USER_SELECTION, userSelectionsData);\r\n } else {\r\n const data: ISelection[] = [{\r\n RememberMe: rememberMe,\r\n ScreenId: screenId,\r\n UserSelection: []\r\n }];\r\n Lockr.set(GROUPS.USER_SELECTION, data);\r\n }\r\n }\r\n\r\n AddRecent(entityId: number, recordId: number, typeId: number) {\r\n this.AddToGroup(recordId, entityId, typeId, GROUPS.RECENT);\r\n }\r\n\r\n RemoveFromRecent(recordId: number, entityId: number, tableTypeId: number) {\r\n this.RemoveFromGroup(recordId, entityId, tableTypeId, GROUPS.RECENT);\r\n }\r\n\r\n private AddToGroup(recordId: number, entityId: number, typeId: number, group) {\r\n if (!typeId) {\r\n typeId = 0;\r\n }\r\n\r\n if (!entityId || !recordId || recordId < 1) {\r\n var notifier = new Notifier(null);\r\n notifier.Failed(NOTIFICATIONS.WRONG_ARGS);\r\n return;\r\n }\r\n\r\n var groupValues = <any>Lockr.get(group);\r\n\r\n var data = [{\r\n 'entityId': entityId,\r\n 'records': [{\r\n 'id': recordId,\r\n 'typeId': typeId\r\n }]\r\n }];\r\n\r\n if (!groupValues || groupValues.length === 0) {\r\n Lockr.set(group, data);\r\n } else {\r\n let entityPair = _.findWhere(groupValues, {\r\n 'entityId': entityId\r\n });\r\n\r\n if (entityPair) {\r\n let newGroup = _.filter(groupValues, pair => (pair['entityId'] !== entityId));\r\n\r\n entityPair['records'] = _.filter(entityPair['records'],\r\n recordIdItem => (recordIdItem['id'] !== recordId));\r\n\r\n let recordData = {\r\n 'id': recordId,\r\n 'typeId': typeId\r\n }\r\n\r\n entityPair['records'].push(recordData);\r\n\r\n if (entityPair['records'].length > this.GetMaxLimitConst(group)) {\r\n entityPair['records'].shift();\r\n }\r\n\r\n newGroup.push(entityPair);\r\n\r\n Lockr.set(group, newGroup);\r\n } else {\r\n groupValues = groupValues.concat(data[0]);\r\n Lockr.set(group, groupValues);\r\n }\r\n }\r\n }\r\n\r\n GetMaxLimitConst(group) {\r\n switch (group) {\r\n case GROUPS.RECENT:\r\n case GROUPS.FAVORITES:\r\n return 10;\r\n default:\r\n return Infinity;\r\n }\r\n }\r\n\r\n Clear(): void {\r\n _.each(_.values(GROUPS), value => {\r\n Lockr.rm(value);\r\n });\r\n }\r\n\r\n IsInFavorites(\r\n recordId: number,\r\n entityId: number,\r\n tableTypeId: number): boolean {\r\n return this.IsInGroup(recordId, entityId, tableTypeId, GROUPS.FAVORITES);\r\n }\r\n\r\n RemoveFromFavorites(\r\n recordId: number,\r\n entityId: number,\r\n tableTypeId: number) {\r\n this.RemoveFromGroup(recordId, entityId, tableTypeId, GROUPS.FAVORITES);\r\n }\r\n\r\n AddToFavorites(\r\n recordId: number,\r\n entityId: number,\r\n tableTypeId: number) {\r\n this.AddToGroup(recordId, entityId, tableTypeId, GROUPS.FAVORITES);\r\n }\r\n\r\n private IsInGroup(recordId: number, entityId: number, tableTypeId: number, group: string): boolean {\r\n var groupData = <any>Lockr.get(group);\r\n\r\n var entityData = _.findWhere(groupData, {'entityId': entityId});\r\n\r\n if (entityData) {\r\n let result = _.findWhere(entityData['records'], {'id': recordId});\r\n return !_.isEmpty(result);\r\n }\r\n return false;\r\n }\r\n\r\n private RemoveFromGroup(recordId: number, entityId: number, tableTypeId: number, group: string): void {\r\n var groupData = <any>Lockr.get(group);\r\n\r\n if (!groupData || !entityId || !recordId) {\r\n return;\r\n }\r\n\r\n var entityRecordUpdated = _.findWhere(groupData, {'entityId': entityId});\r\n\r\n if (!entityRecordUpdated) {\r\n return;\r\n }\r\n\r\n groupData = _.filter(groupData,\r\n entityRecord => (entityRecord['entityId'] !== entityId));\r\n\r\n entityRecordUpdated['records'] = _.filter(entityRecordUpdated['records'],\r\n recordData => (recordData['id'] !== recordId));\r\n\r\n if (!_.isEmpty(entityRecordUpdated['records'])) {\r\n groupData.push(entityRecordUpdated);\r\n }\r\n\r\n Lockr.set(group, groupData);\r\n }\r\n\r\n GetPathRunnerSettings(place: string): IPathRunnerSettings {\r\n const groupData = Lockr.get(GROUPS.PATH_RUNNER_SETTINGS) || {};\r\n\r\n return groupData[place];\r\n }\r\n\r\n SetPathRunnerSettings(settings: IPathRunnerSettings) {\r\n const groupData = Lockr.get(GROUPS.PATH_RUNNER_SETTINGS) || {};\r\n\r\n groupData[settings.Place] = settings;\r\n\r\n Lockr.set(GROUPS.PATH_RUNNER_SETTINGS, groupData);\r\n }\r\n\r\n GetBasket(basketEntityId: number, gridEntityId: number) {\r\n const groupData = <any>(Lockr.get(GROUPS.BASKET) || []);\r\n var basket = _.find(groupData, (item: any) => {\r\n return item.basketEntityId === basketEntityId && item.gridEntityId === gridEntityId;\r\n });\r\n if (basket) {\r\n return basket.recordId;\r\n }\r\n return null;\r\n }\r\n\r\n SaveBasket(basketEntityId: number, basketRecordId: number, gridEntityId: number) {\r\n const groupData = <any>(Lockr.get(GROUPS.BASKET) || []);\r\n var basket = _.find(groupData, (item: any) => {\r\n return item.basketEntityId === basketEntityId && item.gridEntityId === gridEntityId;\r\n });\r\n\r\n if (basket) {\r\n basket.recordId = basketRecordId;\r\n } else {\r\n groupData.push({basketEntityId: basketEntityId, gridEntityId: gridEntityId, recordId: basketRecordId});\r\n }\r\n Lockr.set(GROUPS.BASKET, groupData);\r\n }\r\n\r\n SetGridView(controlId: number, tableViewId: number) {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (!gridView) {\r\n gridView = {};\r\n }\r\n\r\n if (!gridView[controlId]) {\r\n gridView[controlId] = {};\r\n }\r\n\r\n gridView[controlId] = tableViewId;\r\n Lockr.set(GROUPS.GRID_VIEW, gridView);\r\n }\r\n\r\n GetGridView(controlId: number): number {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (gridView) {\r\n return gridView[controlId];\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n\r\n GetLinkEditorGridView(key: string): number {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (gridView) {\r\n return gridView[key];\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n SetLinkEditorGridView(key: string, tableViewId: number) {\r\n let gridView = Lockr.get(GROUPS.GRID_VIEW);\r\n if (!gridView) {\r\n gridView = {};\r\n }\r\n\r\n if (!gridView[key]) {\r\n gridView[key] = {};\r\n }\r\n\r\n gridView[key] = tableViewId;\r\n Lockr.set(GROUPS.GRID_VIEW, gridView);\r\n }\r\n\r\n SetKanbanBoardAccordionGroup(controlId: number, entityId: number, recordId: number, ariaExpanded: boolean) {\r\n let accordionGroups: [IKanbanBoardAccordionGroups] = Lockr.get(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS);\r\n\r\n if (!accordionGroups) {\r\n accordionGroups = [{\r\n controlId,\r\n entity: {\r\n id: entityId,\r\n records: [{\r\n id: recordId,\r\n expanded: ariaExpanded\r\n }]\r\n },\r\n }];\r\n }\r\n\r\n let accordionGroup = accordionGroups.find(group => group.controlId === controlId && group.entity.id == entityId);\r\n if (!accordionGroup) {\r\n accordionGroup = {controlId, entity: {id: entityId, records: [{id: recordId, expanded: ariaExpanded}]}}\r\n accordionGroups.push(accordionGroup);\r\n Lockr.set(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS, accordionGroups);\r\n return;\r\n }\r\n\r\n let accordionRecord = accordionGroup.entity.records.find(record => record.id === recordId);\r\n if (!accordionRecord) {\r\n accordionRecord = {id: recordId, expanded: ariaExpanded};\r\n accordionGroup.entity.records.push(accordionRecord);\r\n Lockr.set(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS, accordionGroups);\r\n return;\r\n }\r\n\r\n accordionRecord.expanded = ariaExpanded;\r\n Lockr.set(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS, accordionGroups);\r\n }\r\n\r\n GetKanbanBoardAccordionGroup(controlId: number, entityId: number, recordId: number, defaultValue: boolean): boolean {\r\n let accordionGroups: [IKanbanBoardAccordionGroups] = Lockr.get(GROUPS.KANBAN_BOARD_ACCORDION_GROUPS);\r\n\r\n if (!accordionGroups) {\r\n return defaultValue;\r\n }\r\n\r\n let accordionGroup = accordionGroups.find(group => group.controlId === controlId && group.entity.id == entityId);\r\n if (!accordionGroup) {\r\n return defaultValue;\r\n }\r\n\r\n let accordionRecord = accordionGroup.entity.records.find(record => record.id === recordId);\r\n if (!accordionRecord) {\r\n return defaultValue;\r\n } else {\r\n return accordionRecord.expanded;\r\n }\r\n }\r\n\r\n GetPlannerPageParams(controlId: number): IPlannerPageParams {\r\n let params = Lockr.get(GROUPS.PLANNER_PAGE);\r\n if (params && params[controlId]) {\r\n return params[controlId];\r\n }\r\n\r\n return {\r\n StartDate: null,\r\n ViewType: null,\r\n Period: null,\r\n ProjectManagerId: null,\r\n IsWeekPlannnig: null\r\n };\r\n }\r\n\r\n SetPlannerPageParams(controlId: number, pageParams: IPlannerPageParams) {\r\n let params = Lockr.get(GROUPS.PLANNER_PAGE);\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n if (!params[controlId]) {\r\n params[controlId] = {};\r\n }\r\n\r\n params[controlId] = pageParams;\r\n Lockr.set(GROUPS.PLANNER_PAGE, params);\r\n }\r\n\r\n GetPlannerLevelParams(controlId: number): IPlannerLevelParams {\r\n let params = Lockr.get(GROUPS.PLANNER_LEVEL);\r\n if (params && params[controlId]) {\r\n return params[controlId];\r\n }\r\n\r\n return {\r\n ExpandedBarIds: []\r\n };\r\n }\r\n\r\n SetPlannerLevelParams(controlId: number, levelParams: IPlannerLevelParams) {\r\n let params = Lockr.get(GROUPS.PLANNER_LEVEL);\r\n if (!params) {\r\n params = {};\r\n }\r\n\r\n if (!params[controlId]) {\r\n params[controlId] = {};\r\n }\r\n\r\n params[controlId] = levelParams;\r\n Lockr.set(GROUPS.PLANNER_LEVEL, params);\r\n }\r\n\r\n SetGridPriority(subjectEntityId: number, gridSubjectEntityId: number, priority: boolean) {\r\n let gridView = Lockr.get(GROUPS.GRID_PRIORITY);\r\n if (!gridView) {\r\n gridView = {};\r\n }\r\n\r\n if (!gridView[subjectEntityId]) {\r\n gridView[subjectEntityId] = {};\r\n }\r\n\r\n gridView[subjectEntityId][gridSubjectEntityId] = priority;\r\n Lockr.set(GROUPS.GRID_PRIORITY, gridView);\r\n }\r\n\r\n GetGridPriority(subjectEntityId: number, gridSubjectEntityId: number, defaultValue: boolean): boolean {\r\n const gridView = Lockr.get(GROUPS.GRID_PRIORITY);\r\n if (gridView) {\r\n if (gridView[subjectEntityId]) {\r\n return !!gridView[subjectEntityId][gridSubjectEntityId];\r\n }\r\n }\r\n\r\n return defaultValue;\r\n }\r\n\r\n SetSchedulerView(controlId: number, view: string) {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_VIEW) || {};\r\n schedulerView[controlId] = view;\r\n Lockr.set(GROUPS.SCHEDULER_VIEW, schedulerView);\r\n }\r\n\r\n GetSchedulerView(controlId: number): string {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_VIEW) || {};\r\n return schedulerView[controlId];\r\n }\r\n\r\n SetSchedulerSubjectToggle(controlId: number, value: boolean) {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_SUBJECT) || {};\r\n schedulerView[controlId] = value;\r\n Lockr.set(GROUPS.SCHEDULER_SUBJECT, schedulerView);\r\n }\r\n\r\n GetSchedulerSubjectToggle(controlId: number): boolean {\r\n let schedulerView = Lockr.get(GROUPS.SCHEDULER_SUBJECT) || {};\r\n return schedulerView[controlId];\r\n }\r\n\r\n SetSchedulerDate(controlId: number, value: string) {\r\n let schedulerDate = Lockr.get(GROUPS.SCHEDULER_DATE) || {};\r\n schedulerDate[controlId] = value;\r\n Lockr.set(GROUPS.SCHEDULER_DATE, schedulerDate);\r\n }\r\n\r\n GetSchedulerDate(controlId: number): string {\r\n let schedulerDate = Lockr.get(GROUPS.SCHEDULER_DATE) || {};\r\n return schedulerDate[controlId];\r\n }\r\n\r\n SetAdvancedLifestatus(value: boolean) {\r\n Lockr.set(GROUPS.LIFE_STATUS_ADVANCED_MODE, value);\r\n }\r\n\r\n GetAdvancedLifestatus(): boolean {\r\n return Lockr.get(GROUPS.LIFE_STATUS_ADVANCED_MODE) || false;\r\n }\r\n\r\n SetAgendaDate(controlId: number, value: string) {\r\n let agendaDate = Lockr.get(GROUPS.AGENDA_DATE) || {};\r\n agendaDate[controlId] = value;\r\n Lockr.set(GROUPS.AGENDA_DATE, agendaDate);\r\n }\r\n\r\n GetAgendaDate(controlId: number): string {\r\n let agendaDate = Lockr.get(GROUPS.AGENDA_DATE) || {};\r\n return agendaDate[controlId];\r\n }\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\n\r\nexport class UserVarsStore {\r\n\tstatic UpdateUserVars(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/UserVariablesApi/UpdateUserVars\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: model\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n} \r\n\r\n","import { deserialize } from \"libs/cerialize\";\r\n\r\nexport class MessageDto {\r\n @deserialize\r\n Role: string;\r\n\r\n @deserialize\r\n Content: string;\r\n}\r\n","import { MessageDto } from './MessageDto';\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class PromptDto {\r\n constructor(){\r\n this.Messages = []; \r\n }\r\n @deserializeAs(MessageDto)\r\n Messages: Array<MessageDto>;\r\n}\r\n","import {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { List } from 'underscore';\r\nimport { Deserialize, GenericDeserialize } from 'libs/cerialize';\r\nimport { PromptDto } from './Models/PromptDto';\r\nimport { MessageDto } from './Models/MessageDto';\r\n\r\nexport interface IAssistantMessageDto {\r\n\tDatabase?: any;\r\n\tChatHistory: Array<MessageDto>;\r\n}\r\n\r\nexport interface IAssistantMessage2Dto {\r\n\tMessage?: string;\r\n\tthreadId: string;\r\n}\r\n\r\nexport interface IGenerateAIDto {\r\n\tDBStructure: string;\r\n}\r\n\r\nexport class AssistantApi {\r\n\r\n\r\n\tstatic CreateThread(): P.Promise<string> {\r\n\t\tvar deferredResult = P.defer<string>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/AssistantApi/CreateThread',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic AssistantMessage2(params: IAssistantMessage2Dto): P.Promise<PromptDto> {\r\n\t\tvar deferredResult = P.defer<PromptDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/AssistantApi/SendMessage',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, PromptDto));\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic AssistantMessage(params: IAssistantMessageDto): P.Promise<PromptDto> {\r\n\t\tvar deferredResult = P.defer<PromptDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DataBaseDesignerApi/AssistantMessage',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(GenericDeserialize(data, PromptDto));\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GenerateStructure(params: IAssistantMessageDto): P.Promise<PromptDto> {\r\n\t\tvar deferredResult = P.defer<PromptDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/DataBaseDesignerApi/GenerateStructure',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\t\t\t\t\r\n\t\t\t\tdeferredResult.resolve(data);\r\n\t\t\t}).fail(err=>{\t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(err.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <div data-bind=\\\"html: $data._chatHistory\\\"></div> <div style=\\\"margin-top:350px\\\"> <textarea data-bind=\\\"value: $data._userInput\\\" rows=\\\"6\\\" cols=\\\"75\\\"></textarea> </div> <div class=\\\"text-center bottom\\\"> <a data-bind=\\\"click: $data.SendMessage.bind($data), text: _labels.SEND\\\" href=\\\"#\\\" class=\\\"btn btn-success\\\"></a> <!-- ko if: $data._isShowApplyButton --> <a data-bind=\\\"click: $data.CreateTables.bind($data), text: _labels.APPLY\\\" href=\\\"#\\\" class=\\\"btn btn-primary\\\"></a> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import { Modal } from \"../../../Core/Common/Modal\";\r\nimport Template from \"DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate.html\";\r\nimport { DatabaseModel } from \"../../../Core/CyberConfigManager/Models/DatabaseModel\";\r\nimport {Event} from 'Core/Common/Event';\r\n\r\nko.templates[\"DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate\"] = Template;\r\n\r\nexport class GeneratedTables extends Event {\r\n private _modal: Modal;\r\n private _database: DatabaseModel;\r\n constructor(database: DatabaseModel){\r\n super();\r\n this._database = database;\r\n }\r\n \r\n Show(){\r\n\r\n this._modal = new Modal({\r\n width: 450,\r\n minHeight: 800,\r\n minWidth: 300,\r\n maxHeight: 300\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper); \r\n this._modal.Show();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'DatabaseDesigner/Components/Assistant/GeneratedTablesTemplate';\r\n }\r\n\r\n OkBtnClick(){\r\n this._modal.Close();\r\n this.Trigger('SAVE')\r\n }\r\n}","// Module\nvar code = \"<div class=\\\"box-shadow-wrapper\\\"> <!-- ko foreach: $data._database.Tables.Items --> <form> <h4> <b data-bind=\\\"html: $data.Name\\\" class=\\\"new-lookup-name-text\\\"></b> </h4> <div class=\\\"table table-bordered\\\"> <div class=\\\"new-table-header\\\"> <div class=\\\"new-table-row\\\"> <div class=\\\"new-table-column\\\">Name</div> <div class=\\\"new-table-column\\\">Type</div> <div class=\\\"new-table-column\\\"></div> </div> </div> <div class=\\\"new-table-body\\\"> <!-- ko foreach: $data.Fields.Items --> <div class=\\\"new-table-row\\\"> <div data-bind=\\\"html: $data.Name\\\" class=\\\"new-table-column new-table-name-column\\\"></div> <div data-bind=\\\"html: $data.TypeName\\\" class=\\\"new-table-column\\\"></div> <div class=\\\"new-table-column\\\"></div> </div> <!-- /ko --> </div> </div> </form> <!-- /ko --> <!-- ko foreach: $data._database.LinkTables.Items --> <form> <h4> <b data-bind=\\\"html: $data.Name\\\" class=\\\"new-lookup-name-text\\\"></b> </h4> <div class=\\\"table table-bordered\\\"> <div class=\\\"new-table-header\\\"> <div class=\\\"new-table-row\\\"> <div class=\\\"new-table-column\\\">Name</div> <div class=\\\"new-table-column\\\">Type</div> <div class=\\\"new-table-column\\\"></div> </div> </div> <div class=\\\"new-table-body\\\"> <!-- ko foreach: $data.Fields.Items --> <div class=\\\"new-table-row\\\"> <div data-bind=\\\"html: $data.Name\\\" class=\\\"new-table-column new-table-name-column\\\"></div> <div data-bind=\\\"html: $data.TypeName\\\" class=\\\"new-table-column\\\"></div> <div class=\\\"new-table-column\\\"></div> </div> <!-- /ko --> </div> </div> </form> <!-- /ko --> <input data-bind=\\\"click: $data.OkBtnClick.bind($data)\\\" type=\\\"button\\\" class=\\\"btn green\\\" value=\\\"Ok\\\"> </div>\";\n// Exports\nexport default code;","import { AITableDefinition } from \"./AITableDefinition\";\r\n\r\nexport class AIDBStructure{\r\n constructor(){\r\n this.Tables = [];\r\n }\r\n Tables: Array<AITableDefinition>;\r\n}","import { AIFieldDefinition } from \"./AIFieldDefinition\";\r\n\r\nexport class AITableDefinition{\r\n constructor(){\r\n this.Fields = [];\r\n }\r\n Name: string;\r\n Type: string;\r\n\r\n Fields: Array<AIFieldDefinition>;\r\n}","export class AIFieldDefinition{\r\n Name: string;\r\n Type: string;\r\n}","import { ColorPicker } from './../../../Core/GeneralProperties/Managers/ColorPicker/ColorPicker';\r\nimport { messages, Notifier } from './../../../Core/Common/Notifier';\r\nimport { BlockUI } from \"../../../Core/Common/BlockUi\";\r\nimport { Modal } from \"../../../Core/Common/Modal\";\r\nimport { AssistantApi } from \"./AssistantApi\";\r\n\r\nimport Template from \"DatabaseDesigner/Components/Assistant/AssistantTemplate.html\";\r\nimport { MessageDto } from \"./Models/MessageDto\";\r\nimport { DatabaseModel } from '../../Models/DatabaseDesignerModel';\r\nimport { GeneratedTables } from './GeneratedTables';\r\nimport {Event} from 'Core/Common/Event';\r\nimport { AIDBStructure } from './Models/AIDBStructure';\r\nimport { AITableDefinition } from './Models/AITableDefinition';\r\nimport { AIFieldDefinition } from './Models/AIFieldDefinition';\r\nimport { SortGroups, TABLE_TYPES } from 'Core/Constant';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\n\r\nko.templates[\"DatabaseDesigner/Components/Assistant/AssistantTemplate\"] = Template;\r\n\r\nexport enum AssistantModes{\r\n Database,\r\n Help\r\n}\r\n\r\nexport class Assistant extends Event {\r\n private _modal: Modal;\r\n private _messages: KnockoutObservableArray<MessageDto>;\r\n private _userInput: KnockoutObservable<string>;\r\n private _chatHistory: KnockoutComputed<string>;\r\n private _database: any;\r\n\r\n private _labels = LABELS;\r\n private _mode: AssistantModes;\r\n private _threadId: string;\r\n private _isShowApplyButton: boolean;\r\n private _welcomeText = `Hello, and welcome to Spheeres Assistant – your dedicated helper for all things Spheeres! I’m here to provide quick answers, guidance, and support to help you make the most of your experience with Spheeres.\r\n If you have questions or need assistance, just reach out – I'm here to help!\r\n Let’s make Spheeres work for you!`\r\n\r\n constructor({database, mode}: { database?: any, mode: AssistantModes }){\r\n super();\r\n this._mode = mode;\r\n this._database = database;\r\n this._isShowApplyButton = this._mode === AssistantModes.Database;\r\n this._userInput = ko.observable('');\r\n this._messages = ko.observableArray([]);\r\n \r\n this._chatHistory = ko.computed(()=>{\r\n let result = '';\r\n this._messages().forEach((message)=>{\r\n let msg = message.Content.replace(/\\n/g, '<br>') + '<br>';\r\n if(message.Role.toLowerCase() == 'user'){\r\n msg = '<b>'+ '-' + msg+'</b>';\r\n }\r\n result += msg;\r\n });\r\n return result;\r\n }); \r\n }\r\n\r\n async LoadData(){\r\n BlockUI.Block();\r\n \r\n if(this._mode === AssistantModes.Database){\r\n this.SerializeDbStructure();\r\n let prompt = await AssistantApi\r\n .AssistantMessage({ ChatHistory: [], Database: this.SerializeDbStructure() })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message)); \r\n this._messages(prompt.Messages); \r\n }\r\n\r\n if(this._mode === AssistantModes.Help){\r\n let welcomeMessage = new MessageDto();\r\n welcomeMessage.Content = this._welcomeText;\r\n welcomeMessage.Role = 'assistant'; \r\n this._messages([welcomeMessage]);\r\n this._threadId = await AssistantApi\r\n .CreateThread()\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message)); \r\n }\r\n\r\n }\r\n\r\n SerializeDbStructure(): AIDBStructure{\r\n let dbStructure = new AIDBStructure();\r\n let tables = [...this._database.Tables, ...this._database.LinkTables];\r\n\r\n _.each(tables, (table: any)=>{\r\n if(table.Name.startsWith('SYS_')){\r\n return;\r\n }\r\n \r\n let aiTable = this.BuildTable(table);\r\n aiTable.Type = this._database.Tables.indexOf(table) >= 0 ? TABLE_TYPES.Entity : TABLE_TYPES.Link;\r\n\r\n dbStructure.Tables.push(aiTable);\r\n })\r\n\r\n return dbStructure;\r\n }\r\n\r\n BuildTable(table){\r\n let aiTable = new AITableDefinition();\r\n aiTable.Name = table.Name;\r\n\r\n _.each(table.Fields, (field: any)=>{ \r\n if(!SortGroups.InCustom(field.Sort)){\r\n return;\r\n }\r\n let aiField = new AIFieldDefinition();\r\n aiField.Name = field.Name;\r\n aiField.Type = field.TypeName;\r\n aiTable.Fields.push(aiField);\r\n });\r\n return aiTable;\r\n }\r\n\r\n Show(){\r\n\r\n this._modal = new Modal({\r\n width: 450,\r\n minHeight: 600,\r\n minWidth: 600,\r\n maxHeight: 300\r\n }, false);\r\n\r\n ko.cleanNode(this._modal.Wrapper);\r\n ko.applyBindings(this, this._modal.Wrapper); \r\n this._modal.Show();\r\n this.LoadData();\r\n }\r\n\r\n GetTemplateName(){\r\n return 'DatabaseDesigner/Components/Assistant/AssistantTemplate';\r\n }\r\n\r\n async SendMessage(){\r\n BlockUI.Block();\r\n let newMessage = new MessageDto();\r\n newMessage.Content = this._userInput();\r\n newMessage.Role = 'user';\r\n let messages = [...this._messages(), newMessage]\r\n if(this._mode === AssistantModes.Database){\r\n let prompt = await AssistantApi.AssistantMessage({ ChatHistory: messages, Database: this.SerializeDbStructure() })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message));\r\n \r\n this._messages(prompt.Messages);\r\n this._userInput('');\r\n }\r\n\r\n if(this._mode === AssistantModes.Help){\r\n let prompt = await AssistantApi.AssistantMessage2({ Message: this._userInput(), threadId: this._threadId })\r\n .always(()=>{\r\n BlockUI.Unblock();\r\n }).fail((err)=>Notifier.Failed(err.message));\r\n \r\n this._messages(prompt.Messages);\r\n this._userInput('');\r\n }\r\n\r\n BlockUI.Unblock();\r\n }\r\n\r\n CreateTables(){\r\n BlockUI.Block();\r\n AssistantApi.GenerateStructure({ ChatHistory: this._messages(), Database: this.SerializeDbStructure() })\r\n .always(()=>BlockUI.Unblock())\r\n .fail((err)=>Notifier.Failed(err.message))\r\n .then((data)=>{\r\n this.ShowTablesModal(data);\r\n });\r\n }\r\n\r\n ShowTablesModal(json){\r\n let database = new DatabaseModel();\r\n database.FromJSON(json);\r\n\r\n let generatedTables = new GeneratedTables(database);\r\n generatedTables.On('SAVE', this, ()=>{\r\n this.Trigger('SAVE', database);\r\n this._modal.Close();\r\n });\r\n generatedTables.Show();\r\n }\r\n\r\n FormatMessage(message: MessageDto){\r\n return message.Content.replace(/\\n/g, '<br>');\r\n }\r\n}","import { Guid } from \"Core/Common/Guid\";\r\n\r\nexport class BaseModelClass {\r\n\tprotected _guid: string;\r\n\tprotected _isModified: boolean\r\n\tprotected _lifeStatusName;\r\n\r\n\tconstructor() {\r\n\t\tthis._guid = Guid.NewGuid();\r\n\t\tthis._isModified = false;\r\n\t}\r\n\r\n\tpublic get Guid() : string {\r\n\t\treturn this._guid;\r\n\t}\r\n\tpublic set Guid(v : string) {\r\n\t\tthis._guid = v;\r\n\t}\r\n\tpublic get IsModified() : boolean {\r\n\t\treturn this._isModified;\r\n\t}\r\n\tpublic set IsModified(v : boolean) {\r\n\t\tthis._isModified = v;\r\n\t}\r\n\r\n\tpublic get LifeStatusName() : string {\r\n\t\treturn this._lifeStatusName;\r\n\t}\r\n\tpublic set LifeStatusName(v : string) {\r\n\t\tthis._lifeStatusName = v;\r\n\t}\r\n}\r\n\r\nexport function BaseModel() {\r\n\tthis._guid = Guid.NewGuid();\r\n\tthis._isModified = false;\r\n\tthis._lifeStatusName = 4;\r\n};\r\n\r\nBaseModel.prototype.RegenerateGuid = function () {\r\n\tthis._guid = Guid.NewGuid();\r\n};\r\n\r\nObject.defineProperty(BaseModel.prototype, 'Guid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._guid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._guid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(BaseModel.prototype, 'IsModified', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._isModified;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._isModified = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(BaseModel.prototype, 'LifeStatusName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._lifeStatusName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._lifeStatusName = val;\r\n\t}\r\n});\r\n","import { Guid } from \"Core/Common/Guid\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function ClusterSettingsModel() {\r\n this._id = null;\r\n this._guid = Guid.NewGuid();\r\n\r\n this._leftTypeId = null;\r\n this._leftTypeGuid = null;\r\n\r\n this._rightTypeId = null;\r\n this._rightTypeGuid = null;\r\n\r\n this._leftStatusId = null;\r\n this._leftStatusGuid = null;\r\n\r\n this._rightStatusId = null;\r\n this._rightStatusGuid = null;\r\n\r\n this._relationTypeId = null;\r\n this._relationTypeGuid = null;\r\n\r\n this._clusterMode = null;\r\n};\r\n\r\nClusterSettingsModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._guid = data.Guid || this._guid;\r\n\r\n this._leftTypeId = data.LeftTypeId;\r\n this._leftTypeGuid = data.LeftTypeGuid;\r\n\r\n this._rightTypeId = data.RightTypeId;\r\n this._rightTypeGuid = data.RightTypeGuid;\r\n\r\n this._leftStatusId = data.LeftStatusId;\r\n this._leftStatusGuid = data.LeftStatusGuid;\r\n\r\n this._rightStatusId = data.RightStatusId;\r\n this._rightStatusGuid = data.RightStatusGuid;\r\n\r\n this._relationTypeId = data.RelationTypeId;\r\n this._relationTypeGuid = data.RelationTypeGuid;\r\n\r\n this._relationTypeValueId = data.RelationTypeValueId;\r\n this._relationTypeValueGuid = data.RelationTypeValueGuid;\r\n\r\n this._clusterMode = data.ClusterMode;\r\n};\r\n\r\nClusterSettingsModel.prototype.FromJSONArray = function (data) {\r\n var clusterSettingsList = new CollectionModel({ model: ClusterSettingsModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var clusterSettings = new ClusterSettingsModel();\r\n\r\n clusterSettings.FromJSON(data[index]);\r\n clusterSettingsList.Add(clusterSettings);\r\n }\r\n\r\n return clusterSettingsList;\r\n};\r\n\r\nClusterSettingsModel.prototype.toJSON = function () {\r\n return {\r\n Id: this.Id,\r\n Guid: this.Guid,\r\n LeftTypeId: this.LeftTypeId,\r\n LeftTypeGuid: this.LeftTypeGuid,\r\n LeftStatusId: this.LeftStatusId,\r\n LeftStatusGuid: this.LeftStatusGuid,\r\n RightTypeId: this.RightTypeId,\r\n RightTypeGuid: this.RightTypeGuid,\r\n RightStatusId: this.RightStatusId,\r\n RightStatusGuid: this.RightStatusGuid,\r\n RelationTypeId: this.RelationTypeId,\r\n RelationTypeGuid: this.RelationTypeGuid,\r\n RelationTypeValueId: this.RelationTypeValueId,\r\n RelationTypeValueGuid: this.RelationTypeValueGuid,\r\n ClusterMode: this.ClusterMode,\r\n };\r\n};\r\n\r\nClusterSettingsModel.prototype.Reverse = function () {\r\n var newLeftTypeId = this._rightTypeId;\r\n var newRightTypeId = this._leftTypeId;\r\n var newLeftTypeGuid = this._rightTypeGuid;\r\n var newRightTypeGuid = this._leftTypeGuid;\r\n var newLeftStatusId = this._rightStatusId;\r\n var newRightStatusId = this._leftStatusId;\r\n var newLeftStatusGuid = this._rightStatusGuid;\r\n var newRightStatusGuid = this._leftStatusGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n this._leftStatusId = newLeftStatusId;\r\n this._rightStatusId = newRightStatusId;\r\n this._leftStatusGuid = newLeftStatusGuid;\r\n this._rightStatusGuid = newRightStatusGuid;\r\n};\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (value) {\r\n this._leftTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (value) {\r\n this._leftTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusId;\r\n },\r\n set: function (value) {\r\n this._leftStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'LeftStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusGuid;\r\n },\r\n set: function (value) {\r\n this._leftStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusId;\r\n },\r\n set: function (value) {\r\n this._rightStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RightStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusGuid;\r\n },\r\n set: function (value) {\r\n this._rightStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeId;\r\n },\r\n set: function (value) {\r\n this._relationTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeGuid;\r\n },\r\n set: function (value) {\r\n this._relationTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeValueId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeValueId;\r\n },\r\n set: function (value) {\r\n this._relationTypeValueId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'RelationTypeValueGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._relationTypeValueGuid;\r\n },\r\n set: function (value) {\r\n this._relationTypeValueGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(ClusterSettingsModel.prototype, 'ClusterMode', {\r\n enumerable: true,\r\n get: function () {\r\n return this._clusterMode;\r\n },\r\n set: function (value) {\r\n this._clusterMode = value;\r\n }\r\n});","import * as _ from \"underscore\";\r\n\r\nexport class CollectionModel {\r\n private _items: Array<any>;\r\n private _type: any;\r\n\r\n constructor(options: any) {\r\n this._items = [];\r\n this._type = options.model;\r\n }\r\n\r\n Clone() {\r\n var result = new CollectionModel({ model: this._type });\r\n _.each(this._items, (item: any) => {\r\n result.Add(item.Clone());\r\n });\r\n return result;\r\n }\r\n\r\n toJSON(onlyModified: boolean) {\r\n var result = [];\r\n _.each(this._items, (item: any) => {\r\n var jsonData = item.toJSON(onlyModified);\r\n if (jsonData) {\r\n result.push(jsonData);\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n GetItemBy(property, val) {\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n SetItemBy(property, val, object) {\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n this.Items[index] = object;\r\n }\r\n }\r\n }\r\n\r\n SetItemsToDeleteBy(property, val) {\r\n var items = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n if (item._id !== 0) {\r\n item._isModified = true;\r\n item._lifeStatusName = 'Delete';\r\n items.push(item);\r\n }\r\n }\r\n else {\r\n items.push(item);\r\n }\r\n }\r\n this.Items = items;\r\n }\r\n\r\n SetItemsToDelete() {\r\n this.DeleteItemsBy('Id', 0);\r\n for (var index = 0; index < this.Items.length; index++) {\r\n this.Items[index]._isModified = true;\r\n this.Items[index]._lifeStatusName = 'Delete';\r\n }\r\n }\r\n\r\n DeleteItemBy(property, val) {\r\n var items = this.Items;\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n items.splice(index, 1);\r\n }\r\n }\r\n this.Items = items;\r\n }\r\n\r\n DeleteItemsBy(property, val) {\r\n var item = this.GetItemBy(property, val);\r\n while (item) {\r\n this.DeleteItemBy(property, val);\r\n item = this.GetItemBy(property, val);\r\n }\r\n }\r\n\r\n GetItemsBy(property, val) {\r\n var result = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (item[property] === val) {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n GetItemsWhereIn(property, values) {\r\n var result = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n if (_.contains(values, item[property])) {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n GetItemByProperties(propertyValuePairs) {\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n\r\n var allPropertiesMatched = true;\r\n for (\r\n var pairIndex = 0;\r\n pairIndex < propertyValuePairs.length;\r\n pairIndex++\r\n ) {\r\n var propertyValuePair = propertyValuePairs[pairIndex];\r\n\r\n if (item[propertyValuePair.Property] !== propertyValuePair.Value) {\r\n allPropertiesMatched = false;\r\n break;\r\n }\r\n }\r\n\r\n if (allPropertiesMatched) {\r\n return item;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n GetItemsByProperties(propertyValuePairs) {\r\n var result = [];\r\n for (var index = 0; index < this.Items.length; index++) {\r\n var item = this.Items[index];\r\n\r\n var allPropertiesMatched = true;\r\n for (\r\n var pairIndex = 0;\r\n pairIndex < propertyValuePairs.length;\r\n pairIndex++\r\n ) {\r\n var propertyValuePair = propertyValuePairs[pairIndex];\r\n\r\n if (item[propertyValuePair.Property] !== propertyValuePair.Value) {\r\n allPropertiesMatched = false;\r\n break;\r\n }\r\n }\r\n\r\n if (allPropertiesMatched) {\r\n result.push(item);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n OrderBy(property) {\r\n this._items = _.sortBy(this._items, function (item) {\r\n return item[property];\r\n });\r\n }\r\n\r\n Add(item) {\r\n if (item instanceof this._type) {\r\n item._index = this._items.length;\r\n this._items.push(item);\r\n } else {\r\n throw new Error(\"Invalid item type \");\r\n }\r\n }\r\n\r\n Count() {\r\n return this._items.reduce(function (prev, curr) {\r\n if (\r\n !_.find(prev, (el: any) => {\r\n return el._id === curr._id;\r\n })\r\n ) {\r\n prev.push(curr);\r\n }\r\n return prev;\r\n }, []).length;\r\n }\r\n\r\n ForEach(callback) {\r\n this._items.forEach(callback);\r\n }\r\n\r\n Reset() {\r\n this._items = [];\r\n }\r\n\r\n get Items(): Array<any> {\r\n return this._items;\r\n }\r\n\r\n set Items(val: Array<any>) {\r\n this._items = val;\r\n }\r\n}\r\n","import { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { FieldModel } from \"DatabaseDesigner/Models/FieldModel\";\r\nimport { LanguageModel } from \"DatabaseDesigner/Models/LanguageModel\";\r\nimport { LinkTableModel } from \"DatabaseDesigner/Models/LinkTableModel\";\r\nimport { TableModel } from \"DatabaseDesigner/Models/TableModel\";\r\nimport { TableBaseModel } from \"DatabaseDesigner/Models/TableBaseModel\";\r\nimport * as _ from 'underscore';\r\nimport { LifeStatusEnum } from \"common/life-status-enum\";\r\n\r\nexport function DatabaseModel() {\r\n this._DataBaseId = 0;\r\n this._tables = new CollectionModel({ model: TableModel });\r\n this._sortPosition = [];\r\n this._maxSort = 0;\r\n this._linkTables = new CollectionModel({ model: LinkTableModel });\r\n this._deletedLinkTables = new CollectionModel({ model: LinkTableModel });\r\n this._deletedSubTables = new CollectionModel({model: TableBaseModel});\r\n this._languages = new CollectionModel({ model: LanguageModel });\r\n this._isUpdateDatabaseRequired = false;\r\n BaseModel.apply(this);\r\n }\r\n ;\r\n DatabaseModel.prototype = Object.create(BaseModel.prototype);\r\n DatabaseModel.prototype.constructor = DatabaseModel;\r\n DatabaseModel.prototype.GetAllFields = function () {\r\n var fieldsCollection = new CollectionModel({ model: FieldModel });\r\n var fields = [];\r\n _.each(this.Tables.Items, function (table: any) {\r\n _.each(table.Fields.Items, function (field) {\r\n fields.push(field);\r\n });\r\n });\r\n fieldsCollection.Items = fields;\r\n return fieldsCollection;\r\n };\r\n DatabaseModel.prototype.GetTable = function (id, guid) {\r\n for (let entityTable of this.Tables.Items) {\r\n if (entityTable.Id === id || entityTable.Guid === guid) {\r\n return entityTable;\r\n }\r\n for (let subTable of entityTable.SubTables.Items) {\r\n if (subTable.Id === id || subTable.Guid === guid) {\r\n return subTable;\r\n }\r\n }\r\n }\r\n for (let linkTable of this.LinkTables.Items) {\r\n if (linkTable.Id === id || linkTable.Guid === guid) {\r\n return linkTable;\r\n }\r\n }\r\n for (let lookupTable of window['DatabaseDesigner'].Shared.lookupTables.Items) {\r\n if (lookupTable.Id === id || lookupTable.Guid === guid) {\r\n return lookupTable;\r\n }\r\n }\r\n return null;\r\n };\r\n DatabaseModel.prototype.toJSON = function (onlyModified) {\r\n var data: any = {};\r\n data.DatabaseId = this._DataBaseId;\r\n data.Tables = this._tables.toJSON(onlyModified);\r\n data.LinkTables = this._linkTables.toJSON(onlyModified);\r\n data.Languages = this._languages.toJSON(onlyModified);\r\n data.LookupTables = window['DatabaseDesigner'].Shared.lookupTables.toJSON(onlyModified);\r\n data.Roles = this.Roles;\r\n data.ExampleStatuses = window['DatabaseDesigner'].Shared.ExampleStatuses;\r\n return data;\r\n };\r\n DatabaseModel.prototype.FromJSON = function (data) {\r\n var self = this;\r\n this._DataBaseId = data.DatabaseId;\r\n \r\n _.each(data.Tables, (table) => {\r\n var model = new TableModel();\r\n model.FromJSON(table);\r\n self._tables.Add(model);\r\n });\r\n \r\n self._isUpdateDatabaseRequired = data.IsUpdateDatabaseRequired;\r\n self._tables.Items = _.sortBy(self._tables.Items, function (item: any) {\r\n return item.Sort;\r\n });\r\n self._tables.Items = _.groupBy(self._tables.Items, function (item: any) {\r\n return item.SubTypeId;\r\n });\r\n self._tables.Items = _.map(self._tables.Items, function (val, key) {\r\n return val;\r\n });\r\n self._tables.Items = _.flatten(self._tables.Items);\r\n _.each(self._tables.Items, function (item: any, index) {\r\n item._position = index;\r\n });\r\n this._maxSort = _.max(this._tables.Items, function (item) {\r\n return item.Sort;\r\n });\r\n this._maxSort = this._maxSort.Sort;\r\n _.each(data.LinkTables, function (table) {\r\n var model = new LinkTableModel();\r\n model.FromJSON(table);\r\n self.LinkTables.Add(model);\r\n });\r\n _.each(this.LinkTables.Items, function (table: any) {\r\n var leftTable = self.Tables.GetItemBy('Id', table.K1TableId);\r\n var rightTable = self.Tables.GetItemBy('Id', table.K2TableId);\r\n if (leftTable && rightTable) {\r\n table.K1TableGuid = leftTable.Guid;\r\n table.K2TableGuid = rightTable.Guid;\r\n }\r\n ;\r\n });\r\n this.DeletedLinkTables = LinkTableModel.prototype.FromJSONArray(data.DeletedLinkTables);\r\n this.DeletedSubTables = TableBaseModel.prototype.FromJSONArray(data.DeletedSubTables);\r\n //Fill matching guids\r\n var allFields = this.GetAllFields();\r\n _.each(this.Tables.Items, function (table: any) {\r\n var matchingFields = table.Fields.Items.filter(function (field) {\r\n return field.Matching;\r\n });\r\n _.each(matchingFields, function (field: any) {\r\n var currentEntityMatching = field.Matching.CurrentEntity;\r\n if (currentEntityMatching) {\r\n currentEntityMatching.MatchSubjectGuid = table.Guid;\r\n currentEntityMatching.MatchFieldsGuid = [field.Guid];\r\n }\r\n var linkedEntityMatching = field.Matching.LinkedEntity;\r\n if (linkedEntityMatching) {\r\n linkedEntityMatching.MatchSubjectGuid = self.Tables.GetItemBy('Id', linkedEntityMatching.MatchSubjectId).Guid;\r\n linkedEntityMatching.MatchFieldsGuid = allFields.GetItemsWhereIn('Id', linkedEntityMatching.MatchFieldsId).map(function (matchingField) {\r\n return matchingField.Guid;\r\n });\r\n }\r\n });\r\n });\r\n _.each(data.Languages, function (table) {\r\n var model = new LanguageModel();\r\n model.FromJSON(table);\r\n self._languages.Add(model);\r\n });\r\n this._matchingModes = data.MatchingModes;\r\n };\r\n DatabaseModel.prototype.GetLinkTableByTableGuids = function (k1Guid, k2Guid) {\r\n return _.find(this.LinkTables.Items, function (item: any) {\r\n if (((item.K1TableGuid === k1Guid && item.K2TableGuid === k2Guid) || (item.K2TableGuid === k1Guid && item.K1TableGuid === k2Guid)) && item.LifeStatusName !== LifeStatusEnum.Delete) {\r\n return item;\r\n }\r\n });\r\n };\r\n DatabaseModel.prototype.GetSubTable = function (id, guid) {\r\n var subTables = _.flatten(this._tables.Items.map(function (table) {\r\n return table.SubTables.Items;\r\n }));\r\n return _.find(subTables, function (subTable) {\r\n return subTable.Id === id || subTable.Guid === guid;\r\n });\r\n };\r\n Object.defineProperty(DatabaseModel.prototype, 'Tables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tables;\r\n },\r\n set: function (val) {\r\n this._tables = val;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'IsUpdateDatabaseRequired', {\r\n get: function () {\r\n return this._isUpdateDatabaseRequired;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'LinkTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkTables;\r\n },\r\n set: function (val) {\r\n this._linkTables = val;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'DeletedLinkTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._deletedLinkTables;\r\n },\r\n set: function (val) {\r\n this._deletedLinkTables = val;\r\n }\r\n });\r\n Object.defineProperty(TableModel.prototype, 'DeletedSubTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._deletedSubTables;\r\n },\r\n set: function (val) {\r\n this._deletedSubTables = val;\r\n }\r\n });\r\n Object.defineProperty(DatabaseModel.prototype, 'Languages', {\r\n enumerable: true,\r\n get: function () {\r\n return this._languages;\r\n },\r\n set: function (val) {\r\n this._languages = val;\r\n }\r\n });","import clone from 'clone';\r\n\r\nimport { ClusterSettingsModel } from \"DatabaseDesigner/Models/ClusterSettingsModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models//CollectionModel\";\r\nimport { LinkEditorVisibilityModel } from \"DatabaseDesigner/Models/LinkEditorVisibilityModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport * as moment from 'moment';\r\nimport { LifeStatusEnum } from \"common/life-status-enum\";\r\nimport { DATE_FORMATS } from \"Core/Constants/DateTimeFormats\"\r\nimport { FormatConverter } from \"FormatEditor/FormatConverter\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models//BaseModel\";\r\nimport { TableFieldModel } from \"DatabaseDesigner/Models/TableFielModel\";\r\nimport { Guid } from \"../../Core/Common/Guid\";\r\n\r\nexport function FieldModel() {\r\n this._id = 0;\r\n this._name = '';\r\n this._typeId = 0;\r\n this._typeName = null;\r\n this._isPrimaryKey = false;\r\n this._isSystem = false;\r\n this._isRequired = false;\r\n this._isReadOnly = false;\r\n this._isIndexed = false;\r\n this._isVirtual = false;\r\n this._isGlobal = false;\r\n this._isTranslate = false;\r\n this._isModified = false;\r\n this._isHidden = false;\r\n this._isOptional = false;\r\n this._isClustered = false;\r\n this._isUnique = false;\r\n this._flags = 0;\r\n this._calculatedExpression = null;\r\n this._memo = '';\r\n this._size = 0;\r\n this._formatId = 0;\r\n this._guid = Guid.NewGuid();\r\n this._tableFiels = new CollectionModel({ model: TableFieldModel });\r\n this._linkEditorVisibilitySettings = new CollectionModel({ model: LinkEditorVisibilityModel });\r\n this._defaultValue = '';\r\n this._hasDefaultValue = true;\r\n this._sort = 0;\r\n this._icon = '';\r\n this._iconType = '';\r\n this._iconId = null;\r\n this._iconImage = null;\r\n this._lifeStatusName = null;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n this._translationsMemo = new CollectionModel({ model: TranslationModel });\r\n this._oldName = '';\r\n this._oldLifeStatusName = '';\r\n this._propertyFieldId = null;\r\n this._propertyFieldGuid = null;\r\n this._propertyModeId = null;\r\n this._matching = null;\r\n this._clusterSettings = new CollectionModel({ model: ClusterSettingsModel });\r\n this._allowCustomValue = false;\r\n this._allowCreatingRecords = false;\r\n this._filterSubTable = false;\r\n this._filterSubTableFieldId = null;\r\n this._filterSubTableFieldGuid = null;\r\n this._filterSubTableKseq = false;\r\n this._reference = null;\r\n this._referenceGuid = null;\r\n this._isEditEnabled = false;\r\n this._hyperlinkEntity = 0;\r\n this._hyperlinkEntityGuid = '';\r\n this._hyperlinkPkey = 0;\r\n this._hyperlinkPkeyGuid = '';\r\n this._filterByField= 0;\r\n this._filterByFieldGuid = '';\r\n this.SortDescription = false;\r\n this.SequenceValue = null;\r\n\r\n BaseModel.apply(this);\r\n};\r\n\r\nFieldModel.prototype = Object.create(BaseModel.prototype);\r\nFieldModel.prototype.constructor = FieldModel;\r\n\r\nFieldModel.prototype.toJSON = function (onlyModified) {\r\n var isFieldRestored = this._oldLifeStatusName === LifeStatusEnum.Delete && this.LifeStatusName === LifeStatusEnum.Enabled;\r\n var name = this.Id == 0 || isFieldRestored ? this.Name : this._oldName;\r\n\r\n if (onlyModified && !this._isModified) {\r\n return null;\r\n }\r\n\r\n var isFullDateTime = moment(this.DefaultValue, DATE_FORMATS.FULL_DATETIME.Format).format(DATE_FORMATS.FULL_DATETIME.Format) === this.DefaultValue;\r\n var isLongTime = moment(this.DefaultValue, DATE_FORMATS.LONG_TIME.Format).format(DATE_FORMATS.LONG_TIME.Format) === this.DefaultValue;\r\n\r\n if (onlyModified && this.TypeName === 'DateTime' && isFullDateTime) {\r\n this.DefaultValue = moment(this.DefaultValue, DATE_FORMATS.FULL_DATETIME.Format).utc().format(DATE_FORMATS.FULL_DATETIME.Format);\r\n } else if (onlyModified && this.TypeName === 'Time' && isLongTime) {\r\n this.DefaultValue = moment(this.DefaultValue, DATE_FORMATS.LONG_TIME.Format).utc().format(DATE_FORMATS.LONG_TIME.Format);\r\n }\r\n\r\n return {\r\n Id: this.Id,\r\n Name: name,\r\n TypeId: this.TypeId,\r\n TypeName: this.TypeName,\r\n IsPrimaryKey: this.IsPrimaryKey,\r\n IsSystem: this.IsSystem,\r\n IsRequired: this.IsRequired,\r\n IsReadOnly: this.IsReadOnly,\r\n IsIndexed: this.IsIndexed,\r\n IsVirtual: this.IsVirtual,\r\n IsTranslate: this.IsTranslate,\r\n IsGlobal: this.IsGlobal,\r\n IsModified: this.IsModified,\r\n IsHidden: this.IsHidden,\r\n IsOptional: this.IsOptioanl,\r\n IsClustered: this.IsClustered,\r\n IsUnique: this.IsUnique,\r\n Flags: this.Flags,\r\n Memo: this.Memo,\r\n Size: this.Size,\r\n CalculatedExpression: this.CalculatedExpression,\r\n FormatId: this.FormatId,\r\n Sort: this.Sort,\r\n Icon: this.Icon,\r\n IconId: this.IconId,\r\n IconImage: this.IconImage,\r\n LifeStatusName: this.LifeStatusName,\r\n PropertyFieldId: this.PropertyFieldId,\r\n PropertyFieldGuid: this.PropertyFieldGuid,\r\n PropertyModeId: this.PropertyModeId,\r\n LinkEditorVisibilitySettings: this.LinkEditorVisibilitySettings.toJSON(),\r\n ClusterSettings: this.ClusterSettings.toJSON(),\r\n TableFiels: this.TableFiels.toJSON(onlyModified),\r\n Translations: this.Translations.toJSON(),\r\n MemoTranslations: this.MemoTranslations.toJSON(),\r\n DefaultValue: this.DefaultValue,\r\n HasDefaultValue: this.HasDefaultValue,\r\n Guid: this._guid,\r\n Matching: this._matching,\r\n AllowCustomValue: this._allowCustomValue,\r\n AllowCreatingRecords: this._allowCreatingRecords,\r\n FilterSubTable: this._filterSubTable,\r\n FilterSubTableFieldId: this._filterSubTableFieldId,\r\n FilterSubTableFieldGuid: this._filterSubTableFieldGuid,\r\n FilterSubTableKseq: this._filterSubTableKseq,\r\n Reference: this._reference,\r\n ReferenceGuid: this._referenceGuid,\r\n HyperlinkEntity: this._hyperlinkEntity,\r\n HyperlinkEntityGuid: this._hyperlinkEntityGuid,\r\n HyperlinkPkey: this._hyperlinkPkey,\r\n HyperlinkPkeyGuid: this._hyperlinkPkeyGuid,\r\n FilterByField: this._filterByField,\r\n FilterByFieldGuid: this._filterByFieldGuid,\r\n SortDescription: this._sortDescription,\r\n SequenceValue: this.SequenceValue\r\n };\r\n};\r\n\r\nFieldModel.prototype.FromJSON = function (data) {\r\n this.Id = data.Id;\r\n this.Name = data.Name;\r\n this.TypeId = data.TypeId;\r\n this.TypeName = data.TypeName;\r\n this.IsPrimaryKey = data.IsPrimaryKey;\r\n this.IsSystem = data.IsSystem;\r\n this.IsRequired = data.IsRequired;\r\n this.IsReadOnly = data.IsReadOnly;\r\n this.IsIndexed = data.IsIndexed;\r\n this.IsVirtual = data.IsVirtual;\r\n this.IsTranslate = data.IsTranslate;\r\n this.IsGlobal = data.IsGlobal;\r\n this.IsHidden = data.IsHidden;\r\n this.IsOptional = data.IsOptional;\r\n this.IsClustered = data.IsClustered;\r\n this.IsUnique = data.IsUnique;\r\n this.Flags = data.Flags;\r\n this.Memo = data.Memo;\r\n this.Size = data.Size;\r\n this.FormatId = data.FormatId;\r\n this.CalculatedExpression = data.CalculatedExpression;\r\n this.Sort = data.Sort;\r\n this.Icon = data.Icon;\r\n this.IconType = data.IconType;\r\n this.IconId = data.IconId;\r\n this.IconImage = data.IconImage;\r\n this.LifeStatusName = data.LifeStatusName;\r\n this.PropertyFieldId = data.PropertyFieldId;\r\n this.PropertyModeId = data.PropertyModeId;\r\n this._tableFiels = TableFieldModel.prototype.FromJSONArray(data.TableFiels);\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._translationsMemo = TranslationModel.prototype.FromJSONArray(data.MemoTranslations);\r\n this.Reference = data.Reference;\r\n this.ReferenceGuid = data.ReferenceGuid;\r\n this.HyperlinkEntity = data.HyperlinkEntity;\r\n this.HyperlinkEntityGuid = data.HyperlinkEntityGuid;\r\n this.HyperlinkPkey = data.HyperlinkPkey;\r\n this.HyperlinkPkeyGuid = data.HyperlinkPkeyGuid;\r\n this.FilterByField = data.FilterByField;\r\n this.FitlerByFieldGuid = data.FitlerByFieldGuid;\r\n this.SortDescription = data.SortDescription;\r\n this.SequenceValue = data.SequenceValue;\r\n\r\n var isFullDateTime = moment(data.DefaultValue, DATE_FORMATS.FULL_DATETIME.Format).format(DATE_FORMATS.FULL_DATETIME.Format) === data.DefaultValue;\r\n var isLongTime = moment(data.DefaultValue, DATE_FORMATS.LONG_TIME.Format).format(DATE_FORMATS.LONG_TIME.Format) === data.DefaultValue;\r\n\r\n if (data.TypeName === 'DateTime' && isFullDateTime) {\r\n this.DefaultValue = moment(FormatConverter.CorrectTimezone(data.DefaultValue)).format(DATE_FORMATS.FULL_DATETIME.Format);\r\n } else if (data.TypeName === 'Time' && isLongTime) {\r\n this.DefaultValue = moment.utc(data.DefaultValue, DATE_FORMATS.LONG_TIME.Format).local().format(DATE_FORMATS.LONG_TIME.Format);\r\n } else {\r\n this.DefaultValue = data.DefaultValue;\r\n }\r\n\r\n this.HasDefaultValue = data.HasDefaultValue;\r\n this._oldName = this.Name;\r\n this._oldLifeStatusName = this.LifeStatusName;\r\n this.Matching = data.Matching;\r\n this.ClusterSettings = ClusterSettingsModel.prototype.FromJSONArray(data.ClusterSettings);\r\n this.AllowCustomValue = data.AllowCustomValue;\r\n this.AllowCreatingRecords = data.AllowCreatingRecords;\r\n this.FilterSubTable = data.FilterSubTable;\r\n this.FilterSubTableFieldId = data.FilterSubTableFieldId;\r\n this.FilterSubTableFieldGuid = data.FilterSubTableFieldGuid;\r\n this.FilterSubTableKseq = data.FilterSubTableKseq;\r\n this._linkEditorVisibilitySettings = LinkEditorVisibilityModel.prototype.FromJSONArray(data.LinkEditorVisibilitySettings);\r\n};\r\n\r\nFieldModel.prototype.Clone = function () {\r\n return clone(this);\r\n};\r\n\r\nFieldModel.prototype.FromJSONArray = function (data) {\r\n var fieldList = new CollectionModel({ model: FieldModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var fieldModel = new FieldModel();\r\n\r\n fieldModel.FromJSON(data[index]);\r\n fieldList.Add(fieldModel);\r\n }\r\n\r\n return fieldList;\r\n};\r\n\r\nFieldModel.prototype.CreateNewField = function (fieldConfig) {\r\n var newField = this.Clone();\r\n\r\n Object.keys(fieldConfig).forEach(function (key) {\r\n if (fieldConfig.hasOwnProperty(key)) {\r\n newField[key] = fieldConfig[key];\r\n }\r\n });\r\n\r\n newField.Id = 0;\r\n newField.RegenerateGuid();\r\n\r\n newField.TableFiels.Items = this.TableFiels.GetItemsBy('TableTypeGuid', '-');\r\n newField.TableFiels.Items.forEach(function (item) {\r\n item.RegenerateGuid();\r\n });\r\n\r\n newField.IsModified = true;\r\n return newField;\r\n};\r\n\r\nFieldModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nFieldModel.prototype.CreateDefaultMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n\r\n self._translationsMemo = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n\r\n translation.Language = language;\r\n self._translationsMemo.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'TypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeId;\r\n },\r\n set: function (val) {\r\n this._typeId = parseInt(val);\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'TypeName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeName;\r\n },\r\n set: function (val) {\r\n this._typeName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsPrimaryKey', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isPrimaryKey;\r\n },\r\n set: function (val) {\r\n this._isPrimaryKey = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsOptional', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isOptional;\r\n },\r\n set: function (val) {\r\n this._isOptional = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsSystem', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isSystem;\r\n },\r\n set: function (val) {\r\n this._isSystem = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsRequired', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isRequired;\r\n },\r\n set: function (val) {\r\n this._isRequired = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsReadOnly', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isReadOnly;\r\n },\r\n set: function (val) {\r\n this._isReadOnly = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsIndexed', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isIndexed;\r\n },\r\n set: function (val) {\r\n this._isIndexed = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsVirtual', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isVirtual;\r\n },\r\n set: function (val) {\r\n this._isVirtual = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsGlobal', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isGlobal;\r\n },\r\n set: function (val) {\r\n this._isGlobal = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsTranslate', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isTranslate;\r\n },\r\n set: function (val) {\r\n this._isTranslate = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsHidden', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isHidden;\r\n },\r\n set: function (val) {\r\n this._isHidden = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsClustered', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isClustered;\r\n },\r\n set: function (val) {\r\n this._isClustered = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsUnique', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isUnique;\r\n },\r\n set: function (val) {\r\n this._isUnique = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Flags', {\r\n enumerable: true,\r\n get: function () {\r\n return this._flags;\r\n },\r\n set: function (val) {\r\n this._flags = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IsNew', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id === 0;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Size', {\r\n enumerable: true,\r\n get: function () {\r\n return this._size;\r\n },\r\n set: function (val) {\r\n this._size = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'CalculatedExpression', {\r\n enumerable: true,\r\n get: function () {\r\n return this._calculatedExpression;\r\n },\r\n set: function (val) {\r\n this._calculatedExpression = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'TableFiels', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tableFiels;\r\n },\r\n set: function (val) {\r\n this._tableFiels = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'LinkEditorVisibilitySettings', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkEditorVisibilitySettings;\r\n },\r\n set: function (value) {\r\n this._linkEditorVisibilitySettings = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'DefaultValue', {\r\n enumerable: true,\r\n get: function () {\r\n return this._defaultValue;\r\n },\r\n set: function (val) {\r\n this._defaultValue = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HasDefaultValue', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hasDefaultValue;\r\n },\r\n set: function (val) {\r\n this._hasDefaultValue = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Sort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sort;\r\n },\r\n set: function (val) {\r\n this._sort = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'SortGroup', {\r\n enumerable: true,\r\n get: function () {\r\n if (_.includes(_.range(1000, 1999), this._sort)) {\r\n return 'Header';\r\n }\r\n if (_.includes(_.range(2000, 2999), this._sort)) {\r\n return 'OptionalHeader';\r\n }\r\n if (_.includes(_.range(3000, 7999), this._sort)) {\r\n return 'Custom';\r\n }\r\n if (_.includes(_.range(8000, 8999), this._sort)) {\r\n return 'OptionalFooter';\r\n }\r\n if (_.includes(_.range(9000, 9999), this._sort)) {\r\n return 'Footer';\r\n }\r\n if (_.includes([0], this._sort)) {\r\n return 'Undefined';\r\n }\r\n\r\n return null;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Icon', {\r\n enumerable: true,\r\n get: function () {\r\n return this._icon;\r\n },\r\n set: function (val) {\r\n this._icon = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IconType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconType;\r\n },\r\n set: function (val) {\r\n this._iconType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IconId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconId;\r\n },\r\n set: function (val) {\r\n this._iconId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'IconImage', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconImage;\r\n },\r\n set: function (val) {\r\n this._iconImage = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translationsMemo;\r\n },\r\n set: function (val) {\r\n this._translationsMemo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'LifeStatusName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatusName;\r\n },\r\n set: function (val) {\r\n this._lifeStatusName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'PropertyFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._propertyFieldId;\r\n },\r\n set: function (val) {\r\n this._propertyFieldId = val\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'PropertyFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._propertyFieldGuid;\r\n },\r\n set: function (val) {\r\n this._propertyFieldGuid = val\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'PropertyModeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._propertyModeId;\r\n },\r\n set: function (val) {\r\n this._propertyModeId = val\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Matching', {\r\n enumerable: true,\r\n get: function () {\r\n return this._matching;\r\n },\r\n set: function (val) {\r\n this._matching = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'ClusterSettings', {\r\n enumerable: true,\r\n get: function () {\r\n return this._clusterSettings;\r\n },\r\n set: function (val) {\r\n this._clusterSettings = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'AllowCustomValue', {\r\n enumerable: true,\r\n get: function () {\r\n return this._allowCustomValue;\r\n },\r\n set: function (val) {\r\n this._allowCustomValue = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'AllowCreatingRecords', {\r\n enumerable: true,\r\n get: function () {\r\n return this._allowCreatingRecords;\r\n },\r\n set: function (val) {\r\n this._allowCreatingRecords = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTable', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTable;\r\n },\r\n set: function (val) {\r\n this._filterSubTable = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTableFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTableFieldId;\r\n },\r\n set: function (val) {\r\n this._filterSubTableFieldId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTableFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTableFieldGuid;\r\n },\r\n set: function (val) {\r\n this._filterSubTableFieldGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterSubTableKseq', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterSubTableKseq;\r\n },\r\n set: function (val) {\r\n this._filterSubTableKseq = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'Reference', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reference;\r\n },\r\n set: function (val) {\r\n this._reference = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'ReferenceGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._referenceGuid;\r\n },\r\n set: function (val) {\r\n this._referenceGuid = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkEntity', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkEntity;\r\n },\r\n set: function (val) {\r\n this._hyperlinkEntity = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkPkey', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkPkey;\r\n },\r\n set: function (val) {\r\n this._hyperlinkPkey = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkEntityGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkEntityGuid;\r\n },\r\n set: function (val) {\r\n this._hyperlinkEntityGuid = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(FieldModel.prototype, 'HyperlinkPkeyGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._hyperlinkPkeyGuid;\r\n },\r\n set: function (val) {\r\n this._hyperlinkPkeyGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterByField', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterByField;\r\n },\r\n set: function (val) {\r\n this._filterByField = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'FilterByFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filterByFieldGuid;\r\n },\r\n set: function (val) {\r\n this._filterByFieldGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(FieldModel.prototype, 'SortDescription', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sortDescription;\r\n },\r\n set: function (val) {\r\n this._sortDescription = val;\r\n }\r\n});","import { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function KindModel() {\r\n this._id = null;\r\n this._guid = Guid.NewGuid();\r\n this._name = null;\r\n this._enabled = null;\r\n this._typeId = null;\r\n this._typeGuid = null;\r\n this._fields = [];\r\n\r\n BaseModel.call(this);\r\n}\r\n\r\nKindModel.prototype = Object.create(BaseModel.prototype);\r\nKindModel.prototype.constructor = KindModel;\r\n\r\nKindModel.prototype.FromJSONArray = function (kinds) {\r\n var kindsList = new CollectionModel({ model: KindModel });\r\n\r\n _.each(kinds, function (kind) {\r\n var model = new KindModel();\r\n model.FromJSON(kind);\r\n kindsList.Add(model);\r\n });\r\n\r\n return kindsList;\r\n};\r\n\r\nKindModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._enabled = data.Enabled;\r\n this._fields = [];\r\n\r\n for (var fieldIndex = 0; fieldIndex < data.Fields.length; fieldIndex++) {\r\n var field = data.Fields[fieldIndex];\r\n\r\n this._fields.push({\r\n FieldId: field.FieldId,\r\n ShowModeId: field.ShowModeId\r\n });\r\n }\r\n};\r\n\r\nKindModel.prototype.toJSON = function () {\r\n return {\r\n Id: this._id,\r\n Guid: this._guid,\r\n Name: this._name,\r\n Enabled: this._enabled,\r\n Fields: this._fields\r\n };\r\n};\r\n\r\nObject.defineProperty(KindModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(KindModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(KindModel.prototype, 'Enabled', {\r\n enumerable: true,\r\n get: function () {\r\n return this._enabled;\r\n },\r\n set: function (val) {\r\n this._enabled = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(KindModel.prototype, 'Fields', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fields;\r\n },\r\n set: function (val) {\r\n this._fields = val;\r\n }\r\n});","import { ModelState } from \"Core/Common/Enums/ModelState\";\r\nimport { TranslationManager } from \"Core/Components/Translation/TranslationManager\";\r\n\r\nexport function LanguageModel() {\r\n\tthis._k_Language = 0;\r\n\tthis._name = \"\";\r\n\tthis._shortName = \"\";\r\n\tthis._flagBase64 = \"\";\r\n\tthis._state = ModelState.New;\r\n\tthis._enabled = 0;\r\n\tthis._fileName = \"\";\r\n\tthis._fileType = \"\";\r\n};\r\n\r\nLanguageModel.prototype.FromJSON = function (data) {\r\n\tthis._name = data.Name;\r\n\tthis._shortName = data.ShortName;\r\n\tthis._flagBase64 = data.FlagBase64;\r\n\tthis._k_Language = data.K_Language;\r\n\tthis._state = data.State;\r\n\tthis._enabled = data.Enabled;\r\n\tthis._fileName = data.FileName;\r\n\tthis._fileType = data.FileType;\r\n}\r\n\r\nLanguageModel.prototype.toJSON = function () {\r\n\tconst kLanguage = this._state === ModelState.New ? 0 : this._k_Language;\r\n\treturn {\r\n\t\tK_Language: kLanguage,\r\n\t\tShortName: this._shortName,\r\n\t\tName: this._name,\r\n\t\tEnabled: this._enabled,\r\n\t\tState: this._state,\r\n\t\tFlagBase64: this.FlagBase64,\r\n\t\tFileName: this._fileName,\r\n\t\tFileType: this._fileType\r\n\t};\r\n}\r\n\r\nLanguageModel.prototype.Clone = function () {\r\n\tvar language = new LanguageModel();\r\n\tlanguage.K_Language = this._k_Language;\r\n\tlanguage.ShortName = this._shortName;\r\n\tlanguage.Name = this._name;\r\n\tlanguage.Enabled = this._enabled;\r\n\tlanguage.State = this._state;\r\n\tlanguage.Attachment = this._attachment;\r\n\tlanguage.FlagBase64 = this._flagBase64;\r\n\tlanguage.FileName = this._fileName;\r\n\tlanguage.FileType = this._fileType;\r\n\r\n\treturn language;\r\n}\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'K_Language', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._k_Language;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._k_Language = val;\r\n\t}\r\n});\r\n\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'Name', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\tlet lang = TranslationManager.Instance.GetLanguageById(this.K_Language);\r\n\t\tif(lang){\r\n\t\t\treturn lang.Name;\r\n\t\t}\r\n\t\treturn this._name;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._name = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'ShortName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\tlet lang = TranslationManager.Instance.GetLanguageById(this.K_Language);\r\n\t\tif(lang){\r\n\t\t\treturn lang.ShortName;\r\n\t\t}\r\n\t\treturn this._shortName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._shortName = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'State', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._state;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._state = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'Enabled', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._enabled;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._enabled = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'FlagBase64', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\r\n\t\tif(this._flagBase64){\r\n\t\t\treturn this._flagBase64;\r\n\t\t}\r\n\r\n\t\tlet lang = TranslationManager.Instance.GetLanguageById(this.K_Language);\r\n\t\tif(lang){\r\n\t\t\treturn lang.Flag;\r\n\t\t}\r\n\t\t\r\n\t\treturn null;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._flagBase64 = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'FileName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._fileName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._fileName = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(LanguageModel.prototype, 'FileType', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._fileType;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._fileType = val;\r\n\t}\r\n});","import { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport * as _ from 'underscore';\r\nimport { Guid } from \"Core/Common/Guid\";\r\n\r\nexport function LifeStatusModel() {\r\n this._guid = Guid.NewGuid();\r\n\r\n this._id = null;\r\n this._name = null;\r\n this._exampleId = null;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n BaseModel.apply(this);\r\n};\r\n\r\nLifeStatusModel.prototype = Object.create(BaseModel.prototype);\r\nLifeStatusModel.prototype.constructor = LifeStatusModel;\r\n\r\nLifeStatusModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n};\r\n\r\nLifeStatusModel.prototype.toJSON = function () {\r\n return {\r\n Guid: this.Guid,\r\n Id: this.Id,\r\n Name: this.Name,\r\n ExampleId: this.ExampleId,\r\n DisplaySort: this.DisplaySort,\r\n Translations: JSON.stringify(this.Translations && this.Translations),\r\n };\r\n};\r\n\r\nLifeStatusModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nLifeStatusModel.prototype.FromJSONArray = function (data) {\r\n var lifeStatusesList = new CollectionModel({ model: LifeStatusModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var lifeStatusModel = new LifeStatusModel();\r\n\r\n lifeStatusModel.FromJSON(data[index]);\r\n lifeStatusesList.Add(lifeStatusModel);\r\n }\r\n\r\n return lifeStatusesList;\r\n};\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n },\r\n set: function (value) {\r\n this._guid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (value) {\r\n this._id = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (value) {\r\n this._name = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (value) {\r\n this._translations = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LifeStatusModel.prototype, 'ExampleId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._exampleId;\r\n },\r\n set: function (value) {\r\n this._exampleId = value;\r\n }\r\n});\r\n","import { Guid } from \"Core/Common/Guid\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function LinkEditorTabSettingsModel() {\r\n this._guid = Guid.NewGuid();\r\n\r\n this._leftTypeId = null;\r\n this._leftTypeGuid = null;\r\n\r\n this._rightTypeId = null;\r\n this._rightTypeGuid = null;\r\n\r\n this._leftStatusId = null;\r\n this._leftStatusGuid = null;\r\n\r\n this._rightStatusId = null;\r\n this._rightStatusGuid = null;\r\n\r\n this._tableId = null;\r\n this._tableGuid = null;\r\n\r\n this._targetTableId = null;\r\n this._targetTableGuid = null;\r\n\r\n this._lookupFieldId = null;\r\n this._lookupFieldGuid = null;\r\n}\r\n\r\nLinkEditorTabSettingsModel.prototype.FromJSON = function (data) {\r\n this._leftTypeId = data.LeftTypeId;\r\n this._leftTypeGuid = data.LeftTypeGuid;\r\n\r\n this._rightTypeId = data.RightTypeId;\r\n this._rightTypeGuid = data.RightTypeGuid;\r\n\r\n this._leftStatusId = data.LeftStatusId;\r\n this._leftStatusGuid = data.LeftStatusGuid;\r\n\r\n this._rightStatusId = data.RightStatusId;\r\n this._rightStatusGuid = data.RightStatusGuid;\r\n\r\n this._tableId = data.TableId;\r\n this._tableGuid = data.TableGuid;\r\n\r\n this._targetTableId = data.TargetTableId;\r\n this._targetTableGuid = data.TargetTableGuid;\r\n\r\n this._lookupFieldId = data.LookupFieldId;\r\n this._lookupFieldGuid = data.LookupFieldGuid;\r\n};\r\n\r\nLinkEditorTabSettingsModel.prototype.toJSON = function () {\r\n return {\r\n Guid: this.Guid,\r\n LeftTypeId: this.LeftTypeId,\r\n LeftTypeGuid: this.LeftTypeGuid,\r\n LeftStatusId: this.LeftStatusId,\r\n LeftStatusGuid: this.LeftStatusGuid,\r\n RightTypeId: this.RightTypeId,\r\n RightTypeGuid: this.RightTypeGuid,\r\n RightStatusId: this.RightStatusId,\r\n RightStatusGuid: this.RightStatusGuid,\r\n TableId: this.TableId,\r\n TableGuid: this.TableGuid,\r\n TargetTableId: this.TargetTableId,\r\n TargetTableGuid: this.TargetTableGuid,\r\n LookupFieldId: this.LookupFieldId,\r\n LookupFieldGuid: this.LookupFieldGuid\r\n };\r\n}\r\n\r\nLinkEditorTabSettingsModel.prototype.Reverse = function () {\r\n const newLeftTypeId = this._rightTypeId;\r\n const newRightTypeId = this._leftTypeId;\r\n const newLeftTypeGuid = this._rightTypeGuid;\r\n const newRightTypeGuid = this._leftTypeGuid;\r\n const newLeftStatusId = this._rightStatusId;\r\n const newRightStatusId = this._leftStatusId;\r\n const newLeftStatusGuid = this._rightStatusGuid;\r\n const newRightStatusGuid = this._leftStatusGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n this._leftStatusId = newLeftStatusId;\r\n this._rightStatusId = newRightStatusId;\r\n this._leftStatusGuid = newLeftStatusGuid;\r\n this._rightStatusGuid = newRightStatusGuid;\r\n};\r\n\r\nLinkEditorTabSettingsModel.prototype.FromJSONArray = function (data) {\r\n const linkEditorTabSettingsList = new CollectionModel({ model: LinkEditorTabSettingsModel });\r\n\r\n for (let index = 0; index < data.length; index++) {\r\n const linkEditorVisibilityModel = new LinkEditorTabSettingsModel();\r\n\r\n linkEditorVisibilityModel.FromJSON(data[index]);\r\n linkEditorTabSettingsList.Add(linkEditorVisibilityModel);\r\n }\r\n\r\n return linkEditorTabSettingsList;\r\n};\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (value) {\r\n this._leftTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (value) {\r\n this._leftTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusId;\r\n },\r\n set: function (value) {\r\n this._leftStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LeftStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusGuid;\r\n },\r\n set: function (value) {\r\n this._leftStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusId;\r\n },\r\n set: function (value) {\r\n this._rightStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'RightStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusGuid;\r\n },\r\n set: function (value) {\r\n this._rightStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tableId;\r\n },\r\n set: function (value) {\r\n this._tableId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._tableGuid;\r\n },\r\n set: function (value) {\r\n this._tableGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TargetTableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._targetTableId;\r\n },\r\n set: function (value) {\r\n this._targetTableId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'TargetTableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._targetTableGuid;\r\n },\r\n set: function (value) {\r\n this._targetTableGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LookupFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lookupFieldId;\r\n },\r\n set: function (value) {\r\n this._lookupFieldId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorTabSettingsModel.prototype, 'LookupFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lookupFieldGuid;\r\n },\r\n set: function (value) {\r\n this._lookupFieldGuid = value;\r\n }\r\n});\r\n","import { Guid } from \"Core/Common/Guid\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function LinkEditorVisibilityModel() {\r\n this._guid = Guid.NewGuid();\r\n\r\n this._leftTypeId = null;\r\n this._leftTypeGuid = null;\r\n\r\n this._rightTypeId = null;\r\n this._rightTypeGuid = null;\r\n\r\n this._leftKindId = null;\r\n this._leftKindGuid = null;\r\n\r\n this._rightKindId = null;\r\n this._rightKindGuid = null;\r\n\r\n this._leftStatusId = null;\r\n this._leftStatusGuid = null;\r\n\r\n this._rightStatusId = null;\r\n this._rightStatusGuid = null;\r\n\r\n this._fullWidth = false;\r\n this._fontStylesId = [];\r\n this._fontColor = null;\r\n}\r\n\r\nLinkEditorVisibilityModel.prototype.FromJSON = function (data) {\r\n this._leftTypeId = data.LeftTypeId;\r\n this._leftTypeGuid = data.LeftTypeGuid;\r\n\r\n this._rightTypeId = data.RightTypeId;\r\n this._rightTypeGuid = data.RightTypeGuid;\r\n\r\n this._leftKindId = data.LeftKindId;\r\n this._leftKindGuid = data.LeftKindGuid;\r\n\r\n this._rightKindId = data.RightKindId;\r\n this._rightKindGuid = data.RightKindGuid;\r\n\r\n this._leftStatusId = data.LeftStatusId;\r\n this._leftStatusGuid = data.LeftStatusGuid;\r\n\r\n this._rightStatusId = data.RightStatusId;\r\n this._rightStatusGuid = data.RightStatusGuid;\r\n\r\n this._fullWidth = data.FullWidth;\r\n this._fontStylesId = data.FontStylesId;\r\n this._fontColor = data.FontColor;\r\n};\r\n\r\nLinkEditorVisibilityModel.prototype.toJSON = function () {\r\n return {\r\n Guid: this.Guid,\r\n LeftTypeId: this.LeftTypeId,\r\n LeftTypeGuid: this.LeftTypeGuid,\r\n LeftKindId: this.LeftKindId,\r\n LeftKindGuid: this.LeftKindGuid,\r\n LeftStatusId: this.LeftStatusId,\r\n LeftStatusGuid: this.LeftStatusGuid,\r\n RightTypeId: this.RightTypeId,\r\n RightTypeGuid: this.RightTypeGuid,\r\n RightKindId: this.RightKindId,\r\n RightKindGuid: this.RightKindGuid,\r\n RightStatusId: this.RightStatusId,\r\n RightStatusGuid: this.RightStatusGuid,\r\n FullWidth: this.FullWidth,\r\n FontStylesId: this.FontStylesId,\r\n FontColor: this.FontColor\r\n };\r\n};\r\n\r\nLinkEditorVisibilityModel.prototype.Reverse = function () {\r\n var newLeftTypeId = this._rightTypeId;\r\n var newRightTypeId = this._leftTypeId;\r\n var newLeftTypeGuid = this._rightTypeGuid;\r\n var newRightTypeGuid = this._leftTypeGuid;\r\n var newLeftKindId = this._rightKindId;\r\n var newRightKindId = this._leftKindId;\r\n var newLeftKindGuid = this._rightKindGuid;\r\n var newRightKindGuid = this._leftKindGuid;\r\n var newLeftStatusId = this._rightStatusId;\r\n var newRightStatusId = this._leftStatusId;\r\n var newLeftStatusGuid = this._rightStatusGuid;\r\n var newRightStatusGuid = this._leftStatusGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n this._leftKindId = newLeftKindId;\r\n this._rightKindId = newRightKindId;\r\n this._leftKindGuid = newLeftKindGuid;\r\n this._rightKindGuid = newRightKindGuid;\r\n this._leftStatusId = newLeftStatusId;\r\n this._rightStatusId = newRightStatusId;\r\n this._leftStatusGuid = newLeftStatusGuid;\r\n this._rightStatusGuid = newRightStatusGuid;\r\n};\r\n\r\nLinkEditorVisibilityModel.prototype.FromJSONArray = function (data) {\r\n var linkEditorVisibilityList = new CollectionModel({ model: LinkEditorVisibilityModel });\r\n\r\n for (var index = 0; index < data.length; index++) {\r\n var linkEditorVisibilityModel = new LinkEditorVisibilityModel();\r\n\r\n linkEditorVisibilityModel.FromJSON(data[index]);\r\n linkEditorVisibilityList.Add(linkEditorVisibilityModel);\r\n }\r\n\r\n return linkEditorVisibilityList;\r\n};\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'Guid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._guid;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (value) {\r\n this._leftTypeId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (value) {\r\n this._leftTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (value) {\r\n this._rightTypeGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftKindId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftKindId;\r\n },\r\n set: function (value) {\r\n this._leftKindId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftKindGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftKindGuid;\r\n },\r\n set: function (value) {\r\n this._leftKindGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightKindId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightKindId;\r\n },\r\n set: function (value) {\r\n this._rightKindId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightKindGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightKindGuid;\r\n },\r\n set: function (value) {\r\n this._rightKindGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusId;\r\n },\r\n set: function (value) {\r\n this._leftStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'LeftStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftStatusGuid;\r\n },\r\n set: function (value) {\r\n this._leftStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightStatusId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusId;\r\n },\r\n set: function (value) {\r\n this._rightStatusId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'RightStatusGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightStatusGuid;\r\n },\r\n set: function (value) {\r\n this._rightStatusGuid = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'FullWidth', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fullWidth;\r\n },\r\n set: function (value) {\r\n this._fullWidth = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'FontStylesId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fontStylesId;\r\n },\r\n set: function (value) {\r\n this._fontStylesId = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkEditorVisibilityModel.prototype, 'FontColor', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fontColor;\r\n },\r\n set: function (value) {\r\n this._fontColor = value;\r\n }\r\n});","import clone from 'clone';\r\n\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { LinkEditorTabSettingsModel } from \"DatabaseDesigner/Models/LinkEditorTabSettingsModel\";\r\nimport { TableBaseModel } from \"DatabaseDesigner/Models/TableBaseModel\";\r\nimport { TableTypeModel } from \"DatabaseDesigner/Models/TableTypeModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport {util} from \"../../libs/rappid/build/rappid\";\r\nimport string = util.format.string;\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {TranslationModel as MemoTranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nexport function LinkTableModel() {\r\n this._k1TableId = 0;\r\n this._k2TableId = 0;\r\n this._k1TableGuid = 0;\r\n this._k1TableGuid = 0;\r\n this._linkListRelations = null;\r\n this._reversePassSecurity = false;\r\n this._oneParent = false;\r\n this._types = new CollectionModel({ model: TableTypeModel });\r\n this._linkEditorTabSettings = new CollectionModel({ model: LinkEditorTabSettingsModel });\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n this._memo = \"\";\r\n this._memoTranslations = new CollectionModel({ model: TranslationModel });\r\n\r\n TableBaseModel.apply(this);\r\n}\r\n\r\nLinkTableModel.prototype = Object.create(TableBaseModel.prototype);\r\nLinkTableModel.prototype.constructor = LinkTableModel;\r\nLinkTableModel.prototype.__super__ = TableBaseModel;\r\n\r\nLinkTableModel.prototype.Clone = function () {\r\n return clone(this);\r\n};\r\n\r\nLinkTableModel.prototype.FromJSONArray = function (tables) {\r\n var tableList = new CollectionModel({ model: LinkTableModel });\r\n _.each(tables, function (table) {\r\n var tableModel = new LinkTableModel();\r\n tableModel.FromJSON(table);\r\n tableList.Add(tableModel);\r\n });\r\n return tableList;\r\n}\r\n\r\nLinkTableModel.prototype.toJSON = function (onlyModified) {\r\n var result = this.__super__.prototype.toJSON.call(this, onlyModified);\r\n if (!result) {\r\n result = {};\r\n }\r\n result.K1TableId = this.K1TableId;\r\n result.K2TableId = this.K2TableId;\r\n result.K1TableGuid = this.K1TableGuid;\r\n result.K2TableGuid = this.K2TableGuid;\r\n result.ReversePassSecurity = this.ReversePassSecurity;\r\n result.OneParent = this.OneParent;\r\n result.LinkListRelations = this.LinkListRelations;\r\n result.Types = this.Types.toJSON(onlyModified);\r\n result.LinkEditorTabSettings = this.LinkEditorTabSettings.toJSON();\r\n result.Translations = this.Translations.toJSON();\r\n result.MemoTranslations = this.MemoTranslations;\r\n result.Memo = this.Memo;\r\n\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n};\r\n\r\nLinkTableModel.prototype.FromJSON = function (table) {\r\n var self = this;\r\n\r\n self.__super__.prototype.FromJSON.call(this, table);\r\n self._k1TableId = table.K1TableId;\r\n self._k2TableId = table.K2TableId;\r\n self._reversePassSecurity = table.ReversePassSecurity;\r\n self._oneParent = table.OneParent;\r\n\r\n self._types = TableTypeModel.prototype.FromJSONArray(table.Types);\r\n self._linkEditorTabSettings = LinkEditorTabSettingsModel.prototype.FromJSONArray(table.LinkEditorTabSettings);\r\n self._translations = TranslationModel.prototype.FromJSONArray(table.Translations);\r\n self._memo = table.Memo;\r\n self._memoTranslations = table.MemoTranslations;\r\n\r\n\r\n _.each(self.Fields.Items, function (field: any) {\r\n _.each(field.TableFiels.Items, function (tableFiel: any) {\r\n var tableType = _.find(self.Types.Items, function (type: any) {\r\n return type.Id === tableFiel.TableTypeId\r\n });\r\n if (tableType) {\r\n tableFiel.TableTypeGuid = tableType.Guid;\r\n }\r\n });\r\n });\r\n};\r\n\r\nLinkTableModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n}\r\n\r\nLinkTableModel.prototype.CreateMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._memoTranslations = [];\r\n\r\n _.forEach(languages, function (language: LanguageModel) {\r\n var translation = new MemoTranslationModel();\r\n translation.Language = new LanguageModel(language.K_Language, language.Name, language.ShortName, language.Enabled, language.FlagBase64);\r\n translation.Translation = \"\";\r\n self._memoTranslations.push(translation);\r\n });\r\n }\r\n};\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'LinkListRelations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkListRelations;\r\n },\r\n set: function (val) {\r\n this._linkListRelations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K1TableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k1TableId;\r\n },\r\n set: function (val) {\r\n this._k1TableId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K2TableId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k2TableId;\r\n },\r\n set: function (val) {\r\n this._k2TableId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K1TableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k1TableGuid;\r\n },\r\n set: function (val) {\r\n this._k1TableGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'K2TableGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k2TableGuid;\r\n },\r\n set: function (val) {\r\n this._k2TableGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'Types', {\r\n enumerable: true,\r\n get: function () {\r\n return this._types;\r\n },\r\n set: function (val) {\r\n this._types = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'LinkEditorTabSettings', {\r\n enumerable: true,\r\n get: function () {\r\n return this._linkEditorTabSettings;\r\n },\r\n set: function (value) {\r\n this._linkEditorTabSettings = value;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memoTranslations;\r\n },\r\n set: function (val) {\r\n this._memoTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'ReversePassSecurity', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reversePassSecurity;\r\n },\r\n set: function (val) {\r\n this._reversePassSecurity = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'OneParent', {\r\n enumerable: true,\r\n get: function () {\r\n return this._oneParent;\r\n },\r\n set: function (val) {\r\n this._oneParent = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'IsSelfRelation', {\r\n enumerable: true,\r\n get: function () {\r\n return this._k1TableGuid === this._k2TableGuid;\r\n }\r\n});\r\n\r\nObject.defineProperty(LinkTableModel.prototype, 'IsUserRelation', {\r\n enumerable: true,\r\n get: function () {\r\n return this.Name.startsWith('SYS_USER_') || this.Name.endsWith('_USER');\r\n }\r\n});","import { ModelState } from \"Core/Common/Enums/ModelState\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function RelationTypeFiltersModel() {\r\n this._typeId = null;\r\n this._kseq = null;\r\n this._leftTypeId = null;\r\n this._rightTypeId = null;\r\n this._leftTypeGuid = Guid.NewGuid();\r\n this._rightTypeGuid = Guid.NewGuid();\r\n this._state = 0;\r\n\r\n BaseModel.call(this);\r\n}\r\n\r\nRelationTypeFiltersModel.prototype = Object.create(BaseModel.prototype);\r\nRelationTypeFiltersModel.prototype.constructor = RelationTypeFiltersModel;\r\n\r\nRelationTypeFiltersModel.prototype.FromJSONArray = function (filters) {\r\n var filtersCollection = new CollectionModel({ model: RelationTypeFiltersModel });\r\n\r\n _.each(filters, function (filters) {\r\n var model = new RelationTypeFiltersModel();\r\n model.FromJSON(filters);\r\n filtersCollection.Add(model);\r\n });\r\n\r\n return filtersCollection;\r\n};\r\n\r\nRelationTypeFiltersModel.prototype.FromJSON = function (data) {\r\n this._typeId = data.TypeId;\r\n this._kseq = data.KSeq;\r\n this._leftTypeId = data.LeftTypeId;\r\n this._rightTypeId = data.RightTypeId;\r\n};\r\n\r\nRelationTypeFiltersModel.prototype.toJSON = function () {\r\n return {\r\n TypeId: this._typeId,\r\n KSeq: this._kseq,\r\n LeftTypeId: this._leftTypeId,\r\n RightTypeId: this._rightTypeId,\r\n LeftTypeGuid: this._leftTypeGuid,\r\n RightTypeGuid: this._rightTypeGuid,\r\n State: this._state\r\n };\r\n};\r\n\r\nRelationTypeFiltersModel.prototype.Reverse = function () {\r\n var newLeftTypeId = this._rightTypeId;\r\n var newRightTypeId = this._leftTypeId;\r\n var newLeftTypeGuid = this._rightTypeGuid;\r\n var newRightTypeGuid = this._leftTypeGuid;\r\n\r\n this._leftTypeId = newLeftTypeId;\r\n this._rightTypeId = newRightTypeId;\r\n this._leftTypeGuid = newLeftTypeGuid;\r\n this._rightTypeGuid = newRightTypeGuid;\r\n\r\n if (this._state !== ModelState.New || this._state !== ModelState.Deleted) {\r\n this._state = ModelState.Changed;\r\n }\r\n};\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'TypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeId;\r\n },\r\n set: function (val) {\r\n this._typeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'KSeq', {\r\n enumerable: true,\r\n get: function () {\r\n return this._kseq;\r\n },\r\n set: function (val) {\r\n this._kseq = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'LeftTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeId;\r\n },\r\n set: function (val) {\r\n this._leftTypeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'RightTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeId;\r\n },\r\n set: function (val) {\r\n this._rightTypeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'LeftTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._leftTypeGuid;\r\n },\r\n set: function (val) {\r\n this._leftTypeGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'RightTypeGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._rightTypeGuid;\r\n },\r\n set: function (val) {\r\n this._rightTypeGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeFiltersModel.prototype, 'State', {\r\n enumerable: true,\r\n get: function () {\r\n return this._state;\r\n },\r\n set: function (val) {\r\n this._state = val;\r\n }\r\n});","import { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function RelationTypeValueModel() {\r\n this._id = null;\r\n this._guid = Guid.NewGuid();\r\n this._name = null;\r\n this._nameTranslations = [];\r\n this._reverse = null;\r\n this._reverseTranslations = [];\r\n this._enabled = null;\r\n this._typeId = null;\r\n this._typeGuid = null;\r\n this._sort = null;\r\n this._isNewSort = false;\r\n\r\n BaseModel.call(this);\r\n}\r\n\r\nRelationTypeValueModel.prototype = Object.create(BaseModel.prototype);\r\nRelationTypeValueModel.prototype.constructor = RelationTypeValueModel;\r\n\r\nRelationTypeValueModel.prototype.FromJSONArray = function (values) {\r\n var valuesCollection = new CollectionModel({ model: RelationTypeValueModel });\r\n\r\n _.each(values, function (value) {\r\n var model = new RelationTypeValueModel();\r\n model.FromJSON(value);\r\n valuesCollection.Add(model);\r\n });\r\n\r\n return valuesCollection;\r\n};\r\n\r\nRelationTypeValueModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._nameTranslations = data.NameTranslations;\r\n this._reverse = data.Reverse;\r\n this._reverseTranslations = data.ReverseTranslations;\r\n this._enabled = data.Enabled;\r\n this._sort = data.Sort;\r\n this._isNewSort = data.IsNewSort;\r\n};\r\n\r\nRelationTypeValueModel.prototype.toJSON = function () {\r\n return {\r\n Id: this._id,\r\n Guid: this._guid,\r\n Name: this._name,\r\n NameTranslations: this.NameTranslations.map((translation) =>{\r\n return {\r\n Translation: translation.Translation,\r\n Language: {\r\n K_Language: translation.Language.K_Language,\r\n Name: translation.Language.Name,\r\n ShortName: translation.Language.ShortName\r\n }\r\n }}),\r\n Reverse: this._reverse,\r\n ReverseTranslations: this.ReverseTranslations.map((translation) =>{\r\n return {\r\n Translation: translation.Translation,\r\n Language: {\r\n K_Language: translation.Language.K_Language,\r\n Name: translation.Language.Name,\r\n ShortName: translation.Language.ShortName\r\n }\r\n }}),\r\n Enabled: this._enabled,\r\n Sort: this._sort,\r\n IsNewSort: this._isNewSort\r\n };\r\n};\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'NameTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._nameTranslations;\r\n },\r\n set: function (val) {\r\n this._nameTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Reverse', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reverse;\r\n },\r\n set: function (val) {\r\n this._reverse = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'ReverseTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._reverseTranslations;\r\n },\r\n set: function (val) {\r\n this._reverseTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Enabled', {\r\n enumerable: true,\r\n get: function () {\r\n return this._enabled;\r\n },\r\n set: function (val) {\r\n this._enabled = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'Sort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sort;\r\n },\r\n set: function (val) {\r\n this._sort = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(RelationTypeValueModel.prototype, 'IsNewSort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isNewSort;\r\n },\r\n set: function (val) {\r\n this._isNewSort = val;\r\n }\r\n});","import clone from 'clone';\r\n\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { FieldModel } from \"DatabaseDesigner/Models/FieldModel\";\r\nimport { TableTypeModel } from \"DatabaseDesigner/Models/TableTypeModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport {LanguageModel} from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\nimport {TranslationModel as MemoTranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport {FormProperties} from 'Core/Screens/DesignScreen/Models/FormProperties';\r\nimport {Serialize} from \"../../libs/cerialize\";\r\n\r\nexport function TableBaseModel() {\r\n this._id = 0;\r\n this._name = '';\r\n this._shortName = '';\r\n this._typeId = 0;\r\n this._typeName = '';\r\n this._sort = 0;\r\n this._fields = new CollectionModel({ model: FieldModel });\r\n this._types = new CollectionModel({ model: TableTypeModel });\r\n this._icon = null;\r\n this._iconType = null;\r\n this._iconId = null;\r\n this._iconImage = null;\r\n this._entityColor = null;\r\n this._lifeStatusName = null;\r\n this._lastLifestatusName = this._lifeStatusName;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n this._memo = \"\";\r\n this._memoTranslations = new CollectionModel({ model: TranslationModel });\r\n this._attachedControlTypes = new Array<string>();\r\n this._isView = false;\r\n this._query = '';\r\n this._dependsOnFieldName = null;\r\n this._dependsOnFieldId = 0;\r\n this._dependsOnFieldGuid = null;\r\n this._dynamicFields = '';\r\n this._connectionString = null;\r\n this._trigger = null;\r\n this._sequenceType = 0;\r\n this._isMergeView = false;\r\n this._properties = new FormProperties();\r\n\r\n BaseModel.apply(this);\r\n};\r\n\r\nTableBaseModel.prototype = Object.create(BaseModel.prototype);\r\nTableBaseModel.prototype.constructor = TableBaseModel;\r\n\r\nTableBaseModel.prototype.FromJSONArray = function (tables) {\r\n var tableList = new CollectionModel({ model: TableBaseModel });\r\n _.each(tables, function (table) {\r\n var model = new TableBaseModel();\r\n model.FromJSON(table);\r\n tableList.Add(model);\r\n });\r\n return tableList;\r\n}\r\n\r\nTableBaseModel.prototype.toJSON = function (onlyModified) {\r\n var result = {\r\n Id: this.Id,\r\n Guid: this.Guid,\r\n Name: this.Name,\r\n ShortName: this.ShortName,\r\n TypeId: this.TypeId,\r\n IsModified: this.IsModified,\r\n IsRestored: this.IsRestored,\r\n Fields: this.Fields.toJSON(onlyModified),\r\n Icon: this.Icon,\r\n IconId: this.IconId,\r\n IconImage: this.IconImage,\r\n EntityColor: this.EntityColor,\r\n SubjectAreaId: this.SubjectAreaId,\r\n OnDelete: this.OnDelete,\r\n LifeStatusName: this.LifeStatusName,\r\n IsLifeStatusModified: this.LifeStatusName !== this._lastLifestatusName,\r\n Translations: this.Translations.toJSON(),\r\n Memo: this.Memo,\r\n MemoTranslations: this.MemoTranslations,\r\n IsView: this.IsView,\r\n Query: this.Query,\r\n DynamicFields: this._dynamicFields,\r\n ConnectionString: this._connectionString,\r\n Trigger: this._trigger,\r\n SequenceType: this._sequenceType,\r\n IsMergeView: this._isMergeView,\r\n Properties: JSON.stringify(Serialize(this._properties))\r\n };\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n\r\n}\r\n\r\nTableBaseModel.prototype.Clone = function () {\r\n return clone(this);\r\n}\r\n\r\nTableBaseModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._databaseId = data.DatabaseId;\r\n this._name = data.Name;\r\n this._subjectAreaId = data.SubjectAreaId;\r\n this._onDelete = data.OnDelete;\r\n this._shortName = data.ShortName;\r\n this._typeId = data.TypeId;\r\n this._fields = FieldModel.prototype.FromJSONArray(data.Fields);\r\n this._sort = data.Sort;\r\n this._typeName = data.TypeName;\r\n this._icon = data.Icon;\r\n this._iconType = data.IconType;\r\n this._iconId = data.IconId;\r\n this._iconImage = data.IconImage;\r\n this._entityColor = data.EntityColor;\r\n this._lifeStatusName = data.LifeStatusName;\r\n this._lastLifestatusName = this._lifeStatusName;\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._memo = data.Memo;\r\n this._memoTranslations = data.MemoTranslations;\r\n this._attachedControlTypes = data.AttachedControlTypes;\r\n this._isView = data.IsView;\r\n this._query = data.Query;\r\n this._dynamicFields = data.DynamicFields;\r\n this._connectionString = data.ConnectionString;\r\n this._trigger = data.Trigger;\r\n this._sequenceType = data.SequenceType;\r\n this._isMergeView = data.IsMergeView;\r\n this._properties = data.Properties ? JSON.parse(data.Properties) : new FormProperties();\r\n}\r\n\r\nTableBaseModel.prototype.GetMaxSortGroup = function (groupName) {\r\n var sortGroup = window[\"DatabaseDesigner\"].Shared.FieldSortGroupOptions[groupName];\r\n var fields = _.filter(this._fields.Items, function (item: any) {\r\n return (item.Sort >= sortGroup.Item1 && item.Sort <= sortGroup.Item2);\r\n });\r\n\r\n\r\n if (fields.length > 0) {\r\n var maxField = _.max(fields, function (item) {\r\n return item.Sort;\r\n });\r\n return maxField.Sort;\r\n }\r\n return sortGroup.Item1;\r\n}\r\n\r\nTableBaseModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n};\r\n\r\nTableBaseModel.prototype.CreateMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._memoTranslations = [];\r\n\r\n _.forEach(languages, function (language: LanguageModel) {\r\n var translation = new MemoTranslationModel();\r\n translation.Language = new LanguageModel(language.K_Language, language.Name, language.ShortName, language.Enabled, language.FlagBase64);\r\n translation.Translation = \"\";\r\n self._memoTranslations.push(translation);\r\n });\r\n }\r\n};\r\n\r\nTableBaseModel.prototype.GetCustomFields = function () {\r\n return this.GetFieldsBySort(3000, 3999);\r\n};\r\n\r\nTableBaseModel.prototype.GetFieldsBySort = function (minSort, maxSort) {\r\n return this.Fields.Items.filter(function (field) {\r\n return field.Sort >= minSort && field.Sort <= maxSort;\r\n })\r\n};\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DependsOnFieldName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dependsOnFieldName;\r\n },\r\n set: function (val) {\r\n this._dependsOnFieldName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DependsOnFieldId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dependsOnFieldId;\r\n },\r\n set: function (val) {\r\n this._dependsOnFieldId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DependsOnFieldGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dependsOnFieldGuid;\r\n },\r\n set: function (val) {\r\n this._dependsOnFieldGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memoTranslations;\r\n },\r\n set: function (val) {\r\n this._memoTranslations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'TypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeId;\r\n },\r\n set: function (val) {\r\n this._typeId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Fields', {\r\n enumerable: true,\r\n get: function () {\r\n return this._fields;\r\n },\r\n set: function (val) {\r\n this._fields = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'AttachedControlTypes', {\r\n enumerable: true,\r\n get: function () {\r\n return this._attachedControlTypes;\r\n },\r\n set: function (val) {\r\n this._attachedControlTypes = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'ShortName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._shortName;\r\n },\r\n set: function (val) {\r\n this._shortName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Types', {\r\n enumerable: true,\r\n get: function () {\r\n return this._types;\r\n },\r\n set: function (val) {\r\n this._types = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Icon', {\r\n enumerable: true,\r\n get: function () {\r\n return this._icon;\r\n },\r\n set: function (val) {\r\n this._icon = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IconType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconType;\r\n },\r\n set: function (val) {\r\n this._iconType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IconId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconId;\r\n },\r\n set: function (val) {\r\n this._iconId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IconImage', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconImage;\r\n },\r\n set: function (val) {\r\n this._iconImage = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'EntityColor', {\r\n enumerable: true,\r\n get: function () {\r\n return this._entityColor;\r\n },\r\n set: function (val) {\r\n this._entityColor = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'SubjectAreaId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subjectAreaId;\r\n },\r\n set: function (val) {\r\n this._subjectAreaId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'OnDelete', {\r\n enumerable: true,\r\n get: function () {\r\n return this._onDelete;\r\n },\r\n set: function (val) {\r\n this._onDelete = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'TypeName', {\r\n get: function () {\r\n return this._typeName;\r\n },\r\n set: function (val) {\r\n this._typeName = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'LifeStatusName', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatusName;\r\n },\r\n set: function (val) {\r\n this._lifeStatusName = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsView', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isView;\r\n },\r\n set: function (val) {\r\n this._isView = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Query', {\r\n enumerable: true,\r\n get: function () {\r\n return this._query;\r\n },\r\n set: function (val) {\r\n this._query = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'ConnectionString', {\r\n enumerable: true,\r\n get: function () {\r\n return this._connectionString;\r\n },\r\n set: function (val) {\r\n this._connectionString = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsExternalTable', {\r\n enumerable: true,\r\n get: function () {\r\n return !!this._connectionString;\r\n },\r\n set: function (val) {}\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Trigger', {\r\n enumerable: true,\r\n get: function () {\r\n return this._trigger;\r\n },\r\n set: function (val) {\r\n this._trigger = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'SequenceType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sequenceType;\r\n },\r\n set: function (val) {\r\n this._sequenceType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsDynamicView', {\r\n enumerable: false,\r\n get: function () {\r\n if (this._dynamicFields) {\r\n var dynamicFields = this._dynamicFields.split(',');\r\n return dynamicFields.length > 0;\r\n }\r\n return false;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DynamicFields', {\r\n enumerable: true,\r\n get: function () {\r\n return this._dynamicFields;\r\n },\r\n set: function (val) {\r\n this._dynamicFields = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'IsMergeView', {\r\n enumerable: true,\r\n get: function () {\r\n return this._isMergeView;\r\n },\r\n set: function (val) {\r\n this._isMergeView = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'DatabaseId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._databaseId;\r\n },\r\n set: function (val) {\r\n this._databaseId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableBaseModel.prototype, 'Properties', {\r\n enumerable: true,\r\n get: function () {\r\n return this._properties;\r\n },\r\n set: function (val) {\r\n this._properties = val;\r\n }\r\n});","import clone from 'clone';\r\n\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function TableFieldModel() {\r\n\tthis._valTableId = 0;\r\n\tthis._valTableGuid = '';\r\n\tthis._valFieldId = 0;\r\n\tthis._valFieldGuid = '';\r\n\tthis._search60 = false;\r\n\tthis._allowEdit = false;\r\n\tthis._dependsOnId = 0;\r\n\tthis._dependsOnGuid = '';\r\n\tthis._filledById = 0;\r\n\tthis._filledByGuid = '';\r\n\tthis._dependsOnFieldId = 0;\r\n\tthis._dependsOnFieldGuid = '';\r\n\tthis._tableTypeId = 0;\r\n\tthis._tableTypeGuid = null;\r\n\tthis._aliasDefinition = '';\r\n\tBaseModel.apply(this);\r\n};\r\n\r\nTableFieldModel.prototype = Object.create(BaseModel.prototype);\r\nTableFieldModel.prototype.constructor = TableFieldModel;\r\n\r\nTableFieldModel.prototype.FromJSONArray = function (tableFields) {\r\n\tvar tableFieldList = new CollectionModel({ model: TableFieldModel });\r\n\t_.each(tableFields, function (tableField) {\r\n\t\tvar tableFieldModel = new TableFieldModel();\r\n\t\ttableFieldModel.FromJSON(tableField);\r\n\t\ttableFieldList.Add(tableFieldModel);\r\n\t});\r\n\treturn tableFieldList;\r\n};\r\n\r\nTableFieldModel.prototype.toJSON = function () {\r\n\treturn {\r\n\t\tValTableId: this._valTableId,\r\n\t\tValTableGuid: this.ValTableGuid,\r\n\t\tValFieldId: this._valFieldId,\r\n\t\tValFieldGuid: this._valFieldGuid,\r\n\t\tSearch60: this._search60,\r\n\t\tAllowEdit: this._allowEdit,\r\n\t\tDependsOn: this._dependsOnId,\r\n\t\tFilledById: this._filledById,\r\n\t\tFilledByGuid: this._filledByGuid,\r\n\t\tDependsOnFieldId: this._dependsOnFieldId,\r\n\t\tDependsOnFieldGuid: this._dependsOnFieldGuid,\r\n\t\tTableTypeId: this._tableTypeId,\r\n\t\tTableTypeGuid: this._tableTypeGuid,\r\n\t\tAliasDefinition: this._aliasDefinition && JSON.parse(this._aliasDefinition).length ? this._aliasDefinition : null\r\n\t}\r\n};\r\n\r\nTableFieldModel.prototype.FromJSON = function (data) {\r\n\tthis._valTableId = data.ValTableId;\r\n\tthis._valFieldId = data.ValFieldId;\r\n\tthis._tableTypeId = data.TableTypeId;\r\n\tthis._search60 = data.Search60;\r\n\tthis._allowEdit = data.AllowEdit;\r\n\tthis._dependsOnId = data.DependsOn;\r\n\tthis._filledById = data.FilledById;\r\n\tthis._aliasDefinition = data.AliasDefinition;\r\n\tthis._dependsOnFieldId = data.DependsOnFieldId;\r\n\r\n\tif (data.TableTypeId === 0) {\r\n\t\tthis._tableTypeGuid = '-';\r\n\t}\r\n};\r\n\r\nTableFieldModel.prototype.Clone = function () {\r\n\treturn clone(this);\r\n};\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValTableId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valTableId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valTableId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValTableGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valTableGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valTableGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValFieldId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valFieldId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valFieldId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'ValFieldGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._valFieldGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._valFieldGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'Search60', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._search60;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._search60 = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'AllowEdit', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._allowEdit;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._allowEdit = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnFieldId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnFieldId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnFieldId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'DependsOnFieldGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._dependsOnFieldGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._dependsOnFieldGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'FilledById', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._filledById;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._filledById = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'FilledByGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._filledByGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._filledByGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'TableTypeId', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._tableTypeId;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._tableTypeId = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'TableTypeGuid', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._tableTypeGuid;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._tableTypeGuid = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TableFieldModel.prototype, 'AliasDefiniton', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._aliasDefinition;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._aliasDefinition = val;\r\n\t}\r\n});","import clone from 'clone';\r\n\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport function ScreenModel() {\r\n\tthis._id = 0;\r\n\tthis._typeName = '';\r\n\tthis._count = 0;\r\n\tBaseModel.apply(this);\r\n};\r\n\r\nScreenModel.prototype = Object.create(BaseModel.prototype);\r\nScreenModel.prototype.constructor = ScreenModel;\r\n\r\nScreenModel.prototype.FromJSONArray = function (screensJson) {\r\n\tvar screens = new CollectionModel({ model: ScreenModel });\r\n\t_.each(screensJson, function (screen) {\r\n\t\tvar model = new ScreenModel();\r\n\t\tmodel.FromJSON(screen);\r\n\t\tscreens.Add(model);\r\n\t});\r\n\treturn screens;\r\n}\r\n\r\nScreenModel.prototype.Clone = function () {\r\n\treturn clone(this);\r\n}\r\n\r\nScreenModel.prototype.FromJSON = function (data) {\r\n\tthis._id = data.Id;\r\n\tthis._typeName = data.TypeName;\r\n\tthis._count = data.Count;\r\n}\r\n\r\nObject.defineProperty(ScreenModel.prototype, 'Id', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._id;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._id = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(ScreenModel.prototype, 'TypeName', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._typeName;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._typeName = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(ScreenModel.prototype, 'Count', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._count;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._count = val;\r\n\t}\r\n});\r\n","import clone from 'clone';\r\n\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { ScreenModel } from \"DatabaseDesigner/Models/ScreenModel\";\r\nimport { TableBaseModel } from \"DatabaseDesigner/Models/TableBaseModel\";\r\nimport { TableTypeModel } from \"DatabaseDesigner/Models/TableTypeModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport { TranslationModel as MemoTranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { LanguageModel } from \"Core/Controls/BaseControl/Models/LanguageModel\";\r\n\r\nexport function TableModel() {\r\n this._enableDefaultSecurity = false;\r\n this._subjectAreaId = 0;\r\n this._subTypeId = 0;\r\n this._sort = 0;\r\n this._types = new CollectionModel({model: TableTypeModel});\r\n this._screens = new CollectionModel({model: ScreenModel});\r\n this._subTables = new CollectionModel({model: TableBaseModel});\r\n this._translations = new CollectionModel({model: TranslationModel});\r\n this._memo = \"\";\r\n this._memoTranslations = new CollectionModel({model: TranslationModel});\r\n\r\n TableBaseModel.apply(this);\r\n };\r\n\r\n TableModel.prototype = Object.create(TableBaseModel.prototype);\r\n TableModel.prototype.constructor = TableModel;\r\n TableModel.prototype.__super__ = TableBaseModel;\r\n\r\n TableModel.prototype.FromJSONArray = function (tables) {\r\n var tableList = new CollectionModel({model: TableModel});\r\n _.each(tables, function (table) {\r\n var tableModel = new TableModel();\r\n tableModel.FromJSON(table);\r\n tableList.Add(tableModel);\r\n });\r\n return tableList;\r\n }\r\n\r\n TableModel.prototype.Clone = function () {\r\n return clone(this);\r\n }\r\n\r\n TableModel.prototype.FromJSON = function (data) {\r\n var self = this;\r\n this._subTypeId = data.SubTypeId;\r\n this._sort = data.Sort;\r\n this.__super__.prototype.FromJSON.call(this, data);\r\n this._types = TableTypeModel.prototype.FromJSONArray(data.Types);\r\n this._subTables = TableBaseModel.prototype.FromJSONArray(data.SubTables);\r\n this._screens = ScreenModel.prototype.FromJSONArray(data.Screens);\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._memo = data.Memo;\r\n this._memoTranslations = data.MemoTranslations;\r\n\r\n _.each(this.Types.Items, function (type: any) {\r\n if (type._parentId !== 0) {\r\n var model = _.find(self.Types.Items, parentType => parentType.Id === type._parentId && parentType !== type) as any;\r\n if (model) {\r\n type.ParentGuid = model.Guid;\r\n type.UniqueParentGuid = model.UniqueGuid;\r\n }\r\n }\r\n });\r\n\r\n _.each(this.Fields.Items, function (field: any) {\r\n _.each(field.TableFiels.Items, function (tableFiel: any) {\r\n var tableType = _.find(self.Types.Items, function (type: any) {\r\n return type.Id === tableFiel.TableTypeId\r\n });\r\n if (tableType) {\r\n tableFiel.TableTypeGuid = tableType.Guid;\r\n }\r\n });\r\n });\r\n };\r\n\r\n TableModel.prototype.toJSON = function (onlyModified) {\r\n var result = this.__super__.prototype.toJSON.call(this, onlyModified);\r\n if (!result) {\r\n result = {};\r\n }\r\n result.ShortName = this.ShortName;\r\n result.Sort = this.Sort;\r\n result.TypeId = this.TypeId;\r\n result.SubTypeId = this._subTypeId;\r\n result.IsModified = this._isModified;\r\n result.EnableDefaultSecurity = this._enableDefaultSecurity;\r\n result.Types = this.Types.toJSON(onlyModified),\r\n result.Translations = this.Translations.toJSON(),\r\n result.SubTables = this.SubTables.toJSON(onlyModified);\r\n result.MemoTranslations = this.MemoTranslations;\r\n result.Memo = this.Memo;\r\n window['DatabaseDesigner'].IsModified(this._isModified);\r\n if (this.SubjectAreaId !== 0)\r\n result.SubjectAreaId = this.SubjectAreaId;\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n\r\n TableModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({model: TranslationModel});\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n }\r\n\r\n\r\n TableModel.prototype.CreateMemoTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._memoTranslations = [];\r\n\r\n _.forEach(languages, function (language: LanguageModel) {\r\n var translation = new MemoTranslationModel();\r\n translation.Language = new LanguageModel(language.K_Language, language.Name, language.ShortName, language.Enabled, language.FlagBase64);\r\n translation.Translation = \"\";\r\n self._memoTranslations.push(translation);\r\n });\r\n }\r\n };\r\n\r\n Object.defineProperty(TableModel.prototype, 'EnableDefaultSecurity', {\r\n enumerable: true,\r\n get: function () {\r\n return this._enableDefaultSecurity;\r\n },\r\n set: function (val) {\r\n this._enableDefaultSecurity = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'SubTypeId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subTypeId;\r\n },\r\n set: function (val) {\r\n this._subTypeId = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'SubTables', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subTables;\r\n },\r\n set: function (val) {\r\n this._subTables = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Types', {\r\n enumerable: true,\r\n get: function () {\r\n return this._types;\r\n },\r\n set: function (val) {\r\n this._types = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Sort', {\r\n enumerable: true,\r\n get: function () {\r\n return this._sort;\r\n },\r\n set: function (val) {\r\n this._sort = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'SubjectAreaId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._subjectAreaId;\r\n },\r\n set: function (val) {\r\n this._subjectAreaId = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Screens', {\r\n enumerable: true,\r\n get: function () {\r\n return this._screens;\r\n },\r\n set: function (val) {\r\n this._screens = val;\r\n }\r\n });\r\n\r\n\r\n Object.defineProperty(TableModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n });\r\n\r\n Object.defineProperty(TableModel.prototype, 'MemoTranslations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memoTranslations;\r\n },\r\n set: function (val) {\r\n this._memoTranslations = val;\r\n }\r\n });","import { TranslationModel } from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\nimport { deserialize, deserializeAs } from \"libs/cerialize\";\r\n\r\nexport class LIfecycleLinkDto {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n ApprovalId: number;\r\n\r\n @deserialize\r\n Guid: string;\r\n\r\n @deserialize\r\n GuidStepFrom: string;\r\n\r\n @deserialize\r\n GuidStepTo: string;\r\n\r\n @deserialize\r\n IdStepFrom: number;\r\n\r\n @deserialize\r\n IdStepTo: number;\r\n\r\n @deserialize\r\n IsNew: boolean;\r\n\r\n @deserialize\r\n Json: string;\r\n\r\n @deserialize\r\n Label: string;\r\n\r\n @deserialize\r\n NextAllowed: boolean;\r\n\r\n @deserialize\r\n TestCondition: number;\r\n\r\n @deserializeAs(TranslationModel)\r\n Translations: Array<TranslationModel>\r\n\r\n @deserialize\r\n UserId: number;\r\n\r\n @deserialize\r\n StepsScreenId: number;\r\n}","import { deserialize, deserializeAs } from \"libs/cerialize\";\r\nimport { LIfecycleLinkDto } from \"./LifecycleLinkDto\";\r\nimport { LifecycleStepDto } from \"./LifecycleStepDto\";\r\n\r\nexport class LifecycleDto {\r\n @deserializeAs(LifecycleStepDto)\r\n Steps: Array<LifecycleStepDto>;\r\n\r\n @deserializeAs(LIfecycleLinkDto)\r\n Links: Array<LIfecycleLinkDto>;\r\n\r\n @deserialize\r\n IsModified: boolean;\r\n}","import clone from 'clone';\r\n\r\nimport { ModelState } from \"Core/Common/Enums/ModelState\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { BaseModel } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { KindModel } from \"DatabaseDesigner/Models/KindModel\";\r\nimport { LifeStatusModel } from \"DatabaseDesigner/Models/LifestatusModel\";\r\nimport { RelationTypeFiltersModel } from \"DatabaseDesigner/Models/RelationTypeFiltersModel\";\r\nimport { RelationTypeValueModel } from \"DatabaseDesigner/Models/RelationTypeValueModel\";\r\nimport { TranslationModel } from \"DatabaseDesigner/Models/TranslationModel\";\r\nimport { TypeRestrictionModel } from \"DatabaseDesigner/Models/TypeRestrictionModel\";\r\nimport { LifecycleDto } from 'Core/LifecycleDesigner/Models/DTO/LifecycleDto';\r\nimport { GenericDeserialize } from '../../libs/cerialize';\r\nimport { LifecycleStepDto } from 'Core/LifecycleDesigner/Models/DTO/LifecycleStepDto';\r\nimport { LIfecycleLinkDto } from 'Core/LifecycleDesigner/Models/DTO/LifecycleLinkDto';\r\n\r\nexport function TableTypeModel() {\r\n this._id = null;\r\n this._parentId = 0;\r\n this._parentGuid = '';\r\n this._flowFolder = false;\r\n this._treeLevel = 0;\r\n this._memo = '';\r\n this._instancingMaximum = 1;\r\n this._name = 'New Type';\r\n this._uniqueGuid = Guid.NewGuid();\r\n this._uniqueParentGuid = '';\r\n this._icon = null;\r\n this._iconId = null;\r\n this._iconImage = null;\r\n this._iconType = null;\r\n this._lifeStatus = -1;\r\n this._lifestatusDesignObject = null;\r\n this._lifeStatuses = new CollectionModel({ model: LifeStatusModel });\r\n this._kinds = new CollectionModel({ model: KindModel });\r\n this._values = new CollectionModel({ model: RelationTypeValueModel });\r\n this._filters = new CollectionModel({ model: RelationTypeFiltersModel });\r\n this._restrictions = new CollectionModel({ model: TypeRestrictionModel });\r\n this._currentKindId = 0;\r\n this._isRoot = false;\r\n this._savedLifestatus = this._lifeStatus;\r\n this._translations = new CollectionModel({ model: TranslationModel });\r\n BaseModel.apply(this);\r\n};\r\n\r\nTableTypeModel.prototype = Object.create(BaseModel.prototype);\r\nTableTypeModel.prototype.constructor = TableTypeModel;\r\n\r\nTableTypeModel.prototype.FromJSONArray = function (types) {\r\n var typeList = new CollectionModel({ model: TableTypeModel });\r\n _.each(types, function (type: any) {\r\n var existsModel = _.find(typeList.Items, function (item: any) {\r\n return item.Id === type.Id;\r\n });\r\n var model = new TableTypeModel();\r\n if (existsModel) {\r\n model.Guid = existsModel.Guid;\r\n }\r\n model.FromJSON(type);\r\n typeList.Add(model);\r\n });\r\n return typeList;\r\n};\r\n\r\nTableTypeModel.prototype.toJSON = function (onlyModified) {\r\n var result = {\r\n Id: this.Id,\r\n Name: this.Name,\r\n ParentId: this.ParentId,\r\n ParentGuid: this.ParentGuid,\r\n Guid: this.Guid,\r\n IsModified: this.IsModified,\r\n FlowFolder: this.FlowFolder,\r\n LifeStatus: this.LifeStatus,\r\n LifeStatuses: this.LifeStatuses.toJSON(),\r\n Icon: this.Icon,\r\n IconId: this.IconId,\r\n IconImage: this.IconImage,\r\n IconType: this.IconType,\r\n LifestatusDesignObject: this.LifestatusDesignObject,\r\n RoleLifes: this.RoleLifes,\r\n Memo: this.Memo,\r\n Kinds: this.Kinds.toJSON(),\r\n Values: this.Values.toJSON(),\r\n Restrictions: this.Restrictions.toJSON(),\r\n Filters: this.Filters.GetItemsWhereIn('State', [ModelState.New, ModelState.Changed, ModelState.Deleted]).map(function (filter) {\r\n return filter.toJSON()\r\n }),\r\n CurrentKindId: this.CurrentKindId,\r\n IsRoot: this.IsRoot,\r\n IsLifestatusModified: this._savedLifestatus !== this._lifeStatus,\r\n Translations: this.Translations.toJSON(),\r\n InstancingMaximum: this.InstancingMaximum\r\n };\r\n\r\n if (onlyModified && onlyModified === true) {\r\n if (this._isModified !== true) {\r\n result = null;\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nTableTypeModel.prototype.Clone = function () {\r\n return clone(this);\r\n}\r\n\r\nTableTypeModel.prototype.FromJSON = function (data) {\r\n this._id = data.Id;\r\n this._name = data.Name;\r\n this._parentId = data.ParentId;\r\n this._flowFolder = data.FlowFolder;\r\n this._lifeStatus = data.LifeStatus;\r\n this._savedLifestatus = data.LifeStatus;\r\n this._icon = data.Icon;\r\n this._iconId = data.IconId;\r\n this._iconImage = data.IconImage;\r\n this._iconType = data.IconType;\r\n this._memo = data.Memo;\r\n this._instancingMaximum = data.InstancingMaximum;\r\n this._kinds = KindModel.prototype.FromJSONArray(data.Kinds);\r\n this._restrictions = TypeRestrictionModel.FromJSONArray(data.Restrictions);\r\n this._values = RelationTypeValueModel.prototype.FromJSONArray(data.Values);\r\n this._filters = RelationTypeFiltersModel.prototype.FromJSONArray(data.Filters);\r\n this._lifeStatuses = LifeStatusModel.prototype.FromJSONArray(data.LifeStatuses);\r\n this._currentKindId = data.CurrentKindId;\r\n this._translations = TranslationModel.prototype.FromJSONArray(data.Translations);\r\n this._lifestatusDesignObject = GenericDeserialize<LifecycleDto>(data.LifestatusDesignObject, LifecycleDto);\r\n\r\n if (this._lifestatusDesignObject && this._lifestatusDesignObject.Steps) {\r\n _.each(this._lifestatusDesignObject.Steps, (step: LifecycleStepDto)=>{\r\n\r\n const lifeStatusItem = _.find(this._lifeStatuses.Items, (status: any) => status.Id === step.Id);\r\n if(lifeStatusItem){\r\n step.LifeStatusGuid = lifeStatusItem.Guid;\r\n }\r\n\r\n _.each(this._lifestatusDesignObject.Links, (link: LIfecycleLinkDto)=>{\r\n if(link.IdStepFrom === step.Id){\r\n link.GuidStepFrom = step.Guid;\r\n }\r\n if(link.IdStepTo === step.Id){\r\n link.GuidStepTo = step.Guid;\r\n }\r\n });\r\n });\r\n }\r\n\r\n this._isRoot = data.IsRoot;\r\n}\r\n\r\nTableTypeModel.prototype.CreateDefaultTranslations = function (languages) {\r\n if (languages) {\r\n var self = this;\r\n self._translations = new CollectionModel({ model: TranslationModel });\r\n\r\n _.forEach(languages, function (language) {\r\n var translation = new TranslationModel();\r\n translation.Language = language;\r\n self._translations.Add(translation);\r\n });\r\n }\r\n}\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Id', {\r\n enumerable: true,\r\n get: function () {\r\n return this._id;\r\n },\r\n set: function (val) {\r\n this._id = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Kinds', {\r\n enumerable: true,\r\n get: function () {\r\n return this._kinds;\r\n },\r\n set: function (val) {\r\n this._kinds = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Values', {\r\n enumerable: true,\r\n get: function () {\r\n return this._values;\r\n },\r\n set: function (val) {\r\n this._values = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Filters', {\r\n enumerable: true,\r\n get: function () {\r\n return this._filters;\r\n },\r\n set: function (val) {\r\n this._filters = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Restrictions', {\r\n enumerable: true,\r\n get: function () {\r\n return this._restrictions;\r\n },\r\n set: function (val) {\r\n this._restrictions = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'LifeStatuses', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatuses;\r\n },\r\n set: function (val) {\r\n this._lifeStatuses = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'CurrentKindId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._currentKindId;\r\n },\r\n set: function (val) {\r\n this._currentKindId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Name', {\r\n enumerable: true,\r\n get: function () {\r\n return this._name;\r\n },\r\n set: function (val) {\r\n this._name = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'LifeStatus', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifeStatus;\r\n },\r\n set: function (val) {\r\n this._lifeStatus = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Memo', {\r\n enumerable: true,\r\n get: function () {\r\n return this._memo;\r\n },\r\n set: function (val) {\r\n this._memo = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'InstancingMaximum', {\r\n enumerable: true,\r\n get: function () {\r\n return this._instancingMaximum;\r\n },\r\n set: function (val) {\r\n this._instancingMaximum = val;\r\n }\r\n});\r\n\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'FlowFolder', {\r\n enumerable: true,\r\n get: function () {\r\n return this._flowFolder;\r\n },\r\n set: function (val) {\r\n this._flowFolder = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'ParentId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._parentId;\r\n },\r\n set: function (val) {\r\n this._parentId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'ParentGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._parentGuid;\r\n },\r\n set: function (val) {\r\n this._parentGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'TreeLevel', {\r\n enumerable: true,\r\n get: function () {\r\n return this._treeLevel;\r\n },\r\n set: function (val) {\r\n this._treeLevel = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'UniqueGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._uniqueGuid;\r\n },\r\n set: function (val) {\r\n this._uniqueGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'UniqueParentGuid', {\r\n enumerable: true,\r\n get: function () {\r\n return this._uniqueParentGuid;\r\n },\r\n set: function (val) {\r\n this._uniqueParentGuid = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Icon', {\r\n enumerable: true,\r\n get: function () {\r\n return this._icon;\r\n },\r\n set: function (val) {\r\n this._icon = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IconId', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconId;\r\n },\r\n set: function (val) {\r\n this._iconId = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'LifestatusDesignObject', {\r\n enumerable: true,\r\n get: function () {\r\n return this._lifestatusDesignObject;\r\n },\r\n set: function (val) {\r\n this._lifestatusDesignObject = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IconImage', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconImage;\r\n },\r\n set: function (val) {\r\n this._iconImage = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IconType', {\r\n enumerable: true,\r\n get: function () {\r\n return this._iconType;\r\n },\r\n set: function (val) {\r\n this._iconType = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'IsRoot', {\r\n get: function () {\r\n return this._isRoot;\r\n },\r\n set: function (val) {\r\n this._isRoot = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'Translations', {\r\n enumerable: true,\r\n get: function () {\r\n return this._translations;\r\n },\r\n set: function (val) {\r\n this._translations = val;\r\n }\r\n});\r\n\r\nObject.defineProperty(TableTypeModel.prototype, 'TypeNameMaxSize', {\r\n enumerable: true,\r\n get: function () {\r\n return this._typeNameMaxSize;\r\n },\r\n set: function (val) {\r\n this._typeNameMaxSize = val;\r\n }\r\n});\r\n","import { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\nimport { LanguageModel } from \"DatabaseDesigner/Models/LanguageModel\";\r\n\r\nexport function TranslationModel() {\r\n\tthis._translation = \"\";\r\n\tthis._selected = \"\";\r\n\tthis._language = null;\r\n};\r\n\r\nTranslationModel.prototype.FromJSONArray = function (data) {\r\n\tvar translations = new CollectionModel({ model: TranslationModel });\r\n\t_.each(data, function (translation) {\r\n\t\tvar model = new TranslationModel();\r\n\t\tmodel.FromJSON(translation);\r\n\t\ttranslations.Add(model);\r\n\t});\r\n\treturn translations;\r\n};\r\n\r\nTranslationModel.prototype.FromJSON = function (data) {\r\n\tthis._translation = data.Translation;\r\n\tthis._selected = data.Selected;\r\n\tthis._language = new LanguageModel();\r\n\tthis._language.FromJSON(data.Language);\r\n};\r\n\r\nTranslationModel.prototype.toJSON = function () {\r\n\treturn {\r\n\t\tTranslation: this._translation,\r\n\t\tLanguage: this._language.toJSON()\r\n\t};\r\n};\r\n\r\nObject.defineProperty(TranslationModel.prototype, 'Translation', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._translation;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._translation = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TranslationModel.prototype, 'Selected', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._selected;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._selected = val;\r\n\t}\r\n});\r\n\r\nObject.defineProperty(TranslationModel.prototype, 'Language', {\r\n\tenumerable: true,\r\n\tget: function () {\r\n\t\treturn this._language;\r\n\t},\r\n\tset: function (val) {\r\n\t\tthis._language = val;\r\n\t}\r\n});","import { BaseModelClass } from \"DatabaseDesigner/Models/BaseModel\";\r\nimport { CollectionModel } from \"DatabaseDesigner/Models/CollectionModel\";\r\n\r\nexport class TypeRestrictionModel extends BaseModelClass {\r\n\r\n _id: any;\r\n _typeId: any;\r\n _typeGuid: any;\r\n _roleId: any;\r\n _roleGuid: any;\r\n _value: any;\r\n\r\n constructor() {\r\n super();\r\n\r\n this._id = null;\r\n this._typeId = null;\r\n this._typeGuid = null;\r\n this._roleId = null;\r\n this._roleGuid = null;\r\n this._value = null;\r\n }\r\n\r\n get Id() {\r\n return this._id;\r\n }\r\n\r\n set Id(id) {\r\n this._id = id;\r\n }\r\n\r\n get TypeId() {\r\n return this._typeId;\r\n }\r\n\r\n set TypeId(id) {\r\n this._typeId = id;\r\n }\r\n\r\n get TypeGuid() {\r\n return this._typeGuid;\r\n }\r\n\r\n set TypeGuid(guid) {\r\n this._typeGuid = guid;\r\n }\r\n\r\n get RoleId() {\r\n return this._roleId;\r\n }\r\n\r\n set RoleId(id) {\r\n this._roleId = id;\r\n }\r\n\r\n get RoleGuid() {\r\n return this._roleGuid;\r\n }\r\n\r\n set RoleGuid(guid) {\r\n this._roleGuid = guid;\r\n }\r\n\r\n get Value() {\r\n return this._value;\r\n }\r\n\r\n set Value(value) {\r\n this._value = value;\r\n }\r\n\r\n FromJSON(data) {\r\n this._id = data.Id;\r\n this._typeId = data.TypeId;\r\n this._roleId = data.RoleId;\r\n this._value = data.Value;\r\n }\r\n\r\n toJSON() {\r\n return {\r\n Id: this._id,\r\n Guid: this._guid,\r\n TypeId: this._typeId,\r\n TypeGuid: this._typeGuid,\r\n RoleId: this._roleId,\r\n RoleGuid: this._roleGuid,\r\n Value: this._value\r\n };\r\n }\r\n\r\n static FromJSONArray(restrictions) {\r\n const restrictionsCollection = new CollectionModel({ model: TypeRestrictionModel });\r\n\r\n _.each(restrictions, restriction => {\r\n const model = new TypeRestrictionModel();\r\n model.FromJSON(restriction);\r\n restrictionsCollection.Add(model);\r\n });\r\n\r\n return restrictionsCollection;\r\n }\r\n}","import * as moment from 'moment';\r\nimport 'inputmask';\r\n\r\nimport {GlobalManager, GLOBALS} from 'Core/GlobalManager/GlobalManager';\r\nimport {DATE_FORMATS} from 'Core/Constants/DateTimeFormats';\r\nimport {FieldFormat} from 'Core/Common/FieldFormat';\r\nimport {Format} from '../DatabaseDesigner/FieldConfig';\r\n\r\nexport class FormatConverter {\r\n static SetLocale(): void {\r\n moment.locale(GlobalManager.Instance.GetCulture());\r\n }\r\n\r\n static GetLocale(): string {\r\n return GlobalManager.Instance.GetCulture();\r\n }\r\n\r\n static ConvertFromDefaultFormat(initialDate: string, toFormat: string): string {\r\n if (!initialDate) return null;\r\n\r\n const _format = toFormat || DATE_FORMATS.SHORT_DATE.Format;\r\n\r\n let outputDate = moment(initialDate).isValid() ? moment(initialDate).format(_format) : initialDate;\r\n\r\n if (!moment(outputDate).isValid() && !moment('2018-08-28T' + outputDate).isValid()) {\r\n outputDate = moment(initialDate, DATE_FORMATS.SAVE_FORMAT.Format).format(_format);\r\n }\r\n\r\n return outputDate;\r\n }\r\n\r\n static ConvertToDefaultFormat(initialDate: string, initialFormat: string) {\r\n if (!initialDate) return null;\r\n\r\n return moment(initialDate, initialFormat).format(DATE_FORMATS.SAVE_FORMAT.Format);\r\n }\r\n\r\n static ConvertToUTC(initialDate: string, initialFormat: string) {\r\n if (!initialDate) return null;\r\n\r\n return moment(initialDate, initialFormat).format();\r\n }\r\n\r\n static ConvertDecimal(value: string): string {\r\n if (!value) return null;\r\n\r\n const n = 1.1;\r\n const separator: string =\r\n n.toLocaleString(FormatConverter.GetLocale()).substring(1, 2);\r\n\r\n return value.replace(/[.,]/g, separator);\r\n }\r\n\r\n static LocalizeDecimalOrInteger(value: string) {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return Inputmask.format(value.replace(/[.,]/g, '.'), {\r\n alias: 'decimal',\r\n radixPoint: FormatConverter.GetSeparator(),\r\n autoGroup: true,\r\n groupSeparator: FormatConverter.GetGroupSeparator()\r\n });\r\n }\r\n\r\n static GetSeparator() {\r\n const culture = FormatConverter.GetLocale();\r\n const n = 1.1;\r\n return n.toLocaleString(culture).substring(1, 2);\r\n }\r\n\r\n static GetGroupSeparator() {\r\n const culture = FormatConverter.GetLocale();\r\n const n = 11111.1;\r\n const formatted = n.toLocaleString(culture);\r\n const [groupSeparator] = /\\D/.exec(formatted);\r\n\r\n return groupSeparator;\r\n }\r\n\r\n static GetDateLocalizedSeparator() {\r\n const formatter = new Intl.DateTimeFormat(FormatConverter.GetLocale(), {month: '2-digit', day: '2-digit'});\r\n return formatter.format(new Date(\"11/11/1111\")).replace(/1/g, \"\") || \"-\";\r\n }\r\n\r\n private static GetISODateFormat(formatName: string, formatType: string): string {\r\n let format;\r\n switch (formatName) {\r\n case FieldFormat.MMM_YYYY:\r\n case FieldFormat.DD_MM:\r\n case FieldFormat.DD_MMM:\r\n case FieldFormat.MM_YY:\r\n case FieldFormat.DD_MMM_YYYY:\r\n case FieldFormat.YYYY_WW: {\r\n\r\n const formatEnum = FieldFormat.GetFormat(formatName);\r\n format = DATE_FORMATS[formatEnum][formatType].replace(/-/g, FormatConverter.GetDateLocalizedSeparator());\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n return format;\r\n }\r\n\r\n static GetDateFormatFromFieldModel(model, returnFormatWithLocale: boolean = true, extendedModel?): string {\r\n if (!model) {\r\n return;\r\n }\r\n\r\n const formatType = returnFormatWithLocale ? 'MomentFormat' : 'Format';\r\n\r\n const fieldType = model.Type || model.FieldTypeName;\r\n\r\n if (!fieldType) {\r\n return DATE_FORMATS.SHORT_DATE.MomentFormat;\r\n }\r\n\r\n const formatName = model.FormatName || model.FieldTypeFormat;\r\n\r\n let format;\r\n\r\n switch (fieldType) {\r\n case FieldFormat.DATE: {\r\n format = FormatConverter.GetISODateFormat(formatName, formatType);\r\n if (format) break;\r\n\r\n if (FieldFormat.IsLongDate(formatName)) {\r\n format = DATE_FORMATS.LONG_DATE[formatType];\r\n } else {\r\n format = DATE_FORMATS.SHORT_DATE[formatType];\r\n }\r\n break;\r\n }\r\n case FieldFormat.DATETIME:\r\n format = FormatConverter.GetISODateFormat(formatName, formatType);\r\n if (format) break;\r\n\r\n if (FieldFormat.IsLongDate(formatName)) {\r\n format = DATE_FORMATS.FULL_DATETIME[formatType];\r\n } else {\r\n format = DATE_FORMATS.DATE_TIME[formatType];\r\n }\r\n\r\n break;\r\n case FieldFormat.TIME:\r\n if (FieldFormat.IsLongTime(formatName)) {\r\n format = DATE_FORMATS.LONG_TIME[formatType];\r\n } else {\r\n format = DATE_FORMATS.TIME[formatType];\r\n }\r\n\r\n break;\r\n case FieldFormat.TIMESPAN:\r\n if (FieldFormat.IsLongTime(formatName)) {\r\n format = DATE_FORMATS.TIME_SPAN_LONG[formatType];\r\n } else {\r\n format = DATE_FORMATS.TIME_SPAN[formatType];\r\n }\r\n\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return format;\r\n }\r\n\r\n static CorrectTimezone(date: string, reverseShift?: boolean): string {\r\n\r\n if ((moment(date) as any)._tzm) {\r\n return date;\r\n } else {\r\n return this.ShiftTimeZone(date, reverseShift);\r\n }\r\n }\r\n\r\n static ShiftTimeZone(date: string, reverseShift?: boolean): string {\r\n let timeZoneShift = moment(date).utcOffset() / 60;\r\n\r\n if (!moment(date).isValid() || !isNaN(+date)) {\r\n return date;\r\n }\r\n\r\n if (reverseShift) {\r\n timeZoneShift *= -1;\r\n }\r\n\r\n return moment(date).add(timeZoneShift, 'hours').format();\r\n }\r\n\r\n static FormatToDay(date: string, format?: string): any {\r\n let correctDate = moment(this.CorrectTimezone(date)).hours(0).minutes(0).seconds(0);\r\n if (format) {\r\n return correctDate.format(format);\r\n }\r\n return correctDate;\r\n }\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\n\r\nexport class HelpBookStore {\r\n\tstatic GetScreens(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetScreens\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: model\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\r\n\tstatic GetEntities(): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetEntities\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\r\n\tstatic GetEntityInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetEntityInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\tstatic GetTypeInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetTypeInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\tstatic GetScreenInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetScreenInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n\r\n\tstatic GetControlInfo(model): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: \"api/HelpPagesApi/GetControlInfo\",\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: { id: model.id }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\r\n\t}\r\n\r\n} \r\n\r\n","import * as ko from 'knockout';\r\nimport { Guid } from \"Core/Common/Guid\";\r\n\r\nimport HelpDescriptionTemplate from 'HelpBook/HelpDescription/Templates/HelpDescription.html';\r\nko.templates['HelpBook/HelpDescription/Templates/HelpDescription'] = HelpDescriptionTemplate;\r\n\r\nexport class HelpDescription {\r\n\r\n\tprivate noDescription: KnockoutObservable<boolean>;\r\n\tprivate _guid: string;\r\n\tprivate _editor: any;\r\n\tprivate description: KnockoutObservable<string>;\r\n\tprivate previewText: KnockoutObservable<string>;\r\n\tprivate showFullDescription: KnockoutObservable<boolean>;\r\n\r\n\tprivate isActive: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(description) {\r\n\t\tthis.noDescription = ko.observable(false);\r\n\t\tthis._guid = Guid.NewGuid();\r\n\t\tthis.isActive = ko.observable(false);\r\n\t\tthis.description = ko.observable(description);\r\n\t\tthis.showFullDescription = ko.observable(false);\r\n\t\tthis.previewText = ko.observable('');\r\n\t\tif (!this.description() || !this.description().trim()) {\r\n\t\t\tthis.noDescription(true);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tToggleDescription() {\r\n\t\tthis.showFullDescription(!this.showFullDescription());\r\n\t}\r\n\r\n\tAfterTinyInit(editor) {\r\n\r\n\t\tthis._editor = editor;\r\n\t\teditor.setMode('readonly');\r\n\t\teditor.setContent(this.description());\r\n\t\tthis.previewText(this.description().replace(/<[^>]*>/g, \"\").substr(0, 45) + '...');\r\n\t}\r\n\r\n\tGetEditor() {\r\n\t\treturn this._editor;\r\n\t}\r\n\r\n\tActivateDescription() {\r\n\t\tthis.isActive(!this.isActive());\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpDescription/Templates/HelpDescription';\r\n\t}\r\n\r\n}","// Module\nvar code = \"<!-- ko if:!noDescription()--> <!--<div class=\\\"preview-text-container\\\" data-bind=\\\"css: {hidden: showFullDescription}\\\">\\r\\n\\t<span data-bind=\\\"html: previewText\\\"></span>\\r\\n\\t<a class=\\\"show-more\\\" data-bind=\\\"click: $data.ToggleDescription.bind($data)\\\">show full description</a>\\r\\n\\r\\n</div>\\r\\n\\r\\n<button type=\\\"button\\\" class=\\\"show-less btn btn-link\\\" data-bind=\\\"click: $data.ToggleDescription.bind($data), css: {hidden: !showFullDescription()}\\\">Show less</button>--> <!--<div data-bind=\\\"css: {hidden: !showFullDescription()}\\\"> --> <!-- ko if: isActive--> <textarea data-bind=\\\" attr: {id: _guid},\\r\\n\\t\\t\\ttinymce : {\\r\\n\\t\\t\\t\\t\\tguid: _guid,\\r\\n\\t\\t\\t\\t\\treadOnly: true,\\r\\n\\t\\t\\t\\t\\tautofocus: false,\\r\\n\\t\\t\\t\\t\\tmin_height: '500',\\r\\n\\t\\t\\t\\t\\tafterInit: $data.AfterTinyInit.bind($data) \\r\\n\\t\\t\\t }\\\" class=\\\"mail-body-editor\\\">\\r\\n\\t</textarea> <!-- /ko --> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport HelpStatusFlowTemplate from 'HelpBook/HelpStatusFlow/Templates/HelpStatusFlow.html';\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\n\r\nko.templates['HelpBook/HelpStatusFlow/Templates/HelpStatusFlow'] = HelpStatusFlowTemplate;\r\n\r\nexport class HelpStatusFlow {\r\n\tprivate isStatusFlowActive: KnockoutObservable<boolean>;\r\n\tprivate _typeId: number;\r\n\r\n\tconstructor(typeId: number) {\r\n\t\tthis.isStatusFlowActive = ko.observable(true);\r\n\t\tthis._typeId = typeId;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tHelpBook.Instance.BuildLifecicleDesignerFlow(this._typeId);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpStatusFlow/Templates/HelpStatusFlow';\r\n\t}\r\n}","// Module\nvar code = \"<div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $root.ClickStatusFlow.bind($root)\\\" href=\\\"#lifestatus-diagram\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"true\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isStatusFlowActive, 'glyphicon-chevron-right' : !$data.isStatusFlowActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <a class=\\\"title\\\" data-bind=\\\"text: $root._labels.STATUS_FLOW\\\"></a> </div> <div class=\\\"collapse in list-group list-group-root border-left lifeStatusDiagramContainer\\\" id=\\\"lifestatus-diagram\\\"> <div class=\\\"list-group list-group-item\\\"> <div class=\\\"lifecycle-designer-help-root\\\"> <div id=\\\"flow-designer\\\" class=\\\"flow-designer\\\"></div> <div class=\\\"paper-wrapper\\\"> <div id=\\\"paper-scroller\\\" class=\\\"paper-scroller\\\"></div> </div> </div> </div> <!-- ko foreach: $root.lifestatuses --> <div class=\\\"list-group-item list-group-item-action\\\"> <a class=\\\"\\\" data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($parents[1]), attr: {href: '#' + Id}\\\"> <!-- ko if: isAnythingAttached --> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isActive, 'glyphicon-chevron-right' : !$data.isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-right\\\"></i> <!-- /ko --> <span data-bind=\\\"text: Name\\\"></span> </a> <!-- ko if: isAnythingAttached --> <div class=\\\"collapse\\\" data-bind=\\\"attr: {id: Id}\\\"> <div class=\\\"list-group list-group-item\\\"> <!-- ko if: isSettigsDisplays --> <span data-bind=\\\"text: $root._labels.SETTINGS\\\" class=\\\"flow-title\\\"></span> <div class=\\\"items-wrapper\\\"> <!-- ko if: isTriggersSet --> <div class=\\\"item\\\"> <i class=\\\"fa fa-bolt\\\"></i> <!-- ko text: $root._labels.SETTING_THE_STATUS_RUNS --><!-- /ko --> <span data-bind=\\\"text: ` (${dwPackagesNames})`\\\"></span> </div> <!-- /ko --> <!-- ko if: NoActionNode --> <div class=\\\"item\\\"> <i class=\\\"fa fa-arrow-up\\\"></i> <!-- ko text: $root._labels.FOLLOW_UP_DOES_NOT_CREATE_AN_ACTION --><!-- /ko --> </div> <!-- /ko --> <!-- ko if: DateElapsed --> <div class=\\\"item\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: $root._labels.DURATION_IS_SET --><!-- /ko --> <span data-bind=\\\"text: dateElapsed\\\"></span> </div> <!-- /ko --> <!-- ko if: DeadlineElapsed --> <div class=\\\"item\\\"> <i class=\\\"fa fa-clock-o\\\"></i> <!-- ko text: $root._labels.DEADLINE_IS_SET --><!-- /ko --> Deadline of the related action is automatically set to <span data-bind=\\\"text: deadlineElapsed\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: businessRoles && businessRoles.length --> <span data-bind=\\\"text: `${$root._labels.BUSINESS_ROLES}:`\\\" class=\\\"flow-title\\\"></span> <div class=\\\"items-wrapper\\\"> <!-- ko foreach: businessRoles --> <div class=\\\"item\\\"> <i class=\\\"fa fa-briefcase\\\"></i> <span data-bind=\\\"text: ` ${Name}`\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko if: dwPackages && dwPackages.length --> <!-- ko foreach: dwPackages --> <span data-bind=\\\"text: `${$root._labels.FUNCTIONS +' - '+ Name}`\\\" class=\\\"flow-title\\\"></span> <div class=\\\"items-wrapper functions\\\"> <!-- ko foreach: Functions --> <div class=\\\"item\\\"> <i class=\\\"fa fa-code\\\"></i> <span data-bind=\\\"text: ` ${Name} `\\\"></span> <!-- ko text: $data.TypeName --><!-- /ko --> <span data-bind=\\\"text:` (${APIPackageName} `\\\"></span> <!-- ko text: $root._canvasTypes.API_PACKAGE + ') - ' --><!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> </div> <!-- /ko --> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"if: $data.selectedEntityHasData\\\"> <h3 class=\\\"help-entity-title\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span class=\\\"align-middle\\\" data-bind=\\\"text: $data.selectedEntityTranslatedName || $data.selectedEntityName\\\"></span> </h3> <!-- ko if: $data.selectedEntityDescription --> <div class=\\\"help-entity-description\\\" data-bind=\\\"text: $data.selectedEntityTranslatedName || $data.selectedEntityDescription\\\"></div> <!-- /ko --> <!-- ko if: $data.selectedEntityTypesList().length --> <div class=\\\"types-list\\\"> <span data-bind=\\\"text: `${_labels.TYPES}:`\\\"></span> <!-- ko foreach: $data.selectedEntityTypesList --> <div class=\\\"type-item\\\"> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> <span data-bind=\\\"text: TranslatedName\\\"></span> </div> <!-- /ko --> </div> <!-- /ko --> <!-- ko foreach: $data.selectedEntityTypes --> <div class=\\\"list-group-item list-group-item-action\\\"> <a class=\\\"\\\" data-bind=\\\"\\r\\n\\t\\t click: $data.Click.bind($parents[1])\\\" href=\\\"javascript:void(0)\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isActive, 'glyphicon-chevron-right' : !$data.isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <span data-bind=\\\"text: TranslatedName || Name\\\"></span> <!-- ko if: Name === '-' --> <span data-bind=\\\"text: ` (${$parent._labels.DASH})`\\\"></span> <!-- /ko --> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> </a> </div> <div data-bind=\\\"if: $data.isActive\\\"> <div class=\\\"list-group border-left\\\"> <!-- ko if: (Id !== 0 && StepsCount > 0) --> <!-- ko with: $data.HelpStatusFlow --> <!-- ko template: {name: $root.GetStatusFlowTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- ko with: $root.ActiveHelpScreen --> <!-- ko template: {name: $root.GetScreenTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> <div data-bind=\\\"if: selectedEntityHasNoData\\\"> <h3>There is no available help information.</h3> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\nimport {HelpStatusFlow} from \"HelpBook/HelpStatusFlow/HelpStatusFlow\";\r\n\r\nimport {HelpBook} from 'HelpBook/HelpBook';\r\n\r\nimport HelpEntityTemplate from 'HelpBook/HelpEntity/Templates/HelpEntity.html';\r\nimport {LABELS} from \"../../Core/Components/Translation/Locales\";\r\n\r\nko.templates['HelpBook/HelpEntity/Templates/HelpEntity'] = HelpEntityTemplate;\r\n\r\nexport class HelpEntity {\r\n private selectedEntityName: KnockoutObservable<string>;\r\n private selectedEntityTranslatedName: KnockoutObservable<string>;\r\n private selectedEntityDescription: KnockoutObservable<string>;\r\n private selectedEntityHasData: KnockoutObservable<boolean>;\r\n private selectedEntityHasNoData: KnockoutObservable<boolean>;\r\n public selectedEntityTypes: KnockoutObservableArray<any>;\r\n public selectedEntityTypesList: KnockoutObservableArray<any>;\r\n public selectedEntityId: KnockoutObservable<number>;\r\n private HelpDescription: KnockoutObservable<HelpDescription>;\r\n\r\n private Icon: string;\r\n private IconId: number;\r\n private IconImage: string;\r\n private IconType: string;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor() {\r\n this.selectedEntityTypes = ko.observableArray([]);\r\n this.selectedEntityTypesList = ko.observableArray([]);\r\n this.selectedEntityName = ko.observable(null);\r\n this.selectedEntityTranslatedName = ko.observable(null);\r\n this.selectedEntityDescription = ko.observable(null);\r\n\r\n this.selectedEntityHasData = ko.observable(false);\r\n this.selectedEntityHasNoData = ko.observable(false);\r\n this.HelpDescription = ko.observable(null);\r\n }\r\n\r\n FetchData(entity) {\r\n return new Promise((res, rej) => {\r\n BlockUI.Block();\r\n this.Icon = entity.Icon;\r\n this.IconId = entity.IconId;\r\n this.IconImage = entity.IconImage;\r\n this.IconType = entity.IconType;\r\n\r\n HelpBookStore.GetEntityInfo({id: entity.Id}).always(() => {\r\n BlockUI.Unblock();\r\n }).then(result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n rej();\r\n return;\r\n }\r\n this.selectedEntityHasData(result.HasData);\r\n this.selectedEntityHasNoData(!result.HasData);\r\n if (result.HasData) {\r\n this.selectedEntityName(result.ResultObject.Name);\r\n this.selectedEntityTranslatedName(result.ResultObject.TranslatedName);\r\n this.selectedEntityDescription(result.ResultObject.Description);\r\n this.HelpDescription(new HelpDescription(this.selectedEntityDescription()));\r\n this.HelpDescription().ActivateDescription();\r\n\r\n this.selectedEntityTypes(result.ResultObject.Types.map((type) => {\r\n type.noDescription = ko.observable('');\r\n type.previewText = ko.observable('');\r\n type.showFullDescription = ko.observable(false);\r\n return _.extend({}, type, {\r\n isActive: ko.observable(false),\r\n\t\t\t\t\t\t\tselectedEntityId: result.ResultObject.Id,\r\n Click: (type) => {\r\n HelpBook.Instance.GetScreens(type);\r\n type.HelpDescription.ActivateDescription();\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tHelpDescription: new HelpDescription(type.Description),\r\n HelpStatusFlow: new HelpStatusFlow(type.Id)\r\n });\r\n }));\r\n }\r\n res(null);\r\n });\r\n });\r\n }\r\n\r\n GetTemplateName(): string {\r\n return 'HelpBook/HelpEntity/Templates/HelpEntity';\r\n }\r\n\r\n _selectedEntityId() {\r\n return this.selectedEntityId();\r\n }\r\n\r\n\r\n}","import * as ko from 'knockout';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\n\r\nimport { HelpBookStore } from 'HelpBook/Store/HelpBookStore';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { HelpDescription } from 'HelpBook/HelpDescription/HelpDescription';\r\nimport { HelpForm } from 'HelpBook/HelpForm/HelpForm';\r\n\r\n\r\nimport { HelpBook } from 'HelpBook/HelpBook';\r\n\r\nimport {\r\n\tEntityScreen\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpScreenTemplate from 'HelpBook/HelpScreen/Templates/HelpScreen.html';\r\nko.templates['HelpBook/HelpScreen/Templates/HelpScreen'] = HelpScreenTemplate;\r\n\r\nexport class HelpScreen {\r\n\tprivate selectedTypeHasData: KnockoutObservable<boolean>;\r\n\tprivate selectedScreenHasData: KnockoutObservable<boolean>;\r\n\tprivate showSelectedScreenData: boolean;\r\n\tprivate skipBlockUi: boolean;\r\n\tpublic id: boolean;\r\n\tpublic selectedEntityScreens: KnockoutObservableArray<EntityScreen>;\r\n\tprivate HelpForm: KnockoutObservable<HelpForm>;\r\n\r\n\tconstructor(type, skipBlock: boolean = false) {\r\n\t\tthis.selectedTypeHasData = ko.observable(false);\r\n\t\tthis.selectedScreenHasData = ko.observable(false);\r\n\t\tthis.selectedEntityScreens = ko.observableArray([]);\r\n\t\tthis.showSelectedScreenData = false;\r\n\t\tthis.skipBlockUi = skipBlock;\r\n\t\tthis.id = null;\r\n\t\tthis.HelpForm = ko.observable(null);\r\n\t\tthis.FetchData(type);\r\n\t}\r\n\r\n\tFetchData(type) {\r\n\t\tif (!this.skipBlockUi) {\r\n\t\t\tBlockUI.Block();\r\n\t\t}\r\n\r\n\t\tHelpBookStore.GetScreens({ entityId: type.selectedEntityId, tableTypeId: type.Id }).then(result => {\r\n\t\t\tif (!this.skipBlockUi) {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t}\r\n\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.selectedTypeHasData(result.HasData);\r\n\t\t\tthis.selectedScreenHasData(false);\r\n\r\n\t\t\tif (result.HasData) {\r\n\t\t\t\tthis.selectedEntityScreens(result.ResultObject.map((screen) => {\r\n\t\t\t\t\treturn _.extend({}, screen, {\r\n\t\t\t\t\t\tisActive: ko.observable(false),\r\n\t\t\t\t\t\tHelpDescription: new HelpDescription(screen.Description)\r\n\t\t\t\t\t});\r\n\t\t\t\t}));\r\n\t\t\t\tif (this.selectedEntityScreens().length) {\r\n\t\t\t\t\tHelpBook.Instance.GetScreenInfo(_.where(this.selectedEntityScreens(), { Main: true })[0] || this.selectedEntityScreens()[0], true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.showSelectedScreenData = type.directScreen;\r\n\t\t\t}\r\n\t\t}).fail(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t});\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"if: selectedTypeHasData\\\"> <div class=\\\"list-group border-left\\\"> <!-- ko foreach: $data.selectedEntityScreens --> <a href=\\\"javascript:;\\\" data-bind=\\\"click: $root.GetScreenInfo.bind($root, $data, false),\\r\\n\\t\\t\\t\\t\\t\\tcss: { 'Select' : isActive, 'noSelect' : !isActive()}\\\" class=\\\"list-group-item list-group-item-action\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <span data-bind=\\\"text: `${Name} (${TypeTranslatedName || TypeName})`\\\"></span> <!-- ko if: Description --> <p data-bind=\\\"text: Description\\\" class=\\\"description\\\"></p> <!-- /ko --> </a> <div data-bind=\\\"if: isActive\\\"> <!-- ko with: $root.HelpForm --> <!-- ko template: {name: $root.GetFormTemplateName} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"\\t<div data-bind=\\\"if: selectedScreenHasData\\\"> <!-- ko if: directTargetedScreen--> <h3 data-bind=\\\"text: selectedScreenName\\\"><span data-bind=\\\"text: selectedScreenTypeName\\\"></span></h3> <!-- /ko --> <div class=\\\"list-group list-group-root border-left\\\"> <!-- ko foreach: selectedScreenSubForms --> <div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#' + Id}\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"true\\\"> <!-- ko if: Controls.length --> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <!-- /ko --> <span data-bind=\\\"text: Name\\\" class=\\\"title\\\"></span> <!-- ko if: Description--> <p data-bind=\\\"text: Description\\\" class=\\\"descriptionScreen\\\"></p> <!-- /ko --> </div> <!-- ko if: Controls.length --> <div class=\\\"collapse in\\\" data-bind=\\\"attr: {id: Id}\\\" aria-expanded=\\\"true\\\"> <div class=\\\"list-group\\\"> <!-- ko if: ControlComponents.length --> <div data-bind=\\\"css: {'isWrapped': !isBar(), 'col-md-4': !isBar()}\\\" class=\\\"control-components-wrapper\\\"> <!-- ko foreach: ControlComponents --> <!-- ko template: { name: GetTemplateName.bind($rawData), afterRender: $rawData.AfterRender.bind($rawData) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <div style=\\\"display:inline-block\\\" data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"></div> </div> </div> <!-- /ko --> <!-- /ko --> </div> </div> <!-- Controls Template --> <script type=\\\"text/html\\\" id=\\\"controlTemplate\\\"> <a data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#' + Id}\\\"\\r\\n\\t class=\\\"list-group-item\\\">\\r\\n\\t\\t<!-- ko if: AttachedFields.length-->\\r\\n\\t\\t<b data-bind=\\\"text: GetTranslation\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$data.labels.CONTROL}: ${AttachedFields[0].TableName}.`\\\"></span><b data-bind=\\\"text: AttachedFields[0].Name\\\"></b><span data-bind=\\\"text: ` )`\\\"></span>\\r\\n\\t\\t<!-- ko if: Description-->\\r\\n\\t\\t<span data-bind=\\\"text: ` - ${Description}`\\\"></span>\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t\\t<!-- ko ifnot: AttachedFields.length -->\\r\\n\\t\\t<b data-bind=\\\"text: GetTranslation\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$data.labels.CONTROL})`\\\"></span>\\r\\n\\t\\t<!-- ko if: Description-->\\r\\n\\t\\t<span data-bind=\\\"text: ` - ${Description}`\\\"></span>\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t</a>\\r\\n\\r\\n\\t<div data-bind=\\\"attr: {id: Id}\\\">\\r\\n\\t\\t<div class=\\\"list-group\\\"\\r\\n\\t\\t\\t data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"></div>\\r\\n\\t</div> </script>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\n\r\nimport {\r\n Control,\r\n SubFormControl\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpFormTemplate from 'HelpBook/HelpForm/Templates/HelpForm.html';\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {AttachedFieldModel} from \"../../Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {ControlModel} from \"../../Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport {RenderModes} from \"../../Core/Constant\";\r\nimport {IControlParam} from \"../../Core/Screens/IScreen\";\r\nimport {IStaticControlsPosition, StaticControlsProvider} from '../../Core/Controls/StaticControlsProvider';\r\n\r\nko.templates['HelpBook/HelpForm/Templates/HelpForm'] = HelpFormTemplate;\r\n\r\nexport class HelpForm {\r\n private controls: KnockoutObservableArray<any>;\r\n private selectedScreenSubForms: KnockoutObservableArray<SubFormControl>;\r\n private selectedScreenHasData: KnockoutObservable<boolean>;\r\n private directTargetedScreen: KnockoutObservable<boolean>;\r\n private selectedScreenName: KnockoutObservable<string>;\r\n private selectedScreenDescription: KnockoutObservable<string>;\r\n private HelpDescription: KnockoutObservable<HelpDescription>;\r\n\r\n public selectedEntityId: number;\r\n private isActive: KnockoutObservable<boolean>;\r\n\r\n constructor() {\r\n this.controls = ko.observableArray([]);\r\n this.selectedScreenSubForms = ko.observableArray([]);\r\n this.selectedScreenHasData = ko.observable(false);\r\n this.directTargetedScreen = ko.observable(false);\r\n this.selectedScreenName = ko.observable('');\r\n this.selectedScreenDescription = ko.observable('');\r\n this.HelpDescription = ko.observable(null);\r\n this.isActive = ko.observable(false);\r\n }\r\n\r\n\r\n\tFetchData(screen, skipBlock: boolean = false) {\r\n\t\treturn new Promise((res, rej) => {\r\n\t\t\tif (!skipBlock) {\r\n\t\t\t\tBlockUI.Block();\r\n\t\t\t}\r\n\r\n\t\t\tthis.directTargetedScreen(screen.directScreen);\r\n\r\n\t\t\tHelpBookStore.GetScreenInfo({id: screen.Id}).then(async result => {\r\n\t\t\t\tif (!skipBlock) {\r\n\t\t\t\t\tBlockUI.Unblock();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\t\trej();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tthis.selectedScreenHasData(result.HasData);\r\n\t\t\t\tif (result.HasData) {\r\n\t\t\t\t\tconst subForms = result.ResultObject.SubForms.map((form) => {\r\n\t\t\t\t\t\tif (form.Name === '') {\r\n\t\t\t\t\t\t\tform.Name = 'SubForm';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn _.extend({}, form, {\r\n\t\t\t\t\t\t\t\tisActive: ko.observable(true),\r\n\t\t\t\t\t\t\t\tisBar: ko.observable(form.Name.includes('ActionBar') || form.Name.includes('Bottom')),\r\n\t\t\t\t\t\t\t\tHelpDescription: new HelpDescription(form.Description),\r\n\t\t\t\t\t\t\t\tClick: (control) => {\r\n\t\t\t\t\t\t\t\t\tcontrol.HelpDescription.ActivateDescription();\r\n\t\t\t\t\t\t\t\t\tcontrol.isActive(!control.isActive());\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tGetTranslation: this.GetControlTranslation(form),\r\n\t\t\t\t\t\t\t\tControlComponents: []\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tconst staticControlsPosition = StaticControlsProvider.ForScreen(result.ResultObject.ScreenTypeName, false, false);\r\n\t\t\t\t\tawait this.RegisterStaticControls(subForms, staticControlsPosition);\r\n\r\n\t\t\t\t\tfor(const form of subForms){\r\n\t\t\t\t\t\tawait this.IterateOverNestedControls(form);\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis.selectedScreenSubForms(subForms);\r\n\t\t\t\t\tscreen.Description = ko.observable(result.ResultObject.Description);\r\n\r\n\t\t\t\t\tthis.selectedScreenName(result.ResultObject.Name);\r\n\t\t\t\t\tthis.selectedEntityId = result.ResultObject.EntityId;\r\n\t\t\t\t\tthis.selectedScreenDescription(result.ResultObject.Description);\r\n\t\t\t\t\tthis.HelpDescription(new HelpDescription(result.ResultObject.Description));\r\n\t\t\t\t}\r\n\t\t\t\tthis.HelpDescription().ActivateDescription();\r\n\t\t\t\tthis.isActive(true);\r\n\t\t\t\t(screen as any).dataFetched = true;\r\n\t\t\t\tres(null);\r\n\t\t\t}).fail(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n SelectControl(control) {\r\n control.isActive(!control.isActive());\r\n }\r\n\r\n MapToControlModel(control: Control) {\r\n\t\tconst attachedFields = control.AttachedFields.map(field => {\r\n\t\t\tlet attachedFieldModel = new AttachedFieldModel({ Id: control.Id, Name: field.Name });\r\n attachedFieldModel.FieldNameTranslation = field.TranslatedName;\r\n attachedFieldModel.EntityIcon = field.EntityIcon;\r\n attachedFieldModel.FieldIcon = field.FieldIcon;\r\n\t\t\treturn attachedFieldModel;\r\n\t\t});\r\n\r\n\t\tconst currentLanguage = TranslationManager.Instance.GetCurrentLanguage();\r\n\t\tconst currentLanguageModel = new LanguageModel(currentLanguage.Id);\r\n\r\n\t\tconst translationModel = new TranslationModel();\r\n\t\ttranslationModel.Language = currentLanguageModel;\r\n\t\ttranslationModel.Selected = true;\r\n\t\ttranslationModel.Translation = control.TranslatedName;\r\n\r\n let model = new ControlModel();\r\n model.Fields = attachedFields;\r\n model.Name = control.Name;\r\n model.TypeName = control.TypeName;\r\n\t\tmodel.TranslatedName = control.TranslatedName;\r\n\t\tmodel.NameTranslations = [translationModel];\r\n\t\tmodel.UseFieldName = control.UseFieldName;\r\n\t\tmodel.IsFieldAttached = control.IsFieldAttached;\r\n\t\tmodel.IsLookupFieldAttached = control.IsLookupFieldAttached;\r\n model.IsMultiSelectFieldAttached = control.IsMultiSelectFieldAttached;\r\n model.LabelPosition = control.LabelPosition;\r\n model.Icon = control.Icon;\r\n\r\n if (control.Properties) {\r\n try {\r\n model.Properties = JSON.parse(control.Properties);\r\n } catch {\r\n }\r\n }\r\n\r\n model.SubControls = control.Controls.filter(control => this.CanBeRendered(control)).map(control => this.MapToControlModel(control));\r\n return model;\r\n }\r\n\r\n CanBeRendered(control: Control) {\r\n return control.TypeName.startsWith(\"Button\")\r\n || control.TypeName === 'Search'\r\n || control.TypeName === 'DateTime'\r\n || control.TypeName === 'Text'\r\n || control.TypeName === 'Checkbox'\r\n || control.TypeName === 'Dropdown'\r\n || control.TypeName === 'Memo'\r\n || control.TypeName === 'Image'\r\n || control.TypeName === 'Drop'\r\n || control.TypeName === 'MultiSelect'\r\n || control.TypeName === 'GenericButton'\r\n || control.TypeName === 'Document'\r\n || control.TypeName === 'SelectUser'\r\n || control.TypeName === 'ColorSelector'\r\n || control.TypeName === 'Password'\r\n || control.TypeName === 'RadioButton'\r\n || control.TypeName === 'Tag'\r\n || control.TypeName === 'Alias'\r\n || control.TypeName === 'Label'\r\n || control.TypeName === 'Group'\r\n || control.TypeName === 'Currency'\r\n || control.TypeName === 'Grid'\r\n || control.TypeName === 'Tab'\r\n || control.TypeName === 'TabPage'\r\n || control.TypeName === 'ProductConfigurator'\r\n || control.TypeName === 'SPIMCopy'\r\n || control.TypeName === 'History'\r\n\t\t\t|| control.TypeName === 'Book'\r\n\t\t\t|| control.TypeName === 'BulkEmail'\r\n || control.TypeName === 'QueryResult'\r\n || control.TypeName === 'Invoicing'\r\n || control.TypeName === 'Timer'\r\n || control.TypeName === 'Signature'\r\n || control.TypeName === 'Spreadsheet'\r\n }\r\n\r\n\r\n async IterateOverNestedControls(item: SubFormControl) {\r\n let controls = [];\r\n for(const control of item.Controls){\r\n await this.IterateOverNestedControls(control);\r\n if (this.CanBeRendered(control)) {\r\n const controlComponent = await this.CreateControlComponent(this.MapToControlModel(control));\r\n\r\n if (item.ControlComponents && controlComponent) {\r\n item.ControlComponents.push(controlComponent);\r\n }\r\n }\r\n\r\n controls.push(_.extend({}, control, {\r\n\t\t\t\tisActive: ko.observable(false),\r\n\t\t\t\tHelpDescription: new HelpDescription(control.Description),\r\n\t\t\t\tlabels: LABELS,\r\n\t\t\t\tClick: (control) => {\r\n\t\t\t\t\tcontrol.HelpDescription.ActivateDescription();\r\n\t\t\t\t\tcontrol.isActive(!control.isActive());\r\n\t\t\t\t},\r\n\t\t\t\tGetTranslation: this.GetControlTranslation(control)\r\n }));\r\n\r\n };\r\n\r\n item.Controls = controls;\r\n }\r\n\r\n\tGetControlTranslation(control: Control): string {\r\n\t\tconst controlName = control.Name;\r\n\t\tlet controlTranslation = null;\r\n\r\n\t\tif (control.UseFieldName &&\r\n\t\t\t(control.IsFieldAttached || control.IsLookupFieldAttached || control.IsMultiSelectFieldAttached)) {\r\n\t\t\tconst fieldAttached = _.first(control.AttachedFields);\r\n\t\t\tif (fieldAttached) {\r\n\t\t\t\tcontrolTranslation = fieldAttached.TranslatedName;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcontrolTranslation = control.TranslatedName;\r\n\t\t}\r\n\r\n\t\treturn controlTranslation || controlName;\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return 'HelpBook/HelpForm/Templates/HelpForm';\r\n }\r\n\r\n private async RegisterStaticControls(subForms, staticControlsPosition: IStaticControlsPosition) {\r\n const subFormsNumber = subForms.length;\r\n\r\n const actionBar = subForms[0];\r\n const mainBlocks = subForms.slice(1, subFormsNumber - 2);\r\n const bottomBar = subForms[subFormsNumber - 1];\r\n\r\n for(const controlModel of staticControlsPosition.ActionBar){\r\n const controlComponent = await this.CreateControlComponent(controlModel);\r\n actionBar.ControlComponents.push(controlComponent);\r\n };\r\n\r\n for(const subForm of staticControlsPosition.SubForms){\r\n for (const controlModel of subForm){\r\n const controlComponent = await this.CreateControlComponent(controlModel);\r\n mainBlocks[staticControlsPosition.SubForms.indexOf(subForm)].ControlComponents.push(controlComponent);\r\n };\r\n };\r\n\r\n for (const controlModel of staticControlsPosition.BottomBar) {\r\n const controlComponent = await this.CreateControlComponent(controlModel);\r\n bottomBar.ControlComponents.push(controlComponent);\r\n };\r\n }\r\n\r\n private async CreateControlComponent(controlModel: ControlModel) {\r\n const renderMode = RenderModes.HelpView;\r\n\r\n var controlParam: IControlParam = {\r\n Model: controlModel,\r\n RenderMode: renderMode,\r\n Form: null\r\n };\r\n\r\n let controlFactory = (await import(\"Core/Controls/ControlFactory\")).ControlFactory;\r\n\r\n return controlFactory.CreateControl(controlParam);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\nimport {Guid} from \"Core/Common/Guid\";\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport {\r\n AttachedField,\r\n SubFormControl,\r\n Control\r\n} from 'HelpBook/Store/Models/HelpBookModel';\r\n\r\nimport HelpControlTemplate from 'HelpBook/HelpControl/Templates/HelpControl.html';\r\nimport {LABELS} from \"../../Core/Components/Translation/Locales\";\r\nimport {RenderModes} from \"../../Core/Constant\";\r\nimport {IControlParam} from \"../../Core/Screens/IScreen\";\r\nimport {AttachedFieldModel} from \"../../Core/Controls/BaseControl/Models/AttachedFieldModel\";\r\nimport {ControlModel} from \"../../Core/Controls/BaseControl/Models/ControlModel\";\r\nimport {TranslationModel} from 'Core/Controls/BaseControl/Models/TranslationModel';\r\nimport {LanguageModel} from 'Core/Controls/BaseControl/Models/LanguageModel';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\n\r\nko.templates['HelpBook/HelpControl/Templates/HelpControl'] = HelpControlTemplate;\r\n\r\nexport class HelpControl {\r\n private selectedControlSubControls: KnockoutObservableArray<SubFormControl>;\r\n private subControlsPresent: KnockoutObservable<boolean>;\r\n private selectedControlHasData: KnockoutObservable<boolean>;\r\n private selectedControlName: KnockoutObservable<string>;\r\n private selectedControlTypeName: KnockoutObservable<string>;\r\n private selectedControlDescription: KnockoutObservable<string>;\r\n private attachedFields: KnockoutObservableArray<AttachedField>;\r\n private controlComponents;\r\n private noDescription: KnockoutObservable<boolean>;\r\n private isActive: KnockoutObservable<boolean>;\r\n private HelpDescription: KnockoutObservable<HelpDescription>;\r\n\r\n private selectedEntityId: number;\r\n\r\n private _labels = LABELS;\r\n\r\n constructor(screen) {\r\n this.selectedControlSubControls = ko.observableArray([]);\r\n this.selectedControlHasData = ko.observable(false);\r\n this.selectedControlName = ko.observable('');\r\n this.selectedControlTypeName = ko.observable('');\r\n this.selectedControlDescription = ko.observable('');\r\n this.attachedFields = ko.observableArray([]);\r\n this.controlComponents = [];\r\n this.isActive = ko.observable(true);\r\n this.subControlsPresent = ko.observable(false);\r\n this.HelpDescription = ko.observable(null);\r\n\r\n this.FetchData(screen);\r\n }\r\n\r\n FetchData(control) {\r\n BlockUI.Block();\r\n\r\n HelpBookStore.GetControlInfo({id: control.Id}).always(() => {\r\n BlockUI.Unblock();\r\n }).then(async result => {\r\n if (!result.IsSuccessfull) {\r\n new Notifier().Failed(result.ErrorMessage);\r\n return;\r\n }\r\n if (result.HasData) {\r\n const subControls = result.ResultObject.Controls.filter((control) => {\r\n return control.Name !== null;\r\n }).map((control) => {\r\n return _.extend({}, control, {\r\n isActive: ko.observable(false),\r\n Click: (control) => {\r\n control.isActive(!control.isActive());\r\n },\r\n HelpDescription: new HelpDescription(result.ResultObject.Description)\r\n });\r\n });\r\n\r\n this.selectedControlSubControls(subControls);\r\n this.subControlsPresent(Boolean(subControls.length));\r\n\r\n\t\t\t}\r\n\r\n const controlTranslatedName = this.GetControlTranslation(result.ResultObject);\r\n\t\t\tthis.selectedControlName(controlTranslatedName);\r\n\r\n this.selectedControlTypeName(result.ResultObject.TypeName);\r\n this.selectedControlDescription(result.ResultObject.Description);\r\n const controlComponents = [];\r\n controlComponents.push(await this.IterateOverNestedControls(result.ResultObject));\r\n this.attachedFields(result.ResultObject.AttachedFields);\r\n this.controlComponents = controlComponents;\r\n this.selectedControlHasData(result.HasData);\r\n this.HelpDescription(new HelpDescription(result.ResultObject.Description));\r\n this.HelpDescription().ActivateDescription();\r\n\r\n });\r\n }\r\n\r\n Click() {\r\n this.isActive(!this.isActive());\r\n };\r\n\r\n CanBeRendered(control: Control) {\r\n return control.TypeName.startsWith(\"Button\")\r\n || control.TypeName === 'Search'\r\n || control.TypeName === 'DateTime'\r\n || control.TypeName === 'Text'\r\n || control.TypeName === 'Checkbox'\r\n || control.TypeName === 'Dropdown'\r\n || control.TypeName === 'Memo'\r\n || control.TypeName === 'Image'\r\n || control.TypeName === 'Drop'\r\n || control.TypeName === 'MultiSelect'\r\n || control.TypeName === 'GenericButton'\r\n || control.TypeName === 'Document'\r\n || control.TypeName === 'SelectUser'\r\n || control.TypeName === 'ColorSelector'\r\n || control.TypeName === 'Password'\r\n || control.TypeName === 'RadioButton'\r\n || control.TypeName === 'Tag'\r\n || control.TypeName === 'Alias'\r\n || control.TypeName === 'Label'\r\n || control.TypeName === 'Group'\r\n || control.TypeName === 'Currency'\r\n || control.TypeName === 'Grid'\r\n || control.TypeName === 'Tab'\r\n || control.TypeName === 'TabPage'\r\n || control.TypeName === 'ProductConfigurator'\r\n || control.TypeName === 'SPIMCopy'\r\n || control.TypeName === 'History'\r\n\t\t\t|| control.TypeName === 'Book'\r\n || control.TypeName === 'BulkEmail'\r\n || control.TypeName === 'QueryResult'\r\n || control.TypeName === 'Invoicing'\r\n || control.TypeName === 'Timer'\r\n || control.TypeName === 'Signature'\r\n\t\t\t|| control.TypeName === 'Spreadsheet'\r\n\t\t\t|| control.TypeName === 'Chart'\r\n };\r\n\r\n MapToControlModel(control: Control) {\r\n\t\tconst attachedFields = control.AttachedFields.map(field => {\r\n let attachedFieldModel = new AttachedFieldModel({ Id: control.Id, Name: field.Name });\r\n attachedFieldModel.FieldNameTranslation = field.TranslatedName;\r\n attachedFieldModel.EntityIcon = field.EntityIcon;\r\n attachedFieldModel.FieldIcon = field.FieldIcon;\r\n\r\n\t\t\treturn attachedFieldModel;\r\n });\r\n\r\n\t\tconst currentLanguage = TranslationManager.Instance.GetCurrentLanguage();\r\n\t\tconst currentLanguageModel = new LanguageModel(currentLanguage.Id);\r\n\r\n\t\tconst translationModel = new TranslationModel();\r\n\t\ttranslationModel.Language = currentLanguageModel;\r\n\t\ttranslationModel.Selected = true;\r\n\t\ttranslationModel.Translation = control.TranslatedName;\r\n\r\n\t\tlet model = new ControlModel();\r\n model.Fields = attachedFields;\r\n model.Name = control.Name;\r\n model.TypeName = control.TypeName;\r\n\t\tmodel.TranslatedName = control.TranslatedName;\r\n\t\tmodel.NameTranslations = [translationModel];\r\n model.UseFieldName = control.UseFieldName;\r\n model.LabelPosition = control.LabelPosition;\r\n\t\tmodel.IsFieldAttached = control.IsFieldAttached;\r\n\t\tmodel.IsLookupFieldAttached = control.IsLookupFieldAttached;\r\n\t\tmodel.IsMultiSelectFieldAttached = control.IsMultiSelectFieldAttached;\r\n\t\tmodel.Icon = control.Icon;\r\n\r\n if (control.Properties) {\r\n try {\r\n model.Properties = JSON.parse(control.Properties);\r\n } catch {\r\n }\r\n }\r\n model.SubControls = control.Controls.filter(control => this.CanBeRendered(control)).map(control => this.MapToControlModel(control));\r\n return model;\r\n }\r\n\r\n async IterateOverNestedControls(item) {\r\n if (this.CanBeRendered(item)) {\r\n\r\n const renderMode = RenderModes.HelpView;\r\n\r\n var controlParam: IControlParam = {\r\n Model: this.MapToControlModel(item),\r\n RenderMode: renderMode,\r\n Form: null\r\n };\r\n\r\n let controlFactory = (await import( \"../../Core/Controls/ControlFactory\")).ControlFactory;\r\n\r\n return controlFactory.CreateControl(controlParam);\r\n }\r\n }\r\n\r\n\tprivate GetControlTranslation(control: Control): string {\r\n\t\tconst controlName = control.Name;\r\n\t\tlet controlTranslation = null;\r\n\r\n\t\tif (control.UseFieldName) {\r\n\t\t\tlet fieldAttached = _.first(control.AttachedFields);\r\n\t\t\tif (fieldAttached) {\r\n\t\t\t\tcontrolTranslation = fieldAttached.TranslatedName;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcontrolTranslation = control.TranslatedName;\r\n\t\t}\r\n\r\n\t\treturn controlTranslation || controlName;\r\n\t}\r\n\r\n GetTemplateName(): string {\r\n return 'HelpBook/HelpControl/Templates/HelpControl';\r\n }\r\n\r\n}","// Module\nvar code = \"<div class=\\\"control-wrapper\\\" data-bind=\\\"if: $data.selectedControlHasData\\\"> <!-- ko if: $data.controlComponents.length --> <div class=\\\"control-components-wrapper\\\"> <!-- ko foreach: $data.controlComponents --> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> <div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#selectedControl'}\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"true\\\"> <!-- ko if: subControlsPresent--> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <!-- /ko --> <!-- ko if: $data.attachedFields().length--> <b data-bind=\\\"text: $data.selectedControlName()\\\"></b><span data-bind=\\\"text: ` (${$data.selectedControlTypeName()} ${_labels.CONTROL}: ${$data.attachedFields()[0].TableName}.`\\\"></span><b data-bind=\\\"text: $data.attachedFields()[0].Name\\\"></b><span data-bind=\\\"text: ` )`\\\"></span> <!-- ko if: $data.selectedControlDescription()--> <span data-bind=\\\" text: ` - ${$data.selectedControlDescription()}`\\\"></span> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data.attachedFields().length --> <b data-bind=\\\"text: $data.selectedControlName()\\\"></b><span data-bind=\\\"text: ` (${$data.selectedControlTypeName()} ${_labels.CONTROL})`\\\"></span> <!-- ko if: $data.selectedControlDescription()--> <span data-bind=\\\"text: ` - ${$data.selectedControlDescription()}`\\\"></span> <!-- /ko --> <!-- /ko --> </div> <!-- ko if: subControlsPresent--> <div class=\\\"collapse in\\\" data-bind=\\\"attr: {id: 'selectedControl'}\\\"> <div class=\\\"list-group\\\"> <!-- ko foreach: selectedControlSubControls --> <div data-toggle=\\\"collapse\\\" data-bind=\\\"click: $data.Click.bind($data), attr: {href: '#' + Id}\\\" class=\\\"list-group-item\\\" aria-expanded=\\\"false\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : isActive, 'glyphicon-chevron-right' : !isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <b data-bind=\\\"text: Name\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$parent._labels.CONTROL})`\\\"></span> <!-- ko if: Description--> <span data-bind=\\\"text: ` - ${Description}`\\\"></span> <!-- /ko --> </div> <div class=\\\"collapse\\\" style=\\\"padding-left:10px\\\" data-bind=\\\"attr: {id: Id}\\\"> <div class=\\\"list-group border-left\\\" data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"> </div> </div> <!-- /ko --> </div> </div> <!-- /ko --> </div> <!-- Controls Template --> <script type=\\\"text/html\\\" id=\\\"controlTemplate\\\"> <a data-bind=\\\"attr: {href: '#' + Id}\\\"\\r\\n\\t class=\\\"list-group-item\\\" data-toggle=\\\"collapse\\\">\\r\\n\\t\\t<b data-bind=\\\"text: Name\\\"></b><span data-bind=\\\"text: ` (${TypeName} ${$root._labels.CONTROL})`\\\"></span>\\r\\n\\t\\t<!-- ko if: Description-->\\r\\n\\t\\t<span data-bind=\\\"text: ` - ${Description}`\\\"></span>\\r\\n\\t\\t<!-- /ko -->\\r\\n\\t</a>\\r\\n\\r\\n\\t<div class=\\\"collapse\\\" data-bind=\\\"attr: {id: Id}\\\">\\r\\n\\t\\t<div class=\\\"list-group\\\"\\r\\n\\t\\t\\t data-bind=\\\"template: { name: 'controlTemplate', foreach: Controls, as: 'control' }\\\"></div>\\r\\n\\t</div> </script>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport {BlockUI} from 'Core/Common/BlockUi';\r\n\r\nimport {HelpBookStore} from \"HelpBook/Store/HelpBookStore\";\r\nimport {HelpDescription} from \"HelpBook/HelpDescription/HelpDescription\";\r\nimport {HelpStatusFlow} from \"HelpBook/HelpStatusFlow/HelpStatusFlow\";\r\nimport {HelpScreen} from \"HelpBook/HelpScreen/HelpScreen\";\r\nimport {Notifier} from 'Core/Common/Notifier';\r\n\r\nimport HelpTypeTemplate from 'HelpBook/HelpType/Templates/HelpType.html';\r\n\r\nko.templates['HelpBook/HelpType/Templates/HelpType'] = HelpTypeTemplate;\r\n\r\nexport class HelpType {\r\n\tpublic selectedType: KnockoutObservable<any>;\r\n\r\n\tconstructor(typeModel) {\r\n\t\tthis.selectedType = ko.observable(null);\r\n\t\tthis.FetchData(typeModel);\r\n\t}\r\n\r\n\tFetchData(typeModel) {\r\n\t\tBlockUI.Block();\r\n\r\n\t\tHelpBookStore.GetTypeInfo({ id: typeModel.Id }).always(() => {\r\n\t\t\tBlockUI.Unblock();\r\n\t\t}).then(result => {\r\n\t\t\tif (!result.IsSuccessfull) {\r\n\t\t\t\tnew Notifier().Failed(result.ErrorMessage);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (result.HasData) {\r\n\t\t\t\tconst type = result.ResultObject;\r\n\r\n\t\t\t\ttype.noDescription = ko.observable('');\r\n\t\t\t\ttype.previewText = ko.observable('');\r\n\t\t\t\ttype.showFullDescription = ko.observable(false);\r\n\t\t\t\ttype.isActive = ko.observable(true);\r\n\t\t\t\ttype.selectedEntityId = typeModel.EntityId;\r\n\t\t\t\ttype.Click = (data) => {\r\n\t\t\t\t\tdata.isActive(!data.isActive());\r\n\t\t\t\t};\r\n\t\t\t\ttype.HelpDescription = new HelpDescription(type.Description);\r\n\t\t\t\ttype.HelpStatusFlow = new HelpStatusFlow(type.Id);\r\n\t\t\t\ttype.ActiveHelpScreen = new HelpScreen(type, true);\r\n\r\n\t\t\t\tthis.selectedType(type);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'HelpBook/HelpType/Templates/HelpType';\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: $data.selectedType --> <div class=\\\"list-group-item list-group-item-action\\\"> <a class=\\\"\\\" data-bind=\\\"\\r\\n\\t\\t click: $data.Click.bind($data)\\\" href=\\\"javascript:void(0)\\\"> <i data-bind=\\\"css: { 'glyphicon-chevron-down' : $data.isActive, 'glyphicon-chevron-right' : !$data.isActive()}\\\" class=\\\"glyphicon glyphicon-chevron-down\\\"></i> <span data-bind=\\\"text: TranslatedName\\\"></span> <!-- ko if: Name === '-' --> <span data-bind=\\\"text: ` (${$root._labels.DASH})`\\\"></span> <!-- /ko --> <!-- ko template: {name: $root.GetIconTemplateName.bind($data)} --> <!-- /ko --> </a> </div> <div data-bind=\\\"if: $data.isActive\\\"> <div class=\\\"list-group border-left\\\"> <!-- ko if: (Id !== 0 && StepsCount > 0) --> <!-- ko with: $data.HelpStatusFlow --> <!-- ko template: {name: $root.GetStatusFlowTemplateName.bind($data), afterRender: AfterRender.bind($data)} --> <!-- /ko --> <!-- /ko --> <!-- /ko --> </div> <!-- ko with: $data.ActiveHelpScreen --> <!-- ko template: {name: $root.GetScreenTemplateName.bind($data)} --> <!-- /ko --> <!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\nimport * as ko from \"knockout\";\r\n\r\nimport { deserialize } from 'libs/cerialize';\r\nimport { deserializeAs } from 'libs/cerialize';\r\nimport {IControl} from 'Core/Controls/IControl';\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel';\r\n\r\n\r\nexport class EntityModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaId: number;\r\n\r\n\t@deserialize\r\n\tSubjectAreaName: string;\r\n\r\n\t@deserialize\r\n\tIcon: string;\r\n\r\n\t@deserialize\r\n\tIconType: string;\r\n\r\n\t@deserialize\r\n\tIconImage: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIcon: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIconType: string;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIconId: number;\r\n\r\n\t@deserialize\r\n\tSubjectAreaIconImage: string;\r\n\r\n\tisActive: KnockoutObservable<boolean>;\r\n\tisOpen: KnockoutObservable<boolean>;\r\n\r\n\tdirectScreen?: boolean;\r\n}\r\n\r\n\r\nexport class EntityType {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}\r\n\r\nexport class EntityScreen {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n}\r\n\r\nexport class SelectedEntityModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypes: Array<EntityType>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}\r\n\r\nexport class SubFormControl {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tControls: Array<Control>;\r\n\r\n\t@deserialize\r\n\tControlComponents: Array<IControl>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}\r\n\r\nexport class Control {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserialize\r\n\tControls: Array<Control>;\r\n\r\n\t@deserialize\r\n\tControlComponents: Array<IControl>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n\r\n\t@deserialize\r\n\tProperties: any;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tLabelPosition: string;\r\n\r\n\t@deserialize\r\n\tUseFieldName: boolean;\r\n\r\n\t@deserialize\r\n\tIsFieldAttached: boolean;\r\n\r\n\t@deserialize\r\n\tIsLookupFieldAttached: boolean;\r\n\r\n\t@deserialize\r\n\tIsMultiSelectFieldAttached: boolean;\r\n\r\n\t@deserialize\r\n\tIsComplexControl: boolean;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tIcon: IconModel;\r\n\r\n\tAttachedFields: Array<AttachedField>;\r\n}\r\n\r\nexport class AttachedField {\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tTranslatedName: string;\r\n\r\n\t@deserialize\r\n\tTableName: string;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tEntityIcon: IconModel;\r\n\r\n\t@deserializeAs(IconModel)\r\n\tFieldIcon: IconModel;\r\n}\r\n\r\nexport class SelectedScreenModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tSubForms: Array<SubFormControl>;\r\n\r\n\t@deserialize\r\n\tDescription: string;\r\n}","// Module\nvar code = \"<div class=\\\"helpBook-wrapper\\\" data-bind=\\\"css: {'help-page-sidebar-closed': isClosed}\\\"> <div class=\\\"help-book-header page-header navbar navbar-fixed-top\\\"> <div class=\\\"page-header-inner\\\"> <div class=\\\"page-logo\\\"> <div class=\\\"menu-toggler\\\" data-bind=\\\"click: ToggleMenu\\\"></div> <div class=\\\"logo-image\\\"> <!-- ko if: $data.IsAuthenticated --> <!-- ko with: _user --> <!-- ko if: $parent.LogoImage--> <img class=\\\"company-logo\\\" data-bind=\\\"attr:{src: $parent.LogoImage}\\\"> <!--/ko--> <!--ko ifnot: $parent.LogoImage--> <span class=\\\"username text-white large-text\\\" data-bind=\\\"text: LicenseName\\\"></span> <!--/ko--> <!-- /ko --> <!-- /ko --> <!-- ko ifnot: $data.IsAuthenticated --> <img 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=\\\"pull-left pagination-container-grid\\\"> <!-- ko with: $parent.Paginator --> <!-- ko template: {name: GetTemplateName} --><!-- /ko --> <!-- /ko --> </div> <!-- ko template: {html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {LABELS} from \"Core/Components/Translation/Locales\";\r\nimport {PortletSpaceManager} from \"Core/Portlets/Managers/Runtime/PortletSpaceManager\";\r\n\r\nimport Template from 'Core/Portlets/Templates/PortletsPage.html';\r\n\r\nko.templates['Core/Portlets/Templates/PortletsPage'] = Template;\r\n\r\n\r\nexport class PortletsPage {\r\n\tprivate _labels: LABELS;\r\n\tprivate _portletSpace: PortletSpaceManager;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._labels = LABELS;\r\n\t\tthis._portletSpace = new PortletSpaceManager({Subject: null});\r\n\t\tthis._isReady = ko.observable(false);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'Core/Portlets/Templates/PortletsPage';\r\n\t}\r\n\r\n\tRender(containerId: string) {\r\n\t\tconst container = document.getElementById(containerId);\r\n\r\n\t\tko.cleanNode(container);\r\n\t\tko.applyBindings(this, container);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tthis._portletSpace.Load().always(() => this._isReady(true));\r\n\t}\r\n}","// Module\nvar code = \"<h3 class=\\\"page-title portlet-page-title\\\"> <!-- ko text: _labels.MY_DAILY_STUFF --><!-- /ko --> </h3> <!--ko with: _portletSpace--> <!--ko template: {name: GetTemplateName.bind($data), afterRender: AfterRender.bind($data)}--><!--/ko--> <!--/ko --> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport {P} from 'Core/Common/Promise';\r\n\r\nimport Template from './Template.html';\r\nimport iFrame from './iFrame.html';\r\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,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\";\r\n }\r\n\r\n Wiki(){\r\n const wiki = new WikiJS();\r\n wiki.Show();\r\n }\r\n}","// Module\nvar code = \"<ul class=\\\"nav navbar-nav pull-right\\\"> <!-- ko if: IsAuthenticated--> <!-- ko if: IsAvailable --> <li class=\\\"dropdown dropdown-user\\\"> <a tabindex=\\\"-1\\\" href=\\\"javascript:;\\\" class=\\\"dropdown-toggle\\\" data-toggle=\\\"dropdown\\\" data-hover=\\\"dropdown\\\" data-close-others=\\\"true\\\"> <img class=\\\"company-logo\\\" data-bind=\\\"attr:{src: _userImage}\\\"> <span class=\\\"username\\\"> <span data-bind=\\\"text: _userName\\\"></span> </span> <i class=\\\"fa fa-angle-down\\\"></i> </a> <ul class=\\\"dropdown-menu dropdown-menu-default\\\" id=\\\"user-menu\\\"> <!-- ko if: _showMySettings() --> <li class=\\\"profileItem usermenu-item\\\"> <a data-bind=\\\"click: MySettings\\\" class=\\\"settings\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.MY_SETTINGS --><!-- /ko --> </a> </li> <!-- /ko --> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: GetMyContact\\\" class=\\\"contact-page\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.MY_CONTACT_PAGE --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: NavigateToHomePage\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.MY_DAILY_STUFF --><!-- /ko --> </a> </li> <!-- ko if: IsDeduplicationAllowed --> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: Deduplication\\\" href=\\\"javascript:;\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.DEDUPLICATION --><!-- /ko --> </a> </li> <!-- /ko --> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: Downloads\\\" href=\\\"javascript:;\\\"> <i class=\\\"icon-disc\\\"></i> <!-- ko text: _labels.DOWNLOADS --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: LockSession\\\" class=\\\"lock-screen\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.LOCK_SCREEN --><!-- /ko --> </a> </li> <li data-bind=\\\"click: HelpPage\\\" class=\\\"usermenu-item\\\" id=\\\"User|About\\\"> <a class=\\\"about\\\"> <i class=\\\"icon-question\\\"></i> <!-- ko text: _labels.HELP --><!-- /ko --> </a> </li> <!-- ko if: _showWiki --> <li data-bind=\\\"click: Wiki\\\" class=\\\"usermenu-item\\\" id=\\\"User|About\\\"> <a class=\\\"about\\\"> <i class=\\\"fa fa-wikipedia-w\\\"></i> Wiki </a> </li> <!-- /ko --> <li data-bind=\\\"click: ShowReportIssueModal\\\" class=\\\"usermenu-item\\\"> <a> <i class=\\\"fa fa-bug\\\"></i> <!-- ko text: _labels.REPORT_ISSUE --><!-- /ko --> </a> </li> <li data-bind=\\\"click: AboutPage\\\" class=\\\"usermenu-item\\\" id=\\\"User|About\\\"> <a class=\\\"about\\\"> <i class=\\\"icon-user\\\"></i> <!-- ko text: _labels.ABOUT --><!-- /ko --> </a> </li> <li class=\\\"usermenu-item\\\"> <a data-bind=\\\"click: Logout\\\" class=\\\"logout\\\"> <i class=\\\"icon-key\\\"></i> <!-- ko text: _labels.LOG_OUT --><!-- /ko --> </a> </li> </ul> </li> <!-- /ko --> <li id=\\\"header-logout\\\" class=\\\"dropdown dropdown-quick-sidebar-toggler\\\"> <a data-bind=\\\"click: Logout\\\" class=\\\"dropdown-toggle logout\\\"> <i class=\\\"icon-logout\\\"></i> </a> </li> <!-- /ko --> </ul> <!-- ko ifnot: IsAuthenticated --> <ul class=\\\"nav navbar-nav pull-right\\\"> <li class=\\\"dropdown dropdown-user\\\" data-bind=\\\"click: $data.Login.bind($data)\\\"> <a href=\\\"#\\\" class=\\\"dropdown-toggle login\\\"> <i class=\\\"icon-key\\\"></i> <span class=\\\"username\\\">Login</span> </a> </li> </ul> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport {IControlParam, ISearchScreenParam} from \"Core/Screens/IScreen\";\r\nimport {ControlModel} from 'Core/Controls/BaseControl/Models/ControlModel';\r\nimport { RenderModes, CONTROL_TYPES } from \"Core/Constant\";\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {FormDesigner as FormDesignerControl} from \"Core/Controls/FormDesigner/FormDesigner\";\r\nimport {\r\n ConfirmationDialog, EVENTS as ConfirmationDialogEvents,\r\n Types as ConfirmationTypes\r\n} from \"../Core/Components/Dialogs/ConfirmationDialog/ConfirmationDialog\";\r\nimport {CONFIRMATIONS} from \"../Core/Components/Translation/Locales\";\r\n\r\nimport FormDesignerTemplate from \"Pages/Templates/FormDesigner.html\";\r\nko.templates[\"Pages/Templates/FormDesigner\"] = FormDesignerTemplate;\r\n\r\nexport class FormDesignerPage {\r\n\tprivate _formDesignerControl: FormDesignerControl;\r\n\tprivate _isReady: KnockoutObservable<boolean>;\r\n\tprotected _el: HTMLElement;\r\n\tprivate _modal: Modal;\r\n\r\n\tconstructor() {\r\n\t\tthis._isReady = ko.observable(false);\r\n\t\tvar controlModel = new ControlModel();\r\n\t\tcontrolModel.TypeName = CONTROL_TYPES.FormDesigner;\r\n\t\tvar controlsParam: IControlParam = {\r\n\t\t\tModel: controlModel,\r\n\t\t\tForm: null,\r\n\t\t\tRenderMode: RenderModes.View\r\n\t\t}\r\n\t\tthis._formDesignerControl = new FormDesignerControl(controlsParam);\r\n\t}\r\n\r\n\tRender(target): void {\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tasync SetScreenId(screenId: number) {\r\n\t\tBlockUI.Block({ Target: $(this._el).closest('.jBox-content')[0], JBoxBlockButton: true});\r\n\t\tawait this._formDesignerControl.SetValue(screenId);\r\n\t\tBlockUI.Unblock($(this._el).closest('.jBox-content')[0], true);\r\n\t}\r\n\r\n\tGetTemplateName(): string {\r\n\t\treturn 'Pages/Templates/FormDesigner';\r\n\t}\r\n\r\n\tget FormDesignerControl(): FormDesignerControl {\r\n\t\treturn this._formDesignerControl;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tif (el) {\r\n\t\t\tthis._el = el[0];\r\n\t\t}\r\n\t\tthis._isReady(true);\r\n\t}\r\n\r\n\tRemoveControl() {\r\n\t}\r\n\r\n\tShowInModal() {\r\n\t\tthis._modal = new Modal({\r\n\t\t\tonClose: () => {\r\n\t\t\t\tif (this._formDesignerControl.Screen.HasChanges) {\r\n const confirmationDialog = new ConfirmationDialog({\r\n Text: CONFIRMATIONS.SAVE_CHANGES,\r\n Type: ConfirmationTypes.Question\r\n });\r\n confirmationDialog.On(ConfirmationDialogEvents.CONFIRM_SELECTED, this, () => {\r\n this._formDesignerControl.Save();\r\n });\r\n confirmationDialog.Show();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\taddClass: 'screen-in-modal formDesignerModal',\r\n\t\t\tblockScroll: true\r\n\t\t}, true);\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t\tthis._modal.Show();\r\n\t}\r\n}","// Module\nvar code = \"<!-- ko with: FormDesignerControl--> <div data-bind=\\\"template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) }, class: ScreenType()\\\"></div> <!-- /ko -->\";\n// Exports\nexport default code;","export const QUERY_BUILDER = {\r\n\tCELL_SIZE: 20\r\n}\r\n\r\nexport const QUERY_TYPES = {\r\n\tTABLE_VIEW: 'TableView',\r\n\tQUERY: 'Query',\r\n\tTEMPLATE: 'Template'\r\n}\r\n\r\nexport const ENTITY_COLORS = {\r\n\tMAIN_ENTITY: 'color-view bg-yellow-gold bg-font-yellow-gold',\r\n\tRELATED_ENTITY: 'color-view bg-blue bg-font-blue',\r\n\tSUB_ENTITY: 'color-view bg-blue bg-font-blue'\r\n}\r\n\r\nexport const AGGREGATE_FUNCTIONS = {\r\n\tCOUNT: 'COUNT',\r\n\tSUM: 'SUM',\r\n\tMIN: 'MIN',\r\n\tMAX: 'MAX',\r\n\tAVG: 'AVG'\r\n}\r\n\r\nexport const COMPARISON_OPERATOR_LABELS = {\r\n\tEquals: '=',\r\n\tNotEquals: '!=',\r\n\tIsNull: 'IsNull',\r\n\tIsNotNull: 'IsNotNull',\r\n\tLike: 'Like',\r\n\tGreaterThen: '>',\r\n\tLessThen: '<',\r\n\tGreaterOrEqual: '>=',\r\n\tLessOrEqual: '<=',\r\n\tIn: 'In',\r\n\tNotIn: 'NotIn',\r\n\tStartsWith: 'Starts with',\r\n\tNotStartWith: 'Not start with',\r\n\tEndsWith: 'Ends with',\r\n\tNotEndWith: 'Not end with',\r\n\tNotLike: 'Not like'\r\n}","export enum JoinTypes {\r\n\tInnerJoin,\r\n\tLeftJoin,\r\n\tRightJoin,\r\n\tOuterJoin\r\n}\r\n\r\nexport enum UseMainCondition {\r\n\tMainTrue,\r\n\tMainFalse,\r\n\tNotUseMain\r\n}\r\n\r\nexport enum LinkDirectionCondition {\r\n\tLeftToRight,\r\n\tRightToLeft,\r\n\tBoth\r\n}\r\n\r\nexport enum ConditionOperators {\r\n\tAnd,\r\n\tOr\r\n}\r\n\r\nexport enum ComparisonOperators {\r\n\tEquals,\r\n\tNotEquals,\r\n\tIsNull,\r\n\tIsNotNull,\r\n\tLike,\r\n\tGreaterThen,\r\n\tLessThen,\r\n\tGreaterOrEqual,\r\n\tLessOrEqual,\r\n\tIn,\r\n\tStartsWith,\r\n\tEndsWith,\r\n\tNotIn,\r\n\tNotStartWith,\r\n\tNotEndWith,\r\n\tNotLike\r\n}\r\n\r\nexport enum SortOrder {\r\n\tAscending,\r\n\tDescending\r\n}\r\n\r\nexport enum ConditionValueTypes {\r\n\tGeneral,\r\n\tScreenVariable,\r\n\tFunction,\r\n\tQueryBuilder,\r\n\tColumn\r\n}\r\n","export const EVENTS = {\r\n\tNO_ACCESS: 'NO_ACCESS',\r\n\tCLOSE: 'CLOSE',\r\n\tSAVE_AND_CLOSE: 'SAVE_AND_CLOSE',\r\n\tDATA_SAVED: 'DATA_SAVED',\r\n\tDELETED: 'DELETED',\r\n\tAFTER_RENDER: 'AFTER_RENDER',\r\n\tENTITY_SELECTED: 'ENTITY_SELECTED',\r\n\tSELECTED: 'SELECTED',\r\n\tENTITY_UNSELECTED: 'ENTITY_UNSELECTED',\r\n\tLOOKUP_ENTITY_SELECTED: 'LOOKUP_ENTITY_SELECTED',\r\n\tLOOKUP_ENTITY_UNSELECTED: 'LOOKUP_ENTITY_UNSELECTED',\r\n\tREFERENCE_LOOKUP_ENTITY_SELECTED: 'REFERENCE_LOOKUP_ENTITY_SELECTED',\r\n\tREFERENCE_LOOKUP_ENTITY_UNSELECTED: 'REFERENCE_LOOKUP_ENTITY_UNSELECTED',\r\n\tREFERENCE_ENTITY_SELECTED: 'REFERENCE_ENTITY_SELECTED',\r\n\tREFERENCE_ENTITY_UNSELECTED: 'REFERENCE_ENTITY_UNSELECTED',\r\n\tIS_ITERATOR_CHANGED: 'IS_ITERATOR_CHANGED',\r\n\tCREATE_SUB_QUERY: 'CREATE_SUB_QUERY',\r\n\tREMOVE_SUB_QUERY: 'REMOVE_SUB_QUERY',\r\n\tDRAG: 'DRAG',\r\n\tDRAG_STOP: 'DRAG_STOP',\r\n\tMOUSE_OVER: 'MOUSE_OVER',\r\n\tCLICK: 'CLICK',\r\n\tJOIN_TYPE_CHANGED: 'JOIN_TYPE_CHANGED',\r\n\tCOLUMN_SELECTED: 'COLUMN_SELECTED',\r\n\tUPDATE_SORT: 'UPDATE_SORT'\r\n};","import * as _ from \"underscore\";\r\n\r\nimport {deserializeAs} from 'libs/cerialize';\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport {RelatedEntitiesModel} from 'QueryBuilder/Models/RelatedEntitiesModel'\r\nimport {RelatedSubEntitiesModel} from 'QueryBuilder/Models/RelatedSubEntitiesModel'\r\n\r\nexport class ConcreteEntityModel {\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tMainEntity: EntityModel;\r\n\r\n\t@deserializeAs(RelatedEntitiesModel)\r\n\tRelatedEntities: RelatedEntitiesModel;\r\n\r\n\t@deserializeAs(RelatedSubEntitiesModel)\r\n\tRelatedSubEntitiesModel: Array<RelatedSubEntitiesModel>;\r\n\r\n\tGuid: string;\r\n\r\n\tconstructor() {\r\n\t\tthis.RelatedSubEntitiesModel = [];\r\n\t}\r\n\r\n\tGetLinkTable(relatedEntityId: number): EntityModel {\r\n\t\tconst relatedEntity = _.find(this.RelatedEntities.Entities, (model: EntityModel) => {\r\n\t\t\treturn model.EntityId === relatedEntityId;\r\n\t\t});\r\n\t\tif (!relatedEntity) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn relatedEntity.LinkEntity;\r\n\t}\r\n}","import {deserializeAs, deserialize} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {EntityRelationshipsMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { TranslationModel } from 'Core/ScreenManager/Models/TranslationModel';\r\n\r\nexport class EditQueryModel {\r\n\tconstructor() {\r\n\t\tthis.EntitiesRelationships = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(EntityRelationshipsMetadataModel)\r\n\tEntitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\r\n\t@deserializeAs(QueryExpressionModel)\r\n\tQuery: QueryExpressionModel;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n}","import * as ko from \"knockout\";\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {FieldModel} from 'QueryBuilder/Models/FieldModel';\r\nimport {IconModel} from 'Core/Controls/BaseControl/Models/IconModel';\r\nimport {Icon} from 'Core/Icon/Icon';\r\nimport {TranslationModel} from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nenum RelationTypes\r\n{\r\n\tOneToOneSubject,\r\n\tOneToOne,\r\n\tOneToMain,\r\n\tOneToMany\r\n}\r\n\r\nexport class RelationTypeModel{\r\n\tTitle: string;\r\n\tRelationType: RelationTypes;\r\n}\r\n\r\nexport class EntityModel {\r\n\r\n\t@deserialize\r\n\tDbId: number;\r\n\r\n\t@deserialize\r\n\tEntityId: number;\r\n\r\n\t@deserialize\r\n\tShortName: string;\r\n\r\n\t@deserialize\r\n\tEntityName: string;\r\n\r\n\t@deserialize\r\n\tEntityNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tEntityFullName: string;\r\n\r\n\t@deserialize\r\n\tEntityFullNameTranslation: string;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\t@deserialize\r\n\tTypeName: string;\r\n\r\n\t@deserializeAs(FieldModel)\r\n\tFields: Array<FieldModel>;\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tRelatedSubEntities: Array<EntityModel>;\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tLinkEntity: EntityModel;\r\n\r\n\t@deserialize\r\n\tFontName: string;\r\n\r\n\t@deserialize\r\n\tIconName: string;\r\n\r\n\t@deserialize\r\n\tGraphicalIcon: string;\r\n\r\n\t@deserialize\r\n\tRelationTypes: Array<number>;\r\n\r\n\t@deserialize\r\n\tIsView: boolean;\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\r\n\tIsMain: KnockoutObservable<boolean>;\r\n\t\r\n\tRelationTypeTitle(relationType: number){\r\n\t\treturn RelationTypes[relationType];\r\n\t}\r\n\r\n\tget EntityIcon(): Icon {\r\n\t\tif (!this._entityIcon) {\r\n\t\t\tthis._entityIcon = this.GetEntityIcon();\r\n\t\t\treturn this._entityIcon;\r\n\t\t}\r\n\t\treturn this._entityIcon;\r\n\t}\r\n\r\n\tGetEntityIcon(): Icon {\r\n\t\tvar isImage = !!this.GraphicalIcon;\r\n\t\tvar iconModel = new IconModel();\r\n\t\ticonModel.IsIcon = !isImage;\r\n\t\ticonModel.IsImage = isImage;\r\n\t\ticonModel.Name = this.IconName;\r\n\t\ticonModel.Image = this.GraphicalIcon;\r\n\t\ticonModel.FontName = this.FontName;\r\n\t\treturn new Icon(iconModel);\r\n\t}\r\n\r\n\tget GetRelationTypes(){\r\n\t\tvar relations = [];\r\n\t\t_.each(this.RelationTypes, (item)=>{\r\n\t\t\tvar type = new RelationTypeModel();\r\n\t\t\ttype.Title = RelationTypes[item];\r\n\t\t\ttype.RelationType = item;\r\n\t\t});\r\n\t\treturn relations;\r\n\t}\r\n\r\n\t_entityIcon: Icon;\r\n\r\n\tconstructor() {\r\n\r\n\t\tthis.Fields = [];\r\n\t\tthis.RelationTypes = [];\r\n\t\tthis.IsSelected = ko.observable(false);\r\n\t\tthis.IsMain = ko.observable(false);\r\n\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {Icon} from 'Core/Icon/Icon'\r\nimport { IconModel } from 'Core/Controls/BaseControl/Models/IconModel'\r\nimport { TranslationModel } from \"Core/Controls/BaseControl/Models/TranslationModel\";\r\n\r\nexport class FieldModel {\r\n\tprotected _fieldIcon: Icon;\r\n\r\n\t@deserialize\r\n\tFieldId: number;\r\n\r\n\t@deserialize\r\n\tFieldName: string;\r\n\r\n\t@deserialize\r\n\tFieldNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeName: string;\r\n\r\n\t@deserialize\r\n\tIsPrimaryKey: boolean;\r\n\r\n\t@deserialize\r\n IsIndexed: boolean;\r\n\r\n @deserialize\r\n IsVirtual: boolean;\r\n\r\n\t@deserialize\r\n IsSystem: boolean;\r\n\r\n\t@deserialize\r\n\tIcon: string;\r\n\r\n\t@deserialize\r\n\tIconImage: string;\r\n\r\n\t@deserialize\r\n\tIconType: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeIcon: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeIconImage: string;\r\n\r\n\t@deserialize\r\n\tFieldTypeIconType: string;\r\n\r\n\t@deserialize\r\n\tFieldFormatIcon: string;\r\n\r\n\t@deserialize\r\n\tFieldFormatIconImage: string;\r\n\r\n\t@deserialize\r\n\tFieldFormatIconType: string;\r\n\r\n\t@deserialize\r\n\tSort: number;\r\n\t\r\n\t@deserialize\r\n\tValTableId: number;\r\n\r\n\t@deserialize\r\n\tValFieldId: number;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tTranslations: Array<TranslationModel>;\r\n\r\n\tIsSelected: KnockoutObservable<boolean>;\r\n\tDisplayOrder: KnockoutObservable<number>;\r\n Total: KnockoutObservable<boolean>;\r\n Average: KnockoutObservable<boolean>;\r\n IsWrapped: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n this.IsSelected = ko.observable(false);\r\n this.Total = ko.observable(false);\r\n this.DisplayOrder = ko.observable(0);\r\n this.IsWrapped = ko.observable(false);\r\n this.Average = ko.observable(false);\r\n\t}\r\n\r\n\tget FieldIcon(): Icon {\r\n\t\tif (!this._fieldIcon) {\r\n\t\t\tif (this.Icon || this.IconImage) {\r\n\t\t\t\tthis._fieldIcon = new Icon(this.GetIconModel(this.Icon, this.IconType, this.IconImage));\r\n\t\t\t} else if (this.FieldTypeIcon || this.FieldTypeIconImage) {\r\n\t\t\t\tthis._fieldIcon = new Icon(this.GetIconModel(this.FieldTypeIcon, this.FieldTypeIconType, this.FieldTypeIconImage));\r\n\t\t\t} else if (this.FieldFormatIcon || this.FieldFormatIconImage) {\r\n\t\t\t\tthis._fieldIcon = new Icon(this.GetIconModel(this.FieldFormatIcon, this.FieldFormatIconType, this.FieldFormatIconImage));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._fieldIcon;\r\n\t}\r\n\r\n\tGetIconModel(name, fontName, image): IconModel {\t\t\r\n\t\tvar isImage = !!image;\r\n\t\tvar iconModel = new IconModel();\r\n\t\ticonModel.IsIcon = !isImage;\r\n\t\ticonModel.IsImage = isImage;\r\n\t\ticonModel.Name = name;\r\n\t\ticonModel.Image = image;\r\n\t\ticonModel.FontName = fontName;\r\n\t\treturn iconModel;\r\n\t}\r\n}","import {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\nimport {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\n\r\nexport class RelatedEntitiesModel {\r\n\r\n\t@deserializeAs(EntityModel)\r\n\tEntities: Array<EntityModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n} ","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {EntityModel} from 'QueryBuilder/Models/EntityModel'\r\n\r\nexport class RelatedSubEntitiesModel {\r\n\t@deserializeAs(EntityModel)\r\n\tEntities: Array<EntityModel>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport {inheritSerialization, autoserialize, autoserializeAs} from 'libs/cerialize';\r\n\r\nexport class TableSecurityUnitModel {\r\n\r\n\t@autoserialize\r\n\tId: number;\r\n\r\n\t@autoserialize\r\n\tName: string;\r\n\r\n\t@autoserialize\r\n\tNameTranslation: string;\r\n}","import {deserializeAs, deserialize} from 'libs/cerialize';\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { TranslationModel } from 'Core/ScreenManager/Models/TranslationModel';\r\nimport {TableSecurityUnitModel} from 'QueryBuilder/Models/TableSecurityUnitModel';\r\n\r\nexport class NewQueryDto {\r\n\tconstructor() {\r\n\t\tthis.Entities = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(TableSecurityUnitModel)\r\n\tEntities: Array<TableSecurityUnitModel>;\r\n\r\n\t@deserializeAs(QueryExpressionModel)\r\n\tQuery: QueryExpressionModel;\r\n\r\n\t@deserializeAs(TranslationModel)\r\n\tNameTranslations: Array<TranslationModel>;\r\n}","\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {ViewModes} from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport {NewQueryDto} from 'QueryBuilder/Models/NewQueryDto';\r\n\r\nexport interface ICreateNewQueryRequestModel {\r\n\tTypeName: ViewModes;\r\n\tSubjectEntityId: number;\r\n\tGridSubjectEntityId: number;\r\n\tName: string;\r\n\tQueryText: String;\r\n};\r\n\r\nexport class NewQueryStore {\r\n\tstatic New(name: string): P.Promise<NewQueryDto> {\r\n\r\n\t\tvar deferredResult = P.defer<NewQueryDto>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.NEW_QUERY,\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: { name : name }\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<NewQueryDto>Deserialize(data, NewQueryDto));\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Create(params: ICreateNewQueryRequestModel): P.Promise<OperationResultModel> {\r\n\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.CREATE_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.Deserialize(data)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResultModel {\r\n\t\tconst model = <OperationResultModel>Deserialize(jsonObject, OperationResultModel);\r\n\t\treturn model;\r\n\t}\r\n} ","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nexport interface IUpdateQueryRequestModel {\r\n\tId: number;\r\n\tQueryText: String;\r\n\tName: string;\r\n\tNameTranslations: Array<ITranslationValue>\r\n};\r\n\r\nexport class UpdateQueryStore {\r\n\tstatic Update(params: IUpdateQueryRequestModel): P.Promise<OperationResultModel> {\r\n\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.UPDATE_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(this.Deserialize(data)));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): OperationResultModel {\r\n\t\tconst model = <OperationResultModel>Deserialize(jsonObject, OperationResultModel);\r\n\t\treturn model;\r\n\t}\r\n} ","export const PRIORITY_LIST = [\r\n\t// { Value: 0, Label: 'None' }, cells with 0 priority replaced to 4\r\n\t{ Value: 1, Label: '1' },\r\n\t{ Value: 2, Label: '2' },\r\n\t{ Value: 3, Label: '3' },\r\n\t{ Value: 4, Label: '4' },\r\n\t{ Value: -1, Label: 'Show' }, // show allways \r\n];","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { PRIORITY_LIST } from 'QueryBuilder/TableViewConfig/PriorityList';\r\n\r\nconst minPriority = Math.max.apply(null, PRIORITY_LIST.map(i => i.Value));\r\n\r\nexport class FieldInfo {\r\n\tIsWrapped: KnockoutObservable<boolean>;\r\n\tIsGroup: KnockoutObservable<boolean>;\r\n\tDisplayPriority: KnockoutObservable<any>;\r\n\tIsTotal: KnockoutObservable<boolean>;\r\n\tIsCount: KnockoutObservable<boolean>;\r\n\tIsSubTotal: KnockoutObservable<boolean>;\r\n\tIsAverage: KnockoutObservable<boolean>;\r\n\tIsEnableSort = true;\r\n\r\n\tconstructor(\r\n\t\tpublic Column?: QueryColumnModel,\r\n\t\tpublic Entity?: QueryEntityModel,\r\n\t\tprivate _title = LABELS.FORMAT\r\n\t) {\r\n\t\tif (Column && Entity) {\r\n\t\t\tthis.IsWrapped = ko.observable(Column.IsWrapped);\r\n\t\t\tthis.IsWrapped.subscribe((newValue) => { Column.IsWrapped = newValue; });\r\n\r\n\t\t\tif (Column.DisplayPriority === 0) { // replace 0 priority with max\r\n\t\t\t\tColumn.DisplayPriority = minPriority;\r\n\t\t\t}\r\n\t\t\tconst priority = PRIORITY_LIST.find(item => item.Value === Column.DisplayPriority)\r\n\r\n\t\t\tthis.DisplayPriority = ko.observable(priority);\r\n\t\t\tthis.IsTotal = ko.observable(Column.IsTotal);\r\n\t\t\tthis.IsCount = ko.observable(Column.IsCount);\r\n\t\t\tthis.IsSubTotal = ko.observable(Column.IsSubTotal);\r\n\t\t\tthis.IsAverage = ko.observable(Column.IsAverage);\r\n\t\t\tthis.IsGroup = ko.observable(Column.IsGroup);\r\n\r\n\t\t\tthis.IsAverage.subscribe((newValue) => { Column.IsAverage = newValue; });\r\n\t\t\tthis.IsTotal.subscribe((newValue) => { Column.IsTotal = newValue; });\r\n\t\t\tthis.IsCount.subscribe((newValue) => { Column.IsCount = newValue; });\r\n\t\t\tthis.IsSubTotal.subscribe((newValue) => { Column.IsSubTotal = newValue; });\r\n\t\t\tthis.IsGroup.subscribe((newValue) => { Column.IsGroup = newValue; });\r\n\t\t\tthis.DisplayPriority.subscribe((newValue) => { Column.DisplayPriority = newValue.Value; });\r\n\t\t} else {\r\n\t\t\tthis.IsEnableSort = false;\r\n\t\t}\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\tif (this.Entity && this.Column) {\r\n\t\t\tvar entityName = this.Entity.Metadata.NameTranslation || this.Entity.Metadata.Name;\r\n\t\t\tif (this.Entity.Index > 1) {\r\n\t\t\t\tentityName = `${entityName}${this.Entity.Index}`;\r\n\t\t\t}\r\n\r\n\t\t\treturn `${entityName}.${this.Column.Metadata.NameTranslation || this.Column.Metadata.Name}`;\r\n\t\t} else {\r\n\t\t\treturn this._title;\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { NOTIFICATIONS, LABELS } from 'Core/Components/Translation/Locales';\r\nimport { PRIORITY_LIST } from 'QueryBuilder/TableViewConfig/PriorityList';\r\nimport { FieldInfo } from 'QueryBuilder/TableViewConfig/FieldInfo';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport TableViewFieldConfigTemplate from 'QueryBuilder/TableViewConfig/Templates/TableViewFieldConfig.html';\r\n\r\nexport class EntityGroup {\r\n\tprivate _fields: KnockoutObservableArray<FieldInfo>;\r\n\tprivate _displayPriorityList: KnockoutObservableArray<any>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _guid = Guid.NewGuid();\r\n\tEntities: Array<QueryEntityModel>;\r\n\tprivate _basicMode: boolean;\r\n\r\n\tconstructor() {\r\n\t\tthis._fields = ko.observableArray([]);\r\n\t\tthis._displayPriorityList = ko.observableArray(PRIORITY_LIST);\r\n\t\tthis.Entities = [];\r\n\t\tthis.EntitiesGroups = [];\r\n\t\tthis._basicMode = GlobalManager.Instance.GetGlobal(GLOBALS.BASIC_MODE) === '1';\r\n\t}\r\n\r\n\tAddEntity(entity: QueryEntityModel) {\r\n\t\tthis.Entities.push(entity);\r\n\t}\r\n\r\n\tEntitiesGroups: Array<EntityGroup>;\r\n\r\n\tGetTemplate() {\r\n\t\treturn TableViewFieldConfigTemplate;\r\n\t}\r\n\r\n\tUpdateSortPositionValues() {\r\n\t\tvar indx = 0;\r\n\t\t_.each(this._fields(), (field: FieldInfo) => {\r\n\t\t\tif (field.Column) {\r\n\t\t\t\tfield.Column.DisplayOrder = indx;\r\n\t\t\t\tindx++;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tStartOrder(evt, ui) {\r\n\t\tui.placeholder.html(ui.item.html());\r\n\t}\r\n\r\n\tStopOrder() {\r\n\t\tthis.UpdateSortPositionValues();\r\n\t}\r\n\r\n\tCheckTotal(model: FieldInfo) {\r\n\t\tmodel.IsTotal(!model.Column.IsTotal);\r\n\t}\r\n\r\n\tCheckCount(model: FieldInfo) {\r\n\t\tmodel.IsCount(!model.Column.IsCount);\r\n\t}\r\n\r\n\tCheckSubTotal(model: FieldInfo) {\r\n\t\tmodel.IsSubTotal(!model.Column.IsSubTotal);\r\n\t}\r\n\r\n\tCheckAverage(model: FieldInfo) {\r\n\t\tmodel.IsAverage(!model.Column.IsAverage);\r\n\t}\r\n\r\n\tCheckWrapped(model: FieldInfo) {\r\n\t\tmodel.IsWrapped(!model.IsWrapped());\r\n\t}\r\n\r\n\tCheckGroup(model: FieldInfo) {\r\n\t\tmodel.IsGroup(!model.IsGroup());\r\n\t}\r\n\r\n\tUpdateFieldList() {\r\n\t\tvar fields = [];\r\n\t\t_.each(this.Entities,\r\n\t\t\tentity => {\r\n\t\t\t\t_.each(entity.Columns,\r\n\t\t\t\t\tcolumn => {\r\n\t\t\t\t\t\tif(column.Metadata.Type) {\r\n\t\t\t\t\t\t\tlet field = new FieldInfo(column, entity);\r\n\t\t\t\t\t\t\tfields.push(field);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tfields = _.sortBy(fields, (fieldModel: FieldInfo) => { return fieldModel.Column.DisplayOrder; });\r\n\r\n\t\tfor (var indx = 0; indx < fields.length; indx++) {\r\n\t\t\tfields[indx].Column.DisplayOrder = indx;\r\n\t\t}\r\n\r\n\t\tvar formatField = new FieldInfo();\r\n\t\tfields.unshift(formatField);\r\n\r\n\t\tthis._fields(fields);\r\n\t}\r\n}","// Module\nvar code = \"<table class=\\\"table table-striped table-bordered table-advance flip-content doubleScroll_Wrapper_2_width\\\"> <thead class=\\\"flip-content\\\"> <tr data-bind=\\\"css: _guid, sortable: { data: _fields,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tdelay: 100,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tconnectClass: _guid,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\titems: 'th:not(.unsortable)',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tplaceholder: 'sort-column-placeholder',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstart: $data.StartOrder.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstop: $data.StopOrder.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\taxis: 'x'\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}}\\\"> <th data-bind=\\\"text: Title, css: { 'unsortable': !IsEnableSort}\\\" style=\\\"cursor:pointer\\\"></th> </tr> </thead> <tbody> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.DISPLAY_PRIORITY --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <select data-bind=\\\"options: $parent._displayPriorityList, optionsText: 'Label', value: DisplayPriority\\\"></select> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- ko ifnot: _basicMode --> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.SUBTOTAL --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsSubTotal, click: $parent.CheckSubTotal.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.TOTAL --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsTotal, click: $parent.CheckTotal.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.COUNT --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsCount, click: $parent.CheckCount.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.AVERAGE --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsAverage, click: $parent.CheckAverage.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- ko ifnot: _basicMode --> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.WRAP_FROM_HERE --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsWrapped, click: $parent.CheckWrapped.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <tr class=\\\"a-testing-helper-table-view\\\"> <td style=\\\"text-align:left\\\"><b><!-- ko text: _labels.GROUP --><!-- /ko --></b></td> <!-- ko foreach: _fields --> <!-- ko if: $index() != 0 --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"uniform: $data.IsGroup, click: $parent.CheckGroup.bind($parent, $data)\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> <!-- /ko --> </tr> <!-- /ko --> <!-- ko if: EntitiesGroups.length > 0 --> <tr class=\\\"a-testing-helper-table-view entitiesGroups\\\"> <td data-bind=\\\"attr: { colspan: _fields().length + 1 }\\\" style=\\\"padding-left:10px\\\"> <!-- ko foreach: EntitiesGroups --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </td> </tr> <!-- /ko --> </tbody> </table> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport * as $ from \"jquery\";\r\n\r\nimport {QueryExpressionModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { EntityGroup } from 'QueryBuilder/TableViewConfig/EntityGroup';\r\n\r\nimport TableViewConfigTemplate from 'QueryBuilder/TableViewConfig/Templates/TableViewConfig.html';\r\n\r\nexport class TableViewConfig {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _groups: KnockoutObservable<EntityGroup>;\r\n\tprivate _el: HTMLElement;\r\n\tconstructor() {\r\n\t\tthis._groups = ko.observable(null);\r\n\t\tthis._el = null;\r\n\t}\r\n\r\n\tset ExpressionModel(expressionModel: QueryExpressionModel) {\r\n\t\tthis._expressionModel = expressionModel;\r\n\t}\r\n\r\n\tDoubleScroll(){\r\n\t\tconst wrapper1 = $(this._el).find('.doubleScroll_Wrapper_1');\r\n\t\tconst wrapper2 = $(this._el).find('.doubleScroll_Wrapper_2');\r\n\t\tconst divScroll = $(wrapper1).find('.doubleScroll_Wrapper_1_DivScroll');\r\n\r\n\t\tsetTimeout(()=>{\r\n\t\t\tdivScroll.width($(wrapper2).find('.doubleScroll_Wrapper_2_width:first').width());\r\n\t\t},1000);\r\n\r\n\t\t$(wrapper1).scroll(()=> {\r\n\t\t\t$(wrapper2)\r\n\t\t\t\t.scrollLeft($(wrapper1).scrollLeft());\r\n\t\t});\r\n\t\t$(wrapper2).scroll(()=> {\r\n\t\t\t$(wrapper1)\r\n\t\t\t\t.scrollLeft($(wrapper2).scrollLeft());\r\n\t\t});\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tthis._groups(this.GetAllQueryEntities(this._expressionModel));\r\n\t\tthis.UpdateFields([this._groups()]);\r\n\t\tthis.DoubleScroll();\r\n\t}\r\n\r\n\tUpdateFields(groups: Array<EntityGroup>){\r\n\t\t_.each(groups, (group) => {\r\n\t\t\tgroup.UpdateFieldList();\r\n\t\t\tthis.UpdateFields(group.EntitiesGroups);\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn TableViewConfigTemplate;\r\n\t}\r\n\r\n\tAfterRender(el: HTMLElement){\r\n\t\tthis._el = el;\r\n\t}\r\n\r\n\r\n\tprivate GetAllQueryEntities(expression: QueryExpressionModel): EntityGroup {\r\n\t\tlet result: EntityGroup = new EntityGroup();\r\n\r\n\t\tlet joins = [];\r\n\t\tjoins = joins.concat(expression.EntityJoins)\r\n\t\t.concat(expression.ReferenceEntityJoins)\r\n\t\t.concat(expression.LookupEntityJoins)\r\n\t\t.concat(expression.SubEntityJoins)\r\n\t\t.concat(expression.ReferenceLookupEntityJoins);\r\n\r\n\t\tresult.AddEntity(expression.Entity);\r\n\t\t_.each(joins,(join: QueryEntityJoinModel) => {\r\n\t\t\t\tif (!join.IsSubQuery) {\r\n\t\t\t\t\tif(join.LinkEntity){\r\n\t\t\t\t\t\tresult.AddEntity(join.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresult.AddEntity(join.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(join, result);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet groupModel = new EntityGroup();\r\n\t\t\t\t\tif(join.LinkEntity){\r\n\t\t\t\t\t\tgroupModel.AddEntity(join.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroupModel.AddEntity(join.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(join, groupModel);\r\n\t\t\t\t\tresult.EntitiesGroups.push(groupModel);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate GetAllQueryEntitiesFromJoin(join: QueryEntityJoinModel, group: EntityGroup) {\r\n\t\tlet joins = [];\r\n\t\tjoins = joins\r\n\t\t.concat(join.Joins)\r\n\t\t.concat(join.LookupEntityJoins)\r\n\t\t.concat(join.ReferenceEntityJoins)\r\n\t\t.concat(join.SubEntityJoins)\r\n\t\t.concat(join.ReferenceLookupEntityJoins);\r\n\t\t\r\n\t\t_.each(joins,(item: QueryEntityJoinModel) => {\r\n\t\t\t\tif (!item.IsSubQuery) {\r\n\t\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\t\tgroup.AddEntity(item.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroup.AddEntity(item.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(item, group);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet groupModel = new EntityGroup();\r\n\t\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\t\tgroupModel.AddEntity(item.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgroupModel.AddEntity(item.Entity);\r\n\t\t\t\t\tthis.GetAllQueryEntitiesFromJoin(item, groupModel);\r\n\t\t\t\t\tgroup.EntitiesGroups.push(groupModel);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\n","// Module\nvar code = \"<div class=\\\"doubleScroll_wrapper\\\"> <div class=\\\"doubleScroll_Wrapper_1\\\"> <div class=\\\"doubleScroll_Wrapper_1_DivScroll\\\"> </div> </div> <div class=\\\"table-view-config clearfix doubleScroll_Wrapper_2\\\"> <!-- ko with: _groups --> <!-- ko template: { html: $data.GetTemplate.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { FieldListItem } from 'QueryBuilder/FieldListMenu/FieldListItem';\r\n\r\nimport FieldListMenuTemplate from 'QueryBuilder/FieldListMenu/Templates/FieldListMenu.html';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {EVENTS} from 'QueryBuilder/Events';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\nconst DISABLE_LIFESTATUS = 'Disabled';\r\n\r\nexport class FieldListMenu extends Event {\r\n\tprivate _items: KnockoutObservableArray<FieldListItem>;\r\n\tprivate _isOpen: KnockoutObservable<boolean>;\r\n\tprivate _enableLeave: boolean;\r\n\tSelectedColumnsCount: KnockoutComputed<number>;\r\n\tIsAllSelected: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _draggAppendTarget;\r\n\r\n\tconstructor(\r\n\t\tprivate _queryEntityModel: QueryEntityModel,\r\n\t\tprivate _isEnableSubQuery = true,\r\n\t\tprivate _isInSubQuery = false\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.AddEvent(EVENTS.CREATE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.REMOVE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.COLUMN_SELECTED);\r\n\t\tthis.IsAllSelected = ko.observable(false);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._isOpen = ko.observable(false);\r\n\t\tthis.SelectedColumnsCount = ko.computed(() => {\r\n\t\t\tvar selectedColumns = _.filter(this._items(), item => { return item.IsSelected() });\r\n\t\t\treturn selectedColumns.length;\r\n\t\t});\r\n\t\tthis._enableLeave = true;\r\n\t}\r\n\r\n\tprivate IsRetired(statusName: string){\r\n\t\treturn statusName == DELETE_LIFESTATUS || statusName == DISABLE_LIFESTATUS;\r\n\t}\r\n\r\n AddItem(item: FieldListItem) {\r\n if (!this.IsRetired(item.Model.LifestatusName) || item.IsSelected()) {\r\n this._items.push(item);\r\n }\r\n \r\n\t\tthis.IsAllSelected(this._items().length === this._queryEntityModel.Columns.length);\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn FieldListMenuTemplate;\r\n\t}\r\n\r\n\t@enumerable get Items(): KnockoutObservableArray<FieldListItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tSelect(item: FieldListItem) {\r\n\t\titem.IsSelected(!item.IsSelected());\r\n\t\tif (item.IsSelected()) {\r\n\t\t\tthis.AddColumn(item.Model.Id);\r\n\t\t\tthis.Trigger(EVENTS.COLUMN_SELECTED, { Id: item.Model.Id });\r\n\t\t} else {\r\n this.RemoveColumn(item.Model.Id);\r\n if (item.Model.LifestatusName === DELETE_LIFESTATUS) {\r\n this.Items().splice(this.Items().indexOf(item), 1);\r\n }\r\n }\r\n\t\tthis.IsAllSelected(this._items().length === this._queryEntityModel.Columns.length);\r\n\t}\r\n\r\n\tAddColumn(fieldId: number) {\r\n\t\tvar fieldMetadata = _.find(this._queryEntityModel.Metadata.Fields, field => field.Id === fieldId);\r\n\t\tif (fieldMetadata) {\r\n\t\t\tvar queryColumnModel = new QueryColumnModel();\r\n\t\t\tqueryColumnModel.Metadata = fieldMetadata;\r\n\t\t\tthis._queryEntityModel.Columns.push(queryColumnModel);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveColumn(fieldId: number) {\r\n\t\tvar queryColumn = _.find(this._queryEntityModel.Columns, item => item.Metadata.Id === fieldId);\r\n\t\tif (queryColumn) {\r\n\t\t\tthis._queryEntityModel.Columns.splice(this._queryEntityModel.Columns.indexOf(queryColumn), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tDraggableHelper(item: FieldListItem, evt, ui) {\r\n\t\treturn $(`<div class=\"box-shadow--6dp\" style=\"margin-left: 10px; height: 40px; cursor: move; z-index: ${ZIndexManager.Instance.NextValue}; position: relative;\">\r\n\t\t\t\t\t\t<div class=\"panel color-view bg-blue bg-font-blue\" style=\"height: 40px;\">\r\n\t\t\t\t\t\t\t<div style=\"cursor: move; padding: 0; display: inline-block; padding-left: 5px; padding-right: 5px;\" class=\"panel-heading text-center\">\r\n\t\t\t\t\t\t\t\t<h5 class=\"bold\">\r\n\t\t\t\t\t\t\t\t\t${this._queryEntityModel.Metadata.Name}.${item.Name}\r\n\t\t\t\t\t\t\t\t</h5>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>`);\r\n\t}\r\n\r\n\tStartDrag(item: FieldListItem, evt, ui) {\r\n\r\n\t\tko.utils.domData.set(evt.target, 'ko_dragItem', { FieldMetadataModel: item.Model, QueryEntityModel: this._queryEntityModel });\r\n\t\t$('.queryBuilderDropdown').parent().removeClass('open');\r\n\t\tthis._draggAppendTarget.css('overflow', 'auto');\r\n\r\n\t}\r\n\r\n\r\n\tDrag(item: FieldListItem, evt, ui) {\r\n\t\tthis._draggAppendTarget.scrollTop((evt.pageY - 400));\r\n\t\t$(\"#QuerySorting\").sortable(\"refresh\");\r\n\t}\r\n\r\n\t@enumerable get AppendTo() {\r\n\t\treturn this._draggAppendTarget|| '.jBox-Modal .jBox-content';\r\n\t}\r\n\r\n\tAfterRender(args) {\r\n\t\tif (args && args[1]) {\r\n\t\t\tconst $parentNode = $(args[1].parentNode);\r\n\t\t\tconst $jboxContent = $parentNode.parent('.jBox-content');\r\n\t\t\tthis._draggAppendTarget= $jboxContent;\r\n\r\n\t\t\t$parentNode.on('show.bs.dropdown', function () {\r\n const styling: any = {\r\n position: 'absolute',\r\n left: 0\r\n };\r\n styling.top = 43;\r\n\t\t\t\tstyling['box-shadow'] = '5px -5px rgba(102, 102, 102, 0.5)';\r\n\t\t\t\t$(args[0]).css(styling).addClass('queryBuilderDropdown');\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tSelectAll() {\r\n\t\tthis.IsAllSelected(!this.IsAllSelected());\r\n\t\tif (this.IsAllSelected()) {\r\n\t\t\t_.each(this._items(),\r\n\t\t\t\t(item) => {\r\n\t\t\t\t\tif (!item.IsSelected()) {\r\n\t\t\t\t\t\titem.IsSelected(true);\r\n\t\t\t\t\t\tthis.AddColumn(item.Model.Id);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\t_.each(this._items(),\r\n\t\t\t\t(item) => {\r\n\t\t\t\t\titem.IsSelected(false);\r\n\t\t\t\t\tthis.RemoveColumn(item.Model.Id);\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tCreateSubQuery() {\r\n\t\tthis._isInSubQuery = true;\r\n\t\tthis.Trigger(EVENTS.CREATE_SUB_QUERY);\r\n\t}\r\n\r\n\tRemoveSubQuery() {\r\n\t\tthis._isInSubQuery = false;\r\n\t\tthis.Trigger(EVENTS.REMOVE_SUB_QUERY);\r\n\t}\r\n\r\n\tset IsInSubQuery(value: boolean){\r\n\t\tthis._isInSubQuery = value;\r\n\t}\r\n\r\n\t@enumerable get IsEnableSubQuery(): boolean {\r\n\t\treturn this._isEnableSubQuery;\r\n\t}\r\n\r\n\t@enumerable get IsInSubQuery(): boolean {\r\n\t\treturn this._isInSubQuery;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"preventBubble: ['mousedown']\\\" class=\\\"fieldListMenuDropdown dropdown-menu hold-on-click dropdown-checkboxes\\\" role=\\\"menu\\\" style=\\\"position:absolute\\\"> <div data-bind=\\\"preventBubble: ['mousewheel', 'DOMMouseScroll']\\\" style=\\\"max-height:300px;overflow-y:scroll\\\"> <label data-bind=\\\"preventBubble: ['mousedown'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: $data.SelectAll.bind($data)\\\" class=\\\"select-all-checkbox\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: IsAllSelected\\\" type=\\\"checkbox\\\"> <!-- ko text: _labels.SELECT_ALL --><!-- /ko --> </label> <!-- ko foreach: Items --> <label data-bind=\\\"preventBubble: ['mousedown'],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tclick: $parent.Select.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tdraggable: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tconnectToSortable: '#QuerySorting',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdelay: 300,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tstart: $parent.StartDrag.bind($parent, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdrag: $parent.Drag.bind($parent, $data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tappendTo: $parent.AppendTo,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tcontainment: $parent.AppendTo,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\thelper: $parent.DraggableHelper.bind($parent, $data)\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}, attr: { title: Name }\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: IsSelected\\\" type=\\\"checkbox\\\"> <!-- ko text: Name --><!-- /ko --> </label> <!-- /ko --> </div> <!-- ko if: IsEnableSubQuery --> <div class=\\\"divider\\\"></div> <!-- ko ifnot: IsInSubQuery--> <a data-bind=\\\"click: $data.CreateSubQuery.bind($data)\\\" javascript=\\\";\\\" class=\\\"btn blue\\\">New group</a> <!-- /ko --> <!-- ko if: IsInSubQuery--> <a data-bind=\\\"click: $data.RemoveSubQuery.bind($data)\\\" javascript=\\\";\\\" class=\\\"btn blue\\\">Remove from group</a> <!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {FieldMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class FieldListItem {\r\n\tprivate _isSelected: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(private _model: FieldMetadataModel, isSelected: boolean = false) {\r\n\t\tthis._isSelected = ko.observable(isSelected);\r\n\t}\r\n\r\n\t@enumerable get Name(): string{\r\n\t\treturn this._model.NameTranslation || this._model.Name;\r\n\t}\r\n\r\n\t@enumerable get Model(): FieldMetadataModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\t@enumerable get IsSelected(): KnockoutObservable<boolean> {\r\n\t\treturn this._isSelected;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport {EntityListItem} from 'QueryBuilder/EntityListMenu/EntityListItem';\r\nimport {Event} from \"Core/Common/Event\";\r\nimport {EVENTS} from 'QueryBuilder/Events';\r\nimport { FieldMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nimport EntityListMenuTemplate from 'QueryBuilder/EntityListMenu/Templates/EntityListMenu.html';\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\n\r\nexport class EntityListMenu extends Event {\r\n\tprivate _items: KnockoutObservableArray<EntityListItem>;\r\n\tprivate _enableLeave: boolean;\r\n\tprivate _referenceField: FieldMetadataModel;\r\n\tSelectedEntitiesCount: KnockoutComputed<number>;\r\n\r\n\tIsIterator: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tisIterator: boolean,\r\n\t\treferenceField: FieldMetadataModel\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._referenceField = referenceField;\r\n\t\tthis.IsIterator = ko.observable(isIterator);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.IS_ITERATOR_CHANGED);\r\n\t\tthis._enableLeave = true;\r\n\r\n\t\tthis.SelectedEntitiesCount = ko.computed(() => {\r\n\t\t\treturn _.filter(this._items(), item => { return item.IsSelected() }).length;\r\n\t\t});\r\n\r\n\t\tthis.IsIterator.subscribe((newValue) => {\r\n\t\t\tthis.Trigger(EVENTS.IS_ITERATOR_CHANGED, { IsIterator: newValue });\r\n\t\t});\r\n\t}\r\n\r\n\tget Items(): KnockoutObservableArray<EntityListItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tSetIterator() {\r\n\t\tthis.IsIterator(!this.IsIterator());\r\n\t}\r\n\r\n\tAddItems(items: Array<EntityListItem>) {\r\n\t\t_.each(items, (item)=>this.InitEvents(item));\r\n\t\tthis._items([...this._items(),...items]);\r\n\t}\r\n\r\n\tget ReferenceTitle(): string {\r\n\t\tif(this._referenceField){\r\n\t\t\treturn this._referenceField.NameTranslation || this._referenceField.Name;\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n\r\n\tget ReferenceFieldId(): number {\r\n\t\treturn this._referenceField.Id\r\n\t}\r\n\r\n\tget ReferenceField(): FieldMetadataModel {\r\n\t\treturn this._referenceField\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn EntityListMenuTemplate;\r\n\t}\r\n\r\n\tSelectEntityItemById(entityId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId);\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectReferenceItemById(entityId: number, referenceFieldId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId && item.ReferenceFieldId == referenceFieldId)\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectLookupItemById(entityId: number, lookupFieldId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId && item.LookupFieldId == lookupFieldId);\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectReferenceLookupItemById(entityId: number, referenceLookupFieldId: number) {\r\n\t\tlet itemToSelect = _.find(this._items(), item => {\r\n\t\t\treturn (item.Model.Id === entityId && item.ReferenceLookupFieldId == referenceLookupFieldId);\r\n\t\t});\r\n\r\n\t\tif (itemToSelect) {\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\t\titemToSelect.Off(EVENTS.SELECTED);\r\n\t\t\titemToSelect.IsSelected(true);\r\n\t\t\tthis.InitEvents(itemToSelect);\r\n\t\t}\r\n\t}\r\n\r\n\tget SelectedItemsCount(): number{\r\n\t\treturn _.filter(this._items(), (item) =>{ return item.IsSelected()}).length;\r\n\t}\r\n\r\n\tInitEvents(item: EntityListItem) {\r\n\t\titem.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\r\n\t\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\titem.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS){\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\r\n\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\titem.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS) {\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\t\r\n\t\titem.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS) {\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._enableLeave = false;\t\t\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\titem.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif (item.IsEnableUncheck()) {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tif(item.Model.Lifestatus === DELETE_LIFESTATUS) {\r\n\t\t\t\t\tthis._items.splice(this._items().indexOf(item), 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titem.On(EVENTS.SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.Select(item);\r\n\t\t});\r\n\t}\r\n\r\n\tSelect(item: EntityListItem) {\r\n\t\tif (item.IsEnableUncheck()) {\r\n\t\t\titem.IsSelected(!item.IsSelected());\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(args) {\r\n\t\targs && args[1] && $(args[1].parentNode).on('show.bs.dropdown', function () {\r\n const styling: any = {\r\n position: 'absolute',\r\n left: 0\r\n };\r\n styling.top = 43;\r\n styling['box-shadow'] = '5px -5px rgba(102, 102, 102, 0.5)';\r\n\t\t\t$(args[0]).css(styling).addClass('queryBuilderDropdown');\r\n\t\t});\r\n\t}\r\n\r\n\tMouseLeave(element: HTMLElement) {\r\n\t\tif (this._enableLeave) {\r\n\t\t\t$(element).parent().removeClass('open');\r\n\t\t}\r\n\t\tthis._enableLeave = true;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"fieldListMenuDropdown dropdown-menu hold-on-click dropdown-checkboxes\\\" role=\\\"menu\\\"> <div data-bind=\\\"preventBubble: ['mousewheel', 'DOMMouseScroll']\\\" style=\\\"max-height:300px;overflow-y:scroll\\\"> <label data-bind=\\\"click: $data.SetIterator.bind($data)\\\" class=\\\"select-all-checkbox\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: IsIterator\\\" type=\\\"checkbox\\\"> Iterator </label> <!-- ko fastForEach: Items --> <label data-bind=\\\"click: $data.Select.bind($data), attr: { title: $data.Name }\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <input data-bind=\\\"uniform: $data.IsSelected, enableAttr: $data.IsEnableUncheck\\\" type=\\\"checkbox\\\"> <!-- ko text: $data.NameTranslation --><!-- /ko --> </label> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nimport {Event} from 'Core/Common/Event';\r\nimport {EVENTS} from 'QueryBuilder/Events';\r\nimport {EntityMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport { FieldMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nexport class EntityListItem extends Event {\r\n\tprivate _isSelected: KnockoutObservable<boolean>;\r\n\tprivate _isEnableUncheck: KnockoutObservable<boolean>;\r\n\tprivate _lookupField: FieldMetadataModel;\r\n\tprivate _referenceField: FieldMetadataModel;\r\n\tprivate _referenceLookupField: FieldMetadataModel;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: EntityMetadataModel,\r\n\t\tisSelected: boolean = false,\r\n\t\tisEnableUncheck: boolean = true,\r\n\t\tlookupField: FieldMetadataModel = null,\r\n\t\treferenceField: FieldMetadataModel = null,\r\n\t\treferenceLookupField: FieldMetadataModel = null\r\n\t) {\r\n\t\tsuper();\r\n\r\n\t\tthis.AddEvent(EVENTS.SELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\r\n\t\tthis._lookupField = lookupField;\r\n\t\tthis._referenceField = referenceField;\r\n\t\tthis._referenceLookupField = referenceLookupField;\r\n\t\tthis._isSelected = ko.observable(isSelected);\r\n\t\tthis._isEnableUncheck = ko.observable(isEnableUncheck);\r\n\r\n\t\tthis._isSelected.subscribe(newValue => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.Trigger(this.ItemSelectedTriggerName, {\r\n\t\t\t\t\tEntityId: this._model.Id,\r\n\t\t\t\t\tReferenceLookupFieldId: this._referenceLookupField ? this._referenceLookupField.Id : null,\r\n\t\t\t\t\tLookupFieldId: this._lookupField ? this._lookupField.Id : null,\r\n\t\t\t\t\tReferenceFieldId: this._referenceField ? this._referenceField.Id : null,\r\n\t\t\t\t\tReferenceFieldName: this._referenceField ? this._referenceField.Name : null,\r\n\t\t\t\t\tLifestatus: this._model.Lifestatus\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (this.IsEnableUncheck) {\r\n\t\t\t\t\tthis.Trigger(this.ItemUnSelectedTriggerName, {\r\n\t\t\t\t\t\tEntityId: this._model.Id,\r\n\t\t\t\t\t\tType: this._model.Type,\r\n\t\t\t\t\t\tReferenceLookupFieldId: this._referenceLookupField ? this._referenceLookupField.Id : null,\r\n\t\t\t\t\t\tLookupFieldId: this._lookupField ? this._lookupField.Id : null,\r\n\t\t\t\t\t\tReferenceFieldId: this._referenceField ? this._referenceField.Id : null,\r\n\t\t\t\t\t\tReferenceFieldName: this._referenceField ? this._referenceField.Name : null,\r\n\t\t\t\t\t\tLifestatus: this._model.Lifestatus\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get ItemUnSelectedTriggerName(): string {\r\n\t\tif(this.IsLookup){\r\n\t\t\treturn EVENTS.LOOKUP_ENTITY_UNSELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReferenceLookup){\r\n\t\t\treturn EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReference){\r\n\t\t\treturn EVENTS.REFERENCE_ENTITY_UNSELECTED;\r\n\t\t}\r\n\r\n\t\treturn EVENTS.ENTITY_UNSELECTED;\r\n\t}\r\n\r\n\t@enumerable get ItemSelectedTriggerName(): string {\r\n\t\tif(this.IsLookup){\r\n\t\t\treturn EVENTS.LOOKUP_ENTITY_SELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReferenceLookup){\r\n\t\t\treturn EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED;\r\n\t\t}\r\n\r\n\t\tif(this.IsReference){\r\n\t\t\treturn EVENTS.REFERENCE_ENTITY_SELECTED;\r\n\t\t}\r\n\r\n\t\treturn EVENTS.ENTITY_SELECTED;\r\n\t}\r\n\r\n\t@enumerable get Name(): string {\r\n\t\treturn this._model.Name;\r\n\t}\r\n\r\n\t@enumerable get LookupFieldId(): number{\r\n\t\treturn this._lookupField ? this._lookupField.Id : null;\r\n\t}\r\n\r\n\t@enumerable get ReferenceLookupFieldId(): number{\r\n\t\treturn this._referenceLookupField ? this._referenceLookupField.Id : null;\r\n\t}\r\n\r\n\t@enumerable get ReferenceFieldId(): number{\r\n\t\treturn this._referenceField ? this._referenceField.Id : null;\r\n\t}\r\n\r\n\t@enumerable get IsReferenceLookup(): boolean {\r\n\t\treturn !!this._referenceLookupField;\r\n\t}\r\n\r\n\t@enumerable get IsLookup(): boolean {\r\n\t\treturn !!this._lookupField;\r\n\t}\r\n\r\n\t@enumerable get IsReference(): boolean {\r\n\t\treturn !!this._referenceField;\r\n\t}\r\n\r\n\t//TODO add translation for lookup table\r\n\t@enumerable get NameTranslation(): string {\r\n\r\n\t\tif(this._referenceLookupField){\r\n\t\t\treturn `${this._referenceLookupField.Name} < ${this._model.Name}`;\r\n\t\t}\r\n\r\n\t\tif(this._lookupField){\r\n\t\t\treturn `${this._model.Name} > ${this._lookupField.Name}`;\r\n\t\t}\r\n\t\treturn this._model.NameTranslation || this._model.Name;\r\n\t}\r\n\r\n\t@enumerable get Model(): EntityMetadataModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\t@enumerable get IsSelected(): KnockoutObservable<boolean> {\r\n\t\treturn this._isSelected;\r\n\t}\r\n\r\n\t@enumerable get IsEnableUncheck(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEnableUncheck;\r\n\t}\r\n\r\n\tSelect(){\r\n\t\tthis.Trigger(EVENTS.SELECTED);\r\n\t}\r\n}","import enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class ElementZIndexManager {\r\n\tprivate static instance: ElementZIndexManager;\r\n\tprivate _zIndex: number;\r\n\tprivate _element: HTMLElement;\r\n\r\n\tconstructor() {\r\n\t\tthis._zIndex = 1;\r\n\t}\r\n\r\n\tstatic get Instance() {\r\n\t\tif (this.instance === null || this.instance === undefined) {\r\n\t\t\tthis.instance = new ElementZIndexManager();\r\n\t\t}\r\n\t\treturn this.instance;\r\n\t}\r\n\r\n\tget NextValue(): number {\r\n\t\treturn this._zIndex++;\r\n\t}\r\n\r\n\tToTop(element: HTMLElement) {\r\n\t\t$(element).css({ 'z-index': this.NextValue });\r\n\t}\r\n}","import { JoinTypes } from 'QueryBuilder/Enums';\r\n\r\nexport var JoinTypeImages = {};\r\nJoinTypeImages[JoinTypes.LeftJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAADqUlEQVRoQ+2ZjZEMURDHeyNABIgAESACRIAInAgQASLgIkAEiAARIAJEQP2m+j/V825mp9+b2XK3Na9qS9ntr39/vX59OzuSszsSHLYBOW+R3CKyReRAHthS60CObRbbEpF7ZnbfzK6Z2WUzu+naf5vZV/98MrMPE1bBf8f54EUGB17J2Mc/KjYLBGUvHYAUz3kPo96b2QsnfNbA/8rMXjvAvfoyQDDgJHhuDkD5+1PnRQ7npwPE64D94b/jID5Em4hdDZF+7oAmde8DgtCPIXVqAWAwRpEyHCLKd3g5cwADgNtOTHQfT0VnCgi5+87rIKO0pPnmXsXj1NKb8P+7AVxGNs54a2aXnA9+5A7OGBAi8WUBCLyOI1DGv0Q11hXf3/KUygCBBmcQkRtTYMaAAEKdKKso0mEk6TQGQnT8Dl3NwRnUFWAA9SAyl0DISRVljRLR0qGQgQdxyL4OJ9oaPcjFCaQZ9ULKdScCQen3Bd2JlEIRJxvV65UphmyaAOlKisLf1UsEArqHNe4paOWhR17cGVGnZgZ97SHF6GZ9VCOQXwui8cejgXeIqiIzZ+DAq3PE4Xfqj6hzBxGVPiK0ONpt65FnpaBGDkVL8dYeQHBpds1FEVmaVtzeXHQtzYIRhMmh9qDvid/4JwKinKsVJnouKWS0yPnsBVyrW0Xf8QtItstMKZOc1jrLzHyl7lEgf2vdUdDLkFY5LUAwQfp2Sw0QnqVyVgPCbcnV33pkCO2UW7f2tABRh+wu4qMrdrWyWk+K/n+0X1o2b5zuDlNELuKFqE7bXagxN1vzm6jEUUM3bia6cbTJ0IuGEYhRiHMF/Rd1aNQk0g+d5RiPN1u6Dp7pBzh/M2S6YMsYH+e5nv+QDys9gKZSpuVhFRcigyfAWP9eeqfEpy6z11iEWU60PKeZ0GlMcS/QOWpq+QAY7ZVqilApBhgtH0owFDggSMXsIRJsYgABP3OW1kyTQPgBRbwRWsGgRGsbOgzFyYtu1IgZNPATCWyCnxflmffL3IJOW4us5yIdEYk7LC4wACIzc7Sm1VO4XPgNZGRmHB5LGNHazeCnJkgNjCM6gOG7QXq41+l2pBAfHRbiADqzmBNBBgi0GMAYg/AsINKAFNB6KK4/MxGBhkcTfLNRzAKJirVk1p8EdF9gePyzwtg7nHwnuvBqp1uCwnh4+aQbQguQrDezdHQgDE4bPSb4PADJAt5LtwFZxY0rCtkisqIzVxG1RWQVN64o5Ggi8g+qfNwzr2SI6AAAAABJRU5ErkJggg==';\r\nJoinTypeImages[JoinTypes.RightJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAADRUlEQVRoQ+2Z8bVMMRDGZytABagAFaACVIAKPBWgAnRABe+pABWgAlSACji/Pfn2ZLNJ7iS5e9a75845+9fNJPPNNzOZzG5sIbJZCA5bgfxvTK6MrIwcyQNraB3Jsd3b9jDywMwemtkNM7tqZrfD6b/N7Gv4fTKzDwWr0L8X9NBlDwRd7VHTz27rBcJhrwMAHTzlPYx6Y2Zvw8JnZnYWGe7RvzCz5wFgdb0HyIvEgG9mxgF4TR7kELGDl5+Y2a2IKX2fMj73XQ55VVOuAcGwj1HoECp49IfTGsLv3LnWs4zQu19ipwQEr2IEefAzeBgGvII+TsAZMIiIIe8euXU48VHIp73vOSAc/iWAwAgSE3q9koJAH3lnZiT6qADmTmpTDgggMAYQqkgth8f6qRPIrTnAEGaA2UkK5KWZkdyEEyBamGDTKX3YJkTnCDOSn/O2EgPhkO8hrkmqlpxgL/IJfaSmj4NgbVRw8k05OwZCDD8OFxkVp1Wk/z4Uh5q+1raeka7fnRUD+RXYAKW3xGrjmE2PfszeCBhYuRaHlmp+b4L36JOwc+QK5fhCjIjqvQRqcJX0aSdoSzzC5UrbMyq0QGcCQmLfnUjS2oE9+pRmLs1R+cxdJyCq/dRmKG+Vv0GBePWWbPKKvByV7Z0iIDLE00TmDu7Vl94omM3igKiCXMbQ2lbaxSU7JZMX3KUvv7rQDrpKZxb26KtSOo8oLtu7EFlF2bwSGrGeFgUdr/5cLcofzQByTSNvBlC2yimaxu2tjqFpGy+vjrbxteo3140OGzC7vYBLD6vsc9JBkR5WpUFB/Ix2bFddUnxYSUt3Sm/iSz8N0XQqMwLkoEsvDR8w5nrou4ojmIIlvABpIkl8wDwN6+LR0giI7DO8Ng7CCMAQZhjT8vSNwagJ7RlkpIABQak/aGynBnTxoEDjS29pnntAVx1NebpdEpgSR6ggeEMjUyqHvEMO8OLTyFQMsAaRfmtYoU/nsZuY5DbwAEEPI9kML3sNkgF6MeKM2CFTgNDnbgLA5BvHCyQ+FDD6W0As8F3swBAhCWs5ifVhTY4hdOK/FUr62U17gEx58iTfVyAncXvl0JWRlZEjeWANrSM5tnvbxTDyD3ba1zP3AORqAAAAAElFTkSuQmCC';\r\nJoinTypeImages[JoinTypes.InnerJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAADa0lEQVRoQ+2ZgZFMQRCGeyNwIuAiQASIABFwESACRIAIEAEiOCJwFwEiQATU92r+q953b+Z1T1lrX72p2tqq2/ln+v+7p6enb2MLGZuF8LCVyP/mydUjq0d2pMAaWjsStnvZHo/cM7P7ZnbdzI7M7GbZ/aeZnZXPJzP7WLEK/J2CA8saDLBao4WfXDZKhM1eFgLaeE49jHplZq/LxMdm9sQZHsF/MLOnhWBzfoTIs5EB52bGBqgmBdlE3kHlR2Z2w3lKv/MN/q3zHmsw5B28hcc9HkFetJi0iGDYqQsdQgVFv81JWX7HmPejuQ+KCJElCF0IEIoKvbs179SIoA5GsNj3ojAeiA7wiDAOQ9THGM5DdOAhPHitiIgYl/BTRNj8SyFBGLCQ3B/ZvEZC2B4y2ISQhBsRcWts0xQRSGAMJJSRIgQ0R/gWBkUxJjvAQeYSfkzkuZlxuAknSGQ8gVHCRwzk8DI/M/AMJAizLbwnwqSvJa6J48yZwBjOE/jMOE4kD61LqHP+EBn8ILYnwoF6WC4yMk52CJ/BvSuJJINhLumfbHaB90R+FG/0qOS9mTFqS9UEUN4Hf9V7RDm/94BP3RlRuzJ3i19TB3/AyyMKi54DyOI9YSWjKGG4aLNDiWXAiwgH+3a5rLKHHAOEzxrD/M/lrspidegHvIgo95PbM7euNv+dtWI0P1LzjbfgesDu4U7RAjKkZ0E22AcRv+9mcUSUAQ4xtIZMu7jDTt3PC+7g068utN6qdB8XojLt1oVIBuC6v1IKsegrUCmREgUM+Mz4VYrNbJWtEgX88HibKhopyGCZHT23e2/RyOuVKLioCsZlvFQ9hDJ+y5u1h9XkczLgon/xsNIzvPqwkp3V52SACFOEb03vrbKrz/Ba80HPSb6rLZiKpdRAFJG1g09IUPBlajrfmpp8hrfaQRx6tWBOkk/fGpkeEpB+41pTHPJQO8inVLVg+Jval9HU/DcadGrTsn+zNRWpdjnAPHwUKqihlikKSx3cT6tGLVO1kpjD8Hi1TDHOt0yZo5apx1N5NDsuESIYgZEshsrRSw8CYPgwEMMLMpc7wEMYArMXZpSI3xQy+reAvMDv8g4eIiTx2tTweFSXMPLOHH5y0R4ic0ru5feVyF5kb2y6emT1yI4UWENrR8J2L7sYj/wBWhPoM2CcXEwAAAAASUVORK5CYII=';\r\nJoinTypeImages[JoinTypes.OuterJoin] = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QwHFBcYRCugUwAAAsFJREFUaN7tmU9LVUEYxn8KRiJcCvJfhFHQogQXEeTCEOWuIj/AFdzpV2gRLlz4FUQJXIVfQKJFhCAursgtwoUgSVckNxmail5ui26bx5iOVz0z78FA5oFhDjPv87zznjlzzsx7ICIiIiIiIoIGT/sbwAsgDzwCuoBr6vsJfAM+AUvAO6CS4DcDz4FnwGPgjjQBfgFbwBrwAXgrzUzRAbzWwGopywEwBTxVmVJbWn5FPjuyCKAJeAUcegzALVXgvUo1UONQY2gKDaIVWAx0XgPKQI8e3wZdlw16ixqTF7qNTktAu7RWVFBbyXhzun3Ww5bB2RegTVr9Tnu/2tpkE6q/lWbdNAPLBicV4KG08sCx03esNmRTMfhZ1ljPxKRBvAa8lM6DM95QB+pDthZfk2cFcRs4Mgh/1Zul8YJ1UJJNkzih/o405lOYMd6hUemMpLAdke2o0edMMoiccTYOgRa9ZtdT2K/LtsXwjTqZlZwbyLDxzsxJp8+D0yfOnNH3MHpWAQaNO4Al1UMenKEENxSDbiA9RrGPqns9OL0Jbij+GfuOcXo7pbPtwdkWp9Poe8cNpGoUuy6diufHE3Etvqvuo9VgnN7af+L+HftJIPtGsZuqdz04uwluKPbdQMpGsS7VGx6cjQQ3FGU3kFWj2BPVRQ9OMcENxaobyIJR7GSLPu/BmU9wQ7GQ5RblSNsNlDy4yH5Nti0Z+M0lI5s2vgbHpFNIYVuQ7ZjR53S9KWr3zHKct40vnmNXzGgbf+Acp09hPKOD1T1gr07/nvqyOFiNX5T+sWRO3KPuQJ2j7kBGR93FNOmhVmAzo+RD3mnPZ5R82PRJC2WZDvqscunpoCuVoHPXzIThea4Cb1SqhnU3YUmZurgLzAYmsQsqIUnsWfm+lN8Kt4DfwHd9F3x+K9zX4m8EflzGb4WIiIiIiIgrjT/HEHQkSuUmXAAAAABJRU5ErkJggg==';","export const EVENTS = {\r\n\tJOIN_TYPE_CHANGED: 'JOIN_TYPE_CHANGED',\r\n\tUSE_MAIN_CHANGED: 'USE_MAIN_CHANGED',\r\n\tLINK_DIRECTION_CHANGED: 'LINK_DIRECTION_CHANGED'\r\n}","import * as ko from 'knockout';\r\nimport { JoinTypes, UseMainCondition, LinkDirectionCondition } from 'QueryBuilder/Enums';\r\nimport { Event } from 'Core/Common/Event'\r\nimport { EVENTS } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport Template from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Templates/JoinOptionsMenu.html';\r\n\r\nexport interface IJointTypeOption {\r\n\tName: string;\r\n\tValue: JoinTypes;\r\n}\r\n\r\nexport interface IUseMainOption {\r\n\tName: string;\r\n\tValue: UseMainCondition;\r\n}\r\n\r\nexport interface ILinkDirectionOption {\r\n\tName: string;\r\n\tValue: LinkDirectionCondition;\r\n}\r\n\r\nexport class JoinOptionsMenu extends Event {\r\n\tprivate _jointTypeOptions: Array<IJointTypeOption>;\r\n\tprivate _useMainOptions: Array<IUseMainOption>;\r\n\tprivate _linkDirectionOptions: Array<ILinkDirectionOption>;\r\n\tprivate _joinTypeValue: KnockoutObservable<JoinTypes>;\r\n\tprivate _useMainValue: KnockoutObservable<UseMainCondition>;\r\n\tprivate _enableUseMain: KnockoutObservable<boolean>;\r\n\tprivate _linkDirectionValue: KnockoutObservable<LinkDirectionCondition>;\r\n\tprivate _enableLinkDirection: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor(joinType: JoinTypes, useMain: UseMainCondition = null, enableUseMain = false, linkDirection: LinkDirectionCondition = null, enableLinkDirection = false) {\r\n\t\tsuper();\r\n\t\tthis.AddEvent(EVENTS.JOIN_TYPE_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.USE_MAIN_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.LINK_DIRECTION_CHANGED);\r\n\t\tthis._enableUseMain = ko.observable(enableUseMain);\r\n\t\tthis._enableLinkDirection = ko.observable(enableLinkDirection);\r\n\r\n\t\tthis._jointTypeOptions = [\r\n\t\t\t{ Name: LABELS.NORMAL, Value: JoinTypes.InnerJoin },\r\n\t\t\t{ Name: LABELS.EXCLUSIVE, Value: JoinTypes.LeftJoin },\r\n\t\t\t{ Name: LABELS.INCLUSIVE, Value: JoinTypes.OuterJoin }\r\n\t\t];\r\n\r\n\t\tthis._useMainOptions = [\r\n\t\t\t{ Name: LABELS.MAIN_ONLY, Value: UseMainCondition.MainTrue },\r\n\t\t\t{ Name: LABELS.EXCLUDE_MAIN, Value: UseMainCondition.MainFalse },\r\n\t\t\t{ Name: LABELS.ALL, Value: UseMainCondition.NotUseMain }\r\n\t\t];\r\n\r\n\t\tthis._linkDirectionOptions = [\r\n\t\t\t{ Name: LABELS.LEFT_TO_RIGHT, Value: LinkDirectionCondition.LeftToRight },\r\n\t\t\t{ Name: LABELS.RIGHT_TO_LEFT, Value: LinkDirectionCondition.RightToLeft },\r\n\t\t\t{ Name: LABELS.BOTH, Value: LinkDirectionCondition.Both }\r\n\t\t];\r\n\r\n\t\tthis._joinTypeValue = ko.observable(joinType);\r\n\t\tthis._useMainValue = ko.observable(useMain);\r\n\t\tthis._linkDirectionValue = ko.observable(linkDirection);\r\n\t}\r\n\r\n\tget JoinTypeValue(): KnockoutObservable<JoinTypes> {\r\n\t\treturn this._joinTypeValue;\r\n\t}\r\n\r\n\tget UseMainValue(): KnockoutObservable<UseMainCondition> {\r\n\t\treturn this._useMainValue;\r\n\t}\r\n\r\n\tget LinkDirectionValue(): KnockoutObservable<LinkDirectionCondition> {\r\n\t\treturn this._linkDirectionValue;\r\n\t}\r\n\r\n\tget EnableUseMain(): KnockoutObservable<boolean> {\r\n\t\treturn this._enableUseMain;\r\n\t}\r\n\r\n\tget EnableLinkDirection(): KnockoutObservable<boolean> {\r\n\t\treturn this._enableLinkDirection;\r\n\t}\r\n\r\n\tChangeJoinType(joinValue: IJointTypeOption) {\r\n\t\tthis.Trigger(EVENTS.JOIN_TYPE_CHANGED, { JoinType: joinValue.Value });\r\n\t}\r\n\r\n\tChangeUseMain(useMain: IUseMainOption) {\r\n\t\tthis.Trigger(EVENTS.USE_MAIN_CHANGED, { UseMain: useMain.Value });\r\n\t}\r\n\r\n\tChangeLinkDirection(linkDirection: ILinkDirectionOption) {\r\n\t\tthis.Trigger(EVENTS.LINK_DIRECTION_CHANGED, { LinkDirection: linkDirection.Value });\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tMouseLeave(element: HTMLElement) {\r\n\t\t$(element).parent().removeClass('open');\r\n\t}\r\n}","// Module\nvar code = \"<ul data-bind=\\\"event: { mouseleave: $data.MouseLeave.bind($data, $element) }\\\" class=\\\"dropdown-menu link-entity-options\\\"> <li style=\\\"padding:5px\\\"> <span class=\\\"caption-subject font-dark bold\\\"><!--ko text: _labels.JOIN_TYPE --><!-- /ko --></span> <div class=\\\"btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: _jointTypeOptions --> <label data-bind=\\\"click: $parent.ChangeJoinType.bind($parent), css: { active: $parent.JoinTypeValue() === Value }, preventBubble: ['mousedown']\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\"></span> </label> <!-- /ko --> </div> </li> <!--ko if: EnableUseMain --> <li style=\\\"padding:5px\\\"> <span class=\\\"caption-subject font-dark bold\\\"><!--ko text: _labels.MAIN_OPTIONS --><!-- /ko --></span> <div class=\\\"btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: _useMainOptions --> <label data-bind=\\\"click: $parent.ChangeUseMain.bind($parent), css: { active: $parent.UseMainValue() === Value }, preventBubble: ['mousedown']\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\"></span> </label> <!-- /ko --> </div> </li> <!-- /ko --> <!--ko if: EnableLinkDirection --> <li style=\\\"padding:5px\\\"> <span class=\\\"caption-subject font-dark bold\\\"><!--ko text: _labels.LINK_DIRECTION --><!-- /ko --></span> <div class=\\\"btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: _linkDirectionOptions --> <label data-bind=\\\"click: $parent.ChangeLinkDirection.bind($parent), css: { active: $parent.LinkDirectionValue() === Value }, preventBubble: ['mousedown']\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\"></span> </label> <!-- /ko --> </div> </li> <!-- /ko --> </ul>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"click: $data.Click.bind($data, $element),\\r\\n\\t\\t\\t\\tevent: {\\r\\n\\t\\t\\t\\t\\tmouseover: $data.MouseOver.bind($data, $element)\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tpreventBubble: ['mouseover'],\\r\\n\\t\\t\\t\\tcss: {\\r\\n\\t\\t\\t\\t\\t'query-entity-join': LinkEntity(),\\r\\n\\t\\t\\t\\t\\t'query-entity': !LinkEntity()\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tstyle: {\\r\\n\\t\\t\\t\\t\\ttop: $data.GetTopPosition(),\\r\\n\\t\\t\\t\\t\\tleft: $data.GetLeftPosition()\\r\\n\\t\\t\\t\\t}\\\" class=\\\"btn-group box-shadow--6dp query-entity-test\\\"> <!-- ko with: JoinOptionsMenu --> <div class=\\\"btn-group\\\" style=\\\"margin-right:7px\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $parent._labels.OPTIONS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;text-align:center;padding:3px 10px\\\" class=\\\"btn btn-use-main-options\\\" data-toggle=\\\"dropdown\\\"> <img data-bind=\\\"attr: { src: $parent._joinTypeImage }\\\" src=\\\"\\\" width=\\\"35\\\" height=\\\"35\\\"> </button> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: LinkEntity --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <span type=\\\"button\\\" data-bind=\\\"css: BackgroundColor, attr: {title : TranslatedName}\\\" class=\\\"bold btn query-entity-table-name\\\" style=\\\"cursor:move;height:40px!important;width:142px!important;word-wrap:break-word\\\"> <!-- ko text: TranslatedName --><!-- /ko --> <!-- ko if: $data._isEnableSubQuery && !$data._isInSubQuery --> <a data-bind=\\\"click: $data.CreateSubQuery.bind($data), preventBubble: ['click']\\\" title=\\\"Create subquery\\\" class=\\\"create-sub-query-btn\\\"><i class=\\\"fa fa-object-group\\\"></i></a> <!-- /ko --> </span> <div class=\\\"btn-group entity-list-menu\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.ENTITIES }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> </button> <!-- ko with: EntityListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- ko foreach: ReferenceEntityListMenus --> <div data-bind=\\\"class: _referenceField ? _referenceField.Id : '' \\\" class=\\\"btn-group\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $data.ReferenceTitle }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> <i class=\\\"fa fa-link maker-entity-list-btn\\\"></i> </button> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.FIELDS }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-list\\\"></i> <!--ko text: FieldListMenu.SelectedColumnsCount --><!-- /ko --> </button> <!-- ko with: FieldListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ENTITY_COLORS } from 'QueryBuilder/Constants';\r\nimport { EVENTS } from 'QueryBuilder/Events';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { FieldListMenu } from 'QueryBuilder/FieldListMenu/FieldListMenu';\r\nimport { FieldListItem } from 'QueryBuilder/FieldListMenu/FieldListItem';\r\nimport { EntityListMenu } from 'QueryBuilder/EntityListMenu/EntityListMenu';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { EntityListItem } from 'QueryBuilder/EntityListMenu/EntityListItem';\r\nimport { ElementZIndexManager } from 'QueryBuilder/ElementZIndexManager';\r\nimport { QueryLinkEntity } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/QueryLinkEntity';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { IQueryEntityParams } from 'QueryBuilder/QueryEntity/IQueryEntityParams';\r\nimport { JoinTypeImages } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/JoinTypesImages';\r\nimport { JoinOptionsMenu } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/JoinOptionsMenu';\r\nimport { JoinTypes } from 'QueryBuilder/Enums';\r\nimport { EVENTS as OPTION_MENU_EVENTS } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\n\r\nimport QueryEntityTemplate from 'QueryBuilder/QueryEntity/Templates/QueryEntity.html';\r\nimport QuerySubEntityTemplate from 'QueryBuilder/QueryEntity/Templates/QuerySubEntity.html';\r\nimport { EntityMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel\";\r\nimport { FIELD_TYPES } from \"Core/Constant\";\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\n\r\nexport interface ISelectedEntity {\r\n\tId: number;\r\n\tLookupFieldId?: number;\r\n\tReferenceFieldId?: number;\r\n\tReferenceFieldName?: number;\r\n\tReferenceLookupField?: number;\r\n}\r\n\r\nexport class QueryEntity extends Event {\r\n\tprivate _isEnableDrag: KnockoutObservable<boolean>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _selectedEntitiesCount: KnockoutObservable<number>;\r\n\tprivate _fieldListMenu: FieldListMenu;\r\n\tprivate _entityListMenu: EntityListMenu;\r\n\tprivate _referenceEntityListMenus: KnockoutObservable<Array<EntityListMenu>>;\r\n\r\n\tprivate _linkEntity: KnockoutObservable<QueryLinkEntity>;\r\n\tprivate _labels = LABELS;\r\n\r\n\tprivate _model: QueryEntityModel;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _isSubject: boolean;\r\n\tprivate _gridSubjectEntityId: number;\r\n\tprivate _isEnableSubQuery: boolean;\r\n\tprivate _isInSubQuery: boolean;\r\n\tprivate _isEnableSelectSubEntity: boolean;\r\n\tprivate _joinTypeImage: KnockoutObservable<string>;\r\n\tprivate _joinType: JoinTypes;\r\n\tprivate _joinOptionsMenu: JoinOptionsMenu;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\r\n\tconstructor(params: IQueryEntityParams)\r\n\t{\r\n\t\tsuper();\r\n\t\tthis._model = params.Model;\r\n\t\tthis._jsPlumb = params.JsPlumb;\r\n\t\tthis._joinType = params.JoinType;\r\n\r\n\t\tif (this._joinType === null || this._joinType === undefined) {\r\n\t\t\tthis._joinType = JoinTypes.LeftJoin;\r\n\t\t}\r\n\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._isSubject = params.IsSubject;\r\n\t\tthis._gridSubjectEntityId = params.GridSubjectEntityId;\r\n\t\tthis._isEnableSubQuery = params.IsEnableSubQuery;\r\n\t\tthis._isInSubQuery = params.IsInSubQuery;\r\n\t\tthis._isEnableSelectSubEntity = params.IsEnableSelectSubEntity || false;\r\n\r\n\t\tthis._linkEntity = ko.observable(null);\r\n\t\tthis._selectedEntitiesCount = ko.observable(0);\r\n\t\tthis._isEnableDrag = ko.observable(!this._isSubject);\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._referenceEntityListMenus = ko.observableArray();\r\n\r\n\t\tthis.AddEvent(EVENTS.JOIN_TYPE_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.AFTER_RENDER);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(EVENTS.CREATE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.REMOVE_SUB_QUERY);\r\n\t\tthis.AddEvent(EVENTS.DRAG);\r\n\t\tthis.AddEvent(EVENTS.DRAG_STOP);\r\n\t\tthis.AddEvent(EVENTS.MOUSE_OVER);\r\n\t\tthis.AddEvent(EVENTS.CLICK);\r\n\r\n\t\tthis.Init();\r\n\t\tthis.InitFieldListMenu(params.EnabledColumnTypes);\r\n\r\n\t\tif (this._model.Metadata.Type === EntityTypes[EntityTypes.Sub] || params.IsLookupJoin || params.IsReferenceJoin) {\r\n\t\t\tthis._joinTypeImage = ko.observable(JoinTypeImages[this._joinType]);\r\n\t\t\tthis._joinOptionsMenu = new JoinOptionsMenu(this._joinType);\r\n\t\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._joinTypeImage(JoinTypeImages[eventArgs.data.JoinType]);\r\n\t\t\t\tthis.Trigger(EVENTS.JOIN_TYPE_CHANGED, { JoinType: eventArgs.data.JoinType });\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.InitReferenceMenu();\r\n\t\tthis.InitEntityListMenu();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\r\n\t\tvar objIndex = _.find(this._objectIndexes, (indx) => { return indx.Id === this._model.Metadata.Id });\r\n\r\n\t\tif (objIndex) {\r\n\t\t\tif (this._model.Index === 0 || this._model.Index === null) {\r\n\t\t\t\tobjIndex.Index = objIndex.Index + 1;\r\n\t\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t\t} else {\r\n\t\t\t\tobjIndex.Index = this._model.Index;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet currentIndex = (this._model.Index === 0 || this._model.Index === null) ? 1 : this._model.Index;\r\n\t\t\tvar objIndex: IObjectIndex = {\r\n\t\t\t\tId: this._model.Metadata.Id,\r\n\t\t\t\tIndex: currentIndex\r\n\t\t\t};\r\n\t\t\tthis._objectIndexes.push(objIndex);\r\n\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t}\r\n\r\n\t\tvar metadata = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\t\tif (metadata) {\r\n\t\t\tthis._model.Metadata = metadata.EntityMetadata;\r\n\t\t}else{\r\n\t\t\t_.each(this._entitiesRelationships, (item)=>{\r\n\t\t\t\tvar metadata = _.find(item.TablesRelatedToLookup, referenceLookup => referenceLookup.Id === this._model.Metadata.Id);\r\n\t\t\t\tif (metadata) {\r\n\t\t\t\t\tthis._model.Metadata = metadata;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t_.each(this._model.Metadata.Fields, (fieldMetadata) => {\r\n\t\t\tvar selectedQueryColumnModel = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === fieldMetadata.Id });\r\n\t\t\tif (selectedQueryColumnModel) {\r\n\t\t\t\tselectedQueryColumnModel.Metadata = fieldMetadata;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CreateSubQuery(){\r\n\t\tthis._isInSubQuery = true;\r\n\t\tthis._fieldListMenu.IsInSubQuery = this._isInSubQuery;\r\n\t\tthis._isEnableDrag(false);\r\n\t\tthis.Trigger(EVENTS.CREATE_SUB_QUERY)\r\n\t}\r\n\r\n\tpublic RemoveSubQuery(){\r\n\t\tthis._isInSubQuery = false;\r\n\t\tthis._fieldListMenu.IsInSubQuery = this._isInSubQuery;\r\n\t}\r\n\r\n\tprivate InitReferenceMenu() {\r\n\t\tlet relationship = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet referenceMenu = new EntityListMenu(false, referenceField);\r\n\t\t\tlet items = [];\r\n\r\n\t\t\treferenceMenu.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_SELECTED, eventArgs.data);\r\n\t\t\t});\r\n\r\n\t\t\treferenceMenu.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(EVENTS.REFERENCE_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tthis.RemovedDeletedReferenceMenu(referenceMenu);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.ReferenceEntities, (item)=>{\r\n\t\t\t\tlet entityListItem = new EntityListItem(item, false, true, null, referenceField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\t\t\treferenceMenu.AddItems(items);\r\n\t\t\tthis._referenceEntityListMenus.push(referenceMenu);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferenceMenu(referenceMenu: EntityListMenu) {\r\n\t\tif(!!referenceMenu && referenceMenu.ReferenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferencesMenus() {\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet referenceMenu = _.find(this._referenceEntityListMenus(), item => item.ReferenceFieldId === referenceField.Id);\r\n\r\n\t\t\tif(!!referenceMenu && referenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitFieldListMenu(enabledColumnTypes: Array<string>) {\r\n\t\tthis._fieldListMenu = new FieldListMenu(this._model, this._isEnableSubQuery, this._isInSubQuery);\r\n\t\t_.each(this._model.Metadata.Fields, field => {\r\n\t\t\tvar column = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === field.Id });\r\n\t\t\tif (enabledColumnTypes && enabledColumnTypes.length > 0) {\r\n\t\t\t\tif (enabledColumnTypes.indexOf(field.Type) >= 0) {\r\n\t\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._fieldListMenu.On(EVENTS.CREATE_SUB_QUERY, this, () => {\r\n\t\t\tthis._isEnableDrag(false);\r\n\t\t\tthis.Trigger(EVENTS.CREATE_SUB_QUERY);\r\n\t\t});\r\n\r\n\t\tthis._fieldListMenu.On(EVENTS.REMOVE_SUB_QUERY, this, () => {\r\n\t\t\tthis._isEnableDrag(true);\r\n\t\t\tthis.Trigger(EVENTS.REMOVE_SUB_QUERY);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitEntityListMenu() {\r\n\t\tvar relationship = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\t\tthis._entityListMenu = new EntityListMenu(this._model.IsIterator, null);\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\tthis._entityListMenu.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif(eventArgs.data.Lifestatus != DELETE_LIFESTATUS){\r\n\t\t\t\t this._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\t}\r\n\t\t\tthis.Trigger(EVENTS.ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\tthis._entityListMenu.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif(eventArgs.data.Lifestatus != DELETE_LIFESTATUS){\r\n\t\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\t}\t\t\t\r\n\t\t\tthis.Trigger(EVENTS.LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tif(eventArgs.data.Lifestatus != DELETE_LIFESTATUS){\r\n\t\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\t}\r\n\t\t\tthis.Trigger(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.On(EVENTS.IS_ITERATOR_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tif (eventArgs.data) {\r\n\t\t\t\tthis._model.IsIterator = eventArgs.data.IsIterator;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet items = [];\r\n\t\tif (relationship) {\r\n\t\t\t_.each(relationship.RelatedEntitiesMetadata, item => {\r\n\t\t\t\tvar entityListItem = new EntityListItem(item.EntityMetadata, false, item.EntityMetadata.Id !== this._gridSubjectEntityId, null);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.RelatedSubEntitiesMetadata,\r\n\t\t\t\titem => {\r\n\t\t\t\t\tvar entityListItem = new EntityListItem(item.EntityMetadata, false, true, null);\r\n\t\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.TablesRelatedToLookup,\r\n\t\t\t\ttableRelatedToLookup => {\r\n\t\t\t\t\t_.each(tableRelatedToLookup.Fields, (field) => {\r\n\t\t\t\t\t\tif(field.LookupTable && field.LookupTable.Id === this._model.Metadata.Id){\r\n\t\t\t\t\t\t\tvar entityListItem = new EntityListItem(tableRelatedToLookup, false, true, null, null, field);\r\n\t\t\t\t\t\t\titems.push(entityListItem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tvar lookupFields = _.filter(this._model.Metadata.Fields, (item)=> { return item.Type === FIELD_TYPES.Lookup});\r\n\r\n\t\t_.each(lookupFields, (lookupField) => {\r\n\t\t\tif(lookupField.LookupTable){\r\n\t\t\t\tvar entityListItem = new EntityListItem(lookupField.LookupTable, false, true, lookupField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._entityListMenu.AddItems(items);\r\n\t}\r\n\r\n\tAddDeleteEntityToMenu(metadata: EntityMetadataModel){\r\n\t\tvar entityListItem = new EntityListItem(metadata, false, true, null);\r\n\t\tthis._entityListMenu.AddItems([entityListItem]);\r\n\t\tthis._entityListMenu.SelectEntityItemById(metadata.Id);\r\n\t}\r\n\r\n\tSetSelectedEntities(selectedEntities: Array<ISelectedEntity>) {\r\n\t\tlet entities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceFieldId && !item.ReferenceLookupField);\r\n\t\t_.each(entities, selectedEntity => {\r\n\t\t\tthis._entityListMenu.SelectEntityItemById(selectedEntity.Id);\r\n\t\t});\r\n\r\n\t\tlet lookupEntities = _.filter(selectedEntities, (item) => !!item.LookupFieldId && !item.ReferenceFieldId && !item.ReferenceLookupField);\r\n\t\t_.each(lookupEntities, selectedEntity => {\r\n\t\t\tthis._entityListMenu.SelectLookupItemById(selectedEntity.Id, selectedEntity.LookupFieldId);\r\n\t\t});\r\n\r\n\t\tlet referenceEntities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceLookupField && !!item.ReferenceFieldId);\r\n\t\t_.each(this._referenceEntityListMenus(), (referenceMenu) => {\r\n\t\t\t_.each(referenceEntities, selectedEntity => {\r\n\t\t\t\treferenceMenu.SelectReferenceItemById(selectedEntity.Id, selectedEntity.ReferenceFieldId);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tlet referenceLookupEntities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceFieldId && !!item.ReferenceLookupField);\r\n\t\t_.each(referenceLookupEntities, selectedEntity => {\r\n\t\t\tthis._entityListMenu.SelectReferenceLookupItemById(selectedEntity.Id, selectedEntity.ReferenceLookupField);\r\n\t\t});\r\n\r\n\t\tthis.RemovedDeletedReferencesMenus();\r\n\r\n\t\tthis._selectedEntitiesCount(this._entityListMenu.SelectedItemsCount);\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\tif (this._model.Metadata.Type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\treturn QuerySubEntityTemplate;\r\n\t\t}\r\n\t\treturn QueryEntityTemplate;\r\n\t}\r\n\r\n\tget SelectedEntitiesCount(): KnockoutObservable<number>{\r\n\t\treturn this._selectedEntitiesCount;\r\n\t}\r\n\r\n\tget Name() :string {\r\n\t\treturn this._model.Metadata.Name;\r\n\t}\r\n\r\n\tget TranslatedName(): string {\r\n\t\tvar name = this._model.Metadata.NameTranslation == null || this._model.Metadata.NameTranslation == '' ? this.Name : this._model.Metadata.NameTranslation;\r\n\t\tif (this._model.Index > 1) {\r\n\t\t\tname = `${name}${this._model.Index}`;\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n\r\n\tget IsEnableDrag(): KnockoutObservable<boolean> {\r\n\t\treturn this._isEnableDrag;\r\n\t}\r\n\r\n\tget FieldListMenu(): FieldListMenu{\r\n\t\treturn this._fieldListMenu;\r\n\t}\r\n\r\n\tget EntityListMenu(): EntityListMenu{\r\n\t\treturn this._entityListMenu;\r\n\t}\r\n\r\n\tget ReferenceEntityListMenus(): KnockoutObservable<Array<EntityListMenu>>{\r\n\t\treturn this._referenceEntityListMenus;\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tthis._el = el[0];\r\n\t\tvar parent = $(this._el).parent();\r\n\t\tvar isRoot = $(parent).hasClass('querybuilder-root-canvas');\r\n\t\t$(this._el).draggable({\r\n\t\t\tcontainment: isRoot ? false : 'parent',\r\n\t\t\tgrid: [20, 20],\r\n\t\t\tdrag: () => {\r\n\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t},\r\n\t\t\tstop: (evt, ui) => {\r\n\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t\tthis._model.CanvasPosition.Top = ui.position.top;\r\n\t\t\t\tthis._model.CanvasPosition.Left = ui.position.left;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.Trigger(EVENTS.AFTER_RENDER);\r\n\t}\r\n\r\n\tget Wrapper(){\r\n\t\treturn this._el;\r\n\t}\r\n\r\n\tDrag() {\r\n\t\tthis.Trigger(EVENTS.DRAG);\r\n\t}\r\n\r\n\tDrop() {\r\n\t\treturn false;\r\n\t}\r\n\r\n\r\n\tDragStop(params) {\r\n\t\tthis.Trigger(EVENTS.DRAG_STOP);\r\n\t}\r\n\r\n\tGetLeftPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Left}px`;\r\n\t}\r\n\r\n\tGetTopPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Top}px`;\r\n\t}\r\n\r\n\tget Model(): QueryEntityModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget BackgroundColor(): string {\r\n\t\treturn this._isSubject ? ENTITY_COLORS.MAIN_ENTITY : ENTITY_COLORS.RELATED_ENTITY;\r\n\t}\r\n\r\n\tClick(element: HTMLElement) {\r\n\t\tElementZIndexManager.Instance.ToTop(this._el);\r\n\t\tthis.Trigger(EVENTS.CLICK);\r\n\t}\r\n\r\n\tMouseOver(element: HTMLElement) {\r\n\t\tElementZIndexManager.Instance.ToTop(this._el);\r\n\t\tthis.Trigger(EVENTS.MOUSE_OVER);\r\n\t}\r\n\r\n\tToTop() {\r\n\t\tElementZIndexManager.Instance.ToTop(this._el);\r\n\t}\r\n\r\n\tget LinkEntity(): KnockoutObservable<QueryLinkEntity> {\r\n\t\treturn this._linkEntity;\r\n\t}\r\n\r\n\tget JoinOptionsMenu(): JoinOptionsMenu {\r\n\t\treturn this._joinOptionsMenu;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: $data.Click.bind($data, $element), preventBubble: ['mouseover'], event: { mouseover: $data.MouseOver.bind($data, $element) }, style: { top: $data.GetTopPosition(), left: $data.GetLeftPosition() }\\\" class=\\\"btn-group box-shadow--6dp query-entity-test\\\" style=\\\"min-width:262px!important;height:40px!important;position:absolute\\\"> <div class=\\\"btn-group\\\" style=\\\"margin-right:7px\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.OPTIONS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;text-align:center;padding:3px 10px\\\" class=\\\"btn btn-use-main-options\\\" data-toggle=\\\"dropdown\\\"> <img data-bind=\\\"attr: { src: $data._joinTypeImage }\\\" src=\\\"\\\" width=\\\"35\\\" height=\\\"35\\\"> </button> <!-- ko with: JoinOptionsMenu --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <span type=\\\"button\\\" data-bind=\\\"text: TranslatedName, css: BackgroundColor, attr: {title: TranslatedName}\\\" class=\\\"query-entity-table-name bold btn\\\" style=\\\"cursor:move;height:40px!important;width:142px!important;word-wrap:break-word\\\"></span> <div class=\\\"btn-group entity-list-menu\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.ENTITIES }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> </button> <!-- ko with: EntityListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- ko foreach: ReferenceEntityListMenus --> <div data-bind=\\\"class: _referenceField ? _referenceField.Id : '' \\\" class=\\\"btn-group\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $data.ReferenceTitle }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> <i class=\\\"fa fa-link maker-entity-list-btn\\\"></i> </button> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-list\\\"></i> <!--ko text: FieldListMenu.SelectedColumnsCount --><!-- /ko --> </button> <!-- ko with: FieldListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","export const EVENTS = {\r\n\tJOIN_TYPE_CHANGED: 'JOIN_TYPE_CHANGED',\r\n\tUSE_MAIN_CHANGED: 'USE_MAIN_CHANGED',\r\n\tLINK_DIRECTION_CHANGED: 'LINK_DIRECTION_CHANGED',\r\n\tCLICK: 'CLICK',\r\n\tMOUSE_OVER: 'MOUSE_OVER'\r\n};","import { UseMainCondition } from 'QueryBuilder/Enums';\r\n\r\nexport var UseMainImages = {};\r\n\r\nUseMainImages[UseMainCondition.MainTrue] = 'data:image/png;base64,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';\r\nUseMainImages[UseMainCondition.MainFalse] = 'data:image/png;base64,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';","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { FieldListMenu } from 'QueryBuilder/FieldListMenu/FieldListMenu';\r\nimport { FieldListItem } from 'QueryBuilder/FieldListMenu/FieldListItem';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { JoinTypeImages } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/JoinTypesImages';\r\nimport { UseMainImages } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/UseMainImages';\r\nimport { JoinTypes, UseMainCondition, LinkDirectionCondition } from 'QueryBuilder/Enums';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { JoinOptionsMenu } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/JoinOptionsMenu';\r\nimport { EVENTS as OPTION_MENU_EVENTS } from 'QueryBuilder/QueryEntityJoin/JoinOptionsMenu/Events';\r\nimport { EVENTS } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/Events';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { IQueryLinkEntityParams } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/IQueryLinkEntityParams';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport {EVENTS as QUERY_BUILDER_EVENTS} from 'QueryBuilder/Events';\r\n\r\nimport QueryLinkEntityTemplate from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/Templates/QueryLinkEntity.html';\r\nimport { EntityListMenu } from \"../../EntityListMenu/EntityListMenu\";\r\nimport { EntityListItem } from \"../../EntityListMenu/EntityListItem\";\r\nimport { FIELD_TYPES } from \"../../../Core/Constant\";\r\nimport { ISelectedEntity, QueryEntity } from \"../../QueryEntity/QueryEntity\";\r\n\r\nexport class QueryLinkEntity extends Event {\r\n\tprivate _fieldListMenu: FieldListMenu;\r\n\tprivate _entityListMenu: EntityListMenu;\r\n\tprivate _joinTypeImage: KnockoutObservable<string>;\r\n\tprivate _useMainImage: KnockoutObservable<string>;\r\n\tprivate _joinOptionsMenu: JoinOptionsMenu;\r\n\tprivate _labels = LABELS;\r\n\tprivate _model: QueryEntityModel;\r\n\tprivate _backBackgroundColor: string;\r\n\tprivate _joinType: JoinTypes;\r\n\tprivate _useMain: UseMainCondition;\r\n\tprivate _linkDirection: LinkDirectionCondition;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _enabledColumnTypes: Array<string>;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\tprivate _selectedEntitiesCount: KnockoutObservable<number>;\r\n\tprivate _referenceEntityListMenus: KnockoutObservable<Array<EntityListMenu>>;\r\n\tprivate _parent: QueryEntityModel;\r\n\r\n\tconstructor (params: IQueryLinkEntityParams) {\r\n\t\tsuper();\r\n\t\tthis._selectedEntitiesCount = ko.observable(0);\r\n\t\tthis._model = params.Model;\r\n\t\tthis._parent = params.Parent;\r\n\t\tthis._backBackgroundColor = params.BackBackgroundColor;\r\n\t\tthis._joinType = params.JoinType;\r\n\t\tthis._useMain = params.UseMain;\r\n\t\tthis._linkDirection = params.LinkDirection;\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._enabledColumnTypes = params.EnabledColumnTypes;\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._referenceEntityListMenus = ko.observableArray();\r\n\r\n\t\tthis.AddEvent(EVENTS.JOIN_TYPE_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.USE_MAIN_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.LINK_DIRECTION_CHANGED);\r\n\t\tthis.AddEvent(EVENTS.CLICK);\r\n\t\tthis.AddEvent(EVENTS.MOUSE_OVER);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.COLUMN_SELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_UNSELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_SELECTED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_UNSELECTED);\r\n\r\n\t\tthis._joinTypeImage = ko.observable(JoinTypeImages[this._joinType]);\r\n\t\tthis._useMainImage = ko.observable(UseMainImages[this._useMain]);\r\n\t\tthis.Init();\r\n\r\n\t\tthis._joinOptionsMenu = new JoinOptionsMenu(this._joinType, this._useMain, this.EnableUseMain, this._linkDirection, this.EnableLinkDirection);\r\n\r\n\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis._joinTypeImage(JoinTypeImages[eventArgs.data.JoinType]);\r\n\t\t\tthis.Trigger(EVENTS.JOIN_TYPE_CHANGED, { JoinType: eventArgs.data.JoinType });\r\n\t\t});\r\n\r\n\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.USE_MAIN_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis._useMainImage(UseMainImages[eventArgs.data.UseMain]);\r\n\t\t\tthis.Trigger(EVENTS.USE_MAIN_CHANGED, { UseMain: eventArgs.data.UseMain });\r\n\t\t});\r\n\r\n\t\tthis._joinOptionsMenu.On(OPTION_MENU_EVENTS.LINK_DIRECTION_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis.Trigger(EVENTS.LINK_DIRECTION_CHANGED, { LinkDirection: eventArgs.data.LinkDirection });\r\n\t\t});\r\n\r\n\t\tthis.InitFieldListMenu(this._enabledColumnTypes);\r\n\t\tthis.InitEntityListMenu();\r\n\t\tthis.InitReferenceMenu();\r\n\t}\r\n\r\n\tSetSelectedEntities(selectedEntities: Array<ISelectedEntity>) {\r\n let entities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !item.ReferenceFieldId);\r\n _.each(entities, selectedEntity => {\r\n this._entityListMenu.SelectEntityItemById(selectedEntity.Id);\r\n });\r\n\r\n let lookupEntities = _.filter(selectedEntities, (item) => !!item.LookupFieldId && !item.ReferenceFieldId);\r\n _.each(lookupEntities, selectedEntity => {\r\n this._entityListMenu.SelectLookupItemById(selectedEntity.Id, selectedEntity.LookupFieldId);\r\n });\r\n\r\n let referenceEntities = _.filter(selectedEntities, (item) => !item.LookupFieldId && !!item.ReferenceFieldId);\r\n _.each(this._referenceEntityListMenus(), (referenceMenu) => {\r\n _.each(referenceEntities, selectedEntity => {\r\n referenceMenu.SelectReferenceItemById(selectedEntity.Id, selectedEntity.ReferenceFieldId);\r\n });\r\n });\r\n\t\t\r\n\t\tthis.RemovedDeletedReferencesMenus();\r\n this._selectedEntitiesCount(this._entityListMenu.SelectedItemsCount);\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferenceMenu(referenceMenu: EntityListMenu) {\r\n\t\tif(!!referenceMenu && referenceMenu.ReferenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate RemovedDeletedReferencesMenus() {\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet referenceMenu = _.find(this._referenceEntityListMenus(), item => item.ReferenceFieldId === referenceField.Id);\r\n\r\n\t\t\tif(!!referenceMenu && referenceField.LifestatusName === 'Delete' && referenceMenu.SelectedItemsCount === 0){\r\n\t\t\t\tthis._referenceEntityListMenus.splice(this._referenceEntityListMenus().indexOf(referenceMenu), 1);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitEntityListMenu() {\t\t\r\n\t\tthis._entityListMenu = new EntityListMenu(false, null);\r\n\t\tvar lookupFields = _.filter(this._model.Metadata.Fields, (item)=> { return item.Type === FIELD_TYPES.Lookup});\r\n\t\tlet items = [];\r\n\t\t_.each(lookupFields, (lookupField) => {\r\n\r\n\t\t\tif(lookupField.LookupTable){\r\n\t\t\t\tvar entityListItem = new EntityListItem(lookupField.LookupTable, false, true, lookupField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis._entityListMenu.AddItems(items);\r\n\r\n\t\tthis._entityListMenu.On(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() + 1);\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_SELECTED, eventArgs.data);\r\n\t\t});\r\n\t\tthis._entityListMenu.On(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis._selectedEntitiesCount(this._selectedEntitiesCount() -1);\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.LOOKUP_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitReferenceMenu() {\r\n\t\tlet relationship = _.first(this._entitiesRelationships);\r\n\t\tlet makerFields = _.filter(this._model.Metadata.Fields, (item) => {\r\n\t\t\treturn item.Type === FIELD_TYPES.Reference});\r\n\t\t_.each((makerFields), (referenceField)=>{\r\n\t\t\tlet items = [];\r\n\t\t\t\r\n\t\t\tlet referenceMenu = new EntityListMenu(false, referenceField);\r\n\r\n\t\t\treferenceMenu.On(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_SELECTED, eventArgs.data);\r\n\t\t\t});\r\n\r\n\t\t\treferenceMenu.On(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.REFERENCE_ENTITY_UNSELECTED, eventArgs.data);\r\n\t\t\t\tthis.RemovedDeletedReferenceMenu(referenceMenu);\r\n\t\t\t});\r\n\r\n\t\t\t_.each(relationship.ReferenceEntities, (item)=>{\r\n\t\t\t\tlet entityListItem = new EntityListItem(item, false, true, null, referenceField);\r\n\t\t\t\titems.push(entityListItem);\r\n\t\t\t});\r\n\r\n\t\t\treferenceMenu.AddItems(items);\r\n\r\n\t\t\tthis._referenceEntityListMenus.push(referenceMenu);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate Init() {\r\n\r\n\t\tvar objIndex = _.find(this._objectIndexes, (indx) => { return indx.Id === this._model.Metadata.Id });\r\n\r\n\t\tif (objIndex) {\r\n\t\t\tif (this._model.Index === 0 || this._model.Index === null) {\r\n\t\t\t\tobjIndex.Index = objIndex.Index + 1;\r\n\t\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t\t} else {\r\n\t\t\t\tobjIndex.Index = this._model.Index;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tvar objIndex: IObjectIndex = {\r\n\t\t\t\tId: this._model.Metadata.Id,\r\n\t\t\t\tIndex: 1\r\n\t\t\t};\r\n\t\t\tthis._objectIndexes.push(objIndex);\r\n\t\t\tthis._model.Index = objIndex.Index;\r\n\t\t}\r\n\r\n\t\tvar metadata = _.find(this._entitiesRelationships, item => item.EntityMetadata.Id === this._model.Metadata.Id);\r\n\r\n\t\tif (metadata) {\r\n\t\t\tthis._model.Metadata = metadata.EntityMetadata;\r\n\t\t}\r\n\r\n\t\t_.each(this._model.Metadata.Fields, (fieldMetadata) => {\r\n\t\t\tvar selectedQueryColumnModel = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === fieldMetadata.Id });\r\n\t\t\tif (selectedQueryColumnModel) {\r\n\t\t\t\tselectedQueryColumnModel.Metadata = fieldMetadata;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QueryLinkEntityTemplate;\r\n\t}\r\n\r\n\tget EnableUseMain(): boolean {\r\n\t\tvar mainField = _.find(this._model.Metadata.Fields, (field) => { return field.Name === 'MAIN' });\r\n\t\treturn mainField != null && this._model.Metadata.Name.startsWith(`${this._parent.Metadata.ShortName}_`);\r\n\t}\r\n\r\n\tget EnableLinkDirection(): boolean {\r\n\t\tlet entities = this._model.Metadata.Name.replace('SYS_', '').split('_');\r\n\t\treturn entities[0] === entities[1];\r\n\t}\r\n\r\n\tRender(target: Element) {\r\n\t\tko.cleanNode(target);\r\n\t\tko.applyBindings(this, target);\r\n\t}\r\n\r\n\tAfterRender() {}\r\n\r\n\tget SelectedEntitiesCount(): KnockoutObservable<number>{\r\n\t\treturn this._selectedEntitiesCount;\r\n\t}\r\n\r\n\tprivate InitFieldListMenu(enabledColumnTypes: Array<string>) {\r\n\t\tthis._fieldListMenu = new FieldListMenu(this._model, false);\r\n\t\t_.each(this._model.Metadata.Fields, field => {\r\n\t\t\tvar column = _.find(this._model.Columns, queryColumn => { return queryColumn.Metadata.Id === field.Id });\r\n\t\t\tif (enabledColumnTypes && enabledColumnTypes.length > 0) {\r\n\t\t\t\tif (enabledColumnTypes.indexOf(field.Type) >= 0) {\r\n\t\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis._fieldListMenu.AddItem(new FieldListItem(field, column != null));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._fieldListMenu.On(QUERY_BUILDER_EVENTS.COLUMN_SELECTED, this, (eventArgs) =>{\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.COLUMN_SELECTED, {Id: eventArgs.data.Id});\r\n\t\t});\r\n\t}\r\n\r\n\tget BackgroundColor() {\r\n\t\treturn this._backBackgroundColor;\r\n\t}\r\n\r\n\tget FieldListMenu(): FieldListMenu {\r\n\t\treturn this._fieldListMenu;\r\n\t}\r\n\r\n\tget JoinOptionsMenu(): JoinOptionsMenu {\r\n\t\treturn this._joinOptionsMenu;\r\n\t}\r\n\r\n\tClick() {\r\n\t\tthis.Trigger(EVENTS.CLICK);\r\n\t}\r\n\r\n\tMouseOver() {\r\n\t\tthis.Trigger(EVENTS.MOUSE_OVER);\r\n\t}\r\n\r\n\tget EntityListMenu(): EntityListMenu{\r\n\t\treturn this._entityListMenu;\r\n\t}\r\n\r\n\tget ReferenceEntityListMenus(): KnockoutObservable<Array<EntityListMenu>>{\r\n\t\treturn this._referenceEntityListMenus;\r\n\t}\r\n}","// Module\nvar code = \"<div data-bind=\\\"click: $data.Click.bind($data, $element),\\r\\n\\t\\t\\t\\tevent: { mouseover: $data.MouseOver.bind($data, $element)},\\r\\n\\t\\t\\t\\tpreventBubble: ['mouseover']\\\" class=\\\"btn-group\\\" style=\\\"height:40px!important;margin-right:7px\\\"> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.OPTIONS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;text-align:center;padding:3px 10px\\\" class=\\\"btn btn-use-main-options\\\" data-toggle=\\\"dropdown\\\"> <img data-bind=\\\"attr: { src: $data._joinTypeImage }\\\" src=\\\"\\\" width=\\\"35\\\" height=\\\"35\\\"> <!-- ko if: $data._useMainImage --> <img data-bind=\\\"attr: { src: $data._useMainImage }\\\" width=\\\"35\\\" height=\\\"35\\\"> <!-- /ko --> </button> <!-- ko with: JoinOptionsMenu --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <div class=\\\"btn-group entity-link-list-menu\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.ENTITIES }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> </button> <!-- ko with: EntityListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- ko foreach: ReferenceEntityListMenus --> <div data-bind=\\\"class: _referenceField ? _referenceField.Id : '' \\\" class=\\\"btn-group\\\"> <button data-bind=\\\"css: $parent.BackgroundColor, attr: { title: $data.ReferenceTitle }\\\" type=\\\"button\\\" class=\\\"btn default white-stripe\\\" style=\\\"height:40px!important;width:60px!important\\\" data-toggle=\\\"dropdown\\\" aria-expanded=\\\"true\\\"> <i class=\\\"fa fa-table\\\"></i> <!--ko text: SelectedEntitiesCount --><!-- /ko --> <i class=\\\"fa fa-link maker-entity-list-btn\\\"></i> </button> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <div class=\\\"btn-group\\\"> <button data-bind=\\\"css: BackgroundColor, attr: { title: _labels.FIELDS }\\\" type=\\\"button\\\" style=\\\"height:40px!important;width:60px!important\\\" class=\\\"btn white-stripe btn-field-list\\\" data-toggle=\\\"dropdown\\\"> <i class=\\\"fa fa-list\\\"></i> <!--ko text: FieldListMenu.SelectedColumnsCount --><!-- /ko --> </button> <!-- ko with: FieldListMenu --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<!-- ko with: Entity --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: Joins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: LookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceLookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: SubEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"style: {\\r\\n\\t\\t\\t\\t\\ttop: $data.GetTopPosition(),\\r\\n\\t\\t\\t\\t\\tleft: $data.GetLeftPosition(),\\r\\n\\t\\t\\t\\t\\theight: $data.CanvasHeight,\\r\\n\\t\\t\\t\\t\\twidth: $data.CanvasWidth\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\tresizable: {\\r\\n\\t\\t\\t\\t\\tminHeight: $data.MinHeight,\\r\\n\\t\\t\\t\\t\\tminWidth: $data.MinWidth,\\r\\n\\t\\t\\t\\t\\tgrid: [ 20, 20 ],\\r\\n\\t\\t\\t\\t\\tstop: $data.StopResize.bind($data),\\r\\n\\t\\t\\t\\t\\tstart: $data.StartResize.bind($data),\\r\\n\\t\\t\\t\\t}\\\" class=\\\"panel panel-primary querybuilder-canvas box-shadow--6dp\\\" style=\\\"cursor:move;position:absolute;box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)!important\\\"> <div class=\\\"panel-heading\\\" style=\\\"cursor:move\\\"> <a data-bind=\\\"click: $data.RemoveSubQuery.bind($data)\\\" title=\\\"Remove subquery\\\" class=\\\"remove-sub-query-btn\\\"><i class=\\\"fa fa-close\\\"></i></a> </div> <!-- ko with: Entity --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: Joins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: SubEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceLookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: LookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ISelectedEntity, QueryEntity } from 'QueryBuilder/QueryEntity/QueryEntity';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QUERY_BUILDER } from 'QueryBuilder/Constants';\r\nimport { EVENTS } from 'QueryBuilder/Events';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { EVENTS as QUERY_LINK_ENTITY_EVENTS } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/Events';\r\nimport { ZIndexManager } from 'Core/Common/ZIndexManager';\r\nimport { ElementZIndexManager } from 'QueryBuilder/ElementZIndexManager';\r\nimport { QueryLinkEntity } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/QueryLinkEntity';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { IQueryEntityParams } from 'QueryBuilder/QueryEntity/IQueryEntityParams';\r\nimport { IQueryLinkEntityParams } from 'QueryBuilder/QueryEntityJoin/QueryLinkEntity/IQueryLinkEntityParams';\r\nimport { IQueryEntityJoinParams } from 'QueryBuilder/QueryEntityJoin/IQueryEntityJoinParams';\r\nimport { CanvasSizeModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasSizeModel';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport { Event } from 'Core/Common/Event';\r\n\r\nimport QueryEntityJoinTemplate from 'QueryBuilder/QueryEntityJoin/Templates/QueryEntityJoin.html';\r\nimport SubQueryEntityJoinTemplate from 'QueryBuilder/QueryEntityJoin/Templates/SubQueryEntityJoin.html';\r\n\r\nconst DELETE_LIFESTATUS = 'Delete';\r\n\r\nexport class QueryEntityJoin extends Event {\r\n\tprivate _joins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _subEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _lookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceLookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _entity: KnockoutObservable<QueryEntity>;\r\n\tprivate _jsPlumbConnection: any;\r\n\tprivate _minWidth: KnockoutObservable<string>;\r\n\tprivate _minHeight: KnockoutObservable<string>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _overlayId: string;\r\n\tprivate _canvasWidth: KnockoutObservable<string>;\r\n\tprivate _canvasHeight: KnockoutObservable<string>;\r\n\tprivate _model: QueryEntityJoinModel;\r\n\tprivate _parentEntity: QueryEntity;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _isSubject: boolean;\r\n\tprivate _overlayWrapper: HTMLElement;\r\n\tprivate _overlayBody: HTMLElement;\r\n\tprivate _overlayTitle: HTMLElement;\r\n\tprivate _enabledColumnTypes: Array<string>;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\r\n\tprivate _joinSource: string | number;\r\n\r\n\tCanvasHeight: KnockoutComputed<string>;\r\n\tCanvasWidth: KnockoutComputed<string>;\r\n\r\n\tGetTemplateHtml: KnockoutObservable<any>;\r\n\r\n\tconstructor(params: IQueryEntityJoinParams) {\r\n\t\tsuper();\r\n\t\tthis._model = params.Model;\r\n\t\tthis._parentEntity = params.ParentEntity;\r\n\t\tthis._jsPlumb = params.JsPlumb;\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._isSubject = params.IsSubject || false;\r\n\t\tthis._overlayWrapper = params.OverlayWrapper;\r\n\t\tthis._overlayBody = $(this._overlayWrapper).find('.portlet-body') && $(this._overlayWrapper).find('.portlet-body')[0];\r\n\t\tthis._overlayTitle = $(this._overlayWrapper).find('.portlet-title') && $(this._overlayWrapper).find('.portlet-title')[0];\r\n\t\tthis._enabledColumnTypes = params.EnabledColumnTypes;\r\n\t\tthis._entity = ko.observable(null);\r\n\t\tthis._joins = ko.observableArray([]);\r\n\t\tthis._subEntityJoins = ko.observableArray([]);\r\n\t\tthis._lookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceLookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceEntityJoins = ko.observableArray([]);\r\n\t\tthis._minWidth = ko.observable('0');\r\n\t\tthis._minHeight = ko.observable('0');\r\n\t\tthis._canvasHeight = ko.observable(this._model.CanvasSize ? this._model.CanvasSize.Height : null);\r\n\t\tthis._canvasWidth = ko.observable(this._model.CanvasSize ? this._model.CanvasSize.Width : null);\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._joinSource = params.JoinSource;\r\n\t\t\r\n\t\tthis.Init();\r\n\t\tvar template = this._model.IsSubQuery ? SubQueryEntityJoinTemplate : QueryEntityJoinTemplate;\r\n\t\tthis.GetTemplateHtml = ko.observable(template);\r\n\r\n\t\tthis.CanvasWidth = ko.computed(() => {\r\n\t\t\treturn `${this._canvasWidth()}px`;\r\n\t\t});\r\n\r\n\t\tthis.CanvasHeight = ko.computed(() => {\r\n\t\t\treturn `${this._canvasHeight()}px`;\r\n\t\t});\r\n\r\n\r\n\t\tthis._joins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._subEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._lookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceLookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\r\n\t\tthis.AddEvent(EVENTS.COLUMN_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.UPDATE_SORT);\r\n\t}\r\n\r\n\tInit() {\r\n\r\n\t\tlet params: IQueryEntityParams = {\r\n\t\t\tModel: this._model.Entity,\r\n\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\tIsSubject: this._isSubject,\r\n\t\t\tGridSubjectEntityId: null,\r\n\t\t\tIsEnableSubQuery: !this._isSubject,\r\n\t\t\tIsInSubQuery: this._model.IsSubQuery,\r\n\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\tJoinType: this._model.JoinType,\r\n\t\t\tIsLookupJoin: this.IsLookupJoin,\r\n\t\t\tIsReferenceJoin: this.IsReferenceJoin\r\n\t\t};\r\n\r\n\t\tlet queryEntity = new QueryEntity(params);\r\n\r\n\t\tif(queryEntity.Model.Metadata.Lifestatus === DELETE_LIFESTATUS && this._parentEntity){\r\n\t\t\tthis._parentEntity.AddDeleteEntityToMenu(this._model.Entity.Metadata);\r\n\t\t}\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddJoin(eventArgs.data.EntityId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveJoin(eventArgs.data.EntityId, eventArgs.data.Type);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId, 'Lookup');\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId);\r\n\t\t});\r\n\r\n queryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n this.AddReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId, 'Lookup');\r\n });\r\n\r\n queryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n this.RemoveReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId);\r\n });\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.CREATE_SUB_QUERY, this, (eventArgs: any) => {\r\n\t\t\tthis.DestroyConnections();\r\n\t\t\tthis._model.IsSubQuery = true;\r\n\t\t\tthis._model.CanvasPosition.Left = this._entity().Model.CanvasPosition.Left;\r\n\t\t\tthis._model.CanvasPosition.Top = this._entity().Model.CanvasPosition.Top;\r\n\t\t\tthis._entity().Model.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE * 8;\r\n\t\t\tthis._entity().Model.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t\tthis.GetTemplateHtml(SubQueryEntityJoinTemplate);\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REMOVE_SUB_QUERY, this, () => {\r\n\t\t\tthis.RemoveSubQuery();\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.DRAG, this, () => {\r\n\t\t\tthis._model.CanvasPosition.ZIndex = ZIndexManager.Instance.NextValue;\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.DRAG_STOP, this, () => {\r\n\t\t\tthis._model.CanvasPosition.ZIndex = ZIndexManager.Instance.NextValue;\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.CLICK, this, () => {\r\n\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\tif (overlay) {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.MOUSE_OVER, this, () => {\r\n\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\tif (overlay) {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(QUERY_LINK_ENTITY_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\tthis._model.JoinType = eventArgs.data.JoinType;\r\n\t\t});\r\n\r\n\t\tthis._entity(queryEntity);\r\n\r\n\t\tlet ids: Array<ISelectedEntity> = [];\r\n\t\t_.each(this._model.Joins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null }));\r\n\t\t_.each(this._model.SubEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null}));\r\n\t\t_.each(this._model.LookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: item.LookupFieldId}));\r\n\t\t_.each(this._model.ReferenceEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceFieldId: item.ReferenceFieldId}));\r\n\t\t_.each(this._model.ReferenceLookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceLookupField: item.LookupFieldId }));\r\n\t\t\r\n\t\tqueryEntity.SetSelectedEntities(ids);\r\n\r\n\t\tthis._entity().On(EVENTS.AFTER_RENDER, this, (eventArgs: any) => {\r\n\t\t\tthis._joins([]);\r\n\t\t\tthis._subEntityJoins([]);\r\n\t\t\tthis._lookupEntityJoins([]);\r\n\t\t\tthis._referenceEntityJoins([]);\r\n\t\t\tthis._referenceLookupEntityJoins([]);\r\n\t\t\t\r\n\t\t\tthis.BuildConnection();\r\n\t\t\t_.each(this._model.Joins, joinModel => {\r\n\t\t\t\tvar params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._joins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.SubEntityJoins, (joinModel, index) => {\r\n\t\t\t\tvar params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._subEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.LookupEntityJoins, (joinModel) => {\r\n\t\t\t\tvar params: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tparams.JoinSource = this._model.LinkEntity && _.find(this._model.LinkEntity.Metadata.Fields, (field)=> field.Id === joinModel.LookupFieldId) ? 'LinkLookup': 'Lookup';\r\n\r\n\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.ReferenceLookupEntityJoins, (joinModel) => {\r\n let params: IQueryEntityJoinParams = {\r\n Model: joinModel,\r\n ParentEntity: this._entity(),\r\n JsPlumb: this._jsPlumb,\r\n EntitiesRelationships: this._entitiesRelationships,\r\n IsSubject: false,\r\n OverlayWrapper: this._overlayWrapper,\r\n EnabledColumnTypes: this._enabledColumnTypes,\r\n ObjectIndexes: this._objectIndexes,\r\n JoinSource: 'Lookup'\r\n };\r\n\r\n this._referenceLookupEntityJoins.push(new QueryEntityJoin(params));\r\n });\r\n\r\n\t\t\t_.each(this._model.ReferenceEntityJoins, (joinModel) => {\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: joinModel.ReferenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tget IsLookupJoin(): boolean {\r\n\t\treturn this._model.LookupFieldId != null && this._model.LookupFieldId != 0;\r\n\t}\r\n\r\n\tget IsReferenceJoin(): boolean{\r\n\t\treturn this._model.ReferenceFieldId != null && this._model.ReferenceFieldId != 0;\r\n\t}\r\n\r\n\tprivate BuildConnection() {\r\n\r\n\t\tlet source = this._parentEntity.Wrapper;\r\n\t\tlet leftAnchor = 'RightMiddle';\r\n\r\n\t\tif(this._joinSource === 'Lookup' || !this._joinSource){\r\n\t\t\tsource = $(this._parentEntity.Wrapper).find('.entity-list-menu')[0];\r\n\t\t}else if(this._joinSource === 'LinkLookup'){\r\n\t\t\tsource = $(this._parentEntity.Wrapper).find('.entity-link-list-menu')[0];\r\n\t\t}else if(this._joinSource){\r\n\t\t\tsource = $(this._parentEntity.Wrapper).find(`.${this._joinSource}`)[0];\r\n\t\t}\r\n\r\n\t\tlet fix = this._jsPlumb().connect({\r\n\t\t\tsource: this._parentEntity.Wrapper,\r\n\t\t\ttarget: this._entity().Wrapper,\r\n\t\t\tconnector: ['Flowchart', { stub: [10, 10], gap: 0, cornerRadius: 5, alwaysRespectStubs: true }],\r\n\t\t\tendpoint: 'Blank',\r\n\t\t\tanchors: [leftAnchor, 'TopCenter'],\r\n\t\t\tpaintStyle: {\r\n\t\t\t\tstroke: 'gray', strokeWidth: 5}\r\n\t\t});\r\n\r\n\t\tthis._jsPlumbConnection = this._jsPlumb().connect({\r\n\t\t\tsource: source,\r\n\t\t\ttarget: this._entity().Wrapper,\r\n\t\t\tconnector: ['Flowchart', { stub: [10, 10], gap: 0, cornerRadius: 5, alwaysRespectStubs: true }],\r\n\t\t\tendpoint: 'Blank',\r\n\t\t\tanchors: ['BottomCenter', 'LeftMiddle'],\r\n\t\t\tpaintStyle: {\r\n\t\t\t\tstroke: 'gray', strokeWidth: 5}\r\n\t\t});\r\n\r\n\t\tthis._jsPlumb().deleteConnection(fix);\r\n\r\n\t\tif(this._model.LinkEntity){\r\n\t\t\tvar params: IQueryLinkEntityParams = {\r\n\t\t\t\tParent: this._parentEntity.Model,\r\n\t\t\t\tModel: this._model.LinkEntity,\r\n\t\t\t\tBackBackgroundColor: this._entity().BackgroundColor,\r\n\t\t\t\tJoinType: this._model.JoinType,\r\n\t\t\t\tUseMain: this._model.UseMain,\r\n\t\t\t\tLinkDirection: this._model.LinkDirection,\r\n\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t};\r\n\r\n\t\t\tvar linkEntity = new QueryLinkEntity(params);\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.JOIN_TYPE_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._model.JoinType = eventArgs.data.JoinType;\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.USE_MAIN_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._model.UseMain = eventArgs.data.UseMain;\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.LINK_DIRECTION_CHANGED, this, (eventArgs: any) => {\r\n\t\t\t\tthis._model.LinkDirection = eventArgs.data.LinkDirection;\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.CLICK, this, () => {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\t\tif (this._entity()) {\r\n\t\t\t\t\tthis._entity().ToTop();\r\n\t\t\t\t}\r\n\t\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\t\tif (overlay) {\r\n\t\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(QUERY_LINK_ENTITY_EVENTS.MOUSE_OVER, this, () => {\r\n\t\t\t\tElementZIndexManager.Instance.ToTop(this._jsPlumbConnection.canvas);\r\n\t\t\t\tif (this._entity()) {\r\n\t\t\t\t\tthis._entity().ToTop();\r\n\t\t\t\t}\r\n\t\t\t\tvar overlay = this._jsPlumbConnection.getOverlay(this._overlayId);\r\n\t\t\t\tif (overlay) {\r\n\t\t\t\t\tElementZIndexManager.Instance.ToTop(overlay.canvas);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.AddLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId, 'LinkLookup');\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.RemoveLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId);\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.AddReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t\t});\r\n\r\n\t\t\tlinkEntity.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\t\tthis.RemoveReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t\t});\r\n\r\n\t\t\tlet ids: Array<ISelectedEntity> = [];\r\n\t\t\t_.each(this._model.LookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: item.LookupFieldId}));\r\n\t\t\t_.each(this._model.ReferenceEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceFieldId: item.ReferenceFieldId}));\r\n\r\n\t\t\tlinkEntity.SetSelectedEntities(ids);\r\n\r\n\t\t\tlinkEntity.On(EVENTS.COLUMN_SELECTED, this, (eventArgs) =>{ this.Trigger(EVENTS.COLUMN_SELECTED, {Id: eventArgs.data.Id});\t});\r\n\t\t\tthis._entity().LinkEntity(linkEntity);\r\n\t\t}\r\n\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\r\n\t}\r\n\r\n\tDestroyConnections() {\r\n\t\tthis._jsPlumb().deleteConnection(this._jsPlumbConnection);\r\n\t\t_.each(this.Joins(), join => {\r\n\t\t\tjoin.Destroy();\r\n\t\t});\r\n\t}\r\n\r\n\tDestroy() {\r\n\t\tthis._jsPlumb().deleteConnection(this._jsPlumbConnection);\r\n\t\t_.each(this._joins(), join => {\r\n\t\t\tjoin.Destroy();\r\n\t\t});\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\t}\r\n\r\n\tget Entity(): KnockoutObservable<QueryEntity> {\r\n\t\treturn this._entity;\r\n\t}\r\n\r\n\tget Model(): QueryEntityJoinModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget Joins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._joins;\r\n\t}\r\n\r\n\tget SubEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._subEntityJoins;\r\n\t}\r\n\r\n\tget LookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._lookupEntityJoins;\r\n\t}\r\n\r\n\tget ReferenceEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceEntityJoins;\r\n\t}\r\n\r\n\tRemoveSubQuery(){\r\n\t\tthis.DestroyConnections();\r\n\t\tthis._model.IsSubQuery = false;\r\n\t\tthis._entity().Model.CanvasPosition.Left = this._model.CanvasPosition.Left;\r\n\t\tthis._entity().Model.CanvasPosition.Top = this._model.CanvasPosition.Top;\r\n\t\tthis._entity().RemoveSubQuery();\r\n\t\tthis.GetTemplateHtml(QueryEntityJoinTemplate);\r\n\t}\r\n\r\n\tAddJoin(entityId: number) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tvar queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\t\t\tvar entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\r\n\t\t\t\t\tvar relationship = _.find(data.RelatedEntitiesMetadata,\r\n\t\t\t\t\t\titem => item.EntityMetadata.Id === this._entity().Model.Metadata.Id);\r\n\t\t\t\t\tif (relationship) {\r\n\t\t\t\t\t\tvar queryLikEntityModel = new QueryEntityModel();\r\n\t\t\t\t\t\tqueryLikEntityModel.Metadata = relationship.LinkEntityMetadata;\r\n\t\t\t\t\t\tentityJoinModel.LinkEntity = queryLikEntityModel;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tthis._model.Joins.push(entityJoinModel);\r\n\r\n\t\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._joins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\t\t\tvar subEntityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tsubEntityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\t\tsubEntityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\r\n\t\t\t\t\tvar subEntityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: subEntityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar subEntityJoin = new QueryEntityJoin(subEntityJoinParams);\r\n\t\t\t\t\tthis._model.SubEntityJoins.push(subEntityJoinModel);\r\n\t\t\t\t\tthis._subEntityJoins.push(subEntityJoin);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tAddLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\t\tentityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n\t\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tthis._model.LookupEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: source\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\t});\r\n\t}\r\n\r\n\tAddReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tBlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue});\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {BlockUI.Unblock(this._overlayWrapper);})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.ReferenceFieldId = referenceFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.ReferenceEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: referenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\t});\r\n\t}\r\n\r\n AddReferenceLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n BlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue});\r\n EntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n .always(() => {BlockUI.Unblock(this._overlayWrapper);})\r\n .then((data) => {\r\n let queryEntityModel = new QueryEntityModel();\r\n queryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n let entityJoinModel = new QueryEntityJoinModel();\r\n entityJoinModel.Entity = queryEntityModel;\r\n entityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n entityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n this._model.ReferenceLookupEntityJoins.push(entityJoinModel);\r\n\r\n var entityJoinParams: IQueryEntityJoinParams = {\r\n Model: entityJoinModel,\r\n ParentEntity: this._entity(),\r\n JsPlumb: this._jsPlumb,\r\n EntitiesRelationships: [data],\r\n IsSubject: false,\r\n OverlayWrapper: this._overlayWrapper,\r\n EnabledColumnTypes: this._enabledColumnTypes,\r\n ObjectIndexes: this._objectIndexes,\r\n JoinSource: source\r\n };\r\n\r\n this._referenceLookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n });\r\n }\r\n\r\n RemoveReferenceLookupJoin(entityId: number, lookupFieldId: number) {\r\n let entityJoin = _.find(this._referenceLookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n entityJoin.Destroy();\r\n let entityJoinModel = _.find(this._model.ReferenceLookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n this._model.ReferenceLookupEntityJoins.splice(this._model.ReferenceLookupEntityJoins.indexOf(entityJoinModel), 1);\r\n this._referenceLookupEntityJoins.splice(this._referenceLookupEntityJoins().indexOf(entityJoin), 1);\r\n\t}\r\n\r\n\tCalculatePosition(): CanvasPositionModel {\r\n\t\tlet canvasPosition = new CanvasPositionModel();\r\n\t\tlet joins = [];\r\n\t\tjoins = joins.concat(this._joins()).concat(this._subEntityJoins()).concat(this._lookupEntityJoins()).concat(this._referenceEntityJoins());\r\n\t\tlet maxTopJoin = _.max(joins, (item: QueryEntityJoin) => item.Model.Entity.CanvasPosition.Top);\r\n\r\n\t\tif (!_.isEmpty(maxTopJoin)) {\r\n\t\t\tcanvasPosition.Left = maxTopJoin.Model.Entity.CanvasPosition.Left;\r\n\t\t\tcanvasPosition.Top = +maxTopJoin.Model.Entity.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t} else {\r\n\t\t\tcanvasPosition.Left = +this._entity().Model.CanvasPosition.Left + QUERY_BUILDER.CELL_SIZE * 14;\r\n\t\t\tcanvasPosition.Top = +this._entity().Model.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t}\r\n\r\n\t\treturn canvasPosition;\r\n\t}\r\n\r\n\r\n\tRemoveJoin(entityId: number, type: string) {\r\n\t\tif (type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\tvar entityJoin = _.find(this._joins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tentityJoin.Destroy();\r\n\t\t\tvar entityJoinModel = _.find(this._model.Joins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\tthis._model.Joins.splice(this._model.Joins.indexOf(entityJoinModel), 1);\r\n\t\t\tthis._joins.splice(this._joins.indexOf(entityJoin), 1);\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t}\r\n\r\n\t\tif (type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\tlet subEntityJoin = _.find(this._subEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tif (subEntityJoin) {\r\n\t\t\t\tsubEntityJoin.Destroy();\r\n\t\t\t\tlet subEntityJoinModel = _.find(this._model.SubEntityJoins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\t\tthis._model.SubEntityJoins.splice(this._model.SubEntityJoins.indexOf(subEntityJoinModel), 1);\r\n\t\t\t\tthis._subEntityJoins.splice(this._subEntityJoins.indexOf(subEntityJoin), 1);\r\n\t\t\t\tthis.DecreaseObjectIndex(subEntityJoinModel.Entity.Metadata.Id, subEntityJoinModel.Entity.Index);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDecreaseObjectIndex(entityId: number, index: number) {\r\n\t\tlet objIndex = _.find(this._objectIndexes, (indx) => {\r\n\t\t\treturn indx.Id === entityId;\r\n\t\t});\r\n\t\tif(objIndex && objIndex.Index === index){\r\n\t\t\tobjIndex.Index = +objIndex.Index - 1;\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveLookupJoin(entityId: number, lookupFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._lookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.LookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n\t\tthis._model.LookupEntityJoins.splice(this._model.LookupEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._lookupEntityJoins.splice(this._lookupEntityJoins().indexOf(entityJoin), 1);\r\n\t\tthis.CalculateMinBoxSize();\r\n\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t}\r\n\r\n\tRemoveReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._referenceEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.ReferenceFieldId == referenceFieldId });\r\n\t\tif(entityJoin){\r\n\t\t\tentityJoin.Destroy();\r\n\t\t\tlet entityJoinModel = _.find(this._model.ReferenceEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.ReferenceFieldId == referenceFieldId });\r\n\t\t\tthis._model.ReferenceEntityJoins.splice(this._model.ReferenceEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\t\tthis._referenceEntityJoins.splice(this._referenceEntityJoins().indexOf(entityJoin), 1);\r\n\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tif (this._model.IsSubQuery) {\r\n\t\t\tthis._el = el[0];\r\n\t\t\tthis.CalculateMinBoxSize();\r\n\t\t\tvar parent = $(this._el).parent();\r\n\t\t\tvar isRoot = $(parent).hasClass('querybuilder-root-canvas');\r\n\r\n\t\t\t$(this._el).draggable({\r\n\t\t\t\tcontainment: isRoot ? false : 'parent',\r\n\t\t\t\tgrid: [20, 20],\r\n\t\t\t\tdrag: () => {\r\n\t\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t\t},\r\n\t\t\t\tstop: (evt, ui) => {\r\n\t\t\t\t\tthis._jsPlumb().repaintEverything();\r\n\t\t\t\t\tthis._model.CanvasPosition.Top = ui.position.top;\r\n\t\t\t\t\tthis._model.CanvasPosition.Left = ui.position.left;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tStartResize() {\r\n\t\tthis.CalculateMinBoxSize();\r\n\t}\r\n\r\n\tStopResize(evt, ui) {\r\n\t\tif (!this._model.CanvasSize) {\r\n\t\t\tthis._model.CanvasSize = new CanvasSizeModel();\r\n\t\t}\r\n\r\n\t\tthis._model.CanvasSize.Height = ui.size.height;\r\n\t\tthis._model.CanvasSize.Width = ui.size.width;\r\n\t}\r\n\r\n\tGetLeftPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Left}px`;\r\n\t}\r\n\r\n\tGetTopPosition(): string {\r\n\t\treturn `${this._model.CanvasPosition.Top}px`;\r\n\t}\r\n\r\n\tget MinWidth(): KnockoutObservable<string> {\r\n\t\treturn this._minWidth;\r\n\t}\r\n\r\n\tget MinHeight(): KnockoutObservable<string> {\r\n\t\treturn this._minHeight;\r\n\t}\r\n\r\n\tprivate CalculateMinBoxSize() {\r\n\t\tvar wrappers = this.GetAllWrappers();\r\n\t\tvar maxLeftWrapper = _.max(wrappers, wrapper => { return $(wrapper).position().left });\r\n\t\tvar maxTopWrapper = _.max(wrappers, wrapper => { return $(wrapper).position().top });\r\n\t\tthis._minWidth(String($(maxLeftWrapper).position().left + $(maxLeftWrapper).width() + (QUERY_BUILDER.CELL_SIZE * 5)));\r\n\t\tthis._minHeight(String($(maxTopWrapper).position().top + $(maxTopWrapper).height() + (QUERY_BUILDER.CELL_SIZE)));\r\n\r\n\t\tif (+this._minWidth() > +this._canvasWidth()){\r\n\t\t\tthis._canvasWidth(this._minWidth());\r\n\t\t}\r\n\r\n\t\tif (+this._minHeight() > +this._canvasHeight()) {\r\n\t\t\tthis._canvasHeight(this._minHeight());\r\n\t\t}\r\n\t}\r\n\r\n\tprivate BlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayBody, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Block( { Target: this._overlayTitle, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate UnBlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayWrapper);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayBody);\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Unblock(this._overlayTitle);\r\n\t\t}\r\n\t}\r\n\r\n\tGetAllWrappers() {\r\n\t\tvar wrappers = [];\r\n\t\twrappers.push(this._entity().Wrapper);\r\n\r\n\t\t_.each(this.AllJoins, join_ => {\r\n\t\t\twrappers = wrappers.concat(this.GetAllJoinWrappers(join_));\r\n\t\t});\r\n\t\treturn wrappers;\r\n\t}\r\n\r\n\tGetAllJoinWrappers(join: QueryEntityJoin) {\r\n\t\tvar wrappers = [];\r\n\t\tlet wrapper = join.Model.IsSubQuery ? join._el : join._entity().Wrapper;\r\n\t\twrappers.push(wrapper);\r\n\t\t_.each(join.AllJoins, join_ => {\r\n\t\t\twrappers = wrappers.concat(this.GetAllJoinWrappers(join_));\r\n\t\t});\r\n\t\treturn wrappers;\r\n\t}\r\n\r\n\tget AllJoins(): Array<QueryEntityJoin>{\r\n\t\treturn [...this._joins(), ...this._lookupEntityJoins(), ...this._subEntityJoins(), ...this._referenceLookupEntityJoins(), ...this._referenceEntityJoins()];\r\n\t}\r\n\r\n\tget ReferenceLookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceLookupEntityJoins;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { ISelectedEntity, QueryEntity } from 'QueryBuilder/QueryEntity/QueryEntity';\r\nimport { QueryEntityJoin } from 'QueryBuilder/QueryEntityJoin/QueryEntityJoin';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { QUERY_BUILDER } from 'QueryBuilder/Constants';\r\nimport { EVENTS } from 'QueryBuilder/Events';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { CanvasPositionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/CanvasPositionModel';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { EntityTypes } from 'Core/Controls/Grid/BaseGrid/Enums/EntityTypes';\r\nimport { IQueryExpressionParams } from 'QueryBuilder/QueryExpression/IQueryExpressionParams';\r\nimport { IQueryEntityParams } from 'QueryBuilder/QueryEntity/IQueryEntityParams';\r\nimport { IQueryEntityJoinParams } from 'QueryBuilder/QueryEntityJoin/IQueryEntityJoinParams';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport { Event } from 'Core/Common/Event';\r\n\r\nimport QueryExpressionTemplate from 'QueryBuilder/QueryExpression/Templates/QueryExpression.html';\r\nimport { ZIndexManager } from \"../../Core/Common/ZIndexManager\";\r\n\r\nexport class QueryExpression extends Event{\r\n\tprivate _entity: KnockoutObservable<QueryEntity>;\r\n\tprivate _entityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _subEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _model: QueryExpressionModel;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _viewMode: ViewModes;\r\n\tprivate _overlayWrapper: HTMLElement;\r\n\tprivate _overlayBody: HTMLElement;\r\n\tprivate _overlayTitle: HTMLElement;\r\n\tprivate _enabledColumnTypes: Array<string>;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\tprivate _lookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceLookupEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\tprivate _referenceEntityJoins: KnockoutObservableArray<QueryEntityJoin>;\r\n\r\n\tconstructor(params: IQueryExpressionParams) {\r\n\t\tsuper();\r\n\t\tthis._model = params.Model;\r\n\t\tthis._jsPlumb = params.JsPlumb;\r\n\t\tthis._entitiesRelationships = params.EntitiesRelationships;\r\n\t\tthis._viewMode = params.ViewMode;\r\n\t\tthis._overlayWrapper = params.Container;\r\n\t\tthis._overlayBody = $(this._overlayWrapper).find('.portlet-body') && $(this._overlayWrapper).find('.portlet-body')[0];\r\n\t\tthis._overlayTitle = $(this._overlayWrapper).find('.portlet-title') && $(this._overlayWrapper).find('.portlet-title')[0];\r\n\t\tthis._enabledColumnTypes = params.EnabledColumnTypes;\r\n\t\tthis._entity = ko.observable(null);\r\n\t\tthis._entityJoins = ko.observableArray([]);\r\n\t\tthis._subEntityJoins = ko.observableArray([]);\r\n\t\tthis._objectIndexes = params.ObjectIndexes;\r\n\t\tthis._lookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceLookupEntityJoins = ko.observableArray([]);\r\n\t\tthis._referenceEntityJoins = ko.observableArray([]);\r\n\r\n\r\n\t\tthis._entityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._subEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._lookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceLookupEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\t\tthis._referenceEntityJoins.subscribe(()=>this.Trigger(EVENTS.UPDATE_SORT));\r\n\r\n\t\tthis.AddEvent(EVENTS.COLUMN_SELECTED);\r\n\t\tthis.AddEvent(EVENTS.UPDATE_SORT);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tvar ids: Array<ISelectedEntity> = [];\r\n\t\tvar gridSubjectId = null;\r\n\r\n\t\tif (this._viewMode === ViewModes.TableView) {\r\n\t\t\tvar gridSubjectJoin = _.first(this._model.EntityJoins);\r\n\t\t\tif (gridSubjectJoin) {\r\n\t\t\t\tgridSubjectId = gridSubjectJoin.Entity.Metadata.Id;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar params: IQueryEntityParams = {\r\n\t\t\tModel: this._model.Entity,\r\n\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\tIsSubject: true,\r\n\t\t\tGridSubjectEntityId: gridSubjectId,\r\n\t\t\tIsEnableSubQuery: false,\r\n\t\t\tIsInSubQuery: false,\r\n\t\t\tIsEnableSelectSubEntity: true,\r\n\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\tIsLookupJoin: false,\r\n\t\t\tIsReferenceJoin: false\r\n\t\t};\r\n\r\n\t\tvar queryEntity = new QueryEntity(params);\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddJoin(eventArgs.data.EntityId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveJoin(eventArgs.data.EntityId, eventArgs.data.Type);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId, 'Lookup');\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveLookupJoin(eventArgs.data.EntityId, eventArgs.data.LookupFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId, 'Lookup');\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_LOOKUP_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveReferenceLookupJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceLookupFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_SELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.AddReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\tqueryEntity.On(EVENTS.REFERENCE_ENTITY_UNSELECTED, this, (eventArgs: any) => {\r\n\t\t\tthis.RemoveReferenceJoin(eventArgs.data.EntityId, eventArgs.data.ReferenceFieldId);\r\n\t\t});\r\n\r\n\t\t_.each(this._model.EntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null }));\r\n\t\t_.each(this._model.SubEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: null }));\r\n\t\t_.each(this._model.LookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, LookupFieldId: item.LookupFieldId }));\r\n\t\t_.each(this._model.ReferenceEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceFieldId: item.ReferenceFieldId }));\r\n\t\t_.each(this._model.ReferenceLookupEntityJoins, item => ids.push({ Id: item.Entity.Metadata.Id, ReferenceLookupField: item.LookupFieldId }));\r\n\r\n\t\tqueryEntity.SetSelectedEntities(ids);\r\n\r\n\t\tthis.InitGridSubject();\r\n\r\n\t\tqueryEntity.On(EVENTS.AFTER_RENDER, this, (eventArgs: any) => {\r\n\t\t\tthis._entityJoins([]);\r\n\t\t\tthis._subEntityJoins([]);\r\n\t\t\t_.each(this._model.EntityJoins, (joinModel, index) => {\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: joinModel.Entity.IsGridSubject,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._entityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\tif(this._entityJoins().length === 1 && this._viewMode === ViewModes.TableView){\r\n\t\t\t\tlet join = this._entityJoins()[0];\r\n\t\t\t\tjoin.On(EVENTS.COLUMN_SELECTED, this, (eventArgs) => {\r\n\t\t\t\t\tthis.Trigger(EVENTS.COLUMN_SELECTED, { Id: eventArgs.data.Id, Join: join.Model } );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t_.each(this._model.SubEntityJoins, (joinModel) => {\r\n\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: joinModel.Entity.IsGridSubject,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._subEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\r\n\t\t\t_.each(this._model.LookupEntityJoins, (joinModel) => {\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.ReferenceLookupEntityJoins, (joinModel, index) => {\r\n\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: joinModel.Entity.IsGridSubject,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceLookupEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._model.ReferenceEntityJoins, (joinModel) => {\t\t\t\r\n\t\t\t\tlet params: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: joinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: joinModel.ReferenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(params));\r\n\t\t\t});\r\n\r\n\t\t});\r\n\t\t\r\n\t\tthis._entity(queryEntity);\r\n\t}\r\n\r\n\tprivate BlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayWrapper, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Block({ Target: this._overlayBody, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Block( { Target: this._overlayTitle, ZIndex: ZIndexManager.Instance.NextValue });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate UnBlockOverlayBodyAndTitle() {\r\n\t\tif(!this._overlayTitle && !this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayWrapper);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif(this._overlayBody) {\r\n\t\t\tBlockUI.Unblock(this._overlayBody);\r\n\t\t}\r\n\r\n\t\tif(this._overlayTitle) {\r\n\t\t\tBlockUI.Unblock(this._overlayTitle);\r\n\t\t}\r\n\t}\r\n\r\n\tInitGridSubject(){\r\n\t\tif(this._viewMode !== ViewModes.TableView){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet hasGridSubject = \r\n\t\t\t_.any(this._model.EntityJoins\r\n\t\t\t.concat(this._model.SubEntityJoins)\r\n\t\t\t.concat(this._model.LookupEntityJoins)\r\n\t\t\t.concat(this._model.ReferenceEntityJoins)\r\n\t\t\t.concat(this._model.ReferenceLookupEntityJoins), (item)=> item.Entity.IsGridSubject);\r\n\t\t\tif(hasGridSubject) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet firstJoin = _.first(this._model.EntityJoins);\r\n\t\t\tif(firstJoin){\r\n\t\t\t\tfirstJoin.Entity.IsGridSubject = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tfirstJoin = _.first(this._model.ReferenceLookupEntityJoins);\r\n\t\t\tif(firstJoin){\r\n\t\t\t\tfirstJoin.Entity.IsGridSubject = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t}\r\n\r\n\tRemoveLookupJoin(entityId: number, lookupFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._lookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.LookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n\t\tthis._model.LookupEntityJoins.splice(this._model.LookupEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._lookupEntityJoins.splice(this._lookupEntityJoins().indexOf(entityJoin), 1);\r\n\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t}\r\n\r\n\tAddLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.LookupEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: source\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._lookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t});\r\n\t}\r\n\r\n\tAddReferenceLookupJoin(entityId: number, lookupFieldId: number, source: string) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.LookupFieldId = lookupFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.ReferenceLookupEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: source\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceLookupEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t});\r\n\t}\r\n\r\n\tRemoveReferenceLookupJoin(entityId: number, lookupFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._referenceLookupEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.LookupFieldId == lookupFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.ReferenceLookupEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.LookupFieldId == lookupFieldId });\r\n\t\tthis._model.ReferenceLookupEntityJoins.splice(this._model.ReferenceLookupEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._referenceLookupEntityJoins.splice(this._referenceLookupEntityJoins().indexOf(entityJoin), 1);\r\n\t}\r\n\r\n\tAddReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tlet queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tlet entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\tentityJoinModel.ReferenceFieldId = referenceFieldId;\r\n\r\n\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\tthis._model.ReferenceEntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\tJoinSource: referenceFieldId\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._referenceEntityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t});\r\n\t}\r\n\r\n\tRemoveReferenceJoin(entityId: number, referenceFieldId: number) {\r\n\t\tlet entityJoin = _.find(this._referenceEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId && join.Model.ReferenceFieldId == referenceFieldId });\r\n\t\tentityJoin.Destroy();\r\n\t\tlet entityJoinModel = _.find(this._model.ReferenceEntityJoins, join => { return join.Entity.Metadata.Id === entityId && join.ReferenceFieldId == referenceFieldId });\r\n\t\tthis._model.ReferenceEntityJoins.splice(this._model.ReferenceEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\tthis._referenceEntityJoins.splice(this._referenceEntityJoins().indexOf(entityJoin), 1);\r\n\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t}\r\n\r\n\r\n\tget Entity(): KnockoutObservable<QueryEntity> {\r\n\t\treturn this._entity;\r\n\t}\r\n\r\n\tget EntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._entityJoins;\r\n\t}\r\n\r\n\tget SubEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._subEntityJoins;\r\n\t}\r\n\r\n\tget ReferenceEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceEntityJoins;\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tget LookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._lookupEntityJoins;\r\n\t}\r\n\r\n\tget ReferenceLookupEntityJoins(): KnockoutObservableArray<QueryEntityJoin> {\r\n\t\treturn this._referenceLookupEntityJoins;\r\n\t}\r\n\r\n\tAddJoin(entityId: number) {\r\n\t\tthis.BlockOverlayBodyAndTitle();\r\n\t\tEntityMetadataStore.GetEntityMetadata({ EntityId: entityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnBlockOverlayBodyAndTitle();\r\n\t\t\t })\r\n\t\t\t.then((data) => {\r\n\t\t\t\tvar queryEntityModel = new QueryEntityModel();\r\n\t\t\t\tqueryEntityModel.Metadata = data.EntityMetadata;\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\t\t\tvar entityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tentityJoinModel.Entity = queryEntityModel;\r\n\r\n\t\t\t\t\tvar relationship = _.find(data.RelatedEntitiesMetadata, item => item.EntityMetadata.Id === this._entity().Model.Metadata.Id);\r\n\t\t\t\t\tif (relationship) {\r\n\t\t\t\t\t\tvar queryLikEntityModel = new QueryEntityModel();\r\n\t\t\t\t\t\tqueryLikEntityModel.Metadata = relationship.LinkEntityMetadata;\r\n\t\t\t\t\t\tentityJoinModel.LinkEntity = queryLikEntityModel;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tentityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tthis._model.EntityJoins.push(entityJoinModel);\r\n\r\n\t\t\t\t\tvar entityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: entityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tthis._entityJoins.push(new QueryEntityJoin(entityJoinParams));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.EntityMetadata.Type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\t\t\tvar subEntityJoinModel = new QueryEntityJoinModel();\r\n\t\t\t\t\tsubEntityJoinModel.Entity = queryEntityModel;\r\n\t\t\t\t\tsubEntityJoinModel.Entity.CanvasPosition = this.CalculatePosition();\r\n\t\t\t\t\tvar subEntityJoinParams: IQueryEntityJoinParams = {\r\n\t\t\t\t\t\tModel: subEntityJoinModel,\r\n\t\t\t\t\t\tParentEntity: this._entity(),\r\n\t\t\t\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\t\t\t\tEntitiesRelationships: [data],\r\n\t\t\t\t\t\tIsSubject: false,\r\n\t\t\t\t\t\tOverlayWrapper: this._overlayWrapper,\r\n\t\t\t\t\t\tEnabledColumnTypes: this._enabledColumnTypes,\r\n\t\t\t\t\t\tObjectIndexes: this._objectIndexes,\r\n\t\t\t\t\t\tJoinSource: 'Lookup'\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar subEntityJoin = new QueryEntityJoin(subEntityJoinParams);\r\n\t\t\t\t\tthis._model.SubEntityJoins.push(subEntityJoinModel);\r\n\t\t\t\t\tthis._subEntityJoins.push(subEntityJoin);\r\n\t\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tCalculatePosition(): CanvasPositionModel {\r\n\t\tlet canvasPosition = new CanvasPositionModel();\r\n\t\tlet joins = [];\r\n\t\tjoins = joins.concat(this._entityJoins()).concat(this._subEntityJoins()).concat(this._lookupEntityJoins()).concat(this._referenceEntityJoins());\r\n\t\tlet maxTopJoin = _.max(joins, (item: QueryEntityJoin) => item.Model.Entity.CanvasPosition.Top);\r\n\r\n\t\tif (!_.isEmpty(maxTopJoin)) {\r\n\t\t\tcanvasPosition.Left = maxTopJoin.Model.Entity.CanvasPosition.Left;\r\n\t\t\tcanvasPosition.Top = +maxTopJoin.Model.Entity.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t} else {\r\n\t\t\tcanvasPosition.Left = +this._entity().Model.CanvasPosition.Left + QUERY_BUILDER.CELL_SIZE * 14;\r\n\t\t\tcanvasPosition.Top = +this._entity().Model.CanvasPosition.Top + QUERY_BUILDER.CELL_SIZE * 3;\r\n\t\t}\r\n\r\n\t\treturn canvasPosition;\r\n\t}\r\n\r\n\tRemoveJoin(entityId: number, type: string) {\r\n\t\tif (type === EntityTypes[EntityTypes.Entity]) {\r\n\t\t\tlet entityJoin = _.find(this._entityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tif (entityJoin) {\r\n\t\t\t\tentityJoin.Destroy();\r\n\t\t\t\tlet entityJoinModel = _.find(this._model.EntityJoins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\t\tthis._model.EntityJoins.splice(this._model.EntityJoins.indexOf(entityJoinModel), 1);\r\n\t\t\t\tthis._entityJoins.splice(this._entityJoins.indexOf(entityJoin), 1);\r\n\t\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (type === EntityTypes[EntityTypes.Sub]) {\r\n\t\t\tlet entityJoin = _.find(this._subEntityJoins(), join => { return join.Model.Entity.Metadata.Id === entityId });\r\n\t\t\tif (entityJoin) {\r\n\t\t\t\tentityJoin.Destroy();\r\n\t\t\t\tlet entityJoinModel = _.find(this._model.SubEntityJoins, join => { return join.Entity.Metadata.Id === entityId });\r\n\t\t\t\tthis._model.SubEntityJoins.splice(this._model.SubEntityJoins.indexOf(entityJoinModel), 1);\r\n\t\t\t\tthis._subEntityJoins.splice(this._subEntityJoins.indexOf(entityJoin), 1);\r\n\t\t\t\tthis.DecreaseObjectIndex(entityJoinModel.Entity.Metadata.Id, entityJoinModel.Entity.Index);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tDecreaseObjectIndex(entityId: number, index: number) {\r\n\t\tlet objIndex = _.find(this._objectIndexes, (indx) => {\r\n\t\t\treturn indx.Id === entityId;\r\n\t\t});\r\n\t\tif(objIndex && objIndex.Index === index){\r\n\t\t\tobjIndex.Index = +objIndex.Index - 1;\r\n\t\t}\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QueryExpressionTemplate;\r\n\t}\r\n\r\n\tAfterRender() {}\r\n}","// Module\nvar code = \"<!-- ko with: Entity --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: EntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: SubEntityJoins --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> <!-- ko foreach: LookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceLookupEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko foreach: ReferenceEntityJoins --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko -->\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"query-sortable-item box-shadow--6dp\\\" style=\\\"height:40px;margin-left:10px;margin-bottom:10px\\\"> <div class=\\\"panel color-view bg-blue bg-font-blue query-bottom-btn\\\" style=\\\"height:100%\\\"> <div data-bind=\\\"style: {\\r\\n\\t\\t\\t\\t\\t\\t\\tcursor: $parent._isMoving() ? 'move' : 'pointer'\\r\\n\\t\\t\\t\\t\\t\\t}\\\" style=\\\"padding:0;padding-left:5px;padding-right:5px\\\" class=\\\"panel-heading text-center\\\"> <h6 data-bind=\\\"text: $data.Title\\\" class=\\\"bold\\\"></h6> </div> <div data-bind=\\\"click: $parent.RemoveSortColumn.bind($parent, $data)\\\" class=\\\"query-close-btn\\\"><i class=\\\"fa fa-times\\\" aria-hidden=\\\"true\\\"></i></div> </div> <div data-bind=\\\"click: $data.ChangeOrderDirection.bind($data)\\\" class=\\\"query-button edit-button bg-blue bg-font-blue\\\"> <span title=\\\"Order direction\\\"> <i data-bind=\\\"css: { 'fa-arrow-up': SortOrder() === 0, 'fa-arrow-down': SortOrder() === 1 }\\\" class=\\\"fa fa-stack\\\"></i> </span> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\n\r\nimport { SortOrder } from 'QueryBuilder/Enums';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QuerySortModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel';\r\n\r\nimport SortItemTemplate from 'QueryBuilder/QuerySorting/SortItem/Templates/SortItem.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nko.templates['QueryBuilder/QuerySorting/SortItem/Templates/SortItem'] = SortItemTemplate;\r\n\r\nexport class SortItem {\r\n\tprivate _sortOrder: KnockoutObservable<SortOrder>;\r\n\tprivate _model: QuerySortModel;\r\n\r\n\tconstructor(model: QuerySortModel, private _queryEntityModel: QueryEntityModel) {\r\n\t\tthis._sortOrder = ko.observable(model.SortOrder);\r\n\t\tthis._model = model;\r\n\t}\r\n\r\n\tstatic GetTemplateName() {\r\n\t\treturn 'QueryBuilder/QuerySorting/SortItem/Templates/SortItem';\r\n\t}\r\n\r\n\t@enumerable get Title(): string {\r\n\t\treturn `${this._queryEntityModel.Metadata.NameTranslation || this._queryEntityModel.Metadata.Name}.${this._model.Column.Metadata.NameTranslation || this._model.Column.Metadata.Name}`;\r\n\t}\r\n\r\n\t@enumerable get SortOrder(): KnockoutObservable<SortOrder> {\r\n\t\treturn this._sortOrder;\r\n\t}\r\n\r\n\t@enumerable get Model(): QuerySortModel {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tChangeOrderDirection() {\r\n\t\tif (this._sortOrder() === SortOrder.Ascending) {\r\n\t\t\tthis._sortOrder(SortOrder.Descending);\r\n\t\t\tthis._model.SortOrder = SortOrder.Descending;\r\n\t\t} else {\r\n\t\t\tthis._sortOrder(SortOrder.Ascending);\r\n\t\t\tthis._model.SortOrder = SortOrder.Ascending;\r\n\t\t}\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { SortItem } from 'QueryBuilder/QuerySorting/SortItem/SortItem';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QuerySortModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel';\r\nimport { SortOrder } from 'QueryBuilder/Enums';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { Util } from 'QueryBuilder/Util';\r\n\r\nimport QuerySortingTemplate from 'QueryBuilder/QuerySorting/Templates/QuerySorting.html';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class QuerySorting {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _items: KnockoutObservableArray<SortItem>;\r\n\tprivate _isMoving: KnockoutObservable<boolean>;\r\n\r\n\tconstructor() {\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._isMoving = ko.observable(false);\r\n\r\n\t}\r\n\r\n\tset ExpressionModel(expressionModel: QueryExpressionModel) {\r\n\t\tthis._expressionModel = expressionModel;\r\n\r\n\t\tvar entities = Util.GetAllQueryEntities(this._expressionModel);\r\n\r\n\t\t_.each(this._expressionModel.Sorts, (item) => {\r\n\t\t\tvar queryEntity = _.find(entities, (entity) => { return entity.Guid === item.Column.QueryEntityGuid });\r\n\t\t\tif (queryEntity) {\r\n\t\t\t\tvar fieldMetadata = _.find(queryEntity.Metadata.Fields, (field) => { return field.Id === item.Column.Metadata.Id });\r\n\t\t\t\tif (fieldMetadata) {\r\n\t\t\t\t\titem.Column.Metadata = fieldMetadata;\r\n\t\t\t\t\tvar sortItem = new SortItem(item, queryEntity);\r\n\t\t\t\t\tthis._items.push(sortItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tGetSortItemTemplateName() {\r\n\t\treturn SortItem.GetTemplateName();\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QuerySortingTemplate;\r\n\t}\r\n\r\n\tAddSortColumn(item, evt, ui) {\r\n\t\tlet model = new QuerySortModel();\r\n\t\tmodel.Column = new QueryColumnModel();\r\n\t\tmodel.Column.Metadata = item.FieldMetadataModel;\r\n\t\tmodel.Column.QueryEntityGuid = item.QueryEntityModel.Guid;\r\n\t\tmodel.SortOrder = SortOrder.Ascending;\r\n\t\tif (!this._expressionModel.Sorts) {\r\n\t\t\tthis._expressionModel.Sorts = [];\r\n\t\t}\r\n\t\tthis._expressionModel.Sorts.push(model);\r\n\t\tlet sortItem = new SortItem(model, item.QueryEntityModel);\r\n\t\treturn sortItem;\r\n\t}\r\n\r\n\tUpdate(){\r\n\t\tvar entities = Util.GetAllQueryEntities(this._expressionModel);\r\n\r\n\t\tthis._items().forEach((sortItem)=>{\r\n\t\t\tif(!_.any(entities,(entity)=>entity.Guid === sortItem.Model.Column.QueryEntityGuid)){\r\n\t\t\t\tthis.RemoveSortColumn(sortItem);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tStartSort() {\r\n\t\tthis._isMoving(true);\r\n\t}\r\n\r\n\tStopSort() {\r\n\t\tthis._isMoving(false);\r\n\t\tthis._expressionModel.Sorts = _.map(this._items(), (item) => {\r\n\t\t\treturn item.Model;\r\n\t\t});\r\n\t}\r\n\r\n\t@enumerable get Items(): KnockoutObservableArray<SortItem> {\r\n\t\treturn this._items;\r\n\t}\r\n\r\n\tRemoveSortColumn(sortItem: SortItem) {\r\n\t\tthis._expressionModel.Sorts.splice(this._expressionModel.Sorts.indexOf(sortItem.Model), 1);\r\n\t\tthis._items.remove(sortItem);\r\n\t}\r\n}","// Module\nvar code = \"<style>#QuerySorting>div{float:left}</style> <div data-bind=\\\"sortable: {\\r\\n\\t\\ttemplate: $data.GetSortItemTemplateName.bind($data),\\r\\n\\t\\tdata: Items,\\r\\n\\t\\tdragged: $data.AddSortColumn.bind($data),\\r\\n\\t\\toptions: {\\r\\n\\t\\t\\tstart: $data.StartSort.bind($data),\\r\\n\\t\\t\\tstop: $data.StopSort.bind($data),\\r\\n\\t\\t\\tplaceholder: 'sort-column-placeholder',\\r\\n\\t\\t}\\r\\n\\t}\\\" id=\\\"QuerySorting\\\" style=\\\"z-index:99999;min-height:80px;padding:15px 15px 15px 5px;background-color:#ffffd4;border:1px solid #e1e1e1!important\\\" class=\\\"clearfix\\\"> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { BaseGrid } from 'Core/Controls/Grid/BaseGrid/BaseGrid';\r\nimport { Paginator } from 'Core/Components/Paginator/Paginator';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport {GridStore, IGetGridDataRequestModel} from 'Core/Controls/Grid/Stores/GridStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { EVENTS as PAGINATOR_EVENTS } from 'Core/Components/Paginator/Constants';\r\nimport { EVENTS as BASE_GRID_EVENTS } from 'Core/Controls/Grid/BaseGrid/Events';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { GridDataModel } from 'Core/Controls/Grid/Models/GridDataModel/GridDataModel';\r\nimport { Serialize } from 'libs/cerialize';\r\nimport { SortModel } from 'Core/Controls/Grid/Models/SortModel';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport {Toolbar} from \"Core/Controls/Grid/Toolbar/Toolbar\";\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager';\r\nimport {ScreenTypes} from \"Core/Common/Enums/ScreenTypes\";\r\nimport {EVENTS as TOOLBAR_EVENTS} from \"Core/Controls/Grid/Toolbar/Constants\";\r\nimport {LOCAL_STORAGE} from 'Core/Common/Enums/LocalStorageItems';\r\nimport {PUB_SUB_EVENTS} from \"MenuManager/PubSubEvents\";\r\n\r\nexport class QueryResultGrid {\r\n\t\r\n\tprivate _baseGrid: KnockoutObservable<BaseGrid>;\r\n\tprivate _paginator: Paginator;\r\n\tprivate _sorting: Array<SortModel>;\r\n\r\n\tprivate _toolbar: Toolbar;\r\n\tprivate _userVarsManager: UserVarsManager;\r\n\tprivate _showTogglePrioritiesButton: boolean;\r\n\tprivate _isPrioritiesDisabled: boolean;\r\n\tprivate _screenTypes: string;\r\n\r\n\tconstructor(\r\n\t\tprivate _model: QueryExpressionModel,\r\n\t\tprivate _recordId: number,\r\n\t\tprivate _recordPerPage: number,\r\n\t\tprivate _viewMode: ViewModes,\r\n\t\tprivate _isDesktop: boolean,\r\n\t\tprivate _filterByOwners: boolean,\r\n\t\tprivate _subjectEntityId: number,\r\n\t\tprivate _gridSubjectEntityId: number\r\n\t) {\r\n\t\tthis._userVarsManager = UserVarsManager.Instance;\r\n\t\tthis._screenTypes = ScreenTypes[ScreenTypes.None];\r\n\t\tthis._showTogglePrioritiesButton = this._screenTypes !== ScreenTypes[ScreenTypes.Portlet];\r\n\t\tthis._isPrioritiesDisabled = !this._showTogglePrioritiesButton;\r\n\r\n\t\tthis._baseGrid = ko.observable(\r\n\t\t\tnew BaseGrid({\r\n\t\t\t\tisEditable: ko.observable(true),\r\n\t\t\t\tisQueryResultGrid: true,\r\n\t\t\t\tscreenType: this._screenTypes,\r\n\t\t\t\tisPrioritiesDisabled: this.GetGridPriorityToggle(),\r\n\t\t\t\tToggleAllShownColumns: this.ToggleAllShownColums.bind(this)\r\n\t\t\t}));\r\n\t\tthis._baseGrid().IsFastFilterEnabled = true;\r\n\t\tthis._baseGrid().IsReady = false;\r\n\r\n\t\tthis._toolbar = new Toolbar(\r\n\t\t\tfalse,\r\n\t\t\tfalse,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tthis._screenTypes,\r\n\t\t\tthis.GetGridPriorityToggle(),\r\n\t\t\tthis._showTogglePrioritiesButton,\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tko.observable(false),\r\n\t\t\tfalse,\r\n\t\t\tfalse\r\n\t\t);\r\n\t\tthis._toolbar.On(TOOLBAR_EVENTS.TOGGLE_PRIORITIES, this, (eventArgs: any) => {\r\n\t\t\tthis.TogglePriorities(eventArgs.data.state)\r\n\t\t});\r\n\r\n\t\tthis._paginator = this._toolbar.Paginator();\r\n\t\tthis._paginator.RecordsPerPage = this._recordPerPage;\r\n\r\n\t\tthis._paginator.On(PAGINATOR_EVENTS.CHANGE, this, () => { this.Refresh(); });\r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.SORT, this, (eventArgs: any) => {\r\n\t\t\tthis._sorting = eventArgs.data.SortColumns;\r\n\t\t\tthis.Refresh(true);\r\n\t\t});\r\n\r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.UPDATE_GRID, this, eventArgs => {\r\n\t\t\tif(eventArgs.data.updateFromFastFilters){\r\n\t\t\t\tif (this._paginator.PageNumber != 1) {\r\n\t\t\t\t\tthis._paginator.Reset();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.Refresh(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t });\r\n\t\t \r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.LOAD_SUB_GRID, this, (eventArgs)=>{\r\n\t\t\tthis.Refresh(false, eventArgs.data.SubGrid, eventArgs.data.ParentRowId);\r\n\t\t});\r\n\r\n\t\tthis._baseGrid().On(BASE_GRID_EVENTS.OPEN_HYPERLINK, this, eventArgs => this.OnHyperLink(eventArgs.data));\r\n\t}\r\n\r\n\tTogglePriorities(state) {\r\n\t\t!MobileChecker.IsMobile() && this._userVarsManager.SetGridPriority(this._subjectEntityId, this._gridSubjectEntityId, state);\r\n\t\tthis._isPrioritiesDisabled = state;\r\n\t\tthis.Refresh();\r\n\t}\r\n\r\n\tToggleAllShownColums(canHide: boolean, canShow: boolean) {\r\n\t\tthis._toolbar && this._toolbar.ToggleAllShownColums.call(this._toolbar, canHide, canShow);\r\n\t}\r\n\r\n\tGetGridPriorityToggle(): boolean {\r\n\t\tif (MobileChecker.IsMobile()) {\r\n\t\t\treturn this._isPrioritiesDisabled;\r\n\t\t}\r\n\t\treturn this._userVarsManager && this._userVarsManager.GetGridPriority(this._subjectEntityId, this._gridSubjectEntityId, this._isPrioritiesDisabled);\r\n\t}\r\n\r\n\tset FilterByOwners(value: boolean){\r\n\t\tthis._filterByOwners = value;\r\n\t}\r\n\r\n\tprivate BlockUI() {\r\n\t\tBlockUI.Block();\r\n\t}\r\n\r\n\tprivate UnblockUI() {\r\n\t\tBlockUI.Unblock();\r\n\t}\r\n\r\n\tRefresh(restoreState: boolean = false, subGrid?: BaseGrid, parentRowId?: string) {\r\n\r\n\t\tlet pageNumber = subGrid ? subGrid.Paginator.PageNumber : this._toolbar.Paginator().PageNumber;\r\n\r\n\t\tlet requestModel: IGetGridDataRequestModel = {\r\n\t\t\tRecordsPerPage: this._paginator.RecordsPerPage,\r\n\t\t\tPageNumber: pageNumber,\r\n\t\t\tQuery: this._model,\r\n\t\t\tControlId: 0,\r\n\t\t\tTableViewId: 0,\r\n\t\t\tParentRowId: parentRowId,\r\n\t\t\tShowPlanned: false,\r\n\t\t\tSearchPhrase: null,\r\n\t\t\tSubjectEntityId: 0,\r\n\t\t\tRecordOwners: [],\r\n\t\t\tSort: this._sorting,\r\n\t\t\tViewMode: this._viewMode,\r\n\t\t\tSubjectRecordId: this._recordId,\r\n\t\t\tSubjectTypeId: 0,\r\n\t\t\tSubjectKindId: 0,\r\n\t\t\tSubjectStatusId: 0,\r\n\t\t\tFilterByOwners: this._filterByOwners,\r\n\t\t\tSubQueryGuid: subGrid ? subGrid.Model.SubQueryGuid : null,\r\n\t\t\tFastFilters: this._baseGrid() ? this._baseGrid().FilterSaveModels.filter((filter) => filter.Values.length)\r\n\t\t\t\t.map((filter) => {\r\n\t\t\t\t\t\t\t\tfilter.Values.forEach(value => {\r\n\t\t\t\t\t\t\t\t\tif (value.DisplayValue === LABELS.EMPTY_VALUE) {\r\n\t\t\t\t\t\t\t\t\t\tvalue.DisplayValue = null;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tFieldAlias: filter.FieldAlias,\r\n\t\t\t\t\t\t\t\t\tValues: filter.Values,\r\n\t\t\t\t\t\t\t\t\tTimeZone: (new Date().getTimezoneOffset()) / 60\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t}) : []\r\n\t\t};\r\n\t\tthis.BlockUI();\r\n\t\tGridStore.GetData(requestModel)\r\n\t\t\t.always(() => {\r\n\t\t\t\tthis.UnblockUI();\r\n\t\t\t})\r\n\t\t\t.then(data => {\r\n\t\t\t\tif(subGrid){\r\n\t\t\t\t\tsubGrid.SetData(data, restoreState);\r\n\t\t\t\t\tsubGrid.SetRecordsPerPage(this._toolbar.Paginator().RecordsPerPage);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis._baseGrid().SetGridDataModel(requestModel);\r\n\t\t\t\t\tthis.SetGridData(data, restoreState);\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.fail((error) => {\r\n\t\t\t\tconst notifier = new Notifier(null);\r\n\t\t\t\tnotifier.Failed(error.message);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate SetGridData(gridData: GridDataModel, restoreState: boolean) {\r\n\t\tif (this._isDesktop) {\r\n\t\t\t_.each(gridData.Columns, (column) => {\r\n\t\t\t\tcolumn.DisplayPriority = 0;\r\n\t\t\t});\r\n\t\t\t_.each(gridData.Rows, (row) => {\r\n\t\t\t\t_.each(row.Data, (dataCell) => {\r\n\t\t\t\t\tdataCell.DisplayPriority = 0;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._paginator.TotalRecords = gridData.TotalRecords;\r\n\t\tthis._baseGrid().SetData(gridData, restoreState, this.GetGridPriorityToggle());\r\n\t\tthis._baseGrid().IsReady = true;\r\n\t}\r\n\r\n\tset RecordId(value: number) {\r\n\t\tthis._recordId = value;\r\n\t}\r\n\r\n\tprivate GoToScreen(linkInfo) {\r\n UserVarsManager.Instance.AddRecent(linkInfo.EntityId, linkInfo.RecordId, linkInfo.RecordTypeId);\r\n Lockr.set(LOCAL_STORAGE.HYPERLINK_SOURCE, linkInfo.EntityId);\r\n\r\n linkInfo.IsOpenInModal = true;\r\n PubSub.publish(PUB_SUB_EVENTS.GO_TO_RECORD_SCREEN, linkInfo);\r\n }\r\n\r\n private OnHyperLink(linkInfo) {\r\n this.GoToScreen(linkInfo);\r\n }\r\n}","export const EVENTS = {\r\n\tENTITY_SELECTED: 'ENTITY_SELECTED'\r\n}","import * as _ from 'underscore';\r\nimport { TableSecurityUnitModel } from 'QueryBuilder/Models/TableSecurityUnitModel';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { ENTITY_COLORS } from 'QueryBuilder/Constants';\r\nimport Template from 'QueryBuilder/QueryBootstrap/Templates/QueryBootstrap.html';\r\nimport { EVENTS } from 'QueryBuilder/QueryBootstrap/Events';\r\n\r\nexport class QueryBootstrap extends Event {\r\n\tprivate _entities: Array<TableSecurityUnitModel>;\r\n\r\n\r\n\tconstructor(entities: Array<TableSecurityUnitModel>) {\r\n\t\tsuper();\r\n\t\tthis._entities = _.filter(entities, (entity)=>{\r\n\t\t\treturn !entity.Name.startsWith('SYS_');\r\n\t\t});\r\n\r\n\t\tthis.AddEvent(EVENTS.ENTITY_SELECTED);\r\n\t\tthis.InitDropdownEvents();\r\n\t}\r\n\r\n\tget BackgroundColor(): string {\r\n\t\treturn ENTITY_COLORS.MAIN_ENTITY;\r\n\t}\r\n\r\n\tprivate InitDropdownEvents() {\r\n\t\tsetTimeout(() => {\r\n\t\t\t$('#entitiesDropdownQueryBootstrap').on('show.bs.dropdown', function () {\r\n\t\t\t\tconst styling: any = {\r\n\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\tleft: 0\r\n\t\t\t\t};\r\n\t\t\t\tconst $dropdownMenu = $('#entitiesDropdownQueryBootstrap .dropdown-menu');\r\n\t\t\t\tstyling.top = 43;\r\n\t\t\t\tstyling['box-shadow'] = '5px 5px rgba(102, 102, 102, 0.5)';\r\n\t\t\t\t$dropdownMenu.css(styling).addClass('queryBuilderDropdown');\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tSelectEntity(entity: TableSecurityUnitModel) {\r\n\t\tthis.Trigger(EVENTS.ENTITY_SELECTED, { EntityId: entity.Id });\r\n\t\t$('.jBox-content').css('overflow', 'auto');\r\n\r\n\t}\r\n}","// Module\nvar code = \"<div id=\\\"entitiesDropdownQueryBootstrap\\\" style=\\\"width:50px;height:40px!important;position:absolute;top:20px;left:20px;cursor:pointer\\\" class=\\\"box-shadow--6dp\\\"> <div data-bind=\\\"css: BackgroundColor\\\" class=\\\"panel start-query-btn\\\" style=\\\"height:40px!important\\\" data-toggle=\\\"dropdown\\\"> <i class=\\\"fa fa-table start-icon\\\" aria-hidden=\\\"true\\\"></i> </div> <div class=\\\"dropdown-menu dropdown-checkboxes\\\" role=\\\"menu\\\"> <div data-bind=\\\"preventBubble: ['mousewheel', 'DOMMouseScroll']\\\" style=\\\"max-height:300px;overflow-y:scroll\\\"> <!-- ko foreach: _entities --> <label data-bind=\\\"click: $parent.SelectEntity.bind($parent, $data)\\\" style=\\\"cursor:pointer;white-space:nowrap\\\"> <!-- ko text: NameTranslation || Name --><!-- /ko --> </label> <!-- /ko --> </div> </div> </div>\";\n// Exports\nexport default code;","import { FieldMetadataModel } from \"Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel\";\r\n\r\nexport class DisplayField{\r\n private _field: FieldMetadataModel;\r\n\r\n constructor(field: FieldMetadataModel){\r\n this._field = field;\r\n }\r\n\r\n get Title(): string{\r\n return `${this._field.NameTranslation || this._field.Name}`;\r\n }\r\n\r\n get Id(): number{\r\n return this._field.Id;\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { AGGREGATE_FUNCTIONS } from 'QueryBuilder/Constants';\r\nimport { DisplayField } from './DisplayField';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\n\r\nvar FieldTypesToAggregate = {\r\n\tYesNo: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tText: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tCurrency: [AGGREGATE_FUNCTIONS.COUNT, AGGREGATE_FUNCTIONS.SUM, AGGREGATE_FUNCTIONS.MIN, AGGREGATE_FUNCTIONS.MAX, AGGREGATE_FUNCTIONS.AVG],\r\n\tDate: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tDateTime: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tInteger: [AGGREGATE_FUNCTIONS.COUNT, AGGREGATE_FUNCTIONS.SUM, AGGREGATE_FUNCTIONS.MIN, AGGREGATE_FUNCTIONS.MAX, AGGREGATE_FUNCTIONS.AVG],\r\n\tBinary: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tGuid: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tDocument: [],\r\n\tImage: [],\r\n\tRadio: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tMultiSelect: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tIcon: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tType: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tTime: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tPKey: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tFlagCheck: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tLookup: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tSort: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tMemo: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tPassword: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tColor: [AGGREGATE_FUNCTIONS.COUNT],\r\n\tDecimal: [AGGREGATE_FUNCTIONS.COUNT, AGGREGATE_FUNCTIONS.SUM, AGGREGATE_FUNCTIONS.MIN, AGGREGATE_FUNCTIONS.MAX, AGGREGATE_FUNCTIONS.AVG],\r\n\tAlias: [AGGREGATE_FUNCTIONS.COUNT]\r\n}\r\n\r\nconst RELATION_TYPE_VALUE = 'F_RELATIONTYPEVALUE';\r\nconst DELETED_STATUS = 'Delete';\r\n\r\nexport class FieldInfo {\r\n\tprivate _isCrossRow: KnockoutObservable<boolean>;\r\n\tprivate _functions: Array<string>;\r\n\tprivate _function: KnockoutObservable<string>;\r\n\r\n\tprivate _displayFields: KnockoutObservableArray<DisplayField>;\r\n\tprivate _selectedDisplayFieldsId: KnockoutObservableArray<number>;\r\n\r\n\r\n\tconstructor(\r\n\t\tpublic Column?: QueryColumnModel,\r\n\t\tpublic Entity?: QueryEntityModel,\r\n\t) {\r\n\t\tthis._displayFields = ko.observableArray([]);\r\n\t\tthis._selectedDisplayFieldsId = ko.observableArray([]);\r\n\r\n\t\tthis._isCrossRow = ko.observable(Column.IsCrossRow);\r\n\t\tthis._isCrossRow.subscribe((newValue) => {\r\n\t\t\tthis.Column.IsCrossRow = newValue;\r\n\t\t});\r\n\r\n\t\tthis._functions = FieldTypesToAggregate[this.Column.Metadata.Type];\r\n\t\tthis._function = ko.observable(this.Column.AggregateFunction);\r\n\r\n\t\tthis._function.subscribe((newValue) => { this.Column.AggregateFunction = newValue; });\r\n\r\n\t\t_.each(this.Entity?.Metadata.Fields, f=>{\r\n\t\t\tif(f.Id != this.Column.Metadata.Id && f.IsCustom && f.Name != RELATION_TYPE_VALUE && f.LifestatusName !== DELETED_STATUS && f.Type !== FIELD_TYPES.Sort){\r\n\t\t\t\tlet displayField = new DisplayField(f);\r\n\t\t\t\tthis._displayFields.push(displayField);\r\n\r\n\t\t\t\tif(this.Column.DisplayFields.indexOf(f.Id)>=0){\r\n\t\t\t\t\tthis._selectedDisplayFieldsId.push(displayField.Id);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._selectedDisplayFieldsId.subscribe((newValue)=>{\r\n\t\t\tthis.Column.DisplayFields = newValue\r\n\t\t});\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\tvar entityName = `${this.Entity.Metadata.NameTranslation || this.Entity.Metadata.Name}`;\r\n\t\tif (this.Entity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this.Entity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this.Column.Metadata.NameTranslation || this.Column.Metadata.Name}`;\r\n\t}\r\n\r\n\tget IsCrossRow(): KnockoutObservable<boolean> {\r\n\t\treturn this._isCrossRow;\r\n\t}\r\n\r\n\tget Functions(): Array<string> {\r\n\t\treturn this._functions;\r\n\t}\r\n\r\n\tget Function(): KnockoutObservable<string> {\r\n\t\treturn this._function;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"table-view-config clearfix\\\"> <input data-bind=\\\"bootstrapSwitch: {\\r\\n\\t\\t\\t\\t\\t\\tvalue: IsCrossTable,\\r\\n\\t\\t\\t\\t\\t\\tonText: $data._labels.ON,\\r\\n\\t\\t\\t\\t\\t\\toffText: $data._labels.OFF,\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\tattr: {\\r\\n\\t\\t\\t\\t\\t\\t\\t'data-on-text': $data._labels.ON,\\r\\n\\t\\t\\t\\t\\t\\t\\t'data-off-text': $data._labels.OFF }\\\" data-handle-width=\\\"36px\\\" data-label-width=\\\"36px\\\" type=\\\"checkbox\\\" class=\\\"make-personal-record-switch make-switch\\\"> <table class=\\\"table table-striped table-bordered table-advance flip-content\\\"> <thead class=\\\"flip-content\\\"> <tr> <th style=\\\"cursor:pointer\\\"></th> <!-- ko foreach: Fields --> <th data-bind=\\\"text: Title\\\" style=\\\"cursor:pointer\\\"></th> <!-- /ko --> </tr> </thead> <tbody> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.ROW_LABEL --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"checked: $data.IsCrossRow, enable: $parent.IsCrossTable\\\" name=\\\"crossTableRow\\\" type=\\\"checkbox\\\"> </td> <!-- /ko --> </tr> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.COLUMN --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"checkedValue: $data, checked: $parent.CrossColumn, enable: $parent.IsCrossTable\\\" name=\\\"crossTableColumn\\\" type=\\\"radio\\\"> </td> <!-- /ko --> </tr> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.VALUE --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td class=\\\"crossTableMultipleWrapper\\\" style=\\\"text-align:center\\\"> <input data-bind=\\\"checkedValue: $data, checked: $parent.CrossValue, enable: $parent.IsCrossTable\\\" name=\\\"crossTableValue\\\" type=\\\"radio\\\"> <!-- ko if: $data === $parent.CrossValue() --> <select data-bind=\\\"options: $data.Functions, value: $data.Function, enable: $parent.IsCrossTable\\\"></select> <br> <select multiple=\\\"multiple\\\" data-bind=\\\"options: $data._displayFields,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Title',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsValue: 'Id',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tselectedOptions : $data._selectedDisplayFieldsId,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmultiselect: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbuttonWidth: '175px',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tmaxHeight: 120,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tbuttonClass: 'btn btn-default btn-multiselect',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tinheritClass: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tnonSelectedText: 'Select an option',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tdropRight: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tincludeSelectAllOption: true,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tselectAllText: 'Select all'}\\\"></select> <!-- /ko --> </td> <!-- /ko --> </tr> <tr> <td style=\\\"text-align:left\\\"><b><!-- ko text: $data._labels.WRAP_FROM_HERE --><!-- /ko --></b></td> <!-- ko foreach: Fields --> <td style=\\\"text-align:center\\\"> <input data-bind=\\\"checkedValue: $data, checked: $parent.CrossWrapped, enable: $parent.IsCrossTable\\\" name=\\\"crossWrapped\\\" type=\\\"radio\\\"> </td> <!-- /ko --> </tr> </tbody> </table> <!-- ko with: $data._clusteredConfig --> <!-- ko if: $data._relationTypes().length > 0 --> <table class=\\\"table table-striped table-bordered table-advance flip-content\\\"> <thead class=\\\"flip-content\\\"> <tr> <th></th> <th data-bind=\\\"text: $data._labels.EDIT\\\"></th> <th data-bind=\\\"text: $data._labels.ARROW\\\"></th> </tr> </thead> <tbody> <!-- ko foreach: $data._relationTypes --> <tr> <td style=\\\"text-align:left\\\" data-bind=\\\"text: $data.FullName\\\"></td> <td><input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ShowEditRelationButton\\\"></td> <td><input type=\\\"checkbox\\\" data-bind=\\\"checked: $data.ShowNexRelationButton\\\"></td> </tr> <!-- /ko --> </tbody> </table> <!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import * as _ from 'underscore';\r\n\r\nimport { FieldInfo } from 'QueryBuilder/CrossTableConfig/FieldInfo';\r\nimport { RelationTypeValueModel } from 'QueryBuilder/Models/RelationTypeValueModel';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CrossValueSettingsModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class CrossValueConfig{\r\n private _field: FieldInfo;\r\n private _relationTypes: KnockoutObservableArray<RelationTypeValueModel>;\r\n private _labels = LABELS;\r\n\r\n constructor(field: FieldInfo){\r\n this._field = field;\r\n this._relationTypes = ko.observableArray([]);\r\n\r\n (async () => await this.LoadTypes())();\r\n }\r\n\r\n async LoadTypes(){\r\n if(!this._field) return;\r\n \r\n\t\tlet relationTypes = await QueryBuilderStore.GetRelationTypes({ LinkTableId: this._field.Entity.Metadata.Id });\r\n\r\n _.each(relationTypes, (type)=>{\r\n let config = _.find(this._field.Column.CrossValueSettings, (setting) => setting.RelationTypeValueId === type.RelationTypeValueId);\r\n \r\n if(config){\r\n type.ShowEditRelationButton(config.ShowEditRelationButton);\r\n type.ShowNexRelationButton(config.ShowNexRelationButton);\r\n }else{\r\n type.ShowEditRelationButton(true);\r\n type.ShowNexRelationButton(true);\r\n }\r\n\r\n if(!config){\r\n config = new CrossValueSettingsModel({ RelationTypeValueId: type.RelationTypeValueId, ShowNexRelationButton: true, ShowEditRelationButton: true });\r\n this._field.Column.CrossValueSettings.push(config);\r\n } \r\n\r\n type.ShowEditRelationButton.subscribe((newValue)=>{\r\n config.ShowEditRelationButton = newValue;\r\n });\r\n\r\n type.ShowNexRelationButton.subscribe((newValue)=>{\r\n config.ShowNexRelationButton = newValue;\r\n });\r\n\r\n });\r\n\r\n this._relationTypes(relationTypes);\r\n }\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { AGGREGATE_FUNCTIONS } from 'QueryBuilder/Constants';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { FieldInfo } from 'QueryBuilder/CrossTableConfig/FieldInfo';\r\n\r\nimport Template from 'QueryBuilder/CrossTableConfig/Templates/CrossTableConfig.html';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CrossValueConfig } from './ClusteredConfig';\r\n\r\nexport class CrossTableConfig{\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _fields: KnockoutObservableArray<FieldInfo>;\r\n\tprivate _crossColumn: KnockoutObservable<FieldInfo>;\r\n\tprivate _crossValue: KnockoutObservable<FieldInfo>;\r\n\tprivate _crossWrapped: KnockoutObservable<FieldInfo>;\r\n\r\n\tprivate _isCrossTable: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _clusteredConfig: KnockoutObservable<CrossValueConfig>;\r\n\r\n\tconstructor() {\r\n\t\tthis._fields = ko.observableArray([]);\r\n\t\tthis._crossColumn = ko.observable(null);\r\n\t\tthis._crossValue = ko.observable(null);\r\n\t\tthis._crossWrapped = ko.observable(null);\r\n\t\tthis._clusteredConfig = ko.observable(null);\r\n\r\n\t\tthis._isCrossTable = ko.observable(false);\r\n\r\n\t\tthis._isCrossTable.subscribe((newValue) => { this._expressionModel.IsCrossTable = newValue; });\r\n\r\n\t\tthis._crossWrapped.subscribe((newValue) => {\r\n\t\t\t_.each(this._fields(), (item: FieldInfo) => { item.Column.IsCrossWrapped = false; });\r\n\t\t\tif (newValue) {\r\n\t\t\t\tnewValue.Column.IsCrossWrapped = true;\r\n\t\t\t\tif (newValue === this._crossValue()) {\r\n\t\t\t\t\tthis._crossValue(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newValue === this._crossColumn()) {\r\n\t\t\t\t\tthis._crossColumn(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewValue.IsCrossRow(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._crossColumn.subscribe((newValue) => {\r\n\t\t\t_.each(this._fields(), (item: FieldInfo) => { item.Column.IsCrossColumn = false; });\r\n\t\t\tif (newValue) {\r\n\t\t\t\tnewValue.Column.IsCrossColumn = true;\r\n\t\t\t\tif (newValue === this._crossValue()) {\r\n\t\t\t\t\tthis._crossValue(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newValue === this._crossWrapped()) {\r\n\t\t\t\t\tthis._crossWrapped(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnewValue.IsCrossRow(false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._crossValue.subscribe(async (newValue) => {\r\n\t\t\t_.each(this._fields(), (item: FieldInfo) => { item.Column.IsCrossValue = false; });\r\n\t\t\tif (newValue) {\r\n\t\t\t\tnewValue.Column.IsCrossValue = true;\r\n\t\t\t\tif (newValue === this._crossColumn()) {\r\n\t\t\t\t\tthis._crossColumn(null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (newValue === this._crossWrapped()) {\r\n\t\t\t\t\tthis._crossWrapped(null);\r\n\t\t\t\t}\r\n\t\t\t\tnewValue.IsCrossRow(false);\r\n\t\t\t}\r\n\r\n\t\t\tthis._clusteredConfig(new CrossValueConfig(newValue));\r\n\t\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tset ExpressionModel(expressionModel: QueryExpressionModel) {\r\n\t\tthis._expressionModel = expressionModel;\r\n\t\tthis._isCrossTable(this._expressionModel.IsCrossTable);\r\n\t}\r\n\r\n\tget CrossColumn(): KnockoutObservable<FieldInfo> {\r\n\t\treturn this._crossColumn;\r\n\t}\r\n\r\n\tget CrossValue(): KnockoutObservable<FieldInfo> {\r\n\t\treturn this._crossValue;\r\n\t}\r\n\r\n\tget CrossWrapped(): KnockoutObservable<FieldInfo> {\r\n\t\treturn this._crossWrapped;\r\n\t}\r\n\r\n\tget IsCrossTable(): KnockoutObservable<boolean> {\r\n\t\treturn this._isCrossTable;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tUpdate() {\r\n\t\tlet fields = [];\r\n\t\tlet queryEntities = Util.GetAllQueryEntities(this._expressionModel);\r\n\t\t_.each(queryEntities,\r\n\t\t\tentity => {\r\n\t\t\t\t_.each(entity.Columns,\r\n\t\t\t\t\tcolumn => {\r\n\t\t\t\t\t\tif(column.Metadata.Type) {\r\n\t\t\t\t\t\t\tlet field = new FieldInfo(column, entity);\r\n\t\t\t\t\t\t\t\tfields.push(field);\r\n\t\t\t\t\t\t\t\tfield.IsCrossRow.subscribe((newValue) => {\r\n\t\t\t\t\t\t\t\t\tif (newValue) {\r\n\t\t\t\t\t\t\t\t\t\tif (field === this._crossColumn()) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis._crossColumn(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (field === this._crossValue()) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis._crossValue(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (field === this._crossWrapped()) {\r\n\t\t\t\t\t\t\t\t\t\t\tthis._crossWrapped(null);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\tfields = _.sortBy(fields, (fieldModel: FieldInfo) => { return fieldModel.Column.DisplayOrder; });\r\n\r\n\t\tthis._fields(fields);\r\n\t\tthis._crossColumn(_.find(fields, (item: FieldInfo) => { return item.Column.IsCrossColumn }));\r\n\t\tthis._crossValue(_.find(fields, (item: FieldInfo) => { return item.Column.IsCrossValue }));\r\n\t\tthis._crossWrapped(_.find(fields, (item: FieldInfo) => { return item.Column.IsCrossWrapped }));\r\n\t}\r\n\r\n\tget Fields(): KnockoutObservableArray<FieldInfo> {\r\n\t\treturn this._fields;\r\n\t}\r\n\r\n\tValidate() {\r\n\r\n\t}\r\n}","import { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport enumerable from 'Core/Common/Decorators/EnumerableDecorator';\r\n\r\nexport class PrimaryKeyField {\r\n\tprivate _queryEntity: QueryEntityModel;\r\n\tprivate _fieldMetadata: FieldMetadataModel;\r\n\r\n\tconstructor(queryEntity: QueryEntityModel, fieldMetadata: FieldMetadataModel) {\r\n\t\tthis._queryEntity = queryEntity;\r\n\t\tthis._fieldMetadata = fieldMetadata;\r\n\t}\r\n\r\n\t@enumerable get Title(): string {\r\n\t\tvar entityName = this._queryEntity.Metadata.NameTranslation || this._queryEntity.Metadata.Name;\r\n\r\n\t\tif (this._queryEntity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this._queryEntity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this._fieldMetadata.NameTranslation || this._fieldMetadata.Name}`;\r\n\t}\r\n\r\n\t@enumerable get FieldMetadata() {\r\n\t\treturn this._fieldMetadata;\r\n\t}\r\n\r\n\t@enumerable get EntityMetadata() {\r\n\t\treturn this._queryEntity.Metadata;\r\n\t}\r\n\r\n\t@enumerable get QueryEntityGuid() {\r\n\t\treturn this._queryEntity.Guid;\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet light\\\"> <div class=\\\"portlet-body\\\"> <form class=\\\"form-horizontal\\\"> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <label data-bind=\\\"text: _labels.CUSTOM_SCREEN + ':'\\\" for=\\\"screenLookup\\\" class=\\\"control-label\\\"></label> <select id=\\\"screenLookup\\\" data-bind=\\\"options: _screens,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t optionsCaption: _labels.SELECT_CUSTOM_SCREEN,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t optionsText: 'Name',\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t optionsAfterRender: $data.OptionAfterRender.bind($data),\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t value: _selectedScreen\\\" class=\\\"form-control control record-field drop-down\\\"></select> <a data-bind=\\\"click: $data.Clear.bind($data)\\\" href=\\\"#\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> </div> <div class=\\\"controls form-inline\\\"> <label for=\\\"showInMenu\\\" class=\\\"control-label\\\" data-bind=\\\"text: _labels.SHOW_IN_MENU\\\"></label> <input id=\\\"showInMenu\\\" data-bind=\\\"uniform: _showInMenu, checked: _showInMenu\\\" type=\\\"checkbox\\\"> </div> </div> <!-- ko foreach: _genericButtons --> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <label data-bind=\\\"text: $data.Name + ':'\\\" for=\\\"primaryKeyLookup\\\" class=\\\"control-label\\\"></label> <select id=\\\"primaryKeyLookup\\\" data-bind=\\\"options: $parents[0]._primaryKeyFields,\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t optionsCaption: 'Default',\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t optionsText: 'Title',\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t value: $parents[0]._genericButtonToFieldValue[$data.Id]\\r\\n\\t\\t\\t\\t\\t \\t\\t\\t\\t\\t\\t\\t\\t \\t\\t\\\" class=\\\"form-control control record-field drop-down\\\"></select> </div> </div> <!-- /ko --> </form> </div> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { QueryScreenModel } from 'QueryBuilder/Models/QueryScreenModel';\r\nimport { GenericButtonModel } from 'QueryBuilder/Models/GenericButtonModel';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport {PrimaryKeyField} from 'QueryBuilder/QueryScreen/PrimaryKeyField';\r\nimport {FIELD_TYPES} from 'Core/Constant';\r\n\r\nimport Template from 'QueryBuilder/QueryScreen/Templates/QueryScreen.html';\r\nimport {GenericButtonConfigModel} from \"../../Core/Controls/Grid/Models/GridDataModel/QueryExpression/GenericButtonConfigModel\";\r\n\r\n\r\nexport class QueryScreen {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _labels = LABELS;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _screens: KnockoutObservableArray<QueryScreenModel>;\r\n\tprivate _showInMenu: KnockoutObservable<boolean>;\r\n\tprivate _genericButtons: KnockoutObservableArray<GenericButtonModel>;\r\n\tprivate _selectedScreen: KnockoutObservable<QueryScreenModel>;\r\n\tprivate _primaryKeyFields: KnockoutObservableArray<PrimaryKeyField>;\r\n\tprivate _genericButtonToFieldValue: any;\r\n\r\n\tconstructor() {\r\n\t\tthis._screens = ko.observableArray([]);\r\n\t\tthis._showInMenu = ko.observable(false);\r\n\t\tthis._genericButtons = ko.observableArray([]);\r\n\t\tthis._selectedScreen = ko.observable(null);\r\n\t\tthis._primaryKeyFields = ko.observableArray([]);\r\n\t\tthis._genericButtonToFieldValue = {};\r\n\r\n\t\tthis._selectedScreen.subscribe((newValue) => {\r\n\t\t\tif (this._expressionModel) {\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tthis._expressionModel.QueryScreenId = newValue.Id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._expressionModel.QueryScreenId = null;\r\n\t\t\t\t}\r\n\t\t\t\tthis.UpdateGenericButtonList();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tset ExpressionModel(value: QueryExpressionModel) {\r\n\t\tthis._expressionModel = value;\r\n\t}\r\n\r\n\tset SubjectEntityId(value: number) {\r\n\t\tthis._subjectEntityId = value;\r\n\t}\r\n\r\n\tget ShowInMenu() {\r\n\t\treturn this._showInMenu();\r\n\t}\r\n\r\n\tset ShowInMenu(value: boolean) {\r\n\t\tthis._showInMenu(value);\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tBlockUI.Block();\r\n\t\tQueryBuilderStore.GetQueryScreens({ EntityId: this._subjectEntityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screens) => {\r\n\t\t\t\tthis._screens(screens);\r\n\t\t\t\tlet selectedScreen = _.find(this._screens(), (screen) => {\r\n\t\t\t\t\treturn screen.Id === this._expressionModel.QueryScreenId;\r\n\t\t\t\t});\r\n\t\t\t\tif (selectedScreen) {\r\n\t\t\t\t\tthis._selectedScreen(selectedScreen);\r\n\t\t\t\t}\r\n\t\t\t\tthis.UpdateGenericButtonList();\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate UpdateGenericButtonList(){\r\n\t\tthis._genericButtons([]);\r\n\t\tthis._genericButtonToFieldValue = {};\r\n\t\tif(this._selectedScreen()) {\r\n\t\t\tlet allEntities = Util.GetAllQueryEntities(this._expressionModel);\r\n\t\t\tlet primaryKeyFields = [];\r\n\t\t\t_.each(allEntities, (item) => {\r\n\t\t\t\t_.each(item.Metadata.Fields, (field) => {\r\n\t\t\t\t\tif (field.Type === FIELD_TYPES.PKey) {\r\n\t\t\t\t\t\tprimaryKeyFields.push(new PrimaryKeyField(item, field));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t_.each(this._selectedScreen().GenericButtons, (button)=>{\r\n\t\t\t\tlet fieldValue = ko.observable(null);\r\n\r\n\t\t\t\tlet genericButtonConfig = _.find(this._expressionModel.GenericButtonConfigs, (config) => {\r\n\t\t\t\t\treturn config.GenericButtonId === button.Id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(genericButtonConfig){\r\n\t\t\t\t\tlet pkField = _.find(primaryKeyFields, (field: PrimaryKeyField) => {\r\n\t\t\t\t\t\treturn field.FieldMetadata.Id === genericButtonConfig.FieldId;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(pkField){\r\n\t\t\t\t\t\tfieldValue(pkField);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfieldValue.subscribe((newValue: PrimaryKeyField) => {\r\n\t\t\t\t\tthis.UpdateGenericButtonConfig(newValue, button);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis._genericButtonToFieldValue[button.Id] = fieldValue;\r\n\t\t\t});\r\n\r\n\t\t\tthis._primaryKeyFields(primaryKeyFields);\r\n\t\t\tthis._genericButtons(this._selectedScreen().GenericButtons);\r\n\r\n\t\t}else {\r\n\t\t\tthis._expressionModel.GenericButtonConfigs = [];\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateGenericButtonConfig(field: PrimaryKeyField, genericButton: GenericButtonModel){\r\n\t\tlet value = _.find(this._expressionModel.GenericButtonConfigs, (item)=> {\r\n\t\t\treturn item.GenericButtonId === genericButton.Id;\r\n\t\t});\r\n\r\n\t\tif(field){\r\n\t\t\tif(value){\r\n\t\t\t\tvalue.FieldId = field.FieldMetadata.Id;\r\n\t\t\t\tvalue.QueryEntityGuid = field.QueryEntityGuid;\r\n\t\t\t\tvalue.EntityId = field.EntityMetadata.Id;\r\n\t\t\t}else{\r\n\t\t\t\tlet config = new GenericButtonConfigModel();\r\n\t\t\t\tconfig.GenericButtonId = genericButton.Id;\r\n\t\t\t\tconfig.FieldId = field.FieldMetadata.Id;\r\n\t\t\t\tconfig.QueryEntityGuid = field.QueryEntityGuid;\r\n\t\t\t\tconfig.EntityId = field.EntityMetadata.Id;\r\n\t\t\t\tthis._expressionModel.GenericButtonConfigs.push(config);\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tif(value){\r\n\t\t\t\tthis._expressionModel.GenericButtonConfigs.splice(this._expressionModel.GenericButtonConfigs.indexOf(value), 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tOptionAfterRender(option, item) {\r\n\t\tif (!item) {\r\n\t\t\tko.applyBindingsToNode(option, { disable: true }, item);\r\n\t\t}\r\n\t}\r\n\r\n\tClear() {\r\n\t\tthis._selectedScreen(null);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryBuilderStore } from 'QueryBuilder/Stores/QueryBuilderStore';\r\nimport { CardScreenModel } from 'QueryBuilder/Models/CardScreenModel';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\n\r\nimport Template from 'QueryBuilder/TemplateScreen/Templates/TemplateScreen.html';\r\n\r\nexport class TemplateScreen {\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _labels = LABELS;\r\n\tprivate _subjectEntityId: number;\r\n\tprivate _screens: KnockoutObservableArray<CardScreenModel>;\r\n\tprivate _selectedScreen: KnockoutObservable<CardScreenModel>;\r\n\r\n\tprivate _showInPortlet: KnockoutObservable<boolean>;\r\n\tprivate _queryTypeName: ViewModes;\r\n\r\n\tconstructor(queryType: ViewModes) {\r\n\t\tthis._queryTypeName = queryType;\r\n\t\tthis._screens = ko.observableArray([]);\r\n\t\tthis._selectedScreen = ko.observable(null);\r\n\t\tthis._showInPortlet = ko.observable(false);\r\n\r\n\t\tthis._selectedScreen.subscribe((newValue) => {\r\n\t\t\tif (this._expressionModel) {\r\n\t\t\t\tif (newValue) {\r\n\t\t\t\t\tthis._expressionModel.CardScreenId = newValue.Id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._expressionModel.CardScreenId = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget IsEnabledShowInPortletCheckBox(): boolean{\r\n\t\treturn this._queryTypeName === ViewModes.ListView;\r\n\t}\r\n\r\n\tset ExpressionModel(value: QueryExpressionModel) {\r\n\t\tthis._expressionModel = value;\r\n\t}\r\n\r\n\tset SubjectEntityId(value: number) {\r\n\t\tthis._subjectEntityId = value;\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tBlockUI.Block();\r\n\t\tQueryBuilderStore.GetCardScreens({ EntityId: this._subjectEntityId })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((screens) => {\r\n\t\t\t\tthis._screens(screens);\r\n\t\t\t\tlet selectedScreen = _.find(this._screens(), (screen) => {\r\n\t\t\t\t\treturn screen.Id === this._expressionModel.CardScreenId;\r\n\t\t\t\t});\r\n\t\t\t\tif (selectedScreen) {\r\n\t\t\t\t\tthis._selectedScreen(selectedScreen);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tOptionAfterRender(option, item) {\r\n\t\tif (!item) {\r\n\t\t\tko.applyBindingsToNode(option, { disable: true }, item);\r\n\t\t}\r\n\t}\r\n\r\n\tClear() {\r\n\t\tthis._selectedScreen(null);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tget ShowInPotlet() {\r\n\t\treturn this._showInPortlet();\r\n\t}\r\n\r\n\tset ShowInPotlet(value: boolean) {\r\n\t\tthis._showInPortlet(value);\r\n\t}\r\n\r\n}","// Module\nvar code = \"<div class=\\\"portlet light\\\"> <div class=\\\"portlet-body\\\"> <form class=\\\"form-horizontal\\\"> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <label data-bind=\\\"text: _labels.TEMPLATE_SCREEN\\\" for=\\\"screenLookup\\\" class=\\\"control-label\\\"></label> <select data-bind=\\\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: _screens,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsCaption: _labels.SELECT_TEMPLATE_SCREEN,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsText: 'Name',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptionsAfterRender: $data.OptionAfterRender.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: _selectedScreen\\\" class=\\\"form-control control record-field drop-down\\\"></select> <a data-bind=\\\"click: $data.Clear.bind($data)\\\" href=\\\"#\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <!-- ko if: IsEnabledShowInPortletCheckBox --> <div class=\\\"controls form-inline\\\"> <label for=\\\"showInPortlet\\\" class=\\\"control-label\\\" data-bind=\\\"text: _labels.SHOW_IN_PORTLET\\\"></label> <input id=\\\"showInPortlet\\\" data-bind=\\\"uniform: _showInPortlet, checked: _showInPortlet\\\" type=\\\"checkbox\\\"> </div> <!-- /ko --> </div> </div> </form> </div> </div>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div data-bind=\\\"blockElement: $data._loadInProgres, css: {'bordered': !_isDesktop(), 'light': !_isDesktop(), 'page-content': _isDesktop()}\\\" class=\\\"portlet queryBuilderContainer\\\" style=\\\"padding:12px 20px 15px 20px!important\\\"> <div class=\\\"portlet-title\\\" data-bind=\\\"css: {'actionBarSubForm': _isDesktop()}\\\"> <a data-bind=\\\"css: { disabled: !_hasData() }, click: $data.SaveQuery.bind($data), visible: _isEmbedded\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-save\\\"></i> <!-- ko text: _labels.SAVE --><!-- /ko --> </a> <a data-bind=\\\" click: $data.Cancel.bind($data), visible: _isEmbedded\\\" href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> <div class=\\\"caption\\\"></div> <div class=\\\"actions\\\"> <a class=\\\"btn btn-circle btn-icon-only btn-default fullscreen\\\" href=\\\"javascript:;\\\" data-original-title=\\\"\\\" title=\\\"\\\"> </a> </div> </div> <div class=\\\"portlet-body\\\" data-bind=\\\"css: {'box-shadow-wrapper': _isDesktop()}\\\"> <!-- ko if: _isEmbedded() && ShowQueryName --> <form class=\\\"form\\\"> <div class=\\\"form-group\\\"> <label> <b>Name</b> </label> <div class=\\\"input-group\\\"> <input data-bind=\\\"textInput: _queryName, visible: _isEmbedded\\\" type=\\\"text\\\" class=\\\"subFormControl serch-inline-input input-medium query-name\\\" style=\\\"width:200px!important\\\"> <!-- ko with: _translationFieldEditor --> <div data-bind=\\\"css: { 'is-mobile': $parent._isMobile }\\\" class=\\\"translation-container\\\"> <a class=\\\"btn btn-secondary translation-list\\\" data-bind=\\\"click: $parent.ToggleTranslations.bind($parent)\\\"> <!--ko with: _activeTranslationItem--> <!--ko if: Language.Flag--> <img class=\\\"language-selection-img\\\" data-bind=\\\"attr: { src: Language.Flag }\\\" height=\\\"20\\\"> <!--/ko--> <!--ko ifnot: Language.Flag--> <span class=\\\"language-shortname\\\" data-bind=\\\"text: Language.ShortName\\\"></span> <!--/ko--> <!--/ko--> </a> <!-- ko with: $parent._translationFieldEditor --> <!-- ko template: {html: GetTemplate.bind($data), afterRender: AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> </div> </div> </form> <!-- /ko --> <div class=\\\"tab-wrapper\\\"> <div class=\\\"tabs nav-justified\\\"> <ul class=\\\"nav nav-tabs nav-justified\\\"> <li class=\\\"active tab\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: BuilderTab, attr: { href: '#' + $data.Id }\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"true\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.SELECT_TABLE_AND_FIELDS --><!-- /ko --></span> </a> </li> <!-- ko ifnot: _basicMode --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: CrossTablePage, attr: { href: '#' + $data.CrossTableTabId }\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.CROSS_TABLE --><!-- /ko --></span> </a> </li> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: FilteringPage, attr: { href: '#' + $data.FilterTabId }\\\" href=\\\"#Filtering\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.FILTERS --><!-- /ko --></span> </a> </li> <!-- /ko --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: ColumnOrderPage, attr: { href: '#' + $data.TableViewConfigTabId }\\\" href=\\\"#CoumnOrder\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.COLUMN_ORDER_AND_SETTINGS --><!-- /ko --></span> </a> </li> <!-- ko ifnot: _basicMode --> <!-- ko with: QueryScreen --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !$parent._hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: $parent.QueryScreenPage.bind($parent), attr: { href: '#' + $parent.QueryScreenTabId }\\\" href=\\\"#QueryScreen\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.SCREEN --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- ko with: TemplateScreenTab --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !$parent._hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: $parent.TemplateScreenPage.bind($parent), attr: { href: '#' + $parent.TemplateScreenTabId }\\\" href=\\\"#TemplateScreen\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.TEMPLATE --><!-- /ko --></span> </a> </li> <!-- /ko --> <!-- /ko --> <li class=\\\"tab\\\" data-bind=\\\"css: { disabled: !_hasData() }\\\"> <a class=\\\"tab-link\\\" data-bind=\\\"click: QueryResultPage, attr: { href: '#' + $data.QueryResultTabId }\\\" href=\\\"#QueryResult\\\" data-toggle=\\\"tab\\\" aria-expanded=\\\"false\\\"> <span class=\\\"caption-subject bold uppercase\\\"><!-- ko text: _labels.QUERY_RESULT --><!-- /ko --></span> </a> </li> </ul> <div class=\\\"tab-content tab-page-result\\\"> <div data-bind=\\\"attr: { id: Id }\\\" class=\\\"tab-pane active noselect\\\"> <div data-bind=\\\"event: { scroll: Scroll }\\\" class=\\\"row querybuilder-canvas querybuilder-root-canvas\\\" style=\\\"height:600px;position:relative;overflow:auto\\\"> <!-- ko with: Expression --> <!-- ko template: {html: $data.GetTemplateHtml.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- ko with: _queryBootstrap --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <span class=\\\"caption-subject bold uppercase\\\">Sorting</span> <!-- ko with: QuerySorting --> <!-- ko template: { html: $data.GetTemplateHtml.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!-- ko ifnot: _basicMode --> <div data-bind=\\\"attr: { id: $data.CrossTableTabId }\\\" class=\\\"tab-pane\\\"> <div class=\\\"row crossTableWrapper\\\"> <!-- ko with: CrossTableConfig --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <div data-bind=\\\"attr: { id: $data.FilterTabId }\\\" class=\\\"tab-pane filtering\\\"> <div class=\\\"row\\\"> <!-- ko with: ConditionBuilder --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> <!-- /ko --> <div data-bind=\\\"attr: { id: $data.TableViewConfigTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko with: TableViewConfig --> <!-- ko template: { html: GetTemplate, afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> <!-- ko ifnot: _basicMode --> <!-- ko with: QueryScreen --> <div data-bind=\\\"attr: { id: $parent.QueryScreenTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko template: { html: GetTemplate } --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: TemplateScreenTab --> <div data-bind=\\\"attr: { id: $parent.TemplateScreenTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko template: { html: GetTemplate } --><!-- /ko --> </div> <!-- /ko --> <!-- /ko --> <div data-bind=\\\"attr: { id: $data.QueryResultTabId }\\\" class=\\\"tab-pane\\\"> <!-- ko with: _queryResultGrid --> <div class=\\\"row-no-margin atesting-grid-container\\\"> <!-- ko with: _toolbar --> <div data-bind=\\\"attr: {id: 'control-' + $parent._id}\\\" class=\\\"query-result-toolbar\\\"> <!-- ko template: {name: GetTemplateName, afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> </div> <!-- /ko --> <!-- ko with: _baseGrid --> <div data-bind=\\\"visible: _isReady\\\" class=\\\"grid-container-wrapper\\\"> <!-- ko template: { name: $data.GetTemplateName.bind($data), afterRender: $data.AfterRender.bind($data) } --> <!-- /ko --> </div> <!-- /ko --> </div> <!-- /ko --> </div> </div> </div> </div> </div> </div>\";\n// Exports\nexport default code;","///<reference path=\"../typings/jsPlumb.d.ts\" />\r\n\r\nimport * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport 'jsPlumb';\r\nimport 'pubsub';\r\n\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { ICreateNewQueryRequestModel, NewQueryStore } from 'QueryBuilder/Stores/NewQueryStore';\r\nimport { GetQueryStore } from 'QueryBuilder/Stores/GetQueryStore';\r\nimport { IUpdateQueryRequestModel, UpdateQueryStore } from 'QueryBuilder/Stores/UpdateQueryStore';\r\nimport { ConditionBuilder } from 'QueryBuilder/QueryCondition/ConditionBuilder/ConditionBuilder';\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { TableViewConfig } from 'QueryBuilder/TableViewConfig/TableViewConfig';\r\nimport { Notifier } from 'Core/Common/Notifier';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { QUERY_BUILDER } from 'QueryBuilder/Constants';\r\nimport { EVENTS, EVENTS as QUERY_BUILDER_EVENTS } from 'QueryBuilder/Events';\r\nimport { QueryExpression } from 'QueryBuilder/QueryExpression/QueryExpression';\r\nimport { QuerySorting } from 'QueryBuilder/QuerySorting/QuerySorting';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { EntityRelationshipsMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { QueryResultGrid } from 'QueryBuilder/QueryResultGrid/QueryResultGrid';\r\nimport { QueryBootstrap } from 'QueryBuilder/QueryBootstrap/QueryBootstrap';\r\nimport { LABELS, NOTIFICATIONS } from \"Core/Components/Translation/Locales\";\r\nimport { CrossTableConfig } from 'QueryBuilder/CrossTableConfig/CrossTableConfig';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { EVENTS as BOOTSTRAP_EVENTS } from 'QueryBuilder/QueryBootstrap/Events';\r\nimport { Serialize } from 'libs/cerialize';\r\nimport { IQueryExpressionParams } from 'QueryBuilder/QueryExpression/IQueryExpressionParams';\r\nimport { IObjectIndex } from 'QueryBuilder/IObjectIndex';\r\nimport { QueryScreen } from './QueryScreen/QueryScreen';\r\nimport {TranslationManager} from \"Core/Components/Translation/TranslationManager\";\r\nimport { TranslationModel } from 'Core/ScreenManager/Models/TranslationModel';\r\n\r\nimport { QuerySortModel } from \"../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QuerySortModel\";\r\nimport { SortOrder } from \"./Enums\";\r\nimport { QueryEntityJoinModel } from \"../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel\";\r\nimport { FIELD_TYPES } from \"../Core/Constant\";\r\nimport { SortItem } from \"./QuerySorting/SortItem/SortItem\";\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport {TYPES_COMPATIBILITY} from \"QueryBuilder/QueryCondition/ConditionItem/ConditionItemConfig\";\r\nimport { TemplateScreen } from './TemplateScreen/TemplateScreen';\r\nimport {TranslationFieldEditor} from 'Core/Components/TranslationFieldEditor/TranslationFieldEditor';\r\nimport {ITranslationValue} from 'Core/Controls/BaseControl/BaseControl';\r\nimport { GlobalManager, GLOBALS } from \"Core/GlobalManager/GlobalManager\";\r\n\r\nimport QueryBuilderTemplate from 'QueryBuilder/Templates/QueryBuilder.html';\r\nimport { IControlAttachedField } from 'Core/Screens/BaseScreen';\r\nko.templates['QueryBuilder/Templates/QueryBuilder'] = QueryBuilderTemplate;\r\n\r\nconst DELETE_STATUS = 'Delete';\r\n\r\nexport class QueryBuilder extends Event {\r\n\tprivate _container: HTMLElement;\r\n\tprivate _expression: KnockoutObservable<QueryExpression>;\r\n\tprivate _id: string;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _jsPlumb: KnockoutObservable<jsPlumbInstance>;\r\n\tprivate _queryType: ViewModes;\r\n\tprivate _subjectEntityId: KnockoutObservable<number>;\r\n\tprivate _gridSubjectEntityId: KnockoutObservable<number>;\r\n\tprivate _queryName: KnockoutObservable<string>;\r\n\tprivate _hasData: KnockoutObservable<boolean>;\r\n\tprivate _hasPendingChanges: KnockoutObservable<boolean>;\r\n\tprivate _isEmbedded: KnockoutObservable<boolean>;\r\n\tprivate _queryResultGrid: KnockoutObservable<QueryResultGrid>;\r\n\tprivate _subjectRecordId: number;\r\n\tprivate _expressionModel: QueryExpressionModel;\r\n\tprivate _entitiesRelationships: Array<EntityRelationshipsMetadataModel>;\r\n\tprivate _defaultQueryName = 'New Query';\r\n\tprivate _recordsPerPage = 0;\r\n\tprivate _loadInProgres: KnockoutObservable<boolean>;\r\n\tprivate _queryBootstrap: KnockoutObservable<QueryBootstrap>;\r\n\tprivate _isDesktop: KnockoutObservable<boolean>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _saveToQueries: boolean;\r\n\tprivate _objectIndexes: Array<IObjectIndex>;\r\n\tprivate _filterByOwners: boolean;\r\n\tprivate _isNew: boolean;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\tprivate _showInMenu: boolean;\r\n\tprivate _showInPortlet: boolean;\r\n\tprivate _translationFieldEditor: KnockoutObservable<TranslationFieldEditor>;\r\n\tprivate _basicMode: boolean;\r\n\tprivate _isMobile: MobileChecker;\r\n\r\n\tQueryId: number;\r\n\tShowQueryName: boolean;\r\n\tSingleColumn: boolean;\r\n\tSingleColumnType: string;\r\n\r\n\tTableViewConfig: KnockoutObservable<TableViewConfig>;\r\n\tConditionBuilder: KnockoutObservable<ConditionBuilder>;\r\n\tQuerySorting: KnockoutObservable<QuerySorting>;\r\n\tCrossTableConfig: KnockoutObservable<CrossTableConfig>;\r\n\tQueryScreen: KnockoutObservable<QueryScreen>;\r\n\tTemplateScreenTab: KnockoutObservable<TemplateScreen>;\r\n\r\n\tCrossTableTabId: string;\r\n\tFilterTabId: string;\r\n\tTableViewConfigTabId: string;\r\n\tQueryResultTabId: string;\r\n\tQueryScreenTabId: string;\r\n\tTemplateScreenTabId: string;\r\n\r\n\tconstructor(\r\n\t\tisEmbedded: boolean = true,\r\n\t\tisDesktop: boolean = false,\r\n\t\tsaveToQueries: boolean = false,\r\n\t\tcanvasQuery: boolean = false,\r\n\t\tscreenFields: Array<IControlAttachedField> = []\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._id = Guid.NewGuid();\r\n\t\tthis._expression = ko.observable(null);\r\n\t\tthis._jsPlumb = ko.observable(jsPlumb.getInstance());\r\n\t\tthis._hasData = ko.observable(false);\r\n\t\tthis._hasPendingChanges = ko.observable(false);\r\n\t\tthis._queryName = ko.observable(this._defaultQueryName);\r\n\t\tthis._isEmbedded = ko.observable(isEmbedded);\r\n\t\tthis._queryResultGrid = ko.observable(null);\r\n\t\tthis._isDesktop = ko.observable(isDesktop);\r\n\t\tthis._saveToQueries = saveToQueries;\r\n\t\tthis._subjectRecordId = 0;\r\n\t\tthis._entitiesRelationships = [];\r\n\t\tthis._loadInProgres = ko.observable(false);\r\n\t\tthis._queryBootstrap = ko.observable(null);\r\n\t\tthis._subjectEntityId = ko.observable(null);\r\n\t\tthis.ConditionBuilder = ko.observable(null);\r\n\t\tthis.QuerySorting = ko.observable(new QuerySorting());\r\n\t\tthis.TableViewConfig = ko.observable(new TableViewConfig());\r\n\t\tthis.CrossTableConfig = ko.observable(new CrossTableConfig());\r\n\t\tthis.QueryScreen = ko.observable(null);\r\n\t\tthis.TemplateScreenTab = ko.observable(null);\r\n\t\tthis.CrossTableTabId = Guid.NewGuid();\r\n\t\tthis.FilterTabId = Guid.NewGuid();\r\n\t\tthis.TableViewConfigTabId = Guid.NewGuid();\r\n\t\tthis.QueryResultTabId = Guid.NewGuid();\r\n\t\tthis.QueryScreenTabId = Guid.NewGuid();\r\n\t\tthis.TemplateScreenTabId = Guid.NewGuid();\r\n\t\tthis.ShowQueryName = !canvasQuery;\r\n\t\tthis.SingleColumn = false;\r\n\t\tthis._objectIndexes = [];\r\n\t\tthis._filterByOwners = false;\r\n\t\tthis._isNew = false;\r\n\t\tthis._screenFields = screenFields;\r\n\t\tthis._translationFieldEditor = ko.observable(null);\r\n\t\tthis._basicMode = GlobalManager.Instance.GetGlobal(GLOBALS.BASIC_MODE) === '1';\r\n\t\tthis._recordsPerPage = Number(GlobalManager.Instance.GetGlobal(GLOBALS.OTHER_GRID_PAGE_LINES));\r\n\t\tthis._isMobile = MobileChecker.IsMobile();\r\n\r\n\t\tthis._queryName.subscribe(newValue => {\r\n\t\t\tif(this._translationFieldEditor()){\r\n\t\t\t\tthis._translationFieldEditor().SetValue(newValue);\r\n\t\t\t}\t\t\t\r\n\t\t});\r\n\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tChangeTranslation(translation: ITranslationValue) {\r\n this._queryName(translation.Value);\r\n }\r\n\r\n\tprivate Init(){\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.CLOSE);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.DATA_SAVED);\r\n\t\tthis.AddEvent(QUERY_BUILDER_EVENTS.NO_ACCESS);\r\n\t\tthis.RemoveAllConnections();\r\n\t}\r\n\r\n\tset FilterByOwners(value: boolean) {\r\n\t\tthis._filterByOwners = value;\r\n\t\tif(this._queryResultGrid()){\r\n\t\t\tthis._queryResultGrid().FilterByOwners = this._filterByOwners;\r\n\t\t}\r\n\t}\r\n\r\n\tset SubjectRecordId(recordId: number) {\r\n\t\tthis._subjectRecordId = recordId;\r\n\t\tif(this._queryResultGrid()){\r\n\t\t\tthis._queryResultGrid().RecordId = this._subjectRecordId;\r\n\t\t}\r\n\t}\r\n\r\n\tset SubjectEntityId(entityId: number) {\r\n\t\tthis._subjectEntityId(entityId);\r\n\t}\r\n\r\n\tRender(target: string) {\r\n\t\tthis._container = document.getElementById(target);\r\n\t\tko.cleanNode(document.getElementById(target));\r\n\t\tko.applyBindings(this, document.getElementById(target));\r\n\t}\r\n\r\n\tGetTemplateHtml() {\r\n\t\treturn QueryBuilderTemplate;\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'QueryBuilder/Templates/QueryBuilder';\r\n\t}\r\n\r\n\tEditQuery(queryId: number, recordsPerPage: number) {\r\n\t\tthis._recordsPerPage = recordsPerPage;\r\n\t\tBlockUI.Block({Target: this._el});\r\n\t\tGetQueryStore.Get({Id: queryId})\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock(this._el);\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis.InitQueryName(data.Name, data.NameTranslations);\r\n\t\t\t\tthis.QueryId = queryId;\r\n\t\t\t\tthis._entitiesRelationships = data.EntitiesRelationships;\r\n\t\t\t\tthis.InitQuery(data.Query, false);\r\n\t\t\t\tthis._hasData(true);\r\n\t\t\t}).fail(err=>{\r\n\t\t\t\tnew Notifier().Failed(err.message);\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.CLOSE);\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.NO_ACCESS, { Message: err.message });\r\n\t\t\t});;\r\n\t}\r\n\r\n\tToggleTranslations() {\r\n this._translationFieldEditor().Toggle();\r\n }\r\n\r\n\tGetTranslation(name: string, translations: Array<TranslationModel>): ITranslationValue {\r\n return TranslationManager.Instance.GetTranslation(name, translations);\r\n }\r\n\r\n\tprivate SaveQuery() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tif (this.QueryId > 0) {\r\n\t\t\t\tthis.UpdateQuery(false);\r\n\t\t\t} else {\r\n\t\t\t\tthis.CreateQuery(false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate SaveAndCloseQuery() {\r\n\t\tif (this.IsValid()) {\r\n\t\t\tif (this.QueryId > 0) {\r\n\t\t\t\tthis.UpdateQuery(true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.CreateQuery(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetModel(): QueryExpressionModel {\r\n\t\tif (this._expression()) {\r\n\t\t\tthis.TableViewConfig().Update();\r\n\t\t\treturn this._expression().Model;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tGetSubjectEntityId(): number {\r\n\t\treturn this._subjectEntityId();\r\n\t}\r\n\r\n\tGetGridSubjectEntityId(): number {\r\n\t\tlet joins = this._expressionModel.EntityJoins\r\n\t\t\t.concat(this._expressionModel.ReferenceLookupEntityJoins)\r\n\t\t\t.concat(this._expressionModel.ReferenceEntityJoins)\r\n\t\t\t.concat(this._expressionModel.SubEntityJoins)\r\n\t\t\t.concat(this._expressionModel.LookupEntityJoins);\r\n\r\n\t\tlet gridSubjectEntity: QueryEntityJoinModel;\r\n\r\n\t\tif (this.QueryTypeName === ViewModes.TableView) {\r\n\t\t\tgridSubjectEntity = _.find(joins, (item)=>item.Entity.IsGridSubject) || _.first(this._expressionModel.EntityJoins);;\r\n\t\t}\r\n\t\t\r\n\t\tif (gridSubjectEntity && this.QueryTypeName === ViewModes.TableView) {\r\n\t\t\treturn gridSubjectEntity.Entity.Metadata.Id;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tGetShowInMenu() {\r\n\t\treturn this.QueryScreen() && this.QueryScreen().ShowInMenu;\r\n\t}\r\n\r\n\tGetShowInPortlet() {\r\n\t\treturn this.TemplateScreenTab() && this.TemplateScreenTab().ShowInPotlet;\r\n\t}\r\n\r\n\tprivate UpdateQuery(close: boolean) {\r\n\t\tlet queryName = this._translationFieldEditor() ? this._translationFieldEditor().GetDefaultTranslation().Value : this._queryName();\r\n\r\n\t\tvar updateQueryRequestModel: IUpdateQueryRequestModel = {\r\n\t\t\tId: this.QueryId,\r\n\t\t\tName: queryName,\r\n\t\t\tQueryText: JSON.stringify(Serialize(this._expression().Model)),\r\n\t\t\tNameTranslations: this._translationFieldEditor() ? this._translationFieldEditor().GetTranslations(false) : []\r\n\t\t};\r\n\r\n\t\tBlockUI.Block();\r\n\t\tUpdateQueryStore.Update(updateQueryRequestModel)\r\n\t\t.always(()=>{\r\n\t\t\tBlockUI.Unblock();\r\n\t\t})\r\n\t\t.then((data) => {\r\n\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.DATA_SAVED, {\r\n\t\t\t\tRecordId: this.QueryId,\r\n\t\t\t\tClose: close,\r\n\t\t\t\tQueryText: updateQueryRequestModel.QueryText\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate CreateQuery(close: boolean) {\r\n\t\tvar gridSubjectEntity;\r\n\t\tif (this.QueryTypeName === ViewModes.TableView) {\r\n\t\t\tgridSubjectEntity = _.first(this._expressionModel.EntityJoins);\r\n\t\t} else {\r\n\t\t\tgridSubjectEntity = this._expressionModel;\r\n\t\t}\r\n\t\tif (gridSubjectEntity) {\r\n\t\t\tvar newQueryRequestModel: ICreateNewQueryRequestModel = {\r\n\t\t\t\tTypeName: this.QueryTypeName,\r\n\t\t\t\tSubjectEntityId: this._expressionModel.Entity.Metadata.Id,\r\n\t\t\t\tGridSubjectEntityId: this.QueryTypeName === ViewModes.TableView ? gridSubjectEntity.Entity.Metadata.Id : 0,\r\n\t\t\t\tName: this._queryName(),\r\n\t\t\t\tQueryText: JSON.stringify(Serialize(this._expression().Model))\r\n\t\t\t};\r\n\r\n\t\t\tif (this._saveToQueries) {\r\n\t\t\t\tNewQueryStore.Create(newQueryRequestModel).then((data) => {\r\n\t\t\t\t\tthis.QueryId = data.Id;\r\n\t\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.DATA_SAVED, {\r\n\t\t\t\t\t\tRecordId: data.Id,\r\n\t\t\t\t\t\tClose: close,\r\n\t\t\t\t\t\tQueryText: newQueryRequestModel.QueryText\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.Trigger(QUERY_BUILDER_EVENTS.DATA_SAVED, {\r\n\t\t\t\t\tClose: close,\r\n\t\t\t\t\tQueryText: newQueryRequestModel.QueryText\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tAfterRender(el) {\r\n\t\tthis._el = el[0];\r\n\t\tvar exp = this._expression();\r\n\t\tthis._expression(null);\r\n\t\tthis._jsPlumb(jsPlumb.getInstance());\r\n\t\tthis._expression(exp);\r\n\t}\r\n\r\n\tset QueryTypeName(value: ViewModes) {\r\n\t\tthis._queryType = value;\r\n\t}\r\n\r\n\tget QueryTypeName(): ViewModes {\r\n\t\treturn this._queryType;\r\n\t}\r\n\r\n\tget Expression(): KnockoutObservable<QueryExpression> {\r\n\t\treturn this._expression;\r\n\t}\r\n\r\n\tInitQuery(expression: QueryExpressionModel, isNew: boolean = true) {\r\n\t\tthis._isNew = isNew;\r\n\t\tthis._queryBootstrap(null);\r\n\t\tthis._expressionModel = expression;\r\n\r\n\t\tthis._queryResultGrid(new QueryResultGrid(\r\n\t\t\tthis._expressionModel,\r\n\t\t\tthis._subjectRecordId,\r\n\t\t\tthis._recordsPerPage,\r\n\t\t\tthis._queryType,\r\n\t\t\tthis._isDesktop(),\r\n\t\t\tthis._filterByOwners,\r\n\t\t\tthis.GetSubjectEntityId(),\r\n\t\t\tthis.GetGridSubjectEntityId()\r\n\t\t));\r\n\r\n\t\tthis._expressionModel.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE;\r\n\t\tthis._expressionModel.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE;\r\n\r\n\t\tif (isNew) {\r\n\r\n\t\t\t_.each(this._expressionModel.ReferenceLookupEntityJoins,\r\n\t\t\t\t(entityJoin, index) => {\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE * 15;\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * (index + 1) * 4;\r\n\t\t\t\t});\r\n\r\n\t\t\t_.each(this._expressionModel.EntityJoins,\r\n\t\t\t\t(entityJoin, index) => {\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE * 15;\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * (index + 1) * 4;\r\n\t\t\t\t});\r\n\r\n\t\t\t_.each(this._expressionModel.SubEntityJoins,\r\n\t\t\t\t(entityJoin, index) => {\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE;\r\n\t\t\t\t\tentityJoin.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE * (index + 4) * 2;\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet entities = Util.GetAllQueryEntities(this._expressionModel);\r\n\t\tlet ids = [];\r\n\t\t_.each(entities, entity => {\r\n\t\t\tids.push(entity.Metadata.Id)\r\n\t\t});\r\n\t\tids = _.uniq(ids);\r\n\r\n\t\tvar isFullScreen = $(this._el).hasClass('portlet-fullscreen');\r\n\t\tif(isFullScreen) {\r\n\t\t\tBlockUI.Block({Target: $(this._el).find('.portlet-fullscreen')[0]});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._loadInProgres(true);\r\n\t\t}\r\n\t\tEntityMetadataStore.GetEntitiesMetadata({EntityIds: ids})\r\n\t\t\t.always(() => {\r\n\t\t\t\tif(isFullScreen) {\r\n\t\t\t\t\tBlockUI.Unblock($(this._el).find('.portlet-fullscreen')[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._loadInProgres(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._entitiesRelationships = data;\r\n\t\t\t\tthis.InitQueryExpression();\r\n\t\t\t});\r\n\r\n\t\tif(this._queryType === ViewModes.Query){\r\n\t\t\tthis.QueryScreen(new QueryScreen());\r\n\t\t}\r\n\r\n\t\tif(this._queryType == ViewModes.TableView || this._queryType == ViewModes.ListView){\r\n\t\t\tthis.TemplateScreenTab(new TemplateScreen(this.QueryTypeName));\r\n\t\t}\r\n\t}\r\n\r\n\tInitTemplateQuery(recordsPerPage: number, name: string, translations: Array<TranslationModel>) {\t\t\r\n\t\tthis._recordsPerPage = recordsPerPage;\r\n\t\tthis._queryType = ViewModes.Template;\r\n\t\tNewQueryStore.New(name).then((data) => {\r\n\t\t\tif(data.NameTranslations.length == 0){\r\n\t\t\t\ttranslations = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.InitQueryName(name, translations);\r\n\t\t\tthis._queryBootstrap(new QueryBootstrap(data.Entities));\r\n\t\t\tthis._queryBootstrap().On(BOOTSTRAP_EVENTS.ENTITY_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tthis.InitQueryByEntityId(eventArgs.data.EntityId);\r\n\t\t\t\t\tthis._queryBootstrap(null);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate InitQueryName(name: string, translations: Array<TranslationModel>){\r\n\t\tif(translations.length >= 0){\r\n\t\t\tlet translation = this.GetTranslation(name, translations);\r\n\t\t\tlet translationEditor = new TranslationFieldEditor();\r\n\t\t\tthis._translationFieldEditor(translationEditor); \r\n\t\t\ttranslationEditor.On('TranslationSelected', this, eventArgs => this.ChangeTranslation(eventArgs.data));\r\n\t\t\ttranslationEditor.LoadTranslationItems();\r\n\t\t\ttranslationEditor.SetTranslations(translations, name);\r\n\t\t\ttranslationEditor.SetActiveTranslation(translation.Language.Id); \r\n\t\t\tlet currentValue = (translation.TranslatedValue || translation.Value) ? translation.TranslatedValue || translation.Value : this._defaultQueryName;\r\n\t\t\tthis._queryName(currentValue);\r\n\t\t}else{\r\n\t\t\tthis._queryName(name);\r\n\t\t}\r\n\t}\r\n\r\n\tset QueryType(type: ViewModes) {\r\n\t\tthis._queryType = type; \r\n\t}\r\n\r\n\tInitQueryByEntityId(entityId: number) {\r\n\t\tvar isFullScreen = $(this._el).hasClass('portlet-fullscreen');\r\n\t\tif(isFullScreen) {\r\n\t\t\tBlockUI.Block({Target: $(this._el).find('.portlet-fullscreen')[0]});\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._loadInProgres(true);\r\n\t\t}\r\n\t\tEntityMetadataStore.GetEntityMetadata({EntityId: entityId})\r\n\t\t\t.always(() => {\r\n\t\t\t\tif(isFullScreen) {\r\n\t\t\t\t\tBlockUI.Unblock($(this._el).find('.portlet-fullscreen')[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._loadInProgres(false);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\tthis._entitiesRelationships = [data];\r\n\t\t\t\tthis._expressionModel = new QueryExpressionModel();\r\n\t\t\t\tthis._expressionModel.Entity = new QueryEntityModel();\r\n\t\t\t\tthis._expressionModel.Entity.Metadata = data.EntityMetadata;\r\n\t\t\t\tthis._expressionModel.Entity.CanvasPosition.Top = QUERY_BUILDER.CELL_SIZE;\r\n\t\t\t\tthis._expressionModel.Entity.CanvasPosition.Left = QUERY_BUILDER.CELL_SIZE;\r\n\t\t\t\tthis.InitQueryExpression();\r\n\t\t\t\tthis._queryResultGrid(new QueryResultGrid(\r\n\t\t\t\t\tthis._expressionModel,\r\n\t\t\t\t\tthis._subjectRecordId,\r\n\t\t\t\t\tthis._recordsPerPage,\r\n\t\t\t\t\tthis._queryType,\r\n\t\t\t\t\tthis._isDesktop(),\r\n\t\t\t\t\tthis._filterByOwners,\r\n\t\t\t\t\tthis.GetSubjectEntityId(),\r\n\t\t\t\t\tthis.GetGridSubjectEntityId()\r\n\t\t\t\t));\r\n\t\t\t});\r\n\r\n\t\tthis._subjectEntityId(entityId);\r\n\t}\r\n\r\n\tNewFreeQuery() {\r\n\r\n\t\tif (!this._queryType && this._queryType != 0) {\r\n\t\t\tthis._queryType = ViewModes.Query;\r\n\t\t}\r\n\r\n\t\tif(this._queryType === ViewModes.Query){\r\n\t\t\tthis.QueryScreen(new QueryScreen());\r\n\t\t}\r\n\r\n\t\tif(this._queryType === ViewModes.TableView || this._queryType === ViewModes.ListView){\r\n\t\t\tthis.TemplateScreenTab(new TemplateScreen(this.QueryTypeName));\r\n\t\t}\r\n\r\n\t\tNewQueryStore.New('').then((data) => {\r\n\t\t\tthis._queryBootstrap(new QueryBootstrap(data.Entities));\r\n\t\t\tthis._queryBootstrap().On(BOOTSTRAP_EVENTS.ENTITY_SELECTED,\r\n\t\t\t\tthis,\r\n\t\t\t\t(eventArgs) => {\r\n\t\t\t\t\tthis.InitQueryByEntityId(eventArgs.data.EntityId);\r\n\t\t\t\t\tthis._queryBootstrap(null);\r\n\t\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tEditFreeQuery(queryModel: QueryExpressionModel, showInMenu: boolean = false, showInPortlet: boolean = false) {\r\n\t\tif (queryModel) {\r\n\t\t\tif (!this._queryType && this._queryType != 0) {\r\n\t\t\t\tthis._queryType = ViewModes.Query;\r\n\t\t\t}\r\n\t\t\tthis._subjectEntityId(queryModel.Entity.Metadata.Id);\r\n\t\t\tthis._showInMenu = showInMenu;\r\n\t\t\tthis._showInPortlet = showInPortlet;\r\n\r\n\t\t\tthis.InitQuery(queryModel, false);\r\n\t\t}\r\n\t}\r\n\r\n\tInitQueryExpression() {\r\n\t\tlet params: IQueryExpressionParams = {\r\n\t\t\tModel: this._expressionModel,\r\n\t\t\tJsPlumb: this._jsPlumb,\r\n\t\t\tEntitiesRelationships: this._entitiesRelationships,\r\n\t\t\tViewMode: this._queryType,\r\n\t\t\tContainer: this._el,\r\n\t\t\tEnabledColumnTypes: this.SingleColumnType ? TYPES_COMPATIBILITY[this.SingleColumnType].Types : [],\r\n\t\t\tObjectIndexes: this._objectIndexes\r\n\t\t};\r\n\r\n\t\tthis._expression(new QueryExpression(params));\r\n\r\n\t\tif(this._queryType === ViewModes.Template){\r\n\t\t\tif(this._expressionModel.Entity.Metadata.Lifestatus === DELETE_STATUS){\r\n\t\t\t\tthis._expression(null);\r\n\r\n\t\t\t\tif (this._jsPlumb()) {\r\n\t\t\t\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\t\t\t\tthis._jsPlumb().deleteConnection(connection);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.NewFreeQuery();\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif(this._queryType === ViewModes.TableView && this._isNew){\r\n\t\t\tif(this._expressionModel.EntityJoins.length === 1){\r\n\t\t\t\tlet sortColumn = _.find(this._expressionModel.EntityJoins[0].LinkEntity.Columns, (item) => { return item.Metadata.Type === FIELD_TYPES.Sort });\r\n\t\t\t\tif(sortColumn != null){\r\n\t\t\t\t\tlet sort = new QuerySortModel();\r\n\t\t\t\t\tsort.Column = sortColumn;\r\n\t\t\t\t\tsort.Column.QueryEntityGuid = this._expressionModel.EntityJoins[0].LinkEntity.Guid;\r\n\t\t\t\t\tsort.SortOrder = SortOrder.Ascending;\r\n\t\t\t\t\tthis._expressionModel.Sorts.push(sort);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._expression().On(QUERY_BUILDER_EVENTS.COLUMN_SELECTED, this, (eventArgs)=>{\r\n\t\t\tlet columnId = eventArgs.data.Id;\r\n\t\t\tlet join = eventArgs.data.Join as QueryEntityJoinModel;\r\n\t\t\tlet column = _.find(join.LinkEntity.Columns, (item)=>{ return item.Metadata.Type === FIELD_TYPES.Sort && item.Metadata.Id === columnId});\r\n\t\t\tif(column){\r\n\t\t\t\tlet columnInSorting = _.find(this.QuerySorting().Items(), (item)=> { return item.Model.Column.Metadata.Id === columnId});\r\n\t\t\t\tif(!columnInSorting){\r\n\t\t\t\t\tlet sort = new QuerySortModel();\r\n\t\t\t\t\tsort.Column = column;\r\n\t\t\t\t\tsort.Column.QueryEntityGuid = join.LinkEntity.Guid;\r\n\t\t\t\t\tsort.SortOrder = SortOrder.Ascending;\r\n\t\t\t\t\tlet sortItem = new SortItem(sort, join.LinkEntity);\r\n\t\t\t\t\tthis.QuerySorting().Items.push(sortItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._expression().On(EVENTS.UPDATE_SORT,this, ()=>this.QuerySorting().Update());\r\n\r\n\t\tthis.TableViewConfig().ExpressionModel = this._expressionModel;\r\n\t\tthis.CrossTableConfig().ExpressionModel = this._expressionModel;\r\n\t\tthis.QuerySorting().ExpressionModel = this._expressionModel;\r\n\t\tthis.ConditionBuilder(new ConditionBuilder(this._queryType, this._screenFields));\r\n\t\tthis.ConditionBuilder().InitByQueryExpression(this._expression().Model);\r\n\t\tif(this.QueryScreen()){\r\n\t\t\tthis.QueryScreen().ExpressionModel = this._expressionModel;\r\n\t\t\tthis.QueryScreen().SubjectEntityId = this.GetGridSubjectEntityId() || this.GetSubjectEntityId(); \r\n\t\t\tthis.QueryScreen().ShowInMenu = this._showInMenu;\t\t\t\r\n\t\t}\r\n\r\n\t\tif(this.TemplateScreenTab()){\r\n\t\t\tthis.TemplateScreenTab().ExpressionModel = this._expressionModel;\r\n\t\t\tthis.TemplateScreenTab().SubjectEntityId = this.GetGridSubjectEntityId() || this.GetSubjectEntityId();\r\n\t\t\tthis.TemplateScreenTab().ShowInPotlet = this._showInPortlet;\r\n\t\t}\r\n\t\tthis._hasData(true);\r\n\t}\r\n\r\n\tBuilderTab() {\r\n\t\tthis.ShowConnections(true);\r\n\t}\r\n\r\n\tFilteringPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.ConditionBuilder().RefreshEntityList();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tCrossTablePage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.CrossTableConfig().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tColumnOrderPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.TableViewConfig().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tQueryResultPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.RefreshQueryData();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tRefreshQueryData() {\r\n\t\tif (this._queryResultGrid()) {\r\n\t\t\tthis._queryResultGrid().Refresh();\r\n\t\t}\r\n\t}\r\n\r\n\tShowConnections(isVisible: boolean) {\r\n\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\tconnection.setVisible(isVisible);\r\n\t\t});\r\n\t}\r\n\r\n\tRemoveAllConnections() {\r\n\t\t_.each(this._jsPlumb().getConnections(), (connection) => {\r\n\t\t\tthis._jsPlumb.deleteConnection(connection);\r\n\t\t});\r\n\t}\r\n\r\n\tget Id(): string {\r\n\t\treturn this._id;\r\n\t}\r\n\r\n\tScroll() {\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\t}\r\n\r\n\tCancel() {\r\n\t\tthis._jsPlumb().repaintEverything();\r\n\t\tthis.Trigger(QUERY_BUILDER_EVENTS.CLOSE);\r\n\t}\r\n\r\n\tDispose() {\r\n\t\tthis.RemoveAllConnections();\r\n\t}\r\n\r\n\tIsValid(): boolean {\r\n\t\tvar columns = [];\r\n\r\n\t\tvar entities = Util.GetAllQueryEntities(this._expression().Model);\r\n\r\n\t\t_.each(entities, entity => { columns = columns.concat(entity.Columns); });\r\n\r\n\t\tif (columns.length === 0) {\r\n\t\t\tvar notifier = new Notifier();\r\n\t\t\tnotifier.Failed(NOTIFICATIONS.PLEASE_SELECT_ANY_FIELD);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (columns.length > 1 && this.SingleColumn) {\r\n\t\t\tvar notifier = new Notifier();\r\n\t\t\tnotifier.Failed('Please select only one column');\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tQueryScreenPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.QueryScreen().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tTemplateScreenPage(context, evt) {\r\n\t\tif (this._hasData()) {\r\n\t\t\tthis.ShowConnections(false);\r\n\t\t\tthis.TemplateScreenTab().Update();\r\n\t\t} else {\r\n\t\t\tevt.stopImmediatePropagation();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\nimport clone from 'clone'\r\n\r\nimport { ConditionGroup } from \"QueryBuilder/QueryCondition/ConditionGroup/ConditionGroup\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { EntityMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/EntityMetadataModel';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { IControlAttachedField, IScreenVariable } from 'Core/Screens/BaseScreen';\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport ConditionBuilderTemplate from 'QueryBuilder/QueryCondition/ConditionBuilder/Templates/ConditionBuilder.html';\r\nimport {ConditionValueTypes} from \"../../Enums\";\r\nimport { ConditionItem } from '../ConditionItem/ConditionItem';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\n\r\nexport class ConditionBuilder extends Event {\r\n\tConditionGroup: KnockoutObservable<ConditionGroup>;\r\n\tprivate _entities: KnockoutObservableArray<QueryEntityModel>;\r\n\tprivate _id: string;\r\n\tprivate _isForGrid: boolean;\r\n\tprivate _model: QueryExpressionModel;\r\n\tprivate _queryType: ViewModes;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\tprivate _top: KnockoutObservable<number>;\r\n\tprivate _labels: LABELS = LABELS;\r\n\tprivate _showRecordsLimitInput: boolean;\r\n\r\n\tconstructor(queryType: ViewModes, screenFields: Array<IControlAttachedField>, showRecordsLimitInput: boolean = true) {\r\n\t\tsuper();\r\n\t\tthis._showRecordsLimitInput = showRecordsLimitInput;\r\n\t\tthis._queryType = queryType;\r\n\t\tthis._id = Guid.NewGuid();\r\n\t\tthis._entities = ko.observableArray([]);\r\n\t\tthis._isForGrid = false;\r\n\t\tthis.ConditionGroup = ko.observable(null);\r\n\t\tthis._screenFields = screenFields;\r\n\t\tthis._top = ko.observable(null);\r\n\t\tthis._top.subscribe(()=>{\r\n\t\t\tthis._model.Top = this._top();\r\n\t\t});\r\n\t\tthis.AddEvent('CHANGED');\r\n\t}\r\n\r\n\tInitByQueryExpression(model: QueryExpressionModel) {\r\n\t\tthis._isForGrid = true;\r\n\t\tthis._model = model;\r\n\t\tthis.RefreshEntityList();\r\n\r\n\t\tif (!this._model.Condition) {\r\n\t\t\tthis._model.Condition = new QueryConditionGroupModel();\r\n\t\t}\r\n\r\n\t\tthis._top(model.Top);\r\n\t\tthis.ConditionGroup(new ConditionGroup(true, this._model.Condition, this._queryType, this._entities, this._screenFields));\r\n\t}\r\n\r\n\tInitByEntity(entity: EntityMetadataModel, condition: QueryConditionGroupModel, screenFields: Array<IControlAttachedField>) {\r\n\t\tvar queryEntity = new QueryEntityModel();\r\n\t\tqueryEntity.Metadata = entity;\r\n\t\tthis._entities.push(queryEntity);\r\n\r\n\t\tthis._model = new QueryExpressionModel();\r\n\t\tif (!this._model.Condition) {\r\n\t\t\tthis._model.Condition = condition ? condition : new QueryConditionGroupModel();\r\n\t\t\tthis._model.Condition.EntityId = entity.Id;\r\n\t\t}\r\n\r\n\t\t_.each(this.GetAllConditionItems(this._model.Condition), (item) => { item.Column.QueryEntityGuid = queryEntity.Guid; });\r\n\r\n\t\tvar conditionGroup = new ConditionGroup(true, this._model.Condition, this._queryType, this._entities, screenFields, true);\r\n\t\tconditionGroup.On('CHANGED',\r\n\t\t\tthis,\r\n\t\t\t(eventArgs) => {\r\n\t\t\t\tthis.Trigger('CHANGED');\r\n\t\t\t});\r\n\r\n\t\tthis.ConditionGroup(conditionGroup);\r\n\t}\r\n\r\n\tInitByEntities(entities: Array<EntityMetadataModel>, condition: QueryConditionGroupModel, screenFields: Array<IControlAttachedField>) {\r\n\r\n\t\t_.each(entities, (entity) => {\r\n\t\t\tlet queryEntity = new QueryEntityModel();\r\n\t\t\tqueryEntity.Metadata = entity;\r\n\t\t\tthis._entities.push(queryEntity);\r\n\t\t});\r\n\r\n\t\tthis._model = new QueryExpressionModel();\r\n\t\tif (!this._model.Condition) {\r\n\t\t\tthis._model.Condition = condition ? condition : new QueryConditionGroupModel();\r\n\t\t}\r\n\r\n\t\t_.each(this.GetAllConditionItems(this._model.Condition), (item) => {\r\n\t\t\t_.each(this._entities(), (entity: QueryEntityModel) => {\r\n\t\t\t\t_.each(entity.Metadata.Fields, (field) => {\r\n\t\t\t\t\tif(field.Id === item.Column.Metadata.Id){\r\n\t\t\t\t\t\titem.Column.QueryEntityGuid = entity.Guid;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tlet conditionGroup = new ConditionGroup(true, this._model.Condition, this._queryType, this._entities, screenFields, true);\r\n\t\tconditionGroup.On('CHANGED',\r\n\t\t\tthis,\r\n\t\t\t() => {\r\n\t\t\t\tthis.Trigger('CHANGED');\r\n\t\t\t});\r\n\r\n\t\tthis.ConditionGroup(conditionGroup);\r\n\t}\r\n\r\n\tGetAllConditionItems(model: QueryConditionGroupModel): Array<QueryConditionItemModel> {\r\n\t\tvar result = [];\r\n\t\t_.each(model.Items, (item) => {\r\n\t\t\tresult.push(item);\r\n\t\t});\r\n\r\n\t\t_.each(model.ConditionGroups, (group) => {\r\n\t\t\tresult = result.concat(this.GetAllConditionItems(group));\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ConditionBuilderTemplate;\r\n\t}\r\n\r\n\tRefreshEntityList() {\r\n\t\tthis._entities(Util.GetAllQueryEntities(this._model));\r\n\t}\r\n\r\n\tAfterRender() { }\r\n\r\n\tget ConditionModel(): QueryConditionGroupModel {\r\n\t\treturn this._model.Condition;\r\n\t}\r\n\r\n\tpublic static GetScreenVariableCondition(screenVariable: IScreenVariable, condition: QueryConditionGroupModel): Array<QueryConditionItemModel> {\r\n\t\tlet screenVariableConditions = [];\r\n\t\tif (condition) {\r\n\t\t\t_.each(condition.Items,\r\n\t\t\t\t(item) => {\r\n\t\t\t\t\tif(item.ValueType === ConditionValueTypes.QueryBuilder){\r\n\t\t\t\t\t\tlet query = this.DeserializeQueryExpressionModel(item.Value);\r\n\t\t\t\t\t\tif(query){\r\n\t\t\t\t\t\t\tscreenVariableConditions = screenVariableConditions.concat(this.GetScreenVariableCondition(screenVariable, query.Condition));\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else if (screenVariable.FullName === item.Value) {\r\n\t\t\t\t\t\tscreenVariableConditions.push(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t_.each(condition.ConditionGroups, conditionGroup => {\r\n\t\t\t\tscreenVariableConditions = screenVariableConditions.concat(this.GetScreenVariableCondition(screenVariable, conditionGroup));\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn screenVariableConditions;\r\n\t}\r\n\r\n\tprivate static DeserializeQueryExpressionModel(query: string): QueryExpressionModel{\r\n\t\ttry{\r\n\t\t\tlet jsonQuery = JSON.parse(query);\r\n\t\t\treturn Deserialize(jsonQuery, QueryExpressionModel);\r\n\t\t}catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \" <div class=\\\"portlet light\\\"> <div class=\\\"portlet-title\\\"> <div class=\\\"actions\\\"> <a class=\\\"btn btn-circle btn-icon-only btn-default fullscreen portletFullscreen\\\" href=\\\"javascript:;\\\" data-original-title=\\\"\\\" title=\\\"\\\"> </a> </div> </div> <div class=\\\"portlet-body condition-builder\\\" style=\\\"overflow:auto\\\"> <!-- ko if: _showRecordsLimitInput--> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <span><!-- ko text: _labels.SELECT_FIRST --><!-- /ko --></span> <input data-bind=\\\"textInput: _top\\\" type=\\\"text\\\" class=\\\"form-control\\\"> <span><!-- ko text: _labels.RECORDS --><!-- /ko --></span> </div> </div> <!-- /ko --> <!-- ko if: !_isForGrid--> <!-- ko with: ConditionGroup --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <!-- /ko --> </div> </div> <!-- ko if: _isForGrid--> <div class=\\\"portlet light\\\"> <!-- ko with: ConditionGroup --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> <!-- /ko --> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from 'underscore';\r\n\r\nimport { ConditionOperators } from \"QueryBuilder/Enums\";\r\nimport { Guid } from \"Core/Common/Guid\";\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { ConditionItem } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItem';\r\nimport { Event } from 'Core/Common/Event'\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { NOTIFICATIONS, LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { ComparisonOperators, ConditionValueTypes } from 'QueryBuilder/Enums';\r\n\r\nimport ConditionGroupTemplate from 'QueryBuilder/QueryCondition/ConditionGroup/Templates/ConditionGroup.html';\r\nimport { IControlAttachedField } from \"Core/Screens/BaseScreen\";\r\n\r\nexport interface IConditionOperator {\r\n\tName: string,\r\n\tValue: ConditionOperators;\r\n}\r\n\r\nexport class ConditionGroup extends Event {\r\n\tConditionGroups: KnockoutObservableArray<ConditionGroup>;\r\n\tConditionItems: KnockoutObservableArray<ConditionItem>;\r\n\tConditionOperators: Array<IConditionOperator>;\r\n\tConditionOperator: KnockoutObservable<ConditionOperators>;\r\n\tprivate _model: QueryConditionGroupModel;\r\n\tprivate _entities: KnockoutObservableArray<QueryEntityModel>;\r\n\tprivate _id: string;\r\n\r\n\tprivate _isRoot: boolean;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\tprivate _isDesigntime: boolean;\r\n\tprivate _labels = LABELS;\r\n\tprivate _queryType: ViewModes;\r\n\r\n\tconstructor(\r\n\t\tisRoot: boolean,\r\n\t\tmodel: QueryConditionGroupModel,\r\n\t\tqueryType: ViewModes,\r\n\t\tentities: KnockoutObservableArray<QueryEntityModel>,\r\n\t\tscreenFields: Array<IControlAttachedField> = [],\r\n\t\tisDesignTime: boolean = false,\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis._isDesigntime = isDesignTime;\r\n\t\tthis._model = model;\r\n\t\tthis._id = Guid.NewGuid();\r\n\t\tthis._isRoot = isRoot;\r\n\t\tthis.ConditionGroups = ko.observableArray([]);\r\n\t\tthis.ConditionItems = ko.observableArray([]);\r\n\t\tthis._entities = entities;\r\n\t\tthis.ConditionOperator = ko.observable(null);\r\n\t\tthis._screenFields = screenFields;\r\n\t\tthis._queryType = queryType;\r\n\t\tthis.ConditionOperators = [\r\n\t\t\t{ Name: LABELS.AND, Value: ConditionOperators.And },\r\n\t\t\t{ Name: LABELS.OR, Value: ConditionOperators.Or }\r\n\t\t];\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tInit() {\r\n\t\tvar conditionOperator = _.find(this.ConditionOperators, (operator) => { return operator.Value === this._model.Operator });\r\n\t\tif (conditionOperator) {\r\n\t\t\tthis.ConditionOperator(conditionOperator.Value);\r\n\t\t} else {\r\n\t\t\tthis.ConditionOperator(ConditionOperators.And);\r\n\t\t}\r\n\r\n\t\t_.each(this._model.Items, (item) => {\r\n\t\t\tlet conditionItem = new ConditionItem(item, this._entities, this._screenFields, this._isDesigntime);\r\n\t\t\tif(conditionItem.HasMetadata) {\r\n\t\t\t\tconditionItem.IsEnableShowParam(this._queryType === ViewModes.Query || this._queryType === ViewModes.Spim);\r\n\t\t\t\tconditionItem.On('CHANGED', this, (eventArgs) => {\r\n\t\t\t\t\tthis.RaiseChangeEvent();\r\n\t\t\t\t});\r\n\t\t\t\tthis.ConditionItems.push(conditionItem);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\t_.each(this._model.ConditionGroups, (group) => {\r\n\t\t\tvar conditionGroup = new ConditionGroup(false, group, this._queryType, this._entities, this._screenFields, this._isDesigntime);\r\n\t\t\tconditionGroup.On('CHANGED', this, (eventArgs) => {\r\n\t\t\t\tthis.RaiseChangeEvent();\r\n\t\t\t});\r\n\t\t\tthis.ConditionGroups.push(conditionGroup);\r\n\t\t});\r\n\r\n\t\tthis.AddEvent('CHANGED');\r\n\t}\r\n\r\n\tget IsRoot() {\r\n\t\treturn this._isRoot;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ConditionGroupTemplate;\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tAddRule() {\r\n\t\tvar model = new QueryConditionItemModel();\r\n\t\tmodel.ValueType = ConditionValueTypes.General;\r\n\t\tthis._model.Items.push(model);\r\n\t\tvar conditionItem = new ConditionItem(model, this._entities, this._screenFields, this._isDesigntime);\r\n\t\tconditionItem.IsEnableShowParam(this._queryType === ViewModes.Query || this._queryType === ViewModes.Spim);\r\n\t\tconditionItem.On('CHANGED', this, (eventArgs) => {\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t\tthis.ConditionItems.push(conditionItem);\r\n\t\tconditionItem.SelectFirstField();\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tAddConditionGroup() {\r\n\t\tvar queryConditionGroupModel = new QueryConditionGroupModel();\r\n\t\tthis._model.ConditionGroups.push(queryConditionGroupModel);\r\n\t\tvar conditionGroup = new ConditionGroup(false, queryConditionGroupModel, this._queryType, this._entities, this._screenFields, this._isDesigntime);\r\n\t\tconditionGroup.On('CHANGED', this, (eventArgs) => {\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t\tthis.ConditionGroups.push(conditionGroup);\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tDeleteConditionGroup(group: ConditionGroup) {\r\n\t\tthis._model.ConditionGroups.splice(this._model.ConditionGroups.indexOf(group.Model));\r\n\t\tthis.ConditionGroups.splice(this.ConditionGroups.indexOf(group), 1);\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tDeleteConditionRule(rule: ConditionItem) {\r\n\t\tthis._model.Items.splice(this._model.Items.indexOf(rule.Model), 1);\r\n\t\tthis.ConditionItems.splice(this.ConditionItems.indexOf(rule), 1);\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\t\r\n\tSetConditionOperator(operator: IConditionOperator) {\r\n\t\tthis._model.Operator = operator.Value;\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tRaiseChangeEvent() {\r\n\t\tthis.Trigger('CHANGED');\r\n\t}\r\n\r\n\tAfterRender() {}\r\n}","// Module\nvar code = \"<ul data-bind=\\\"css: {'tree': _isRoot }\\\" class=\\\"group-item\\\"> <li class=\\\"group-item-list\\\"> <div class=\\\"group-item-list-wrapper\\\"> <div class=\\\"btn-group disabled group-item-btn-group\\\" data-toggle=\\\"buttons\\\"> <!--ko foreach: ConditionOperators --> <label data-bind=\\\"css:{ active: $parent.ConditionOperator() === $data.Value }, click: $parent.SetConditionOperator.bind($parent, $data)\\\" class=\\\"btn btn-primary\\\"> <input type=\\\"radio\\\"><span data-bind=\\\"text: Name\\\" class=\\\"uppercase\\\"></span> </label> <!-- /ko --> </div> <div class=\\\"pull-right group-item-btn-group\\\"> <a data-bind=\\\"click: AddRule\\\" href=\\\"javascript:;\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-plus\\\"></i><!-- ko text: _labels.ADD_RULE --><!-- /ko --> </a> <a data-bind=\\\"click: AddConditionGroup\\\" href=\\\"javascript:;\\\" class=\\\"btn green\\\"> <i class=\\\"fa fa-plus-circle\\\"></i><!-- ko text: _labels.ADD_GROUP --><!-- /ko --> </a> <!--ko if: !IsRoot --> <a data-bind=\\\"click: $parent.DeleteConditionGroup.bind($parent, $data)\\\" href=\\\"javascript:;\\\" class=\\\"btn red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <!--/ko--> </div> </div> <!-- ko if: ConditionItems().length > 0 || ConditionGroups().length > 0 --> <ol> <!-- ko foreach: ConditionItems --> <li class=\\\"condition-item\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </li> <!-- /ko --> <!-- ko foreach: ConditionGroups --> <li class=\\\"condition-group\\\"> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --> <!-- /ko --> </li> <!-- /ko --> </ol> <!-- /ko --> </li> </ul>\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\nimport { Event } from 'Core/Common/Event';\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Text/Templates/Text.html'\r\n\r\nexport class Text {\r\n\tValue: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Value = ko.observable(\"\");\r\n\t}\r\n\t\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n}","// Module\nvar code = \"<input data-bind=\\\"textInput: Value, attr: { title: Value }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"min-width:100px;max-width:160px;height:34px\\\">\";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/YesNo/Templates/YesNo.html'\r\n\r\nexport class YesNo {\r\n\tValue: KnockoutObservable<boolean>;\r\n\r\n\tprivate _labels = LABELS;\r\n\r\n\tconstructor() {\r\n\t\tthis.Value = ko.observable(false);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n} ","// Module\nvar code = \"<span class=\\\"inverse-condition-wrapper\\\"> <input data-bind=\\\"uniform: Value, checked: Value\\\" type=\\\"checkbox\\\"> </span> \";\n// Exports\nexport default code;","import * as ko from \"knockout\";\r\n\r\nimport { LABELS } from 'Core/Components/Translation/Locales';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { DropdownDataStore } from 'Core/Controls/Dropdown/Stores/DropDownDataStore';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { EVENTS as SEARCH_SCREEN_EVENTS } from 'Core/Screens/SearchScreen/Events';\r\n\r\nimport {DropdownItemModel} from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Spim/Templates/Spim.html'\r\n\r\nexport class Spim {\r\n\tValue: KnockoutObservable<any>;\r\n\tLowValue: KnockoutObservable<any>;\r\n\tHighValue: KnockoutObservable<any>;\r\n\r\n\tprivate _labels = LABELS;\r\n\tprivate _featureTypes = ['A', 'L', 'N', 'R'];\r\n\tpublic FeatureType: KnockoutObservable<any>;\r\n\r\n\tprivate _items: KnockoutObservableArray<DropdownItemModel>;\r\n\tprivate _selectedItem: KnockoutObservable<DropdownItemModel>;\r\n\tprivate _showSearchScreenButton: KnockoutObservable<boolean>;\r\n\tprivate _searchScreenIfRecordsCount: number;\r\n\r\n\tprivate _fieldId: FieldMetadataModel;\r\n\tprivate _firstLoad: boolean;\r\n\r\n\tconstructor(field: FieldMetadataModel) {\r\n\t\tthis._fieldId = field;\r\n\t\tthis.Value = ko.observable(false);\r\n\t\tthis.FeatureType = ko.observable(this._featureTypes[0]);\r\n\t\tthis.LowValue = ko.observable(null);\r\n\t\tthis.HighValue = ko.observable(null);\r\n\r\n\t\tthis.LowValue.subscribe((newValue)=>{\r\n\t\t\tthis.Value(`${this.LowValue()};${this.HighValue()}`);\r\n\t\t});\r\n\r\n\t\tthis.HighValue.subscribe((newValue)=>{\r\n\t\t\tthis.Value(`${this.LowValue()};${this.HighValue()}`);\r\n\t\t});\r\n\r\n\t\tthis.FeatureType.subscribe((newValue)=>{\r\n\t\t\tif(newValue === 'L'){\r\n\t\t\t\tthis.Value(false);\r\n\t\t\t}\r\n\r\n\t\t\tif(newValue === 'N'){\r\n\t\t\t\tthis.Value(null);\r\n\t\t\t}\r\n\r\n\t\t\tif(newValue === 'A'){\r\n\t\t\t\tthis.Value(null);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._selectedItem = ko.observable(null);\r\n\t\tthis._showSearchScreenButton = ko.observable(false);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._firstLoad = true;\r\n\r\n\t\tvar searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tthis._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\r\n\t\tthis.Value.subscribe((newValue) => {\r\n\t\t\tif (this._firstLoad) {\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._selectedItem.subscribe((newValue: DropdownItemModel) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.Value(`${newValue.RecordId}`);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(this.FeatureType() === 'A'){\r\n\t\t\tthis.LoadData();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tDropdownDataStore.Get({ FieldId: this._fieldId.Id, RecordId: parseInt(this.Value()), SubjectRecordId: 0, SubjectTypeId: 0, SubjectKindId: 0, SubjectStatusId: 0, IsEnableFilter: false })\r\n\t\t\t.then((dropDownData: DropdownListModel) => {\r\n\t\t\t\tthis._showSearchScreenButton(dropDownData.RecordsCount > this._searchScreenIfRecordsCount);\r\n\t\t\t\tthis._firstLoad = false;\r\n\t\t\t\tthis._items(dropDownData.Items);\r\n\t\t\t\tthis._selectedItem(_.find(dropDownData.Items,(item: DropdownItemModel) => {\r\n\t\t\t\t\treturn item.RecordId === parseInt(this.Value());\r\n\t\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\tget FieldId(): number {\r\n\t\treturn this._fieldId.Id;\r\n\t}\r\n\r\n\tShowSearchScreen() {\r\n\t\tconst searchScreen = new SearchScreen({ EntityId: this._fieldId.ValTableId, SearchTerm: '', ButtonAdd: false });\r\n\t\tsearchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.Value(eventArgs.data.RecordId);\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\t\tsearchScreen.Show();\r\n\t}\r\n} ","// Module\nvar code = \"<div class=\\\"featureTypesBox\\\"> <select data-bind=\\\"options: _featureTypes, value: FeatureType,\\\" class=\\\"form-control\\\"></select> <!--ko if: FeatureType() === 'R' --> <input data-bind=\\\"textInput: LowValue, attr: { title: LowValue }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <input data-bind=\\\"textInput: HighValue, attr: { title: HighValue }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <!--/ko--> <!--ko if: FeatureType() === 'N' --> <input data-bind=\\\"textInput: Value, attr: { title: Value }\\\" type=\\\"text\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <!--/ko--> <!--ko if: FeatureType() === 'L' --> <input data-bind=\\\"checked: Value, attr: { title: Value }\\\" type=\\\"checkbox\\\" class=\\\"form-control input-sm\\\" style=\\\"height:34px\\\"> <!--/ko--> <!--ko if: FeatureType() === 'A' --> <!-- ko ifnot: _showSearchScreenButton --> <select data-bind=\\\"options: _items, optionsCaption: 'select...', optionsText: 'Label', value: _selectedItem\\\" class=\\\"form-control control record-field drop-down\\\"></select> <!-- /ko --> <!-- ko if: _showSearchScreenButton --> <div data-val-search=\\\"True\\\" class=\\\"textarea-control form-control control record-field filter-search-area\\\"> <!-- ko if: _selectedItem --> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!-- /ko --> <!-- ko ifnot: _selectedItem --> <span>Select value...</span> <!-- /ko --> <span data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> </div> <!-- /ko --> <!--/ko--> </div>\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as moment from 'moment';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Date/Templates/Date.html';\r\n\r\nimport {QueryConditionItemModel} from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\n\r\nexport class Date {\r\n\tValue: KnockoutObservable<any>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _datetimeFormat: string;\r\n\tprivate _date: string;\r\n\tprivate _initialState: boolean;\r\n\r\n\tconstructor(model: QueryConditionItemModel, datetimeFormat: string, date: string) {\r\n\t\tthis.Value = ko.observable('');\r\n\t\tthis._date = date;\r\n\t\tthis._datetimeFormat = datetimeFormat;\r\n\t\tthis._initialState = true;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tGetDateFormat() {\r\n\t\treturn this._datetimeFormat;\r\n\t}\r\n\r\n\tGetLocale() {\r\n\t\treturn moment.locale();\r\n\t}\r\n\r\n\tUpdate() {\r\n\t\tif (!this._initialState || $(this._el).val()) {\r\n\t\t\tconst newValue = $(this._el).val();\r\n\t\t\tthis.Value(newValue);\r\n\t\t}\r\n\t\tthis._initialState = false;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t\tthis._el = el[0];\r\n\t\t$(this._el).val(this._date);\r\n\t}\r\n} ","// Module\nvar code = \"<input data-bind=\\\"attr: { title: $data.Value },\\r\\n\\t\\t\\t\\t datetimepicker: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tvalue: $data._date,\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tonUpdate: $data.Update.bind($data),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tlocale: $data.GetLocale(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\tformat: $data.GetDateFormat(),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\twidgetPositioning: {\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t horizontal: 'auto',\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t vertical: 'bottom'\\r\\n \\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\\" type=\\\"text\\\" class=\\\"datepickerinput\\\"> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport { DropdownDataStore } from 'Core/Controls/Dropdown/Stores/DropDownDataStore';\r\nimport { DropdownListModel } from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\nimport { GlobalManager, GLOBALS } from 'Core/GlobalManager/GlobalManager';\r\nimport { SearchScreen } from 'Core/Screens/SearchScreen/SearchScreen';\r\nimport { EVENTS as SEARCH_SCREEN_EVENTS } from 'Core/Screens/SearchScreen/Events';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/Lookup/Templates/Lookup.html'\r\nimport {DropdownItemModel} from 'Core/Controls/Dropdown/Models/DropdownListModel';\r\n\r\nexport class Lookup {\r\n\tprivate _items: KnockoutObservableArray<DropdownItemModel>;\r\n\tprivate _selectedItem: KnockoutObservable<DropdownItemModel>;\r\n\tprivate _showSearchScreenButton: KnockoutObservable<boolean>;\r\n\tprivate _searchScreenIfRecordsCount: number;\r\n\r\n\tprivate _fieldId: FieldMetadataModel;\r\n\tprivate _firstLoad: boolean;\r\n\r\n\tValue: KnockoutObservable<string>;\r\n\r\n\tconstructor(\r\n\t\tfield: FieldMetadataModel\r\n\t) {\r\n\t\tthis._fieldId = field;\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._selectedItem = ko.observable(null);\r\n\t\tthis._showSearchScreenButton = ko.observable(false);\r\n\t\tthis._items = ko.observableArray([]);\r\n\t\tthis._firstLoad = true;\r\n\r\n\t\tvar searchScreenIfRecordsCount = parseInt(GlobalManager.Instance.GetGlobal(GLOBALS.SEARCH_SCREEN_IF_RECORDS_COUNT));\r\n\t\tthis._searchScreenIfRecordsCount = Number.isNaN(searchScreenIfRecordsCount) ? 10 : searchScreenIfRecordsCount;\r\n\r\n\t\tthis.Value.subscribe((newValue) => {\r\n\t\t\tif (this._firstLoad) {\r\n\t\t\t\tthis.LoadData();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._selectedItem.subscribe((newValue: DropdownItemModel) => {\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis.Value(`${newValue.RecordId}`);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tLoadData() {\r\n\t\tDropdownDataStore.Get({ FieldId: this._fieldId.Id, RecordId: parseInt(this.Value()), SubjectRecordId: 0, SubjectTypeId: 0, SubjectKindId: 0, SubjectStatusId: 0, IsEnableFilter: false })\r\n\t\t\t.then((dropDownData: DropdownListModel) => {\r\n\t\t\t\tthis._showSearchScreenButton(dropDownData.RecordsCount > this._searchScreenIfRecordsCount);\r\n\t\t\t\tthis._firstLoad = false;\r\n\t\t\t\tthis._items(dropDownData.Items);\r\n\t\t\t\tthis._selectedItem(_.find(dropDownData.Items,(item: DropdownItemModel) => {\r\n\t\t\t\t\treturn item.RecordId === parseInt(this.Value());\r\n\t\t\t\t}));\r\n\t\t});\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n\r\n\tget FieldId(): number {\r\n\t\treturn this._fieldId.Id;\r\n\t}\r\n\r\n\tShowSearchScreen() {\r\n\t\tconst searchScreen = new SearchScreen({ EntityId: this._fieldId.ValTableId, SearchTerm: '', ButtonAdd: false });\r\n\t\tsearchScreen.On(SEARCH_SCREEN_EVENTS.RECORD_SELECTED, this, (eventArgs) => {\r\n\t\t\tthis.Value(eventArgs.data.RecordId);\r\n\t\t\tthis.LoadData();\r\n\t\t});\r\n\t\tsearchScreen.Show();\r\n\t}\r\n} ","// Module\nvar code = \"<!-- ko ifnot: _showSearchScreenButton --> <select data-bind=\\\"options: _items, optionsCaption: 'select...', optionsText: 'Label', value: _selectedItem\\\" class=\\\"form-control control record-field drop-down\\\"></select> <!-- /ko --> <!-- ko if: _showSearchScreenButton --> <div data-val-search=\\\"True\\\" class=\\\"textarea-control form-control control record-field filter-search-area\\\"> <!-- ko if: _selectedItem --> <span data-bind=\\\"text: _selectedItem().Label\\\"></span> <!-- /ko --> <!-- ko ifnot: _selectedItem --> <span><!-- ko text: $parent._labels.SELECT_VALUE_LABEL --><!-- /ko --></span> <!-- /ko --> <span data-bind=\\\"click: $data.ShowSearchScreen.bind($data)\\\" class=\\\"btn default dropdown-search-icon glyphicon glyphicon-search\\\"></span> </div> <!-- /ko -->\";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as _ from 'underscore';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/DocumentStatusLookup/Templates/DocumentStatusLookup.html'\r\nimport {DocumentStatus} from 'Core/Components/Controls/DocumentManager/DocumentManager';\r\n\r\nexport class DocumentStatusLookup {\r\n\tprivate _items: KnockoutObservableArray<string>;\r\n\r\n\tValue: KnockoutObservable<string>;\r\n\r\n\tconstructor() {\r\n\t\tthis.Value = ko.observable(null);\r\n\t\tthis._items = ko.observableArray(\r\n\t\t\t[\r\n\t\t\t\tDocumentStatus[DocumentStatus.NoVersion],\r\n\t\t\t\tDocumentStatus[DocumentStatus.CheckIn],\r\n\t\t\t\tDocumentStatus[DocumentStatus.CheckOut],\r\n\t\t\t\tDocumentStatus[DocumentStatus.Locked],\r\n\t\t\t\tDocumentStatus[DocumentStatus.OwnerLock]\r\n\t\t\t]\r\n\t\t);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender(el: Array<HTMLElement>) {\r\n\t}\r\n} ","// Module\nvar code = \"<select class=\\\"form-control\\\" data-bind=\\\"options: _items, value: Value\\\"></select> \";\n// Exports\nexport default code;","import { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { Guid } from 'Core/Common/Guid';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\n\r\nexport class ConditionItemField {\r\n\tid: string;\r\n\tprivate _queryEntity: QueryEntityModel;\r\n\tprivate _fieldMetadata: FieldMetadataModel;\r\n\r\n\tconstructor(queryEntity: QueryEntityModel, fieldMetadata: FieldMetadataModel) {\r\n\t\tthis.id = Guid.NewGuid();\r\n\t\tthis._queryEntity = queryEntity;\r\n\t\tthis._fieldMetadata = fieldMetadata;\r\n\t}\r\n\r\n\tget title(): string {\r\n\t\tvar entityName = this._queryEntity.Metadata.NameTranslation || this._queryEntity.Metadata.Name;\r\n\r\n\t\tif (this._queryEntity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this._queryEntity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this._fieldMetadata.NameTranslation || this._fieldMetadata.Name}`;\r\n\t}\r\n\r\n\tget Title(): string {\r\n\t\tvar entityName = this._queryEntity.Metadata.NameTranslation || this._queryEntity.Metadata.Name;\r\n\r\n\t\tif (this._queryEntity.Index > 1) {\r\n\t\t\tentityName = `${entityName}${this._queryEntity.Index}`;\r\n\t\t}\r\n\r\n\t\treturn `${entityName}.${this._fieldMetadata.NameTranslation || this._fieldMetadata.Name}`;\r\n\t}\r\n\r\n\tget FieldMetadata() {\r\n\t\treturn this._fieldMetadata;\r\n\t}\r\n\r\n\tget EntityMetadata() {\r\n\t\treturn this._queryEntity.Metadata;\r\n\t}\r\n\r\n\tget QueryEntityGuid() {\r\n\t\treturn this._queryEntity.Guid;\r\n\t}\r\n}","import * as ko from \"knockout\";\r\nimport * as _ from \"underscore\";\r\n\r\nimport { ViewModes } from \"Core/Controls/Grid/BaseGrid/Enums/ViewModes\";\r\nimport { EVENTS as QUERY_BUILDER_EVENTS } from 'QueryBuilder/Events';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\n\r\nimport Template from 'QueryBuilder/QueryCondition/ConditionEditors/QueryBuilder/Templates/QueryBuilder.html'\r\nimport { IControlAttachedField } from \"Core/Screens/BaseScreen\";\r\n\r\nexport class QueryBuilder {\r\n\tValue: KnockoutObservable<any>;\r\n\tprivate _el: HTMLElement;\r\n\tprivate _fieldMetadata: FieldMetadataModel;\r\n\tprivate _screenFields: Array<IControlAttachedField>;\r\n\r\n\r\n\tconstructor(fieldMetadata: FieldMetadataModel, screenFields: Array<IControlAttachedField>) {\r\n\t\tthis.Value = ko.observable('');\r\n\t\tthis._fieldMetadata = fieldMetadata;\r\n\t\tthis._screenFields = screenFields;\r\n\t}\r\n\r\n\tShowQueryBuilder() {\r\n\t\tvar modal = new Modal();\r\n\t\tvar queryBuilder = require('QueryBuilder/QueryBuilder');\r\n\t\tvar queryBuilder = new queryBuilder.QueryBuilder(true, false, false, false, this._screenFields);\r\n\t\tqueryBuilder.ShowQueryName = false;\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.CLOSE, this, (eventArgs: any) => { modal.Close(); });\r\n\r\n\t\tqueryBuilder.On(QUERY_BUILDER_EVENTS.DATA_SAVED, this, (eventArgs: any) => {\r\n\t\t\tthis.Value(eventArgs.data.QueryText);\r\n\t\t\tmodal.Close();\r\n\t\t});\r\n\r\n\t\tqueryBuilder.QueryTypeName = ViewModes.Query;\r\n\t\tqueryBuilder.SingleColumn = true;\r\n\t\tqueryBuilder.SingleColumnType = this._fieldMetadata.Type;\r\n\t\tmodal.Show();\r\n\r\n\t\tif (this.Value()) {\r\n\t\t\tqueryBuilder.EditFreeQuery(JSON.parse(this.Value()));\r\n\t\t} else {\r\n\t\t\tqueryBuilder.NewFreeQuery();\r\n\t\t}\r\n\r\n\t\tko.cleanNode(modal.Wrapper);\r\n\t\tko.applyBindings(queryBuilder, modal.Wrapper);\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn Template;\r\n\t}\r\n\r\n\tAfterRender() {}\r\n} ","// Module\nvar code = \"<a data-bind=\\\"click: $data.ShowQueryBuilder.bind($data)\\\" href=\\\"#\\\"> <img src=\\\"img/Custom/sql-256.png\\\" class=\\\"query-icon\\\"> </a>\";\n// Exports\nexport default code;","// Module\nvar code = \"<ul class=\\\"paste-variable-dropdown-list\\\" role=\\\"menu\\\"> <!-- ko if: $data.IsEnableQueryBuilder --> <li class=\\\"paste-variable-dropdown-item\\\" data-bind=\\\"click: $data.PasteQuery.bind($data)\\\"> <a href=\\\"#\\\">QueryBuilder</a> </li> <!-- /ko --> <!-- ko foreach: $data._functions --> <li class=\\\"paste-variable-dropdown-item\\\" data-bind=\\\"click: $parent.PasteFunction.bind($parent, $data)\\\"> <a href=\\\"#\\\"> <!-- ko text: $data --><!-- /ko --> </a> </li> <!-- /ko --> <!-- ko foreach: $data._screenFields --> <li class=\\\"paste-variable-dropdown-item\\\" data-bind=\\\"click: $parent.PasteVariable.bind($parent, $parent.FormatControlField($data))\\\"> <a href=\\\"#\\\"> <!-- ko text: $parent.FormatControlField($data) --><!-- /ko --> </a> </li> <!-- /ko --> </ul> \";\n// Exports\nexport default code;","import * as ko from 'knockout';\r\nimport * as $ from \"jquery\";\r\nimport * as _ from 'underscore';\r\nimport 'knockout-selectize';\r\nimport 'hidden_textfield';\r\nimport 'dropdown_direction';\r\nimport 'scroll_parent';\r\n\r\nimport { Text } from 'QueryBuilder/QueryCondition/ConditionEditors/Text/Text';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { FieldMetadataModel } from 'Core/Controls/Grid/Models/GridDataModel/FieldMetadataModel';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { ComparisonOperators, ConditionValueTypes } from 'QueryBuilder/Enums';\r\nimport { CONFIG, FUNCTIONS, TYPES_COMPATIBILITY } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItemConfig';\r\nimport { YesNo } from 'QueryBuilder/QueryCondition/ConditionEditors/YesNo/YesNo';\r\nimport { Spim } from 'QueryBuilder/QueryCondition/ConditionEditors/Spim/Spim';\r\nimport { Date as DateEditor } from 'QueryBuilder/QueryCondition/ConditionEditors/Date/Date';\r\nimport { Lookup } from 'QueryBuilder/QueryCondition/ConditionEditors/Lookup/Lookup';\r\nimport { CONTROL_TYPES, FIELD_TYPES } from 'Core/Constant';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { QueryColumnModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel';\r\nimport { AttachedFieldModel } from 'Core/Controls/BaseControl/Models/AttachedFieldModel';\r\nimport { DocumentStatusLookup } from 'QueryBuilder/QueryCondition/ConditionEditors//DocumentStatusLookup/DocumentStatusLookup';\r\nimport { FormatConverter } from 'FormatEditor/FormatConverter';\r\nimport { COMPARISON_OPERATOR_LABELS } from 'QueryBuilder/Constants';\r\nimport { ConditionItemField } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItemField';\r\nimport { QueryBuilder } from 'QueryBuilder/QueryCondition/ConditionEditors/QueryBuilder/QueryBuilder';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport {LifeStatusEnum} from \"common/life-status-enum\";\r\nimport {JBoxDropDown} from \"Core/Components/JBoxDropdown/DropDown\";\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport ConditionItemTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItem.html';\r\nimport ConditionItemSimpleTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItemSimple.html';\r\nimport ConditionItemSPIMTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/ConditionItemSPIM.html';\r\nimport PasteVariableDropdownTemplate from 'QueryBuilder/QueryCondition/ConditionItem/Templates/PasteVariableDropdownTemplate.html'\r\nimport {ZIndexManager} from \"../../../Core/Common/ZIndexManager\";\r\nimport { IControlAttachedField } from 'Core/Screens/BaseScreen';\r\nimport { StaticText } from '../ConditionEditors/StaticText/StaticText';\r\n\r\nko.templates[\"QueryBuilder/QueryCondition/ConditionItem/Templates/PasteVariableDropdownTemplate\"] = PasteVariableDropdownTemplate;\r\n\r\n\r\nexport class ConditionItem extends Event {\r\n\tQueryEntities: KnockoutObservableArray<QueryEntityModel>;\r\n\r\n\tFields: KnockoutObservableArray<ConditionItemField>;\r\n\tSelectedField: KnockoutObservable<ConditionItemField>;\r\n\tSelectedFieldId: KnockoutObservable<any>;\r\n\r\n\tValueFields: KnockoutObservableArray<ConditionItemField>;\r\n\tSelectedValueField: KnockoutObservable<ConditionItemField>;\r\n\tSelectedValueFieldId: KnockoutObservable<any>;\r\n\r\n\tIsEnableShowParam: KnockoutObservable<boolean>;\r\n\tShowParam: KnockoutObservable<boolean>;\r\n\tIsEnableAddMultipleValues: KnockoutObservable<boolean>;\r\n\tIsEnableQueryBuilder: KnockoutObservable<boolean>;\r\n\tIsEnableResetButton: KnockoutObservable<boolean>;\r\n\tShowValueEditorButton: KnockoutObservable<boolean>;\r\n\tShowValueFieldListButton: KnockoutObservable<boolean>;\r\n\tHasMetadata: boolean;\r\n\r\n\tprivate _fieldValueEditors: KnockoutObservableArray<any>;\r\n\tprivate _model: QueryConditionItemModel;\r\n\tprivate _comparisonOperators: KnockoutObservableArray<any>;\r\n\tprivate _operator: KnockoutObservable<any>;\r\n\tprivate _screenFields: KnockoutObservableArray<IControlAttachedField>;\r\n\tprivate _originalScreenFields: Array<IControlAttachedField>;\r\n\tprivate _selectedField: ConditionItemField;\r\n\tprivate _functions: KnockoutObservableArray<string>;\r\n\tprivate _isDesigntime: boolean;\r\n\tprivate _labels = LABELS;\r\n\tprivate _dropDown: JBoxDropDown;\r\n\r\n\tconstructor(model: QueryConditionItemModel,\r\n\t\tentities: KnockoutObservableArray<QueryEntityModel>,\r\n\t\tscreenFields: Array<IControlAttachedField>,\r\n\t\tisDesignTime: boolean) {\r\n\t\tsuper();\r\n\r\n\t\tthis._model = model;\r\n\t\tthis._isDesigntime = isDesignTime;\r\n\t\tthis._fieldValueEditors = ko.observableArray(null);\r\n\t\tthis._operator = ko.observable(null);\r\n\t\tthis._comparisonOperators = ko.observableArray();\r\n\t\tthis._screenFields = ko.observableArray(screenFields);\r\n\t\tthis._originalScreenFields = screenFields;\r\n\t\tthis._functions = ko.observableArray([]);\r\n\r\n\t\tthis.QueryEntities = entities;\r\n\t\tthis.Fields = ko.observableArray([]);\r\n\t\tthis.ValueFields = ko.observableArray([]);\r\n\r\n\t\tthis.IsEnableShowParam = ko.observable(false);\r\n\t\tthis.ShowParam = ko.observable(this._model.ShowParam);\r\n\t\tthis.SelectedField = ko.observable(null);\r\n\t\tthis.SelectedFieldId = ko.observable(null);\r\n\r\n\t\tthis.SelectedValueField = ko.observable(null);\r\n\t\tthis.SelectedValueFieldId = ko.observable(null);\r\n\r\n\t\tthis.IsEnableAddMultipleValues = ko.observable(false);\r\n\t\tthis.IsEnableQueryBuilder = ko.observable(false);\r\n\t\tthis.IsEnableResetButton = ko.observable(false);\r\n\r\n\t\tthis.ShowValueEditorButton = ko.observable(this._model.ValueType === ConditionValueTypes.Column);\r\n\t\tthis.ShowValueFieldListButton = ko.observable(this._model.ValueType !== ConditionValueTypes.Column);\r\n\t\tthis.HasMetadata = false;\r\n\r\n\t\tthis.Init();\r\n\t\tthis.QueryEntities.subscribe((newValue) => this.UpdateFieldList());\r\n\t}\r\n\r\n\tUpdateOperators(fieldType: string) {\r\n\t\tconst config = CONFIG[fieldType];\r\n\r\n\t\tif (config) {\r\n\t\t\tlet operators = [];\r\n\r\n\t\t\t_.each(config.Operators, (operator) => {\r\n\t\t\t\toperators.push({ Value: operator, Label: COMPARISON_OPERATOR_LABELS[ComparisonOperators[operator]] });\r\n\t\t\t});\r\n\r\n\t\t\tthis._comparisonOperators(operators);\r\n\t\t\tthis._operator(_.find(this._comparisonOperators(), (operator) => operator.Value === this._model.Operator));\r\n\t\t}\r\n\t}\r\n\r\n\tUpdateFunctions(fieldType: string) {\r\n\t\tconst config = CONFIG[fieldType];\r\n\r\n\t\tif (config) {\r\n\t\t\tconst functions = [];\r\n\r\n\t\t\t_.each(config.Functions, (func) => functions.push(func));\r\n\t\t\tthis._functions(functions);\r\n\t\t}\r\n\t}\r\n\r\n\tSelectFirstField() {\r\n\t\tconst selectedField = _.first(this.Fields());\r\n\r\n\t\tif (selectedField) {\r\n\t\t\tthis.SelectedField(selectedField);\r\n\t\t\tthis.SelectedFieldId(selectedField.id);\r\n\t\t\tthis.Update(selectedField.FieldMetadata.Type);\r\n\t\t}\r\n\t}\r\n\r\n\tUpdate(fieldType: string) {\r\n\t\tthis.UpdateOperators(fieldType);\r\n\t\tthis.UpdateFunctions(fieldType);\r\n\t\tthis.UpdateEditor();\r\n\t\tthis.UpdateScreenFields();\r\n\t}\r\n\r\n\tUpdateScreenFields() {\r\n\r\n\t\tlet compatibleFields = _.filter(this._originalScreenFields, (item) =>{\r\n\t\t\treturn TYPES_COMPATIBILITY[this.SelectedField().FieldMetadata.Type].Types.indexOf(item.Field.FieldTypeName) >= 0;\r\n\t\t});\r\n\r\n\t\tthis._screenFields(compatibleFields);\r\n\t}\r\n\r\n\r\n\tInit() {\r\n\t\tthis.UpdateFieldList();\r\n\r\n\t\tthis.ShowParam.subscribe((newValue) => this._model.ShowParam = newValue);\r\n\r\n\t\tif (this._model.Column) {\r\n\t\t\tconst selectedField = _.find(this.Fields(), (field) => {\r\n\t\t\t\treturn field.QueryEntityGuid === this._model.Column.QueryEntityGuid && field.FieldMetadata.Id === this._model.Column.Metadata.Id;\r\n\t\t\t});\r\n\r\n\t\t\tif (selectedField) {\r\n\t\t\t\tthis._model.Column.Metadata = selectedField.FieldMetadata;\r\n\t\t\t\tthis.SelectedField(selectedField);\r\n\t\t\t\tthis._selectedField = selectedField;\r\n\t\t\t\tthis.SelectedFieldId(selectedField.id);\r\n\t\t\t\tthis.HasMetadata = true;\r\n\r\n\t\t\t\tthis.Update(selectedField.FieldMetadata.Type);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.UpdateValueFieldList();\r\n\r\n\t\tthis.SelectedField.subscribe((newValue) => {\r\n\t\t\tif (newValue !== this._selectedField) {\r\n\t\t\t\tthis._model.Value = '';\r\n\t\t\t}\r\n\r\n\t\t\tthis.Update(newValue.FieldMetadata.Type);\r\n\t\t\tthis._model.Column = new QueryColumnModel();\r\n\t\t\tthis._model.Column.Metadata = newValue.FieldMetadata;\r\n\t\t\tthis._model.Column.QueryEntityGuid = newValue.QueryEntityGuid;\r\n\t\t\tthis.UpdateValueFieldList();\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t\tthis.RemoveDeletedField();\r\n\t\t});\r\n\r\n\t\t\r\n\t\tthis.SelectedValueField.subscribe((newValue) => {\r\n\t\t\tthis._model.ValueColumn = new QueryColumnModel();\r\n\t\t\tthis._model.ValueColumn.Metadata = newValue.FieldMetadata;\r\n\t\t\tthis._model.ValueColumn.QueryEntityGuid = newValue.QueryEntityGuid;\r\n\t\t\tthis._model.ValueType = ConditionValueTypes.Column;\r\n\t\t\tthis._model.Value = null;\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\r\n\t\tthis._operator.subscribe((newValue) => {\r\n\r\n\t\t\tif(newValue?.Value === ComparisonOperators.IsNotNull || newValue?.Value === ComparisonOperators.IsNull){\r\n\t\t\t\tthis._model.ValueType = ConditionValueTypes.General;\r\n\t\t\t\tthis._model.Value = null;\r\n\t\t\t}\r\n\r\n\t\t\tif ((this._model.Operator === ComparisonOperators.In && newValue.Value !== ComparisonOperators.In) || (this._model.Operator === ComparisonOperators.NotIn && newValue.Value !== ComparisonOperators.NotIn)) {\r\n\t\t\t\tthis._model.Value = '';\r\n\t\t\t\tthis._model.ValueType = this._model.ValueType !== ConditionValueTypes.Column ? ConditionValueTypes.General : this._model.ValueType;\r\n\t\t\t}\r\n\r\n\t\t\tif (newValue) {\r\n\t\t\t\tthis._model.Operator = newValue.Value;\r\n\r\n\t\t\t\tconst useMultipleValues = newValue.Value === ComparisonOperators.In || newValue.Value === ComparisonOperators.NotIn;\r\n\t\t\t\tthis.IsEnableAddMultipleValues(useMultipleValues);\r\n\t\t\t\tthis.IsEnableQueryBuilder(useMultipleValues);\r\n\t\t\t}\r\n\r\n\t\t\tsetTimeout(this.UpdateEditor.bind(this), 0);\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t}\r\n\r\n\tRaiseChangeEvent() {\r\n\t\tthis.Trigger('CHANGED');\r\n\t}\r\n\r\n\tprivate InitPasteVariableDropdown(el: HTMLElement) {\r\n\t\tthis._dropDown = new JBoxDropDown({\r\n\t\t\ttarget: el,\r\n\t\t\tbindTarget: el,\r\n\t\t\tbindComponent: this,\r\n\t\t\totherOptions: {\r\n\t\t\t\taddClass: \"pasteVariable-dropdown\",\r\n\t\t\t\tcloseOnClick: true,\r\n\t\t\t\tattach: undefined,\r\n\t\t\t\theight: 'auto',\r\n\t\t\t\tmaxHeight: 300,\r\n\t\t\t\tisolateScroll: true,\r\n\t\t\t\tpointer: \"\",\r\n\t\t\t\tmaxWidth: 400,\r\n\t\t\t\tonCloseComplete: () => {},\r\n\t\t\t\tzIndex: ZIndexManager.Instance.NextValue,\r\n\t\t\t\tposition: {\r\n\t\t\t\t\tx: \"right\",\r\n\t\t\t\t\ty: \"bottom\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tonCreated: () => {\r\n\t\t\t\tthis._dropDown.SetContent({ content: PasteVariableDropdownTemplate as any });\r\n\t\t\t},\r\n\r\n\t\t\tonOpen: () => {}\r\n\t\t});\r\n\t}\r\n\r\n\tShowPasteVariableDropdown(data, event){\r\n\t\tlet target: HTMLElement,\r\n\t\t\tisPasteVariableDropdownBox = $(event.target).parents('.pasteVariableDropdownBox').length > 0;\r\n\r\n\t\ttarget = isPasteVariableDropdownBox ? $(event.target).parents('.pasteVariableDropdownBox')[0] : event.currentTarget;\r\n\r\n\t\tif (this._screenFields().length && this._functions().length && this.IsEnableQueryBuilder()){\r\n\t\t\tthis.InitPasteVariableDropdown(target);\r\n\t\t\tthis._dropDown.Open();\r\n\t\t} else {\r\n\t\t\tif (this._dropDown) {\r\n\t\t\t\tthis._dropDown.Toggle();\r\n\t\t\t} else {\r\n\t\t\t\tthis.InitPasteVariableDropdown(target);\r\n\t\t\t\tthis._dropDown.Open();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tAddEditor() {\r\n\t\tconst editor = this.GetEditor('');\r\n\r\n\t\tif (editor) {\r\n\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t}\r\n\t}\r\n\r\n\tRemoveEditor(editor) {\r\n\t\tthis._fieldValueEditors.splice(this._fieldValueEditors().indexOf(editor), 1);\r\n\t\tthis._model.Value = '';\r\n\r\n\t\t_.each(this._fieldValueEditors(), (editor) => {\r\n\t\t\tif (editor && editor.Value()) {\r\n\t\t\t\tthis._model.Value += this._model.Value === '' ? editor.Value() : `;${editor.Value()}`;\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tUpdateEditor() {\r\n\t\tthis._fieldValueEditors([]);\r\n\t\tif ((this._operator() &&\r\n\t\t\t(this._operator().Value === ComparisonOperators.NotIn || this._operator().Value === ComparisonOperators.In)\r\n\t\t\t\t&&\r\n\t\t\tthis._model.Value \r\n\t\t\t\t&&\r\n\t\t\tthis._model.Value.split\r\n\t\t\t\t&&\r\n\t\t\tthis._model.ValueType === ConditionValueTypes.General) || ((this.SelectedField() ? this.SelectedField().FieldMetadata.Type === FIELD_TYPES.MultiSelect : false) && this._operator().Value === ComparisonOperators.Equals)) {\r\n\r\n\t\t\tconst values = this._model.Value ? this._model.Value.split(';') : [];\r\n\r\n\t\t\tif(values.length > 0)\r\n\t\t\t{\r\n\t\t\t\t_.each(values, (value) => {\r\n\t\t\t\t\tconst editor = this.GetEditor(value);\r\n\r\n\t\t\t\t\tif (editor) {\r\n\t\t\t\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tconst editor = this.GetEditor('-1');\r\n\t\t\t\tif (editor) {\r\n\t\t\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst editor = this.GetEditor(this._model.Value);\r\n\r\n\t\t\tif (editor) {\r\n\t\t\t\tthis._fieldValueEditors.push(editor);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tGetEditor(value: string): any {\r\n\t\tlet editor = null;\r\n\t\tlet dateTimeFormat;\r\n\t\tlet fieldType;\r\n\r\n\t\tif (this.SelectedField() && this._operator() && this._model.Column && this._model.Column.Metadata.Name) {\r\n\t\t\tfieldType = this.SelectedField().FieldMetadata.Type;\r\n\r\n\t\t\tconst operator = this._operator().Value;\r\n\r\n\t\t\tif (this._model.ValueType === ConditionValueTypes.Function) {\r\n\t\t\t\teditor = new Text();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableAddMultipleValues(false);\r\n\t\t\t\tthis.IsEnableResetButton(true);\r\n\t\t\t} else if ((this._model.Operator === ComparisonOperators.In || this._model.Operator === ComparisonOperators.NotIn) && this._model.ValueType === ConditionValueTypes.QueryBuilder) {\r\n\t\t\t\teditor = new QueryBuilder(this.SelectedField().FieldMetadata, this._originalScreenFields);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableAddMultipleValues(false);\r\n\t\t\t\tthis.IsEnableResetButton(true);\r\n\t\t\t} else if (this._model.ValueType === ConditionValueTypes.ScreenVariable) {\r\n\t\t\t\teditor = new Text();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableResetButton(true);\r\n\t\t\t} else if (operator === ComparisonOperators.IsNull || operator === ComparisonOperators.IsNotNull) {\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Text || fieldType === FIELD_TYPES.PKey || fieldType === FIELD_TYPES.Integer || fieldType === FIELD_TYPES.Decimal || fieldType === FIELD_TYPES.Alias) {\r\n\t\t\t\teditor = new Text();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.YesNo) {\r\n\t\t\t\teditor = new YesNo();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Date || fieldType === FIELD_TYPES.DateTime || fieldType === FIELD_TYPES.Time || fieldType === FIELD_TYPES.TimeSpan) {\r\n\t\t\t\tdateTimeFormat = FormatConverter.GetDateFormatFromFieldModel(this._model.Column.Metadata, true);\r\n\t\t\t\tconst date = value === '' ? value : moment(value).format(dateTimeFormat);\r\n\r\n\t\t\t\teditor = new DateEditor(this._model, dateTimeFormat, date);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Lookup) {\r\n\t\t\t\teditor = new Lookup(this.SelectedField().FieldMetadata);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.MultiSelect) {\r\n\t\t\t\teditor = new Lookup(this.SelectedField().FieldMetadata);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t\tthis.IsEnableAddMultipleValues(true);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Document && (operator === ComparisonOperators.NotEquals || operator === ComparisonOperators.Equals)) {\r\n\t\t\t\teditor = new DocumentStatusLookup();\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t} else if (fieldType === FIELD_TYPES.Spim ) {\r\n\t\t\t\teditor = new Spim(this.SelectedField().FieldMetadata);\r\n\t\t\t\teditor.Value(value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (editor) {\r\n\t\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\t\tif (editor instanceof DateEditor) {\r\n\t\t\t\t\tnewValue = this.ConvertDateTimeValue(newValue, dateTimeFormat, fieldType);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (editor instanceof QueryBuilder) {\r\n\t\t\t\t\tthis._model.Value = newValue;\r\n\t\t\t\t\tthis._model.SubQuery = null;\r\n\t\t\t\t\tthis._model.ValueType = ConditionValueTypes.QueryBuilder;\r\n\t\t\t\t}else if (this._operator().Value === ComparisonOperators.In || this._operator().Value === ComparisonOperators.NotIn || ((this.SelectedField() ? this.SelectedField().FieldMetadata.Type === FIELD_TYPES.MultiSelect : false) && this._operator().Value === ComparisonOperators.Equals )) {\r\n\t\t\t\t\tthis._model.Value = '';\r\n\r\n\t\t\t\t\t_.each(this._fieldValueEditors(), (editor) => {\r\n\t\t\t\t\t\tif (editor && editor.Value()) {\r\n\t\t\t\t\t\t\tthis._model.Value += this._model.Value === '' ? editor.Value() : `;${editor.Value()}`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._model.Value = newValue;\r\n\t\t\t\t\tthis._model.ValueType = ConditionValueTypes.General;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.RaiseChangeEvent();\r\n\t\t\t});\r\n\r\n\t\t\tif(editor instanceof Spim){\r\n\t\t\t\tthis._model.SPIMFeatureType = editor.FeatureType();\r\n\t\t\t\teditor.FeatureType.subscribe((newValue) => {\r\n\t\t\t\t\tthis._model.SPIMFeatureType = newValue;\r\n\t\t\t\t});\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn editor;\r\n\t}\r\n\r\n\tConvertDateTimeValue(value, dateTimeFormat: string, fieldType: string) {\r\n\t\tlet utcValue = FormatConverter.ConvertToUTC(value, dateTimeFormat);\r\n\t\tif(fieldType === FIELD_TYPES.DateTime || fieldType === FIELD_TYPES.Time){\r\n\t\t\treturn moment.utc(utcValue).format()\r\n\t\t}\r\n\t\t\r\n\t\treturn utcValue;\r\n\t}\r\n\r\n\tGetTemplate() {\r\n\t\treturn ConditionItemTemplate;\r\n\t}\r\n\r\n\tGetSimpleTemplate() {\r\n\t\treturn ConditionItemSimpleTemplate;\r\n\t}\r\n\r\n\tGetSPIMTemplate() {\r\n\t\treturn ConditionItemSPIMTemplate;\r\n\t}\r\n\r\n\tUpdateFieldList() {\r\n\t\t_.each(this.QueryEntities(), (entity: QueryEntityModel) => {\r\n\t\t\t_.each(entity.Metadata.Fields, (fieldMetadata: FieldMetadataModel) => {\r\n\t\t\t\tconst existsField = _.find(this.Fields(), (field) => {\r\n\t\t\t\t\treturn field.QueryEntityGuid === entity.Guid && field.FieldMetadata.Id === fieldMetadata.Id;\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!existsField) {\r\n\r\n\t\t\t\t\tif(fieldMetadata.LifestatusName !== LifeStatusEnum.Delete || fieldMetadata.Id === this._model?.Column?.Metadata?.Id){\r\n\t\t\t\t\t\tthis.Fields.push(new ConditionItemField(entity, fieldMetadata));\r\n\t\t\t\t\t}\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate RemoveDeletedField(){\r\n\t\t_.each(this.Fields(), field=>{\r\n\t\t\tif(field.FieldMetadata.LifestatusName === LifeStatusEnum.Delete && field.FieldMetadata.Id !== this.SelectedField()?.FieldMetadata.Id){\r\n\t\t\t\tthis.Fields.splice(this.Fields.indexOf(field), 1);\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tUpdateValueFieldList() {\r\n\t\tthis.ValueFields([]);\r\n\r\n\t\tif (this.SelectedField()) {\r\n\t\t\t_.each(this.QueryEntities(), (entity: QueryEntityModel) => {\r\n\t\t\t\t_.each(entity.Metadata.Fields, (fieldMetadata: FieldMetadataModel) => {\r\n\t\t\t\t\tconst existsField = _.find(this.ValueFields(), (field) => {\r\n\t\t\t\t\t\treturn field.QueryEntityGuid === entity.Guid && field.FieldMetadata.Id === fieldMetadata.Id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (!existsField && TYPES_COMPATIBILITY[this.SelectedField().FieldMetadata.Type].Types.indexOf(fieldMetadata.Type) >=0 ) {\r\n\t\t\t\t\t\tthis.ValueFields.push(new ConditionItemField(entity, fieldMetadata));\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tif (this._model.ValueColumn && this._model.ValueType === ConditionValueTypes.Column) {\r\n\t\t\t\tconst selectedField = _.find(this.ValueFields(),\r\n\t\t\t\t\t(field) => {\r\n\t\t\t\t\t\treturn field.QueryEntityGuid === this._model.ValueColumn.QueryEntityGuid &&\r\n\t\t\t\t\t\t\tfield.FieldMetadata.Id === this._model.ValueColumn.Metadata.Id;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\tif (selectedField) {\r\n\t\t\t\t\tthis._model.ValueColumn.Metadata = selectedField.FieldMetadata;\r\n\t\t\t\t\tthis.SelectedValueField(selectedField);\r\n\t\t\t\t\tthis.SelectedValueFieldId(selectedField.id);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst firstField = _.first(this.ValueFields());\r\n\t\t\t\t\tif (firstField) {\r\n\t\t\t\t\t\tthis.SelectedValueField(firstField);\r\n\t\t\t\t\t\tthis.SelectedValueFieldId(firstField.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget Model() {\r\n\t\treturn this._model;\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t}\r\n\r\n\tPasteVariable(controlField: string) {\r\n\t\tconst editor = new Text();\r\n\r\n\t\teditor.Value(controlField);\r\n\t\tthis._fieldValueEditors([editor]);\r\n\t\tthis._model.ValueType = ConditionValueTypes.ScreenVariable;\r\n\t\tthis._model.Value = controlField;\r\n\t\tthis.IsEnableResetButton(true);\r\n\r\n\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\tthis._model.Value = newValue;\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tFormatControlField(controlField: IControlAttachedField){\r\n\t\tif(controlField.ControlType === CONTROL_TYPES.LinkList){\r\n\t\t\treturn `$[LinkList].[Main].[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n\t\t}\r\n\r\n\t\treturn `$[${controlField.Field.EntityName}].[${controlField.Field.Name}]`;\r\n\t}\r\n\r\n\tPasteFunction(func: string) {\r\n\t\tconst editor = new Text();\r\n\r\n\t\teditor.Value(func);\r\n\t\tthis._fieldValueEditors([editor]);\r\n\t\tthis._model.ValueType = ConditionValueTypes.Function;\r\n\t\tthis._model.Value = func;\r\n\t\tthis.IsEnableResetButton(true);\r\n\r\n\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\tthis._model.Value = newValue;\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\r\n\t\tthis.RaiseChangeEvent();\r\n\t}\r\n\r\n\tPasteQuery() {\r\n\t\tconst editor = new QueryBuilder(this.SelectedField().FieldMetadata, this._originalScreenFields);\r\n\r\n\t\tthis._fieldValueEditors([editor]);\r\n\t\teditor.ShowQueryBuilder();\r\n\t\tthis._model.ValueType = ConditionValueTypes.QueryBuilder;\r\n\t\tthis.IsEnableAddMultipleValues(false);\r\n\r\n\t\teditor.Value.subscribe((newValue) => {\r\n\t\t\tthis._model.Value = newValue;\r\n\r\n\t\t\tthis.RaiseChangeEvent();\r\n\t\t});\r\n\r\n\t\tthis.IsEnableResetButton(true);\r\n\t}\r\n\r\n\tReset() {\r\n\t\tthis._model.ValueType = ConditionValueTypes.General;\r\n\t\tthis._model.Value = '';\r\n\t\tthis.UpdateEditor();\r\n\t\tthis.IsEnableResetButton(false);\r\n\t\tthis.IsEnableAddMultipleValues(this._model.Operator === ComparisonOperators.In || (this.SelectedField() ? this.SelectedField().FieldMetadata.Type === FIELD_TYPES.MultiSelect : false) );\r\n\t}\r\n\r\n\r\n\tShowValueFieldList() {\r\n\t\tthis.ShowValueEditorButton(true);\r\n\t\tthis.ShowValueFieldListButton(false);\r\n\r\n\t\tif (this.SelectedField()) {\r\n\t\t\tthis.UpdateValueFieldList();\r\n\t\t}\r\n\t}\r\n\r\n\tShowValueEditor() {\r\n\t\tthis.ShowValueFieldListButton(true);\r\n\t\tthis.ShowValueEditorButton(false);\r\n\t}\r\n}","// Module\nvar code = \"<form class=\\\"form-horizontal\\\"> <div class=\\\"control-group\\\"> <div class=\\\"controls form-inline\\\"> <select data-bind=\\\"selectize: $data.Fields,\\r\\n\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\tdropdownDirection: 'auto',\\r\\n\\t\\t\\t\\t\\t\\tdropdownParent: 'body',\\r\\n\\t\\t\\t\\t\\t\\tplugins: ['hidden_textfield', 'scroll_parent', 'dropdown_direction'],\\r\\n\\t\\t\\t\\t\\t\\tplaceholder: 'Select value...',\\r\\n\\t\\t\\t\\t\\t\\ttitle: $data.SelectedField() && $data.SelectedField().Title || ''\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\toptionsText: 'title',\\r\\n\\t\\t\\t\\t\\tvalue: $data.SelectedFieldId,\\r\\n\\t\\t\\t\\t\\tobject: $data.SelectedField\\\" class=\\\"form-control input-sm dropdown-selectize-medium\\\"> </select> <select data-bind=\\\"options: $data._comparisonOperators, optionsText: 'Label', value: $data._operator\\\" class=\\\"form-control input-sm dropdown-selectize-small\\\"></select> <!-- ko if: $data.ShowValueFieldListButton() --> <!-- ko foreach: $data._fieldValueEditors --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- ko if: $parent._fieldValueEditors().length > 1 --> <div class=\\\"btn-group multiple-values-btn-group\\\" style=\\\"display:inline-block\\\"> <a data-bind=\\\"click: $parent.RemoveEditor.bind($parent, $data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red\\\" title=\\\"Remove\\\"> <i class=\\\"fa fa-minus\\\"></i> </a> </div> <!-- /ko --> <!-- /ko --> <!-- ko if: IsEnableAddMultipleValues --> <div class=\\\"btn-group multiple-values-btn-group\\\" style=\\\"display:inline-block\\\"> <a data-bind=\\\"click: $data.AddEditor.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only green\\\" title=\\\"Add\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> </div> <!-- /ko --> <!-- ko if: IsEnableResetButton --> <a data-bind=\\\"click: $data.Reset.bind($data)\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red reset\\\" title=\\\"Reset\\\"> <i class=\\\"fa fa-refresh\\\"></i> </a> <!-- /ko --> <!-- ko if: IsEnableShowParam --> <span class=\\\"show-params-wrapper\\\"> <span>Show param</span> <input data-bind=\\\"uniform: ShowParam, checked: ShowParam\\\" type=\\\"checkbox\\\"> </span> <!-- /ko --> <!-- /ko --> <!-- ko if: !$data.ShowValueFieldListButton() --> <select data-bind=\\\"selectize: $data.ValueFields,\\r\\n\\t\\t\\t\\t\\toptions: {\\r\\n\\t\\t\\t\\t\\t\\tdropdownDirection: 'auto',\\r\\n\\t\\t\\t\\t\\t\\tdropdownParent: 'body',\\r\\n\\t\\t\\t\\t\\t\\tplugins: ['hidden_textfield', 'scroll_parent'],\\r\\n\\t\\t\\t\\t\\t\\tplaceholder: 'Select value...',\\r\\n\\t\\t\\t\\t\\t\\ttitle: $data.SelectedValueField() && $data.SelectedValueField().Title || ''\\r\\n\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\toptionsText: 'title',\\r\\n\\t\\t\\t\\t\\tvalue: $data.SelectedValueFieldId,\\r\\n\\t\\t\\t\\t\\tobject: $data.SelectedValueField\\\" class=\\\"form-control input-sm dropdown-selectize-medium\\\"> </select> <!-- /ko --> <div class=\\\"btn-group\\\"> <a data-bind=\\\"click: $parent.DeleteConditionRule.bind($parent),\\r\\n\\t\\t\\t\\t\\t\\t\\t\\tattr: { title: $data._labels.REMOVE_LABEL}\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only red\\\"> <i class=\\\"fa fa-remove\\\"></i> </a> <div class=\\\"pasteVariableDropdownBox\\\"> <a data-bind=\\\"click: ShowPasteVariableDropdown, attr: {\\r\\n\\t\\t\\t\\t\\t'disabled': !$data.IsEnableQueryBuilder() && $data._screenFields().length === 0 && $data._functions().length === 0,\\r\\n\\t\\t\\t\\t\\t'title': $data._labels.PASTE_VARIABLE_LABEL}\\\" class=\\\"btn btn-icon-only blue dropdown-toggle\\\" href=\\\"#\\\"> <i class=\\\"fa fa-list\\\"></i> </a> </div> <a data-bind=\\\"click: $data.ShowValueFieldList.bind($data), visible: $data.ShowValueFieldListButton\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only blue\\\"> <i class=\\\"fa fa-list-alt\\\"></i> </a> <a data-bind=\\\"click: $data.ShowValueEditor.bind($data), visible: $data.ShowValueEditorButton\\\" href=\\\"javascript:;\\\" class=\\\"btn btn-icon-only blue\\\"> <i class=\\\"fa fa-edit\\\"></i> </a> </div> </div> </div> </form>\";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"condition-items__row\\\"> <div class=\\\"condition-items__cell field-column\\\"> <!-- ko with: $data.SelectedField --> <span data-bind=\\\"text: Title\\\"></span> <!-- /ko --> </div> <div class=\\\"condition-items__cell condition-items__operator\\\"> <!-- ko with: $data._operator --> <span data-bind=\\\"text: Label\\\"></span> <!-- /ko --> </div> <div class=\\\"condition-items__cell condition-items__value-column\\\"> <!-- ko foreach: $data._fieldValueEditors --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> </div> \";\n// Exports\nexport default code;","// Module\nvar code = \"<div class=\\\"value-column\\\"> <!-- ko foreach: $data._fieldValueEditors --> <!-- ko template: { html: $data.GetTemplate.bind($data), afterRender: $data.AfterRender.bind($data) } --><!-- /ko --> <!-- /ko --> </div> \";\n// Exports\nexport default code;","import {FIELD_TYPES} from 'Core/Constant';\r\nimport {ComparisonOperators} from 'QueryBuilder/Enums';\r\n\r\nexport const FUNCTIONS = {\r\n\tTODAY: '$Now',\r\n\tTODAY_ADD_DAYS: '$Now.AddDays(1)',\r\n\tUSER: '$UserId',\r\n\tOWNER_PROFILE: '$OwnerProfileId',\r\n\tSUBJECT_RECORD_ID: '$SubjectRecordId',\r\n\tSUBJECT_TYPE_ID: '$SubjectTypeId',\r\n\tSUBJECT_STATUS_ID: '$SubjectStatusId',\r\n\tSUBJECT_KIND_ID: '$SubjectKindId',\r\n IMPORT_METHOD_ID: \"$ImportMethodId\"\r\n}\r\n\r\ninterface IDictionary<T> {\r\n\t[k: string]: T;\r\n}\r\n\r\nexport interface IConditionItemConfig {\r\n\tShowParam: boolean;\r\n\tOperators: Array<ComparisonOperators>;\r\n\tFunctions: Array<string>;\r\n}\r\n\r\nexport interface ITypeCompatibility {\r\n\tTypes: Array<string>;\r\n}\r\n\r\nexport var CONFIG: IDictionary<IConditionItemConfig> = { };\r\n\r\nexport var TYPES_COMPATIBILITY: IDictionary<ITypeCompatibility> = { };\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Spim] = {\r\n\tTypes: []\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Text] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color,\r\n\t\tFIELD_TYPES.Icon\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Alias] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color,\r\n\t\tFIELD_TYPES.Icon\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Color] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color,\r\n\t\tFIELD_TYPES.Icon\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Memo] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Memo\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Integer] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.PKey] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.YesNo] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Sort] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Decimal] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Lookup] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Radio] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Integer,\r\n\t\tFIELD_TYPES.PKey,\r\n\t\tFIELD_TYPES.YesNo,\r\n\t\tFIELD_TYPES.Sort,\r\n\t\tFIELD_TYPES.Decimal,\r\n\t\tFIELD_TYPES.Lookup,\r\n\t\tFIELD_TYPES.Radio\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Reference] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Reference\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.MultiSelect] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.MultiSelect\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Date] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.DateTime]= {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Time]= {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.TimeSpan] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Date,\r\n\t\tFIELD_TYPES.DateTime,\r\n\t\tFIELD_TYPES.Time,\r\n\t\tFIELD_TYPES.TimeSpan\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Currency] = { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Document] = { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Image] = { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Icon] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Text,\r\n\t\tFIELD_TYPES.Alias,\r\n\t\tFIELD_TYPES.Color\r\n\t]\r\n};\r\n\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Password]= { Types: [] };\r\nTYPES_COMPATIBILITY[FIELD_TYPES.Guid] = {\r\n\tTypes: [\r\n\t\tFIELD_TYPES.Guid\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Alias] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t\tComparisonOperators.Like,\r\n\t\tComparisonOperators.StartsWith,\r\n\t\tComparisonOperators.NotStartWith,\r\n\t\tComparisonOperators.EndsWith,\r\n\t\tComparisonOperators.NotEndWith,\r\n\t\tComparisonOperators.NotLike\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Color] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Date] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n ], Functions: [FUNCTIONS.TODAY, FUNCTIONS.TODAY_ADD_DAYS]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.DateTime] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n ], Functions: [FUNCTIONS.TODAY, FUNCTIONS.TODAY_ADD_DAYS]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Time] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.TimeSpan] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Decimal] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Document] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.FlagCheck] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Guid] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Icon] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Image] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Integer] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual\r\n\t], Functions: [\r\n\t\tFUNCTIONS.USER,\r\n\t\tFUNCTIONS.SUBJECT_RECORD_ID,\r\n\t\tFUNCTIONS.SUBJECT_TYPE_ID,\r\n\t\tFUNCTIONS.SUBJECT_KIND_ID,\r\n\t\tFUNCTIONS.SUBJECT_STATUS_ID,\r\n\t\tFUNCTIONS.OWNER_PROFILE,\r\n\t\tFUNCTIONS.IMPORT_METHOD_ID\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Lookup] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: [\r\n\t\tFUNCTIONS.USER,\r\n\t\tFUNCTIONS.SUBJECT_RECORD_ID,\r\n\t\tFUNCTIONS.SUBJECT_TYPE_ID,\r\n\t\tFUNCTIONS.SUBJECT_KIND_ID,\r\n\t\tFUNCTIONS.SUBJECT_STATUS_ID,\r\n\t\tFUNCTIONS.OWNER_PROFILE,\r\n\t\tFUNCTIONS.IMPORT_METHOD_ID\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Memo] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.MultiSelect] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Password] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.PKey] = {\r\n\tShowParam: false, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t\tComparisonOperators.Like,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.StartsWith,\r\n\t\tComparisonOperators.EndsWith,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.NotStartWith,\r\n\t\tComparisonOperators.NotEndWith,\r\n\t\tComparisonOperators.NotLike\r\n\t], Functions: [\r\n\t\tFUNCTIONS.USER,\r\n\t\tFUNCTIONS.SUBJECT_RECORD_ID,\r\n\t\tFUNCTIONS.SUBJECT_TYPE_ID,\r\n\t\tFUNCTIONS.SUBJECT_KIND_ID,\r\n\t\tFUNCTIONS.SUBJECT_STATUS_ID,\r\n\t\tFUNCTIONS.IMPORT_METHOD_ID\r\n\t]\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Radio] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.Text] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Like,\r\n\t\tComparisonOperators.IsNull,\r\n\t\tComparisonOperators.IsNotNull,\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.In,\r\n\t\tComparisonOperators.NotIn,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual,\r\n\t\tComparisonOperators.StartsWith,\r\n\t\tComparisonOperators.NotStartWith,\r\n\t\tComparisonOperators.EndsWith,\r\n\t\tComparisonOperators.NotEndWith,\r\n\t\tComparisonOperators.NotLike\r\n\t], Functions: []\r\n};\r\n\r\nCONFIG[FIELD_TYPES.YesNo] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals,\r\n\t\tComparisonOperators.NotEquals,\r\n\t\tComparisonOperators.GreaterThen,\r\n\t\tComparisonOperators.GreaterOrEqual,\r\n\t\tComparisonOperators.LessThen,\r\n\t\tComparisonOperators.LessOrEqual\r\n\t], Functions: []\r\n};\r\n\r\n\r\nCONFIG[FIELD_TYPES.Spim] = {\r\n\tShowParam: true, Operators: [\r\n\t\tComparisonOperators.Equals\r\n\t], Functions: []\r\n};","export var EVENTS = {\r\n\tSAVE: 'SAVE'\r\n}","import * as _ from 'underscore';\r\nimport * as ko from 'knockout';\r\n\r\nimport { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryConditionGroupModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { QueryConditionItemModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { Modal } from 'Core/Common/Modal';\r\nimport { ConditionItem } from 'QueryBuilder/QueryCondition/ConditionItem/ConditionItem';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport { EVENTS } from 'QueryBuilder/QueryParamsPage/Events';\r\nimport { Event } from 'Core/Common/Event';\r\nimport { LABELS } from \"Core/Components/Translation/Locales\";\r\nimport { Util } from 'QueryBuilder/Util';\r\nimport { EntityMetadataStore } from 'QueryBuilder/Stores/EntityMetadataStore';\r\nimport { BlockUI } from 'Core/Common/BlockUi';\r\nimport { ViewModes } from 'Core/Controls/Grid/BaseGrid/Enums/ViewModes';\r\nimport { FIELD_TYPES } from 'Core/Constant';\r\nimport { ConditionValueTypes } from 'QueryBuilder/Enums';\r\n\r\nimport clone from 'clone'\r\n\r\nimport Template from 'QueryBuilder/QueryParamsPage/Templates/QueryParamsPage.html';\r\nimport { ConditionGroup } from '../QueryCondition/ConditionGroup/ConditionGroup';\r\nimport { Utils } from '../../Core/Common/Utils';\r\nimport {MobileChecker} from \"Core/Common/MobileChecker\";\r\n\r\nko.templates['QueryBuilder/QueryParamsPage/Templates/QueryParamsPage'] = Template;\r\n\r\nexport class QueryParamsPage extends Event {\r\n\tprivate _model: QueryExpressionModel;\r\n\tprivate _modal: Modal;\r\n\tprivate _showParameters: KnockoutObservableArray<ConditionItem>;\r\n\tprivate _spimParameters: Array<ConditionItem>;\r\n\tprivate _labels = LABELS;\r\n\tprivate _queryType: string;\r\n\tprivate _spimConditions: KnockoutObservableArray<ConditionGroup>;\r\n\tprivate _planningDate: string;\r\n\r\n\tconstructor(model: QueryExpressionModel, queryType: string, planningDate: string = '') {\r\n\t\tsuper();\r\n\t\tthis._planningDate = planningDate;\r\n\t\tthis._model = model;\r\n\t\tthis._queryType = queryType;\r\n\t\tthis._showParameters = ko.observableArray([]);\r\n\t\tthis._spimParameters = [];\r\n\t\tthis._spimConditions = ko.observableArray(null);\r\n\t\tthis.Init();\r\n\t}\r\n\r\n\tprivate Init() {\r\n\t\tthis.AddEvent(EVENTS.SAVE);\r\n\t}\r\n\r\n\tget SpimCondition(): KnockoutObservableArray<ConditionGroup>{\r\n\t\treturn this._spimConditions;\r\n\t}\r\n\r\n\tget ConditionItems(): KnockoutObservableArray<ConditionItem> {\r\n\t\treturn this._showParameters;\r\n\t}\r\n\r\n\tHasShowParameters() {\r\n\t\tvar showParameters = this.GetShowParams(this._model.Condition);\r\n\t\treturn showParameters.length > 0;\r\n\t}\r\n\r\n\tprivate GetShowParams(condition: QueryConditionGroupModel): Array<QueryConditionItemModel> {\r\n\t\treturn _.filter(Util.GetAllConditions(this._model.Condition), item=>item.ShowParam);\r\n\t}\r\n\r\n\tShow() {\r\n\t\tlet autoStart = !!this._planningDate;\r\n\t\tvar entities = Util.GetAllQueryEntities(this._model);\r\n\t\tvar ids = _.map(entities, (entity) => { return entity.Metadata.Id });\r\n\t\tBlockUI.Block();\r\n\t\tEntityMetadataStore.GetEntitiesMetadata({ EntityIds: ids })\r\n\t\t\t.always(() => {\r\n\t\t\t\tBlockUI.Unblock();\r\n\t\t\t})\r\n\t\t\t.then((data) => {\r\n\t\t\t\t_.each(entities, (entity) => {\r\n\t\t\t\t\tvar metadata = _.find(data, (item) => item.EntityMetadata.Id === entity.Metadata.Id);\r\n\t\t\t\t\tif (metadata) {\r\n\t\t\t\t\t\tentity.Metadata = metadata.EntityMetadata;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\tlet spimParams = [];\t\r\n\t\t\t_.each(this.GetShowParams(this._model.Condition), (item) => {\r\n\t\t\t\tvar conditionItem = new ConditionItem(item, ko.observableArray(entities), [], false);\r\n\t\t\t\tif(conditionItem.HasMetadata){\r\n\r\n\t\t\t\t\tif(conditionItem.Model.Column.Metadata.Name === 'DECDATE'){\r\n\t\t\t\t\t\tconditionItem.Model.Value = this._planningDate;\r\n\t\t\t\t\t\tconditionItem.UpdateEditor();\r\n\t\t\t\t\t}else if(!!this._planningDate){\r\n\t\t\t\t\t\tautoStart = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif((conditionItem.Model.Column.Metadata.Type === FIELD_TYPES.Spim\r\n\t\t\t\t\t\t|| conditionItem.Model.Column.Metadata.Name === 'F_UNIT'\r\n\t\t\t\t\t\t|| conditionItem.Model.Column.Metadata.Name === 'F_FEATURE')\r\n\t\t\t\t\t\t&& this._queryType === ViewModes[ViewModes.Spim])\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\titem.IsEnabled = false;\r\n\t\t\t\t\t\tspimParams.push(conditionItem);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis._showParameters.push(conditionItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tspimParams = this.SortSpimConditions(spimParams);\r\n\r\n\t\t\tthis._spimParameters = spimParams;\r\n\r\n\t\t\tconst resizePopupOptions = {\r\n widthInPercent: MobileChecker.IsMobile() ? 95 : 85,\r\n heightInPercent: MobileChecker.IsMobile() ? 60 : 50\r\n };\r\n\r\n\t\t\tif(!autoStart){\r\n\t\t\t\tthis._modal = new Modal( {\r\n\t\t\t\t\taddClass: 'query-builder-modal-Spim jBox-padding-15px',\r\n\t\t\t\t}, false, false, resizePopupOptions);\r\n\t\t\t\tthis.Render();\r\n\t\t\t}else{\r\n\t\t\t\tthis.Trigger(EVENTS.SAVE);\r\n\t\t\t}\t\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tSortSpimConditions(conditionItems: Array<ConditionItem>){\r\n\t\treturn _.sortBy(conditionItems, (param) => {\r\n\t\t\tif(param.Model.Column.Metadata.Name === 'F_FEATURE'){\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(param.Model.Column.Metadata.Type === FIELD_TYPES.Spim){\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\tif(param.Model.Column.Metadata.Name === 'F_UNIT'){\r\n\t\t\t\treturn 2;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tAddSpimCondition(){\r\n\t\tvar entities = Util.GetAllQueryEntities(this._model);\r\n\t\tlet newGroupModel = new QueryConditionGroupModel();\r\n\r\n\t\t_.each(this._spimParameters, (param) => {\r\n\t\t\tlet paramModel = clone(param.Model) as QueryConditionItemModel;\r\n\t\t\tparamModel.IsEnabled = true;\r\n\t\t\tnewGroupModel.Items.push(paramModel);\r\n\t\t});\r\n\r\n\t\tlet newGroup = new ConditionGroup(false, newGroupModel, ViewModes.Spim, ko.observableArray(entities), [], false);\r\n\r\n\t\tthis._spimConditions.push(newGroup);\r\n\t\tthis._model.Condition.ConditionGroups.push(newGroupModel);\r\n\r\n\t\tif(!this._model.SpimCondition){\r\n\t\t\tthis._model.SpimCondition = new QueryConditionGroupModel();\r\n\t\t}\r\n\r\n\t\tthis._model.SpimCondition.ConditionGroups.push(newGroupModel);\r\n\t}\r\n\r\n\tRemoveSpimCondition(group: ConditionGroup){\r\n\t\tthis._spimConditions.splice(this._spimConditions().indexOf(group), 1);\r\n\t\tthis._model.Condition.ConditionGroups.splice(this._model.Condition.ConditionGroups.indexOf(group.Model), 1);\r\n\t}\r\n\r\n\tAfterRender() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Show();\r\n\t\t}\r\n\t}\r\n\r\n\tRender(): void {\r\n\t\tko.cleanNode(this._modal.Wrapper);\r\n\t\tko.applyBindings(this, this._modal.Wrapper);\r\n\t}\r\n\r\n\tGetTemplateName() {\r\n\t\treturn 'QueryBuilder/QueryParamsPage/Templates/QueryParamsPage';\r\n\t}\r\n\r\n\tSave() {\r\n\t\tthis.Trigger(EVENTS.SAVE);\r\n\t\tthis.Close();\r\n\t}\r\n\r\n\tClose() {\r\n\t\tif (this._modal) {\r\n\t\t\tthis._modal.Close();\r\n\t\t}\r\n\t}\r\n}","// Module\nvar code = \"<div class=\\\"portlet light\\\"> <div class=\\\"relative-block\\\"> <div class=\\\"actionBarSubForm\\\"> <form role=\\\"form\\\"> <div class=\\\"form-body\\\"> <div class=\\\"clearfix\\\"> <div class=\\\"pull-left\\\"> <a data-bind=\\\"click: Save\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-play run-query-icon\\\"></i> <!-- ko text: _labels.RUN --><!-- /ko --> </a> <a data-bind=\\\"click: Close\\\" href=\\\"javascript:;\\\" class=\\\"btn red ui-icon-cancel subFormControl\\\"> <i class=\\\"fa fa-close\\\"></i> <!-- ko text: _labels.CANCEL --><!-- /ko --> </a> </div> </div> </div> </form> </div> <div class=\\\"condition-items\\\"> <div class=\\\"box-shadow-wrapper margin-t-15px\\\"> <div class=\\\"condition-items-wrap\\\"> <!-- ko foreach: ConditionItems --> <!-- ko template: { html: $data.GetSimpleTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> </div> </div> </div> <!-- ko if: _spimParameters.length > 0 --> <div class=\\\"box-shadow-wrapper margin-t-15px\\\"> <div class=\\\"form-group condition-item-simple\\\"> <div class=\\\"controls form-inline row ConsultScreenView EditScreenView\\\"> <fieldset class=\\\"group-control\\\"> <legend class=\\\"group-control-label\\\" data-bind=\\\"text: 'Spim'\\\"></legend> <div class=\\\"group-elements\\\"> <div class=\\\"group-elements-container\\\"> <!-- ko foreach: _spimParameters --> <div class=\\\"columnTitle\\\" data-bind=\\\"text: Model.Column.Metadata.Name\\\"></div> <!-- /ko --> <div class=\\\"actionsBox\\\"> </div> </div> </div> <!-- ko foreach: _spimConditions --> <div class=\\\"group-elements\\\"> <div class=\\\"group-elements-container\\\"> <!-- ko foreach: ConditionItems --> <!-- ko template: { html: $data.GetSPIMTemplate.bind($data), afterRender: $data.AfterRender.bind($data)} --><!-- /ko --> <!-- /ko --> <div class=\\\"actionsBox\\\"> <a href=\\\"javascript:;\\\" class=\\\"btn red delete-button subFormControl\\\" data-bind=\\\"click: $parent.RemoveSpimCondition.bind($parent, $data), tooltip:{ content: $parent._labels.REMOVE_LABEL} \\\"> <i class=\\\"fa fa-trash\\\"></i> </a> </div> </div> </div> <!-- /ko --> <a data-bind=\\\"click: AddSpimCondition\\\" href=\\\"javascript:;\\\" class=\\\"btn green subFormControl\\\"> <i class=\\\"fa fa-plus\\\"></i> </a> </fieldset> </div> </div> </div> <!-- /ko --> </div> </div>\";\n// Exports\nexport default code;","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\n\r\nexport interface IDeleteQueryRequestModel {\r\n\tId: number;\r\n};\r\n\r\nexport class DeleteQueryStore {\r\n\tstatic Delete(params: IDeleteQueryRequestModel): P.Promise<OperationResultModel> {\r\n\r\n\t\tvar deferredResult = P.defer<OperationResultModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.DELETE_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tif (data.IsSuccessfull) {\r\n\t\t\t\t\tdeferredResult.resolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferredResult.reject({ message: data.ErrorMessage });\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {EntityRelationshipsMetadataModel} from 'Core/Controls/Grid/Models/GridDataModel/Metadata/EntityRelationshipsMetadataModel';\r\n\r\nexport interface IGetEntityMetadataRequestModel {\r\n\tEntityId: number;\r\n};\r\n\r\nexport interface IGetEntitiesMetadataRequestModel {\r\n\tEntityIds: Array<number>;\r\n};\r\n\r\nexport class EntityMetadataStore {\r\n\t\r\n\tstatic GetEntityMetadata(params: IGetEntityMetadataRequestModel): P.Promise<EntityRelationshipsMetadataModel> {\r\n\r\n\t\tvar deferredResult = P.defer<EntityRelationshipsMetadataModel>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/VisualQueryBuilderApi/GetEntityMetadata',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tvar result = <EntityRelationshipsMetadataModel>Deserialize(data, EntityRelationshipsMetadataModel);\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetEntitiesMetadata(params: IGetEntitiesMetadataRequestModel): P.Promise<Array<EntityRelationshipsMetadataModel>> {\r\n\r\n\t\tvar deferredResult = P.defer<Array<EntityRelationshipsMetadataModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/VisualQueryBuilderApi/GetEntitiesMetadata',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tvar result = Deserialize(data, EntityRelationshipsMetadataModel);\r\n\t\t\t\tdeferredResult.resolve(result);\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\nimport {EditQueryModel} from 'QueryBuilder/Models/EditQueryModel';\r\n\r\nexport interface IGetQueryRequestModel {\r\n\tId: number;\r\n};\r\n\r\nexport class GetQueryStore {\r\n\tstatic Get(params: IGetQueryRequestModel): P.Promise<EditQueryModel> {\r\n\r\n\t\tvar deferredResult = P.defer<EditQueryModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.EDIT_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t}).fail(error=>{\r\n\t\t\t\tconst errorObject = JSON.parse(error.message);\r\n\t\t\t\tconst errorMessage = errorObject.Message;\r\n\t\t\t\tdeferredResult.reject({message: errorMessage});\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetToolbarQuery(params: IGetQueryRequestModel): P.Promise<EditQueryModel> {\r\n\t\tvar deferredResult = P.defer<EditQueryModel>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.GET_TOOLBAR_QUERY,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(this.Deserialize(data));\r\n\t\t\t}).fail(error=>{\r\n\t\t\t\tconst errorObject = JSON.parse(error.message);\r\n\t\t\t\tconst errorMessage = errorObject.Message;\r\n\t\t\t\tdeferredResult.reject({message: errorMessage});\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic Deserialize(jsonObject: any): EditQueryModel {\r\n\t\tconst model = <EditQueryModel>Deserialize(jsonObject, EditQueryModel);\r\n\t\treturn model;\r\n\t}\r\n}","import {P} from 'Core/Common/Promise';\r\nimport {URL} from 'Core/Common/Url';\r\nimport {IRequestOptions, Request} from 'Core/Common/Request';\r\n\r\nimport {OperationResultModel} from 'Core/Models/OperationResultModel';\r\n\r\nexport interface ILockQueryRequestModel {\r\n Id: number;\r\n}\r\n\r\nexport class LockQueryStore {\r\n static Lock(params: ILockQueryRequestModel) {\r\n const deferredResult = P.defer<OperationResultModel>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.QUERY_BUILDER.LOCK_QUERY,\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n static Unlock(params: ILockQueryRequestModel) {\r\n const deferredResult = P.defer<OperationResultModel>();\r\n const requestParams: IRequestOptions = {\r\n proxy: {\r\n url: URL.QUERY_BUILDER.UNLOCK_QUERY,\r\n dataType: 'json',\r\n type: 'GET'\r\n }, params: params\r\n };\r\n Request.Send(requestParams)\r\n .then(data => {\r\n if (data.IsSuccessfull) {\r\n deferredResult.resolve(null);\r\n } else {\r\n deferredResult.reject({ message: data.ErrorMessage });\r\n }\r\n\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n}","import {deserialize} from 'libs/cerialize';\r\n\r\nexport class GenericButtonModel {\r\n @deserialize\r\n Id: number;\r\n\r\n @deserialize\r\n Name: string;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\nimport {GenericButtonModel} from 'QueryBuilder/Models//GenericButtonModel';\r\n\r\nexport class QueryScreenModel {\r\n\r\n\tconstructor(){\r\n\t\tthis.GenericButtons = [];\r\n\t}\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserializeAs(GenericButtonModel)\r\n\tGenericButtons: Array<GenericButtonModel>;\r\n}","import {deserialize, deserializeAs} from 'libs/cerialize';\r\n\r\nexport class CardScreenModel {\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n}","import {deserialize} from 'libs/cerialize';\r\nimport * as ko from 'knockout';\r\n\r\nexport class RelationTypeValueModel {\r\n\r\n\tpublic ShowNexRelationButton: KnockoutObservable<boolean>;\r\n\r\n public ShowEditRelationButton: KnockoutObservable<boolean>;\r\n\r\n\tconstructor(){\r\n\t\tthis.ShowNexRelationButton = ko.observable(false);\r\n\t\tthis.ShowEditRelationButton = ko.observable(false);\r\n\t}\r\n\r\n\t@deserialize\r\n\tRelationTypeValueId: number;\r\n\r\n\t@deserialize\r\n\tRelationTypeValue: string;\r\n\r\n @deserialize\r\n\tType: string;\r\n\r\n\tget FullName(){\r\n\t\treturn `${this.Type}: ${this.RelationTypeValue}`;\r\n\t}\r\n}","import {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport {QueryScreenModel} from 'QueryBuilder/Models/QueryScreenModel';\r\nimport {CardScreenModel} from 'QueryBuilder/Models/CardScreenModel';\r\nimport { RelationTypeValueModel } from 'QueryBuilder/Models/RelationTypeValueModel';\r\n\r\nexport interface IInitTableViewQueryRequestModel {\r\n\tSubjectEntityId: number;\r\n\tControlId: number;\r\n\tQueryTypeName: string;\r\n};\r\n\r\nexport interface IGetQueryScreenRequestModel {\r\n\tEntityId: number;\r\n}\r\n\r\nexport interface IGetCardScreenRequestModel {\r\n\tEntityId: number;\r\n}\r\n\r\nexport interface IGetRelationTypeDto {\r\n\tLinkTableId: number;\r\n}\r\n\r\nexport class QueryBuilderStore {\r\n\tstatic GetQueryScreens(params: IGetQueryScreenRequestModel): P.Promise<Array<QueryScreenModel>> {\r\n\t\tvar deferredResult = P.defer<Array<QueryScreenModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.GET_QUERY_SCREENS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<Array<QueryScreenModel>>Deserialize(data.ResultObject, QueryScreenModel));\r\n\t\t\t});\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetCardScreens(params: IGetCardScreenRequestModel): P.Promise<Array<CardScreenModel>> {\r\n\t\tvar deferredResult = P.defer<Array<CardScreenModel>>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.QUERY_BUILDER.GET_CARD_SCREENS,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<Array<CardScreenModel>>Deserialize(data, CardScreenModel));\r\n\t\t\t}).fail(data => { \t\t\t\t\r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\r\n\tstatic GetRelationTypes(params: IGetRelationTypeDto): P.Promise<Array<RelationTypeValueModel>> {\r\n\t\tlet deferredResult = P.defer<Array<RelationTypeValueModel>>();\r\n\r\n\t\tlet requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/VisualQueryBuilderApi/GetRelationTypes',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => {\r\n\t\t\t\tdeferredResult.resolve(<Array<RelationTypeValueModel>>Deserialize(data, RelationTypeValueModel));\r\n\t\t\t}).fail(data => { \r\n\t\t\t\tlet jsonResult = JSON.parse(data.message);\r\n\t\t\t\tdeferredResult.reject({ message: jsonResult.ExceptionMessage || jsonResult.Message });\r\n\t\t\t });;\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n} ","import { QueryExpressionModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryExpressionModel';\r\nimport { QueryEntityModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityModel';\r\nimport { QueryEntityJoinModel } from 'Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryEntityJoinModel';\r\nimport {QueryColumnModel} from \"../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryColumnModel\";\r\nimport { QueryConditionGroupModel } from '../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionGroup';\r\nimport { ConditionValueTypes } from 'QueryBuilder/Enums';\r\nimport { QueryConditionItemModel } from '../Core/Controls/Grid/Models/GridDataModel/QueryExpression/QueryConditionItemModel';\r\nimport { g } from 'libs/rappid/build/rappid';\r\n\r\nexport class Util {\r\n\r\n\tpublic static GetParentEntity(entity: QueryEntityModel, expression: QueryExpressionModel): QueryEntityModel{\r\n\t\tlet result: QueryEntityModel = null;\r\n\t\tif(expression.Entity === entity) return null;\r\n\r\n\t\tlet joins = expression.EntityJoins\r\n\t\t\t.concat(expression.LookupEntityJoins)\r\n\t\t\t.concat(expression.ReferenceEntityJoins)\r\n\t\t\t.concat(expression.ReferenceLookupEntityJoins)\r\n\t\t\t.concat(expression.SubEntityJoins);\r\n\r\n\t\t_.each(joins,\r\n\t\t\tjoin => {\r\n\t\t\t\tif(join.LinkEntity === entity) {\r\n\t\t\t\t\tresult = expression.Entity;\r\n\t\t\t\t}\r\n\t\t\t\tif(join.Entity === entity){\r\n\t\t\t\t\tresult = expression.Entity;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult = result ? result : this.GetParentEntityFromJoin(join, entity);\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\tstatic GetParentEntityFromJoin(join: QueryEntityJoinModel, entity: QueryEntityModel): QueryEntityModel {\r\n\t\tlet result: QueryEntityModel = null;\r\n\t\tlet joins = join.Joins.concat(join.LookupEntityJoins).concat(join.ReferenceEntityJoins).concat(join.SubEntityJoins);\r\n\r\n\t\t_.each(joins,\r\n\t\t\titem => {\r\n\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\tif(item.LinkEntity === entity){\r\n\t\t\t\t\t\tresult = join.Entity;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(item.Entity === entity){\r\n\t\t\t\t\tresult = join.Entity;\r\n\t\t\t\t};\r\n\t\t\t\tresult = result ? result : this.GetParentEntityFromJoin(item, entity);\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllQueryColumns(expression: QueryExpressionModel): Array<QueryColumnModel>{\r\n\t\tlet result = [];\r\n\t\tlet allEntities = this.GetAllQueryEntities(expression);\r\n\t\t_.each(allEntities, (entity) => {\r\n\t\t\tresult = result.concat(entity.Columns);\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllQueryEntities(expression: QueryExpressionModel): Array<QueryEntityModel> {\r\n\t\tlet result = [];\r\n\t\tresult.push(expression.Entity);\r\n\r\n\t\tlet allJoins = expression.EntityJoins\r\n\t\t\t.concat(expression.LookupEntityJoins)\r\n\t\t\t.concat(expression.ReferenceLookupEntityJoins)\r\n\t\t\t.concat(expression.ReferenceEntityJoins)\r\n\t\t\t.concat(expression.SubEntityJoins);\r\n\r\n\t\t_.each(allJoins,\r\n\t\t\tjoin => {\r\n\t\t\t\tif(join){\r\n\t\t\t\t\tif(join.LinkEntity){\r\n\t\t\t\t\t\tresult.push(join.LinkEntity);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tresult.push(join.Entity);\r\n\t\t\t\t\tresult = result.concat(this.GetAllQueryEntitiesFromJoin(join));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\r\n\t\tlet conditions = _.filter(this.GetAllConditions(expression.Condition), item=> item.ValueType === ConditionValueTypes.QueryBuilder);\r\n\r\n\t\t_.each(conditions, (condition)=>{\r\n\t\t\tif(condition.SubQuery){\r\n\t\t\t\tresult = result.concat(this.GetAllQueryEntities(condition.SubQuery))\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstatic GetAllQueryEntitiesFromJoin(join: QueryEntityJoinModel): Array<QueryEntityModel> {\r\n\t\tlet result = [];\r\n\t\tlet joins = join.Joins\r\n\t\t\t.concat(join.LookupEntityJoins)\r\n\t\t\t.concat(join.ReferenceEntityJoins)\r\n\t\t\t.concat(join.SubEntityJoins)\r\n\t\t\t.concat(join.ReferenceLookupEntityJoins ? join.ReferenceLookupEntityJoins : join.ReferenceLookupEntityJoins = []);\r\n\r\n\t\t_.each(joins,\r\n\t\t\titem => {\r\n\t\t\t\tif(item.LinkEntity){\r\n\t\t\t\t\tresult.push(item.LinkEntity);\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(item.Entity);\r\n\t\t\t\tresult = result.concat(this.GetAllQueryEntitiesFromJoin(item));\r\n\t\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tstatic GetAllConditions(condition: QueryConditionGroupModel): Array<QueryConditionItemModel>{\r\n\t\tvar result = [];\r\n\r\n\t\tif(!condition){\r\n\t\t\treturn result;\r\n\t\t}\r\n\r\n\t\t_.each(condition.Items, (item) => {\r\n\t\t\tresult.push(item);\r\n\r\n\t\t\tif(item.ValueType === ConditionValueTypes.QueryBuilder && item.SubQuery){\r\n\t\t\t\tresult = result.concat(this.GetAllConditions(item.SubQuery.Condition));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t_.each(condition.ConditionGroups, (group) => {\r\n\t\t\tresult = result.concat(this.GetAllConditions(group));\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllJoins(expression: QueryExpressionModel): Array<QueryEntityJoinModel> {\r\n\t\tlet result = [];\r\n\t\r\n\t\tresult = [...expression.EntityJoins, ...expression.SubEntityJoins, ...expression.LookupEntityJoins, ...expression.ReferenceLookupEntityJoins, ...expression.ReferenceEntityJoins];\r\n\r\n\t\t_.each(result, (join)=>{\r\n\t\t\tresult = result.concat(this.GetAllJoinsFromJoin(join))\t\t\t\t\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetAllJoinsFromJoin(queryJoin: QueryEntityJoinModel): Array<QueryEntityJoinModel> {\r\n\t\tlet result = [];\r\n\t\r\n\t\tresult = [...queryJoin.Joins, ...queryJoin.SubEntityJoins, ...queryJoin.LookupEntityJoins, ...queryJoin.ReferenceLookupEntityJoins, ...queryJoin.ReferenceEntityJoins];\r\n\r\n\t\t_.each(result, (join)=>{\r\n\t\t\tresult = result.concat(this.GetAllJoinsFromJoin(join));\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic static GetEntityByGuid(guid: string, query: QueryExpressionModel){\r\n\t\treturn _.find(this.GetAllQueryEntities(query), (e)=>e.Guid === guid);\r\n\t}\r\n}","import { record } from \"rrweb\";\r\nimport { SessionStore } from \"./SessionStore\";\r\nimport { Guid } from \"../Core/Common/Guid\";\r\nimport { UserManager } from '../User/UserManager';\r\nimport { pack } from '@rrweb/packer';\r\n\r\nlet events = [];\r\nlet sessionId = null;\r\nlet interval;\r\nlet stopFn = null;\r\nlet recording = false;\r\n\r\nexport const addCustomEvent = (name: string, payload: any) =>{\r\n if(recording){\r\n try{\r\n record.addCustomEvent(name,payload);\r\n }catch(error){\r\n console.error(error);\r\n } \r\n }\r\n}\r\n\r\nexport const startRecording = () =>{\r\n if(window.location.host != 'paulenpaul.spheeres.com'){\r\n return;\r\n }\r\n\r\n recording = true;\r\n stopRecording()\r\n sessionId = Guid.NewGuid();\r\n window.onbeforeunload = () => {\r\n save()\r\n clearInterval(interval);\r\n };\r\n\r\n stopFn = record({\r\n emit(event) {\r\n events.push(event);\r\n },\r\n plugins: [\r\n require('rrweb-snapshot'),\r\n ],\r\n packFn: pack,\r\n collectFonts: true,\r\n recordCanvas: true\r\n });\r\n\r\n interval = setInterval(save, 10 * 1000);\r\n}\r\n\r\nexport const stopRecording = () =>{\r\n if(stopFn){\r\n stopFn();\r\n };\r\n save()\r\n clearInterval(interval);\r\n}\r\n\r\nfunction save() {\r\n \r\n if(events.length == 0 || !sessionId || (UserManager.Instance && UserManager.Instance.CurrentUser && UserManager.Instance.CurrentUser.IsLocked)){\r\n return;\r\n }\r\n\r\n let eventsString = JSON.stringify(events);\r\n events = [];\r\n SessionStore.Update({ sessionId: sessionId, events: eventsString, timestamp: Date.now() });\r\n}","import * as _ from 'underscore';\r\n\r\nimport {URL} from 'Core/Common/Url';\r\nimport {Request, IRequestOptions} from 'Core/Common/Request';\r\nimport {P} from 'Core/Common/Promise';\r\nimport {Deserialize} from 'libs/cerialize';\r\nimport { OperationResultModel } from 'Core/Models/OperationResultModel';\r\nimport { ITranslationValue } from \"Core/Components/TranslationFieldEditor/ITranslationValue\";\r\n\r\nexport interface ISessionEvent{\r\n events: string;\r\n\tsessionId: string;\r\n\ttimestamp: number;\r\n}\r\n\r\nexport interface IGetEventsDto{\r\n\tsessionId: string;\r\n}\r\n\r\nexport class SessionStore {\r\n\tstatic Update(params: ISessionEvent): P.Promise<any> {\r\n\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/EventApi/Event',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(null));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetEvents(params: IGetEventsDto): P.Promise<any> {\r\n\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/EventApi/GetEvents',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t}, params: params\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetSessions(pageNumber: number): P.Promise<any> {\r\n\r\n\t\tvar deferredResult = P.defer<any>();\r\n\t\tconst requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: 'api/EventApi/GetSessions',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: { PageNumber: pageNumber }\r\n\t\t};\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data => deferredResult.resolve(data));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n} ","import * as _ from 'underscore';\r\n\r\nimport { deserialize } from 'libs/cerialize';\r\nimport {UserTypes} from \"User/UserManager\";\r\n\r\n\r\nexport class UserModel {\r\n\r\n\t@deserialize\r\n\tId: number;\r\n\r\n\t@deserialize\r\n\tName: string;\r\n\r\n\t@deserialize\r\n\tNameTranslation: string;\r\n\r\n\t@deserialize\r\n\tUserName: string;\r\n\r\n\t@deserialize\r\n\tUserType: UserTypes;\r\n\t\r\n\t@deserialize\r\n\tSecurityRolesKey: number;\r\n\r\n\t@deserialize\r\n\tContactId: number;\r\n\r\n\t@deserialize\r\n\tFileDir: string;\r\n\r\n\t@deserialize\r\n\tDbId: number;\r\n\r\n\t@deserialize\r\n\tDbName: string;\r\n\r\n\t@deserialize\r\n\tLicenseName: string;\r\n\r\n\t@deserialize\r\n\tLicenseImage: string;\r\n\r\n\t@deserialize\r\n\tUserImage: string;\r\n\r\n\t@deserialize\r\n\tUserRoles : Array<string>;\r\n\r\n\t@deserialize\r\n\tUserVars: string;\r\n\r\n\t@deserialize\r\n\tIsRemote: boolean;\r\n\r\n\t@deserialize\r\n\tIsLocked: boolean;\r\n\r\n\t@deserialize\r\n\tIsLicenseServer: boolean;\r\n\r\n\t@deserialize\r\n\tIsShowAIAssistant: boolean;\r\n\tHasAnyType(userTypes: UserTypes[]): boolean {\r\n\t\treturn _.any(userTypes, userType => userType === this.UserType);\r\n\t}\r\n}","import { P } from \"Core/Common/Promise\";\r\nimport { URL } from \"Core/Common/Url\";\r\nimport { IRequestOptions, Request } from \"Core/Common/Request\";\r\nimport { IRequestUserOptions } from \"../Options/IRequestUserOptions\";\r\n\r\nexport class UserStore {\r\n\tstatic GetCurrentUser(options: IRequestUserOptions): P.Promise<any> {\r\n\t\tvar deferredResult = P.defer<any>();\r\n\r\n\t\tvar requestParams: IRequestOptions = {\r\n\t\t\tproxy: {\r\n\t\t\t\turl: URL.USER.GET_CURRENT_USER,\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\ttype: 'POST'\r\n\t\t\t},\r\n\t\t\tparams: options\r\n\t\t};\r\n\r\n\t\tRequest.Send(requestParams)\r\n\t\t\t.then(data =>\r\n\t\t\t\tdeferredResult.resolve(data)).fail(()=>\tdeferredResult.reject(null));\r\n\r\n\t\treturn deferredResult.promise();\r\n\t}\r\n\r\n\tstatic GetUserAllowance(userId: number) {\r\n\t\treturn Request.Send({\r\n\t\t\tproxy: {\r\n\t\t\t\turl: '/api/UserAllowanceApi/GetUserAllowanceInfo',\r\n\t\t\t\ttype: 'GET'\r\n\t\t\t},\r\n\t\t\tparams: { id: userId }\r\n\t\t});\r\n\t}\r\n} ","import 'lockr';\r\n\r\nimport {LOCAL_STORAGE} from '../Core/Common/Enums/LocalStorageItems';\r\n\r\nimport {UserVarsManager} from 'Core/UserVarsManager/UserVarsManager'\r\nimport {GenericDeserialize} from \"libs/cerialize\";\r\nimport {UserStore} from \"User/Store/UserStore\";\r\nimport {UserModel} from \"User/Store/Models/UserModel\";\r\nimport {P} from \"Core/Common/Promise\";\r\nimport {Demo} from 'metronicDemo';\r\nimport {Notifier} from \"Core/Common/Notifier\";\r\nimport {CookieManager} from \"Core/Common/CookieManager\";\r\nimport {ISignInOptions} from \"./Options/ISignInOptions\";\r\nimport {IRequestUserOptions} from \"./Options/IRequestUserOptions\";\r\nimport {NOTIFICATIONS} from \"Core/Components/Translation/Locales\";\r\nimport { stopRecording, startRecording } from '../Session/SessionRecorder';\r\n\r\nexport enum UserRoles {\r\n User = 4,\r\n SuperUser = 8,\r\n DataRole = 256,\r\n DesignerLevel1 = 16,\r\n DesignerLevel2 = 32,\r\n DesignerLevel3 = 64,\r\n NetworkManager = 128,\r\n US = 1024\r\n}\r\n\r\nexport enum UserTypes {\r\n User = \"User\",\r\n Usergroup = \"Usergroup\",\r\n Gdpr = \"GDPR\",\r\n Portal = \"Portal\",\r\n Guest = \"Guest\",\r\n}\r\n\r\nexport enum UserDataRoles {\r\n Dpo = \"DPO\",\r\n Vo = \"VO\",\r\n So = \"SO\",\r\n Do = \"DO\",\r\n Po = \"PO\",\r\n Dep = \"DEP\"\r\n}\r\n\r\nexport class UserManager {\r\n private static _instance;\r\n private static _allowInstantiation: boolean;\r\n private _currentUser: UserModel;\r\n\r\n constructor() {\r\n this._currentUser = null;\r\n if (!UserManager._allowInstantiation) {\r\n throw new Error(\"Use UserModel.Instance instead\");\r\n }\r\n }\r\n\r\n get CurrentUser(): UserModel {\r\n return this._currentUser;\r\n }\r\n\r\n get IsAuthenticated() {\r\n return this._currentUser != null;\r\n }\r\n\r\n InitMetronic() {\r\n Demo.init();\r\n }\r\n\r\n SignIn(options: ISignInOptions) {\r\n CookieManager.SetAuthToken(options.AccessToken);\r\n CookieManager.SetRefreshToken(options.RefreshToken);\r\n CookieManager.SetSBIDesigner(String(options.SBIDesigner));\r\n\r\n const signInPromise = this.RequestUser({\r\n LoadUserVars: options.RefreshUserVars\r\n });\r\n\r\n signInPromise\r\n .then(user => {\r\n startRecording();\r\n this.SaveUserModel(user);\r\n Lockr.set(LOCAL_STORAGE.FILE_DIR, user.FileDir);\r\n\r\n if (options.RefreshUserVars) {\r\n UserVarsManager.Instance.RestoreFromJson(user.UserVars);\r\n }\r\n\r\n }).fail(error => new Notifier().Failed(error.message));\r\n\r\n this.InitMetronic();\r\n\r\n return signInPromise;\r\n }\r\n\r\n SignOut() {\r\n stopRecording();\r\n this._currentUser = null;\r\n\r\n CookieManager.RemoveTokens();\r\n Lockr.rm(LOCAL_STORAGE.FILE_DIR);\r\n }\r\n\r\n private RequestUser(options: IRequestUserOptions) {\r\n const deferredResult = P.defer<UserModel>();\r\n\r\n UserStore.GetCurrentUser(options)\r\n .then(getUserResult => {\r\n if (getUserResult.IsSuccessfull) {\r\n deferredResult.resolve(GenericDeserialize<UserModel>(getUserResult.ResultObject, UserModel));\r\n } else {\r\n deferredResult.reject({message: getUserResult.ErrorMessage});\r\n }\r\n })\r\n .fail(() => {\r\n deferredResult.reject({message: NOTIFICATIONS.ERROR_USER_DATA});\r\n });\r\n\r\n return deferredResult.promise();\r\n }\r\n\r\n private SaveUserModel(user: UserModel) {\r\n window[\"UserManager\"] = this;\r\n window[\"UserRoles\"] = UserRoles;\r\n this._currentUser = user;\r\n }\r\n\r\n static get Instance(): UserManager {\r\n if (UserManager._instance == null) {\r\n UserManager._allowInstantiation = true;\r\n UserManager._instance = new UserManager();\r\n UserManager._allowInstantiation = false;\r\n }\r\n\r\n return UserManager._instance;\r\n }\r\n\r\n IsUserInRole(userRole: UserRoles): boolean {\r\n return (userRole & this._currentUser.SecurityRolesKey) === userRole;\r\n }\r\n\r\n IsCurrentUserMaxRole(userRole: UserRoles) {\r\n return Math.max(...this.GetCurrentUserRoles()) === userRole;\r\n }\r\n\r\n private GetCurrentUserRoles() {\r\n let rolesList = [];\r\n\r\n Object.keys(UserRoles).map(key => UserRoles[key]).filter(k => parseInt(k) >= 0).forEach(role => {\r\n\r\n if ((role & this._currentUser.SecurityRolesKey) == role) {\r\n rolesList.push(role);\r\n }\r\n })\r\n\r\n return rolesList;\r\n }\r\n\r\n GetDataRoles() {\r\n return UserManager.Instance.CurrentUser.UserRoles;\r\n }\r\n\r\n GetUserAllowance(userId: number = this._currentUser.Id) {\r\n const deferred = P.defer();\r\n\r\n UserStore.GetUserAllowance(this._currentUser.Id)\r\n .then(result => {\r\n if (result.IsSuccessfull) {\r\n deferred.resolve(result.ResultObject.UserAllowance);\r\n } else {\r\n deferred.reject({message: result.ErrorMessage});\r\n }\r\n }).fail(() => deferred.reject({message: NOTIFICATIONS.ERROR_USER_ALLOWANCE}));\r\n\r\n return deferred.promise();\r\n }\r\n}","export var LifeStatusEnum = {\r\n\tEnabled: 'Enabled',\r\n\tActive: 'Active',\r\n\tExample: \"Example\",\r\n\tReadyToProcess: \"ReadyToProcess\",\r\n\tRetired: \"Retired\",\r\n\tMaintained: \"Maintained\",\r\n\tAcquired: \"Acquired\",\r\n\tPlanned: \"Planned\",\r\n\tDisabled: \"Disabled\",\r\n Delete: 'Delete',\r\n SubExample: \"SubExample\"\r\n};\r\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","$","moment","weekFormatUtils","WeekFormatUtils","getEscapedFormat","format","GetLocalizedWeekFormat","DateTimePickerBootstrap","options","this","init","defaults","initPicker","fn","editableutils","inherit","editabletypes","abstractinput","extend","prototype","dateTimePickerBootstrap","tryParseJson","render","isWeekFormat","$input","$tpl","PatchWeekFormatInput","get","pickerOptions","PatchWeekFormatOptions","datetimepicker","value2html","value","element","textValue","undefined","current","default","html","empty","value2input","val","input2value","activate","focus","tpl","emptytext","locale","widgetPositioning","horizontal","vertical","forceParse","TimePickerBootstrap","timePickerBootstrap","window","jQuery","guid","MemoExtension","editor","self","uniqueId","Guid","NewGuid","attr","tinymce","baseURL","tinymceOptions","selector","plugins","toolbar","content_css","translations","length","newTranslations","forEach","item","index","_","clone","setup","languages","push","type","text","unescape","LanguageShortName","onAction","langObject","editorContainer","find","last","activeLangIndex","Value","getContent","setContent","languageActive","ui","registry","addMenuButton","fetch","callback","tinyMCE","currentUnescaped","setTimeout","defaultUnescaped","content","escape","translates","memo","require","formatConverterModule","FormatConverter","PercentageExtantion","decimals","getConfigData","scope","digits","Math","max","inputmask","radixPoint","GetSeparator","integerDigits","autoGroup","groupSeparator","GetGroupSeparator","autoUnmask","rightAlign","LocalizeDecimalOrInteger","toString","percentage","TouchSpinExtension","TouchSpin","min","Infinity","stepinterval","maxboostedstep","callback_before_calculation","replace","RegExp","touchSpin","TouchSpinDecimalExtension","step","pow","touchSpinDecimal","a","j","d","__esModule","assign","l","k","arguments","m","hasOwnProperty","call","f","n","enumerable","configurable","writable","defineProperty","key","g","h","TypeError","c","$element","bootstrapSwitch","_getElementOptions","prevOptions","$wrapper","class","state","size","disabled","readonly","indeterminate","inverse","_getClass","bind","concat","baseClass","_getClasses","wrapperClass","join","$container","$on","onText","onColor","$off","offText","offColor","$label","labelText","on","onInit","Array","p","onSwitchChange","apply","is","trigger","wrap","parent","before","prop","_init","_elementHandlers","_handleHandlers","_labelHandlers","_formHandler","_externalLabelHandler","radioAllOff","removeClass","addClass","_width","_containerPosition","animate","toggleAnimate","toggleClass","toggleDisabled","toggleReadonly","toggleIndeterminate","toggleInverse","replaceWith","handleWidth","labelWidth","closest","off","removeData","children","not","remove","unwrap","data","add","css","round","width","_handleWidth","outerWidth","_labelWidth","setPrevOptions","setInterval","clearInterval","preventDefault","stopImmediatePropagation","which","stopPropagation","click","_dragStart","pageX","originalEvent","touches","parseInt","_dragEnd","target","toggleState","filter","each","checked","isArray","reduce","q","r","s","Constructor","b","jquery","split","emulateTransitionEnd","one","support","transition","end","document","createElement","WebkitTransition","MozTransition","OTransition","style","event","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","close","VERSION","TRANSITION_DURATION","detach","Event","isDefaultPrevented","hasClass","alert","noConflict","toggle","setState","DEFAULTS","isLoading","loadingText","resetText","proxy","removeAttr","button","first","test","slide","to","interval","pause","cycle","$indicators","paused","sliding","$active","$items","keyboard","keydown","documentElement","tagName","prev","next","getItemIndex","getItemForDirection","eq","i","relatedTarget","direction","offsetWidth","carousel","$trigger","transitioning","$parent","getParent","addAriaAndCollapsedClass","dimension","show","camelCase","hide","offsetHeight","collapse","contains","insertAfter","dropdown","$body","body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","remote","load","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","resize","appendTo","scrollTop","adjustDialog","enforceFocus","hideModal","has","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","currentTarget","scrollHeight","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","innerWidth","getBoundingClientRect","right","abs","left","clientWidth","measureScrollbar","className","append","removeChild","modal","enabled","timeout","hoverState","inState","animation","placement","template","title","delay","container","viewport","padding","getOptions","$viewport","isFunction","hover","constructor","enter","leave","_options","fixTitle","getDefaults","getDelegateOptions","tip","clearTimeout","isInStateTrue","hasContent","ownerDocument","getUID","top","display","getPosition","bottom","getCalculatedOffset","applyPlacement","$tip","isNaN","offset","setOffset","using","getViewportAdjustedDelta","replaceArrow","arrow","getTitle","height","SVGElement","scroll","random","getElementById","$arrow","enable","disable","toggleEnabled","destroy","tooltip","popover","$scrollElement","offsets","targets","activeTarget","process","refresh","getScrollHeight","isWindow","sort","clear","parents","parentsUntil","scrollspy","tab","$target","checkPosition","checkPositionWithEventLoop","affixed","unpin","pinnedOffset","RESET","getState","getPinnedOffset","affix","offsetBottom","offsetTop","metronic","layout","cerialize","globalManager","uiSettings","customThemeDescriptor","customThemeSetting","Metronic","Layout","GenericDeserialize","GlobalManager","GLOBALS","UISettings","DEFAULT_UI_SETTINGS","DEFAULT_VALUES","Demo","_uiSettings","cookie","SetThemeStyle","Preloader","Close","handleTheme","change","SetThemeBorders","layoutCssPath","panel","isRTL","lastSelectedLayout","color","currentLayoutStyle","SetThemeColor","valLayoutOption","valOption","SetSidebarOption","valStyleOption","SetSidebarStyleOption","valPosOption","SetSidebarPosOption","valBorders","SetSidebarBorders","layoutOption","sidebarOption","headerOption","footerOption","sidebarPosOption","sidebarStyleOption","sidebarMenuOption","headerTopDropdownStyle","after","runResizeHandlers","SetSidebarMode","SetSidebarStyle","SetSidebarPosition","fixContentHeight","initFixedSidebar","GetUISettings","SetUISettings","settings","Settings","Theme","Color","Style","SidebarOption","SidebarStyleOption","SidebarPosOption","SidebarBorders","CustomThemeName","customThemeName","customTheme","GetCustomTheme","customThemeSettings","SetCustomTheme","InitUI","uiSettingsJson","Instance","GetGlobal","THEME","JSON","parse","$style","themeCss","Selector","Rule","Val","createTextNode","theme","themeUrl","themeColor","COLOR","themeStyle","STYLE","file","filePath","borders","themeBorders","SIDEBAR_BORDERS","themeSidebarOption","SIDEBAR_OPTION","unbind","themeSidebarStyle","SIDEBAR_STYLE","themeSidebarPosition","SIDEBAR_POSITION","Dropzone","Emitter","ExifRestore","camelize","contentLoaded","detectVerticalSquash","drawImageIOSFix","noop","without","slice","hasProp","addEventListener","_callbacks","emit","args","callbacks","len","removeListener","removeAllListeners","removeEventListener","splice","superClass","resolveOption","element1","elementOptions","fallback","ref","_this","version","defaultOptions","previewTemplate","clickableElements","listeners","files","querySelector","nodeType","dropzone","instances","optionsForElement","forceFallback","isBrowserSupported","url","getAttribute","acceptedFiles","acceptedMimeTypes","renameFilename","renameFile","name","method","toUpperCase","getExistingFallback","parentNode","previewsContainer","getElement","clickable","getElements","child","ctor","__super__","extend1","events","withCredentials","parallelUploads","uploadMultiple","maxFilesize","paramName","createImageThumbnails","maxThumbnailFilesize","thumbnailWidth","thumbnailHeight","thumbnailMethod","resizeWidth","resizeHeight","resizeMimeType","resizeQuality","resizeMethod","filesizeBase","maxFiles","params","headers","ignoreHiddenFiles","autoProcessQueue","autoQueue","addRemoveLinks","hiddenInputContainer","capture","dictDefaultMessage","dictFallbackMessage","dictFallbackText","dictFileTooBig","dictInvalidFileType","dictResponseError","dictCancelUpload","dictCancelUploadConfirmation","dictRemoveFile","dictRemoveFileConfirmation","dictMaxFilesExceeded","dictFileSizeUnits","tb","gb","mb","kb","accept","done","messageElement","span","getElementsByTagName","appendChild","textContent","innerText","getFallbackForm","info","srcRatio","trgRatio","srcX","srcY","srcWidth","srcHeight","trgWidth","trgHeight","transformFile","match","resizeImage","drop","classList","dragstart","dragend","dragenter","dragover","dragleave","paste","reset","addedfile","len1","len2","ref1","ref2","removeFileEvent","removeLink","results","previewElement","trim","querySelectorAll","upload","filename","innerHTML","filesize","_removeLink","status","UPLOADING","confirm","removeFile","removedfile","_updateMaxFilesReachedClass","thumbnail","dataUrl","thumbnailElement","alt","src","error","message","node","errormultiple","processing","processingmultiple","uploadprogress","progress","bytesSent","nodeName","totaluploadprogress","sending","sendingmultiple","success","successmultiple","canceled","canceledmultiple","complete","completemultiple","maxfilesexceeded","maxfilesreached","queuecomplete","addedfiles","object","objects","getAcceptedFiles","accepted","getRejectedFiles","getFilesWithStatus","getQueuedFiles","QUEUED","getUploadingFiles","getAddedFiles","ADDED","getActiveFiles","eventName","noPropagation","setupHiddenFileInput","setAttribute","hiddenFileInput","visibility","position","addFile","URL","webkitURL","updateTotalUploadProgress","returnValue","efct","dataTransfer","effectAllowed","dropEffect","clickableElement","evt","elementInside","removeAllFiles","indexOf","totalBytes","totalBytesSent","totalUploadProgress","total","_getParamName","_renameFile","existingFallback","fields","fieldsString","form","getFallback","elements","el","setupEventListeners","elementListeners","listener","results1","removeEventListeners","cancelUpload","selectedSize","selectedUnit","unit","units","items","webkitGetAsEntry","_addFilesFromItems","handleFiles","clipboardData","entry","isFile","getAsFile","isDirectory","_addFilesFromDirectory","kind","directory","path","dirReader","errorHandler","readEntries","createReader","console","log","entries","substring","fullPath","isValidFile","_enqueueThumbnail","_errorProcessing","enqueueFile","enqueueFiles","processQueue","_thumbnailQueue","_processingThumbnail","isValidImage","_processThumbnailQueue","shift","createThumbnail","cancelIfNecessary","canvas","resizedDataURL","toDataURL","restore","dataURL","dataURItoBlob","fixOrientation","fileReader","FileReader","onload","result","createThumbnailFromUrl","readAsDataURL","crossOrigin","img","loadExif","EXIF","getData","getTag","orientation","ctx","ref3","resizeInfo","getContext","translate","scale","rotate","PI","trgX","trgY","onerror","processingLength","queuedFiles","processFiles","processFile","uploadFiles","_getFilesWithXhr","xhr","groupedFile","groupedFiles","CANCELED","abort","option","uploadFile","doneCounter","doneFunction","formData","handleError","headerName","headerValue","input","inputName","inputType","len3","ref4","ref5","response","updateProgress","XMLHttpRequest","open","allFilesFinished","loaded","error1","readyState","responseText","getResponseHeader","_finished","onprogress","setRequestHeader","FormData","hasAttribute","selected","toLowerCase","fileName","transformedFile","submitRequest","send","SUCCESS","ERROR","forElement","autoDiscover","discover","checkElements","dropzones","blacklistedBrowsers","capableBrowser","File","FileList","Blob","navigator","userAgent","dataURI","ab","byteString","ia","mimeString","atob","ArrayBuffer","Uint8Array","charCodeAt","list","rejectedItem","str","charAt","string","div","childNodes","els","question","rejected","baseMimeType","mimeType","validType","ACCEPTED","PROCESSING","ey","ih","py","ratio","sy","naturalWidth","naturalHeight","drawImage","getImageData","sx","sw","sh","dx","dy","dw","dh","vertSquashRatio","KEY_STR","encode64","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","origFileBase64","resizedFileBase64","image","rawImage","segments","decode64","slice2Segments","exifManipulation","exifArray","newImageArray","getExifArray","insertExif","seg","x","ato","buf","imageData","mae","separatePoint","rawImageArray","endPoint","head","exec","warning","win","doc","poll","pre","rem","root","doScroll","createEventObject","frameElement","_autoDiscoverFunction","backstretch","scrollTo","expr","centeredX","centeredY","duration","fade","overflow","margin","zIndex","border","maxHeight","maxWidth","images","isBody","$root","$wrap","background","pageYOffset","innerHeight","$img","fadeIn","speed","resume","platform","t","operamini","y","blockUI","ignoreIfBlocked","overlayCSS","onOverlayClick","cursor","themedCSS","fadeOut","v","onUnblock","I","w","U","baseZ","forceIframe","iframeSrc","blockMsgClass","C","S","draggable","cancel","O","boxModel","u","allowBodyStretch","E","T","M","B","setExpression","quirksmodeOffsetHack","centerY","marginTop","showOverlay","onBlock","H","z","_fadeIn","focusableElements","focusInput","centerX","W","unblockUI","unblock","cursorReset","stop","bindEvents","keyCode","constrainTabKey","shiftKey","documentMode","growlUI","growlCSS","mouseover","fadeTo","mouseout","block","zoom","textAlign","backgroundColor","opacity","location","href","decodeURIComponent","json","expires","Date","setDate","getDate","stringify","String","raw","encodeURIComponent","toUTCString","domain","secure","removeCookie","slimScroll","distance","start","alwaysVisible","disableFadeOut","railVisible","railColor","railOpacity","railDraggable","railClass","barClass","allowPageScroll","wheelStep","touchScrollStep","borderRadius","railBorderRadius","isOverPanel","isOverBar","isDragg","queueHide","touchDif","barHeight","percentScroll","lastScroll","divS","minBarHeight","releaseScroll","me","bar","siblings","rail","getBarHeight","isPlainObject","scrollBy","scrollContent","wrapper","BorderRadius","MozBorderRadius","WebkitBorderRadius","posCss","$doc","parseFloat","pageY","currTop","hideBar","showBar","outerHeight","_onWheel","passive","attachEvent","delta","wheelDelta","detail","srcTarget","srcElement","isWheel","isJump","maxTop","ceil","floor","msg","slimscroll","eventNamespace","focusClass","blur","activeClass","mouseenter","hoverClass","mouseleave","checkedClass","disabledClass","divClass","divWrap","spanClass","spanHtml","spanWrap","autoHide","useID","idPrefix","cpuClass","product","multiple","MozUserSelect","msUserSelect","webkitUserSelect","userSelect","fileDefaultHtml","old","pop","A","submitDefaultHtml","resetDefaultHtml","buttonClass","dispatchEvent","createEvent","initEvent","update","checkboxClass","fileClass","fileButtonClass","fileButtonHtml","filenameClass","inputClass","inputAddTypeAsClass","radioClass","uniform","selectAutoWidth","selectClass","keyup","selectMultiClass","textareaClass","resetSelector","getComputedStyle","currentStyle","mouseup","inArray","resBreakpointMd","getResponsiveBreakpoint","handleSidebarAndContentHeight","sidebar","available_height","getViewPort","_calculateFixedSidebarViewportHeight","headerHeight","footerHeight","handleSidebarMenuActiveLink","mode","hash","menu","substr","sidebarHeight","handleFixedSidebar","destroySlimScroll","initSlimScroll","handle100HeightContent","portletBody","initHeader","active_link","new_link","submit","dropdownHover","setSidebarMenuActiveLink","initSidebar","itemsArray","thisActiveIndex","thisIndex","screenWidth","hasSubMenu","selectedItem","arr","what","ax","L","removeValue","thisParentItem","thisParent","sidebarMenu","isAngularJsApp","addResizeHandler","initContent","initFooter","getLayoutImgPath","getAssetsPath","getLayoutCssPath","request","zIndexManager","Request","lastPopedPopover","isIE8","isIE9","isIE10","resizeHandlers","assetsPath","globalImgPath","globalPluginsPath","brandColors","_runResizeHandlers","handleUniform","handleiCheck","iCheck","insert","handleBootstrapSwitch","handleBootstrapConfirmation","confirmation","btnOkClass","btnCancelClass","handleAccordions","handleTooltips","handleDropdowns","handlePopovers","handleScrollers","handleFancybox","fancybox","groupAttr","prevEffect","nextEffect","closeBtn","helpers","handleSelect2","select2","placeholder","allowClear","currheight","the","newone","circle","prepend","handleInput","handleMaterialDesign","portlet","ZIndexManager","NextValue","overlayColor","Send","cache","dataType","then","res","fail","ajaxOptions","thrownError","toastr","notific8","life","slideUp","slideDown","tabid","tabdrop","handleTabs","autosize","initAjax","initComponents","setLastPopedPopover","func","offeset","pos","attrList","boxed","iconOnly","textOnly","cenrerY","startPageLoading","getGlobalImgPath","stopPageLoading","place","closeInSeconds","icon","getUniqueID","initUniform","updateUniform","initFancybox","getActualVal","getURLParameter","search","isTouchDevice","prefix","getTime","angular","setAssetsPath","setGlobalImgPath","setGlobalPluginsPath","getGlobalPluginsPath","getGlobalCssPath","getBrandColor","sizes","QuickSidebar","initAlertsSlimScroll","wrapperChat","initChatSlimScroll","chatUsersHeight","chatUsers","chatMessages","chatMessagesHeight","handleChatMessagePost","chatContainer","preparePost","dir","time","avatar","getHours","getMinutes","getLastPostPos","keypress","handleQuickSidebarChat","alertListHeight","alertList","initSettingsSlimScroll","settingsListHeight","settingsList","handleQuickSidebarSettings","_currentSpinnerId","_scopeEventNames","names","_scopedEventName","initval","replacementval","forcestepdivisibility","stepintervaldelay","verticalbuttons","verticalup","verticaldown","verticalupclass","verticaldownclass","postfix","prefix_extraclass","postfix_extraclass","booster","boostat","mousewheel","buttondown_class","buttonup_class","buttondown_txt","buttonup_txt","callback_after_calculation","attributeMap","downSpinTimer","upSpinTimer","downDelayTimeout","upDelayTimeout","parentelement","inputGroupSize","originalinput","originalinput_data","spincount","spinning","_checkValue","parsedval","returnval","toFixed","_forcestepdivisibility","Number","_getBoostedStep","boosted","upOnce","initvalue","boostedstep","stopSpin","downOnce","startDownSpin","startUpSpin","attrName","_parseAttributes","downhtml","uphtml","prefixhtml","postfixhtml","insertBefore","_advanceInputGroup","down","up","ev","deltaY","newsettings","_updateSettings","changeSettings","spinnerid","Prism","PrismExtension","Init","prism","valueAccessor","highlight","sql","stringTemplateEngine","StringTemplateEngine","K","SecurityProfileModel","Id","Name","main","Image","Main","SecurityProfileMenu","isAuthenticated","super","_profiles","_selectedProfile","IsAuthenticated","subscribe","LoadProfiles","PubSub","REFRESH_SECURITY_PROFILE","RefreshUI","GetTemplate","AfterRender","Render","targetId","_target","Block","Target","SecurityProfileStore","profiles","SaveProfiles","MapToProfiles","Notifier","always","Unblock","profilesResponse","profile","selectedProfile","Trigger","ProfileImage","SelectProfile","SelectMainProfile","Failed","Message","publish","CLOSE_POPUPS","REFRESH_MAIN_MENU","LanguageModel","ShortName","Flag","SwitchLanguageResult","Deserialize","obj","deserializeAs","LanguageSwitcherStore","ChangeLanguage","model","deferredResult","P","defer","requestParams","err","reject","GetError","promise","SwitchLanguageModel","LanguageMenu","_languages","TranslationManager","Languages","language","IsDefault","_language","GetCurrentLanguage","_databaseName","UserManager","CurrentUser","DbName","SelectLanguage","SaveLanguage","BuildSwitchLanguageModel","CookieManager","SetAuthToken","AccessToken","SetRefreshToken","RefreshToken","reload","Lockr","LANGUAGE","set","GetAuthToken","DatabaseName","Language","MainMenuButton","MainMenuButtonResponsive","_user","_dbName","LogoImage","BindEvents","GetTemplateName","NavigateToHomePage","ChangeLogoImage","profileImage","LicenseImage","OnSessionChanged","RefreshUser","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","notificationType","objectId","publishSync","EXECUTE_SCRIPT","Code","Params","ObjectId","EvalFunction","SkipRows","skipValue","indx","SetToken","TranslationFieldEditor","_translationItems","_activeTranslationItem","_opened","_translationMaxSize","TranslationItemsList","ActiveTranslation","GetTranslationMaxSize","LoadTranslationItems","translationItems","TranslationItem","SubscribeOnValueChanges","_subscription","LanguageId","SetTranslations","translation","SetTranslation","GetDefaultLanguage","SetTranslationMaxSize","translationMaxSize","SetActiveTranslation","languageId","translationItem","GetTranslationById","GetTranslations","withDefault","GetDefaultTranslation","SetFocus","focusEmptyElement","IsFocused","SelectTranslation","manager","NOTIFICATIONS","GetLocalizedString","RECORD_SAVED","RECORD_REMOVED","NOT_ALLOWED_ACTION","RECORD_CREATED","RECORD_UPDATED","REFERENCE_TABLE_NOT_SET","INVALID_REFERENCE_TABLE","REFERENCE_WAS_SET","REFERENCE_WAS_UNSET","TABLE_NOT_FOUND","ENTITY_NAME_WAS_NOT_FOUND","DATA_IS_NOT_SAVED","ERROR_DELETING_RECORD","ERROR_GETTING_CONTROL_OPTIONS","SOMETHING_WENT_WRONG","SUB_TYPE_NOT_FOUND","TYPES_NOT_FOUND","INCORECT_PASSWORD_LENGTH","MINIMUM_LENGTH_OF_THIS_FIELD","INCORRECT_URL_PLEASE_TYPE_FULL_URL_LIKE","EDITSCREEN_CANNOT_BE_USED_AS_A_HOME_SCREEN","CANNOT_OPEN_THE_HOME_SCREEN_SUBJECTENTITY_ENTTY_SCREEN","HOME_SCREEN_SUBJECT_ENTITY","ALLOWED_FILE_EXTENSIONS_ARE_EXTENSIONS","CANNOT_UPLOAD_FILES","YOU_ARE_NOT_ALLOWED_TO_PERFORM_THIS_ACTION","ERROR_GETTING_LIFESTATUSES","LINK_HAS_BEEN_COPIED","COULD_NOT_PROCEED_PLEASE_CREATE_THE_LINK_BETWEEN_ENTITIES","INVALID_USER","INVALID_DATABASE","ACCESS_DENIED","ERROR_USER_ALLOWANCE","ERROR_USER_DATA","CONTACT_SCREEN_NOT_FOUND","STATUS_UPDATED","NO_LINKED_RECORDS","NEXT_STATUS_NOT_AVAILABLE","CHANGES_APPLIED","TIME_OVERFLOW","ROW_EDITOR_NOT_FOUND","FREEZE_TIME_NOT_SPECIFIED","FILL_REQUIRED_DATA","DURATION_IS_TOO_LONG","TO_DATE_IS_LESS_THAN_FROM","ONLY_FOLLOWING_TYPES_ARE_ALLOWED","EVENT_UPDATED","EDIT__ONLY_APPOINTMENT_EVENTS","SELECT_ONLY_WITHIN_DAY","BOOKED_TIME_RECORD_WAS_CREATED_SUCCESSFULLY","ATTENDEES_CANNOT_BE_ADDED_DUE_TO_MISSING_LINK_LIST","PASSWORD_REVOKED","PASSWORD_RESET","EMAIL_WAS_SENT","PLEASE_ADD_ACCOUNT","PLEASE_SELECT_ANY_EMAIL","MARKED_AS_READ","MARKED_AS_UNREAD","PLEASE_ADD_RECIPIENT","OUT_TYPE_NOT_FOUND","IN_TYPE_NOT_FOUND","SELECTION_APPLIED","RECORD_ALREADY_EXISTS","RECORD_WAS_AUTOLINKED","USER_SHOULD_BE_LINKED","LINKS_TO_ENTITIES_MUST_BE_CREATED","CREATING_SCREENSHOT","SCREENSHOT_CREATED","MAIL_ADDRESS_FOR_GLOBAL_NOT_FOUND","PROVIDE_SQL_SCRIPT","TYPE_IS_NOT_SUPPORTED","RECORD_ADDED_TO_BASKET","PLEASE_CREATE_OR_SELECT_BASKET_RECORD","PLEASE_SELECT_BASKET_RECORD","RECORD_REMOVED_FROM_BASKET","PLEASE_SELECT_ANY_RECORD","CANVAS_UPDATED","PLEASE_SAVE_CANVAS_BEFORE_EXECUTE","PLEASE_SELECT_SOURCE_AND_DESTINATION","DATAWIZARD_EXECUTED","ROLLBACK_APPLIED","ONLY_ONE_FILE_WAS_SAVED","DOCUMENT_UPLOADED","OVERAL_FILE_SIZE_EXCEEDED","ALLOWED_FILE_SIZE_EXCEEDED","EMPTY_SIZE_FILES_RESTRICTION","ALLOWED_FILES_SIZE_EXCEEDED","ALLOWED_FILES_AMOUNT_EXCEEDED","SCREEN_UPDATED","SCREEN_REFRESHED","PLEASE_PROVIDE_NAME","SAVE_ONLY_ONE_FILE","ERROR_GET_GRID_DATA","QUERY_BUILDER_NOT_FOUND","GRID_SUBJECT_NOT_FOUND","RECORDS_LINKED","NO_SELECTED_RECORDS","NO_EDITABLE_COLUMNS","ERROR_DELETE_GRID_DATA","GRID_CELL_HYPERLINK_TOOLTIP","NOT_APPLICABLE_FOR_LIST_SCREEN","SORT_BY_COLUMN_TO_ENABLE_SORTING","SOME_RECORDS_ARE_LOCKED","NOTHING_TO_COPY","LINK_RECORDS_NOT_FOUND","USE_LINK_ADDLINK_OR_ADDQUERY_BUTTONS_TO_COPY","INVALID_RECORD_ID","PARAM_IS_EMPTY","SELECT_RECORDS_TO_PROCESS","NO_QUERIES_FOUND","PLEASE_SELECT_ANY_FIELD","CD_TABLE_NOT_FOUND","PLEASE_SELECT_ENTITY","SAVE_OR_DISCARD_CHANGES","ALL_RECORDS_SAVED","NO_PRIMARY_KEY","SELECT_ANY_OPTION","DATA_ROLE_IS_NOT_SUPPORTED","PLEASE_UPDATE_VIEW","ERROR_CAMERA_INITIALIZATION","GET_USER_MEDIA_IS_NOT_SUPPORTED","PLEASE_TAKE_PHOTO","CONFIGURATION_SAVED","DATABASE_DELETED","DATABASE_NOT_FOUND","CONFIRMATION_FOR_COPY_ENVIROMENT","ENVIROMENT_WAS_CREATED","PORTLET_SPACE_UPDATED","MORE","PORTLET_SPACE_INFO","PORTLET_SPACE_NAME","USE_AS_MAIN","CREATE_NEW","PLEASE_ENTER_PORTLET_SPACE_NAME","PORTLET_SPACE_WILL_BE_DELETED","FILE_SIZE_IS_TOO_BIG","LOGO_UPDATED","CURRENT_PASSWORD_IS_REQUIRED","NEW_PASSWORD_IS_REQUIRED","RE_TYPE_PASSWORD_NOT_MATCH","THEME_SAVED","SECURITY_RESET_DONE","CLICK_TO_SEE_ALL_RECORDS_IN_THE_LIST","THE_NUMBER_OF_RECORDS_EXCEEDS_THE_CONFIGURED_LIMIT","PLEASE_SET_ALL_PROPERTIES","VIEWS_UPDATED","SAVED","WRONG_ARGS","TYPE_IS_NOT_AVAILABLE","RECORD_IS_SEARCH_ONLY","NO_SEARCHABLE_FIELDS","NO_DATA_FOUND_WITH_APPLIED_FILTER","EDIT_SCREEN_NOT_EXISTS","ENTITY_ALREADY_ADDED","NEW_CONTROL_CREATED","FIELD_ALREADY_ADDED","ONLY_CUSTOM_FIELDS_ALLOWED","FIELD_FROM_ENTITY_NAME_IS_ALREADY_PRESENT","LINK_TABLE_COULD_NOT_BE_REVERSED","NO_CHANGES_TO_UPDATE_IN_DATABASE","REPLACE_EXISTING_VIEW","EMPTY_CHECKLIST_FIELD","SELECT_A_LOOKUP","LIFESTATUS_FLOW_LOADED","ERROR_BUILDING_LIFE_CYCLE","YOUR_FLAG_IMAGE_WAS_UPLOADED_SUCCESSFULLY","PLEASE_CREATE_ALL_THREE_TRANSITIONS_FOR_A_TEST_NODE","THE_NEW_DEFAULT_RETIRED_STATUS","THERE_IS_NOT_DEFAULT_RETIRED_STATUS","SELECT_STATUS_FOR_SUB_FLOW","GLOBALS_UPDATED","INVALID_CULTURE","INVALID_DESKTOP_LANGUAGE","TITLE_CONVERTED_TYPE_OF_RECORD","TABLE_IS_NOT_SELECTED","MAILING_CONFIGURED","BULK_EDIT_RECORD_NUMBER_WILL_BE_EDITED","EDIT_ALL_RECORD_NUMBER_WILL_BE_EDITED","FORM_FOR_EMAIL_NOT_CONFIGURED","CANNOT_LINK_RECORD","QUERY_EXPRESSION_WAS_NOT_CREATED","DOCUMENTS_HAS_BEEN_SENT_TO_FINANCIAL_PROCESSOR","NO_CLEANING_OPTION_SELECTED","INVALID_SCHEDULER_SUBJECT","CLICK_TO_SEE_ALL_COLORS","CLICK_TO_SEE_ALL_IMAGES","UNLINK_QUERY_RECORD","COPY_PLANNER_DATA","SELECT_PERIOD","SELECT_PLANNER_ROWS","ERROR_READING_TIMER_STATE","ERROR_GETTING_ACTIVE_TIMERS","ERROR_STARTING_TIMER","ERROR_STOPPING_TIMER","ERROR_SETTING_OVERTIME","GOOGLE_KEY_IS_NOT_VALID","NO_ANY_VIEW_OPTIONS","ERROR_GETTING_DROPDOWN_DATA","WRONG_FORMAT_IN_MEMO_TIMESTAMP_FORMAT_GLOBAL","LABELS","SEND","NO_IMAGE","ID","NAME","TYPE","MESSAGE","SUCCESSFUL","WARNINGS","ERRORS","RESULTS","PROCESS","SEARCH_TERM","ROOT","SEARCH","SEARCH_BY_NAME","SETTINGS","NEW","SEARCH_WITH_DOTS","SEARCH_GRID","SAVE_AND_CLOSE","ALL","LIST","RETURN","CREATE","ENTITIES","REVERT","ACCEPT","FROM","SUBJECT","DISCARD","DESCRIPTION","DEFAULT","VALUE","GROUP","RUN","TEST","RE_CREATE","NO_RECORD","DONE","EMPTY","EMPTY_VALUE","DELTA","VALUES","REVERSE","COPY","NEXT","NEXT_NEXT","USE","DISTRIBUTE","DAY","MONTH","THIS_FIELD_IS_REQUIRED","FEATURE_TYPE_IS_NOT_SET","UPLOAD","OKAY","UPLOAD_FILES","TOTAL","COUNT","SHOW_MORE","SHOW_IN_MENU","SHOW_IN_PORTLET","LOCKED_BY_SUPER_USER","NO_RECORD_SELECTED","RECORD_LINK","SPHEERES_LINK","ROLLBACK","MEMOS","CLICK_TO_NAVIGATE_TO_SPECIAL_SCREEN","REPLY","CC","BCC","EMAIL_SUBJECT","E_MAIL","FORWARD","REPLY_TO_ALL","TO_","REPORT_HOURS","SKIP","ZOOM_IN","ZOOM_OUT","ACTUAL_SIZE","ROTATE_FLIP","PREVIOUS","ROTATE_LEFT","ROTATE_RIGHT","FLIP_HORIZONTALLY","FLIP_VERTICALLY","ANNOTATIONS","ON","OFF","MY_SETTINGS","MY_CONTACT_PAGE","MY_DAILY_STUFF","DEDUPLICATION","DOWNLOAD_CLIENT","DOWNLOAD_MAIL_PLUGIN_32","DOWNLOAD_MAIL_PLUGIN_64","LOCK_SCREEN","LOG_OUT","HELP","REPORT_ISSUE","ABOUT","LOCKED","NOT","DOWNLOADS","REQUIRED_NET_FRAMEWORK","DEDUPLICATE","DEDUPLICATE_ALL","MATCH_ALL","MINIMAL_MATCH_RATE","DELETE_ALL","CLICK_TO_DELETE_ALL_MATCH_LINKS","DESIGNERS","CANVAS_DESIGNER","NETWORK_DESIGNER","FUNCTION_DESIGNER","SYSTEM","ENVIRONMENT_MANAGER","TRANSLATION_EDITOR","PRIMARY_GROUP","SELECT_GROUP","CLICK_TO_LOCK_GROUP","GROUP_IS_LOCKED","USED_IN_PROFILES","RECENT","FAVORITES","ONLY_LAST_90","ONLY_LAST_90_ARE_SHOWN","ONLY_LAST_90_ARE_INACTIVE","ENABLE_FILTER","LIFESTATUS","MODE","FAST_SEARCH","PHONETIC_SEARCH","SEARCH_MODES","SEARCH_FIELDS","SEARCH_SCREEN_PAGINATION","TOTAL_SEARCH","TYPES","NO_RECORDS_FOUND","REMOVE_DUPLICATES","MERGE","OFF_FILTER_BY_RELATIONS","FILTER_BY_RELATIONS","FILTER_BY_MAIN_RELATIONS","NO_RELATION_TYPE","SELECT_TWO_RECORDS","FILTER_BY_LINKING_CONDITIONS","FILTER_BY_MAIN_RELATIONS2","ONLY_LINKED_DOCUMENTS_ARE_SHOWN","CLICK_TO_START_BARCODE_SCANNING","CLICK_TO_START_BULK_BARCODE_SCANNING","VALUE_CANNOT_BE_CONVERTED_TO_BARCODE","SPECIAL_CHARACTERS","FILTERING_OPTIONS_NOT_FOUND","MIN","MAX","CLEAR_DATE","CHANGE_DATE","FILTER_RANGE_ERROR","DEFAULT_VIEW","TABLEVIEW_NEW","TABLEVIEW_EDIT","TABLEVIEW_COPY","TABLEVIEW_DELETE","ADD_AND_LINK","EXPORT_TO_CSV","EXPORT_TO_EXCEL","LINK","LINK_PARENT","ADD_QUERY","SHOW_ALL_COLUMNS","HIDE_COLUMNS_BY_PRIORITY","SHOW_RETIRED","HIDE_RETIRED","EDIT_ALL","SAVE_ALL","LINKED_RECORD_IS_RETIRED","LINKED_RECORD_REQUIRED","NO_ANY_CUSTOM_FIELDS","SELECT_LINK","COPY_LATEST","SCAN_AND_LINK","EDIT_SORT_DESCRIPTION","SORT_REMOVE_DESCRIPTION","SORT_ADD_NEW_DESCRIPTION","CLICK_TO_PROGRESS","KANBAN_SEARCH","KANBAN_TYPE_HIERARCHY_VIOLATION","PREVIOUS_RECORD","NEXT_RECORD","FOLLOW_LIST","MAKE_PERSONAL","THERE_ARE_NO_PRODUCTS_FOUND","THERE_ARE_NO_PRODUCT_PARTS_FOUND","NO_GROUP_NAME","CLASS_NOT_SELECTED","CLASS_RECORD_SHOULD_BE_SELECTED","INCLUSIVE_PRODUCTS","INCOMPATIBLE_PRODUCTS","DECLINE","NOT_SELECTED","SHOW_ALTERNATIVES","CHOOSE_CONFIGURATION","PRICES","ADD_NEW","OTHER","PRODUCT_DOES_NOT_EXIST","PRODUCTS_DO_NOT_EXIST","ADD_AS_EXTRA_PRODUCT","PRODUCT_LIST_IS_EMPTY","USE_DESCRIPTION","THE_TRANSLATION_ALTERNATIVE_PRICE_WITH_CODE_WILL_BE_USED_ON_PCF","EXECUTE","ENABLE_SOCKET_VALIDATION","IN","OUT","METHODS","DATABASES","GUEST_PAGE","DATABASE_LIST","DATABASE_NAME","SERFER_INFO","DATABASE_TYPE","CYBER_APP_USER","DB_SERVER_NAME","LOGIN_NAME","ENVIRONMENTS","NEW_DATABASE_NAME","SPECIAL_CHARACTERS_NOT_ALLOWED","NEW_ENVIRONMENT_WILL_BE_COPIED","PREVIEW","REFRESH","MENU_START","TEMPLATE","CREATE_NEW_PLANNERTAB","ADD_SUB_LEVEL_PLANNER","DELETE_PLANNER_LEVEL","REMOVE_CONTROL","EDIT_SUB_TABLE","LAYOUT","ADD_SUBFORM","APPLY","LABEL_POSITION","CONTROL_DESCRIPTION","FIELD","ENTITY","MASK","SUB_ENTITY","MEMO_DESCRIPTION","USE_FIELD_NAME","SUBJECT_ENTITY","SUBJECT_FIELD","SCREEN_SUBJECT","TODO_ENTITY","TODO_TYPE","TODO_FIELD","SELECT_TABLE_AND_FIELDS","FILTERS","COLUMN_ORDER_AND_SETTINGS","QUERY_RESULT","FIELDS","OPTIONS","JOIN_TYPE","MAIN_OPTIONS","NORMAL","EXCLUSIVE","INCLUSIVE","MAIN_ONLY","EXCLUDE_MAIN","SELECT_ALL","AND","OR","ADD_RULE","ADD_GROUP","FORMAT","DISPLAY_PRIORITY","SUBTOTAL","AVERAGE","WRAP_FROM_HERE","CROSS_TABLE","SCREEN","SELECT_CUSTOM_SCREEN","CUSTOM_SCREEN","INVERSE","LINK_DIRECTION","LEFT_TO_RIGHT","RIGHT_TO_LEFT","TEMPLATE_SCREEN","SELECT_TEMPLATE_SCREEN","BOTH","ARROW","SELECT_FIRST","RECORDS","OWNER_IS_PLANNER","OWNER_IS_NOT_PLANNER","DROP_DOCUMENT_HERE","DROP_EXCEL_DOCUMENT_HERE","SELECT_A_TYPE_FOR_ALL_RECORDS","HAVE_TO_OPEN_RECORD","ROWS_AFFECTED","MISSING_FIELDS","CANNOT_UPLOAD_MULTIPLE_FILES","MAXIMUM_AMOUNT_OF_LINKED_DOCUMENTS_REACHED","MAXIMUM_LINKED_DOCUMENTS_REACHED_ONLY_FILES_WERE_UPLOADED","UPLOAD_IMAGE","SNAP_PHOTO","DISABLE_ON_DELETE","IGNORE_MISSING_SUB_KEY","DOWNLOAD","CHECKOUT","CHECKIN","LOCK","UNLOCK","ENABLE_VERSION","PRINT_ON_DESKTOP","DISABLE_VERSION","NO_DATA_AVAILABLE","GENERATE_PDF","SAVE_PDF","FIELD_COLLECTION","DATA_PROTECTION_OFFICER","VAULT_OWNER","SAFE_OVNER","DISCLOSURE_OFFICER","PUBLICATION_OFFICER","DEPUTY","COLLECTION_NAME","DATA_ROLE","TYPE_OF_TYPE","DUTCH_POSTAL_CODE_MUST_BE_FULFILLED","NEW_SELECTION","REMEMBER_ME","SELECT_USER","NONE","NO_AVAILABLE_TAGS","SELECT_TAG","BOOK","NO_TAGS_SELECTED","NO_TAGS_AVAILABLE_FOR_ENTITY","OPEN_IN_DESKTOP","QUERY","TEMPLATES","CREATE_TEMPLATE_IN","UPDATE_TEMPLATE_IN","TO","OVW","PAY","HOUR","ADD_LINE","WEEK","BOOKED","SALDO","YEAR","CURRENT_YEAR","NORM_40","FROM_40","SELECT__RESERVATION_SUBJECT","SPECIFY_RESERVATION_DESCRIPTION","DESCRIPTION_MIN_LENGTH","DESCRIPTION_MAX_LENGTH","YEARVIEW","DISSAPROVED","YEAR_OVERVIEW","NORM_40_HOURS","COMMENT","DISAP_REASON","DISAP_OVERVIEW","BOOKED_COUNTER","WEEK_DISAP_RECORDS","BACK","RECOLRD_IS_DISAP","DISAPPROVED","REASON","DURATION","WRITING_TIME_FOR_FUTURE_NOT_ALLOWED","CLICK_TO_ADD_A_NEW_MEMO","MAIN_PORTLET","NOT_AVAILABLE_CURRENT_ENTITY","NOT_AVAILABLE_LINKED_ENTITY","ADD_TODO","REMOVE_AFTER_DROP","TODO","AGENDA_TODAY","AGENDA_MONTH","AGENDA_WORK_WEEK","AGENDA_DAY","AGENDA_WEEK","AGENDA_LIST","AGENDA_USERS","AGENDA_TIMELINE_WEEK","SPECIAL_DAY","REQUEST_LEAVE","REPORT_ILLNESS","RECURRENT","CLICK_TO_RESCHEDULE","STARTING_DATE_IS_OUT_OF_FREEZE_TIME","BOOK_TIME","CANNOT_ACCEPT_APPOINTMENT","RECURRENCE_PATTERN","STARTING_DATE","MONTHS","WEEKS","WEEK_PLANNING","ATTENDEES","AGENDA_NO_EVENTS_TO_DISPLAY","SEND_EMAIL","ACTIONS","MARK_AS_READ","MARK_AS_UNREAD","ADDRESS","TOPIC","ADD_FROM","PROFILE","THEMES","PERSONAL_SETTINGS","NETWORK","LICENSE_HOLDER","CURRENT_PASSWORD","NEW_PASSWORD","RETYPE_NEW_PASSWORD","THERE_ARE_NO_REMOTE_DATABASE_CONNECTIONS","LICENSE_INFO","LICENSE_EXPIRATION_DATE","MAXIMUM_USERS_ALLOWED","MAXIMUM_CONNECT_USERS_ALLOWED","MAXIMUM_REMOTE_USERS_ALLOWED","MAXIMUM_LIMITED1_USERS_ALLOWED","MAXIMUM_LIMITED2_USERS_ALLOWED","MAXIMUM_LIMITED3_USERS_ALLOWED","MAXIMUM_PORTAL_USERS_ALLOWED","MAXIMUM_GDPR_USERS_ALLOWED","MAXIMUM_ROLE","REFRESH_PAGE_ALERT","PREFF_F5_BUTTON_ALERT","BASIC_THEME_OPTIONS","THEME_STYLE","BORDERS_THEME","SIDEBAR_MODE","BASIS_THEME_COLOR","CUSTOM_THEMES","SHOW_PREVIEW","BACKGROUND_COLOR_FOR_SIDEBAR","HEADER_BACKGROUND_COLOR","BACKGROUND_COLOR_FOR_HEADER_TEXT","BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM","BACKGROUND_COLOR_FOR_HOVERED_MENU_ITEM_SECOND_LEVEL_ITEM","BACKGROUND_COLOR_FOR_THEME_SQUARE","COLOR_FOR_HEADER_TEXT","COLOR_FOR_BORDERS_BETWEEN_MENU_LINKS","TEXT_COLOR_FOR_SIDEBAR_MENU","ACTIVE_LINK_COLOR","MENU_2_LEVEL_ACTIVE_LINK_COLOR","CONTROLS_TEXT_COLOR","CONTROLS_BACKGROUND_COLOR","CONTROLS_BACKGROUND_BORDER_COLOR","TABLE_HEADER_TEXT_COLOR","TABLE_HEADER_BACKGROUND_COLOR","TAB_BORDER_COLOR","ACTIVE_TAB_LEVEL_BACKGROUND_COLOR","ACTIVE_TAB_LEVEL_TEXT_COLOR","SQUARE_CORNERS","ROUNDER_CORNERS","WITH_BORDERS","WITHOUT_BORDERS","LEFT","RIGHT","LIGHT","FIXED","SHOW_DELETED","UPDATE_DATABASE","LANGUAGES","UPDATE_DATABASE_ALERT","ENABLED","KIND_NAME","SHOW_MODE","KINDS","TYPE_SECURITY","ACTIONS_CHECK_LIST","ALLOW_CUSTOM_VALUE","FILTER_SUBTABLE","FILTER_BY_K_SEQ","ONE_PARENT","CLEAN_DATABASE","USER_TABLES","SYS_TABLES","REMOVE_EXAMPLES","DELETED_FIELDS","DELETED_TABLES","SUB","SCREENS","TABLE_NAME","SUBJECT_AREA","DISABLE","FIELD_NAME","FIELD_TYPE","SIZE","LOOKUP","SORT","PROPERTIES","FIELD_FLAGS","FLAGS","VALIDATE","VIRTUAL","ALIAS_DEFINITION","DELETED","FIELD_SIZE","DEFAULT_VALUE","SYSTEM_FLAG","HIDDEN_FLAG","SEARCH_FLAG","TRANSLATE_FLAG","UNIQUE_FLAG","MATCHING","CUSTOM_VALUES_ALLOWED","TABLE","MERGE_VIEW","SERACH_SCREEN_IF_ALERT","USER_CALCULATED_EXPRESSION","DEPENDS_ON","FILL_FROM","NOT_SET","STATUS_DESIGNER","ADD_NODE","GENERAL","KIND","TABLE_DEFAULT","FLOW_FOLDER","NEXT_STATUS","CD_FIELD","USER_DB_FIELD","TABLES","CLICK_TO_EXPAND_COLLAPSE","COLUMNS","PRIMARY_KEY_ON_COLUMNS","INDEX_COLUMN","COLUMN","SEQUENCE_NAME","UNIQIUE_SEQUENCE_NAME","DOWNLOAD_METADATA","CLICK_TO_DOWNLOAD_METADATA","VIEW_EDITOR","VIEW","DYNAMIC_VIEW","RECIPE_VERSION","RECORD_ID","VALIDATION","CANNOT_MAKE_AN_ACTIVE_VERSION_INACTIVE","CLICK_TO_SET_SEQUENCE_VALUE","ADD_RELATION_TYPE_TOOLTIP","SHOW_ALL","HIDE","NEW_TAB","EDIT_PORTLETSPACE","EDIT_BUTTON","CONFIRMATION_FOR_UNSAVED_CHANGES","PORTLET_SPACE_WAS_UPDATED","SELECT_EXISTING_PORTLET_SPACE","EXPAND","COLLAPSE","PORTLET_SETTINGS","MINIMIZE","MAXIMIZE","HISTORY","RESET_SECURITY","SPECIAL","ADD_TO_FAVORITES","COPY_WITH_RELATIONS","CONSULT","DASHBOARD","CTRL_S_SAVE","SELECT_ICON","MAKE_EXAMPLE","NO_RECORDS_MESSAGE","NO_NAME_RECORD","PARENT","CHILD","ITSELF","DOCUMENTATION","THERE_IS_NO_DESCRIPTION_AVAILABLE","CONTROL","DASH","STATUS_FLOW","SETTING_THE_STATUS_RUNS","FOLLOW_UP_DOES_NOT_CREATE_AN_ACTION","DURATION_IS_SET","DEADLINE_IS_SET","BUSINESS_ROLES","FUNCTIONS","RECIPIENTS","ADDRESS_FIELD","MAILING_TEMPLATE","REQUEST_TEMPLATE","CONFIGURE","FOLLOW_UP","EXIST_ACTIVE_ACTIONS","RECORD_IS_DISABLED","ACTIVE_ACTIONS_NOT_FOUND","THERE_ARE_NO_NEXT_STATUSES_WITH_CHECK_LIST","CHECKLIST_UPDATED","SCHEDULER_FREE_CAPACITY","SCHEDULER_COMMON_FREE_TIME","PERIOD","STARTING","AGENDA_IS_NOT_CONNECTED","AGENDA_IS_NOT_AVAILABLE","SCHEDULER_NOT_FOUND","RE_PLANNING","RE_PLAN_APPOINTMENT_TO_PERIOD","NUMBER_WEEKS","SUBJECT_TOOLTIP","NO_POSSIBLE_TO_CREATE_APPOINTMENT_IN_THE_PAST","PLEASE_SELECT_DATA_SOURCE","PLEASE_SELECT_WAITING_FOR_INVOICE_LIFESTATUS","PLEASE_SELECT_INVOICE_ENTITY","PLEASE_SELECT_OUTPUT_RECORD_TYPE","RECORD_FOR_TABLE_CREATED","DATA_SOURCE","WAITING_FOR_INVOICING_LIFESTATUS","INVOICE_ENTITY","INVOICE_TYPE","DISABLE_NODE","LINKS_WILL_BE_DELETED","REMOVE_THIS_LINK","UNDO","REDO","PRINT","AUTO_LAYOUT","TOGGLE_FULL_SCREEN","ROTATE","ONLIFESTATUSTRIGGER","PRESENTATION","FILL","OUTLINE","FONT_SIZE","FONT_THICKNESS","FONT_COLOR","TRANSITION","APPROVAL","CONNECTION_TYPE","CONNECTION_STYLE","LINE_THICKNESS","LINE_STYLE","ENABLE","NEXT_ALLOWED","SOLID","DOTTED","DASHED","BOLD","INVALID_LIFESTATUS_NAME","ADVANCED_MODE","TIME_FRAME","DURATION_ELAPSED","DEADLINE_ELAPSED","NO_ACTION_NODE","SKIP_ACTION_CREATION_ON_FOLLOW_UP","CREATE_A_TRIGGER","MULTIPLE_ACTIONS","SELECTED","ICON_NOT_SELECTED","HIDE_LIFESTATUS_NAME","REFERENCE_FLOW","LEDGER","ACCOUNTS","NO_CONTROLS_OF_TYPE_INVOICING","READY_FOR_INVOICING_DATA","INVOICED","READY_FOR_PROCESSING_DATA","SELECT_FINANCIAL_PROCESSOR","OVERRIDE_SECURITY","CHANGE_RECORD_SECURITY","NATIVE_SQL","PLANNING","MAKE_PERSONAL_LABEL","MAKE_EXAMPLE_LABLE","SUPER_USER","DESIGNER_LEVEL1","DESIGNER_LEVEL2","DESIGNER_LEVEL3","NETWORK_MANAGER","US","FINANCIAL","PLEASE_SPECIFY_THE_URL","DROP_REPORT_HERE","LINK_UNDERLYING_RECORD","ADD_AND_LINK_UNDERLYING_RECORD","PROJECT_MANAGER","OVERWRITE","SKIP_EXISTING","COPY_PERIOD","CONFIRM_SELECTION","ON_DELETE","DISABLING_A_RECORD_WITH_A_CUSTOM_LIFESTATUS_IS_NOT_ALLOWED","NOTIFICATIONS_LABEL","TABLE_VIEW_LABEL","GRID_BULK_EDIT","SEND_BY_EMAIL","EDIT_RECORD_LABEL","ACCESS_DENIED_LABEL","UNLINK_RECORD_LABEL","UNLINK_MANY_RECORDS_LABEL","UNLINK_LABEL","UNLINK_ALL_SELECTED_LABEL","ENABLE_RECORD_LABEL","DISABLE_RECORD_LABEL","ADD_TO_BASKET_LABEL","REMOVE_FROM_BASKET_LABEL","PLANNER_LABEL","SELECT_VALUE_LABEL","OWNER_LABEL","ADD_NEW_LINK_LABEL","REMOVE_LINK_LABEL","EDIT_LINK_LABEL","TABLE_TEXT_NON_HAS_FIELDS","RECORD_VIEWED_LABEL","RECORD_EDITED_LABEL","RECORD_DELETED_LABEL","LINK_CREATED_LABEL","LINK_EDITED_LABEL","LINK_DELETED_LABEL","GLOBAL_SETTINGS_LABEL","NO_EXAMPLE_LABEL","CLUSTERED_FLAG","FIELD_MATCHING_LABEL","LINKED_ENTITY_LABEL","CURRENT_ENTITY_LABEL","SELECT_FORMAT_LABEL","ACCOUNT_NAME_LABEL","ACTIVE_LABEL","ARCHIVE_LABEL","REVOKE_LABEL","RLANNED_LABEL","ACQUIRED_LABEL","MAINTAINED_LABEL","OPERATIONAL_LABEL","RETIRED_LABEL","SECURITY_EDITOR_LABEL","SECURITY_LABEL","PASS_OWNER_LABEL","PASS_INHERITANCE_SETTINGS_LABEL","USER_USER_GROUP_LABEL","RIGHTS_LABEL","OPTIONALS_RIGHTS_LABEL","DO_NOT_PASS_SECURITY_LABEL","PASS_RIGHTS_LABEL","PASS_OPTIONAL_RIGHTS_LABEL","REFUSE_PASSED_SECURITY_LABEL","ROW_LABEL","REMOVE_LABEL","PASTE_VARIABLE_LABEL","DO_YOU_WANT_TO_CREATE_LABEL","EDIT_CODE_LABEL","ADD_DEFAULT_SECURITY","SELECT_SECURITY_PROFILE","PLEASE_SELECT_THE_PROFILE","NO_ALTERNATIVE_ENTITIES_WERE_SELECTED","SWITCH_TO_THE_DASH_TYPE","FILL_LOOKUP","MAKE_A_BACK_LINK","BUTTON_NAME","SUB_TABLE_VIEW","INTENTION","NO_RECORDS_TO_SELECT","CLICK_TO_COPY_URL","CLUSTER_SETTINGS","COPY_CLUSTER_MODE_DESCRIPTION","DEFAULT_CLUSTER_MODE_DESCRIPTION","DELTA_CLUSTER_MODE_DESCRIPTION","INVALID_FIELD_DATA","BOOK_CANNOT_BE_RENDERED_ON_THE_BOOK_PAGE","THERE_ARE_NO_PAGES","SCREEN_NOT_FOUND_FOR_THE_PAGE","ERROR_GETTING_BOOK_PAGE","TIMER","ACTIVE_TIMERS","START_TIMER","CLICK_TO_SHOW_ACTIVE_TIMERS","SET_THE_MAXIMUM_DURATION_TO_HOURS","NO_ACTIVE_TIMERS","STOP_THE_TIMER_FOR","STOP_THE_TIMER_FOR_BEFORE_LOGOUT","THE_TIMER_FOR_STARTED_AUTOMATICALLY","MENU_QUERIES","DECIMAL_DIGITS_VALIDATION_MESSAGE","DRAG_N_DROP_FLOWFOLDER","STATUS_SELECTOR","SERIES","NO_VALID_SUBTABLE_VIEW","ACCESS_RECORD_EXISTS","PLEASE_SELECT_USER","PLEASE_SPECIFY_REMOTE_USER","FILTER_BY_TYPE","RECIPE_NAME","LOCKED_THE_ROOT_NODE_IS_LINKED_TO_THE_LOCK_ENTITY","WILL_BE_APPLICABLE_DURING_UNLINKING_OF_ANY_PART_OF_RECIPE","GENERATE_DOCUMENT_FROM_TEMPLATE","SEND_TICKET","CREATE_TICKET","SUMMARY","SUMMARY_IS_REQUIRED","SUMMARY_SHOULD_HAVE_MAXIMUM_80_CHARACTERS","CATEGORY","CATEGORY_IS_REQUIRED","URGENCY","URGENCY_IS_REQUIRED","DESCRIPTION_IS_REQUIRED","DESCRIPTION_SHOULD_HAVE_AT_LEAST_50_CHARACTERS","DESCRIPTION_SHOULD_HAVE_MAXIMUM_2000_CHARACTERS","CONFIRMATIONS","ARE_YOUR_SURE_TO_DELETE_RECORDS","ARE_YOUR_SURE_TO_DISABLE_RECORDS","FIELD_WILL_BE_REMOVED_FROM_NEXT_FIELD_COLLECTION","DELETE_DATABASE_CONFIGURATION","CLOSE","FUNCTION_PACKAGE_DELETION","SUBFORM_AND_ITS_CONTROLS_WILL_BE_DELETED","DO_YOU_WANT_TO_STOP_RECORD_NAME","UNLINK_RECORD","UNLINK_USER","CURRENT_RECORD_WILL_BE_DISABLED","CANVAS_DATA_HAS_BEEN_CHANGED","RESET_SCREEN","REVERSE_LINK_TABLE","RELATION_WILL_BE_REMOVED_FROM_LINK_LIST","DEDUPLICATION_RECORDS_DELETION","ARE_YOU_SURE_YOU_WANT_TO_DELETE_VERSION","YOU_CAN_LOSE_UNSAVED_DATA_IF_YOU_LEAVE","ARE_SURE_TO_CHANGE_CLASS","ARE_SURE_TO_UPDATE_VERSION","TWO_FA_IS_ENABLED_BUT_NOT_CONFIGURED","SCAN_QR_CODE_WITH_TWO_FA","FOLLOW_TO_CONFIGURE_TWO_FA","ENTER_CODE_FROM_TWO_FA_DEVICE","ENTER_YOUR_PASSWORD_TO_CONTINUE_CLEANING_TABLES","LINK_RECORD_WITH_NEXT_RELATION_TYPE","CAN_CAUSE_DUPLICATION_OF_ALIAS","SELECTED_DAYS_WILL_NO_LONGER_TO_BE_EDITABLE","CREATE_NEW_ONE","SELECT_CELL_SUBJECT","THE_TIMER_IS_ALREADY_STARTED","REMOVE_SORT_DESCRIPTION","DEFAULT_RETIRED_STATUS_NOW","ARE_YOU_SURE_YOU_WANT_TO_DELETE_ALL_MATCH_RECORDS","DELETE_DW_PACKAGE","LanguageInfoModel","TranslationStore","GetTranslationsForDb","Enabled","_translations","UpdateLanguages","activeLanguages","cachedLanguages","GetLanguageByShortName","GetLanguageById","shortname","GetTranslation","currentLanguage","currentTranslation","TranslatedValue","AddLanguage","DeleteLanguage","languageToRemoveIndex","UpdateLanguage","languageToUpdate","SaveLanguages","languagesFromServer","MapToLanguageModel","K_Language","TriggerManager","ExecuteOnClickTrigger","ExecuteOnLinkEditorGridSaveTrigger","LeftEntityId","RightEntityId","RelationTypeId","GridEntityId","TriggerStore","ExecuteLinkEditorGridSaveTrigger","ExecuteOnLinkEditorUnlinkTrigger","ExecuteLinkEditorUnlinkTrigger","OnClusteredPivotFinished","triggerId","MainRecordId","MainEntityId","RelatedRecordId","RelatedEntityId","NewKSeq","OldKSeq","ExecuteClusteredPivotFinishedTrigger","ExecuteClickTrigger","ControlTypes","KeyCodes","RenderModes","PortletRenderModes","LABEL_POSITIONS","NoLabel","FullWidth","FONT_STYLES","UNDERLINE","ITALIC","CARD_SCREEN_PROPERTY_TYPE","SCREEN_WIDTH","SCREEN_BACKGROUND_COLOR","FONT_WEIGHT","FONT_FAMILY","FONT_STYLE","SCREEN_PROPERTY_TYPE","SCREEN_HEADER_BACKGROUND_COLOR","SYSTEM_FIELD_NAMES","F_TYPE","F_KIND","CREATEDATE","CREATEDBY","F_LIFESTATUS","CHANGEDATE","CHANGEDBY","SYSTEM_TABLE_NAMES","SYS_SEQUENCES","SYS_USERS","SYS_LOCKS","SYS_GLOBALS","SYS_RIGHTS","SYS_SECURITY","SYS_SESSIONS","SYS_THESAURI","SYS_OBJECTS","SYS_QUEUES","SYS_THINGS","DISABLED","LIFE_STATUS_GROUPS","PLANNED","ACQUIRED","OPERATIONAL","MAINTAINED","RETIRED","EXAMPLE","TABLE_TYPES","Entity","Link","FIELD_TYPES","Currency","Binary","Document","Radio","MultiSelect","Time","PKey","FlagCheck","Sort","Alias","TimeSpan","Reference","Spim","Property","FIELD_TYPE_TO_CONTROL","SortGroups","Header","OptionalHeader","Custom","OptionalFooter","Footer","Undefined","GetSortGroup","InCustom","ON_RECORD_SELECTED","ON_ROW_CLICK","ON_TAB_CLICK","ON_PLANNER_PAGE_CLICK","ON_SELECT_CHANGED","ON_PAGE_CHANGED","ON_AFTER_RENDER","ON_CLOSE","ON_DATA_SAVED","ON_TREE_NODE_SELECTED","ON_ENTTIY_SELECTED","RUNTIME_SETTINGS_APPLIED","RUNTIME_SETTINGS_UPDATED","PORTLET_BAR","CONTROL_BUTTONS","REMOVE_BUTTON_CLICKED","COLLAPSE_BUTTON_CLICKED","EXPAND_BUTTON_CLICKED","RELOAD_BUTTON_CLICKED","SETTINGS_BUTTON_CLICKED","EXPLORER_LOADED","NEW_PORTLET_ADDED","PORTLET_POSITION_CHANGED","NotTypedScreenTypes","Dashboard","CardScreen","StepsScreen","Dropdown","ButtonEdit","ButtonDelete","ButtonListScreen","ButtonSpecialScreen","ButtonDashboardScreen","ButtonGoogleMaps","ButtonFollowUp","History","Tab","TabPage","Checkbox","Drop","RadioButton","Grid","PortletBar","ButtonReturn","Kanban","SelectUser","ButtonPrint","ButtonLinkedIn","ButtonTree","ButtonSecurityReset","Agenda","Scheduler","LinkList","DatabaseDesigner","FormDesigner","CanvasDesigner","FunctionDesigner","LifestatusDesigner","QueryBuilder","TableSecurity","TypeSecurity","RecordSecurity","UserSecurity","UserAllowance","RecordSharing","ButtonFavorite","Search","ButtonCancel","ButtonSave","TimeWriting","ButtonTemplate","TemplateDesigner","RssFeed","CrystalViewer","Tag","FieldSecurity","ButtonConsultScreen","Basket","QueryResult","PortletSpace","GanttChart","BulkEmail","GenericButton","Invoicing","FinancialDashboard","ButtonCopy","Planner","PlannerPage","PlannerLevel","IFrame","SpimCopy","Book","Signature","Spreadsheet","Chart","RecipeEditor","Maps","IFrameExtension","Step","StepPage","ButtonPlan","SIMPLE_CONTROLS","SECURITY_CONTROLS","DEFAULT_ICONS","FontName","IsIcon","BulkMail","Gantt","FONT_NAME","ICON_NAME","DELETION_MODES","AGENDA_TYPES","Todo","Appointment","Task","SpecialDay","Holiday","Illness","Recurrent","AGENDA_LIFE_STATUSES","Requested","Confirmed","Denied","ClusterModes","ClusterModeTranlsation","clusterMode","Delta","Use","Next","NextNext","DATE_FORMATS","MomentFormat","LONG_DATE","LONG_DATE_SHORT_WEEK","LONG_TIME","FULL_DATETIME","WEEKDAY_FULLNAME","WEEKDAY_SHORTNAME","SAVE_FORMAT","SAVE_FORMAT_FULL","TIME_SPAN","TIME_SPAN_LONG","SHORT_DATE_SHORT_WEEK","MONTH_AND_YEAR","DAY_OF_WEK_ddd","WEEK_OF_YEAR_WW","ONLY_A_YEAR","FollowupModes","EDIT_CURRENT","EDIT_NEW","EDIT_CURRENT_AND_NEW","DIRECT_STATUS_UPDATE","RECORD_SECURITY_WORDS","SECURITY_LEVELS","SHARING_READY","SHARED","PLANNER","OWNER","SECURITY_PASS","NEW_OWNER","TABLE_SECURITY_WORDS","TRIGGER_ACTIONS","ON_CLICK","ON_CLUSTERED_PIVOT_FINISHED","USER_ALLOWANCE","HasValue","userAllowance","PlanningAllowed","AgendaDataStore","UpdateAgenda","CreateAppointmentFromTodo","CreatePlanningAppointment","CreatePlanningAppointments","planningId","PlanningId","UserId","BookPlanning","AcceptAppointment","GetSchedule","GetSpecialDays","GetUserAllowance","CopyRecord","ConfigStructModel","jsonConfig","GeneralProperties","properties","ConfigStruct","_configStruct","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","IsWeekView","IsWorkWeekView","_isToDoVisible","_isSpecialDayVisible","_isRequestLeaveVisible","_isReportIllnessVisible","_isRecurrentVisible","SetLastDate","lastDate","GetAgendaDate","SetDate","SetAgendaDate","schedulers","GetControlsByType","scheduler","SetSchedulerDate","SetSpecialDays","userSpecialDays","dataspecialDays","SpecialDays","specialDays","day","FreeDay","FormatToDay","rendering","country","Country","allDay","specialDay","SetUsersSchedule","usersSchedule","daysSchedule","DaysSchedule","businessHours","Starting","Ending","weekday","dow","SetAgendaDayData","agendaItemsPerDay","tablesTypes","_agendaItemsPerDay","_tablesTypes","agendaPerDay","Item","SharedWith","currentSpecialDay","currentDay","SpecialDayStart","SpecialDayEnd","daySchedule","schedule","Rendering","SetAgendaWeakOrWorkWeekData","GetShortDateFormat","GetMonthAndYearFormat","groupByResource","RemoveDuplicatesNonBusiness","UsersId","SubjectId","StartDate","EndDate","GetScheduleRequestModel","ShiftTimeZone","GetSpecialDaysRequestModel","GetTableTypesModel","isAgendaDayOrListOrTime","isAgendaWeakOrWorkWeek","_firstFreezeTimeDate","FirstFreezeTimeDate","UserSpecialDays","UserSchedule","UsersSchedule","AgendaItems","AgendaItemsPerDay","ShowToDoBlock","_plannings","PlanningItems","mapOwnersList","PrepareData","CustomScrollToHour","owners","freeDay","Owner","minColumnWidth","SetCellMinWidthOfDays","minColumnW","numberOfDays","elW","todoEvents","appointmentEvents","appoitmentType","todoType","taskType","holidayType","illnessType","calendarEvents","fullCalendarEventModel","GetFullCalendarHolidayAndIllnessEventModel","GetFullCalendarEventModel","GetFullCalendarPlanningEventModel","GetHoliday","eventModel","typeIdValue","GetValueByFieldId","GetLifeStatusName","LifeStatusInfo","GetCalendarEventColor","eventColor","defaultColor","IsLifeStatusDisabled","IsHolidayIcon","Disabled","GetHolidayTranslatedTooltip","tooltipText","nameValue","nameTranslatedValue","GetTranslatedValueByFieldId","typeNameValue","ownerId","sharedWith","startDateValue","eventColorValue","placeColorValue","timeBeforeValue","timeAfterValue","durationValue","descriptionValue","translatedDescriptionValue","endingValue","calendarEventColor","startDate","timeBefore","timeAfter","hoursDuration","hours","minutesDuration","minutes","endDate","isAllDay","ShiftBackDate","ShiftForwardDate","eventRecordId","FormatTime","timeBeforeHeigth","TimeShiftHeight","timeAfterHeigth","Accepted","possibleToAccept","PossibleToAccept","recurrentRecordId","RecurrentRecordId","Links","resourceId","editable","Editable","editableWithDisabledLifeStatus","isIllness","isHoliday","isHolidayIcon","holidayTooltip","originalResourceId","OriginalResourceId","toDateString","isBefore","utc","planningsAppointments","PlanningAppointments","appointmentsButtons","BuildAppointmentsWeekButtons","bookingsButtons","BuildBookTimeWeekButtons","CompetenceName","users","planning","appointmentsWeekButtons","bookingsWeekButtons","getUserTitle","BookedHours","DecHours","plannigns","BuildWeekButtons","isSame","bookTimeWeekButtons","isFuture","diff","isOutOfFreezeTime","weekButtons","dayOfWeek","shiftTime","shiftDate","TranslatedDisplayValue","EventTitle","TodoEvents","TodoEventName","AddNewTodo","startDateControlData","DataModes","AddSpecialDay","specialDayType","AddHoliday","AddIllness","AddRecurrent","recurrentType","EditRecurrent","RemoveTodoItem","todoEvent","GetDeletionMode","deletionMode","OnDelete","ShowDeletionModeDialog","ShowConfirmationDialog","deletionModeModel","deletionModeDialog","UseDeleteDeletionMode","UseDisableDeletionMode","DeleteRecord","Warnings","Disable","AddNewAppointment","durationMinutes","calendarUserId","ConvertDefaultAppointmentToDateTime","appointmentType","durationControlData","exampleAppointmentId","EditEvent","UpdateAppointment","startDateFieldValue","timeBeforeFieldValue","durationFieldValue","CreateAppointmentFromPlanner","DistributeAppointmentsForPlanning","BookFromPlanner","AgendaTableId","appointment","Accepting","isSubjectScreen","IsSubjectScreen","AppointmentId","ScreenSubjectEntityId","ScreenSubjectRecordId","StartDrag","_todoToAppointmentItem","ConvertTodoToAppointment","appointmentDuration","APPOINTMENT_DURATION","appointmentDurationNumber","cloneEventModel","createAppointmentFromTodoModel","TodoItemId","Duration","RemoveTodo","AppointmentAttendeesId","GetSelectedAppointmentAttendees","IsUserAllowedToCreate","SecurityWord","InitDateTimePicker","fullCalendarBox","headerToolbar","centerBlock","headerDateBtn","alignDateTimePicker","minDate","fullCalendar","currentDate","viewMode","daysOfWeekDisabled","GetFullCalendarOptions","defaultDate","views","agendaFiveDay","weekends","columnFormat","agendaWeek","month","eventLimit","listWeek","noEventsMessage","timelineWeek","resourceLabelText","allDaySlot","firstDay","header","center","buttonIcons","prevYear","nextYear","buttonText","today","agendaDay","scrollTime","slotEventOverlap","timeFormat","defaultView","slotMinutes","droppable","forceEventDuration","defaultTimedEventDuration","selectable","weekNumbers","navLinks","longPressDelay","eventLongPressDelay","resources","eventRenderWait","viewRender","viewName","isAgendaDayOrMonth","isAgendaFiveDayOrWeek","todoBlock","agendaCalendar","startOf","subtract","endOf","SelectUserIsInitialized","SelectUserWillProvideEventOnLoad","viewDestroy","dayClick","jsEvent","resource","GetAppointmentDuration","_ambigTime","droppedEvent","eventId","event_","ctrlKey","isMonthView","dateProfile","starting","eventDragStart","eventDrop","revertFunc","agendaDayOrWeek","newResourceId","currentEvent","eventAllow","dropLocation","eventClick","eventResizeStart","eventResize","eventResizeStop","eventRender","IconComponent","GetLinkedIcon","stringParts","resHours","resMinutes","startTime","visibleBookingsWeekButton","startListTime","endListTime","listTime","placeColor","TimeBefore","TimeAfter","TimeBeforeHeight","TimeAfterHeight","AppointmentsWeekButtons","AppointmentsCanBeDistributed","dayNumber","BookingsWeekButtons","Distribute","ActionToggle","ShowAppointmentsWeekMenu","ShowBookingsWeekMenu","VisibleBookingsWeekButton","StartTime","IsIllness","IsHoliday","HolidayTooltip","EnableTooltip","ListModeTime","ViewType","RenderAllCustomEvents","eventAfterRender","ToggleSmallMode","EventTitleFix","AgendaLinksEllipsisTooltip","eventDestroy","GetEventTemplate","isSpecial","tooltipContent","iconModel","linkedIconModel","IsUseDefaultDuration","calendarView","agendaMonth","agendaListWeek","agendaTimeLineWeek","startDateElem","eventContent","descriptionButton","isAgendaListOrTimeWeek","eventMain","agendaLinksElem","elemEventHeight","GetLinkedUsers","LinksEllipsisTooltip","actionMenuBox","customAgendaEvent","dataMode","subjectLifestatusId","defaultValues","shouldLinkAppointmentAttendees","SubjectLifestatusId","DataMode","screenControl","GetControlBy","relatedRecordId","LinkToSource","relatedEntityId","AddInnerRelation","LinkAppointmentAttendees","copyTableType","GetControlByFieldName","startingModel","copyTableTypeId","followUp","followUpRecordModel","FollowupModeName","FollowUp","linkTable","linkIds","userTable","GetLinkedResources","linkedResources","ActionToggleMenu","ToggleAppointmentsWeekMenu","ToggleBookingsWeekMenu","GoToScheduler","EndTime","LinkedRecords","Resources","IsInTab","LinkedSubGroups","tabControl","tabWithScheduler","tabWithSchedulerIndex","schedulerControlInTab","TabIndex","SetActiveTab","ScrollToScheduler","isLoaded","$scheduler","NavigateToLinkedRecord","linkedRecord","appointmentDurationMinutes","selectedUsers","selectedUserGroups","ReturnFromScheduler","SetStarting","$agenda","scrollToHour","IsInModal","scroller","scrollPosition","GetDataModel","selectUser","IsRememberMe","Initialized","LinkAppointmentAttendee","calendarUserModel","userTypeName","userTypeNameTranslation","SchedulerViewModel","WeekNumber","Week","columnNumber","isRePlanMode","headerCol","HeaderColumns","scrollSize","GetGetColumnWidthClass","Periods","GetHeaderWidthClass","GetPeriods","Period","HeaderColumn","periods","Day","PeriodsMapping","OnViewModel","startingTime","periodDuration","numberOfPeriods","periodStart","periodEnd","HeaderColumnMapping","daysAmount","dayPeriods","ConvertPeriodsToWeekDay","period","CellEditor","_count","_isAvailable","isAvailable","_isFreeDay","isFreeDay","_IsGroupCell","isGroupCell","_period","_appointments","schedulerView","_replanningData","rePlanningData","_isReplanningCell","_isAvailableForReplan","_columnIndex","_availableForReplanRanges","InitAppointments","appointments","isSelected","IsReplanAppointment","IsAvailableForReplan","appointDuration","GetClassName","qty","ConvertValue","rounded","DisplayRanges","ranges","Subjects","AgendaSubjects","DisplayAppointments","toElement","ShowAppointment","OnShowDefaultScreen","ShowDefaultScreen","OnReplan","allowClick","CheckIsAfter","isAfter","ColumnEditor","_cellsEditors","ColumnFirstEditor","recordTypeId","recordTypeName","_recordTypeId","_recordTypeName","GroupEditor","order","_sortOrder","_subGroupEditors","_columnsEditors","_isCollapsed","_oldSortOrder","_selectedCount","GetSelectedCount","subGroup","UpdateSelectedCount","OnOpenGroup","_$collapse","OnCloseGroup","OnCollapseReady","$collapse","OpenGroup","SubGroupEditor","_group","_agenda","GetGroup","CloneToNewGroup","newSubGroupEditor","_columnFirst","SubGroupsMapping","OnUserViewModel","userEditor","dayPeriod","workMinutes","workSchedMinutes","freeDaysMinutes","currentTime","timeStructure","scheduleStructure","freeDaysStructure","cellEditorModel","cellEditor","subGroupEditor","GroupsMapping","resourceGroups","ResourceGroups","schGroups","sortOrder","processedUsers","usersGroups","GetLinkedGroups","groupEditor","processedUser","pu","TimeStructure","CreateTimeStructure","ScheduleStructure","CreateScheduleStructure","FreeDaysStructure","CreateFreeDaysStructure","Editor","UsersGroups","usersGroup","isUserSelected","uGroup","subject","iseSelected","UserTypeId","GenerateCellEditors","selectedSubGroups","resourceGroup","linkedEntity","ResourceGroupName","isResourceSelected","ResourceId","ResourceName","ResourceTypeId","ResourceTypeName","resourcesMapModel","replanningData","subGroupIter","columnsEditor","columnIter","cellIter","currentCount","us","linkedUsers","allGroups","intersection","WorkingSchedule","FreeDays","SchedulerMappingProfile","USER_GROUPS","NumberOfPeriods","StartingTime","PeriodDuration","selectedRows","selectedRow","rows","uniqSelectedRows","availableModel","ag","AvailablePeriods","AvailablePeriodsForReplanning","range","AgendaConnection","CreatingData","ReadingData","ScreenSubjectRecordName","Errors","Month","MonthDayYear","CurrentDate","headerColumns","base","colIndex","cellIndex","newBase","Compare","SchedulerStore","GetScheduler","isBlockingNeed","ResolveObjectResponse","errorException","ButtonCellEditor","isDisabled","_linkedSubGroups","GetTooltipMessage","ColumnButtonsEditor","SCHEDULER_EVENTS","SchedulerCultures","SchedulerView","_parentElement","recentLoaded","_groupEditors","_lastCollapsed","_startDate","_endDate","_settings","_freeCapacity","_commonFreeTime","_notValidGlobals","_ready","_starting","STARTING_TIME","InitPeriodDuration","InitNumberOfPeriods","GlobalValid","IsGlobalValid","_loadInProgres","Views","_columnToScroll","_isRePlanMode","_updateTimeoutValue","_globalsToUpdate","_subjectGlobal","_subjectGlobalValue","GetSchedulerSubjectToggle","_subjectIcon","_isUnblocked","_baseDatePicker","_baseDateStartClickingArrow","_subjectTooltip","RePlanningData","SetDefaultValues","Capitalize","GetScreenSubjectRecordName","GetDisplayPeriodDuration","_periodsDuration","_rePlanningData","GetClass","_numberOfPeriods","GetActiveClass","ChangeView","ChangeDateAndSortDates","SetSchedulerView","RenderData","schedulerMappingProfile","SubjectTable","SubjectIsValid","RestoreSelectedItems","UpdateRow","isoWeek","InitGroupEditors","InitSchedulerDateTimePicker","UnBlockUI","elementArray","lastView","GetSchedulerView","OnPrevClick","OnNextClick","GetDateFromTimePicker","pickerDate","dateComparison","newPickerDateShortFormat","toDate","currentDateShortFormat","newDate","newDateWeek","firstDayCurrentMonth","firstDayNewDateMonth","isOK","pickerPaginationBtn","pickerBtn","AddGlobalToUpdate","OnIncreasePeriods","newNumberOfPeriods","CalculatePeriodDuration","NUMBER_OF_PERIODS","OnDecreasePeriods","OnIncreasePeriodDuration","calculate","newPeriodDuration","fixed_10_minutes","fixed_05_minutes","CalculateDecreasePeriods","PERIOD_DURATION","OnDecreasePeriodDuration","DisableBtnDecreasePeriodBtn","OnIncreaseStarting","OnDecreaseStarting","ChangeProvideSubject","SetSchedulerSubjectToggle","RoundHalf","num","maxPeriods","UpdateUserGlobals","schedularResponseModel","globalValue","globalToUpdate","global","GlobalModel","ProvideSubjects","isFreeTime","recountAvailable","newRow","GenerateRow","freeCapacity","columnEditor","columnEditorIter","cellEditorIter","freeCapacityCell","linkedModel","GroupEntityId","freeCapacitySpecs","fc","columnEditorIndex","cellEditorIndex","available","ge","collapsedGroups","col","ChangeSameSubgroups","subgroup","OnGroupClick","OnSubGroupClick","OnCreateEvent","ReturnToAgenda","SwitchToDefaultMode","GetBottomColumnWidthClass","_screenSubjectEntityId","_screenSubjectRecordId","_currentDate","SetupValid","UpdateSchedulerView","GetSchedulerTemplate","GetInvalidSetupTemplate","GetAgendaConnectionTemplate","GetReadingDataTemplate","GetNotDefinedUsersTemplate","GetGlobalNotValidTemplate","isDestroyed","_isRePlanningMode","_isFromAgenda","_isLinkListLoaded","_component","_isRefreshScreen","screenSubjectEntityId","screenSubjectRecordId","SetRePlanMode","ReplanAppointment","OnSetData","agendas","SetStartingValue","AgendaRequestData","TableTypeName","LinkResources","currentUser","screenSubjectRecordName","EnablePlanner","startingControl","SetDurationValue","durationControl","durationModel","SetEditScreenValues","_colorDescription","GetLabelStyle","BindComponentEvents","_initialColor","SaveBtnText","_disableReason","_lifeStatuses","_followUpLifeStatuses","_choosenLifeStatus","_currentLifeStatus","_followUpRecord","SetRecord","ValidateData","actionSubject","GetActionSubjectRecord","ProcessingStatuses","firstStatus","showCheckLists","checkList","IsManyActions","MultipleActions","ShowCheckLists","followUpParentOption","Parent","ShowStandardFollowUp","_checkList","disableReason","parentRecord","ParentActionSubject","FollowUpParentRecord","PROPERTY_GROUPS","TYPE_FIELD_NAME","OnDropDownOpen","$drDown","bubbles","cancelable","OnInitialize","_select","OnDropDownClose","_showSearchScreenButton","_selectedValueId","_selectedValueLabel","_initialValueLabel","_allowInsert","_clearAllowed","_totalRecordsCount","_autoSelectIfOneRecord","_showConditionToggle","HasFilter","_textInputStyle","_searchScreenIfRecordsCount","_conditions","_isEnableFilter","_isDisableDropDown","_isPreselect","_newLookupRecordScreen","IsAllowInsert","ConditionGroups","CheckCreateRecordAllowance","GetDropdownTemplateName","GetSearchTemplateName","labelBackgroundColor","labelColor","inputBackgroundColor","showConditionToggle","ApplyLinkEditorStyles","AutoSelectIfOneRecord","DefaultFontWeight","HasLinkEditorVisibility","labelStyle","fontStyle","textDecoration","FontColor","FontStyles","Field","FilterByField","UpdateDependsOnValue","InitChangeEvent","FormatValue","LabelOriginalValue","ValFieldTypeName","dropDownItemModel","PreselectOption","_subjectRecordSpecsModel","ControlType","ResetSelection","UpdateDependsOnValues","ShowAddButton","AllowCreatingRecords","IsCdTable","ValTableName","AllowInsert","DropDownFilterState","HasLinkingCondition","ConditionToggler","ValTableId","linkEditor","GetRelatedEntityId","LeftRecordId","RightRecordId","GetRelatedRecordId","ReplaceSelectedValue","NewTypeScreen","newCustomItem","GetSelectedItem","valFieldId","itemTranslation","FieldValueTranslations","IsDate","dateTimeFormat","GetDateFormatFromFieldModel","ValFieldFormatName","HasTime","ValFieldSize","allowCreatingRecords","NewLookupRecord","NewEntityRecord","valTableId","TablesStore","GetLookup","NewRecordScreen","GenerateScreen","newLookupRecordScreen","AddLookupRecord","newRecordModel","LookupEditorStore","getDataRequestModel","SubjectKindId","GetKindId","SubjectStatusId","IsEnableFilter","GetKseq","IsLookupEditorNewRecord","isDisableDropdown","fieldEntityId","parentTypeId","dropdownItem","SetOptionDisable","customValue","isTypeField","isNotForNewRecordScreen","typeSelected","GetDisplayValue","DisableFilter","MultiSelectDataStore","GetOptions","requestData","MultiSelectListModel","_separator","SelectedItems","_showSearchScreen","_showMultiSelectText","_anySelectedItems","TextInput","textInputStyle","Condition","QueryCondition","ShowListSearchScreen","SelectedRecordIds","selectedRecordIds","DropDownContent","ParseOptionsValue","selectedItemsDisplayValue","ParseOptionsLabels","selectedOptionsString","UpdateSelectedItems","SelectedOptionsToString","SelectItem","RemoveItem","rightDifference","leftDifference","_checked","_initialDateChange","_skipTimeShifting","SkipTimeShifting","GetDateFormat","PrepareValue","_calculatedDependsOnValue","momentDate","controlValue","ResetDependOnValue","saveValue","DateChanged","ItemModel","RadioButtonOptionsModel","RadioButtonDataStore","RadioButtonOptionViewModel","_isItemsEmpty","_isValueSet","GetRadioButtonTemplate","AfterSearchTemplateRender","CustomEvent","_searchScreeen","PrepareFormattedValue","ItemsAreLoaded","originalValue","_controlContainerWidth","_controlLabelWidth","_elem","Appearance","Wrap","GetWidth","GetWrapped","IsWrapped","_isUnderlined","_selectHeader","_alignment","headerProperty","underlinedButtonProperty","selectAlignmentProperty","_memoHeightPX","_memoHeightAuto","ApplyWrapTextProperty","WrapText","_editor","_isNewRecord","_serverTranslations","serializedValue","defaultTranslation","changedTranslations","languageShortName","AfterChange","activeTranslations","activeTranslation","translationDiffExists","serverTranslation","_documentManager","documentManager","IsEnableMail","PasswordActions","_action","None","_isHidden","_isFirstChange","_isEyeEnable","_isModified","PasswordActionApplied","Action","SelectedAction","passwordAction","notificationText","Revoke","DisplayActions","_actionsIsVisible","PasswordFocused","TryToRefill","PasswordRevoke","IsExample","passwordValidationMessage","ShowOrHidePassword","SelectUserFormViewModel","UserViewModel","AllUsersGroupChecked","UpdateAllUsersGroupChecked","ToSelectUserViewModel","ToUserViewModel","ToUserViewGroupModel","AllUsersChecked","write","allUsersChecked","someUsersChecked","newUserGroup","groupChecked","SelectUserForm","ApplySelection","ready","SelectUserPopUp","SelectUserState","UserSelected","UserIds","UserGroupSelected","_userSelection","_isShowRememberMe","RememberMeGlobalEnabled","_isRememberMe","_isShowPlanner","_isPlanner","_activeSelection","TogglePlanner","_state","SetAppointmentAttendees","AddingUsersToGroups","userModel","GetSelectUserModel","ShowModal","RestoreState","_dropDownTooltip","ShowSelectUserTooltip","IsShowPlanner","targetTooltip","SelectByBusinessRole","GetSelection","GetRememberMeValue","_selectUserForm","byBusinessRole","combinedCheckedUserGroup","combinedArray","checkedUsers","selectedGroup","checkedGroup","userInGroup","selectedUser","usersWithGroups","screenId","GetId","userVarsManager","selectionByBusinessRole","UserSelection","RememberMe","AddSelection","CreateNewSelection","SetRememberMe","userSelection","GetUserSelection","ChooseSelection","filteredUserSelection","checkedSelection","selectionUIIndex","selectionUI","userSelectionData","GetUserSelections","selectionByScreenId","selectionIndex","SetUserSelection","planningAllowed","RemoveSelection","selectionByScreenIdIndex","ClearSelection","triggerChanges","REMEMBER_SELECT_USER","SetRememberUserSelection","selectedAllUserIds","selectedGroups","usersByGroup","sg","SelectedUsers","MapToSelectUserModel","selectedUserIds","groupIsChecked","UrlCommandModel","EditTemplateModel","UrlCommands","TemplateLanguageModel","TemplateDesignerStore","ToolbarQueryColumn","_isLinkColumn","PasteFieldCode","entityIndex","Element","IsLinkColumn","SpheeresLink","OpenRecordLink","ToolbarQueryEntity","isDesktop","_isDesktop","_columns","_spheeresLink","_openRecordLink","toolbarQueryColumn","PasteTable","ToolbarQueryEntityJoin","queryEntityJoin","isRoot","_joins","_isRoot","_toolbarQueryEntity","LinkEntity","_toolbarQueryLinkEntity","allJoins","Joins","SubEntityJoins","LookupEntityJoins","ReferenceEntityJoins","ReferenceLookupEntityJoins","EntityModel","LinkEntityModel","LinkName","EmailSubject","EmailCC","EmailBCC","EmailTo","Script","Variable","QueryToolbar","_subjectEntity","_isLoadInProgress","_iframeBlocks","_queryId","_urlCommands","_email","__urlCommands","IsScriptingExpanded","_scripting","SetCommands","commands","InitDragula","DragulaExtention","FindGroups","DestroyGroup","_dragulaGroup","AddGroupWithOptions","copy","drake","sibling","elementModel","_original","sourceModel","BlockFrames","UnblockFrames","iframe","GetQueryStore","GetToolbarQuery","editQuery","emailSubject","emailCC","emailBCC","emailTo","EntityJoins","QueryEntity","QueryTypeName","ViewModes","recordsPerPageGlobalValue","OTHER_GRID_PAGE_LINES","EditQuery","InitTemplateQuery","QueryId","queryId","ExpandScripting","NextStatusURLCommand","TINYMCE_COMMANDS","_isWebTemplate","_toolBar","_templateLanguages","_enableEditButton","GetFieldTemplate","_tinyEditor","execCommand","GetTableTemplate","GetSpheeresLinkTemplate","GetOpenRecordLinkTemplate","GetEmailSubjectTemplate","GetScriptTemplate","GetVariableTemplate","GetUrlCommandTemplate","SaveTemplate","ToBase64","FromBase64","titles","variables","fieldNameTranslation","script","UpdateTemplate","SelectTemplateLanguage","_templateFileId","_templateFileKSeq","_htmlTemplate","AfterTinyInit","CreateTemplate","templateLanguage","AfterTinyChange","Posts","RssFeedModel","RssFeedStore","GetRssFeed","_url","_rssPosts","SetUrlProperty","Url","linkArray","_isHyperlink","_dataRecordId","ApplyAliasSuffix","ApplyMaxLengthFormatter","maxFieldSize","GetFieldMaxLength","fieldData","maxLength","OpenRecordScreen","AliasValue","CrystalReportViewerStore","RunReport","EXPORT_FORMATS","Extention","CrystalReportViewer","_exportFormats","_exportFormat","_canvasContext","_canvasWidth","_canvasHeight","_pdfDocument","_totalPages","_scale","_enablePreviousPageButton","_enableNextPageButton","LoadReport","ExportReport","RenderPage","crystalReport","ExportFormat","DisplayReport","DownloadReport","extention","byteArray","PDFJS","disableWorker","getDocument","pdf","numPages","getPage","getViewport","renderContext","canvasContext","FirstPage","LastPage","PreviousPage","ZoomOut","ZoomIn","DataRoles","DPO","VO","SO","DO","PO","DEP","GetAllDataRoles","leftKey","rightKey","GetThirdPartyDataRoles","FieldSecurityStore","GetDataRoles","GetUsers","GetUserFieldCollections","AssigneeModel","AssigneeMappings","MapToAssignee","assigneeDto","MapToNewAssignee","assignee","FieldCollectionModel","Assignee","AssigneeName","FieldCollectionMappings","MapToFieldCollection","fieldCollectionDto","DataRoleModel","fieldCollection","FieldCollection","NewDataRoleDTOModel","dataRole","fieldCollectionName","assigneeId","FieldCollectionName","AssigneeId","DataRoleMappings","MapToDataRole","dataRoleDto","MapToNewDataRole","PostDataRolesRequestModel","newRoles","newDeputies","deletedRoles","deletedDeputies","NewRoles","NewDeputies","DeletedRoles","DeletedDeputies","NewDeputyDTOModel","fieldCollectionId","FieldCollectionId","DeletedRoleDTOModel","FieldSecurityMappings","MapToDataRoles","MapToPostModel","changes","deletedRole","FieldSecurityComponent","ManipulationsEnabled","viewModeTemplateMapping","Templates","ViewMode","ChangeManipulations","HeaderComponent","_dataRole","OnDataRoleAdding","FieldCollectionComponent","OnDataRoleRemoving","NewDataRoleComponent","OnRoleAdding","ValidateForm","OnRoleAddingCancel","NewThirdPartyDataRoleModel","SelectedUser","NewThirdPartyDataRoleComponent","LoadUsers","userType","UsersLoaded","usersDto","NewDORoleComponent","Portal","NewPORoleComponent","Guest","NewPersonalDataRoleModel","NewPersonalDataRoleComponent","NewSORoleComponent","NewVORoleComponent","NewDPORoleComponent","NewDEPRoleModel","FieldCollections","SelectedFieldCollection","NewDEPRoleComponent","FieldCollectionsLoaded","fieldCollections","selectedFieldCollection","DataRoleComponent","ShowNewRoleForm","_fieldCollections","_newRoleForm","AddCollections","newCollections","RemoveDataRole","RemoveCollectionComponent","component","HasFieldCollection","HasAssignee","SelectNewRoleComponent","OnUsersLoad","OnNewDataRoleSaving","OnCancelNewDataRole","FieldSecurityChangesModel","StartRoles","_changes","CreateHeaderComponent","_dataRoles","CreateDataRoleComponents","dataRoleComponent","ChangeRolesManipulations","AddNewDataRole","GetOperationalModes","RequestDataRoles","GetInitModes","GetSettings","GetViewMode","renderViewModeMapping","DataRolesLoaded","userDataRoles","userDataRole","newAssigneesIds","deleteAssignees","validationError","ValidateDataRole","deletedDataRole","deletedDataRoleIndex","newDataRole","newDataRoleIndex","ValidateDeputy","ValidateUniqueDataRole","ValidateThirdPartyDataRole","thirdPartyDataRoles","thirdPartyDataRole","queryProperties","queryExpressionProperty","AssignmentModel","ResourceEntity","effort","Effort","EditingEffort","Editing","SaveChanges","CancelChanges","AssignmentsPopupModel","assignments","Assignments","freeAssignments","fa","FreeAssignments","NewAssignment","EditAssignment","assignment","SaveAssignmentChanges","CancelAssignmentChanges","RemoveAssignment","freeAssignment","CreateAssignment","SaveNewAssignment","newAssignment","occupiedAssignment","CancelNewAssignment","GetAssignments","AssignmentsPopup","_task","assigs","roleId","GanttChartStore","GetPlanVersions","rootId","RootId","GetGanttChartInfo","subTableView","resourcesView","SubTableView","ResourcesView","CreateNewVersion","SaveGanttChartInfo","SaveGanttChartInfoDto","Tasks","OnViewModelMappings","AsTasks","dtos","tasks","AsTask","ResolveDependencies","task","parentEntity","childEntity","ChildEntity","parentRecordId","AsMilliseconds","Completeness","AsAssignees","BarColor","startIsMilestone","endIsMilestone","StartIsMilestone","EndIsMilestone","AsAssignee","RoleId","AsResources","AsResource","AsRoles","AsRole","holders","AsResourceHolders","ResourceHolders","AsResourceHolder","utcDateTime","shiftedDateTime","taskDtos","taskDto","Dependencies","dependencyDto","dependencyTask","dependencyRowNumber","dependencyString","StartAfterDays","depends","TaskDto","AssignmentDto","DependencyDto","TaskParentDto","OnDtoModelMappings","AsTasksDto","AsTaskDto","taskParent","AsUtc","AsAssigneesDto","AsAssigneeDto","depSplit","depIndex","startAfterDays","depTaskDto","AsDependencyDto","milliseconds","utcOffset","GanttChartMappings","_onViewModel","_onDtoModel","OnDtoModel","loadDecorator","resTr","assigTr","taskAssig","resEl","master","assig","roleEl","optr","permissions","canWrite","GanttChartComponent","defaultScale","_versions","_wrapperId","_ge","GanttMaster","_defaultScale","_dataOptions","RenderChart","LoadVersions","versionSelect","ShowCriticalPath","gantt","showCriticalPath","redraw","Resize","splitter","ShowAssignmentsPopup","taskId","getTask","getChildren","_project","project","saveProject","tasksDto","SourceTable","ResourcesTable","InitProject","LoadProject","BindRowEvents","EnableScrollOnTimelineDrag","ApplyColors","canDelete","canWriteOnParent","canAdd","canSeePopEdit","canSeeFullEdit","Roles","loadProject","manageSaveRequired","checkpoint","secondBox","startMillis","fx","EditResources","splitBox1","splitBox2","ganttFixHead","initialScrollLeft","initialClientX","setPointerCapture","pointerId","releasePointerCapture","rowElement","mutationObserver","mutationList","ganttBars","addedNodes","resourceEditor","createFromTemplate","resTbl","newRes","newAss","ass","cnt","Resource","_initialValue","_componentRendered","_ganttChartViewName","_resourcesViewName","InitRuntime","InitDesignTime","MapsStore","GetAddress","CheckGoogleMapsKey","_address","_keyIsNotValidMessage","_query","GOOGLE_MAPS_API_KEY","_portletSpaceManager","portletSpaceManagerModule","portletSpaceManager","PortletSpaceManager","IsDashboard","BulkEmailStore","GetConfig","subjectTableId","subjectRecordId","templateTableId","groupTableId","GetTemplates","GroupTableId","ConfigureBulkEmails","sendModel","CreateNewGroup","createModel","ConfigureBulkEmailDto","MailFieldId","TemplateId","RequestTemplateId","TemplateEntityId","CreateNewGroupDto","BulkEmailConfig","BulkEmailEntity","BulkEmailField","BulkEmailTemplate","_headerLabel","_bulkEntities","_selectedBulkEmailEntity","_bulkFields","_selectedBulkEmailField","_templates","_selectedTemplate","_selectedRequestTemplate","_registered","_running","BindDesignEvents","Registered","PrepareExistingConfiguration","PrepareNewConfiguration","BindRuntimeEvents","RefreshHeaderLabel","templates","MapToConfig","MapToTemplates","configDto","ProcessStatusId","Running","entityDto","fieldDto","templatesDto","currentEntity","currentField","currentTemplate","currentRequestTemplate","OnCopyClick","OnConfigureClick","mailFieldId","templateId","requestTemplateId","templateEntityId","OnRunningToggle","showScreenPromise","ShowBulkEmailHelp","JournalsState","AccountsState","InvoicingStore","CreateInvoices","InvoicingControl","_avalableForScreen","currentLifeStatus","validLifeStatus","RecordLifeStatusId","ConvertToInvoice","EntityNameTranslation","availability","SourceTableViewModel","TotalAmount","sum","ToggleExpansion","GetIconTemplate","SourceTableTypeViewModel","Controls","RecordsAmount","InvoicingControlViewModel","FinancialProcessorRunnerViewModel","InvoicingResultsViewModel","Results","InvoicingResultViewModel","RecordName","Result","LedgerViewModel","Accounts","SubAdministrations","AccountsBtnEnabled","AccountDisabledReason","NotExist","NotLinkedToJournals","AccountsViewModel","SubAdministrationViewModel","FinancialProcessorViewModel","FinancialDashboardMappingProfile","MapToSourceTableViewModel","dtoModel","sourceTableType","MapToSourceTableTypeViewModel","invoicingControl","MapToInvoicingControlViewModel","MapToFinancialProcessorRunner","MapToLedgerViewModel","journalsState","accountsState","MapToAccountsViewModel","subAdministration","MapToSubAdministrationViewModel","MapToInvoicingResultsViewModel","invoicingResult","MapToInvoicingResultViewModel","MapToReadyForInvoicingData","MapToReadyForProcessingData","MapToFinancialProcessor","ReadyForInvoicing","SourceTables","sourceTable","OnInvoiceBtnClick","ReadyForProcessing","IsAvailable","NotAvailableReason","FinancialProcessorRunners","runner","OnSendToFPBtnClick","QueryResultId","Ledger","AccountsBtnClicked","SubAdminBtnClicked","FinancialAPI","_financialButtons","FinancialButtons","ButtonsPresent","NoControlsMessage","GetNoControlsTemplate","InvoicingResults","ReadyForProcessingData","_selectProcessorFromSearch","_financialProcessors","_financialProcessor","_searchPhrase","_paginationToolbar","BuildPaginationToolbar","_grid","BaseGrid","isPrioritiesDisabled","isQueryResultGrid","isEnableSelectRecord","enabledFavorite","_sort","SortColumns","LoadGridData","OPEN_HYPERLINK","LoadFinancialProcessors","SearchFinancialProcessor","CloseAfterSelectingRecord","desiredQueueType","selectedFinancialProcessor","OnStartProcessing","ValidateProcessor","ValidateSelectedRecords","SendToFinancialProcessor","FinancialProcessorId","maxDropdownItemsAmount","Store","GetFinancialProcessors","Amount","pagedResult","financialProcessors","financialProcessor","QueryExpression","FilterByOwners","SearchPhrase","getDataPromise","GetReadyForProcessingData","SetGridData","sendToFPDtoModel","ReadyForInvoicingData","_gridViews","_gridView","_isEditingAllowed","_isDeletingAllowed","_isGridPrioritiesDisabled","_canHide","_canShow","GetGridPriorityToggle","ToggleAllShownColumns","_queryDropdown","QueryDropdowns","NewTableView","EditTableView","CopyTableView","DeleteTableView","LoadTableViewList","GridViewId","ShowQueryEditScreen","GridStore","GetDefaultTableView","InvoicingQuery","queryBuilderControl","SetSubjectEntityId","SetQueryTypeName","InitQuery","ViewGridListStore","GetInvoicingGridViewList","ViewGridModel","selectedView","GridViews","queryTable","GetQueryTable","viewId","SetFilterByOwners","DeleteQueryStore","GetGridPriority","TogglePriorities","gridSubjectEntityId","SetGridPriority","canHide","canShow","GetReadyForInvoicingData","ViewId","Invoice","invoicingResults","GetFinancialDashboardGridView","SetFinancialDashboardGridView","FinancialDashboardDtoModel","SourceTableDtoModel","SourceTableTypeDtoModel","InvoicingControlDtoModel","InvoicingResultsDtoModel","InvoicingResultDtoModel","FinancialProcessorRunnerDtoModel","LedgerDtoModel","AccountsDtoModel","SubAdministrationDtoModel","FinancialDashboardMockStore","dashboardModel","projects","GetSourceTable","InvoicingControlsName","orders","contracts","GetFinancialProcessorRunner","GetLedger","createInvoiceParams","GetInvoicingResult","sendToFPParams","types","GetSourceTableType","invoicingControlsName","invoicingControlName","GetInvoicingControl","recordsAmount","fpRunner","ledger","GetAccounts","GetSubAdministration","accounts","FinancialDashboardStore","StoreFactory","GetStore","_readyForInvoicingComponent","_readyForProcessingComponent","_ledgerComponent","_financialAPIComponent","IsDesignMode","InitComponents","ShowBadRequestError","RequestReadyForInvoicingData","RequestReadyForProcessingData","readyForInvoicingEventData","readyForInvoicingDataModal","OnInvoicesCreated","sendToFPEventData","readyForProcessingQuery","ReadyForProcessingQueries","readyForProcessingDataModal","OnFinancialProcessingStarted","ShowInvoicingResults","GetReadyForProcessingQueries","GetFinancialButtons","queryResult","GetReadyForProcessingQuery","queryExpression","CurrencyStore","GetNativeCurrency","GetCurrencies","_rateDate","_selectedCurrency","_availableCurrencies","_errorResolving","GetRateTitle","_originalCurrency","currencyModel","ParseValue","showCurrency","Converted","Origin","ApplyCulture","RateDate","CurrencyId","IsoCode","userCurrencyIso","DEFAULT_CURRENCY","defaultCurrency","currency","FormatDisplayValue","ChangeRate","rateDate","OnSelectCurrency","InitCurrencyDropdown","SetAvailableCurrencies","ShowAvailableCurrencies","_heightPX","GetDesignerHeight","HeightPX","GetConfigurationBooleanPropertyValue","GetHiddenPCFGROUPSIfEmpty","GetImageSize","GetConfigurationRoleValue","GetConfigurationAnnotationsValue","GetConfigurationAlternativePriceValue","ShowConfigurator","InitForDesignTime","InitForRuntime","attachedFields","lastField","hidePCFGROUPIfEmptyParam","hiddenPCFGROUPSIfEmpty","hiddenPCFGROUPSIfEmptyString","groupString","relationTypeValue","booleanParam","annotationParam","alternativePriceParam","SpimStore","GetAlphaNumericValues","SpimValueViewModel","NumericValueViewModel","spimValue","FeatureType","NumericValue","RangeValueViewModel","rangeLow","rangeHigh","RangeLowDisplayValue","RangeHighDisplayValue","lowValue","RangeLow","highValue","RangeHigh","LogicValueViewModel","LogicalValue","AlphaNumericValueViewModel","dropdownValues","_selectedItemId","AlphaNumericValue","AlphaNumericDisplayValue","PageResponse","ScreenModel","BookStore","GetPage","bookId","pageLayout","BookId","PageLayout","_bookId","_dataLoading","LoadPage","InitialLoad","NestedLevel","_notShownReason","DisposeCurrentPage","GetPageLayout","GetBookClass","layoutProperty","blocksClass","ActionBar","BottomBar","MainBlocks","PageLayoutBlockClass","DesignPageLayoutClass","GetPropertyDefaultValue","IsNested","ScreenFactory","GetScreenInstance","IsOpenedViaBookControl","SetIsReady","LINK_BOOK_RECORD","mainScreen","OperationMessage","SetPageNumberWithoutTriggeringChangeEvent","NumberOfPages","_iControlParams","_labelName","GetName","newDataModel","_isModal","InitSignature","ResizeCanvas","devicePixelRatio","_signaturePad","fromDataURL","isEmpty","dataImageString","SignatureImage","SignatureStore","SaveSignatureData","_originalImageDataModel","_attachments","_removeAttachments","_isReadOnly","attachments","removeAttachments","_newAttachments","LoadSignatureImageData","PrepareForSignatureImage","exampleImage","FirstRecordOnly","ImageDataStore","modifiedValue","originalImg","GetOriginal","signatureExampleImage","signatureEditScreen","signatureIsConsultScreen","SaveOnlySignature","ChartStore","GetChartData","ChartTypeEnum","ChartBuilder","_chartType","ChartType","_chartTitle","ChartTitle","_xAxis","XAxis","_xAxisLabel","XAxisLabel","_yAxis","YAxis","_yAxisLabel","YAxisLabel","_sortBy","SortBy","_series","Series","WrapperId","_xAxisExists","XAxisExists","_yAxisExists","YAxisExists","_seriesExists","SeriesExists","ApplyLabelFormatter","labelValue","labelFormat","dateFormat","GetFormattedValue","pointValue","AreaChartBuilder","series","GetSeries","xAxisLabel","XAxisInfoModel","AxisDefaultName","yAxisLabel","YAxisInfoModel","chart","formatter","GetToolTip","xAxis","labels","categories","GetXAxisCategory","Points","yAxis","GetYAxisCategory","points","xCategories","groupBy","point","Line","groupedPoints","line","groupData","findNearestPointBy","yCategories","xLabel","yLabel","xValue","yValue","LineChartBuilder","_defaultChartType","chartType","PieChartBuilder","_mainAxis","GetMainAxis","_secondaryAxis","plotOptions","pie","dataLabels","AxisExist","mainAxisPoint","secondaryAxisPoint","Pie","innerSize","zMin","xAxisModel","yAxisModel","_mainAxisLabel","_secondaryAxisLabel","StackedAreaChartBuilder","_xCategories","Area","pointFormatter","area","stacking","lineColor","lineWidth","xAxisValue","yAxisValues","yAxisValue","Funnel3DBuilder","Funnel3D","options3d","depth","viewDistance","GetDataLabel","allowOverlap","categoryMax","ChartBuilderFactory","CreateChartBuilder","StackedArea","ChartControl","_preventResize","OnResize","_chartOptions","_chartBuilder","chartParams","XAxisField","YAxisField","SeriesField","unbindResize","FrameLoaded","controlTypeNameToControlClass","KanbanBoard","SpreadsheetControl","ControlFactory","ControlClass","ICON_CLASSES","GetDateLocalizedSeparator","calendarWeeks","valueMoment","RecordKeyModel","DocumentDataModel","DropFileModel","DropDataModel","FileError","LoadingProgress","DropFileModels","_checkedFiles","_hasCustomTypes","_allFilesCheck","_uploadingStarted","_uploadingFinished","_allSelectValue","_showOkayButton","_originalFiles","_entityTypes","_affectedRecords","OnClose","_files","_readyFiles","OnOkayWhenError","OnOkayCallBack","SendDocument","dropDataModel","validateSpreadsheet","_destinationTypeId","FType","bufferChunkSizeInBytes","maxFileSizeKb","currentStreamPosition","endPosition","ChangeFile","OnError","_isConsultScreen","ValidateSreadsheet","_nonrequiredXlsxFields","NonrequiredFields","_requiredXlsxFields","InsertDropDocument","OnSelectTableType","_hasMissingFields","_hasDwPackage","HasDwPackage","OnCloseCallBack","_filesTypeSelected","checkedFiles","_disabledElment","ScreenTypeName","DocumentTypeId","DocumentEntityId","tableTypesModel","singleTypeId","OnOkay","SubscribeObservables","changinFromSubscription","newdata","filesCount","filesWithoutErrors","Upload","SendDocuments","checkFile","getLimitAmountOfDocumentsModel","EntityRecordId","CheckLimitAndSendDocuments","AddFile","GetLimitOfUploadedDocuments","IsLimitOfUploadedDocumentsSet","DocumentsQuantityLeftToLink","documents","warningMessage","uploadChunkModel","FileChunk","_uploadCount","CleanData","_maxFiles","_acceptedFiles","_previewFileName","_previewFileImage","_previewFileSize","_noLabel","_isLinkedDocumentsAmountLimitReached","IsLinkedDocumentsAmountLimitReached","_hideModal","_hasRollbackData","CheckRollback","dataImport","screenEntityId","GetDwPackageId","help","DocumentSubEntityId","GetDropZoneLabel","DragOver","DragLeave","OpenModal","modalHide","CreateModal","screenSubjectTypeId","documentTypeId","Extension","fieldIds","FieldIds","fileChunk","MissingFieldsDto","OperationResultModel","DropdownItemModel","DropdownListModel","FastFilterRangeModel","DropdownDataStore","_groups","groupModel","ControlGroup","_currentControlGroup","IsExpaned","ControlGroupClick","controlGroup","_isLoading","_expandedEntity","_scrollValue","IsOpenFromDatabaseDesigner","isOpenFromDatabaseDesigner","MainEntity","ScreenStore","GetSubjectEntity","subjectEntity","SubjectEntity","EditTable","databaseDesigner","dataBaseId","DbId","ShowTableDesigner","SaveData","ExecuteDbDifferenceScript","EntityClick","parentContainer","scrollValue","prevAll","_controlToolBar","_entityToolBar","EnableToolBar","ControlToolBar","EntityToolBar","EntitiesBarClick","ControlsBarClick","CollapseAll","FormDesignerStore","GetFormDesignerMetaData","CreateNewForm","DeserializeDesignScreen","ResetForm","CreateNewFormRequestModel","_fontStyleOptions","_fontColor","_fontFamily","_fontWeight","_fontStyle","_styleText","_screenBGColor","_screenHeaderBGColor","InitSettingControls","InitWidthCardScreen","FindElementByType","InitBackgroundColorScreen","InitFontColor","InitFontWeight","InitFontFamily","InitFontStyle","InitScreenBGColor","InitScreenHeaderBGColor","PropertyManager","ValueRequired","_widthCardScreen","WebSizeProperty","_bgColorCardScreen","ColorPicker","_fontColorCardScreen","_fontWeightCardScreen","SelectProperty","_fontFamilyCardScreen","_fontStyleCardScreen","_screenBackgroundColor","_screenHeaderBackgroundColor","OnSubmit","screenOptions","PropertyDescriptionType","hasChanges","testScreenBodyHeader","testScreenBodyPageContainer","setProperty","ResetFormRequestModel","FormId","FormTypeId","FieldCollectionDropdownTemplate","TypedScreenDropDownTemplate","_enableEntityTypeButtons","_isEditable","_typedScreens","_disableDelete","_isEnablePathRunnerToggler","_previousScreenName","_screenName","_isSaveEnable","_isDashScreen","_screenTypes","_selectedType","_designScreen","_hasCustomColor","_hasCustomWeight","_screenWidth","_screenBgColor","_pathRunnerTogglerColor","_pathRunnerToggler","_activeFieldCollectionName","_activeTypeName","_defaultDropDownOtherOptions","_dafaultDropDownClass","_isOpenFieldCollectionDropdown","_isOpenTypedScreenDropDown","_isOpenFromDatabaseDesigner","HasCustomColor","HasCustomWeight","ScreenWidth","ScreenBgColor","FontFamily","FontWeight","FontStyle","EnableEntityTypeButtons","IsEditable","IsSaveEnable","IsDashScreen","TypedScreens","CurrentFieldCollection","_currentFieldCollection","CurrentType","_currentType","ShouldShowButtonsOrEntityTypeButtons","ShouldShowButtons","SetScreen","LoadScreen","ApplyScreen","GetScreenName","ControlGroups","designScreen","selectedType","DesignModel","oldTypeId","SelectedTypeInit","GetFieldCollectionId","FormProperties","RenderByTarget","CheckIfExist","InitPathRunnerTogglerColor","IsEnablePathRunner","TogglePathRunner","GetDesignScreen","currentMain","PickType","formId","previewModal","factory","ExistingScreenViewModel","SubForms","buttonSave","GetFieldCollectionButtonColor","buttonStyle","ScreenExists","GetTypeButtonColor","entityType","GetTypeNameById","SelectFieldCollection","SwitchScreenType","SelectTypedScreen","isDashType","SwitchTypedScreen","GetTypedScreen","AllDropDownClose","GetActiveFieldCollectionName","activeFieldCollection","ShowFieldCollectionDropdown","_fieldCollectionDropDown","InitFieldCollectionDropdown","FieldCollectionDropdownOpen","FieldCollectionDropdownClose","GetActiveTypeName","activeType","ShowTypedScreenDropDown","_typedScreenDropDown","InitTypedScreenDropDown","TypedScreenDropDownOpen","TypedScreenDropDownClose","GetScreenId","DeleteScreen","UpdateScreenName","resetFormModel","ShowEntitySelector","OpenSettingsModal","isCardScreen","settingsModal","StartLayoutConfiguration","selectEntityDialog","selectedEntityId","screenModel","OnEditClick","EasterEgg","_controls","controlParam","ControlGroupModel","ControlToolBarModel","customObjects","customObjectProperties","customObjectsCompleter","getCompletions","word","caption","customPropertiesCompleter","getCursorPosition","currentLine","getLine","lastWord","EDITOR_MODES","JAVASCRIPT","CSHARP","langTools","addCompleter","CodeEditor","_fontSizes","_themes","_packageId","_method","PrepareParams","_selectedTheme","_selectedFontSize","_selectedFontFamily","_currentTheme","_toolbarButtonBackgroundColor","_toolbarButtonBackgroundHoverColor","_toolbarButtonColor","_toolbarButtonHoverColor","_imageLogs","setFontSize","setOption","InParams","OutParams","Validation","UpdateCode","_originalCode","getValue","GoToErrorLine","GetCode","getTextRange","Test","_logEditor","setValue","pasteScriptDebugLog","functionPackage","Validate","topNonEditableMarkerId","bottomNonEditableMarkerId","setTheme","setShowPrintMargin","setReadOnly","PasteImage","rowCol","getCursor","moveCursorTo","removeMarker","addMarker","command","completers","setOptions","enableBasicAutocompletion","enableSnippets","enableLiveAutocompletion","invert","Hover","UnHover","componentToHex","rgbToHex","rgb","_allRows","_paginatedRows","_hasPrevious","_hasNext","_paginatorInputWidth","Previous","_package","_currentMethod","_rawResult","_showRawResultCheckbox","_showButtonContainer","Package","CurrentMethod","ShowButtonContainer","FunctionDesignerStore","GetFunctionDesignerMetaData","ShowCodeEditor","Methods","GetMethod","existingMethod","DeletePackage","EditMethod","packag","EditParam","SelectParameter","NewParameter","AddAndLink","NewMethod","IsRawResult","FUNCTION_TYPES","FunctionDesignerMethodParamModel","FunctionDesignerMethodModel","FunctionDesignerPackageModel","ParamValueModel","FunctionExecutionModel","SyntaxErrorModel","CompileErrorModel","FunctionValidationModel","SyntaxErrors","CompileErrors","paddingV","paddingH","_iconColor","_nameInTooltip","_synchronousExecution","getGrid","ClickTrigger","GetSource","grid","GetButtonInGridConfig","recordKeys","QueryEntityGuid","recordKey","paramData","GenericButtonConfigs","GenericButtonId","GetTooltipValue","GridCountRow","_showFavoriteCell","_isEnableSelectRecord","_rowColorEnabled","_dataCells","filterTotalColumns","IsSortDescription","TotalCell","_isGroupActive","IsGroupActive","active","HasWrappedColumn","dataCell","ResizeService","_disableEditLinkButton","_isFastFilterEnabled","_columnWidth","_reservedColumnsWidth","_canShowColumns","_canHideColumns","_overflowInParentBeforeHidden","_rowsReady","_headerColumnsReady","_nextNewRow","_hideCont","groupColumns","_tableScrollLeft","_waitingForGrid","_isMultipleUnlinkModeActive","getColumnWidth","styleWidth","RepositionHeaderOnScroll","scrollPositionInContainer","headElement","portletFullScreen","boundingRect","modalTopPosition","fixedHeaderHeight","jBoxModal","isModal","headerElement","StickyActionBarHeight","distanceFromTop","portletToolbarHeight","topHeaderPosition","ResizeTableCellsAfterRender","_baseTemplate","_prevPageNumber","_isAllSelected","_hideLifeStatusToggle","hideLifeStatusToggle","_hideUnlink","hideUnlink","_hideEdit","hideEdit","isEditable","_enableBasket","enableBasket","_enableFavoritesIfPossible","_backLinkingButtons","backLinkingButtons","_isQueryResultGrid","_unBlockCardScreen","_headerColumns","_rows","_screenRows","_isNested","isNested","_maxRowHeight","maxRowHeight","_isPrioritiesDisabled","_isView","_isCardScreen","_isVisibleFavorites","_bulkEditRow","_uiBlocked","_totalRow","_countRow","_averageRow","_hasTotalRow","_totalGroupRows","_averageGroupRows","_lockRows","_enableSelectRowCell","enableSelectRowCell","_isEnableSortByRelationShips","_enableLinkButton","_enableUnlinkMultipleRecordsButton","_enableLinkParentButton","_hasOneParent","_enableAddAndLinkButton","_enableScanAndLinkButton","_isMultiselect","isMultiselect","_unlinkedRows","_hasSubGrid","_columnClassesCollection","_columnClassesTotalCollection","_inlineControls","_sortByRelationshipOrder","_deletedRows","_parentRow","ParentRow","InitEvents","GetBaseTemplateName","_sortByRelationshipOrderClassName","ShowActionCell","HasInlineControls","_toolbar","LINK_RECORD","LINK_PARENT_RECORD","SCAN_AND_LINK_RECORD","UNLINK_MULTIPLE_RECORDS","SubGridUnlinkMultipleRecords","CONFIRM_MULTIPLE_UNLINK","UnlinkMultipleRecords","SubGridConfirmMultipleUnlinking","CANCEL_MULTIPLE_UNLINK","SubGridCancelMultipleUnlinking","GetEditRows","GetNewAndLinkRows","LOAD_SUB_GRID","NO_CHANGES","EDIT_LINK","CHANGE_VISIBLE_GROUP","EDIT_CLUSTERED_LINK","ADD_TO_BASKET","REMOVE_FROM_BASKET","SAVE_LIFESTATUS","RECORD_EDITED","UNDO_EVERY_RECORD","UPDATE_GRID","LINK_NEXT_RELATION","BACK_LINKING_POPUP_REQUESTED","SELECT_RECORD","UPDATE_SET_ENABLE_ADD_BUTTON","IsEnabledSelectRecord","IsAllSelectedChanged","UpdateSelection","selectAll","ClearData","SelectType","HasFTypeColumn","objectEntityId","subjectTable","LinkTableId","AddNewRow","Rows","AddRow","AddRowsFrom","gridDataModel","headerColumn","EntityMetadata","gridCellValueModel","rowData","gridRowModel","griSubjectEntity","GetGridSubjectEntity","typeColumn","cellData","cellValueModel","DisplayPriority","GetInlineControls","IsSubGrid","HasProcessCards","ROW_SELECTION_CHANGED","EDIT_RECORD","CANCEL_EDIT","DELETE_RECORD","SAVE_RECORD","SubGrid","ParentRowId","AddToBasket","Row","NewRows","GetBulkEditRow","GetBulkEditControls","AddLinkedRows","IsLinkEditorEnabled","inlineControls","rowModel","DisplayOrder","CurrentRow","RowList","_queryExpression","IsCrossTable","ShowCrossTableDetail","ConfirmUnlink","LinkAndEdit","ClickOnFilterButton","CrossTableValueColumn","GetAllQueryColumns","IsCrossValue","GetCrossTableDetail","KSeqs","DisplayFields","pivotDetailsDropDown","El","FilterSaveModels","FilterSaveModel","SetRecordsPerPage","restoreSortState","tableViewId","updateRow","ScreenRows","SetScreenRowData","SetDefaultRowData","screenFactory","batchIndex","loadPromise","screenRow","LoadScreenData","IsEnableLink","ENABLE_SUBGRID_LINK","GridSubjectEntityType","IsEnableUnlinkMultiple","ENABLE_UNLINK_MULTIPLE_RECORDS_SUBGRID","IsEnableAddAndLink","ENABLE_SUBGID_ADD_AND_LINK","IsEnabledScanAndLink","ENABLE_SUBGRID_SCAN_AND_LINK","IsEnableLinkParent","ENABLE_SUBGRID_LINK_PARENT","GridSubjectEntityId","GridParentEntityId","PROCESS_CARDS","GridSubjectEntityMetadata","IsView","InitLinkButtons","IsLinkingAllowed","IsAddAndLinkAllowed","IsLinkJoin","IsScanAndLinkAllowed","HasOneParent","InitHeaderColumns","columnModel","queryEntity","GetEntityByColumnGuid","queryColumn","IsGroup","_gridDataModel","existedColumnAliases","IsFastFilterEnabled","oldHeader","SortOrder","ResetSort","sortColumns","IsEnableSort","GetSortModel","FAST_FILTER","updateFromFastFilters","_tableViewId","hasAnySubgrid","NestedData","SetIsEnableSortByRelationships","linkedRows","IsVisibleFavorite","SetGridSubjectEntityMetadata","IsGroupMode","groupedColumn","SortDirection","CrossWrapped","crossWrappedCell","isVisibleButtons","GetAllQueryEntities","HasGroupColumn","GroupedData","GetGroupedData","IsSubEntity","SaveRecord","SaveLifestatus","MOVE_ROW_UP","MoveRowUp","SortCell","MOVE_ROW_DOWN","MoveRowDown","HOVER_SORT","HoverSort","UN_HOVER_SORT","UnHoverSort","SHOW_ORIGINAL_IMAGE","currentGroupRow","_groupedData","isGroupActive","GroupActive","ChangeVisibleGroup","TotalRow","CountRow","AverageRow","TotalGroupRows","AverageGroupRows","CreateColumnWidthParameters","CreateColumnTotalWidthParameters","AllRows","allGridRowGroups","indexesOfFilteredRowGroups","filteredGroup","indexOfCurrentGroupRow","endIndex","FindNextGreaterNumber","GroupRows","GroupVisible","activeTotalRow","gridTotalRow","GroupGuid","CrossTableWrapped","crossRow","nextGreaterNumber","GridUnlinkMultipleRecords","GridConfirmMultipleUnlinking","GridCancelMultipleUnlinking","UnlinkRecord","isEnableSortByRelationShips","GetSortRows","sortRow","sortCell","isSameRecord","sortRows","HighlightSort","UnHighlightSort","upSortCell","upSortRows","upSortCellIndex","rawRows","upRow","downRow","downSortCell","downSortRows","UpdateSort","sortValue","Swap","downSortCellIndex","upRows","downRows","upIndex","downSortValue","upSortValue","upFieldData","downFieldData","UpCell","DownCell","GetTotalGroup","GetAverageGroup","isFastFilterExist","HideGrid","ShowGrid","removeScroll","AfterRowRender","AfterHeaderColumnsReady","AfterBulkEditRowReady","WaitTillGridShown","AlignCells","rowCells","allCells","reservedCells","reservedIndex","iterationTarget","iterationIndex","removeProperty","afterPriority","superHeaderRows","isCrossTable","rowsData","maxRowWidth","isSubTable","second","third","recalculateGrowColumnsToFullWidth","containerWidth","containerScrollWidth","scrollWidth","isQueryResult","boxMoreEqualContent","contentMoreEqualBox","GrowColumnsToFullWidth","HideColumns","HideColumnsByPriority","SetSuperHeader","firstRow","restRows","restWidth","restColumnsWidth","ApplyMaxRowWidth","difference","headersArray","rowsArray","hiddenColumns","hiddenElementsWidth","haveAlwaysVisibleCells","maxCellsLength","maxColumsToHide","prevItem","nextItem","priority","SortColumnsByPriority","elem","dataFor","IsOrdinary","localHaveAlwaysVisibleCells","localMaxColumsToHide","localHiddenColumns","fragment","createDocumentFragment","superHeaderRow","headerCells","reservedWidth","regular","groupEl","overReservedEl","cloneNode","currentGroupEl","groupsWidth","hasGroups","datasetA","datasetB","priorityA","priorityB","GetColumnPriority","GetClassNames","classNames","additionalClassNames","validationFieldMetadata","AddColumns","columnModels","excludeColumn","rowDataModel","SerializeRowData","UpdateResult","RowLifestatus","UpdateRowLifestatus","DeleteRow","selectedRowsRequestModel","IsUnlinkCheckboxChecked","requestRowModel","RelationshipType","elementsToDelete","dataModelRowsToDelete","deletionIndex","LinkEditorData","deletedRelation","DeletedRelations","UnlinkRecordByRelation","relation","isNewParent","GetRowByRelation","RowsCount","TotalRows","IsLinkParent","aliasToBeAdded","CustomValue","HasFTypeField","GetFtypeCell","GetQueryColumn","columnGuid","entities","GetQueryEntity","AfterGridReady","isSameElement","_resizeLimitInterval","stickyActionBarHeight","actionBarBlock","actionBarSubForm","stickyActionBar","paddingModalPX","paddingModal","Colapse","IsReady","GetRecordIds","GetAllRecordKeys","GetGridRowByRecordId","GetGridRowsByRecordIds","GetUnlinkedGridRowByRecordId","GetUnlinkedGridRowsByRecordIds","GetRowByIndex","DuplicateRow","newRowModel","MarkRecodsInBasket","records","SerializeRows","SerializeLinkEditorData","allRows","linkEditorData","SaveEditRows","SaveRow","ReleaseLockRows","HasEditRows","objectEntity","fTypeField","SetGridDataModel","ShowBulkEditor","bulkEditRow","editingRows","AddInLockRows","RemoveFromLockRows","GetIdsForRelease","isDataValid","IsDataValid","SaveControlValue","bulkCell","bulkCellItem","UpdateRows","lockRow","inlineControl","ViewValue","Cell","SortByRelationships","Asc","Desc","sortModel","OrderColumn","EditAll","SaveAll","editableRows","imageCell","contextRow","cellIdex","imageCells","baseNext","loop","LoadOriginalImage","basePrev","navigationAction","GetImageValue","RelationshipTypes","DATA_REMOVED","CLICK_UNLINK_CHECKBOX","CHANGE_LIFESTATUS","DROPDOWN_VALUE_SELECTED","PRINT_LABEL","CREATE_OR_DELETE_SORT_DESCRIPTION","DataCell","_showClusteredArrow","_isHyperLink","IsHyperLink","rateLimit","_valueChanged","_editValue","_size","_height","MaxRowHeight","_formatManager","_valueExists","_referenceIcon","_referenceEntityName","_viewValue","_pivotDetailsDropDown","PivotDetailsDropdown","_showOriginalMemoButton","_recordNotFound","_hasDescription","HasDescription","TooltipContent","TranslateValue","clusteredCell","SetReferenceData","FeatureTypeIsSet","editMode","GetDataEditor","controlDataModel","OriginalDisplayValue","GetMemoValue","Details","InitPhoneCountry","DEFAULT_COUNTRY_CODE","IntlTelInputExtention","IsCountryValid","_globalCountry","reference","_reference","entityRecord","SelectedEntityRecord","referenceTable","ReferenceTable","SelectedEntity","SetInvalidIcon","IsAbleSort","IsNotAbleSortMessage","SetLinkIcon","IsFieldSystem","IsInsertAllowed","IsControlReadOnly","IsDataChanged","_isEnableEdit","notEnabledMail","GetIconName","TranslateData","InitTemplate","RecordNotFound","GetViewValue","fieldModelTypeName","GetPhoneViewValue","phone","EditValue","RelationType","details","HyperlinkRecordId","ShowNextRelationTypeScreen","editLink","allEntities","Util","GetParentEntity","GetDataByClusteredField","QueryColumn","recordkey","IsOpenAgenda","IsHyperlink","HyperlinkEntityId","NavigateByHyperlink","IsRecordValid","IsNoAccessCell","isNoAccess","IsCrossRow","IsClustered","PrepareCurrency","PrepareSpim","PrepareMemo","PrepareColor","PrepareDocument","PrepareTime","PrepareTimeSpan","PrepareMultiSelect","PrepareDecimalOrInteger","fieldMetadata","localize","valueForDisplay","singleValue","ConvertFromDefaultFormat","_currencyValue","IsAlphaNumeric","IsNumeric","IsLogic","IsRange","documentDataModel","IsEnableSwitchVersion","DisplayPriorityClass","linkEditorFieldData","controlsWithComplexValues","controlWithComplexValue","phoneCode","GetPhoneCode","shownCurrency","SaveLinkEditorValue","SelectNextRelationType","OpenMarkedEditScreen","GetIconClasses","GetAttributes","GetStyle","tooltipValue","ShowOriginalMemo","GetGrid","baseGridModule","baseGrid","$parents","IsBarcodeButtonVisible","IsVirtual","PrintBarCode","ShowNextRelationTypeButton","CrossValueSettings","conf","RelationTypeValueId","ShowNexRelationButton","ShowEditRelationTypeButton","ShowEditRelationButton","HasSortDescription","DescriptionTooltipContent","EditDescription","CancelEditDescription","SaveDescription","CreateOrRemoveDescription","_columnModel","DISPLAY_PRIORITY_TO_CSS","BaseColumn","_sortOrderClassName","GroupTitle","HasGroupTitle","ProcessCardsDropdown","_processCardsLifeStatuses","SelectLifeStatus","_recordInBasket","_isDisableEditLinkButton","_isCrossTable","_enableExpaning","_hasSubGridData","_isRetired","_rowEntity","_isSubgrid","_isLinkJoin","processCardsLifeStatuses","_showExpandButton","_showColapsButton","_isLocked","_isLifeStatusEnabled","_hideToggleDisableButton","_isEditScreen","_isListScreen","_isVisibleButtons","_showEditButton","_showDeleteButton","_isUnlinkCheckboxChecked","_showStepsScreenButton","_unlinkButtonTitle","_editLinkButtonTitle","_isUnlinkButtonDisabled","_isEditLinkButtonDisabled","ProcessCardPage","showDeleteButton","IsVisibleButtons","IsMultipleUnlinkModeActive","IsLifeStatusEnabled","HideToggleDisableButton","HideUnlink","HideEdit","GetBasketButtonTemplateName","ExpandColapseNestedGrid","that","EditLink","OnClickUnlinkCheckbox","ChangeLifeStatus","CancelEditRecord","ShowBackLinkPopup","ButtonName","Intention","GetCurrentName","backLinkingButton","currentLang","ShowProcessCardsLifeStatuses","ShowStepsScreen","processCardsDropdown","StepsScreenId","LoadStepControlData","nextStatusId","IsFavorite","GroupDetailsDropdown","groupDetails","SelectRowCell","SelectRow","isNewRecord","isVisibleFavorite","gridProperties","isSubGrid","isGroupMode","_hasProcessCards","States","_crossTableWrapped","_showSortBorder","_nestedGrids","_relationshipType","_gridProperties","_isSubGrid","_isSelectedForUnlinking","_selectRowCell","_hasInlineControls","rowEntity","_isEntity","_actionCell","HasSubGridsData","ProcessCardsLifeStatuses","_favoriteCell","isEditOrListScreen","_isLockConfirmated","HasSubGrids","SortDescriptionColumn","_isGroupMode","SetRowColor","InitWrappedRows","ROW_COLOR","colorFields","_rowColor","IsSelectedChanged","SetVisibleButtons","isVisibleButton","ActionCell","RecordKindId","lockedCells","IsStartGroup","IsEndGroup","GetSortDescriptionRowTemplateName","isEditMode","RecordInBasket","recordInBasket","visible","GetDependsOnDataCells","dependsOn","UpdateDependsOnCells","dependsOnId","cellsToUpdate","LeftTableId","RightTableId","subGridData","enableSubGridBasket","RowId","GoToRecordScreen","GetMainRecord","SubQueryGuid","mainRecordId","mainEntityId","GetEntityByGuid","alias","Barcode","maxWrapped","GridRowModel","wrappedCell","emptyCell","GridCellValueModel","nestedData","GetLinkEditorFieldData","SaveLinkEditorData","cellByFieldId","_linkEditorData","LinkEditorChanges","linkEditorChange","FieldValues","nestedGrid","GetGroupedDataTooltip","OnHyperlinkClick","isOpenAgenda","ShowGroupDetail","ExecuteHyperlinkTrigger","GetGroupDetail","HTMLElement","groupDetailsDropdown","GetColumns","GetWrappedColumns","wrappedCells","wrapGroups","WrapGroup","GridGroupToggle","GetTableTypeFlowFolder","gridContainer","resizeObserver","$grip","helper","scrollSensitivity","unobserve","IsGridRow","__screen","GridAverageRow","filterAverageColumns","GroupColumn","FastFilterSearch","_searchValue","_inputType","_changeTimerId","FormatInputValue","_filterType","AddEventListenerChangeValue","parentEl","onkeyup","actualValue","arg","filterType","_element","FastFilter","getGridDataModel","_getGridDataModel","_isOpenFastFilter","_isFilterApplied","_isItemsLoaded","_preselectedRecords","_availableItems","_viewModelItem","_saveModel","_allFilters","_storedCheckboxes","_initialDataMapped","_existedColumnAliases","_search","SearchChangeCallback","_filterId","_originalViewModelItems","_regex","_isNewItemsLoaded","Preselect","columnFilters","GetGridColumnFilters","FieldAlias","TableViewId","isFilterApplied","existedAlias","ReopenFastFilter","isSearch","isEmptySearchValue","viewModelList","wasItemChecked","RestoreSelectedCheckbox","viewModelItem","preselected","MapToSaveModel","StoreSelectedCheckboxes","listFromStore","storedItem","viewItem","valuesList","IsItemsLoaded","ShowSearchScreenButton","FilterModel","_Clear","Filter","_Filter","LoadFastFilterData","dropDownElement","removeBlockUi","visibleBeginningSpinner","CursorWait","GetFastFilterData","GetRequestParams","DataLoadCallback","CheckPositionScroll","fastFilterList","RangeHighlight","SortItems","FilterColumnGuid","FilterSearchPhrase","TimeZone","getTimezoneOffset","SelectedTags","RecordOwners","FastFilters","itemsList","isNumericSort","Childs","valueA","valueB","existedItemIndex","existedItem","GetPopUpTemplate","OpenFilter","listArr","firstChild","nodeValue","createRange","rng","setStart","setEnd","highlightDiv","boxShadow","surroundContents","recordsCount","isScroll","lastPages","counterPage","targetScroll","addCursor","DecimalFilter","GetIconFromModel","IntegerFilter","TextFilter","DateFilter","_jsTreeModel","_jsTreeSaveModel","MapToJstreeModel","IdentifyChecked","preselectedList","currentItem","viewChild","opened","jstreeOptions","checkbox","keep_selected_style","three_state","dots","check_callback","$jsTreeElement","_jsTree","newtree","get_json","mapNodes","nodesList","mappedNode","GetFastFilterDateData","SortYears","Dates","FilterItems","LookupFilter","YesnoFilter","TimespanFilter","GetFastFilterTimeData","TimeFilter","originalItems","DateTimeFilter","OriginValue","originValue","GetFastFilterDateTimeData","_isClustered","_fastFilter","InitFastFilter","CreateFastFilter","fastFilterParams","IsEnableFastFilter","SortModel","OrderColumnGuid","GridTotalRow","FieldDataModel","GridRowDataModel","UpdateLifestatusModel","_leftRecordName","_rightRecordName","_leftEntityIcon","_rightEntityIcon","_relationType","pivotDetails","LeftRecordName","RightRecordName","LeftEntityIcon","RightEntityIcon","showButtons","selectOnRowClick","OnSortColumns","_sorting","GetQueryData","OnUpdateGrid","subGrid","parentRowId","_updateFromFastFilters","contextGrid","OnPaginationChange","loadData","_showButtons","_selectOnRowClick","Toolbar","ExportData","SEARCH_BY_PHRASE","SearchByPhrase","gridOptions","otherGridPageLines","IsExportDataAllowed","OnHyperLink","ShowAddQueryResult","getGridDataRequestModel","multiSelect","fastFilters","SetGridColumnFilters","preselectedFilters","preselectedFilter","searchPhrase","exportParams","ShowRetired","GoToScreen","linkInfo","DEFAULT_RECORDS_PER_PAGE","READONLY","HIDE_LIFESTATUS_TOGGLE","HIDE_UNLINK","HIDE_EDIT","ENABLE_BASKET","ENABLE_LINK","ENABLE_UNLINK_MULTIPLE","ENABLE_LINK_PARENT","ENABLE_NEW_LINK","ENABLE_ADD_AND_LINK","ENABLE_SCAN_AND_LINK","ENABLE_ADD_QUERY","BACK_LINKING","SECURITY_FILTER","QUERY_CONDITION","MAX_ROW_HEIGHT","SHOW_TABLE_VIEW","BULK_EDIT","LINKING_CONDITION","CARD_SCREEN","POSITION","SECURITY_FILTERS","SHARING_SECURITY","RECORD_SECURITY","LinkRecordsStore","LinkWithRecords","GetLastLinkedRecordEditScreen","GetLastSubRecordSpecs","CopyLastSubRecord","CopySubRecord","GetLookupOptions","SaveSelection","LookupOptionDto","ErrorSummary","LookupField","LookupFieldTable","Mappings","MapToLookupOptions","MapToLookupField","MapToLookupOption","LinkTable","MapToLookupFieldTable","LeftTable","RightTable","FillLookupPopup","RequestOptions","LookupFieldId","GetBackLinkOptions","GetSelectedOptions","selectedOptions","OptionsGroup","MapToOptionsGroup","MapToLinkTable","MapToTable","MaptToOption","MultipleSelection","SelectedOptions","MakeBackLinkPopup","BackLinking","ShowFillLookupPopup","ShowMakeBackLinkPopup","_hasLinkingCondition","_isTableViewUpdating","_designFields","_tableView","_addingRecordAllowed","_linkingRecordAllowed","_scanAndLinkAllowed","_enableLink","_enableUnlinkMultiple","_enableLinkParent","_enableAddAndLink","_enableAddFromQuery","_enableScanAndLink","_showTableViewElement","_showSearchInput","_enableNewRecord","_showBulkEditButton","_disabledShowAllColumnsBtn","_disableBulkEditButton","_showResetFilterButton","_filterByOwners","_applyFilter","_showTogglePrioritiesButton","_showRetiredRecords","_userVarsManager","_disabledCopyButton","_refreshScreenAfterManipulations","_isFastFilter","_viewMode","GetTableView","_enableTableViewLookup","_enableFunctionLookup","GridDataModel","_queryBuilder","_viewGridList","GetToolbarControls","_baseGrid","defaultColumns","GridColumnModel","LinkSubGridRecord","LinkSubGridParentRecord","recordSpecs","OnAddAndSubGridLinkRecord","ScanAndLinkSubGridRecord","SortData","UpdateSubGridLinkRecord","UpdateLinkRecord","LinkWithNextRelationType","newKSeq","updateLinkRecordPromise","MainRecordTypeId","gridCellValue","kSeqMetadata","oldKSeqValue","_basket","basketControl","RelatedRecordTypeId","UpdateLinkRecordGeneral","SetEnabledAddButton","IsVisibleAddButton","SetEnableEditAllButton","IsVisibleEditAllButton","IsEditAll","backLinking","InitShowAllColumns","NEW_TABLE_VIEW","BulkEdit","TOGGLE_RETIRED","EDIT_TABLE_VIEW","COPY_TABLE_VIEW","DELETE_TABLE_VIEW","LOCK_TABLE_VIEW","LockTableView","UNLOCK_TABLE_VIEW","UnlockTableView","LinkParentRecord","COPY_LATEST_RECORD","isEntityGrid","CopyLatestLink","CopyLatestSubRecord","OnAddAndLinkRecord","ScanAndLinkRecord","AddQuery","TOGGLE_PRIORITIES","RESET_FILTER","ResetFilter","REFRESH_GRID","groupIds","userIds","combinedIds","ListView","OnClusteredPivotFinishedTrigger","oldKSeq","ToggleAllShownColums","isNew","isNewCreated","requestedFromEditScreen","updateDataModel","UpdateDataModel","editLinkData","GetNotifier","parentEntityId","familyType","relatedRecordTypeId","sorting","showAllColumnsValue","linkingConditionProperty","linkingCondition","securityFilter","securityFilterPropValue","HasCardScreen","isEnableNewRecord","SetPropertyEnabled","IsAbleBulkEdit","UpdateTableViewList","BlockToolbar","GetGridViewList","tableViewList","lockedTableView","GetGridView","SELECT_TABLE_VIEW","SetTableViewList","SetGridView","UnBlockToolbar","InitRecordPerPage","_subjectEntityName","_selectedTags","GetRecordPerPageGlobalName","recordsPerPageGlobalName","CONSULT_GRID_PAGE_LINES","LIST_GRID_PAGE_LINES","SelectTableView","ResetGridFilters","GetDataMode","CheckingFilters","userVarsFastFilter","thisUserVarsViewFastFilters","fastFilter","defaultTableViewId","windowScrollPosition","_isRestoreScrollPosition","_isLinkEditorEnabled","_isDirectionCorrect","IsDirectionCorrect","InitToolbar","GetGridEntityId","even","LoadBasket","_tableViewUpdatingSubscription","ShowSearchInput","ShowRetiredButton","ShowControls","ShowTogglePrioritiesButton","HasFastFilter","gridSubject","gridSubjectEntityMetadata","CardScreenId","_toolbarBlock","ListenForWrapperResize","GetDefaultTableViewMetaData","SetIsQueryBuilderScreen","SetSubjectRecordId","SetGridId","LockQueryStore","EnableBulkScan","isBulkBarcodeScanning","SelectFromLinkSubGridRecord","linkedEntityId","linkedRecordId","linkedRecordTypeId","onRecordSelect","OpenBarcodeScannerForBulkScan","SelectFromLinkSubGridRecords","linkedRecordIds","sequence","UpdateLinkRecordById","LinkedRecordIds","gridSubjectRow","IsParentLinking","childEntityId","childRecordId","childRecordTypeId","parentRecordTypeId","seq","mainRecordTypeId","mainRecordStatusId","selfRelation","AddAndSubGidLinkRecord","barcodeScanner","SearchByBarcode","LinkForEditScreen","updateLinkRecord","isLinkParent","GridSubjectRecordIds","mainRecordKindId","relatedRecordKindId","loadScreenRelationModel","MainRecordKindId","SelectFromLinkRecord","deletedRows","deletedRow","CopyEntityRowRecord","CopyLinkedRecord","RightRecordTypeId","RightRecordKindId","IsCorrectDirection","CopySubEntityRowRecord","RecreateLatestSubRecord","CopyLatestSubRecordRow","rowToDuplicate","rowRecordId","rowRecordTypeId","rowRecordKindId","showTypeSelector","profileSelectorScreen","ProfileSelectorScreen","ShowIfNeeded","IsAddQueryButton","QuerySubjectId","ShowQueryResultScreen","SetSubjectRecord","SetPageNumber","DesignFields","relatedSubEntityId","SubTableId","SequenceId","SaveImmediately","LinkSubGridCreatedRecord","linkRecordSpecs","subjectAlreadyLinked","linkListControl","AfterSelectRecord","LinkCreatedRecord","actionGlobal","ACTION_TABLE","actionSubjectRecord","isSubjectChild","addAndLinkRecordModel","InsertOrUpdateRecordModel","LinkRecordModel","FilterByTags","selectedTags","FormatControlName","FormatFieldName","gridContainerWrapper","ShouldShowBottomPagination","EntityMetadataModel","extractLookupValFieldMetadata","LookupTable","lookupTableField","FieldMetadataModel","RecordKey","CurrencyModel","CurrencyValueModel","ConvertedCurrencyModel","DocumentValueModel","SpimValueModel","GridTotalCellValueModel","GridTotalRowModel","GridCountCellValueModel","GridCountRowModel","GridAverageCellValueModel","GridAverageRowModel","GetRecordModelIds","RelatedEntityMetadataModel","RelatedSubEntityMetadataModel","EntityRelationshipsMetadataModel","RelatedEntitiesMetadata","RelatedSubEntitiesMetadata","ReferenceEntities","TablesRelatedToLookup","CanvasPositionModel","Top","Left","CanvasSizeModel","GenericButtonConfigModel","CrossValueSettingsModel","QueryColumnModel","QueryConditionGroupModel","Operator","QueryConditionItemModel","OnSerialized","ValueType","SubQuery","queryExpressionType","QueryEntityJoinModel","CanvasPosition","CanvasSize","JoinType","LeftJoin","UseMain","NotUseMain","LinkDirection","LeftToRight","QueryEntityModel","IsIterator","Sorts","QuerySortModel","LockedTableView","PivotDetailModel","GroupDetailModel","defered","ViewGridResponseModel","GetLinkEditorGridViewList","_showTableViewLookup","_showLinkButton","_showUnlinkMultipleRecordsButton","_showLinkParentButton","_showAddAndLinkButton","_showScanAndLinkButton","_showAddQueryButton","_activeScreen","isGridPrioritiesEnabled","showTogglePrioritiesButton","showBulkEditButton","disableBulkEditButton","showResetFilterButton","disabledShowAllColumnsBtn","showRetiredButton","_enableEditTableView","_enableDeleteTableView","_gridSubjectEntityMetadata","_showAddButton","_showEditAllButton","_recordsInBasket","_isPortlet","_isSpecialScreen","_isDashboardScreen","_showRetired","_showRetiredButton","_editAll","_showControls","_isMultipleUnlinkButtonVisible","CreateNewMessage","AddAndLinkMessage","LinkMessage","gridSubjectEntityNameTranslation","gridSubjectEntityName","SetDefaultTableView","selectedTableView","enableAddButton","enableEditAllButton","CopyLatestRecord","ToggleRetired","ToggleEditAll","IsVisibleCopyButton","HistoryLogsStore","GetHistory","HasHistory","HistoryContent","HistoryLogs","_historyLogs","_historyThs","GetHistoryValues","newHistoryArgument","ChangeDate","FormatDateTimezone","NewValue","pick","_hasHistory","CheckHistory","GetHistoryData","GetContentTemplateName","_historyLogsData","isInTab","_imageCropperScreen","_isImageGallery","_imageHeight","_hidden","_cropedImageClass","_maxUploadingFilesSize","_maxCombinedSize","_annotationsEnabled","_disableCropping","IsImageFile","DisableCropping","ApplyAnnotationsProperty","ApplyShowAnnotationProperty","ImageHeight","HideIfEmpty","hideIfEmpty","annotationsEnabled","showAnnotationsEnabled","GetImageClass","LoadGalleryData","PrepareForGallery","LoadSingleImageData","PrepareForSingleImage","InitEditGalleryViewer","MaxCombinedSize","MaxUploadingFilesSize","UploadSingleImageCrop","UploadSingleImageNotCrop","AfterUploadInGallery","AfterUploadSingleImage","_editGalleryContainer","_editGalleryViewer","AttachModalComponent","isPortrait","_aspectRatio","_windowWidth","_cropedImage","AfterCrop","_video","_cansavStatus","_showStream","GetCameraStream","stream","_stream","InitPhotoPreview","constraints","ideal","getUserMedia","TakePhoto","StopStream","BackToStream","getTracks","base64Image","CloseComponentInModal","FileModel","DeserializeAttachment","SaveCropedImage","KanbanParentTypeModel","EntityTypeModel","HasFlowFolder","ParentTypeModels","TagModel","MainLink","PriorityModel","CardThumbnailModel","ParentOrChildRecordModel","ActionModel","HighlightedAction","Tags","IsDisabledCard","NewActiveTimer","NewActiveTimerModel","ReplaceActionMemoText","ActionMemo","TimerModel","RecordModel","AriaExpanded","ToggleAccordion","ReplaceMemoText","ActionItemModel","StepModel","ActionItems","ThumbnailModel","LinkModel","StatusModel","KanbanViewModel","ViewListResponseModel","KanbanStore","GetViewList","GetDefaultKanbanViewMetaData","UpdateActionStatus","UpdatePriority","KanbanTypeViewModel","K_Type","ShowTypeHierarchy","typeNameTranslation","parentTypeModel","KanbanStep","_links","ClearRecords","HasNextStatus","currentStatus","IdStepFrom","GetTestTemplate","MainLinks","enhanceUserWithAvatar","avatarThumbnails","Usergroup","ContactId","thumbnailImage","DebouncedUpdatePriority","tags","priorities","parentOrChildRecords","warnings","withGreyBackground","withDateBadges","colorBar","onPriorityUpdateError","onMailClick","progressBar","retiredTodoActionsNumber","totalTodoActionsNumber","isCalculatedViaCalcPriority","heightImage","alwaysShowDeadline","hideOwner","isDesign","isTodo","showTooltip","showAlias","timerControl","activeTimer","newActiveTimer","actionRecord","_tags","_priority","_avatarThumbnails","_priorities","_thumbnail","_parentOrChildRecords","_warnings","_withGreyBackground","_withDateBadges","_colorBar","_onPriorityUpdateError","_onMailClick","_progressBar","_isDesign","_isTodo","_retiredTodoActionsNumber","_totalTodoActionsNumber","_alwaysShowDeadline","_hideOwner","_readOnly","_isCalculatedViaCalcPriority","_heightImage","_viewerImages","_showTooltip","_showAlias","_activeTimer","_actionRecord","thumbnailFileModel","_areAvatarsWrapped","IsOwner","performers","allUsers","_allUsersTooltip","_owner","_performers","_priorityColor","_priorityName","GetActiveTimer","SetTimerControlData","IsParentOrChildRecords","IsTagContainer","IsPriority","IsTags","AllUsersTooltip","GetUserNameTooltip","GetParentOrChildRecordTemplate","GetParentOrChildRecordName","nameTranslation","GetParentOrChildRecordTypeName","IsChild","IsParent","MouseOver","typeText","recordModel","currentEl","recordName","isTypeName","typeNameTooltipOptions","nameTooltipOptions","MouseOut","OpenRecord","GetNameTemplate","GetAliasTemplate","GetInfoTemplate","GetTimerInCardTemplate","GetHeightImage","elementWidth","trunc","propertyHeight","originalCardWidth","CalculateProgressBar","calculateProgressBar","ProgressBar","OnPriorityClick","currentPriority","priorityIndex","OnAvatarsClick","PriorityId","GetActionDate","ActionDate","GetActionDateFormatted","GetActionDeadline","ActionDeadline","GetActionDeadlineFormatted","IsActionDateShown","actionDate","actionDeadline","UseBadgeTemplate","isActionDateShown","HasTimer","_timerControl","KanbanMode","TimerEntityId","TimerRecordId","ActionRecord","CurrentDuration","SetKanbanActiveTimer","GetTagFullNameTooltipContent","val1","val2","val3","GetKanbanCardTemplateName","createViewModel","componentInfo","CLASSES","RepositionDefaultKanbanHeaderOnScroll","_elObservable","allTitleElement","titleElementHeight","positionKanbanBoardRoot","_selectedTypeObservable","selectedTypeObservable","generalProperties","_searchString","searchString","showPlanned","_showTypeError","showTypeError","_titleFieldId","titleFieldId","_kanbanSubjectId","kanbanSubjectId","_kanbanSubjectName","kanbanSubjectName","_viewId","_isTodoToggleShown","isTodoToggleShown","_originSteps","_steps","_dragulaState","_withMemo","Css","_calculateHeightContainerStyle","SetContainerHeight","kanbanBoardDrake","accepts","moves","Actions","actions","Steps","ActionRecordId","ActionTypeName","ActionTypeId","containers","ListenForStatusesLoad","_selectedTypeSubscription","LoadStatuses","_selectedUsersSubscription","_showPlannedSubscription","_viewIdSubscription","_showTypeErrorSubscription","ShowTypeError","SubjectEntityName","FilterByTypeHierarchy","UseSubjectEntity","UseKanbanSubject","FilterByEntityId","FilterByRecordId","WithTags","WithSubjectImage","WithPriorities","WithCalculatedPriority","IsCalculatedViaCalcPriority","WithMails","WithColor","IsToDo","WithMemo","WithToDoProgressBar","HasTodoType","Thumbnails","Priorities","HeaderHeightResize","steps","isActionTypeAction","IdStepTo","kanbanStep","TopHeight","AfterRenderSteps","SetContainerStyle","isFullscreen","pageHeaderHeight","kanbanBoardRootHeight","toolbarHeight","defaultKanbanHtml","Collapsing","GetActionItemsTemplate","TodoActionItemsTemplate","$_data","ShowCheckListKanban","nextLifeStatus","NextLifeStatuses","CheckListKanban","kanbanRecordModel","TryToApproveLifeStatus","CancelUpdateProcess","AproveLifeStatus","AfterDropCase","sourceIndex","sourceItems","sourceContext","targetIndex","targetItems","targetContext","isActionItems","sourceMultipleActions","oneAction","ActionsEntityId","ActionEntityId","lifeStatusesModel","aprovalRelatedData","stepId","checkItemsValue","NewStatusId","PreviousLifeStatusId","GetConsultScreenType","GetEditScreenType","GetScreenTypeFromProperty","screenTypeName","OpenConsultScreen","OpenScreen","OpenEditScreen","OpenActionRecordScreen","followUpRecord","activeCard","openMailTab","IsTypeTransformationRequired","RemoveFromRecent","OpenMailTab","followUpControl","GetControlByType","currentLifestatus","EditScreenInFollowUpMode","SearchRecordsBySearchTerm","RecordMatchesByCard","RecordMatchesByAction","RecordMatchesByLink","filterDelegate","newSteps","newStep","ActionName","SelectAction","card","newRecordSettings","actionEntityId","tabPage","MailEntityId","SetActiveTabPage","UseFilterByEntityRecord","OnPriorityUpdateError","OnMailClick","GetRootDefaultTemplateName","RepositionToDoKanbanHeaderOnScroll","titleElement","toDoKanbanContainer","paddingTop","_noTypesLoaded","noTypesLoaded","_todoEntityId","todoEntityId","_todoTypeId","todoTypeId","_todoFieldId","todoFieldId","_loadStatuses","loadStatuses","IsTodoEnabled","IsTypeHierarchyCorrect","_isCreationAllowed","_draggingFrom","_recordsWithTodoActions","searchStringValue","isKanbanBoardExpanded","GetKanbanBoardAccordionGroup","SetKanbanBoardAccordionGroup","recordsWithActions","recordWithAction","LifestatusName","filteredActions","groupedActions","ActionLifestatusId","_isTypeHierarchyCorrect","_isNewButtonEnabled","GetBackgroundColor","GetToDoKanbanGroupWidth","_noTypesLoadedSubscription","isTypeSelected","isViewSelected","LoadStatusesForAllRecords","WithTimers","TodoModel","LoadUserAllowanceToCreate","LoadStatusesForRecord","IsViewForAction","newRecord","oldStatus","changedRecordIndex","actionsEntityId","isCreationAllowed","AfterDrop","ApproveLifeStatus","lifestatus","newStatusId","todoKanbanHtml","Accepts","targetData","sourceData","Moves","IsCardInvalid","OnDrag","OnDragEnd","onlyEditScreen","IsDraggingCssClassApplied","isForAllow","draggingFrom","isAllowed","GO_TO_CONSULT_SCREEN","_TodoKanban","ParentOrChildRecord","AfterRenderSubject","GetRootToDoTemplateName","_designCardSecondaryInfoTemplate","_kanbanViews","_isKanbanViewsShown","_isTypesShown","_isFullScreen","_fullScreenTooltip","InitForDesignMode","IsRuntimeMode","InitForRuntimeMode","kanbanSteps","stepName","stepModel","_isTodoSelected","GetKanbanTodoSelected","isTodoSelected","LoadTypes","SetKanbanTodoSelected","_chosenKanbanView","chosenKanbanView","SetKanbanView","notify","uniqueIds","ScreenSubjectTypeId","MapToKanbanTypeViewModels","GetSelectedType","LoadViewList","withBlockUI","QueryRootEntityId","kanbanViews","KanbanViews","kanbanViewId","GetKanbanView","kanbanView","LoadKanbanSubjectInfo","KanbanSubjectId","kanbanTypeViewModel","SetKanbanLastType","TodoEntityId","ClearSearch","ChangeFullScreen","NewKanbanView","KanbanQuery","EditKanbanView","CopyKanbanView","DeleteKanbanView","models","MapToKanbanTypeViewModel","onRender","lastType","GetKanbanLastType","screenEntityType","screenEntityTypeIsOnKanban","AutolinkModel","AutoLinkedRecordModel","entityRecordId","LinkType","InstancingMaximum","RelationRecord","IsRecordOwner","EntityRelations","AutoLinks","AutoLinkedRecords","LinkTypes","LinkListRelationsModel","LinkListRelationsStore","RelationRecordViewModel","Shared","SharingReady","PlannerTooltip","EntityRelationsViewModel","EntityTranslatedName","TableIcon","TableIconType","HasRecords","HasFields","HasSequence","NoFieldsMessage","_isValidEntity","UserEntityRelationsViewModel","singleMode","SingleMode","RecordOwner","SharedUsers","LinkListRelationsViewModel","userRelation","userRelationViewModel","GetUsersNormalModeTemplate","GetUsersSingleModeTemplate","NewRelationStore","GetNewRelation","DeserializeArray","GetNewAutolinkRelation","RELATION_TYPE_VALUE_FIELD","_isAuoProperties","_serverDataModel","_linkTypes","_openNumbers","_licenseName","_actionGlobal","IsAuoProperties","propertyAuto","propertyModel","LinkListAutoProperty","subjectLifeStatusId","GetSubjectLifeStatusId","LoadDataInDefaultMode","SetInitialLinkTypesState","stringified","_linkTypesInstancesLeft","UpdateLinkTypesState","valueToUpdateWith","selectedEntity","selectedLinkType","linkType","GetLinkTypesState","relatedRecord","saveButton","ApplyData","_updateDataModel","checkOneParent","SubjectLifeStatusId","WithoutRelations","CheckOneParent","FireDataChangeEvent","GetPrimaryKeyField","attached","primaryKey","PrimaryKeyName","AddNewRelation","ChangeRelation","AddRecordOwner","licenseName","GetDesignIcon","entityIcon","GetDisplayedName","GetIconByEntityId","fieldByEntity","openLinkEditor","isRecordFirst","ChangeUserLevel","AutoLink","HasCustomFields","linkEditorChanges","FindLink","existingValue","GetRelations","searchByRelations","firstSearchByMainRelations","firstSearchByRelations","Sharing","SearchByRelations","SearchByMainRelationType","ByMainRelations","LinkSelectedRecord","GetFilterByRelationType","SetFilterByRelationType","ByRelations","isLinkingAllowed","differenceIds","RelatedRecordIds","sharedUsers","MakeSharingReady","autoLinks","entityToEntity","currentEntityFromList","NewRelationRequestItem","AddRelatedRecord","ChangeMainCompany","sourceEntityId","destinationEntity","relationRecord","entityRelations","needFindOldId","oldRecord","oldId","companiesModel","mainCompany","isMainCompanySet","isMainCompanyLicense","nonLicenseCompanies","firstNonLicenseCompany","UnLinkRecord","displayDialog","UnLink","UnLinkUser","anyUserExist","leftRelations","anyUserLeft","recordOwner","ToggleSharing","NavigateByLink","OpenUserAssignment","userEntityRelations","CollapsingLinks","IsOpen","linkRequiredFields","linkRequiredEntitiesIds","errorEntities","ValidateExpandSubForm","UpdateRecordOwner","recordOwnerLevel","newRecordOwner","newRecordOwnerRelation","relations","securityLevel","exampleOwner","currentUserRelation","userRelations","userLink","RemoveRelatedRecord","GetRecordData","linkTypes","isUnlinkedRelationNew","subjecRecordId","subjectTypeId","subjectKindId","changedData","RelationEntityName","relationTypeField","LinkEditorStore","FRelationFieldModel","GetLinkTypes","GetRelationTypesData","relationTypes","relationTypeFieldData","selectedRecordValue","requiredRelationType","DeleteRelation","firstRecord","CheckRelationTypeInstancing","existsChanges","editRelationData","targetedEntity","ClickLinkRequired","LinkFieldId","IsNewLink","DeletedRelationModel","relationshipType","ChangeRelationModel","newId","OldId","NewId","ChangeSecurityModel","EditLinkDataModel","relationGuid","ChangedRelations","ChangedSecurity","changedRelation","changedLevelRecord","newMainLink","previousMainLink","previousMainLinkIndex","existingLink","changedSecurity","MailAddressModel","email","AddEmailAddress","EMAIL_SAVED","AddMailAddress","EmailAddress","ScreenshotAttachmentModel","ComposeMailTemplate","_responseMailItem","_isCcVisible","_isBccVisible","_sendScreenShot","SendScreenShot","_screenshots","_subjectTypeId","_newBody","_newSubject","_newReciver","_newCc","_newBcc","_recipients","_ccRecepients","_bccRecepients","_documentsEntityNameTranslation","_isInModal","_datetimeCreated","_showAddFromDocuments","_isEnableAttachment","_isEnableRemoveAttachment","CurrentActionText","_currentAction","AddMailTo","firstName","mailTo","Discard","ComposeBody","FillInitialDataReply","FillInitialDataReplyAll","FillInitialDataForward","_mailInfo","FromName","newBodyWithSignature","fromAddress","DeleteDuplicatedRecipients","ShowHideCc","ShowHideBcc","RemoveAttachment","SendReplyMail","SendReplyAllMail","SendMail","GetSelect2Settings","isRequestInProgress","ajax","SearchPart","term","failure","$request","processResults","pagination","more","total_count","escapeMarkup","minimumInputLength","initialData","GenerateInitialData","initSelection","templateResult","Select2FormatData","templateSelection","Select2FormatDataSelection","validate","validateEmail","validateType","selectOnClose","preselctedRecipients","initialDataId","GetRecipients","RecipientType","ParentContext","RecipientName","Email","AddEmail","recipientName","addEmail","AddScreenShot","newScreenshot","Screenshots","ccList","SerializeCc","bccList","SerializeBcc","SerializeRecepients","attachmentsRequest","sendMailRequestModel","SerializeBody","MessageId","AttachmentsRequest","CcList","BccList","recipientsFilteredData","recipientData","ccRecepient","bccRecepient","SearchAttachments","documentsEntityId","firstSearchByLinkedDocuments","ShowSearchByLinkedDocuments","OnDocumentSelected","OnDocumentsSelected","ByLinkedDocuments","getRecordsPromises","COMPOSER_EVENTS","ADD_EMAIL_EVENTS","MAIL_LIST_EVENTS","MailRelatedUserData","UnknownMail","MailRelatedItem","MailRelatedTableData","UnknownMails","MailItemExtendedModel","MailItemModel","GetMailsResponseModel","LinkFromMailBody","GetDestinationMails","GetMailRelatedData","SaveMailToCyberBox","DownloadAttachments","GetLink","CustomColumnValueModel","TimeCellModel","IsCopyTo","IsCopyFrom","PlannerLevelRowModel","TimeLine","CustomValues","RowHeight","IsBlocked","PlannerLevelStore","GetPlannerLevelData","CreateOrUpdatePlan","UnlinkQueryRecord","CreateOrUpdatePlans","GetHigherResolutionPlan","QueryButtons","barModel","Button1Icon","_query1Icon","Button2Icon","_query2Icon","RunQuery1","RunQuery2","RightBarCell","hideQueryButtons","_barModel","_hideQueryButtons","_query1RecordName","Button1RecordName","_query2RecordName","Button2RecordName","_dropdownShown","_editorWidth","_editorHeight","_cellClasses","TemplateName","TimeValue","CellModel","CellElement","ShowQueryButtons","Button1RecordId","Button2RecordId","SetCopyToValue","button1TableId","button1RecordId","button2TableId","button2RecordId","overwrite","copyQueryButton1","copyQueryButton2","Button1TableId","Button2TableId","IsHightResolutionPlanning","_isHightResolutionPlanning","SelectCell","ShowQueryButtonsModal","CopyCellMode","queryButtonsDropdown","StartEdit","KeyDown","positionInfo","CellColor","TimeAxis","formatManager","Button1Query","LinkRecordFromQuery","Button2Query","BuildButton1ContextMenu","ButtonRecordId","ButtonTableId","BuildButton2ContextMenu","BuildButtonContextMenu","HideQueryButtons","_cells","_barClasses","timeCell","RowModel","_copyCellMode","IsCopyToCellSelected","SelectCopyToCell","SelectCopyFromCell","CopyFromCellIndex","copyFromCell","UnSelectCopyFromCells","UnSelectCopyToCell","UnSelectCopyToCells","BarId","UpdateCells","cellModels","cellModel","cellToUpdate","RowColor","CopyCell","copyFromIndex","hasData","HasAnyData","higherResolutionPlanning","parentPlan","barName","_higherResolutionsPlanning","_parentPlan","_barName","HasAnyPlanning","CalculatePlanning","timeLine","firstDate","FormatTitle","startWeekDate","endWeekDate","year","_dataRows","_parentBarId","_parentRecordId","_parentBarSubjectId","_weekNumber","_subjectEntityIcon","_leftBarIcon","_leftBarTitle","_rightBarIcon","_rightBarTitle","_subjectTitle","_linkUnderlyingTooltip","_addAndLinkUnderlyingTooltip","_parentRecords","_divideRowColSpan","_showDivideRow","_customColumnHeaders","_showControlName","_timeRows","timeRow","SetParentRecords","parentRecords","ShowDivideRow","enableLinkProperty","enableAddAndLinkProperty","HasNexLevel","InitIcons","GetNexLevelSubjectEntityName","GetLeftBarTemplateName","GetRightBarTemplateName","subjectField","leftBarField","rightBarField","IsRootLevel","SetParentBarId","parentBarId","parentBarSubjectId","SetLevel","SetParentRecordId","SetViewType","viewType","_viewType","SetProjectManager","_managerId","currentLangItem","SetWeekNumber","weekNumber","SetStartDate","SetCustomColumnHeaders","expandAll","ParentRecords","ParentBarId","ManagerId","PopulateData","fieldFormat","Button1TableName","buttonTableName","_button1TableName","Button2TableName","_button2TableName","timeRows","dataRow","customValues","rightBarRow","MouseCellOver","MouseCellOut","UnselectParentCells","UpdatePlan","SetCopyCellMode","ShowHigherResolutionPlanning","GetDefaultExpandedState","CancelCopyToSelection","WeekOfMonth","BarName","FormatPlanValue","HigherResolutionPlans","Plan","parentControl","controlDataRows","dataRowToUpdate","existsCustomValue","buttonTableId","buttonRecordId","cellElement","UnlinkButtonRecordId","UnlinkButtonTableId","ResetDefaultExpandedState","GetUserVars","ExpandedBarIds","SetUserVars","SetDefaultExpandedState","expanded","barId","GetPlannerLevelParams","SetPlannerLevelParams","plannerLevelRow","planerLevelControls","planerLevelControl","childPlannerLevel","currentLevelSubject","plannerLevelSubject","profileType","allowedTypes","plannerLevelEntityId","plannerLevelRecordId","PlannerLevelEntityId","PlannerLevelRecordId","CreateLink","nextPlannerLevel","subjectEntityField","MouseRowOver","MouseRowOut","ActivateParentColumn","DeactivateParentColumn","ActivateColumn","DeactivateColumn","exceptCell","UnselectCells","MoveRight","MoveLeft","MoveUp","MoveDown","nextRowElement","nextRow","previousRowElement","previousRow","previousCellElement","previousCell","nextCellElement","nextCell","treeRecords","HasPagination","UnSelectCopyFromCell","CopyColumn","HasAnyQueryButton","copyFromCellIndex","CustomColumnHeaderModel","ProjectManagerModel","TimeLineColumnModel","PlannerPageModel","PlannerLevels","CustomColumns","TimeLineColumns","ProjectManagers","PlannerPageStore","_textEntity1","Entity1","_textEntity2","Entity2","_textEntity1AndEntity2","OnEntity1Click","OnEntity2Click","OnEntity1AndEntity2Click","PLANNER_TYPES","_weekPlanning","GetDefaultIsWeekPlanning","_plannerLevels","GetDefaultStartDate","_weeks","_selectedWeek","GetDefaultPeriod","_initialState","_monthHeaders","_dayHeaders","_weekHeaders","_managers","_manager","_copyColumnMode","_copyFromColumnIndex","_viewTypes","_timeRangeLabel","_selectedView","GetDefaultViewType","_renderViewMode","_weekPlanningToggleClass","SetDefaultViewType","SetDefaultIsWeekPlanning","SetDefaultPerion","parentProperties","_showManagerFilter","ResetSubControlState","SetDefaultStartDate","IsWeekPlannnig","SetDefaultProjectManagerId","projectManagerId","ProjectManagerId","GetDefaultProjectManagerId","viewTypeValue","GetPlannerPageParams","SetPlannerPageParams","ToggleWeekPlanning","NextYear","PreviousYear","MonthHeaders","DayHeaders","WeekHeaders","CustomColumnHeaders","SetHeader","BuildMonthHeader","BuildDayHeader","BuildWeekHeader","byWeek","timeValue","Weeks","byYear","Year","Months","firstDayOfWeek","StartDay","DayName","DayNum","IsWeekend","allDays","activeDay","allMonths","activeMonth","SelectDate","_selectedDate","IsFilterBySubject","CancelCopy","managerId","freezeTable","planerLevels","BuildColumnContextMenu","plannerPage","GetColumnIndex","SelectCopyFromColumn","allItems","SelectColumn","UnSelectCopyFromColumn","GetButton1TableName","button1TableName","GetButton2TableName","ShowSelectCellSubjectConfirmation","button2TableName","copyQueryButtonConfirmationDialog","ShowOverwriteDataConfirmation","IsCopyToCellHasData","CopyData","RightBarTableClick","CalculateIndex","_currentPlannerPage","_currentTabIndex","_blockElements","_selection","_plannerHtmlTable","_cellSelection","inputElement","regex","BlockSelection","UnblockSelection","plannerTabsParams","GetPlannerTabsParams","activityStorage","plannerTabsActivityStorage","SetPlannerTabsParams","activeTab","GetPreselectTab","firstVisible","preSelectedPlannerTab","preselectedPlannerTabData","activePlannerTabPageCIDs","plannerTabToSelect","activePlannerTabPageCID","parentControlId","currentPlannerPage","tabControlId","SetState","ActiveControlId","InitSplitter","wrappers","tabIndex","leftView","rightView","elementStyle","gutterSize","gutterStyle","PortletBarButton","buttonConfig","GetButtonTemplateFolder","GetPropsTemplateName","RemoveButtonViewModel","ButtonViewModel","buttonName","RemoveButton","OnClickEvent","SettingsButtonViewModel","PropsOpened","SettingsButton","SaveSettings","DefaultPortletProps","Props","_props","PortletColor","UsePortletBarColor","DataSpaceColor","Kind","Length","HeaderText","CollapseButton","ExpandButton","ReloadButton","UseBodySpace","_isInitialized","CollapseButtonViewModel","UpdateTooltip","ExpandButtonViewModel","ReloadButtonViewModel","ButtonsFactory","CreateButton","Buttons","RuntimeSettings","ExtendRuntimeSettings","ConfigProperties","GetConfigSettings","portletControlName","GetScreenTranslatedName","ApplyRuntimeSettings","runtimeSettings","PortletIcon","GetScreenIcon","GetButtonsFromConfig","settingsButton","GetButton","BindButtonClickEvent","IsSearchEnabled","GetPortletColor","GetDataSpaceColor","GetKind","IsButtonVisible","GetHeaderText","GetLengthFromConfig","buttonViewModels","buttonViewModel","PortletBarButtons","_subjectField","_queryField","_subjectGridField","_showInMenuField","_lockToGridField","_gridIdField","_showInPortletField","Datas","queryData","showInMenu","showInPortlet","showInMenuField","showInPortletField","NewQuery","queryTypeName","_oldQueryBuilderData","_newQueryBuilderData","GetSubjectEntityId","GetGridSubjectEntityId","GetShowInMenu","GetShowInPortlet","_gridId","newQueryBuilderData","GetQueryId","RecipeEditorStore","CreateRecipeVersion","SaveRecipeData","DeleteRecipeVersion","CopyRecipeVersion","GetRecipeDataByVersion","GetRecipeData","CheckIfRecipeIsCreated","RecipeRecordModel","TypeColor","RecipeResponseModel","RecipeViewModel","RootNode","RecipeNodeViewModel","OutlineColor","LockedTooltip","GetOutlineColor","GetTypeColor","GetNameTranslation","RecipeEditorTreeNodeViewModelMapping","typesProperty","RecipeEditorTreeViewModelMapping","RecipeEditorTreeUnit","_recipeEditorTreeId","_recipeVersionModel","_typesProperty","_selectedRecipeVersion","_recipeEditorTree","recipeVersions","RootEntityId","RecipeRecord","GetNewData","VersionId","recipeSelectedVersion","VersionName","recipeDataModel","RecipeVersions","PathRunnerShowChildren","PathRunnerHideChildren","selectedRecipeVersionModel","parsms","RecipeEditorTree","RecipeVersionDropdownTemplate","RecipeEditorEdit","_isAddingAllowed","IsAddingAllowed","_recipeDataModel","_recipeEditorCreate","_availableRecipeVersions","_newVersionActive","TypesProperty","GetRecipeDataModel","getRecipeDataParams","MapRecord","defaultRecipeVersion","InitToggleActiveVersionMod","RecipeDataModel","LoadRecipeEditorTree","AddVersion","recipeEditorCreateParams","IsRecipeCreated","IsCreateRecipeVersion","ICopyRecipeVersion","RecipeEditorCreate","SetActiveVersionType_On","CopyVersion","NewVersionName","CopiedVersionId","_toggleActiveVersionType","_toggleActiveVersionTypes","IsChosen","DeleteVersion","DeleteRecipeVersionParams","SetAvailableRecipeVersions","ClickSaveBtn","saveRecipeDataParams","ActiveVersionId","ReturnToDefaultType","ToggleActiveVersion","activeVersionType","_activeVersionToggleClass","OnSelectVersion","SelectVersion","GetRecipeDataByVersionParams","InitRecipeVersionDropdown","ShowAvailableRecipeVersions","getNewDataParams","ActiveVersionTooltipText","RecipeVersionActive","IsCopyingAllowed","IsSavingAllowed","_copyRecipeVersion","_isRecipeCreated","_recipeEditorEdit","_isCreateRecipeVersion","isRecipeCreated","CreateClick","copyRecipeParams","createRecipeParams","CancelClick","_isButtonEnabled","ResetSecurity","ProfileId","ShowSearch","ShowSearchHelp","SetSearchTerm","AlternativeEntities","_alternativeEntities","HasConditions","deffered","SpimCopyStore","spimClass","AssignClass","UpdateVersion","SPIMCopyControlModel","IsDefaultState","UpdateAvailable","EtimLabel","CurrentVersionNumber","SPIMCopy","_selectedClassId","LoadClass","EtimCode","CurentVersionNumber","NewVersionNumber","ClassFeaturesTableId","ProductFeaturesTableId","ClassId","SendUpdateVersionRequest","SpreadsheetFieldDescriptorDto","SpreadsheetCellPositionDto","SpreadsheetDimensionDescriptorDto","SpreadsheetDescriptorDto","Dimensions","SpreadsheetCellDataDto","PositionName","SpreadsheetPageDescriptorDto","SpreadsheetPageDataDto","CellsData","SpreadsheetDimensionDirections","SpreadsheetDataDto","Pages","SpreadsheetStore","GetSpreadsheetDescriptor","GetSpreadsheet","SpreadsheetSaveDto","NewPages","RemovedPages","Paged","SpreadsheetPageRemoveDto","PageField","SpreadsheetNewPageDto","ValueField","SpreadsheetRecordDto","SpreadsheetRecordFieldDto","SpreadsheetDescriptor","IsPaged","SpreadsheetFieldDescriptor","IsLookup","SpreadsheetDimensionDescriptor","Direction","StartPosition","SpreadsheetCellPosition","GetColumnNumber","GetNextColumnName","GetColumnNameByNumber","GetRowIndex","IsSameAs","Parse","columnName","mod","SpreadsheetPageDescriptor","PageDisplayName","SpreadsheetPageData","Descriptor","GetCell","GetDefaultPageId","GetDefaultPageName","Empty","spreadsheetDescriptor","pageDescriptor","SpreadsheetCellData","dimensionNumber","SpreadsheetViewMappingProfile","ToSpreadsheetDescriptor","descriptor","valueField","ToFieldDescriptor","pageField","ToCellPosition","dimensions","ToDimensionDescriptors","descriptors","ToDimensionDescriptor","startPosition","ToPagesData","pagesData","pageData","ToPageData","cellsData","ToCellsData","ToPageDescriptor","ToCellData","DimensionNumber","pageFieldDescriptor","defaultPageName","defaultPageDisplayName","SpreadsheetData","SpreadsheetCellRange","RangeName","ContainsCell","RenamePageState","selectedName","nameOptions","useSearch","UseSearch","NameOptions","SelectedName","RenamePagePopup","_pageField","currentName","currentDisplayName","_currentPageName","InitState","lookupData","SearchForPageName","SelectPageName","pageName","pageDisplayName","selectedPageName","GetLegendTemplate","AfterViewRender","AfterEditRender","_setValueWasRequested","_spreadsheetDescriptor","pagesWithoutDbId","_spreadsheet","getSheets","sheet","GetPageName","GetPageDisplayName","_isEditing","newPages","GetOriginPosition","GetEntityRecordId","GetCellsData","removedPages","_removedPages","pageNameDto","paged","_viewMappings","_styles","dimension1","dimension2","dimension3","dimension4","IsLegendReady","InitForView","InitForEdit","InitForDesign","_readonly","RenderSpreadsheet","_colsCount","_rowsCount","_originCellValue","multiSheets","colsCount","rowsCount","BindLookupPageContextMenuEvents","_sheets","pageDbId","newPageId","_dataStore","_pageName2ID","newPage","firstPage","copiedPageData","sheetContextMenu","sheetId","GetFocusedSheetId","RemovePage","ShowRenamePopup","removeSheet","_renamePagePopup","RenamePageTo","_renameSheet","InitFields","ApplyRuntimeProperties","ApplyDesignProperties","Dimension1","Dimension1Translated","Dimension2","Dimension2Translated","Dimension3","Dimension3Translated","Dimension4","Dimension4Translated","PageFieldTranslated","ValueFieldTranslated","dimensionsProperty","DimensionFields","GetDimensionFieldName","LoadSpreadsheetData","LoadEmptySpreadsheet","GetRequestSpreadsheetDescriptor","descriptorDto","emptyPage","spreadsheetData","DisplaySpreadsheet","ForceFocusOnTextControl","isFocusableControl","GetRequestSpreadsheetParams","spreadsheet","pages","pageDataSets","BuildPageDataset","spreadsheetDataset","sheets","styles","setMeta","toolbarId","TranslateLegend","dimensionObservables","observableIndex","GetHorizontalDimensionFields","GetVerticalDimensionFields","HorizontalDimensionFields","VerticalDimensionFields","AddStylesToPage","AddOrigin","Horizontal","AddStylesToHorizontalDimension","AddStylesToVerticalDimension","AddStylesToValueCells","zip","dimensionIndexes","dimensionRanges","GetDimensionRange","dimension1Range","dimension2Range","valuesBlockStart","valuesBlockEnd","valuesBlockRange","cellsRewrite","EachCell","cellPosition","dimensionRewrite","BuildDimensionRewrite","cellRewrite","dimensionRange","valueCellPosition","dimensionCellPosition","GetDimensionDirection","dimensionValue","GetCellValue","Vertical","originCell","searchRange","rowNumber","dimensionStyles","GetStylesForDimension","GetDimensionStart","GetDimensionEnd","GetEndOfSpreadsheetPosition","dimensionStartCell","cellStyles","dimensionEndCell","iterableCell","endCellColumnNumber","valueCell","endCell","dimension1Start","valuePosition","absoluteCell","getStyle","eachCell","_pages","getMeta","_pull","_tabbar","getItem","_focusedSheet","DEFAULT_POSITION","StaticControlsProvider","ForScreen","isDashMain","ForConsultScreen","ForEditScreen","ForListScreen","ForSpecialScreen","controlsPosition","BuildControlModel","ForLinkEditor","controlModels","AddForLookupEditorNewRecord","StepDto","StepApi","GetStepRecord","StepRecordId","_index","_process","_wait","_finish","IsLinked","LoadRecord","_transactionId","PreviousStepEntityId","PreviousStepRecordId","StepScreenId","StepEntityId","IsActiveTabPage","Process","Wait","wait","Finish","finish","TransactionApi","Commit","Continue","Rollback","_currentStepPage","_currentStepIndex","_isEnablePreviousBtn","_isEnableNextBtn","Tabs","RestartPulseTransaction","currentPage","_pulseTimer","stepPage","previousPage","relatedEntityName","mainEntityName","CurrentTabPage","SelectRecord2","_isTabSecurityProperties","_tabSpreadsheetBackground","_hasSpreadsheet","SetSpreadsheetBackground","SetHasSpreadsheet","IsTabSecurityProperties","tabSecurityProperty","TabSecuritySettings","TabSecurityProperties","SpreadsheetStatusColor","_currentTabPage","_dateRange","_isHiddenExist","_isShowHideButton","IsTabs","SpreadsheetSetActiveTabPage","pageHasSpreadsheet","subControlsArr","ChangeTabPageBackground","IsSpreadsheetValid","hidingDays","TAB_HIDING_DAYS","spreadsheetControls","emptySpreadsheets","HasSpreadsheetData","thereAreSeveralSpreadsheet","SetTabPageBackground","currentPageHasSpreadsheet","ChangeTabPageSpreadsheetLogic","validSpreadsheet","spreadsheetActiveTabPage","tabsParams","GetTabsParams","tabsActivityStorage","SetTabsParams","SetTabsHidden","GetSourceTab","ActiveTabSetSpreadsheetBackground","SetTabIsVisible","preSelectedTab","preselectedTabData","where","activeTabPageCIDs","tabToSelect","activeTabPageCID","tabPageControls","gridControls","sourceGrid","tabParams","hiddenTabs","activeDate","oneDay","date1","date2","activeSubControl","firstSubControl","activeSubControlId","storageTabsParams","isShowHideButton","ActiveSubControlId","needToHideButton","defaultParams","controlAgenda","evntArgs","ShowAll","pageControl","TagListScreenModel","TagsScreenDataModel","TagListScreens","TagStore","GetTags","tagScope","TagScopeId","GetAllTags","byScopedRecords","hideDisabled","ByScopedRecords","HideDisabled","TagListChanges","oldValues","_oldValues","AddedTags","DeletedTags","AddTag","tagId","DeleteTag","TagGroupViewModel","tag","TagViewModel","TagId","IsExcluded","IsFirstWord","TagbookList","taglist","tagGroups","_taglist","_taglistFilteredByGroup","_initialTaglist","_tagGroups","_columnCount","_mappedTagsList","_mappedGroupsList","_itemsPerColumn","_mode","_groupId","MapToViewlist","ChangeMode","nextMode","mappedListObservable","mappedListLength","mappedList","arrayIndex","elementIndex","FilterList","firstLetter","isInGroupMode","groupId_","SelectTag","SelectGroup","IdentifyGroupName","displayName","ChangeModel","_addedList","_deletedList","RemoveTag","AddedList","DeletedList","Tagbook","_changeModel","_activeLetter","_firstLetters","_currentGroup","_term","_selectedTagsLength","_tagbookList","SetLettersList","SetTagsList","tagsModel","_selectedTagsInitial","takbookList","SelectLetter","tagModel","tag_","mappedModel","MapToTagModel","ClearCurrentGroup","letters","GenerateFirstLetters","tagslist","firstLetters","currentLetter","nameA","nameB","nextLetter","addedTags","deletedTags","letter","IsActiveLetter","_minTermLength","_tagsByGroup","_isTagsLoaded","_isTagsSelected","_isEnableDropGrid","_blockTagList","_tagListScreens","_preselectedTags","_isReloadGrid","_isNoTags","_inverseGridCondition","_subControlsLoading","_termOperationMessage","_showOptions","_filterByTags","_expandFilter","_stickyFilter","_tagScope","termValid","LoadTagsBySearchTerm","InitTagList","Conditions","InverseGridCondition","tagsJson","tagData","oldTags","IsTermMinimum","IsTagSelected","FormatItemName","SelectItems","LoadAllTags","tagsByGroup","tagsByGroupModels","tagViewModel","noGroupTags","LoadScopedTags","loadAllTagsPromise","FilterData","UpdateFilter","Exclude","tagIds","value_","InverseCondition","PreselectedTags","GoToListScreen","listScreen","isOpenInModal","tagControl","selectedTagIds","ExpandFilter","TagbookOpen","_tagbook","CONTROL_TYPES_LINK","PHONE_NUMBER_LENGTH","iso2","getDecimalSize","getIntegerValidationMessage","getDecimalValidationMessage","isInIntegerBounds","_waitForPhoneCode","FormatEditableValue","ModifyValueByFormat","_textHeight","_formatter","_hasTemplate","_validationMsg","_referenceConsultScreen","SetPhoneCountry","SetPhoneCode","ChangeTranslation","_hasTranslations","ApplyFormatter","IsBarcodeFormat","IsDependsOn","FormatPercentageValue","_phoneCode","GetCodeByIso2","InitHyperLink","getPhoneNumberMinAndMaxLength","currentDefaultValue","IsEqual","textarea","value1","value2","eventArgsData","tableTypeName","createRecordRequest","RequiredValidation","selectedEntityRecord","SelectedEntityRecordModel","SelectedRecordModel","selectedEntityModel","SelectedEntityModel","SetReferenceDataForEditMode","LoadReferenceConsultScreen","SetIcon","SetReferenceDataForViewMode","LineBreak","undoPhoneChange","dashPosition","RemoveNotAllowedSymbols","SetDefaultValueByTranslation","defaultItem","GetFormattedPhoneNumber","intlTelInputUtils","getValidationError","_phoneCountry","TOO_SHORT","TOO_LONG","NOT_A_NUMBER","integerPart","decimalPart","ValidateTranslation","translationValue","fieldMaxLength","OnPastePhoneNumber","pastedText","withoutPlus","withoutCode","OnKeyUpValidation","formattedUrl","GetIconNameForLinkType","IsSocialViewActive","IsLinkTypeControl","IsBarcodeValid","JsBarcodeExtension","GetTooltipContent","preparedValue","lineBreak","ToggleTranslations","OnPhoneListener","countryData","resetValue","dialCode","OpenBarcodeScanner","MakeCall","GetReferenceTable","referenceRecord","GetReferenceRecord","RecordOpenInPopUp","IsReferenceScreen","ReferenceConsultScreen","textareaElement","GetWeekNumber","DestructDate","GetWeekYear","isoWeekYear","GetWeekDescription","GetWeekStart","GetWeekStartByNumber","week","GetWeekEnd","GetPrevWeekStartDate","weekStartDate","AddDays","GetNextWeekStartDate","weekEndDate","AddSeconds","GetDatesBetween","datesRange","GetWeeksCount","isoWeeksInYear","AddMinutes","AreSame","withTime","Max","TimeWritingView","CanBeUpdated","initializers","SelectedWeek","TimeWritingStore","timeTableId","GetDay","WeekReports","Messages","GetDays","CloseDate","GetDisapproved","GetYear","CreateReservation","AcceptReservation","UpdateReservation","DeleteReservation","GetSubject","ValidateTimeWritingSubject","YearDataViewModel","Quaters","DataBySubject","IsCurrentYear","CurrentYear","IsCurrentWeek","CurrentWeek","NavigationAllowed","Quater","weeks","WeekMappings","Booked","Saldo","HasDisapprovedHours","YearMappingProfile","Summaries","bookedCheck","chunkedWeeks","Chunk","weeksOfQuater","elementsInChunk","dictionary","UsersResponseModel","CreateDefault","defaultUser","UserResponseModel","UsersViewModel","UserMappings","userViewModel","UsersMappingProfile","YearView","_currentWeek","_isPastYear","_dataBySubject","usersList","loadDataPromise","loadUsersPromise","OnCurrentYearClick","OnPrevYearClick","OnNextYearClick","OnWeekClick","selectedUserId","DAYS_OF_WEEK","TimeStatus","ViewState","RowEditor","lookupFields","cellEditors","_day","_lookupFields","_cellEditors","IsEditState","IsNewState","GetValueCellEditors","RollbackChanges","CommitChanges","RowEditorTemplate","validationEditors","GetValidationCellEditors","validationResults","ValueCellEditor","ValidationCellEditor","WeekRowEditor","_cell","Read","ViewTemplate","GetState","DynamicCellEditor","_timeStatus","EditTemplate","requiredRule","RequiredRule","minLengthRule","MinLengthRule","maxLengthRule","MaxLenghtRule","_requiredValidation","_minLengthValidation","_maxLengthValidation","_valid","PreventLetters","validations","validation","failedValidation","TextCellEditor","_isTranslate","IsTranslate","translationValues","DropdownCellEditor","_currentValue","FormatSelectValue","dropdownOption","SetReadState","SetNewState","SetEditState","FindOption","requestedValue","RequiresSearch","MultiSelectCellEditor","_showEmptyValue","FormatSingleValue","CheckEmptyMultiSelect","selectedTtem","IntegerCellEditor","DecimalCellEditor","DateTimeCellEditor","DateCellEditor","TimeCellEditor","SubjectCellEditor","DescriptionCellEditor","ActionsCellEditor","DayDataViewModel","WeekId","DaysOfWeek","AllowedEntities","HasDisapprovals","ClosedWeek","ClosedDate","WeekDescription","booked","newSum","isoWeekday","Weekend","IsNormBooked","RequestedDate","Reservations","Reservation","TimeSpent","To","Ovw","Pay","HourKind","OptionalData","StartFormat","ToFormat","TimeSpentFormat","GetOptionalField","GetOptionalValue","SetOptionalValue","setHours","timeSpent","timeDate","ReserveFor","optionalFields","NotSpecified","OptionalFieldData","BindTimeChangesEvents","CalculateTo","CalculateDuration","SubjectLabel","PathToRoot","initialization","_notSpecified","DayOfWeekStatistics","Hovered","DayDescription","ProcessValue","TranslatedField","LookupValue","AllowedEntity","SaveReservationRequestModel","SaveSubjectRequestModel","FieldDataTranslation","LanguageData","SaveOptionalDataRequestModel","DeleteReservationRequestModel","SubjectMappings","OnSaveModel","LookupValueMappings","ReservationMappings","AgendaId","OverWorkIndicator","PaymentIndicator","HourKindIndicator","OnTranslationItem","ovwId","payId","hourKindId","OverWorkIndicatorId","PaymentIndicatorId","HourKindIndicatorId","dateTime","OnDeleteModel","RequestedDateMappings","reservations","reservation","DayMappings","EntityMappings","LookupFieldMappings","lookupField","DayMappingProfile","dayReport","weekReport","DayReservations","StartBySchedule","DaySchedule","DayReports","GlobalSettings","LookupFields","DefaultValues","TranslatedFields","DayView","_initialDateSet","_isPastWeek","_viewState","_isReadState","_isEditState","_isNewState","_rowEditors","_compareCurrentDate","_isFutureDay","_isDisableWeekBtn","visibleFields","dashVisibility","_countOfVisibleColumns","CustomFields","_isFromVisible","_isDashVisible","_isToVisible","_isDurationVisible","_isHourVisible","_isOvwVisible","_isPayVisible","GetTimeCloseDateVisibility","timeCloseDateOption","InitAllowedEntities","TimeCloseDateVisible","TimeCloseDateVisiblePerDay","TimeCloseDateVisiblePerWeek","TimeCloseDateVisiblePerDayAndWeek","dayReportResponse","ShowStatic","RenderStaticData","OnDisapprovedClick","AskSaveConfirmation","SaveReservation","rowEditor","OnPrevWeekClick","prevWeekStartDate","OnYearClick","OnNextWeekClick","nextWeekStartDate","OnCloseDayClicked","OnCloseWeekClicked","dateToClose","UpdateWeekCheckbox","daysOfWeekUntilToday","TimeCloseDate","OnDayClick","OnAddLineClick","defaultTimeSpentValue","durationMoment","durationInMinutes","lastReservationTime","GetLastReservationTime","timeOverflow","GetNewReservationSubject","reservationSubject","AddRowEditor","OnReservationEdit","OnReservationDelete","AskDeleteConfirmation","deleteModel","TimeTableId","SaveAndReload","OnSaveReservationChanges","OnReservationAccept","acceptModel","editRow","OnCancelReservationChanges","CancelNewReservation","CancelReservationChanges","IsFutureDate","HoverOnDayClose","HoverOutDayClose","HoverOnWeekClose","HoverOutWeekClose","OnAllowedEntityClick","SearchSubjectForEntity","SelectSubjectMode","RequestNewReservationSubject","SubjectEntityIcon","rowEditorIndex","getDay","TimeClosedDate","IsFuture","InitRowEditors","FreezeTime","ShowWarning","GetCustomFieldNames","allowedEntities","GenerateRowEditor","GenerateOptionalCellEditor","dropdownField","dropdownFieldValue","ClassName","multiSelectField","customFieldCellEditors","hourKindLookupField","ovwLookupField","payLookupField","SelectableSubjectEdit","SelectedSubjectEdit","OnEntityClick","OnEntityIconClick","OnSubjectClick","SearchSubject","OnEditReservation","OnDeleteReservation","OnAcceptReservation","lastReservation","startingDateTime","defaultStartingValue","SelectSubject","SelectSubjectForEntity","subjectData","oldSubject","newSubject","validationModel","LowestLevelTypes","GetSelectedSubjectData","subjectRecord","AskConfirmation","onDecline","GetActiveRow","updateModel","WeekDataViewModel","DayOfWeekViewModel","WeekMappingProfile","DayOfWeekMappingProfile","DayDate","WeekView","_groupedRows","dayDescriptor","DisapprovedEditor","disapprovedInfo","DisapprovedInfo","disapprovedReason","comment","bookedCounter","DisapprovedReason","Comment","BookedCounter","DisapprovedDataViewModel","DisapprovedRequestedDate","DisapprovedReservation","DisapprovedReservationMappings","DisapprovedRequestedDateMappings","DisapprovedMappingProfile","DisapprovedView","_disapprovedEditors","disapprovedReportResponse","OnDayViewClick","disapprovedEditor","disapprovedEditorIndex","AddDisapprovedEditor","GenerateCellEditor","_recordName","SubjectRecordName","_customFields","_properties","DayViewIsUsed","SwitchToDayView","SwitchToStaticDayView","dayView","RequestWeek","RequestYear","RequestDisapproved","SwitchToWeekView","weekView","OnDayClicked","SwitchToYearView","yearView","OnWeekClicked","SwitchToDisapprovedView","disapprovedView","GetAttachedTableId","InitCustomFields","oldAttachedTableId","requiredFields","customFields","rf","GetComplexControlDesignTemplate","AfterDropField","DesignChanged","targetItem","RemoveField","customFieldIndex","attachedFieldIndex","_activeTimersModal","OnOvertimeClick","newOvertime","Overtime","SetOvertime","StopTimer","activeTimersWrapper","WarningMessages","GetActiveTimerFromActiveTimerModal","activeTimerModal","activeTimerWrapper","overtimeObservable","maxDurationComputed","timersMenu","DurationFormatted","MaxDuration","KnobColor","GetIsTimerStarted","CheckActiveTimers","StartTimer","ActiveTimers","TimeRegex","LiveTimer","currentDuration","_timerIntervalId","_pausedDuration","_initTimer","totalSeconds","GetDurationInSeconds","_formattedDuration","HasValidDuration","FormattedDuration","PauseTimer","UpdateCurrentDuration","TimerIsPaused","currDuration","padStart","HasTimerStarted","_timerEntityId","_timerRecordId","_currentDuration","_timerAutoStart","_liveTimer","_kanbanMode","stopTimer","ResetTimersInActionRecord","StopLiveTimer","startTimer","StartLiveTimer","activeTimers","activeTimerIds","_defaultActiveTimers","TimerAutostart","durationInt","durationFormatted","TooltipValue","ShowConfirmModalForCheckActiveTimers","DefaultHourkind","_defaultHourkind","ActiveTimer","OnTimerClick","OpenActiveTimersModal","AutoStopActiveTimer","AllowTimerAutoStop","AutoStartTimer","isTimerStarted","timerName","Hourkinds","DefaultActiveTimers","AutoStart","TimerAutoStart","IsAutoStartByCondition","_self","liveTimer","SetLiveTimerCurrentDuration","OnTimerClickFromKanbanCard","kanbanCard","GetLiveTimerForKanbanTemplateName","SearchGroups","LifeStatusGroupIndexes","SimpleFilterGroupsSet","MappedSearchGroups","Timestamp","BaseProperty","_propertyDescriptionType","_valueRequired","_warningMessage","SetEnabled","WarningMessage","GetDefaultValue","BaseSelectProperty","IsInitiated","isSearchMode","SetOptions","selectLabel","firstElem","RewriteOptions","CHECKBOX_PROPERTIES","GENERAL_PROPERTIES","_tableName","BusinessRoleRestrictions","BusinessRoleRestriction","AsList","restriction","IconName","PresentIn","TabSecurityStore","GetBusinessRoles","SubFlowDto","SubFlowStore","GetSubFlows","subFlows","SubFlowProperty","_control","_propertyValue","_oldValue","CheckValidInput","GetAllTypes","tableTypes","nonDashTypes","EntitiesStore","lockedEntities","_source","showSearchScreen","LoadDataForSearch","LoadDataForDropdown","selectedItemsIdsString","selectedItemsIds","AddRecordsByIds","LoadNewDataForSearch","existingItemsIds","newItems","itemsIds","GetRecordsByIds","chosenField","GetRecords","isItemSelected","itemIds","CheckValidUrl","FileUploadProperty","_extension","_dropZoneLabel","onloadend","QueryConditionProperty","_allowedEntities","_allowedEntity","_conditionBuilder","InitBookConditions","InitSearchConditions","InitGridConditions","InitDropdownConditions","InitShowIfConditions","InitAllowedEntityCondition","InitConditionBuilder","screenFields","GetScreenFields","InitGridConditionBuilder","ALLOWED_ENTITIES","excludedControlTypes","GetAllAttachedFields","blockTarget","EntityMetadataStore","GetEntityMetadata","entityMetadata","InitByEntity","ConditionModel","screenSubjectEntity","LinkEntityMetadata","InitByEntities","QueryBuilderProperty","InitQueryBuilder","LoadQueryExpression","QueryType","InitDefaultQuery","expressionModel","InitQueryByEntityId","AlternativeEntitiesPropertyStore","GetAlternativeEntities","SelectedEntities","SelectedStatus","DeselectEntity","filteredSelecteEntities","GetIconTemplateName","alternativeEntities","mappedEntity","TypePropertyColorDropdown","_types","ColorTypes","SelectedColorTypes","entityProperty","DeselectType","selectType","filteredSelectedTypes","ChangeTypeColor","ChangeColor","typesColor","mappedType","GetSubTableViews","subTableViews","SubTableViews","MapSubTableViews","MapSettings","PublishChanges","BackLinkSettings","AddSettings","BackLinkingSettings","RemoveSettings","FromJSON","NameTranslationsOpened","InitTranslations","SetDefaultTranslation","DefaultTranslation","ShowNameTranslations","ToggleNameTranslations","HideNameTranslations","SelectNameTranslation","UpdateTranslationList","defLang","defTranslation","_initValue","ApplyChanges","_fields","_selectedField","_orderByDescending","Descending","Ascending","sortingFields","orderByDescending","QueryName","searchTypes","ConsultScreenLayout","Minimized","ToggleActionBar","ToggleMainBlocks","ToggleMinimizeMainBlocks","ToggleBottomBar","BusinessRolesDisplaySettings","Role","_restrictions","Restrictions","TabSecurityDisplayView","MapToSettings","_restrictionsIcons","MapToRestrictionsIcon","RequestEditView","mapToRestrictions","restrictions","BusinessRolesEditSettings","AnyRestrictions","TabSecurityEditView","BusinessRole","TabSecurity","_displayView","LoadRestrictions","InitDisplayView","displayView","_roles","OpenEditView","DWPackagePropertyStore","Dimension","selectedFieldId","SelectedField","oldSelectedField","_oldSelectedField","OldSelectedField","DimensionField","DimensionalTablePropertyValue","DimensionalTablePropertyField","_maxDimensions","_tableFields","ValueFields","PageFields","AnyDimensionSelected","InitDimensionFields","OnValueFieldChange","UpdateValue","UpdateAvailableFields","AddDimension","OnPageFieldChange","OnDimensionalFieldSelect","allowedFieldTypes","IsPhysicalField","_valueFieldChangedSub","_pageFieldChangeSub","CreateDimension","dimensionFields","selectedFields","availableValueFields","otherSelectedFields","availableFields","availablePageFields","CardScreenProperty","_screens","_selectedScreen","QueryBuilderStore","GetCardScreens","screens","selectedScreen","TemplateTypeProperty","DocumentTemplateProperty","GetPropertyManager","ExampleAppointmentResponseModel","ExampleAppointmentStore","GetExampleAppointments","exampleAppointments","PropertyManagersFactory","_propertyNameToProperty","GetCheckBoxProperty","GetInputTextProperty","GetInputNumberProperty","GetColorPicker","GetSelectProperty","GetSelectEntityTypeProperty","GetSelectLockedLinkEntityProperty","GetMultiSelectProperty","GetWebSizeProperty","GetInputUrlProperty","GetFileUploadProperty","GetQueryConditionProperty","GetQueryBuilderProperty","GetAlternativeEntitiesProperty","GetTypesProperty","GetBackLinkingProperty","GetQuerySortProperty","GetQuerySelectorProperty","GetConsultScreenLayoutProperty","GetTabSecurityProperty","GetDimensionalTableProperty","GetCardScreenProperty","GetDWPackageProperty","GetTemplateTypeProperty","GetDocumentTemplateProperty","GetSubFlowProperty","GetExampleAppointmentProperty","configStruct","FilterGroups","groupStruct","GroupModel","GetProperty","ResetProperty","GetPropertyName","HasProperty","SetPropertyOptions","serializedConfig","serializedGroup","serializedProperties","propertiesErrors","parentControlType","Screens","ParentControls","groupProperties","MergePropertyStructWithData","propertyStruct","PropertyModel","_property","_propertyManager","CheckForPropertyManager","PropertyManagerForSave","GlobalStore","GetGlobalByNames","DeserializeGlobals","GetGlobalByName","GlobalName","userGlobals","UserGlobals","CULTURE_CODES","ps_AF","CultureCode","prs_AF","sq_AL","ar_DZ","es_AR","hy_AM","en_AU","de_AT","ar_BH","bn_BD","eu_ES","be_BY","fr_BE","nl_BE","en_BZ","es_VE","quz_BO","es_BO","pt_BR","ms_BN","bg_BG","km_KH","fr_CA","en_CA","en_029","ca_ES","arn_CL","es_CL","es_CO","es_CR","hr_HR","az_Cyrl_AZ","sr_Cyrl_BA","bs_Cyrl_BA","mn_MN","sr_Cyrl_ME","sr_Cyrl_RS","sr_Cyrl_CS","tg_Cyrl_TJ","uz_Cyrl_UZ","cs_CZ","da_DK","es_DO","quz_EC","es_EC","ar_EG","es_SV","et_EE","am_ET","fo_FO","fi_FI","sv_FI","se_FI","sms_FI","smn_FI","mk_MK","fr_FR","br_FR","oc_FR","co_FR","gsw_FR","gl_ES","ka_GE","de_DE","hsb_DE","dsb_DE","el_GR","kl_GL","qut_GT","es_GT","es_HN","hu_HU","is_IS","hi_IN","bn_IN","pa_IN","gu_IN","or_IN","ta_IN","te_IN","kn_IN","ml_IN","as_IN","mr_IN","sa_IN","kok_IN","en_IN","id_ID","fa_IR","ar_IQ","ga_IE","en_IE","ur_PK","he_IL","it_IT","en_JM","ja_JP","ar_JO","kk_KZ","sw_KE","ko_KR","ar_KW","ky_KG","lo_LA","tzm_Latn_DZ","az_Latn_AZ","hr_BA","bs_Latn_BA","sr_Latn_BA","iu_Lat_CA","sr_Latn_ME","ha_Latn_NG","sr_Latn_RS","sr_Latn_CS","uz_Latn_UZ","lv_LV","ar_LB","ar_LY","de_LI","lt_LT","lb_LU","de_LU","fr_LU","ms_MY","en_MY","dv_MV","mt_MT","es_MX","moh_CA","fr_MC","ar_MA","ne_NP","nl_NL","fy_NL","mi_NZ","en_NZ","es_NI","yo_NG","ig_NG","nb_NO","se_NO","nn_NO","smj_NO","sma_NO","ar_OM","es_PA","es_PY","quz_PE","es_PE","fil_PH","pl_PL","pt_PT","bo_CN","ii_CN","ug_CN","es_PR","ar_QA","en_PH","ro_RO","ru_RU","tt_RU","ba_RU","sah_RU","rw_RW","ar_SA","wo_SN","zh_CN","zh_SG","en_SG","sk_SK","sl_SI","tn_ZA","xh_ZA","zu_ZA","af_ZA","nso_ZA","en_ZA","es_ES","si_LK","sv_SE","se_SE","smj_SE","sma_SE","rm_CH","de_CH","it_CH","fr_CH","iu_Cans_CA","syr_SY","ar_SY","th_TH","mn_Mong_CN","zh_HK","zh_MO","zh_TW","en_TT","ar_TN","tr_TR","tk_TM","ar_AE","uk_UA","cy_GB","gd_GB","en_GB","en_US","es_US","es_UY","vi_VN","ar_YE","en_ZW","POPUP_HEIGHT_IN_PERCENT","POPUP_WIDHT_IN_PERCENT","LOCK_TIME","CD_DATABASE_ID","CYBERDESK","SUPERUSER_MAIL","USER_VARS_UPDATE_TIME","CULTURE_SETTINGS","RESOURCES","DELETE_MAIL_AFTER_SAVING","AUTO_MAIL_SAVING","PREVIOUS_WEEKS_NUMBER","ARTICLE_STORAGE_ENTITY","HOME_SCREEN","SHOW_PROFILE_SELECTOR","SHOW_BREADCRUMBS","BASIC_MODE","READONLY_CREDENTIALS","MEMO_TIMESTAMP_FORMAT","ENABLE_DD_AI_ASSISTANT","_getAllGlobalPromises","_globals","AddGlobal","cashedGlobal","globalDescriptor","AddCulture","currentCulture","cultureCode","localCulture","newGlobal","userLanguage","AddDesktopLanguage","currentDesktopLanguage","defaultDesktopLanguage","addDesktopLanguage","GlobalNames","globalName","globals","GetCulture","FONT_NAME_TO_CSS","_imageUrl","LoadImage","GetImageIcon","IconFontName","GetPortletIconTemplate","iconDataName","iconName","EMPTY_ICON","SIMPLE_LINE","NoIconNoImage","IsSocialIcon","IsFontAwesome","SimpleLineIcon","IconStore","iconId","IconId","imageUrl","AddCssForAllExtention","addCssForAll","$current","eventAdd","eventRemove","AlignDropdown","alignDropdown","dropdownType","verticalAlign","directions","horizontalAlign","addEventOnclick","dropdownInsideOverflow","$dropdownContainer","appliedClassNameHorizontal","appliedClassNameVertical","$dropdownList","$targetParent","isRightSidebar","applyToElement","changeAlignment","waitForRender","$button","windowWidth","windowHeight","buttonOffsetX","buttonOffsetY","buttonHeight","buttonWidth","isMultiDropdown","dropdownWidth","dropdownHeight","AllowBindingsExtention","allowBindings","controlsDescendantBindings","AnimateExtention","AutoCompleteExtention","autoComplete","InitAutocomplete","allBindings","bindingContext","valueUnwrapped","OnSelect","onSelect","autocomplete","autoFocus","Updater","isElementBlocked","isBlocked","BlockElementExtention","blockElement","BootstrapCollapseExtention","onReady","BootstrapMultiselect","$multiselect","BootstrapPopoverExtention","RenderHtmlString","DOMParser","parseFromString","triggerMode","htmlMode","sourceUnwrapped","BootstrapSwitchExtention","ContextMenu","contextMenu","contextMenuSelector","CropperExtention","cropper","built","afterCrop","CroppedCanvas","fillColor","CustomScrollbarExtention","customScrollbar","CustomTableExtention","customTable","insideModal","modalScrollClass","formWrapper","sysTableHeader","documentHeight","tableWidth","tableContainer","scrollRepeaterTop","scrollHeader","timeFormats","DatetimepickerExtention","valHook","valHookGet","valHookSet","dataGetInputValue","dataSetInputValue","updateValueCallback","onUpdate","scrollContainer","gridScrollContainer","resizePicker","picker","pickerHeight","pickerWidth","SetInputParse","HTMLInputElement","changeTheCaret","caretPos","setSelectionRange","clearValueCallback","onClear","resetBtn","dateTimeValue","notFormatted","currentFormat","fallbackMomentOfTime","parseInputDate","inputValue","minsRest","hrs","mins","momentOfTime","DebugExtention","debug","DirtyFlagExtention","currentState","isInitiallyDirty","_currentState","_isInitiallyDirty","IsDirty","GetInitialState","FOREACH_OPTIONS_PROPERTIES","LIST_KEY","AFTER_DROP_KEY","AFTER_DELETE_KEY","AFTER_CLONE_KEY","DRAG_KEY","foreachBinding","foreach","dragula","foreachOptions","MakeForeachOptions","afterDrop","afterDelete","onDrag","DRAG_END_KEY","onDragEnd","useFastForEach","fastForEachBinding","CreateOrUpdateDrakeGroup","CreateDrake","templateOptions","AddGroup","RemoveContainer","RegisterEvents","OnDrop","OnRemove","OnCloned","copying","cloneBackup","fastForEach","DropdownExtention","DropzoneExtenion","dropzoneInstance","rawData","$rawData","MaxFilesQty","prevFileSize","currentFileSize","acceptedTypes","invalidFiles","imageToInject","ellipsisTooltip","updateEllipsisTooltip","isLineClampMode","showHideOnlyOnHover","ShowTooltip","HideTooltip","parrentEl","jbox","currentNodeType","currentAnchor","EnableAttrExtention","enableAttr","EnterKeyExtention","enterKey","accessor","bubble","ErrorHandlingBindingProvider","nodeHasBindings","getBindings","getBindingAccessors","objectForEach","EscKeyExtension","escKey","KnockoutExtenions","N","disableSelection","leftPosition","ForEachPropExtention","foreachprop","transformObject","allBindingsAccessor","unwrapObservable","FreezeTableExtention","FullCalendarExtention","ctrlIsPressed","setEventsCopyable","isCopyable","eventAfterAllRender","$event","footprint","eventDef","revert","revertDuration","updateViewSize","newResources","freeDays","GroupedCheckboxExtention","groupedCheckbox","$group","updateGroupState","$nestedCheckbox","$nestedCheckboxes","allCheckboxesChecked","anyCheckboxChecked","updateOtherCheckboxes","checkboxId","checkboxType","checkboxChecked","$otherCheckboxes","otherCheckbox","$nestedCheckboxesChecked","nestedCheckbox","$checkbox","HasScrollBarExtention","hasScrollBar","isReady","$checkElement","checkElement","IframeContentExtention","iframeContent","Inputmask","extendAliases","MaskFormater","fieldNumExceptNegative","fieldSize","decimalSeparator","decimalInputMask","withNumberGroupSeparators","IpAddress","numericInput","mask","greedy","onBeforePaste","pastedValue","definitions","validator","cardinality","casing","inputID","entered_ip","ip_fields_array","formatted_ip","ip_error","error_message","ip_correct","success_message","array_length","ip_field","regex_result","InputMaskExtention","inputMask","numExceptNegative","decimalSize","AdditionalAliases","onBeforeWrite","opts","rslt","maskedValue","processValue","suffix","escapeRegex","isNegative","negationSymbol","front","back","isFinite","absoluteProcessValue","signedProcessValue","radixPosition","rpb","digitsOptional","stringifiedNumber","isZero","postFormat","refreshFromBuffer","caret","DecimalInputMaskExtension","ExtendOptions","CanBeNegative","CanBeZero","toLocaleString","IntegerInputMaskExtension","integerInputMask","intlTelInput","isDropdownContainer","dropdownContainer","iti","getSelectedCountryData","OnScroll","_2","allCountries","intlTelInputGlobals","getCountryData","selectedCountry","jsBarcode","barcode","KnobExtention","knob","minCount","fgColor","release","KnockoutValidationExtensions","rules","otherField","MiniColorsExtention","miniColors","minicolors","colorValue","changed","changeDelay","animationEasing","MultilineEllipsis","truncate","NiceScrollExtention","niceScroll","scrollForMobile","horizontalScrollWithShift","horizontalCursorClass","getNiceScroll","cursorh","OptionExtention","writeValue","PreventBubbleExtention","preventBubble","registerEventHandler","cancelBubble","RenderTemplateXExtention","htmlTemplate","temp","templateName","ResizableExtention","resizable","ScreenHeightExtention","screenHeight","ViewBody","FourthColumn","RightColumn","ResizeContainer","viewBody","fourthColumn","rightColumn","pageElements","fourthColumnHeight","rightColumnHeight","expectedHeight","ScrollFixerExtention","scrollFixer","isChrome","webstore","isEdge","isOpera","ScrollSynchronizingExtention","syncScroll","topScroll","bottomScroll","$topEl","$bottomEl","SearchExtention","searchExtention","typingTimer","regExp","doneTyping","regexp","inp","SlimScrollExtention","SmoothHeightExtention","smoothHeight","SubformResizeExtention","subformResize","subForms","subformFirst","subformSecond","subformThird","subformsParent","adaptiveBlockClassName","subformFirstHeight","subformSecondHeight","subformThirdHeight","smallerBlock","TabNavigationExtention","tabNavigation","closestSearch","firstElement","offsetParent","TextAreAutogrowExtention","autogrow","timerId","shadowId","TinymceExtention","AddProtocol","ChangeTimestampFormat","defaultFormatValue","formatType","isValidMomentFormat","autofocusTarget","autofocus","extended_valid_elements","min_height","max_height","link_assume_external_targets","document_base_url","content_style","contextmenu","quickEdit","isMailControl","autoresize","fontsize_formats","removed_menuitems","paste_data_images","convert_urls","remove_script_host","table_responsive_width","table_default_styles","table_default_attributes","mobile","menubar","statusbar","init_instance_callback","afterInit","getBody","nowrap","auto_focus","afterChange","addButton","userNameAndDate","dom","onChangeLanguage","TippyExtention","tippy","ToggleExtention","TooltipExtention","DestroyTooltip","RenderOnOverflow","elementText","_collection","HasElement","_tooltips","UniformExtention","viewerJs","ImageClasses","imageClasses","AnnotationsEnabled","ShowImage","currentImage","getOriginalImage","getHeightImage","ShowAnnotations","showAnnotations","markerArea","markerButton","editingControlsInactive","pointerEvents","annotationsShown","im","BootstrapTooltip","TOOL_MARKUP","LABEL_MARKUP","CELL_OPTIONS","isStart","CELL_OPTIONS_START","LINK_OPTIONS","COLORS","LIFECYCLE_EVENTS","HALO_HANDLES","LINK_CUSTOM_ATTRS","TEST_CONDITION_CUSTOM_ATTRS","CELL_CUSTOM_ATTRS","INSPECTOR_HTML_ATTRS","NODE_TYPES","NODE_TYPES_ID","DEFAULT_LINK_ATTRS","DwPackageDto","FollowupModeDto","NodeTypeDto","LifecycleStepDto","TypedScreenModel","TableType","FormTypeModel","DesignScreenModel","SubFormModel","Removable","PortletStates","PortletManagerEventHandlersFactory","_handlerOwner","_eventEmitter","BindEvent","BasePortletManager","isChanged","IsInViewMode","IsInDesignMode","SwitchRenderMode","DesignedPortlet","portletToSave","portletStoreModel","ScreenName","RowPosition","RowNumber","ColPosition","ColNumber","DesignedPortletSpace","Portlets","portletSpace","portletSpaceStoreModel","userPortletSpace","PortletBarEventHandlersFactory","_handerOwner","RuntimeSettingsReader","GetRuntimeSettings","readableRuntimeSettings","dataSpaceColor","_portlet","LoadPortlet","portletId","SetPortletSubject","BindPortletEvents","GeneratePortlet","portletType","OldPosition","ReloadPortlet","SetStateForcibly","AddRuntimeSettings","SetPortletSettings","portletBarControl","otherControls","GetPortleteSettings","UpdateRuntimeSettings","userVariables","controlButtonsClickEvents","controlButtonsEventsHandlers","RemovePortlet","controlButtonsHandlersFactory","PortletsExplorer","portletsCollection","_portletsCollection","EntityPortlet","GuidToPortletInfoMap","_keys","_dictionary","portletInfo","ToArray","Key","PortletDesignManager","_portletExplorer","_draggedFromExplorer","_draggablePortlets","DestroyDragAndDrop","sortable","InitDesignMode","$exploredPortlets","$attachedPortlets","_attachedPortlets","connectWith","copyHelper","beforeStop","copied","droppedIntoExplorer","forcePlaceholderSize","tolerance","colNumber","AddNewPortlet","prevPosition","ChangePortletPosition","GetPositions","guidToPosition","toArray","portletScope","$portlet","OnPortletExlorerLoaded","_portletExplorereLoaded","newPosition","droppedObject","PrevPosition","NewPosition","PortletsCollection","PortletSpaceStore","GetPortletSpaces","GetMainPortletSpace","GetPortletSpace","GetPortletsExplorer","portletEntities","UpdatePortletSpace","changedPortletSpace","CreatePortletSpace","CopyPortletSpace","UpdatePortletSpaceInfo","portletSpaceId","BindToControl","PortletSpaceId","DeletePortletSpace","PortletSpaceEditorModel","PortletSpaceName","AllPortletSpaces","CopyFromPortletSpace","ShowCopyFromDropdown","newPortletSpace","allPortletSpaces","SavePortletSpace","CopyFromId","_portletSpaces","_portletSpace","_portletDesignManager","_portletManagers1","_portletManagers2","_portletManagers3","IsChanged","_mainPortletSpaceId","_portletsAreLoaded","GetPortletManagers","columnManagers","LoadPortletSpaces","LoadPortlets","ChangePortletSpace","SwitchPortletSpace","EnableDesignMode","MakeMain","SavePortletSpaceInfo","_newPortlets","_removedPortlets","EnableViewMode","ProcessEachManager","designedPortletSpace","pair","GetPortletManagerByCriteria","BackToView","portletManager","CreatePortletSpaceForce","EditPortletSpace","DeletePortletSpaceForce","portletsColumnNumber","division","columnManager","portletSpaces","ps","SaveNewPortletSpace","portletSpaceIndex","portletSpacesDesign","mainPortletSpace","ApplyPortletSpace","GetPortletManagersOfColumn","InsertInPosition","BindPortletManagerEvents","InsertInObservableList","GetByCriteria","droppedPortletManager","handlers","eventHandlersFactory","ProcessByCriteria","delegate","ProcessManagersByCriteria","insertPosition","positionToShift","BaseScreen","ScreenTranslatedName","_portletBarControl","portletBar","BindPortletBarEvents","appliedSettings","ApplyControlSettings","DeduplicationCell","SelectionType","actionType","deduplicationInstance","_popUpTriggerAction","_popUpAction","endValue","_tooltipValue","_entityName","_selectedAlignedTd","_selectionType","_deduplicationInstance","changesToSave","Deduplication","_disabled","Changes","DeduplicateMatched","GetRecordsList","GetDeduplicationRecord","InitLockWithRequest","GetDeduplicationMatchedRecordModel","RenderModal","GetModal","SetPopUpData","selectionToActivate","indexOfActionCell","DeduplicationGrid","excludecolumn","deduplications","deduplicationHeader","deduplication","GetSelectionType","leftRecordRowCell","DefaultFieldName","LeftRecord","selectionType","rowToInject","RightRecord","IsMergeEnabled","DeduplicationInstance","SetPopUpDataFromSearch","Headers","ResetRows","DeduplicationHeader","_columnName","DeduplicationRow","mainGrid","deduplicationIntance","_mainGrid","_mergedEnabled","editCells","rowCell","DeduplicationStore","GetDeduplicationSubjects","GetMatchedRecords","DeduplicateAll","MatchAll","DeleteAll","GetDeduplicationRecordModel","Deduplicate","GetMatchingStatus","LicenseHolderModel","LicenseHolderStore","GetLicenseHolderModel","UploadLicenseLogo","Exception","OperationResult","IsSuccessful","DisplayRecordTypeName","RecordTypeTranslatedName","RecordTypeName","DisplayRecordName","RecordTranslatedName","lastStatusDate","LastStatusDate","RecordExampleModel","PossibleToExample","RecordPersonalizationModel","IsPersonalized","PossibleToPersonalize","RecordPersonalization","RecordExampleInfo","GetDefaultParams","ReferenceModel","ReferenceTableModel","RightsModel","QueryBuilderData","getScreenByIdDefaultParams","RecordSpecs","getSubjectEntityPromise","getDesignScreenPromise","GetDesignScreenInstance","isLinkEditor","StaticControlsInitializer","AddStaticControls","_controlsDictionaryDelegate","AddForConsultScreen","AddForSpecialScreen","AddForDashboard","AddForListScreen","AddForEditScreen","AddForPortlet","AddForFormDesigner","AddForLinkEditor","LookupEditorNewRecord","AddForQueryScreen","AddForCardScreen","AddForProcessCardPage","AddForStepsScreen","EmptyScreen","AddForEmptyScreenScreen","staticControlsPosition","ShowFollowUp","RegisterStaticControls","IsDashMain","BuildControl","subForm","AddStaticControl","subFormIndex","ScreenSwitcher","currentGridRow","gridRowData","_gridRowData","_currentRow","indexOfCurrentRow","_previousScreen","_nextScreen","GetMenuItem","GetEnabled","GridRowData","NextScreen","GetPreviousScreen","GetNextScreen","_screenFormProperties","_screenFormEntityProperties","_isDashMain","_isEditScreenExist","_isListScreenExist","_isDashboardScreenExist","_isConsultScreenExist","_isStepsScreenExist","_showFollowUp","_subForms","_dataMode","_subjectLifeStatusId","TargetId","_actionSubjectRecord","InitUIColors","InitActionBar","InitBottomBar","InitSubForms","SetDefaultUserSelection","_gridRowList","_inModal","_nestedLevel","_modalOptions","_modalComponents","_screenSwitcher","_controlsToUpdate","ShowListScreen","ShowSpecialScreen","ShowDashboardScreen","ShowConsultScreen","ShowPreviousScreen","IsPathRunnerRefreshed","_isQueryBuilderScreen","IsQueryBuilderScreen","IsCardScreen","IsProcessCardScreen","IsStepsScreen","deserializeProperties","EntityProperties","propertyTypes","screenBGrColorProperties","screenHeaderBGrColorProperties","screenBGrColorEntityProperties","screenHeaderBGrColorEntityProperties","ScreenBackgroundColor","ScreenHeaderBackgroundColor","CopyTextToClipboard","clipboard","writeText","textArea","isScreen","SetModalOptions","SearchRecord","TableTypeFlowFolder","GetEntityIcon","GetEntityNameTranslation","predicate","SetActionSubjectRecord","DeleteRecordConfirmation","DeleteRecordSuccessNotification","FirstSubForm","ThreeSubFormsWithoutFirst","WithLinkList","NoLinkList","_actionBar","_bottomBar","IsBottomBarControls","CloseModalComponents","SubForm","ShowExpandButton","languagesReceived","languagesUpdatedPromise","SetCurrentGridRowData","GetCurrentGridRow","SetGridRowListData","gridRowList","GetCurrentGridRowList","excludingControlsTypes","mergedDataModel","setValueCallback","baseControl","GetControlDataByControlId","GetControlDataByField","controlTags","GetTagControlData","queryBuilderValue","GetQueryBuilderControlData","controlsData","ScreenTags","GetFieldByFieldName","controlTypeName","GetControlByFieldNameOnScreenEntity","GetDependsOnControls","DependsOnId","RemoveNonEmptyDependsOn","dependsOnControls","actionBarControls","bottomBarControls","subFormControls","SCREEN_OPENED","GetTarget","SetScreenStyle","isParentControlExist","pageContainer","pageHeader","openInPopUpByCtrl","SetStyleProperty","setColorForContainer","DarkenHexColor","jBoxContainer","amount","SetRecordIdAndRender","SetSource","extraClass","currentGridRowList","recordsIds","distincLinkedRecords","extraClassValue","SCREEN_CLOSED","CHANGE_SCREEN","IsEntitySysUsersOrCd","skipClosedEvent","GetTableTypeNameTranslation","TableTypeNameTranslation","screenState","GoToScreenByType","BackToPreviousScreen","excludeControlTypes","onlyScreenSubject","linkListField","IsTypeAvailable","exampleTypeId","ExampleTypeId","isTypeAvailableModel","variableName","screenVariable","isPreselect","dependsOnFields","controlsByDependsOn","controlsToUpdate","controlToUpdate","getWidthValue","isWidthValid","SoftColorScheme","SoftColorsProvider","GetColor","scheme","colorPalette","GetColorPallet","As","rgbaColor","SoftColor","_rgba","RGBA","TabGridStore","GetGridData","linkEditorTabGridFacade","getScreen","getControlByFieldName","linkEditorFacade","TabGrid","GetGridOptions","SaveTableViewId","ShowTableViewList","ShowAddAndLinkButton","ShowLinkButton","LinkLeftEntityId","LinkRightEntityId","ReferenceLookupFieldId","ScopedRecordId","ScopedTableId","LinkListChanges","TargetTableId","createdRecordId","selectedRecordId","onAfterLinking","PrepareRecordsToSelect","GetLoadData","SetLinkEditorGridView","GetTableViewId","GetLinkEditorGridView","TabTableData","TargetTableName","LookupFieldName","TabName","TabTables","TableParams","tableParams","CurrentTabTable","OnTabClick","tableData","tabTable","linkEditorModel","_closeAfterSave","_linkEditorModel","_mainRecordTypeId","_rightLinkedEntityName","_leftLinkedEntityName","_relationTypes","RelationTypes","_selectedRelationTypeId","SetFirstEnabledRelationType","_defaultDisabled","SelectedRelationTypeId","_selectedRelationTypeName","SelectedRelationTypeName","_linkListInstance","_hasRelations","_relationTypeValuesEnabled","FireUpdateVariable","LeftLinkedEntityId","RightLinkedEntityId","SetRelationTypeValue","firstRel","ReferenceControls","SetFocusOnFirstControl","closeAfterSave","linkListInstance","_editorDataModel","GetRelationTypesRequestModel","CurrentClusterMode","GetControlDataModel","existsData","relationTypeSelectedData","propertyFields","controlledFields","field1","field2","controlsWithFields","GetControlModel","propertyField","pField","PropertyFieldId","sortBy","memoControl","listAvailabilityStatus","relationType","RightLinkedEntityName","targetedLinkType","_tabTables","TabSettings","tabSettings","LeftLinkedRecord","RightLinkedRecord","scopedRecord","scopedTable","hasRelations","relationTypeValuesEnabled","LeftLinkedEntityTranslatedName","RightLinkedEntityTranslatedName","HasDefaultValue","DeserializeData","Grids","GetLinkedRecordLabel","GetRelationTypeLabel","ReverseTranslation","Reverse","fieldDataModel","selectedRelationTypeField","unselectedRelationtype","FieldValueKey","PropertyTable","PropertyFieldConfigModel","TranslationValue","LinkedFieldValueModel","LinkEditorTabSettingsModel","LinkedRecordModel","LinkEditorModel","IsPrimaryKey","PlannerLevelEntityModel","SubEntities","ImageFieldModel","TableWithImagesModel","GetImageEntities","ImageDeserialize","GetSignatureEntities","SignatureDeserialize","GetPlanerLevelEntities","GetSubEntities","DashboardBlock","widget","SubFormProperties","PasswordFieldList","RemoveAttachments","GridsData","DropAttachments","Spreadsheets","IsStaticControls","CopyRecordLink","urlForCopying","BaseForm","InitControls","_noSubControls","isFavourite","controlNotExists","controlToWrap","_controlToWrap","GetFormId","GetFormGuid","_showRemoveButton","_configuringLayout","RenderDynamically","_subForm","ConfiguringLayout","showButton","ApplyLayout","ExpandOnControlClicking","AfterDropControl","ShowControlEditor","ProfileSelectorStore","GetCreatorProfiles","creatorProfiles","Profiles","SelectedProfile","HasToBeShownByGlobal","IsSysTable","LoadCreatorProfiles","ResolveCreatorProfiles","_originalMainProfileId","RenderSelector","LifeStatusViewModel","ActionDropdown","_showStatusSelector","ShowStatusSelector","_tableTypeName","_recordSpecs","_actionSubject","activeParams","GetActiveParams","_lifeStatus","ActiveLifeStatus","ModifyLifeStatus","GetViewTemplate","GetEditTemplate","GetLifeStatus","Modified","RequestCheckList","ShowTypeHelp","DoProgressBarProcess","lifeStatuses","showStatusSelector","ShowActionDropdown","SubjectAction","ProcessingCheckList","actionDropdown","FireFollowUp","infiniteLoop","CloseActionCheckList","GetViewActiveParams","GetEditActiveParams","MigratedRequired","migratedRequired","activeRenderMode","activeLifeStatus","enabledDisabledStatuses","subjectAction","FormatDate","flowFolderIcon","ReferenceEntityId","ReferenceRecordId","FollowUpActionSubjectModel","FollowUpRecordRequestModel","ScreenDataStore","UpdateRecordLifestatus","UpdateRecordLifestatusRequestModel","ReleaseLockOnWindowClose","CheckHideButtonCaption","_sourceSearchTerm","_isHamburgerActive","_areWidthsEqual","_hideButtonCaption","_actionBarButtonControls","InitProgressBar","ApplyEvents","SecurityReset","OnCopy","FollowUpFromConsultScreen","FollowUpFromSubject","ModifyLifestatus","ActionSubject","LoadPathRunnerData","parentActionSubject","NewSubjectActionRecord","ShowSubjectActionEditScreen","_statusDescription","HandleOnWindowClose","RemoveOnWindowCloseHandler","RELOAD_SCREEN","GetReferenceConsultScreenTemplate","SearchControl","GetTextSearchTermControl","searchTerm","conditionToggler","allowChildrenTypes","closeScreen","ProhibitionAutoStopTimerForCurrentScreen","currentScreen","newScreen","SelectedScreen","textSearchTerm","DeleteFromRecent","NewlyCreatedRecord","NameControlSetValue","newTypeId","IsFollowUp","ClearPathRunner","OnFollowUpRecordFromEditScreen","OnFollowUpSubjectActionRecordFromEditScreen","followUpRecordId","actionBarWrapper","actionBar_barLeft","actionBar_controls","ToggleHamburger","ToggleLifeStatusBarClass","GridRowDataDeleteCurrentRow","currentRow","lastRecentRecord","GetLastRecentRecordByEntityId","HasSpecialScreen","searchControlId","ShowProfileSelector","stepControl","lockedRecordId","AddField","linkRequired","MainFormUpdateModel","UpdateScreenModel","DeletedFormIds","DeletedControlIds","UpdateScreenStore","UpdateScreen","ControlEditorModel","AttachedFields","CONTROL_DEFAULT_NAME","Labels","NameFocused","DescriptionTranslationsOpened","SelectedDescription","ValidationMsg","InitEditControlData","EditControlModel","EditControl","SetFocusItem","ToggleDescriptionTranslations","ArrTranslate","SelectDescriptionTranslation","NameMaxSize","UpdateDescriptionTranslationList","controlEditorModel","GetControlEditorModel","UpdateControlModel","OnKeyUpUpdateTranslationList","NameValidate","OnKeyUpChangeTranslation","ChangeDescriptionTranslation","K_Control","F_Type","ParentControlId","HasParentControl","SubFormId","GetSubjectEntityName","GetSubjectTableTypeId","InitName","IsScreenOfType","screenTypes","requestedType","GetDescriptionTranslation","BlobFieldModel","BlobFieldsStore","LookupFieldModel","LookupFieldsStore","GetMultiSelect","LabelPositions","_icons","_entityColor","_groupedIcons","_dropzoneShown","_uploadetImages","RenderTemplate","OpenDropzone","HideDropzone","dz","fileToRemove","dropZone","IconsList","_editControl","_editControlModel","_controlName","_selectFieldSubscription","_blobFields","_useFieldName","UseFieldNameForControlName","_controlNameTranslations","_controlDescriptionTranslations","_defaultEntityType","_tableTypeId","_entities","_subEntities","_selectedEntity","_selectedEntityType","_selectedSubEntity","_controlEditorModel","_showEntityList","_showEntityTypesList","_showSubEntityList","_allowSelectField","_isControlNameHasFocus","_showLanguageList","_showDescriptionsLanguageList","_labelPositions","UpperLeft","UpperMiddle","UpperRight","Right","LeftColon","uniqFieldsByEntityType","_subjectSubEntityId","selectedLabelPosition","_selectedLabelPosition","editControl","subEntities","documentFields","subEntity","SetCurrentField","selectedSubEntity","LoadLookupFieldsForEntity","_currentControlName","_currentControlDescription","IsValidName","ValidationMsgForName","PrimaryTableLookupFieldId","PrimaryTableLookupFieldName","SetCurrent","translationsModel","SetCurrentDescription","ShowLanguageList","controlEditor","ShowDescriptionLanguageList","ToggleUseFieldName","LoadBlobControlData","LoadLookupControlData","LoadMultiSelectControlData","LoadGeneralControlData","LookupTableTableName","LookupTableValueFieldName","isControlInMainSubForm","ControlTypeName","IsControlInMainSubForm","EntityNameWithFieldName","isEditScreen","isListScreen","existFieldIds","dropControlSubjectEntity","controlSubjectEntity","SetCurrentSubEntity","selectedField","OpenIconManager","Icons","iconManager","SelectedLabelPosition","SelectedEntityType","SelectedSubEntity","LabelPosName","LabelPos","GraphicalIcon","DefaultDescription","ShowUseFieldNameToggle","blobField","controlName","entityNameTranslation","EntityNameTranslations","entityTranslation","FieldNameTranslations","fieldTranslation","PopulateEntities","FieldSelectorAfterRender","InitLabelPositions","InitEntities","OnEntityChange","OnFieldChange","UseFieldNameAsControlName","OnSelectField","FilterEntities","MarkAcceptableFields","attachedEntity","ResetProperties","usedFields","FindUsedFields","defTrans","InvoiceTable","LifeStatusModel","InvoiceType","InvoicingControlConfigOptions","FinancialControlStore","GetConfigOptions","InvoicingControlEditor","_sourceTables","_selectedSourceTable","_sourceLifeStatuses","_selectedSourceLifeStatus","_destinationTables","_selectedDestinationTable","_destinationTypes","_selectedDestinationType","_configIssue","sourceField","PrimaryFieldId","PrimaryFieldName","destinationTable","destinationField","configOptionsResponse","configOptions","ApplyConfigOptions","Issue","recordLifeStatusId","defaultLifestatus","translatedSourceLifeStatus","SourceLifeStatuses","selectedSourceTable","selectedSourceLifeStatus","DestinationTables","selectedDestinationTable","UpdateDestinationTypes","destinationTypes","DestinationTypes","selectedDestinationTableId","CurrencyControlEditor","filteredEntities","filteredFields","GetSelectedField","InitField","controlFieldModel","BasketControlEditor","_leftBarSubEntities","_selectedLeftBarSubEntity","_rightBarSubEntities","_selectedRightBarSubEntity","_plannerLevelEntities","planerLevelEntity","primaryField","primaryAttachedField","primaryIconModel","primaryLeftField","primaryLeftAttachedField","leftIconModel","EntityFullNameTranslation","EntityFullName","primaryRightField","primaryRightAttachedField","rightIconModel","GetSubEntity","sub","leftBarSubEntityView","rightBarSubEntityView","GanttChartControlEditorStore","GetDesignOptions","_ganttViews","_selectedGanttView","_resourcesViews","_selectedResourcesView","resourcesViewPkey","fieldSort","resourcesAttachedField","CreateAttachedField","GanttViews","ResourcesViews","attachedSubTableViews","selectedGanttView","selectedResourcesView","ProductConfiguratorControlEditorStore","_tables","_selectedTable","_useView","_selectedProductDescription","_useProductDescription","viewField","viewFieldSort","descriptionFieldSort","CheckForDescriptionFields","IsText","GetDescriptionFields","enableAlternativePriceCalculation","level1BaseProperty","level1","level2BaseProperty","level2","lockLevel1","SetLockLevel1","isLevel1Initiated","isLevel2Initiated","isLevel1Set","isLevel2Set","PopulateProductDescription","PopulateProductView","descriptionField","SubjectTableId","ImageFields","ResetSelectOnlyProperty","UpdateField","ResetDimensions","EnableOrDisableShowAnnotations","_uncheckShowAnnotations","propsObj","propsString","spansArray","useAnnotationsCheckbox","showAnnotationsCheckbox","nextElementSibling","KanbanControlEditorStore","_kanbanSubjectEntities","_selectedKanbanSubjectEntity","_kanbanSubjectFields","selectedKanbanSubjectEntity","_selectedKanbanSubjectField","_todoEntities","_selectedTodoEntity","_todoTypes","selectedTodoEntity","_selectedTodoType","_todoFields","_selectedTodoField","selectedTitleField","TitleFieldId","selectedTodoType","TodoTypeId","selectedTodoField","TodoFieldId","ScreenSubjectFields","KanbanSubjectEntities","TodoEntities","screenSubjectFields","kanbanSubjectEntities","todoEntities","defaultKanbanSubject","selectedKanbanSubjectField","ChartControlEditorStore","GetControlOptions","_hasEntities","_views","PkFieldId","UpdateAxisOptions","UpdateSubTableView","PkFieldName","seriesOptions","axisFields","IsDatetime","axisOptions","MapsControlEditor","ProcessCardPageModel","StepPageStore","GetProcessCardPageScreens","_processCardPageScreens","_selectedProcessCardScreen","ButtonCopyControlEditor","CheckProperties","behavior","ControlEditorFactory","GetEditor","AfterDropValidation","IsPositionValid","PortletAfterDropValidation","ScreenTypeToDropControlValidation","GetValidationDelegate","defaultGridStackOptions","float","staticGrid","cellHeight","DEFAULT_LABEL_POSITION","LINK_LIST_REQUIRED_ENTITY","CONRTOL_WITH_BLOBFIELDATTACHED","getSubFormGridOptions","DesignScreen","_formProperties","_designModel","_subFormsWith","InitCalcSubFormSize","_updateModel","_hasChanges","_afterDropValidation","_screenColors","_customStyle","ControlToolbar","_gridStack","setStatic","GetDefaultControlModel","DestroyDragula","toolBarToDesignerDrake","BindSubFormEvents","elModel","targetModel","allowedLinkListSubFormIndex","IsEnableDragRecipeEditor","IsEnableDragTimer","ct","fieldAlreadyDropped","IsEnableDragField","IsEnableDragSearchTerm","IsEnableButtonFavorite","HasOnlyOneInstanceOf","isShowDropContainer","elementContext","instanceType","ShowRemoveSubFormConfirmationDialog","RemoveSubForm","bgColor","AddSubForm","subFormModel","addWidget","recipeEditorControl","isDragOnKanban","OneToMany","OneToMain","fieldObj","controlObj","AddTranslationsToControl","translationDescr","removeWidget","LabelPositionValue","CreateTab","CreateStepPage","CreatePlannerPage","CreateRootLevel","plannerLevel","CreatePlannerLevel","CapitalizeFirstLetter","InitializeTabs","RelatedSubEntitiesModel","relatedSubEntities","gridControl","GenerateGridControl","RelatedEntities","AfterDropFieldIntoGrid","alreadyAddedField","DropControlFromToolBarProcess","newControl","allowedFormIndex","usersEntity","usersEntityIconModel","usersModel","DropFieldFromToolBarProcess","defaultControlModel","MovingControlProcess","AfterDropEntityIntoLinkList","AttachFieldToLinkList","isImage","primaryKeyField","defaultField","entityFields","linkEntityFields","ConvertEntityToGrid","AfterDropTapPageControl","DropExistingControl","DropNewControl","gridStackSaveResult","save","gridStackWidgets","FormGuid","getGeneralProperties","ParentControlGuid","TableFormLinks","updateScreenModel","SetSubFormIds","SetControlIds","AfterSaveRemoveNotInitializedControlClass","resultMessage","updatedSubForm","updatedControlModel","RemoveParentControlClass","NotInitializedControl","leastOneNotInitialized","effect","SubFormsWith","mqb","matchMedia","mqm","consultSubform","onresize","itemNumber","OneToOneSubject","OneToOne","movingControl","stringValue","AlreadyPersonalized","IsPersonal","PersonalizationSelected","MakePersonal","GetPersonalizationInfo","IsMakePersonal","RecordExampleInfoModel","AlreadyExample","ExampleSelected","MakeExample","GetExampleInfo","IsMakeExample","SecurityEditorModel","SecurityPass","SecurityPassConfig","OnAdd","securityEditorUser","SecurityData","ActiveRights","OptionalRights","ActiveOptionalRights","PassOwner","DoNotPass","DoNotPassRights","PassRights","PassOptionalRights","PassInheritance","RefusePass","AddUser","existingUser","SelectOwner","SecurityEditorFormModel","defaultRights","defaultOptionalRights","securityData","optionaRightsValue","deleted","activeRights","optionalRights","SecurityPassViewModel","PassOption","EnablePassOwner","EnablePassInheritance","passAnyRights","doNotPass","passRights","passOptionalRights","passInheritance","refusePass","passOwner","passOption","SecurityEditorStore","GetSecurityInfoForRecord","GetSecurityData","SecurityDataModel","ProfileName","SecurityEditor","Setup","ShowEditor","_formModel","CreateForm","MapToFormModel","GetServerData","Profile","formModel","SearchUsers","securityDataDto","mainProfile","SecurityProfiles","_isFollowUp","ParentRecordTypeId","CtrlS","GetTopScreen","mobileOptions","_makePersonal","_makeExample","_securityEditor","_requiredControls","changingSecurityAllowed","ChangeSecurityAllowance","editingSecurityAllowed","IsChangingSecurityAllowed","isLeftAndControlsEqual","AllowEmptyRequiredControls","SaveGrids","bottomBar","recordSpec","ApplySecurityEditorChanges","isModalMode","isDone","grids","ReleaseLockGrids","refreshScreen","ControlPopupsClose","AfterSave","checkRecordId","_isDataFromExample","isFromExample","FillFromExample","passwordControl","PasswordAction","personalizationInfo","exampleInfo","RecordSettings","lifeStatusInfo","FollowUpRecord","TableSecurityChanges","TypeSecurityChanges","RecordSecurityChanges","RecordSharingChanges","UserSecurityChanges","UserAllowanceChanges","FieldSecurityControlChanges","controlAttachments","linkListData","tagChanges","TagsChanges","spreadsheetRewrite","FollowUpRecordId","MainLinkRecordId","entityRelation","ReadLookups","recordDataModel","linkedRecordName","newRelationModel","_queryName","fontColor","fontFamily","_emptyBar","EmptyScreenModel","searchControl","OpenSearch","emptyScreenModel","SearchTypes","RecordTypes","SearchByMainRelationTypes","DUPLICATES_RECORD_SELECTED","GroupNameToRecordsModel","recent","favorites","SearchFieldModel","SearchGroupItemModel","_searchType","SearchType","SearchGroupModel","GetItem","HasItem","SearchModeGroupModel","FastSearch","TotalSearch","PhoneticSearch","AddItem","FieldSearchGroupModel","FieldSearch","SearchModeModel","AddSearchFields","searchFields","searchFieldGroup","searchField","GetSearchItem","groupWithItem","GetDefaultMode","AlternativeSearchModel","RowValueModel","SearchResultRowModel","RowValues","SearchResultModel","SearchFields","AlternativeSearchList","SearchScreenModel","GroupNameToRecords","SearchTypeModel","UserVarsRecordModel","SearchResultCell","_Id","SearchResultGrid","searchResult","searchRequest","showExpandButton","multiselectMode","showDuplicatesMode","selectedDuplicatesRecords","_showDuplicatesMode","_searchResultMessage","_searchResult","_isSmallTable","_searchRequest","_orderFields","_multiselectMode","_selectedRecords","_selectedDuplicatesRecords","RowClick","IsSelectedDuplicatesRecord","IsDuplicatesSelected","isSelectedDuplicatesRecord","IsDisableDuplicateRecord","FormatDecimalOrInteger","MultiSelectRecord","SelectRecords","ToggleExpand","GetSubGriData","SubGridParentRecordId","RecordType","All","EnableFilter","OrderFields","SortOrderClassName","SearchResultRow","_subGrid","_toggleButtonClassName","columnValue","FILTER_BY_RELATION_CLASSES","TOGGLE_CLASSES","_dropDownFilterState","_sharing","_leftEntityId","_rightEntityId","_leftRecordId","_rightRecordId","_screenData","_searchGroups","_entityIcon","_focusInput","_searchByTypes","_searchRegexp","_conditionValues","_searchGroup","_recent","_favorites","_recentAndFavoritesTabIsActive","RecentAndFavoritesActive","_closeAfterSelectingRecord","_isFirstLoad","_paginationInfo","_searchMode","_searchLoad","_selectedSearchMode","_addButtonVisible","_addButtonDisabled","_isClick","_isAddQueryButton","_adaptiveRecordsCount","_isSimpleLifeStatus","_enableFilter","_isBaseEntity","_searchByMainRelationType","_searchByRelations","_isBackLinkEnabled","_entityType","_searchFieldId","_altEntities","_searchResultGrid","_plannerLevelEntityId","_plannerLevelRecordId","_multiSelectMode","_hasSelectedRecords","_hasBarcodeFields","_enableBulkScan","_querySubjectId","_showSearchByLinkedDocuments","_isParentLinking","_showSearchToolbarIcons","_searchAlternativeEntitiesShow","_filterByMainRelationClass","ByConditions","_filterByMainRelationTooltip","isRootForFormDesigner","_recordTypes","_recordType","_typeToggleClass","_recentRecords","_relatedTablePk","InitDuplicatesMod","SaveChangesDeduplication","InitAlternativeSubjectsMod","_duplicatesVisible","_duplicatesTypes","_duplicatesType","duplicatesTypes","_duplicatesToggleClass","_hasTwoSelectedRecords","AlternativeSubjectsToggle","_alternativeSubjectsType","_alternativeSubjectsTypes","alternativeSubjectsType","_alternativeSubjectsToggleClass","classToggle","SearchRecords","GetFilterByAlternativeEntities","selectedMainEntityId","altEntity","ToggleType","DuplicatesToggle","HandleFilters","_recentRecordsSubscription","_recordTypeSubscription","_duplicatesTypeSubscription","_selectedSearchModeSubscription","_searchGroupSubscription","_enableFilterSubscription","_searchByMainRelationTypeSubscription","_searchTimer","UnHandleFilters","InputChange","GetAlternativeIconTemplateName","GetSearchIconTemplateName","ToggleToolbarIcons","ToggleAlternativeEntities","GatherSettings","LoadSearchScreenModel","showParams","altEntityId","getSearchScreenPromise","GetScreenModel","baseEntity","BaseEntity","TableSecurityRights","AllowDeduplicationMode","controlAltEntities","GetRecordAltEntities","altEntities","altEntitiesData","SetRecordAltEntities","GenerateActions","AddSearchGroups","isBackLinkEnabled","HasBarcodeFields","RestoreSearchSettings","CheckAddQueryButton","shouldOpenScreen","SetOptionClass","IsGroupItem","GetSearchParams","searchGroupValue","lifeStatusId","recentRecords","recordTypeValue","searchModeValue","searchByRelationsValue","filterState","enableFiltering","currentRecordType","Recent","Favorites","RecentRecords","SetRecentRecords","ToggleEnableFilterValue","HasRecent","HasFavorites","SearchClick","StopBulkBarcodeScan","StartBulkBarcodeScan","_isBulkBarcodeScanning","DivideRecordsPerPage","popupHeight_Global","isSearchPagination","searchPaginationBoxHeight","searchToolbarHeight","recalculationMarginPadding","staticSpace","calculatedAltSpace","reservedSpace","SearchByAltEntity","SelectedAltEntityId","RefreshScreenAfterAltEntityChange","isFromBarcode","GetSearchRequestModel","SelectDuplicatesRecord","_nameFieldName","NameField","UpdatePaginationInfo","clickHandler","UnBlockSearchScreen","areQueriesFound","startRecordNumber","endRecordNumber","BlockSearchScreen","searchResultGrid","rowClick","GetRowValue","isUserAllowed","existsRecord","OneSelect","isDuplicatesSelected","existsDuplicatesRecord","SelectRecordFromRecent","userVarsRecordModel","SelectRecordType","InfoSearchValueTooltip","searchGroupName","enablingFiltering","SetSearchParams","AddingRecordAllowed","searchGroups","isSimpleLifeStatus","SortSearchGroups","searchGroupsMapped","Archive","searchGroupsIndexes","ind","nextInd","SearchByMainRelation","FindSearchGroupName","searchGroup","rowValues","Merge","InitLockWithRequestFromDeduplication","SearchField","SearchGroup","FilterByAlternativeEntities","SearchScreenStore","GetRecentAndFavourites","SearchStore","TYPES_FOUND","CANCELLED","ExampleRecordModel","KindModel","CreateDashKind","TableTypeModel","TableTypesModel","ShowTypeSelector","enabledTypes","moreThanOneType","moreThanOneKind","Kinds","withRoot","allowExamples","onlyTypes","_parentTypeId","_withRoot","_selectedExample","_selectedKind","_kinds","_examples","_noExample","_allowExamples","_isSaveDisabled","_isOkButtonEnabled","_onlyTypes","_showKindSelector","_showExampleSelector","selectedKind","examplesByType","ExampleRecords","F_Kind","examplesByKind","typeToMatch","firstEnabledType","enabledKinds","KindName","Examples","SelectedType","SelectedKind","SelectedExample","SetButtonDisable","enabledTypesExist","SelectExample","GROUPS","SEARCH_PARAMS","TABS_PARAMS","PLANNER_TABS_PARAMS","GRID_VIEW","GRID_PRIORITY","PATH_RUNNER_SETTINGS","KANBAN_LAST_SELECTED_TYPE","KANBAN_TODO_SELECTED","KANBAN_VIEW","FINANCIAL_DASHBOARD_GRID_VIEW","BASKET","DB_STATUS","USER_SELECTION","LAST_SYNC_TIME","ALT_ENTITIES","GRID_COLUMN_FILTERS","LOAD_CHART_STATES","SCHEDULER_VIEW","SCHEDULER_SUBJECT","SCHEDULER_DATE","LIFE_STATUS_ADVANCED_MODE","AGENDA_DATE","PLANNER_PAGE","PLANNER_LEVEL","KANBAN_BOARD_ACCORDION_GROUPS","entityWithRecords","GetLastDbChoosen","databaseDesignerDbId","entityParams","activeTabPageData","RemovePreselectTabData","GetByEntityId","groupRecords","entityRecords","recordParams","SetLastDbChoosen","SetLoadChartState","loadChartStates","GetLoadChartState","gridColumnFilters","filteredList","filters","currentFilter","isFilterAlreadyExists","existedFilter","searchMode","portletsSettings","GetSettingsColor","isKanbanTodoSelected","kanbanTodoSelectedValues","gridViewId","gridViews","SetSettingsColor","syncItervalTime","UpdateUserVars","_syncInterval","toISOString","GetSettingsCustomThemeName","GetSettingsCustomThemeColor","GetSettingsCustomColor","GetSettingsLayoutMode","GetSettingsSidebarBorders","SetSettingsSidebarBorders","sidebarBorders","SetSettingsLayoutMode","SetSettingsCustomThemeName","SetSettingsCustomThemeColor","customThemeColor","SetSettingsCustomColor","customColor","RestoreFromJson","jsonString","objValue","rememberMe","allSelections","screeId","userSelectionsData","currentSelection","AddToGroup","RemoveFromGroup","groupValues","entityPair","newGroup","recordIdItem","recordData","GetMaxLimitConst","IsInGroup","entityData","entityRecordUpdated","basketEntityId","gridEntityId","basket","basketRecordId","gridView","ariaExpanded","accordionGroups","accordionGroup","accordionRecord","pageParams","levelParams","schedulerDate","GetSchedulerDate","SetAdvancedLifestatus","GetAdvancedLifestatus","agendaDate","UserVarsStore","MessageDto","PromptDto","AssistantApi","CreateThread","AssistantMessage2","AssistantMessage","GenerateStructure","GeneratedTables","database","_database","cleanNode","applyBindings","OkBtnClick","AIDBStructure","AITableDefinition","AIFieldDefinition","AssistantModes","_welcomeText","_isShowApplyButton","_userInput","_messages","observableArray","_chatHistory","computed","SerializeDbStructure","prompt","ChatHistory","welcomeMessage","_threadId","dbStructure","LinkTables","aiTable","BuildTable","aiField","SendMessage","newMessage","messages","threadId","CreateTables","ShowTablesModal","generatedTables","FormatMessage","BaseModelClass","_lifeStatusName","BaseModel","RegenerateGuid","ClusterSettingsModel","_leftTypeId","_leftTypeGuid","_rightTypeId","_rightTypeGuid","_leftStatusId","_leftStatusGuid","_rightStatusId","_rightStatusGuid","_relationTypeId","_relationTypeGuid","_clusterMode","LeftTypeId","LeftTypeGuid","RightTypeId","RightTypeGuid","LeftStatusId","LeftStatusGuid","RightStatusId","RightStatusGuid","RelationTypeGuid","_relationTypeValueId","_relationTypeValueGuid","RelationTypeValueGuid","ClusterMode","FromJSONArray","clusterSettingsList","clusterSettings","toJSON","newLeftTypeId","newRightTypeId","newLeftTypeGuid","newRightTypeGuid","newLeftStatusId","newRightStatusId","newLeftStatusGuid","newRightStatusGuid","CollectionModel","onlyModified","GetItemBy","SetItemBy","SetItemsToDeleteBy","SetItemsToDelete","DeleteItemsBy","DeleteItemBy","GetItemsBy","GetItemsWhereIn","GetItemByProperties","propertyValuePairs","allPropertiesMatched","pairIndex","propertyValuePair","GetItemsByProperties","OrderBy","curr","ForEach","DatabaseModel","_DataBaseId","_sortPosition","_maxSort","_linkTables","_deletedLinkTables","_deletedSubTables","_isUpdateDatabaseRequired","GetAllFields","fieldsCollection","GetTable","entityTable","subTable","SubTables","lookupTable","lookupTables","DatabaseId","LookupTables","ExampleStatuses","IsUpdateDatabaseRequired","SubTypeId","leftTable","K1TableId","rightTable","K2TableId","K1TableGuid","K2TableGuid","DeletedLinkTables","DeletedSubTables","allFields","matchingFields","Matching","currentEntityMatching","CurrentEntity","MatchSubjectGuid","MatchFieldsGuid","linkedEntityMatching","LinkedEntity","MatchSubjectId","MatchFieldsId","matchingField","_matchingModes","MatchingModes","GetLinkTableByTableGuids","k1Guid","k2Guid","GetSubTable","subTables","_isPrimaryKey","_isSystem","_isIndexed","_isVirtual","_isGlobal","_isOptional","_isUnique","_flags","_calculatedExpression","_formatId","_tableFiels","_linkEditorVisibilitySettings","_defaultValue","_hasDefaultValue","_iconType","_iconId","_iconImage","_translationsMemo","_oldName","_oldLifeStatusName","_propertyFieldId","_propertyFieldGuid","_propertyModeId","_matching","_clusterSettings","_allowCreatingRecords","_filterSubTable","_filterSubTableFieldId","_filterSubTableFieldGuid","_filterSubTableKseq","_referenceGuid","_isEditEnabled","_hyperlinkEntity","_hyperlinkEntityGuid","_hyperlinkPkey","_hyperlinkPkeyGuid","_filterByField","_filterByFieldGuid","SortDescription","SequenceValue","isFieldRestored","isFullDateTime","isLongTime","IsIndexed","IsGlobal","IsOptional","IsOptioanl","IsUnique","CalculatedExpression","FormatId","IconImage","PropertyFieldGuid","PropertyModeId","LinkEditorVisibilitySettings","ClusterSettings","TableFiels","FilterSubTable","FilterSubTableFieldId","FilterSubTableFieldGuid","FilterSubTableKseq","ReferenceGuid","HyperlinkEntity","HyperlinkEntityGuid","HyperlinkPkey","HyperlinkPkeyGuid","FilterByFieldGuid","_sortDescription","IconType","FitlerByFieldGuid","local","fieldList","CreateNewField","fieldConfig","newField","CreateDefaultTranslations","CreateDefaultMemoTranslations","_typeGuid","kinds","kindsList","fieldIndex","ShowModeId","_k_Language","_shortName","_flagBase64","_fileType","_attachment","lang","_exampleId","ExampleId","DisplaySort","lifeStatusesList","lifeStatusModel","_tableGuid","_targetTableId","_targetTableGuid","_lookupFieldId","_lookupFieldGuid","TableGuid","TargetTableGuid","LookupFieldGuid","linkEditorTabSettingsList","linkEditorVisibilityModel","LinkEditorVisibilityModel","_leftKindId","_leftKindGuid","_rightKindId","_rightKindGuid","_fullWidth","_fontStylesId","LeftKindId","LeftKindGuid","RightKindId","RightKindGuid","FontStylesId","newLeftKindId","newRightKindId","newLeftKindGuid","newRightKindGuid","linkEditorVisibilityList","LinkTableModel","_k1TableId","_k2TableId","_k1TableGuid","_linkListRelations","_reversePassSecurity","_oneParent","_linkEditorTabSettings","_memoTranslations","tableList","ReversePassSecurity","OneParent","LinkListRelations","LinkEditorTabSettings","tableFiel","TableTypeGuid","CreateMemoTranslations","_k2TableGuid","RelationTypeFiltersModel","_kseq","filtersCollection","RelationTypeValueModel","_nameTranslations","_reverse","_reverseTranslations","_isNewSort","valuesCollection","ReverseTranslations","IsNewSort","TableBaseModel","_lastLifestatusName","_attachedControlTypes","_dependsOnFieldName","_dependsOnFieldId","_dependsOnFieldGuid","_dynamicFields","_connectionString","_trigger","_sequenceType","_isMergeView","IsRestored","EntityColor","SubjectAreaId","IsLifeStatusModified","ConnectionString","SequenceType","IsMergeView","_databaseId","_subjectAreaId","_onDelete","AttachedControlTypes","GetMaxSortGroup","sortGroup","FieldSortGroupOptions","Item1","Item2","GetCustomFields","GetFieldsBySort","minSort","maxSort","TableFieldModel","_valTableId","_valTableGuid","_valFieldId","_valFieldGuid","_search60","_allowEdit","_dependsOnId","_dependsOnGuid","_filledById","_filledByGuid","_tableTypeGuid","_aliasDefinition","tableFields","tableFieldList","tableField","tableFieldModel","ValTableGuid","ValFieldGuid","Search60","AllowEdit","FilledByGuid","DependsOnFieldId","DependsOnFieldGuid","AliasDefinition","screensJson","_enableDefaultSecurity","_subTypeId","_subTables","_parentId","ParentGuid","UniqueParentGuid","UniqueGuid","EnableDefaultSecurity","LIfecycleLinkDto","LifecycleDto","_parentGuid","_treeLevel","_instancingMaximum","_uniqueGuid","_uniqueParentGuid","_lifestatusDesignObject","_values","_filters","TypeRestrictionModel","_currentKindId","_savedLifestatus","typeList","existsModel","LifestatusDesignObject","RoleLifes","Filters","CurrentKindId","IsLifestatusModified","lifeStatusItem","LifeStatusGuid","GuidStepFrom","GuidStepTo","_typeNameMaxSize","_translation","_roleId","_roleGuid","TypeGuid","RoleGuid","restrictionsCollection","SetLocale","initialDate","toFormat","_format","outputDate","ConvertToDefaultFormat","initialFormat","separator","formatted","Intl","DateTimeFormat","GetISODateFormat","formatEnum","returnFormatWithLocale","extendedModel","FieldTypeFormat","reverseShift","_tzm","timeZoneShift","correctDate","HelpBookStore","GetScreens","GetEntityInfo","GetTypeInfo","GetScreenInfo","GetControlInfo","noDescription","isActive","showFullDescription","previewText","ToggleDescription","ActivateDescription","isStatusFlowActive","BuildLifecicleDesignerFlow","selectedEntityTypes","selectedEntityTypesList","selectedEntityName","selectedEntityTranslatedName","selectedEntityDescription","selectedEntityHasData","selectedEntityHasNoData","HelpDescription","FetchData","HelpStatusFlow","_selectedEntityId","skipBlock","selectedTypeHasData","selectedScreenHasData","selectedEntityScreens","showSelectedScreenData","skipBlockUi","HelpForm","directScreen","selectedScreenSubForms","directTargetedScreen","selectedScreenName","selectedScreenDescription","isBar","GetControlTranslation","ControlComponents","IterateOverNestedControls","dataFetched","SelectControl","MapToControlModel","currentLanguageModel","CanBeRendered","controlComponent","CreateControlComponent","controlTranslation","subFormsNumber","actionBar","mainBlocks","selectedControlSubControls","selectedControlHasData","selectedControlName","selectedControlTypeName","selectedControlDescription","controlComponents","subControlsPresent","controlTranslatedName","typeModel","ActiveHelpScreen","EntityScreen","SubFormControl","SelectedScreenModel","LifecycleDesignerStore","GetLifeCycleHelpData","dataRequest","LifecycleDesignerFlow","_deletedSteps","_deletedLinks","_halo","_freeTransform","_isAdvancedMode","_flowDesignerEl","InitJsPoint","linkPinning","snapLinks","defaultConnector","labelMove","linkMove","Circle","lifecycle","RectWithImage","LinkView","pointerdown","CellView","_dx","_dy","labelNode","removeClassNamePrefix","parentClassName","can","_vertexIdx","removeVertex","startArrowheadMove","_labelIdx","_samples","_V","connection","sample","_linkLength","getTotalLength","addVertex","_commandManager","CommandManager","InitPaperScroller","WINDOW_RESIZE","MovePaperScrollerToStartNode","AddStartCell","paperOrigin","visibleArea","getVisibleArea","contentOptions","allowNewOrigin","paperHeight","setCursor","paperWrapper","ScrollFixer","MOUSEWHEEL","PaperZoomOnScroll","oldScale","Json","InitStepData","InitLinkData","stepJson","OnLifestatusSetTrigger","Packages","DwPackages","NoActionNodeDisable","DateElapsed","DeadlineElapsed","translatableName","NO_ACTION","findViewByModel","linkJson","nextAllowed","NextAllowed","approvalId","ApprovalId","stepsScreenId","testCondition","TestCondition","labelMarkup","YESNO","STEPSSCREENICON","VALID","NOT_VALID","InitAsNextAllowed","GREEN","SetArrowColor","LoadDataType","_canvasTypes","_allowInstantiation","helpButtonPressed","helpButtonPressedTime","screenIsActive","isClosed","HelpEntity","lifestatuses","HelpScreens","HelpControl","HelpType","dataIsRendered","NoDataPlaceholder","activeEntity","activeEntityGroup","canReturn","Designers","designers","SubjectAreaName","isOpen","CleanHelpBook","ExitHelpCursorMode","entityList","acc","entitiesGroup","subjectAreaId","subjectAreaIconType","SubjectAreaIconType","subjectAreaIconId","SubjectAreaIconId","subjectAreaIconImage","SubjectAreaIconImage","subjectAreaIcon","SubjectAreaIcon","subjectAreaName","ShowWithUserMenu","EntityGroupClick","entityGroup","dblf1Key","isSelectedScreen","EnterHelpCursorMode","GetScreenTemplateName","GetFormTemplateName","GetDescriptionTemplateName","GetStatusFlowTemplateName","AppendHistory","helpEntity","GetEntityTypes","StepsCount","ToggleMenu","selectedScreenId","ShowScreenHelp","ShowEntityHelp","_timeSpan","forceExit","ClickStatusFlow","flow","LifecycleObject","isTriggersSet","deadlineElapsed","dateElapsed","dwPackages","dwPackagesNames","businessRoles","BusinessRoles","isSettigsDisplays","isAnythingAttached","LockScreenStore","LockScreenModel","_history","_userManager","_currentUser","_broadcastChannel","postMessage","Relogin","_isOpenedFlag","$preloader","ColumnTypes","NewRecordModel","TranslationValueModel","GetDefaultData","defaultData","InitScreen","System","defaultValueModel","dv","SetControlData","screenDataModel","GetScreenDataModel","fieldValuePair","translationSplit","controlIndex","GetMetadata","retrieveArgs","getDataResult","DeleteRecords","deleteArgs","deleteResult","saveArgs","GetLookupRecordsCount","lookupFieldId","usePagination","GetEntity","GetRelatedTables","lookupId","BREADCRUMBS_HYPERLINK_TOPIC","BREADCRUMBS_NEW_VALUE_TOPIC","BREADCRUMBS_FIELD_RECORD","BREADCRUMBS_UPDATE_RECORD_NAME","getScreenName","BreadcrumbIndex","_recordsMap","_currentHistoryState","_isEnabledInSettings","_isScrolledToRight","_field","OnItemClick","OpenBreadcrumb","CheckScroll","recordsMap","historyState","recordsBaseArray","CleanRecords","LookForPreviousScreen","previousRecord","getRecordsBaseArray","DailyStuff","MAX_SAFE_INTEGER","TreeNodeModel","NestedNodes","IconClass","GetLookupIcon","li_attr","CanExpand","TreeModel","NodesJson","_$container","expandedNode","UpdateTree","NodeModel","GetRootNode","rootNodes","nodeModel","close_all","rootNodeModel","AddRootNode","LoadChildrenFor","AddNewNodes","HasLookups","newNode","treeRoot","get_node","emptyLookupValue","DateColumnEditor","GetColumnData","ToString","DateTimeColumnEditor","BinaryColumnEditor","TimeColumnEditor","TimeSpanColumnEditor","GuidColumnEditor","CurrencyColumnEditor","DocumentColumnEditor","FlagCheckColumnEditor","ImageColumnEditor","IntegerColumnEditor","PKeyColumnEditor","MultiSelectColumnEditor","_currentOwner","_optionsLoaded","_editModeEnabled","_availableOptions","CurrentItems","DisplayedItems","CurrentOptions","_changesMade","CurrentOwner","DisableEditMode","ShowOptions","EditModeEnabled","columnData","FormatLabel","DisplayedOptions","AvailableOptions","searchScreenIfNumber","EnableEditMode","ShowDropdown","UpdateValues","recordsData","displayField","pkField","TableStruct","PkId","UpdateOwnerValue","groupSeparatorRegExp","decimalSeparatorRegExp","Accept","ColorColumnEditor","Component","Convert","ToBase64Image","binaryData","EditableRowModel","dataObject","IsRecordSelected","_dataObject","IsRecordChanged","GetDbValue","GetColumn","GetFieldFormat","GetLookupClassName","GetSize","FieldSize","imageColumnName","GetHexValue","LookupColumnEditor","SelectedOptionId","currentOption","GetCurrentOption","convertedDisplayValue","GetConvertedDisplayValue","ConvertedDisplayValue","currentDisplayValue","OptionSelected","displayedValue","AcceptOption","ClearOption","IconColumnEditor","SortColumnEditor","SystemFields","TextColumnEditor","TypeColumnEditor","YesNoColumnEditor","MemoColumnEditor","showbuttons","NonEditableColumnEditor","NonEditableImageColumnEditor","DecimalColumnEditor","columnInfo","PasswordColumnEditor","ColumnEditorFactory","_systemFieldToEditor","F_DICTIONARY","REPLICATIONID","_columnTypeToEditor","columnEditorFunction","EditableColumnModel","fieldTableId","_nameTranslation","_fieldTableId","_columnEditor","HasTranslations","LookupGridModel","BuildConfig","prevCurrentValue","CurrentPage","AllRecordsCount","AvailableRecordsPerPage","Display","SelectedRecordsPerPage","newSelectedValue","PagesCount","IsPrevPageAvailable","IsNextPageAvailable","IsAnyRecordChanged","IsAnyRecordSelected","AllRecordsSelected","selectAllRecords","dataTable","SelectedRecordsId","ChangedRecords","AddColumn","selectedRowIndex","selectedRowSortValue","upperRowIndex","upperRow","upperRowSortValue","lowerRowIndex","lowerRow","ShowFirstPage","ShowPrevPage","ShowNextPage","ShowLastPage","LookupEditor","_isAllRecordsSelected","_treeModel","_gridModel","_isTreeVisible","_isGridVisible","_isAnyRecordSelected","_newRecordScreen","_cdTablesId","CdTablesEntityId","treeModel","OnReady","ShowSearchForm","LoadRelatedTables","LoadEntity","SelectOrDiselectRecords","_lookupTableModel","newRecordScreen","changedRecords","GetRecordsData","ShowSaveResult","ShowGridForcibly","selectedRecordsId","lookupTableId","DeleteRecordsFromDb","tree","treeNodeModel","lookup","UpdateGrid","GetDataForLookup","primaryKeyFieldName","SearchValue","retrievedRecordsModel","ShowGetDataForLookupResult","activeLanguesId","RenderGrid","defaultLanguageToAdd","RecordsId","ShowDeleteResult","FieldCollectionStore","GetDataRole","GetFieldCollection","selectedCollectionId","SelectedCollectionId","SaveFieldCollection","UpdateViews","Public","Disclosed","Safe","Vault","GDPR","DATA_ROLE_NAMES","PriorityManager","RestrictDowngrade","initialCalculation","highestField","isActiveType","PertableType","targetField","roleType","TypeOfType","deletedOtherFields","applyAvailability","isUnavailableField","deletedFieldsString","SortTypes","FieldTableRow","fieldRow","_fieldRow","_priorityManager","FieldTable","fieldsInitial","_fieldsInitial","_pertableTypes","PerTable","_otherTypes","Other","_fieldTableRows","BuildRowComponents","rowsModel","rowComponent","observableRowComponent","RowChanged","FCRequiredFields","CREATE_DATE","CREATED_BY","CHANGED_BY","LAST_STATUS_DATE","F_OWNER","_isChecked","_selectedDataRole","_previosSelectedDataRole","_fieldTable","_currentCollection","_currentCollectionInitial","_currentEntityInitial","_mutatedEntitiesId","_hasUnsavedChanges","_fieldCollectionStore","SelectedCollectionName","SelectedTypeName","elId","getDataRolePromise","getEntitiesPromise","GetDataRoleText","ChangeTab","fieldTable","typeIndex","ActiveTypes","initialState","mutated","CheckCollectionChanges","ChangeDataRole","confirmCallback","discardCallback","initialFields","initialTypes","pertableTypes","otherTypes","currentType","isCurrentType","allTypes","Available","saveModel","onFail","RevertChanges","Messsage","mutatedEntities","mutatedEntity","MutatedFields","mutatedField","noConfirm","HexColor","DesignedScreenModel","MenuAreaModel","AreaDisplayName","MenuAreasStore","RecentAndFavorites","flowFolder","_recentList","_favoritesList","_targetElem","InitRecentAndFavoritesDropdown","recentListContainer","recentListItems","listNavItem","newTarget","DestroyRecentAndFavoritesDropdown","MenuQueriesStore","GetMenuQueriesMetadata","MenuQueries","_renderQueryTargetId","_menuQueries","InitMenuQueriesDropdown","menuQueriesMetadata","DestroyMenuQueriesDropdown","queryMetadata","queryScreen","queryScreenId","_showSearchButtons","_areas","_menuQueriesTableId","_recentAndFavorites","_recentAndFavoritesTableId","_rootScreen","reloadScreen","areasList","GetAreaByEntityId","GetScreenByEntityId","OpenedTypeFlowFolder","_openedTableTypeFlowFolder","OpenSubMenu","menuAreaModel","_selectedArea","ShowQueriesDropdown","isRecentAndFavoritesDropdownBox","sidebarClosed","menuQueries","ShowRecentAndFavoritesDropdown","recentAndFavorites","ShowHideSearchButtons","addButtons","CanvasDesignerPage","controlsParam","_CanvasDesignerControl","CanvasDesignerControl","FunctionDesignerPage","_FunctionDesignerControl","FunctionDesignerControl","CyberConfigManagerViewModel","Databases","DatabaseViewModel","CurrentDb","databaseModel","CyberConfigValidateForm","_$form","_$errorSummaryBlock","_$errorSummary","_$inputFields","errorElement","errorClass","focusInvalid","DBServerName","errorPlacement","CyberConfigStore","CreateConfig","UpdateConfig","DeleteConfig","AdminPage","CyberConfig","_backupDb","_dbWatcher","_isOk","_validationErrors","_hasValidationErrors","_isCreateMode","validateForm","_validateForm","DatabaseChanged","OriginalName","ChangeCurrentDatabase","errorValue","DeleteClick","ResetClick","GetErrorPage","GetCyberConfigForm","GuestPageStore","UploadImage","RemoveImage","_showRemove","_defaultImage","GetImageUrl","_maxImageSize","hostname","EnvironmentsPageStore","CreateEnvironment","CreateEnvironmentModel","_environmentName","_guestPage","_environmentsPage","TranslationEditorStore","TranslationColumns","GetTranslationTypes","TranslationCell","GetEditValue","CancelEdit","TranslationActionCell","UpdateTranslationModel","TranslationRow","actionCell","codeCell","TranslationHeader","TranslationGrid","_headers","translationColumns","actionHeader","codeHeader","nameHeader","TranslationEditorPage","recordsPerpage","_translationTypes","_selectedTranslationType","_selectedTranslationTypeId","loadTranslationsParams","loadTranslationsPromise","loadTranslationTypesPromise","searchValue","TranslationType","OnSelectTranslationType","convertedTypeId","SetSelectedTranslationType","ClearTranslationType","containerId","GuestHomePage","_imageData","GetIFrame","Detach","IsUserAllowedToEdit","securityWord","NetworkDesignerEvents","RemoteDatabaseAccessChanges","RemoteUserName","NewRemoteDatabaseAccess","NetworkDesignerStore","GetRemoteDatabases","dbs","GetRemoteDatabaseAccess","dbId","access","CreateRemoteDatabaseAccess","accessId","UpdateRemoteDatabaseAccess","RemoveRemoteDatabaseAccess","UpdateRemoteDatabaseAccessDto","CreateRemoteDatabaseAccessDto","RemoteAccessUser","RemoteDatabaseAccess","_uniqueId","_editing","_selectedUser","_remoteUserName","_saveClicked","HasError","UnBlock","ContainsData","sameUser","sameRemoteUser","ClearError","EditClicked","CancelClicked","SaveClicked","userSelected","remoteUserSpecified","DeleteClicked","ShowSearchUserScreen","RemoteDatabaseAccessData","RemoteDatabase","NetworkKey","_accessDataLoaded","_access","ContainsAccess","RemoveAccess","SaveAccessChanges","RemoveNewAccess","UpdateErrors","SaveAccess","HeaderClicked","AddButtonClicked","GetAccess","GetAccessByUniqueId","FillAccess","newAccessData","accessData","HasDuplicate","SetAccessError","CommitCreateAccess","CancelRemoveAccess","CommitRemoveAccess","NetworkDesignerMappings","MapToRemoteDatabases","databasesDto","dbDto","remoteDatabase","MapToRemoteDatabase","databaseDto","MapToRemoteDatabaseAccess","accessDto","NetworkDesigner","_databases","GetDatabaseAccess","RemoveDatabaseAccess","SaveDatabaseAccessChanges","CreateDatabaseAccess","GetDatabases","accessChanges","BoldBISettings","BIStore","GetItems","GetToken","BoldBiDesignerPage","_dashboards","_selectedDashboard","_showEmbedLink","_showFullScreenButton","iFrames","_dashboardContainer","LoadDashboardList","MessageListener","SubscribeSelectedDashboard","_selectedDashboardSubscription","RenderDesigner","UnSubscribeSelectedDashboard","isRenderDesigner","selectedDashboardId","dashboard","$iframe","frameDoc","RootUrl","SiteIdentifier","writeln","ShowEmbedLink","FullScreen","requestFullscreen","webkitrequestFullscreen","webkitRequestFullscreen","mozRequestFullscreen","mozRequestFullScreen","SpaceStatusDto","StatusDto","ServiceStatusDto","ServiceStatus","EnvironmentDto","AdministrationStore","GetSpaceStatus","GetServiceStatus","GetEnvironments","MarkForDeletion","databaseId","UnmarkForDeletion","SpaceStatus","_statuses","_environments","_environmentsWithoutChanges","_searchText","ParseDate","dateString","environmentDto","aValue","bValue","aDate","bDate","localeCompare","AdministrationPage","_spaceStatusTab","_serviceStatusTab","_systemsTab","ShowSpaceStatus","ResetTabs","ShowServiceStatus","ShowSystemsStatus","NavigationTypes","DictionaryComparisonStore","environment","DictionaryComparisonPage","_selectedEnvironment","_selectedDatabase","_comparisonSuccessMessage","_isEnableToCompare","CompareDatabases","comparisonName","environments","host","_pageBodyContainerId","_menuAreas","_openedScreens","CashedScreen","_isDesignersAreaActive","_activeDesignerMenuItem","_screenStates","authenticated","_enableDesignerMenu","_enableLookupEditorMenu","_enableCdToolkitMenu","_enableDatabaseDesignerMenu","_enableFieldCollectionDesignerMenu","_enableFormDesignerMenu","_enableCanvasDesignerMenu","_enableNetworkDesignerMenu","_enableFunctionDesignerMenu","_enableCyberConfigMenu","_enableTranslationEditorMenu","_enableBIDesignerMenu","_enableAdministrationMenu","_pathRunnerRefreshed","_enableDictionaryComparisonMenu","_isRecordRetired","_isProductfruitsInitalized","_enableSystemMenu","GoToConsultScreen","GO_TO_EDIT_SCREEN","GoToEditScreen","applicableTypes","typeIsApplicable","HandleScreenClosedEvent","_currentScreen","ChangeTableTypeFlowFolder","ClosePopupScreens","lastOpenedScreen","ShowFormDesigner","ShowCanvasDesigner","PushState","ShowPortlets","baseScreen","SetNewTitle","RestoreMenuState","MobileVersion","InitProductFruits","Adapter","_popState","IsHomeScreenType","homeScreen","GetHomeScreenType","GoToHomeScreen","homeScreenName","ShowStaticScreen","HandleUrl","pathname","toLocaleLowerCase","stateData","_currentSate","StateIsValid","NavigationType","BackToScreen","GetMyContact","RestoreMenuAreaState","areaScreen","SwitchMenu","menuBlock","GetFieldRecord","ResetScreenStyle","ScrollToAgendaControl","agendaControlInTab","isFound","agendaControl","rowList","isHyperLink","previousScreen","breadcrumbIndex","ResetZIndexValueAndReleaseAllLocks","ShowScreen","GetEditScreenWithTypeTransformation","triggeredFromMenu","screenRecordId","getScreenPromise","resetProperties","ResetStyleProperty","arePortletsShown","ShowLookupEditor","ShowDatabaseDesigner","ShowNetworkDesigner","FieldCollectionDesigner","ShowFieldCollection","CdToolkit","ShowCdToolkit","TranslationEditor","ShowTranslationEditor","ShowCyberConfigManager","BIDesigner","ShowBIDesigner","Administration","ShowAdministration","saveState","FormDesignerPage","pageBodyContainerId","DatabaseDesignerPage","ShowDictionaryComparison","rowsList","HandleGoToRecordScreenError","followUpScreen","editfollowUpScreen","screenDoesNotExistError","openedScreenIndex","hasRoles","Dep","SBIDesignerString","IsLicenseServer","InitMobileLayout","HidejsPlumbConnections","jsPlumb","getConnections","deleteConnection","HideGuestHomePage","_guestHomePage","additionalOptions","newState","stateIndex","PUB_SUB_EVENTS","ThemeBuilderStore","uiSettingsRequestModel","_$themes","_$themesContainer","_$saveProfileBtn","_themeContent","_isColorSelectorsInit","_colorPickersObject","_colorSelectors","_previewTemplate","_colorThemes","_layoutModeDropDown","_sidebarBorders","_defaultThemes","_defaultThemeName","_defaultThemeColor","_selectedCustomThemeSettings","_haveChanges","_userIsAllowedToChange","LockToDefault","_toggleThemeSwitcher","InitColorSelectors","colorSelector","CacheElements","_sidebarPos","_sidebarStyle","_sidebarOption","SetThemeSquares","Custom1","Custom2","Custom3","Custom4","Custom5","ApplyCurrentTheme","setting","Transparent","RgbToHex","InitDropdowns","pickerApplying","isHex","zipped","zippedStyles","BuildCustomThemeArray","bodyHeader","themeSquare","defaultThemeName","colorSetting","layoutSetting","layoutBorders","sidebarPos","sidebarStyle","AddStyles","rule","propertyValueToHex","transparentValue","propertyValueHex","HexToRgb","ThemeSwitcher","themeName","UncheckTheme","ThemeStatus","ShowPreview","modalPreview","transparent","hexModel","typeConfiguration","_logo","_expirationDate","_activeUsersNumber","_licenseUsersNumber","_activePortalUsersNumber","_licensePortalUsersNumber","_activeGDPRUsersNumber","_licenseGDPRUsersNumber","_activeConnectUsersNumber","_licenseConnectUsersNumber","_activeRemoteUsersNumber","_licenseRemoteUsersNumber","_activeLimited1UsersNumber","_licenseLimited1UsersNumber","_activeLimited2UsersNumber","_licenseLimited2UsersNumber","_activeLimited3UsersNumber","_licenseLimited3UsersNumber","_maxRole","_isCloseVisible","_defaultLogo","_maxLicenseImageSize","MapData","ExpirationDate","ActiveUsersNumber","LicenseUsersNumber","ActiveConnectUsersNumber","LicenseConnectUsersNumber","ActiveRemoteUsersNumber","LicenseRemoteUsersNumber","ActiveLimited1UsersNumber","LicenseLimited1UsersNumber","ActiveLimited2UsersNumber","LicenseLimited2UsersNumber","ActiveLimited3UsersNumber","LicenseLimited3UsersNumber","ActivePortalUsersNumber","LicensePortalUsersNumber","ActiveGDPRUsersNumber","LicenseGDPRUsersNumber","UserMaxRole","base64ImageData","MaxLicenseImageSize","changeHandler","PersonalSettingsInstance","ChangeHandler","PersonalSettingsModel","PersonalSettingsUpdateModel","PersonalSettingsStore","GetPersonalSettingsModel","UpdateGlobals","_models","_saveButtonLabel","changesHadler","dataToUpdate","languageControl","NotificationDesignerStore","NOTIFICATION_ACTIONS","GET","Weight","_notificationActions","_isListNotEmpty","_initialEntities","convertDecToViewValue","decimal","maxBinLength","binValue","binValueLength","actionsMapped","ChangeSettingsValue","CheckChangesExistance","binaryValue","decValue","changedElementsCount","ProfilePasswordModel","ProfileCardViewModel","ProfileData","NameTitle","FirstName","PasswordData","RetypeNewPassword","ProfileCardModel","ProfileCardStore","ChangePassword","_toggleCurrentPassword","_toggleNewPassword","_toggleRetypeNewPassword","_userImage","GetDefaultUserImage","profileCardModel","MapProfileData","retypeNewPassword","TogglePassword","SaveButtonClicked","passwordModel","passwordData","ProfileImageClicked","profileData","MiddleName","AvatarData","RemoteDatabaseConnection","connected","_connected","Connected","RemoteDatabaseConnectionMappings","MapToRemoteDatabaseConnections","MapToRemoteDatabaseConnection","RemoteDatabasesStore","GetConnections","connections","GetConnectionUrl","connectionUrl","SetConnected","GetRemoteDatabaseConnectionUrlDto","ConnectionId","SetConnectedDto","DisconnectDto","RemoteDatabases","_connections","_anyConnection","_anyConnected","Connect","ConnectToAnotherDb","ConnectToSeparateEnv","connectionsDto","GetConnectionUrlPromise","_enabledLicenseHolder","_enabledNetwork","_themeBuilder","_licenseHolder","_personalSettings","_notificationDesigner","_profileCard","IsRemote","_remoteDatabases","LicenseHolder","PersonalSettings","ThemeBuilder","ProfileCard","NotificationDesigner","_false","_deduplicationSubjects","_appliedFastFilters","_minimalMatchRate","_matchRecordFieldId","_defaultRangeFromValue","_selectedRangeFilterValue","_recordsPerpage","_isDeduplicationEnabled","_isMatchAllEnabled","_matchStatus","StartCheckStatusTimer","MinimalMatchRate","totalRecords","deduplicateConfirmText","MinimumRate","RefreshMatchStatus","_checkStatusTimer","ionRangeSlider","onFinish","UserMenuStore","WikiJS","_src","LoadFinished","__","targetNode","observer","onbeforeunload","GUEST_USER_NAME","IsDeduplicationAllowed","_showMySettings","_authManager","_showLoginPopup","_userName","_showWiki","CheckDeduplicationAllowance","isInRoleUs","HasAnyType","userImage","UserImage","IsStoppedExitApp","isStoppedExitApp","Logout","GetShowLoginPopup","MySettings","profilePage","AboutPage","Downloads","HelpPage","helpBook","ShowReportIssueModal","contactId","contactScreenMetadata","ContactScreenMetadata","TranslatedEntityName","LockSession","Wiki","_formDesignerControl","SetScreenId","FormDesignerControl","CELL_SIZE","ENTITY_COLORS","MAIN_ENTITY","RELATED_ENTITY","AGGREGATE_FUNCTIONS","SUM","AVG","COMPARISON_OPERATOR_LABELS","NotEquals","IsNull","IsNotNull","Like","GreaterThen","LessThen","GreaterOrEqual","LessOrEqual","NotIn","NotStartWith","EndsWith","NotEndWith","NotLike","JoinTypes","UseMainCondition","LinkDirectionCondition","ConditionOperators","ComparisonOperators","ConditionValueTypes","NO_ACCESS","AFTER_RENDER","ENTITY_SELECTED","ENTITY_UNSELECTED","LOOKUP_ENTITY_SELECTED","LOOKUP_ENTITY_UNSELECTED","REFERENCE_LOOKUP_ENTITY_SELECTED","REFERENCE_LOOKUP_ENTITY_UNSELECTED","REFERENCE_ENTITY_SELECTED","REFERENCE_ENTITY_UNSELECTED","IS_ITERATOR_CHANGED","CREATE_SUB_QUERY","REMOVE_SUB_QUERY","DRAG","DRAG_STOP","MOUSE_OVER","JOIN_TYPE_CHANGED","COLUMN_SELECTED","ConcreteEntityModel","GetLinkTable","EditQueryModel","EntitiesRelationships","RelationTypeModel","RelationTypeTitle","GetRelationTypes","Average","_fieldIcon","GetIconModel","FieldTypeIcon","FieldTypeIconImage","FieldTypeIconType","FieldFormatIcon","FieldFormatIconImage","FieldFormatIconType","RelatedEntitiesModel","TableSecurityUnitModel","autoserialize","NewQueryDto","NewQueryStore","UpdateQueryStore","PRIORITY_LIST","minPriority","FieldInfo","IsTotal","IsCount","IsSubTotal","IsAverage","EntityGroup","_displayPriorityList","EntitiesGroups","_basicMode","AddEntity","UpdateSortPositionValues","StartOrder","StopOrder","CheckTotal","CheckCount","CheckSubTotal","CheckAverage","CheckWrapped","CheckGroup","UpdateFieldList","formatField","TableViewConfig","ExpressionModel","_expressionModel","DoubleScroll","wrapper1","wrapper2","divScroll","UpdateFields","joins","IsSubQuery","GetAllQueryEntitiesFromJoin","DELETE_LIFESTATUS","FieldListMenu","_queryEntityModel","_isEnableSubQuery","_isInSubQuery","IsAllSelected","SelectedColumnsCount","_enableLeave","statusName","GetTemplateHtml","RemoveColumn","queryColumnModel","DraggableHelper","_draggAppendTarget","Drag","AppendTo","$parentNode","$jboxContent","styling","CreateSubQuery","RemoveSubQuery","IsInSubQuery","IsEnableSubQuery","FieldListItem","EntityListMenu","isIterator","referenceField","_referenceField","SelectedEntitiesCount","SetIterator","AddItems","ReferenceTitle","ReferenceFieldId","ReferenceField","SelectEntityItemById","itemToSelect","SelectReferenceItemById","referenceFieldId","SelectLookupItemById","SelectReferenceLookupItemById","referenceLookupFieldId","SelectedItemsCount","IsEnableUncheck","Lifestatus","MouseLeave","EntityListItem","isEnableUncheck","referenceLookupField","_lookupField","_referenceLookupField","_isEnableUncheck","ItemSelectedTriggerName","ReferenceFieldName","ItemUnSelectedTriggerName","IsReferenceLookup","IsReference","ElementZIndexManager","ToTop","JoinTypeImages","RightJoin","InnerJoin","OuterJoin","JoinOptionsMenu","joinType","useMain","enableUseMain","linkDirection","enableLinkDirection","_enableUseMain","_enableLinkDirection","_jointTypeOptions","_useMainOptions","MainTrue","MainFalse","_linkDirectionOptions","RightToLeft","_joinTypeValue","_useMainValue","_linkDirectionValue","JoinTypeValue","UseMainValue","LinkDirectionValue","EnableUseMain","EnableLinkDirection","ChangeJoinType","joinValue","ChangeUseMain","ChangeLinkDirection","_jsPlumb","JsPlumb","_joinType","_entitiesRelationships","_isSubject","_gridSubjectEntityId","_isEnableSelectSubEntity","IsEnableSelectSubEntity","_linkEntity","_selectedEntitiesCount","_isEnableDrag","_objectIndexes","ObjectIndexes","_referenceEntityListMenus","InitFieldListMenu","EnabledColumnTypes","IsLookupJoin","IsReferenceJoin","_joinTypeImage","_joinOptionsMenu","InitReferenceMenu","InitEntityListMenu","objIndex","currentIndex","metadata","referenceLookup","selectedQueryColumnModel","_fieldListMenu","relationship","makerFields","referenceMenu","RemovedDeletedReferenceMenu","entityListItem","RemovedDeletedReferencesMenus","enabledColumnTypes","_entityListMenu","tableRelatedToLookup","AddDeleteEntityToMenu","SetSelectedEntities","selectedEntities","ReferenceLookupField","lookupEntities","referenceEntities","referenceLookupEntities","IsEnableDrag","ReferenceEntityListMenus","containment","drag","repaintEverything","DragStop","GetLeftPosition","GetTopPosition","UseMainImages","QueryLinkEntity","_parent","_backBackgroundColor","BackBackgroundColor","_useMain","_linkDirection","_enabledColumnTypes","_useMainImage","QueryEntityJoin","_parentEntity","ParentEntity","_overlayWrapper","OverlayWrapper","_overlayBody","_overlayTitle","_entity","_subEntityJoins","_lookupEntityJoins","_referenceLookupEntityJoins","_referenceEntityJoins","_minWidth","_minHeight","_joinSource","JoinSource","SubQueryEntityJoin","CanvasWidth","CanvasHeight","AddJoin","RemoveJoin","AddLookupJoin","RemoveLookupJoin","AddReferenceLookupJoin","RemoveReferenceLookupJoin","AddReferenceJoin","RemoveReferenceJoin","DestroyConnections","CalculateMinBoxSize","_jsPlumbConnection","getOverlay","_overlayId","BuildConnection","joinModel","fix","connect","stub","gap","cornerRadius","alwaysRespectStubs","endpoint","anchors","paintStyle","linkEntity","BlockOverlayBodyAndTitle","UnBlockOverlayBodyAndTitle","queryEntityModel","entityJoinModel","queryLikEntityModel","CalculatePosition","entityJoinParams","subEntityJoinModel","subEntityJoinParams","subEntityJoin","entityJoin","canvasPosition","maxTopJoin","DecreaseObjectIndex","StartResize","StopResize","MinWidth","GetAllWrappers","maxLeftWrapper","maxTopWrapper","AllJoins","join_","GetAllJoinWrappers","_entityJoins","gridSubjectId","gridSubjectJoin","InitGridSubject","IsGridSubject","Join","firstJoin","ChangeOrderDirection","QuerySorting","_isMoving","sortItem","GetSortItemTemplateName","AddSortColumn","RemoveSortColumn","StartSort","StopSort","QueryResultGrid","_recordPerPage","QueryBootstrap","InitDropdownEvents","$dropdownMenu","DisplayField","FieldTypesToAggregate","_displayFields","_selectedDisplayFieldsId","_isCrossRow","_functions","_function","AggregateFunction","IsCustom","Functions","CrossValueConfig","CrossTableConfig","_crossColumn","_crossValue","_crossWrapped","_clusteredConfig","IsCrossWrapped","IsCrossColumn","CrossColumn","CrossValue","queryEntities","PrimaryKeyField","_queryEntity","_fieldMetadata","_showInMenu","_genericButtons","_primaryKeyFields","_genericButtonToFieldValue","UpdateGenericButtonList","ShowInMenu","GetQueryScreens","primaryKeyFields","GenericButtons","genericButtonConfig","UpdateGenericButtonConfig","genericButton","OptionAfterRender","TemplateScreen","_queryTypeName","_showInPortlet","IsEnabledShowInPortletCheckBox","ShowInPotlet","isEmbedded","saveToQueries","canvasQuery","_defaultQueryName","_expression","getInstance","_hasPendingChanges","_isEmbedded","_queryResultGrid","_saveToQueries","_queryBootstrap","TemplateScreenTab","CrossTableTabId","FilterTabId","TableViewConfigTabId","QueryResultTabId","QueryScreenTabId","TemplateScreenTabId","ShowQueryName","SingleColumn","_isNew","_screenFields","RemoveAllConnections","InitQueryName","SaveQuery","UpdateQuery","CreateQuery","SaveAndCloseQuery","gridSubjectEntity","updateQueryRequestModel","newQueryRequestModel","exp","_queryType","isFullScreen","GetEntitiesMetadata","EntityIds","InitQueryExpression","translationEditor","SingleColumnType","sortColumn","columnId","InitByQueryExpression","BuilderTab","ShowConnections","FilteringPage","RefreshEntityList","CrossTablePage","ColumnOrderPage","RefreshQueryData","setVisible","Scroll","QueryScreenPage","TemplateScreenPage","showRecordsLimitInput","_showRecordsLimitInput","_isForGrid","ConditionGroup","_top","GetAllConditionItems","conditionGroup","screenVariableConditions","DeserializeQueryExpressionModel","jsonQuery","isDesignTime","_isDesigntime","ConditionItems","ConditionOperator","And","Or","conditionOperator","operator","conditionItem","ConditionItem","HasMetadata","IsEnableShowParam","RaiseChangeEvent","AddRule","SelectFirstField","AddConditionGroup","queryConditionGroupModel","DeleteConditionGroup","DeleteConditionRule","SetConditionOperator","_featureTypes","LowValue","HighValue","_firstLoad","dropDownData","DocumentStatusLookup","ConditionItemField","PasteVariableDropdownTemplate","_fieldValueEditors","_operator","_comparisonOperators","_originalScreenFields","QueryEntities","ShowParam","SelectedFieldId","SelectedValueField","SelectedValueFieldId","IsEnableAddMultipleValues","IsEnableQueryBuilder","IsEnableResetButton","ShowValueEditorButton","ShowValueFieldListButton","UpdateOperators","operators","Operators","UpdateFunctions","functions","UpdateEditor","UpdateScreenFields","compatibleFields","UpdateValueFieldList","RemoveDeletedField","ValueColumn","useMultipleValues","InitPasteVariableDropdown","ShowPasteVariableDropdown","AddEditor","RemoveEditor","ConvertDateTimeValue","SPIMFeatureType","utcValue","GetSimpleTemplate","GetSPIMTemplate","PasteVariable","FormatControlField","PasteFunction","PasteQuery","ShowValueFieldList","ShowValueEditor","CONFIG","TYPES_COMPATIBILITY","_planningDate","_showParameters","_spimParameters","_spimConditions","SpimCondition","GetShowParams","GetAllConditions","autoStart","spimParams","SortSpimConditions","resizePopupOptions","conditionItems","AddSpimCondition","newGroupModel","paramModel","RemoveSpimCondition","GenericButtonModel","QueryScreenModel","CardScreenModel","RelationTypeValue","GetParentEntityFromJoin","GetAllJoins","GetAllJoinsFromJoin","queryJoin","sessionId","stopFn","recording","addCustomEvent","startRecording","stopRecording","packFn","collectFonts","recordCanvas","eventsString","timestamp","SessionStore","GetEvents","GetSessions","userTypes","UserStore","GetCurrentUser","UserRoles","UserTypes","UserDataRoles","signInPromise","RequestUser","LoadUserVars","SaveUserModel","UserVars","getUserResult","userRole","IsCurrentUserMaxRole","GetCurrentUserRoles","rolesList","LifeStatusEnum","ReadyToProcess","SubExample"],"sourceRoot":""}