@trudb/tru-common-lib 0.2.87 → 0.2.89

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"trudb-tru-common-lib.mjs","sources":["../../../projects/tru-common-lib/src/lib/base-classes/tru-component-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-control-component-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-control-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-parent-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-pkey-control-config-base.ts","../../../projects/tru-common-lib/src/lib/classes/tru-merge-data-set.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-entity-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-list-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-property-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-parent-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-range-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-table-config-base.ts","../../../projects/tru-common-lib/src/lib/services/tru-breeze-metadata-provider.ts","../../../projects/tru-common-lib/src/lib/services/tru-app-environment.ts","../../../projects/tru-common-lib/src/lib/services/tru-breeze-context-factory.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-navigation-properties-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-global-data-context.ts","../../../projects/tru-common-lib/src/lib/material.module.ts","../../../projects/tru-common-lib/src/lib/components/confirm-dialog/tru-confirm-dialog.ts","../../../projects/tru-common-lib/src/lib/components/confirm-dialog/tru-confirm-dialog.html","../../../projects/tru-common-lib/src/lib/components/export-dialog/tru-export-dialog.ts","../../../projects/tru-common-lib/src/lib/components/export-dialog/tru-export-dialog.html","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-config.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/classes/tru-password-change-request.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/tru-password-dialog.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/tru-password-dialog.html","../../../projects/tru-common-lib/src/lib/components/about-dialog/tru-about-dialog.ts","../../../projects/tru-common-lib/src/lib/components/about-dialog/tru-about-dialog.html","../../../projects/tru-common-lib/src/lib/services/tru-ui-notification.ts","../../../projects/tru-common-lib/src/lib/services/tru-util.ts","../../../projects/tru-common-lib/src/lib/services/tru-text-manager.ts","../../../projects/tru-common-lib/src/lib/services/tru-user.ts","../../../projects/tru-common-lib/src/lib/services/tru-entity-accessor.ts","../../../projects/tru-common-lib/src/lib/services/tru-data-context.ts","../../../projects/tru-common-lib/src/lib/components/desktop/classes/tru-desktop-view-config.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-event-args.ts","../../../projects/tru-common-lib/src/lib/services/tru-context-filters.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-event-handler.ts","../../../projects/tru-common-lib/src/lib/base-views/search/tru-search-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/search/tru-search-view-base.html","../../../projects/tru-common-lib/src/lib/components/report-view/tru-report-view.ts","../../../projects/tru-common-lib/src/lib/components/report-view/tru-report-view.html","../../../projects/tru-common-lib/src/lib/base-views/tru-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/tru-view-base.html","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-close-event-args.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/button/tru-toolbar-button.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/button/tru-toolbar-button.html","../../../projects/tru-common-lib/src/lib/directives/select-panel/tru-mat-select-panel.ts","../../../projects/tru-common-lib/src/lib/pipes/open-on-start.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/context-filter/tru-toolbar-context-filter.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/context-filter/tru-toolbar-context-filter.html","../../../projects/tru-common-lib/src/lib/components/toolbar/dropdown/tru-toolbar-dropdown.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/dropdown/tru-toolbar-dropdown.html","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.html","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.html","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/tru-toolbar-menu.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/tru-toolbar-menu.html","../../../projects/tru-common-lib/src/lib/components/toolbar/separator/tru-toolbar-separator.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/separator/tru-toolbar-separator.html","../../../projects/tru-common-lib/src/lib/components/toolbar/text/tru-toolbar-text.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/text/tru-toolbar-text.html","../../../projects/tru-common-lib/src/lib/components/login/services/tru-auth-cache.ts","../../../projects/tru-common-lib/src/lib/components/login/services/tru-auth.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/user-profile/tru-toolbar-user-profile.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/user-profile/tru-toolbar-user-profile.html","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar.html","../../../projects/tru-common-lib/src/lib/directives/rendered/tru-rendered.ts","../../../projects/tru-common-lib/src/lib/assets/tru-icon-module.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-table-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-property-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-type-lookup.ts","../../../projects/tru-common-lib/src/lib/components/clone-view/tru-clone-view.ts","../../../projects/tru-common-lib/src/lib/components/clone-view/tru-clone-view.html","../../../projects/tru-common-lib/src/lib/services/tru-component-lookup.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-view-event-notifier.ts","../../../projects/tru-common-lib/src/lib/base-views/detail/tru-detail-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/detail/tru-detail-view-base.html","../../../projects/tru-common-lib/src/lib/base-views/search/services/tru-search-view-control-event-handler.ts","../../../projects/tru-common-lib/src/lib/base-views/search/services/tru-search-view-event-handler.ts","../../../projects/tru-common-lib/src/lib/base-views/search-result/tru-search-result-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/search-result/tru-search-result-view-base.html","../../../projects/tru-common-lib/src/lib/classes/tru-choice.ts","../../../projects/tru-common-lib/src/lib/classes/tru-context-filter.ts","../../../projects/tru-common-lib/src/lib/classes/tru-context-filter-choice.ts","../../../projects/tru-common-lib/src/lib/classes/tru-data-change.ts","../../../projects/tru-common-lib/src/lib/classes/tru-formula-eval.ts","../../../projects/tru-common-lib/src/lib/classes/tru-name-value.ts","../../../projects/tru-common-lib/src/lib/classes/tru-navigation-properties-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-navigation-property-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-predicate.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-foreign-key.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-cloud-file.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-date.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-decimal.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-file.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-integer.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-text.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-password.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-percentage.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-scientific.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-text-choices.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-usa-address.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-zip-code.ts","../../../projects/tru-common-lib/src/lib/classes/tru-query-predicate-manager.ts","../../../projects/tru-common-lib/src/lib/classes/tru-view-menu-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-validator-factory.ts","../../../projects/tru-common-lib/src/lib/services/tru-user-preference-manager.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/on-starup/tru-app-window-open-on-startup-setting.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/on-starup/tru-app-window-open-on-startup-setting.html","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/tru-app-window-settings.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/tru-app-window-settings.html","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/tru-app-settings-dialog.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/tru-app-settings-dialog.html","../../../projects/tru-common-lib/src/lib/components/card-column/classes/tru-card-column-data.ts","../../../projects/tru-common-lib/src/lib/components/card-column/classes/tru-card-column-search-results-config-base.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/textbox/tru-toolbar-textbox.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/textbox/tru-toolbar-textbox.html","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card.ts","../../../projects/tru-common-lib/src/lib/services/tru-search-result-view-manager.ts","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card-column.ts","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card-column.html","../../../projects/tru-common-lib/src/lib/components/data-grid/classes/tru-data-grid-cell-renderer.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/services/tru-data-grid-clipboard.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/classes/tru-data-grid-pkey-cell-renderer.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/enums/tru-data-grid-types.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/headers/tru-data-grid-header.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/headers/tru-data-grid-header-filter.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/headers/tru-data-grid-ref-header.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/services/tru-data-grid-util.ts","../../../projects/tru-common-lib/src/lib/components/grid-validation-dialog/tru-grid-validation-dialog.ts","../../../projects/tru-common-lib/src/lib/components/grid-validation-dialog/tru-grid-validation-dialog.html","../../../projects/tru-common-lib/src/lib/components/grid-validation-dialog/tru-grid-validation-dialog-config.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay.ts","../../../projects/tru-common-lib/src/lib/classes/tru-merge-data.ts","../../../projects/tru-common-lib/src/lib/classes/tru-data-change-parser.ts","../../../projects/tru-common-lib/src/lib/services/tru-connection-hub.ts","../../../projects/tru-common-lib/src/lib/components/layout/tab/services/tru-tab-group-event-notifier.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid.html","../../../projects/tru-common-lib/src/lib/components/toolbar/app-customization/tru-toolbar-app-customization.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/app-customization/tru-toolbar-app-customization.html","../../../projects/tru-common-lib/src/lib/components/desktop/menubar/tru-desktop-menubar.ts","../../../projects/tru-common-lib/src/lib/components/desktop/menubar/tru-desktop-menubar.html","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-service.ts","../../../projects/tru-common-lib/src/lib/components/desktop/statusbar/tru-desktop-statusbar.ts","../../../projects/tru-common-lib/src/lib/components/desktop/statusbar/tru-desktop-statusbar.html","../../../projects/tru-common-lib/src/lib/components/desktop/taskbar/tru-desktop-taskbar.ts","../../../projects/tru-common-lib/src/lib/components/desktop/taskbar/tru-desktop-taskbar.html","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view.ts","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view.html","../../../projects/tru-common-lib/src/lib/services/tru-action-invoke.ts","../../../projects/tru-common-lib/src/lib/services/tru-report-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/directives/resizable/tru-desktop-resizable.ts","../../../projects/tru-common-lib/src/lib/components/desktop/directives/window-state-monitor/tru-desktop-window-state-monitor.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/window/tru-desktop-window.ts","../../../projects/tru-common-lib/src/lib/components/desktop/window/tru-desktop-window.html","../../../projects/tru-common-lib/src/lib/components/desktop/viewport/tru-desktop-viewport.ts","../../../projects/tru-common-lib/src/lib/components/desktop/viewport/tru-desktop-viewport.html","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop.ts","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop.html","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-action-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/error-dialog/tru-error-dialog.ts","../../../projects/tru-common-lib/src/lib/components/error-dialog/tru-error-dialog.html","../../../projects/tru-common-lib/src/lib/components/error-dialog/classes/tru-error-dialog-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-server-error.ts","../../../projects/tru-common-lib/src/lib/services/tru-error-manager.ts","../../../projects/tru-common-lib/src/lib/components/error-dialog/services/tru-error-interceptor.ts","../../../projects/tru-common-lib/src/lib/components/layout/column/tru-column.ts","../../../projects/tru-common-lib/src/lib/components/layout/column/tru-column.html","../../../projects/tru-common-lib/src/lib/components/layout/form/tru-form.ts","../../../projects/tru-common-lib/src/lib/components/layout/form/tru-form.html","../../../projects/tru-common-lib/src/lib/components/layout/group-box/tru-group-box.ts","../../../projects/tru-common-lib/src/lib/components/layout/group-box/tru-group-box.html","../../../projects/tru-common-lib/src/lib/components/layout/row/tru-row.ts","../../../projects/tru-common-lib/src/lib/components/layout/row/tru-row.html","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab/tru-tab.ts","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab/tru-tab.html","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab-group/tru-tab-group.ts","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab-group/tru-tab-group.html","../../../projects/tru-common-lib/src/lib/components/login/tru-login.ts","../../../projects/tru-common-lib/src/lib/components/login/tru-login.html","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-jwt-strategy.ts","../../../projects/tru-common-lib/src/lib/components/login/services/tru-auth-interceptor.ts","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-session-strategy.ts","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-strategy-provider.ts","../../../projects/tru-common-lib/src/lib/components/login/tru-login-module.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-context.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog.html","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-config.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator.ts","../../../projects/tru-common-lib/src/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.ts","../../../projects/tru-common-lib/src/lib/services/tru-cloud-file-manager.ts","../../../projects/tru-common-lib/src/lib/services/tru-formatter.ts","../../../projects/tru-common-lib/src/lib/services/tru-predicate-map.ts","../../../projects/tru-common-lib/src/lib/services/tru-sort.ts","../../../projects/tru-common-lib/src/lib/extensions.ts","../../../projects/tru-common-lib/src/lib/assets/tru-search-icon-module.ts","../../../projects/tru-common-lib/src/lib/tru-common-module.ts","../../../projects/tru-common-lib/src/public-api.ts","../../../projects/tru-common-lib/src/trudb-tru-common-lib.ts"],"sourcesContent":["export class TruComponentConfigBase {\r\n constructor() { }\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { TruPropertyConfigBase } from './tru-property-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\n\r\nexport abstract class TruControlComponentConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract relatedTableType: typeof TruEntityBase | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n abstract value: (entity: any) => {}\r\n constructor() { }\r\n\r\n protected hid?(entity: TruEntityBase): string | null | undefined;\r\n protected goTo?(entity: TruEntityBase): void;\r\n protected choices?(): Observable<{ label: string, value: { $: any } }[]>;\r\n}\r\n","import { Directive, Input } from '@angular/core';\nimport { TruEditControlConfigBase } from './tru-edit-control-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\n\n/*\n * The abstract class needs the Angular @Directive decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruEditControlBase {\n @Input()\n abstract config: TruEditControlConfigBase<any>;\n\n @Input()\n abstract entity: TruEntityBase;\n\n abstract label: string | undefined;\n}\n","import { Observable, Subject } from 'rxjs';\r\nimport { TruPropertyConfigBase } from './tru-property-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\nimport { TruChoice } from '../classes/tru-choice';\r\n\r\nexport abstract class TruEditControlConfigBase<T> {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract relatedTableType: typeof TruEntityBase | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\r\n abstract subProperties: Array<string>;\r\n abstract subPropertyNames: Array<string>;\r\n abstract isSubProperty: boolean;\r\n\r\n abstract get property(): TruPropertyConfigBase;\r\n\r\n abstract set entity(value: any);\r\n\r\n abstract get $(): T;\r\n abstract set $(value: T);\r\n\r\n abstract onChange(): Subject<T>\r\n abstract change(value: T): void;\r\n\r\n constructor() { }\r\n\r\n protected hid?(entity: TruEntityBase): string | null | undefined;\r\n protected choices?: (ref: number | null | undefined, allRecords: boolean, dependantEntity: typeof TruEntityBase | undefined) => Observable<TruChoice[]>;\r\n protected severChoices?: () => Observable<TruChoice[]>;\r\n protected choicesEntityType?: any;\r\n}\r\n","import { TruPropertyConfigBase } from './tru-property-config-base';\r\n\r\nexport abstract class TruEditParentControlConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n\r\n constructor() { }\r\n}\r\n","import { TruPropertyConfigBase } from './tru-property-config-base';\r\n\r\nexport abstract class TruEditPkeyControlConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n abstract set entity(value: any);\r\n abstract get $(): number;\r\n constructor() { }\r\n}\r\n","import { TruMergeData } from \"./tru-merge-data\";\r\n\r\nexport class TruMergeDataSet {\r\n private _data: Record<string, TruMergeData> = {};\r\n\r\n get = (propertyName: string): TruMergeData | undefined => {\r\n return this._data[propertyName];\r\n }\r\n\r\n set = (propertyName: string, data: TruMergeData) => {\r\n this._data[propertyName] = data;\r\n }\r\n\r\n clear = (propertyName: string) => {\r\n delete this._data[propertyName];\r\n }\r\n\r\n getAll = (): Record<string, TruMergeData> => {\r\n return this._data;\r\n }\r\n\r\n clearAll = () => {\r\n this._data = {};\r\n }\r\n\r\n isEmpty = (): boolean => {\r\n return Object.keys(this._data).length === 0;\r\n }\r\n\r\n constructor() {}\r\n}\r\n","import { Entity, EntityAspect, EntityType, PropertyChangedEventArgs } from 'breeze-client';\r\nimport { TruMergeDataSet } from '../classes/tru-merge-data-set';\r\n\r\nexport class TruEntityBase implements Entity {\r\n get Ref(): number { return 0 };\r\n\r\n constructor(...args: any[]) { }\r\n\r\n entityAspect: EntityAspect = new EntityAspect();\r\n entityType!: EntityType;\r\n Created: Date = new Date();\r\n CreatedRef: number = -1;\r\n Updated: Date | undefined = undefined;\r\n UpdatedRef: number | undefined = undefined;\r\n rowver: any;\r\n\r\n HID: string | null | undefined;\r\n\r\n Merge_Data_Set: TruMergeDataSet = new TruMergeDataSet();\r\n Is_Invalid: boolean | undefined = undefined;\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\nimport { TruPropertyConfigBase } from './tru-property-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\nimport { TruChoice } from '../classes/tru-choice';\r\n\r\nexport abstract class TruListControlConfigBase<T> {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract relatedTableType: typeof TruEntityBase | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\r\n abstract subProperties: Array<string>;\r\n abstract subPropertyNames: Array<string>;\r\n abstract isSubProperty: boolean;\r\n\r\n abstract get property(): TruPropertyConfigBase;\r\n\r\n abstract set entity(value: any);\r\n\r\n abstract get $(): T;\r\n abstract set $(value: T);\r\n\r\n abstract onChange(): Subject<T>\r\n abstract change(value: T): void;\r\n\r\n constructor() { }\r\n\r\n protected hid?(entity: TruEntityBase): string | null | undefined;\r\n protected choices?: (ref: number | null | undefined, allRecords: boolean, dependantEntity: typeof TruEntityBase | undefined) => Observable<TruChoice[]>;\r\n protected choicesEntityType?: any;\r\n}\r\n","import { ITruAncestor } from \"../interfaces/tru-ancestor\";\r\n\r\n\r\nexport class TruPropertyConfigBase {\r\n constructor() { }\r\n\r\n isNullable: boolean = false;\r\n canDisplay: boolean | null | undefined = false;\r\n canEdit: boolean | null | undefined = false;\r\n readOnly: boolean = false;\r\n globalCache: boolean = false;\r\n uniqueConstraint: boolean = false;\r\n typeName: string | undefined = undefined;\r\n formatterName: string | undefined = undefined;\r\n formatter: ((value: any) => string | null | undefined) | undefined = undefined;\r\n choices: any = undefined;\r\n validation: string | undefined = undefined;\r\n excludeFromCloning: boolean = false;\r\n dependsOn: Array<ITruAncestor> = []\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\n/*\n * The abstract class needs the Angular @Directive decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruSearchControlBase {\n\n operatorLookup: { [key: string]: string } = {\n 'equal': 'eq',\n 'not-equal': 'not-eq',\n 'greater-than': 'gt',\n 'greater-than-or-equal': 'ge',\n 'less-than': 'lt',\n 'less-than-or-equal': 'le',\n 'contains': 'contains',\n 'default': 'eq'\n };\n\n operatorIconLookup: { [key: string]: string } = {\n 'equal': 'equal-operator-icon',\n 'not-equal': 'not-equal-operator-icon',\n 'greater-than': 'greater-than-operator-icon',\n 'greater-than-or-equal': 'greater-than-or-equal-operator-icon',\n 'less-than': 'less-than-operator-icon',\n 'less-than-or-equal': 'less-than-or-equal-operator-icon',\n 'contains': 'contains-operator-icon',\n 'default': 'equal-operator-icon',\n };\n\n operatorIconTitleLookup: { [key: string]: string } = {\n 'equal': 'Equal To',\n 'not-equal': 'Not Equal To',\n 'greater-than': 'Greater Than',\n 'greater-than-or-equal': 'Greater Than Or Equal To',\n 'less-than': 'Less Than',\n 'less-than-or-equal': 'Less Than Or Equal To',\n 'contains': 'Contains',\n 'default': 'Equal To',\n };\n\n @Input()\n abstract config: any;\n\n abstract label: string | undefined;\n\n abstract operator: string | undefined;\n\n abstract operatorIcon?: string;\n\n abstract operatorIconTitle?: string;\n\n abstract onOperatorIconClick(): void;\n\n abstract updatePredicate(): void;\n}\n","import { Directive, Input } from '@angular/core';\r\n\n/*\n * The abstract class needs the Angular @Directive decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruSearchControlParentBase {\n\n operatorLookup: { [key: string]: string } = {\n 'equal': 'eq',\n 'not-equal': 'not-eq',\n 'greater-than': 'gt',\n 'greater-than-or-equal': 'ge',\n 'less-than': 'lt',\n 'less-than-or-equal': 'le',\n 'contains': 'contains',\n 'default': 'eq'\n };\n\n operatorIconLookup: { [key: string]: string } = {\n 'equal': 'equal-operator-icon',\n 'not-equal': 'not-equal-operator-icon',\n 'greater-than': 'greater-than-operator-icon',\n 'greater-than-or-equal': 'greater-than-or-equal-operator-icon',\n 'less-than': 'less-than-operator-icon',\n 'less-than-or-equal': 'less-than-or-equal-operator-icon',\n 'contains': 'contains-operator-icon',\n 'default': 'equal-operator-icon',\n };\n\n operatorIconTitleLookup: { [key: string]: string } = {\n 'equal': 'Equal To',\n 'not-equal': 'Not Equal To',\n 'greater-than': 'Greater Than',\n 'greater-than-or-equal': 'Greater Than Or Equal To',\n 'less-than': 'Less Than',\n 'less-than-or-equal': 'Less Than Or Equal To',\n 'contains': 'Contains',\n 'default': 'Equal To',\n };\n\n @Input()\n abstract config: any;\n\n abstract updatePredicate(): void;\n}\n","import { TruPropertyConfigBase } from \"./tru-property-config-base\";\r\nimport { TruQueryPredicateManager } from \"../classes/tru-query-predicate-manager\";\r\n\r\nexport abstract class TruSearchControlConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n abstract queryPredicate: TruQueryPredicateManager;\r\n abstract operator: string | undefined;\r\n\r\n constructor() { }\r\n\r\n choices?: any; //Observable<{ label: string, value: { $: any } }[]>;\r\n}\r\n","import { NgModule, Directive, Input } from '@angular/core';\n\n/*\n * The abstract class needs the Angular @Component decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruSearchControlRangeBase {\n\n operatorLookup: { [key: string]: string } = {\n 'equal': 'eq',\n 'not-equal': 'not-eq',\n 'greater-than': 'gt',\n 'greater-than-or-equal': 'ge',\n 'less-than': 'lt',\n 'less-than-or-equal': 'le',\n 'contains': 'contains',\n 'default': 'eq'\n };\n\n operatorIconLookup: { [key: string]: string } = {\n 'equal': 'equal-operator-icon',\n 'not-equal': 'not-equal-operator-icon',\n 'greater-than': 'greater-than-operator-icon',\n 'greater-than-or-equal': 'greater-than-or-equal-operator-icon',\n 'less-than': 'less-than-operator-icon',\n 'less-than-or-equal': 'less-than-or-equal-operator-icon',\n 'contains': 'contains-operator-icon',\n 'default': 'equal-operator-icon',\n };\n\n operatorIconTitleLookup: { [key: string]: string } = {\n 'equal': 'Equal To',\n 'not-equal': 'Not Equal To',\n 'greater-than': 'Greater Than',\n 'greater-than-or-equal': 'Greater Than Or Equal To',\n 'less-than': 'Less Than',\n 'less-than-or-equal': 'Less Than Or Equal To',\n 'contains': 'Contains',\n 'default': 'Equal To',\n };\n\n @Input()\n abstract config: any;\n\n abstract label: string | undefined;\n\n abstract startOperator: string | undefined;\n\n abstract startOperatorIcon: string;\n\n abstract startOperatorIconTitle: string;\n\n abstract endOperator: string | undefined;\n\n abstract endOperatorIcon: string;\n\n abstract endOperatorIconTitle: string;\n\n abstract onStartOperatorIconClick(): void;\n\n abstract onEndOperatorIconClick(): void;\n\n abstract updatePredicate(): void;\n}\n","import { TruControlComponentConfigBase } from \"./tru-control-component-config-base\";\r\n\r\nexport abstract class TruSearchConfigBase {\r\n abstract name: string;\r\n abstract noControls: boolean;\r\n abstract controls: Array<[string, string]> | undefined;\r\n abstract controlConfigs: Record<string, TruControlComponentConfigBase>\r\n abstract setupQuery: (query: any, predicateMap: any) => {};\r\n constructor() { }\r\n}\r\n","export class TruTableConfigBase {\r\n constructor() { }\r\n\r\n name: string | undefined = undefined;\r\n label: string | undefined = undefined;\r\n pluralLabel: string | undefined = undefined;\r\n pluralName: string | undefined = undefined;\r\n canDisplay: boolean = false;\r\n canEdit: boolean = false;\r\n canAdd: boolean = false;\r\n canDelete: boolean = false;\r\n isAssociatedWithMenuItem: boolean = false;\r\n openOnStart: boolean = false;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruBreezeMetadataProvider {\r\n private _metadata: object = {};\r\n\r\n constructor() { }\r\n\r\n get metadata(): object {\r\n return this._metadata;\r\n }\r\n\r\n set metadata(json: object) {\r\n this._metadata = json;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Entity } from \"breeze-client\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { TruDataContext } from \"./tru-data-context\";\r\n\r\nexport interface ActionEventCompleted {\r\n successful: boolean;\r\n entities?: Array<Entity>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruAppEnvironment {\r\n private _appName: string;\r\n private _appDescription: string;\r\n private _appUri: string;\r\n private _enablePasswordStrength: boolean;\r\n private _backgroundImageUri: string;\r\n private _environmentWarning: string;\r\n private _loginFormTitle: string;\r\n\r\n private _authType: 'session' | 'jwt';\r\n private _maxRecordCount: number;\r\n private _isSaving: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _saveComplete: BehaviorSubject<ActionEventCompleted | null> = new BehaviorSubject<ActionEventCompleted | null>(null);\r\n private _revertComplete: BehaviorSubject<ActionEventCompleted | null> = new BehaviorSubject<ActionEventCompleted | null>(null);\r\n private _deleteComplete: BehaviorSubject<ActionEventCompleted | null> = new BehaviorSubject<ActionEventCompleted | null>(null);\r\n private _globalDataContext: TruDataContext | null = null;\r\n\r\n readonly msgModifierKeyLabel: string;\r\n readonly msgConfirmExitWithChangesPending: string;\r\n readonly msgDeleteSuccessful: string;\r\n readonly msgSaveSuccessful: string;\r\n readonly msgSettingsUpdatedSuccessful: string;\r\n readonly msgNoChangesToSave: string;\r\n readonly msgSaveInProgress: string;\r\n readonly msgInvalidData: string;\r\n readonly msgDirtyPreventsReadOnly: string;\r\n readonly msgDirtyPreventsNavigate: string;\r\n readonly msgDirtyPreventsClose: string;\r\n readonly msgDirtyPreventsDeleteExistingRecord: string;\r\n readonly msgNoDeleteAccess: string;\r\n readonly msgCannotDeleteNewAndExistingRecords: string;\r\n readonly msgDeleteReferencingRecordsFirst: string;\r\n readonly msgNoRecordsSelected: string;\r\n\r\n public onSavingChanged$: Observable<boolean> = this._isSaving.asObservable();\r\n public onSaveComplete$: Observable<ActionEventCompleted | null> = this._saveComplete.asObservable();\r\n public onRevertComplete$: Observable<ActionEventCompleted | null> = this._revertComplete.asObservable();\r\n public onDeleteComplete$: Observable<ActionEventCompleted | null> = this._deleteComplete.asObservable();\r\n\r\n constructor() {\r\n this._appName = '';\r\n this._appDescription = '';\r\n this._appUri = '';\r\n this._enablePasswordStrength = true;\r\n this._backgroundImageUri = '';\r\n this._environmentWarning = '';\r\n this._loginFormTitle = '';\r\n this._authType = 'jwt';\r\n this._maxRecordCount = 0;\r\n \r\n this.msgModifierKeyLabel = this.isMac ? 'Cmd' : 'Ctrl';\r\n this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';\r\n this.msgDeleteSuccessful = 'Delete succeeded';\r\n this.msgSaveSuccessful = 'Save succeeded';\r\n this.msgSettingsUpdatedSuccessful = 'Settings updated';\r\n this.msgNoChangesToSave = 'No changes to save';\r\n this.msgSaveInProgress = 'Save in progress';\r\n this.msgInvalidData = 'Invalid data';\r\n this.msgDirtyPreventsReadOnly = 'Save or revert before disabling editing';\r\n this.msgDirtyPreventsNavigate = 'Save or revert before navigating';\r\n this.msgDirtyPreventsClose = 'Save or revert before closing window';\r\n this.msgDirtyPreventsDeleteExistingRecord = 'Save or revert before deleting';\r\n this.msgNoDeleteAccess = 'Contact administrator about delete access';\r\n this.msgCannotDeleteNewAndExistingRecords = 'Delete new or existing records - but not both';\r\n this.msgDeleteReferencingRecordsFirst = 'Delete all referencing records first';\r\n this.msgNoRecordsSelected = 'No Records selected';\r\n }\r\n\r\n get appName(): string {\r\n return this._appName;\r\n }\r\n\r\n set appName(name: string) {\r\n this._appName = name;\r\n }\r\n\r\n get appDescription(): string {\r\n return this._appDescription;\r\n };\r\n\r\n set appDescription(description: string) {\r\n this._appDescription = description;\r\n }\r\n\r\n get enablePasswordStrength(): boolean {\r\n return this._enablePasswordStrength;\r\n };\r\n\r\n set enablePasswordStrength(enable: boolean) {\r\n this._enablePasswordStrength = enable;\r\n }\r\n\r\n get backgroundImageUri(): string {\r\n return this._backgroundImageUri;\r\n };\r\n\r\n set backgroundImageUri(uri: string) {\r\n this._backgroundImageUri = uri;\r\n }\r\n\r\n get environmentWarning(): string {\r\n return this._environmentWarning;\r\n };\r\n\r\n set environmentWarning(description: string) {\r\n this._environmentWarning = description;\r\n }\r\n\r\n get loginFormTitle(): string {\r\n return this._loginFormTitle;\r\n };\r\n\r\n set loginFormTitle(description: string) {\r\n this._loginFormTitle = description;\r\n }\r\n\r\n get appUri(): string {\r\n return this._appUri;\r\n }\r\n\r\n set appUri(uri: string) {\r\n this._appUri = uri;\r\n }\r\n\r\n get authType(): 'session' | 'jwt' {\r\n return this._authType;\r\n }\r\n\r\n set authType(type: 'session' | 'jwt') {\r\n this._authType = type;\r\n }\r\n\r\n get isSaving(): boolean {\r\n return this._isSaving.getValue();\r\n }\r\n\r\n set isSaving(isSaving: boolean) {\r\n this._isSaving.next(isSaving);\r\n }\r\n\r\n get maxRecordCount(): number {\r\n return this._maxRecordCount;\r\n }\r\n\r\n set maxRecordCount(maxRecordCount: number) {\r\n this._maxRecordCount = maxRecordCount;\r\n }\r\n\r\n get globalDataContext(): TruDataContext | null {\r\n return this._globalDataContext;\r\n }\r\n\r\n set globalDataContext(context: TruDataContext | null) {\r\n this._globalDataContext = context ;\r\n }\r\n\r\n get isMac(): boolean {\r\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\r\n }\r\n\r\n saveComplete = (event: ActionEventCompleted): void => {\r\n this._saveComplete.next(event);\r\n }\r\n\r\n revertComplete = (event: ActionEventCompleted): void => {\r\n this._revertComplete.next(event);\r\n }\r\n\r\n deleteComplete = (event: ActionEventCompleted): void => {\r\n this._deleteComplete.next(event);\r\n }\r\n\r\n formatDeleteConfirmationMessage = (tableName: string, tablePluralLabel: string, count: number | null): string => {\r\n if (count === null)\r\n return 'Are you sure you want to delete this ' + tableName + '?';\r\n if (count === 1)\r\n return 'Are you sure you want to delete 1 ' + tableName + '?';\r\n return 'Are you sure you want to delete ' + count + ' ' + tablePluralLabel + '?';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { breeze, DataService as BreezeDataService, EntityManager, EntityQuery, MetadataStore, Predicate } from 'breeze-client';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruBreezeMetadataProvider } from './tru-breeze-metadata-provider';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruBreezeContextFactory {\r\n\r\n /**\r\n * Maximum number of records to return from a query.\r\n * @return {number}\r\n */\r\n private servicePath: string = '';\r\n private metadataStore: MetadataStore = new MetadataStore();\r\n private breezeDataService: BreezeDataService | undefined = undefined;\r\n constructor(\r\n private breezeMetadataProvider: TruBreezeMetadataProvider,\r\n private environment: TruAppEnvironment) {\r\n this.servicePath = environment.appUri + '/api/TruDB';\r\n /**\r\n * Note: hasServerMetadata is false to prevent the automatic query of the metadata from the server.\r\n */\r\n try {\r\n this.breezeDataService = new BreezeDataService({\r\n serviceName: this.servicePath,\r\n hasServerMetadata: false\r\n });\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n setUpMetadata = (metadata: object): MetadataStore => {\r\n if (this.metadataStore.isEmpty()) \r\n return this.metadataStore.importMetadata(metadata);\r\n return this.metadataStore;\r\n }\r\n\r\n /**\r\n * Returns a new data context object.\r\n * @return {object} - Breeze Manager\r\n */\r\n createContext = (tableName: string | null = null): TruBreezeContext => {\r\n let entityManager = new EntityManager({\r\n dataService: this.breezeDataService,\r\n metadataStore: this.metadataStore\r\n });\r\n let breezeContext = new TruBreezeContext(entityManager);\r\n\r\n /**\r\n * Cache the active user's user record since it is required to be in the cache \r\n * for some situations such as when create new record and the view displays the \r\n * created user audit property. If it fails, the next context will try again.\r\n * Of course, the already existing context(s) won't have the record cached, but\r\n * it's a rather unlikely situation and it's non-fatal, so just let it fail.\r\n */\r\n var activeUserRecordExport;\r\n if (activeUserRecordExport) {\r\n entityManager.importEntities(activeUserRecordExport);\r\n }\r\n return breezeContext;\r\n };\r\n}\r\n\r\nexport class TruBreezeContext {\r\n private _entityManager: EntityManager;\r\n\r\n constructor(\r\n private manager: EntityManager) {\r\n\r\n this._entityManager = manager;\r\n }\r\n\r\n get createQuery() {\r\n return (x: any): EntityQuery => { return new EntityQuery(x); };\r\n };\r\n\r\n get createPredicate() {\r\n return (...args: any[]): Predicate => { return new Predicate(args); }\r\n }\r\n\r\n get entityManager() {\r\n return this._entityManager;\r\n };\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruNavigationPropertyConfig } from \"../classes/tru-navigation-property-config\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelNavigationPropertiesLookup {\r\n private _lookup: Map<string, Array<TruNavigationPropertyConfig>> = new Map<string, Array<TruNavigationPropertyConfig>>();\r\n\r\n constructor() { }\r\n\r\n get lookup(): Map<string, Array<TruNavigationPropertyConfig>> {\r\n return this._lookup;\r\n }\r\n\r\n set lookup(value: Map<string, Array<TruNavigationPropertyConfig>>) {\r\n this._lookup = value;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { TruDataContext } from './tru-data-context';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruGlobalDataContext {\r\n private _dataContext: TruDataContext | null = null;\r\n\r\n constructor() { }\r\n\r\n get dataContext(): TruDataContext | null {\r\n return this._dataContext;\r\n }\r\n\r\n set dataContext(dataContext: TruDataContext | null) {\r\n if (this._dataContext !== null)\r\n this._dataContext = dataContext;\r\n else\r\n console.log('Global Data Context is alreay set and can not be modified.')\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n exports: [\n A11yModule,\n CdkAccordionModule,\n ClipboardModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n OverlayModule,\n PortalModule,\n ScrollingModule,\n ]\n})\nexport class MaterialModule { }\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-confirm-dialog',\r\n templateUrl: './tru-confirm-dialog.html',\r\n styleUrls: ['./tru-confirm-dialog.css'],\r\n imports: [CommonModule, FormsModule, MaterialModule]\r\n})\r\nexport class TruConfirmDialog implements OnInit {\r\n title: string;\r\n message: string;\r\n displayDismissButton: boolean;\r\n displayConfirmButton: boolean;\r\n dismissButtonName: string;\r\n confirmButtonName: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<TruConfirmDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruConfirmDialog) {\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.displayDismissButton = data.displayDismissButton;\r\n this.displayConfirmButton = data.displayConfirmButton;\r\n this.dismissButtonName = data.dismissButtonName;\r\n this.confirmButtonName = data.confirmButtonName;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onConfirm(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n\r\nexport class TruConfirmDialogConfig {\r\n\r\n constructor(\r\n public title: string,\r\n public message: string,\r\n public displayDismissButton: boolean,\r\n public displayConfirmButton: boolean,\r\n public dismissButtonName: string,\r\n public confirmButtonName: string) {\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n {{title}}\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <p>{{message}}</p>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button *ngIf=\"displayDismissButton\" mat-raised-button (click)=\"onDismiss()\">{{dismissButtonName}}</button>\r\n <button *ngIf=\"displayConfirmButton\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">{{confirmButtonName}}</button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, HostListener, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-export-dialog',\r\n templateUrl: './tru-export-dialog.html',\r\n styleUrls: ['./tru-export-dialog.css'],\r\n imports: [CommonModule, FormsModule, MaterialModule, MatCheckbox]\r\n})\r\nexport class TruExportDialog implements OnInit {\r\n title: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<TruExportDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruExportDialog) {\r\n this.title = data.title;\r\n }\r\n\r\n options = {\r\n useGrid: false,\r\n useNames: false,\r\n useEmptyTags: false,\r\n async: false\r\n }\r\n\r\n onFormatForImportChecked = () => {\r\n if (!this.options.useNames)\r\n this.options.useEmptyTags = false;\r\n }\r\n\r\n onConfirm(): void {\r\n this.dialogRef.close(this.options);\r\n }\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n @HostListener('document:keypress', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event.keyCode == 27) {\r\n this.dialogRef.close(false);\r\n }\r\n if (event.keyCode == 13) {\r\n event.stopPropagation();\r\n this.dialogRef.close(this.options);\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n}\r\n\r\nexport class TruExportDialogConfig {\r\n\r\n constructor(public title: string) {\r\n }\r\n}\r\n\r\n","<h1 mat-dialog-title class=\"mat-dialog-title\">\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <table>\r\n <tbody>\r\n <tr>\r\n <td class=\"export-dialog-checkbox-container\" title=\"To support importing the export file: use names instead of labels.\">\r\n <mat-checkbox [(ngModel)]=\"options.useNames\"\r\n (change)=\"onFormatForImportChecked()\"\r\n [labelPosition]=\"'after'\">\r\n Format for import\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"export-dialog-checkbox-container\" title=\"Export only the rows in the grid. When unchecked, exports the results of a new search without limiting result count as is a normal search.\">\r\n <mat-checkbox \r\n [(ngModel)]=\"options.useGrid\"\r\n [labelPosition]=\"'after'\">\r\n Export grid rows\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n <button mat-button (click)=\"onDismiss()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Export</button>\r\n</div>\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { TruUser } from \"../../../services/tru-user\";\r\n\r\nexport interface TruAuthConfig {\r\n baseUrl: string;\r\n authUrl: string;\r\n auth: \"session\" | \"token\";\r\n}\r\n\r\nexport const TRU_AUTH_CONFIG: TruAuthConfig = {\r\n baseUrl: \"https://localhost:44303\",\r\n authUrl: \"/api/auth\",\r\n auth: \"token\",\r\n};\r\n\r\nexport interface TruAuthStrategy<T> {\r\n doLoginUser(data: T): void;\r\n\r\n doLogoutUser(): void;\r\n\r\n isLoggedIn(): boolean;\r\n\r\n createUser(user: TruUser): Observable<any>;\r\n}\r\n\r\nexport const TRU_AUTH_STRATEGY = new InjectionToken<TruAuthStrategy<any>>(\r\n \"AuthStrategy\"\r\n);\r\n","export class TruPasswordChangeRequest {\r\n currentPassword!: string;\r\n newPassword!: string;\r\n userRef!: number;\r\n admin: boolean = false;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { PasswordStrengthMeterComponent } from 'angular-password-strength-meter';\r\nimport { Subscription } from 'rxjs';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { TRU_AUTH_CONFIG } from \"../login/classes/tru-auth-config\";\r\nimport { TruPasswordChangeRequest } from './classes/tru-password-change-request';\r\n\r\n@Component({\r\n selector: 'tru-password-dialog',\r\n templateUrl: './tru-password-dialog.html',\r\n styleUrls: ['../../assets/tru-style.css', './tru-password-dialog.css'],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, PasswordStrengthMeterComponent]\r\n})\r\nexport class TruPasswordDialog implements OnInit {\r\n currentPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n newPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n confirmNewPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n showPasswordControl: FormControl = new FormControl<boolean>(false, []);\r\n\r\n title: string | null = null;\r\n userRef: number = 0;\r\n username: string | null = null;\r\n admin: boolean = false;\r\n message: string | null = null;\r\n showPassword: boolean = false;\r\n passwordScore: number | null = 0;\r\n errorMsg: string | null = null;\r\n busy: boolean = false;\r\n\r\n private baseUrl: string = '';\r\n private subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TruPasswordDialog>,\r\n private http: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n this.baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n onPasswordStrengthChanged = (score: number | null) => {\r\n this.passwordScore = score;\r\n }\r\n\r\n onShowPasswordClicked = () => {\r\n this.showPassword = this.showPasswordControl.value;\r\n }\r\n\r\n canSubmit = () => {\r\n let canSubmit = false;\r\n if (this.admin) {\r\n canSubmit =\r\n this.newPasswordControl.value &&\r\n this.confirmNewPasswordControl.value &&\r\n this.passwordScore !== null && this.passwordScore > 1 &&\r\n (this.newPasswordControl.value === this.confirmNewPasswordControl.value);\r\n } else {\r\n canSubmit = this.currentPasswordControl.value &&\r\n this.newPasswordControl.value &&\r\n this.confirmNewPasswordControl.value &&\r\n this.passwordScore !== null && this.passwordScore > 1 &&\r\n (this.newPasswordControl.value === this.confirmNewPasswordControl.value);\r\n }\r\n return canSubmit;\r\n }\r\n\r\n onConfirm = (): void => {\r\n let passwordChangeRequest = new TruPasswordChangeRequest();\r\n passwordChangeRequest.currentPassword = this.currentPasswordControl.value;\r\n passwordChangeRequest.newPassword = this.newPasswordControl.value;\r\n passwordChangeRequest.userRef = this.data.userRef;\r\n passwordChangeRequest.admin = this.admin;\r\n\r\n if (this.userRef < 0) {\r\n this.data.entity.Password = this.newPasswordControl.value;\r\n this.dialogRef.close(true);\r\n } else {\r\n this.busy = true;\r\n this.http\r\n .post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/changePassword`, passwordChangeRequest)\r\n .subscribe(() => {\r\n this.busy = false;\r\n this.uiNotification.success('Password update complete.')\r\n this.dialogRef.close(true);\r\n }, (ex: any) => {\r\n this.busy = false;\r\n this.errorMsg = ex.error;\r\n });\r\n }\r\n }\r\n\r\n onDismiss = (): void => {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n ngOnInit() {\r\n this.subs.push(this.currentPasswordControl.valueChanges.subscribe(() => {\r\n this.errorMsg = null;\r\n }));\r\n this.userRef = this.data.userRef;\r\n this.username = this.data.username;\r\n this.admin = this.data.admin;\r\n \r\n this.title = this.userRef < 0 ? 'Create Password' : 'Update Password';\r\n this.username = this.userRef < 0 ? 'new user' : this.username;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">{{title}}</p>\r\n <p class=\"tru-password-dialog-username\">for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\" *ngIf=\"!admin\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #currentInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\n\r\n@Component({\r\n selector: 'tru-about-dialog',\r\n templateUrl: './tru-about-dialog.html',\r\n styleUrls: ['./tru-about-dialog.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav\r\n ]\r\n})\r\nexport class TruAboutDialog implements OnInit {\r\n appName: string;\r\n appDescription: string;\r\n currentYear: number = new Date().getFullYear();\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TruAboutDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruAboutDialog,\r\n private appEnvironment: TruAppEnvironment) {\r\n this.appName = this.appEnvironment.appName;\r\n this.appDescription = this.appEnvironment.appDescription;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'about-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n About - {{appName}}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <div class=\"tru-about-description\">\r\n {{appDescription}}\r\n </div>\r\n <p>\r\n Powered By TruDB\r\n </p>\r\n <p>\r\n Copyright {{currentYear}} TruDB LLC. All rights reserved.\r\n </p>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { TruConfirmDialog, TruConfirmDialogConfig } from '../components/confirm-dialog/tru-confirm-dialog';\r\nimport { TruExportDialog, TruExportDialogConfig } from '../components/export-dialog/tru-export-dialog';\r\nimport { TruPasswordDialog } from '../components/password-dialog/tru-password-dialog';\r\nimport { TruAboutDialog } from '../components/about-dialog/tru-about-dialog';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUiNotification {\r\n private _toastr: ToastrService;\r\n private _dialog: MatDialog;\r\n\r\n constructor(\r\n private toastr: ToastrService,\r\n private dialog: MatDialog) {\r\n this._toastr = this.toastr;\r\n this._dialog = this.dialog;\r\n }\r\n\r\n showMessage = (popup: any, log: (message: string) => void, prefix: string, message: string, detail: Array<string> | null = null) => {\r\n \r\n message = prefix + ': ' + message;\r\n if (detail) {\r\n detail.forEach((detailMsg) => {\r\n message += '\\r\\n' + detailMsg;\r\n }); \r\n }\r\n popup(message);\r\n this.log(message);\r\n };\r\n\r\n /**\r\n * Shows as toast and logs to server an error message and optional detail information.\r\n * @param {string} message - Displayed as toast.\r\n * @param {string} [detail] - Logged to console.\r\n */\r\n error = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.error(message), this.log, 'Error', message, detail);\r\n };\r\n\r\n /**\r\n * Same as error() but for info message.\r\n */\r\n info = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.info(message), this.log, 'Info', message, detail);\r\n };\r\n\r\n /**\r\n * Same as error() but for success message.\r\n */\r\n success = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.success(message), this.log, 'Success', message, detail);\r\n };\r\n\r\n /**\r\n * Same as error() but for warning message.\r\n */\r\n warning = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.warning(message), this.log, 'Warning', message, detail);\r\n };\r\n\r\n log = (message: string) => {\r\n var console = window.console;\r\n !!console && console.log && console.log.apply && console.log.apply(console, [message]);\r\n }\r\n\r\n showErrorDialog = (title: string, message: string) => {\r\n\r\n };\r\n\r\n showExportDialog = (): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogConfig = new TruExportDialogConfig('Export');\r\n let dialogRef = this._dialog.open(TruExportDialog, {\r\n disableClose: true,\r\n minWidth: \"200px\",\r\n maxWidth: \"400px\",\r\n data: dialogConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n };\r\n\r\n confirm = (\r\n title: string,\r\n message: string,\r\n displayCancelButton: boolean = true,\r\n displayConfirmButton: boolean = true,\r\n cancelButtonName: string = 'Cancel',\r\n confirmButtonName: string = 'Ok'): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogConfig = new TruConfirmDialogConfig(\r\n title,\r\n message,\r\n displayCancelButton,\r\n displayConfirmButton,\r\n cancelButtonName,\r\n confirmButtonName);\r\n let dialogRef = this._dialog.open(TruConfirmDialog, {\r\n disableClose: true,\r\n minWidth: \"200px\",\r\n maxWidth: \"400px\",\r\n data: dialogConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n };\r\n\r\n changePassword = (userRef: number, username: string, admin: boolean = false, entity: any = null): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogRef = this._dialog.open(TruPasswordDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"400px\",\r\n data: {\r\n userRef: userRef,\r\n username: username,\r\n admin: admin,\r\n entity: entity\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\r\n\r\n about = (): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogRef = this._dialog.open(TruAboutDialog, {\r\n disableClose: true,\r\n minHeight: '400px',\r\n minWidth: '600px'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUtil {\r\n private keyboardMap = [\"\", \"\", \"\", \"CANCEL\", \"\", \"\", \"HELP\", \"\", \"BACK_SPACE\", \"TAB\", \"\", \"\", \"CLEAR\", \"ENTER\", \"RETURN\", \"\", \"SHIFT\", \"CONTROL\", \"ALT\", \"PAUSE\", \"CAPS_LOCK\", \"KANA\", \"EISU\", \"JUNJA\", \"FINAL\", \"HANJA\", \"\", \"ESCAPE\", \"CONVERT\", \"NONCONVERT\", \"ACCEPT\", \"MODECHANGE\", \"SPACE\", \"PAGE_UP\", \"PAGE_DOWN\", \"END\", \"HOME\", \"LEFT\", \"UP\", \"RIGHT\", \"DOWN\", \"SELECT\", \"PRINT\", \"EXECUTE\", \"PRINTSCREEN\", \"INSERT\", \"DELETE\", \"\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"COLON\", \"SEMICOLON\", \"LESS_THAN\", \"EQUALS\", \"GREATER_THAN\", \"QUESTION_MARK\", \"AT\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"WIN\", \"\", \"CONTEXT_MENU\", \"\", \"SLEEP\", \"NUMPAD0\", \"NUMPAD1\", \"NUMPAD2\", \"NUMPAD3\", \"NUMPAD4\", \"NUMPAD5\", \"NUMPAD6\", \"NUMPAD7\", \"NUMPAD8\", \"NUMPAD9\", \"MULTIPLY\", \"ADD\", \"SEPARATOR\", \"SUBTRACT\", \"DECIMAL\", \"DIVIDE\", \"F1\", \"F2\", \"F3\", \"F4\", \"F5\", \"F6\", \"F7\", \"F8\", \"F9\", \"F10\", \"F11\", \"F12\", \"F13\", \"F14\", \"F15\", \"F16\", \"F17\", \"F18\", \"F19\", \"F20\", \"F21\", \"F22\", \"F23\", \"F24\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"NUM_LOCK\", \"SCROLL_LOCK\", \"WIN_OEM_FJ_JISHO\", \"WIN_OEM_FJ_MASSHOU\", \"WIN_OEM_FJ_TOUROKU\", \"WIN_OEM_FJ_LOYA\", \"WIN_OEM_FJ_ROYA\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"CIRCUMFLEX\", \"EXCLAMATION\", \"DOUBLE_QUOTE\", \"HASH\", \"DOLLAR\", \"PERCENT\", \"AMPERSAND\", \"UNDERSCORE\", \"OPEN_PAREN\", \"CLOSE_PAREN\", \"ASTERISK\", \"PLUS\", \"PIPE\", \"HYPHEN_MINUS\", \"OPEN_CURLY_BRACKET\", \"CLOSE_CURLY_BRACKET\", \"TILDE\", \"\", \"\", \"\", \"\", \"VOLUME_MUTE\", \"VOLUME_DOWN\", \"VOLUME_UP\", \"\", \"\", \"\", \"\", \"COMMA\", \"\", \"PERIOD\", \"SLASH\", \"BACK_QUOTE\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"OPEN_BRACKET\", \"BACK_SLASH\", \"CLOSE_BRACKET\", \"QUOTE\", \"\", \"META\", \"ALTGR\", \"\", \"WIN_ICO_HELP\", \"WIN_ICO_00\", \"\", \"WIN_ICO_CLEAR\", \"\", \"\", \"WIN_OEM_RESET\", \"WIN_OEM_JUMP\", \"WIN_OEM_PA1\", \"WIN_OEM_PA2\", \"WIN_OEM_PA3\", \"WIN_OEM_WSCTRL\", \"WIN_OEM_CUSEL\", \"WIN_OEM_ATTN\", \"WIN_OEM_FINISH\", \"WIN_OEM_COPY\", \"WIN_OEM_AUTO\", \"WIN_OEM_ENLW\", \"WIN_OEM_BACKTAB\", \"ATTN\", \"CRSEL\", \"EXSEL\", \"EREOF\", \"PLAY\", \"ZOOM\", \"\", \"PA1\", \"WIN_OEM_CLEAR\", \"\"];\r\n\r\n constructor() { }\r\n\r\n numberToString = (value: number | undefined): string => {\r\n return value === undefined ? '' : (value).toString();\r\n }\r\n\r\n nullableNumberToString = (value: number | null | undefined): string => {\r\n return value === null || value === undefined ? '' : (value).toString();\r\n }\r\n\r\n tryParseInt = (str: any, defaultValue: any) => {\r\n var retValue = defaultValue;\r\n if (str !== null) {\r\n if (str.length > 0) {\r\n if (!isNaN(str)) {\r\n retValue = parseInt(str);\r\n }\r\n }\r\n }\r\n return retValue;\r\n };\r\n\r\n tryParseBool(value: any, defaultValue: any) {\r\n return (value == 'true' || value == 'false' || value === true || value === false) && JSON.parse(value) || defaultValue;\r\n }\r\n\r\n findClosestAncestorByClass = (element: any, cssSelector: string) => {\r\n let firstChar = cssSelector.charAt(0);\r\n for (; element; element = element.parentNode) {\r\n if (firstChar === '.') {\r\n if (element.classList && element.classList.contains(cssSelector.substr(1))) {\r\n return element;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n isNumeric = (n: any) => {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n isNumber = function isNumber(value: any) {\r\n return typeof value === 'number' && isFinite(value);\r\n }\r\n\r\n removeNonNumericCharactersFromStr = (value: string) => {\r\n return value.replace(/[^0-9]/g, '');\r\n }\r\n\r\n isDate = (date: Date) => {\r\n if (Object.prototype.toString.call(date) === '[object Date]') {\r\n if (isNaN((date as Date).getTime())) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n\r\n isValidDate = (value: string) => {\r\n return !isNaN(Date.parse(value));\r\n }\r\n\r\n rulesEval = (styles: object | null): object => {\r\n let defaultStyles = {\r\n 'backgroundColor': '#ffffff',\r\n 'color': '#000000',\r\n 'font-style': 'normal',\r\n 'text-decoration': 'unset'\r\n }\r\n if (styles === null)\r\n return defaultStyles;\r\n if (Object.entries(styles).length !== 0) {\r\n Object.assign(defaultStyles, styles);\r\n return defaultStyles;\r\n }\r\n return defaultStyles;\r\n }\r\n\r\n /**\r\n * Serializes an object as URL parameters. The object should be a base type or have \r\n * properties that are each base types. Does not support a property with structure.\r\n * @param {Object} data \r\n * @returns {String} \r\n */\r\n formatAsUrlParameters = (data: any):string => {\r\n if (typeof data !== 'object' || data === null)\r\n return (data == null ? '' : data.toString());\r\n let buffer = [];\r\n for (let name in data) {\r\n if (!data.hasOwnProperty(name)) {\r\n continue;\r\n }\r\n let value = data[name];\r\n buffer.push(\r\n encodeURIComponent(name) +\r\n '=' + encodeURIComponent(value == null ? '' : value));\r\n }\r\n let source = buffer.join('&')\r\n .replace(/%20/g, '+');\r\n return (source);\r\n }\r\n\r\n showEntityStatus = (entity: TruEntityBase, entityType: string | null, formatedRecordId: string | null | undefined) => {\r\n let title = '';\r\n if (entity) {\r\n if (entityType)\r\n title = entityType + ' - ';\r\n if (entity.entityAspect.entityState.isAdded()) {\r\n title += 'New Record';\r\n } else {\r\n title += formatedRecordId;\r\n }\r\n }\r\n return title;\r\n }\r\n\r\n getKeySequence = (event: any) => {\r\n var keys = [];\r\n if (event.ctrlKey) keys.push('ctrl');\r\n if (event.metaKey) keys.push('meta');\r\n if (event.shiftKey) keys.push('shift');\r\n if (event.altKey) keys.push('alt');\r\n\r\n var keyCode = (event.keyCode !== 'control' && event.which !== 'control') ? event.keyCode || event.which : null;\r\n if (keyCode) keys.push(this.keyboardMap[keyCode].toLowerCase());\r\n keys = [...new Set(keys)];\r\n return keys.join('+');\r\n };\r\n\r\n targetIsControl = (target: HTMLElement): boolean => {\r\n if (target === null) return false;\r\n var nodeName = target.nodeName.toLowerCase();\r\n return nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' || nodeName === '#text';\r\n }\r\n\r\n isLowerCase = (str: string) => {\r\n return str === str.toLowerCase() &&\r\n str !== str.toUpperCase();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { TruUtil } from './tru-util';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruTextManager {\r\n readonly msgModifierKeyLabel: string;\r\n readonly msgConfirmExitWithChangesPending: string;\r\n readonly msgDeleteSuccessful: string;\r\n readonly msgSaveSuccessful: string;\r\n readonly msgNoChangesToSave: string;\r\n readonly msgSaveInProgress: string;\r\n readonly msgInvalidData: string;\r\n readonly msgDirtyPreventsReadOnly: string;\r\n readonly msgDirtyPreventsNavigate: string;\r\n readonly msgDirtyPreventsClose: string;\r\n readonly msgDirtyPreventsDeleteExistingRecord: string;\r\n readonly msgNoDeleteAccess: string;\r\n readonly msgCannotDeleteNewAndExistingRecords: string;\r\n readonly msgDeleteReferencingRecordsFirst: string;\r\n\r\n constructor(private util: TruUtil) {\r\n this.msgModifierKeyLabel = this.isMac() ? 'Cmd' : 'Ctrl';\r\n this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';\r\n this.msgDeleteSuccessful = 'Delete succeeded';\r\n this.msgSaveSuccessful = 'Save succeeded';\r\n this.msgNoChangesToSave = 'No changes to save';\r\n this.msgSaveInProgress = 'Save in progress';\r\n this.msgInvalidData = 'Invalid data';\r\n this.msgDirtyPreventsReadOnly = 'Save or revert before disabling editing';\r\n this.msgDirtyPreventsNavigate = 'Save or revert before navigating';\r\n this.msgDirtyPreventsClose = 'Save or revert before closing window';\r\n this.msgDirtyPreventsDeleteExistingRecord = 'Save or revert before deleting';\r\n this.msgNoDeleteAccess = 'Contact administrator about delete access';\r\n this.msgCannotDeleteNewAndExistingRecords = 'Delete new or existing records - but not both';\r\n this.msgDeleteReferencingRecordsFirst = 'Delete all referencing records first';\r\n }\r\n\r\n /**\r\n * If text.length exceeds length, then returns a string that is the first length chars \r\n * of text plus suffix. Otherwise, returns text.\r\n * @param {string} text\r\n * @param {number} length\r\n * @param {string} suffix\r\n * @return {string}\r\n */\r\n private truncate = (text: string, length: number, suffix: string): string => {\r\n return text.length > length ? text.substr(0, length) + suffix : text.toString();\r\n }\r\n\r\n isMac = (): boolean => {\r\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\r\n }\r\n\r\n /**\r\n * Formats the text to use for the window title.\r\n * @param {string} text\r\n * @return {string} - Window title.\r\n */\r\n formatWindowTitle = (text: string): string => {\r\n return this.truncate(text, 60, '...');\r\n }\r\n\r\n /**\r\n * Returns a message indicating that an entity or entities were deleted in another view. \r\n * @param {string} entityTypeLabel - Description of the entity type.\r\n * @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.\r\n * @param [{number}] count - Number of entities.\r\n */\r\n fmtEntityDeletedInOtherView = (entityTypeLabel: string, entityTypePluralLabel: string, count: number): string => {\r\n if (!count || count === 1)\r\n return entityTypeLabel + ' deleted in another view';\r\n return count + ' ' + entityTypePluralLabel + ' deleted in another view';\r\n };\r\n\r\n /**\r\n * Returns a message used to confirm deletion of an entity or entities.\r\n * @param {string} entityTypeLabel - Description of the entity type.\r\n * @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.\r\n * @param [{number}] count - Number of entities.\r\n */\r\n fmtDeleteConfirmation = (\r\n entityTypeLabel: string,\r\n entityTypePluralLabel: string | null = null,\r\n count: number | null = null): string => {\r\n if (count === null)\r\n return 'Are you sure you want to delete this ' + entityTypeLabel + '?';\r\n if (count === 1)\r\n return 'Are you sure you want to delete 1 ' + entityTypeLabel + '?';\r\n return 'Are you sure you want to delete ' + count + ' ' + entityTypePluralLabel + '?';\r\n };\r\n\r\n /**\r\n * Returns a message formatted from an error object.\r\n * @param {error|string} error \r\n * @returns {string}\r\n */\r\n fmtErrorToShow = (error: any): string => {\r\n if (typeof error === 'string')\r\n error = new Error(error);\r\n var lines = [];\r\n lines.push(error.message);\r\n var exception = error.detail;\r\n while (exception) {\r\n var message = exception.ExceptionMessage;\r\n if (!_.contains(lines, message))\r\n lines.push(message);\r\n exception = exception.InnerException;\r\n }\r\n if (error.entityErrors) {\r\n error.entityErrors.forEach((entityError: any) => {\r\n lines.push('Entity <' + entityError.propertyName + '>: ' + entityError.errorMessage);\r\n });\r\n }\r\n if (error.stackTrace)\r\n lines.push(error.stackTrace);\r\n var text = lines.join('\\r\\n\\r\\n');\r\n if (!text)\r\n text = _.map(error, (value: string, key: string) => { return key + ': ' + value }).join('\\r\\n');\r\n return text;\r\n };\r\n\r\n /**\r\n * Returns a message formatted from an exception object.\r\n * @param {object} exception\r\n * @returns {string}\r\n */\r\n fmtExceptionToShow = (exception: any): string => {\r\n var lines = [];\r\n while (exception) {\r\n var message = exception.Message;\r\n if (!_.contains(lines, message))\r\n lines.push(message);\r\n exception = exception.InnerException;\r\n }\r\n return lines.join('\\r\\n\\r\\n');\r\n };\r\n\r\n /**\r\n * Returns a message for a data error type.\r\n * @param {string} typeName \r\n * @returns {string} \r\n */\r\n fmtDataError = (typeName: string): string => {\r\n if (typeName.indexOf('OptimisticLockViolation') >= 0)\r\n return 'The record was edited already, by another user. Please reload and attempt your edit again.';\r\n if (typeName.indexOf('DataConstraintViolation') >= 0)\r\n return 'Foreign key constraint violation';\r\n if (typeName.indexOf('DuplicateKeyError') >= 0)\r\n return 'Duplicate key error';\r\n return typeName;\r\n }\r\n\r\n /**\r\n * Returns a message for an import error.\r\n * @param {string} typeName \r\n * @returns {string} \r\n */\r\n fmtImportError = (error: any) => {\r\n var details = [];\r\n if (this.util.isNumber(error.RecordIndex))\r\n details.push('record ' + error.RecordIndex);\r\n if (this.util.isNumber(error.ColumnIndex))\r\n details.push('column ' + error.ColumnIndex + ' [' + error.ColumnHeader + ']');\r\n var message = '';\r\n if (error.SourceContext)\r\n message += error.SourceContext;\r\n if (details.length)\r\n message += '(' + details.join(', ') + ')';\r\n if (message.length)\r\n message += ': ';\r\n return message + error.Message;\r\n }\r\n\r\n /**\r\n * Serializes an object as URL parameters. The object should be a base type or have \r\n * properties that are each base types. Does not support a property with structure.\r\n * @param {Object} data \r\n * @returns {String} \r\n */\r\n formatAsUrlParameters = (data: any) => {\r\n if (typeof data !== 'object')\r\n return (data == null ? '' : data.toString());\r\n var buffer = [];\r\n for (var name in data) {\r\n if (!data.hasOwnProperty(name)) {\r\n continue;\r\n }\r\n var value = data[name];\r\n buffer.push(\r\n encodeURIComponent(name) +\r\n '=' + encodeURIComponent(value == null ? '' : value));\r\n }\r\n var source = buffer.join('&')\r\n .replace(/%20/g, '+');\r\n return (source);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUser implements ITruUser {\r\n private _ref: number = -1;\r\n private _username: string | null = null;\r\n private _firstName: string | null = null;\r\n private _lastName: string | null = null;\r\n private _email: string | null = null;\r\n private _roles: string[] | null = null;\r\n\r\n constructor() {}\r\n\r\n get activeUserRef(): number {\r\n return this._ref;\r\n }\r\n\r\n get username(): string | null {\r\n return this._username;\r\n }\r\n\r\n get firstName(): string | null {\r\n return this._firstName;\r\n }\r\n\r\n get lastName(): string | null {\r\n return this._lastName;\r\n }\r\n\r\n get email(): string | null {\r\n return this._email;\r\n }\r\n\r\n get roles(): string[] | null {\r\n return this._roles;\r\n }\r\n\r\n hasRoles = (roles: string[]) => {\r\n if (this._roles === null)\r\n return true;\r\n return _.intersection(roles, this._roles).length > 0; \r\n };\r\n\r\n create = (user: ITruUser): void => {\r\n this._ref = user.activeUserRef;\r\n this._username = user.username;\r\n this._firstName = user.firstName;\r\n this._lastName = user.lastName;\r\n this._email = user.email;\r\n this._roles = user.roles;\r\n }\r\n\r\n destroy = (): void => {\r\n this._ref = -1;\r\n this._username = null;\r\n this._firstName = null;\r\n this._lastName = null;\r\n this._email = null;\r\n this._roles = null;\r\n } \r\n}\r\n\r\nexport interface ITruUser {\r\n activeUserRef: number;\r\n username: string | null;\r\n firstName: string | null;\r\n lastName: string | null;\r\n email: string | null;\r\n roles: string[] | null;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Entity, EntityManager, EntityQuery, FetchStrategy } from \"breeze-client\";\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base'\r\nimport { TruUiNotification } from \"./tru-ui-notification\";\r\nimport { TruDataContext } from \"./tru-data-context\";\r\nimport { TruBreezeContext } from \"./tru-breeze-context-factory\";\r\nimport * as _ from \"underscore\";\r\nimport { HttpClient, HttpHeaders, HttpResponse } from \"@angular/common/http\";\r\nimport { defer, from, Observable, of } from 'rxjs';\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruChoice } from \"../classes/tru-choice\";\r\nimport { TruNameValue } from \"../classes/tru-name-value\";\r\nimport { TruUser } from \"./tru-user\";\r\nimport { TruTextManager } from \"./tru-text-manager\";\r\n\r\n@Injectable()\r\nexport class TruEntityAccessor {\r\n private _breezeContext!: TruBreezeContext;\r\n private _entityManager!: EntityManager;\r\n private _maxRecordCount: number = 0;\r\n private _baseUrl: string;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification,\r\n private textManager: TruTextManager,\r\n private user: TruUser) {\r\n this._maxRecordCount = this.appEnvironment.maxRecordCount;\r\n this._baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n set context(dataContext: TruDataContext) {\r\n this._breezeContext = dataContext.breezeContext;\r\n this._entityManager = dataContext.entityManager;\r\n }\r\n\r\n private getQueryServiceName = (entity: typeof TruEntityBase) => {\r\n return 'Query' + entity.name;\r\n }\r\n\r\n private warnIfMaxRecords = (entities: any[], entityName: string) => {\r\n if (entities.length >= this.appEnvironment.maxRecordCount)\r\n this.uiNotification.warning('[' + entityName + '] has more records available than supported');\r\n }\r\n\r\n private formatQueryChoices = (query: EntityQuery, entities: Array<Entity>, pKeyName: string, hid: string | null = null): Array<TruChoice> => {\r\n if (query && query.orderByClause)\r\n return _.map(entities, (entity: any) => { return { value: { $: entity[pKeyName] }, label: hid !== null ? hid : entity.HID }; });\r\n else\r\n return _.sortBy(_.map(entities, (entity: any) => { return { value: { $: entity[pKeyName] }, label: hid !== null ? hid : entity.HID }; }), 'label');\r\n }\r\n\r\n private formatNameValues = (query: EntityQuery, entities: Array<Entity>, pKeyName: string): Array<TruNameValue> => {\r\n if (query && query.orderByClause)\r\n return _.map(entities, (entity: any) => { return { name: entity.Name, value: { $: entity.Value }, entity: entity }; });\r\n else\r\n return _.sortBy(_.map(entities, (entity: any) => { return { name: entity.Name, value: { $: entity.Value }, entity: entity }; }), 'label');\r\n }\r\n\r\n add = (entity: typeof TruEntityBase, contextFilters: any = null) => {\r\n let newEntity = this._entityManager.createEntity(entity.prototype.entityType);\r\n return newEntity;\r\n };\r\n\r\n search = (entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n expands: [] | null,\r\n global: boolean): Observable<Entity[]> => {\r\n\r\n var query: any;\r\n if (expands && expands.length) {\r\n if (global)\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).expand(expands.join(', '));\r\n else\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).expand(expands.join(', ')).top(this.appEnvironment.maxRecordCount);\r\n } else {\r\n if (global)\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n else\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).top(this.appEnvironment.maxRecordCount);\r\n }\r\n\r\n if (setupQuery != null)\r\n query = setupQuery(query);\r\n\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n if (!global)\r\n this.warnIfMaxRecords(queryData.results, entity.name);\r\n return queryData.results;\r\n })));\r\n };\r\n\r\n searchCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n expands: [] | null = null): Observable<Entity[]> => {\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n return of(this._entityManager.executeQueryLocally(query));\r\n };\r\n\r\n searchCacheOnlySynchronously = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n expands: [] | null = null): Array<any> => {\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n return this._entityManager.executeQueryLocally(query);\r\n };\r\n\r\n searchByRefCacheOnlySynchronously = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined = undefined): Array<any> => {\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n query = query.where(entity.name + 'Ref', '==', ref);\r\n return this._entityManager.executeQueryLocally(query);\r\n };\r\n\r\n searchQueryChoices = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n goToServer: boolean = false,\r\n ref: number | null | undefined = undefined,\r\n allRecords: boolean = false,\r\n dependantEntty: typeof TruEntityBase | undefined = undefined): Observable<TruChoice[]> => {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n if (dependantEntty)\r\n query = setupQuery(query, dependantEntty) ?? query;\r\n else\r\n query = setupQuery(query, entity) ?? query;\r\n if (ref)\r\n query = query.where(entity.name + 'Ref', '==', ref);\r\n if (!allRecords)\r\n query = query.top(this.appEnvironment.maxRecordCount);\r\n if (goToServer) {\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return this.formatQueryChoices(query, queryData.results, pkeyName, null);\r\n })));\r\n } else {\r\n return of(this.formatQueryChoices(query, this._entityManager.executeQueryLocally(query), pkeyName, null));\r\n }\r\n };\r\n\r\n searchNameValuesCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n ref: number | null | undefined = undefined): Observable<TruNameValue[]> => {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n query = setupQuery(query) ?? query;\r\n if (ref)\r\n query = query.where(entity.name + 'Ref', '==', ref);\r\n return of(this.formatNameValues(query, this._entityManager.executeQueryLocally(query), pkeyName));\r\n };\r\n\r\n searchByRef = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined) => {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n fetchStrategy: FetchStrategy.FromServer\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return this.formatQueryChoices(query, queryData.results, pkeyName, null);\r\n })));\r\n };\r\n\r\n searchByRefPreferedCache = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined) => {\r\n let cachedEntity = this.searchByRefCacheOnly(entity, ref);\r\n if (cachedEntity) {\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return queryData.results[0];\r\n })));\r\n }\r\n else {\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n fetchStrategy: FetchStrategy.FromServer\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return queryData.results[0];\r\n })));\r\n }\r\n };\r\n\r\n searchByRefCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined,\r\n includeDeleted: boolean = false) => {\r\n\r\n if (!includeDeleted)\r\n includeDeleted = false;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n includeDeleted: includeDeleted,\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n var result = this._entityManager.executeQueryLocally(query)[0];\r\n if (result)\r\n return result;\r\n return null;\r\n };\r\n\r\n searchByRefArrayCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n refs: Array<number>,\r\n includeDeleted: boolean = false) => {\r\n \r\n if (!includeDeleted)\r\n includeDeleted = false;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n includeDeleted: includeDeleted,\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).using(queryOptions);\r\n\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n if (query === null)//setupQuery() returned null to select no rows\r\n return [];\r\n if (refs.length > 0) {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n var predicate = this._breezeContext.createPredicate(pkeyName, '==', refs[0]);\r\n _.rest(refs, 1).forEach(function (ref) {\r\n predicate = predicate.or(pkeyName, '==', ref);\r\n });\r\n query = query.where(predicate);\r\n }\r\n\r\n var results = this._entityManager.executeQueryLocally(query);\r\n if (results && results.length)\r\n return results;\r\n return null;\r\n }\r\n\r\n searchByRefWithQuery = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any,\r\n ref: number): Observable<Entity[]> => {\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n query = setupQuery(query);\r\n\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n var predicate = this._breezeContext.createPredicate(pkeyName, '==', ref);\r\n query = query.where(predicate);\r\n\r\n var localResults = this._entityManager.executeQueryLocally(query);\r\n\r\n if (localResults.length)\r\n return of(localResults);\r\n\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData) => {\r\n return queryData.results;\r\n })));\r\n };\r\n\r\n searchUserByRefCacheOnly = (\r\n ref: number | null | undefined,\r\n includeDeleted: boolean = false) => {\r\n\r\n if (!includeDeleted)\r\n includeDeleted = false;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n includeDeleted: includeDeleted,\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n var query = this._breezeContext.createQuery('QueryTruDbUser').where('TruDbUserRef', '==', ref).using(queryOptions);\r\n var result = this._entityManager.executeQueryLocally(query)[0];\r\n if (result)\r\n return result;\r\n return null;\r\n };\r\n\r\n customSearch = (\r\n entity: typeof TruEntityBase,\r\n query: any) => {\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n this.warnIfMaxRecords(queryData.results, entity.name);\r\n return queryData.results;\r\n })));\r\n };\r\n\r\n clone = (data: object) => {\r\n return this.httpClient.post(this._baseUrl + '/api/clone/execute', JSON.stringify(data), {\r\n headers: { 'Content-Type': 'application/json; charset=UTF-8' },\r\n responseType: 'json'\r\n });\r\n }\r\n\r\n export = (\r\n entity: typeof TruEntityBase,\r\n gridSpec: string,\r\n setupQuery: any | null,\r\n entityRefs: string | null,\r\n options: any) => {\r\n\r\n options = options || {};\r\n var args = {\r\n runAsync: false,\r\n useNames: false,\r\n useEmptyTags: false,\r\n entityRefs: null as string | null,\r\n entityTypeName: entity.name,\r\n gridSpec: gridSpec\r\n };\r\n if (options.async)\r\n args.runAsync = true;\r\n if (options.useNames)\r\n args.useNames = true;\r\n if (options.useEmptyTags)\r\n args.useEmptyTags = true;\r\n var queryText;\r\n if (options.useGrid) {\r\n args.entityRefs = entityRefs;\r\n } else {\r\n var query = this._breezeContext.createQuery('noname');\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n if (query === null) {\r\n this.uiNotification.warning('No records selected by query');\r\n return;\r\n } else {\r\n queryText = query._toUri(this._entityManager);\r\n queryText = queryText.split('?')[1];\r\n }\r\n }\r\n\r\n this.uiNotification.info(args.runAsync ? 'Queuing export...' : 'Exporting...');\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == XMLHttpRequest.DONE) {\r\n if (xhr.status == 200) {\r\n\r\n }\r\n else {\r\n console.log(xhr.responseType);\r\n }\r\n }\r\n };\r\n xhr.open('POST', this._baseUrl + '/api/export/execute');\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(JSON.stringify({\r\n userRef: this.user.activeUserRef,\r\n runAsync: args.runAsync,\r\n useNames: args.useNames,\r\n useEmptyTags: args.useEmptyTags,\r\n entityRefs: args.entityRefs,\r\n entityTypeName: args.entityTypeName,\r\n gridSpec: args.gridSpec,\r\n query: queryText\r\n }))\r\n };\r\n\r\n downloadFromUrl = (url: string, data: any) => {\r\n this.httpClient.post(this._baseUrl + url, JSON.stringify(data), {\r\n headers: { 'Content-Type': 'application/json; charset=UTF-8' },\r\n responseType: 'arraybuffer',\r\n observe: 'response'\r\n })\r\n .subscribe({\r\n next: (response: HttpResponse<any>) => { this.saveDownloadedFile(response); },\r\n error: (ex: any) => { console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message])) }\r\n });\r\n };\r\n\r\n downloadFromService = (serviceName: string, data: any) => {\r\n this.downloadFromUrl(serviceName, data);\r\n };\r\n\r\n uploadFromUrl = (url: string, data: FormData) => {\r\n this.httpClient.post(this._baseUrl + url, data, {\r\n headers: { 'Content-Type': 'application/json; charset=UTF-8' },\r\n responseType: 'arraybuffer',\r\n observe: 'response'\r\n })\r\n .subscribe({\r\n next: (response: HttpResponse<any>) => { this.saveDownloadedFile(response); },\r\n error: (ex: any) => { console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message])) }\r\n });\r\n };\r\n\r\n /**\r\n * Request an action.\r\n * @param {string} actionName - Name of the action.\r\n * @param {string} entityRefs - Comma separated list of entity pkey values.\r\n * @returns {promise} on success, passes the results to success handler; \r\n * on failure, passes exception to fail handler.\r\n */\r\n requestAction = (actionName: string, entityRefs: string) => {\r\n var query = this._breezeContext.createQuery('RequestAction' + actionName)\r\n .withParameters({\r\n $method: 'POST',\r\n $encoding: 'JSON',\r\n $data: { refs: entityRefs }\r\n });\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {;\r\n return queryData.results;\r\n })));\r\n``}\r\n\r\n private saveDownloadedFile = async (response: HttpResponse<any>) => {\r\n var contentDisposition = response.headers.get('content-disposition');\r\n if (!contentDisposition)\r\n return; // NOTE: cannot save without header info\r\n var filename = this.extractFilenameFromContentDisposition(contentDisposition);\r\n const buffer = await response.body;\r\n var blob = new Blob([buffer], { type: response.headers.get('content-type') as string });\r\n var link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', filename);\r\n link.click();\r\n link.remove();\r\n }\r\n\r\n private extractFilenameFromContentDisposition = (text: string) => {\r\n var parts = _.map(text.split(';'), function (part) { return part.trim(); });\r\n var prefix = 'filename=';\r\n var filenamePart = _.find(parts, function (part) { return part.substring(0, prefix.length) === prefix });\r\n if (!filenamePart)\r\n return 'file';\r\n var filename = filenamePart.substring(prefix.length);\r\n filename = filename.replace(/\"/g, '');\r\n return filename;\r\n }\r\n\r\n /**\r\n * Imports the data of a set of files.\r\n * \r\n * IMPLEMENTATION\r\n * The input element stores the list of files the user selects. If the user were to\r\n * use the same input element to select the same file(s) the next time, then the input\r\n * element would not fire the change event -- resulting in no import. Therefore, need\r\n * to clear the file selection. The implementation of clearing is slightly different\r\n * for IE vs. Chrome. In Chrome, clearing the selection (by setting the element value\r\n * to null) results in clearing the FileList object that was passed to the change handler\r\n * (this function). Therefore, need to clear the selection _after_ using the passed\r\n * FileList object. For IE, clearing the selection does not clear the FileList passed \r\n * to the handler, but it does cause the change handler to fire. To ignore this event,\r\n * return if the FileList is empty -- which it is since just cleared it.\r\n */\r\n import = (files: Array<File>) => {\r\n var formData = new FormData();\r\n Array.from(files || []).forEach((file) => {\r\n formData.append('file', file);\r\n });\r\n\r\n //var contextFilterValues = contextFilters.serializeValues();\r\n //if (contextFilterValues)\r\n // formData.append('contextFilters', contextFilterValues);\r\n\r\n this.httpClient.post(this._baseUrl + '/api/import/execute', JSON.stringify(formData), {\r\n headers: { 'Content-Type': '' },\r\n responseType: 'arraybuffer',\r\n observe: 'response'\r\n })\r\n .subscribe({\r\n next: (response: any) => {\r\n if (response.body.byteLength)\r\n this.saveDownloadedFile(response);\r\n let operationStatusHeader = response.headers.get('Operation-Status');\r\n let operationStatus = operationStatusHeader ? JSON.parse(operationStatusHeader) : null;\r\n if (operationStatus.Errors.length > 0) {\r\n var lines = _.map(operationStatus.Errors, this.textManager.fmtImportError);\r\n _.each(lines, (line) => { this.uiNotification.log(line); });\r\n this.uiNotification.warning('Records imported: ' + response.RecordsImported + ', Records read: ' + response.RecordsRead + ', Errors: ' + response.Errors.length);\r\n } else {\r\n this.uiNotification.info('Records imported: ' + response.RecordsImported);\r\n }\r\n },\r\n error: (ex: any) => {\r\n console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message]))\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Entity, EntityAction, EntityChangedEventArgs, EntityState, EntityType, ValidationError, breeze } from \"breeze-client\";\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\r\nimport { TruDataChange } from '../classes/tru-data-change';\r\nimport { TruNavigationPropertyConfig } from '../classes/tru-navigation-property-config';\r\nimport { ITruAncestor } from '../interfaces/tru-ancestor';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruBreezeContext, TruBreezeContextFactory } from './tru-breeze-context-factory';\r\nimport { TruEntityAccessor } from './tru-entity-accessor';\r\nimport { TruGlobalDataContext } from './tru-global-data-context';\r\nimport { TruModelNavigationPropertiesLookup } from './tru-model-navigation-properties-lookup';\r\nimport { TruUiNotification } from './tru-ui-notification';\r\n\r\n@Injectable()\r\nexport class TruDataContext {\r\n private _propertyChanged$: Subject<any> = new Subject<any>();\r\n private _dataChanged$: Subject<TruDataChange> = new Subject<TruDataChange>();\r\n\r\n private _breezeContext: TruBreezeContext;\r\n private _pendingDeleteEntities: Array<Entity> = [];\r\n private _pendingCascadeDeleteEntities: Array<Entity> = [];\r\n\r\n private updateDependants$: Subject<ITruAncestor> = new Subject<ITruAncestor>();\r\n\r\n constructor(\r\n private breezeContextFactory: TruBreezeContextFactory,\r\n private modelNavigationPropertiesLookup: TruModelNavigationPropertiesLookup,\r\n private globalDataContext: TruGlobalDataContext,\r\n private appEnvironment: TruAppEnvironment,\r\n private entityAccessor: TruEntityAccessor,\r\n private uiNotification: TruUiNotification\r\n ) {\r\n this._breezeContext = this.breezeContextFactory.createContext();\r\n this.entityAccessor.context = this;\r\n\r\n this.entityManager.entityChanged.subscribe((changeArgs: EntityChangedEventArgs) => {\r\n if (\r\n changeArgs.entityAction !== EntityAction.AttachOnQuery &&\r\n changeArgs.entityAction !== EntityAction.MergeOnQuery &&\r\n changeArgs.entityAction !== EntityAction.MergeOnSave) {\r\n this.propertyChanged(changeArgs);\r\n this.entityChangedHandler(changeArgs);\r\n }\r\n });\r\n }\r\n\r\n onPropertyChanged() {\r\n return this._propertyChanged$;\r\n }\r\n\r\n propertyChanged(changeArgs: EntityChangedEventArgs | null) {\r\n this._propertyChanged$.next(changeArgs);\r\n }\r\n\r\n onDataChanged() {\r\n return this._dataChanged$;\r\n }\r\n\r\n dataChanged(change: TruDataChange) {\r\n this._dataChanged$.next(change);\r\n }\r\n\r\n validationChangeDetection = new Observable((observer) => {\r\n this.entityManager.validationErrorsChanged.subscribe(entities => {\r\n observer.next(entities);\r\n });\r\n });\r\n\r\n parseErrorMessages = (validationErrors: Array<ValidationError>): string => {\r\n let errorMsg: string = '';\r\n validationErrors.forEach((error) => {\r\n errorMsg += error.errorMessage + '; ';\r\n });\r\n return errorMsg;\r\n }\r\n\r\n getValidationErrorsForProperty = (entity: Entity, propertyName: string): any => {\r\n var errors = entity.entityAspect.getValidationErrors();\r\n errors = errors.filter((err: any): any => {\r\n return err.propertyName === propertyName;\r\n });\r\n return errors;\r\n }\r\n\r\n getValidationErrors = (entities: Array<Entity> | null = null): any => {\r\n entities = entities || this.entityManager.getChanges();\r\n var errorsPerEntity = entities!.map((entity): ValidationError[] => {\r\n var errors = entity.entityAspect.getValidationErrors();\r\n errors = errors.map((err: any): any => {\r\n return {\r\n entity: entity,\r\n errorMessage: err.errorMessage,\r\n property: err.property\r\n }\r\n });\r\n return errors;\r\n });\r\n return errorsPerEntity;\r\n }\r\n\r\n private modelPropertyChangeHandler = (\r\n entity: Entity,\r\n propertyName: string | null | undefined,\r\n changeArgs: EntityChangedEventArgs) => {\r\n\r\n if (propertyName)\r\n (entity as TruEntityBase).Merge_Data_Set.clear(propertyName);\r\n\r\n // @ts-expect-error\r\n let handler = entity.entityType.getProperty(propertyName as string)?._onChange?.handler;\r\n if (handler)\r\n handler(entity, propertyName, changeArgs.args, this, this.globalDataContext, false);\r\n }\r\n\r\n private modelPropertyOnSaveHandler = (entity: Entity) => {\r\n // @ts-expect-error\r\n let handler = entity.entityType._onSave.handler;\r\n if (handler)\r\n handler(entity);\r\n }\r\n\r\n private modelPropertyOnAddHandler = (entity: Entity) => {\r\n // @ts-expect-error\r\n let handler = entity.entityType._onAdd.handler;\r\n if (handler)\r\n handler(entity, this);\r\n }\r\n\r\n private modelPropertyOnRejectHandler = (entity: TruEntityBase) => {\r\n entity.Merge_Data_Set.clearAll();\r\n }\r\n\r\n /**\r\n * Handles breeze entity changed event.\r\n */\r\n private entityChangedHandler = (changeArgs: EntityChangedEventArgs) => {\r\n try {\r\n switch (changeArgs.entityAction) {\r\n case breeze.EntityAction.PropertyChange:\r\n this.modelPropertyChangeHandler(changeArgs.entity as Entity, changeArgs.args?.propertyName, changeArgs);\r\n break;\r\n case breeze.EntityAction.MergeOnSave:\r\n this.modelPropertyOnSaveHandler(changeArgs.entity as Entity);\r\n break;\r\n case breeze.EntityAction.Attach:\r\n this.modelPropertyOnAddHandler(changeArgs.entity as Entity);\r\n break;\r\n case breeze.EntityAction.EntityStateChange:\r\n break;\r\n case breeze.EntityAction.RejectChanges:\r\n this.modelPropertyOnRejectHandler(changeArgs.entity as TruEntityBase);\r\n break;\r\n }\r\n } catch (e: any) {\r\n // NOTE: breeze silently ignores handler exceptions; so handler here\r\n this.uiNotification.error(e.message, e);\r\n throw e;\r\n }\r\n }\r\n\r\n private formatValidationErrors = (entities: Array<Entity> | null = null): Array<string[]> => {\r\n let entitiesWithErrors = this.getValidationErrors(entities);\r\n let formattedErrors = new Array<string[]>();\r\n entitiesWithErrors.forEach((entityWithErrors: any) => {\r\n if (entityWithErrors.length) {\r\n formattedErrors.push(entityWithErrors.map((e: any) => {\r\n if (e.propertyName) {\r\n return e.entity.entityType.defaultResourceName + '.' + e.propertyName + ': ' + e.errorMessage;\r\n }\r\n var mergeData = JSON.parse(e.entity.Merge_Data);\r\n if (mergeData &&\r\n mergeData.constructor === Object &&\r\n Object.entries(mergeData).length > 0 &&\r\n mergeData[e.property.name]) {\r\n return mergeData[e.property.name].modifiedBy + ' changed ' + e.property.name + ' to ' + mergeData[e.property.name].value + '. Accept or Decline the change. '\r\n }\r\n var propertyName = e.property.name ? e.property.name : '[Unknown Property]';\r\n return e.entity.entityType.defaultResourceName + '.' + propertyName + ': has invalid data.'\r\n }));\r\n }\r\n });\r\n\r\n return formattedErrors;\r\n }\r\n\r\n private findCachedCascadeDeleteDescendants = (entity: Entity): Array<Entity> => {\r\n let descendants: Array<Entity> = [];\r\n type keyOfEntity = keyof typeof entity;\r\n let type = entity.entityType;\r\n let typeName = type.defaultResourceName;\r\n let entityChildrenNames: any = this.modelNavigationPropertiesLookup.lookup.get(typeName);\r\n if (entityChildrenNames) {\r\n entityChildrenNames.forEach((navigationProperty: TruNavigationPropertyConfig) => {\r\n let property = entity[navigationProperty.name as keyOfEntity] as any;\r\n property.forEach((child: Entity) => {\r\n if (navigationProperty.doesCascadeDelete && child.entityAspect.entityState !== EntityState.Added) {\r\n throw new Error('Delete of selected item is not possible due to related child that is not setup for cascade delete. Delete children items first.');\r\n }\r\n descendants = descendants.concat(this.findCachedCascadeDeleteDescendants(child));\r\n });\r\n descendants = property.concat(descendants);\r\n });\r\n }\r\n return descendants;\r\n }\r\n\r\n private markCachedDescendantsForDelete = (entities: Array<Entity>) => {\r\n var cascadeDeleteDescendantsPerEntity = entities.map((entity: Entity) => { return this.findCachedCascadeDeleteDescendants(entity); }, entities);\r\n var cascadeDeleteDescendants = cascadeDeleteDescendantsPerEntity.reduce((memo, i) => { return memo.concat(i); });\r\n cascadeDeleteDescendants.forEach((entity: Entity) => { this.entityManager.detachEntity(entity); });\r\n this._pendingDeleteEntities = this._pendingDeleteEntities.concat(entities);\r\n let combined = this._pendingCascadeDeleteEntities.concat(cascadeDeleteDescendants);\r\n this._pendingCascadeDeleteEntities = combined.filter((n, i) => combined.indexOf(n) === i);\r\n }\r\n\r\n private markForDelete = (entities: Array<Entity>) => {\r\n if (entities.length > 0) {\r\n this.markCachedDescendantsForDelete(entities);\r\n entities.forEach((entity: Entity) => {\r\n entity.entityAspect.setDeleted();\r\n //entity._associatedDataCached = false;\r\n });\r\n }\r\n }\r\n\r\n get breezeContext() {\r\n return this._breezeContext;\r\n }\r\n\r\n get entityManager() {\r\n return this._breezeContext.entityManager;\r\n }\r\n\r\n get onHasChanged() {\r\n return this._breezeContext.entityManager.hasChangesChanged;\r\n } \r\n\r\n hasChanges = (entityTypes: Array<EntityType> = []) => {\r\n if (entityTypes.length)\r\n return this._breezeContext.entityManager.getChanges(entityTypes);\r\n return this._breezeContext.entityManager.getChanges();\r\n }\r\n\r\n entityAccess = (): TruEntityAccessor => {\r\n return this.entityAccessor;\r\n }\r\n\r\n exportCahce = () => {\r\n console.log(this._breezeContext.entityManager.exportEntities());\r\n }\r\n\r\n onUpdateDependants() {\r\n return this.updateDependants$;\r\n }\r\n\r\n updateDependants = (table: string, ancestorRef: string) => {\r\n this.updateDependants$.next({ table: table, ancestorRef: ancestorRef });\r\n }\r\n\r\n save = (\r\n entities: Array<Entity> | null = null,\r\n deleteOperation: boolean = false) => {\r\n return new Promise<void>((resolve, reject) => {\r\n if (this.appEnvironment.isSaving) {\r\n this.uiNotification.error(this.appEnvironment.msgSaveInProgress);\r\n resolve();\r\n return;\r\n }\r\n var validationErrorMessages = this.formatValidationErrors(entities);\r\n if (validationErrorMessages.length > 0) {\r\n this.uiNotification.error(this.appEnvironment.msgInvalidData, validationErrorMessages[0]);\r\n resolve();\r\n return;\r\n }\r\n\r\n if (!this.hasChanges().length) {\r\n this.uiNotification.warning(this.appEnvironment.msgNoChangesToSave);\r\n resolve();\r\n return;\r\n }\r\n this.appEnvironment.isSaving = true;\r\n this.entityManager.saveChanges().then(() => {\r\n if (!deleteOperation) {\r\n this.uiNotification.success(this.appEnvironment.msgSaveSuccessful);\r\n this.appEnvironment.saveComplete({ successful: true });\r\n }\r\n resolve();\r\n }).catch((e: Error) => {\r\n this.uiNotification.error((e as Error).message);\r\n this.appEnvironment.saveComplete({ successful: false });\r\n reject(e);\r\n }).finally(() => {\r\n this.appEnvironment.isSaving = false;\r\n this.propertyChanged(null);\r\n });\r\n });\r\n }\r\n\r\n saveWithoutNotification = () => {\r\n return new Promise<void>((resolve, reject) => { \r\n if (this.appEnvironment.isSaving) {\r\n this.uiNotification.error(this.appEnvironment.msgSaveInProgress);\r\n resolve();\r\n return;\r\n }\r\n this.appEnvironment.isSaving = true;\r\n this.entityManager.saveChanges().then(() => { \r\n this.appEnvironment.saveComplete({ successful: true });\r\n resolve();\r\n }).catch((e: any) => {\r\n this.appEnvironment.saveComplete({ successful: false });\r\n reject(e);\r\n }).finally(() => {\r\n this.appEnvironment.isSaving = false;\r\n this.propertyChanged(null);\r\n });\r\n });\r\n }\r\n\r\n saveSettings = () => {\r\n return new Promise<void>((resolve, reject) => {\r\n if (this.appEnvironment.isSaving) {\r\n this.uiNotification.error(this.appEnvironment.msgSaveInProgress);\r\n resolve();\r\n return;\r\n }\r\n this.appEnvironment.isSaving = true;\r\n this.entityManager.saveChanges().then(() => {\r\n this.uiNotification.success(this.appEnvironment.msgSettingsUpdatedSuccessful);\r\n this.appEnvironment.saveComplete({ successful: true });\r\n resolve();\r\n }).catch((e: any) => {\r\n this.appEnvironment.saveComplete({ successful: false });\r\n reject(e);\r\n }).finally(() => {\r\n this.appEnvironment.isSaving = false;\r\n this.propertyChanged(null);\r\n });\r\n });\r\n }\r\n\r\n revert = (): void => {\r\n this.uiNotification.confirm('Confirm Action', 'Revert ' + this.hasChanges().length + ' changed record(s)', true, true, \"No\", \"Yes\").then((confirm: boolean) => {\r\n if (confirm) {\r\n this.entityManager.rejectChanges();\r\n this.appEnvironment.revertComplete({ successful: true });\r\n }\r\n });\r\n }\r\n\r\n revertWithoutPrompt = (): void => {\r\n this.revert();\r\n this.appEnvironment.revertComplete({ successful: true });\r\n }\r\n\r\n delete = (\r\n entities: Array<Entity>,\r\n confirmMsg: string,\r\n onSuccess: Function | undefined = undefined) => {\r\n var newEntities: Array<Entity> = [];\r\n var existingEntities: Array<Entity> = [];\r\n entities.forEach(function (e) {\r\n if (e.entityAspect.entityState.isAdded())\r\n newEntities.push(e);\r\n else\r\n existingEntities.push(e);\r\n });\r\n if (newEntities.length && existingEntities.length) {\r\n this.uiNotification.warning(this.appEnvironment.msgCannotDeleteNewAndExistingRecords);\r\n return;\r\n }\r\n if (existingEntities.length) {\r\n if (this.hasChanges().length) {\r\n this.uiNotification.warning(this.appEnvironment.msgDirtyPreventsDeleteExistingRecord);\r\n return;\r\n }\r\n }\r\n\r\n this.uiNotification.confirm('Confirm Action', confirmMsg, true, true, \"No\", \"Yes\").then((confirm: boolean) => {\r\n if (confirm) {\r\n if (newEntities.length) {\r\n newEntities.forEach((entity: Entity) => {\r\n entity.entityAspect.clearValidationErrors();\r\n });\r\n this.markForDelete(newEntities);\r\n if (onSuccess) onSuccess();\r\n return;\r\n }\r\n try {\r\n this.markForDelete(existingEntities);\r\n } catch (exception: any) {\r\n this.uiNotification.error(exception.message);\r\n return;\r\n }\r\n this.save(null, true).then(() => {\r\n var entitiesDeleted = this._pendingDeleteEntities.concat(this._pendingCascadeDeleteEntities);\r\n this.appEnvironment.deleteComplete({ successful: true, entities: entitiesDeleted });\r\n if (entitiesDeleted.length) {\r\n this._pendingCascadeDeleteEntities = [];\r\n this._pendingDeleteEntities = [];\r\n }\r\n this.uiNotification.success(this.appEnvironment.msgDeleteSuccessful);\r\n if (onSuccess) onSuccess(true);\r\n }).catch((error) => {\r\n\r\n }).finally(() => { });\r\n }\r\n });\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\nimport { WindowConfig } from '../services/tru-desktop-service';\r\n\r\nexport class TruDesktopViewConfig {\r\n active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n onActive() {\r\n return this.active$;\r\n }\r\n\r\n get active() {\r\n return this.active$.getValue();\r\n }\r\n\r\n set active(value: boolean) {\r\n this.active$.next(value);\r\n }\r\n\r\n entities: Array<any> | undefined = undefined;\r\n entityIndex: number = 0;\r\n entityRefs: string = '';\r\n isDirty: boolean = false;\r\n isEditing: boolean = false;\r\n isInvalid: boolean = false;\r\n componentName: string = '';\r\n openAsDetaiView: boolean = false;\r\n actionRefs: string = '';\r\n window!: WindowConfig;\r\n selectedRefs!: () => string;\r\n url!: string;\r\n title!: string;\r\n\r\n constructor() {}\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { TruContextFilter } from '../../../classes/tru-context-filter';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\r\nimport { Subject } from 'rxjs';\r\nimport { TruWindowCloseEventArgs } from './tru-window-close-event-args';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruWindowEventArgs {\r\n title: string = '';\r\n tableName: string = '';\r\n tablePluralName: string = '';\r\n tablePluralLabel: string = '';\r\n parentDataContext: TruDataContext | null = null;\r\n parentView: any | null;\r\n isModal: boolean = false;\r\n showNavigation: boolean = true;\r\n contentBottom: string = '23px'\r\n statusbarDirective: string = 'tru-statusbar';\r\n height: string = '450px';\r\n width: string = '900px';\r\n views: Array<object> = [{}];\r\n contextFilters: Array<TruContextFilter> = [];\r\n onClose$: Subject<TruWindowCloseEventArgs> = new Subject<TruWindowCloseEventArgs>();\r\n}\r\n","\r\nimport { Injectable } from \"@angular/core\";\r\nimport { TruContextFilter } from \"../classes/tru-context-filter\";\r\nimport { TruContextFilterChoice } from \"../classes/tru-context-filter-choice\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruContextFilters {\r\n filters: Array<TruContextFilter> = [];\r\n\r\n valueFor = (tableName: string): number | undefined => {\r\n let choice = this.filters.find(f => f.selectedChoice.table === tableName)?.selectedChoice;\r\n if (!choice)\r\n return undefined;\r\n return choice.ref;\r\n }\r\n\r\n value = (): TruContextFilterChoice | undefined => {\r\n let choice = this.filters.find(f => f.selectedChoice)?.selectedChoice;\r\n if (!choice)\r\n return undefined;\r\n return choice\r\n }\r\n\r\n label = (): string => {\r\n let label: string = '';\r\n //this.selectedContextFilterChoices.forEach((filter: TruContextFilterChoice) => {\r\n // label += filter.table + ': ' + filter.label + ' ';\r\n //});\r\n return label;\r\n }\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { WindowConfig } from './tru-desktop-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruDesktopEventHandler {\r\n private open$: Subject<TruWindowEventArgs> = new Subject<TruWindowEventArgs>();\r\n\r\n onOpen() {\r\n return this.open$;\r\n }\r\n\r\n open(windowEvent: TruWindowEventArgs): TruWindowEventArgs {\r\n this.open$.next(windowEvent);\r\n return windowEvent;\r\n }\r\n\r\n openCustom(windowEvent: TruWindowEventArgs) {\r\n this.open$.next(windowEvent);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruContextFilters } from \"../../../services/tru-context-filters\";\r\nimport { TruDesktopTitle } from \"../classes/tru-desktop-title\";\r\nimport { TruDesktopEventHandler } from \"./tru-desktop-event-handler\";\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDataContext } from \"../../../services/tru-data-context\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruDesktopManager {\r\n\r\n constructor(\r\n private contextFilters: TruContextFilters,\r\n private desktopEventHandler: TruDesktopEventHandler) { }\r\n\r\n getWindowEvent = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n isModal: boolean,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n entityIndex: number = 0,\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = true,\r\n parentDataContext: TruDataContext | null = null): TruWindowEventArgs => {\r\n\r\n var windowEvent = new TruWindowEventArgs();\r\n windowEvent.tableName = tableName;\r\n windowEvent.tablePluralName = tablePluralName;\r\n windowEvent.tablePluralLabel = tablePluralLabel;\r\n windowEvent.contextFilters = this.contextFilters.filters;\r\n windowEvent.isModal = isModal;\r\n windowEvent.showNavigation = showNavigation;\r\n windowEvent.parentDataContext = parentDataContext;\r\n\r\n windowEvent.views = [\r\n {\r\n active: true,\r\n entities: entities,\r\n entityIndex: entityIndex,\r\n isDirty: false,\r\n isEditing: false,\r\n isInvalid: false,\r\n openAsDetaiView: openAsDetaiView,\r\n componentName: componentName\r\n }\r\n ];\r\n return windowEvent;\r\n }\r\n\r\n /**\r\n * Opens a window for a directive.\r\n * @param {string} directiveName - name of the view directive.\r\n * @param {object} data - values to pass to the view.\r\n * @param {optional bool} showIfExists - if true and a view already exists for the \r\n * directive, then shows its window instead of creating a new one.\r\n */\r\n addWindow = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = true,\r\n showIfExists?: boolean) => {\r\n this.desktopEventHandler.open(this.getWindowEvent(\r\n tableName,\r\n tablePluralName,\r\n tablePluralLabel,\r\n false,\r\n componentName,\r\n entities,\r\n 0,\r\n openAsDetaiView));\r\n }\r\n\r\n addModalWindow = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n entityIndex: number = 0,\r\n parentDataContext: TruDataContext,\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = false,\r\n showIfExists?: boolean): TruWindowEventArgs => {\r\n return this.desktopEventHandler.open(this.getWindowEvent(\r\n tableName,\r\n tablePluralName,\r\n tablePluralLabel,\r\n true,\r\n componentName,\r\n entities,\r\n entityIndex,\r\n openAsDetaiView,\r\n showNavigation,\r\n parentDataContext));\r\n }\r\n\r\n addWindowForQueryResult = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = true,\r\n showIfExists?: boolean) => {\r\n this.desktopEventHandler.open(this.getWindowEvent(tableName, tablePluralName, tablePluralLabel, false, componentName, entities, 0, openAsDetaiView));\r\n }\r\n\r\n addCustomWindow = (\r\n componentName: string,\r\n data: object | null = null) => {\r\n this.desktopEventHandler.open(this.getWindowEvent('', '', '', false, componentName, undefined, 0, false));\r\n }\r\n\r\n windowTitlesByBaseText: any = {};\r\n\r\n /**\r\n * Returns a unique string for the base name of a window. At first, returns the input.\r\n * For second call with same base name, returns the name plus ' - 2' and so on. When\r\n * all of the titles for the base name are released, then the next title will have no\r\n * suffix.\r\n * @param {string} text - base name of a window.\r\n * @returns {object} - text: the unique text and release(): releases the name for\r\n * future windows.\r\n */\r\n getUniqueTitle = (text: string): TruDesktopTitle => {\r\n var baseText = text;\r\n var titles = this.windowTitlesByBaseText[baseText];\r\n if (!titles) {\r\n this.windowTitlesByBaseText[baseText] = titles = {\r\n dispensedCount: 1,\r\n activeCount: 1\r\n };\r\n } else {\r\n ++titles.activeCount;\r\n text += ' - ' + (++titles.dispensedCount);\r\n }\r\n return {\r\n text: text,\r\n release: () => {\r\n if (titles.activeCount === 1)\r\n delete this.windowTitlesByBaseText[baseText];\r\n else {\r\n --titles.activeCount;\r\n }\r\n }\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruEntityBase } from '../../../base-classes/tru-entity-base';\r\nimport { TruWindowCloseEventArgs } from './tru-window-close-event-args';\r\n\r\n@Injectable()\r\nexport class TruWindowEventHandler {\r\n private close$: Subject<TruWindowCloseEventArgs | null> = new Subject <TruWindowCloseEventArgs | null>();\r\n private addView$: Subject<TruDesktopViewConfig> = new Subject<TruDesktopViewConfig>();\r\n private active$: Subject<boolean> = new Subject<boolean>();\r\n private setWindowTitle$: Subject<string> = new Subject<string>();\r\n private removeForwadViews$: Subject<null> = new Subject<null>();\r\n\r\n onClose() {\r\n return this.close$;\r\n }\r\n\r\n close(windowCloseEventArgs: TruWindowCloseEventArgs | null = null) {\r\n this.close$.next(windowCloseEventArgs);\r\n }\r\n\r\n onAddView() {\r\n return this.addView$;\r\n }\r\n\r\n addView(windowAddViewEvent: TruDesktopViewConfig) {\r\n this.addView$.next(windowAddViewEvent);\r\n }\r\n\r\n onActiveStateChanged() {\r\n return this.active$;\r\n }\r\n\r\n activeStateChanged(active: boolean) {\r\n this.active$.next(active);\r\n }\r\n\r\n onRemoveForwardViews() {\r\n return this.removeForwadViews$;\r\n }\r\n\r\n removeForwardViews() {\r\n this.removeForwadViews$.next(null);\r\n }\r\n\r\n onSetWindowTitle() {\r\n return this.setWindowTitle$;\r\n }\r\n\r\n setWindowTitle(value: string) {\r\n this.setWindowTitle$.next(value);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TruDesktopManager } from '../../components/desktop/services/tru-desktop-manager';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruDesktopTitle } from '../../components/desktop/classes/tru-desktop-title';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-search-view-base',\r\n templateUrl: './tru-search-view-base.html',\r\n styleUrls: ['./tru-search-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruSearchViewBase {\r\n @Input() protected view!: TruDesktopViewConfig;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected pkeyName: string = '';\r\n protected windowTitle: TruDesktopTitle | undefined = undefined;\r\n protected windowConfig: any;\r\n protected unsubscribes = [];\r\n protected expands = [];\r\n protected contextFilters: any;\r\n protected isSearching = false;\r\n protected entities = [];\r\n protected hasDetailView: boolean = true;\r\n\r\n searchPanelConfig = {\r\n side: 'right',\r\n active: true,\r\n open: true,\r\n modKeyLabel: '',\r\n size: 500,\r\n pinned: false\r\n }\r\n\r\n constructor(\r\n protected desktopManager: TruDesktopManager,\r\n protected windowEventHandler: TruWindowEventHandler) {\r\n }\r\n\r\n setWindowTitle(title: string | undefined = undefined) {\r\n if (!this.windowTitle) {\r\n if (title)\r\n this.windowTitle = this.desktopManager.getUniqueTitle(title);\r\n else\r\n this.windowTitle = this.desktopManager.getUniqueTitle(this.tablePluralLabel);\r\n }\r\n this.windowEventHandler.setWindowTitle(this.windowTitle.text);\r\n }\r\n\r\n releaseWindowTitle() {\r\n this.windowTitle?.release();\r\n }\r\n\r\n onPkeyCellDoubleClicked = (gridConfig: any) => {\r\n if (this.hasDetailView) {\r\n let entities: any = [];\r\n gridConfig.api.forEachNodeAfterFilterAndSort((rowNode: any) => {\r\n entities.push(rowNode.data.$entity);\r\n });\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = gridConfig.rowIndex;\r\n windowAddViewEventArgs.componentName = this.tableName + 'DetailView';\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n this.view.active = false;\r\n } else {\r\n alert(this.tablePluralLabel + ' does not have a detail view.');\r\n }\r\n }\r\n\r\n onAddCustomView = (componentName: string, entities: Array<TruEntityBase>) => {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = 0;\r\n windowAddViewEventArgs.componentName = componentName;\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n this.view.active = false;\r\n }\r\n}\r\n","","import { Component, Input, ViewChild, TemplateRef, ElementRef } from '@angular/core';\r\nimport { TruSearchViewBase } from '../../base-views/search/tru-search-view-base';\r\nimport { TruDesktopManager } from '../desktop/services/tru-desktop-manager';\r\nimport { TruWindowEventHandler } from '../desktop/services/tru-window-event-handler';\r\nimport { TruUser } from '../../services/tru-user';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\n\r\n@Component({\r\n selector: 'tru-report-view',\r\n templateUrl: './tru-report-view.html',\r\n styleUrls: ['./tru-report-view.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSidenav\r\n ]\r\n})\r\nexport class TruReportView extends TruSearchViewBase {\r\n @Input() view: any = {};\r\n @ViewChild('iframe', { static: false }) iframe!: HTMLIFrameElement;\r\n\r\n isBusy = true;\r\n\r\n private subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n desktopManager: TruDesktopManager,\r\n windowEventHandler: TruWindowEventHandler,\r\n private uiNotification: TruUiNotification,\r\n private user: TruUser) {\r\n super(desktopManager, windowEventHandler)\r\n }\r\n\r\n onLoad(iframe: HTMLIFrameElement) {\r\n var form = iframe.contentWindow?.document.querySelectorAll('form')[0];\r\n if (form) {\r\n var action = form.getAttribute('action');\r\n form.setAttribute('action', '');\r\n }\r\n setTimeout(() => {\r\n this.isBusy = false;\r\n }, 0);\r\n }\r\n\r\n ngOnInit(): void { \r\n let xhr = new XMLHttpRequest();\r\n xhr.open('POST', this.view.url);\r\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onreadystatechange = (result: any) => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n var iframeDoc = this.iframe.contentWindow?.document as Document;\r\n iframeDoc.open('text/html', 'replace');\r\n iframeDoc.write(xhr.response);\r\n iframeDoc.close();\r\n } else {\r\n this.uiNotification.error('Report Error', [xhr.statusText]);\r\n }\r\n }\r\n };\r\n xhr.send(JSON.stringify({\r\n refs: this.view.actionRefs,\r\n }));\r\n\r\n this.windowEventHandler.setWindowTitle(this.view.title);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n this.releaseWindowTitle();\r\n }\r\n}\r\n","<div>\r\n <div class=\"view-busy-overlay\" *ngIf=\"isBusy\"></div>\r\n <iframe (load)=\"onLoad(iframe)\" class=\"report-view-frame\"></iframe>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { TruDesktopViewConfig } from '../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruDesktopTitle } from '../components/desktop/classes/tru-desktop-title';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruWindowEventHandler } from '../components/desktop/services/tru-window-event-handler';\r\nimport { TruTextManager } from '../services/tru-text-manager';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-view-base',\r\n templateUrl: './tru-view-base.html',\r\n styleUrls: ['./tru-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruViewBase {\r\n @Input() view!: TruDesktopViewConfig;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected parentTableName: string = '';\r\n protected parentTablePluralName: string = '';\r\n protected parentTablePluralLabel: string = '';\r\n protected hasDetailView: boolean = true;\r\n protected pkeyName: string = '';\r\n protected windowTitle: TruDesktopTitle | undefined = undefined;\r\n protected windowConfig: any;\r\n protected expands = [];\r\n protected contextFilters: any;\r\n protected isSearching = false;\r\n protected entities: Array<any> = [];\r\n protected entity: any;\r\n protected entityType: any;\r\n protected recordLocation: string | null = null;\r\n protected disableNavigationToPreviousEntity: boolean = false;\r\n protected disableNavigationToNextEntity: boolean = false;\r\n protected navigationIndex: number = 0;\r\n protected recordsBeforeRevert: number = 0;\r\n protected subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler) { }\r\n\r\n setEntityDisplayValues(tableName: string) {\r\n let title = '';\r\n let recordIndex = '?';\r\n let entity = this.entities[this.navigationIndex];\r\n if (entity) {\r\n title = tableName + ' - ';\r\n if (entity.entityAspect.entityState.isAdded()) {\r\n title += 'New Record';\r\n } else {\r\n title += this.entity.HID;\r\n }\r\n recordIndex = (this.navigationIndex + 1).toString();\r\n }\r\n this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));\r\n this.recordLocation = recordIndex + ' of ' + this.entities.length;\r\n }\r\n}\r\n","","import { Injectable } from '@angular/core';\r\nimport { TruEntityBase } from '../../../base-classes/tru-entity-base';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruWindowCloseEventArgs {\r\n entities: Array<TruEntityBase> = [];\r\n entityIndex: number = 0;\r\n refresh: boolean = false;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-button',\r\n templateUrl: './tru-toolbar-button.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-button.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButton,\r\n MatIcon\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarButton implements OnInit {\r\n @Input() config: [] | null = null;\r\n @Input() icon: string = '';\r\n @Input() text: string = '';\r\n @Input() disabled: boolean = false;\r\n @Input() tooltip: string | null = null;\r\n @Input() type: string | undefined = 'button';\r\n\r\n @Output() onClick = new EventEmitter();\r\n @Output() onKeydown = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<button\r\n class=\"toolbar-btn toolbar-btn-default\"\r\n title=\"{{ tooltip }}\"\r\n tabindex=\"0\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick.emit($event)\"\r\n (keydown)=\"onKeydown.emit($event)\"\r\n type=\"{{type}}\">\r\n <span class=\"toolbar-btn-icon\" *ngIf=\"icon\"><mat-icon [svgIcon]=\"icon\"></mat-icon></span>\r\n <span class=\"toolbar-btn-text\" *ngIf=\"text\">{{text}}</span>\r\n</button>\r\n","import { Directive, OnInit, Renderer2 } from \"@angular/core\";\r\nimport { MatSelect } from \"@angular/material/select\";\r\nimport { forEach, max } from \"underscore\";\r\nimport { TruUtil } from \"../../services/tru-util\";\r\n\r\n@Directive({\r\n selector: '[tru-mat-select-panel]'\r\n})\r\nexport class TruMatSelectPanel implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private select: MatSelect,\r\n private util: TruUtil) { }\r\n\r\n documentMouseUpEventFn: () => void = () => { };\r\n\r\n private removeListeners = () => {\r\n if (this.documentMouseUpEventFn)\r\n this.documentMouseUpEventFn();\r\n }\r\n\r\n private getTextWidth = (element: HTMLElement, text: string) => {\r\n const canvas = document.createElement('canvas');\r\n const context = canvas.getContext('2d') as CanvasRenderingContext2D;\r\n\r\n context.font = getComputedStyle(element).font;\r\n\r\n return context.measureText(text).width;\r\n }\r\n\r\n ngOnInit() {\r\n this.select.openedChange.subscribe(isOpen => {\r\n if (isOpen) {\r\n setTimeout(() => {\r\n let panelElement = this.select.panel.nativeElement;\r\n let panelParentElement = this.select.panel.nativeElement.parentNode;\r\n let panelOverlayContainerElement = this.util.findClosestAncestorByClass(panelElement, '.cdk-overlay-container');\r\n let panelOverlayBackdropElement = panelOverlayContainerElement.childNodes[0];\r\n panelParentElement.style.width = 'auto';\r\n panelOverlayContainerElement.style.position = 'static';\r\n panelOverlayBackdropElement.style.display = 'none';\r\n\r\n let optionSpans = panelElement.querySelectorAll('span');\r\n let maxWidth = 0;\r\n optionSpans.forEach((optionSpan: HTMLElement) => {\r\n let currentWidth = this.getTextWidth(optionSpan, optionSpan.innerText);\r\n if (currentWidth > maxWidth)\r\n maxWidth = currentWidth;\r\n });\r\n\r\n panelParentElement.style.minWidth = (maxWidth + 85) + 'px';\r\n\r\n this.documentMouseUpEventFn = this.renderer.listen(document, 'mouseup', (event: MouseEvent) => {\r\n if (event.target !== this.select.panel.nativeElement && !this.select.panel.nativeElement.contains(event.target) && event.button !== 2) {\r\n this.removeListeners();\r\n setTimeout(() => {\r\n this.select.close();\r\n });\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n this.removeListeners();\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeListeners();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'openOnStart'\r\n})\r\nexport class TruOpenOnStart implements PipeTransform {\r\n transform(openOnStart: () => {}, args?: any): void {\r\n openOnStart();\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { TruContextFilter } from '../../../classes/tru-context-filter';\r\nimport { TruContextFilters } from '../../../services/tru-context-filters';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatOption } from '@angular/material/autocomplete';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatFormField, MatInput } from '@angular/material/input';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { TruMatSelectPanel } from '../../../directives/select-panel/tru-mat-select-panel';\r\nimport { TruOpenOnStart } from '../../../pipes/open-on-start';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-context-filter',\r\n templateUrl: './tru-toolbar-context-filter.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-context-filter.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelect,\r\n MatFormField,\r\n MatOption,\r\n MatInput,\r\n MatIcon,\r\n TruMatSelectPanel,\r\n TruOpenOnStart\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarContextFilter implements OnInit {\r\n filters: Array<TruContextFilter> = [];\r\n\r\n selected: any;\r\n\r\n constructor(private truContextFilters: TruContextFilters) {\r\n this.filters = this.truContextFilters.filters;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<mat-form-field *ngIf=\"filters.length\">\r\n <div *ngFor=\"let filter of filters\">\r\n <mat-select [(value)]=\"filter.selectedChoice\"\r\n [compareWith]=\"filter.comparer\"\r\n (selectionChange)=\"filter.onChange(filter.selectedChoice)\"\r\n title=\"{{filter.tooltip}}\"\r\n panelClass=\"tru-mat-select-panel\" \r\n tru-mat-select-panel>\r\n <mat-option *ngFor=\"let choice of filter.choices; trackBy filter.identify\" [value]=\"choice\">\r\n {{choice.label}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n</mat-form-field>\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { MatFormField, MatOption, MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { ITruToolbarDropdownOption } from '../classes/tru-toolbar-dropdown-option';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatPseudoCheckbox } from '@angular/material/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TruMatSelectPanel } from '../../../directives/select-panel/tru-mat-select-panel';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-dropdown',\r\n templateUrl: './tru-toolbar-dropdown.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-dropdown.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelect,\r\n MatIcon,\r\n TruMatSelectPanel,\r\n MatPseudoCheckbox,\r\n MatFormField,\r\n MatOption\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarDropdown implements OnInit, AfterViewInit {\r\n @Input() config: [] | null = null;\r\n @Input() options: Array<ITruToolbarDropdownOption> | null = [];\r\n @Input() tooltip: string = '';\r\n @Input() multiple: boolean = false;\r\n @Input() filterable: boolean = false;\r\n @Input() filterTooltip: string = '';\r\n @Input() width: number = 115;\r\n @Input() selectedOption!: ITruToolbarDropdownOption;\r\n @Output() selectedOptionChange = new EventEmitter<ITruToolbarDropdownOption>();\r\n @Input() disabled!: boolean;\r\n @Output() selectionChange = new EventEmitter<Array<ITruToolbarDropdownOption> | null>();\r\n\r\n @ViewChild('select') select!: MatSelect;\r\n\r\n filteredOptions: Array<ITruToolbarDropdownOption> | null = [];\r\n selectedOptions: Array<ITruToolbarDropdownOption> = [];\r\n selectAll: boolean = false;\r\n selectAllLabel: string = 'Select All';\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.filteredOptions = this.options;\r\n }\r\n\r\n toggleSelectAll = () => {\r\n this.selectAll = !this.selectAll;\r\n if (this.selectAll) {\r\n this.select.options.forEach((item: MatOption) => item.select());\r\n } else {\r\n this.select.options.forEach((item: MatOption) => item.deselect());\r\n }\r\n }\r\n\r\n onSelectionChange = (event: MatSelectChange) => {\r\n this.selectedOptionChange.emit(event.source.value);\r\n this.selectionChange.emit(event.value);\r\n if (event.value.length) {\r\n this.selectAll = true;\r\n this.selectAllLabel = 'Deselect All';\r\n } else {\r\n this.selectAll = false;\r\n this.selectAllLabel = 'Select All';\r\n }\r\n }\r\n\r\n onFilterChange = (event: any) => {\r\n const searchInput = event.target.value.toLowerCase();\r\n this.filteredOptions = this.options!.filter((option: ITruToolbarDropdownOption) => {\r\n const label = option.label.toLowerCase();\r\n return label.includes(searchInput);\r\n });\r\n }\r\n}\r\n","<mat-form-field>\r\n @if (multiple) {\r\n <mat-select #select\r\n [(ngModel)]=\"selectedOption\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"tooltip\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [style.width.px]=\"width\"\r\n tru-mat-select-panel\r\n multiple>\r\n <input matInput\r\n *ngIf=\"filterable\"\r\n [placeholder]=\"filterTooltip\"\r\n (input)=\"onFilterChange($event)\"\r\n type=\"text\"\r\n autocomplete=\"off\" />\r\n <div class=\"select-all-pseudo-checkbox-container\">\r\n <mat-pseudo-checkbox [(ngModel)]=\"selectAll\" (click)=\"toggleSelectAll()\" [ngClass]=\"{ 'mat-pseudo-checkbox-checked': selectAll }\"></mat-pseudo-checkbox>\r\n <span>{{selectAllLabel}}</span>\r\n </div>\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n {{option.label}}\r\n </mat-option>\r\n </mat-select>\r\n } @else {\r\n <mat-select [(ngModel)]=\"selectedOption\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"tooltip\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [style.width.px]=\"width\"\r\n [hideSingleSelectionIndicator]=\"true\"\r\n tru-mat-select-panel>\r\n <input matInput\r\n *ngIf=\"filterable\"\r\n [placeholder]=\"filterTooltip\"\r\n (input)=\"onFilterChange($event)\"\r\n type=\"text\"\r\n autocomplete=\"off\" />\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n {{option.label}}\r\n </mat-option>\r\n </mat-select>\r\n }\r\n</mat-form-field>\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-menu-button',\r\n templateUrl: './tru-toolbar-menu-button.html',\r\n styleUrls: ['../tru-toolbar-menu.css', './tru-toolbar-menu-button.css'],\r\n imports: [CommonModule, FormsModule],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarMenuButton {\r\n @Input() config!: any;\r\n\r\n constructor() {\r\n\r\n }\r\n}\r\n","<div>\r\n <i *ngIf=\"config.menuIcon\" class=\"{{config.menuIcon}} sub-menu-icon\" tabindex=\"-1\" (click)=\"config.fire()\"></i>\r\n <button tabindex=\"-1\" (click)=\"config.fire()\" *ngIf=\"config.hasAccess() && !config.menuIcon\">{{config.label}}</button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, Input} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruOpenOnStart } from '../../../../pipes/open-on-start';\r\nimport { TruUtil } from '../../../../services/tru-util';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-menu-item',\r\n templateUrl: './tru-toolbar-menu-item.html',\r\n styleUrls: ['../tru-toolbar-menu.css', './tru-toolbar-menu-item.css'],\r\n imports: [CommonModule, FormsModule, TruOpenOnStart]\r\n})\r\nexport class TruToolbarMenuItem {\r\n @Input() config!: any;\r\n\r\n isMouseDown: boolean = false;\r\n maxHeight: number = 200;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private util: TruUtil) {\r\n window.addEventListener('resize', this.windoeResize);\r\n }\r\n\r\n private windoeResize = () => {\r\n this.updateMenuHeight();\r\n };\r\n\r\n private updateMenuHeight = () => {\r\n let windowElement = this.util.findClosestAncestorByClass(this.element.nativeElement, '.desktop-window-container') as HTMLElement;\r\n if (!windowElement)\r\n this.maxHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0) - 40;\r\n else\r\n this.maxHeight = windowElement.clientHeight - 60;\r\n }\r\n\r\n onClick = (event: Event) => {\r\n var target = (event.target as Element);\r\n var isActive = target.classList.contains('is-active');\r\n if (isActive) {\r\n target.classList.remove('is-active');\r\n } else {\r\n target.classList.add('is-active');\r\n this.updateMenuHeight();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener('resize', this.windoeResize);\r\n }\r\n}\r\n","<div (click)=\"onClick($event)\">\r\n <p *ngIf=\"config.menuLabel\">{{config.menuLabel}}</p>\r\n <i *ngIf=\"config.menuIcon\" class=\"{{config.menuIcon}} sub-menu-icon\" tabindex=\"-1\"></i>\r\n <div class=\"sub-menu\" *ngIf=\"config.choices\" [style.maxHeight.px]=\"[maxHeight]\">\r\n <ul class=\"sub-menu-nav\">\r\n <li *ngFor=\"let choice of config.choices\">\r\n <p *ngIf=\"choice.separator && choice.title\" class=\"separator-title\">{{choice.title}}</p>\r\n <hr *ngIf=\"choice.separator\" />\r\n <div style=\"display: none\" *ngIf=\"choice?.openOnStart\">{{choice?.openOnStart | openOnStart}}</div>\r\n <button *ngIf=\"!choice.separator\" tabindex=\"-1\" (click)=\"choice.fire()\" [disabled]=\"!choice.enabled()\">{{choice.label}}</button>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruToolbarMenuButton } from './menu-button/tru-toolbar-menu-button';\r\nimport { TruToolbarMenuItem } from './menu-item/tru-toolbar-menu-item';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-menu',\r\n templateUrl: './tru-toolbar-menu.html',\r\n styleUrls: ['./tru-toolbar-menu.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenuItem,\r\n TruToolbarMenuButton\r\n ]\r\n})\r\nexport class TruToolbarMenu {\r\n @Input() config!: any;\r\n\r\n constructor() { }\r\n\r\n onDocumentClick = (event: Event) => {\r\n var activeMenus = document.querySelectorAll('.is-active');\r\n var target = (event.target as Element);\r\n activeMenus.forEach((activeMenu: Element) => {\r\n if (activeMenu !== target) {\r\n activeMenu.classList.remove('is-active');\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n document.addEventListener('click', this.onDocumentClick); \r\n }\r\n\r\n ngOnDestroy() {\r\n document.removeEventListener('click', this.onDocumentClick);\r\n }\r\n}\r\n","<ul class=\"hList menu-nav\">\r\n <li class=\"has-sub-menu\">\r\n <tru-toolbar-menu-button [config]=\"config\" *ngIf=\"!config.choices\"></tru-toolbar-menu-button>\r\n <tru-toolbar-menu-item [config]=\"config\" *ngIf=\"config.choices && config.choices.length\"></tru-toolbar-menu-item>\r\n </li>\r\n</ul>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-separator',\r\n templateUrl: './tru-toolbar-separator.html',\r\n styleUrls: ['./tru-toolbar-separator.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruToolbarSeparator {\r\n constructor() {}\r\n}\r\n","<div class=\"tru-toolbar-separator\"></div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-text',\r\n templateUrl: './tru-toolbar-text.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-text.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButton,\r\n MatIcon\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarText implements OnInit {\r\n @Input() config: [] | null = null;\r\n @Input() icon: string = '';\r\n @Input() text: string | null = '';\r\n @Input() tooltip: string | null = null;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<p>\r\n <span class=\"toolbar-text-text\" *ngIf=\"text\">{{text}}</span>\r\n</p>\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TruAuthCache {\r\n prunables: Prunable[] = [];\r\n\r\n registerPrunable(prunable: Prunable) {\r\n this.prunables.push(prunable);\r\n }\r\n\r\n pruneAll() {\r\n this.prunables.forEach((p) => p.pruneCache());\r\n }\r\n}\r\n\r\nexport interface Prunable {\r\n pruneCache(): void;\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { TruAuthLoginRequest } from \"../classes/tru-auth-login-request\";\r\nimport { TruAuthCache } from \"./tru-auth-cache\";\r\nimport { TRU_AUTH_STRATEGY } from \"../classes/tru-auth-config\";\r\nimport { TruAuthStrategy } from \"../classes/tru-auth-config\";\r\nimport { TRU_AUTH_CONFIG } from \"../classes/tru-auth-config\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { TruUser } from \"../../../services/tru-user\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TruAuth {\r\n private loggedIn = new BehaviorSubject<boolean>(false);\r\n private baseUrl: string = '';\r\n\r\n constructor(\r\n private router: Router,\r\n private http: HttpClient,\r\n private cache: TruAuthCache,\r\n private user: TruUser,\r\n private appEnvironment: TruAppEnvironment,\r\n @Inject(TRU_AUTH_STRATEGY) private auth: TruAuthStrategy<any>\r\n ) {\r\n this.baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n login(loginRequest: TruAuthLoginRequest): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/login`, loginRequest)\r\n .pipe(tap((data) => { \r\n this.auth.doLoginUser(data);\r\n this.loggedIn.next(true);\r\n }));\r\n }\r\n\r\n setUser() {\r\n this.auth.createUser(this.user);\r\n }\r\n\r\n logout() {\r\n this.http\r\n .post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/logout`, null).subscribe(() => {\r\n this.doLogoutAndRedirectToLogin();\r\n });\r\n }\r\n\r\n userClaims() {\r\n if (this.appEnvironment.authType === 'session') {\r\n return this.http\r\n .get<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/userClaims`)\r\n .pipe(tap((userClaims) => {\r\n this.user.create(userClaims);\r\n }));\r\n }\r\n else {\r\n return this.auth.createUser(this.user);\r\n }\r\n }\r\n\r\n get isLoggedIn() {\r\n if (!this.loggedIn.value) {\r\n this.loggedIn.next(this.auth.isLoggedIn());\r\n }\r\n return this.loggedIn.asObservable();\r\n }\r\n\r\n doLogoutAndRedirectToLogin() {\r\n this.doLogoutUser();\r\n this.loggedIn.next(false);\r\n this.router.navigate([\"\"]);\r\n }\r\n\r\n private doLogoutUser() {\r\n this.user.destroy();\r\n this.cache.pruneAll();\r\n this.auth.doLogoutUser();\r\n }\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruUser } from '../../../services/tru-user';\r\nimport { TruAuth } from '../../login/services/tru-auth';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\n\r\n\r\n@Component({\r\n selector: 'tru-toolbar-user-profile',\r\n templateUrl: './tru-toolbar-user-profile.html',\r\n styleUrls: ['./tru-toolbar-user-profile.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenuModule,\r\n MatMenu,\r\n MatMenuItem,\r\n MatButton,\r\n MatIcon,\r\n MatMenuTrigger\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarUserProfile {\r\n initial: string | null | undefined = null;\r\n name: string | null | undefined = null;\r\n email: string | null | undefined = null;\r\n\r\n constructor(\r\n private user: TruUser,\r\n private auth: TruAuth,\r\n private uiNotification: TruUiNotification) {\r\n this.initial = user?.firstName ? user?.firstName.slice(0, 1).toUpperCase() : user?.username?.slice(0, 1).toUpperCase()\r\n this.name = user?.firstName && user?.lastName ? user?.firstName + ' ' + user?.lastName : user?.username;\r\n this.email = user?.email;\r\n }\r\n\r\n onChangePasswordButtonClicked = () => {\r\n this.uiNotification.changePassword(this.user.activeUserRef, this.user.username as string);\r\n }\r\n\r\n onLogoutButtonClicked = () => {\r\n this.auth.logout();\r\n }\r\n}\r\n","<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'change-password-icon'\"\r\n title=\"Change Password\"\r\n class=\"tru-toolbar-user-profile-change-password-icon\">\r\n </mat-icon>\r\n <span>Change Password</span>\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'logout-icon'\"\r\n title=\"Logout\"\r\n class=\"tru-toolbar-user-profile-logout-icon\">\r\n </mat-icon>\r\n <span>Logout</span>\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruToolbarButton } from './button/tru-toolbar-button';\r\nimport { TruToolbarContextFilter } from './context-filter/tru-toolbar-context-filter';\r\nimport { TruToolbarDropdown } from './dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarMenu } from './menu/tru-toolbar-menu';\r\nimport { TruToolbarSeparator } from './separator/tru-toolbar-separator';\r\nimport { TruToolbarText } from './text/tru-toolbar-text';\r\nimport { TruToolbarUserProfile } from './user-profile/tru-toolbar-user-profile';\r\n\r\n@Component({\r\n selector: 'tru-toolbar',\r\n templateUrl: './tru-toolbar.html',\r\n styleUrls: ['./tru-toolbar.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenu,\r\n TruToolbarButton,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarContextFilter,\r\n TruToolbarText,\r\n TruToolbarUserProfile\r\n ]\r\n})\r\nexport class TruToolbar implements OnInit {\r\n @Input() config: [] | null = null;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n if (this.config != null)\r\n this.config.forEach(item => {\r\n\r\n });\r\n }\r\n}\r\n","<div class=\"toolbar toolbar-group\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { AfterContentChecked, Directive, EventEmitter, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[truRendered]'\r\n})\r\nexport class TruRendered implements AfterContentChecked {\r\n @Output() rendered = new EventEmitter();\r\n\r\n ngAfterContentChecked() {\r\n this.rendered.emit();\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { MatIconRegistry } from \"@angular/material/icon\";\n\nconst GO_TO_ICON = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h264v72H216v528h528v-264h72v264q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm171-192-51-51 357-357H576v-72h240v240h-72v-117L387-336Z\"/></svg>\n`;\n\nconst CALENDAR_ICON = `\n <svg height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Zm280 240q-17 0-28.5-11.5T440-440q0-17 11.5-28.5T480-480q17 0 28.5 11.5T520-440q0 17-11.5 28.5T480-400Zm-160 0q-17 0-28.5-11.5T280-440q0-17 11.5-28.5T320-480q17 0 28.5 11.5T360-440q0 17-11.5 28.5T320-400Zm320 0q-17 0-28.5-11.5T600-440q0-17 11.5-28.5T640-480q17 0 28.5 11.5T680-440q0 17-11.5 28.5T640-400ZM480-240q-17 0-28.5-11.5T440-280q0-17 11.5-28.5T480-320q17 0 28.5 11.5T520-280q0 17-11.5 28.5T480-240Zm-160 0q-17 0-28.5-11.5T280-280q0-17 11.5-28.5T320-320q17 0 28.5 11.5T360-280q0 17-11.5 28.5T320-240Zm320 0q-17 0-28.5-11.5T600-280q0-17 11.5-28.5T640-320q17 0 28.5 11.5T680-280q0 17-11.5 28.5T640-240Z\"/></svg>\n`;\n\nconst LOADING_ICON = `\n <svg height = \"24\" viewBox = \"0 -960 960 960\" width = \"24\" > <path d=\"M314-195q-104-48-169.5-145T79-559q0-26 3-51t9-49l-46 27-40-69 191-110 110 190-70 40-54-94q-11 27-16.5 56t-5.5 60q0 97 53 176.5T354-265l-40 70Zm306-485v-80h109q-46-57-111-88.5T480-880q-55 0-104 17t-90 48l-40-70q50-35 108.5-55T479-960q79 0 151.5 29.5T760-845v-55h80v220H620ZM594-80 403-190l110-190 69 40-57 98q118-17 196.5-106.5T800-559q0-11-.5-21t-2.5-20h81q1 10 1.5 19.5t.5 20.5q0 135-80.5 241.5T590-175l44 26-40 69Z\" /> </svg>\n`;\n\nconst CIRCLE_ICON = `\n <svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\"><path d=\"M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Z\"/></svg>\n`;\n\nconst MORE_ICON = `\n <svg height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\" fill=\"#006dcc\"><path d=\"M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z\"/></svg>\n`;\n\nconst DOWNLOAD_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M480-336 288-528l51-51 105 105v-342h72v342l105-105 51 51-192 192ZM263.717-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.162 50.85Q725.676-192 695.96-192H263.717Z\"/></svg>\n`;\n\nconst UPLOAD_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M444-336v-342L339-573l-51-51 192-192 192 192-51 51-105-105v342h-72ZM263.717-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.162 50.85Q725.676-192 695.96-192H263.717Z\"/></svg>\n`;\n\nconst UNLINK_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"m754-308-56-55q41.778-11.297 67.889-43.649Q792-439 792-480q0-50-35-85t-85-35H528v-72h144q79.68 0 135.84 56.224Q864-559.553 864-479.782 864-425 834.5-379T754-308ZM618-444l-72-72h78v72h-6ZM768-90 90-768l51-51 678 678-51 51ZM432-288H288q-79.68 0-135.84-56.16T96-480q0-63.932 38-113.966Q172-644 242-673l70 73h-23q-51 0-86 35t-35 85q0 50 35 85t85 35h144v72Zm-96-156v-72h56l71 72H336Z\"/></svg>\n`;\n\nconst SELECT_ALL_ICON = `\n <svg height=\"20px\" fill=\"#000000\" width=\"20px\" x=\"0px\" y=\"0px\" viewBox=\"0 -10 100 125\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\"><g><path d=\"M99,99H2.598L99,2.598V99z\"/></g></svg>\n`;\n\nconst DESC_SORT_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M480-96 216-360l51-51 177 177v-630h72v630l177-177 51 51L480-96Z\"/></svg>\n`;\n\nconst ASC_SORT_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M444-144v-534l-57 57-51-51 144-144 144 144-51 51-57-57v534h-72Z\"/></svg>\n`;\n\nconst DESC_SORT_MENU_ICON = `\n<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- \"Z\" shape in gray -->\n <text x=\"2\" y=\"8\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#444\" font-weight=\"bold\">Z</text>\n <!-- \"A\" shape in blue -->\n <text x=\"2\" y=\"15\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#1976D2\" font-weight=\"bold\">A</text>\n <!-- Downward arrow in gray -->\n <path d=\"M12.5 3V14\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M10.5 12L12.5 14L14.5 12\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n`;\n\nconst ASC_SORT_MENU_ICON = `\n<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- A -->\n <text x=\"2\" y=\"8\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#1976D2\" font-weight=\"bold\">A</text>\n <!-- Z -->\n <text x=\"2\" y=\"16\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#444\" font-weight=\"bold\">Z</text>\n <!-- Down Arrow -->\n <line x1=\"12.5\" y1=\"3\" x2=\"12.5\" y2=\"14\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <polyline points=\"10,12 12.5,15 15,12\" fill=\"none\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n`;\n\nconst NO_SORT_ICON = `\n<svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#949494\">\n <path d=\"M480-96q-79 0-149-30t-122.5-82.5Q156-261 126-331T96-480q0-80 30-149.5t82.5-122Q261-804 331-834t149-30q80 0 149.5 30t122 82.5Q804-699 834-629.5T864-480q0 79-30 149t-82.5 122.5Q699-156 629.5-126T480-96Zm0-72q55 0 104-18t89-50L236-673q-32 40-50 89t-18 104q0 130 91 221t221 91Zm244-119q32-40 50-89t18-104q0-130-91-221t-221-91q-55 0-104 18t-89 50l437 437Z\"/>\n</svg>\n`;\n\nconst FILTER_ICON = `\n <svg height=\"18px\" viewBox=\"0 -960 960 960\" width=\"18px\" fill=\"#006dcc\"><path d=\"M456.18-192Q446-192 439-198.9t-7-17.1v-227L197-729q-9-12-2.74-25.5Q200.51-768 216-768h528q15.49 0 21.74 13.5Q772-741 763-729L528-443v227q0 10.2-6.88 17.1-6.89 6.9-17.06 6.9h-47.88ZM480-498l162-198H317l163 198Zm0 0Z\"/></svg>\n`;\n\nconst CHANGE_PASSWORD_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M480-480Zm0 400q-139-35-229.5-159.5T160-516v-244l320-120 320 120v262q0 9-1 19h-81q1-10 1.5-19t.5-18v-189l-240-90-240 90v189q0 121 68 220t172 132v84Zm200 0v-120H560v-80h120v-120h80v120h120v80H760v120h-80ZM420-360h120l-23-129q20-10 31.5-29t11.5-42q0-33-23.5-56.5T480-640q-33 0-56.5 23.5T400-560q0 23 11.5 42t31.5 29l-23 129Z\"/></svg>\n`;\n\nconst SETTINGS_ICON = `\n <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z\"/></svg>\n`;\n\nconst IMPORT_ICON = `\n <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M440-280h80v-168l64 64 56-56-160-160-160 160 56 56 64-64v168ZM160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640v400q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H447l-80-80H160v480Zm0 0v-480 480Z\"/></svg>\n`;\n\nconst LOGOUT_ICON = `\n <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h280v80H200Zm440-160-55-58 102-102H360v-80h327L585-622l55-58 200 200-200 200Z\"/></svg>\n`;\n\nconst ABOUT_ICON = `\n<svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M480-60q-72-68-165-104t-195-36v-440q101 0 194 36.5T480-498q73-69 166-105.5T840-640v440q-103 0-195.5 36T480-60Zm0-104q63-47 134-75t146-37v-276q-73 13-143.5 52.5T480-394q-66-66-136.5-105.5T200-552v276q75 9 146 37t134 75Zm0-436q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm0-80q33 0 56.5-23.5T560-760q0-33-23.5-56.5T480-840q-33 0-56.5 23.5T400-760q0 33 23.5 56.5T480-680Zm0-80Zm0 366Z\"/></svg>\n`;\n\nconst ERROR_ICON = `\n<svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240Zm40 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>\n`;\n\nconst EXPAND_ICON = `\n<svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#000\"><path d=\"M480-80 240-320l57-57 183 183 183-183 57 57L480-80ZM298-584l-58-56 240-240 240 240-58 56-182-182-182 182Z\"/></svg>\n`;\n\nconst COLLAPSE_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#000\"><path d=\"m296-80-56-56 240-240 240 240-56 56-184-184L296-80Zm184-504L240-824l56-56 184 184 184-184 56 56-240 240Z\"/></svg>\n`;\n\nconst SEARCH_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M765-144 526-383q-30 22-65.79 34.5-35.79 12.5-76.18 12.5Q284-336 214-406t-70-170q0-100 70-170t170-70q100 0 170 70t70 170.03q0 40.39-12.5 76.18Q599-464 577-434l239 239-51 51ZM384-408q70 0 119-49t49-119q0-70-49-119t-119-49q-70 0-119 49t-49 119q0 70 49 119t119 49Z\"/></svg>\n`;\n\nconst COPY_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M360-240q-29.7 0-50.85-21.15Q288-282.3 288-312v-480q0-29.7 21.15-50.85Q330.3-864 360-864h384q29.7 0 50.85 21.15Q816-821.7 816-792v480q0 29.7-21.15 50.85Q773.7-240 744-240H360Zm0-72h384v-480H360v480ZM216-96q-29.7 0-50.85-21.15Q144-138.3 144-168v-552h72v552h456v72H216Zm144-216v-480 480Z\"/></svg>\n`;\n\nconst PASTE_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h171q8-31 33.5-51.5T480-888q34 0 59.5 20.5T573-816h171q29.7 0 50.85 21.15Q816-773.7 816-744v528q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm0-72h528v-528h-72v120H288v-120h-72v528Zm263.79-528q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z\"/></svg>\n`;\n\nconst INSERT_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M216-192h528v-228H216v228Zm600 72H144v-672h144V-719.51h-72V-492h528v-228h-72v-72h144v672ZM480-492Zm0 72v-72 72Zm0 0Zm-36-216v-84h-84v-72h84v-84h72v84h84v72h-84v84h-72Z\"/></svg>\n`;\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [],\n exports: []\n})\nexport class TruIconModule {\n constructor(sanitizer: DomSanitizer, iconRegistry: MatIconRegistry) {\n iconRegistry.addSvgIconLiteral(\n \"go-to-icon\",\n sanitizer.bypassSecurityTrustHtml(GO_TO_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"calendar-icon\",\n sanitizer.bypassSecurityTrustHtml(CALENDAR_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"loading-icon\",\n sanitizer.bypassSecurityTrustHtml(LOADING_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"circle-icon\",\n sanitizer.bypassSecurityTrustHtml(CIRCLE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"more-icon\",\n sanitizer.bypassSecurityTrustHtml(MORE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"download-icon\",\n sanitizer.bypassSecurityTrustHtml(DOWNLOAD_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"upload-icon\",\n sanitizer.bypassSecurityTrustHtml(UPLOAD_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"unlink-icon\",\n sanitizer.bypassSecurityTrustHtml(UNLINK_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"select-all-icon\",\n sanitizer.bypassSecurityTrustHtml(SELECT_ALL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"asc-sort-icon\",\n sanitizer.bypassSecurityTrustHtml(ASC_SORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"desc-sort-icon\",\n sanitizer.bypassSecurityTrustHtml(DESC_SORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"asc-sort-menu-icon\",\n sanitizer.bypassSecurityTrustHtml(ASC_SORT_MENU_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"desc-sort-menu-icon\",\n sanitizer.bypassSecurityTrustHtml(DESC_SORT_MENU_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"no-sort-icon\",\n sanitizer.bypassSecurityTrustHtml(NO_SORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"filter-icon\",\n sanitizer.bypassSecurityTrustHtml(FILTER_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"change-password-icon\",\n sanitizer.bypassSecurityTrustHtml(CHANGE_PASSWORD_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"settings-icon\",\n sanitizer.bypassSecurityTrustHtml(SETTINGS_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"import-icon\",\n sanitizer.bypassSecurityTrustHtml(IMPORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"logout-icon\",\n sanitizer.bypassSecurityTrustHtml(LOGOUT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"about-icon\",\n sanitizer.bypassSecurityTrustHtml(ABOUT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"error-icon\",\n sanitizer.bypassSecurityTrustHtml(ERROR_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"expand-icon\",\n sanitizer.bypassSecurityTrustHtml(EXPAND_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"collapse-icon\",\n sanitizer.bypassSecurityTrustHtml(COLLAPSE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"search-icon\",\n sanitizer.bypassSecurityTrustHtml(SEARCH_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"copy-icon\",\n sanitizer.bypassSecurityTrustHtml(COPY_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"paste-icon\",\n sanitizer.bypassSecurityTrustHtml(PASTE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"insert-icon\",\n sanitizer.bypassSecurityTrustHtml(INSERT_ICON)\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\r\nimport { TruTableConfigBase } from \"../base-classes/tru-table-config-base\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelTableLookup {\r\n private _lookup: Map<string, TruTableConfigBase> = new Map<string, TruTableConfigBase>();\r\n\r\n constructor() { }\r\n\r\n get lookup(): Map<string, TruTableConfigBase> {\r\n return this._lookup;\r\n }\r\n\r\n set lookup(value: Map<string, TruTableConfigBase>) {\r\n this._lookup = value;\r\n }\r\n\r\n get all(): Array<TruTableConfigBase> {\r\n return [...this._lookup.values()];\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruPropertyConfigBase } from \"../base-classes/tru-property-config-base\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelPropertyLookup {\r\n private _lookup: Map<string, TruPropertyConfigBase> = new Map<string, TruPropertyConfigBase>();\r\n\r\n constructor() {}\r\n\r\n get lookup(): Map<string, TruPropertyConfigBase> {\r\n return this._lookup;\r\n }\r\n\r\n set lookup(value: Map<string, TruPropertyConfigBase>) {\r\n this._lookup = value;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelTypeLookup {\r\n private _lookup: Map<string, typeof TruEntityBase> = new Map<string, typeof TruEntityBase>();\r\n\r\n constructor() { }\r\n\r\n getType(typeName: string): typeof TruEntityBase {\r\n return this._lookup.get(typeName) as typeof TruEntityBase;\r\n }\r\n\r\n setType(typeName: string, type: typeof TruEntityBase) {\r\n this._lookup.set(typeName, type);\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TruViewBase } from '../../base-views/tru-view-base';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruWindowEventHandler } from '../desktop/services/tru-window-event-handler';\r\nimport { TruModelTableLookup } from '../../services/tru-model-table-lookup';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { TruModelPropertyLookup } from '../../services/tru-model-property-lookup';\r\nimport { TruModelTypeLookup } from '../../services/tru-model-type-lookup';\r\nimport { TruModelNavigationPropertiesLookup } from '../../services/tru-model-navigation-properties-lookup';\r\nimport { TruNavigationPropertyConfig } from '../../classes/tru-navigation-property-config';\r\nimport { TruWindowCloseEventArgs } from '../desktop/services/tru-window-close-event-args';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { TruToolbar } from '../toolbar/tru-toolbar';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { TruRendered } from '../../directives/rendered/tru-rendered';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruToolbarButton } from '../toolbar/button/tru-toolbar-button';\r\nimport { TruToolbarText } from '../toolbar/text/tru-toolbar-text';\r\nimport { TruToolbarDropdown } from '../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruIconModule } from '../../assets/tru-icon-module';\r\n\r\n@Component({\r\n selector: 'tru-clone-view',\r\n templateUrl: './tru-clone-view.html',\r\n styleUrls: ['./tru-clone-view.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav,\r\n TruToolbar,\r\n TruToolbarButton,\r\n TruToolbarText,\r\n TruToolbarDropdown,\r\n TruIconModule,\r\n TruRendered\r\n ]\r\n})\r\nexport class TruCloneView extends TruViewBase {\r\n loading: boolean = true;\r\n loadingMessage: string = 'Searching for related records...';\r\n numberOfCopies: Array<ITruToolbarDropdownOption>\r\n selectedNumberOfCopies: ITruToolbarDropdownOption;\r\n contextFilters = null;\r\n rootNode: Node | null = null;\r\n ignorePropertyList = [\r\n 'CreatedRef',\r\n 'Created',\r\n 'UpdatedRef',\r\n 'Updated',\r\n 'rowver',\r\n '_customValidationErrors',\r\n 'entityAspect',\r\n '_associatedDataCached',\r\n '_backingStore',\r\n '_setDefaults',\r\n '_$typeName',\r\n 'entityType',\r\n '_$interceptor',\r\n 'getProperty',\r\n 'setProperty',\r\n '_pendingBackingStores',\r\n 'Ref'\r\n ];\r\n dataTree = [];\r\n flatList: Array<Node> = [];\r\n childFlatList: Array<Node> = [];\r\n processedCount: number = 0;\r\n doneProcessing: boolean = false;\r\n displayTree = [this.rootNode];\r\n parentDataContext!: TruDataContext;\r\n\r\n constructor(\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler,\r\n private dataContext: TruDataContext,\r\n private modelTableLookup: TruModelTableLookup,\r\n private modelPropertyLookup: TruModelPropertyLookup,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private modelNavigationPropertiesLookup: TruModelNavigationPropertiesLookup,\r\n private uiNotification: TruUiNotification) {\r\n super(textManager, windowEventHandler);\r\n this.numberOfCopies = this.getNumberOfCopies();\r\n this.selectedNumberOfCopies = this.numberOfCopies[0];\r\n }\r\n\r\n private getNumberOfCopies = (): Array<ITruToolbarDropdownOption> => {\r\n let copies: Array<ITruToolbarDropdownOption> = [];\r\n for (var i = 1; i <= 25; i++) {\r\n copies.push({\r\n value: i,\r\n label: i.toString()\r\n });\r\n }\r\n return copies;\r\n }\r\n\r\n private propertyIsAllowed = (propertyName: string, tableName: string) => {\r\n if (propertyName === tableName + 'Ref') return false;\r\n if (propertyName.startsWith('o')) return false;\r\n let property = this.modelPropertyLookup.lookup.get(propertyName);\r\n if (property && property.excludeFromCloning) return false;\r\n if (this.ignorePropertyList.some(function (propertyToIgnore) { return propertyToIgnore === propertyName; })) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private getPrototypeProperties = (obj: any) => {\r\n var result = [];\r\n for (var prop in obj) {\r\n if (!obj.hasOwnProperty(prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getChildPropertiesForCurrentEntity = (currentEntity: any) => {\r\n //var propertyNames = Object.keys(Object.getPrototypeOf(currentEntity));\r\n let entityName = this.getTypeFromEntityTypeName(currentEntity.$type);\r\n let childLookup = this.modelNavigationPropertiesLookup.lookup.get(entityName) as TruNavigationPropertyConfig[];\r\n let propertyNames = Object.keys(currentEntity);\r\n let navigationPropertyNames = propertyNames.filter((n) => { return n.startsWith('o'); });\r\n let childNavigationPropertyNames = navigationPropertyNames.filter((n) => {\r\n return childLookup.some((lookup: any) => { return lookup.name === n; });\r\n });\r\n\r\n let childProperties: Array<any> = [];\r\n childNavigationPropertyNames.filter(function (n) {\r\n if (currentEntity[n] && currentEntity[n].length)\r\n childProperties.push({\r\n parentToChildRefName: n,\r\n entities: currentEntity[n]\r\n });\r\n });\r\n\r\n return childProperties;\r\n }\r\n\r\n private getTypeFromEntityTypeName = (typeName: string) => {\r\n var p1s = typeName.split(',')[0];\r\n var p2s = p1s.split('.');\r\n return p2s[p2s.length - 1];\r\n }\r\n\r\n private buildCloneTree = (currentEntity: any, node: any) => {\r\n var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);\r\n childProperties.forEach((childProperty: any) => {\r\n let type = this.getTypeFromEntityTypeName(childProperty.entities[0].$type);\r\n let childLookup = this.modelTableLookup.lookup.get(type);\r\n let groupNode = new Node(\r\n null,\r\n childProperty.entities[0].constructor.name,\r\n childLookup?.pluralLabel as string,\r\n false,\r\n true,\r\n [],\r\n '',\r\n null,\r\n false,\r\n node,\r\n null\r\n );\r\n\r\n this.flatList.push(groupNode);\r\n\r\n childProperty.entities.forEach((childEntity: any) => {\r\n let type = this.getTypeFromEntityTypeName(childEntity.$type);\r\n let childNode = new Node(\r\n childEntity[type + 'Ref'],\r\n type,\r\n type,\r\n true,\r\n true,\r\n [],\r\n '',\r\n childProperty.parentToChildRefName,\r\n false,\r\n groupNode,\r\n childEntity\r\n );\r\n\r\n this.childFlatList.push(childNode);\r\n groupNode.nodes.push(childNode);\r\n this.buildCloneTree(childEntity, childNode);\r\n });\r\n\r\n node.nodes.push(groupNode);\r\n });\r\n }\r\n\r\n private asyncForEachRecordId = (arr: any, cb: any) => {\r\n return arr.reduce((p: any, c: any) => {\r\n return p.then(() => cb(c));\r\n }, Promise.resolve());\r\n }\r\n\r\n private fetchRecordId = (child: any) => {\r\n var c = child;\r\n var data = {\r\n ref: c.ref,\r\n tableName: c.tableName\r\n };\r\n data = this.textManager.formatAsUrlParameters(data);\r\n\r\n return new Promise((resolve: any) => {\r\n c.displayName = child.entity.HID;\r\n this.processedCount++;\r\n this.loadingMessage = 'Formatting data...processed (' + this.processedCount + '/' + this.childFlatList.length + ') records';\r\n if (this.processedCount >= this.childFlatList.length)\r\n this.loadingMessage = 'Rendering tree...';\r\n resolve();\r\n });\r\n }\r\n\r\n private traverse = (node: any, currentEntity: any) => {\r\n var group = !node.child;\r\n if (group) {\r\n var groupNodes = node.nodes;\r\n groupNodes.forEach((groupNode: any) => {\r\n if (groupNode.checked)\r\n groupNode.nodes.forEach((childNode: any) => {\r\n this.traverse(childNode, currentEntity);\r\n });\r\n });\r\n } else {\r\n if (node.checked) {\r\n let tableType = this.modelTypeLookup.getType(node.tableName);\r\n let newEntity = this.parentDataContext.entityAccess().add(tableType, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n this.getPrototypeProperties(newEntity).forEach((propertyName) => {\r\n if (this.propertyIsAllowed(propertyName, node.tableName)) {\r\n newEntity[propertyName as ObjectKey] = node.entity[propertyName];\r\n }\r\n });\r\n\r\n newEntity.setProperty!('_associatedDataCached', true);\r\n\r\n let childLookup = this.modelTableLookup.lookup.get(node.tableName);\r\n currentEntity[node.parentToChildRefName].push(newEntity);\r\n let childNodes = node.nodes;\r\n childNodes.forEach((childNode: any) => {\r\n if (childNode.checked)\r\n childNode.nodes.forEach((groupNode: any) => {\r\n this.traverse(groupNode, newEntity);\r\n });\r\n });\r\n }\r\n }\r\n };\r\n\r\n private getDataForCloning = () => {\r\n this.parentDataContext.entityAccess().clone({\r\n ref: this.entity.Ref,\r\n tableName: this.tableName\r\n }).subscribe({\r\n next: (response: any) => {\r\n this.dataTree = response.Content[0];\r\n this.buildCloneTree(this.dataTree, this.rootNode);\r\n\r\n this.loadingMessage = 'Formatting data...(0/' + this.childFlatList.length + ') records';\r\n this.asyncForEachRecordId(this.childFlatList, this.fetchRecordId).then(this.onDone);\r\n\r\n this.displayTree = [this.rootNode];\r\n },\r\n error: (ex: any) => {\r\n console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message]))\r\n }\r\n });\r\n }\r\n\r\n onClone = () => {\r\n let copies = this.selectedNumberOfCopies.value;\r\n for (let i = 0; i < copies; i++) {\r\n let tableType = this.modelTypeLookup.getType(this.tableName);\r\n let newEntity = this.parentDataContext.entityAccess().add(tableType, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n this.getPrototypeProperties(this.entity).forEach((propertyName: string) => {\r\n if (this.propertyIsAllowed(propertyName, this.tableName)) {\r\n newEntity[propertyName as ObjectKey] = this.entity[propertyName];\r\n }\r\n });\r\n\r\n newEntity.setProperty!('_associatedDataCached', true);\r\n\r\n this.traverse(this.displayTree[0], newEntity);\r\n this.view.entities?.unshift(newEntity);\r\n }\r\n let windowCloseEventArgs = new TruWindowCloseEventArgs();\r\n windowCloseEventArgs.entities = this.view.entities as Array<TruEntityBase>;\r\n windowCloseEventArgs.entityIndex = 0;\r\n windowCloseEventArgs.refresh = true;\r\n this.windowEventHandler.close(windowCloseEventArgs);\r\n };\r\n\r\n onDone = () => {\r\n this.doneProcessing = true;\r\n }\r\n\r\n onRendered = () => {\r\n this.loadingMessage = '';\r\n };\r\n\r\n onCancel = () => {\r\n this.windowEventHandler.close();\r\n };\r\n\r\n onExpandClicked = () => {\r\n this.childFlatList.find((node: Node) => { node.showEntities = true; });\r\n }\r\n\r\n onCollapseClicked = () => {\r\n this.childFlatList.find((node: Node) => { node.showEntities = false; });\r\n }\r\n\r\n onNumberOfCopiesChanged = (event: any) => {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if (this.view.window.parentDataContext !== null)\r\n this.parentDataContext = this.view.window.parentDataContext;\r\n this.tableName = this.view.window.tableName;\r\n this.entities = this.view.entities as any;\r\n this.entity = this.entities[this.view.entityIndex];\r\n this.rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, null, true, null, null);\r\n this.setEntityDisplayValues(this.view.window.tableName);\r\n this.getDataForCloning();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataTree.length = 0;\r\n this.flatList.length = 0;\r\n this.childFlatList.length = 0;\r\n }\r\n}\r\n\r\nclass Node {\r\n ref: number | null;\r\n tableName: string;\r\n displayName: string;\r\n checked: boolean;\r\n child: any;\r\n childNodes: any;\r\n showEntities: boolean = false;\r\n pathFromRoot: string | null;\r\n parentToChildRefName: string | null;\r\n nodes: Node[] = [];\r\n root: any;\r\n parent: any;\r\n entity: any;\r\n\r\n constructor(\r\n ref: number | null,\r\n tableName: string,\r\n displayName: string,\r\n child: any,\r\n checked: boolean,\r\n childEntities: any,\r\n pathFromRoot: string | null,\r\n parentToChildRefName: string | null,\r\n root: boolean,\r\n parent: any,\r\n entity: any) {\r\n this.ref = ref;\r\n this.tableName = tableName;\r\n this.displayName = displayName;\r\n this.checked = checked;\r\n this.child = child;\r\n this.childNodes = childEntities;\r\n this.pathFromRoot = pathFromRoot;\r\n this.parentToChildRefName = parentToChildRefName;\r\n this.root = root;\r\n this.parent = parent;\r\n this.entity = entity;\r\n }\r\n\r\n onGroupDisplay = () => {\r\n var currentValue = this.showEntities = !this.showEntities;\r\n this.nodes.find((n: any) => {\r\n n.showEntities = currentValue;\r\n });\r\n }\r\n\r\n onCheckedChanged = () => {\r\n if (this.checked) {\r\n if (this.child) {\r\n var p = this.parent;\r\n while (p) {\r\n p.checked = true;\r\n p = p.parent;\r\n }\r\n } else {\r\n this.nodes.find((n: any) => { n.checked = true; });\r\n }\r\n } else {\r\n if (this.child) {\r\n var allUnchecked = this.parent.nodes.every((n: any) => {\r\n return n.checked === false;\r\n });\r\n if (allUnchecked)\r\n this.parent.checked = false;\r\n } else {\r\n var uncheckChildNodes = (node: any) => {\r\n node.nodes.find((n: any) => {\r\n uncheckChildNodes(n);\r\n n.checked = false;\r\n });\r\n };\r\n this.nodes.find((n: any) => {\r\n uncheckChildNodes(n);\r\n n.checked = false;\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"!doneProcessing\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"!doneProcessing\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"!doneProcessing\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" truRendered (rendered)=\"onRendered()\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" truRendered (rendered)=\"onRendered()\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (keyup.enter)=\"onCancel()\" (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\" [disabled]=\"!doneProcessing\">Clone</button>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { TruReportView } from '../components/report-view/tru-report-view';\r\nimport { TruCloneView } from '../components/clone-view/tru-clone-view';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TruComponentLookup {\r\n private truComponentLookupRegistry: Map<string, any> = new Map();\r\n\r\n constructor() {\r\n this.set('TruReportView', TruReportView);\r\n this.set('TruCloneView', TruCloneView);\r\n }\r\n\r\n set = (key: string, type: any): void => {\r\n this.truComponentLookupRegistry.set(key, type);\r\n }\r\n\r\n get = (key: string): any => {\r\n return this.truComponentLookupRegistry.get(key);\r\n }\r\n\r\n getBySuffix = (suffix: string): Array<any> => {\r\n return [...this.truComponentLookupRegistry.values()].filter(\r\n (v: any, k: any) => {\r\n v.name.toLowerCase().endsWith(suffix.toLowerCase())\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruDesktopViewEventNotifier {\r\n private active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n onActiveStateChanged = () => {\r\n return this.active$;\r\n }\r\n\r\n get isActive() {\r\n return this.active$.getValue();\r\n }\r\n\r\n set isActive(value: boolean) {\r\n this.active$.next(value);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { TruDataChange } from '../../classes/tru-data-change';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruDesktopManager } from '../../components/desktop/services/tru-desktop-manager';\r\nimport { TruDesktopViewEventNotifier } from '../../components/desktop/services/tru-desktop-view-event-notifier';\r\nimport { TruWindowCloseEventArgs } from '../../components/desktop/services/tru-window-close-event-args';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruComponentLookup } from '../../services/tru-component-lookup';\r\n\r\n@Component({\r\n selector: 'tru-detail-view-base',\r\n templateUrl: './tru-detail-view-base.html',\r\n styleUrls: ['./tru-detail-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruDetailViewBase {\r\n @ViewChild('customToolbarContainer', { read: ViewContainerRef }) customToolbarContainer!: ViewContainerRef;\r\n\r\n @Input() view!: TruDesktopViewConfig;\r\n\r\n private childUpdateFn: Function | null = null;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected parentTableName: string = '';\r\n protected parentTablePluralName: string = '';\r\n protected parentTablePluralLabel: string = '';\r\n protected customToolbarComponents: any = [];\r\n\r\n entities: Array<any> = [];\r\n entity: any;\r\n entityType: any;\r\n recordLocation: string | null = null;\r\n disableNavigationToPreviousEntity: boolean = false;\r\n disableNavigationToNextEntity: boolean = false;\r\n navigationIndex: number = 0;\r\n recordsBeforeRevert: number = 0;\r\n subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n protected dataContext: TruDataContext,\r\n protected componentLookup: TruComponentLookup,\r\n protected appEnvironment: TruAppEnvironment,\r\n protected textManager: TruTextManager,\r\n protected desktopManager: TruDesktopManager, \r\n protected windowEventHandler: TruWindowEventHandler,\r\n protected desktopViewEventNotifier: TruDesktopViewEventNotifier,\r\n protected util: TruUtil) {\r\n }\r\n\r\n private calculateNextIndex = (): number => {\r\n let nextIndex = 0;\r\n var removedRecords = this.recordsBeforeRevert - this.entities.length;\r\n if (this.navigationIndex > this.entities.length - 1)\r\n nextIndex = this.entities.length - 1;\r\n else {\r\n nextIndex = (this.navigationIndex - removedRecords);\r\n }\r\n\r\n if (nextIndex < 0)\r\n nextIndex = 0;\r\n\r\n return nextIndex;\r\n }\r\n\r\n protected renderCustomToolbarComponents = () => {\r\n this.customToolbarComponents.forEach((componentName: string) => {\r\n let toolbarContainerRef = this.customToolbarContainer.createComponent(this.componentLookup.get(componentName)) as any;\r\n toolbarContainerRef.instance.tableName = this.tableName;\r\n toolbarContainerRef.instance.getEntities = () => { return [this.entity] };\r\n });\r\n }\r\n\r\n onAddEntity = (newEntity: any) => {\r\n if (!newEntity)\r\n newEntity = this.dataContext.entityAccess().add(this.entityType);\r\n this.entities.splice(this.navigationIndex + 1, 0, newEntity);\r\n this.navigateTo(this.navigationIndex + 1);\r\n }\r\n\r\n onCloneEntity = () => {\r\n let windowEventArgs = this.desktopManager.addModalWindow(\r\n this.tableName,\r\n this.tableName,\r\n this.tableName, 'TruCloneView',\r\n this.entities,\r\n this.navigationIndex,\r\n this.dataContext,\r\n false,\r\n false,\r\n false);\r\n windowEventArgs.onClose$.subscribe((windowCloseEventArgs: TruWindowCloseEventArgs | null) => {\r\n if (windowCloseEventArgs !== null && windowCloseEventArgs.refresh) {\r\n this.navigateTo(windowCloseEventArgs.entityIndex);\r\n if (this.childUpdateFn !== null)\r\n this.childUpdateFn();\r\n }\r\n });\r\n }\r\n\r\n onDeleteEntity = () => {\r\n let confirmMsg = this.textManager.fmtDeleteConfirmation(this.entityType.name);\r\n this.dataContext.delete([this.entity], confirmMsg, (successful: boolean) => {\r\n if (successful) {\r\n let index = this.entities.indexOf(this.entity);\r\n this.entities.splice(index, 1);\r\n if (!this.entities.length) {\r\n index = this.view.window.views.indexOf(this.view);\r\n if (index > -1) {\r\n this.view.window.views.splice(index, 1);\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n onFirstEntity = () => {\r\n this.navigateTo(0);\r\n }\r\n\r\n onPreviousEntity = () => {\r\n this.navigateTo(this.navigationIndex - 1);\r\n }\r\n\r\n onNextEntity = () => {\r\n this.navigateTo(this.navigationIndex + 1);\r\n }\r\n\r\n onLastEntity = () => {\r\n this.navigateTo(this.entities.length - 1);\r\n }\r\n\r\n navigateTo = (index: number) => {\r\n this.setNavigationIndex(index);\r\n this.setEntityDisplayValues(this.tableName);\r\n }\r\n\r\n registerChildUpdateFn = (func: (dataChange: TruDataChange | null) => void) => {\r\n this.childUpdateFn = func;\r\n };\r\n\r\n subscribe() {\r\n this.subs.push(this.appEnvironment.onRevertComplete$.subscribe((event: any) => {\r\n if (event?.successful && this.view.entities) {\r\n this.recordsBeforeRevert = this.entities.length;\r\n this.entities = this.entities.filter((e: any) => { return !e.entityAspect.entityState.isDetached() });\r\n this.setNavigationIndex(this.calculateNextIndex());\r\n this.setEntityDisplayValues(this.tableName);\r\n }\r\n }));\r\n this.subs.push(this.view.onActive().subscribe((active: boolean) => {\r\n if (active)\r\n this.setEntityDisplayValues(this.tableName);\r\n }));\r\n this.subs.push(fromEvent<KeyboardEvent>(document, 'keydown').subscribe((event: KeyboardEvent) => {\r\n if (this.view.active && this.view.window.active) {\r\n let keySequence = this.util.getKeySequence(event);\r\n if (keySequence === 'ctrl+i' || keySequence === 'meta+i') {\r\n //this.onAddEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+d' || keySequence === 'meta+d') {\r\n this.onDeleteEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+up' || keySequence === 'meta+up') {\r\n this.onFirstEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+left' || keySequence === 'meta+left') {\r\n this.onPreviousEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+right' || keySequence === 'meta+right') {\r\n this.onNextEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+down' || keySequence === 'meta+down') {\r\n this.onLastEntity();\r\n event.preventDefault();\r\n }\r\n var targetIsControl = this.util.targetIsControl(event.target as HTMLElement);\r\n if (!targetIsControl && event.ctrlKey || event.altKey)\r\n event.preventDefault();\r\n }\r\n }));\r\n }\r\n\r\n setNavigationIndex(index: number) {\r\n this.navigationIndex = index;\r\n this.disableNavigationToPreviousEntity = index === 0;\r\n this.disableNavigationToNextEntity = index === this.entities.length - 1;\r\n this.entity = this.entities[this.navigationIndex];\r\n }\r\n\r\n setEntityDisplayValues(tableName: string) {\r\n let title = '';\r\n let recordIndex = '?';\r\n let entity = this.entities[this.navigationIndex];\r\n if (entity) {\r\n title = tableName + ' - ';\r\n if (entity.entityAspect.entityState.isAdded()) {\r\n title += 'New Record';\r\n } else {\r\n title += this.entity.HID;\r\n }\r\n recordIndex = (this.navigationIndex + 1).toString();\r\n }\r\n this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));\r\n this.recordLocation = recordIndex + ' of ' + this.entities.length;\r\n }\r\n}\r\n","","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ITruAncestor } from '../../../interfaces/tru-ancestor';\r\n\r\n@Injectable()\r\nexport class TruSearchViewControlEventHandler {\r\n private clear$ = new BehaviorSubject<any>(null);\r\n private default$ = new BehaviorSubject<any>(null);\r\n private updateDependants$: Subject<ITruAncestor> = new Subject<ITruAncestor>();\r\n\r\n onSetDefaults() {\r\n return this.default$;\r\n }\r\n\r\n setDefaults() {\r\n this.default$.next(null);\r\n }\r\n\r\n onClearValues() {\r\n return this.clear$;\r\n }\r\n\r\n clearValues() {\r\n this.clear$.next(null);\r\n }\r\n\r\n onUpdateDependants() {\r\n return this.updateDependants$;\r\n }\r\n\r\n updateDependants = (table: string, ancestorRef: string, value: string | number | null | undefined) => {\r\n this.updateDependants$.next({ table: table, ancestorRef: ancestorRef, value: value });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruSearchViewEventHandler {\r\n private search$ = new BehaviorSubject<any>(null);\r\n private searchFromParent$ = new BehaviorSubject<any>(null);\r\n private filter$ = new BehaviorSubject<any>(null);\r\n\r\n search(query: any) {\r\n this.search$.next(query)\r\n }\r\n\r\n onSearch() {\r\n return this.search$.asObservable();\r\n }\r\n\r\n initiateChildSearch() {\r\n this.searchFromParent$.next(null)\r\n }\r\n\r\n onParentInitiatedSearch() {\r\n return this.searchFromParent$.asObservable();\r\n }\r\n\r\n filter(query: any) {\r\n this.filter$.next(query)\r\n }\r\n\r\n onFilter() {\r\n return this.filter$.asObservable();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-search-result-view-base',\r\n templateUrl: './tru-search-result-view-base.html',\r\n styleUrls: ['./tru-search-result-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruSearchResultViewBase {\r\n @Input() view: any;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected parentTableName: string | undefined = undefined;\r\n protected parentTablePluralName: string | undefined = undefined;\r\n protected parentTablePluralLabel: string | undefined = undefined;\r\n protected hasDetailView: boolean = true;\r\n\r\n searchPanelConfig = {\r\n side: 'right',\r\n active: true,\r\n open: true,\r\n modKeyLabel: '',\r\n size: 500,\r\n pinned: false\r\n }\r\n\r\n constructor(\r\n private uiNotification: TruUiNotification,\r\n private truWindowEventHandler: TruWindowEventHandler) {\r\n }\r\n\r\n onPkeyCellDoubleClicked = (gridConfig: any) => {\r\n if (this.hasDetailView) {\r\n let entities: any = [];\r\n gridConfig.api.forEachNodeAfterFilterAndSort((rowNode: any) => {\r\n entities.push(rowNode.data.$entity);\r\n });\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = gridConfig.rowIndex;\r\n windowAddViewEventArgs.componentName = this.tableName + 'DetailView';\r\n this.truWindowEventHandler.addView(windowAddViewEventArgs);\r\n } else {\r\n this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, \"\", \"Ok\").then(() => { });\r\n }\r\n }\r\n\r\n onCardColumnClicked = (entities: any) => {\r\n if (this.hasDetailView) {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = 0;\r\n windowAddViewEventArgs.componentName = this.parentTableName + 'DetailView';\r\n this.truWindowEventHandler.addView(windowAddViewEventArgs);\r\n } else {\r\n this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, \"\", \"Ok\").then(() => { });\r\n }\r\n }\r\n\r\n onCardDoubleClicked = (entities: any, index: number) => {\r\n if (this.hasDetailView) {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = index;\r\n windowAddViewEventArgs.componentName = this.tableName + 'DetailView';\r\n this.truWindowEventHandler.addView(windowAddViewEventArgs);\r\n } else {\r\n this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, \"\", \"Ok\").then(() => { });\r\n }\r\n }\r\n}\r\n","","export abstract class TruChoice {\r\n abstract label: string;\r\n abstract value: { $: string | number | null | undefined };\r\n abstract checked?: boolean | null | undefined;\r\n abstract notAnOption?: boolean | undefined;\r\n}\r\n","import { TruContextFilterChoice } from \"./tru-context-filter-choice\";\r\n\r\nexport class TruContextFilter {\r\n tooltip: string | undefined = undefined;\r\n choices: Array<TruContextFilterChoice> = [];\r\n selectedChoice!: TruContextFilterChoice;\r\n\r\n constructor() {}\r\n\r\n identify = (index: number, choice: TruContextFilterChoice) => {\r\n\t return choice.ref;\r\n }\r\n\r\n comparer = (o1: TruContextFilterChoice, o2: TruContextFilterChoice) => {\r\n return o1 && o2 ? o1.label === o2.label : o2 === o2;\r\n }\r\n\r\n onChange = (choice: TruContextFilterChoice) => {\r\n this.selectedChoice = choice;\r\n } \r\n}\r\n","export class TruContextFilterChoice {\r\n table: string;\r\n label: string;\r\n ref: number;\r\n\r\n constructor(\r\n table: string,\r\n label: string,\r\n ref: number)\r\n {\r\n this.table = table;\r\n this.label = label;\r\n this.ref = ref;\r\n }\r\n}\r\n","export class TruDataChange {\r\n dataChanges: [] = [];\r\n reload: boolean = false;\r\n}\r\n","import * as _ from 'underscore';\r\nimport moment from 'moment/moment'; \r\n\r\nexport class TruFormulaEval {\r\n\r\n public static isString(s: any) {\r\n return typeof s === 'string';\r\n }\r\n\r\n public static isDate(v: any) {\r\n return Object.prototype.toString.call(v) === '[object Date]'\r\n }\r\n\r\n public static toValue(value: any) {\r\n return value;\r\n }\r\n\r\n public static toString(value: any) {\r\n //if (_.isBoolean(value))\r\n // return value ? 'TRUE' : 'FALSE';\r\n return value.toString();\r\n }\r\n\r\n public static toDouble(value: any) {\r\n return Number(value);\r\n }\r\n\r\n public static toInteger(value: any) {\r\n return Math.round(value);\r\n }\r\n\r\n public static toBoolean(value: any) {\r\n if (_.isBoolean(value))\r\n return value;\r\n var number = Number(value);\r\n if (isNaN(number))\r\n return NaN;\r\n return number !== 0;\r\n }\r\n\r\n public static toDate(value: any) {\r\n return value;\r\n }\r\n\r\n public statictoDateTime(value: any) {\r\n return value;\r\n }\r\n\r\n /**\r\n * Exposed for testing.\r\n */\r\n public static _calculate(f: any, left: any, right: any) {\r\n if (TruFormulaEval.isString(left))\r\n left = parseFloat(left);\r\n if (TruFormulaEval.isString(left))\r\n if (TruFormulaEval.isString(right))\r\n right = parseFloat(right);\r\n return f(left, right);\r\n }\r\n\r\n public static _calculateDate(left: any, right: any, add: any) {\r\n if (add) {\r\n if (TruFormulaEval.isDate(left) && !TruFormulaEval.isDate(right)) {\r\n return moment(left).add(right, 'day').toDate();\r\n\r\n }\r\n\r\n if (!TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n return moment(right).add(left, 'day').toDate();\r\n }\r\n\r\n if (TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n return moment(left).add(right).toDate();\r\n }\r\n } else {\r\n if (TruFormulaEval.isDate(left) && !TruFormulaEval.isDate(right)) {\r\n return moment(left).subtract(right, 'day').toDate();\r\n }\r\n\r\n if (!TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n return moment(right).subtract(left, 'day').toDate();\r\n\r\n }\r\n\r\n if (TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n //var m = moment(left).diff(right, 'days'); //Integer value, but Excel uses decimal for date time\r\n var m = moment(left).diff(moment(right)) / 86400000; //divide by miliseconds in a day, decimal answer 1.0 = 1 day, 0.5 = 12 hours\r\n return m;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public static add(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n if (TruFormulaEval.isDate(left) || TruFormulaEval.isDate(right))\r\n return TruFormulaEval._calculateDate(left, right, true);\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l + r }, left, right);\r\n }\r\n public static subtract(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n if (TruFormulaEval.isDate(left) || TruFormulaEval.isDate(right))\r\n return TruFormulaEval._calculateDate(left, right, false);\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l - r }, left, right);\r\n }\r\n public static multiply(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l * r }, left, right);\r\n }\r\n public static divide(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l / r }, left, right);\r\n }\r\n public static power(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n return TruFormulaEval._calculate(Math.pow, left, right);\r\n }\r\n\r\n public static concatenate(left: any, right: any) {\r\n if (_.isBoolean(left))\r\n left = left ? 'TRUE' : 'FALSE';\r\n else if (!TruFormulaEval.isString(left))\r\n //NOTE: only need to convert left to string since concat() will coerce parameters\r\n left = left.toString();\r\n if (_.isBoolean(right))\r\n right = right ? 'TRUE' : 'FALSE';\r\n return left.concat(right);\r\n }\r\n public static equal(left: any, right: any) {\r\n return left === right;\r\n }\r\n public static notEqual(left: any, right: any) {\r\n return left !== right;\r\n }\r\n\r\n public static compareResultForMismatchedParams: any = {\r\n booleanstring: true,\r\n booleannumber: true,\r\n stringnumber: true,\r\n stringboolean: false,\r\n numberstring: false,\r\n numberboolean: false\r\n };\r\n public static lessThan(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return !TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left < right;\r\n }\r\n public static greaterThan(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left > right;\r\n }\r\n public static lessThanOrEqual(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return !TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left <= right;\r\n }\r\n public static greaterThanOrEqual(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left >= right;\r\n }\r\n\r\n public static negate(operand: any) {\r\n return -operand;\r\n }\r\n\r\n public static percent(operand: any) {\r\n return operand / 100.0;\r\n }\r\n}\r\n","export abstract class TruNameValue {\r\n abstract name: string;\r\n abstract value: { $: string | number | null | undefined };\r\n abstract entity?: any;\r\n abstract checked?: boolean | null | undefined;\r\n abstract notAnOption?: boolean | undefined;\r\n}\r\n","import { TruNavigationPropertyConfig } from \"./tru-navigation-property-config\";\r\n\r\nexport class TruNavigationPropertiesConfig {\r\n constructor() { }\r\n\r\n properties: Array<TruNavigationPropertyConfig> = [];\r\n}\r\n","export class TruNavigationPropertyConfig {\r\n name: string;\r\n doesCascadeDelete: boolean;\r\n\r\n constructor(name: string, doesCascadeDelete: boolean) {\r\n this.name = name;\r\n this.doesCascadeDelete = doesCascadeDelete;\r\n }\r\n}\r\n","import { AndOrPredicate, BinaryPredicate, breeze } from \"breeze-client\";\r\n\r\nexport class TruPredicate {\r\n _breezePredicate: any = null;\r\n\r\n constructor(field: any, operator: string | null, value: any, propertyQueryPath: Array<string> | null, overQuoted: boolean = false) {\r\n if (typeof field === 'string') {\r\n var args = propertyQueryPath?.slice(0) as Array<string>;\r\n args[args.length - 1] += field;\r\n args.push(operator as string);\r\n args.push(value);\r\n this._breezePredicate = new breeze.Predicate(args as Array<any>);\r\n this._breezePredicate.overQuoted = overQuoted;\r\n } else if (arguments[0].constructor === TruPredicate || arguments[0].constructor === BinaryPredicate || arguments[0].constructor === AndOrPredicate) {\r\n this._breezePredicate = arguments[0];\r\n } else {\r\n throw new TypeError('Unexpected parameter type <' + arguments[0].constructor + '>.');\r\n }\r\n }\r\n\r\n handleOperator = (fieldOrPredicate: any, oper: (p: any) => {}, operator?: string, value?: any) => {\r\n var breezePredicate;\r\n if (Array.isArray(fieldOrPredicate)) {\r\n breezePredicate = new TruPredicate(fieldOrPredicate[0], fieldOrPredicate[1], fieldOrPredicate[2], []);\r\n } else if (fieldOrPredicate.constructor === TruPredicate || fieldOrPredicate.constructor === BinaryPredicate || fieldOrPredicate.constructor === AndOrPredicate) {\r\n breezePredicate = fieldOrPredicate;\r\n } else {\r\n throw new TypeError('Unexpected parameter type <' + fieldOrPredicate.constructor + '>.');\r\n }\r\n breezePredicate = oper(breezePredicate);\r\n return new TruPredicate(breezePredicate, null, null, null);\r\n }\r\n\r\n and = (fieldOrPredicate: any, operator?: string, value?: any) => {\r\n var that = this;\r\n return this.handleOperator(fieldOrPredicate, function (p) { return that._breezePredicate.and(p); }, operator, value);\r\n }\r\n\r\n or = (fieldOrPredicate: any, operator?: string, value?: any) => {\r\n var that = this;\r\n return this.handleOperator(fieldOrPredicate, function (p) { return that._breezePredicate.and(p); }, operator, value);\r\n }\r\n\r\n not = () => {\r\n var breezePredicate = this._breezePredicate.not();\r\n return new TruPredicate(breezePredicate, null, null, null);\r\n }\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\nimport { ITruAncestor } from '../interfaces/tru-ancestor';\r\n\r\nexport class TruPropertyConfigForeignKey extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n table: string | undefined = undefined;\r\n foreignTableName: string | undefined = undefined;\r\n choicesQuery: string | undefined = undefined;\r\n dependsOn: Array<ITruAncestor> = [];\r\n}\r\n","import { TruPropertyConfigForeignKey } from './tru-property-config-foreign-key';\r\n\r\nexport class TruPropertyConfigCloudFile extends TruPropertyConfigForeignKey {\r\n constructor() { super() }\r\n \r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigDate extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n\r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigDecimal extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n decimalPlaces: number | undefined = undefined;\r\n totalDigits: number | undefined = undefined;\r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigFile extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n\r\n maxSize: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigInteger extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigText extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n\r\n maxLength: number | undefined = undefined;\r\n minLength: number | undefined = undefined;\r\n unbounded: boolean | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigText } from './tru-property-config-text';\r\n\r\nexport class TruPropertyConfigPassword extends TruPropertyConfigText {\r\n constructor() { super() }\r\n\r\n encryptionType: string | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigPercentage extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigScientific extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigText } from './tru-property-config-text';\r\n\r\nexport class TruPropertyConfigTextChoices extends TruPropertyConfigText {\r\n constructor() { super() }\r\n choices: any = {};\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigUsaAddress extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n requireZipPlusFour: boolean|undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigZipCode extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n requireZipPlusFour: boolean|undefined = undefined;\r\n}\r\n","import { TruPredicate } from \"./tru-predicate\";\r\n\r\nexport class TruQueryPredicateManager {\r\n _predicate: TruPredicate | null = null;\r\n _propertyQueryPath: Array<string> | null = [];\r\n _predicateName: string = '';\r\n _predicateMap: any = {};\r\n\r\n constructor(propertyQueryPath: Array<string>, predicateName: string, predicateMap: any) {\r\n this._propertyQueryPath = propertyQueryPath;\r\n this._predicateName = predicateName;\r\n this._predicateMap = predicateMap;\r\n }\r\n\r\n private setPredicate = (queryPredicate: TruPredicate | null) => {\r\n if (this._predicate !== queryPredicate && this._predicateMap !== null) {\r\n this._predicate = queryPredicate;\r\n this._predicateMap[this._predicateName] = this._predicate === null ? null : this._predicate;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the query predicate.\r\n */\r\n get = () => {\r\n return this._predicate;\r\n };\r\n\r\n /**\r\n * Clears the query predicate.\r\n */\r\n clear = () => {\r\n this.setPredicate(null);\r\n }\r\n\r\n /**\r\n * Returns a new query predicate.\r\n * \r\n * @param {string} field - Name of the storage field relative to the intent property.\r\n * @param {string} operator - Name of the predicate operator.\r\n * @param {*} value - Literal value.\r\n */\r\n create = (field: string, operator: string, value: any, overQuoted: boolean = false) => {\r\n return new TruPredicate(field, operator, value, this._propertyQueryPath, overQuoted)._breezePredicate;\r\n }\r\n\r\n set = (fieldOrPredicate: string | TruPredicate, operator?: string, value?: any, overQuoted: boolean = false): void => { \r\n var predicate;\r\n if (fieldOrPredicate.constructor === TruPredicate)\r\n predicate = fieldOrPredicate;\r\n else\r\n predicate = this.create(fieldOrPredicate as string, operator as string, value, overQuoted);\r\n this.setPredicate(predicate);\r\n };\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\n\r\nexport abstract class TruViewMenuConfig {\r\n entities: Array<TruEntityBase> = [];\r\n actionRefs: string = '';\r\n menuItemsEnabled!: () => boolean;\r\n allMenus!: () => Observable<any>;\r\n}\r\n","import { breeze, Validator } from \"breeze-client\";\r\nimport _ from \"underscore\";\r\nimport { TruMergeDataSet } from \"./tru-merge-data-set\";\r\n\r\nexport class TruValidatorFactory {\r\n private satisfiesEntityMessageValidation = (entity: any, context: any) => {\r\n var messages = _.values(entity._customValidationErrors);\r\n if (!messages.length)\r\n return true;\r\n context.messageTemplate = messages.join('...');\r\n return false;\r\n }\r\n\r\n private satisfiesRequiredValidation(value: any) {\r\n if (value === null || value === '') return false;\r\n return true;\r\n }\r\n\r\n private satisfiesMaxLengthValidation = (value: any, context: any) => {\r\n if (!value)\r\n return true;\r\n return typeof value === 'string' && value.length <= context.maxLength;\r\n }\r\n\r\n private satisfiesFloatValidation = (value: any) => {\r\n if (value === null)\r\n return true;\r\n return typeof value === 'number' && isFinite(value);\r\n }\r\n\r\n private satisfiesIntegerValidation = (value: any) => {\r\n if (value === null)\r\n return true;\r\n //NOTE: Number.isInteger() would work, but is not implemented in all supported browsers\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n }\r\n\r\n private satisfiesDateValidation(value: any) {\r\n if (Object.prototype.toString.call(value) !== '[object Date]')\r\n return false;\r\n return isFinite(value.getTime());\r\n }\r\n\r\n private satisfiesInvalidChoiceValidation(value: any, context: any) {\r\n if (context.entity.Is_Invalid === 'true') {\r\n context.error = context.propertyName + '\\' invalid choice'\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private satisfiesMergeValidation = (value: any, context: any) => {\r\n var mergeData = context.entity.Merge_Data_Set as TruMergeDataSet;\r\n if (mergeData.isEmpty())\r\n return true;\r\n let targetProperty = mergeData.get(context.propertyName);\r\n if (targetProperty) {\r\n var mergeValue = targetProperty.hid ? targetProperty.hid : targetProperty.value;\r\n context.error = targetProperty.modifiedBy + ' changed ' + context.propertyName + ' to ' + mergeValue.toString().replace(/<[^>]*>/g, '') + '.';\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n createEntityMessageValidator = (): Validator => {\r\n return new breeze.Validator('entityMessage', this.satisfiesEntityMessageValidation);\r\n }\r\n\r\n createRequiredValidator = (): Validator => {\r\n return new breeze.Validator('required', this.satisfiesRequiredValidation, {\r\n messageTemplate: '\\'%displayName%\\' is required'\r\n });\r\n }\r\n\r\n createMaxLengthValidator = (maxLength: any): Validator => {\r\n var context = {\r\n messageTemplate: '\\'%displayName%\\' exceeds maximum character length of %maxLength%',\r\n maxLength: maxLength\r\n };\r\n return new breeze.Validator('maxLength', this.satisfiesMaxLengthValidation, context);\r\n };\r\n\r\n createIntegerValidator = (): Validator => {\r\n return new breeze.Validator('integer', this.satisfiesIntegerValidation, {\r\n messageTemplate: '\\'%displayName%\\' must be an integer'\r\n });\r\n }\r\n\r\n createFloatValidator = (): Validator => {\r\n return new breeze.Validator('float', this.satisfiesFloatValidation, {\r\n messageTemplate: '\\'%displayName%\\' must be a number'\r\n });\r\n }\r\n\r\n createDateValidator = (): Validator => {\r\n return new breeze.Validator('date', this.satisfiesDateValidation, {\r\n messageTemplate: '\\'%displayName%\\' must be a date'\r\n });\r\n }\r\n\r\n createInvalidChoiceValidator = (): Validator => {\r\n return new breeze.Validator('invalid', this.satisfiesInvalidChoiceValidation, {\r\n messageTemplate: '\\'%error%'\r\n });\r\n }\r\n\r\n createMergeValidator = (): Validator => {\r\n return new breeze.Validator('merge', this.satisfiesMergeValidation, {\r\n messageTemplate: '\\'%error%\\''\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { breeze, Predicate } from 'breeze-client';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\nimport { TruUser } from './tru-user';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUserPreferenceManager {\r\n private globalDataContext: any;\r\n constructor(\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private appEnvironment: TruAppEnvironment,\r\n private user: TruUser) {\r\n this.globalDataContext = this.appEnvironment.globalDataContext;\r\n }\r\n\r\n private setupQuery = (query: any, name: string) => {\r\n var predicate = new Predicate('TruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef);\r\n if (name)\r\n predicate = predicate.and('Name', breeze.FilterQueryOp.Equals, name);\r\n return query.where(predicate);\r\n }\r\n\r\n /**\r\n * Queries for a preference for the current user. On success, completes\r\n * promise with the value or undefined if none.\r\n * @param {string} name - preference name\r\n * @returns {promise}\r\n */\r\n public get = (name: string) => {\r\n let setupQuery = (query: any) => {\r\n var predicate = new Predicate('TruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef);\r\n if (name)\r\n predicate = predicate.and('Name', breeze.FilterQueryOp.Equals, name);\r\n return query.where(predicate);\r\n }\r\n return this.globalDataContext.entityAccess().searchCacheOnlySynchronously(this.modelTypeLookup.getType('TruDbUserPreference'), setupQuery)\r\n }\r\n\r\n /**\r\n * Queries for all preferences for the current user. On success, completes\r\n * promise with an object loaded with the values indexed by name.\r\n * @returns {promise}\r\n */\r\n public getAll = async () => {\r\n await this.globalDataContext\r\n .entityAccess()\r\n .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)\r\n .subscribe((entities: any) => {\r\n let result = {} as Object;\r\n type ObjectKey = keyof typeof result;\r\n for (var i = 0; i < entities.length; ++i)\r\n result[entities[i].Name as ObjectKey] = JSON.parse(entities[i].Value);\r\n return result;\r\n })\r\n }\r\n\r\n /**\r\n * Saves the value of a preference. On success, completes promise with no value.\r\n * @param {string} name - preference name\r\n * @param {string} value - value text\r\n * @returns {promise}\r\n */\r\n public set = async (name: string, value: string) => {\r\n let entity = this.globalDataContext.entityAccess().add(this.modelTypeLookup.getType('TruDbUserPreference')) as any;\r\n entity.Name = name;\r\n entity.Value = value;\r\n entity.TruDbUserRef = this.user.activeUserRef;\r\n }\r\n\r\n /**\r\n * Deletes a preference.\r\n * @param {string} name - preference name\r\n */\r\n public eliminate = async (name: string) => {\r\n await this.globalDataContext\r\n .entityAccess()\r\n .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)\r\n .subscribe((entities: any) => {\r\n if (entities.length > 1) {\r\n console.log('Query selected more than one preference record.');\r\n }\r\n if (entities.length === 0) {\r\n\r\n }\r\n entities[0].entityAspect.setDeleted();\r\n this.globalDataContext.saveWithoutNotification()\r\n .then(() => {\r\n return true;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TruTableConfigBase } from '../../../../base-classes/tru-table-config-base';\r\nimport { TruModelTableLookup } from '../../../../services/tru-model-table-lookup';\r\nimport { TruUserPreferenceManager } from '../../../../services/tru-user-preference-manager';\r\nimport { TruWindowOpenOnStartSetting } from '../classes/tru-window-open-on-start-setting';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { MaterialModule } from '../../../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-app-window-open-on-startup-setting',\r\n templateUrl: './tru-app-window-open-on-startup-setting.html',\r\n styleUrls: ['./tru-app-window-open-on-startup-setting.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatTable,\r\n MatCheckbox\r\n ]\r\n})\r\nexport class TruAppWindowOpenOnStartupSetting implements OnInit {\r\n\r\n settings: Array<TruWindowOpenOnStartSetting> = [];\r\n displayedColumns: string[] = [];\r\n\r\n constructor(\r\n private userPreferenceManager: TruUserPreferenceManager,\r\n private modelTableLookup: TruModelTableLookup) {\r\n\r\n let tables = this.modelTableLookup.all;\r\n let openOnStartSettings: Array<TruWindowOpenOnStartSetting> = []; \r\n tables.forEach((table: TruTableConfigBase) => {\r\n if (table.isAssociatedWithMenuItem) {\r\n let name = table.name?.toUpperCase() + '_OPEN_ON_START';\r\n let openOnStart = table.openOnStart;\r\n let userPreferenceOpenOnStart = this.userPreferenceManager.get(name)[0];\r\n if(userPreferenceOpenOnStart)\r\n openOnStart = JSON.parse(userPreferenceOpenOnStart.Value);\r\n\r\n openOnStartSettings.push({\r\n name: name,\r\n label: table.name as string,\r\n checked: openOnStart,\r\n intentOpenOnStart: table.openOnStart,\r\n modified: false\r\n } as TruWindowOpenOnStartSetting);\r\n }\r\n });\r\n this.settings = openOnStartSettings.sort((a: TruWindowOpenOnStartSetting, b: TruWindowOpenOnStartSetting) => a.label.localeCompare(b.label));\r\n }\r\n\r\n onRowClicked = (row: TruWindowOpenOnStartSetting) => {\r\n row.checked = !row.checked;\r\n row.modified = true;\r\n\r\n let userPreferenceOpenOnStart = this.userPreferenceManager.get(row.name);\r\n if (userPreferenceOpenOnStart.length) {\r\n userPreferenceOpenOnStart[0].Value = row.checked;\r\n } else {\r\n this.userPreferenceManager.set(row.name, String(row.checked))\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = ['label', 'checked'];\r\n }\r\n}\r\n\r\n","<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruAppWindowOpenOnStartupSetting } from './on-starup/tru-app-window-open-on-startup-setting';\r\nimport { MaterialModule } from '../../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-app-window-settings',\r\n templateUrl: './tru-app-window-settings.html',\r\n styleUrls: ['./tru-app-window-settings.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n TruAppWindowOpenOnStartupSetting\r\n ]\r\n})\r\nexport class TruAppWindowSettings {\r\n constructor() {}\r\n}\r\n\r\n","<div>\r\n <tru-app-window-open-on-startup-setting></tru-app-window-open-on-startup-setting>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatList } from '@angular/material/list';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruAppWindowSettings } from './windows/tru-app-window-settings';\r\n\r\n@Component({\r\n selector: 'tru-app-settings-dialog',\r\n templateUrl: './tru-app-settings-dialog.html',\r\n styleUrls: ['./tru-app-settings-dialog.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav,\r\n TruAppWindowSettings,\r\n MatList\r\n ]\r\n})\r\nexport class TruAppSettingsDialog implements OnInit {\r\n private globalDataContext: TruDataContext;\r\n\r\n constructor(\r\n private appEnvironment: TruAppEnvironment,\r\n public dialogRef: MatDialogRef<TruAppSettingsDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruAppSettingsDialog) {\r\n this.globalDataContext = this.appEnvironment.globalDataContext as TruDataContext;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onConfirm(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n this.globalDataContext.saveSettings().then(() => {\r\n this.dialogRef.close(false);\r\n })\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n App Settings\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <mat-sidenav-container class=\"example-sidenav-container\">\r\n <mat-sidenav #snav mode=\"side\" opened>\r\n <mat-nav-list>\r\n <a mat-list-item>Windows</a>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <tru-app-window-settings></tru-app-window-settings>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n","import { Entity } from \"breeze-client\";\r\n\r\nexport abstract class TruCardColumnData {\r\n $entity?: Entity;\r\n}\r\n","import { EntityQuery } from \"breeze-client\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruCardColumnData } from \"./tru-card-column-data\";\r\nimport { TruCard } from \"../tru-card\";\r\nimport { ITruCardColumnConfig } from \"./tru-card-column-config\";\r\n\r\nexport abstract class TruCardColumnSearchResultsConfigBase {\r\n abstract rowDataEnhancer: (entity: any) => TruCardColumnData;\r\n abstract cardSort: (cards: Array<any>) => any\r\n abstract query?: (breezeQuery: EntityQuery, propertyName: string) => any;\r\n abstract cardColumnId: (entity: any) => string | null | undefined;\r\n abstract cardId: (entity: any) => string | null | undefined;\r\n abstract cardColumnQuery: ((query: EntityQuery, relatedChildProperty: string) => any) | null;\r\n abstract cardView: ((card: TruCard, config: ITruCardColumnConfig) => void) | null;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-textbox',\r\n templateUrl: './tru-toolbar-textbox.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-textbox.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarTextbox implements OnInit {\r\n @Input() config: [] | null = null;\r\n @Input() tooltip: string = '';\r\n @Input() value: string | null | undefined = '';\r\n @Input() width: number = 115;\r\n @Output() valueChange = new EventEmitter<string | null | undefined>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onValueChange(event: any) {\r\n this.valueChange.emit(event.target.value)\r\n }\r\n}\r\n","<mat-form-field class=\"tru-toolbar-textbox-container\">\r\n <input #input\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [placeholder]=\"tooltip\"\r\n [style.width.px]=\"width\"\r\n type=\"text\" />\r\n</mat-form-field>\r\n","import _ from \"underscore\";\r\nimport { TruCardColumn } from \"./tru-card-column\";\r\n\r\nexport class TruCard {\r\n private cardContainerElement: HTMLDivElement;\r\n\r\n data;\r\n column;\r\n cardElement: HTMLDivElement;\r\n selected = false;\r\n\r\n constructor(\r\n private cardColumn: TruCardColumn,\r\n column: any,\r\n data: any,\r\n dropped: boolean) {\r\n\r\n this.column = column;\r\n this.data = data;\r\n\r\n this.cardContainerElement = document.createElement('div');\r\n this.cardContainerElement.classList.add('tru-card-portal-card-container');\r\n\r\n if (dropped) {\r\n this.cardContainerElement.classList.add('animated');\r\n this.cardContainerElement.classList.add('rubberBand');\r\n }\r\n\r\n this.cardContainerElement.setAttribute('draggable', 'true');\r\n this.cardContainerElement.setAttribute('droppable', 'true');\r\n\r\n this.cardElement = document.createElement('div');\r\n this.cardElement.classList.add('tru-card-portal-card');\r\n\r\n if (!this.column.data?.unassigned)\r\n this.cardElement.style.backgroundColor = this.cardColumn.color ? this.cardColumn.color : '#fff';\r\n else\r\n this.cardElement.style.backgroundColor = this.cardColumn.unassignedColor ? this.cardColumn.unassignedColor : '#fff';\r\n\r\n if (this.data) {\r\n this.cardContainerElement.addEventListener('dragstart', (e) => {\r\n this.cardColumn.dragStart(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dragover', (e) => {\r\n this.cardColumn.dragOver(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dragend', (e) => {\r\n this.cardColumn.dragEnd(e);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('drop', (e) => {\r\n this.cardColumn.drop(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('click', () => {\r\n this.selected = !this.selected;\r\n this.cardColumn.updateSelection(this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dblclick', () => {\r\n this.goToDetail(this.data.Ref);\r\n });\r\n } else {\r\n this.cardContainerElement.addEventListener('dragover', (e) => {\r\n this.cardColumn.dragOver(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dragend', (e) => {\r\n this.cardColumn.dragEnd(e);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('drop', (e) => {\r\n this.cardColumn.drop(e, this);\r\n if (!e.defaultPrevented)\r\n this.column.removeEmptyCard();\r\n });\r\n }\r\n this.updateData();\r\n this.cardContainerElement.appendChild(this.cardElement);\r\n\r\n if (dropped)\r\n this.column.cardScrollPortElement.insertBefore(this.cardContainerElement, this.column.cardScrollPortElement.firstChild);\r\n else\r\n this.column.cardScrollPortElement.appendChild(this.cardContainerElement);\r\n }\r\n\r\n selectAll = (selectAll: any) => {\r\n this.selected = selectAll;\r\n this.cardColumn.updateSelection(this);\r\n }\r\n\r\n updateData = () => {\r\n this.cardElement.innerHTML = '';\r\n this.cardColumn.removeSelection(this)\r\n\r\n if (this.data) {\r\n this.selected = false;\r\n\r\n if (this.cardColumn.config.resultConfig.cardView) {\r\n this.cardColumn.config.resultConfig.cardView(this, this.cardColumn.config);\r\n } else {\r\n var cardText = document.createElement('p');\r\n let value = this.cardColumn.config.resultConfig.cardId(this.data);\r\n if (value)\r\n cardText.innerHTML = value;\r\n this.cardElement.appendChild(cardText);\r\n }\r\n } else {\r\n this.cardContainerElement.setAttribute('draggable', 'false');\r\n this.cardContainerElement.classList.add('empty');\r\n this.cardElement.classList.add('empty');\r\n\r\n var cardContainerEmptyText = document.createElement('p');\r\n cardContainerEmptyText.classList.add('exclude-from-filter');\r\n cardContainerEmptyText.innerHTML = 'Drag items here';\r\n\r\n this.cardElement.appendChild(cardContainerEmptyText);\r\n }\r\n }\r\n\r\n goToDetail = (ref: number) => {\r\n let allColumns = this.cardColumn.lockedColumns.concat(this.cardColumn.columns);\r\n let entities = [];\r\n for (let i = 0; i < allColumns.length; i++) {\r\n for (let j = 0; j < allColumns[i].cards.length; j++) {\r\n entities.push(allColumns[i].cards[j].$entity);\r\n }\r\n }\r\n\r\n let index = _.findIndex(entities, function (entity) {\r\n return entity.Ref === ref\r\n });\r\n\r\n if (index === -1)\r\n throw new Error('Card column does not have a valid card index.');\r\n\r\n this.cardColumn.config.onCardDoubleClicked(entities, index);\r\n }\r\n}\r\n","import { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class TruSearchResultViewManager {\r\n private _searchViewToolbarTemplate!: TemplateRef<any>\r\n\r\n constructor() { }\r\n\r\n set searchViewToolbarTemplate(temp: TemplateRef<any>) {\r\n this._searchViewToolbarTemplate = temp;\r\n }\r\n\r\n get searchViewToolbarTemplate(): TemplateRef<any> {\r\n return this._searchViewToolbarTemplate;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, Input, TemplateRef, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { breeze } from 'breeze-client';\r\nimport { Subscription, forkJoin, skip } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruModelTypeLookup } from '../../services/tru-model-type-lookup';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\r\nimport { TruToolbarButton } from '../toolbar/button/tru-toolbar-button';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { TruToolbarDropdown } from '../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarMenu } from '../toolbar/menu/tru-toolbar-menu';\r\nimport { TruToolbarSeparator } from '../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbarTextbox } from '../toolbar/textbox/tru-toolbar-textbox';\r\nimport { TruToolbar } from '../toolbar/tru-toolbar';\r\nimport { ITruCardColumnConfig } from './classes/tru-card-column-config';\r\nimport { TruCard } from './tru-card';\r\n\r\n@Component({\r\n selector: 'tru-card-column',\r\n templateUrl: './tru-card-column.html',\r\n styleUrls: ['./tru-card-column.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIcon,\r\n TruToolbar,\r\n TruToolbarMenu,\r\n TruToolbarButton,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarTextbox\r\n ]\r\n})\r\nexport class TruCardColumn {\r\n @Input() config!: ITruCardColumnConfig\r\n @Input() name!: any;\r\n\r\n @ViewChild('cardPortal', { static: false }) portal!: ElementRef;\r\n\r\n private parentTablePluralLabel!: string;\r\n private childTableName!: string;\r\n private parentQuery = null;\r\n private lockProperty!: string | null;\r\n \r\n private unassignedLocked!: string;\r\n private unassignedDraggable!: boolean;\r\n private unassignedDroppable!: boolean;\r\n\r\n private inactiveVisible!: boolean;\r\n private inactiveDraggable!: boolean;\r\n private inactiveDroppable!: boolean;\r\n\r\n private columnSort: ((columns: any) => any) | undefined;\r\n private cardSort: ((cards: any) => any) | undefined;\r\n\r\n private relatedParentName!: string;\r\n private relatedChildName!: string;\r\n private insertBefore: any;\r\n private uniqueId!: string;\r\n private subs: Array<Subscription> = [];\r\n\r\n parentTableName!: string;\r\n childTablePluralLabel!: string;\r\n busyMessage: string = '';\r\n isBusy: boolean = false;\r\n columns: any = [];\r\n cards: any = [];\r\n lockedColumns: any = [];\r\n columnFilterChoices: Array<ITruToolbarDropdownOption> | null = [];\r\n columnFilterRefs: Array<number> = [];\r\n cardFilterStr: string | null | undefined = null;\r\n selectedCards: Array<TruCard> = [];\r\n color!: string | null;\r\n unassignedColor!: string | null;\r\n key!: string;\r\n unassignedVisible!: boolean;\r\n unassignedName!: string | null;\r\n userHasParentTableRole = true; //parentTableModel.canDisplay;\r\n viewMenuItems: any = [];\r\n selectedViewMenuItem: any | null = null;\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\r\n columnFilterTooltip: string = '';\r\n cardFilterTooltip: string = '';\r\n columnDropdownFilterTooltip: string = '';\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private searchViewEventHandler: TruSearchViewEventHandler,\r\n private searchResultViewManager: TruSearchResultViewManager) {\r\n \r\n }\r\n\r\n private parentTableModel = null;//dataService.model.tables[parentTableName];\r\n\r\n private createDataForEntity = (entity: TruEntityBase) => {\r\n var data = this.config.resultConfig.rowDataEnhancer(entity);\r\n return data;\r\n };\r\n\r\n private hasUndefinedChildren = (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.config.parentToChildRelationshipName as EntityObjectKey;\r\n return !entity[entityPropertyName];\r\n }\r\n\r\n private hasEmptyChildren = (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.config.parentToChildRelationshipName as EntityObjectKey;\r\n return !entity[entityPropertyName].length;\r\n }\r\n\r\n private hasInactiveChildren = (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.config.parentToChildRelationshipName as EntityObjectKey;\r\n return _.every([entityPropertyName], (child: any) => { return !child.active; });\r\n }\r\n\r\n private hasAddedUnsavedChildren = (entities: Array<TruEntityBase>, parentRef: number) => {\r\n return _.some(entities, (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.key as EntityObjectKey;\r\n return entity[entityPropertyName] === parentRef\r\n });\r\n }\r\n\r\n private clear = () => {\r\n var lockedColumns = this.portal.nativeElement.querySelectorAll('.locked-columns')[0];\r\n var unlockedColumns = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n while (lockedColumns && lockedColumns.lastChild) { lockedColumns.removeChild(lockedColumns.lastChild); };\r\n while (unlockedColumns && unlockedColumns.lastChild) { unlockedColumns.removeChild(unlockedColumns.lastChild); }\r\n while (this.selectedCards.length) { this.selectedCards.pop(); };\r\n //this.config.onSelectionChanged([]);\r\n //this.config.clearFilters();\r\n }\r\n\r\n private getValueFromSortPath = (args: [any, string[]]): any => {\r\n let current: any = args[0];\r\n for (let i: number = 0; i < args[1].length; i++) {\r\n let partName: string;\r\n if (i !== args[1].length - 1) {\r\n partName = 'o' + args[1][i];\r\n } else {\r\n partName = args[1][i];\r\n }\r\n\r\n if (current[partName]) {\r\n current = current[partName];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return current;\r\n }\r\n\r\n private updateItemsSource(newEntities: Array<any>, revert: boolean) {\r\n this.clear();\r\n\r\n this.busyMessage = 'Rendering...'\r\n \r\n if (!revert)\r\n localStorage.setItem('scroll_position' + uuidv4(), '0');\r\n\r\n this.columnFilterChoices = [];\r\n this.columnFilterRefs = [];\r\n this.cardFilterStr = null;\r\n\r\n if (!newEntities.length) {\r\n this.lockedColumns = [];\r\n this.columns = [];\r\n return;\r\n }\r\n\r\n let lockedColumns: Array<any> = [];\r\n let emptyParents: Array<any> = [];\r\n let columns: Array<any> = [];\r\n\r\n let query = new breeze.EntityQuery('Query' + this.parentTableName);\r\n let parentRefs = newEntities.map((e: any) => { return e[this.parentTableName + 'Ref']; });\r\n\r\n if (this.config.resultConfig.cardColumnQuery)\r\n query = this.config.resultConfig.cardColumnQuery(query, this.config.parentToChildRelationshipName);\r\n else\r\n query = query.expand(this.config.parentToChildRelationshipName);\r\n\r\n let uniqueParentRefs = [...new Set(parentRefs)]\r\n query = query.where(this.parentTableName + 'Ref', 'in', uniqueParentRefs);\r\n\r\n //if (this.parentQuery)\r\n // query = queries[this.parentQuery](query);\r\n\r\n this.dataContext.entityAccess().customSearch(this.modelTypeLookup.getType(this.parentTableName), query).subscribe((parents) => {\r\n //this.config.addParentsToFilter(parents);\r\n\r\n emptyParents = _.filter(parents, (parent) => {\r\n if (this.hasUndefinedChildren(parent) || this.hasEmptyChildren(parent) || this.hasInactiveChildren(parent)) {\r\n if (!this.hasAddedUnsavedChildren(newEntities, parent.Ref)) {\r\n parent['cards'] = [];\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n let queryableParentRefs = _.pluck(parents, this.key)\r\n\r\n let inactiveWithParent: Array<any> = [];\r\n let activeWithoutParent: Array<any> = [\r\n {\r\n unassigned: true,\r\n cards: []\r\n }\r\n ];\r\n\r\n parents.forEach((parent: any) => {\r\n parent['cards'] = [];\r\n if (queryableParentRefs.indexOf(parent[this.key]) !== -1) {\r\n if (this.lockProperty !== null && parent[this.lockProperty]) {\r\n lockedColumns.push(parent);\r\n } else if (this.lockProperty === null || !parent[this.lockProperty] && !_.contains(emptyParents, parent)) {\r\n columns.push(parent);\r\n }\r\n } else {\r\n parent['inactive'] = true;\r\n inactiveWithParent.push(parent);\r\n }\r\n });\r\n\r\n parents.forEach((parent: any) => {\r\n var choice = {\r\n value: parent.Ref,\r\n label: this.config.resultConfig.cardColumnId(parent) as string\r\n }\r\n this.columnFilterChoices!.push(choice);\r\n });\r\n\r\n newEntities.forEach((entity) => {\r\n var entityParent = _.find(parents, (p) => {\r\n if (entity['o' + this.relatedParentName])\r\n return p.Ref === entity['o' + this.relatedParentName].Ref;\r\n return false;\r\n });\r\n\r\n if (entityParent) {\r\n if (queryableParentRefs.indexOf(entityParent[this.key]) !== -1) {\r\n entityParent.cards.push(this.createDataForEntity(entity));\r\n } else {\r\n entityParent.cards.push(this.createDataForEntity(entity));\r\n }\r\n } else if (\r\n !entityParent &&\r\n entity['o' + this.relatedParentName] &&\r\n entity['o' + this.relatedParentName].Ref > 0) {\r\n let inactiveParent = entity['o' + this.relatedParentName];\r\n if (inactiveWithParent.indexOf(inactiveParent) === -1) {\r\n inactiveParent['cards'] = [];\r\n inactiveParent['inactive'] = true;\r\n inactiveWithParent.push(inactiveParent);\r\n }\r\n inactiveParent.cards.push(this.createDataForEntity(entity));\r\n } else {\r\n activeWithoutParent[0].cards.push(this.createDataForEntity(entity));\r\n }\r\n });\r\n\r\n if (this.columnSort) {\r\n var columnSortParts = ['']; //this.columnSort.split('/');\r\n\r\n lockedColumns = _.sortBy(lockedColumns, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n columns = _.sortBy(columns, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n inactiveWithParent = _.sortBy(inactiveWithParent, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n emptyParents = _.sortBy(emptyParents, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n }\r\n\r\n if (typeof this.config.cardSort === 'function') {\r\n lockedColumns.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n\r\n columns.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n\r\n inactiveWithParent.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n\r\n activeWithoutParent.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n }\r\n\r\n if (this.inactiveVisible)\r\n columns = columns.concat(inactiveWithParent);\r\n\r\n columns = columns.concat(emptyParents);\r\n\r\n if (this.unassignedVisible && !this.unassignedLocked)\r\n columns = columns.concat(activeWithoutParent);\r\n\r\n if (this.unassignedVisible && this.unassignedLocked)\r\n lockedColumns = columns.concat(lockedColumns);\r\n\r\n this.lockedColumns = lockedColumns;\r\n this.columns = columns;\r\n\r\n setTimeout(() => {\r\n this.clear();\r\n new CardView(this, this.lockedColumns, this.columns);\r\n\r\n if (revert) {\r\n let columnElement = this.portal.nativeElement.querySelectorAll('.tru-card-portal-columns')[0];\r\n let previousScrollPosition = localStorage.getItem('scroll_position' + uuidv4());\r\n columnElement.scrollLeft = previousScrollPosition ? +previousScrollPosition : 0;\r\n }\r\n\r\n this.isBusy = false;\r\n });\r\n });\r\n }\r\n\r\n private subscribeTo = () => {\r\n this.subs.push(this.searchViewEventHandler.onSearch().pipe(skip(1)).subscribe((setupQuery: any) => {\r\n this.onSearch(setupQuery);\r\n }));\r\n }\r\n\r\n private onSearch = (setupQuery: any) => {\r\n this.isBusy = true;\r\n this.busyMessage = 'Searching for ' + this.childTablePluralLabel + '...';\r\n let joins = [];\r\n\r\n joins.push(this.dataContext.entityAccess().search(\r\n this.modelTypeLookup.getType(this.childTableName),\r\n setupQuery,\r\n null, false));\r\n\r\n forkJoin(joins).subscribe({\r\n next: results => {\r\n this.cards = results[0];\r\n this.updateItemsSource(results[0], false);\r\n },\r\n complete: () => {}\r\n });\r\n }\r\n\r\n filterColumns = (selectedOptions: Array<ITruToolbarDropdownOption> | null) => {\r\n let refs = selectedOptions!.filter((option: ITruToolbarDropdownOption) => { return option.value })\r\n\r\n var event = new CustomEvent('filter-columns', {\r\n bubbles: true,\r\n detail: refs\r\n });\r\n\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n unlockedColumnsElement.dispatchEvent(event);\r\n\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n var columnElements = unlockedColumnsElement.querySelectorAll('.tru-card-portal-column');\r\n var arr = Array.prototype.slice.call(columnElements);\r\n arr.sort((a, b) => a.id - b.id);\r\n\r\n for (var i = arr.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(arr[i], unlockedColumnsElement.firstChild);\r\n }\r\n };\r\n\r\n filterCards = (value: string | null | undefined) => {\r\n this.cardFilterStr = value ? value.toLowerCase() : '';\r\n\r\n var event = new CustomEvent('filter-cards', {\r\n bubbles: true,\r\n });\r\n\r\n var columnElements = this.portal.nativeElement.querySelectorAll('.tru-card-portal-column');\r\n\r\n for (var i = 0; i < columnElements.length; i++) {\r\n columnElements[i].dispatchEvent(event);\r\n }\r\n\r\n if (this.cardFilterStr) {\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n var columnElements = unlockedColumnsElement.querySelectorAll('.tru-card-portal-column');\r\n var columnsWithCards = [];\r\n var columnsWithoutCards = [];\r\n for (var i = 0; i < columnElements.length; i++) {\r\n var cardElements = columnElements[i].querySelectorAll('.tru-card-portal-card-container:not(.tru-card-portal-card-filtered):not(.empty)');\r\n if (cardElements.length) {\r\n columnsWithCards.push(columnElements[i]);\r\n } else {\r\n columnsWithoutCards.push(columnElements[i]);\r\n }\r\n }\r\n columnsWithCards.sort((a, b) => a.id - b.id);\r\n columnsWithoutCards.sort((a, b) => a.id - b.id);\r\n for (var i = columnsWithoutCards.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(columnsWithoutCards[i], unlockedColumnsElement.firstChild);\r\n }\r\n\r\n for (var i = columnsWithCards.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(columnsWithCards[i], unlockedColumnsElement.firstChild);\r\n }\r\n } else {\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n var columnElements = unlockedColumnsElement.querySelectorAll('.tru-card-portal-column');\r\n var arr = Array.prototype.slice.call(columnElements);\r\n arr.sort((a, b) => a.id - b.id);\r\n\r\n for (var i = arr.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(arr[i], unlockedColumnsElement.firstChild);\r\n }\r\n }\r\n }\r\n\r\n updateSelection = (card: TruCard) => {\r\n if (!card.selected) {\r\n var index = this.selectedCards.indexOf(card);\r\n if (index !== -1)\r\n this.selectedCards.splice(index, 1);\r\n\r\n card.cardElement.classList.remove('tru-card-selected');\r\n } else {\r\n var index = this.selectedCards.indexOf(card);\r\n if (index === -1)\r\n this.selectedCards.push(card);\r\n\r\n card.cardElement.classList.add('tru-card-selected');\r\n }\r\n\r\n //scope.config.onSelectionChanged(selectedCards);\r\n }\r\n\r\n dragStart = (e: any, card: TruCard) => {\r\n e.stopPropagation();\r\n\r\n //scope.config.closeSearchPanel();\r\n\r\n if ((card.column.data.unassigned && !this.unassignedDraggable) ||\r\n (card.column.data.inactive && !this.inactiveDraggable)) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n e.dataTransfer.dropEffect = 'move';\r\n\r\n if (!card.selected) {\r\n card.selected = true;\r\n this.updateSelection(card)\r\n } \r\n\r\n let clonedNode = e.target.cloneNode(true);\r\n clonedNode.style.position = \"absolute\";\r\n clonedNode.style.top = \"0px\";\r\n clonedNode.style.left = \"-10000px\";\r\n clonedNode.style.overflow = 'visible';\r\n clonedNode.classList.add('cloned-card');\r\n\r\n var inner = clonedNode.getElementsByClassName(\"tru-card-portal-card\")[0];\r\n inner.style.transform = \"rotate(-10deg)\";\r\n inner.style.position = 'relative';\r\n inner.style.zIndex = 10;\r\n\r\n document.body.appendChild(clonedNode);\r\n e.dataTransfer.setDragImage(clonedNode, 50, 50);\r\n\r\n return true;\r\n }\r\n\r\n dragOver = (e: any, card: TruCard) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n var target = e.target;\r\n if (!target.classList.contains('tru-card-portal-card-container') ||\r\n (card.column.data.unassigned && !this.unassignedDroppable) ||\r\n (card.column.data.inactive && !this.inactiveDroppable)) {\r\n e.dataTransfer.dropEffect = 'none';\r\n } else {\r\n e.dataTransfer.dropEffect = 'move';\r\n }\r\n }\r\n\r\n dragEnd = (e: any) => {\r\n e.stopPropagation();\r\n\r\n let elements: HTMLCollectionOf<Element> = document.getElementsByClassName('cloned-card');\r\n while (elements.length > 0) {\r\n elements[0].parentNode?.removeChild(elements[0]);\r\n }\r\n\r\n elements = document.getElementsByClassName('tru-card-placeholder');\r\n while (elements.length > 0) {\r\n elements[0].parentNode?.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n drop = async (e: any, card: TruCard) => {\r\n e.stopPropagation();\r\n\r\n for (var i = this.selectedCards.length - 1; i >= 0; --i) {\r\n let index = card.column.cards.indexOf(this.selectedCards[i]);\r\n if (index !== -1)\r\n this.selectedCards[i].updateData();\r\n }\r\n\r\n if (card.column.data.unassigned && !this.unassignedDroppable ||\r\n card.column.data.inactive && !this.inactiveDroppable ||\r\n !this.selectedCards.length) {\r\n e.preventDefault();\r\n return false;\r\n };\r\n\r\n if (this.config === null) {\r\n //this.config.onDrop(card, this.selectedCards, this.config, this.portal, e);\r\n } else {\r\n for (let i = 0; i < this.selectedCards.length; i++) {\r\n card.column.addCard(this.selectedCards[i]);\r\n }\r\n\r\n for (var i = this.selectedCards.length - 1; i >= 0; --i) {\r\n this.selectedCards[i].column.removeCard(this.selectedCards[i]);\r\n }\r\n\r\n while (this.selectedCards.length) { this.selectedCards.pop(); };\r\n\r\n let savePromise = this.dataContext.saveWithoutNotification();\r\n if (savePromise) {\r\n this.portal.nativeElement.classList.add('tru-card-portal-disabled');\r\n await savePromise.then(() => {\r\n this.portal.nativeElement.classList.remove('tru-card-portal-disabled');\r\n }).catch(() => {\r\n e.preventDefault();\r\n var columnElement = this.portal.nativeElement.querySelectorAll('.tru-card-portal-columns')[0];\r\n localStorage.setItem('scroll_position' + this.uniqueId, columnElement.scrollLeft);\r\n this.dataContext.revert();\r\n this.portal.nativeElement.classList.remove('tru-card-portal-disabled');\r\n });\r\n } else {\r\n e.preventDefault();\r\n var columnElement = this.portal.nativeElement.querySelectorAll('.tru-card-portal-columns')[0];\r\n localStorage.setItem('scroll_position' + this.uniqueId, columnElement.scrollLeft);\r\n this.dataContext.revert();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parentTableName = this.config.parentTableName;\r\n this.parentTablePluralLabel = this.config.parentTablePluralLabel;\r\n this.childTableName = this.config.childTableName;\r\n this.childTablePluralLabel = this.config.childTablePluralLabel;\r\n this.key = this.config.key;\r\n this.parentQuery = null\r\n this.lockProperty = this.config.lockProperty;\r\n this.color = this.config.color;\r\n this.unassignedVisible = this.config.unassignedVisible;\r\n this.unassignedName = this.config.unassignedName;\r\n this.unassignedLocked = this.config.unassignedLocked;\r\n this.unassignedColor = this.config.unassignedColor;\r\n this.unassignedDraggable = this.config.unassignedDraggable;\r\n this.unassignedDroppable = this.config.unassignedDroppable;\r\n\r\n this.inactiveVisible = this.config.inactiveVisible;\r\n this.inactiveDraggable = this.config.inactiveDraggable;\r\n this.inactiveDroppable = this.config.inactiveDroppable;\r\n\r\n this.columnSort = this.config.columnSort;\r\n this.cardSort = this.config.cardSort;\r\n this.columnFilterTooltip = this.config.parentTablePluralLabel ? this.config.parentTablePluralLabel + ' Filter' : 'Filter';\r\n this.columnDropdownFilterTooltip = 'Type to Filter...';\r\n this.cardFilterTooltip = this.config.childTablePluralLabel ? this.config.childTablePluralLabel + ' Filter' : 'Filter';\r\n\r\n let index = this.key.lastIndexOf(this.parentTableName);\r\n let prefix = this.key.substring(index, -1);\r\n if (prefix) {\r\n this.relatedParentName = prefix + this.parentTableName;\r\n this.relatedChildName = prefix + this.childTablePluralLabel;\r\n } else {\r\n this.relatedParentName = this.parentTableName;\r\n this.relatedChildName = this.childTablePluralLabel;\r\n }\r\n\r\n this.uniqueId = uuidv4();\r\n this.subscribeTo();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //setTimeout to prevent: ERROR Error: NG0100: ExpressionChangedAfterItHasBeenCheckedError. \r\n setTimeout(() => {\r\n this.config.viewMenuConfig.menuItemsEnabled = () => { return this.columns.length; };\r\n this.config.viewMenuConfig.allMenus().subscribe((menu: any) => { this.viewMenuItems = menu; });\r\n this.parentToolbarTemplate = this.searchResultViewManager.searchViewToolbarTemplate;\r\n }, 0);\r\n }\r\n\r\n removeSelection = (card: TruCard) => {\r\n var index = this.selectedCards.indexOf(card);\r\n if (index !== -1)\r\n this.selectedCards.splice(index, 1);\r\n\r\n card.cardElement.classList.remove('tru-card-selected');\r\n\r\n //scope.config.onSelectionChanged(selectedCards);\r\n }\r\n}\r\n\r\nclass CardView {\r\n private lockedColumnsElement;\r\n private unlockedColumnsElement\r\n\r\n constructor(\r\n private cardColumn: TruCardColumn,\r\n private lockedColumns: any,\r\n private columns: any) {\r\n this.lockedColumnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.locked-columns')[0];\r\n this.unlockedColumnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n if (lockedColumns && lockedColumns.length)\r\n this.addColumns(lockedColumns, true);\r\n\r\n if (columns && columns.length)\r\n this.addColumns(columns, false);\r\n\r\n this.unlockedColumnsElement.addEventListener('filter-columns', (e: CustomEvent) => {\r\n this.updateColumns(e.detail as Array<ITruToolbarDropdownOption>);\r\n });\r\n }\r\n\r\n private columnViews: Array<Column> = [];\r\n\r\n private addColumns = (columnData: Array<any>, locked: boolean) => {\r\n let columnsElement: HTMLDivElement;\r\n if (locked)\r\n columnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.locked-columns')[0];\r\n else\r\n columnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n let fragment = document.createDocumentFragment();\r\n\r\n for (let i = 0; i < columnData.length; i++) {\r\n this.columnViews.push(new Column(this.cardColumn, columnData[i], columnsElement, locked, i));\r\n }\r\n\r\n columnsElement.appendChild(fragment);\r\n\r\n this.cardColumn.busyMessage = '';\r\n }\r\n\r\n updateColumns = (options: Array<ITruToolbarDropdownOption>) => {\r\n let refs = options.map((option: ITruToolbarDropdownOption) => { return option.value });\r\n\r\n if (refs && refs.length) {\r\n for (var i = 0; i < this.columns.length; i++) {\r\n let column = this.columnViews[i];\r\n\r\n if (!column.locked && column.data.entityAspect) {\r\n var found = refs.filter(x => x === column.data.Ref).length > 0;\r\n\r\n if (found) {\r\n column.columnElement.classList.remove('tru-card-portal-column-filtered');\r\n } else {\r\n column.columnElement.classList.add('tru-card-portal-column-filtered');\r\n }\r\n }\r\n }\r\n } else {\r\n for (var i = 0; i < this.columnViews.length; i++) {\r\n let column = this.columnViews[i];\r\n column.columnElement.classList.remove('tru-card-portal-column-filtered');\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass Column {\r\n private cards: Array<any> = [];\r\n private parentElement: HTMLDivElement;\r\n\r\n columnElement;\r\n locked: boolean;\r\n data: any;\r\n cardScrollPortElement: HTMLDivElement;\r\n selectAllButton!: HTMLDivElement;\r\n\r\n constructor(\r\n private cardColumn: TruCardColumn,\r\n data: any,\r\n parentElement: HTMLDivElement,\r\n locked: boolean,\r\n index: number) {\r\n\r\n this.data = data;\r\n this.locked = locked;\r\n this.parentElement = parentElement;\r\n\r\n let columnElement = document.createElement('div');\r\n columnElement.classList.add('tru-card-portal-column');\r\n columnElement.id = index.toString();\r\n\r\n if (data?.inactive)\r\n columnElement.classList.add('tru-card-portal-column-inactive');\r\n columnElement.style.width = this.cardColumn.config.width + 'px';\r\n this.columnElement = columnElement;\r\n\r\n this.cardScrollPortElement = document.createElement('div');\r\n this.cardScrollPortElement.classList.add('tru-card-portal-card-scroll-port');\r\n\r\n new ColumnHeader(this.cardColumn, this);\r\n\r\n this.columnElement.appendChild(this.cardScrollPortElement);\r\n this.columnElement.addEventListener('filter-cards', (e) => {\r\n this.updateDataByFilter();\r\n });\r\n\r\n this.updateData();\r\n\r\n this.parentElement.appendChild(this.columnElement);\r\n }\r\n\r\n private addEmptyCard = () => {\r\n let emptyCards = _.filter(this.cards, function (card) { return !card.data });\r\n if (!emptyCards.length)\r\n this.cards.push(new TruCard(this.cardColumn, this, null, false));\r\n\r\n this.selectAllButton.style.display = 'none';\r\n }\r\n\r\n private removeEmptyCard = () => {\r\n var emptyCards = _.filter(this.cards, (card) => { return !card.data });\r\n if (emptyCards.length) {\r\n var emptyCard = emptyCards[0];\r\n var emptyCardElement = emptyCard.cardContainerElement;\r\n emptyCardElement.parentNode.removeChild(emptyCardElement);\r\n var index = this.cards.indexOf(emptyCards[0]);\r\n if (index !== -1)\r\n this.cards.splice(index, 1);\r\n }\r\n\r\n this.selectAllButton.style.display = 'block';\r\n }\r\n\r\n private columnIsVisuallyEmpty = () => {\r\n return this.cards.every(function (card) {\r\n return card.cardContainerElement.classList.contains('tru-card-portal-card-filtered');\r\n });\r\n }\r\n\r\n private removeCard = (card: any) => {\r\n card.cardContainerElement.parentNode.removeChild(card.cardContainerElement);\r\n\r\n var index = this.data.cards.indexOf(card.data);\r\n if (index !== -1)\r\n this.data.cards.splice(index, 1);\r\n index = this.cards.indexOf(card);\r\n if (index !== -1)\r\n this.cards.splice(index, 1);\r\n if (!this.cards.length || this.columnIsVisuallyEmpty())\r\n this.addEmptyCard();\r\n\r\n card = null;\r\n }\r\n\r\n private updateDataByFilter = () => {\r\n let cardFilterStr = this.cardColumn.cardFilterStr;\r\n if (cardFilterStr) {\r\n for (var i = 0; i < this.cards.length; i++) {\r\n var card = this.cards[i];\r\n\r\n if (card.data) {\r\n let filterParts = cardFilterStr.split(/(\\s+)/).filter(function (s) { return s.trim().length > 0; });\r\n let cardFilterResult;\r\n if (typeof this.cardColumn.config.resultConfig.cardId === 'function') {\r\n cardFilterResult = filterParts.every((part) => {\r\n return this.cardColumn.config.resultConfig.cardId(card.data)!.toLowerCase().indexOf(part) != -1;\r\n });\r\n } else {\r\n cardFilterResult = card.cardFilter(card.data, cardFilterStr)\r\n }\r\n\r\n if (cardFilterResult) {\r\n card.cardContainerElement.classList.remove('tru-card-portal-card-filtered');\r\n } else {\r\n card.cardContainerElement.classList.add('tru-card-portal-card-filtered');\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < this.cards.length; i++) {\r\n let card = this.cards[i];\r\n card.cardContainerElement.classList.remove('tru-card-portal-card-filtered');\r\n }\r\n }\r\n\r\n let cardElements = this.columnElement.querySelectorAll('.tru-card-portal-card-container:not(.tru-card-portal-card-filtered):not(.empty)');\r\n if (cardElements.length) {\r\n this.removeEmptyCard();\r\n if (!this.locked) {\r\n this.parentElement.insertBefore(this.columnElement, this.parentElement.firstChild);\r\n }\r\n } else {\r\n this.addEmptyCard();\r\n }\r\n }\r\n\r\n updateData = () => {\r\n this.cardScrollPortElement.innerHTML = '';\r\n\r\n while (this.cards.length) { this.cards.pop(); };\r\n\r\n let columnCards = this.cardColumn.cards.filter((cardData: any) => { return cardData[this.cardColumn.parentTableName + 'Ref'] === this.data.Ref })\r\n\r\n if (columnCards.length) {\r\n for (let i = 0; i < columnCards.length; i++) {\r\n this.cards.push(new TruCard(this.cardColumn, this, columnCards[i], false));\r\n }\r\n } else {\r\n this.addEmptyCard();\r\n }\r\n }\r\n\r\n selectAll = (selectAll: boolean) => {\r\n for (var i = 0; i < this.cards.length; i++)\r\n this.cards[i].selectAll(selectAll);\r\n }\r\n\r\n addCard = (card: any) => {\r\n card.data[this.cardColumn.key] = this.data.Ref;\r\n this.data.cards.unshift(card.data);\r\n this.cards.unshift(new TruCard(this.cardColumn, this, card.data, true));\r\n }\r\n}\r\n\r\nclass ColumnHeader {\r\n constructor(private cardColumn: TruCardColumn, column: Column) {\r\n let columnHeaderElement = document.createElement('div');\r\n columnHeaderElement.classList.add('tru-card-portal-column-header');\r\n\r\n new ColumnHeaderText(cardColumn, column, columnHeaderElement);\r\n new ColumnHeaderButton(column, columnHeaderElement);\r\n\r\n column.columnElement.insertBefore(columnHeaderElement, column.columnElement.firstChild);\r\n }\r\n}\r\n\r\nclass ColumnHeaderText {\r\n private data: any;\r\n constructor(private cardColumn: TruCardColumn, column: Column, parentElement: HTMLDivElement) {\r\n this.data = column.data;\r\n\r\n let headerText = document.createElement('p');\r\n headerText.classList.add('tru-card-portal-column-headertext');\r\n\r\n if (this.cardColumn.userHasParentTableRole) {\r\n headerText.addEventListener('click', () => { cardColumn.config.onCardColumnClicked([column.data]); });\r\n headerText.classList.add('tru-card-portal-column-headertext-hover');\r\n }\r\n\r\n if (!this.data?.unassigned) {\r\n let value = this.cardColumn.config.resultConfig.cardColumnId(column.data);\r\n if (value)\r\n headerText.innerHTML = value;\r\n }\r\n\r\n if (this.data?.unassigned && this.cardColumn.unassignedVisible)\r\n headerText.innerHTML = this.cardColumn.unassignedName ? this.cardColumn.unassignedName : 'Unassigned';\r\n\r\n parentElement.appendChild(headerText);\r\n }\r\n}\r\n\r\nclass ColumnHeaderButton { \r\n private column: Column;\r\n private selectAll = false;\r\n\r\n constructor(column: Column, parentElement: HTMLDivElement) {\r\n this.column = column;\r\n\r\n var linkButtonContainer = document.createElement('div');\r\n linkButtonContainer.classList.add('tru-card-portal-column-header-extras');\r\n\r\n let linkButton: HTMLAnchorElement = document.createElement('a');\r\n linkButton.classList.add('tru-card-portal-column-header-extra-button');\r\n linkButton.classList.add('dark-hover');\r\n linkButton.href = '#';\r\n\r\n let linkButtonText: HTMLInputElement = document.createElement('input');\r\n linkButtonText.type = 'checkbox';\r\n linkButtonText.classList.add('tru-card-icon-small');\r\n linkButtonText.classList.add('icon-check-square-o');\r\n\r\n linkButtonText.addEventListener('change', () => {\r\n this.selectAll = !this.selectAll;\r\n this.column.selectAll(this.selectAll);\r\n });\r\n\r\n linkButton.appendChild(linkButtonText);\r\n linkButtonContainer.appendChild(linkButton);\r\n\r\n this.column.selectAllButton = linkButtonContainer;\r\n\r\n parentElement.appendChild(linkButtonContainer);\r\n }\r\n}\r\n","<div class=\"tru-card\">\r\n <div *ngIf=\"isBusy\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>{{busyMessage}}</p>\r\n </div>\r\n <tru-toolbar>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-dropdown\r\n [tooltip]=\"columnFilterTooltip\"\r\n (selectionChange)=\"filterColumns($event)\"\r\n [options]=\"columnFilterChoices\"\r\n [multiple]=\"true\"\r\n [filterable]=\"true\"\r\n [filterTooltip]=\"columnDropdownFilterTooltip\"\r\n [width]=\"150\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-textbox\r\n [tooltip]=\"cardFilterTooltip\"\r\n (valueChange)=\"filterCards($event)\"\r\n [width]=\"150\">\r\n </tru-toolbar-textbox>\r\n <tru-toolbar-separator *ngIf=\"viewMenuItems.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"viewMenuItems.length\">\r\n <tru-toolbar-menu *ngFor=\"let viewMenuItem of viewMenuItems\" [config]=\"viewMenuItem\"></tru-toolbar-menu>\r\n </div>\r\n </tru-toolbar>\r\n <div class=\"tru-card-portal\" #cardPortal>\r\n <div [ngStyle]=\"{'width': ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1)) + 'px' }\"\r\n [ngClass]=\"{'tru-card-portal-locked-columns-divider': lockedColumns.length}\"\r\n *ngIf=\"lockedColumns.length\"\r\n class=\"tru-card-portal-locked-columns locked-columns\">\r\n </div>\r\n <div [ngStyle]=\"{'left': lockedColumns.length ? ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1) + 22) + 'px' : 0 }\"\r\n class=\"tru-card-portal-columns unlocked-columns\">\r\n </div>\r\n </div>\r\n</div>\r\n","import { TruUtil } from \"../../../services/tru-util\";\r\n\r\nexport class TruDataGridCellRenderer {\r\n // private eGui: is an empty element to satisfy the getGui method. \r\n private eGui!: HTMLDivElement\r\n private validationContainer!: HTMLDivElement;\r\n\r\n onMouseOver = (e: any) => {\r\n if (e.target)\r\n e.target.classList.contains('invalid-flag') ? this.validationContainer.classList.toggle('show') : this.validationContainer.classList.remove('show');\r\n }\r\n\r\n onRightClick = (event: MouseEvent) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n alert('Cell Clicked');\r\n }\r\n\r\n init(params: any) {\r\n params.eGridCell.innerHTML = '';\r\n let value = params.value;\r\n if (params.value === null)\r\n value = '';\r\n\r\n if (params.colDef.cellEditor && params.colDef.cellEditor.name === \"StdRichTextList\") {\r\n var p = document.createElement('div');\r\n p.innerHTML = value\r\n params.eGridCell.appendChild(p);\r\n } else {\r\n var content = document.createTextNode(value);\r\n params.eGridCell.appendChild(content);\r\n }\r\n\r\n this.validationContainer = document.createElement('div');\r\n this.validationContainer.className = 'dialog-target';\r\n let validationFlag = document.createElement('span');\r\n validationFlag.className = 'invalid-flag';\r\n\r\n params.eGridCell.appendChild(this.validationContainer);\r\n params.eGridCell.appendChild(validationFlag);\r\n\r\n params.eGridCell.addEventListener('mouseover', this.onMouseOver);\r\n params.eGridCell.addEventListener('contextmenu', this.onRightClick);\r\n\r\n Object.assign(params.eGridCell.style, new TruUtil().rulesEval(params.data[params.colDef.field].rules(params.data.$entity)));\r\n }\r\n\r\n getGui() {\r\n return this.eGui\r\n }\r\n\r\n refresh() {\r\n return false;\r\n }\r\n\r\n destroy() {\r\n document.removeEventListener('mouseover', this.onMouseOver);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Column, GridApi, RowNode } from 'ag-grid-community';\r\nimport { TruEntityBase } from '../../../base-classes/tru-entity-base';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruDataGridClipboard {\r\n\r\n private tableName: string | null = null;\r\n private rowData: Array<TruEntityBase> = []; \r\n\r\n copiedRows = (tableName: string, rowData: Array<TruEntityBase>) => {\r\n this.tableName = tableName;\r\n this.rowData = rowData;\r\n }\r\n\r\n getCopiedRows = () => {\r\n return this.rowData;\r\n }\r\n}\r\n","import { NgIf, NgClass, CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, ViewChild } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\nimport { TruDataGridClipboard } from \"../services/tru-data-grid-clipboard\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruUtil } from \"../../../services/tru-util\";\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatMenuModule\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `<div (contextmenu)=\"onRightClick($event)\">{{displayValue}}\r\n <div style=\"visibility: hidden; position: relative\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [matMenuTriggerFor]=\"truDataGridContextMenu\">\r\n </div>\r\n <mat-menu #truDataGridContextMenu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"copyIsDisabled\" (click)=\"onCopy($event)\">\r\n <mat-icon [svgIcon]=\"'copy-icon'\"></mat-icon>\r\n <span>Copy</span>\r\n </button>\r\n <button mat-menu-item [disabled]=\"pasteIsDisabled\" (click)=\"onPaste($event)\">\r\n <mat-icon [svgIcon]=\"'paste-icon'\"></mat-icon>\r\n <span>Paste</span>\r\n </button>\r\n <button mat-menu-item>\r\n <mat-icon [svgIcon]=\"'insert-icon'\"></mat-icon>\r\n <span>Insert At Top</span>\r\n </button>\r\n </mat-menu>\r\n </div>`,\r\n styles: [`\r\n ::ng-deep .mat-mdc-menu-item {\r\n height: 25px !important;\r\n min-height: 25px !important;\r\n }\r\n ::ng-deep .mat-mdc-menu-content mat-icon svg {\r\n fill: #949494;\r\n }\r\n `]\r\n})\r\nexport class TruDataGridPkeyCellRenderer {\r\n @ViewChild(MatMenuTrigger) contextMenu!: MatMenuTrigger;\r\n\r\n params!: ICellRendererParams;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n displayValue: string = '';\r\n copyIsDisabled: boolean = true;\r\n pasteIsDisabled: boolean = true;\r\n \r\n // private eGui: is an empty element to satisfy the getGui method. \r\n private eGui!: HTMLDivElement;\r\n\r\n constructor(\r\n private dataGridClipboard: TruDataGridClipboard,\r\n private util: TruUtil) { }\r\n\r\n onRightClick = (event: MouseEvent) => {\r\n event.preventDefault();\r\n this.copyIsDisabled = this.params.api.getSelectedRows().length ? false : true;\r\n this.pasteIsDisabled = this.dataGridClipboard.getCopiedRows().length && this.params.api.getSelectedRows().length ? false : true;\r\n this.contextMenuPosition.x = event.pageX + 'px';\r\n this.contextMenuPosition.y = (event.pageY) + 'px';\r\n this.contextMenu.menu?.focusFirstItem('mouse');\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n\r\n }\r\n\r\n onMouseUp = (event: MouseEvent) => {\r\n\r\n }\r\n\r\n onCopy = (event: MouseEvent) => {\r\n let selectedRows = this.params.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n let copiedRowData = selectedRows.map((row: any) => row.$entity);\r\n this.dataGridClipboard.copiedRows('', copiedRowData);\r\n }\r\n }\r\n\r\n onPaste = (event: MouseEvent) => {\r\n let copiedRowData = this.dataGridClipboard.getCopiedRows();\r\n copiedRowData.forEach((row: TruEntityBase) => {\r\n let properties = row.entityType.getPropertyNames();\r\n properties\r\n .filter((propertyName: string) => {\r\n return propertyName !== 'Ref' &&\r\n propertyName !== row.entityType.name + 'Ref' &&\r\n !this.util.isLowerCase(propertyName.charAt(0));\r\n }).forEach((propertyName: string) => {\r\n console.log(propertyName);\r\n });\r\n });\r\n }\r\n\r\n agInit(params: any) {\r\n this.params = params;\r\n if (params.value < 0)\r\n this.displayValue = 'NEW';\r\n else\r\n this.displayValue = params.value;\r\n\r\n params.eGridCell.addEventListener('contextmenu', this.onRightClick);\r\n params.eGridCell.addEventListener('mousedown', this.onMouseDown);\r\n params.eGridCell.addEventListener('mousedown', this.onMouseUp);\r\n }\r\n\r\n getGui() {\r\n return this.eGui\r\n }\r\n\r\n refresh() {\r\n return false;\r\n }\r\n\r\n destroy() {\r\n this.params.eGridCell.removeEventListener('contextmenu', this.onRightClick);\r\n this.params.eGridCell.removeEventListener('mousedown', this.onMouseDown);\r\n this.params.eGridCell.removeEventListener('mousedown', this.onMouseUp);\r\n }\r\n}\r\n","export enum TruDataGridTypes {\r\n Search,\r\n Detail,\r\n DetailManyToMany\r\n}\r\n","import { CommonModule, NgClass, NgIf } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IHeaderAngularComp } from 'ag-grid-angular';\r\nimport { CellFocusedEvent, Column, IHeaderParams } from 'ag-grid-community';\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [NgIf, NgClass, CommonModule, MatIconModule],\r\n template: `\r\n <div #header class=\"ag-cell-label-container\" role=\"presentation\">\r\n <div ref=\"eLabel\" class=\"ag-header-cell-label\" role=\"presentation\" (mouseenter)=\"onHeaderMouseEnter($event)\" (mouseleave)=\"onHeaderMouseLeave($event)\">\r\n <div class=\"ag-header-control-container\">\r\n <div>\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</span>\r\n </div>\r\n <div class=\"ag-header-control-filter-container\" *ngIf=\"showFilterMenu\">\r\n <span ref=\"eFilterButton\" class=\"ag-filter-icon\" (click)=\"onFilterMenuButtonClicked($event)\">\r\n <mat-icon class=\"ag-header-more\" [svgIcon]=\"'more-icon'\" *ngIf=\"!filterIsActive && !ascSort && !descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-asc\" [svgIcon]=\"'asc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"ascSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-desc\" [svgIcon]=\"'desc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-filter\" [svgIcon]=\"'filter-icon'\" *ngIf=\"filterIsActive\"></mat-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>`,\r\n styles: [\r\n `\r\n .ag-header-control-container {\r\n display: flex;\r\n }\r\n .ag-header-control-filter-container {\r\n position: absolute;\r\n top: 1px;\r\n right: 3px;\r\n width: 20px;\r\n height: 20px;\r\n display: table;\r\n }\r\n .ag-header-cell-text {\r\n position: relative;\r\n pointer-events: none;\r\n vertical-align: middle;\r\n vertical-align: -webkit-baseline-middle;\r\n }\r\n .ag-sort-icon {\r\n height: 100%;\r\n width: 100%;\r\n margin-left: 0 !important;\r\n }\r\n .tru-data-grid-select-all-icon {\r\n width: 16px;\r\n font-size: 28px;\r\n color: #ddd;\r\n float: right;\r\n position: absolute;\r\n top: -1px;\r\n right: 4px;\r\n }\r\n .ag-sort-icon mat-icon {\r\n height: 16px;\r\n width: 16px;\r\n padding-top: 4px;\r\n }\r\n .ag-column-focus .ag-header-cell-text {\r\n color: #3f51b5;\r\n font-weight: bold;\r\n }\r\n .ag-column-focus {\r\n background-color: #ddd;\r\n border-bottom: 1px solid #3f51b5;\r\n }\r\n ::ng-deep .tru-data-grid-select-all-icon path {\r\n fill: lightgray;\r\n position: relative;\r\n z-index: 100;\r\n pointer-events: all;\r\n }\r\n ::ng-deep .ag-header-control-filter-container mat-icon {\r\n height: 20px !important;\r\n width: 20px !important;\r\n padding-top: 2px !important;\r\n }\r\n ::ng-deep .ag-filter-icon {\r\n\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-asc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-desc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon {\r\n height: 18px !important;\r\n width: 18px !important;\r\n color: #ddd;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon svg {\r\n fill: #949494 !important;\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridHeader implements IHeaderAngularComp {\r\n @ViewChild('header', { static: false }) headerRef!: ElementRef;\r\n\r\n public params!: IHeaderParams;\r\n public ascSort: boolean = false;\r\n public descSort: boolean = false;\r\n public isHovering: boolean = false;\r\n public columnMenuIsOpen: boolean = false;\r\n public showFilterMenu: boolean = false;\r\n public filterIsActive: boolean = false;\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n this.params.api.addEventListener('cellFocused', this.onCellFocused.bind(this));\r\n }\r\n\r\n getHeaderParams(): IHeaderParams {\r\n return this.params;\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSelectAllIconClicked() {\r\n this.params.api.selectAll();\r\n }\r\n\r\n onCellFocused(event: CellFocusedEvent) {\r\n var column = event.column as Column;\r\n if (column?.getColDef().pinned) {\r\n this.headerRef.nativeElement.classList.add('ag-column-focus');\r\n } else {\r\n if (this.params.column.getColId() === column.getColId()) {\r\n this.headerRef.nativeElement.classList.add('ag-column-focus');\r\n } else {\r\n this.headerRef.nativeElement.classList.remove('ag-column-focus');\r\n }\r\n }\r\n }\r\n\r\n onFilterMenuButtonClicked(event: MouseEvent) {\r\n if (!this.columnMenuIsOpen) {\r\n this.params.column.getColDef().headerComponentParams = this.params;\r\n this.params.showColumnMenu(event.target as HTMLElement, () => {\r\n this.columnMenuIsOpen = false;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n this.ascSort = this.params.column.isSortAscending();\r\n this.descSort = this.params.column.isSortDescending();\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n });\r\n this.columnMenuIsOpen = true;\r\n } else {\r\n this.params.api.hidePopupMenu();\r\n this.columnMenuIsOpen = false;\r\n }\r\n }\r\n\r\n onHeaderMouseEnter(event: MouseEvent) {\r\n this.isHovering = true;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n onHeaderMouseLeave(event: MouseEvent) {\r\n this.isHovering = false;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.params.api.removeEventListener('cellFocused', this.onCellFocused.bind(this));\r\n }\r\n}\r\n","import { CommonModule, NgClass, NgIf } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDivider, MatList, MatListItem, MatListOption, MatSelectionList, MatSelectionListChange } from '@angular/material/list';\r\nimport { MatFormField, MatOption, MatSelect } from '@angular/material/select';\r\nimport { IFilterAngularComp } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, type IDoesFilterPassParams, type IFilterParams } from 'ag-grid-community';\r\n\r\ninterface Sorts {\r\n value: string | null,\r\n label: string,\r\n selected: boolean,\r\n display: () => boolean,\r\n icon: string\r\n}\r\n\r\ninterface HeaderValues {\r\n sort: string,\r\n filterOpertator: string\r\n filterValue: string\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatList,\r\n MatListItem,\r\n MatSelectionList,\r\n MatListOption,\r\n MatDivider,\r\n MatFormField,\r\n MatSelect,\r\n MatOption,\r\n MatInputModule,\r\n ReactiveFormsModule\r\n ],\r\n template: `\r\n <div class=\"tru-data-grid-header-filter-container\">\r\n <mat-selection-list #sort [multiple]=\"false\" (selectionChange)=\"onSortSelection($event)\">\r\n @for (typeOfSort of typesOfSort; track typeOfSort.value) {\r\n <mat-list-option [value]='typeOfSort' *ngIf=\"typeOfSort.display()\">\r\n <mat-icon [svgIcon]=\"typeOfSort.icon\"></mat-icon>\r\n <span matListItem>{{typeOfSort.label}}</span>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n <mat-divider></mat-divider>\r\n <mat-label>Text Filters:</mat-label>\r\n\t <mat-form-field>\r\n \t<mat-icon matPrefix\r\n\t\t\t [svgIcon]=\"'search-icon'\"\r\n class=\"tru-data-grid-header-filter-search-icon\">\r\n\t\t\t</mat-icon>\r\n\t\t <input #filterInput\r\n\t\t\t\t\t matInput\r\n\t\t\t\t\t [formControl]=\"filterInputControl\"\r\n [(ngModel)]=\"filterText\"\r\n (ngModelChange)=\"onFilterInputChanged()\"\r\n\t\t\t\t\t type=\"text\" />\r\n\t </mat-form-field>\r\n </div>`,\r\n styles: [\r\n `\r\n .tru-data-grid-header-filter-container {\r\n min-width: 200px !important;\r\n }\r\n\r\n .tru-data-grid-header-filter-container mdc-list {\r\n padding-bottom: 0px !important;\r\n padding-bottom: 10px !important;\r\n }\r\n\r\n ::ng-deep .tru-data-grid-header-filter-container mat-list-option {\r\n padding-left: 10px !important;\r\n }\r\n\r\n ::ng-deep .tru-data-grid-header-filter-container mat-icon {\r\n height: 18px !important;\r\n width: 18px !important;\r\n padding-right: 5px;\r\n padding-top: 4px;\r\n }\r\n\r\n ::ng-deep .tru-data-grid-header-filter-container .mdc-list-item__primary-text span {\r\n font-size: 12px !important;\r\n vertical-align: text-bottom;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end {\r\n display: none !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container mat-divider {\r\n padding-top: 5px;\r\n padding-bottom: 5px;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container mat-label {\r\n margin-left: 10px;\r\n font-weight: bold;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field {\r\n display: block !important;\r\n margin: 0 10px 10px 10px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-infix {\r\n padding: 0px !important;\r\n min-height: unset !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__leading {\r\n border-color: rgb(189, 54, 47);\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__notch {\r\n border-color: rgb(189, 54, 47);\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__trailing {\r\n border-color: rgb(189, 54, 47);\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-bottom-align::before {\r\n content: unset !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-icon-prefix > .mat-icon {\r\n padding: 0 !important;\r\n padding-bottom: 5px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-icon-suffix > .mat-icon {\r\n padding: 0 !important;\r\n padding-bottom: 5px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-infix {\r\n padding: 0px !important;\r\n min-height: unset !important;\r\n padding-bottom: 5px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-search-icon svg {\r\n fill: #343434;\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridHeaderFilter implements IFilterAngularComp {\r\n filterParams!: IFilterParams;\r\n guiFilterParams!: IAfterGuiAttachedParams | undefined;\r\n gui!: HTMLDivElement;\r\n filterText: string = '';\r\n typesOfSort: Sorts[] = [];\r\n values: string[] = [];\r\n\r\n filterInputControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n\r\n constructor() {}\r\n\r\n agInit(params: IFilterParams): void {\r\n this.filterParams = params;\r\n this.typesOfSort = [\r\n {\r\n value: 'asc',\r\n label: 'Sort A to Z',\r\n selected: false,\r\n display: () => { return !this.filterParams.column.isSortAscending() },\r\n icon: 'asc-sort-menu-icon'\r\n },\r\n {\r\n value: 'desc',\r\n label: 'Sort Z to A',\r\n selected: false,\r\n display: () => { return !this.filterParams.column.isSortDescending() }, \r\n icon: 'desc-sort-menu-icon'\r\n },\r\n {\r\n value: null,\r\n label: 'Clear Sort',\r\n selected: false,\r\n display: () => { return this.filterParams.column.isSortAscending() || this.filterParams.column.isSortDescending() },\r\n icon: 'no-sort-icon'\r\n }\r\n ];\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.filterText != null && this.filterText !== '';\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const { node } = params;\r\n const value = this.filterParams.getValue(node).toString().toLowerCase();\r\n\r\n return this.filterText\r\n .toLowerCase()\r\n .split(' ')\r\n .every((filterWord) => value.indexOf(filterWord) >= 0);\r\n }\r\n\r\n getModel() {\r\n if (!this.isFilterActive()) {\r\n return null;\r\n }\r\n\r\n return { value: this.filterText };\r\n }\r\n\r\n setModel(model: any): void {\r\n this.filterText = model == null ? null : model.value;\r\n }\r\n\r\n getGui(): HTMLElement {\r\n return this.gui;\r\n }\r\n\r\n afterGuiAttached(params?: IAfterGuiAttachedParams) {\r\n this.guiFilterParams = params;\r\n }\r\n\r\n onFilterInputChanged() {\r\n this.filterParams.filterChangedCallback();\r\n }\r\n\r\n onSortSelection = (changeEvent: MatSelectionListChange) => {\r\n this.filterParams.colDef.headerComponentParams.setSort(changeEvent.options[0].value.value, false);\r\n this.guiFilterParams!.hidePopup!()\r\n }\r\n}\r\n","import { CommonModule, NgClass, NgIf } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IHeaderAngularComp } from 'ag-grid-angular';\r\nimport { CellFocusedEvent, Column, IHeaderParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [NgIf, NgClass, CommonModule, MatIconModule],\r\n template: `\r\n <div #header class=\"ag-cell-label-container\" role=\"presentation\">\r\n <div ref=\"eLabel\" class=\"ag-header-cell-label\" role=\"presentation\" (mouseenter)=\"onHeaderMouseEnter($event)\" (mouseleave)=\"onHeaderMouseLeave($event)\">\r\n <div>\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</span>\r\n </div>\r\n <div class=\"ag-header-control-filter-container\" *ngIf=\"showFilterMenu\">\r\n <span ref=\"eFilterButton\" class=\"ag-filter-icon\" (click)=\"onFilterMenuButtonClicked($event)\">\r\n <mat-icon class=\"ag-header-more\" [svgIcon]=\"'more-icon'\" *ngIf=\"!filterIsActive && !ascSort && !descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-asc\" [svgIcon]=\"'asc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"ascSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-desc\" [svgIcon]=\"'desc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-filter\" [svgIcon]=\"'filter-icon'\" *ngIf=\"filterIsActive\"></mat-icon>\r\n </span>\r\n </div>\r\n </div>\r\n <mat-icon [svgIcon]=\"'select-all-icon'\"\r\n (click)=\"onSelectAllIconClicked()\"\r\n class=\"tru-data-grid-select-all-icon\"\r\n title=\"Select All (Ctrl+A)\"></mat-icon>\r\n </div>`,\r\n styles: [\r\n `\r\n .ag-header-control-container {\r\n display: flex;\r\n }\r\n .ag-header-control-filter-container {\r\n position: absolute;\r\n top: 1px;\r\n left: 5px;\r\n width: 20px;\r\n height: 20px;\r\n display: table;\r\n }\r\n .ag-header-cell-text {\r\n position: relative;\r\n pointer-events: none;\r\n vertical-align: middle;\r\n vertical-align: -webkit-baseline-middle;\r\n }\r\n .ag-sort-icon {\r\n height: 100%;\r\n width: 100%;\r\n margin-left: 0 !important;\r\n }\r\n .tru-data-grid-select-all-icon {\r\n width: 16px;\r\n font-size: 28px;\r\n color: #ddd;\r\n float: right;\r\n position: absolute;\r\n top: -1px;\r\n right: 4px;\r\n }\r\n .ag-sort-icon mat-icon {\r\n height: 16px;\r\n width: 16px;\r\n padding-top: 4px;\r\n }\r\n .ag-column-focus .ag-header-cell-text {\r\n color: #3f51b5;\r\n font-weight: bold;\r\n }\r\n .ag-column-focus {\r\n background-color: #ddd;\r\n border-bottom: 1px solid #3f51b5;\r\n }\r\n ::ng-deep .tru-data-grid-select-all-icon path {\r\n fill: lightgray;\r\n position: relative;\r\n z-index: 100;\r\n pointer-events: all;\r\n }\r\n ::ng-deep .ag-header-control-filter-container mat-icon {\r\n height: 20px !important;\r\n width: 20px !important;\r\n padding-top: 2px !important;\r\n }\r\n ::ng-deep .ag-filter-icon {\r\n\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-asc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-desc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon {\r\n height: 18px !important;\r\n width: 18px !important;\r\n color: #ddd;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon svg {\r\n fill: #949494 !important;\r\n }\r\n .tru-data-grid-select-all-icon {\r\n width: 16px;\r\n font-size: 28px;\r\n color: #ddd;\r\n float: right;\r\n position: absolute;\r\n top: -1px;\r\n right: 4px;\r\n }\r\n ::ng-deep .tru-data-grid-select-all-icon path {\r\n fill: lightgray;\r\n position: relative;\r\n z-index: 100;\r\n pointer-events: all;\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridRefHeader implements IHeaderAngularComp { \r\n @ViewChild('header', { static: false }) headerRef!: ElementRef;\r\n\r\n public params!: IHeaderParams;\r\n public ascSort: boolean = false;\r\n public descSort: boolean = false;\r\n public isHovering: boolean = false;\r\n public columnMenuIsOpen: boolean = false;\r\n public showFilterMenu: boolean = false;\r\n public filterIsActive: boolean = false;\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n }\r\n\r\n getHeaderParams(): IHeaderParams {\r\n return this.params;\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSelectAllIconClicked() {\r\n this.params.api.selectAll();\r\n }\r\n\r\n onFilterMenuButtonClicked(event: MouseEvent) {\r\n if (!this.columnMenuIsOpen) {\r\n this.params.column.getColDef().headerComponentParams = this.params;\r\n this.params.showColumnMenu(event.target as HTMLElement, () => {\r\n this.columnMenuIsOpen = false;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n this.ascSort = this.params.column.isSortAscending();\r\n this.descSort = this.params.column.isSortDescending();\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n });\r\n this.columnMenuIsOpen = true;\r\n } else {\r\n this.params.api.hidePopupMenu();\r\n this.columnMenuIsOpen = false;\r\n }\r\n }\r\n\r\n onHeaderMouseEnter(event: MouseEvent) {\r\n this.isHovering = true;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n onHeaderMouseLeave(event: MouseEvent) {\r\n this.isHovering = false;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Column, GridApi } from 'ag-grid-community';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruDataGridUtil {\r\n\r\n private getColumnIndexByColId = (api: GridApi, colId: string): number => {\r\n return api.getAllDisplayedColumns()?.findIndex(col => col.getColId() === colId);\r\n }\r\n\r\n focusPreviousCell = (api: GridApi, rowIndex: number, colId: string) => {\r\n let currentColumnIndex = this.getColumnIndexByColId(api, colId);\r\n let column: Column;\r\n if (currentColumnIndex === 0) {\r\n if (rowIndex === 0) {\r\n column = api.getAllDisplayedColumns()[api.getAllDisplayedColumns().length - 1];\r\n } else {\r\n rowIndex--;\r\n column = api.getAllDisplayedColumns()[0];\r\n }\r\n } else {\r\n column = api.getAllDisplayedColumns()[currentColumnIndex! - 1];\r\n }\r\n api.stopEditing();\r\n api.setFocusedCell(rowIndex, column);\r\n }\r\n\r\n focusNextCell = (api: GridApi, rowIndex: number, colId: string) => {\r\n let currentColumnIndex = this.getColumnIndexByColId(api, colId);\r\n let column: Column;\r\n if (currentColumnIndex + 1 >= api.getAllDisplayedColumns().length) {\r\n if (rowIndex + 1 === api.getDisplayedRowCount()) {\r\n column = api.getAllDisplayedColumns()[api.getAllDisplayedColumns().length - 1];\r\n } else {\r\n rowIndex++;\r\n column = api.getAllDisplayedColumns()[0];\r\n }\r\n } else {\r\n column = api.getAllDisplayedColumns()[currentColumnIndex! + 1];\r\n }\r\n api.stopEditing(); \r\n api.setFocusedCell(rowIndex, column);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruGridValidationDialogConfig } from './tru-grid-validation-dialog-config';\r\n\r\n@Component({\r\n selector: 'tru-grid-validation-dialog',\r\n templateUrl: './tru-grid-validation-dialog.html',\r\n styleUrls: ['./tru-grid-validation-dialog.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruGridValidationDialog implements OnInit, OnDestroy {\r\n @Input() config!: TruGridValidationDialogConfig;\r\n @Output() close = new EventEmitter();\r\n\r\n errorMsg: string = '';\r\n\r\n private rowElement!: HTMLElement;\r\n private cellElement!: HTMLElement;\r\n private listeners: Array<() => void> = [];\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private util: TruUtil) { }\r\n\r\n onAcceptAll = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n\r\n for (const key in this.config.mergeData?.getAll()) {\r\n entity[key] = this.config.mergeData?.get(key)!.value;\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n };\r\n\r\n if (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.Merge_Data_Set.clearAll();\r\n entity.entityAspect.validateEntity();\r\n this.close.emit();\r\n }\r\n\r\n onAccept = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n let propertyName = this.config.propertyConfig.propertyName as string;\r\n\r\n entity[propertyName] = this.config.mergeData?.get(propertyName)!.value;\r\n this.config.mergeData?.clear(propertyName);\r\n\r\n if (originalValues.hasOwnProperty(propertyName) && (Object.keys(originalValues).length === 0 && originalValues.constructor === Object))\r\n delete originalValues[propertyName];\r\n\r\n if (this.config.mergeData?.isEmpty())\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.entityAspect.validateEntity();\r\n this.close.emit();\r\n }\r\n\r\n onDecline = () => {\r\n let entity = this.config.entity as any;\r\n this.config.mergeData?.clearAll();\r\n entity.entityAspect.validateEntity();\r\n this.close.emit();\r\n }\r\n\r\n ngOnInit() {\r\n this.errorMsg = this.config.errorMsg as string;\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n this.rowElement.style.zIndex = '10000000000';\r\n this.cellElement.classList.add('show');\r\n this.errorMsg = this.config.errorMsg as string; \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n if (this.rowElement)\r\n this.rowElement.style.zIndex = 'auto';\r\n if (this.cellElement)\r\n this.cellElement.classList.remove('show');\r\n this.listeners.forEach(l => l());\r\n }\r\n}\r\n\r\n","<i class=\"icon-warning-sign icon-white\"></i>{{config.errorMsg}}\r\n<div *ngIf=\"config.mergeData\">\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAcceptAll()\">Accept All</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAccept()\">Accept</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onDecline()\">Decline</button>\r\n</div>\r\n\r\n","import { TruEditControlConfigBase } from \"../../base-classes/tru-edit-control-config-base\";\r\nimport { TruEntityBase } from \"../../base-classes/tru-entity-base\";\r\nimport { TruListControlConfigBase } from \"../../base-classes/tru-list-control-config-base\";\r\nimport { TruMergeDataSet } from \"../../classes/tru-merge-data-set\";\r\n\r\n\r\nexport class TruGridValidationDialogConfig {\r\n private _entity: TruEntityBase;\r\n private _propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>;\r\n private _isSubProperty: boolean;\r\n private _ignore: boolean;\r\n private _propertyName: string = '';\r\n private _errorMsg: string = '';\r\n private _mergeData: TruMergeDataSet | null = null;\r\n \r\n public get entity(): TruEntityBase {\r\n return this._entity;\r\n }\r\n\r\n public get propertyConfig(): TruEditControlConfigBase<any> | TruListControlConfigBase<any> {\r\n return this._propertyConfig;\r\n }\r\n\r\n public get isSubProperty(): boolean {\r\n return this._isSubProperty;\r\n }\r\n\r\n public get ignore(): boolean {\r\n return this._ignore;\r\n }\r\n\r\n public get propertyName(): string | null {\r\n return this._propertyName;\r\n }\r\n\r\n public set propertyName(value: string) {\r\n this._propertyName = value;\r\n }\r\n\r\n public get errorMsg(): string | null {\r\n return this._errorMsg;\r\n }\r\n\r\n public set errorMsg(value: string) {\r\n this._errorMsg = value;\r\n }\r\n\r\n public get mergeData(): TruMergeDataSet | null {\r\n return this._mergeData;\r\n }\r\n\r\n public set mergeData(value: TruMergeDataSet | null) {\r\n this._mergeData = value;\r\n }\r\n\r\n constructor(\r\n entity: TruEntityBase,\r\n propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>,\r\n isSubProperty: boolean = false,\r\n ignore: boolean = false) {\r\n this._entity = entity;\r\n this._propertyConfig = propertyConfig;\r\n this._isSubProperty = isSubProperty;\r\n this._ignore = ignore;\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ILoadingOverlayAngularComp } from \"ag-grid-angular\";\r\nimport { ILoadingOverlayParams } from \"ag-grid-community\";\r\nimport { MaterialModule } from \"../../../../material.module\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'tru-data-grid-loading-overlay',\r\n imports: [MaterialModule],\r\n template: `\r\n <div class=\"ag-overlay-loading-center\" style=\"height:50px;width:275px;\">\r\n <div style=\"display:inline-block;margin-right:15px;vertical-align:middle;line-height:38px;\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n <div style=\"display:inline-block;vertical-align:middle;\">\r\n <span style=\"font-size:12px;font-weight:bold;vertical-align:middle;line-height:38px;\">{{ params.loadingMessage }}</span> \r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class TruDataGridLoadingOverlay implements ILoadingOverlayAngularComp {\r\n public params!: ILoadingOverlayParams & { loadingMessage: string };\r\n\r\n agInit(params: ILoadingOverlayParams & { loadingMessage: string }): void {\r\n this.params = params;\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { INoRowsOverlayAngularComp } from \"ag-grid-angular\";\r\nimport { INoRowsOverlayParams } from \"ag-grid-community\";\r\nimport { MaterialModule } from \"../../../../material.module\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'tru-data-grid-no-rows-overlay',\r\n imports: [MaterialModule],\r\n template: `\r\n <div class=\"ag-overlay-loading-center\" style=\"height:50px;width:275px;\">\r\n <span style=\"font-size:12px;font-weight:bold;line-height:38px;\">{{ params.noRowsMessageFunc() }}</span>\r\n </div>`\r\n})\r\nexport class TruDataGridNoRowsOverlay implements INoRowsOverlayAngularComp {\r\n public params!: INoRowsOverlayParams & { noRowsMessageFunc: () => string };\r\n\r\n agInit(params: INoRowsOverlayParams & { noRowsMessageFunc: () => string }): void {\r\n this.params = params;\r\n }\r\n}\r\n","export class TruMergeData {\r\n private _value: any;\r\n private _modifiedBy: string;\r\n private _hid: string;\r\n\r\n\r\n public get value(): string {\r\n return this._value;\r\n }\r\n\r\n public get modifiedBy(): string {\r\n return this._modifiedBy;\r\n }\r\n\r\n public get hid(): string {\r\n return this._hid;\r\n }\r\n\r\n constructor(value: any, modifiedBy: string, hid: string) {\r\n this._value = value;\r\n this._modifiedBy = modifiedBy;\r\n this._hid = hid;\r\n }\r\n}\r\n","import moment from \"moment\";\r\nimport { Subject } from \"rxjs\";\r\nimport { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\nimport { TruPropertyConfigBase } from \"../base-classes/tru-property-config-base\";\r\nimport { TruAppEnvironment } from \"../services/tru-app-environment\";\r\nimport { TruDataContext } from \"../services/tru-data-context\";\r\nimport { TruModelPropertyLookup } from \"../services/tru-model-property-lookup\";\r\nimport { TruModelTypeLookup } from \"../services/tru-model-type-lookup\";\r\nimport { TruDataChange } from \"./tru-data-change\";\r\nimport { TruMergeData } from \"./tru-merge-data\";\r\n\r\n\r\nexport class TruDataChangeParser {\r\n private appEnvionment: TruAppEnvironment;\r\n private dataContext: TruDataContext;\r\n private entity: any;\r\n private tableName: string;\r\n private addEntity: (newEntity: any, dataNotification: boolean) => void;\r\n private getLatestResults: () => any;\r\n private getLatestQuery: any;\r\n private contextFilters: [];\r\n private expandPaths: Array<string>;\r\n private isLoaded: () => boolean;\r\n private types: TruModelTypeLookup;\r\n private propertyTypes: Map<string, TruPropertyConfigBase>;\r\n\r\n private globalDataContext: TruDataContext | null;\r\n private waitingEntities: Array<TruEntityBase> = [];\r\n\r\n private dataChanged$: Subject<TruDataChange> = new Subject<TruDataChange>();\r\n\r\n onDataChanged() {\r\n return this.dataChanged$;\r\n }\r\n\r\n dataChanged(change: TruDataChange) {\r\n this.dataChanged$.next(change);\r\n }\r\n\r\n constructor(\r\n connection: any,\r\n appEnviroment: TruAppEnvironment,\r\n dataContext: TruDataContext,\r\n globalDataContext: TruDataContext | null,\r\n entity: typeof TruEntityBase,\r\n tableName: string,\r\n addEntity: any,\r\n getLatestResults: any,\r\n getLatestQuery: any,\r\n contextFilters: [],\r\n expandPaths: Array<string>,\r\n isLoaded: () => boolean,\r\n modelTypeLookup: TruModelTypeLookup,\r\n modelPropertyLookup: TruModelPropertyLookup\r\n ) {\r\n this.appEnvionment = appEnviroment;\r\n this.dataContext = dataContext;\r\n this.globalDataContext = globalDataContext;\r\n this.entity = entity;\r\n this.tableName = tableName;\r\n this.addEntity = addEntity;\r\n this.getLatestResults = getLatestResults;\r\n this.getLatestQuery = getLatestQuery;\r\n this.contextFilters = contextFilters;\r\n this.expandPaths = expandPaths;\r\n this.isLoaded = isLoaded;\r\n this.types = modelTypeLookup; \r\n this.propertyTypes = modelPropertyLookup.lookup;\r\n\r\n connection.on(\"change\", (payload: any) => {\r\n this.update(payload);\r\n });\r\n }\r\n\r\n private findEntityInCache = (change: any) => {\r\n var entityAccessor = this.dataContext.entityAccess();\r\n return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);\r\n }\r\n\r\n private findEntityInGlobalCache = (change: any) => {\r\n var entityAccessor = this.globalDataContext!.entityAccess();\r\n return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);\r\n }\r\n\r\n private checkIfDateTime = (newValue: any, currentValue: any, typeName: string | undefined) => {\r\n if (typeName === 'date-time' || typeName === 'date') {\r\n if (moment(newValue, \"YYYY-MM-DD HH:mm:ss.sssssss\", true).isValid())\r\n return moment(moment.utc(newValue).toDate()).format('MM/DD/YYYY hh:mm A');\r\n }\r\n return newValue\r\n }\r\n\r\n private hasPropertyAlreadyBeenModified = (propertyName: string, entity: any) => {\r\n return entity.entityAspect.originalValues.hasOwnProperty(propertyName);\r\n }\r\n\r\n private applyPropertyChanges = (change: any, entity: any) => {\r\n let stateBeforePropertyChange = entity.entityAspect.entityState;\r\n let originalValues = entity.entityAspect.originalValues;\r\n\r\n entity['Data_Notification'] = true;\r\n\r\n Object.keys(change.properties).forEach((key) => {\r\n let propertyName = change.tableName + '.' + key\r\n let entityType = this.propertyTypes.get(propertyName);\r\n if (!entityType) {\r\n entityType = new TruPropertyConfigBase();\r\n entityType.typeName = 'text-bounded';\r\n }\r\n let propertyModified = this.hasPropertyAlreadyBeenModified(key, entity)\r\n if (key === 'Updated' || key === 'UpdatedRef') {\r\n entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n } else if (entity[key] !== this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName)) {\r\n if (!propertyModified) {\r\n entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n delete originalValues[key];\r\n } else {\r\n let value = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n let modifiedBy = change.modifiedBy;\r\n let hid = change.properties[key + 'HID'];\r\n let mergeData = new TruMergeData(value, modifiedBy, hid);\r\n entity.Merge_Data_Set.set(key, mergeData);\r\n entity.entityAspect.validateProperty(key);\r\n }\r\n\r\n if (typeof (originalValues[key]) !== 'undefined')\r\n originalValues[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n } else {\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n }\r\n });\r\n\r\n entity['rowver'] = change.rowver;\r\n delete originalValues['rowver'];\r\n\r\n if (stateBeforePropertyChange.name !== \"Modified\" || (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)) {\r\n if (!entity.entityAspect.isBeingSaved) {\r\n entity.entityAspect.setUnchanged();\r\n } else {\r\n this.waitingEntities.push(entity);\r\n }\r\n }\r\n\r\n delete entity['Data_Notification'];\r\n }\r\n\r\n private setWaitingEntitiesToUnchanged = () => {\r\n this.waitingEntities.forEach((entity: any) => {\r\n if (entity && entity.entityAspect)\r\n entity.entityAspect.setUnchanged();\r\n });\r\n }\r\n\r\n private entityFoundByQuery = (change: any) => {\r\n var entityAccessor = this.dataContext.entityAccess();\r\n var entities = entityAccessor.searchByRefArrayCacheOnly(this.entity, this.getLatestQuery(), [change.tableRef]);\r\n\r\n if (!entities?.length) {\r\n var entityAccessor = this.globalDataContext!.entityAccess();\r\n entities = entityAccessor.searchByRefArrayCacheOnly(this.entity, this.getLatestQuery(), [change.tableRef]);\r\n }\r\n\r\n return entities === null ? 0 : entities.length;\r\n }\r\n\r\n private getEntityFromServer = (change: any) => {\r\n var entityAccessor = this.dataContext.entityAccess();\r\n var entitiy = entityAccessor.searchByRefWithQuery(this.entity, this.getLatestQuery(), change.tableRef);\r\n return entitiy;\r\n }\r\n\r\n private getEntityFromResults = (results: any, change: any) => {\r\n return results.filter((e: any) => { return e.Ref === change.tableRef });\r\n }\r\n\r\n private isSaving = async () => {\r\n return new Promise<void>((resolve, reject) => {\r\n var interval = setInterval(() => {\r\n if (!this.appEnvionment.isSaving) {\r\n clearInterval(interval);\r\n resolve();\r\n }\r\n }, 1000)\r\n })\r\n };\r\n\r\n private update = async (payload: any) => {\r\n await this.isSaving();\r\n\r\n var reloadResults = false;\r\n payload.changes.forEach(async (change: any) => {\r\n var foundEntities = [];\r\n var localEntity = this.findEntityInCache(change);\r\n var globalEntity = this.findEntityInGlobalCache(change);\r\n if (localEntity)\r\n foundEntities.push(localEntity);\r\n if (globalEntity)\r\n foundEntities.push(globalEntity);\r\n\r\n if (foundEntities.length) {\r\n foundEntities.forEach(async (entity: any) => {\r\n if (change.tableName === this.tableName) {\r\n\r\n if (change.changeOperation === 'U') {\r\n this.applyPropertyChanges(change, entity);\r\n\r\n var results = this.getLatestResults();\r\n if (this.entityFoundByQuery(change)) {\r\n var entityAlreadyInResults = this.getEntityFromResults(results, change);\r\n if (!entityAlreadyInResults.length && this.isLoaded()) {\r\n this.addEntity(entity, true);\r\n }\r\n reloadResults = true;\r\n } else {\r\n var entityToRemove = this.getEntityFromResults(results, change);\r\n if (entityToRemove.length) {\r\n results.splice(results.indexOf(entityToRemove[0]), 1);\r\n reloadResults = true;\r\n }\r\n }\r\n } else if (change.changeOperation === 'D') {\r\n var results = this.getLatestResults();\r\n var entityToDelete = this.getEntityFromResults(results, change);\r\n if (entityToDelete.length) {\r\n entityToDelete[0].entityAspect.setDetached();\r\n results.splice(results.indexOf(entityToDelete[0]), 1);\r\n reloadResults = true;\r\n }\r\n } else if (change.changeOperation === 'I') {\r\n var results = this.getLatestResults();\r\n var entityAlreadyInResults = this.getEntityFromResults(results, change);\r\n if (this.entityFoundByQuery(change) && !entityAlreadyInResults.length && this.isLoaded()) {\r\n if (!localEntity) {\r\n var newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n if (this.isLoaded()) {\r\n this.addEntity(newEntity, true);\r\n reloadResults = true;\r\n }\r\n } else if (entity === localEntity) {\r\n this.applyPropertyChanges(change, entity);\r\n this.addEntity(entity, true);\r\n reloadResults = true;\r\n }\r\n } else if (!this.entityFoundByQuery(change) && entityAlreadyInResults.length) {\r\n var entityToDelete = this.getEntityFromResults(results, change);\r\n if (entityToDelete.length) {\r\n results.splice(results.indexOf(entityAlreadyInResults[0]), 1);\r\n reloadResults = true;\r\n }\r\n } else if (!globalEntity) {\r\n var newEntity = this.globalDataContext!.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n reloadResults = true;\r\n } else {\r\n reloadResults = true;\r\n }\r\n }\r\n } else if (change.changeOperation !== 'D') {\r\n this.applyPropertyChanges(change, entity);\r\n }\r\n });\r\n } else if (change.changeOperation === 'U' && change.tableName === this.tableName) {\r\n await this.getEntityFromServer(change).subscribe((entity: any) => {\r\n if (entity) {\r\n this.applyPropertyChanges(change, entity);\r\n\r\n if (this.entityFoundByQuery(change) && this.isLoaded()) {\r\n this.addEntity(newEntity, true);\r\n reloadResults = true;\r\n }\r\n }\r\n });\r\n } else {\r\n if (change.changeOperation === 'I' && change.tableName === this.tableName) {\r\n var newEntity = this.globalDataContext!.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName1 = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName1] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey2 = keyof typeof newEntity;\r\n const pkeyName2 = change.tableName + 'Ref' as ObjectKey2;\r\n newEntity[pkeyName2] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n if (this.entityFoundByQuery(change) && this.isLoaded()) {\r\n this.addEntity(newEntity, true);\r\n reloadResults = true;\r\n }\r\n } else if (change.changeOperation === 'I') {\r\n let entityType = this.types.getType(change.tableName);\r\n var newEntity = this.globalDataContext!.entityAccess().add(entityType as any, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName1 = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName1] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n newEntity = this.dataContext.entityAccess().add(entityType as any, this.contextFilters);\r\n type ObjectKey2 = keyof typeof newEntity;\r\n const pkeyName2 = change.tableName + 'Ref' as ObjectKey2;\r\n newEntity[pkeyName2] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n }\r\n }\r\n\r\n if (this.expandPaths && this.expandPaths.length && this.expandPaths.includes('o' + change.tableName))\r\n reloadResults = true;\r\n });\r\n\r\n let dataChangeArgs = new TruDataChange();\r\n dataChangeArgs.dataChanges = payload.changes;\r\n dataChangeArgs.reload = reloadResults;\r\n this.dataChanged(dataChangeArgs);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as signalR from \"@microsoft/signalr\"\r\nimport { Subject } from 'rxjs';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\r\nimport { TruDataChange } from '../classes/tru-data-change';\r\nimport { TruDataChangeParser } from '../classes/tru-data-change-parser';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruDataContext } from './tru-data-context';\r\nimport { TruModelPropertyLookup } from './tru-model-property-lookup';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruConnectionHub {\r\n private connection: any;\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private appEnvironment: TruAppEnvironment,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private modelPropertyLookup: TruModelPropertyLookup) {\r\n this.connection = new signalR.HubConnectionBuilder()\r\n .withUrl(`${this.appEnvironment.appUri}/notificationhub`, {\r\n skipNegotiation: true,\r\n transport: signalR.HttpTransportType.WebSockets,\r\n }).withAutomaticReconnect().build();\r\n }\r\n\r\n disconnect = () => {\r\n this.connection.stop();\r\n }\r\n\r\n connect = () => {\r\n try {\r\n Object.defineProperty(WebSocket, 'OPEN', { value: 1, });\r\n this.connection.start().then(() => {\r\n this.connection.invoke('getConnectionId')\r\n .then((connectionId: string) => {\r\n console.log(`SignalR connection success! connectionId: ${connectionId}`);\r\n })\r\n });\r\n } catch (error) {\r\n console.log(`SignalR connection error: ${error}`);\r\n }\r\n }\r\n\r\n start = () => {\r\n this.connection.on(\"error\", (value: string) => {\r\n this.disconnect();\r\n this.connect();\r\n });\r\n\r\n this.connect();\r\n }\r\n\r\n subscribe = (\r\n dataContext: TruDataContext,\r\n entity: typeof TruEntityBase,\r\n tableName: string,\r\n addEntity: (newEntity: any) => void,\r\n getLatestResults: () => any,\r\n getLatestQuery: () => any,\r\n contextFilters: [],\r\n expandPaths: Array<string>,\r\n isLoaded: () => boolean): Subject<TruDataChange> => {\r\n return new TruDataChangeParser(\r\n this.connection,\r\n this.appEnvironment,\r\n dataContext,\r\n this.appEnvironment.globalDataContext,\r\n entity,\r\n tableName,\r\n addEntity,\r\n getLatestResults,\r\n getLatestQuery,\r\n contextFilters,\r\n expandPaths,\r\n isLoaded,\r\n this.modelTypeLookup,\r\n this.modelPropertyLookup).onDataChanged();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruTabGroupEventNotifier {\r\n private active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n onActiveStateChanged = () => {\r\n return this.active$;\r\n }\r\n\r\n get isActive() {\r\n return this.active$.getValue();\r\n }\r\n\r\n set isActive (value: boolean) {\r\n this.active$.next(value);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ApplicationRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, Input, OnChanges, OnInit, Optional, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, createComponent } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { AgGridAngular } from \"ag-grid-angular\";\r\nimport type { ColDef, Column, GridApi, GridReadyEvent, SuppressKeyboardEventParams } from \"ag-grid-community\";\r\nimport { AllCommunityModule, ClientSideRowModelModule, CustomFilterModule, ModuleRegistry, TextEditorModule, TextFilterModule, provideGlobalGridOptions } from 'ag-grid-community';\r\nimport { Subscription, forkJoin, fromEvent, skip } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { TruListControlConfigBase } from '../../base-classes/tru-list-control-config-base';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruDataChange } from '../../classes/tru-data-change';\r\nimport { TruMergeDataSet } from '../../classes/tru-merge-data-set';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruComponentLookup } from '../../services/tru-component-lookup';\r\nimport { TruConnectionHub } from '../../services/tru-connection-hub';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruWindowEventHandler } from '../desktop/services/tru-window-event-handler';\r\nimport { TruGridValidationDialog } from '../grid-validation-dialog/tru-grid-validation-dialog';\r\nimport { TruGridValidationDialogConfig } from '../grid-validation-dialog/tru-grid-validation-dialog-config';\r\nimport { TruTabGroupEventNotifier } from '../layout/tab/services/tru-tab-group-event-notifier';\r\nimport { TruToolbarButton } from '../toolbar/button/tru-toolbar-button';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { TruToolbarDropdown } from '../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarMenu } from '../toolbar/menu/tru-toolbar-menu';\r\nimport { TruToolbarSeparator } from '../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbar } from '../toolbar/tru-toolbar';\r\nimport { ITruDataGridConfig } from './classes/tru-data-grid-config';\r\nimport { TruDataGridTypes } from './enums/tru-data-grid-types';\r\nimport { TruDataGridLoadingOverlay } from './overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay';\r\nimport { TruDataGridNoRowsOverlay } from './overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay';\r\n\r\n// Mark all grids as using legacy themes\r\nprovideGlobalGridOptions({ theme: \"legacy\" });\r\nModuleRegistry.registerModules([\r\n TextFilterModule,\r\n TextEditorModule,\r\n CustomFilterModule,\r\n ClientSideRowModelModule,\r\n AllCommunityModule]);\r\n\r\n@Component({\r\n selector: 'tru-data-grid',\r\n templateUrl: './tru-data-grid.html',\r\n styleUrls: ['./tru-data-grid.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[class.tru-data-grid]': 'true' },\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n AgGridAngular,\r\n TruToolbar,\r\n TruToolbarButton,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarMenu\r\n ]\r\n})\r\nexport class TruDataGrid implements OnInit, OnChanges, AfterViewInit {\r\n @ViewChild('dataGridContainer') dataGridContainer!: ElementRef;\r\n @ViewChild('customToolbarContainer', { read: ViewContainerRef }) customToolbarContainer!: ViewContainerRef;\r\n\r\n @Input() config!: ITruDataGridConfig;\r\n @Input() entity!: any;\r\n @Input() name!: any;\r\n\r\n TruDataGridTypes = TruDataGridTypes;\r\n\r\n label: string = '';\r\n columnDefs: any = [];\r\n rowData: any = [];\r\n viewChoices: Array<any> = [];\r\n selectedViewChoice: any;\r\n unassociatedChoices: Array<any> = [];\r\n selectedUnassociatedChoice: any;\r\n viewMenuItems: any = [];\r\n customToolbarComponents: any = [];\r\n selectedViewMenuItem: any | null = null;\r\n gridType: TruDataGridTypes = TruDataGridTypes.Search\r\n unsavedEntities: Array<any> = [];\r\n loadedEntities: Array<any> = [];\r\n latestSetupQuery: any;\r\n firstSearchRan: boolean = false;\r\n rowCount: string = 'Rows: 0';\r\n selectedRowCount: string = 'Selected: 0';\r\n\r\n gridOptions: any = {\r\n getRowId: (params: any) => { return params.data.$entity.Ref.toString() },\r\n animateRows: false,\r\n rowSelection: 'multiple',\r\n rowStyle: { background: 'white' },\r\n loadingOverlayComponent: TruDataGridLoadingOverlay,\r\n loadingOverlayComponentParams: {\r\n loadingMessage: 'Searching - One moment please...',\r\n },\r\n noRowsOverlayComponent: TruDataGridNoRowsOverlay,\r\n noRowsOverlayComponentParams: {\r\n noRowsMessageFunc: () =>\r\n {\r\n if (this.firstSearchRan)\r\n return 'Sorry - no rows found!'\r\n else\r\n return 'Click search to display results.'\r\n },\r\n },\r\n onSelectionChanged: (params: any) => {\r\n let count = 0;\r\n count = this.api?.getSelectedRows().length;\r\n this.selectedRowCount = 'Selected: ' + count;\r\n this.cdr.markForCheck();\r\n },\r\n onRowDataUpdated: () => {\r\n this.config.viewMenuConfig.entities = this.getRowData();\r\n this.config.viewMenuConfig.actionRefs = this.getRefs();\r\n let count = 0;\r\n this.api?.forEachNodeAfterFilter(() => count++);\r\n this.rowCount = 'Rows: ' + count;\r\n },\r\n onCellEditingStarted: (params: any) => {\r\n if (params.colDef.cellEditorPopup && this.validationDialog)\r\n this.validationDialog.destroy();\r\n },\r\n onCellEditingStopped: (params: any) => {\r\n params.api.refreshCells({\r\n force: true,\r\n rowNodes: [params.node]\r\n });\r\n },\r\n onCellValueChanged: (params: any) => {\r\n\r\n },\r\n onGridReady: (event: GridReadyEvent) => {\r\n this.api = event.api;\r\n }\r\n }\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\r\n\r\n private api!: GridApi;\r\n private subs: Array<Subscription> = [];\r\n private isActive: boolean = true;\r\n private rowSelectedOnMousedown: any = null;\r\n private rowFocuedOnMousedown: any = null;\r\n private copiedRowData: any = [];\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private componentLookup: TruComponentLookup,\r\n private searchResultViewManager: TruSearchResultViewManager,\r\n private appEnvironment: TruAppEnvironment,\r\n private searchViewEventHandler: TruSearchViewEventHandler,\r\n private uiNotification: TruUiNotification,\r\n private connectionHub: TruConnectionHub,\r\n private windowEventHandler: TruWindowEventHandler,\r\n private util: TruUtil,\r\n private app: ApplicationRef,\r\n private cdr: ChangeDetectorRef,\r\n @Optional() public tabGroupEventNotifier: TruTabGroupEventNotifier) {\r\n }\r\n\r\n private enhanceRowDataForEntity = (entity: any) => {\r\n let rowData = this.config.resultConfig.rowDataEnhancer(entity);\r\n rowData.$entity = entity;\r\n return rowData;\r\n };\r\n\r\n private setNoRowsTemplate = () => {\r\n //this.noRowsTemplate = `<span style=\"font-size:14px;font-weight:bold;\">No data found.</span>`;\r\n }\r\n\r\n private subscribeTo = () => {\r\n this.subs.push(this.appEnvironment.onSaveComplete$.pipe(skip(1)).subscribe(event => {\r\n if (event?.successful)\r\n this.api?.redrawRows();\r\n }));\r\n this.subs.push(this.appEnvironment.onRevertComplete$.subscribe(event => {\r\n if (event?.successful) {\r\n let rowsToRemove: Array<any> = [];\r\n for (let i = this.rowData.length - 1; i >= 0; i--) {\r\n if (this.rowData[i].$entity[this.config.resultConfig.entityType.name + 'Ref'] < 0)\r\n rowsToRemove.push(this.rowData[i]);\r\n }\r\n this.api?.applyTransaction({ remove: rowsToRemove });\r\n this.api?.redrawRows();\r\n }\r\n\r\n }));\r\n this.subs.push(this.appEnvironment.onDeleteComplete$.subscribe(event => {\r\n if (event?.successful && event.entities && event.entities.length) {\r\n let rowsToRemove: Array<any> = [];\r\n for (let i = this.rowData.length - 1; i >= 0; i--) {\r\n for (let j = event.entities.length - 1; j >= 0; j--) {\r\n if (this.rowData[i].$entity === event.entities[j])\r\n rowsToRemove.push(this.rowData[i]);\r\n }\r\n }\r\n this.api?.applyTransaction({ remove: rowsToRemove });\r\n this.api?.redrawRows();\r\n }\r\n }));\r\n this.subs.push(this.searchViewEventHandler.onSearch().pipe(skip(1)).subscribe((setupQuery: any) => {\r\n this.waitForGridApi(() => {\r\n this.onSearch(setupQuery);\r\n });\r\n }));\r\n this.subs.push(this.config.view.onActive().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n this.isActive = isActive;\r\n if (this.isActive) {\r\n this.api.setGridOption('suppressCellFocus', false);\r\n this.api.setGridOption('suppressHeaderFocus', false);\r\n this.config.viewMenuConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.viewMenuConfig.actionRefs = this.getRefs();\r\n this.api.refreshCells({ force: true });\r\n } else {\r\n this.api.setGridOption('suppressCellFocus', true);\r\n this.api.setGridOption('suppressHeaderFocus', true);\r\n }\r\n }));\r\n this.subs.push(this.windowEventHandler.onActiveStateChanged().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n if (isActive) {\r\n this.api.setGridOption('suppressCellFocus', false);\r\n this.api.setGridOption('suppressHeaderFocus', false);\r\n } else {\r\n this.api.setGridOption('suppressCellFocus', true);\r\n this.api.setGridOption('suppressHeaderFocus', true);\r\n }\r\n }));\r\n if (this.tabGroupEventNotifier !== null) {\r\n this.subs.push(this.tabGroupEventNotifier.onActiveStateChanged().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n this.runSearch();\r\n }));\r\n }\r\n this.subs.push(this.connectionHub.subscribe(\r\n this.dataContext,\r\n this.config.resultConfig.entityType,\r\n this.config.resultConfig.entityType.name,\r\n this.addEntity,\r\n this.getRowData,\r\n () => { return this.latestSetupQuery },\r\n this.config.resultConfig.expands,\r\n [],\r\n () => { return true; }).subscribe((dataChange: TruDataChange) => {\r\n this.api.refreshCells({ force: true });\r\n }));\r\n\r\n this.subs.push(fromEvent<KeyboardEvent>(document, 'keydown').subscribe((event: KeyboardEvent) => {\r\n if (this.config.view.active && this.config.view.window.active) {\r\n let keySequence = this.util.getKeySequence(event);\r\n if (keySequence === 'ctrl+i' || keySequence === 'meta+i') { \r\n this.onAdd();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+d' || keySequence === 'meta+d') { \r\n this.onDelete();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+k' || keySequence === 'meta+k') { \r\n this.onKeep();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+r' || keySequence === 'meta+r') {\r\n this.onRemove();\r\n event.preventDefault();\r\n }\r\n var targetIsControl = this.util.targetIsControl(event.target as HTMLElement);\r\n if (!targetIsControl && event.ctrlKey || event.altKey)\r\n event.preventDefault();\r\n }\r\n }));\r\n\r\n this.subs.push(fromEvent<MouseEvent>(document, 'mousedown').subscribe((event: MouseEvent) => {\r\n if (this.config.view.active &&\r\n this.config.view.window.active &&\r\n !this.dataGridContainer.nativeElement.contains(event.target) &&\r\n !this.util.findClosestAncestorByClass(event.target, '.cdk-overlay-container')) {\r\n this.api.stopEditing();\r\n }\r\n }));\r\n }\r\n\r\n private getRefs = (): string => {\r\n let rowNodes: any = [];\r\n this.api?.forEachNodeAfterFilter((rowNode: any, index: number) => {\r\n rowNodes.push(rowNode);\r\n });\r\n let refs = _.map(rowNodes, (rowNode) => { return rowNode.data.$entity[this.config.resultConfig.entityType.name + 'Ref']; });\r\n return refs.join(',');\r\n }\r\n\r\n private getRowData = () => {\r\n let data: any = [];\r\n this.api?.forEachNodeAfterFilter((rowNode: any) => {\r\n data.push(rowNode.data.$entity);\r\n });\r\n return data;\r\n } \r\n\r\n private loadGridData = (entities: Array<any>) => {\r\n this.rowData = entities.map(this.enhanceRowDataForEntity, entities);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private loadManyToManyGridData = (associatedEntities: Array<any>, associatableEntities: Array<any>, initalLoad: boolean) => {\r\n if (initalLoad)\r\n this.rowData = this.loadGridData(associatedEntities);\r\n else\r\n associatedEntities = this.rowData.map((e: any) => { return e.$entity });\r\n let associatableTypeName = this.config.resultConfig.entityManyToManyType.name\r\n let associatableTypeNameWithPrefix = this.config.resultConfig.entityManyToManyTypeNameWithPrefix\r\n let associatedMapOfAssociatable = _.map(associatedEntities, function (e) { return e['o' + associatableTypeNameWithPrefix]; });\r\n this.unassociatedChoices = associatableEntities.filter(object1 => {\r\n return !associatedMapOfAssociatable.some(object2 => { return object1.value.$ === object2[associatableTypeName + 'Ref']; });\r\n });\r\n }\r\n\r\n private exportData = () => {\r\n this.uiNotification.showExportDialog().then((result) => {\r\n if (!result) return;\r\n let exportGridSpec;\r\n if (this.config.resultConfig.entityType)\r\n exportGridSpec = this.config.resultConfig.name;\r\n else\r\n exportGridSpec = '$custom=' + 1;\r\n\r\n this.dataContext\r\n .entityAccess()\r\n .export(this.config.resultConfig.entityType, exportGridSpec, this.latestSetupQuery, this.getRefs(), result);\r\n });\r\n }\r\n\r\n private onSuppressKeyboardEvent = (params: SuppressKeyboardEventParams): boolean => {\r\n let isTabKey = params.event.code === 'Tab';\r\n let isArrowDown = params.event.code === 'ArrowDown';\r\n let isArrowUp = params.event.code === 'ArrowUp';\r\n let isArrowLeft = params.event.code === 'ArrowLeft';\r\n let isArrowRight = params.event.code === 'ArrowRight';\r\n let isSpace = params.event.code === 'Space';\r\n let isShiftKey = params.event.shiftKey;\r\n let isAltKey = params.event.altKey;\r\n\r\n let focusedCell = params.api.getFocusedCell();\r\n let hasChoices = params.data[params.column.getColId()] && params.data[params.column.getColId()].choices ? true : false;\r\n\r\n if (isSpace)\r\n return true;\r\n\r\n if (params.column.isPinned()) {\r\n if (isTabKey && !isShiftKey)\r\n params.api.tabToNextCell();\r\n else if (isTabKey && isShiftKey)\r\n params.api.tabToPreviousCell();\r\n else if (isArrowLeft)\r\n params.api.tabToPreviousCell();\r\n else if (isArrowRight)\r\n params.api.tabToNextCell();\r\n this.api.stopEditing();\r\n return false;\r\n }\r\n\r\n if (hasChoices && isAltKey && (isArrowDown || isArrowUp)) {\r\n params.event.stopPropagation();\r\n params.api.startEditingCell({\r\n rowIndex: focusedCell?.rowIndex as number,\r\n colKey: focusedCell?.column as Column,\r\n });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n private addEntity = (newEntity: any, dataNotification: boolean = false) => {\r\n if (this.entity && dataNotification) return;\r\n if (this.entity) {\r\n newEntity[this.config.parentTableRelationshipRefName as string] = this.entity[this.config.parentTableRefName as string];\r\n }\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n //let parentName = this.entity.constructor.name;\r\n let unassociatedType = this.config.resultConfig.entityManyToManyType;\r\n let ref = this.selectedUnassociatedChoice.value.$;\r\n let childToAssociate = this.dataContext.entityAccess().searchByRefCacheOnly(unassociatedType, ref, true)\r\n if (childToAssociate) {\r\n let enhancedEntity = this.enhanceRowDataForEntity(newEntity);\r\n enhancedEntity.$entity[unassociatedType.name + 'Ref'] = childToAssociate[unassociatedType.name + 'Ref'];\r\n enhancedEntity.$entity[this.config.parentTableRelationshipRefName as string] = this.entity[this.config.parentTableRefName as string];\r\n // remove item from the add dropdown control\r\n let itemIndex = this.unassociatedChoices.findIndex((choice) => {\r\n return choice[unassociatedType.name + 'Ref'] === childToAssociate[unassociatedType.name + 'Ref'];\r\n });\r\n this.unassociatedChoices.splice(itemIndex, 1);\r\n // clear add selection\r\n this.selectedUnassociatedChoice = undefined;\r\n // add row to grid\r\n this.unsavedEntities.push(enhancedEntity);\r\n this.api.applyTransaction({ add: [enhancedEntity], addIndex: 0 });\r\n }\r\n } else {\r\n let enhancedEntity = this.enhanceRowDataForEntity(newEntity);\r\n this.rowData.unshift(enhancedEntity);\r\n this.api.applyTransaction({ add: [enhancedEntity], addIndex: 0 });\r\n }\r\n }\r\n\r\n private getMergeData = (config: TruListControlConfigBase<any>, entityToValidate: any): TruMergeDataSet | null => {\r\n if (config.propertyPath?.includes('/')) {\r\n let propertyNameParts = config.propertyPath.split('/');\r\n propertyNameParts.pop();\r\n let targetProperty: any;\r\n propertyNameParts.forEach((name) => {\r\n if (!targetProperty) {\r\n let targetPropertyName = 'o' + name as keyof typeof entityToValidate;\r\n targetProperty = entityToValidate[targetPropertyName];\r\n } else {\r\n let targetPropertyName = 'o' + name as keyof typeof entityToValidate;\r\n targetProperty = targetProperty[targetPropertyName];\r\n }\r\n });\r\n if (targetProperty && targetProperty.Merge_Data) {\r\n return targetProperty.Merge_Data_Set;\r\n }\r\n return null;\r\n } else {\r\n return entityToValidate.Merge_Data_Set?.get(config.propertyName as string) ? entityToValidate.Merge_Data_Set : null;\r\n }\r\n }\r\n\r\n private validationDialog: ComponentRef<TruGridValidationDialog> | null = null;\r\n private addValidationDialog = (config: TruGridValidationDialogConfig, hostElement: any) => {\r\n let target = hostElement.querySelectorAll('.dialog-target')[0];\r\n let dialogElement = document.createElement('div');\r\n dialogElement.classList.add('invalid');\r\n target.appendChild(dialogElement);\r\n let componentRef = createComponent<TruGridValidationDialog>(TruGridValidationDialog, {\r\n environmentInjector: this.app.injector,\r\n hostElement: dialogElement,\r\n });\r\n\r\n componentRef.instance.config = config;\r\n componentRef.instance.close.subscribe(() => {\r\n this.api.refreshCells({ force: true });\r\n componentRef.destroy()\r\n });\r\n this.validationDialog = componentRef;\r\n this.app.attachView(componentRef.hostView);\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private waitForGridApi = (callback: () => void) => {\r\n var interval = setInterval(() => {\r\n if (this.api) {\r\n clearInterval(interval);\r\n callback();\r\n }\r\n }, 200);\r\n }\r\n\r\n private runSearch = async () => {\r\n this.waitForGridApi(() => {\r\n let containerIsActive = true;\r\n if (this.tabGroupEventNotifier !== null)\r\n containerIsActive = this.tabGroupEventNotifier.isActive;\r\n else\r\n containerIsActive = true;\r\n\r\n if ((\r\n this.gridType === TruDataGridTypes.Detail ||\r\n this.gridType === TruDataGridTypes.DetailManyToMany ||\r\n this.config.noQuery) &&\r\n containerIsActive) {\r\n if (this.config.noQuery)\r\n this.onSearch(null);\r\n else\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n });\r\n }\r\n\r\n private getPropertyPathParts = (propertyPath: string) => {\r\n let lastIndex = propertyPath.lastIndexOf('.');\r\n propertyPath = propertyPath.slice(0, lastIndex);\r\n return propertyPath.split('.');\r\n }\r\n\r\n private renderCustomToolbarComponents = () => {\r\n this.customToolbarComponents.filter((componentName: string) => componentName).forEach((componentName: string) => {\r\n let toolbarContainerRef = this.customToolbarContainer.createComponent(this.componentLookup.get(componentName)) as any;\r\n toolbarContainerRef.instance.tableName = this.config.tableName;\r\n toolbarContainerRef.instance.getEntities = () => { return this.rowData.map((row: any) => { return row.$entity }) };\r\n });\r\n }\r\n\r\n defaultColDef: ColDef = {\r\n suppressKeyboardEvent: this.onSuppressKeyboardEvent\r\n };\r\n\r\n onRowDataChanged = (data: any) => {\r\n if (this.rowData === null) {\r\n this.setNoRowsTemplate();\r\n this.api.showNoRowsOverlay();\r\n }\r\n }\r\n\r\n onCellMouseDown = (cellData: any) => {\r\n this.rowSelectedOnMousedown = cellData.node.isSelected();\r\n if (!cellData.event?.shiftKey)\r\n this.rowFocuedOnMousedown = cellData.node;\r\n }\r\n\r\n onCellClicked = (cellData: any) => {\r\n let target = cellData.event.target as Element;\r\n if (!target.classList.contains('ag-cell-last-left-pinned')) {\r\n cellData.api.deselectAll();\r\n }\r\n else {\r\n if (cellData.event.ctrlKey) {\r\n if (this.rowSelectedOnMousedown)\r\n cellData.node.setSelected(false);\r\n else\r\n cellData.node.setSelected(true);\r\n } else if (cellData.event.shiftKey) {\r\n let focusedId = this.rowFocuedOnMousedown.id;\r\n } else {\r\n cellData.api.deselectAll();\r\n cellData.node.setSelected(true);\r\n }\r\n }\r\n }\r\n\r\n onCellDoubleClicked = (gridConfig: any) => {\r\n if (gridConfig.colDef.cellClass === 'ag-pk-aligned-cell')\r\n this.config.rowHeaderDoubleClicked(gridConfig);\r\n }\r\n\r\n onCellKeyDown = (params: any) => {\r\n if (!params.event) return;\r\n const event = (params.event as unknown) as KeyboardEvent;\r\n if (event.code === 'Space') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.api?.startEditingCell({\r\n rowIndex: params.rowIndex,\r\n colKey: params.column.getColId(),\r\n key: event.code\r\n });\r\n } else if (params.column.isPinned() && event.ctrlKey && event.code === 'KeyC') {\r\n let selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n this.copiedRowData = selectedRows.map((row: any) => row.$entity);\r\n }\r\n } else if (params.column.isPinned() && event.ctrlKey && event.code === 'KeyV') {\r\n if (this.copiedRowData.length) {\r\n this.copiedRowData.forEach((row: any) => {\r\n let newEntity = this.dataContext.entityAccess().add(this.config.resultConfig.entityType);\r\n let properties = row.entityType.getPropertyNames();\r\n properties\r\n .filter((propertyName: string) => {\r\n return propertyName !== 'Ref' &&\r\n propertyName !== this.config.resultConfig.entityType.name + 'Ref' &&\r\n !this.util.isLowerCase(propertyName.charAt(0));\r\n })\r\n .forEach((propertyName: string) => {\r\n if (typeof newEntity.setProperty !== 'undefined')\r\n newEntity.setProperty(propertyName, row.getProperty(propertyName));\r\n });\r\n this.addEntity(newEntity);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onCellMouseOver(e: any) {\r\n let targetElement = e.event.target;\r\n if (\r\n targetElement &&\r\n !targetElement.classList.contains('ag-cell-popup-editing') &&\r\n e.data.$entity.entityAspect.hasValidationErrors) {\r\n\r\n if (!targetElement.classList.contains('ag-cell'))\r\n targetElement = targetElement.closest('.ag-cell');\r\n if (targetElement && targetElement.classList.contains('invalid')) {\r\n let fieldName = e.colDef.field;\r\n let propertyConfig = e.data[fieldName];\r\n\r\n let propertyPathParts: string[] = [];\r\n if (propertyConfig.propertyPath.includes('.')) {\r\n propertyPathParts = this.getPropertyPathParts(propertyConfig.propertyPath);\r\n }\r\n\r\n let entityToValidate = propertyPathParts.length ? propertyPathParts.reduce((p: any, c: any) => p && p[c] || null, e.data.$entity) : e.data.$entity;\r\n let validationErrorsForProperty = this.dataContext.getValidationErrorsForProperty(entityToValidate, propertyConfig.propertyName);\r\n let validationErrorsMessagesForProperty = this.dataContext.parseErrorMessages(validationErrorsForProperty);\r\n\r\n let validationDialogConfig = new TruGridValidationDialogConfig(entityToValidate, propertyConfig, false);\r\n validationDialogConfig.errorMsg = validationErrorsMessagesForProperty;\r\n validationDialogConfig.mergeData = this.getMergeData(propertyConfig, entityToValidate);\r\n this.addValidationDialog(validationDialogConfig, targetElement);\r\n }\r\n } else {\r\n if (this.validationDialog)\r\n this.validationDialog.destroy();\r\n }\r\n }\r\n\r\n onCellMouseOut(e: any) {\r\n if (this.validationDialog)\r\n this.validationDialog.destroy();\r\n }\r\n\r\n onRightClick(event: MouseEvent) {\r\n event.preventDefault();\r\n }\r\n\r\n onSearch = (setupQuery: any) => {\r\n this.firstSearchRan = true;\r\n this.api?.hideOverlay();\r\n this.api?.showLoadingOverlay();\r\n\r\n let searchLocally = this.entity && this.entity['Ref'] < 0 || this.loadedEntities.some((ref) => {\r\n return ref === this.entity['Ref']\r\n });\r\n let joins = [];\r\n if (searchLocally) {\r\n joins.push(this.dataContext.entityAccess().searchCacheOnly(\r\n this.config.resultConfig.entityType,\r\n setupQuery,\r\n this.config.resultConfig.expands));\r\n\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany && this.config.tableConfig.canAdd)\r\n joins.push(this.dataContext.entityAccess().searchQueryChoices(\r\n this.config.resultConfig.entityManyToManyType,\r\n this.config.resultConfig.manyToManySetupQuery(this.entity), false))\r\n } else {\r\n joins.push(this.dataContext.entityAccess().search(\r\n this.config.resultConfig.entityType,\r\n setupQuery,\r\n this.config.resultConfig.expands, false));\r\n\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany && this.config.tableConfig.canAdd)\r\n joins.push(this.dataContext.entityAccess().searchQueryChoices(\r\n this.config.resultConfig.entityManyToManyType,\r\n this.config.resultConfig.manyToManySetupQuery(this.entity), true))\r\n }\r\n\r\n this.latestSetupQuery = setupQuery;\r\n\r\n forkJoin(joins).subscribe({\r\n next: results => {\r\n this.setNoRowsTemplate();\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany)\r\n this.loadManyToManyGridData(results[0], results[1], true);\r\n else\r\n this.loadGridData(results[0]);\r\n },\r\n complete: () => {\r\n if (this.gridType !== TruDataGridTypes.Search)\r\n this.loadedEntities.push(this.entity[this.entity.constructor.name + 'Ref']);\r\n this.api.hideOverlay();\r\n if (this.rowData === null || !this.rowData.length) {\r\n this.api.showNoRowsOverlay();\r\n }\r\n }\r\n });\r\n }\r\n\r\n onUnassociatedChoiceChanged = (option: Array<ITruToolbarDropdownOption> | null) => {}\r\n onSelectedReportChanged = (event: any) => {}\r\n\r\n canAdd = (): boolean => {\r\n if (!this.config.tableConfig.canAdd) return false;\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany)\r\n return this.selectedUnassociatedChoice !== undefined;\r\n return true;\r\n }\r\n\r\n onAdd = (): void => {\r\n this.addEntity(this.dataContext.entityAccess().add(this.config.resultConfig.entityType));\r\n }\r\n\r\n onDelete = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n let entities = selectedRows.map(function (row: any) { return row.$entity; });\r\n let confirmMsg = this.appEnvironment.formatDeleteConfirmationMessage(this.config.tableName, this.config.tablePluralLabel, selectedRows.length);\r\n let onSuccess = () => {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n this.dataContext.delete(entities, confirmMsg, onSuccess);\r\n } else {\r\n this.uiNotification.warning(this.appEnvironment.msgNoRecordsSelected);\r\n }\r\n }\r\n\r\n onKeep = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n this.rowData = this.api.getSelectedRows();\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n onRemove = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n setTimeout(() => {\r\n let filteredRows: Array<any> = [];\r\n this.api.forEachNodeAfterFilter(node => {\r\n filteredRows.push(node.data);\r\n });\r\n if (filteredRows.length)\r\n this.rowData = filteredRows;\r\n else\r\n this.rowData = [];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n onExport = (): void => {\r\n this.exportData();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscribeTo();\r\n this.label = this.config.resultConfig.label; \r\n this.columnDefs = this.config.resultConfig.columnDefs;\r\n this.gridType = this.config.resultConfig.gridType;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //setTimeout to prevent: ERROR Error: NG0100: ExpressionChangedAfterItHasBeenCheckedError. \r\n setTimeout(() => {\r\n this.parentToolbarTemplate = this.searchResultViewManager.searchViewToolbarTemplate;\r\n this.config.viewMenuConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.viewMenuConfig.allMenus().subscribe((menu: any) => { this.viewMenuItems = menu; });\r\n this.customToolbarComponents = this.config.customToolbarComponents;\r\n\r\n this.renderCustomToolbarComponents();\r\n this.runSearch();\r\n }, 0);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.runSearch();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","<div [ngClass]=\"{'tru-data-grid-label-offset': label}\">\r\n <span class=\"tru-data-grid-label\" *ngIf=\"label\">{{label}}</span>\r\n <div class=\"tru-data-grid-toolbar-container\">\r\n <tru-toolbar>\r\n <tru-toolbar-dropdown [options]=\"unassociatedChoices\"\r\n [(selectedOption)]=\"selectedUnassociatedChoice\"\r\n [disabled]=\"!this.config.tableConfig.canAdd\"\r\n (selectionChange)=\"onUnassociatedChoiceChanged($event)\"\r\n *ngIf=\"gridType == TruDataGridTypes.DetailManyToMany\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-add-icon'\" [tooltip]=\"'Add - [Ctrl + I]'\" [disabled]=\"!canAdd()\" (onClick)=\"onAdd()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-delete-icon'\" [tooltip]=\"'Delete - [Ctrl + D]'\" (click)=\"onDelete()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-keep-icon'\" [tooltip]=\"'Keep selected records - [Ctrl + K]'\" (click)=\"onKeep()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-remove-icon'\" [tooltip]=\"'Remove selected records - [Ctrl + R]'\" (click)=\"onRemove()\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"parentToolbarTemplate\"></tru-toolbar-separator>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"viewMenuItems.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"viewMenuItems.length\">\r\n <tru-toolbar-menu *ngFor=\"let viewMenuItem of viewMenuItems\" [config]=\"viewMenuItem\"></tru-toolbar-menu>\r\n </div>\r\n <ng-container #customToolbarContainer></ng-container>\r\n </tru-toolbar>\r\n </div>\r\n <div #dataGridContainer class=\"tru-data-grid-container\">\r\n <ag-grid-angular class=\"ag-theme-alpine\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"rowData\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [headerHeight]=\"25\"\r\n [rowHeight]=\"22\"\r\n [rowBuffer]=\"50\"\r\n [enterNavigatesVertically]=\"true\"\r\n [enterNavigatesVerticallyAfterEdit]=\"true\"\r\n [suppressRowHoverHighlight]=\"true\"\r\n [suppressRowClickSelection]=\"true\"\r\n [stopEditingWhenCellsLoseFocus]=\"false\"\r\n (cellClicked)=\"onCellClicked($event)\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (cellKeyDown)=\"onCellKeyDown($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\"\r\n (cellMouseOver)=\"onCellMouseOver($event)\"\r\n (cellMouseOut)=\"onCellMouseOut($event)\"\r\n (contextmenu)=\"onRightClick($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n <div class=\"tru-data-grid-statusbar-container\">\r\n <div class=\"tru-data-grid-statusbar-values-container\">\r\n <p class=\"tru-data-grid-statusbar-values-text\">{{rowCount}}</p>\r\n <p class=\"tru-data-grid-statusbar-values-text\">{{selectedRowCount}}</p>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruUser } from '../../../services/tru-user';\r\nimport { TruAuth } from '../../login/services/tru-auth';\r\nimport { TruEntityAccessor } from '../../../services/tru-entity-accessor';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TruAppSettingsDialog } from '../../app-settings-dialog/tru-app-settings-dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { MaterialModule } from '../../../material.module';\r\n\r\n\r\n@Component({\r\n selector: 'tru-toolbar-app-customization',\r\n templateUrl: './tru-toolbar-app-customization.html',\r\n styleUrls: ['./tru-toolbar-app-customization.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenu,\r\n MatButton,\r\n MatIcon,\r\n MatDivider,\r\n MaterialModule\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarAppCustomization {\r\n private _dialog: MatDialog;\r\n\r\n @ViewChild('file') fileInputElement!: ElementRef;\r\n\r\n initial: string | null | undefined = null;\r\n name: string | null | undefined = null;\r\n email: string | null | undefined = null;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private entityAccessor: TruEntityAccessor,\r\n private user: TruUser,\r\n private auth: TruAuth,\r\n private uiNotification: TruUiNotification) {\r\n this._dialog = this.dialog;\r\n this.initial = user?.firstName ? user?.firstName.slice(0, 1).toUpperCase() : user?.username?.slice(0, 1).toUpperCase()\r\n this.name = user?.firstName && user?.lastName ? user?.firstName + ' ' + user?.lastName : user?.username;\r\n this.email = user?.email;\r\n }\r\n\r\n importFiles = (files: Array<File>) => {\r\n this.entityAccessor.import(files);\r\n }\r\n\r\n onImportClicked = () => {\r\n this.fileInputElement.nativeElement.click();\r\n }\r\n\r\n onSettingsClicked = () => {\r\n new Promise<boolean>((resolve, reject) => {\r\n let dialogRef = this._dialog.open(TruAppSettingsDialog, {\r\n disableClose: true,\r\n minHeight: '600px',\r\n minWidth: '800px'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\r\n\r\n onAboutClicked = () => {\r\n this.uiNotification.about();\r\n }\r\n}\r\n","<div class=\"tru-toolbar-app-customization\">\r\n <button mat-mini-fab class=\"tru-toolbar-app-customization-button\" [matMenuTriggerFor]=\"appCustomizationMenu\">\r\n <mat-icon \r\n [svgIcon]=\"'more-icon'\"\r\n title=\"Customize App\"\r\n class=\"std-search-control-operator-icon\">\r\n </mat-icon>\r\n </button>\r\n</div>\r\n<mat-menu #appCustomizationMenu=\"matMenu\">\r\n <input type=\"file\" #file (change)=\"importFiles($any($event.target).files)\" style=\"display:none\" accept=\".csv,.xlsx\" multiple>\r\n <div class=\"tru-toolbar-app-customization-menu-container\">\r\n <button mat-menu-item\r\n (click)=\"onImportClicked()\"\r\n class=\"tru-toolbar-app-customization-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'import-icon'\"\r\n title=\"Import\"\r\n class=\"tru-toolbar-app-customization-import-icon\">\r\n </mat-icon>\r\n <span>Import</span>\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onSettingsClicked()\"\r\n class=\"tru-toolbar-app-customization-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\"\r\n class=\"tru-toolbar-app-customization-settings-icon\">\r\n </mat-icon>\r\n <span>Settings</span>\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item\r\n (click)=\"onAboutClicked()\"\r\n class=\"tru-toolbar-app-customization-menu-about-button\">\r\n <mat-icon [svgIcon]=\"'about-icon'\"\r\n title=\"About\"\r\n class=\"tru-toolbar-app-customization-about-icon\">\r\n </mat-icon>\r\n <span>About</span>\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { TruContextFilters } from '../../../services/tru-context-filters';\r\nimport { TruToolbarMenu } from '../../toolbar/menu/tru-toolbar-menu';\r\nimport { TruToolbar } from '../../toolbar/tru-toolbar';\r\nimport { TruToolbarDropdown } from '../../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarSeparator } from '../../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbarContextFilter } from '../../toolbar/context-filter/tru-toolbar-context-filter';\r\nimport { TruToolbarUserProfile } from '../../toolbar/user-profile/tru-toolbar-user-profile';\r\nimport { TruToolbarAppCustomization } from '../../toolbar/app-customization/tru-toolbar-app-customization';\r\n\n@Component({\n selector: 'tru-desktop-menubar',\n templateUrl: './tru-desktop-menubar.html',\n styleUrls: ['./tru-desktop-menubar.css'],\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenu,\r\n MatButton,\r\n MatIcon,\r\n TruToolbar,\r\n TruToolbarMenu,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarContextFilter,\r\n TruToolbarUserProfile,\r\n TruToolbarAppCustomization\r\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TruDesktopMenubar implements OnInit {\n @Input() desktopCtrl: any;\n\n constructor(private contextFilters: TruContextFilters) { }\n\n options: any | null = null;\n configs: any | null = null;\n filters: Array<any> = [];\n\n openWindow = (event: any, windowOverrides: any) => {\n this.desktopCtrl.openWindow(windowOverrides);\n };\n\n ngOnInit(): void {\n this.options = this.desktopCtrl.getOptions();\n this.configs = this.options.menubarConfig;\n this.filters = this.contextFilters.filters;\n }\n}\n","<div class=\"desktop-main-menu\">\r\n <tru-toolbar>\r\n <tru-toolbar-menu *ngFor=\"let config of configs\" [config]=\"config\"></tru-toolbar-menu>\r\n <tru-toolbar-separator *ngIf=\"filters.length\"></tru-toolbar-separator>\r\n <tru-toolbar-context-filter></tru-toolbar-context-filter>\r\n </tru-toolbar>\r\n <tru-toolbar>\r\n <tru-toolbar-app-customization></tru-toolbar-app-customization>\r\n <tru-toolbar-user-profile></tru-toolbar-user-profile>\r\n </tru-toolbar>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { TruContextFilter } from '../../../classes/tru-context-filter';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\r\n\r\n@Injectable()\r\nexport class TruDesktopService {\r\n /**\r\n * @tru.doc function\r\n * @name DesktopService.createDesktop\r\n * @module tru.desktop\r\n *\r\n * @description\r\n * Creates a new desktop instance.\r\n *\r\n * @returns {object} Desktop\r\n */\r\n public createDesktop = function () {\r\n var desktop = new Desktop();\r\n return desktop;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @tru.desktop.doc class\r\n * @name DesktopService.Desktop\r\n * @module tru.desktop\r\n *\r\n * @description Desktop defines a logical desktop. Any non-dom properties and elements needed by the desktop should\r\n * be defined in this class\r\n *\r\n */\r\nexport class Desktop {\r\n options = new DesktopOptions();\r\n windowConfig = new WindowConfig();\r\n viewConfig = new TruDesktopViewConfig();\r\n};\r\n\r\n/**\r\n * @tru.desktop.doc class\r\n * @name DesktopService.DesktopOptions\r\n * @module tru.desktop\r\n *\r\n * @description Default DesktopOptions class. DesktopOptions are defined by the application developer and overlaid\r\n * over this object.\r\n *\r\n */\r\nexport class DesktopOptions {\r\n allowDirtyClose = false;\r\n allowInvalidClose = false;\r\n cancelEditingOnNavigation = false;\r\n canCloseFn = undefined;\r\n canNavigateFn = undefined;\r\n displayViewportDimensions = false;\r\n enableAnimation = true;\r\n enableWindowCascading = true;\r\n logoUrl = undefined;\r\n menubarHeight = 32;\r\n menubarConfig = undefined;\r\n showLaunchMenu = false;\r\n};\r\n\r\n\r\n/**\r\n * @tru.desktop.doc class\r\n * @name DesktopService.WindowConfig\r\n * @module tru.desktop\r\n *\r\n * @description\r\n * Default configuration object for a window. windowConfig properties can be defined by the application developer and overlaid\r\n * over this object.\r\n *\r\n */\r\nexport class WindowConfig {\r\n tableName: string = '';\r\n tablePluralName: string = '';\r\n tablePluralLabel: string = '';\r\n\r\n active = true;\r\n bottom = 'auto';\r\n globals = undefined;\r\n height = '400px';\r\n isDirty = false;\r\n isInvalid = false;\r\n left = 0;\r\n maximized = undefined;\r\n minHeight = '200px';\r\n minimized = false;\r\n minWidth = '200px';\r\n outOfBounds = false;\r\n savedPosition = {};\r\n right = 'auto';\r\n scope = undefined;\r\n title = '';\r\n top = 0;\r\n width = '400px';\r\n views = Array<TruDesktopViewConfig>();\r\n zIndex = -1;\r\n isReadOnly = false;\r\n unsubscribes: Array<any> = [];\r\n wasReadOnly = false;\r\n contextFilters: Array<TruContextFilter> = [];\r\n parentDataContext: TruDataContext | null = null;\r\n parentView: any | null = null;\r\n\r\n closed = () => { }\r\n\r\n destroy = () => {\r\n while (this.unsubscribes.length) this?.unsubscribes?.shift()?.call();\r\n }\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\n@Component({\n selector: 'tru-desktop-statusbar',\n templateUrl: './tru-desktop-statusbar.html',\n styleUrls: ['./tru-desktop-statusbar.css'],\n imports: [CommonModule, FormsModule]\n})\nexport class TruDesktopStatusbar implements OnInit {\n @Input() desktopCtrl: any;\n\n label: string;\n\n constructor() {\n this.label = '';//this.contextFilter.label();\n }\n\n ngOnInit(): void {\n\n }\n}\n","<div class=\"desktop-window-statusbar\" data-ng-class=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-statusbar-container\">\r\n <div class=\"desktop-window-statusbar-context-filter-container\">\r\n <p class=\"desktop-window-statusbar-context-filter-container-text\">{{label}}</p>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TruToolbarButton } from '../../toolbar/button/tru-toolbar-button';\r\n\r\n@Component({\r\n selector: 'tru-desktop-taskbar',\r\n templateUrl: './tru-desktop-taskbar.html',\r\n styleUrls: ['./tru-desktop-taskbar.css'],\r\n imports: [CommonModule, FormsModule, TruToolbarButton, MatIcon]\r\n})\r\nexport class TruDesktopTaskbar implements OnInit {\r\n\r\n @Input() windows: any;\r\n @Input() desktopCtrl: any;\r\n\r\n options = null;\r\n desktopShown = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.options = this.desktopCtrl.getOptions();\r\n }\r\n\r\n updateWindowState = (wdw: any) => {\r\n if (wdw.active)\r\n this.desktopCtrl.minimize(wdw);\r\n else if (!wdw.outOfBounds)\r\n this.desktopCtrl.restore(wdw);\r\n else if (wdw.outOfBounds)\r\n this.desktopCtrl.recover(wdw);\r\n };\r\n\r\n hideShowAll = () => {\r\n this.desktopShown = this.desktopCtrl.hideShowAll();\r\n };\r\n\r\n close = (e: any, wdw: any) => {\r\n this.desktopCtrl.closeWindow(wdw);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n}\r\n","<div class=\"desktop-taskbar-container\">\r\n <div class=\"desktop-taskbar-list\">\r\n <ul>\r\n <li class=\"am-fade-and-scale desktop-text\"\r\n *ngFor=\"let window of windows\"\r\n [ngClass]=\"{'is-modal': window.isModal}\"\r\n (click)=\"updateWindowState(window)\"\r\n (keydown.enter)=\"updateWindowState(window)\">\r\n <div class=\"desktop-relative desktop-taskbar-list-item\" tabindex=\"0\" [ngClass]=\"{'desktop-active-taskbar-list-item': window.active, 'desktop-minimized-taskbar-list-item': window.minimized, 'desktop-taskbar-list-item-recover': window.outOfBounds}\">\r\n <div class=\"desktop-taskbar-list-item-title\">\r\n <span>{{window.title}}</span>\r\n </div>\r\n <mat-icon [svgIcon]=\"'tru-toolbar-close-icon'\" class=\"desktop-taskbar-list-item-close-icon\" [ngClass]=\"{'desktop-taskbar-list-item-close-minimized': window.minimized}\" (click)=\"close($event, window)\"></mat-icon>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"desktop-taskbar-hide\">\r\n <div class=\"desktop-taskbar-hide-button\" (click)=\"hideShowAll()\">\r\n\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ComponentFactoryResolver, Injector, Input, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruComponentLookup } from '../../../services/tru-component-lookup';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruDesktopViewEventNotifier } from '../services/tru-desktop-view-event-notifier';\r\n\n@Component({\n selector: 'tru-desktop-view',\n templateUrl: './tru-desktop-view.html',\n styleUrls: ['./tru-desktop-view.css'],\n imports: [CommonModule, FormsModule],\n providers: [TruDesktopViewEventNotifier]\n})\nexport class TruDesktopView implements OnInit {\n @Input() view!: TruDesktopViewConfig;\n @Input() active!: boolean;\n\n constructor(\n private injector: Injector,\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private componentLookup: TruComponentLookup) {}\n\n ngOnInit(): void {\n var component = this.componentLookup.get(this.view.componentName);\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n const containerRef = this.viewContainerRef.createComponent<any>(componentFactory, 0, this.injector);\n containerRef.instance.view = this.view;\n }\n\n ngOnChanges(changes: SimpleChanges): void {}\n}\n","<div></div>\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityType, breeze } from 'breeze-client';\r\nimport { TruGlobalDataContext } from './tru-global-data-context';\r\nimport { TruUser } from './tru-user';\r\nimport { TruDataContext } from './tru-data-context';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\nimport _ from 'underscore';\r\nimport { TruTextManager } from './tru-text-manager';\r\nimport { TruDesktopManager } from '../components/desktop/services/tru-desktop-manager';\r\nimport { TruUiNotification } from './tru-ui-notification';\r\nimport { TruDesktopViewConfig } from '../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruWindowEventHandler } from '../components/desktop/services/tru-window-event-handler';\r\n\r\n@Injectable()\r\nexport class TruActionInvoke {\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private textManager: TruTextManager,\r\n private desktopManager: TruDesktopManager,\r\n private windowEventHandler: TruWindowEventHandler,\r\n private uiNotification: TruUiNotification,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private globalDataContext: TruGlobalDataContext,\r\n private user: TruUser) { }\r\n\r\n /**\r\n * Creates an array of menu item config objects.\r\n * @param {object[]} menuItemConfigs - Menu item config configs(!)\r\n * @returns {object[]} - Configs.\r\n */\r\n createMenuConfigs = (menuItemConfigs: any) => {\r\n var executableConfigs = _.filter(menuItemConfigs, function (c) {\r\n var hasAccess = typeof c.item.hasAccess != 'function' ? true : c.item.hasAccess();\r\n return c.canExecute && hasAccess;\r\n });\r\n return _.pluck(executableConfigs, 'item');\r\n }\r\n\r\n /**\r\n * Post to a URL that results in a file download.\r\n * @param {string} url \r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n */\r\n executeHttpPostActionForDownload = (url: any, actionRefs: any) => {\r\n var data = this.textManager.formatAsUrlParameters({ refs: actionRefs });\r\n this.dataContext.entityAccess().downloadFromUrl(url, data);\r\n }\r\n\r\n /**\r\n * Execute an action that downloads a file.\r\n * @param {string} actionName \r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n */\r\n executeActionForDownload = (actionName: any, actionRefs: any) => {\r\n var data = this.textManager.formatAsUrlParameters({ refs: actionRefs });\r\n this.dataContext.entityAccess().downloadFromService('RequestAction' + actionName, data);\r\n }\r\n\r\n /**\r\n * Execute an action and show the resulting message.\r\n * @param {string} actionName - Name of an action.\r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n */\r\n executeActionForMessage = (actionName: any, actionRefs: string) => {\r\n this.dataContext.entityAccess().requestAction(actionName, actionRefs).subscribe({\r\n next: (results) => {\r\n this.uiNotification.info(results[0].Message);\r\n }, error: error => {\r\n this.uiNotification.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Queue the execution of an action.\r\n * @param {string} actionName - Name of an action.\r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n * @param {string} actionLabel - Display name of the action.\r\n */\r\n queueAction = (actionName: string, actionRefs: string, actionLabel: string) => {\r\n this.dataContext.entityAccess().requestAction(actionName, actionRefs).subscribe({\r\n next: (results) => {\r\n this.uiNotification.info(actionLabel + ' queued');\r\n }, error: error => {\r\n this.uiNotification.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Open a new window with a query function to an action that accepts a list of\r\n * record refs.\r\n * @param {string} actionName - Name of an action.\r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n * @param {string} componentName - Name of the directive for the window view.\r\n * @param {object} data - Passed to view.\r\n */\r\n openWindowForQueryResultFromAction = (actionName: string, actionRefs: string, componentName: string, data: any) => {\r\n let itemsQuery = (dataContext: TruDataContext) => {\r\n this.dataContext.entityAccess().requestAction(actionName, actionRefs).subscribe({\r\n next: (results) => {\r\n return results;\r\n }, error: error => {\r\n this.uiNotification.error(error.message);\r\n }\r\n });\r\n }\r\n //this.desktopManager.addWindowForQueryResult(componentName, itemsQuery, data);\r\n }\r\n\r\n /**\r\n * Open a new view with a URL and a list of record refs.\r\n * @param {string} url \r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n * @param {string} actionLabel - Action label.\r\n * @param {string} windowCtrl - window manager.\r\n */\r\n openViewForReportFromUrl = (url: string, actionRefs: string, actionLabel: string, windowCtrl: string) => {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.title = actionLabel;\r\n windowAddViewEventArgs.actionRefs = actionRefs;\r\n windowAddViewEventArgs.url = url;\r\n windowAddViewEventArgs.componentName = 'TruReportView';\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n }\r\n\r\n processCustomReport = (reportRef: string, actionRefs: string, mimeRef: string) => {\r\n this.dataContext.entityAccess().downloadFromService('/api/report/execute', {\r\n reportRef: reportRef,\r\n refs: actionRefs,\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { breeze } from 'breeze-client';\r\nimport { TruUser } from './tru-user';\r\nimport { TruDataContext } from './tru-data-context';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\nimport { Observable, forkJoin } from 'rxjs';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruActionInvoke } from './tru-action-invoke';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruReportManager {\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private appEnvironment: TruAppEnvironment,\r\n private actionInvoke: TruActionInvoke,\r\n private user: TruUser) { }\r\n\r\n private setupMenuImpl(report: any, menu: any, getActionRefs: any, enabled: () => {}) {\r\n var reportRef = report.Ref;\r\n var mimeRef = report.ReportMimeTypeStdMimeTypeRef;\r\n menu[0].choices.push(\r\n {\r\n hasAccess: function () {\r\n return true;\r\n },\r\n label: report.ReportName,\r\n enabled: function () {\r\n return enabled();\r\n },\r\n reportRef: reportRef,\r\n mimeRef: mimeRef,\r\n fire: () => {\r\n this.actionInvoke.processCustomReport(\r\n reportRef,\r\n getActionRefs(),\r\n mimeRef\r\n );\r\n }\r\n });\r\n }\r\n\r\n get(url: string, method: string, callback: (o: any) => any, params = null) {\r\n let obj = new XMLHttpRequest();\r\n try {\r\n obj = new XMLHttpRequest();\r\n } catch (e) {\r\n alert(\"Your browser does not support Ajax.\");\r\n }\r\n obj.onreadystatechange = function () {\r\n if (obj.readyState == 4) {\r\n callback(obj);\r\n }\r\n }\r\n obj.open(method, url, true);\r\n obj.send(params);\r\n return obj;\r\n }\r\n\r\n private setupMenu(report: any, menu: any, getActionRefs: any, enabled: () => {}): Observable<any> {\r\n return new Observable(obs => {\r\n this.dataContext.entityAccess().search(this.modelTypeLookup.getType('TruDbCloudFile'), (query: any) => {\r\n var predicate = new breeze.Predicate('TruDbCloudFileRef', breeze.FilterQueryOp.Equals, report.ReportTruDbCloudFileRef)\r\n return query.where(predicate);\r\n }, null, false).subscribe((cloudFiles: any) => {\r\n if (cloudFiles.length) {\r\n //there is a cloud file associated with this report\r\n if (cloudFiles[0].Filename.endsWith(\".mrt\")) {\r\n //this is a stimulsoft report, check if license file exists\r\n\r\n this.dataContext.entityAccess().search(this.modelTypeLookup.getType('TruDbConfig'), (query: any) => {\r\n var predicate = new breeze.Predicate('Key', breeze.FilterQueryOp.Equals, 'StimulsoftLicensePath');\r\n return query.where(predicate);\r\n }, null, false).subscribe((config: any) => {\r\n if (!config.length || !config[0].Value) {\r\n //do nothing, no menu option will be pushed into the dom since\r\n //we couldn't find the required license path info in the config\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n else {\r\n //var path = config[0].Value.replace(\"~\", \"\");\r\n //this.get(path, 'get', (data: any) => {\r\n // if (data.length) {\r\n\r\n // }\r\n //});\r\n this.setupMenuImpl(report, menu, getActionRefs, enabled);\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n });\r\n }\r\n else {\r\n //there is a cloud file associated with this report, but it isn't an mrt report push menu option\r\n //since this a different type of report (word, excel)\r\n this.setupMenuImpl(report, menu, getActionRefs, enabled);\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n }\r\n else {\r\n //no cloud file, so no need to check for license, push menu option\r\n //since this could be a non mrt report (word, excel)\r\n this.setupMenuImpl(report, menu, getActionRefs, enabled);\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n });\r\n });\r\n }\r\n\r\n queryReports = (tableName: string, menu: any, getActionRefs: () => string, enabled: () => {}): Observable<any> => {\r\n return new Observable(obs => {\r\n this.appEnvironment.globalDataContext?.entityAccess().searchCacheOnly(this.modelTypeLookup.getType('TruDbReport'), (query: any) => {\r\n var predicate = new breeze.Predicate('OwnerTruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef)\r\n .or('OwnerTruDbUserRef', breeze.FilterQueryOp.Equals, null)\r\n .or('Public', breeze.FilterQueryOp.Equals, true)\r\n .and('TableName', breeze.FilterQueryOp.Equals, tableName);\r\n return query.where(predicate);\r\n }).subscribe((reports) => {\r\n if (reports.length) {\r\n let obsList = [];\r\n for (var i = 0; i < reports.length; i++) {\r\n obsList.push(this.setupMenu(reports[i], menu, getActionRefs, enabled));\r\n }\r\n forkJoin(obsList).subscribe(response => {\r\n obs.next(menu);\r\n });\r\n }\r\n else {\r\n obs.next([]);\r\n }\r\n });\r\n });\r\n };\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Directive, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\n@Directive({\n selector: '[tru-desktop-resizable]'\n})\nexport class TruDesktopResizable implements OnInit {\n @Input() window: any;\n @Input() maximized: any;\n @Input() direction: any;\n\n constructor(private elementRef: ElementRef) { }\n\n currentHeight: any;\n currentWidth: any;\n currentTop: any;\n currentLeft: any;\n currentRight: any;\n currentBottom: any;\n currentMinHeight: any;\n currentMinWidth: any;\n mouseOffsetX = 0;\n mouseOffsetY = 0;\n lastMouseX = 0;\n lastMouseY = 0;\n originalHeight = 0;\n originalWidth = 0;\n viewport: any;\n\n mouseDown = (event: any) => {\n if (this.maximized) return;\n event.preventDefault();\n this.mouseOffsetY = event.clientY;\n this.mouseOffsetX = event.clientX;\n this.originalHeight = parseInt(this.window.height, 10);\n this.originalWidth = parseInt(this.window.width, 10);\n this.viewport = this.getViewport();\n document.addEventListener('mousemove', this.mouseMove);\n document.addEventListener('mouseup', this.mouseUp);\n };\n\n mouseMove = (event: any) => {\n var mouseY = event.pageY - this.mouseOffsetY;\n var mouseX = event.pageX - this.mouseOffsetX;\n var diffY = mouseY - this.lastMouseY;\n var diffX = mouseX - this.lastMouseX;\n this.lastMouseY = mouseY;\n this.lastMouseX = mouseX;\n\n this.currentHeight = parseInt(this.window.height, 10);\n this.currentWidth = parseInt(this.window.width, 10);\n this.currentTop = parseInt(this.window.top, 10);\n this.currentLeft = parseInt(this.window.left, 10);\n this.currentRight = parseInt(this.window.right, 10);\n this.currentBottom = parseInt(this.window.bottom, 10);\n this.currentMinHeight = parseInt(this.window.minHeight, 10);\n this.currentMinWidth = parseInt(this.window.minWidth, 10);\n\n if (this.direction.indexOf(\"w\") > -1) {\n if (this.currentWidth - diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentWidth - this.currentMinWidth));\n\n //Contain resizing to the west\n if (this.currentLeft + diffX < 0)\n this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = 0 - this.currentLeft));\n\n this.window.left = (this.currentLeft + diffX) + 'px';\n this.window.width = (this.currentWidth - diffX) + 'px';\n }\n if (this.direction.indexOf(\"n\") > -1) {\n if (this.currentHeight - diffY < this.currentMinHeight) this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = this.currentHeight - this.currentMinHeight));\n\n //Contain resizing to the north\n if (this.currentTop + diffY < 0) this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = 0 - this.currentTop));\n\n this.window.top = (this.currentTop + diffY) + 'px';\n this.window.height = (this.currentHeight - diffY) + 'px';\n }\n if (this.direction.indexOf(\"e\") > -1) {\n if (this.currentWidth + diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentMinWidth - this.currentWidth));\n\n //Contain resizing to the east\n if ((this.currentLeft + this.currentWidth) + diffX > this.viewport.offsetWidth)\n this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.viewport.offsetWidth - (this.currentLeft + this.currentWidth)));\n\n this.window.width = (this.currentWidth + diffX) + 'px';\n }\n if (this.direction.indexOf(\"s\") > -1) {\n if (this.currentHeight + diffY < this.currentMinHeight) this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = this.currentMinHeight - this.currentHeight));\n\n //Contain resizing to the south\n if ((this.currentTop + this.currentHeight) + diffY > this.viewport.offsetHeight)\n this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = this.viewport.offsetHeight - (this.currentTop + this.currentHeight)));\n\n this.window.height = (this.currentHeight + diffY) + 'px';\n }\n }\n\n mouseUp = (event: any) => {\n this.mouseOffsetX = 0;\n this.mouseOffsetY = 0;\n this.lastMouseX = 0;\n this.lastMouseY = 0;\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n };\n\n getViewport = function () {\n return document.querySelectorAll('.desktop-viewport-container')[0];\n };\n\n ngOnInit(): void {\n this.elementRef.nativeElement.addEventListener('mousedown', this.mouseDown);\n }\n\n ngOnDestroy() {\n this.elementRef.nativeElement.removeEventListener('mousedown', this.mouseDown);\n\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n }\n}\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { TruWindowEventHandler } from '../../services/tru-window-event-handler';\r\nimport { OverlayContainer } from '@angular/cdk/overlay';\r\n\r\n@Directive({\r\n selector: '[truDesktopWindowStateMonitor]'\r\n})\r\nexport class TruDesktopWindowStateMonitor {\r\n @Input('truDesktopWindowStateMonitor') active: boolean = true;\r\n\r\n private tabListener!: () => void;\r\n private focusListener!: () => void;\r\n private focusableElements: Array<HTMLElement> = [];\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private windowEventHandler: TruWindowEventHandler,\r\n private overlayContainer: OverlayContainer) { }\r\n\r\n private setWindowState = () => {\r\n if (this.active)\r\n this.el.nativeElement.classList.remove('desktop-window-disabled');\r\n else\r\n this.el.nativeElement.classList.add('desktop-window-disabled');\r\n }\r\n\r\n private getFocusableChildElements = () => {\r\n return this.el.nativeElement.querySelectorAll('a[href],input,select,textarea,button,mat-select,mat-tab,.mdc-tab,.ag-header-cell,.ag-cell,[tabindex]:not([tabindex=\"-1\"]');\r\n }\r\n\r\n private focusAppropriateElement = (event: KeyboardEvent) => {\r\n let target = event.target;\r\n this.focusableElements = this.getFocusableChildElements();\r\n let firstFocusableElement = this.focusableElements[0];\r\n let lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\r\n if (target !== null && !this.el.nativeElement.contains(target)) {\r\n event.preventDefault();\r\n firstFocusableElement.focus();\r\n } else {\r\n if (event.key === 'Tab') {\r\n if (event.shiftKey) {\r\n if (document.activeElement === firstFocusableElement) {\r\n event.preventDefault();\r\n lastFocusableElement.focus();\r\n }\r\n } else {\r\n if (document.activeElement === lastFocusableElement) {\r\n event.preventDefault();\r\n firstFocusableElement.focus();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Tab') {\r\n if (this.active) {\r\n this.focusAppropriateElement(event);\r\n } else {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n onFocusIn(event: FocusEvent) {\r\n if (this.active) {\r\n let overlayElement = this.overlayContainer.getContainerElement();\r\n if (overlayElement.childElementCount > 0)\r\n return; // Ignore focus events when overlays are present\r\n setTimeout(() => {\r\n let target = event.target;\r\n this.focusableElements = this.getFocusableChildElements();\r\n let firstFocusableElement = this.focusableElements[0];\r\n if (target !== null && !this.el.nativeElement.contains(target)) {\r\n firstFocusableElement.focus();\r\n }\r\n }, 0); // Allow focus to settle\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.setWindowState();\r\n if (this.active) {\r\n this.tabListener = this.renderer.listen('document', 'keydown', this.onKeydown.bind(this));\r\n this.focusListener = this.renderer.listen('window', 'focusin', this.onFocusIn.bind(this));\r\n } else {\r\n if (typeof this.tabListener === 'function')\r\n this.tabListener();\r\n if (typeof this.focusListener === 'function')\r\n this.focusListener();\r\n }\r\n this.windowEventHandler.activeStateChanged(this.active);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabListener();\r\n this.focusListener();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruContextFilters } from \"../../../services/tru-context-filters\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruDesktopViewConfig } from \"../classes/tru-desktop-view-config\";\r\nimport { TruWindowEventHandler } from \"./tru-window-event-handler\";\r\n\r\n@Injectable()\r\nexport class TruWindowManager {\r\n\r\n constructor(private windowEventHandler: TruWindowEventHandler) { }\r\n\r\n addCustomView = (componentName: string, entities: Array<TruEntityBase>, entityIndex: number) => {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = entityIndex;\r\n windowAddViewEventArgs.componentName = componentName;\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruActionInvoke } from '../../../services/tru-action-invoke';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\r\nimport { TruEntityAccessor } from '../../../services/tru-entity-accessor';\r\nimport { TruReportManager } from '../../../services/tru-report-manager';\r\nimport { TruTextManager } from '../../../services/tru-text-manager';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruUtil } from '../../../services/tru-util';\r\nimport { TruToolbarButton } from '../../toolbar/button/tru-toolbar-button';\r\nimport { TruToolbarSeparator } from '../../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbar } from '../../toolbar/tru-toolbar';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruDesktopResizable } from '../directives/resizable/tru-desktop-resizable';\r\nimport { TruDesktopWindowStateMonitor } from '../directives/window-state-monitor/tru-desktop-window-state-monitor';\r\nimport { WindowConfig } from '../services/tru-desktop-service';\r\nimport { TruDesktopViewEventNotifier } from '../services/tru-desktop-view-event-notifier';\r\nimport { TruWindowCloseEventArgs } from '../services/tru-window-close-event-args';\r\nimport { TruWindowEventHandler } from '../services/tru-window-event-handler';\r\nimport { TruWindowManager } from '../services/tru-window-manager';\r\nimport { TruDesktopStatusbar } from '../statusbar/tru-desktop-statusbar';\r\nimport { TruDesktopView } from '../view/tru-desktop-view';\r\nimport { HasChangesChangedEventArgs } from 'breeze-client';\r\n\n@Component({\n selector: 'tru-desktop-window',\n templateUrl: './tru-desktop-window.html',\n styleUrls: ['../tru-desktop.css', './tru-desktop-window.css'],\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButton,\r\n MatIcon,\r\n TruDesktopResizable,\r\n TruDesktopView,\r\n TruDesktopStatusbar,\r\n TruToolbar,\r\n TruToolbarButton,\r\n TruToolbarSeparator,\r\n TruDesktopWindowStateMonitor\r\n ],\n providers: [\n TruDataContext,\n TruEntityAccessor,\n TruReportManager,\n TruActionInvoke,\n TruDesktopViewEventNotifier,\n TruWindowEventHandler,\n TruWindowManager,\n WindowConfig]\n})\nexport class TruDesktopWindow implements OnInit, AfterViewInit {\n @Input() window: any;\n @Input() viewportCtrl: any;\n @Input() desktopCtrl: any;\n\n constructor(\n private dataContext: TruDataContext,\n private uiNotification: TruUiNotification,\n private textManager: TruTextManager,\n private windowEventHandler: TruWindowEventHandler,\n private elementRef: ElementRef,\n private util: TruUtil,\n private cd: ChangeDetectorRef) {\n }\n\n x = 0;\n y = 0;\n lastX = 0;\n lastY = 0;\n startX = 0;\n startY = 0;\n titleBar: HTMLElement | null = null;\n canCloseFn = undefined;\n canNavigateFn!: () => boolean;\n cancelEditingOnNavigation = false;\n viewportDimensions: any = undefined;\n showNavigation: boolean = true;\n hasChanges: boolean = false;\n\n private subs: Array<Subscription> = [];\n private onHasChangedToken: number = 0;\n\n mouseMove = (event: MouseEvent) => {\n\n this.viewportDimensions = this.viewportCtrl.getViewportDimensions();\n if (event.pageX <= 0 ||\n event.pageX >= this.viewportDimensions.width ||\n this.window.maximized) return;\n\n if (this.titleBar == null) return;\n\n //this.elementRef.nativeElement.setAttribute('style', 'opacity: 0.5;');\n this.x = event.screenX - this.startX;\n this.y = event.screenY - this.startY;\n\n //Top Containment\n this.y = this.y >= 0 ? this.y : 0;\n //Bottom Containment\n this.y = this.y <= this.viewportDimensions.height - this.titleBar.offsetHeight ? this.y : this.viewportDimensions.height - this.titleBar.offsetHeight;\n\n //Left Containment\n this.x = this.x >= -(this.titleBar.offsetWidth + this.titleBar.offsetLeft) ? this.x : -(this.titleBar.offsetWidth + this.titleBar.offsetLeft);\n //Right Containment\n this.x = this.x <= this.viewportDimensions.width - this.titleBar.offsetLeft ? this.x : this.viewportDimensions.width - this.titleBar.offsetLeft;\n\n this.window.top = this.y + 'px';\n this.window.left = this.x + 'px';\n };\n\n mouseUp = (event: MouseEvent) => {\n if (event.pageY <= this.desktopCtrl.options.viewportTop) {\n this.desktopCtrl.maximize(this.window);\n }\n if (event.pageX <= 0) {\n this.desktopCtrl.maximizeLeft(this.window);\n }\n this.viewportDimensions = this.viewportCtrl.getViewportDimensions();\n if (event.pageX >= this.viewportDimensions.width - 1) {\n this.desktopCtrl.maximizeRight(this.window);\n }\n\n //this.elementRef.nativeElement.setAttribute('style', 'opacity: 1.0;');\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.updateNavigationState\n * @module tru.desktop.window\n *\n * @description\n * Updates window navigation buttons based location of the active view in the views array.\n *\n */\n updateNavigationState = () => {\n if (this.window.views === undefined) return;\n var length = this.window.views.length;\n this.disablePrevious = !!(this.window.views[0].active || length === 1);\n this.disableNext = !!(this.window.views[length - 1].active || length === 1);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.isWindowInViewport\n * @module tru.desktop.window\n *\n * @description\n * Determines if the window is within the viewport boundaries.\n *\n */\n isWindowInViewport = () => {\n var windowTop = 0;\n var windowLeft = 0;\n if (!this.window.minimized) {\n windowTop = this.elementRef.nativeElement.offsetTop;\n windowLeft = this.elementRef.nativeElement.offsetLeft;\n } else {\n windowTop = parseInt(this.window.savedPosition.top, 10);\n windowLeft = parseInt(this.window.savedPosition.left, 10);\n }\n if ((windowTop + 10) >= this.viewportCtrl.getViewportDimensions().height ||\n (windowLeft + 60) >= this.viewportCtrl.getViewportDimensions().width) {\n this.window.outOfBounds = true;\n this.window.active = false;\n this.desktopCtrl.activateForemostWindow();\n } else {\n this.window.outOfBounds = false;\n }\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.getWindow\n * @module tru.desktop.window\n *\n * @description\n * Gets the window object.\n *\n * @returns {object} window object.\n */\n getWindow = () => {\n return this.window;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.setWindowTitle\n * @module tru.desktop.window\n *\n * @description\n * Sets the window title.\n *\n * @param {string} value to display in the window title bar.\n */\n setWindowTitle = (value: string) => {\n this.window.title = value;\n };\n\n getWindowTitle = () => {\n return this.window.title;\n };\n\n isActive = (): boolean => {\n return this.window.active;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.goToPreviousView\n * @module tru.desktop.window\n *\n * @description\n * Public method for navigating to the previous view.\n *\n */\n goToPreviousView = () => {\n this.previousView();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.viewIsEditing\n * @module tru.desktop.window\n *\n * @description\n * Checks whether view is editing.\n *\n * @returns {boolean}.\n */\n viewIsEditing = () => {\n var isEditing = false;\n this.window.views.forEach((view: any) => {\n if (view.isEditing === true) {\n isEditing = true;\n }\n }, null);\n return isEditing;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.canNavigate\n * @module tru.desktop.window\n *\n * @description\n * Checks whether navigation can occur..\n *\n * @returns {boolean}.\n */\n canNavigate = () => {\n var canNavigate = true;\n if (this.canNavigateFn !== null) {\n if (this.viewIsEditing()) {\n canNavigate = this!.canNavigateFn();\n }\n }\n return canNavigate;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.removeForwardViews\n * @module tru.desktop.window\n *\n * @description\n * Removes all view(s) forward of the active view.\n *\n */\n removeForwardViews = () => {\n var activeView = this.desktopCtrl.getActiveView(this.window);\n var activeViewIndex = this.window.views.indexOf(activeView);\n for (var i = this.window.views.length; i > activeViewIndex; i--) {\n this.window.views.splice(i, 1);\n }\n this.updateNavigationState();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.addView\n * @module tru.desktop.window\n *\n * @description\n * Removes all inactive view(s) following the active view and inserts a new view.\n *\n */\n addView = (viewConfig: any) => {\n this.removeForwardViews();\n var activeView = this.desktopCtrl.getActiveView(this.window);\n activeView.active = false;\n viewConfig.window = this;\n this.window.views.push(viewConfig);\n this.updateNavigationState();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.getGlobals\n * @module tru.desktop.window\n *\n * @description\n * returns the global values.\n *\n */\n getGlobals = () => {\n return this.window.globals;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.firstView\n * @module tru.desktop.window\n *\n * @description\n *\n */\n firstView = () => {\n if (!this.canNavigate() || this.disablePrevious) return;\n if (this.cancelEditingOnNavigation) this.desktopCtrl.getActiveView(this.window).isEditing = false;\n let activeView = this.desktopCtrl.getActiveView(this.window);\n activeView.active = false;\n this.window.views[0].active = true;\n this.updateNavigationState();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.firstView\n * @module tru.desktop.window\n *\n * @description\n *\n */\n lastView = () => {\n if (!this.canNavigate() || this.disableNext) return;\n if (this.cancelEditingOnNavigation) this.desktopCtrl.getActiveView(this.window).isEditing = false;\n let activeView = this.desktopCtrl.getActiveView(this.window);\n activeView.active = false;\n this.window.views[this.window.views.length - 1].active = true;\n this.updateNavigationState();\n };;\n\n resizeEventHandler = () => {\n this.isWindowInViewport();\n }\n\n /**\n * @tru.doc event\n * @module tru.desktop.window\n *\n * @description\n *\n */\n onWindowKeydown = (event: KeyboardEvent) => {\n if (!this.window.active || event.key === 'Control' || event.key === 'Shift') return;\n var keySequence = this.util.getKeySequence(event);\n if (keySequence === 'ctrl+s' || keySequence === 'meta+s') { //Save\n this.save();\n event.preventDefault();\n }\n if (keySequence === 'ctrl+shift+r' || keySequence === 'meta+shift+r') { //Restore\n this.revert();\n event.preventDefault();\n }\n if (keySequence === 'alt+left') { //Previous View\n this.previousView();\n event.preventDefault();\n }\n if (keySequence === 'alt+right') { //Next View\n this.nextView();\n event.preventDefault();\n }\n if (keySequence === 'alt+up') { //First View\n this.firstView();\n event.preventDefault();\n }\n if (keySequence === 'alt+down') { //Last View\n this.lastView();\n event.preventDefault();\n }\n var targetIsControl = this.util.targetIsControl(event.target as HTMLElement);\n if (!targetIsControl && event.ctrlKey || event.altKey)\n event.preventDefault();\n };\n\n /**\n * @tru.doc watch\n * @module tru.desktop.window\n *\n * @description\n * Monitors the window's minimized state\n *\n */\n //$scope.$watch('window.minimized',\n // function(value) {\n // if (value && !$scope.window.maximized) {\n // $scope.desktopCtrl.savePosition($scope.window);\n // }\n //}\n // );\n\n disablePrevious = true;\n disableNext = true;\n\n activate = () => {\n var activeWindow = this.desktopCtrl.getActiveWindow();\n if (activeWindow.isModal) return;\n if (this.window.outOfBounds) return;\n this.desktopCtrl.clearActive();\n this.window.active = true;\n this.window.zIndex = this.desktopCtrl.getNextMaxZIndex();\n };\n\n minimize = () => {\n this.desktopCtrl.minimize(this.window);\n };\n\n maximize = () => {\n if (this.window.maximized) {\n this.desktopCtrl.restoreSavedPosition(this.window);\n this.window.maximized = undefined;\n } else {\n this.desktopCtrl.savePosition(this.window);\n this.desktopCtrl.maximize(this.window);\n }\n };\n\n close = (windowCloseEventArgs: TruWindowCloseEventArgs | null = null) => {\n if (this.hasChanges && !this.window.isModal)\n this.uiNotification.confirm('Confirm Action', this.textManager.msgDirtyPreventsClose, false, true, '', 'Ok').then((confirm: boolean) => {});\n else\n this.desktopCtrl.closeWindow(this.window, windowCloseEventArgs);\n };\n\n windowTitleMouseDown = (event: MouseEvent) => {\n if (this.window.maximized) return;\n event.preventDefault();\n this.titleBar = event.srcElement as HTMLElement || event.target as HTMLElement;\n this.x = this.elementRef.nativeElement.children[0].offsetLeft;\n this.y = this.elementRef.nativeElement.children[0].offsetTop;\n this.startX = event.screenX - this.x;\n this.startY = event.screenY - this.y;\n\n this.desktopCtrl.savePosition(this.window);\n\n document.addEventListener('mousemove', this.mouseMove);\n document.addEventListener('mouseup', this.mouseUp);\n\n window.addEventListener('resize', this.resizeEventHandler);\n };\n\n previousView = () => {\n if (!this.canNavigate() || this.disablePrevious) return;\n var activeView = this.desktopCtrl.getActiveView(this.window);\n var activeViewIndex = this.window.views.indexOf(activeView);\n if (this.cancelEditingOnNavigation) activeView.isEditing = false;\n activeView.active = false;\n this.window.views[activeViewIndex - 1].active = true;\n this.updateNavigationState();\n };\n\n nextView = () => {\n if (!this.canNavigate() || this.disableNext) return;\n var activeView = this.desktopCtrl.getActiveView(this.window);\n var activeViewIndex = this.window.views.indexOf(activeView);\n if (this.cancelEditingOnNavigation) activeView.isEditing = false;\n activeView.active = false;\n this.window.views[activeViewIndex + 1].active = true;\n this.updateNavigationState();\n };\n\n save = () => {\n this.dataContext.save();\n };\n\n revert = () => {\n this.dataContext.revert();\n };\n\n ngOnInit(): void {\n this.canCloseFn = this.desktopCtrl.getOptions().canCloseFn;\n this.canNavigateFn = this.desktopCtrl.getOptions().canNavigateFn;\n this.cancelEditingOnNavigation = this.desktopCtrl.getOptions().cancelEditingOnNavigation;\n this.showNavigation = this.window.showNavigation ? true : false;\n this.updateNavigationState();\n\n this.subs.push(this.windowEventHandler.onAddView().subscribe((windiowAddViewEvent: TruDesktopViewConfig) => {\r\n this.addView(windiowAddViewEvent);\r\n }));\n\n this.subs.push(this.windowEventHandler.onSetWindowTitle().subscribe((windowTitle: string) => {\r\n this.setWindowTitle(windowTitle);\r\n }));\n\n this.subs.push(this.windowEventHandler.onClose().subscribe((windowCloseEventArgs: TruWindowCloseEventArgs | null = null) => {\r\n this.close(windowCloseEventArgs);\r\n }));\n\n this.onHasChangedToken = this.dataContext.onHasChanged.subscribe((eventArgs: HasChangesChangedEventArgs) => {\n this.hasChanges = eventArgs.hasChanges;\n });\n\n window.addEventListener('keydown', this.onWindowKeydown);\n }\n\n ngAfterViewInit() {\r\n this.cd.detectChanges();\r\n }\n\n ngOnDestroy() {\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n\n window.removeEventListener('keydown', this.onWindowKeydown);\n window.removeEventListener('resize', this.resizeEventHandler);\n\n this.subs.forEach(s => s.unsubscribe());\n this.dataContext.onHasChanged.unsubscribe(this.onHasChangedToken);\n }\n}\n","<div class=\"desktop-window-container\"\r\n [ngClass]=\"{'desktop-window-active': window.active, 'desktop-window-maximized': window.maximized}\"\r\n [ngStyle]=\"{'z-index': window.zIndex, 'top': window.top, 'left': window.left, 'right': window.right, 'bottom': window.bottom, 'height': window.height, 'width': window.width, 'min-height': window.minHeight, 'minWidth': window.minWidth}\"\r\n [style.offsetLeft.px]=\"x\"\r\n [style.offsetTop.px]=\"y\"\r\n (mousedown)=\"activate()\"\r\n [hidden]=\"window.minimized\"\r\n [truDesktopWindowStateMonitor]=\"window.active\">\r\n <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\" *ngIf=\"showNavigation\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-previous-icon'\" [tooltip]=\"'Go Back One View - [Alt + Left]'\" (click)=\"previousView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-next-icon'\" [tooltip]=\"'Go Forward One View - [Alt + Right]'\" (click)=\"nextView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-save-icon'\" class=\"desktop-window-save-icon\" [ngClass]=\"{'desktop-window-save-icon-has-changes': hasChanges}\" [tooltip]=\"'Save - [Ctrl + S]'\" (click)=\"save()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-revert-icon'\" class=\"desktop-window-revert-icon\" [ngClass]=\"{'desktop-window-revert-icon-has-changes': hasChanges}\" [tooltip]=\"'Revert - [Ctrl + Shift + R]'\" (click)=\"revert()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n </tru-toolbar>\r\n </div>\r\n <div class=\"desktop-window-title\" [ngClass]=\"{'no-navigation': !showNavigation}\" (dblclick)=\"maximize()\" (mousedown)=\"windowTitleMouseDown($event)\">\r\n <div class=\"desktop-click-through\">\r\n <div class=\"desktop-text\">{{window.title}}</div>\r\n </div>\r\n </div>\r\n <div class=\"desktop-window-action\" *ngIf=\"!window.isModal\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-minimize-icon'\" [tooltip]=\"'Minimize - [Alt + N]'\" (click)=\"minimize()\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"!window.maximized\" [icon]=\"'tru-toolbar-maximize-icon'\" [tooltip]=\"'Maximize Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"window.maximized\" [icon]=\"'tru-toolbar-restore-icon'\" [tooltip]=\"'Restore Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-close-icon'\" [tooltip]=\"'Close Window - [Alt + SHIFT + X]'\" (click)=\"close(null)\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n </div>\r\n </div>\r\n <fieldset ng-disabled=\"!window.active\" class=\"desktop-window-fieldset\" [ngClass]=\"{'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-content\">\r\n <div *ngFor=\"let view of window.views\">\r\n <tru-desktop-view [view]=\"view\" [active]=\"view.active\" [hidden]=\"!view.active\"><ng-template></ng-template></tru-desktop-view>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-nw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'nw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-ne\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'ne'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-sw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'sw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-se\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'se'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-n\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'n'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-s\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'s'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-w\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'w'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-e\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'e'\"></span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, HostListener, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruDesktopWindow } from '../window/tru-desktop-window';\r\n\n@Component({\n selector: 'tru-desktop-viewport',\n templateUrl: './tru-desktop-viewport.html',\n styleUrls: ['./tru-desktop-viewport.css'],\n imports: [CommonModule, FormsModule, TruDesktopWindow]\n})\nexport class TruDesktopViewport implements OnInit {\n @Input() windows: any;\n @Input() desktopCtrl: any;\n @ViewChildren(TruDesktopWindow) windowComponents!: QueryList<TruDesktopWindow>;\n\n options: any = null;\n\n constructor(private elementRef: ElementRef) { }\n\n getViewportDimensions = () => {\n var viewportContainerElement = this.elementRef.nativeElement.querySelectorAll(\".desktop-viewport-container\")[0];\n this.dimensions = {\n height: viewportContainerElement.clientHeight,\n width: viewportContainerElement.clientWidth\n };\n return this.dimensions;\n };\n\n mouseMove = (event: any) => {\n this.showFillOutline = event.pageY <= this.options.viewportTop;\n this.showLeftOutline = event.pageX <= 0;\n this.showRightOutline = event.pageX >= this.dimensions.width - 1;\n };\n\n mouseUp = (event: any) => {\n this.showFillOutline = false;\n this.showLeftOutline = false;\n this.showRightOutline = false;\n\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n };\n\n dimensions: any = { height: null, width: null };\n showFillOutline = false;\n showLeftOutline = false;\n showRightOutline = false;\n displayViewportDimensions = false;\n logoUrl = undefined;\n\n viewportMouseDown = (event: any) => {\n //Ignore resize events.\n if (event.target.nodeName.toLowerCase() === 'span') return;\n\n document.addEventListener('mousemove', this.mouseMove);\n document.addEventListener('mouseup', this.mouseUp);\n };\n\n /**\n * @tru.doc $watch function\n * @name truDesktopViewportComponent.visibilityWatch\n * @module tru.desktop.viewport\n * @function\n *\n * @description\n * Monitors for visibility changes. This method is responsible for updating the viewport\n * dimensions in situations where the viewport is initially hidden.\n *\n */\n //$watch(function() {\n // //Emulates jQuery's $(element).is(':visible')\n // return this.elementRef.nativeElement.offsetWidth > 0 && this.elementRef.nativeElement.offsetHeight > 0;\n //}, function() {\n // this.dimensions = {\n // height: this.elementRef.nativeElement.clientHeight,\n // width: this.elementRef.nativeElement.clientWidth\n // };\n //});\n\n /**\n * @tru.doc window.resize\n * @name truDesktopViewportComponent.resize\n * @module tru.desktop.viewport\n * @function\n *\n * @description\n * This method is responsible for updating the viewport dimensions when the\n * browser window has been re-sized.\n *\n */\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n var viewportContainerElement = this.elementRef.nativeElement.querySelectorAll(\".desktop-viewport-container\")[0];\n this.dimensions = {\n height: viewportContainerElement.clientHeight,\n width: viewportContainerElement.clientWidth\n };\n };\n\n //document.querySelectorAll(\".desktop-viewport-container\")[0].onscroll = function (event) {\n // event.preventDefault();\n // document.querySelectorAll(\".desktop-viewport-container\")[0].scrollTop = 0;\n //};\n\n ngOnInit(): void {\n this.options = this.desktopCtrl.getOptions();\n this.displayViewportDimensions = this.options.displayViewportDimensions;\n this.logoUrl = this.options.logoUrl;\n }\n\n ngOnDestroy() {\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n }\n}\n","<div class=\"desktop-viewport-container\" [ngStyle]=\"{'top': options.viewportTop + 'px' }\" (mousedown)=\"viewportMouseDown($event)\">\r\n <span class=\"desktop-viewport-dimensions desktop-text\" *ngIf=\"displayViewportDimensions\">{{dimensions.height}} x {{dimensions.width}}</span>\r\n <div *ngFor=\"let window of windows\" class=\"am-fade-and-scale\">\r\n <tru-desktop-window [window]=\"window\" [viewportCtrl]=\"this\" [desktopCtrl]=\"this.desktopCtrl\"></tru-desktop-window>\r\n </div>\r\n <div class=\"desktop-viewport-fill-outline\" *ngIf=\"showFillOutline\"></div>\r\n <div class=\"desktop-viewport-left-outline\" *ngIf=\"showLeftOutline\"></div>\r\n <div class=\"desktop-viewport-right-outline\" *ngIf=\"showRightOutline\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruDesktopViewConfig } from './classes/tru-desktop-view-config';\r\nimport { TruDesktopMenubar } from './menubar/tru-desktop-menubar';\r\nimport { TruDesktopEventHandler } from './services/tru-desktop-event-handler';\r\nimport { TruDesktopService, WindowConfig } from './services/tru-desktop-service';\r\nimport { TruWindowCloseEventArgs } from './services/tru-window-close-event-args';\r\nimport { TruWindowEventArgs } from './services/tru-window-event-args';\r\nimport { TruDesktopStatusbar } from './statusbar/tru-desktop-statusbar';\r\nimport { TruDesktopTaskbar } from './taskbar/tru-desktop-taskbar';\r\nimport { TruDesktopView } from './view/tru-desktop-view';\r\nimport { TruDesktopViewport } from './viewport/tru-desktop-viewport';\r\nimport { TruDesktopWindow } from './window/tru-desktop-window';\r\n\n@Component({\n selector: 'tru-desktop',\n templateUrl: './tru-desktop.html',\n styleUrls: ['./tru-desktop.css'],\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n BrowserAnimationsModule,\n MatButton,\n MatIcon,\n TruDesktopMenubar,\n TruDesktopStatusbar,\n TruDesktopTaskbar,\n TruDesktopViewport,\n TruDesktopWindow,\n TruDesktopView,\n ],\n providers: [TruDesktopService]\n})\nexport class TruDesktop implements OnInit {\n @Input() options: any;\n @ViewChild(TruDesktopViewport) private viewportComponent!: TruDesktopViewport;\n\n constructor(\n private desktopService: TruDesktopService,\n private textManager: TruTextManager,\n private truDesktopEventHandler: TruDesktopEventHandler,\n private util: TruUtil) {\n this.desktop = this.desktopService.createDesktop();\n }\r\n\n minimizeAll = false;\n desktop: any;\n minWindowCascadePosition = 40;\n maxWindowCascadePosition = 100;\n lastWindowCascadePosition = { top: this.minWindowCascadePosition, left: this.minWindowCascadePosition };\n shiftPressed = false;\n altPressed = false;\n xPressed = false;\n logoUrl = null;\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getDesktop\n * @module tru.desktop\n *\n * @description\n * Return an object of desktop.\n *\n * @returns {object} desktop.\n */\n getDesktop = () => {\n return this.desktop;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getOptions\n * @module tru.desktop\n *\n * @description\n * Return an object of desktop options.\n *\n * @returns {object} options.\n */\n getOptions = () => {\n return this.options;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getWindows\n * @module tru.desktop\n *\n * @description\n * Return an array of windows.\n *\n * @returns {array} windows.\n */\n getWindows = () => {\n return this.windows;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getNextMaxZIndex\n * @module tru.desktop\n *\n * @description\n * Iterates through all window objects in the windows array to find the max z-index\n * and increases the value found by 1.\n *\n * @returns {int}\n */\n getNextMaxZIndex = () => {\n var max = 0;\n var tmp;\n for (var i = this.windows.length - 1; i >= 0; i--) {\n tmp = this.windows[i].zIndex;\n if (tmp > max) max = tmp;\n }\n return ++max;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.clearActive\n * @module tru.desktop\n *\n * @description\n * Iterates through all window objects in the windows\n * and sets the active property to false.\n *\n */\n clearActive = () => {\n this.windows.forEach((window: any) => {\n window.active = false;\n });\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getActiveWindow\n * @module tru.desktop\n *\n * @description\n * Gets the active window.\n *\n * @returns {object} view object.\n */\n getActiveWindow = (): any => {\n var activeWindow = null;\n this.windows.forEach((wdw: any) => {\n if (wdw.active === true) {\n activeWindow = wdw;\n }\n });\n return activeWindow;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getActiveView\n * @module tru.desktop\n *\n * @description\n * Gets the active view.\n *\n * @returns {object} view object.\n */\n getActiveView = (wdw: any) => {\n var activeView = null;\n wdw.views.forEach((view: any) => {\n if (view.active === true) {\n activeView = view;\n }\n });\n return activeView;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.allWindowsAreMinimized\n * @module tru.desktop\n *\n * @description\n * Iterates through windows to determine if all are minimized.\n *\n */\n allWindowsAreMinimized = () => {\n var allMinimized = true;\n this.windows.forEach((window: any) => {\n if (!window.minimized) {\n allMinimized = false;\n }\n });\n return allMinimized;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.hideShowAll\n * @module tru.desktop\n *\n * @description\n * Hides/shows all windows\n *\n */\n hideShowAll = () => {\n this.minimizeAll = this.allWindowsAreMinimized() ? false : !this.minimizeAll;\n this.windows.forEach((wdw: any) => {\n if (wdw.outOfBounds) this.recover(wdw);\n wdw.active = false;\n wdw.minimized = this.minimizeAll;\n });\n this.activateForemostWindow();\n return this.minimizeAll;\n };\n\n /**\r\n * @tru.doc function\r\n * @name truDesktopComponent.findWindowViewDirective\r\n * @module tru.desktop\r\n *\r\n * @description\r\n * Looks for previously open window with a view directive\r\n *\r\n */\r\n findWindowViewDirective = (windowViewDirective: any) => {\r\n for (let i = 0; i < this.windows.length; i++) {\r\n for (let j = 0; j < this.windows[i].views.length; j++) {\r\n if (this.windows[i].views[0].viewDirective === windowViewDirective)\r\n return this.windows[i];\r\n }\r\n }\r\n return null;\r\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.openWindow\n * @module tru.desktop\n *\n * @description\n * Displays a new window. All window properties defined by the application developer will be\n * overlaid here before displaying the window\n *\n */\n openWindow = (windowConfigOverlays: any, singleInstance: any): WindowConfig => {\n let activeWindow = this.getActiveWindow();\r\n if (activeWindow && activeWindow.isModal) {\r\n activeWindow.invalidOperation = true;\r\n return activeWindow;\r\n }\r\n\r\n if (singleInstance) {\r\n let window = this.findWindowViewDirective(windowConfigOverlays.views[0].viewDirective);\r\n if (window) {\r\n this.updateWindowState(window);\r\n return window;\r\n }\r\n }\r\n\r\n if (windowConfigOverlays.isModal) {\r\n let heightOffset = (parseInt(windowConfigOverlays.height, 10) / 2) + 30;\r\n let widthOffset = (parseInt(windowConfigOverlays.width, 10) / 2);\r\n windowConfigOverlays.top = 'calc(50% - ' + heightOffset + 'px )';\r\n windowConfigOverlays.left = 'calc(50% - ' + widthOffset + 'px )';\r\n }\r\n\r\n this.clearActive();\r\n let configuredWindow = this.configureWindow(windowConfigOverlays);\r\n configuredWindow.views = this.configureViews(windowConfigOverlays, configuredWindow);\r\n if (!configuredWindow.isModal) {\r\n configuredWindow.cascadeWindow = false;\r\n this.savePosition(configuredWindow);\r\n this.maximize(configuredWindow);\r\n this.windows.push(configuredWindow);\r\n } else {\r\n this.windows.push(configuredWindow);\r\n }\n return configuredWindow;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.configureWindow\n * @module tru.desktop\n *\n * @description\n * Creates a new window instance.\n *\n */\n configureWindow = (windowConfigOverlays: any) => {\n var windowConfigInstance = Object.assign({}, this.desktop.windowConfig);\n windowConfigInstance.savedPosition = Object.create({ top: 0, left: 0, right: 0, bottom: 0, height: 0, width: 0 });\n windowConfigInstance.zIndex = this.getNextMaxZIndex();\n //windowConfigInstance.globals = Object.assign({}, $rootScope.$eval(this.options.globals));\n return Object.assign(windowConfigInstance, windowConfigOverlays);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.configureViews\n * @module tru.desktop\n *\n * @description\n * Creates one or more view instances\n *\n */\n configureViews = (windowConfigOverlays: any, configuredWindow: any): Array<any> => {\n let configuredViews: Array<any> = [];\n windowConfigOverlays.views.forEach((view: any) => {\n let configuredView = new TruDesktopViewConfig();\r\n configuredView.componentName = view.componentName;\r\n configuredView.entities = view.entities;\r\n configuredView.entityIndex = view.entityIndex;\r\n configuredView.isDirty = view.isDirty;\r\n configuredView.isEditing = view.isEditing;\r\n configuredView.isInvalid = view.isValid;\r\n configuredView.openAsDetaiView = view.openAsDetailView;\n //viewConfigInstance.globals = this.options.globals;\n //let configuredView = Object.assign(viewConfigInstance, view);\n configuredView.window = configuredWindow;\n configuredViews.push(configuredView);\n });\n return configuredViews;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.closeWindow\n * @module tru.desktop\n *\n * @description\n * Remove a window {object} from the windows array.\n *\n * @returns {boolean} returns true if window was closed, false if not closed.\n */\n closeWindow = (wdw: any, windowCloseEventArgs: TruWindowCloseEventArgs | null = null) => {\n if (!this.options.allowDirtyClose && wdw.isDirty) {\n alert(\"Unsaved Changes. Save changes before closing window.\");\n return false;\n }\n\n if (!this.options.allowInvalidClose && wdw.isInvalid) {\n alert(\"Data is invalid. Correct Invalid data before closing window.\");\n return false;\n }\n\n if (this.options.canCloseFn !== undefined) {\n if (this.options.canCloseFn(wdw)) {\n this.windows.splice(this.windows.indexOf(wdw), 1);\n this.activateForemostWindow();\n wdw.onClose$.next(windowCloseEventArgs);\n wdw.closed();\n return true;\n };\n } else {\n this.windows.splice(this.windows.indexOf(wdw), 1);\n this.activateForemostWindow();\n wdw.onClose$.next(windowCloseEventArgs);\n wdw.closed();\n return true;\n }\n return false;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.activateForemostWindow\n * @module tru.desktop\n *\n * @description\n * Set the foremost window to an active state\n *\n */\n activateForemostWindow = () => {\n var foremost = undefined;\n for (var i = 0; i < this.windows.length; i++) {\n if ((foremost === undefined || this.windows[i].zIndex > foremost.zIndex) && !this.windows[i].minimized && !this.windows[i].outOfBounds)\n foremost = this.windows[i];\n }\n if (foremost)\n foremost.active = true;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.activateNextWindow\n * @module tru.desktop\n *\n * @description\n * Set the next window to an active state\n *\n */\n activateNextWindow = (activeWindowLocation: any) => {\n if (this.windows.length <= 1) return;\n var backend = this.windows.slice(activeWindowLocation);\n var frontend = this.windows.slice(0, activeWindowLocation - 1);\n var sorted = backend.concat(frontend);\n var nextWindow = undefined;\n for (var i = 0; i < sorted.length; i++) {\n if (!sorted[i].minimized && !sorted[i].outOfBounds && !nextWindow)\n nextWindow = sorted[i];\n }\n\n if (nextWindow) {\n this.clearActive();\n nextWindow.zIndex = this.getNextMaxZIndex();\n nextWindow.active = true;\n }\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.activatePreviousWindow\n * @module tru.desktop\n *\n * @description\n * Set the previous window to an active state\n *\n */\n activatePreviousWindow = (activeWindowLocation: any) => {\n if (this.windows.length <= 1) return;\n var backend = this.windows.slice(activeWindowLocation);\n var frontend = this.windows.slice(0, activeWindowLocation - 1);\n var sorted = backend.concat(frontend);\n var nextWindow = undefined;\n for (var i = sorted.length - 1; i >= 0; i--) {\n if (!sorted[i].minimized && !sorted[i].outOfBounds && !nextWindow)\n nextWindow = sorted[i];\n }\n\n if (nextWindow) {\n this.clearActive();\n nextWindow.zIndex = this.getNextMaxZIndex();\n nextWindow.active = true;\n }\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.minimize\n * @module tru.desktop\n *\n * @description\n * Visually removes window from the viewport.\n *\n */\n minimize = (window: any) => {\n this.savePosition(window);\n\n window.active = false;\n window.minimized = true;\n this.activateForemostWindow();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.maximize\n * @module tru.desktop\n *\n * @description\n * Positions window such that it fills the whole viewport.\n *\n */\n maximize = (window: any) => {\n window.top = 0;\n window.left = 0;\n window.right = 0;\n window.bottom = 0;\n window.height = 'auto';\n window.width = '100%';\n window.maximized = 'fill';\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.maximizeLeft\n * @module tru.desktop\n *\n * @description\n * Positions window such that it fills the left portion viewport.\n *\n */\n maximizeLeft = (window: any) => {\n window.split = true;\n window.top = 0;\n window.left = 0;\n window.bottom = 0;\n window.width = '50%';\n window.height = 'auto';\n window.maximized = 'left';\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.maximizeRight\n * @module tru.desktop\n *\n * @description\n * Positions window such that it fills the right portion viewport.\n *\n */\n maximizeRight = (window: any) => {\n window.top = 0;\n window.left = '50%';\n window.right = 0;\n window.bottom = 0;\n window.width = '50%';\n window.height = 'auto';\n window.maximized = 'right';\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.recover\n * @module tru.desktop\n *\n * @description\n * Brings window back into view when it has escaped the viewport.\n *\n */\n recover = (window: any) => {\n window.active = true;\n window.outOfBounds = false;\n window.minimized = false;\n window.zIndex = this.getNextMaxZIndex();\n this.cascadeWindow(window);\n this.clearActive();\n this.activateForemostWindow();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.restore\n * @module tru.desktop\n *\n * @description\n *\n */\n restore = (wdw: any) => {\n if (wdw.maximized === 'fill') {\n this.maximize(wdw);\n } else if (wdw.maximized === 'left') {\n this.maximizeLeft(wdw);\n } else if (wdw.maximized === 'right') {\n this.maximizeRight(wdw);\n }\n this.updateWindowState(wdw);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.bringToFront\n * @module tru.desktop\n *\n * @description\n *\n */\n updateWindowState = (wdw: any) => {\r\n if (wdw.outOfBounds) {\r\n this.recover(wdw);\r\n return;\r\n }\r\n\r\n if (wdw.maximized === 'fill') {\r\n this.maximize(wdw);\r\n } else if (wdw.maximized === 'left') {\r\n this.maximizeLeft(wdw);\r\n } else if (wdw.maximized === 'right') {\r\n this.maximizeRight(wdw);\r\n }\r\n this.clearActive();\r\n wdw.active = true;\r\n wdw.minimized = false;\r\n wdw.zIndex = this.getNextMaxZIndex();\r\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.restoreSavedPosition\n * @module tru.desktop\n *\n * @description\n * Set the windows last know position to the current position.\n *\n */\n restoreSavedPosition = (wdw: any) => {\n this.clearActive();\n wdw.top = wdw.savedPosition.top;\n wdw.left = wdw.savedPosition.left;\n wdw.right = wdw.savedPosition.right;\n wdw.bottom = wdw.savedPosition.bottom;\n wdw.height = wdw.savedPosition.height;\n wdw.width = wdw.savedPosition.width;\n wdw.maximized = undefined;\n wdw.minimized = undefined;\n wdw.active = true;\n wdw.minimized = false;\n wdw.zIndex = this.getNextMaxZIndex();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.savePosition\n * @module tru.desktop\n *\n * @description\n * Save the windows last know position.\n *\n */\n savePosition = (wdw: any) => {\n wdw.savedPosition.top = wdw.top;\n wdw.savedPosition.left = wdw.left;\n wdw.savedPosition.right = wdw.right;\n wdw.savedPosition.bottom = wdw.bottom;\n wdw.savedPosition.height = wdw.height;\n wdw.savedPosition.width = wdw.width;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.closeWindow\n * @module tru.desktop\n *\n * @description\n * Moves a window to the next cascade position.\n *\n */\n cascadeWindow = (window: any) => {\n if (!this.options.enableWindowCascading || window.isModal) return;\n this.lastWindowCascadePosition.top += 10;\n this.lastWindowCascadePosition.left += 10;\n if (this.lastWindowCascadePosition.top > this.maxWindowCascadePosition)\n this.lastWindowCascadePosition.top = this.minWindowCascadePosition;\n if (this.lastWindowCascadePosition.left > this.maxWindowCascadePosition)\n this.lastWindowCascadePosition.left = this.minWindowCascadePosition;\n\n window.top = this.lastWindowCascadePosition.top + 'px';\n window.left = this.lastWindowCascadePosition.left + 'px';\n };\n\n /**\n * @tru.doc event\n * @module tru.desktop\n *\n * @description\n *\n */\n onKeyDown = (event: any) => {\n if (event.key === 'Control' || event.key === 'Shift') return;\n if (event.altKey)\n event.preventDefault();\n var keySequence = this.util.getKeySequence(event);\n if (keySequence === 'alt+m') { //Maximize\n var activeWindow = this.getActiveWindow();\n if (activeWindow === null) return;\n if (!activeWindow.maximized) {\n this.savePosition(activeWindow);\n this.maximize(activeWindow);\n } else if (activeWindow.maximized === 'right' || activeWindow.maximized === 'left')\n this.maximize(activeWindow);\n else\n this.restoreSavedPosition(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+n') { //Minimize\n var activeWindow = this.getActiveWindow();\n if (activeWindow === null || activeWindow.minimized) return;\n this.minimize(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+w') { //Cycles Forward\n var index = this.windows.indexOf(this.getActiveWindow());\n this.activateNextWindow(index + 1);\n event.preventDefault();\n }\n if (keySequence === 'shift+alt+w') { //Cycles Backward\n var index = this.windows.indexOf(this.getActiveWindow());\n this.activatePreviousWindow(index + 1);\n event.preventDefault();\n }\n if (keySequence === 'shift+alt+x' && !(this.shiftPressed && this.altPressed && this.xPressed)) { //Close\n var activeWindow = this.getActiveWindow();\n if (!activeWindow) return;\n this.closeWindow(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+l') { //Maximize left\n var activeWindow = this.getActiveWindow();\n if (!activeWindow.maximized) {\n this.savePosition(activeWindow);\n this.maximizeLeft(activeWindow);\n } else if (activeWindow.maximized === 'right' || activeWindow.maximized === 'fill')\n this.maximizeLeft(activeWindow);\n else\n this.restoreSavedPosition(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+r') { //Maximize right\n var activeWindow = this.getActiveWindow();\n if (!activeWindow.maximized) {\n this.savePosition(activeWindow);\n this.maximizeRight(activeWindow);\n } else if (activeWindow.maximized === 'left' || activeWindow.maximized === 'fill')\n this.maximizeRight(activeWindow);\n else\n this.restoreSavedPosition(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+d') { //Toggle Desktop\n //this.desktopShown = this.hideShowAll();\n event.preventDefault();\n }\n\n if (event.shiftKey)\n this.shiftPressed = true;\n if (event.altKey)\n this.altPressed = true;\n if (event.keyCode === 88)\n this.xPressed = true;\n }\n\n onKeyUp = (event: any) => {\n if (event.shiftKey)\n this.shiftPressed = false;\n if (event.altKey)\n this.altPressed = false;\n if (event.keyCode === 88)\n this.xPressed = false;\n }\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.handleSelectAttempt\n * @module tru.desktop\n *\n * @description\n * Prevents the user from highlight desktop elements.\n *\n */\n handleSelectAttempt = (e: any) => {\n var nodeName = e.target.nodeName.toLowerCase();\n let richTextElement = this.util.findClosestAncestorByClass(e.target, '.rich-text');\n if (\n nodeName === 'input' ||\n nodeName === 'textarea' ||\n nodeName === 'select' ||\n nodeName === '#text' ||\n richTextElement) return true;\n\n if (window.event) { e.preventDefault(); }\n return true;\n }\n\n windows: Array<any> = [];\n\n ngOnInit(): void {\r\n this.logoUrl = this.options.logoUrl;\r\n this.options = Object.assign(this.desktop.options, this.options);\r\n this.options.viewportTop = this.options.menubarConfig !== undefined ? this.options.menubarHeight + 1 : 0;\r\n this.truDesktopEventHandler.onOpen().subscribe((windiowEvent: TruWindowEventArgs) => {\r\n this.openWindow(windiowEvent, false);\r\n });\r\n document.onselectstart = this.handleSelectAttempt;\r\n window.addEventListener('keydown', this.onKeyDown);\r\n window.addEventListener('keyup', this.onKeyUp);\r\n window.onbeforeunload = (e: any) => {\r\n let hasChanges = this.viewportComponent.windowComponents.filter((w: TruDesktopWindow) => { return w.hasChanges; })\r\n if (hasChanges.length) {\r\n e = e || window.event;\r\n var msg = this.textManager.msgConfirmExitWithChangesPending;\r\n\r\n // For IE and Firefox\r\n if (e) {\r\n e.returnValue = msg;\r\n }\r\n\r\n // For Safari / chrome\r\n return msg;\r\n }\r\n return null;\r\n };\r\n }\n\n ngOnDestroy() {\n window.removeEventListener('keydown', this.onKeyDown);\n window.removeEventListener('keyup', this.onKeyUp);\n }\n}\n","<div class=\"desktop-wrapper\">\r\n\r\n <div class=\"desktop-menubar-container\" [ngStyle]=\"{'height': options.menubarHeight + 'px'}\">\r\n <tru-desktop-menubar [desktopCtrl]=\"this\"></tru-desktop-menubar>\r\n </div>\r\n\r\n <tru-desktop-viewport [windows]=\"windows\" [desktopCtrl]=\"this\"></tru-desktop-viewport>\r\n\r\n <tru-desktop-taskbar [windows]=\"windows\" [desktopCtrl]=\"this\"></tru-desktop-taskbar>\r\n\r\n <img class=\"desktop-viewport-logo\" data-ng-show=\"logoUrl\" alt=\"\">\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruWindowActionEventHandler {\r\n\r\n private save$: Subject<null> = new Subject();\r\n private revert$: Subject<null> = new Subject();\r\n\r\n onSave = () => {\r\n return this.save$;\r\n }\r\n\r\n onRevert = () => {\r\n return this.revert$;\r\n }\r\n\r\n save = () => {\r\n this.save$.next(null);\r\n }\r\n\r\n revert = () => {\r\n this.revert$.next(null);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Inject, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-error-dialog',\r\n templateUrl: './tru-error-dialog.html',\r\n styleUrls: ['./tru-error-dialog.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav,\r\n MatExpansionModule\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TruErrorDialog implements OnInit {\r\n title: string;\r\n message: string;\r\n stackTrace: string;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TruErrorDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruErrorDialog) {\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.stackTrace = data.stackTrace;\r\n }\r\n\r\n readonly panelOpenState = signal(false);\r\n\r\n ngOnInit() {}\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"tru-error-dialog-title mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'error-icon'\"\r\n title=\"Error\">\r\n </mat-icon>\r\n Error - {{title}}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <div class=\"tru-about-description\">\r\n {{message}}\r\n </div>\r\n <mat-expansion-panel *ngIf=\"stackTrace\"\r\n (opened)=\"panelOpenState.set(true)\"\r\n (closed)=\"panelOpenState.set(false)\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-description>\r\n Show Stack Trace\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <p>{{stackTrace}}</p>\r\n </mat-expansion-panel>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n","export class TruErrorDialogConfig {\r\n constructor(\r\n public title: string,\r\n public message: string,\r\n public stackTrace: string) {\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\n\r\nexport class TruServerError {\r\n id: string;\r\n type: string;\r\n code: number;\r\n title: string = '';\r\n message: string | null | undefined = undefined;\r\n data: object | null = null;\r\n stackTrace: string;\r\n status: number;\r\n statusText: string;\r\n componentName: string = '';\r\n\r\n constructor(error: HttpErrorResponse) {\r\n let parsedError = JSON.parse(error.error);\r\n if (parsedError.ExceptionType && parsedError.ExceptionType === 'tru-db-custom-exception') {\r\n parsedError = JSON.parse(parsedError.Message);\r\n this.id = parsedError.$id;\r\n this.type = 'tru-db-custom-exception';\r\n this.code = parsedError.Code;\r\n this.title = parsedError.data.exceptionObj.title;\r\n this.message = parsedError.message;\r\n this.stackTrace = parsedError.StackTrace;\r\n this.status = error.status;\r\n this.statusText = error.statusText;\r\n this.data = parsedError.data.exceptionObj;\r\n this.componentName = parsedError.componentName;\r\n } else {\r\n this.id = parsedError.$id;\r\n this.type = parsedError.$type;\r\n this.code = parsedError.Code;\r\n this.message = parsedError.Message;\r\n this.stackTrace = parsedError.StackTrace;\r\n this.status = error.status;\r\n this.statusText = error.statusText;\r\n }\r\n }\r\n}\r\n","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector } from \"@angular/core\";\r\nimport { TruUiNotification } from \"./tru-ui-notification\";\r\nimport { TruTextManager } from \"./tru-text-manager\";\r\nimport { TruErrorDialog } from \"../components/error-dialog/tru-error-dialog\";\r\nimport { TruErrorDialogConfig } from \"../components/error-dialog/classes/tru-error-dialog-config\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruServerError } from \"../classes/tru-server-error\";\r\nimport { TruComponentLookup } from \"./tru-component-lookup\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruErrorManager {\r\n private baseUrl: string;\r\n private appName: string;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private dialog: MatDialog,\r\n private textManager: TruTextManager,\r\n private uiNotification: TruUiNotification,\r\n private componentLookup: TruComponentLookup,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private appEnvironment: TruAppEnvironment) {\r\n this.baseUrl = appEnvironment.appUri;\r\n this.appName = appEnvironment.appName;\r\n }\r\n\r\n private handleClientSideError = (error: HttpErrorResponse) => {\r\n\r\n }\r\n\r\n private handleServerSideError = (error: HttpErrorResponse) => {\r\n let serverError = new TruServerError(error);\r\n if (serverError.type === 'tru-db-custom-exception') {\r\n var component = this.componentLookup.get(serverError.componentName);\r\n this.dialog.open(component, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: serverError\r\n });\r\n } else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {\r\n\r\n let dialogConfig = new TruErrorDialogConfig(\r\n 'Require Valid Choice Exception',\r\n error.message,\r\n serverError.stackTrace);\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n } else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {\r\n\r\n let dialogConfig = new TruErrorDialogConfig(\r\n 'Duplicate Key Error',\r\n error.message\r\n .replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')\r\n .replace('dbo.', '')\r\n .replace('UIX_', '')\r\n .replace('The statement has been terminated.', ''),\r\n serverError.stackTrace );\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n\r\n } else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {\r\n\r\n let dialogConfig = new TruErrorDialogConfig(\r\n 'Concurrent saves not allowed',\r\n 'Please review any changes and save again.',\r\n serverError.stackTrace);\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n } else if (serverError.type.lastIndexOf('TruDB.EfMssql.Runtime.DataError', 0) === 0) {\r\n this.uiNotification.error(\r\n this.textManager.fmtDataError(serverError.type),\r\n [this.textManager.fmtExceptionToShow(serverError.stackTrace)])\r\n } else {\r\n var message = this.textManager.fmtErrorToShow(serverError);\r\n let dialogConfig = new TruErrorDialogConfig(\r\n serverError.type,\r\n serverError.message as string,\r\n serverError.stackTrace);\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n }\r\n }\r\n\r\n handleError = (error: HttpErrorResponse) => {\r\n if (error.type)\r\n this.handleClientSideError(error);\r\n else\r\n this.handleServerSideError(error);\r\n }\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse,\r\n} from \"@angular/common/http\";\r\nimport { Observable, of, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { TruErrorManager } from \"../../../services/tru-error-manager\";\r\n\r\n@Injectable()\r\nexport class TruErrorInterceptor implements HttpInterceptor {\r\n constructor(private errorManager: TruErrorManager) { }\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status !== 401 && !(error.error instanceof Blob))\r\n this.errorManager.handleError(error);\r\n return next.handle(request);\r\n })\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-column',\r\n templateUrl: './tru-column.html',\r\n styleUrls: ['./tru-column.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruColumn {\r\n constructor() { }\r\n}\r\n","<li>\r\n <div class=\"tvl-container-grid js-grid\">\r\n <div class=\"tvl-container-grid-col\">\r\n <div class=\"tvl-container-panel\">\r\n <ul class=\"tvl-container-vList\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</li>\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-form',\r\n templateUrl: './tru-form.html',\r\n styleUrls: ['./tru-form.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruForm implements AfterViewInit {\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.updateLayout();\r\n }\r\n\r\n private updateLayout = () => {\r\n let rowComponentElements = this.element.nativeElement.querySelectorAll('.tvl-container-hList');\r\n rowComponentElements.forEach((rowComponentElement: any) => {\r\n var numberOfItems = rowComponentElement.children.length;\r\n var childWidth = 100 / numberOfItems;\r\n [...rowComponentElement.children].forEach((rowChildElement: any, index: number) => {\r\n if (index === numberOfItems - 1) {\r\n rowChildElement.style['width'] = 'calc(' + childWidth + '% - 10px)';\r\n } else {\r\n rowChildElement.style['width'] = 'calc(' + childWidth + '% - 5px)';\r\n }\r\n if (index > 0)\r\n rowChildElement.style['margin-left'] = '5px';\r\n });\r\n });\r\n }\r\n}\r\n","<div class=\"tvl-container-grid js-grid\">\r\n <div class=\"tvl-container-grid-col\">\r\n <div class=\"tvl-container-panel\">\r\n <ul class=\"tvl-container-hList\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-group-box',\r\n templateUrl: './tru-group-box.html',\r\n styleUrls: ['./tru-group-box.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruGroupBox {\r\n constructor() { }\r\n}\r\n","<div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-row',\r\n templateUrl: './tru-row.html',\r\n styleUrls: ['./tru-row.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruRow {\r\n constructor() { }\r\n}\r\n","<li>\r\n <div class=\"tvl-container-grid js-grid\">\r\n <div class=\"tvl-container-grid-col\">\r\n <div class=\"tvl-container-panel\">\r\n <ul class=\"tvl-container-hList\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</li>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatTab, MatTabsModule } from '@angular/material/tabs';\r\nimport { TruTabGroupEventNotifier } from '../services/tru-tab-group-event-notifier';\r\n\r\n@Component({\r\n selector: 'tru-tab',\r\n templateUrl: './tru-tab.html',\r\n styleUrls: ['./tru-tab.css'],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [TruTabGroupEventNotifier]\r\n})\r\nexport class TruTab {\r\n @Input() view!: any;\r\n @Input() label!: string;\r\n @ViewChild(MatTab) public matTab!: MatTab;\r\n\r\n constructor(private tabGroupEventNotifier: TruTabGroupEventNotifier) { }\r\n\r\n notifyListeners = (isActive: boolean) => {\r\n this.tabGroupEventNotifier.isActive = isActive;\r\n }\r\n}\r\n","<mat-tab [label]=\"label\" [disabled]=\"!view.window.isActive()\">\r\n <ng-content></ng-content>\r\n</mat-tab>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChildren, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatTab, MatTabChangeEvent, MatTabGroup, MatTabsModule } from '@angular/material/tabs';\r\nimport { TruTab } from '../tab/tru-tab';\r\n\r\n@Component({\r\n selector: 'tru-tab-group',\r\n templateUrl: './tru-tab-group.html',\r\n styleUrls: ['./tru-tab-group.css'],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruTabGroup {\r\n @ViewChild(MatTabGroup) public tabGroup!: MatTabGroup;\r\n @ContentChildren(TruTab) protected tabs!: QueryList<TruTab>;\r\n\r\n constructor() {}\r\n\r\n public ngAfterViewInit() {\r\n const matTabsFromQueryList = this.tabs.map((tab) => tab.matTab);\r\n const list = new QueryList<MatTab>();\r\n list.reset([matTabsFromQueryList]);\r\n this.tabGroup._tabs = list;\r\n }\r\n\r\n onChange(event: MatTabChangeEvent) {\r\n const selectedTabLabel = event.tab.textLabel;\r\n this.tabs.forEach((tab) => {\r\n if (selectedTabLabel === tab.label) {\r\n tab.notifyListeners(true);\r\n } else {\r\n tab.notifyListeners(false);\r\n }\r\n })\r\n }\r\n}\r\n","<mat-tab-group #tabGroup\r\n (selectedTabChange)=\"onChange($event)\"\r\n animationDuration=\"0ms\">\r\n <ng-content #outlet></ng-content>\r\n</mat-tab-group>\r\n","import { Component } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { TruAuth } from './services/tru-auth';\r\nimport { TruAuthLoginRequest } from \"./classes/tru-auth-login-request\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { finalize } from 'rxjs';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\n\r\n@Component({\r\n selector: 'tru-login',\r\n templateUrl: './tru-login.html',\r\n styleUrls: ['./tru-login.css'],\r\n standalone: false\r\n})\r\nexport class TruLogin {\r\n loginForm = new FormGroup({\r\n username: new FormControl('', Validators.required),\r\n password: new FormControl('', Validators.required)\r\n });\r\n loginError: string = \"\";\r\n isLoggingIn: boolean = false;\r\n title: string;\r\n\r\n constructor(\r\n private auth: TruAuth,\r\n private appEnvironment: TruAppEnvironment) {\r\n this.title = appEnvironment.loginFormTitle;\r\n }\r\n\r\n get f() {\r\n return this.loginForm.controls;\r\n }\r\n\r\n isDisabled = (): boolean => {\r\n return !this.f.username.value || !this.f.password.value || this.isLoggingIn;\r\n }\r\n\r\n onSubmit() {\r\n const loginRequest: TruAuthLoginRequest = {\r\n username: this.f.username.value!,\r\n password: this.f.password.value!\r\n };\r\n\r\n if (loginRequest.username && loginRequest.password) {\r\n this.isLoggingIn = true;\r\n this.auth\r\n .login(loginRequest).pipe(\r\n finalize(() => {\r\n this.isLoggingIn = false; \r\n })\r\n )\r\n .subscribe(() => {\r\n this.isLoggingIn = false;\r\n }\r\n ,(error: HttpErrorResponse) => {\r\n if (error.status === 401) {\r\n this.loginError = \"Incorrect username and/or password\"\r\n }\r\n else {\r\n this.loginError = \"Invalid Login - Error: \" + error.status;\r\n }\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> {{title}} </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n","import { Observable, of } from \"rxjs\";\r\nimport { TruAuthToken } from \"./tru-auth-token\";\r\nimport { ITruUser, TruUser } from \"../../../services/tru-user\";\r\nimport { TruAuthStrategy } from \"./tru-auth-config\";\r\n\r\nexport class TruAuthJwtStrategy implements TruAuthStrategy<TruAuthToken> {\r\n private readonly JWT_ACCESS_TOKEN = \"ACCESS_TOKEN\";\r\n private readonly JWT_REFRESH_TOKEN = \"REFRESH_TOKEN\";\r\n\r\n doLoginUser(token: TruAuthToken): void {\r\n localStorage.setItem(this.JWT_ACCESS_TOKEN, JSON.stringify(token.accessToken));\r\n localStorage.setItem(this.JWT_REFRESH_TOKEN, JSON.stringify(token.refreshToken));\r\n }\r\n\r\n doLogoutUser(): void {\r\n localStorage.removeItem(this.JWT_ACCESS_TOKEN);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return !!this.getJwtToken();\r\n }\r\n\r\n createUser(user: TruUser): Observable<any> {\r\n let jwtData = this.getDecodedJwtJsonData() as any;\r\n console.log(jwtData);\r\n let userData: ITruUser = {\r\n activeUserRef: jwtData.UserRef,\r\n firstName: jwtData.FirstName,\r\n lastName: jwtData.LastName,\r\n email: jwtData.Email,\r\n username: jwtData['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'],\r\n roles: jwtData['http://schemas.microsoft.com/ws/2008/06/identity/claims/role']\r\n }\r\n return of(user.create(userData));\r\n }\r\n\r\n getJwtToken() {\r\n try {\r\n return JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\r\n } catch (e) {\r\n return null;\r\n } \r\n }\r\n\r\n getDecodedJwtJsonData() {\r\n let token = this.getJwtToken();\r\n let payload = {}\r\n if (token && token !== \"undefined\") {\r\n const encodedPayload = token.split(\".\")[1];\r\n const payloadStr = window.atob(encodedPayload);\r\n\r\n payload = JSON.parse(payloadStr);\r\n }\r\n\r\n return payload;\r\n }\r\n\r\n getToken() {\r\n var token = this.getJwtToken();\r\n\r\n if (token && token !== \"undefined\") {\r\n const encodedPayload = token.split(\".\")[1];\r\n const payloadStr = window.atob(encodedPayload);\r\n\r\n var payload = JSON.parse(payloadStr);\r\n var exp = payload[\"exp\"];\r\n var d = new Date();\r\n var epoch = Math.round(d.getTime() / 1000);\r\n\r\n if (exp < epoch) {\r\n localStorage.removeItem(this.JWT_ACCESS_TOKEN);\r\n return null;\r\n }\r\n }\r\n \r\n return token;\r\n }\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from \"@angular/common/http\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\nimport { TruAuth } from \"./tru-auth\";\r\nimport { TruAuthJwtStrategy } from \"../classes/tru-auth-jwt-strategy\";\r\nimport { TRU_AUTH_STRATEGY } from \"../classes/tru-auth-config\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\n\r\n@Injectable()\r\nexport class TruAuthInterceptor implements HttpInterceptor {\r\n constructor(\r\n private auth: TruAuth,\r\n private appEnvironment: TruAppEnvironment,\r\n @Inject(TRU_AUTH_STRATEGY) private jwt: TruAuthJwtStrategy\r\n ) {}\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (this.appEnvironment.authType === 'jwt')\r\n request = this.addToken(request, String(this.jwt.getToken()));\r\n\r\n if (this.appEnvironment.authType === 'session')\r\n request = request.clone({\r\n withCredentials: true\r\n });\r\n\r\n return next.handle(request).pipe(\r\n catchError((error) => {\r\n if (error.status === 401) {\r\n this.auth.doLogoutAndRedirectToLogin();\r\n }\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n private addToken(request: HttpRequest<any>, token: string) {\r\n return request.clone({\r\n setHeaders: { Authorization: `Bearer ${token}` },\r\n });\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { TruAuthStrategy } from \"./tru-auth-config\";\r\nimport { TruUser } from \"../../../services/tru-user\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n\r\nexport class TruAuthSessionStrategy implements TruAuthStrategy<TruUser> {\r\n private loggedUser?: TruUser;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n doLoginUser(user: TruUser): void {\r\n this.loggedUser = user;\r\n }\r\n\r\n doLogoutUser(): void {\r\n this.loggedUser = undefined;\r\n }\r\n\r\n createUser(user: TruUser): Observable<any> {\r\n return of({});\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return false;//todo, implement this\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\nimport { TRU_AUTH_CONFIG, TRU_AUTH_STRATEGY } from \"./tru-auth-config\";\r\nimport { TruAuthJwtStrategy } from \"./tru-auth-jwt-strategy\";\r\nimport { TruAuthSessionStrategy } from \"./tru-auth-session-strategy\";\r\n\r\nexport const TruAuthStrategyProvider = {\r\n provide: TRU_AUTH_STRATEGY,\r\n deps: [HttpClient, TruAppEnvironment],\r\n useFactory: (http: HttpClient, appEnvironment: TruAppEnvironment) => {\r\n switch (appEnvironment.authType) {\r\n case \"session\":\r\n return new TruAuthSessionStrategy(http);\r\n case \"jwt\":\r\n return new TruAuthJwtStrategy();\r\n default:\r\n throw new Error(\"Invalid auth strategy\");\r\n }\r\n },\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\nimport { TruLogin } from './tru-login';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { TruAuthInterceptor } from './services/tru-auth-interceptor';\r\nimport { TruAuthStrategyProvider } from './classes/tru-auth-strategy-provider';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TruErrorInterceptor } from '../error-dialog/services/tru-error-interceptor';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'login',\r\n component: TruLogin\r\n }\r\n];\r\n\r\n@NgModule({\r\n declarations: [TruLogin],\r\n imports: [CommonModule, MaterialModule, FormsModule, ReactiveFormsModule, RouterModule.forChild(routes)],\r\n exports: [TruLogin],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TruAuthInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TruErrorInterceptor,\r\n multi: true,\r\n },\r\n TruAuthStrategyProvider\r\n ],\r\n})\r\nexport class TruLoginModule { }\r\n","export enum TruValidationDialogContext {\r\n Control = 0,\r\n Grid = 1,\r\n Card = 2\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruValidationDialogConfig } from './tru-validation-dialog-config';\r\nimport { TruValidationDialogContext } from './tru-validation-dialog-context';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-validation-dialog',\r\n templateUrl: './tru-validation-dialog.html',\r\n styleUrls: ['./tru-validation-dialog.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruValidationDialog implements OnInit, OnDestroy {\r\n @Input() config!: TruValidationDialogConfig;\r\n @Output() close = new EventEmitter();\r\n\r\n errorMsg: string = '';\r\n\r\n private rowElement!: HTMLElement;\r\n private cellElement!: HTMLElement;\r\n private listeners: Array<() => void> = [];\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private util: TruUtil) { }\r\n\r\n onAcceptAll = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n\r\n for (const key in this.config.mergeData?.getAll()) {\r\n entity[key] = this.config.mergeData?.get(key)!.value;\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n };\r\n\r\n if (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.Merge_Data_Set.clearAll();\r\n entity.entityAspect.validateEntity();\r\n\r\n if (this.config.context === TruValidationDialogContext.Grid)\r\n this.elementRef.nativeElement.remove();\r\n }\r\n\r\n onAccept = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n let propertyName = this.config.propertyName as string;\r\n\r\n entity[propertyName] = this.config.mergeData?.get(propertyName)!.value;\r\n this.config.mergeData?.clear(propertyName);\r\n\r\n if (originalValues.hasOwnProperty(propertyName) && (Object.keys(originalValues).length === 0 && originalValues.constructor === Object))\r\n delete originalValues[propertyName];\r\n\r\n if (this.config.mergeData?.isEmpty())\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.entityAspect.validateEntity();\r\n\r\n if (this.config.context === TruValidationDialogContext.Grid)\r\n this.elementRef.nativeElement.remove();\r\n }\r\n\r\n onDecline = () => {\r\n let entity = this.config.entity as any;\r\n this.config.mergeData?.clearAll();\r\n entity.entityAspect.validateEntity();\r\n\r\n if (this.config.context === TruValidationDialogContext.Grid)\r\n this.elementRef.nativeElement.remove();\r\n }\r\n\r\n ngOnInit() {\r\n this.errorMsg = this.config.errorMsg as string;\r\n\r\n if (this.config.context === TruValidationDialogContext.Control) {\r\n var invalidTarget = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.invalid-target');\r\n if (invalidTarget) {\r\n this.listeners.push(this.renderer.listen(invalidTarget, 'mouseenter', (event: MouseEvent) => {\r\n this.elementRef.nativeElement.childNodes[0].classList.remove('hide');\r\n this.elementRef.nativeElement.childNodes[0].classList.add('show');\r\n }));\r\n\r\n this.listeners.push(this.renderer.listen(invalidTarget, 'mouseleave', (event: MouseEvent) => {\r\n this.elementRef.nativeElement.childNodes[0].classList.remove('show');\r\n this.elementRef.nativeElement.childNodes[0].classList.add('hide');\r\n }));\r\n }\r\n } else if (this.config.context === TruValidationDialogContext.Grid) {\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n this.rowElement.style.zIndex = '10000000000';\r\n this.cellElement.classList.add('show');\r\n this.errorMsg = this.config.errorMsg as string;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.config.context === TruValidationDialogContext.Control) {\r\n let invalidTarget = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.invalid-target');\r\n if (invalidTarget)\r\n invalidTarget.classList.add('invalid');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.config.context === TruValidationDialogContext.Control) {\r\n let invalidTarget = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.invalid-target');\r\n if (invalidTarget)\r\n invalidTarget.classList.remove('invalid');\r\n } else if (this.config.context === TruValidationDialogContext.Grid) {\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n if (this.rowElement)\r\n this.rowElement.style.zIndex = 'auto';\r\n if (this.cellElement)\r\n this.cellElement.classList.remove('show');\r\n }\r\n this.listeners.forEach(l => l());\r\n }\r\n}\r\n\r\n","@if (config.context === 0) {\r\n<div class=\"invalid hide\">\r\n <i class=\"icon-warning-sign icon-white\"></i>{{config.errorMsg}}\r\n <div *ngIf=\"config.mergeData\">\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAcceptAll()\">Accept All</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAccept()\">Accept</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onDecline()\">Decline</button>\r\n </div>\r\n</div>\r\n<span class=\"invalid-flag\"></span>\r\n}\r\n@else {\r\n<i class=\"icon-warning-sign icon-white\"></i>{{config.errorMsg}}\r\n<div *ngIf=\"config.mergeData\">\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAcceptAll()\">Accept All</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAccept()\">Accept</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onDecline()\">Decline</button>\r\n</div>\r\n}\r\n","import { TruEditControlConfigBase } from \"../../base-classes/tru-edit-control-config-base\";\r\nimport { TruEntityBase } from \"../../base-classes/tru-entity-base\";\r\nimport { TruListControlConfigBase } from \"../../base-classes/tru-list-control-config-base\";\r\nimport { TruMergeDataSet } from \"../../classes/tru-merge-data-set\";\r\nimport { TruValidationDialogContext } from \"./tru-validation-dialog-context\";\r\n\r\n\r\nexport class TruValidationDialogConfig {\r\n private _entity: TruEntityBase;\r\n private _propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>;\r\n private _context: TruValidationDialogContext;\r\n private _isSubProperty: boolean;\r\n private _ignore: boolean;\r\n private _propertyName: string = '';\r\n private _errorMsg: string = '';\r\n private _mergeData: TruMergeDataSet | null = null;\r\n \r\n public get entity(): TruEntityBase {\r\n return this._entity;\r\n }\r\n\r\n public get propertyConfig(): TruEditControlConfigBase<any> | TruListControlConfigBase<any> {\r\n return this._propertyConfig;\r\n }\r\n\r\n public get context(): TruValidationDialogContext {\r\n return this._context;\r\n }\r\n\r\n public get isSubProperty(): boolean {\r\n return this._isSubProperty;\r\n }\r\n\r\n public get ignore(): boolean {\r\n return this._ignore;\r\n }\r\n\r\n public get propertyName(): string | null {\r\n return this._propertyName;\r\n }\r\n\r\n public set propertyName(value: string) {\r\n this._propertyName = value;\r\n }\r\n\r\n public get errorMsg(): string | null {\r\n return this._errorMsg;\r\n }\r\n\r\n public set errorMsg(value: string) {\r\n this._errorMsg = value;\r\n }\r\n\r\n public get mergeData(): TruMergeDataSet | null {\r\n return this._mergeData;\r\n }\r\n\r\n public set mergeData(value: TruMergeDataSet | null) {\r\n this._mergeData = value;\r\n }\r\n\r\n constructor(\r\n entity: TruEntityBase,\r\n propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>,\r\n context: TruValidationDialogContext = TruValidationDialogContext.Control,\r\n isSubProperty: boolean = false,\r\n ignore: boolean = false) {\r\n this._entity = entity;\r\n this._propertyConfig = propertyConfig;\r\n this._context = context;\r\n this._isSubProperty = isSubProperty;\r\n this._ignore = ignore;\r\n }\r\n}\r\n","import { ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Input, OnDestroy, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { ValidationError } from 'breeze-client';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruValidationDialogContext } from '../../../public-api';\r\nimport { TruEditControlConfigBase } from '../../base-classes/tru-edit-control-config-base';\r\nimport { TruListControlConfigBase } from '../../base-classes/tru-list-control-config-base';\r\nimport { TruMergeDataSet } from '../../classes/tru-merge-data-set';\r\nimport { TruValidationDialog } from '../../components/validation-dialog/tru-validation-dialog';\r\nimport { TruValidationDialogConfig } from '../../components/validation-dialog/tru-validation-dialog-config';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { property } from 'underscore';\r\n\r\n@Directive({\r\n selector: '[truBreezeValidator]'\r\n})\r\nexport class TruBreezeValidator implements OnInit, OnDestroy {\r\n @Input('truBreezeValidator') entity!: any;\r\n @Input() config!: TruEditControlConfigBase<any> | TruListControlConfigBase<any>;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private dataContext: TruDataContext,\r\n private viewContainerRef: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n\r\n configModel: any = {};\r\n mergeData: any;\r\n\r\n private dialogRef: ComponentRef<any> | null = null;\r\n private subs: Array<Subscription> = [];\r\n private currentDialog: ComponentRef<TruValidationDialog> | null = null;\r\n private context: TruValidationDialogContext = TruValidationDialogContext.Control;\r\n\r\n private getMergeData = (): TruMergeDataSet | undefined => {\r\n if (this.config.propertyPath?.includes('/')) {\r\n let propertyNameParts = this.config.propertyPath.split('/');\r\n propertyNameParts.pop();\r\n let targetProperty: any;\r\n propertyNameParts.forEach((name) => {\r\n if (!targetProperty) {\r\n let targetPropertyName = 'o' + name as keyof typeof this.entity;\r\n targetProperty = this.entity[targetPropertyName];\r\n } else {\r\n let targetPropertyName = 'o' + name as keyof typeof this.entity;\r\n targetProperty = targetProperty[targetPropertyName];\r\n }\r\n });\r\n if (targetProperty && targetProperty.Merge_Data) {\r\n return targetProperty.Merge_Data_Set;\r\n }\r\n return undefined;\r\n } else {\r\n return this.entity.Merge_Data_Set?.get(this.config.propertyName as string) ? this.entity.Merge_Data_Set : undefined;\r\n }\r\n }\r\n\r\n private parseErrorMessages = (validationErrors: Array<ValidationError>): string => {\r\n let errorMsg: string = '';\r\n validationErrors.forEach((error) => {\r\n errorMsg += error.errorMessage + '; ';\r\n });\r\n return errorMsg;\r\n }\r\n\r\n private addValidationDialog = (config: TruValidationDialogConfig) => {\r\n let componentFactory = this.componentFactoryResolver.resolveComponentFactory(TruValidationDialog);\r\n let component = this.viewContainerRef.createComponent<TruValidationDialog>(componentFactory, 0, this.viewContainerRef.injector);\r\n component.instance.config = config;\r\n this.currentDialog = component;\r\n this.dialogRef = component;\r\n }\r\n\r\n private removeValidationDialog = () => {\r\n if (this.currentDialog) {\r\n this.currentDialog.destroy();\r\n this.currentDialog = null;\r\n }\r\n }\r\n\r\n valErrsChanged = (validationObject: any) => {\r\n let validationObjectEntity = validationObject.entity\r\n let validationTableName = validationObjectEntity.constructor.name;\r\n\r\n type EntityObjectKey = keyof typeof this.entity;\r\n const entityPkeyName = validationTableName + 'Ref' as EntityObjectKey;\r\n\r\n type ValidationObjectEntityObjectKey = keyof typeof validationObjectEntity;\r\n const validationObjectEntitypkeyName = validationTableName + 'Ref' as ValidationObjectEntityObjectKey;\r\n\r\n let propertyName = this.config.isSubProperty ? this.config.propertyName!.replace(/\\./g, \"\") : this.config.propertyName;\r\n let addedPropertyValdations = validationObject.added.filter((v: any) => {\r\n return v.propertyName === propertyName\r\n });\r\n\r\n let removedPropertyValdations = validationObject.removed.filter((v: any) => {\r\n return v.propertyName === propertyName\r\n });\r\n\r\n this.mergeData = this.getMergeData();\r\n\r\n if (\r\n this.config.rootTable === validationTableName &&\r\n this.entity[entityPkeyName] === validationObjectEntity[validationObjectEntitypkeyName] &&\r\n (addedPropertyValdations.length || this.mergeData)) {\r\n this.removeValidationDialog();\r\n let config = new TruValidationDialogConfig(this.entity, this.config);\r\n config.propertyName = this.config.propertyName as string;\r\n config.mergeData = this.mergeData;\r\n config.errorMsg = this.parseErrorMessages(addedPropertyValdations);\r\n this.addValidationDialog(config);\r\n }\r\n\r\n if (\r\n this.config.rootTable === validationTableName &&\r\n this.entity[entityPkeyName] === validationObjectEntity[validationObjectEntitypkeyName] &&\r\n (removedPropertyValdations.length)) {\r\n this.removeValidationDialog();\r\n }\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.context !== TruValidationDialogContext.Grid) {\r\n this.subs.push(this.dataContext.validationChangeDetection.subscribe(entities => {\r\n this.valErrsChanged(entities);\r\n }));\r\n }\r\n this.entity.entityAspect.validateEntity();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.removeValidationDialog();\r\n this.entity.entityAspect.validateEntity();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2 } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[truSearchPanelPositionManager]'\r\n})\r\nexport class TruSearchPanelPositionManager {\r\n @Input() config: any = { size: 300 };\r\n\r\n private searchViewPortal: HTMLElement | null = null;\r\n private tab: HTMLElement | null = null;\r\n private dropZones: any = [];\r\n private dragHandles: Array<HTMLElement> = [];\r\n\r\n private currentWidth = 0\r\n private currentMinWidth = 0;\r\n private mouseOffsetX = 0;\r\n private lastMouseX = 0;\r\n private dragHandle: HTMLElement | null = null;\r\n private listeners: Array<any> = [];\r\n private mousemoveListener: any;\r\n private mouseupListener: any;\r\n\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n }\r\n\r\n ngAfterViewInit() {\r\n this.searchViewPortal = this.el.nativeElement.closest('.search-container');\r\n this.tab = this.el.nativeElement.querySelectorAll('.search-panel-tab')[0];\r\n this.dropZones = this.searchViewPortal?.querySelectorAll('.search-panel-dropzone');\r\n this.dragHandles = this.el.nativeElement.querySelectorAll('.search-panel-resizable-handle');\r\n\r\n this.addTabEventListeners();\r\n this.addDropzoneEventListeners();\r\n this.addDragHandleEventListeners();\r\n }\r\n\r\n\r\n private addTabEventListeners = () => {\r\n this.listeners.push(this.renderer.listen(this.tab, 'dragstart', this.dragStart));\r\n this.listeners.push(this.renderer.listen(this.tab, 'dragend', this.dragEnd));\r\n };\r\n\r\n private addDropzoneEventListeners = () => {\r\n this.dropZones.forEach((dropZone: HTMLElement) => {\r\n this.listeners.push(this.renderer.listen(dropZone, 'dragover', this.dragOver));\r\n this.listeners.push(this.renderer.listen(dropZone, 'dragleave', this.dragLeave));\r\n this.listeners.push(this.renderer.listen(dropZone, 'drop', this.drop));\r\n }); \r\n };\r\n\r\n private addDragHandleEventListeners = () => {\r\n this.dragHandles.forEach((dropHandle: HTMLElement) => {\r\n this.listeners.push(this.renderer.listen(dropHandle, 'mousedown', this.mousedown));\r\n });\r\n };\r\n\r\n\r\n private addPointerEvents = () => {\r\n this.dropZones.forEach((dropZone: HTMLElement) => {\r\n dropZone.style.pointerEvents = 'all';\r\n });\r\n }\r\n\r\n private removePointerEvents = () => {\r\n this.dropZones.forEach((dropZone: HTMLElement) => {\r\n dropZone.style.pointerEvents = 'none';\r\n });\r\n }\r\n\r\n private addMouseoverDropzoneStyles = (event: MouseEvent) => {\r\n (event.target as HTMLElement).classList.add('mouseover');\r\n }\r\n\r\n private removeMouseoverDropzoneStyles = (event: MouseEvent) => {\r\n for (var i = 0; i < this.dropZones.length; i++) {\r\n if (event.target !== this.dropZones[i])\r\n this.dropZones[i].classList.remove('mouseover');\r\n }\r\n }\r\n\r\n private dragStart = (event: MouseEvent) => {\r\n this.addPointerEvents();\r\n }\r\n\r\n private dragEnd = (event: MouseEvent) => {\r\n this.removePointerEvents();\r\n this.removeMouseoverDropzoneStyles(event);\r\n }\r\n\r\n private dragOver = (event: MouseEvent) => {\r\n event.preventDefault();\r\n this.addMouseoverDropzoneStyles(event);\r\n }\r\n\r\n private dragLeave = (event: MouseEvent) => {\r\n (event.target as HTMLElement).classList.remove('mouseover');\r\n }\r\n\r\n private drop = (event: MouseEvent) => {\r\n if ((event.target as HTMLElement).classList.contains('left')) {\r\n this.config.side = 'left';\r\n this.config.setGridPinnedPositionFn(\r\n { 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' }\r\n );\r\n this.config.setToolbarPinnedPositionFn(\r\n { 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' }\r\n );\r\n //userPreference.set(userPreference.searchPanelSide, 'left');\r\n }\r\n\r\n if ((event.target as HTMLElement).classList.contains('right')) {\r\n this.config.side = 'right';\r\n this.config.setGridPinnedPositionFn(\r\n { 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' }\r\n );\r\n this.config.setToolbarPinnedPositionFn(\r\n { 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' }\r\n );\r\n //userPreference.set(userPreference.searchPanelSide, 'right');\r\n }\r\n\r\n this.removeMouseoverDropzoneStyles(event);\r\n }\r\n\r\n private mousedown = (event: MouseEvent) => {\r\n if (this.config.pinned) return;\r\n if (!this.dragHandle)\r\n this.dragHandle = (event.target as HTMLElement);\r\n this.mouseOffsetX = event.clientX;\r\n this.mousemoveListener = this.renderer.listen('document', 'mousemove', this.mouseMove);\r\n this.mouseupListener = this.renderer.listen('document', 'mouseup', this.mouseUp);\r\n }\r\n\r\n private mouseMove = (event: MouseEvent) => {\r\n var mouseX = event.pageX - this.mouseOffsetX;\r\n var diffX = mouseX - this.lastMouseX;\r\n this.lastMouseX = mouseX;\r\n\r\n this.currentWidth = this.config.size;\r\n this.currentMinWidth = 100;\r\n\r\n if (this.dragHandle?.classList.contains('search-panel-resizable-w')) {\r\n if (this.currentWidth - diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentWidth - this.currentMinWidth));\r\n this.config.size = (this.currentWidth - diffX);\r\n this.updateSide();\r\n }\r\n if (this.dragHandle?.classList.contains('search-panel-resizable-e')) {\r\n if (this.currentWidth + diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentMinWidth - this.currentWidth));\r\n this.config.size = (this.currentWidth + diffX);\r\n this.updateSide();\r\n }\r\n }\r\n\r\n private mouseUp = () => {\r\n this.dragHandle = null;\r\n this.mouseOffsetX = 0;\r\n this.lastMouseX = 0;\r\n\r\n this.mousemoveListener();\r\n this.mouseupListener();\r\n };\r\n\r\n private updateSide = () => {\r\n //if (this.config.side === 'left') {\r\n // this.config.setGridPinnedPositionFn({ 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' });\r\n // this.config.setToolbarPinnedPositionFn({ 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' });\r\n //}\r\n //if (this.config.side === 'right') {\r\n // this.config.setGridPinnedPositionFn({ 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' });\r\n // this.config.setToolbarPinnedPositionFn({ 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' });\r\n //}\r\n }\r\n\r\n ngOnDestroy() {\r\n this.listeners.forEach(fn => fn());\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, Observer } from \"rxjs\";\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruUser } from \"./tru-user\";\r\nimport { TruUtil } from \"./tru-util\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruCloudFileManager {\r\n private baseUrl: string;\r\n private reader!: FileReader;\r\n private file!: File;\r\n private sliceSize: number = 10000 * 1024;\r\n\r\n constructor(\r\n private appEnvironment: TruAppEnvironment,\r\n private util: TruUtil,\r\n private user: TruUser) {\r\n this.baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n private getFileLength = (blobId: string, temp: any): Observable<any> => {\r\n return Observable.create((observer: Observer<any>) => {\r\n let xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == XMLHttpRequest.DONE) {\r\n if (xhr.status == 200) {\r\n observer.next(xhr.response);\r\n }\r\n else {\r\n console.log('Download Failed. Unable to acquire file size.');\r\n }\r\n }\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/BlobLength', true);\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.send(JSON.stringify({\r\n blobId: blobId,\r\n temp: temp ? true : false\r\n }));\r\n });\r\n }\r\n\r\n private uploadFile = (\r\n start: number,\r\n tableName: string,\r\n propertyName: string,\r\n filename: string,\r\n blobMetaData: any,\r\n temp: any,\r\n updateProgress: (progress: number) => {},\r\n done: (response: any | undefined) => {}) => {\r\n\r\n let nextSlice = start + this.sliceSize + 1;\r\n let blob = this.file?.slice(start, nextSlice);\r\n\r\n this.reader.onloadend = (event: ProgressEvent<FileReader>) => {\r\n if (event.target?.readyState !== FileReader.DONE) {\r\n return;\r\n }\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == XMLHttpRequest.DONE) {\r\n if (xhr.status == 200) {\r\n var sizeDone = start + this.sliceSize;\r\n var percentDone = Math.floor((sizeDone / this.file.size) * 100);\r\n\r\n var blobMetaData = JSON.parse(xhr.response);\r\n\r\n if (nextSlice < this.file?.size) {\r\n updateProgress(percentDone);\r\n console.log('Uploading File - ' + percentDone + '%');\r\n this.uploadFile(nextSlice, tableName, propertyName, filename, blobMetaData, temp, updateProgress, done);\r\n } else {\r\n done(blobMetaData.truDbCloudFileRef);\r\n }\r\n }\r\n else {\r\n console.log(xhr.responseType);\r\n }\r\n }\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/Upload', true);\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n\r\n xhr.send(JSON.stringify({\r\n tableName: tableName,\r\n propertyName: propertyName,\r\n fileData: (event.target.result as any).split(',')[1],\r\n filename: filename,\r\n blobId: blobMetaData.blobId,\r\n blobBlockIdStr: blobMetaData.blobBlockIdStr,\r\n createdRef: this.user.activeUserRef,\r\n public: false,\r\n temp: temp ? true : false,\r\n commit: nextSlice < this.file.size ? false : true\r\n }));\r\n };\r\n\r\n this.reader.readAsDataURL(blob);\r\n };\r\n\r\n upload = (tableName: string, propertyName: string, fileData: File, temp: any, updateProgress: (progress: number) => {}, done: (response: any | undefined) => {}) => {\r\n this.reader = new FileReader();\r\n this.file = fileData;\r\n\r\n this.uploadFile(0, tableName, propertyName, this.file.name, { blobId: null, blobBlockIdStr: null }, temp, updateProgress, done);\r\n }\r\n\r\n download = (\r\n blobId: string,\r\n temp: any,\r\n filename: string,\r\n updateProgress: (progress: number) => {},\r\n done: () => {}) => {\r\n\r\n this.getFileLength(blobId, temp).subscribe((fileLength: string) => {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onprogress = function (e) {\r\n updateProgress(Math.round(e.loaded / e.total * 100))\r\n }\r\n\r\n xhr.onload = function () {\r\n //var fileName = xhr.getResponseHeader('Content-Disposition').split(\"filename=\")[1];\r\n var blob = new Blob([xhr.response], { type: 'application/octet-stream' });\r\n\r\n var a = document.createElement('a');\r\n a.href = URL.createObjectURL(blob);\r\n a.download = filename;\r\n\r\n document.body.appendChild(a);\r\n\r\n a.dispatchEvent(new MouseEvent('click'));\r\n done();\r\n }\r\n\r\n xhr.onerror = function (e) {\r\n done();\r\n console.log(e);\r\n };\r\n\r\n xhr.ontimeout = function (e) {\r\n done();\r\n console.log(e);\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/Download');\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(JSON.stringify({\r\n blobId: blobId,\r\n filename: filename,\r\n fileLength: parseInt(fileLength),\r\n temp: temp ? true : false\r\n }));\r\n });\r\n }\r\n\r\n sasUrl = (\r\n blobId: string,\r\n temp: boolean,\r\n filename: string,\r\n updateProgress: () => {},\r\n done: (blob: any) => {}) => {\r\n\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onprogress = function (e) {}\r\n\r\n xhr.onload = function () {\r\n done(xhr.response);\r\n }\r\n\r\n xhr.onerror = function (e) {\r\n done(undefined);\r\n console.log(e);\r\n };\r\n\r\n xhr.ontimeout = function (e) {\r\n done(undefined);\r\n console.log(e);\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/SASTokenURL');\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.responseType = 'text';\r\n xhr.send(JSON.stringify({\r\n blobId: blobId\r\n }));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { DatePipe } from '@angular/common';\r\nimport moment from 'moment';\r\nimport * as _ from 'underscore';\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruModelTypeLookup } from \"./tru-model-type-lookup\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruFormatter {\r\n\r\n constructor(\r\n private appEnvironemt: TruAppEnvironment,\r\n private modelTypeLookup: TruModelTypeLookup) { }\r\n\r\n private formatDate = (date: Date, format: string) => {\r\n if (date === null)\r\n return null;\r\n if (!(date instanceof Date))\r\n return '';\r\n if (isNaN(date.getTime()))\r\n return '';\r\n var datePipe = new DatePipe('en-US');\r\n return datePipe.transform(date, format);\r\n };\r\n\r\n private isDate = (date: any) => {\r\n if (Object.prototype.toString.call(date) === '[object Date]') {\r\n if (isNaN(date.getTime())) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n else if (moment(date, \"MM/DD/YYYY\", true).isValid()) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n\r\n private isPromise = function (value: any) {\r\n return Boolean(value && typeof value.then === 'function');\r\n }\r\n\r\n\r\n //Filters\r\n\r\n bigInteger = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n boolean = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v ? 'True' : 'False';\r\n };\r\n\r\n choiceLabel = (cfg: any) => {\r\n if (cfg.$ === null)\r\n return null;\r\n if (cfg.type) {\r\n var item = cfg.type.choices.filter(function (c: any) {\r\n return c.$ === cfg.$;\r\n });\r\n } else {\r\n return cfg.$\r\n }\r\n\r\n if (item.length == 0)\r\n return null;\r\n return item[0].label;\r\n };\r\n\r\n dateShort = (cfg: any) => {\r\n var v = cfg.$;\r\n if (!v || !this.isDate(v))\r\n return 'mm/dd/yyyy';\r\n v = new Date(v);\r\n var utc = new Date(v.getUTCFullYear(), v.getUTCMonth(), v.getUTCDate());\r\n return this.formatDate(utc, 'MM/dd/yyyy');\r\n };\r\n\r\n datetimeShort = (cfg: any) => {\r\n var v = cfg.$;\r\n if (!v)\r\n return 'mm/dd/yyyy hh:mm a';\r\n return this.formatDate(v, 'MM/dd/yyyy hh:mm a');\r\n };\r\n\r\n datetimespanShort = (cfg: any) => {\r\n var start = cfg.start.$;\r\n var end = cfg.end.$;\r\n var text = '';\r\n if (start !== null) {\r\n text = this.formatDate(start, 'MM/dd/yyyy hh:mm a') + ' - ';\r\n if (end != null) {\r\n if (start.getYear() === end.getYear() && start.getMonth() === end.getMonth() && start.getDay() === end.getDay())\r\n text += this.formatDate(end, 'hh:mm a');\r\n else\r\n text += this.formatDate(end, 'MM/dd/yyyy hh:mm a');\r\n }\r\n } else {\r\n if (end !== null)\r\n text += this.formatDate(end, 'MM/dd/yyyy hh:mm a');\r\n }\r\n return text;\r\n };\r\n\r\n decimal = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n excelFormula = (val: any) => {\r\n if (_.isNaN(val))\r\n return '#VALUE!';\r\n if (val === Infinity)\r\n return '#DIV/0!';\r\n return val;\r\n };\r\n\r\n file = (cfg: any) => {\r\n if (this.isPromise(cfg.filename.$))\r\n return null;\r\n var text = '';\r\n if (cfg.filename.$ !== null)\r\n text += cfg.filename.$;\r\n return text;\r\n };\r\n\r\n float = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n id = (value: string | null) => {\r\n if (!value) return null;\r\n return value;\r\n };\r\n\r\n integer = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n intlAddress = (cfg: any) => {\r\n var text = '';\r\n if (cfg.address1.$ !== null)\r\n text += cfg.address1.$ + ' ';\r\n if (cfg.address2.$ !== null)\r\n text += cfg.address2.$ + ' ';\r\n if (cfg.country.$ !== null)\r\n text += cfg.country.$ + ' ';\r\n if (cfg.city.$ !== null)\r\n text += cfg.city.$ + ' ';\r\n if (cfg.stateProvince.$ !== null)\r\n text += cfg.stateProvince.$ + ' ';\r\n if (cfg.postalCode.$ !== null)\r\n text += cfg.postalCode.$ + ' ';\r\n\r\n return text;\r\n };\r\n\r\n intlAddressBasic = (cfg: any) => {\r\n var text = '';\r\n if (cfg.address1.$ !== null)\r\n text += cfg.address1.$ + ' ';\r\n if (cfg.address2.$ !== null)\r\n text += cfg.address2.$ + ' ';\r\n if (cfg.country.$ !== null)\r\n text += cfg.country.$ + ' ';\r\n if (cfg.city.$ !== null)\r\n text += cfg.city.$ + ' ';\r\n if (cfg.stateProvince.$ !== null)\r\n text += cfg.stateProvince.$ + ' ';\r\n if (cfg.postalCode.$ !== null)\r\n text += cfg.postalCode.$ + ' ';\r\n\r\n return text;\r\n };\r\n\r\n naPhone = (number: any) => {\r\n if (!number) { return ''; }\r\n\r\n if (number) {\r\n if (number.$)\r\n number = number.$.replace(/[^0-9]/g, '');\r\n else\r\n number = number.$\r\n }\r\n\r\n if (!number) { return ''; }\r\n\r\n number = String(number);\r\n\r\n var formattedNumber = number;\r\n\r\n var c = (number[0] == '1') ? '+1 ' : '';\r\n number = number[0] == '1' ? number.slice(1) : number;\r\n\r\n var area = number.substring(0, 3);\r\n var front = number.substring(3, 6);\r\n var end = number.substring(6, 10);\r\n var ext = number.substring(10, 20);\r\n\r\n if (front) {\r\n formattedNumber = (c + \"(\" + area + \") \" + front);\r\n }\r\n if (end) {\r\n formattedNumber += (\"-\" + end);\r\n }\r\n if (ext) {\r\n formattedNumber += (\" x\" + ext);\r\n }\r\n return formattedNumber;\r\n }\r\n\r\n intlPhone = (cfg: any) => {\r\n var field = cfg;\r\n var text = '';\r\n //if (cfg.countryCode.$ !== null) {\r\n // var country = _.find(countries.allCountries, function (country) { return country.iso2 === cfg.countryCode.$ });\r\n // var dialCode = country.dialCode;\r\n // text += '+' + dialCode + ' ';\r\n //}\r\n //if (cfg.phone.$ !== null) {\r\n // var clean = cfg.phone.$.replace(/[^0-9]/g, '');\r\n // try {\r\n // var countryCode = cfg.countryCode.$ ? cfg.countryCode.$ : field.property.countryCode;\r\n // var number = clean;\r\n // text += number + ' ';\r\n // } catch (e) {\r\n // text += clean + ' ';\r\n // }\r\n //}\r\n //if (cfg.extension.$ !== null)\r\n // text += ' x' + cfg.extension.$;\r\n return text;\r\n };\r\n\r\n password = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n if (v.length > 0)\r\n return '********';\r\n return '';\r\n };\r\n\r\n percentage = (cfg: any) => {\r\n var v = cfg.$;\r\n if (typeof v === 'undefined')\r\n return undefined;\r\n if (v === null)\r\n return null;\r\n if (typeof v.toFixed === 'function')\r\n return (v * 100).toFixed(2) + '%';\r\n return v;\r\n };\r\n\r\n picture = (cfg: any) => {\r\n var text = '';\r\n if (cfg.filename.$ !== null)\r\n text += cfg.filename.$;\r\n return text;\r\n };\r\n\r\n ref = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v.toString();\r\n };\r\n\r\n richText = (cfg: any) => {\r\n return cfg.$;\r\n };\r\n\r\n socialSecurityNumber = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v.substring(0, 3) + '-' + v.substring(3, 5) + '-' + v.substring(5);\r\n };\r\n\r\n text = (cfg: any) => {\r\n return cfg.$;\r\n };\r\n\r\n textFormatting = (text: any) => {\r\n if (!text)\r\n return text;\r\n if (typeof text.replace === 'function')\r\n return text.replace(/[\\n\\r]+/g, ' ').replace(/\\s{2,}/g, ' ').replace(/^\\s+|\\s+$/, '');\r\n return text;\r\n };\r\n\r\n timeShort = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n\r\n var duration = moment.duration(v);\r\n\r\n var datetime = new Date('01/01/1999 ' + duration.hours + ':' + duration.minutes + ':' + duration.seconds);\r\n var datePipe = new DatePipe('en-US');\r\n return datePipe.transform(datetime, 'hh:mm a');\r\n };\r\n\r\n timeSpanHhMmSs = (cfg: any) => {\r\n return cfg.hours.$ + ' H, ' + cfg.minutes.$ + ' M, ' + cfg.seconds.$ + '.' + cfg.milliseconds.$ + ' S';\r\n };\r\n\r\n usaAddress = (cfg: any) => {\r\n let text = \"Loading...\";\r\n\r\n let buildText = () => {\r\n text = '';\r\n if (cfg.address1.$ !== null)\r\n text += cfg.address1.$ + ' ';\r\n if (cfg.address2.$ !== null)\r\n text += cfg.address2.$ + ' ';\r\n if (cfg.city.$ !== null)\r\n text += cfg.city.$ + ' ';\r\n if (cfg.state.$ !== null) {\r\n var state = this.appEnvironemt.globalDataContext?.entityAccess().searchByRefCacheOnly(this.modelTypeLookup.getType('StdUSAState'), cfg.state.$);\r\n if (state)\r\n text += state.Code + ', ';\r\n }\r\n if (cfg.zip.$ !== null) {\r\n if (cfg.zip.$.length > 5)\r\n text += cfg.zip.$.substring(0, 5) + '-' + cfg.zip.$.substring(5);\r\n else\r\n text += cfg.zip.$;\r\n }\r\n return text;\r\n }\r\n\r\n if (this.appEnvironemt.globalDataContext?.entityAccess().searchByRefCacheOnly(this.modelTypeLookup.getType('StdUSAState'), cfg.state.$)) {\r\n return buildText();\r\n }\r\n\r\n return null;\r\n };\r\n\r\n usaDollars = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return '$' + (v)?.toFixed(2);\r\n };\r\n\r\n usaSocialSecurity = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v.substring(0, 3) + '-' + v.substring(3, 5) + '-' + v.substring(5);\r\n };\r\n\r\n usaZip = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n if (v.length > 5)\r\n return v.substring(0, 5) + '-' + v.substring(5);\r\n return v;\r\n };\r\n\r\n zipCode = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n if (v.length > 5)\r\n return v.substring(0, 5) + '-' + v.substring(5);\r\n return v;\r\n };\r\n\r\n passwordEightBullets = (cfg: any) => {\r\n var v = cfg.$;\r\n return v;\r\n }\r\n\r\n formulaJsonParser = (formatter: (value: any) => any, data: string) => {\r\n var json = JSON.parse(data);\r\n if (json.DATA || (typeof json.DATA === 'number' && isFinite(json.DATA)))\r\n return formatter({ $: json.DATA });\r\n return { $: json.Error_Message };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class TruPredicateMap {\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruSort {\r\n\r\n constructor() { }\r\n\r\n /**\r\n * @callback differenceCallback\r\n * @param {*} valueA - any value except for undefined or null\r\n * @param {*} valueB - any value except for undefined or null\r\n * @return {number} - <0 for a sorts before b, 0 for a sorts same as b, >0 for a sorts after b.\r\n */\r\n\r\n /**\r\n * A generalized comparison algorithm for use with a sort function. Ensures that null\r\n * sorts before non-null. Delegates to difference() for both non-null values.\r\n * @param {*} valueA - any value except for undefined\r\n * @param {*} valueB - any value except for undefined\r\n * @param {differenceCallback} difference - same result meaning as for this function.\r\n * @return {number} - <0 for a sorts before b, 0 for a sorts same as b, >0 for a sorts after b.\r\n */\r\n numCompare = (valueA: any, valueB: any, difference: any) => {\r\n if (valueA === null || isNaN(valueA))\r\n return valueB === null ? 0 : -1;\r\n else if (valueB === null || isNaN(valueB))\r\n return 1;\r\n return difference(valueA, valueB);\r\n }\r\n\r\n compare = (valueA: any, valueB: any, difference: any, inverted: boolean = false) => {\r\n if (inverted) {\r\n if (valueA < 0)\r\n return 1;\r\n if (valueB < 0)\r\n return -1;\r\n } else {\r\n if (valueA < 0)\r\n return -1;\r\n if (valueB < 0)\r\n return 1;\r\n }\r\n if (valueA === null)\r\n return valueB === null ? 0 : -1;\r\n else if (valueB === null)\r\n return 1;\r\n return difference(valueA, valueB);\r\n }\r\n\r\n /**\r\n * Sort comparison for unnamed, number field control config objects.\r\n * @param {object} a,b - control config\r\n * @returns {number}\r\n */\r\n numberCompare = (a: any, b: any) => {\r\n return this.numCompare(a, b, function (x: any, y: any) { return x - y; });\r\n };\r\n\r\n /**\r\n * Alphabetical sort comparison for unnamed, string field control config objects.\r\n * @param {object} a,b - control config\r\n * @returns {number}\r\n */\r\n textCompare = (a: any, b: any) => {\r\n return this.compare(a, b, function (x: any, y: any) { return (x || \"\").localeCompare(y || \"\"); });\r\n };\r\n\r\n dateCompare = (a: any, b: any) => {\r\n return this.compare(new Date(a), new Date(b), function (x: any, y: any) { return x - y; });\r\n };\r\n\r\n /**\r\n * @callback filterCallback\r\n * @param {object} a,b - Control config\r\n * @returns {string} \r\n */\r\n\r\n /**\r\n * Alphabetical sort comparison for strings. Both input values are control config \r\n * objects and passed to a filter function to obtain a value for comparison.\r\n * @param {object} a,b - control config\r\n * @param {filterCallback} filter - filter function\r\n * @returns {number}\r\n */\r\n filteredTextCompare = (a: any, b: any, filter: any) => {\r\n return this.compare(filter(a), filter(b), function (x: any, y: any) { return x.localeCompare(y); });\r\n };\r\n\r\n\r\n /**\r\n * Alphabetical sort comparison for strings. Both input values are control config \r\n * objects and passed to a filter function to obtain a value for comparison.\r\n * @param {object} entity - a breeze $entity\r\n * @param {array} pathSegments - a list of strings that make up a navigation path\r\n * @returns {value}\r\n */\r\n getValueFromSortPath = (entity: any, pathSegments: any) => {\r\n var current = entity;\r\n for (var i = 0; i < pathSegments.length; i++) {\r\n var partName;\r\n // if we're not on the last iteration then\r\n if (i != pathSegments.length - 1)\r\n partName = 'o' + pathSegments[i];\r\n else\r\n partName = pathSegments[i];\r\n\r\n if (current[partName]) {\r\n current = current[partName];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return current;\r\n }\r\n}\r\n","export { }\r\ndeclare global {\r\n export interface Number {\r\n numberToString(): string;\r\n nullableNumberToString(this: number | null | undefined): string;\r\n }\r\n}\r\nNumber.prototype.numberToString = function(this: number | undefined): string {\r\n return this === undefined ? '' : (this).toString();\r\n}\r\nNumber.prototype.nullableNumberToString = function (this: number | null | undefined): string {\r\n return this === null || this === undefined ? '' : (this).toString();\r\n}\r\n\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { MatIconRegistry } from \"@angular/material/icon\";\n\nconst EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z\" /></svg>\n`;\n\nconst NOT_EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst GREATER_THAN_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst GREATER_THAN_OR_EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst LESS_THAN_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z\" /></svg>\n`;\n\nconst LESS_THAN_OR_EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst CONTAINS_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z\" /></svg>\n`;\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [],\n exports: []\n})\nexport class TruSearchIconModule {\n constructor(sanitizer: DomSanitizer, iconRegistry: MatIconRegistry) {\n iconRegistry.addSvgIconLiteral(\n \"equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"not-equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(NOT_EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"greater-than-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(GREATER_THAN_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"greater-than-or-equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(GREATER_THAN_OR_EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"less-than-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(LESS_THAN_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"less-than-or-equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(LESS_THAN_OR_EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"contains-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(CONTAINS_ICON)\n );\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { MaterialModule } from './material.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: []\r\n})\r\nexport class TruCommonModule { }\r\n","/*\n * Public API Surface of tru-common-lib\n */\n\n/*\n * Base Classes\n */\nexport * from './lib/base-classes/tru-component-config-base';\nexport * from './lib/base-classes/tru-control-component-config-base';\nexport * from './lib/base-classes/tru-edit-control-base';\nexport * from './lib/base-classes/tru-edit-control-config-base';\nexport * from './lib/base-classes/tru-edit-parent-control-config-base';\nexport * from './lib/base-classes/tru-edit-pkey-control-config-base';\nexport * from './lib/base-classes/tru-entity-base';\nexport * from './lib/base-classes/tru-list-control-config-base';\nexport * from './lib/base-classes/tru-property-config-base';\nexport * from './lib/base-classes/tru-search-control-base';\nexport * from './lib/base-classes/tru-search-control-parent-base';\nexport * from './lib/base-classes/tru-search-control-config-base';\nexport * from './lib/base-classes/tru-search-control-range-base';\nexport * from './lib/base-classes/tru-search-config-base';\nexport * from './lib/base-classes/tru-table-config-base';\n\n/*\n * Base View\n */\nexport * from './lib/base-views/detail/tru-detail-view-base';\n\nexport * from './lib/base-views/search/tru-search-view-base';\nexport * from './lib/base-views/search/services/tru-search-view-control-event-handler';\nexport * from './lib/base-views/search/services/tru-search-view-event-handler';\n\nexport * from './lib/base-views/search-result/tru-search-result-view-base';\n\nexport * from './lib/base-views/tru-view-base';\n\n/*\n * Classes\n */\nexport * from './lib/classes/tru-choice';\nexport * from './lib/classes/tru-context-filter';\nexport * from './lib/classes/tru-context-filter-choice';\nexport * from './lib/classes/tru-data-change';\nexport * from './lib/classes/tru-formula-eval';\nexport * from './lib/classes/tru-name-value';\nexport * from './lib/classes/tru-navigation-properties-config';\nexport * from './lib/classes/tru-navigation-property-config'\nexport * from './lib/classes/tru-predicate';\nexport * from './lib/classes/tru-property-config-cloud-file';\nexport * from './lib/classes/tru-property-config-date';\nexport * from './lib/classes/tru-property-config-decimal';\nexport * from './lib/classes/tru-property-config-file';\nexport * from './lib/classes/tru-property-config-foreign-key';\nexport * from './lib/classes/tru-property-config-integer';\nexport * from './lib/classes/tru-property-config-password';\nexport * from './lib/classes/tru-property-config-percentage';\nexport * from './lib/classes/tru-property-config-scientific';\nexport * from './lib/classes/tru-property-config-text';\nexport * from './lib/classes/tru-property-config-text-choices';\nexport * from './lib/classes/tru-property-config-usa-address';\nexport * from './lib/classes/tru-property-config-zip-code';\nexport * from './lib/classes/tru-query-predicate-manager';\nexport * from './lib/classes/tru-view-menu-config';\nexport * from './lib/classes/tru-validator-factory';\n\n/*\n * Components\n */\nexport * from './lib/components/about-dialog/tru-about-dialog';\n\nexport * from './lib/components/app-settings-dialog/tru-app-settings-dialog';\n\nexport * from './lib/components/card-column/classes/tru-card-column-config';\nexport * from './lib/components/card-column/classes/tru-card-column-data';\nexport * from './lib/components/card-column/classes/tru-card-column-search-results-config-base';\nexport * from './lib/components/card-column/tru-card-column';\nexport * from './lib/components/card-column/tru-card';\n\nexport * from './lib/components/clone-view/tru-clone-view';\n\nexport * from './lib/components/confirm-dialog/tru-confirm-dialog';\n\nexport * from './lib/components/data-grid/classes/tru-data-grid-config';\nexport * from './lib/components/data-grid/classes/tru-data-grid-cell-renderer';\nexport * from './lib/components/data-grid/classes/tru-data-grid-pkey-cell-renderer';\nexport * from './lib/components/data-grid/enums/tru-data-grid-types';\nexport * from './lib/components/data-grid/headers/tru-data-grid-header';\nexport * from './lib/components/data-grid/headers/tru-data-grid-header-filter';\nexport * from './lib/components/data-grid/headers/tru-data-grid-ref-header';\nexport * from './lib/components/data-grid/services/tru-data-grid-util';\nexport * from './lib/components/data-grid/tru-data-grid';\n\nexport * from './lib/components/desktop/tru-desktop';\n\nexport * from './lib/components/desktop/classes/tru-desktop-view-config';\n\nexport * from './lib/components/desktop/services/tru-desktop-manager';\nexport * from './lib/components/desktop/services/tru-window-manager';\nexport * from './lib/components/desktop/services/tru-desktop-view-event-notifier';\nexport * from './lib/components/desktop/services/tru-window-action-event-handler';\nexport * from './lib/components/desktop/services/tru-window-close-event-args';\nexport * from './lib/components/desktop/services/tru-window-event-args';\nexport * from './lib/components/desktop/services/tru-window-event-handler';\nexport * from './lib/components/desktop/services/tru-desktop-event-handler';\n\nexport * from './lib/components/error-dialog/services/tru-error-interceptor';\nexport * from './lib/components/error-dialog/tru-error-dialog';\n\nexport * from './lib/components/export-dialog/tru-export-dialog';\n\nexport * from './lib/components/grid-validation-dialog/tru-grid-validation-dialog';\nexport * from './lib/components/grid-validation-dialog/tru-grid-validation-dialog-config';\n\nexport * from './lib/components/layout/column/tru-column';\nexport * from './lib/components/layout/form/tru-form';\nexport * from './lib/components/layout/group-box/tru-group-box';\nexport * from './lib/components/layout/row/tru-row';\nexport * from './lib/components/layout/tab/tab/tru-tab';\nexport * from './lib/components/layout/tab/tab-group/tru-tab-group';\n\nexport * from './lib/components/password-dialog/tru-password-dialog';\n\nexport * from './lib/components/report-view/tru-report-view';\n\nexport * from './lib/components/toolbar/tru-toolbar';\nexport * from './lib/components/toolbar/menu/tru-toolbar-menu';\nexport * from './lib/components/toolbar/button/tru-toolbar-button';\nexport * from './lib/components/toolbar/dropdown/tru-toolbar-dropdown';\nexport * from './lib/components/toolbar/separator/tru-toolbar-separator';\nexport * from './lib/components/toolbar/context-filter/tru-toolbar-context-filter';\nexport * from './lib/components/toolbar/text/tru-toolbar-text';\nexport * from './lib/components/toolbar/textbox/tru-toolbar-textbox';\nexport * from './lib/components/toolbar/app-customization/tru-toolbar-app-customization';\nexport * from './lib/components/toolbar/user-profile/tru-toolbar-user-profile';\n\nexport * from './lib/components/login/tru-login';\nexport * from './lib/components/login/tru-login-module';\nexport * from './lib/components/login/services/tru-auth';\nexport * from './lib/components/login/services/tru-auth-interceptor';\n\nexport * from './lib/components/validation-dialog/tru-validation-dialog';\nexport * from './lib/components/validation-dialog/tru-validation-dialog-config';\nexport * from './lib/components/validation-dialog/tru-validation-dialog-context';\n\n/*\n * Directives\n */\nexport * from './lib/directives/breeze-validator/tru-breeze-validator';\nexport * from './lib/directives/search-panel-position-manager/tru-search-panel-position-manager';\nexport * from './lib/directives/select-panel/tru-mat-select-panel';\n\n/*\n * Interfaces\n */\nexport * from './lib/interfaces/tru-ancestor';\nexport * from './lib/interfaces/tru-value';\n\n/*\n * Services\n */\nexport * from './lib/services/tru-action-invoke';\nexport * from './lib/services/tru-app-environment';\nexport * from './lib/services/tru-breeze-context-factory';\nexport * from './lib/services/tru-breeze-metadata-provider';\nexport * from './lib/services/tru-cloud-file-manager';\nexport * from './lib/services/tru-component-lookup';\nexport * from './lib/services/tru-connection-hub';\nexport * from './lib/services/tru-context-filters';\nexport * from './lib/services/tru-data-context';\nexport * from './lib/services/tru-entity-accessor';\nexport * from './lib/services/tru-formatter';\nexport * from './lib/services/tru-model-navigation-properties-lookup';\nexport * from './lib/services/tru-model-property-lookup';\nexport * from './lib/services/tru-model-type-lookup';\nexport * from './lib/services/tru-predicate-map';\nexport * from './lib/services/tru-report-manager';\nexport * from './lib/services/tru-search-result-view-manager';\nexport * from './lib/services/tru-sort';\nexport * from './lib/services/tru-model-table-lookup';\nexport * from './lib/services/tru-text-manager';\nexport * from './lib/services/tru-ui-notification';\nexport * from './lib/services/tru-user-preference-manager';\nexport * from './lib/services/tru-user';\nexport * from './lib/services/tru-util';\n\n/*\n * Global Extensions\n */\nexport * from './lib/extensions';\n\n/*\n * Modules\n */\nexport * from './lib/assets/tru-icon-module';\nexport * from './lib/assets/tru-search-icon-module';\nexport * from './lib/tru-common-module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BreezeDataService","i1.TruBreezeMetadataProvider","i2.TruAppEnvironment","i2","i5","i6","i7","i8","i4","i1","i1.TruUtil","i3.TruUiNotification","i4.TruTextManager","i5.TruUser","i1.TruBreezeContextFactory","i2.TruModelNavigationPropertiesLookup","i3.TruGlobalDataContext","i4.TruAppEnvironment","i5.TruEntityAccessor","i6.TruUiNotification","i1.TruContextFilters","i2.TruDesktopEventHandler","i1.TruDesktopManager","i2.TruWindowEventHandler","i4.TruUser","i1.TruTextManager","i2.TruUtil","MatFormField","MatOption","i1.TruUser","i2.TruAuth","i3.TruDataContext","i4.TruModelTableLookup","i5.TruModelPropertyLookup","i6.TruModelTypeLookup","i7.TruModelNavigationPropertiesLookup","i8.TruUiNotification","i9","i11","i1.TruDataContext","i2.TruComponentLookup","i3.TruAppEnvironment","i5.TruDesktopManager","i6.TruWindowEventHandler","i7.TruDesktopViewEventNotifier","i8.TruUtil","i1.TruUiNotification","_","i1.TruModelTypeLookup","i3.TruUser","i1.TruUserPreferenceManager","i2.TruModelTableLookup","uuidv4","i2.TruModelTypeLookup","i3.TruSearchViewEventHandler","i4.TruSearchResultViewManager","i1.TruDataGridClipboard","i3","moment","i3.TruModelTypeLookup","i4.TruModelPropertyLookup","i3.TruSearchResultViewManager","i5.TruSearchViewEventHandler","i7.TruConnectionHub","i8.TruWindowEventHandler","i9.TruUtil","i10.TruTabGroupEventNotifier","i2.TruEntityAccessor","i4.TruAuth","i5.TruUiNotification","MatDivider","i1.TruComponentLookup","i2.TruTextManager","i3.TruDesktopManager","i4.TruWindowEventHandler","i7.TruGlobalDataContext","i8.TruUser","i4.TruActionInvoke","i1.TruWindowEventHandler","i2.TruUiNotification","i3.TruTextManager","i5.TruUtil","i1.TruDesktopService","i3.TruDesktopEventHandler","i4.TruUtil","i4.TruUiNotification","i5.TruComponentLookup","i6.TruAppEnvironment","i1.TruErrorManager","i1.TruTabGroupEventNotifier","i1.TruAuth","i1.TruAppEnvironment"],"mappings":"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"}
1
+ {"version":3,"file":"trudb-tru-common-lib.mjs","sources":["../../../projects/tru-common-lib/src/lib/base-classes/tru-component-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-control-component-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-control-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-parent-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-edit-pkey-control-config-base.ts","../../../projects/tru-common-lib/src/lib/classes/tru-merge-data-set.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-entity-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-list-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-property-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-parent-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-control-range-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-search-config-base.ts","../../../projects/tru-common-lib/src/lib/base-classes/tru-table-config-base.ts","../../../projects/tru-common-lib/src/lib/services/tru-breeze-metadata-provider.ts","../../../projects/tru-common-lib/src/lib/services/tru-app-environment.ts","../../../projects/tru-common-lib/src/lib/services/tru-breeze-context-factory.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-navigation-properties-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-global-data-context.ts","../../../projects/tru-common-lib/src/lib/material.module.ts","../../../projects/tru-common-lib/src/lib/components/confirm-dialog/tru-confirm-dialog.ts","../../../projects/tru-common-lib/src/lib/components/confirm-dialog/tru-confirm-dialog.html","../../../projects/tru-common-lib/src/lib/components/export-dialog/tru-export-dialog.ts","../../../projects/tru-common-lib/src/lib/components/export-dialog/tru-export-dialog.html","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-config.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/classes/tru-password-change-request.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/tru-password-dialog.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/tru-password-dialog.html","../../../projects/tru-common-lib/src/lib/components/about-dialog/tru-about-dialog.ts","../../../projects/tru-common-lib/src/lib/components/about-dialog/tru-about-dialog.html","../../../projects/tru-common-lib/src/lib/services/tru-ui-notification.ts","../../../projects/tru-common-lib/src/lib/services/tru-util.ts","../../../projects/tru-common-lib/src/lib/services/tru-text-manager.ts","../../../projects/tru-common-lib/src/lib/services/tru-user.ts","../../../projects/tru-common-lib/src/lib/services/tru-entity-accessor.ts","../../../projects/tru-common-lib/src/lib/services/tru-data-context.ts","../../../projects/tru-common-lib/src/lib/components/desktop/classes/tru-desktop-view-config.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-event-args.ts","../../../projects/tru-common-lib/src/lib/services/tru-context-filters.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-event-handler.ts","../../../projects/tru-common-lib/src/lib/base-views/search/tru-search-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/search/tru-search-view-base.html","../../../projects/tru-common-lib/src/lib/components/report-view/tru-report-view.ts","../../../projects/tru-common-lib/src/lib/components/report-view/tru-report-view.html","../../../projects/tru-common-lib/src/lib/base-views/tru-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/tru-view-base.html","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-close-event-args.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/button/tru-toolbar-button.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/button/tru-toolbar-button.html","../../../projects/tru-common-lib/src/lib/directives/select-panel/tru-mat-select-panel.ts","../../../projects/tru-common-lib/src/lib/pipes/open-on-start.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/context-filter/tru-toolbar-context-filter.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/context-filter/tru-toolbar-context-filter.html","../../../projects/tru-common-lib/src/lib/components/toolbar/dropdown/tru-toolbar-dropdown.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/dropdown/tru-toolbar-dropdown.html","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button.html","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-item/tru-toolbar-menu-item.html","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/tru-toolbar-menu.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/tru-toolbar-menu.html","../../../projects/tru-common-lib/src/lib/components/toolbar/separator/tru-toolbar-separator.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/separator/tru-toolbar-separator.html","../../../projects/tru-common-lib/src/lib/components/toolbar/text/tru-toolbar-text.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/text/tru-toolbar-text.html","../../../projects/tru-common-lib/src/lib/components/login/services/tru-auth-cache.ts","../../../projects/tru-common-lib/src/lib/components/login/services/tru-auth.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/user-profile/tru-toolbar-user-profile.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/user-profile/tru-toolbar-user-profile.html","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar.html","../../../projects/tru-common-lib/src/lib/directives/rendered/tru-rendered.ts","../../../projects/tru-common-lib/src/lib/assets/tru-icon-module.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-table-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-property-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-type-lookup.ts","../../../projects/tru-common-lib/src/lib/components/clone-view/tru-clone-view.ts","../../../projects/tru-common-lib/src/lib/components/clone-view/tru-clone-view.html","../../../projects/tru-common-lib/src/lib/services/tru-component-lookup.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-view-event-notifier.ts","../../../projects/tru-common-lib/src/lib/base-views/detail/tru-detail-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/detail/tru-detail-view-base.html","../../../projects/tru-common-lib/src/lib/base-views/search/services/tru-search-view-control-event-handler.ts","../../../projects/tru-common-lib/src/lib/base-views/search/services/tru-search-view-event-handler.ts","../../../projects/tru-common-lib/src/lib/base-views/search-result/tru-search-result-view-base.ts","../../../projects/tru-common-lib/src/lib/base-views/search-result/tru-search-result-view-base.html","../../../projects/tru-common-lib/src/lib/classes/tru-choice.ts","../../../projects/tru-common-lib/src/lib/classes/tru-context-filter.ts","../../../projects/tru-common-lib/src/lib/classes/tru-context-filter-choice.ts","../../../projects/tru-common-lib/src/lib/classes/tru-data-change.ts","../../../projects/tru-common-lib/src/lib/classes/tru-formula-eval.ts","../../../projects/tru-common-lib/src/lib/classes/tru-name-value.ts","../../../projects/tru-common-lib/src/lib/classes/tru-navigation-properties-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-navigation-property-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-predicate.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-foreign-key.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-cloud-file.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-date.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-decimal.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-file.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-integer.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-text.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-password.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-percentage.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-scientific.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-text-choices.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-usa-address.ts","../../../projects/tru-common-lib/src/lib/classes/tru-property-config-zip-code.ts","../../../projects/tru-common-lib/src/lib/classes/tru-query-predicate-manager.ts","../../../projects/tru-common-lib/src/lib/classes/tru-view-menu-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-validator-factory.ts","../../../projects/tru-common-lib/src/lib/services/tru-user-preference-manager.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/on-starup/tru-app-window-open-on-startup-setting.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/on-starup/tru-app-window-open-on-startup-setting.html","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/tru-app-window-settings.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/windows/tru-app-window-settings.html","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/tru-app-settings-dialog.ts","../../../projects/tru-common-lib/src/lib/components/app-settings-dialog/tru-app-settings-dialog.html","../../../projects/tru-common-lib/src/lib/components/card-column/classes/tru-card-column-data.ts","../../../projects/tru-common-lib/src/lib/components/card-column/classes/tru-card-column-search-results-config-base.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/textbox/tru-toolbar-textbox.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/textbox/tru-toolbar-textbox.html","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card.ts","../../../projects/tru-common-lib/src/lib/services/tru-search-result-view-manager.ts","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card-column.ts","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card-column.html","../../../projects/tru-common-lib/src/lib/components/data-grid/classes/tru-data-grid-cell-renderer.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/services/tru-data-grid-clipboard.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/classes/tru-data-grid-pkey-cell-renderer.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/enums/tru-data-grid-types.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/headers/tru-data-grid-header.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/headers/tru-data-grid-header-filter.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/headers/tru-data-grid-ref-header.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/services/tru-data-grid-util.ts","../../../projects/tru-common-lib/src/lib/components/grid-validation-dialog/tru-grid-validation-dialog.ts","../../../projects/tru-common-lib/src/lib/components/grid-validation-dialog/tru-grid-validation-dialog.html","../../../projects/tru-common-lib/src/lib/components/grid-validation-dialog/tru-grid-validation-dialog-config.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay.ts","../../../projects/tru-common-lib/src/lib/classes/tru-merge-data.ts","../../../projects/tru-common-lib/src/lib/classes/tru-data-change-parser.ts","../../../projects/tru-common-lib/src/lib/services/tru-connection-hub.ts","../../../projects/tru-common-lib/src/lib/components/layout/tab/services/tru-tab-group-event-notifier.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid.html","../../../projects/tru-common-lib/src/lib/components/toolbar/app-customization/tru-toolbar-app-customization.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/app-customization/tru-toolbar-app-customization.html","../../../projects/tru-common-lib/src/lib/components/desktop/menubar/tru-desktop-menubar.ts","../../../projects/tru-common-lib/src/lib/components/desktop/menubar/tru-desktop-menubar.html","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-service.ts","../../../projects/tru-common-lib/src/lib/components/desktop/statusbar/tru-desktop-statusbar.ts","../../../projects/tru-common-lib/src/lib/components/desktop/statusbar/tru-desktop-statusbar.html","../../../projects/tru-common-lib/src/lib/components/desktop/taskbar/tru-desktop-taskbar.ts","../../../projects/tru-common-lib/src/lib/components/desktop/taskbar/tru-desktop-taskbar.html","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view.ts","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view.html","../../../projects/tru-common-lib/src/lib/services/tru-action-invoke.ts","../../../projects/tru-common-lib/src/lib/services/tru-report-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/directives/resizable/tru-desktop-resizable.ts","../../../projects/tru-common-lib/src/lib/components/desktop/directives/window-state-monitor/tru-desktop-window-state-monitor.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/window/tru-desktop-window.ts","../../../projects/tru-common-lib/src/lib/components/desktop/window/tru-desktop-window.html","../../../projects/tru-common-lib/src/lib/components/desktop/viewport/tru-desktop-viewport.ts","../../../projects/tru-common-lib/src/lib/components/desktop/viewport/tru-desktop-viewport.html","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop.ts","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop.html","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-action-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/error-dialog/tru-error-dialog.ts","../../../projects/tru-common-lib/src/lib/components/error-dialog/tru-error-dialog.html","../../../projects/tru-common-lib/src/lib/components/error-dialog/classes/tru-error-dialog-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-server-error.ts","../../../projects/tru-common-lib/src/lib/services/tru-error-manager.ts","../../../projects/tru-common-lib/src/lib/components/error-dialog/services/tru-error-interceptor.ts","../../../projects/tru-common-lib/src/lib/components/layout/column/tru-column.ts","../../../projects/tru-common-lib/src/lib/components/layout/column/tru-column.html","../../../projects/tru-common-lib/src/lib/components/layout/form/tru-form.ts","../../../projects/tru-common-lib/src/lib/components/layout/form/tru-form.html","../../../projects/tru-common-lib/src/lib/components/layout/group-box/tru-group-box.ts","../../../projects/tru-common-lib/src/lib/components/layout/group-box/tru-group-box.html","../../../projects/tru-common-lib/src/lib/components/layout/row/tru-row.ts","../../../projects/tru-common-lib/src/lib/components/layout/row/tru-row.html","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab/tru-tab.ts","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab/tru-tab.html","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab-group/tru-tab-group.ts","../../../projects/tru-common-lib/src/lib/components/layout/tab/tab-group/tru-tab-group.html","../../../projects/tru-common-lib/src/lib/components/login/tru-login.ts","../../../projects/tru-common-lib/src/lib/components/login/tru-login.html","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-jwt-strategy.ts","../../../projects/tru-common-lib/src/lib/components/login/services/tru-auth-interceptor.ts","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-session-strategy.ts","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-strategy-provider.ts","../../../projects/tru-common-lib/src/lib/components/login/tru-login-module.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-context.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog.html","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-config.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator.ts","../../../projects/tru-common-lib/src/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.ts","../../../projects/tru-common-lib/src/lib/services/tru-cloud-file-manager.ts","../../../projects/tru-common-lib/src/lib/services/tru-formatter.ts","../../../projects/tru-common-lib/src/lib/services/tru-predicate-map.ts","../../../projects/tru-common-lib/src/lib/services/tru-sort.ts","../../../projects/tru-common-lib/src/lib/extensions.ts","../../../projects/tru-common-lib/src/lib/assets/tru-search-icon-module.ts","../../../projects/tru-common-lib/src/lib/tru-common-module.ts","../../../projects/tru-common-lib/src/public-api.ts","../../../projects/tru-common-lib/src/trudb-tru-common-lib.ts"],"sourcesContent":["export class TruComponentConfigBase {\r\n constructor() { }\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { TruPropertyConfigBase } from './tru-property-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\n\r\nexport abstract class TruControlComponentConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract relatedTableType: typeof TruEntityBase | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n abstract value: (entity: any) => {}\r\n constructor() { }\r\n\r\n protected hid?(entity: TruEntityBase): string | null | undefined;\r\n protected goTo?(entity: TruEntityBase): void;\r\n protected choices?(): Observable<{ label: string, value: { $: any } }[]>;\r\n}\r\n","import { Directive, Input } from '@angular/core';\nimport { TruEditControlConfigBase } from './tru-edit-control-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\n\n/*\n * The abstract class needs the Angular @Directive decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruEditControlBase {\n @Input()\n abstract config: TruEditControlConfigBase<any>;\n\n @Input()\n abstract entity: TruEntityBase;\n\n abstract label: string | undefined;\n}\n","import { Observable, Subject } from 'rxjs';\r\nimport { TruPropertyConfigBase } from './tru-property-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\nimport { TruChoice } from '../classes/tru-choice';\r\n\r\nexport abstract class TruEditControlConfigBase<T> {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract relatedTableType: typeof TruEntityBase | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\r\n abstract subProperties: Array<string>;\r\n abstract subPropertyNames: Array<string>;\r\n abstract isSubProperty: boolean;\r\n\r\n abstract get property(): TruPropertyConfigBase;\r\n\r\n abstract set entity(value: any);\r\n\r\n abstract get $(): T;\r\n abstract set $(value: T);\r\n\r\n abstract onChange(): Subject<T>\r\n abstract change(value: T): void;\r\n\r\n constructor() { }\r\n\r\n protected hid?(entity: TruEntityBase): string | null | undefined;\r\n protected choices?: (ref: number | null | undefined, allRecords: boolean, dependantEntity: typeof TruEntityBase | undefined) => Observable<TruChoice[]>;\r\n protected severChoices?: () => Observable<TruChoice[]>;\r\n protected choicesEntityType?: any;\r\n}\r\n","import { TruPropertyConfigBase } from './tru-property-config-base';\r\n\r\nexport abstract class TruEditParentControlConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n\r\n constructor() { }\r\n}\r\n","import { TruPropertyConfigBase } from './tru-property-config-base';\r\n\r\nexport abstract class TruEditPkeyControlConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n abstract set entity(value: any);\r\n abstract get $(): number;\r\n constructor() { }\r\n}\r\n","import { TruMergeData } from \"./tru-merge-data\";\r\n\r\nexport class TruMergeDataSet {\r\n private _data: Record<string, TruMergeData> = {};\r\n\r\n get = (propertyName: string): TruMergeData | undefined => {\r\n return this._data[propertyName];\r\n }\r\n\r\n set = (propertyName: string, data: TruMergeData) => {\r\n this._data[propertyName] = data;\r\n }\r\n\r\n clear = (propertyName: string) => {\r\n delete this._data[propertyName];\r\n }\r\n\r\n getAll = (): Record<string, TruMergeData> => {\r\n return this._data;\r\n }\r\n\r\n clearAll = () => {\r\n this._data = {};\r\n }\r\n\r\n isEmpty = (): boolean => {\r\n return Object.keys(this._data).length === 0;\r\n }\r\n\r\n constructor() {}\r\n}\r\n","import { Entity, EntityAspect, EntityType, PropertyChangedEventArgs } from 'breeze-client';\r\nimport { TruMergeDataSet } from '../classes/tru-merge-data-set';\r\n\r\nexport class TruEntityBase implements Entity {\r\n get Ref(): number { return 0 };\r\n\r\n constructor(...args: any[]) { }\r\n\r\n entityAspect: EntityAspect = new EntityAspect();\r\n entityType!: EntityType;\r\n Created: Date = new Date();\r\n CreatedRef: number = -1;\r\n Updated: Date | undefined = undefined;\r\n UpdatedRef: number | undefined = undefined;\r\n rowver: any;\r\n\r\n HID: string | null | undefined;\r\n\r\n Merge_Data_Set: TruMergeDataSet = new TruMergeDataSet();\r\n Is_Invalid: boolean | undefined = undefined;\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\nimport { TruPropertyConfigBase } from './tru-property-config-base';\r\nimport { TruEntityBase } from './tru-entity-base';\r\nimport { TruChoice } from '../classes/tru-choice';\r\n\r\nexport abstract class TruListControlConfigBase<T> {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract relatedTableType: typeof TruEntityBase | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\r\n abstract subProperties: Array<string>;\r\n abstract subPropertyNames: Array<string>;\r\n abstract isSubProperty: boolean;\r\n\r\n abstract get property(): TruPropertyConfigBase;\r\n\r\n abstract set entity(value: any);\r\n\r\n abstract get $(): T;\r\n abstract set $(value: T);\r\n\r\n abstract onChange(): Subject<T>\r\n abstract change(value: T): void;\r\n\r\n constructor() { }\r\n\r\n protected hid?(entity: TruEntityBase): string | null | undefined;\r\n protected choices?: (ref: number | null | undefined, allRecords: boolean, dependantEntity: typeof TruEntityBase | undefined) => Observable<TruChoice[]>;\r\n protected choicesEntityType?: any;\r\n}\r\n","import { ITruAncestor } from \"../interfaces/tru-ancestor\";\r\n\r\n\r\nexport class TruPropertyConfigBase {\r\n constructor() { }\r\n\r\n isNullable: boolean = false;\r\n canDisplay: boolean | null | undefined = false;\r\n canEdit: boolean | null | undefined = false;\r\n readOnly: boolean = false;\r\n globalCache: boolean = false;\r\n uniqueConstraint: boolean = false;\r\n typeName: string | undefined = undefined;\r\n formatterName: string | undefined = undefined;\r\n formatter: ((value: any) => string | null | undefined) | undefined = undefined;\r\n choices: any = undefined;\r\n validation: string | undefined = undefined;\r\n excludeFromCloning: boolean = false;\r\n dependsOn: Array<ITruAncestor> = []\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\n\n/*\n * The abstract class needs the Angular @Directive decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruSearchControlBase {\n\n operatorLookup: { [key: string]: string } = {\n 'equal': 'eq',\n 'not-equal': 'not-eq',\n 'greater-than': 'gt',\n 'greater-than-or-equal': 'ge',\n 'less-than': 'lt',\n 'less-than-or-equal': 'le',\n 'contains': 'contains',\n 'default': 'eq'\n };\n\n operatorIconLookup: { [key: string]: string } = {\n 'equal': 'equal-operator-icon',\n 'not-equal': 'not-equal-operator-icon',\n 'greater-than': 'greater-than-operator-icon',\n 'greater-than-or-equal': 'greater-than-or-equal-operator-icon',\n 'less-than': 'less-than-operator-icon',\n 'less-than-or-equal': 'less-than-or-equal-operator-icon',\n 'contains': 'contains-operator-icon',\n 'default': 'equal-operator-icon',\n };\n\n operatorIconTitleLookup: { [key: string]: string } = {\n 'equal': 'Equal To',\n 'not-equal': 'Not Equal To',\n 'greater-than': 'Greater Than',\n 'greater-than-or-equal': 'Greater Than Or Equal To',\n 'less-than': 'Less Than',\n 'less-than-or-equal': 'Less Than Or Equal To',\n 'contains': 'Contains',\n 'default': 'Equal To',\n };\n\n @Input()\n abstract config: any;\n\n abstract label: string | undefined;\n\n abstract operator: string | undefined;\n\n abstract operatorIcon?: string;\n\n abstract operatorIconTitle?: string;\n\n abstract onOperatorIconClick(): void;\n\n abstract updatePredicate(): void;\n}\n","import { Directive, Input } from '@angular/core';\r\n\n/*\n * The abstract class needs the Angular @Directive decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruSearchControlParentBase {\n\n operatorLookup: { [key: string]: string } = {\n 'equal': 'eq',\n 'not-equal': 'not-eq',\n 'greater-than': 'gt',\n 'greater-than-or-equal': 'ge',\n 'less-than': 'lt',\n 'less-than-or-equal': 'le',\n 'contains': 'contains',\n 'default': 'eq'\n };\n\n operatorIconLookup: { [key: string]: string } = {\n 'equal': 'equal-operator-icon',\n 'not-equal': 'not-equal-operator-icon',\n 'greater-than': 'greater-than-operator-icon',\n 'greater-than-or-equal': 'greater-than-or-equal-operator-icon',\n 'less-than': 'less-than-operator-icon',\n 'less-than-or-equal': 'less-than-or-equal-operator-icon',\n 'contains': 'contains-operator-icon',\n 'default': 'equal-operator-icon',\n };\n\n operatorIconTitleLookup: { [key: string]: string } = {\n 'equal': 'Equal To',\n 'not-equal': 'Not Equal To',\n 'greater-than': 'Greater Than',\n 'greater-than-or-equal': 'Greater Than Or Equal To',\n 'less-than': 'Less Than',\n 'less-than-or-equal': 'Less Than Or Equal To',\n 'contains': 'Contains',\n 'default': 'Equal To',\n };\n\n @Input()\n abstract config: any;\n\n abstract updatePredicate(): void;\n}\n","import { TruPropertyConfigBase } from \"./tru-property-config-base\";\r\nimport { TruQueryPredicateManager } from \"../classes/tru-query-predicate-manager\";\r\n\r\nexport abstract class TruSearchControlConfigBase {\r\n abstract label: string | undefined;\r\n abstract propertyName: string | undefined;\r\n abstract rootTable: string | undefined;\r\n abstract propertyPath: string | undefined;\r\n abstract get property(): TruPropertyConfigBase;\r\n abstract queryPredicate: TruQueryPredicateManager;\r\n abstract operator: string | undefined;\r\n\r\n constructor() { }\r\n\r\n choices?: any; //Observable<{ label: string, value: { $: any } }[]>;\r\n}\r\n","import { NgModule, Directive, Input } from '@angular/core';\n\n/*\n * The abstract class needs the Angular @Component decorator in order in implement @Input \n */\n@Directive()\nexport abstract class TruSearchControlRangeBase {\n\n operatorLookup: { [key: string]: string } = {\n 'equal': 'eq',\n 'not-equal': 'not-eq',\n 'greater-than': 'gt',\n 'greater-than-or-equal': 'ge',\n 'less-than': 'lt',\n 'less-than-or-equal': 'le',\n 'contains': 'contains',\n 'default': 'eq'\n };\n\n operatorIconLookup: { [key: string]: string } = {\n 'equal': 'equal-operator-icon',\n 'not-equal': 'not-equal-operator-icon',\n 'greater-than': 'greater-than-operator-icon',\n 'greater-than-or-equal': 'greater-than-or-equal-operator-icon',\n 'less-than': 'less-than-operator-icon',\n 'less-than-or-equal': 'less-than-or-equal-operator-icon',\n 'contains': 'contains-operator-icon',\n 'default': 'equal-operator-icon',\n };\n\n operatorIconTitleLookup: { [key: string]: string } = {\n 'equal': 'Equal To',\n 'not-equal': 'Not Equal To',\n 'greater-than': 'Greater Than',\n 'greater-than-or-equal': 'Greater Than Or Equal To',\n 'less-than': 'Less Than',\n 'less-than-or-equal': 'Less Than Or Equal To',\n 'contains': 'Contains',\n 'default': 'Equal To',\n };\n\n @Input()\n abstract config: any;\n\n abstract label: string | undefined;\n\n abstract startOperator: string | undefined;\n\n abstract startOperatorIcon: string;\n\n abstract startOperatorIconTitle: string;\n\n abstract endOperator: string | undefined;\n\n abstract endOperatorIcon: string;\n\n abstract endOperatorIconTitle: string;\n\n abstract onStartOperatorIconClick(): void;\n\n abstract onEndOperatorIconClick(): void;\n\n abstract updatePredicate(): void;\n}\n","import { TruControlComponentConfigBase } from \"./tru-control-component-config-base\";\r\n\r\nexport abstract class TruSearchConfigBase {\r\n abstract name: string;\r\n abstract noControls: boolean;\r\n abstract controls: Array<[string, string]> | undefined;\r\n abstract controlConfigs: Record<string, TruControlComponentConfigBase>\r\n abstract setupQuery: (query: any, predicateMap: any) => {};\r\n constructor() { }\r\n}\r\n","export class TruTableConfigBase {\r\n constructor() { }\r\n\r\n name: string | undefined = undefined;\r\n label: string | undefined = undefined;\r\n pluralLabel: string | undefined = undefined;\r\n pluralName: string | undefined = undefined;\r\n canDisplay: boolean = false;\r\n canEdit: boolean = false;\r\n canAdd: boolean = false;\r\n canDelete: boolean = false;\r\n isAssociatedWithMenuItem: boolean = false;\r\n openOnStart: boolean = false;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruBreezeMetadataProvider {\r\n private _metadata: object = {};\r\n\r\n constructor() { }\r\n\r\n get metadata(): object {\r\n return this._metadata;\r\n }\r\n\r\n set metadata(json: object) {\r\n this._metadata = json;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Entity } from \"breeze-client\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { TruDataContext } from \"./tru-data-context\";\r\n\r\nexport interface ActionEventCompleted {\r\n successful: boolean;\r\n entities?: Array<Entity>;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruAppEnvironment {\r\n private _appName: string;\r\n private _appDescription: string;\r\n private _appUri: string;\r\n private _enablePasswordStrength: boolean;\r\n private _backgroundImageUri: string;\r\n private _environmentWarning: string;\r\n private _loginFormTitle: string;\r\n\r\n private _authType: 'session' | 'jwt';\r\n private _maxRecordCount: number;\r\n private _isSaving: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _saveComplete: BehaviorSubject<ActionEventCompleted | null> = new BehaviorSubject<ActionEventCompleted | null>(null);\r\n private _revertComplete: BehaviorSubject<ActionEventCompleted | null> = new BehaviorSubject<ActionEventCompleted | null>(null);\r\n private _deleteComplete: BehaviorSubject<ActionEventCompleted | null> = new BehaviorSubject<ActionEventCompleted | null>(null);\r\n private _globalDataContext: TruDataContext | null = null;\r\n\r\n readonly msgModifierKeyLabel: string;\r\n readonly msgConfirmExitWithChangesPending: string;\r\n readonly msgDeleteSuccessful: string;\r\n readonly msgSaveSuccessful: string;\r\n readonly msgSettingsUpdatedSuccessful: string;\r\n readonly msgNoChangesToSave: string;\r\n readonly msgSaveInProgress: string;\r\n readonly msgInvalidData: string;\r\n readonly msgDirtyPreventsReadOnly: string;\r\n readonly msgDirtyPreventsNavigate: string;\r\n readonly msgDirtyPreventsClose: string;\r\n readonly msgDirtyPreventsDeleteExistingRecord: string;\r\n readonly msgNoDeleteAccess: string;\r\n readonly msgCannotDeleteNewAndExistingRecords: string;\r\n readonly msgDeleteReferencingRecordsFirst: string;\r\n readonly msgNoRecordsSelected: string;\r\n\r\n public onSavingChanged$: Observable<boolean> = this._isSaving.asObservable();\r\n public onSaveComplete$: Observable<ActionEventCompleted | null> = this._saveComplete.asObservable();\r\n public onRevertComplete$: Observable<ActionEventCompleted | null> = this._revertComplete.asObservable();\r\n public onDeleteComplete$: Observable<ActionEventCompleted | null> = this._deleteComplete.asObservable();\r\n\r\n constructor() {\r\n this._appName = '';\r\n this._appDescription = '';\r\n this._appUri = '';\r\n this._enablePasswordStrength = true;\r\n this._backgroundImageUri = '';\r\n this._environmentWarning = '';\r\n this._loginFormTitle = '';\r\n this._authType = 'jwt';\r\n this._maxRecordCount = 0;\r\n \r\n this.msgModifierKeyLabel = this.isMac ? 'Cmd' : 'Ctrl';\r\n this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';\r\n this.msgDeleteSuccessful = 'Delete succeeded';\r\n this.msgSaveSuccessful = 'Save succeeded';\r\n this.msgSettingsUpdatedSuccessful = 'Settings updated';\r\n this.msgNoChangesToSave = 'No changes to save';\r\n this.msgSaveInProgress = 'Save in progress';\r\n this.msgInvalidData = 'Invalid data';\r\n this.msgDirtyPreventsReadOnly = 'Save or revert before disabling editing';\r\n this.msgDirtyPreventsNavigate = 'Save or revert before navigating';\r\n this.msgDirtyPreventsClose = 'Save or revert before closing window';\r\n this.msgDirtyPreventsDeleteExistingRecord = 'Save or revert before deleting';\r\n this.msgNoDeleteAccess = 'Contact administrator about delete access';\r\n this.msgCannotDeleteNewAndExistingRecords = 'Delete new or existing records - but not both';\r\n this.msgDeleteReferencingRecordsFirst = 'Delete all referencing records first';\r\n this.msgNoRecordsSelected = 'No Records selected';\r\n }\r\n\r\n get appName(): string {\r\n return this._appName;\r\n }\r\n\r\n set appName(name: string) {\r\n this._appName = name;\r\n }\r\n\r\n get appDescription(): string {\r\n return this._appDescription;\r\n };\r\n\r\n set appDescription(description: string) {\r\n this._appDescription = description;\r\n }\r\n\r\n get enablePasswordStrength(): boolean {\r\n return this._enablePasswordStrength;\r\n };\r\n\r\n set enablePasswordStrength(enable: boolean) {\r\n this._enablePasswordStrength = enable;\r\n }\r\n\r\n get backgroundImageUri(): string {\r\n return this._backgroundImageUri;\r\n };\r\n\r\n set backgroundImageUri(uri: string) {\r\n this._backgroundImageUri = uri;\r\n }\r\n\r\n get environmentWarning(): string {\r\n return this._environmentWarning;\r\n };\r\n\r\n set environmentWarning(description: string) {\r\n this._environmentWarning = description;\r\n }\r\n\r\n get loginFormTitle(): string {\r\n return this._loginFormTitle;\r\n };\r\n\r\n set loginFormTitle(description: string) {\r\n this._loginFormTitle = description;\r\n }\r\n\r\n get appUri(): string {\r\n return this._appUri;\r\n }\r\n\r\n set appUri(uri: string) {\r\n this._appUri = uri;\r\n }\r\n\r\n get authType(): 'session' | 'jwt' {\r\n return this._authType;\r\n }\r\n\r\n set authType(type: 'session' | 'jwt') {\r\n this._authType = type;\r\n }\r\n\r\n get isSaving(): boolean {\r\n return this._isSaving.getValue();\r\n }\r\n\r\n set isSaving(isSaving: boolean) {\r\n this._isSaving.next(isSaving);\r\n }\r\n\r\n get maxRecordCount(): number {\r\n return this._maxRecordCount;\r\n }\r\n\r\n set maxRecordCount(maxRecordCount: number) {\r\n this._maxRecordCount = maxRecordCount;\r\n }\r\n\r\n get globalDataContext(): TruDataContext | null {\r\n return this._globalDataContext;\r\n }\r\n\r\n set globalDataContext(context: TruDataContext | null) {\r\n this._globalDataContext = context ;\r\n }\r\n\r\n get isMac(): boolean {\r\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\r\n }\r\n\r\n saveComplete = (event: ActionEventCompleted): void => {\r\n this._saveComplete.next(event);\r\n }\r\n\r\n revertComplete = (event: ActionEventCompleted): void => {\r\n this._revertComplete.next(event);\r\n }\r\n\r\n deleteComplete = (event: ActionEventCompleted): void => {\r\n this._deleteComplete.next(event);\r\n }\r\n\r\n formatDeleteConfirmationMessage = (tableName: string, tablePluralLabel: string, count: number | null): string => {\r\n if (count === null)\r\n return 'Are you sure you want to delete this ' + tableName + '?';\r\n if (count === 1)\r\n return 'Are you sure you want to delete 1 ' + tableName + '?';\r\n return 'Are you sure you want to delete ' + count + ' ' + tablePluralLabel + '?';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { breeze, DataService as BreezeDataService, EntityManager, EntityQuery, MetadataStore, Predicate } from 'breeze-client';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruBreezeMetadataProvider } from './tru-breeze-metadata-provider';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruBreezeContextFactory {\r\n\r\n /**\r\n * Maximum number of records to return from a query.\r\n * @return {number}\r\n */\r\n private servicePath: string = '';\r\n private metadataStore: MetadataStore = new MetadataStore();\r\n private breezeDataService: BreezeDataService | undefined = undefined;\r\n constructor(\r\n private breezeMetadataProvider: TruBreezeMetadataProvider,\r\n private environment: TruAppEnvironment) {\r\n this.servicePath = environment.appUri + '/api/TruDB';\r\n /**\r\n * Note: hasServerMetadata is false to prevent the automatic query of the metadata from the server.\r\n */\r\n try {\r\n this.breezeDataService = new BreezeDataService({\r\n serviceName: this.servicePath,\r\n hasServerMetadata: false\r\n });\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n setUpMetadata = (metadata: object): MetadataStore => {\r\n if (this.metadataStore.isEmpty()) \r\n return this.metadataStore.importMetadata(metadata);\r\n return this.metadataStore;\r\n }\r\n\r\n /**\r\n * Returns a new data context object.\r\n * @return {object} - Breeze Manager\r\n */\r\n createContext = (tableName: string | null = null): TruBreezeContext => {\r\n let entityManager = new EntityManager({\r\n dataService: this.breezeDataService,\r\n metadataStore: this.metadataStore\r\n });\r\n let breezeContext = new TruBreezeContext(entityManager);\r\n\r\n /**\r\n * Cache the active user's user record since it is required to be in the cache \r\n * for some situations such as when create new record and the view displays the \r\n * created user audit property. If it fails, the next context will try again.\r\n * Of course, the already existing context(s) won't have the record cached, but\r\n * it's a rather unlikely situation and it's non-fatal, so just let it fail.\r\n */\r\n var activeUserRecordExport;\r\n if (activeUserRecordExport) {\r\n entityManager.importEntities(activeUserRecordExport);\r\n }\r\n return breezeContext;\r\n };\r\n}\r\n\r\nexport class TruBreezeContext {\r\n private _entityManager: EntityManager;\r\n\r\n constructor(\r\n private manager: EntityManager) {\r\n\r\n this._entityManager = manager;\r\n }\r\n\r\n get createQuery() {\r\n return (x: any): EntityQuery => { return new EntityQuery(x); };\r\n };\r\n\r\n get createPredicate() {\r\n return (...args: any[]): Predicate => { return new Predicate(args); }\r\n }\r\n\r\n get entityManager() {\r\n return this._entityManager;\r\n };\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruNavigationPropertyConfig } from \"../classes/tru-navigation-property-config\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelNavigationPropertiesLookup {\r\n private _lookup: Map<string, Array<TruNavigationPropertyConfig>> = new Map<string, Array<TruNavigationPropertyConfig>>();\r\n\r\n constructor() { }\r\n\r\n get lookup(): Map<string, Array<TruNavigationPropertyConfig>> {\r\n return this._lookup;\r\n }\r\n\r\n set lookup(value: Map<string, Array<TruNavigationPropertyConfig>>) {\r\n this._lookup = value;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { TruDataContext } from './tru-data-context';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruGlobalDataContext {\r\n private _dataContext: TruDataContext | null = null;\r\n\r\n constructor() { }\r\n\r\n get dataContext(): TruDataContext | null {\r\n return this._dataContext;\r\n }\r\n\r\n set dataContext(dataContext: TruDataContext | null) {\r\n if (this._dataContext !== null)\r\n this._dataContext = dataContext;\r\n else\r\n console.log('Global Data Context is alreay set and can not be modified.')\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { CdkAccordionModule } from '@angular/cdk/accordion';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CdkStepperModule } from '@angular/cdk/stepper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CdkTreeModule } from '@angular/cdk/tree';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTreeModule } from '@angular/material/tree';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n exports: [\n A11yModule,\n CdkAccordionModule,\n ClipboardModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n OverlayModule,\n PortalModule,\n ScrollingModule,\n ]\n})\nexport class MaterialModule { }\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-confirm-dialog',\r\n templateUrl: './tru-confirm-dialog.html',\r\n styleUrls: ['./tru-confirm-dialog.css'],\r\n imports: [CommonModule, FormsModule, MaterialModule]\r\n})\r\nexport class TruConfirmDialog implements OnInit {\r\n title: string;\r\n message: string;\r\n displayDismissButton: boolean;\r\n displayConfirmButton: boolean;\r\n dismissButtonName: string;\r\n confirmButtonName: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<TruConfirmDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruConfirmDialog) {\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.displayDismissButton = data.displayDismissButton;\r\n this.displayConfirmButton = data.displayConfirmButton;\r\n this.dismissButtonName = data.dismissButtonName;\r\n this.confirmButtonName = data.confirmButtonName;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onConfirm(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n\r\nexport class TruConfirmDialogConfig {\r\n\r\n constructor(\r\n public title: string,\r\n public message: string,\r\n public displayDismissButton: boolean,\r\n public displayConfirmButton: boolean,\r\n public dismissButtonName: string,\r\n public confirmButtonName: string) {\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n {{title}}\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <p>{{message}}</p>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button *ngIf=\"displayDismissButton\" mat-raised-button (click)=\"onDismiss()\">{{dismissButtonName}}</button>\r\n <button *ngIf=\"displayConfirmButton\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">{{confirmButtonName}}</button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, HostListener, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-export-dialog',\r\n templateUrl: './tru-export-dialog.html',\r\n styleUrls: ['./tru-export-dialog.css'],\r\n imports: [CommonModule, FormsModule, MaterialModule, MatCheckbox]\r\n})\r\nexport class TruExportDialog implements OnInit {\r\n title: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<TruExportDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruExportDialog) {\r\n this.title = data.title;\r\n }\r\n\r\n options = {\r\n useGrid: false,\r\n useNames: false,\r\n useEmptyTags: false,\r\n async: false\r\n }\r\n\r\n onFormatForImportChecked = () => {\r\n if (!this.options.useNames)\r\n this.options.useEmptyTags = false;\r\n }\r\n\r\n onConfirm(): void {\r\n this.dialogRef.close(this.options);\r\n }\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n @HostListener('document:keypress', ['$event'])\r\n handleKeyboardEvent(event: KeyboardEvent) {\r\n if (event.keyCode == 27) {\r\n this.dialogRef.close(false);\r\n }\r\n if (event.keyCode == 13) {\r\n event.stopPropagation();\r\n this.dialogRef.close(this.options);\r\n }\r\n }\r\n\r\n ngOnInit() {}\r\n}\r\n\r\nexport class TruExportDialogConfig {\r\n\r\n constructor(public title: string) {\r\n }\r\n}\r\n\r\n","<h1 mat-dialog-title class=\"mat-dialog-title\">\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <table>\r\n <tbody>\r\n <tr>\r\n <td class=\"export-dialog-checkbox-container\" title=\"To support importing the export file: use names instead of labels.\">\r\n <mat-checkbox [(ngModel)]=\"options.useNames\"\r\n (change)=\"onFormatForImportChecked()\"\r\n [labelPosition]=\"'after'\">\r\n Format for import\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td class=\"export-dialog-checkbox-container\" title=\"Export only the rows in the grid. When unchecked, exports the results of a new search without limiting result count as is a normal search.\">\r\n <mat-checkbox \r\n [(ngModel)]=\"options.useGrid\"\r\n [labelPosition]=\"'after'\">\r\n Export grid rows\r\n </mat-checkbox>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n <button mat-button (click)=\"onDismiss()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Export</button>\r\n</div>\r\n","import { InjectionToken } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { TruUser } from \"../../../services/tru-user\";\r\n\r\nexport interface TruAuthConfig {\r\n baseUrl: string;\r\n authUrl: string;\r\n auth: \"session\" | \"token\";\r\n}\r\n\r\nexport const TRU_AUTH_CONFIG: TruAuthConfig = {\r\n baseUrl: \"https://localhost:44303\",\r\n authUrl: \"/api/auth\",\r\n auth: \"token\",\r\n};\r\n\r\nexport interface TruAuthStrategy<T> {\r\n doLoginUser(data: T): void;\r\n\r\n doLogoutUser(): void;\r\n\r\n isLoggedIn(): boolean;\r\n\r\n createUser(user: TruUser): Observable<any>;\r\n}\r\n\r\nexport const TRU_AUTH_STRATEGY = new InjectionToken<TruAuthStrategy<any>>(\r\n \"AuthStrategy\"\r\n);\r\n","export class TruPasswordChangeRequest {\r\n currentPassword!: string;\r\n newPassword!: string;\r\n userRef!: number;\r\n admin: boolean = false;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { PasswordStrengthMeterComponent } from 'angular-password-strength-meter';\r\nimport { Subscription } from 'rxjs';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { TRU_AUTH_CONFIG } from \"../login/classes/tru-auth-config\";\r\nimport { TruPasswordChangeRequest } from './classes/tru-password-change-request';\r\n\r\n@Component({\r\n selector: 'tru-password-dialog',\r\n templateUrl: './tru-password-dialog.html',\r\n styleUrls: ['../../assets/tru-style.css', './tru-password-dialog.css'],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, PasswordStrengthMeterComponent]\r\n})\r\nexport class TruPasswordDialog implements OnInit {\r\n currentPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n newPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n confirmNewPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n showPasswordControl: FormControl = new FormControl<boolean>(false, []);\r\n\r\n title: string | null = null;\r\n userRef: number = 0;\r\n username: string | null = null;\r\n admin: boolean = false;\r\n message: string | null = null;\r\n showPassword: boolean = false;\r\n passwordScore: number | null = 0;\r\n errorMsg: string | null = null;\r\n busy: boolean = false;\r\n\r\n private baseUrl: string = '';\r\n private subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TruPasswordDialog>,\r\n private http: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification,\r\n @Inject(MAT_DIALOG_DATA) private data: any) {\r\n this.baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n onPasswordStrengthChanged = (score: number | null) => {\r\n this.passwordScore = score;\r\n }\r\n\r\n onShowPasswordClicked = () => {\r\n this.showPassword = this.showPasswordControl.value;\r\n }\r\n\r\n canSubmit = () => {\r\n let canSubmit = false;\r\n if (this.admin) {\r\n canSubmit =\r\n this.newPasswordControl.value &&\r\n this.confirmNewPasswordControl.value &&\r\n this.passwordScore !== null && this.passwordScore > 1 &&\r\n (this.newPasswordControl.value === this.confirmNewPasswordControl.value);\r\n } else {\r\n canSubmit = this.currentPasswordControl.value &&\r\n this.newPasswordControl.value &&\r\n this.confirmNewPasswordControl.value &&\r\n this.passwordScore !== null && this.passwordScore > 1 &&\r\n (this.newPasswordControl.value === this.confirmNewPasswordControl.value);\r\n }\r\n return canSubmit;\r\n }\r\n\r\n onConfirm = (): void => {\r\n let passwordChangeRequest = new TruPasswordChangeRequest();\r\n passwordChangeRequest.currentPassword = this.currentPasswordControl.value;\r\n passwordChangeRequest.newPassword = this.newPasswordControl.value;\r\n passwordChangeRequest.userRef = this.data.userRef;\r\n passwordChangeRequest.admin = this.admin;\r\n\r\n if (this.userRef < 0) {\r\n this.data.entity.Password = this.newPasswordControl.value;\r\n this.dialogRef.close(true);\r\n } else {\r\n this.busy = true;\r\n this.http\r\n .post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/changePassword`, passwordChangeRequest)\r\n .subscribe(() => {\r\n this.busy = false;\r\n this.uiNotification.success('Password update complete.')\r\n this.dialogRef.close(true);\r\n }, (ex: any) => {\r\n this.busy = false;\r\n this.errorMsg = ex.error;\r\n });\r\n }\r\n }\r\n\r\n onDismiss = (): void => {\r\n this.dialogRef.close(false);\r\n }\r\n\r\n ngOnInit() {\r\n this.subs.push(this.currentPasswordControl.valueChanges.subscribe(() => {\r\n this.errorMsg = null;\r\n }));\r\n this.userRef = this.data.userRef;\r\n this.username = this.data.username;\r\n this.admin = this.data.admin;\r\n \r\n this.title = this.userRef < 0 ? 'Create Password' : 'Update Password';\r\n this.username = this.userRef < 0 ? 'new user' : this.username;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">{{title}}</p>\r\n <p class=\"tru-password-dialog-username\">for {{username}}</p>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container tru-password-dialog\">\r\n <p>{{message}}</p>\r\n\r\n <div class=\"tru-password-dialog-control-wrapper\" *ngIf=\"!admin\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #currentInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"currentPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <p class=\"tru-password-dialog-error-msg\" *ngIf=\"errorMsg\">{{errorMsg}}</p>\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>New Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"newPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n <password-strength-meter [password]=\"newPasswordControl.value\" (strengthChange)=\"onPasswordStrengthChanged($event)\" />\r\n </div>\r\n <div class=\"tru-password-dialog-control-wrapper\">\r\n <mat-label>Confirm New Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n autocomplete=\"off webauthn\"\r\n [formControl]=\"confirmNewPasswordControl\"\r\n [type]=\"showPassword ? 'text' : 'password'\" />\r\n </mat-form-field>\r\n </div>\r\n <mat-checkbox [formControl]=\"showPasswordControl\"\r\n (click)=\"onShowPasswordClicked()\"\r\n [labelPosition]=\"'before'\">\r\n Show Password\r\n </mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Cancel</button>\r\n <button [disabled]=\"!canSubmit() || busy || errorMsg ? 'disabled' : null\" mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Submit</button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\n\r\n@Component({\r\n selector: 'tru-about-dialog',\r\n templateUrl: './tru-about-dialog.html',\r\n styleUrls: ['./tru-about-dialog.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav\r\n ]\r\n})\r\nexport class TruAboutDialog implements OnInit {\r\n appName: string;\r\n appDescription: string;\r\n currentYear: number = new Date().getFullYear();\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TruAboutDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruAboutDialog,\r\n private appEnvironment: TruAppEnvironment) {\r\n this.appName = this.appEnvironment.appName;\r\n this.appDescription = this.appEnvironment.appDescription;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'about-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n About - {{appName}}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <div class=\"tru-about-description\">\r\n {{appDescription}}\r\n </div>\r\n <p>\r\n Powered By TruDB\r\n </p>\r\n <p>\r\n Copyright {{currentYear}} TruDB LLC. All rights reserved.\r\n </p>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { TruConfirmDialog, TruConfirmDialogConfig } from '../components/confirm-dialog/tru-confirm-dialog';\r\nimport { TruExportDialog, TruExportDialogConfig } from '../components/export-dialog/tru-export-dialog';\r\nimport { TruPasswordDialog } from '../components/password-dialog/tru-password-dialog';\r\nimport { TruAboutDialog } from '../components/about-dialog/tru-about-dialog';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUiNotification {\r\n private _toastr: ToastrService;\r\n private _dialog: MatDialog;\r\n\r\n constructor(\r\n private toastr: ToastrService,\r\n private dialog: MatDialog) {\r\n this._toastr = this.toastr;\r\n this._dialog = this.dialog;\r\n }\r\n\r\n showMessage = (popup: any, log: (message: string) => void, prefix: string, message: string, detail: Array<string> | null = null) => {\r\n \r\n message = prefix + ': ' + message;\r\n if (detail) {\r\n detail.forEach((detailMsg) => {\r\n message += '\\r\\n' + detailMsg;\r\n }); \r\n }\r\n popup(message);\r\n this.log(message);\r\n };\r\n\r\n /**\r\n * Shows as toast and logs to server an error message and optional detail information.\r\n * @param {string} message - Displayed as toast.\r\n * @param {string} [detail] - Logged to console.\r\n */\r\n error = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.error(message), this.log, 'Error', message, detail);\r\n };\r\n\r\n /**\r\n * Same as error() but for info message.\r\n */\r\n info = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.info(message), this.log, 'Info', message, detail);\r\n };\r\n\r\n /**\r\n * Same as error() but for success message.\r\n */\r\n success = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.success(message), this.log, 'Success', message, detail);\r\n };\r\n\r\n /**\r\n * Same as error() but for warning message.\r\n */\r\n warning = (message: string, detail: Array<string> | null = null) => {\r\n this.showMessage((message: string) => this._toastr.warning(message), this.log, 'Warning', message, detail);\r\n };\r\n\r\n log = (message: string) => {\r\n var console = window.console;\r\n !!console && console.log && console.log.apply && console.log.apply(console, [message]);\r\n }\r\n\r\n showErrorDialog = (title: string, message: string) => {\r\n\r\n };\r\n\r\n showExportDialog = (): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogConfig = new TruExportDialogConfig('Export');\r\n let dialogRef = this._dialog.open(TruExportDialog, {\r\n disableClose: true,\r\n minWidth: \"200px\",\r\n maxWidth: \"400px\",\r\n data: dialogConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n };\r\n\r\n confirm = (\r\n title: string,\r\n message: string,\r\n displayCancelButton: boolean = true,\r\n displayConfirmButton: boolean = true,\r\n cancelButtonName: string = 'Cancel',\r\n confirmButtonName: string = 'Ok'): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogConfig = new TruConfirmDialogConfig(\r\n title,\r\n message,\r\n displayCancelButton,\r\n displayConfirmButton,\r\n cancelButtonName,\r\n confirmButtonName);\r\n let dialogRef = this._dialog.open(TruConfirmDialog, {\r\n disableClose: true,\r\n minWidth: \"200px\",\r\n maxWidth: \"400px\",\r\n data: dialogConfig\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n };\r\n\r\n changePassword = (userRef: number, username: string, admin: boolean = false, entity: any = null): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogRef = this._dialog.open(TruPasswordDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"400px\",\r\n data: {\r\n userRef: userRef,\r\n username: username,\r\n admin: admin,\r\n entity: entity\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\r\n\r\n about = (): Promise<boolean> => {\r\n return new Promise<boolean>((resolve, reject) => {\r\n let dialogRef = this._dialog.open(TruAboutDialog, {\r\n disableClose: true,\r\n minHeight: '400px',\r\n minWidth: '600px'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\r\n}\r\n","import { ElementRef, Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUtil {\r\n private keyboardMap = [\"\", \"\", \"\", \"CANCEL\", \"\", \"\", \"HELP\", \"\", \"BACK_SPACE\", \"TAB\", \"\", \"\", \"CLEAR\", \"ENTER\", \"RETURN\", \"\", \"SHIFT\", \"CONTROL\", \"ALT\", \"PAUSE\", \"CAPS_LOCK\", \"KANA\", \"EISU\", \"JUNJA\", \"FINAL\", \"HANJA\", \"\", \"ESCAPE\", \"CONVERT\", \"NONCONVERT\", \"ACCEPT\", \"MODECHANGE\", \"SPACE\", \"PAGE_UP\", \"PAGE_DOWN\", \"END\", \"HOME\", \"LEFT\", \"UP\", \"RIGHT\", \"DOWN\", \"SELECT\", \"PRINT\", \"EXECUTE\", \"PRINTSCREEN\", \"INSERT\", \"DELETE\", \"\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"COLON\", \"SEMICOLON\", \"LESS_THAN\", \"EQUALS\", \"GREATER_THAN\", \"QUESTION_MARK\", \"AT\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"WIN\", \"\", \"CONTEXT_MENU\", \"\", \"SLEEP\", \"NUMPAD0\", \"NUMPAD1\", \"NUMPAD2\", \"NUMPAD3\", \"NUMPAD4\", \"NUMPAD5\", \"NUMPAD6\", \"NUMPAD7\", \"NUMPAD8\", \"NUMPAD9\", \"MULTIPLY\", \"ADD\", \"SEPARATOR\", \"SUBTRACT\", \"DECIMAL\", \"DIVIDE\", \"F1\", \"F2\", \"F3\", \"F4\", \"F5\", \"F6\", \"F7\", \"F8\", \"F9\", \"F10\", \"F11\", \"F12\", \"F13\", \"F14\", \"F15\", \"F16\", \"F17\", \"F18\", \"F19\", \"F20\", \"F21\", \"F22\", \"F23\", \"F24\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"NUM_LOCK\", \"SCROLL_LOCK\", \"WIN_OEM_FJ_JISHO\", \"WIN_OEM_FJ_MASSHOU\", \"WIN_OEM_FJ_TOUROKU\", \"WIN_OEM_FJ_LOYA\", \"WIN_OEM_FJ_ROYA\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"CIRCUMFLEX\", \"EXCLAMATION\", \"DOUBLE_QUOTE\", \"HASH\", \"DOLLAR\", \"PERCENT\", \"AMPERSAND\", \"UNDERSCORE\", \"OPEN_PAREN\", \"CLOSE_PAREN\", \"ASTERISK\", \"PLUS\", \"PIPE\", \"HYPHEN_MINUS\", \"OPEN_CURLY_BRACKET\", \"CLOSE_CURLY_BRACKET\", \"TILDE\", \"\", \"\", \"\", \"\", \"VOLUME_MUTE\", \"VOLUME_DOWN\", \"VOLUME_UP\", \"\", \"\", \"\", \"\", \"COMMA\", \"\", \"PERIOD\", \"SLASH\", \"BACK_QUOTE\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"OPEN_BRACKET\", \"BACK_SLASH\", \"CLOSE_BRACKET\", \"QUOTE\", \"\", \"META\", \"ALTGR\", \"\", \"WIN_ICO_HELP\", \"WIN_ICO_00\", \"\", \"WIN_ICO_CLEAR\", \"\", \"\", \"WIN_OEM_RESET\", \"WIN_OEM_JUMP\", \"WIN_OEM_PA1\", \"WIN_OEM_PA2\", \"WIN_OEM_PA3\", \"WIN_OEM_WSCTRL\", \"WIN_OEM_CUSEL\", \"WIN_OEM_ATTN\", \"WIN_OEM_FINISH\", \"WIN_OEM_COPY\", \"WIN_OEM_AUTO\", \"WIN_OEM_ENLW\", \"WIN_OEM_BACKTAB\", \"ATTN\", \"CRSEL\", \"EXSEL\", \"EREOF\", \"PLAY\", \"ZOOM\", \"\", \"PA1\", \"WIN_OEM_CLEAR\", \"\"];\r\n\r\n constructor() { }\r\n\r\n numberToString = (value: number | undefined): string => {\r\n return value === undefined ? '' : (value).toString();\r\n }\r\n\r\n nullableNumberToString = (value: number | null | undefined): string => {\r\n return value === null || value === undefined ? '' : (value).toString();\r\n }\r\n\r\n tryParseInt = (str: any, defaultValue: any) => {\r\n var retValue = defaultValue;\r\n if (str !== null) {\r\n if (str.length > 0) {\r\n if (!isNaN(str)) {\r\n retValue = parseInt(str);\r\n }\r\n }\r\n }\r\n return retValue;\r\n };\r\n\r\n tryParseBool(value: any, defaultValue: any) {\r\n return (value == 'true' || value == 'false' || value === true || value === false) && JSON.parse(value) || defaultValue;\r\n }\r\n\r\n findClosestAncestorByClass = (element: any, cssSelector: string) => {\r\n let firstChar = cssSelector.charAt(0);\r\n for (; element; element = element.parentNode) {\r\n if (firstChar === '.') {\r\n if (element.classList && element.classList.contains(cssSelector.substr(1))) {\r\n return element;\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n isNumeric = (n: any) => {\r\n return !isNaN(parseFloat(n)) && isFinite(n);\r\n }\r\n\r\n isNumber = function isNumber(value: any) {\r\n return typeof value === 'number' && isFinite(value);\r\n }\r\n\r\n removeNonNumericCharactersFromStr = (value: string) => {\r\n return value.replace(/[^0-9]/g, '');\r\n }\r\n\r\n isDate = (date: Date) => {\r\n if (Object.prototype.toString.call(date) === '[object Date]') {\r\n if (isNaN((date as Date).getTime())) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n\r\n isValidDate = (value: string) => {\r\n return !isNaN(Date.parse(value));\r\n }\r\n\r\n rulesEval = (styles: object | null): object => {\r\n let defaultStyles = {\r\n 'backgroundColor': '#ffffff',\r\n 'color': '#000000',\r\n 'font-style': 'normal',\r\n 'text-decoration': 'unset'\r\n }\r\n if (styles === null)\r\n return defaultStyles;\r\n if (Object.entries(styles).length !== 0) {\r\n Object.assign(defaultStyles, styles);\r\n return defaultStyles;\r\n }\r\n return defaultStyles;\r\n }\r\n\r\n /**\r\n * Serializes an object as URL parameters. The object should be a base type or have \r\n * properties that are each base types. Does not support a property with structure.\r\n * @param {Object} data \r\n * @returns {String} \r\n */\r\n formatAsUrlParameters = (data: any):string => {\r\n if (typeof data !== 'object' || data === null)\r\n return (data == null ? '' : data.toString());\r\n let buffer = [];\r\n for (let name in data) {\r\n if (!data.hasOwnProperty(name)) {\r\n continue;\r\n }\r\n let value = data[name];\r\n buffer.push(\r\n encodeURIComponent(name) +\r\n '=' + encodeURIComponent(value == null ? '' : value));\r\n }\r\n let source = buffer.join('&')\r\n .replace(/%20/g, '+');\r\n return (source);\r\n }\r\n\r\n showEntityStatus = (entity: TruEntityBase, entityType: string | null, formatedRecordId: string | null | undefined) => {\r\n let title = '';\r\n if (entity) {\r\n if (entityType)\r\n title = entityType + ' - ';\r\n if (entity.entityAspect.entityState.isAdded()) {\r\n title += 'New Record';\r\n } else {\r\n title += formatedRecordId;\r\n }\r\n }\r\n return title;\r\n }\r\n\r\n getKeySequence = (event: any) => {\r\n var keys = [];\r\n if (event.ctrlKey) keys.push('ctrl');\r\n if (event.metaKey) keys.push('meta');\r\n if (event.shiftKey) keys.push('shift');\r\n if (event.altKey) keys.push('alt');\r\n\r\n var keyCode = (event.keyCode !== 'control' && event.which !== 'control') ? event.keyCode || event.which : null;\r\n if (keyCode) keys.push(this.keyboardMap[keyCode].toLowerCase());\r\n keys = [...new Set(keys)];\r\n return keys.join('+');\r\n };\r\n\r\n targetIsControl = (target: HTMLElement): boolean => {\r\n if (target === null) return false;\r\n var nodeName = target.nodeName.toLowerCase();\r\n return nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' || nodeName === '#text';\r\n }\r\n\r\n isLowerCase = (str: string) => {\r\n return str === str.toLowerCase() &&\r\n str !== str.toUpperCase();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { TruUtil } from './tru-util';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruTextManager {\r\n readonly msgModifierKeyLabel: string;\r\n readonly msgConfirmExitWithChangesPending: string;\r\n readonly msgDeleteSuccessful: string;\r\n readonly msgSaveSuccessful: string;\r\n readonly msgNoChangesToSave: string;\r\n readonly msgSaveInProgress: string;\r\n readonly msgInvalidData: string;\r\n readonly msgDirtyPreventsReadOnly: string;\r\n readonly msgDirtyPreventsNavigate: string;\r\n readonly msgDirtyPreventsClose: string;\r\n readonly msgDirtyPreventsDeleteExistingRecord: string;\r\n readonly msgNoDeleteAccess: string;\r\n readonly msgCannotDeleteNewAndExistingRecords: string;\r\n readonly msgDeleteReferencingRecordsFirst: string;\r\n\r\n constructor(private util: TruUtil) {\r\n this.msgModifierKeyLabel = this.isMac() ? 'Cmd' : 'Ctrl';\r\n this.msgConfirmExitWithChangesPending = 'You have unsaved changes that will be lost.';\r\n this.msgDeleteSuccessful = 'Delete succeeded';\r\n this.msgSaveSuccessful = 'Save succeeded';\r\n this.msgNoChangesToSave = 'No changes to save';\r\n this.msgSaveInProgress = 'Save in progress';\r\n this.msgInvalidData = 'Invalid data';\r\n this.msgDirtyPreventsReadOnly = 'Save or revert before disabling editing';\r\n this.msgDirtyPreventsNavigate = 'Save or revert before navigating';\r\n this.msgDirtyPreventsClose = 'Save or revert before closing window';\r\n this.msgDirtyPreventsDeleteExistingRecord = 'Save or revert before deleting';\r\n this.msgNoDeleteAccess = 'Contact administrator about delete access';\r\n this.msgCannotDeleteNewAndExistingRecords = 'Delete new or existing records - but not both';\r\n this.msgDeleteReferencingRecordsFirst = 'Delete all referencing records first';\r\n }\r\n\r\n /**\r\n * If text.length exceeds length, then returns a string that is the first length chars \r\n * of text plus suffix. Otherwise, returns text.\r\n * @param {string} text\r\n * @param {number} length\r\n * @param {string} suffix\r\n * @return {string}\r\n */\r\n private truncate = (text: string, length: number, suffix: string): string => {\r\n return text.length > length ? text.substr(0, length) + suffix : text.toString();\r\n }\r\n\r\n isMac = (): boolean => {\r\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\r\n }\r\n\r\n /**\r\n * Formats the text to use for the window title.\r\n * @param {string} text\r\n * @return {string} - Window title.\r\n */\r\n formatWindowTitle = (text: string): string => {\r\n return this.truncate(text, 60, '...');\r\n }\r\n\r\n /**\r\n * Returns a message indicating that an entity or entities were deleted in another view. \r\n * @param {string} entityTypeLabel - Description of the entity type.\r\n * @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.\r\n * @param [{number}] count - Number of entities.\r\n */\r\n fmtEntityDeletedInOtherView = (entityTypeLabel: string, entityTypePluralLabel: string, count: number): string => {\r\n if (!count || count === 1)\r\n return entityTypeLabel + ' deleted in another view';\r\n return count + ' ' + entityTypePluralLabel + ' deleted in another view';\r\n };\r\n\r\n /**\r\n * Returns a message used to confirm deletion of an entity or entities.\r\n * @param {string} entityTypeLabel - Description of the entity type.\r\n * @param [{string}] entityTypePluralLabel - Description of more than one of the entity type.\r\n * @param [{number}] count - Number of entities.\r\n */\r\n fmtDeleteConfirmation = (\r\n entityTypeLabel: string,\r\n entityTypePluralLabel: string | null = null,\r\n count: number | null = null): string => {\r\n if (count === null)\r\n return 'Are you sure you want to delete this ' + entityTypeLabel + '?';\r\n if (count === 1)\r\n return 'Are you sure you want to delete 1 ' + entityTypeLabel + '?';\r\n return 'Are you sure you want to delete ' + count + ' ' + entityTypePluralLabel + '?';\r\n };\r\n\r\n /**\r\n * Returns a message formatted from an error object.\r\n * @param {error|string} error \r\n * @returns {string}\r\n */\r\n fmtErrorToShow = (error: any): string => {\r\n if (typeof error === 'string')\r\n error = new Error(error);\r\n var lines = [];\r\n lines.push(error.message);\r\n var exception = error.detail;\r\n while (exception) {\r\n var message = exception.ExceptionMessage;\r\n if (!_.contains(lines, message))\r\n lines.push(message);\r\n exception = exception.InnerException;\r\n }\r\n if (error.entityErrors) {\r\n error.entityErrors.forEach((entityError: any) => {\r\n lines.push('Entity <' + entityError.propertyName + '>: ' + entityError.errorMessage);\r\n });\r\n }\r\n if (error.stackTrace)\r\n lines.push(error.stackTrace);\r\n var text = lines.join('\\r\\n\\r\\n');\r\n if (!text)\r\n text = _.map(error, (value: string, key: string) => { return key + ': ' + value }).join('\\r\\n');\r\n return text;\r\n };\r\n\r\n /**\r\n * Returns a message formatted from an exception object.\r\n * @param {object} exception\r\n * @returns {string}\r\n */\r\n fmtExceptionToShow = (exception: any): string => {\r\n var lines = [];\r\n while (exception) {\r\n var message = exception.Message;\r\n if (!_.contains(lines, message))\r\n lines.push(message);\r\n exception = exception.InnerException;\r\n }\r\n return lines.join('\\r\\n\\r\\n');\r\n };\r\n\r\n /**\r\n * Returns a message for a data error type.\r\n * @param {string} typeName \r\n * @returns {string} \r\n */\r\n fmtDataError = (typeName: string): string => {\r\n if (typeName.indexOf('OptimisticLockViolation') >= 0)\r\n return 'The record was edited already, by another user. Please reload and attempt your edit again.';\r\n if (typeName.indexOf('DataConstraintViolation') >= 0)\r\n return 'Foreign key constraint violation';\r\n if (typeName.indexOf('DuplicateKeyError') >= 0)\r\n return 'Duplicate key error';\r\n return typeName;\r\n }\r\n\r\n /**\r\n * Returns a message for an import error.\r\n * @param {string} typeName \r\n * @returns {string} \r\n */\r\n fmtImportError = (error: any) => {\r\n var details = [];\r\n if (this.util.isNumber(error.RecordIndex))\r\n details.push('record ' + error.RecordIndex);\r\n if (this.util.isNumber(error.ColumnIndex))\r\n details.push('column ' + error.ColumnIndex + ' [' + error.ColumnHeader + ']');\r\n var message = '';\r\n if (error.SourceContext)\r\n message += error.SourceContext;\r\n if (details.length)\r\n message += '(' + details.join(', ') + ')';\r\n if (message.length)\r\n message += ': ';\r\n return message + error.Message;\r\n }\r\n\r\n /**\r\n * Serializes an object as URL parameters. The object should be a base type or have \r\n * properties that are each base types. Does not support a property with structure.\r\n * @param {Object} data \r\n * @returns {String} \r\n */\r\n formatAsUrlParameters = (data: any) => {\r\n if (typeof data !== 'object')\r\n return (data == null ? '' : data.toString());\r\n var buffer = [];\r\n for (var name in data) {\r\n if (!data.hasOwnProperty(name)) {\r\n continue;\r\n }\r\n var value = data[name];\r\n buffer.push(\r\n encodeURIComponent(name) +\r\n '=' + encodeURIComponent(value == null ? '' : value));\r\n }\r\n var source = buffer.join('&')\r\n .replace(/%20/g, '+');\r\n return (source);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as _ from 'underscore';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUser implements ITruUser {\r\n private _ref: number = -1;\r\n private _username: string | null = null;\r\n private _firstName: string | null = null;\r\n private _lastName: string | null = null;\r\n private _email: string | null = null;\r\n private _roles: string[] | null = null;\r\n\r\n constructor() {}\r\n\r\n get activeUserRef(): number {\r\n return this._ref;\r\n }\r\n\r\n get username(): string | null {\r\n return this._username;\r\n }\r\n\r\n get firstName(): string | null {\r\n return this._firstName;\r\n }\r\n\r\n get lastName(): string | null {\r\n return this._lastName;\r\n }\r\n\r\n get email(): string | null {\r\n return this._email;\r\n }\r\n\r\n get roles(): string[] | null {\r\n return this._roles;\r\n }\r\n\r\n hasRoles = (roles: string[]) => {\r\n if (this._roles === null)\r\n return true;\r\n return _.intersection(roles, this._roles).length > 0; \r\n };\r\n\r\n create = (user: ITruUser): void => {\r\n this._ref = user.activeUserRef;\r\n this._username = user.username;\r\n this._firstName = user.firstName;\r\n this._lastName = user.lastName;\r\n this._email = user.email;\r\n this._roles = user.roles;\r\n }\r\n\r\n destroy = (): void => {\r\n this._ref = -1;\r\n this._username = null;\r\n this._firstName = null;\r\n this._lastName = null;\r\n this._email = null;\r\n this._roles = null;\r\n } \r\n}\r\n\r\nexport interface ITruUser {\r\n activeUserRef: number;\r\n username: string | null;\r\n firstName: string | null;\r\n lastName: string | null;\r\n email: string | null;\r\n roles: string[] | null;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Entity, EntityManager, EntityQuery, FetchStrategy } from \"breeze-client\";\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base'\r\nimport { TruUiNotification } from \"./tru-ui-notification\";\r\nimport { TruDataContext } from \"./tru-data-context\";\r\nimport { TruBreezeContext } from \"./tru-breeze-context-factory\";\r\nimport * as _ from \"underscore\";\r\nimport { HttpClient, HttpHeaders, HttpResponse } from \"@angular/common/http\";\r\nimport { defer, from, Observable, of } from 'rxjs';\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruChoice } from \"../classes/tru-choice\";\r\nimport { TruNameValue } from \"../classes/tru-name-value\";\r\nimport { TruUser } from \"./tru-user\";\r\nimport { TruTextManager } from \"./tru-text-manager\";\r\n\r\n@Injectable()\r\nexport class TruEntityAccessor {\r\n private _breezeContext!: TruBreezeContext;\r\n private _entityManager!: EntityManager;\r\n private _maxRecordCount: number = 0;\r\n private _baseUrl: string;\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification,\r\n private textManager: TruTextManager,\r\n private user: TruUser) {\r\n this._maxRecordCount = this.appEnvironment.maxRecordCount;\r\n this._baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n set context(dataContext: TruDataContext) {\r\n this._breezeContext = dataContext.breezeContext;\r\n this._entityManager = dataContext.entityManager;\r\n }\r\n\r\n private getQueryServiceName = (entity: typeof TruEntityBase) => {\r\n return 'Query' + entity.name;\r\n }\r\n\r\n private warnIfMaxRecords = (entities: any[], entityName: string) => {\r\n if (entities.length >= this.appEnvironment.maxRecordCount)\r\n this.uiNotification.warning('[' + entityName + '] has more records available than supported');\r\n }\r\n\r\n private formatQueryChoices = (query: EntityQuery, entities: Array<Entity>, pKeyName: string, hid: string | null = null): Array<TruChoice> => {\r\n if (query && query.orderByClause)\r\n return _.map(entities, (entity: any) => { return { value: { $: entity[pKeyName] }, label: hid !== null ? hid : entity.HID }; });\r\n else\r\n return _.sortBy(_.map(entities, (entity: any) => { return { value: { $: entity[pKeyName] }, label: hid !== null ? hid : entity.HID }; }), 'label');\r\n }\r\n\r\n private formatNameValues = (query: EntityQuery, entities: Array<Entity>, pKeyName: string): Array<TruNameValue> => {\r\n if (query && query.orderByClause)\r\n return _.map(entities, (entity: any) => { return { name: entity.Name, value: { $: entity.Value }, entity: entity }; });\r\n else\r\n return _.sortBy(_.map(entities, (entity: any) => { return { name: entity.Name, value: { $: entity.Value }, entity: entity }; }), 'label');\r\n }\r\n\r\n add = (entity: typeof TruEntityBase, contextFilters: any = null) => {\r\n let newEntity = this._entityManager.createEntity(entity.prototype.entityType);\r\n return newEntity;\r\n };\r\n\r\n search = (entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n expands: [] | null,\r\n global: boolean): Observable<Entity[]> => {\r\n\r\n var query: any;\r\n if (expands && expands.length) {\r\n if (global)\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).expand(expands.join(', '));\r\n else\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).expand(expands.join(', ')).top(this.appEnvironment.maxRecordCount);\r\n } else {\r\n if (global)\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n else\r\n query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).top(this.appEnvironment.maxRecordCount);\r\n }\r\n\r\n if (setupQuery != null)\r\n query = setupQuery(query);\r\n\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n if (!global)\r\n this.warnIfMaxRecords(queryData.results, entity.name);\r\n return queryData.results;\r\n })));\r\n };\r\n\r\n searchCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n expands: [] | null = null): Observable<Entity[]> => {\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n return of(this._entityManager.executeQueryLocally(query));\r\n };\r\n\r\n searchCacheOnlySynchronously = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n expands: [] | null = null): Array<any> => {\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n return this._entityManager.executeQueryLocally(query);\r\n };\r\n\r\n searchByRefCacheOnlySynchronously = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined = undefined): Array<any> => {\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n query = query.where(entity.name + 'Ref', '==', ref);\r\n return this._entityManager.executeQueryLocally(query);\r\n };\r\n\r\n searchQueryChoices = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n goToServer: boolean = false,\r\n ref: number | null | undefined = undefined,\r\n allRecords: boolean = false,\r\n dependantEntty: typeof TruEntityBase | undefined = undefined): Observable<TruChoice[]> => {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n if (dependantEntty)\r\n query = setupQuery(query, dependantEntty) ?? query;\r\n else\r\n query = setupQuery(query, entity) ?? query;\r\n if (ref)\r\n query = query.where(entity.name + 'Ref', '==', ref);\r\n if (!allRecords)\r\n query = query.top(this.appEnvironment.maxRecordCount);\r\n if (goToServer) {\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return this.formatQueryChoices(query, queryData.results, pkeyName, null);\r\n })));\r\n } else {\r\n return of(this.formatQueryChoices(query, this._entityManager.executeQueryLocally(query), pkeyName, null));\r\n }\r\n };\r\n\r\n searchNameValuesCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n ref: number | null | undefined = undefined): Observable<TruNameValue[]> => {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (setupQuery)\r\n query = setupQuery(query) ?? query;\r\n if (ref)\r\n query = query.where(entity.name + 'Ref', '==', ref);\r\n return of(this.formatNameValues(query, this._entityManager.executeQueryLocally(query), pkeyName));\r\n };\r\n\r\n searchByRef = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined) => {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n fetchStrategy: FetchStrategy.FromServer\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return this.formatQueryChoices(query, queryData.results, pkeyName, null);\r\n })));\r\n };\r\n\r\n searchByRefPreferedCache = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined) => {\r\n let cachedEntity = this.searchByRefCacheOnly(entity, ref);\r\n if (cachedEntity) {\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return queryData.results[0];\r\n })));\r\n }\r\n else {\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n fetchStrategy: FetchStrategy.FromServer\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n return queryData.results[0];\r\n })));\r\n }\r\n };\r\n\r\n searchByRefCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n ref: number | null | undefined,\r\n includeDeleted: boolean = false) => {\r\n\r\n if (!includeDeleted)\r\n includeDeleted = false;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n includeDeleted: includeDeleted,\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).where(entity.name + 'Ref', '==', ref).using(queryOptions);\r\n var result = this._entityManager.executeQueryLocally(query)[0];\r\n if (result)\r\n return result;\r\n return null;\r\n };\r\n\r\n searchByRefArrayCacheOnly = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any | null = null,\r\n refs: Array<number>,\r\n includeDeleted: boolean = false) => {\r\n \r\n if (!includeDeleted)\r\n includeDeleted = false;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n includeDeleted: includeDeleted,\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).using(queryOptions);\r\n\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n if (query === null)//setupQuery() returned null to select no rows\r\n return [];\r\n if (refs.length > 0) {\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n var predicate = this._breezeContext.createPredicate(pkeyName, '==', refs[0]);\r\n _.rest(refs, 1).forEach(function (ref) {\r\n predicate = predicate.or(pkeyName, '==', ref);\r\n });\r\n query = query.where(predicate);\r\n }\r\n\r\n var results = this._entityManager.executeQueryLocally(query);\r\n if (results && results.length)\r\n return results;\r\n return null;\r\n }\r\n\r\n searchByRefWithQuery = (\r\n entity: typeof TruEntityBase,\r\n setupQuery: any,\r\n ref: number): Observable<Entity[]> => {\r\n var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n query = setupQuery(query);\r\n\r\n type ObjectKey = keyof typeof entity;\r\n const pkeyName = entity.name + 'Ref' as ObjectKey;\r\n var predicate = this._breezeContext.createPredicate(pkeyName, '==', ref);\r\n query = query.where(predicate);\r\n\r\n var localResults = this._entityManager.executeQueryLocally(query);\r\n\r\n if (localResults.length)\r\n return of(localResults);\r\n\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData) => {\r\n return queryData.results;\r\n })));\r\n };\r\n\r\n searchUserByRefCacheOnly = (\r\n ref: number | null | undefined,\r\n includeDeleted: boolean = false) => {\r\n\r\n if (!includeDeleted)\r\n includeDeleted = false;\r\n var queryOptions = this._entityManager.queryOptions.using({\r\n includeDeleted: includeDeleted,\r\n fetchStrategy: FetchStrategy.FromLocalCache\r\n });\r\n var query = this._breezeContext.createQuery('QueryTruDbUser').where('TruDbUserRef', '==', ref).using(queryOptions);\r\n var result = this._entityManager.executeQueryLocally(query)[0];\r\n if (result)\r\n return result;\r\n return null;\r\n };\r\n\r\n customSearch = (\r\n entity: typeof TruEntityBase,\r\n query: any) => {\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {\r\n this.warnIfMaxRecords(queryData.results, entity.name);\r\n return queryData.results;\r\n })));\r\n };\r\n\r\n clone = (data: object) => {\r\n return this.httpClient.post(this._baseUrl + '/api/clone/execute', JSON.stringify(data), {\r\n headers: { 'Content-Type': 'application/json; charset=UTF-8' },\r\n responseType: 'json'\r\n });\r\n }\r\n\r\n export = (\r\n entity: typeof TruEntityBase,\r\n gridSpec: string,\r\n setupQuery: any | null,\r\n entityRefs: string | null,\r\n options: any) => {\r\n\r\n options = options || {};\r\n var args = {\r\n runAsync: false,\r\n useNames: false,\r\n useEmptyTags: false,\r\n entityRefs: null as string | null,\r\n entityTypeName: entity.name,\r\n gridSpec: gridSpec\r\n };\r\n if (options.async)\r\n args.runAsync = true;\r\n if (options.useNames)\r\n args.useNames = true;\r\n if (options.useEmptyTags)\r\n args.useEmptyTags = true;\r\n var queryText;\r\n if (options.useGrid) {\r\n args.entityRefs = entityRefs;\r\n } else {\r\n var query = this._breezeContext.createQuery('noname');\r\n if (setupQuery)\r\n query = setupQuery(query);\r\n if (query === null) {\r\n this.uiNotification.warning('No records selected by query');\r\n return;\r\n } else {\r\n queryText = query._toUri(this._entityManager);\r\n queryText = queryText.split('?')[1];\r\n }\r\n }\r\n\r\n this.uiNotification.info(args.runAsync ? 'Queuing export...' : 'Exporting...');\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == XMLHttpRequest.DONE) {\r\n if (xhr.status == 200) {\r\n\r\n }\r\n else {\r\n console.log(xhr.responseType);\r\n }\r\n }\r\n };\r\n xhr.open('POST', this._baseUrl + '/api/export/execute');\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(JSON.stringify({\r\n userRef: this.user.activeUserRef,\r\n runAsync: args.runAsync,\r\n useNames: args.useNames,\r\n useEmptyTags: args.useEmptyTags,\r\n entityRefs: args.entityRefs,\r\n entityTypeName: args.entityTypeName,\r\n gridSpec: args.gridSpec,\r\n query: queryText\r\n }))\r\n };\r\n\r\n downloadFromUrl = (url: string, data: any) => {\r\n this.httpClient.post(this._baseUrl + url, JSON.stringify(data), {\r\n headers: { 'Content-Type': 'application/json; charset=UTF-8' },\r\n responseType: 'arraybuffer',\r\n observe: 'response'\r\n })\r\n .subscribe({\r\n next: (response: HttpResponse<any>) => { this.saveDownloadedFile(response); },\r\n error: (ex: any) => { console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message])) }\r\n });\r\n };\r\n\r\n downloadFromService = (serviceName: string, data: any) => {\r\n this.downloadFromUrl(serviceName, data);\r\n };\r\n\r\n uploadFromUrl = (url: string, data: FormData) => {\r\n this.httpClient.post(this._baseUrl + url, data, {\r\n headers: { 'Content-Type': 'application/json; charset=UTF-8' },\r\n responseType: 'arraybuffer',\r\n observe: 'response'\r\n })\r\n .subscribe({\r\n next: (response: HttpResponse<any>) => { this.saveDownloadedFile(response); },\r\n error: (ex: any) => { console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message])) }\r\n });\r\n };\r\n\r\n /**\r\n * Request an action.\r\n * @param {string} actionName - Name of the action.\r\n * @param {string} entityRefs - Comma separated list of entity pkey values.\r\n * @returns {promise} on success, passes the results to success handler; \r\n * on failure, passes exception to fail handler.\r\n */\r\n requestAction = (actionName: string, entityRefs: string) => {\r\n var query = this._breezeContext.createQuery('RequestAction' + actionName)\r\n .withParameters({\r\n $method: 'POST',\r\n $encoding: 'JSON',\r\n $data: { refs: entityRefs }\r\n });\r\n return defer(() => from(this._entityManager.executeQuery(query).then((queryData: any) => {;\r\n return queryData.results;\r\n })));\r\n``}\r\n\r\n private saveDownloadedFile = async (response: HttpResponse<any>) => {\r\n var contentDisposition = response.headers.get('content-disposition');\r\n if (!contentDisposition)\r\n return; // NOTE: cannot save without header info\r\n var filename = this.extractFilenameFromContentDisposition(contentDisposition);\r\n const buffer = await response.body;\r\n var blob = new Blob([buffer], { type: response.headers.get('content-type') as string });\r\n var link = document.createElement('a');\r\n link.href = URL.createObjectURL(blob);\r\n link.setAttribute('download', filename);\r\n link.click();\r\n link.remove();\r\n }\r\n\r\n private extractFilenameFromContentDisposition = (text: string) => {\r\n var parts = _.map(text.split(';'), function (part) { return part.trim(); });\r\n var prefix = 'filename=';\r\n var filenamePart = _.find(parts, function (part) { return part.substring(0, prefix.length) === prefix });\r\n if (!filenamePart)\r\n return 'file';\r\n var filename = filenamePart.substring(prefix.length);\r\n filename = filename.replace(/\"/g, '');\r\n return filename;\r\n }\r\n\r\n /**\r\n * Imports the data of a set of files.\r\n * \r\n * IMPLEMENTATION\r\n * The input element stores the list of files the user selects. If the user were to\r\n * use the same input element to select the same file(s) the next time, then the input\r\n * element would not fire the change event -- resulting in no import. Therefore, need\r\n * to clear the file selection. The implementation of clearing is slightly different\r\n * for IE vs. Chrome. In Chrome, clearing the selection (by setting the element value\r\n * to null) results in clearing the FileList object that was passed to the change handler\r\n * (this function). Therefore, need to clear the selection _after_ using the passed\r\n * FileList object. For IE, clearing the selection does not clear the FileList passed \r\n * to the handler, but it does cause the change handler to fire. To ignore this event,\r\n * return if the FileList is empty -- which it is since just cleared it.\r\n */\r\n import = (files: Array<File>) => {\r\n var formData = new FormData();\r\n Array.from(files || []).forEach((file) => {\r\n formData.append('file', file);\r\n });\r\n\r\n //var contextFilterValues = contextFilters.serializeValues();\r\n //if (contextFilterValues)\r\n // formData.append('contextFilters', contextFilterValues);\r\n\r\n this.httpClient.post(this._baseUrl + '/api/import/execute', JSON.stringify(formData), {\r\n headers: { 'Content-Type': '' },\r\n responseType: 'arraybuffer',\r\n observe: 'response'\r\n })\r\n .subscribe({\r\n next: (response: any) => {\r\n if (response.body.byteLength)\r\n this.saveDownloadedFile(response);\r\n let operationStatusHeader = response.headers.get('Operation-Status');\r\n let operationStatus = operationStatusHeader ? JSON.parse(operationStatusHeader) : null;\r\n if (operationStatus.Errors.length > 0) {\r\n var lines = _.map(operationStatus.Errors, this.textManager.fmtImportError);\r\n _.each(lines, (line) => { this.uiNotification.log(line); });\r\n this.uiNotification.warning('Records imported: ' + response.RecordsImported + ', Records read: ' + response.RecordsRead + ', Errors: ' + response.Errors.length);\r\n } else {\r\n this.uiNotification.info('Records imported: ' + response.RecordsImported);\r\n }\r\n },\r\n error: (ex: any) => {\r\n console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message]))\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Entity, EntityAction, EntityChangedEventArgs, EntityState, EntityType, ValidationError, breeze } from \"breeze-client\";\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\r\nimport { TruDataChange } from '../classes/tru-data-change';\r\nimport { TruNavigationPropertyConfig } from '../classes/tru-navigation-property-config';\r\nimport { ITruAncestor } from '../interfaces/tru-ancestor';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruBreezeContext, TruBreezeContextFactory } from './tru-breeze-context-factory';\r\nimport { TruEntityAccessor } from './tru-entity-accessor';\r\nimport { TruGlobalDataContext } from './tru-global-data-context';\r\nimport { TruModelNavigationPropertiesLookup } from './tru-model-navigation-properties-lookup';\r\nimport { TruUiNotification } from './tru-ui-notification';\r\n\r\n@Injectable()\r\nexport class TruDataContext {\r\n private _propertyChanged$: Subject<any> = new Subject<any>();\r\n private _dataChanged$: Subject<TruDataChange> = new Subject<TruDataChange>();\r\n\r\n private _breezeContext: TruBreezeContext;\r\n private _pendingDeleteEntities: Array<Entity> = [];\r\n private _pendingCascadeDeleteEntities: Array<Entity> = [];\r\n\r\n private updateDependants$: Subject<ITruAncestor> = new Subject<ITruAncestor>();\r\n\r\n constructor(\r\n private breezeContextFactory: TruBreezeContextFactory,\r\n private modelNavigationPropertiesLookup: TruModelNavigationPropertiesLookup,\r\n private globalDataContext: TruGlobalDataContext,\r\n private appEnvironment: TruAppEnvironment,\r\n private entityAccessor: TruEntityAccessor,\r\n private uiNotification: TruUiNotification\r\n ) {\r\n this._breezeContext = this.breezeContextFactory.createContext();\r\n this.entityAccessor.context = this;\r\n\r\n this.entityManager.entityChanged.subscribe((changeArgs: EntityChangedEventArgs) => {\r\n if (\r\n changeArgs.entityAction !== EntityAction.AttachOnQuery &&\r\n changeArgs.entityAction !== EntityAction.MergeOnQuery &&\r\n changeArgs.entityAction !== EntityAction.MergeOnSave) {\r\n this.propertyChanged(changeArgs);\r\n this.entityChangedHandler(changeArgs);\r\n }\r\n });\r\n }\r\n\r\n onPropertyChanged() {\r\n return this._propertyChanged$;\r\n }\r\n\r\n propertyChanged(changeArgs: EntityChangedEventArgs | null) {\r\n this._propertyChanged$.next(changeArgs);\r\n }\r\n\r\n onDataChanged() {\r\n return this._dataChanged$;\r\n }\r\n\r\n dataChanged(change: TruDataChange) {\r\n this._dataChanged$.next(change);\r\n }\r\n\r\n validationChangeDetection = new Observable((observer) => {\r\n this.entityManager.validationErrorsChanged.subscribe(entities => {\r\n observer.next(entities);\r\n });\r\n });\r\n\r\n parseErrorMessages = (validationErrors: Array<ValidationError>): string => {\r\n let errorMsg: string = '';\r\n validationErrors.forEach((error) => {\r\n errorMsg += error.errorMessage + '; ';\r\n });\r\n return errorMsg;\r\n }\r\n\r\n getValidationErrorsForProperty = (entity: Entity, propertyName: string): any => {\r\n var errors = entity.entityAspect.getValidationErrors();\r\n errors = errors.filter((err: any): any => {\r\n return err.propertyName === propertyName;\r\n });\r\n return errors;\r\n }\r\n\r\n getValidationErrors = (entities: Array<Entity> | null = null): any => {\r\n entities = entities || this.entityManager.getChanges();\r\n var errorsPerEntity = entities!.map((entity): ValidationError[] => {\r\n var errors = entity.entityAspect.getValidationErrors();\r\n errors = errors.map((err: any): any => {\r\n return {\r\n entity: entity,\r\n errorMessage: err.errorMessage,\r\n property: err.property\r\n }\r\n });\r\n return errors;\r\n });\r\n return errorsPerEntity;\r\n }\r\n\r\n private modelPropertyChangeHandler = (\r\n entity: Entity,\r\n propertyName: string | null | undefined,\r\n changeArgs: EntityChangedEventArgs) => {\r\n\r\n if (propertyName)\r\n (entity as TruEntityBase).Merge_Data_Set.clear(propertyName);\r\n\r\n // @ts-expect-error\r\n let handler = entity.entityType.getProperty(propertyName as string)?._onChange?.handler;\r\n if (handler)\r\n handler(entity, propertyName, changeArgs.args, this, this.globalDataContext, false);\r\n }\r\n\r\n private modelPropertyOnSaveHandler = (entity: Entity) => {\r\n // @ts-expect-error\r\n let handler = entity.entityType._onSave.handler;\r\n if (handler)\r\n handler(entity);\r\n }\r\n\r\n private modelPropertyOnAddHandler = (entity: Entity) => {\r\n // @ts-expect-error\r\n let handler = entity.entityType._onAdd.handler;\r\n if (handler)\r\n handler(entity, this);\r\n }\r\n\r\n private modelPropertyOnRejectHandler = (entity: TruEntityBase) => {\r\n entity.Merge_Data_Set.clearAll();\r\n }\r\n\r\n /**\r\n * Handles breeze entity changed event.\r\n */\r\n private entityChangedHandler = (changeArgs: EntityChangedEventArgs) => {\r\n try {\r\n switch (changeArgs.entityAction) {\r\n case breeze.EntityAction.PropertyChange:\r\n this.modelPropertyChangeHandler(changeArgs.entity as Entity, changeArgs.args?.propertyName, changeArgs);\r\n break;\r\n case breeze.EntityAction.MergeOnSave:\r\n this.modelPropertyOnSaveHandler(changeArgs.entity as Entity);\r\n break;\r\n case breeze.EntityAction.Attach:\r\n this.modelPropertyOnAddHandler(changeArgs.entity as Entity);\r\n break;\r\n case breeze.EntityAction.EntityStateChange:\r\n break;\r\n case breeze.EntityAction.RejectChanges:\r\n this.modelPropertyOnRejectHandler(changeArgs.entity as TruEntityBase);\r\n break;\r\n }\r\n } catch (e: any) {\r\n // NOTE: breeze silently ignores handler exceptions; so handler here\r\n this.uiNotification.error(e.message, e);\r\n throw e;\r\n }\r\n }\r\n\r\n private formatValidationErrors = (entities: Array<Entity> | null = null): Array<string[]> => {\r\n let entitiesWithErrors = this.getValidationErrors(entities);\r\n let formattedErrors = new Array<string[]>();\r\n entitiesWithErrors.forEach((entityWithErrors: any) => {\r\n if (entityWithErrors.length) {\r\n formattedErrors.push(entityWithErrors.map((e: any) => {\r\n if (e.propertyName) {\r\n return e.entity.entityType.defaultResourceName + '.' + e.propertyName + ': ' + e.errorMessage;\r\n }\r\n var mergeData = JSON.parse(e.entity.Merge_Data);\r\n if (mergeData &&\r\n mergeData.constructor === Object &&\r\n Object.entries(mergeData).length > 0 &&\r\n mergeData[e.property.name]) {\r\n return mergeData[e.property.name].modifiedBy + ' changed ' + e.property.name + ' to ' + mergeData[e.property.name].value + '. Accept or Decline the change. '\r\n }\r\n var propertyName = e.property.name ? e.property.name : '[Unknown Property]';\r\n return e.entity.entityType.defaultResourceName + '.' + propertyName + ': has invalid data.'\r\n }));\r\n }\r\n });\r\n\r\n return formattedErrors;\r\n }\r\n\r\n private findCachedCascadeDeleteDescendants = (entity: Entity): Array<Entity> => {\r\n let descendants: Array<Entity> = [];\r\n type keyOfEntity = keyof typeof entity;\r\n let type = entity.entityType;\r\n let typeName = type.defaultResourceName;\r\n let entityChildrenNames: any = this.modelNavigationPropertiesLookup.lookup.get(typeName);\r\n if (entityChildrenNames) {\r\n entityChildrenNames.forEach((navigationProperty: TruNavigationPropertyConfig) => {\r\n let property = entity[navigationProperty.name as keyOfEntity] as any;\r\n property.forEach((child: Entity) => {\r\n if (navigationProperty.doesCascadeDelete && child.entityAspect.entityState !== EntityState.Added) {\r\n throw new Error('Delete of selected item is not possible due to related child that is not setup for cascade delete. Delete children items first.');\r\n }\r\n descendants = descendants.concat(this.findCachedCascadeDeleteDescendants(child));\r\n });\r\n descendants = property.concat(descendants);\r\n });\r\n }\r\n return descendants;\r\n }\r\n\r\n private markCachedDescendantsForDelete = (entities: Array<Entity>) => {\r\n var cascadeDeleteDescendantsPerEntity = entities.map((entity: Entity) => { return this.findCachedCascadeDeleteDescendants(entity); }, entities);\r\n var cascadeDeleteDescendants = cascadeDeleteDescendantsPerEntity.reduce((memo, i) => { return memo.concat(i); });\r\n cascadeDeleteDescendants.forEach((entity: Entity) => { this.entityManager.detachEntity(entity); });\r\n this._pendingDeleteEntities = this._pendingDeleteEntities.concat(entities);\r\n let combined = this._pendingCascadeDeleteEntities.concat(cascadeDeleteDescendants);\r\n this._pendingCascadeDeleteEntities = combined.filter((n, i) => combined.indexOf(n) === i);\r\n }\r\n\r\n private markForDelete = (entities: Array<Entity>) => {\r\n if (entities.length > 0) {\r\n this.markCachedDescendantsForDelete(entities);\r\n entities.forEach((entity: Entity) => {\r\n entity.entityAspect.setDeleted();\r\n //entity._associatedDataCached = false;\r\n });\r\n }\r\n }\r\n\r\n get breezeContext() {\r\n return this._breezeContext;\r\n }\r\n\r\n get entityManager() {\r\n return this._breezeContext.entityManager;\r\n }\r\n\r\n get onHasChanged() {\r\n return this._breezeContext.entityManager.hasChangesChanged;\r\n } \r\n\r\n hasChanges = (entityTypes: Array<EntityType> = []) => {\r\n if (entityTypes.length)\r\n return this._breezeContext.entityManager.getChanges(entityTypes);\r\n return this._breezeContext.entityManager.getChanges();\r\n }\r\n\r\n entityAccess = (): TruEntityAccessor => {\r\n return this.entityAccessor;\r\n }\r\n\r\n exportCahce = () => {\r\n console.log(this._breezeContext.entityManager.exportEntities());\r\n }\r\n\r\n onUpdateDependants() {\r\n return this.updateDependants$;\r\n }\r\n\r\n updateDependants = (table: string, ancestorRef: string) => {\r\n this.updateDependants$.next({ table: table, ancestorRef: ancestorRef });\r\n }\r\n\r\n save = (\r\n entities: Array<Entity> | null = null,\r\n deleteOperation: boolean = false) => {\r\n return new Promise<void>((resolve, reject) => {\r\n if (this.appEnvironment.isSaving) {\r\n this.uiNotification.error(this.appEnvironment.msgSaveInProgress);\r\n resolve();\r\n return;\r\n }\r\n var validationErrorMessages = this.formatValidationErrors(entities);\r\n if (validationErrorMessages.length > 0) {\r\n this.uiNotification.error(this.appEnvironment.msgInvalidData, validationErrorMessages[0]);\r\n resolve();\r\n return;\r\n }\r\n\r\n if (!this.hasChanges().length) {\r\n this.uiNotification.warning(this.appEnvironment.msgNoChangesToSave);\r\n resolve();\r\n return;\r\n }\r\n this.appEnvironment.isSaving = true;\r\n this.entityManager.saveChanges().then(() => {\r\n if (!deleteOperation) {\r\n this.uiNotification.success(this.appEnvironment.msgSaveSuccessful);\r\n this.appEnvironment.saveComplete({ successful: true });\r\n }\r\n resolve();\r\n }).catch((e: Error) => {\r\n this.uiNotification.error((e as Error).message);\r\n this.appEnvironment.saveComplete({ successful: false });\r\n reject(e);\r\n }).finally(() => {\r\n this.appEnvironment.isSaving = false;\r\n this.propertyChanged(null);\r\n });\r\n });\r\n }\r\n\r\n saveWithoutNotification = () => {\r\n return new Promise<void>((resolve, reject) => { \r\n if (this.appEnvironment.isSaving) {\r\n this.uiNotification.error(this.appEnvironment.msgSaveInProgress);\r\n resolve();\r\n return;\r\n }\r\n this.appEnvironment.isSaving = true;\r\n this.entityManager.saveChanges().then(() => { \r\n this.appEnvironment.saveComplete({ successful: true });\r\n resolve();\r\n }).catch((e: any) => {\r\n this.appEnvironment.saveComplete({ successful: false });\r\n reject(e);\r\n }).finally(() => {\r\n this.appEnvironment.isSaving = false;\r\n this.propertyChanged(null);\r\n });\r\n });\r\n }\r\n\r\n saveSettings = () => {\r\n return new Promise<void>((resolve, reject) => {\r\n if (this.appEnvironment.isSaving) {\r\n this.uiNotification.error(this.appEnvironment.msgSaveInProgress);\r\n resolve();\r\n return;\r\n }\r\n this.appEnvironment.isSaving = true;\r\n this.entityManager.saveChanges().then(() => {\r\n this.uiNotification.success(this.appEnvironment.msgSettingsUpdatedSuccessful);\r\n this.appEnvironment.saveComplete({ successful: true });\r\n resolve();\r\n }).catch((e: any) => {\r\n this.appEnvironment.saveComplete({ successful: false });\r\n reject(e);\r\n }).finally(() => {\r\n this.appEnvironment.isSaving = false;\r\n this.propertyChanged(null);\r\n });\r\n });\r\n }\r\n\r\n revert = (): void => {\r\n this.uiNotification.confirm('Confirm Action', 'Revert ' + this.hasChanges().length + ' changed record(s)', true, true, \"No\", \"Yes\").then((confirm: boolean) => {\r\n if (confirm) {\r\n this.entityManager.rejectChanges();\r\n this.appEnvironment.revertComplete({ successful: true });\r\n }\r\n });\r\n }\r\n\r\n revertWithoutPrompt = (): void => {\r\n this.revert();\r\n this.appEnvironment.revertComplete({ successful: true });\r\n }\r\n\r\n delete = (\r\n entities: Array<Entity>,\r\n confirmMsg: string,\r\n onSuccess: Function | undefined = undefined) => {\r\n var newEntities: Array<Entity> = [];\r\n var existingEntities: Array<Entity> = [];\r\n entities.forEach(function (e) {\r\n if (e.entityAspect.entityState.isAdded())\r\n newEntities.push(e);\r\n else\r\n existingEntities.push(e);\r\n });\r\n if (newEntities.length && existingEntities.length) {\r\n this.uiNotification.warning(this.appEnvironment.msgCannotDeleteNewAndExistingRecords);\r\n return;\r\n }\r\n if (existingEntities.length) {\r\n if (this.hasChanges().length) {\r\n this.uiNotification.warning(this.appEnvironment.msgDirtyPreventsDeleteExistingRecord);\r\n return;\r\n }\r\n }\r\n\r\n this.uiNotification.confirm('Confirm Action', confirmMsg, true, true, \"No\", \"Yes\").then((confirm: boolean) => {\r\n if (confirm) {\r\n if (newEntities.length) {\r\n newEntities.forEach((entity: Entity) => {\r\n entity.entityAspect.clearValidationErrors();\r\n });\r\n this.markForDelete(newEntities);\r\n if (onSuccess) onSuccess();\r\n return;\r\n }\r\n try {\r\n this.markForDelete(existingEntities);\r\n } catch (exception: any) {\r\n this.uiNotification.error(exception.message);\r\n return;\r\n }\r\n this.save(null, true).then(() => {\r\n var entitiesDeleted = this._pendingDeleteEntities.concat(this._pendingCascadeDeleteEntities);\r\n this.appEnvironment.deleteComplete({ successful: true, entities: entitiesDeleted });\r\n if (entitiesDeleted.length) {\r\n this._pendingCascadeDeleteEntities = [];\r\n this._pendingDeleteEntities = [];\r\n }\r\n this.uiNotification.success(this.appEnvironment.msgDeleteSuccessful);\r\n if (onSuccess) onSuccess(true);\r\n }).catch((error) => {\r\n\r\n }).finally(() => { });\r\n }\r\n });\r\n }\r\n}\r\n","import { BehaviorSubject } from 'rxjs';\r\nimport { WindowConfig } from '../services/tru-desktop-service';\r\n\r\nexport class TruDesktopViewConfig {\r\n active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\r\n\r\n onActive() {\r\n return this.active$;\r\n }\r\n\r\n get active() {\r\n return this.active$.getValue();\r\n }\r\n\r\n set active(value: boolean) {\r\n this.active$.next(value);\r\n }\r\n\r\n entities: Array<any> | undefined = undefined;\r\n entityIndex: number = 0;\r\n entityRefs: string = '';\r\n isDirty: boolean = false;\r\n isEditing: boolean = false;\r\n isInvalid: boolean = false;\r\n componentName: string = '';\r\n openAsDetaiView: boolean = false;\r\n actionRefs: string = '';\r\n window!: WindowConfig;\r\n selectedRefs!: () => string;\r\n url!: string;\r\n title!: string;\r\n\r\n constructor() {}\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { TruContextFilter } from '../../../classes/tru-context-filter';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\r\nimport { Subject } from 'rxjs';\r\nimport { TruWindowCloseEventArgs } from './tru-window-close-event-args';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruWindowEventArgs {\r\n title: string = '';\r\n tableName: string = '';\r\n tablePluralName: string = '';\r\n tablePluralLabel: string = '';\r\n parentDataContext: TruDataContext | null = null;\r\n parentView: any | null;\r\n isModal: boolean = false;\r\n showNavigation: boolean = true;\r\n contentBottom: string = '23px'\r\n statusbarDirective: string = 'tru-statusbar';\r\n height: string = '450px';\r\n width: string = '900px';\r\n views: Array<object> = [{}];\r\n contextFilters: Array<TruContextFilter> = [];\r\n onClose$: Subject<TruWindowCloseEventArgs> = new Subject<TruWindowCloseEventArgs>();\r\n}\r\n","\r\nimport { Injectable } from \"@angular/core\";\r\nimport { TruContextFilter } from \"../classes/tru-context-filter\";\r\nimport { TruContextFilterChoice } from \"../classes/tru-context-filter-choice\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruContextFilters {\r\n filters: Array<TruContextFilter> = [];\r\n\r\n valueFor = (tableName: string): number | undefined => {\r\n let choice = this.filters.find(f => f.selectedChoice.table === tableName)?.selectedChoice;\r\n if (!choice)\r\n return undefined;\r\n return choice.ref;\r\n }\r\n\r\n value = (): TruContextFilterChoice | undefined => {\r\n let choice = this.filters.find(f => f.selectedChoice)?.selectedChoice;\r\n if (!choice)\r\n return undefined;\r\n return choice\r\n }\r\n\r\n label = (): string => {\r\n let label: string = '';\r\n //this.selectedContextFilterChoices.forEach((filter: TruContextFilterChoice) => {\r\n // label += filter.table + ': ' + filter.label + ' ';\r\n //});\r\n return label;\r\n }\r\n\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { WindowConfig } from './tru-desktop-service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruDesktopEventHandler {\r\n private open$: Subject<TruWindowEventArgs> = new Subject<TruWindowEventArgs>();\r\n\r\n onOpen() {\r\n return this.open$;\r\n }\r\n\r\n open(windowEvent: TruWindowEventArgs): TruWindowEventArgs {\r\n this.open$.next(windowEvent);\r\n return windowEvent;\r\n }\r\n\r\n openCustom(windowEvent: TruWindowEventArgs) {\r\n this.open$.next(windowEvent);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruContextFilters } from \"../../../services/tru-context-filters\";\r\nimport { TruDesktopTitle } from \"../classes/tru-desktop-title\";\r\nimport { TruDesktopEventHandler } from \"./tru-desktop-event-handler\";\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDataContext } from \"../../../services/tru-data-context\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruDesktopManager {\r\n\r\n constructor(\r\n private contextFilters: TruContextFilters,\r\n private desktopEventHandler: TruDesktopEventHandler) { }\r\n\r\n getWindowEvent = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n isModal: boolean,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n entityIndex: number = 0,\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = true,\r\n parentDataContext: TruDataContext | null = null): TruWindowEventArgs => {\r\n\r\n var windowEvent = new TruWindowEventArgs();\r\n windowEvent.tableName = tableName;\r\n windowEvent.tablePluralName = tablePluralName;\r\n windowEvent.tablePluralLabel = tablePluralLabel;\r\n windowEvent.contextFilters = this.contextFilters.filters;\r\n windowEvent.isModal = isModal;\r\n windowEvent.showNavigation = showNavigation;\r\n windowEvent.parentDataContext = parentDataContext;\r\n\r\n windowEvent.views = [\r\n {\r\n active: true,\r\n entities: entities,\r\n entityIndex: entityIndex,\r\n isDirty: false,\r\n isEditing: false,\r\n isInvalid: false,\r\n openAsDetaiView: openAsDetaiView,\r\n componentName: componentName\r\n }\r\n ];\r\n return windowEvent;\r\n }\r\n\r\n /**\r\n * Opens a window for a directive.\r\n * @param {string} directiveName - name of the view directive.\r\n * @param {object} data - values to pass to the view.\r\n * @param {optional bool} showIfExists - if true and a view already exists for the \r\n * directive, then shows its window instead of creating a new one.\r\n */\r\n addWindow = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = true,\r\n showIfExists?: boolean) => {\r\n this.desktopEventHandler.open(this.getWindowEvent(\r\n tableName,\r\n tablePluralName,\r\n tablePluralLabel,\r\n false,\r\n componentName,\r\n entities,\r\n 0,\r\n openAsDetaiView));\r\n }\r\n\r\n addModalWindow = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n entityIndex: number = 0,\r\n parentDataContext: TruDataContext,\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = false,\r\n showIfExists?: boolean): TruWindowEventArgs => {\r\n return this.desktopEventHandler.open(this.getWindowEvent(\r\n tableName,\r\n tablePluralName,\r\n tablePluralLabel,\r\n true,\r\n componentName,\r\n entities,\r\n entityIndex,\r\n openAsDetaiView,\r\n showNavigation,\r\n parentDataContext));\r\n }\r\n\r\n addWindowForQueryResult = (\r\n tableName: string,\r\n tablePluralName: string,\r\n tablePluralLabel: string,\r\n componentName: string,\r\n entities: Array<TruEntityBase> = [],\r\n openAsDetaiView: boolean = false,\r\n showNavigation: boolean = true,\r\n showIfExists?: boolean) => {\r\n this.desktopEventHandler.open(this.getWindowEvent(tableName, tablePluralName, tablePluralLabel, false, componentName, entities, 0, openAsDetaiView));\r\n }\r\n\r\n addCustomWindow = (\r\n componentName: string,\r\n data: object | null = null) => {\r\n this.desktopEventHandler.open(this.getWindowEvent('', '', '', false, componentName, undefined, 0, false));\r\n }\r\n\r\n windowTitlesByBaseText: any = {};\r\n\r\n /**\r\n * Returns a unique string for the base name of a window. At first, returns the input.\r\n * For second call with same base name, returns the name plus ' - 2' and so on. When\r\n * all of the titles for the base name are released, then the next title will have no\r\n * suffix.\r\n * @param {string} text - base name of a window.\r\n * @returns {object} - text: the unique text and release(): releases the name for\r\n * future windows.\r\n */\r\n getUniqueTitle = (text: string): TruDesktopTitle => {\r\n var baseText = text;\r\n var titles = this.windowTitlesByBaseText[baseText];\r\n if (!titles) {\r\n this.windowTitlesByBaseText[baseText] = titles = {\r\n dispensedCount: 1,\r\n activeCount: 1\r\n };\r\n } else {\r\n ++titles.activeCount;\r\n text += ' - ' + (++titles.dispensedCount);\r\n }\r\n return {\r\n text: text,\r\n release: () => {\r\n if (titles.activeCount === 1)\r\n delete this.windowTitlesByBaseText[baseText];\r\n else {\r\n --titles.activeCount;\r\n }\r\n }\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruEntityBase } from '../../../base-classes/tru-entity-base';\r\nimport { TruWindowCloseEventArgs } from './tru-window-close-event-args';\r\n\r\n@Injectable()\r\nexport class TruWindowEventHandler {\r\n private close$: Subject<TruWindowCloseEventArgs | null> = new Subject <TruWindowCloseEventArgs | null>();\r\n private addView$: Subject<TruDesktopViewConfig> = new Subject<TruDesktopViewConfig>();\r\n private active$: Subject<boolean> = new Subject<boolean>();\r\n private setWindowTitle$: Subject<string> = new Subject<string>();\r\n private removeForwadViews$: Subject<null> = new Subject<null>();\r\n\r\n onClose() {\r\n return this.close$;\r\n }\r\n\r\n close(windowCloseEventArgs: TruWindowCloseEventArgs | null = null) {\r\n this.close$.next(windowCloseEventArgs);\r\n }\r\n\r\n onAddView() {\r\n return this.addView$;\r\n }\r\n\r\n addView(windowAddViewEvent: TruDesktopViewConfig) {\r\n this.addView$.next(windowAddViewEvent);\r\n }\r\n\r\n onActiveStateChanged() {\r\n return this.active$;\r\n }\r\n\r\n activeStateChanged(active: boolean) {\r\n this.active$.next(active);\r\n }\r\n\r\n onRemoveForwardViews() {\r\n return this.removeForwadViews$;\r\n }\r\n\r\n removeForwardViews() {\r\n this.removeForwadViews$.next(null);\r\n }\r\n\r\n onSetWindowTitle() {\r\n return this.setWindowTitle$;\r\n }\r\n\r\n setWindowTitle(value: string) {\r\n this.setWindowTitle$.next(value);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TruDesktopManager } from '../../components/desktop/services/tru-desktop-manager';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruDesktopTitle } from '../../components/desktop/classes/tru-desktop-title';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-search-view-base',\r\n templateUrl: './tru-search-view-base.html',\r\n styleUrls: ['./tru-search-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruSearchViewBase {\r\n @Input() protected view!: TruDesktopViewConfig;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected pkeyName: string = '';\r\n protected windowTitle: TruDesktopTitle | undefined = undefined;\r\n protected windowConfig: any;\r\n protected unsubscribes = [];\r\n protected expands = [];\r\n protected contextFilters: any;\r\n protected isSearching = false;\r\n protected entities = [];\r\n protected hasDetailView: boolean = true;\r\n\r\n searchPanelConfig = {\r\n side: 'right',\r\n active: true,\r\n open: true,\r\n modKeyLabel: '',\r\n size: 500,\r\n pinned: false\r\n }\r\n\r\n constructor(\r\n protected desktopManager: TruDesktopManager,\r\n protected windowEventHandler: TruWindowEventHandler) {\r\n }\r\n\r\n setWindowTitle(title: string | undefined = undefined) {\r\n if (!this.windowTitle) {\r\n if (title)\r\n this.windowTitle = this.desktopManager.getUniqueTitle(title);\r\n else\r\n this.windowTitle = this.desktopManager.getUniqueTitle(this.tablePluralLabel);\r\n }\r\n this.windowEventHandler.setWindowTitle(this.windowTitle.text);\r\n }\r\n\r\n releaseWindowTitle() {\r\n this.windowTitle?.release();\r\n }\r\n\r\n onPkeyCellDoubleClicked = (gridConfig: any) => {\r\n if (this.hasDetailView) {\r\n let entities: any = [];\r\n gridConfig.api.forEachNodeAfterFilterAndSort((rowNode: any) => {\r\n entities.push(rowNode.data.$entity);\r\n });\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = gridConfig.rowIndex;\r\n windowAddViewEventArgs.componentName = this.tableName + 'DetailView';\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n this.view.active = false;\r\n } else {\r\n alert(this.tablePluralLabel + ' does not have a detail view.');\r\n }\r\n }\r\n\r\n onAddCustomView = (componentName: string, entities: Array<TruEntityBase>) => {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = 0;\r\n windowAddViewEventArgs.componentName = componentName;\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n this.view.active = false;\r\n }\r\n}\r\n","","import { Component, Input, ViewChild, TemplateRef, ElementRef } from '@angular/core';\r\nimport { TruSearchViewBase } from '../../base-views/search/tru-search-view-base';\r\nimport { TruDesktopManager } from '../desktop/services/tru-desktop-manager';\r\nimport { TruWindowEventHandler } from '../desktop/services/tru-window-event-handler';\r\nimport { TruUser } from '../../services/tru-user';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\n\r\n@Component({\r\n selector: 'tru-report-view',\r\n templateUrl: './tru-report-view.html',\r\n styleUrls: ['./tru-report-view.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSidenav\r\n ]\r\n})\r\nexport class TruReportView extends TruSearchViewBase {\r\n @Input() view: any = {};\r\n @ViewChild('iframe', { static: false }) iframe!: HTMLIFrameElement;\r\n\r\n isBusy = true;\r\n\r\n private subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n desktopManager: TruDesktopManager,\r\n windowEventHandler: TruWindowEventHandler,\r\n private uiNotification: TruUiNotification,\r\n private user: TruUser) {\r\n super(desktopManager, windowEventHandler)\r\n }\r\n\r\n onLoad(iframe: HTMLIFrameElement) {\r\n var form = iframe.contentWindow?.document.querySelectorAll('form')[0];\r\n if (form) {\r\n var action = form.getAttribute('action');\r\n form.setAttribute('action', '');\r\n }\r\n setTimeout(() => {\r\n this.isBusy = false;\r\n }, 0);\r\n }\r\n\r\n ngOnInit(): void { \r\n let xhr = new XMLHttpRequest();\r\n xhr.open('POST', this.view.url);\r\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n xhr.responseType = 'arraybuffer';\r\n xhr.onreadystatechange = (result: any) => {\r\n if (xhr.readyState === 4) {\r\n if (xhr.status === 200) {\r\n var iframeDoc = this.iframe.contentWindow?.document as Document;\r\n iframeDoc.open('text/html', 'replace');\r\n iframeDoc.write(xhr.response);\r\n iframeDoc.close();\r\n } else {\r\n this.uiNotification.error('Report Error', [xhr.statusText]);\r\n }\r\n }\r\n };\r\n xhr.send(JSON.stringify({\r\n refs: this.view.actionRefs,\r\n }));\r\n\r\n this.windowEventHandler.setWindowTitle(this.view.title);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n this.releaseWindowTitle();\r\n }\r\n}\r\n","<div>\r\n <div class=\"view-busy-overlay\" *ngIf=\"isBusy\"></div>\r\n <iframe (load)=\"onLoad(iframe)\" class=\"report-view-frame\"></iframe>\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\nimport { TruDesktopViewConfig } from '../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruDesktopTitle } from '../components/desktop/classes/tru-desktop-title';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruWindowEventHandler } from '../components/desktop/services/tru-window-event-handler';\r\nimport { TruTextManager } from '../services/tru-text-manager';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-view-base',\r\n templateUrl: './tru-view-base.html',\r\n styleUrls: ['./tru-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruViewBase {\r\n @Input() view!: TruDesktopViewConfig;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected parentTableName: string = '';\r\n protected parentTablePluralName: string = '';\r\n protected parentTablePluralLabel: string = '';\r\n protected hasDetailView: boolean = true;\r\n protected pkeyName: string = '';\r\n protected windowTitle: TruDesktopTitle | undefined = undefined;\r\n protected windowConfig: any;\r\n protected expands = [];\r\n protected contextFilters: any;\r\n protected isSearching = false;\r\n protected entities: Array<any> = [];\r\n protected entity: any;\r\n protected entityType: any;\r\n protected recordLocation: string | null = null;\r\n protected disableNavigationToPreviousEntity: boolean = false;\r\n protected disableNavigationToNextEntity: boolean = false;\r\n protected navigationIndex: number = 0;\r\n protected recordsBeforeRevert: number = 0;\r\n protected subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler) { }\r\n\r\n setEntityDisplayValues(tableName: string) {\r\n let title = '';\r\n let recordIndex = '?';\r\n let entity = this.entities[this.navigationIndex];\r\n if (entity) {\r\n title = tableName + ' - ';\r\n if (entity.entityAspect.entityState.isAdded()) {\r\n title += 'New Record';\r\n } else {\r\n title += this.entity.HID;\r\n }\r\n recordIndex = (this.navigationIndex + 1).toString();\r\n }\r\n this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));\r\n this.recordLocation = recordIndex + ' of ' + this.entities.length;\r\n }\r\n}\r\n","","import { Injectable } from '@angular/core';\r\nimport { TruEntityBase } from '../../../base-classes/tru-entity-base';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruWindowCloseEventArgs {\r\n entities: Array<TruEntityBase> = [];\r\n entityIndex: number = 0;\r\n refresh: boolean = false;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-button',\r\n templateUrl: './tru-toolbar-button.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-button.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButton,\r\n MatIcon\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarButton implements OnInit {\r\n @Input() config: [] | null = null;\r\n @Input() icon: string = '';\r\n @Input() text: string = '';\r\n @Input() disabled: boolean = false;\r\n @Input() tooltip: string | null = null;\r\n @Input() type: string | undefined = 'button';\r\n\r\n @Output() onClick = new EventEmitter();\r\n @Output() onKeydown = new EventEmitter();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<button\r\n class=\"toolbar-btn toolbar-btn-default\"\r\n title=\"{{ tooltip }}\"\r\n tabindex=\"0\"\r\n [disabled]=\"disabled\"\r\n (click)=\"onClick.emit($event)\"\r\n (keydown)=\"onKeydown.emit($event)\"\r\n type=\"{{type}}\">\r\n <span class=\"toolbar-btn-icon\" *ngIf=\"icon\"><mat-icon [svgIcon]=\"icon\"></mat-icon></span>\r\n <span class=\"toolbar-btn-text\" *ngIf=\"text\">{{text}}</span>\r\n</button>\r\n","import { Directive, OnInit, Renderer2 } from \"@angular/core\";\r\nimport { MatSelect } from \"@angular/material/select\";\r\nimport { forEach, max } from \"underscore\";\r\nimport { TruUtil } from \"../../services/tru-util\";\r\n\r\n@Directive({\r\n selector: '[tru-mat-select-panel]'\r\n})\r\nexport class TruMatSelectPanel implements OnInit {\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private select: MatSelect,\r\n private util: TruUtil) { }\r\n\r\n documentMouseUpEventFn: () => void = () => { };\r\n\r\n private removeListeners = () => {\r\n if (this.documentMouseUpEventFn)\r\n this.documentMouseUpEventFn();\r\n }\r\n\r\n private getTextWidth = (element: HTMLElement, text: string) => {\r\n const canvas = document.createElement('canvas');\r\n const context = canvas.getContext('2d') as CanvasRenderingContext2D;\r\n\r\n context.font = getComputedStyle(element).font;\r\n\r\n return context.measureText(text).width;\r\n }\r\n\r\n ngOnInit() {\r\n this.select.openedChange.subscribe(isOpen => {\r\n if (isOpen) {\r\n setTimeout(() => {\r\n let panelElement = this.select.panel.nativeElement;\r\n let panelParentElement = this.select.panel.nativeElement.parentNode;\r\n let panelOverlayContainerElement = this.util.findClosestAncestorByClass(panelElement, '.cdk-overlay-container');\r\n let panelOverlayBackdropElement = panelOverlayContainerElement.childNodes[0];\r\n panelParentElement.style.width = 'auto';\r\n panelOverlayContainerElement.style.position = 'static';\r\n panelOverlayBackdropElement.style.display = 'none';\r\n\r\n let optionSpans = panelElement.querySelectorAll('span');\r\n let maxWidth = 0;\r\n optionSpans.forEach((optionSpan: HTMLElement) => {\r\n let currentWidth = this.getTextWidth(optionSpan, optionSpan.innerText);\r\n if (currentWidth > maxWidth)\r\n maxWidth = currentWidth;\r\n });\r\n\r\n panelParentElement.style.minWidth = (maxWidth + 85) + 'px';\r\n\r\n this.documentMouseUpEventFn = this.renderer.listen(document, 'mouseup', (event: MouseEvent) => {\r\n if (event.target !== this.select.panel.nativeElement && !this.select.panel.nativeElement.contains(event.target) && event.button !== 2) {\r\n this.removeListeners();\r\n setTimeout(() => {\r\n this.select.close();\r\n });\r\n }\r\n });\r\n });\r\n }\r\n else {\r\n this.removeListeners();\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeListeners();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'openOnStart'\r\n})\r\nexport class TruOpenOnStart implements PipeTransform {\r\n transform(openOnStart: () => {}, args?: any): void {\r\n openOnStart();\r\n }\r\n}\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { TruContextFilter } from '../../../classes/tru-context-filter';\r\nimport { TruContextFilters } from '../../../services/tru-context-filters';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatOption } from '@angular/material/autocomplete';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatFormField, MatInput } from '@angular/material/input';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { TruMatSelectPanel } from '../../../directives/select-panel/tru-mat-select-panel';\r\nimport { TruOpenOnStart } from '../../../pipes/open-on-start';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-context-filter',\r\n templateUrl: './tru-toolbar-context-filter.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-context-filter.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelect,\r\n MatFormField,\r\n MatOption,\r\n MatInput,\r\n MatIcon,\r\n TruMatSelectPanel,\r\n TruOpenOnStart\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarContextFilter implements OnInit {\r\n filters: Array<TruContextFilter> = [];\r\n\r\n selected: any;\r\n\r\n constructor(private truContextFilters: TruContextFilters) {\r\n this.filters = this.truContextFilters.filters;\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<mat-form-field *ngIf=\"filters.length\">\r\n <div *ngFor=\"let filter of filters\">\r\n <mat-select [(value)]=\"filter.selectedChoice\"\r\n [compareWith]=\"filter.comparer\"\r\n (selectionChange)=\"filter.onChange(filter.selectedChoice)\"\r\n title=\"{{filter.tooltip}}\"\r\n panelClass=\"tru-mat-select-panel\" \r\n tru-mat-select-panel>\r\n <mat-option *ngFor=\"let choice of filter.choices; trackBy filter.identify\" [value]=\"choice\">\r\n {{choice.label}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n</mat-form-field>\r\n","import { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { MatFormField, MatOption, MatSelect, MatSelectChange } from '@angular/material/select';\r\nimport { ITruToolbarDropdownOption } from '../classes/tru-toolbar-dropdown-option';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatPseudoCheckbox } from '@angular/material/core';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TruMatSelectPanel } from '../../../directives/select-panel/tru-mat-select-panel';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-dropdown',\r\n templateUrl: './tru-toolbar-dropdown.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-dropdown.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelect,\r\n MatIcon,\r\n TruMatSelectPanel,\r\n MatPseudoCheckbox,\r\n MatFormField,\r\n MatOption\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarDropdown implements OnInit, AfterViewInit {\r\n @Input() config: [] | null = null;\r\n @Input() options: Array<ITruToolbarDropdownOption> | null = [];\r\n @Input() tooltip: string = '';\r\n @Input() multiple: boolean = false;\r\n @Input() filterable: boolean = false;\r\n @Input() filterTooltip: string = '';\r\n @Input() width: number = 115;\r\n @Input() selectedOption!: ITruToolbarDropdownOption;\r\n @Output() selectedOptionChange = new EventEmitter<ITruToolbarDropdownOption>();\r\n @Input() disabled!: boolean;\r\n @Output() selectionChange = new EventEmitter<Array<ITruToolbarDropdownOption> | null>();\r\n\r\n @ViewChild('select') select!: MatSelect;\r\n\r\n filteredOptions: Array<ITruToolbarDropdownOption> | null = [];\r\n selectedOptions: Array<ITruToolbarDropdownOption> = [];\r\n selectAll: boolean = false;\r\n selectAllLabel: string = 'Select All';\r\n\r\n constructor() {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.filteredOptions = this.options;\r\n }\r\n\r\n toggleSelectAll = () => {\r\n this.selectAll = !this.selectAll;\r\n if (this.selectAll) {\r\n this.select.options.forEach((item: MatOption) => item.select());\r\n } else {\r\n this.select.options.forEach((item: MatOption) => item.deselect());\r\n }\r\n }\r\n\r\n onSelectionChange = (event: MatSelectChange) => {\r\n this.selectedOptionChange.emit(event.source.value);\r\n this.selectionChange.emit(event.value);\r\n if (event.value.length) {\r\n this.selectAll = true;\r\n this.selectAllLabel = 'Deselect All';\r\n } else {\r\n this.selectAll = false;\r\n this.selectAllLabel = 'Select All';\r\n }\r\n }\r\n\r\n onFilterChange = (event: any) => {\r\n const searchInput = event.target.value.toLowerCase();\r\n this.filteredOptions = this.options!.filter((option: ITruToolbarDropdownOption) => {\r\n const label = option.label.toLowerCase();\r\n return label.includes(searchInput);\r\n });\r\n }\r\n}\r\n","<mat-form-field>\r\n @if (multiple) {\r\n <mat-select #select\r\n [(ngModel)]=\"selectedOption\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"tooltip\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [style.width.px]=\"width\"\r\n tru-mat-select-panel\r\n multiple>\r\n <input matInput\r\n *ngIf=\"filterable\"\r\n [placeholder]=\"filterTooltip\"\r\n (input)=\"onFilterChange($event)\"\r\n type=\"text\"\r\n autocomplete=\"off\" />\r\n <div class=\"select-all-pseudo-checkbox-container\">\r\n <mat-pseudo-checkbox [(ngModel)]=\"selectAll\" (click)=\"toggleSelectAll()\" [ngClass]=\"{ 'mat-pseudo-checkbox-checked': selectAll }\"></mat-pseudo-checkbox>\r\n <span>{{selectAllLabel}}</span>\r\n </div>\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n {{option.label}}\r\n </mat-option>\r\n </mat-select>\r\n } @else {\r\n <mat-select [(ngModel)]=\"selectedOption\"\r\n [disabled]=\"disabled\"\r\n [placeholder]=\"tooltip\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n [style.width.px]=\"width\"\r\n [hideSingleSelectionIndicator]=\"true\"\r\n tru-mat-select-panel>\r\n <input matInput\r\n *ngIf=\"filterable\"\r\n [placeholder]=\"filterTooltip\"\r\n (input)=\"onFilterChange($event)\"\r\n type=\"text\"\r\n autocomplete=\"off\" />\r\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option\">\r\n {{option.label}}\r\n </mat-option>\r\n </mat-select>\r\n }\r\n</mat-form-field>\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-menu-button',\r\n templateUrl: './tru-toolbar-menu-button.html',\r\n styleUrls: ['../tru-toolbar-menu.css', './tru-toolbar-menu-button.css'],\r\n imports: [CommonModule, FormsModule],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarMenuButton {\r\n @Input() config!: any;\r\n\r\n constructor() {\r\n\r\n }\r\n}\r\n","<div>\r\n <i *ngIf=\"config.menuIcon\" class=\"{{config.menuIcon}} sub-menu-icon\" tabindex=\"-1\" (click)=\"config.fire()\"></i>\r\n <button tabindex=\"-1\" (click)=\"config.fire()\" *ngIf=\"config.hasAccess() && !config.menuIcon\">{{config.label}}</button>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, Input} from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruOpenOnStart } from '../../../../pipes/open-on-start';\r\nimport { TruUtil } from '../../../../services/tru-util';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-menu-item',\r\n templateUrl: './tru-toolbar-menu-item.html',\r\n styleUrls: ['../tru-toolbar-menu.css', './tru-toolbar-menu-item.css'],\r\n imports: [CommonModule, FormsModule, TruOpenOnStart]\r\n})\r\nexport class TruToolbarMenuItem {\r\n @Input() config!: any;\r\n\r\n isMouseDown: boolean = false;\r\n maxHeight: number = 200;\r\n\r\n constructor(\r\n private element: ElementRef,\r\n private util: TruUtil) {\r\n window.addEventListener('resize', this.windoeResize);\r\n }\r\n\r\n private windoeResize = () => {\r\n this.updateMenuHeight();\r\n };\r\n\r\n private updateMenuHeight = () => {\r\n let windowElement = this.util.findClosestAncestorByClass(this.element.nativeElement, '.desktop-window-container') as HTMLElement;\r\n if (!windowElement)\r\n this.maxHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0) - 40;\r\n else\r\n this.maxHeight = windowElement.clientHeight - 60;\r\n }\r\n\r\n onClick = (event: Event) => {\r\n var target = (event.target as Element);\r\n var isActive = target.classList.contains('is-active');\r\n if (isActive) {\r\n target.classList.remove('is-active');\r\n } else {\r\n target.classList.add('is-active');\r\n this.updateMenuHeight();\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n window.removeEventListener('resize', this.windoeResize);\r\n }\r\n}\r\n","<div (click)=\"onClick($event)\">\r\n <p *ngIf=\"config.menuLabel\">{{config.menuLabel}}</p>\r\n <i *ngIf=\"config.menuIcon\" class=\"{{config.menuIcon}} sub-menu-icon\" tabindex=\"-1\"></i>\r\n <div class=\"sub-menu\" *ngIf=\"config.choices\" [style.maxHeight.px]=\"[maxHeight]\">\r\n <ul class=\"sub-menu-nav\">\r\n <li *ngFor=\"let choice of config.choices\">\r\n <p *ngIf=\"choice.separator && choice.title\" class=\"separator-title\">{{choice.title}}</p>\r\n <hr *ngIf=\"choice.separator\" />\r\n <div style=\"display: none\" *ngIf=\"choice?.openOnStart\">{{choice?.openOnStart | openOnStart}}</div>\r\n <button *ngIf=\"!choice.separator\" tabindex=\"-1\" (click)=\"choice.fire()\" [disabled]=\"!choice.enabled()\">{{choice.label}}</button>\r\n </li>\r\n </ul>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruToolbarMenuButton } from './menu-button/tru-toolbar-menu-button';\r\nimport { TruToolbarMenuItem } from './menu-item/tru-toolbar-menu-item';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-menu',\r\n templateUrl: './tru-toolbar-menu.html',\r\n styleUrls: ['./tru-toolbar-menu.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenuItem,\r\n TruToolbarMenuButton\r\n ]\r\n})\r\nexport class TruToolbarMenu {\r\n @Input() config!: any;\r\n\r\n constructor() { }\r\n\r\n onDocumentClick = (event: Event) => {\r\n var activeMenus = document.querySelectorAll('.is-active');\r\n var target = (event.target as Element);\r\n activeMenus.forEach((activeMenu: Element) => {\r\n if (activeMenu !== target) {\r\n activeMenu.classList.remove('is-active');\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit() {\r\n document.addEventListener('click', this.onDocumentClick); \r\n }\r\n\r\n ngOnDestroy() {\r\n document.removeEventListener('click', this.onDocumentClick);\r\n }\r\n}\r\n","<ul class=\"hList menu-nav\">\r\n <li class=\"has-sub-menu\">\r\n <tru-toolbar-menu-button [config]=\"config\" *ngIf=\"!config.choices\"></tru-toolbar-menu-button>\r\n <tru-toolbar-menu-item [config]=\"config\" *ngIf=\"config.choices && config.choices.length\"></tru-toolbar-menu-item>\r\n </li>\r\n</ul>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-separator',\r\n templateUrl: './tru-toolbar-separator.html',\r\n styleUrls: ['./tru-toolbar-separator.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruToolbarSeparator {\r\n constructor() {}\r\n}\r\n","<div class=\"tru-toolbar-separator\"></div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-text',\r\n templateUrl: './tru-toolbar-text.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-text.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButton,\r\n MatIcon\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarText implements OnInit {\r\n @Input() config: [] | null = null;\r\n @Input() icon: string = '';\r\n @Input() text: string | null = '';\r\n @Input() tooltip: string | null = null;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n}\r\n","<p>\r\n <span class=\"toolbar-text-text\" *ngIf=\"text\">{{text}}</span>\r\n</p>\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TruAuthCache {\r\n prunables: Prunable[] = [];\r\n\r\n registerPrunable(prunable: Prunable) {\r\n this.prunables.push(prunable);\r\n }\r\n\r\n pruneAll() {\r\n this.prunables.forEach((p) => p.pruneCache());\r\n }\r\n}\r\n\r\nexport interface Prunable {\r\n pruneCache(): void;\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { TruAuthLoginRequest } from \"../classes/tru-auth-login-request\";\r\nimport { TruAuthCache } from \"./tru-auth-cache\";\r\nimport { TRU_AUTH_STRATEGY } from \"../classes/tru-auth-config\";\r\nimport { TruAuthStrategy } from \"../classes/tru-auth-config\";\r\nimport { TRU_AUTH_CONFIG } from \"../classes/tru-auth-config\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { TruUser } from \"../../../services/tru-user\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class TruAuth {\r\n private loggedIn = new BehaviorSubject<boolean>(false);\r\n private baseUrl: string = '';\r\n\r\n constructor(\r\n private router: Router,\r\n private http: HttpClient,\r\n private cache: TruAuthCache,\r\n private user: TruUser,\r\n private appEnvironment: TruAppEnvironment,\r\n @Inject(TRU_AUTH_STRATEGY) private auth: TruAuthStrategy<any>\r\n ) {\r\n this.baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n login(loginRequest: TruAuthLoginRequest): Observable<any> {\r\n return this.http\r\n .post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/login`, loginRequest)\r\n .pipe(tap((data) => { \r\n this.auth.doLoginUser(data);\r\n this.loggedIn.next(true);\r\n }));\r\n }\r\n\r\n setUser() {\r\n this.auth.createUser(this.user);\r\n }\r\n\r\n logout() {\r\n this.http\r\n .post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/logout`, null).subscribe(() => {\r\n this.doLogoutAndRedirectToLogin();\r\n });\r\n }\r\n\r\n userClaims() {\r\n if (this.appEnvironment.authType === 'session') {\r\n return this.http\r\n .get<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/userClaims`)\r\n .pipe(tap((userClaims) => {\r\n this.user.create(userClaims);\r\n }));\r\n }\r\n else {\r\n return this.auth.createUser(this.user);\r\n }\r\n }\r\n\r\n get isLoggedIn() {\r\n if (!this.loggedIn.value) {\r\n this.loggedIn.next(this.auth.isLoggedIn());\r\n }\r\n return this.loggedIn.asObservable();\r\n }\r\n\r\n doLogoutAndRedirectToLogin() {\r\n this.doLogoutUser();\r\n this.loggedIn.next(false);\r\n this.router.navigate([\"\"]);\r\n }\r\n\r\n private doLogoutUser() {\r\n this.user.destroy();\r\n this.cache.pruneAll();\r\n this.auth.doLogoutUser();\r\n }\r\n}\r\n","import { Component, ViewEncapsulation } from '@angular/core';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruUser } from '../../../services/tru-user';\r\nimport { TruAuth } from '../../login/services/tru-auth';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\r\n\r\n\r\n@Component({\r\n selector: 'tru-toolbar-user-profile',\r\n templateUrl: './tru-toolbar-user-profile.html',\r\n styleUrls: ['./tru-toolbar-user-profile.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenuModule,\r\n MatMenu,\r\n MatMenuItem,\r\n MatButton,\r\n MatIcon,\r\n MatMenuTrigger\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarUserProfile {\r\n initial: string | null | undefined = null;\r\n name: string | null | undefined = null;\r\n email: string | null | undefined = null;\r\n\r\n constructor(\r\n private user: TruUser,\r\n private auth: TruAuth,\r\n private uiNotification: TruUiNotification) {\r\n this.initial = user?.firstName ? user?.firstName.slice(0, 1).toUpperCase() : user?.username?.slice(0, 1).toUpperCase()\r\n this.name = user?.firstName && user?.lastName ? user?.firstName + ' ' + user?.lastName : user?.username;\r\n this.email = user?.email;\r\n }\r\n\r\n onChangePasswordButtonClicked = () => {\r\n this.uiNotification.changePassword(this.user.activeUserRef, this.user.username as string);\r\n }\r\n\r\n onLogoutButtonClicked = () => {\r\n this.auth.logout();\r\n }\r\n}\r\n","<div class=\"tru-toolbar-user-profile\">\r\n <button mat-mini-fab color=\"primary\" class=\"tru-toolbar-user-profile-user-button\" [matMenuTriggerFor]=\"userMenu\">\r\n {{initial}}\r\n </button>\r\n</div>\r\n<mat-menu #userMenu=\"matMenu\">\r\n <div class=\"tru-toolbar-user-profile-menu-container\">\r\n <mat-icon class=\"tru-toolbar-user-profile-menu-circle-icon\" [svgIcon]=\"'circle-icon'\"></mat-icon>\r\n <span class=\"tru-toolbar-user-profile-menu-circle-icon-text\">{{initial}}</span>\r\n <div class=\"tru-toolbar-user-profile-menu-text-container\">\r\n <p>{{name}}</p>\r\n <p *ngIf=\"email\">{{email}}</p>\r\n </div>\r\n <button mat-menu-item\r\n (click)=\"onChangePasswordButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'change-password-icon'\"\r\n title=\"Change Password\"\r\n class=\"tru-toolbar-user-profile-change-password-icon\">\r\n </mat-icon>\r\n <span>Change Password</span>\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onLogoutButtonClicked()\"\r\n class=\"tru-toolbar-user-profile-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'logout-icon'\"\r\n title=\"Logout\"\r\n class=\"tru-toolbar-user-profile-logout-icon\">\r\n </mat-icon>\r\n <span>Logout</span>\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruToolbarButton } from './button/tru-toolbar-button';\r\nimport { TruToolbarContextFilter } from './context-filter/tru-toolbar-context-filter';\r\nimport { TruToolbarDropdown } from './dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarMenu } from './menu/tru-toolbar-menu';\r\nimport { TruToolbarSeparator } from './separator/tru-toolbar-separator';\r\nimport { TruToolbarText } from './text/tru-toolbar-text';\r\nimport { TruToolbarUserProfile } from './user-profile/tru-toolbar-user-profile';\r\n\r\n@Component({\r\n selector: 'tru-toolbar',\r\n templateUrl: './tru-toolbar.html',\r\n styleUrls: ['./tru-toolbar.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenu,\r\n TruToolbarButton,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarContextFilter,\r\n TruToolbarText,\r\n TruToolbarUserProfile\r\n ]\r\n})\r\nexport class TruToolbar implements OnInit {\r\n @Input() config: [] | null = null;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n if (this.config != null)\r\n this.config.forEach(item => {\r\n\r\n });\r\n }\r\n}\r\n","<div class=\"toolbar toolbar-group\">\r\n <ng-content></ng-content>\r\n</div>\r\n","import { AfterContentChecked, Directive, EventEmitter, Output } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[truRendered]'\r\n})\r\nexport class TruRendered implements AfterContentChecked {\r\n @Output() rendered = new EventEmitter();\r\n\r\n ngAfterContentChecked() {\r\n this.rendered.emit();\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { MatIconRegistry } from \"@angular/material/icon\";\n\nconst GO_TO_ICON = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h264v72H216v528h528v-264h72v264q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm171-192-51-51 357-357H576v-72h240v240h-72v-117L387-336Z\"/></svg>\n`;\n\nconst CALENDAR_ICON = `\n <svg height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M200-80q-33 0-56.5-23.5T120-160v-560q0-33 23.5-56.5T200-800h40v-80h80v80h320v-80h80v80h40q33 0 56.5 23.5T840-720v560q0 33-23.5 56.5T760-80H200Zm0-80h560v-400H200v400Zm0-480h560v-80H200v80Zm0 0v-80 80Zm280 240q-17 0-28.5-11.5T440-440q0-17 11.5-28.5T480-480q17 0 28.5 11.5T520-440q0 17-11.5 28.5T480-400Zm-160 0q-17 0-28.5-11.5T280-440q0-17 11.5-28.5T320-480q17 0 28.5 11.5T360-440q0 17-11.5 28.5T320-400Zm320 0q-17 0-28.5-11.5T600-440q0-17 11.5-28.5T640-480q17 0 28.5 11.5T680-440q0 17-11.5 28.5T640-400ZM480-240q-17 0-28.5-11.5T440-280q0-17 11.5-28.5T480-320q17 0 28.5 11.5T520-280q0 17-11.5 28.5T480-240Zm-160 0q-17 0-28.5-11.5T280-280q0-17 11.5-28.5T320-320q17 0 28.5 11.5T360-280q0 17-11.5 28.5T320-240Zm320 0q-17 0-28.5-11.5T600-280q0-17 11.5-28.5T640-320q17 0 28.5 11.5T680-280q0 17-11.5 28.5T640-240Z\"/></svg>\n`;\n\nconst LOADING_ICON = `\n <svg height = \"24\" viewBox = \"0 -960 960 960\" width = \"24\" > <path d=\"M314-195q-104-48-169.5-145T79-559q0-26 3-51t9-49l-46 27-40-69 191-110 110 190-70 40-54-94q-11 27-16.5 56t-5.5 60q0 97 53 176.5T354-265l-40 70Zm306-485v-80h109q-46-57-111-88.5T480-880q-55 0-104 17t-90 48l-40-70q50-35 108.5-55T479-960q79 0 151.5 29.5T760-845v-55h80v220H620ZM594-80 403-190l110-190 69 40-57 98q118-17 196.5-106.5T800-559q0-11-.5-21t-2.5-20h81q1 10 1.5 19.5t.5 20.5q0 135-80.5 241.5T590-175l44 26-40 69Z\" /> </svg>\n`;\n\nconst CIRCLE_ICON = `\n <svg height=\"48\" viewBox=\"0 -960 960 960\" width=\"48\"><path d=\"M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 31.5-156t86-127Q252-817 325-848.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 82-31.5 155T763-197.5q-54 54.5-127 86T480-80Z\"/></svg>\n`;\n\nconst MORE_ICON = `\n <svg height=\"24\" viewBox=\"0 -960 960 960\" width=\"24\" fill=\"#006dcc\"><path d=\"M480-160q-33 0-56.5-23.5T400-240q0-33 23.5-56.5T480-320q33 0 56.5 23.5T560-240q0 33-23.5 56.5T480-160Zm0-240q-33 0-56.5-23.5T400-480q0-33 23.5-56.5T480-560q33 0 56.5 23.5T560-480q0 33-23.5 56.5T480-400Zm0-240q-33 0-56.5-23.5T400-720q0-33 23.5-56.5T480-800q33 0 56.5 23.5T560-720q0 33-23.5 56.5T480-640Z\"/></svg>\n`;\n\nconst DOWNLOAD_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M480-336 288-528l51-51 105 105v-342h72v342l105-105 51 51-192 192ZM263.717-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.162 50.85Q725.676-192 695.96-192H263.717Z\"/></svg>\n`;\n\nconst UPLOAD_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"M444-336v-342L339-573l-51-51 192-192 192 192-51 51-105-105v342h-72ZM263.717-192Q234-192 213-213.15T192-264v-72h72v72h432v-72h72v72q0 29.7-21.162 50.85Q725.676-192 695.96-192H263.717Z\"/></svg>\n`;\n\nconst UNLINK_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"20\"><path d=\"m754-308-56-55q41.778-11.297 67.889-43.649Q792-439 792-480q0-50-35-85t-85-35H528v-72h144q79.68 0 135.84 56.224Q864-559.553 864-479.782 864-425 834.5-379T754-308ZM618-444l-72-72h78v72h-6ZM768-90 90-768l51-51 678 678-51 51ZM432-288H288q-79.68 0-135.84-56.16T96-480q0-63.932 38-113.966Q172-644 242-673l70 73h-23q-51 0-86 35t-35 85q0 50 35 85t85 35h144v72Zm-96-156v-72h56l71 72H336Z\"/></svg>\n`;\n\nconst SELECT_ALL_ICON = `\n <svg height=\"20px\" fill=\"#000000\" width=\"20px\" x=\"0px\" y=\"0px\" viewBox=\"0 -10 100 125\" enable-background=\"new 0 0 100 100\" xml:space=\"preserve\"><g><path d=\"M99,99H2.598L99,2.598V99z\"/></g></svg>\n`;\n\nconst DESC_SORT_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M480-96 216-360l51-51 177 177v-630h72v630l177-177 51 51L480-96Z\"/></svg>\n`;\n\nconst ASC_SORT_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M444-144v-534l-57 57-51-51 144-144 144 144-51 51-57-57v534h-72Z\"/></svg>\n`;\n\nconst DESC_SORT_MENU_ICON = `\n<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- \"Z\" shape in gray -->\n <text x=\"2\" y=\"8\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#444\" font-weight=\"bold\">Z</text>\n <!-- \"A\" shape in blue -->\n <text x=\"2\" y=\"15\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#1976D2\" font-weight=\"bold\">A</text>\n <!-- Downward arrow in gray -->\n <path d=\"M12.5 3V14\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <path d=\"M10.5 12L12.5 14L14.5 12\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n`;\n\nconst ASC_SORT_MENU_ICON = `\n<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <!-- A -->\n <text x=\"2\" y=\"8\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#1976D2\" font-weight=\"bold\">A</text>\n <!-- Z -->\n <text x=\"2\" y=\"16\" font-family=\"Segoe UI, Arial\" font-size=\"7\" fill=\"#444\" font-weight=\"bold\">Z</text>\n <!-- Down Arrow -->\n <line x1=\"12.5\" y1=\"3\" x2=\"12.5\" y2=\"14\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\"/>\n <polyline points=\"10,12 12.5,15 15,12\" fill=\"none\" stroke=\"#444\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>\n`;\n\nconst NO_SORT_ICON = `\n<svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#949494\">\n <path d=\"M480-96q-79 0-149-30t-122.5-82.5Q156-261 126-331T96-480q0-80 30-149.5t82.5-122Q261-804 331-834t149-30q80 0 149.5 30t122 82.5Q804-699 834-629.5T864-480q0 79-30 149t-82.5 122.5Q699-156 629.5-126T480-96Zm0-72q55 0 104-18t89-50L236-673q-32 40-50 89t-18 104q0 130 91 221t221 91Zm244-119q32-40 50-89t18-104q0-130-91-221t-221-91q-55 0-104 18t-89 50l437 437Z\"/>\n</svg>\n`;\n\nconst FILTER_ICON = `\n <svg height=\"18px\" viewBox=\"0 -960 960 960\" width=\"18px\" fill=\"#006dcc\"><path d=\"M456.18-192Q446-192 439-198.9t-7-17.1v-227L197-729q-9-12-2.74-25.5Q200.51-768 216-768h528q15.49 0 21.74 13.5Q772-741 763-729L528-443v227q0 10.2-6.88 17.1-6.89 6.9-17.06 6.9h-47.88ZM480-498l162-198H317l163 198Zm0 0Z\"/></svg>\n`;\n\nconst CHANGE_PASSWORD_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M480-480Zm0 400q-139-35-229.5-159.5T160-516v-244l320-120 320 120v262q0 9-1 19h-81q1-10 1.5-19t.5-18v-189l-240-90-240 90v189q0 121 68 220t172 132v84Zm200 0v-120H560v-80h120v-120h80v120h120v80H760v120h-80ZM420-360h120l-23-129q20-10 31.5-29t11.5-42q0-33-23.5-56.5T480-640q-33 0-56.5 23.5T400-560q0 23 11.5 42t31.5 29l-23 129Z\"/></svg>\n`;\n\nconst SETTINGS_ICON = `\n <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"m370-80-16-128q-13-5-24.5-12T307-235l-119 50L78-375l103-78q-1-7-1-13.5v-27q0-6.5 1-13.5L78-585l110-190 119 50q11-8 23-15t24-12l16-128h220l16 128q13 5 24.5 12t22.5 15l119-50 110 190-103 78q1 7 1 13.5v27q0 6.5-2 13.5l103 78-110 190-118-50q-11 8-23 15t-24 12L590-80H370Zm70-80h79l14-106q31-8 57.5-23.5T639-327l99 41 39-68-86-65q5-14 7-29.5t2-31.5q0-16-2-31.5t-7-29.5l86-65-39-68-99 42q-22-23-48.5-38.5T533-694l-13-106h-79l-14 106q-31 8-57.5 23.5T321-633l-99-41-39 68 86 64q-5 15-7 30t-2 32q0 16 2 31t7 30l-86 65 39 68 99-42q22 23 48.5 38.5T427-266l13 106Zm42-180q58 0 99-41t41-99q0-58-41-99t-99-41q-59 0-99.5 41T342-480q0 58 40.5 99t99.5 41Zm-2-140Z\"/></svg>\n`;\n\nconst IMPORT_ICON = `\n <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M440-280h80v-168l64 64 56-56-160-160-160 160 56 56 64-64v168ZM160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h240l80 80h320q33 0 56.5 23.5T880-640v400q0 33-23.5 56.5T800-160H160Zm0-80h640v-400H447l-80-80H160v480Zm0 0v-480 480Z\"/></svg>\n`;\n\nconst LOGOUT_ICON = `\n <svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M200-120q-33 0-56.5-23.5T120-200v-560q0-33 23.5-56.5T200-840h280v80H200v560h280v80H200Zm440-160-55-58 102-102H360v-80h327L585-622l55-58 200 200-200 200Z\"/></svg>\n`;\n\nconst ABOUT_ICON = `\n<svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#006dcc\"><path d=\"M480-60q-72-68-165-104t-195-36v-440q101 0 194 36.5T480-498q73-69 166-105.5T840-640v440q-103 0-195.5 36T480-60Zm0-104q63-47 134-75t146-37v-276q-73 13-143.5 52.5T480-394q-66-66-136.5-105.5T200-552v276q75 9 146 37t134 75Zm0-436q-66 0-113-47t-47-113q0-66 47-113t113-47q66 0 113 47t47 113q0 66-47 113t-113 47Zm0-80q33 0 56.5-23.5T560-760q0-33-23.5-56.5T480-840q-33 0-56.5 23.5T400-760q0 33 23.5 56.5T480-680Zm0-80Zm0 366Z\"/></svg>\n`;\n\nconst ERROR_ICON = `\n<svg height=\"24px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#e8eaed\"><path d=\"M480-280q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240Zm40 360q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z\"/></svg>\n`;\n\nconst EXPAND_ICON = `\n<svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#000\"><path d=\"M480-80 240-320l57-57 183 183 183-183 57 57L480-80ZM298-584l-58-56 240-240 240 240-58 56-182-182-182 182Z\"/></svg>\n`;\n\nconst COLLAPSE_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"24px\" fill=\"#000\"><path d=\"m296-80-56-56 240-240 240 240-56 56-184-184L296-80Zm184-504L240-824l56-56 184 184 184-184 56 56-240 240Z\"/></svg>\n`;\n\nconst SEARCH_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M765-144 526-383q-30 22-65.79 34.5-35.79 12.5-76.18 12.5Q284-336 214-406t-70-170q0-100 70-170t170-70q100 0 170 70t70 170.03q0 40.39-12.5 76.18Q599-464 577-434l239 239-51 51ZM384-408q70 0 119-49t49-119q0-70-49-119t-119-49q-70 0-119 49t-49 119q0 70 49 119t119 49Z\"/></svg>\n`;\n\nconst COPY_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M360-240q-29.7 0-50.85-21.15Q288-282.3 288-312v-480q0-29.7 21.15-50.85Q330.3-864 360-864h384q29.7 0 50.85 21.15Q816-821.7 816-792v480q0 29.7-21.15 50.85Q773.7-240 744-240H360Zm0-72h384v-480H360v480ZM216-96q-29.7 0-50.85-21.15Q144-138.3 144-168v-552h72v552h456v72H216Zm144-216v-480 480Z\"/></svg>\n`;\n\nconst PASTE_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M216-144q-29.7 0-50.85-21.15Q144-186.3 144-216v-528q0-29.7 21.15-50.85Q186.3-816 216-816h171q8-31 33.5-51.5T480-888q34 0 59.5 20.5T573-816h171q29.7 0 50.85 21.15Q816-773.7 816-744v528q0 29.7-21.15 50.85Q773.7-144 744-144H216Zm0-72h528v-528h-72v120H288v-120h-72v528Zm263.79-528q15.21 0 25.71-10.29t10.5-25.5q0-15.21-10.29-25.71t-25.5-10.5q-15.21 0-25.71 10.29t-10.5 25.5q0 15.21 10.29 25.71t25.5 10.5Z\"/></svg>\n`;\n\nconst INSERT_ICON = `\n <svg height=\"20px\" viewBox=\"0 -960 960 960\" width=\"20px\" fill=\"#e3e3e3\"><path d=\"M216-192h528v-228H216v228Zm600 72H144v-672h144V-719.51h-72V-492h528v-228h-72v-72h144v672ZM480-492Zm0 72v-72 72Zm0 0Zm-36-216v-84h-84v-72h84v-84h72v84h84v72h-84v84h-72Z\"/></svg>\n`;\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [],\n exports: []\n})\nexport class TruIconModule {\n constructor(sanitizer: DomSanitizer, iconRegistry: MatIconRegistry) {\n iconRegistry.addSvgIconLiteral(\n \"go-to-icon\",\n sanitizer.bypassSecurityTrustHtml(GO_TO_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"calendar-icon\",\n sanitizer.bypassSecurityTrustHtml(CALENDAR_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"loading-icon\",\n sanitizer.bypassSecurityTrustHtml(LOADING_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"circle-icon\",\n sanitizer.bypassSecurityTrustHtml(CIRCLE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"more-icon\",\n sanitizer.bypassSecurityTrustHtml(MORE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"download-icon\",\n sanitizer.bypassSecurityTrustHtml(DOWNLOAD_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"upload-icon\",\n sanitizer.bypassSecurityTrustHtml(UPLOAD_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"unlink-icon\",\n sanitizer.bypassSecurityTrustHtml(UNLINK_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"select-all-icon\",\n sanitizer.bypassSecurityTrustHtml(SELECT_ALL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"asc-sort-icon\",\n sanitizer.bypassSecurityTrustHtml(ASC_SORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"desc-sort-icon\",\n sanitizer.bypassSecurityTrustHtml(DESC_SORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"asc-sort-menu-icon\",\n sanitizer.bypassSecurityTrustHtml(ASC_SORT_MENU_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"desc-sort-menu-icon\",\n sanitizer.bypassSecurityTrustHtml(DESC_SORT_MENU_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"no-sort-icon\",\n sanitizer.bypassSecurityTrustHtml(NO_SORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"filter-icon\",\n sanitizer.bypassSecurityTrustHtml(FILTER_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"change-password-icon\",\n sanitizer.bypassSecurityTrustHtml(CHANGE_PASSWORD_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"settings-icon\",\n sanitizer.bypassSecurityTrustHtml(SETTINGS_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"import-icon\",\n sanitizer.bypassSecurityTrustHtml(IMPORT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"logout-icon\",\n sanitizer.bypassSecurityTrustHtml(LOGOUT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"about-icon\",\n sanitizer.bypassSecurityTrustHtml(ABOUT_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"error-icon\",\n sanitizer.bypassSecurityTrustHtml(ERROR_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"expand-icon\",\n sanitizer.bypassSecurityTrustHtml(EXPAND_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"collapse-icon\",\n sanitizer.bypassSecurityTrustHtml(COLLAPSE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"search-icon\",\n sanitizer.bypassSecurityTrustHtml(SEARCH_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"copy-icon\",\n sanitizer.bypassSecurityTrustHtml(COPY_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"paste-icon\",\n sanitizer.bypassSecurityTrustHtml(PASTE_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"insert-icon\",\n sanitizer.bypassSecurityTrustHtml(INSERT_ICON)\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\r\nimport { TruTableConfigBase } from \"../base-classes/tru-table-config-base\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelTableLookup {\r\n private _lookup: Map<string, TruTableConfigBase> = new Map<string, TruTableConfigBase>();\r\n\r\n constructor() { }\r\n\r\n get lookup(): Map<string, TruTableConfigBase> {\r\n return this._lookup;\r\n }\r\n\r\n set lookup(value: Map<string, TruTableConfigBase>) {\r\n this._lookup = value;\r\n }\r\n\r\n get all(): Array<TruTableConfigBase> {\r\n return [...this._lookup.values()];\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruPropertyConfigBase } from \"../base-classes/tru-property-config-base\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelPropertyLookup {\r\n private _lookup: Map<string, TruPropertyConfigBase> = new Map<string, TruPropertyConfigBase>();\r\n\r\n constructor() {}\r\n\r\n get lookup(): Map<string, TruPropertyConfigBase> {\r\n return this._lookup;\r\n }\r\n\r\n set lookup(value: Map<string, TruPropertyConfigBase>) {\r\n this._lookup = value;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruModelTypeLookup {\r\n private _lookup: Map<string, typeof TruEntityBase> = new Map<string, typeof TruEntityBase>();\r\n\r\n constructor() { }\r\n\r\n getType(typeName: string): typeof TruEntityBase {\r\n return this._lookup.get(typeName) as typeof TruEntityBase;\r\n }\r\n\r\n setType(typeName: string, type: typeof TruEntityBase) {\r\n this._lookup.set(typeName, type);\r\n }\r\n\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { TruViewBase } from '../../base-views/tru-view-base';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruWindowEventHandler } from '../desktop/services/tru-window-event-handler';\r\nimport { TruModelTableLookup } from '../../services/tru-model-table-lookup';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { TruModelPropertyLookup } from '../../services/tru-model-property-lookup';\r\nimport { TruModelTypeLookup } from '../../services/tru-model-type-lookup';\r\nimport { TruModelNavigationPropertiesLookup } from '../../services/tru-model-navigation-properties-lookup';\r\nimport { TruNavigationPropertyConfig } from '../../classes/tru-navigation-property-config';\r\nimport { TruWindowCloseEventArgs } from '../desktop/services/tru-window-close-event-args';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { TruToolbar } from '../toolbar/tru-toolbar';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { TruRendered } from '../../directives/rendered/tru-rendered';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruToolbarButton } from '../toolbar/button/tru-toolbar-button';\r\nimport { TruToolbarText } from '../toolbar/text/tru-toolbar-text';\r\nimport { TruToolbarDropdown } from '../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruIconModule } from '../../assets/tru-icon-module';\r\n\r\n@Component({\r\n selector: 'tru-clone-view',\r\n templateUrl: './tru-clone-view.html',\r\n styleUrls: ['./tru-clone-view.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav,\r\n TruToolbar,\r\n TruToolbarButton,\r\n TruToolbarText,\r\n TruToolbarDropdown,\r\n TruIconModule,\r\n TruRendered\r\n ]\r\n})\r\nexport class TruCloneView extends TruViewBase {\r\n loading: boolean = true;\r\n loadingMessage: string = 'Searching for related records...';\r\n numberOfCopies: Array<ITruToolbarDropdownOption>\r\n selectedNumberOfCopies: ITruToolbarDropdownOption;\r\n contextFilters = null;\r\n rootNode: Node | null = null;\r\n ignorePropertyList = [\r\n 'CreatedRef',\r\n 'Created',\r\n 'UpdatedRef',\r\n 'Updated',\r\n 'rowver',\r\n '_customValidationErrors',\r\n 'entityAspect',\r\n '_associatedDataCached',\r\n '_backingStore',\r\n '_setDefaults',\r\n '_$typeName',\r\n 'entityType',\r\n '_$interceptor',\r\n 'getProperty',\r\n 'setProperty',\r\n '_pendingBackingStores',\r\n 'Ref'\r\n ];\r\n dataTree = [];\r\n flatList: Array<Node> = [];\r\n childFlatList: Array<Node> = [];\r\n processedCount: number = 0;\r\n doneProcessing: boolean = false;\r\n displayTree = [this.rootNode];\r\n parentDataContext!: TruDataContext;\r\n\r\n constructor(\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler,\r\n private dataContext: TruDataContext,\r\n private modelTableLookup: TruModelTableLookup,\r\n private modelPropertyLookup: TruModelPropertyLookup,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private modelNavigationPropertiesLookup: TruModelNavigationPropertiesLookup,\r\n private uiNotification: TruUiNotification) {\r\n super(textManager, windowEventHandler);\r\n this.numberOfCopies = this.getNumberOfCopies();\r\n this.selectedNumberOfCopies = this.numberOfCopies[0];\r\n }\r\n\r\n private getNumberOfCopies = (): Array<ITruToolbarDropdownOption> => {\r\n let copies: Array<ITruToolbarDropdownOption> = [];\r\n for (var i = 1; i <= 25; i++) {\r\n copies.push({\r\n value: i,\r\n label: i.toString()\r\n });\r\n }\r\n return copies;\r\n }\r\n\r\n private propertyIsAllowed = (propertyName: string, tableName: string) => {\r\n if (propertyName === tableName + 'Ref') return false;\r\n if (propertyName.startsWith('o')) return false;\r\n let property = this.modelPropertyLookup.lookup.get(propertyName);\r\n if (property && property.excludeFromCloning) return false;\r\n if (this.ignorePropertyList.some(function (propertyToIgnore) { return propertyToIgnore === propertyName; })) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private getPrototypeProperties = (obj: any) => {\r\n var result = [];\r\n for (var prop in obj) {\r\n if (!obj.hasOwnProperty(prop)) {\r\n result.push(prop);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n private getChildPropertiesForCurrentEntity = (currentEntity: any) => {\r\n //var propertyNames = Object.keys(Object.getPrototypeOf(currentEntity));\r\n let entityName = this.getTypeFromEntityTypeName(currentEntity.$type);\r\n let childLookup = this.modelNavigationPropertiesLookup.lookup.get(entityName) as TruNavigationPropertyConfig[];\r\n let propertyNames = Object.keys(currentEntity);\r\n let navigationPropertyNames = propertyNames.filter((n) => { return n.startsWith('o'); });\r\n let childNavigationPropertyNames = navigationPropertyNames.filter((n) => {\r\n return childLookup.some((lookup: any) => { return lookup.name === n; });\r\n });\r\n\r\n let childProperties: Array<any> = [];\r\n childNavigationPropertyNames.filter(function (n) {\r\n if (currentEntity[n] && currentEntity[n].length)\r\n childProperties.push({\r\n parentToChildRefName: n,\r\n entities: currentEntity[n]\r\n });\r\n });\r\n\r\n return childProperties;\r\n }\r\n\r\n private getTypeFromEntityTypeName = (typeName: string) => {\r\n var p1s = typeName.split(',')[0];\r\n var p2s = p1s.split('.');\r\n return p2s[p2s.length - 1];\r\n }\r\n\r\n private buildCloneTree = (currentEntity: any, node: any) => {\r\n var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);\r\n childProperties.forEach((childProperty: any) => {\r\n let type = this.getTypeFromEntityTypeName(childProperty.entities[0].$type);\r\n let childLookup = this.modelTableLookup.lookup.get(type);\r\n let groupNode = new Node(\r\n null,\r\n childProperty.entities[0].constructor.name,\r\n childLookup?.pluralLabel as string,\r\n false,\r\n true,\r\n [],\r\n '',\r\n null,\r\n false,\r\n node,\r\n null\r\n );\r\n\r\n this.flatList.push(groupNode);\r\n\r\n childProperty.entities.forEach((childEntity: any) => {\r\n let type = this.getTypeFromEntityTypeName(childEntity.$type);\r\n let childNode = new Node(\r\n childEntity[type + 'Ref'],\r\n type,\r\n type,\r\n true,\r\n true,\r\n [],\r\n '',\r\n childProperty.parentToChildRefName,\r\n false,\r\n groupNode,\r\n childEntity\r\n );\r\n\r\n this.childFlatList.push(childNode);\r\n groupNode.nodes.push(childNode);\r\n this.buildCloneTree(childEntity, childNode);\r\n });\r\n\r\n node.nodes.push(groupNode);\r\n });\r\n }\r\n\r\n private asyncForEachRecordId = (arr: any, cb: any) => {\r\n return arr.reduce((p: any, c: any) => {\r\n return p.then(() => cb(c));\r\n }, Promise.resolve());\r\n }\r\n\r\n private fetchRecordId = (child: any) => {\r\n var c = child;\r\n var data = {\r\n ref: c.ref,\r\n tableName: c.tableName\r\n };\r\n data = this.textManager.formatAsUrlParameters(data);\r\n\r\n return new Promise((resolve: any) => {\r\n c.displayName = child.entity.HID;\r\n this.processedCount++;\r\n this.loadingMessage = 'Formatting data...processed (' + this.processedCount + '/' + this.childFlatList.length + ') records';\r\n if (this.processedCount >= this.childFlatList.length)\r\n this.loadingMessage = 'Rendering tree...';\r\n resolve();\r\n });\r\n }\r\n\r\n private traverse = (node: any, currentEntity: any) => {\r\n var group = !node.child;\r\n if (group) {\r\n var groupNodes = node.nodes;\r\n groupNodes.forEach((groupNode: any) => {\r\n if (groupNode.checked)\r\n groupNode.nodes.forEach((childNode: any) => {\r\n this.traverse(childNode, currentEntity);\r\n });\r\n });\r\n } else {\r\n if (node.checked) {\r\n let tableType = this.modelTypeLookup.getType(node.tableName);\r\n let newEntity = this.parentDataContext.entityAccess().add(tableType, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n this.getPrototypeProperties(newEntity).forEach((propertyName) => {\r\n if (this.propertyIsAllowed(propertyName, node.tableName)) {\r\n newEntity[propertyName as ObjectKey] = node.entity[propertyName];\r\n }\r\n });\r\n\r\n newEntity.setProperty!('_associatedDataCached', true);\r\n\r\n let childLookup = this.modelTableLookup.lookup.get(node.tableName);\r\n currentEntity[node.parentToChildRefName].push(newEntity);\r\n let childNodes = node.nodes;\r\n childNodes.forEach((childNode: any) => {\r\n if (childNode.checked)\r\n childNode.nodes.forEach((groupNode: any) => {\r\n this.traverse(groupNode, newEntity);\r\n });\r\n });\r\n }\r\n }\r\n };\r\n\r\n private getDataForCloning = () => {\r\n this.parentDataContext.entityAccess().clone({\r\n ref: this.entity.Ref,\r\n tableName: this.tableName\r\n }).subscribe({\r\n next: (response: any) => {\r\n this.dataTree = response.Content[0];\r\n this.buildCloneTree(this.dataTree, this.rootNode);\r\n\r\n this.loadingMessage = 'Formatting data...(0/' + this.childFlatList.length + ') records';\r\n this.asyncForEachRecordId(this.childFlatList, this.fetchRecordId).then(this.onDone);\r\n\r\n this.displayTree = [this.rootNode];\r\n },\r\n error: (ex: any) => {\r\n console.log('error', this.uiNotification.error('Server Error: ' + ex.status, [ex.error.Message]))\r\n }\r\n });\r\n }\r\n\r\n onClone = () => {\r\n let copies = this.selectedNumberOfCopies.value;\r\n for (let i = 0; i < copies; i++) {\r\n let tableType = this.modelTypeLookup.getType(this.tableName);\r\n let newEntity = this.parentDataContext.entityAccess().add(tableType, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n this.getPrototypeProperties(this.entity).forEach((propertyName: string) => {\r\n if (this.propertyIsAllowed(propertyName, this.tableName)) {\r\n newEntity[propertyName as ObjectKey] = this.entity[propertyName];\r\n }\r\n });\r\n\r\n newEntity.setProperty!('_associatedDataCached', true);\r\n\r\n this.traverse(this.displayTree[0], newEntity);\r\n this.view.entities?.unshift(newEntity);\r\n }\r\n let windowCloseEventArgs = new TruWindowCloseEventArgs();\r\n windowCloseEventArgs.entities = this.view.entities as Array<TruEntityBase>;\r\n windowCloseEventArgs.entityIndex = 0;\r\n windowCloseEventArgs.refresh = true;\r\n this.windowEventHandler.close(windowCloseEventArgs);\r\n };\r\n\r\n onDone = () => {\r\n this.doneProcessing = true;\r\n }\r\n\r\n onRendered = () => {\r\n this.loadingMessage = '';\r\n };\r\n\r\n onCancel = () => {\r\n this.windowEventHandler.close();\r\n };\r\n\r\n onExpandClicked = () => {\r\n this.childFlatList.find((node: Node) => { node.showEntities = true; });\r\n }\r\n\r\n onCollapseClicked = () => {\r\n this.childFlatList.find((node: Node) => { node.showEntities = false; });\r\n }\r\n\r\n onNumberOfCopiesChanged = (event: any) => {\r\n\r\n }\r\n\r\n ngOnInit() {\r\n if (this.view.window.parentDataContext !== null)\r\n this.parentDataContext = this.view.window.parentDataContext;\r\n this.tableName = this.view.window.tableName;\r\n this.entities = this.view.entities as any;\r\n this.entity = this.entities[this.view.entityIndex];\r\n this.rootNode = new Node(null, this.tableName, this.tableName, false, true, null, null, null, true, null, null);\r\n this.setEntityDisplayValues(this.view.window.tableName);\r\n this.getDataForCloning();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataTree.length = 0;\r\n this.flatList.length = 0;\r\n this.childFlatList.length = 0;\r\n }\r\n}\r\n\r\nclass Node {\r\n ref: number | null;\r\n tableName: string;\r\n displayName: string;\r\n checked: boolean;\r\n child: any;\r\n childNodes: any;\r\n showEntities: boolean = false;\r\n pathFromRoot: string | null;\r\n parentToChildRefName: string | null;\r\n nodes: Node[] = [];\r\n root: any;\r\n parent: any;\r\n entity: any;\r\n\r\n constructor(\r\n ref: number | null,\r\n tableName: string,\r\n displayName: string,\r\n child: any,\r\n checked: boolean,\r\n childEntities: any,\r\n pathFromRoot: string | null,\r\n parentToChildRefName: string | null,\r\n root: boolean,\r\n parent: any,\r\n entity: any) {\r\n this.ref = ref;\r\n this.tableName = tableName;\r\n this.displayName = displayName;\r\n this.checked = checked;\r\n this.child = child;\r\n this.childNodes = childEntities;\r\n this.pathFromRoot = pathFromRoot;\r\n this.parentToChildRefName = parentToChildRefName;\r\n this.root = root;\r\n this.parent = parent;\r\n this.entity = entity;\r\n }\r\n\r\n onGroupDisplay = () => {\r\n var currentValue = this.showEntities = !this.showEntities;\r\n this.nodes.find((n: any) => {\r\n n.showEntities = currentValue;\r\n });\r\n }\r\n\r\n onCheckedChanged = () => {\r\n if (this.checked) {\r\n if (this.child) {\r\n var p = this.parent;\r\n while (p) {\r\n p.checked = true;\r\n p = p.parent;\r\n }\r\n } else {\r\n this.nodes.find((n: any) => { n.checked = true; });\r\n }\r\n } else {\r\n if (this.child) {\r\n var allUnchecked = this.parent.nodes.every((n: any) => {\r\n return n.checked === false;\r\n });\r\n if (allUnchecked)\r\n this.parent.checked = false;\r\n } else {\r\n var uncheckChildNodes = (node: any) => {\r\n node.nodes.find((n: any) => {\r\n uncheckChildNodes(n);\r\n n.checked = false;\r\n });\r\n };\r\n this.nodes.find((n: any) => {\r\n uncheckChildNodes(n);\r\n n.checked = false;\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","<div>\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'expand-icon'\" [tooltip]=\"'Expand'\" [disabled]=\"!doneProcessing\" (onClick)=\"onExpandClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'collapse-icon'\" [tooltip]=\"'Collapse'\" [disabled]=\"!doneProcessing\" (onClick)=\"onCollapseClicked()\"></tru-toolbar-button>\r\n <tru-toolbar-text [text]=\"'Copies:'\"></tru-toolbar-text>\r\n <tru-toolbar-dropdown [options]=\"numberOfCopies\"\r\n [(selectedOption)]=\"selectedNumberOfCopies\"\r\n [disabled]=\"!doneProcessing\"\r\n (selectionChange)=\"onNumberOfCopiesChanged($event)\">\r\n </tru-toolbar-dropdown>\r\n </tru-toolbar>\r\n <div class=\"tru-dialog-content clone\">\r\n <ng-template #groupNodeRenderer let-data>\r\n <div *ngIf=\"!data.child || data.showEntities\"\r\n class=\"clone-modal-tree-group\">\r\n <input [(ngModel)]=\"data.checked\"\r\n (click)=\"data.onCheckedChanged()\"\r\n [disabled]=\"data.root\"\r\n type=\"checkbox\" />\r\n <a (click)=\"data.onGroupDisplayNameClicked()\"\r\n [ngClass]=\"{'clone-modal-tree-group-root-name': data.root || data.child}\"\r\n [ngStyle]=\"{'max-width': data.childNode ? '300px' : 'auto'}\">{{data.displayName}}</a>\r\n <span *ngIf=\"!data.root && !data.child\"\r\n class=\"clone-modal-tree-group-count\">({{data.nodes.length}})</span>\r\n </div>\r\n <ul>\r\n <li *ngFor=\"let data of data.nodes; let last = last\" truRendered (rendered)=\"onRendered()\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </ng-template>\r\n <div *ngIf=\"loadingMessage\"\r\n class=\"clone-modal-loading\">\r\n <span class=\"clone-modal-loading-message\">{{loadingMessage}}</span>\r\n </div>\r\n <div *ngIf=\"doneProcessing\"\r\n class=\"clone-modal-tree\">\r\n <ul>\r\n <li *ngFor=\"let data of displayTree; let last = last\" truRendered (rendered)=\"onRendered()\">\r\n <div *ngTemplateOutlet=\"groupNodeRenderer; context: {$implicit: data}\"></div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"tru-dialog-footer\">\r\n <button mat-button (keyup.enter)=\"onCancel()\" (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onClone()\" (keyup.enter)=\"onClone()\" [disabled]=\"!doneProcessing\">Clone</button>\r\n </div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { TruReportView } from '../components/report-view/tru-report-view';\r\nimport { TruCloneView } from '../components/clone-view/tru-clone-view';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TruComponentLookup {\r\n private truComponentLookupRegistry: Map<string, any> = new Map();\r\n\r\n constructor() {\r\n this.set('TruReportView', TruReportView);\r\n this.set('TruCloneView', TruCloneView);\r\n }\r\n\r\n set = (key: string, type: any): void => {\r\n this.truComponentLookupRegistry.set(key, type);\r\n }\r\n\r\n get = (key: string): any => {\r\n return this.truComponentLookupRegistry.get(key);\r\n }\r\n\r\n getBySuffix = (suffix: string): Array<any> => {\r\n return [...this.truComponentLookupRegistry.values()].filter(\r\n (v: any, k: any) => {\r\n v.name.toLowerCase().endsWith(suffix.toLowerCase())\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruDesktopViewEventNotifier {\r\n private active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n onActiveStateChanged = () => {\r\n return this.active$;\r\n }\r\n\r\n get isActive() {\r\n return this.active$.getValue();\r\n }\r\n\r\n set isActive(value: boolean) {\r\n this.active$.next(value);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { TruDataChange } from '../../classes/tru-data-change';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruDesktopManager } from '../../components/desktop/services/tru-desktop-manager';\r\nimport { TruDesktopViewEventNotifier } from '../../components/desktop/services/tru-desktop-view-event-notifier';\r\nimport { TruWindowCloseEventArgs } from '../../components/desktop/services/tru-window-close-event-args';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruComponentLookup } from '../../services/tru-component-lookup';\r\n\r\n@Component({\r\n selector: 'tru-detail-view-base',\r\n templateUrl: './tru-detail-view-base.html',\r\n styleUrls: ['./tru-detail-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruDetailViewBase {\r\n @ViewChild('customToolbarContainer', { read: ViewContainerRef }) customToolbarContainer!: ViewContainerRef;\r\n\r\n @Input() view!: TruDesktopViewConfig;\r\n\r\n private childUpdateFn: Function | null = null;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected parentTableName: string = '';\r\n protected parentTablePluralName: string = '';\r\n protected parentTablePluralLabel: string = '';\r\n protected customToolbarComponents: any = [];\r\n\r\n entities: Array<any> = [];\r\n entity: any;\r\n entityType: any;\r\n recordLocation: string | null = null;\r\n disableNavigationToPreviousEntity: boolean = false;\r\n disableNavigationToNextEntity: boolean = false;\r\n navigationIndex: number = 0;\r\n recordsBeforeRevert: number = 0;\r\n subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n protected dataContext: TruDataContext,\r\n protected componentLookup: TruComponentLookup,\r\n protected appEnvironment: TruAppEnvironment,\r\n protected textManager: TruTextManager,\r\n protected desktopManager: TruDesktopManager, \r\n protected windowEventHandler: TruWindowEventHandler,\r\n protected desktopViewEventNotifier: TruDesktopViewEventNotifier,\r\n protected util: TruUtil) {\r\n }\r\n\r\n private calculateNextIndex = (): number => {\r\n let nextIndex = 0;\r\n var removedRecords = this.recordsBeforeRevert - this.entities.length;\r\n if (this.navigationIndex > this.entities.length - 1)\r\n nextIndex = this.entities.length - 1;\r\n else {\r\n nextIndex = (this.navigationIndex - removedRecords);\r\n }\r\n\r\n if (nextIndex < 0)\r\n nextIndex = 0;\r\n\r\n return nextIndex;\r\n }\r\n\r\n protected renderCustomToolbarComponents = () => {\r\n this.customToolbarComponents.forEach((componentName: string) => {\r\n let toolbarContainerRef = this.customToolbarContainer.createComponent(this.componentLookup.get(componentName)) as any;\r\n toolbarContainerRef.instance.tableName = this.tableName;\r\n toolbarContainerRef.instance.getEntities = () => { return [this.entity] };\r\n });\r\n }\r\n\r\n onAddEntity = (newEntity: any) => {\r\n if (!newEntity)\r\n newEntity = this.dataContext.entityAccess().add(this.entityType);\r\n this.entities.splice(this.navigationIndex + 1, 0, newEntity);\r\n this.navigateTo(this.navigationIndex + 1);\r\n }\r\n\r\n onCloneEntity = () => {\r\n let windowEventArgs = this.desktopManager.addModalWindow(\r\n this.tableName,\r\n this.tableName,\r\n this.tableName, 'TruCloneView',\r\n this.entities,\r\n this.navigationIndex,\r\n this.dataContext,\r\n false,\r\n false,\r\n false);\r\n windowEventArgs.onClose$.subscribe((windowCloseEventArgs: TruWindowCloseEventArgs | null) => {\r\n if (windowCloseEventArgs !== null && windowCloseEventArgs.refresh) {\r\n this.navigateTo(windowCloseEventArgs.entityIndex);\r\n if (this.childUpdateFn !== null)\r\n this.childUpdateFn();\r\n }\r\n });\r\n }\r\n\r\n onDeleteEntity = () => {\r\n let confirmMsg = this.textManager.fmtDeleteConfirmation(this.entityType.name);\r\n this.dataContext.delete([this.entity], confirmMsg, (successful: boolean) => {\r\n if (successful) {\r\n let index = this.entities.indexOf(this.entity);\r\n this.entities.splice(index, 1);\r\n if (!this.entities.length) {\r\n this.view.window.goToPreviousView();\r\n this.view.window.removeForwardViews();\r\n }\r\n }\r\n return true;\r\n });\r\n }\r\n\r\n onFirstEntity = () => {\r\n this.navigateTo(0);\r\n }\r\n\r\n onPreviousEntity = () => {\r\n this.navigateTo(this.navigationIndex - 1);\r\n }\r\n\r\n onNextEntity = () => {\r\n this.navigateTo(this.navigationIndex + 1);\r\n }\r\n\r\n onLastEntity = () => {\r\n this.navigateTo(this.entities.length - 1);\r\n }\r\n\r\n navigateTo = (index: number) => {\r\n this.setNavigationIndex(index);\r\n this.setEntityDisplayValues(this.tableName);\r\n }\r\n\r\n registerChildUpdateFn = (func: (dataChange: TruDataChange | null) => void) => {\r\n this.childUpdateFn = func;\r\n };\r\n\r\n subscribe() {\r\n this.subs.push(this.appEnvironment.onRevertComplete$.subscribe((event: any) => {\r\n if (event?.successful && this.view.entities) {\r\n this.recordsBeforeRevert = this.entities.length;\r\n this.entities = this.entities.filter((e: any) => { return !e.entityAspect.entityState.isDetached() });\r\n this.setNavigationIndex(this.calculateNextIndex());\r\n this.setEntityDisplayValues(this.tableName);\r\n }\r\n }));\r\n this.subs.push(this.view.onActive().subscribe((active: boolean) => {\r\n if (active)\r\n this.setEntityDisplayValues(this.tableName);\r\n }));\r\n this.subs.push(fromEvent<KeyboardEvent>(document, 'keydown').subscribe((event: KeyboardEvent) => {\r\n if (this.view.active && this.view.window.active) {\r\n let keySequence = this.util.getKeySequence(event);\r\n if (keySequence === 'ctrl+i' || keySequence === 'meta+i') {\r\n //this.onAddEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+d' || keySequence === 'meta+d') {\r\n this.onDeleteEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+up' || keySequence === 'meta+up') {\r\n this.onFirstEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+left' || keySequence === 'meta+left') {\r\n this.onPreviousEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+right' || keySequence === 'meta+right') {\r\n this.onNextEntity();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+down' || keySequence === 'meta+down') {\r\n this.onLastEntity();\r\n event.preventDefault();\r\n }\r\n var targetIsControl = this.util.targetIsControl(event.target as HTMLElement);\r\n if (!targetIsControl && event.ctrlKey || event.altKey)\r\n event.preventDefault();\r\n }\r\n }));\r\n }\r\n\r\n setNavigationIndex(index: number) {\r\n this.navigationIndex = index;\r\n this.disableNavigationToPreviousEntity = index === 0;\r\n this.disableNavigationToNextEntity = index === this.entities.length - 1;\r\n this.entity = this.entities[this.navigationIndex];\r\n }\r\n\r\n setEntityDisplayValues(tableName: string) {\r\n let title = '';\r\n let recordIndex = '?';\r\n let entity = this.entities[this.navigationIndex];\r\n if (entity) {\r\n title = tableName + ' - ';\r\n if (entity.entityAspect.entityState.isAdded()) {\r\n title += 'New Record';\r\n } else {\r\n title += this.entity.HID;\r\n }\r\n recordIndex = (this.navigationIndex + 1).toString();\r\n }\r\n this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));\r\n this.recordLocation = recordIndex + ' of ' + this.entities.length;\r\n }\r\n}\r\n","","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { ITruAncestor } from '../../../interfaces/tru-ancestor';\r\n\r\n@Injectable()\r\nexport class TruSearchViewControlEventHandler {\r\n private clear$ = new BehaviorSubject<any>(null);\r\n private default$ = new BehaviorSubject<any>(null);\r\n private updateDependants$: Subject<ITruAncestor> = new Subject<ITruAncestor>();\r\n\r\n onSetDefaults() {\r\n return this.default$;\r\n }\r\n\r\n setDefaults() {\r\n this.default$.next(null);\r\n }\r\n\r\n onClearValues() {\r\n return this.clear$;\r\n }\r\n\r\n clearValues() {\r\n this.clear$.next(null);\r\n }\r\n\r\n onUpdateDependants() {\r\n return this.updateDependants$;\r\n }\r\n\r\n updateDependants = (table: string, ancestorRef: string, value: string | number | null | undefined) => {\r\n this.updateDependants$.next({ table: table, ancestorRef: ancestorRef, value: value });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruSearchViewEventHandler {\r\n private search$ = new BehaviorSubject<any>(null);\r\n private searchFromParent$ = new BehaviorSubject<any>(null);\r\n private filter$ = new BehaviorSubject<any>(null);\r\n\r\n search(query: any) {\r\n this.search$.next(query)\r\n }\r\n\r\n onSearch() {\r\n return this.search$.asObservable();\r\n }\r\n\r\n initiateChildSearch() {\r\n this.searchFromParent$.next(null)\r\n }\r\n\r\n onParentInitiatedSearch() {\r\n return this.searchFromParent$.asObservable();\r\n }\r\n\r\n filter(query: any) {\r\n this.filter$.next(query)\r\n }\r\n\r\n onFilter() {\r\n return this.filter$.asObservable();\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-search-result-view-base',\r\n templateUrl: './tru-search-result-view-base.html',\r\n styleUrls: ['./tru-search-result-view-base.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruSearchResultViewBase {\r\n @Input() view: any;\r\n\r\n protected tableName: string = '';\r\n protected tablePluralName: string = '';\r\n protected tablePluralLabel: string = '';\r\n protected parentTableName: string | undefined = undefined;\r\n protected parentTablePluralName: string | undefined = undefined;\r\n protected parentTablePluralLabel: string | undefined = undefined;\r\n protected hasDetailView: boolean = true;\r\n\r\n searchPanelConfig = {\r\n side: 'right',\r\n active: true,\r\n open: true,\r\n modKeyLabel: '',\r\n size: 500,\r\n pinned: false\r\n }\r\n\r\n constructor(\r\n private uiNotification: TruUiNotification,\r\n private truWindowEventHandler: TruWindowEventHandler) {\r\n }\r\n\r\n onPkeyCellDoubleClicked = (gridConfig: any) => {\r\n if (this.hasDetailView) {\r\n let entities: any = [];\r\n gridConfig.api.forEachNodeAfterFilterAndSort((rowNode: any) => {\r\n entities.push(rowNode.data.$entity);\r\n });\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = gridConfig.rowIndex;\r\n windowAddViewEventArgs.componentName = this.tableName + 'DetailView';\r\n this.truWindowEventHandler.addView(windowAddViewEventArgs);\r\n } else {\r\n this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, \"\", \"Ok\").then(() => { });\r\n }\r\n }\r\n\r\n onCardColumnClicked = (entities: any) => {\r\n if (this.hasDetailView) {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = 0;\r\n windowAddViewEventArgs.componentName = this.parentTableName + 'DetailView';\r\n this.truWindowEventHandler.addView(windowAddViewEventArgs);\r\n } else {\r\n this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, \"\", \"Ok\").then(() => { });\r\n }\r\n }\r\n\r\n onCardDoubleClicked = (entities: any, index: number) => {\r\n if (this.hasDetailView) {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = index;\r\n windowAddViewEventArgs.componentName = this.tableName + 'DetailView';\r\n this.truWindowEventHandler.addView(windowAddViewEventArgs);\r\n } else {\r\n this.uiNotification.confirm('No Detail View', this.tablePluralLabel + ' does not have a detail view.', false, true, \"\", \"Ok\").then(() => { });\r\n }\r\n }\r\n}\r\n","","export abstract class TruChoice {\r\n abstract label: string;\r\n abstract value: { $: string | number | null | undefined };\r\n abstract checked?: boolean | null | undefined;\r\n abstract notAnOption?: boolean | undefined;\r\n}\r\n","import { TruContextFilterChoice } from \"./tru-context-filter-choice\";\r\n\r\nexport class TruContextFilter {\r\n tooltip: string | undefined = undefined;\r\n choices: Array<TruContextFilterChoice> = [];\r\n selectedChoice!: TruContextFilterChoice;\r\n\r\n constructor() {}\r\n\r\n identify = (index: number, choice: TruContextFilterChoice) => {\r\n\t return choice.ref;\r\n }\r\n\r\n comparer = (o1: TruContextFilterChoice, o2: TruContextFilterChoice) => {\r\n return o1 && o2 ? o1.label === o2.label : o2 === o2;\r\n }\r\n\r\n onChange = (choice: TruContextFilterChoice) => {\r\n this.selectedChoice = choice;\r\n } \r\n}\r\n","export class TruContextFilterChoice {\r\n table: string;\r\n label: string;\r\n ref: number;\r\n\r\n constructor(\r\n table: string,\r\n label: string,\r\n ref: number)\r\n {\r\n this.table = table;\r\n this.label = label;\r\n this.ref = ref;\r\n }\r\n}\r\n","export class TruDataChange {\r\n dataChanges: [] = [];\r\n reload: boolean = false;\r\n}\r\n","import * as _ from 'underscore';\r\nimport moment from 'moment/moment'; \r\n\r\nexport class TruFormulaEval {\r\n\r\n public static isString(s: any) {\r\n return typeof s === 'string';\r\n }\r\n\r\n public static isDate(v: any) {\r\n return Object.prototype.toString.call(v) === '[object Date]'\r\n }\r\n\r\n public static toValue(value: any) {\r\n return value;\r\n }\r\n\r\n public static toString(value: any) {\r\n //if (_.isBoolean(value))\r\n // return value ? 'TRUE' : 'FALSE';\r\n return value.toString();\r\n }\r\n\r\n public static toDouble(value: any) {\r\n return Number(value);\r\n }\r\n\r\n public static toInteger(value: any) {\r\n return Math.round(value);\r\n }\r\n\r\n public static toBoolean(value: any) {\r\n if (_.isBoolean(value))\r\n return value;\r\n var number = Number(value);\r\n if (isNaN(number))\r\n return NaN;\r\n return number !== 0;\r\n }\r\n\r\n public static toDate(value: any) {\r\n return value;\r\n }\r\n\r\n public statictoDateTime(value: any) {\r\n return value;\r\n }\r\n\r\n /**\r\n * Exposed for testing.\r\n */\r\n public static _calculate(f: any, left: any, right: any) {\r\n if (TruFormulaEval.isString(left))\r\n left = parseFloat(left);\r\n if (TruFormulaEval.isString(left))\r\n if (TruFormulaEval.isString(right))\r\n right = parseFloat(right);\r\n return f(left, right);\r\n }\r\n\r\n public static _calculateDate(left: any, right: any, add: any) {\r\n if (add) {\r\n if (TruFormulaEval.isDate(left) && !TruFormulaEval.isDate(right)) {\r\n return moment(left).add(right, 'day').toDate();\r\n\r\n }\r\n\r\n if (!TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n return moment(right).add(left, 'day').toDate();\r\n }\r\n\r\n if (TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n return moment(left).add(right).toDate();\r\n }\r\n } else {\r\n if (TruFormulaEval.isDate(left) && !TruFormulaEval.isDate(right)) {\r\n return moment(left).subtract(right, 'day').toDate();\r\n }\r\n\r\n if (!TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n return moment(right).subtract(left, 'day').toDate();\r\n\r\n }\r\n\r\n if (TruFormulaEval.isDate(left) && TruFormulaEval.isDate(right)) {\r\n //var m = moment(left).diff(right, 'days'); //Integer value, but Excel uses decimal for date time\r\n var m = moment(left).diff(moment(right)) / 86400000; //divide by miliseconds in a day, decimal answer 1.0 = 1 day, 0.5 = 12 hours\r\n return m;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public static add(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n if (TruFormulaEval.isDate(left) || TruFormulaEval.isDate(right))\r\n return TruFormulaEval._calculateDate(left, right, true);\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l + r }, left, right);\r\n }\r\n public static subtract(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n if (TruFormulaEval.isDate(left) || TruFormulaEval.isDate(right))\r\n return TruFormulaEval._calculateDate(left, right, false);\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l - r }, left, right);\r\n }\r\n public static multiply(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l * r }, left, right);\r\n }\r\n public static divide(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n return TruFormulaEval._calculate(function (l: any, r: any) { return l / r }, left, right);\r\n }\r\n public static power(left: any, right: any) {\r\n if (left === null || left === undefined || right === null || right === undefined)\r\n return undefined;\r\n\r\n return TruFormulaEval._calculate(Math.pow, left, right);\r\n }\r\n\r\n public static concatenate(left: any, right: any) {\r\n if (_.isBoolean(left))\r\n left = left ? 'TRUE' : 'FALSE';\r\n else if (!TruFormulaEval.isString(left))\r\n //NOTE: only need to convert left to string since concat() will coerce parameters\r\n left = left.toString();\r\n if (_.isBoolean(right))\r\n right = right ? 'TRUE' : 'FALSE';\r\n return left.concat(right);\r\n }\r\n public static equal(left: any, right: any) {\r\n return left === right;\r\n }\r\n public static notEqual(left: any, right: any) {\r\n return left !== right;\r\n }\r\n\r\n public static compareResultForMismatchedParams: any = {\r\n booleanstring: true,\r\n booleannumber: true,\r\n stringnumber: true,\r\n stringboolean: false,\r\n numberstring: false,\r\n numberboolean: false\r\n };\r\n public static lessThan(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return !TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left < right;\r\n }\r\n public static greaterThan(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left > right;\r\n }\r\n public static lessThanOrEqual(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return !TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left <= right;\r\n }\r\n public static greaterThanOrEqual(left: any, right: any) {\r\n if (typeof (left) !== typeof (right))\r\n return TruFormulaEval.compareResultForMismatchedParams[typeof (left) + typeof (right)];\r\n return left >= right;\r\n }\r\n\r\n public static negate(operand: any) {\r\n return -operand;\r\n }\r\n\r\n public static percent(operand: any) {\r\n return operand / 100.0;\r\n }\r\n}\r\n","export abstract class TruNameValue {\r\n abstract name: string;\r\n abstract value: { $: string | number | null | undefined };\r\n abstract entity?: any;\r\n abstract checked?: boolean | null | undefined;\r\n abstract notAnOption?: boolean | undefined;\r\n}\r\n","import { TruNavigationPropertyConfig } from \"./tru-navigation-property-config\";\r\n\r\nexport class TruNavigationPropertiesConfig {\r\n constructor() { }\r\n\r\n properties: Array<TruNavigationPropertyConfig> = [];\r\n}\r\n","export class TruNavigationPropertyConfig {\r\n name: string;\r\n doesCascadeDelete: boolean;\r\n\r\n constructor(name: string, doesCascadeDelete: boolean) {\r\n this.name = name;\r\n this.doesCascadeDelete = doesCascadeDelete;\r\n }\r\n}\r\n","import { AndOrPredicate, BinaryPredicate, breeze } from \"breeze-client\";\r\n\r\nexport class TruPredicate {\r\n _breezePredicate: any = null;\r\n\r\n constructor(field: any, operator: string | null, value: any, propertyQueryPath: Array<string> | null, overQuoted: boolean = false) {\r\n if (typeof field === 'string') {\r\n var args = propertyQueryPath?.slice(0) as Array<string>;\r\n args[args.length - 1] += field;\r\n args.push(operator as string);\r\n args.push(value);\r\n this._breezePredicate = new breeze.Predicate(args as Array<any>);\r\n this._breezePredicate.overQuoted = overQuoted;\r\n } else if (arguments[0].constructor === TruPredicate || arguments[0].constructor === BinaryPredicate || arguments[0].constructor === AndOrPredicate) {\r\n this._breezePredicate = arguments[0];\r\n } else {\r\n throw new TypeError('Unexpected parameter type <' + arguments[0].constructor + '>.');\r\n }\r\n }\r\n\r\n handleOperator = (fieldOrPredicate: any, oper: (p: any) => {}, operator?: string, value?: any) => {\r\n var breezePredicate;\r\n if (Array.isArray(fieldOrPredicate)) {\r\n breezePredicate = new TruPredicate(fieldOrPredicate[0], fieldOrPredicate[1], fieldOrPredicate[2], []);\r\n } else if (fieldOrPredicate.constructor === TruPredicate || fieldOrPredicate.constructor === BinaryPredicate || fieldOrPredicate.constructor === AndOrPredicate) {\r\n breezePredicate = fieldOrPredicate;\r\n } else {\r\n throw new TypeError('Unexpected parameter type <' + fieldOrPredicate.constructor + '>.');\r\n }\r\n breezePredicate = oper(breezePredicate);\r\n return new TruPredicate(breezePredicate, null, null, null);\r\n }\r\n\r\n and = (fieldOrPredicate: any, operator?: string, value?: any) => {\r\n var that = this;\r\n return this.handleOperator(fieldOrPredicate, function (p) { return that._breezePredicate.and(p); }, operator, value);\r\n }\r\n\r\n or = (fieldOrPredicate: any, operator?: string, value?: any) => {\r\n var that = this;\r\n return this.handleOperator(fieldOrPredicate, function (p) { return that._breezePredicate.and(p); }, operator, value);\r\n }\r\n\r\n not = () => {\r\n var breezePredicate = this._breezePredicate.not();\r\n return new TruPredicate(breezePredicate, null, null, null);\r\n }\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\nimport { ITruAncestor } from '../interfaces/tru-ancestor';\r\n\r\nexport class TruPropertyConfigForeignKey extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n table: string | undefined = undefined;\r\n foreignTableName: string | undefined = undefined;\r\n choicesQuery: string | undefined = undefined;\r\n dependsOn: Array<ITruAncestor> = [];\r\n}\r\n","import { TruPropertyConfigForeignKey } from './tru-property-config-foreign-key';\r\n\r\nexport class TruPropertyConfigCloudFile extends TruPropertyConfigForeignKey {\r\n constructor() { super() }\r\n \r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigDate extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n\r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigDecimal extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n decimalPlaces: number | undefined = undefined;\r\n totalDigits: number | undefined = undefined;\r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigFile extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n\r\n maxSize: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigInteger extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigText extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n\r\n maxLength: number | undefined = undefined;\r\n minLength: number | undefined = undefined;\r\n unbounded: boolean | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigText } from './tru-property-config-text';\r\n\r\nexport class TruPropertyConfigPassword extends TruPropertyConfigText {\r\n constructor() { super() }\r\n\r\n encryptionType: string | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigPercentage extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigScientific extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n minimumValue: number | undefined = undefined;\r\n maximumValue: number | undefined = undefined;\r\n}\r\n","import { TruPropertyConfigText } from './tru-property-config-text';\r\n\r\nexport class TruPropertyConfigTextChoices extends TruPropertyConfigText {\r\n constructor() { super() }\r\n choices: any = {};\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigUsaAddress extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n requireZipPlusFour: boolean|undefined = undefined;\r\n}\r\n","import { TruPropertyConfigBase } from '../base-classes/tru-property-config-base';\r\n\r\nexport class TruPropertyConfigZipCode extends TruPropertyConfigBase {\r\n constructor() { super() }\r\n \r\n requireZipPlusFour: boolean|undefined = undefined;\r\n}\r\n","import { TruPredicate } from \"./tru-predicate\";\r\n\r\nexport class TruQueryPredicateManager {\r\n _predicate: TruPredicate | null = null;\r\n _propertyQueryPath: Array<string> | null = [];\r\n _predicateName: string = '';\r\n _predicateMap: any = {};\r\n\r\n constructor(propertyQueryPath: Array<string>, predicateName: string, predicateMap: any) {\r\n this._propertyQueryPath = propertyQueryPath;\r\n this._predicateName = predicateName;\r\n this._predicateMap = predicateMap;\r\n }\r\n\r\n private setPredicate = (queryPredicate: TruPredicate | null) => {\r\n if (this._predicate !== queryPredicate && this._predicateMap !== null) {\r\n this._predicate = queryPredicate;\r\n this._predicateMap[this._predicateName] = this._predicate === null ? null : this._predicate;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the query predicate.\r\n */\r\n get = () => {\r\n return this._predicate;\r\n };\r\n\r\n /**\r\n * Clears the query predicate.\r\n */\r\n clear = () => {\r\n this.setPredicate(null);\r\n }\r\n\r\n /**\r\n * Returns a new query predicate.\r\n * \r\n * @param {string} field - Name of the storage field relative to the intent property.\r\n * @param {string} operator - Name of the predicate operator.\r\n * @param {*} value - Literal value.\r\n */\r\n create = (field: string, operator: string, value: any, overQuoted: boolean = false) => {\r\n return new TruPredicate(field, operator, value, this._propertyQueryPath, overQuoted)._breezePredicate;\r\n }\r\n\r\n set = (fieldOrPredicate: string | TruPredicate, operator?: string, value?: any, overQuoted: boolean = false): void => { \r\n var predicate;\r\n if (fieldOrPredicate.constructor === TruPredicate)\r\n predicate = fieldOrPredicate;\r\n else\r\n predicate = this.create(fieldOrPredicate as string, operator as string, value, overQuoted);\r\n this.setPredicate(predicate);\r\n };\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\n\r\nexport abstract class TruViewMenuConfig {\r\n entities: Array<TruEntityBase> = [];\r\n actionRefs: string = '';\r\n menuItemsEnabled!: () => boolean;\r\n allMenus!: () => Observable<any>;\r\n}\r\n","import { breeze, Validator } from \"breeze-client\";\r\nimport _ from \"underscore\";\r\nimport { TruMergeDataSet } from \"./tru-merge-data-set\";\r\n\r\nexport class TruValidatorFactory {\r\n private satisfiesEntityMessageValidation = (entity: any, context: any) => {\r\n var messages = _.values(entity._customValidationErrors);\r\n if (!messages.length)\r\n return true;\r\n context.messageTemplate = messages.join('...');\r\n return false;\r\n }\r\n\r\n private satisfiesRequiredValidation(value: any) {\r\n if (value === null || value === '') return false;\r\n return true;\r\n }\r\n\r\n private satisfiesMaxLengthValidation = (value: any, context: any) => {\r\n if (!value)\r\n return true;\r\n return typeof value === 'string' && value.length <= context.maxLength;\r\n }\r\n\r\n private satisfiesFloatValidation = (value: any) => {\r\n if (value === null)\r\n return true;\r\n return typeof value === 'number' && isFinite(value);\r\n }\r\n\r\n private satisfiesIntegerValidation = (value: any) => {\r\n if (value === null)\r\n return true;\r\n //NOTE: Number.isInteger() would work, but is not implemented in all supported browsers\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n }\r\n\r\n private satisfiesDateValidation(value: any) {\r\n if (Object.prototype.toString.call(value) !== '[object Date]')\r\n return false;\r\n return isFinite(value.getTime());\r\n }\r\n\r\n private satisfiesInvalidChoiceValidation(value: any, context: any) {\r\n if (context.entity.Is_Invalid === 'true') {\r\n context.error = context.propertyName + '\\' invalid choice'\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private satisfiesMergeValidation = (value: any, context: any) => {\r\n var mergeData = context.entity.Merge_Data_Set as TruMergeDataSet;\r\n if (mergeData.isEmpty())\r\n return true;\r\n let targetProperty = mergeData.get(context.propertyName);\r\n if (targetProperty) {\r\n var mergeValue = targetProperty.hid ? targetProperty.hid : targetProperty.value;\r\n context.error = targetProperty.modifiedBy + ' changed ' + context.propertyName + ' to ' + mergeValue.toString().replace(/<[^>]*>/g, '') + '.';\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n createEntityMessageValidator = (): Validator => {\r\n return new breeze.Validator('entityMessage', this.satisfiesEntityMessageValidation);\r\n }\r\n\r\n createRequiredValidator = (): Validator => {\r\n return new breeze.Validator('required', this.satisfiesRequiredValidation, {\r\n messageTemplate: '\\'%displayName%\\' is required'\r\n });\r\n }\r\n\r\n createMaxLengthValidator = (maxLength: any): Validator => {\r\n var context = {\r\n messageTemplate: '\\'%displayName%\\' exceeds maximum character length of %maxLength%',\r\n maxLength: maxLength\r\n };\r\n return new breeze.Validator('maxLength', this.satisfiesMaxLengthValidation, context);\r\n };\r\n\r\n createIntegerValidator = (): Validator => {\r\n return new breeze.Validator('integer', this.satisfiesIntegerValidation, {\r\n messageTemplate: '\\'%displayName%\\' must be an integer'\r\n });\r\n }\r\n\r\n createFloatValidator = (): Validator => {\r\n return new breeze.Validator('float', this.satisfiesFloatValidation, {\r\n messageTemplate: '\\'%displayName%\\' must be a number'\r\n });\r\n }\r\n\r\n createDateValidator = (): Validator => {\r\n return new breeze.Validator('date', this.satisfiesDateValidation, {\r\n messageTemplate: '\\'%displayName%\\' must be a date'\r\n });\r\n }\r\n\r\n createInvalidChoiceValidator = (): Validator => {\r\n return new breeze.Validator('invalid', this.satisfiesInvalidChoiceValidation, {\r\n messageTemplate: '\\'%error%'\r\n });\r\n }\r\n\r\n createMergeValidator = (): Validator => {\r\n return new breeze.Validator('merge', this.satisfiesMergeValidation, {\r\n messageTemplate: '\\'%error%\\''\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { breeze, Predicate } from 'breeze-client';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\nimport { TruUser } from './tru-user';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUserPreferenceManager {\r\n private globalDataContext: any;\r\n constructor(\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private appEnvironment: TruAppEnvironment,\r\n private user: TruUser) {\r\n this.globalDataContext = this.appEnvironment.globalDataContext;\r\n }\r\n\r\n private setupQuery = (query: any, name: string) => {\r\n var predicate = new Predicate('TruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef);\r\n if (name)\r\n predicate = predicate.and('Name', breeze.FilterQueryOp.Equals, name);\r\n return query.where(predicate);\r\n }\r\n\r\n /**\r\n * Queries for a preference for the current user. On success, completes\r\n * promise with the value or undefined if none.\r\n * @param {string} name - preference name\r\n * @returns {promise}\r\n */\r\n public get = (name: string) => {\r\n let setupQuery = (query: any) => {\r\n var predicate = new Predicate('TruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef);\r\n if (name)\r\n predicate = predicate.and('Name', breeze.FilterQueryOp.Equals, name);\r\n return query.where(predicate);\r\n }\r\n return this.globalDataContext.entityAccess().searchCacheOnlySynchronously(this.modelTypeLookup.getType('TruDbUserPreference'), setupQuery)\r\n }\r\n\r\n /**\r\n * Queries for all preferences for the current user. On success, completes\r\n * promise with an object loaded with the values indexed by name.\r\n * @returns {promise}\r\n */\r\n public getAll = async () => {\r\n await this.globalDataContext\r\n .entityAccess()\r\n .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)\r\n .subscribe((entities: any) => {\r\n let result = {} as Object;\r\n type ObjectKey = keyof typeof result;\r\n for (var i = 0; i < entities.length; ++i)\r\n result[entities[i].Name as ObjectKey] = JSON.parse(entities[i].Value);\r\n return result;\r\n })\r\n }\r\n\r\n /**\r\n * Saves the value of a preference. On success, completes promise with no value.\r\n * @param {string} name - preference name\r\n * @param {string} value - value text\r\n * @returns {promise}\r\n */\r\n public set = async (name: string, value: string) => {\r\n let entity = this.globalDataContext.entityAccess().add(this.modelTypeLookup.getType('TruDbUserPreference')) as any;\r\n entity.Name = name;\r\n entity.Value = value;\r\n entity.TruDbUserRef = this.user.activeUserRef;\r\n }\r\n\r\n /**\r\n * Deletes a preference.\r\n * @param {string} name - preference name\r\n */\r\n public eliminate = async (name: string) => {\r\n await this.globalDataContext\r\n .entityAccess()\r\n .searchCacheOnly(this.modelTypeLookup.getType('TruDbUserPreference'), this.setupQuery)\r\n .subscribe((entities: any) => {\r\n if (entities.length > 1) {\r\n console.log('Query selected more than one preference record.');\r\n }\r\n if (entities.length === 0) {\r\n\r\n }\r\n entities[0].entityAspect.setDeleted();\r\n this.globalDataContext.saveWithoutNotification()\r\n .then(() => {\r\n return true;\r\n })\r\n .catch(() => {\r\n return false;\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { TruTableConfigBase } from '../../../../base-classes/tru-table-config-base';\r\nimport { TruModelTableLookup } from '../../../../services/tru-model-table-lookup';\r\nimport { TruUserPreferenceManager } from '../../../../services/tru-user-preference-manager';\r\nimport { TruWindowOpenOnStartSetting } from '../classes/tru-window-open-on-start-setting';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { MaterialModule } from '../../../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-app-window-open-on-startup-setting',\r\n templateUrl: './tru-app-window-open-on-startup-setting.html',\r\n styleUrls: ['./tru-app-window-open-on-startup-setting.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatTable,\r\n MatCheckbox\r\n ]\r\n})\r\nexport class TruAppWindowOpenOnStartupSetting implements OnInit {\r\n\r\n settings: Array<TruWindowOpenOnStartSetting> = [];\r\n displayedColumns: string[] = [];\r\n\r\n constructor(\r\n private userPreferenceManager: TruUserPreferenceManager,\r\n private modelTableLookup: TruModelTableLookup) {\r\n\r\n let tables = this.modelTableLookup.all;\r\n let openOnStartSettings: Array<TruWindowOpenOnStartSetting> = []; \r\n tables.forEach((table: TruTableConfigBase) => {\r\n if (table.isAssociatedWithMenuItem) {\r\n let name = table.name?.toUpperCase() + '_OPEN_ON_START';\r\n let openOnStart = table.openOnStart;\r\n let userPreferenceOpenOnStart = this.userPreferenceManager.get(name)[0];\r\n if(userPreferenceOpenOnStart)\r\n openOnStart = JSON.parse(userPreferenceOpenOnStart.Value);\r\n\r\n openOnStartSettings.push({\r\n name: name,\r\n label: table.name as string,\r\n checked: openOnStart,\r\n intentOpenOnStart: table.openOnStart,\r\n modified: false\r\n } as TruWindowOpenOnStartSetting);\r\n }\r\n });\r\n this.settings = openOnStartSettings.sort((a: TruWindowOpenOnStartSetting, b: TruWindowOpenOnStartSetting) => a.label.localeCompare(b.label));\r\n }\r\n\r\n onRowClicked = (row: TruWindowOpenOnStartSetting) => {\r\n row.checked = !row.checked;\r\n row.modified = true;\r\n\r\n let userPreferenceOpenOnStart = this.userPreferenceManager.get(row.name);\r\n if (userPreferenceOpenOnStart.length) {\r\n userPreferenceOpenOnStart[0].Value = row.checked;\r\n } else {\r\n this.userPreferenceManager.set(row.name, String(row.checked))\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.displayedColumns = ['label', 'checked'];\r\n }\r\n}\r\n\r\n","<p>Open Window(s) On Startup</p>\r\n<table mat-table [dataSource]=\"settings\">\r\n <ng-container matColumnDef=\"label\">\r\n <th mat-header-cell *matHeaderCellDef> Name </th>\r\n <td mat-cell *matCellDef=\"let element\"> {{element.label}} </td>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"checked\">\r\n <th mat-header-cell *matHeaderCellDef></th>\r\n <td mat-cell *matCellDef=\"let element\" class=\"tru-app-window-open-on-startup-checkbox\">\r\n <mat-checkbox [(ngModel)]=\"element.checked\"></mat-checkbox>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\" (click)=\"onRowClicked(row)\"></tr>\r\n</table>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruAppWindowOpenOnStartupSetting } from './on-starup/tru-app-window-open-on-startup-setting';\r\nimport { MaterialModule } from '../../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-app-window-settings',\r\n templateUrl: './tru-app-window-settings.html',\r\n styleUrls: ['./tru-app-window-settings.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n TruAppWindowOpenOnStartupSetting\r\n ]\r\n})\r\nexport class TruAppWindowSettings {\r\n constructor() {}\r\n}\r\n\r\n","<div>\r\n <tru-app-window-open-on-startup-setting></tru-app-window-open-on-startup-setting>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatList } from '@angular/material/list';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruAppWindowSettings } from './windows/tru-app-window-settings';\r\n\r\n@Component({\r\n selector: 'tru-app-settings-dialog',\r\n templateUrl: './tru-app-settings-dialog.html',\r\n styleUrls: ['./tru-app-settings-dialog.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav,\r\n TruAppWindowSettings,\r\n MatList\r\n ]\r\n})\r\nexport class TruAppSettingsDialog implements OnInit {\r\n private globalDataContext: TruDataContext;\r\n\r\n constructor(\r\n private appEnvironment: TruAppEnvironment,\r\n public dialogRef: MatDialogRef<TruAppSettingsDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruAppSettingsDialog) {\r\n this.globalDataContext = this.appEnvironment.globalDataContext as TruDataContext;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n onConfirm(): void {\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n this.globalDataContext.saveSettings().then(() => {\r\n this.dialogRef.close(false);\r\n })\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\">\r\n </mat-icon>\r\n App Settings\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <mat-sidenav-container class=\"example-sidenav-container\">\r\n <mat-sidenav #snav mode=\"side\" opened>\r\n <mat-nav-list>\r\n <a mat-list-item>Windows</a>\r\n </mat-nav-list>\r\n </mat-sidenav>\r\n <mat-sidenav-content>\r\n <tru-app-window-settings></tru-app-window-settings>\r\n </mat-sidenav-content>\r\n </mat-sidenav-container>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n","import { Entity } from \"breeze-client\";\r\n\r\nexport abstract class TruCardColumnData {\r\n $entity?: Entity;\r\n}\r\n","import { EntityQuery } from \"breeze-client\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruCardColumnData } from \"./tru-card-column-data\";\r\nimport { TruCard } from \"../tru-card\";\r\nimport { ITruCardColumnConfig } from \"./tru-card-column-config\";\r\n\r\nexport abstract class TruCardColumnSearchResultsConfigBase {\r\n abstract rowDataEnhancer: (entity: any) => TruCardColumnData;\r\n abstract cardSort: (cards: Array<any>) => any\r\n abstract query?: (breezeQuery: EntityQuery, propertyName: string) => any;\r\n abstract cardColumnId: (entity: any) => string | null | undefined;\r\n abstract cardId: (entity: any) => string | null | undefined;\r\n abstract cardColumnQuery: ((query: EntityQuery, relatedChildProperty: string) => any) | null;\r\n abstract cardView: ((card: TruCard, config: ITruCardColumnConfig) => void) | null;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-toolbar-textbox',\r\n templateUrl: './tru-toolbar-textbox.html',\r\n styleUrls: ['../tru-toolbar.css', './tru-toolbar-textbox.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarTextbox implements OnInit {\r\n @Input() config: [] | null = null;\r\n @Input() tooltip: string = '';\r\n @Input() value: string | null | undefined = '';\r\n @Input() width: number = 115;\r\n @Output() valueChange = new EventEmitter<string | null | undefined>();\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onValueChange(event: any) {\r\n this.valueChange.emit(event.target.value)\r\n }\r\n}\r\n","<mat-form-field class=\"tru-toolbar-textbox-container\">\r\n <input #input\r\n matInput\r\n (input)=\"onValueChange($event)\"\r\n [placeholder]=\"tooltip\"\r\n [style.width.px]=\"width\"\r\n type=\"text\" />\r\n</mat-form-field>\r\n","import _ from \"underscore\";\r\nimport { TruCardColumn } from \"./tru-card-column\";\r\n\r\nexport class TruCard {\r\n private cardContainerElement: HTMLDivElement;\r\n\r\n data;\r\n column;\r\n cardElement: HTMLDivElement;\r\n selected = false;\r\n\r\n constructor(\r\n private cardColumn: TruCardColumn,\r\n column: any,\r\n data: any,\r\n dropped: boolean) {\r\n\r\n this.column = column;\r\n this.data = data;\r\n\r\n this.cardContainerElement = document.createElement('div');\r\n this.cardContainerElement.classList.add('tru-card-portal-card-container');\r\n\r\n if (dropped) {\r\n this.cardContainerElement.classList.add('animated');\r\n this.cardContainerElement.classList.add('rubberBand');\r\n }\r\n\r\n this.cardContainerElement.setAttribute('draggable', 'true');\r\n this.cardContainerElement.setAttribute('droppable', 'true');\r\n\r\n this.cardElement = document.createElement('div');\r\n this.cardElement.classList.add('tru-card-portal-card');\r\n\r\n if (!this.column.data?.unassigned)\r\n this.cardElement.style.backgroundColor = this.cardColumn.color ? this.cardColumn.color : '#fff';\r\n else\r\n this.cardElement.style.backgroundColor = this.cardColumn.unassignedColor ? this.cardColumn.unassignedColor : '#fff';\r\n\r\n if (this.data) {\r\n this.cardContainerElement.addEventListener('dragstart', (e) => {\r\n this.cardColumn.dragStart(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dragover', (e) => {\r\n this.cardColumn.dragOver(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dragend', (e) => {\r\n this.cardColumn.dragEnd(e);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('drop', (e) => {\r\n this.cardColumn.drop(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('click', () => {\r\n this.selected = !this.selected;\r\n this.cardColumn.updateSelection(this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dblclick', () => {\r\n this.goToDetail(this.data.Ref);\r\n });\r\n } else {\r\n this.cardContainerElement.addEventListener('dragover', (e) => {\r\n this.cardColumn.dragOver(e, this);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('dragend', (e) => {\r\n this.cardColumn.dragEnd(e);\r\n });\r\n\r\n this.cardContainerElement.addEventListener('drop', (e) => {\r\n this.cardColumn.drop(e, this);\r\n if (!e.defaultPrevented)\r\n this.column.removeEmptyCard();\r\n });\r\n }\r\n this.updateData();\r\n this.cardContainerElement.appendChild(this.cardElement);\r\n\r\n if (dropped)\r\n this.column.cardScrollPortElement.insertBefore(this.cardContainerElement, this.column.cardScrollPortElement.firstChild);\r\n else\r\n this.column.cardScrollPortElement.appendChild(this.cardContainerElement);\r\n }\r\n\r\n selectAll = (selectAll: any) => {\r\n this.selected = selectAll;\r\n this.cardColumn.updateSelection(this);\r\n }\r\n\r\n updateData = () => {\r\n this.cardElement.innerHTML = '';\r\n this.cardColumn.removeSelection(this)\r\n\r\n if (this.data) {\r\n this.selected = false;\r\n\r\n if (this.cardColumn.config.resultConfig.cardView) {\r\n this.cardColumn.config.resultConfig.cardView(this, this.cardColumn.config);\r\n } else {\r\n var cardText = document.createElement('p');\r\n let value = this.cardColumn.config.resultConfig.cardId(this.data);\r\n if (value)\r\n cardText.innerHTML = value;\r\n this.cardElement.appendChild(cardText);\r\n }\r\n } else {\r\n this.cardContainerElement.setAttribute('draggable', 'false');\r\n this.cardContainerElement.classList.add('empty');\r\n this.cardElement.classList.add('empty');\r\n\r\n var cardContainerEmptyText = document.createElement('p');\r\n cardContainerEmptyText.classList.add('exclude-from-filter');\r\n cardContainerEmptyText.innerHTML = 'Drag items here';\r\n\r\n this.cardElement.appendChild(cardContainerEmptyText);\r\n }\r\n }\r\n\r\n goToDetail = (ref: number) => {\r\n let allColumns = this.cardColumn.lockedColumns.concat(this.cardColumn.columns);\r\n let entities = [];\r\n for (let i = 0; i < allColumns.length; i++) {\r\n for (let j = 0; j < allColumns[i].cards.length; j++) {\r\n entities.push(allColumns[i].cards[j].$entity);\r\n }\r\n }\r\n\r\n let index = _.findIndex(entities, function (entity) {\r\n return entity.Ref === ref\r\n });\r\n\r\n if (index === -1)\r\n throw new Error('Card column does not have a valid card index.');\r\n\r\n this.cardColumn.config.onCardDoubleClicked(entities, index);\r\n }\r\n}\r\n","import { Injectable, TemplateRef } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class TruSearchResultViewManager {\r\n private _searchViewToolbarTemplate!: TemplateRef<any>\r\n\r\n constructor() { }\r\n\r\n set searchViewToolbarTemplate(temp: TemplateRef<any>) {\r\n this._searchViewToolbarTemplate = temp;\r\n }\r\n\r\n get searchViewToolbarTemplate(): TemplateRef<any> {\r\n return this._searchViewToolbarTemplate;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, Input, TemplateRef, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { breeze } from 'breeze-client';\r\nimport { Subscription, forkJoin, skip } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruModelTypeLookup } from '../../services/tru-model-type-lookup';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\r\nimport { TruToolbarButton } from '../toolbar/button/tru-toolbar-button';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { TruToolbarDropdown } from '../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarMenu } from '../toolbar/menu/tru-toolbar-menu';\r\nimport { TruToolbarSeparator } from '../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbarTextbox } from '../toolbar/textbox/tru-toolbar-textbox';\r\nimport { TruToolbar } from '../toolbar/tru-toolbar';\r\nimport { ITruCardColumnConfig } from './classes/tru-card-column-config';\r\nimport { TruCard } from './tru-card';\r\n\r\n@Component({\r\n selector: 'tru-card-column',\r\n templateUrl: './tru-card-column.html',\r\n styleUrls: ['./tru-card-column.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIcon,\r\n TruToolbar,\r\n TruToolbarMenu,\r\n TruToolbarButton,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarTextbox\r\n ]\r\n})\r\nexport class TruCardColumn {\r\n @Input() config!: ITruCardColumnConfig\r\n @Input() name!: any;\r\n\r\n @ViewChild('cardPortal', { static: false }) portal!: ElementRef;\r\n\r\n private parentTablePluralLabel!: string;\r\n private childTableName!: string;\r\n private parentQuery = null;\r\n private lockProperty!: string | null;\r\n \r\n private unassignedLocked!: string;\r\n private unassignedDraggable!: boolean;\r\n private unassignedDroppable!: boolean;\r\n\r\n private inactiveVisible!: boolean;\r\n private inactiveDraggable!: boolean;\r\n private inactiveDroppable!: boolean;\r\n\r\n private columnSort: ((columns: any) => any) | undefined;\r\n private cardSort: ((cards: any) => any) | undefined;\r\n\r\n private relatedParentName!: string;\r\n private relatedChildName!: string;\r\n private insertBefore: any;\r\n private uniqueId!: string;\r\n private subs: Array<Subscription> = [];\r\n\r\n parentTableName!: string;\r\n childTablePluralLabel!: string;\r\n busyMessage: string = '';\r\n isBusy: boolean = false;\r\n columns: any = [];\r\n cards: any = [];\r\n lockedColumns: any = [];\r\n columnFilterChoices: Array<ITruToolbarDropdownOption> | null = [];\r\n columnFilterRefs: Array<number> = [];\r\n cardFilterStr: string | null | undefined = null;\r\n selectedCards: Array<TruCard> = [];\r\n color!: string | null;\r\n unassignedColor!: string | null;\r\n key!: string;\r\n unassignedVisible!: boolean;\r\n unassignedName!: string | null;\r\n userHasParentTableRole = true; //parentTableModel.canDisplay;\r\n viewMenuItems: any = [];\r\n selectedViewMenuItem: any | null = null;\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\r\n columnFilterTooltip: string = '';\r\n cardFilterTooltip: string = '';\r\n columnDropdownFilterTooltip: string = '';\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private searchViewEventHandler: TruSearchViewEventHandler,\r\n private searchResultViewManager: TruSearchResultViewManager) {\r\n \r\n }\r\n\r\n private parentTableModel = null;//dataService.model.tables[parentTableName];\r\n\r\n private createDataForEntity = (entity: TruEntityBase) => {\r\n var data = this.config.resultConfig.rowDataEnhancer(entity);\r\n return data;\r\n };\r\n\r\n private hasUndefinedChildren = (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.config.parentToChildRelationshipName as EntityObjectKey;\r\n return !entity[entityPropertyName];\r\n }\r\n\r\n private hasEmptyChildren = (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.config.parentToChildRelationshipName as EntityObjectKey;\r\n return !entity[entityPropertyName].length;\r\n }\r\n\r\n private hasInactiveChildren = (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.config.parentToChildRelationshipName as EntityObjectKey;\r\n return _.every([entityPropertyName], (child: any) => { return !child.active; });\r\n }\r\n\r\n private hasAddedUnsavedChildren = (entities: Array<TruEntityBase>, parentRef: number) => {\r\n return _.some(entities, (entity: TruEntityBase) => {\r\n type EntityObjectKey = keyof typeof entity;\r\n const entityPropertyName = this.key as EntityObjectKey;\r\n return entity[entityPropertyName] === parentRef\r\n });\r\n }\r\n\r\n private clear = () => {\r\n var lockedColumns = this.portal.nativeElement.querySelectorAll('.locked-columns')[0];\r\n var unlockedColumns = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n while (lockedColumns && lockedColumns.lastChild) { lockedColumns.removeChild(lockedColumns.lastChild); };\r\n while (unlockedColumns && unlockedColumns.lastChild) { unlockedColumns.removeChild(unlockedColumns.lastChild); }\r\n while (this.selectedCards.length) { this.selectedCards.pop(); };\r\n //this.config.onSelectionChanged([]);\r\n //this.config.clearFilters();\r\n }\r\n\r\n private getValueFromSortPath = (args: [any, string[]]): any => {\r\n let current: any = args[0];\r\n for (let i: number = 0; i < args[1].length; i++) {\r\n let partName: string;\r\n if (i !== args[1].length - 1) {\r\n partName = 'o' + args[1][i];\r\n } else {\r\n partName = args[1][i];\r\n }\r\n\r\n if (current[partName]) {\r\n current = current[partName];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return current;\r\n }\r\n\r\n private updateItemsSource(newEntities: Array<any>, revert: boolean) {\r\n this.clear();\r\n\r\n this.busyMessage = 'Rendering...'\r\n \r\n if (!revert)\r\n localStorage.setItem('scroll_position' + uuidv4(), '0');\r\n\r\n this.columnFilterChoices = [];\r\n this.columnFilterRefs = [];\r\n this.cardFilterStr = null;\r\n\r\n if (!newEntities.length) {\r\n this.lockedColumns = [];\r\n this.columns = [];\r\n return;\r\n }\r\n\r\n let lockedColumns: Array<any> = [];\r\n let emptyParents: Array<any> = [];\r\n let columns: Array<any> = [];\r\n\r\n let query = new breeze.EntityQuery('Query' + this.parentTableName);\r\n let parentRefs = newEntities.map((e: any) => { return e[this.parentTableName + 'Ref']; });\r\n\r\n if (this.config.resultConfig.cardColumnQuery)\r\n query = this.config.resultConfig.cardColumnQuery(query, this.config.parentToChildRelationshipName);\r\n else\r\n query = query.expand(this.config.parentToChildRelationshipName);\r\n\r\n let uniqueParentRefs = [...new Set(parentRefs)]\r\n query = query.where(this.parentTableName + 'Ref', 'in', uniqueParentRefs);\r\n\r\n //if (this.parentQuery)\r\n // query = queries[this.parentQuery](query);\r\n\r\n this.dataContext.entityAccess().customSearch(this.modelTypeLookup.getType(this.parentTableName), query).subscribe((parents) => {\r\n //this.config.addParentsToFilter(parents);\r\n\r\n emptyParents = _.filter(parents, (parent) => {\r\n if (this.hasUndefinedChildren(parent) || this.hasEmptyChildren(parent) || this.hasInactiveChildren(parent)) {\r\n if (!this.hasAddedUnsavedChildren(newEntities, parent.Ref)) {\r\n parent['cards'] = [];\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n let queryableParentRefs = _.pluck(parents, this.key)\r\n\r\n let inactiveWithParent: Array<any> = [];\r\n let activeWithoutParent: Array<any> = [\r\n {\r\n unassigned: true,\r\n cards: []\r\n }\r\n ];\r\n\r\n parents.forEach((parent: any) => {\r\n parent['cards'] = [];\r\n if (queryableParentRefs.indexOf(parent[this.key]) !== -1) {\r\n if (this.lockProperty !== null && parent[this.lockProperty]) {\r\n lockedColumns.push(parent);\r\n } else if (this.lockProperty === null || !parent[this.lockProperty] && !_.contains(emptyParents, parent)) {\r\n columns.push(parent);\r\n }\r\n } else {\r\n parent['inactive'] = true;\r\n inactiveWithParent.push(parent);\r\n }\r\n });\r\n\r\n parents.forEach((parent: any) => {\r\n var choice = {\r\n value: parent.Ref,\r\n label: this.config.resultConfig.cardColumnId(parent) as string\r\n }\r\n this.columnFilterChoices!.push(choice);\r\n });\r\n\r\n newEntities.forEach((entity) => {\r\n var entityParent = _.find(parents, (p) => {\r\n if (entity['o' + this.relatedParentName])\r\n return p.Ref === entity['o' + this.relatedParentName].Ref;\r\n return false;\r\n });\r\n\r\n if (entityParent) {\r\n if (queryableParentRefs.indexOf(entityParent[this.key]) !== -1) {\r\n entityParent.cards.push(this.createDataForEntity(entity));\r\n } else {\r\n entityParent.cards.push(this.createDataForEntity(entity));\r\n }\r\n } else if (\r\n !entityParent &&\r\n entity['o' + this.relatedParentName] &&\r\n entity['o' + this.relatedParentName].Ref > 0) {\r\n let inactiveParent = entity['o' + this.relatedParentName];\r\n if (inactiveWithParent.indexOf(inactiveParent) === -1) {\r\n inactiveParent['cards'] = [];\r\n inactiveParent['inactive'] = true;\r\n inactiveWithParent.push(inactiveParent);\r\n }\r\n inactiveParent.cards.push(this.createDataForEntity(entity));\r\n } else {\r\n activeWithoutParent[0].cards.push(this.createDataForEntity(entity));\r\n }\r\n });\r\n\r\n if (this.columnSort) {\r\n var columnSortParts = ['']; //this.columnSort.split('/');\r\n\r\n lockedColumns = _.sortBy(lockedColumns, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n columns = _.sortBy(columns, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n inactiveWithParent = _.sortBy(inactiveWithParent, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n emptyParents = _.sortBy(emptyParents, (o) => {\r\n var v = this.getValueFromSortPath([o, columnSortParts]);\r\n if (v)\r\n return _.isString(v) ? v.trim() : v;\r\n else\r\n return null;\r\n });\r\n }\r\n\r\n if (typeof this.config.cardSort === 'function') {\r\n lockedColumns.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n\r\n columns.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n\r\n inactiveWithParent.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n\r\n activeWithoutParent.forEach((column) => {\r\n column.cards = this.config.resultConfig.cardSort(column.cards);\r\n });\r\n }\r\n\r\n if (this.inactiveVisible)\r\n columns = columns.concat(inactiveWithParent);\r\n\r\n columns = columns.concat(emptyParents);\r\n\r\n if (this.unassignedVisible && !this.unassignedLocked)\r\n columns = columns.concat(activeWithoutParent);\r\n\r\n if (this.unassignedVisible && this.unassignedLocked)\r\n lockedColumns = columns.concat(lockedColumns);\r\n\r\n this.lockedColumns = lockedColumns;\r\n this.columns = columns;\r\n\r\n setTimeout(() => {\r\n this.clear();\r\n new CardView(this, this.lockedColumns, this.columns);\r\n\r\n if (revert) {\r\n let columnElement = this.portal.nativeElement.querySelectorAll('.tru-card-portal-columns')[0];\r\n let previousScrollPosition = localStorage.getItem('scroll_position' + uuidv4());\r\n columnElement.scrollLeft = previousScrollPosition ? +previousScrollPosition : 0;\r\n }\r\n\r\n this.isBusy = false;\r\n });\r\n });\r\n }\r\n\r\n private subscribeTo = () => {\r\n this.subs.push(this.searchViewEventHandler.onSearch().pipe(skip(1)).subscribe((setupQuery: any) => {\r\n this.onSearch(setupQuery);\r\n }));\r\n }\r\n\r\n private onSearch = (setupQuery: any) => {\r\n this.isBusy = true;\r\n this.busyMessage = 'Searching for ' + this.childTablePluralLabel + '...';\r\n let joins = [];\r\n\r\n joins.push(this.dataContext.entityAccess().search(\r\n this.modelTypeLookup.getType(this.childTableName),\r\n setupQuery,\r\n null, false));\r\n\r\n forkJoin(joins).subscribe({\r\n next: results => {\r\n this.cards = results[0];\r\n this.updateItemsSource(results[0], false);\r\n },\r\n complete: () => {}\r\n });\r\n }\r\n\r\n filterColumns = (selectedOptions: Array<ITruToolbarDropdownOption> | null) => {\r\n let refs = selectedOptions!.filter((option: ITruToolbarDropdownOption) => { return option.value })\r\n\r\n var event = new CustomEvent('filter-columns', {\r\n bubbles: true,\r\n detail: refs\r\n });\r\n\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n unlockedColumnsElement.dispatchEvent(event);\r\n\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n var columnElements = unlockedColumnsElement.querySelectorAll('.tru-card-portal-column');\r\n var arr = Array.prototype.slice.call(columnElements);\r\n arr.sort((a, b) => a.id - b.id);\r\n\r\n for (var i = arr.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(arr[i], unlockedColumnsElement.firstChild);\r\n }\r\n };\r\n\r\n filterCards = (value: string | null | undefined) => {\r\n this.cardFilterStr = value ? value.toLowerCase() : '';\r\n\r\n var event = new CustomEvent('filter-cards', {\r\n bubbles: true,\r\n });\r\n\r\n var columnElements = this.portal.nativeElement.querySelectorAll('.tru-card-portal-column');\r\n\r\n for (var i = 0; i < columnElements.length; i++) {\r\n columnElements[i].dispatchEvent(event);\r\n }\r\n\r\n if (this.cardFilterStr) {\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n var columnElements = unlockedColumnsElement.querySelectorAll('.tru-card-portal-column');\r\n var columnsWithCards = [];\r\n var columnsWithoutCards = [];\r\n for (var i = 0; i < columnElements.length; i++) {\r\n var cardElements = columnElements[i].querySelectorAll('.tru-card-portal-card-container:not(.tru-card-portal-card-filtered):not(.empty)');\r\n if (cardElements.length) {\r\n columnsWithCards.push(columnElements[i]);\r\n } else {\r\n columnsWithoutCards.push(columnElements[i]);\r\n }\r\n }\r\n columnsWithCards.sort((a, b) => a.id - b.id);\r\n columnsWithoutCards.sort((a, b) => a.id - b.id);\r\n for (var i = columnsWithoutCards.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(columnsWithoutCards[i], unlockedColumnsElement.firstChild);\r\n }\r\n\r\n for (var i = columnsWithCards.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(columnsWithCards[i], unlockedColumnsElement.firstChild);\r\n }\r\n } else {\r\n var unlockedColumnsElement = this.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n var columnElements = unlockedColumnsElement.querySelectorAll('.tru-card-portal-column');\r\n var arr = Array.prototype.slice.call(columnElements);\r\n arr.sort((a, b) => a.id - b.id);\r\n\r\n for (var i = arr.length - 1; i >= 0; --i) {\r\n unlockedColumnsElement.insertBefore(arr[i], unlockedColumnsElement.firstChild);\r\n }\r\n }\r\n }\r\n\r\n updateSelection = (card: TruCard) => {\r\n if (!card.selected) {\r\n var index = this.selectedCards.indexOf(card);\r\n if (index !== -1)\r\n this.selectedCards.splice(index, 1);\r\n\r\n card.cardElement.classList.remove('tru-card-selected');\r\n } else {\r\n var index = this.selectedCards.indexOf(card);\r\n if (index === -1)\r\n this.selectedCards.push(card);\r\n\r\n card.cardElement.classList.add('tru-card-selected');\r\n }\r\n\r\n //scope.config.onSelectionChanged(selectedCards);\r\n }\r\n\r\n dragStart = (e: any, card: TruCard) => {\r\n e.stopPropagation();\r\n\r\n //scope.config.closeSearchPanel();\r\n\r\n if ((card.column.data.unassigned && !this.unassignedDraggable) ||\r\n (card.column.data.inactive && !this.inactiveDraggable)) {\r\n e.preventDefault();\r\n return false;\r\n }\r\n\r\n e.dataTransfer.dropEffect = 'move';\r\n\r\n if (!card.selected) {\r\n card.selected = true;\r\n this.updateSelection(card)\r\n } \r\n\r\n let clonedNode = e.target.cloneNode(true);\r\n clonedNode.style.position = \"absolute\";\r\n clonedNode.style.top = \"0px\";\r\n clonedNode.style.left = \"-10000px\";\r\n clonedNode.style.overflow = 'visible';\r\n clonedNode.classList.add('cloned-card');\r\n\r\n var inner = clonedNode.getElementsByClassName(\"tru-card-portal-card\")[0];\r\n inner.style.transform = \"rotate(-10deg)\";\r\n inner.style.position = 'relative';\r\n inner.style.zIndex = 10;\r\n\r\n document.body.appendChild(clonedNode);\r\n e.dataTransfer.setDragImage(clonedNode, 50, 50);\r\n\r\n return true;\r\n }\r\n\r\n dragOver = (e: any, card: TruCard) => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n var target = e.target;\r\n if (!target.classList.contains('tru-card-portal-card-container') ||\r\n (card.column.data.unassigned && !this.unassignedDroppable) ||\r\n (card.column.data.inactive && !this.inactiveDroppable)) {\r\n e.dataTransfer.dropEffect = 'none';\r\n } else {\r\n e.dataTransfer.dropEffect = 'move';\r\n }\r\n }\r\n\r\n dragEnd = (e: any) => {\r\n e.stopPropagation();\r\n\r\n let elements: HTMLCollectionOf<Element> = document.getElementsByClassName('cloned-card');\r\n while (elements.length > 0) {\r\n elements[0].parentNode?.removeChild(elements[0]);\r\n }\r\n\r\n elements = document.getElementsByClassName('tru-card-placeholder');\r\n while (elements.length > 0) {\r\n elements[0].parentNode?.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n drop = async (e: any, card: TruCard) => {\r\n e.stopPropagation();\r\n\r\n for (var i = this.selectedCards.length - 1; i >= 0; --i) {\r\n let index = card.column.cards.indexOf(this.selectedCards[i]);\r\n if (index !== -1)\r\n this.selectedCards[i].updateData();\r\n }\r\n\r\n if (card.column.data.unassigned && !this.unassignedDroppable ||\r\n card.column.data.inactive && !this.inactiveDroppable ||\r\n !this.selectedCards.length) {\r\n e.preventDefault();\r\n return false;\r\n };\r\n\r\n if (this.config === null) {\r\n //this.config.onDrop(card, this.selectedCards, this.config, this.portal, e);\r\n } else {\r\n for (let i = 0; i < this.selectedCards.length; i++) {\r\n card.column.addCard(this.selectedCards[i]);\r\n }\r\n\r\n for (var i = this.selectedCards.length - 1; i >= 0; --i) {\r\n this.selectedCards[i].column.removeCard(this.selectedCards[i]);\r\n }\r\n\r\n while (this.selectedCards.length) { this.selectedCards.pop(); };\r\n\r\n let savePromise = this.dataContext.saveWithoutNotification();\r\n if (savePromise) {\r\n this.portal.nativeElement.classList.add('tru-card-portal-disabled');\r\n await savePromise.then(() => {\r\n this.portal.nativeElement.classList.remove('tru-card-portal-disabled');\r\n }).catch(() => {\r\n e.preventDefault();\r\n var columnElement = this.portal.nativeElement.querySelectorAll('.tru-card-portal-columns')[0];\r\n localStorage.setItem('scroll_position' + this.uniqueId, columnElement.scrollLeft);\r\n this.dataContext.revert();\r\n this.portal.nativeElement.classList.remove('tru-card-portal-disabled');\r\n });\r\n } else {\r\n e.preventDefault();\r\n var columnElement = this.portal.nativeElement.querySelectorAll('.tru-card-portal-columns')[0];\r\n localStorage.setItem('scroll_position' + this.uniqueId, columnElement.scrollLeft);\r\n this.dataContext.revert();\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.parentTableName = this.config.parentTableName;\r\n this.parentTablePluralLabel = this.config.parentTablePluralLabel;\r\n this.childTableName = this.config.childTableName;\r\n this.childTablePluralLabel = this.config.childTablePluralLabel;\r\n this.key = this.config.key;\r\n this.parentQuery = null\r\n this.lockProperty = this.config.lockProperty;\r\n this.color = this.config.color;\r\n this.unassignedVisible = this.config.unassignedVisible;\r\n this.unassignedName = this.config.unassignedName;\r\n this.unassignedLocked = this.config.unassignedLocked;\r\n this.unassignedColor = this.config.unassignedColor;\r\n this.unassignedDraggable = this.config.unassignedDraggable;\r\n this.unassignedDroppable = this.config.unassignedDroppable;\r\n\r\n this.inactiveVisible = this.config.inactiveVisible;\r\n this.inactiveDraggable = this.config.inactiveDraggable;\r\n this.inactiveDroppable = this.config.inactiveDroppable;\r\n\r\n this.columnSort = this.config.columnSort;\r\n this.cardSort = this.config.cardSort;\r\n this.columnFilterTooltip = this.config.parentTablePluralLabel ? this.config.parentTablePluralLabel + ' Filter' : 'Filter';\r\n this.columnDropdownFilterTooltip = 'Type to Filter...';\r\n this.cardFilterTooltip = this.config.childTablePluralLabel ? this.config.childTablePluralLabel + ' Filter' : 'Filter';\r\n\r\n let index = this.key.lastIndexOf(this.parentTableName);\r\n let prefix = this.key.substring(index, -1);\r\n if (prefix) {\r\n this.relatedParentName = prefix + this.parentTableName;\r\n this.relatedChildName = prefix + this.childTablePluralLabel;\r\n } else {\r\n this.relatedParentName = this.parentTableName;\r\n this.relatedChildName = this.childTablePluralLabel;\r\n }\r\n\r\n this.uniqueId = uuidv4();\r\n this.subscribeTo();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //setTimeout to prevent: ERROR Error: NG0100: ExpressionChangedAfterItHasBeenCheckedError. \r\n setTimeout(() => {\r\n this.config.viewMenuConfig.menuItemsEnabled = () => { return this.columns.length; };\r\n this.config.viewMenuConfig.allMenus().subscribe((menu: any) => { this.viewMenuItems = menu; });\r\n this.parentToolbarTemplate = this.searchResultViewManager.searchViewToolbarTemplate;\r\n }, 0);\r\n }\r\n\r\n removeSelection = (card: TruCard) => {\r\n var index = this.selectedCards.indexOf(card);\r\n if (index !== -1)\r\n this.selectedCards.splice(index, 1);\r\n\r\n card.cardElement.classList.remove('tru-card-selected');\r\n\r\n //scope.config.onSelectionChanged(selectedCards);\r\n }\r\n}\r\n\r\nclass CardView {\r\n private lockedColumnsElement;\r\n private unlockedColumnsElement\r\n\r\n constructor(\r\n private cardColumn: TruCardColumn,\r\n private lockedColumns: any,\r\n private columns: any) {\r\n this.lockedColumnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.locked-columns')[0];\r\n this.unlockedColumnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n if (lockedColumns && lockedColumns.length)\r\n this.addColumns(lockedColumns, true);\r\n\r\n if (columns && columns.length)\r\n this.addColumns(columns, false);\r\n\r\n this.unlockedColumnsElement.addEventListener('filter-columns', (e: CustomEvent) => {\r\n this.updateColumns(e.detail as Array<ITruToolbarDropdownOption>);\r\n });\r\n }\r\n\r\n private columnViews: Array<Column> = [];\r\n\r\n private addColumns = (columnData: Array<any>, locked: boolean) => {\r\n let columnsElement: HTMLDivElement;\r\n if (locked)\r\n columnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.locked-columns')[0];\r\n else\r\n columnsElement = this.cardColumn.portal.nativeElement.querySelectorAll('.unlocked-columns')[0];\r\n\r\n let fragment = document.createDocumentFragment();\r\n\r\n for (let i = 0; i < columnData.length; i++) {\r\n this.columnViews.push(new Column(this.cardColumn, columnData[i], columnsElement, locked, i));\r\n }\r\n\r\n columnsElement.appendChild(fragment);\r\n\r\n this.cardColumn.busyMessage = '';\r\n }\r\n\r\n updateColumns = (options: Array<ITruToolbarDropdownOption>) => {\r\n let refs = options.map((option: ITruToolbarDropdownOption) => { return option.value });\r\n\r\n if (refs && refs.length) {\r\n for (var i = 0; i < this.columns.length; i++) {\r\n let column = this.columnViews[i];\r\n\r\n if (!column.locked && column.data.entityAspect) {\r\n var found = refs.filter(x => x === column.data.Ref).length > 0;\r\n\r\n if (found) {\r\n column.columnElement.classList.remove('tru-card-portal-column-filtered');\r\n } else {\r\n column.columnElement.classList.add('tru-card-portal-column-filtered');\r\n }\r\n }\r\n }\r\n } else {\r\n for (var i = 0; i < this.columnViews.length; i++) {\r\n let column = this.columnViews[i];\r\n column.columnElement.classList.remove('tru-card-portal-column-filtered');\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass Column {\r\n private cards: Array<any> = [];\r\n private parentElement: HTMLDivElement;\r\n\r\n columnElement;\r\n locked: boolean;\r\n data: any;\r\n cardScrollPortElement: HTMLDivElement;\r\n selectAllButton!: HTMLDivElement;\r\n\r\n constructor(\r\n private cardColumn: TruCardColumn,\r\n data: any,\r\n parentElement: HTMLDivElement,\r\n locked: boolean,\r\n index: number) {\r\n\r\n this.data = data;\r\n this.locked = locked;\r\n this.parentElement = parentElement;\r\n\r\n let columnElement = document.createElement('div');\r\n columnElement.classList.add('tru-card-portal-column');\r\n columnElement.id = index.toString();\r\n\r\n if (data?.inactive)\r\n columnElement.classList.add('tru-card-portal-column-inactive');\r\n columnElement.style.width = this.cardColumn.config.width + 'px';\r\n this.columnElement = columnElement;\r\n\r\n this.cardScrollPortElement = document.createElement('div');\r\n this.cardScrollPortElement.classList.add('tru-card-portal-card-scroll-port');\r\n\r\n new ColumnHeader(this.cardColumn, this);\r\n\r\n this.columnElement.appendChild(this.cardScrollPortElement);\r\n this.columnElement.addEventListener('filter-cards', (e) => {\r\n this.updateDataByFilter();\r\n });\r\n\r\n this.updateData();\r\n\r\n this.parentElement.appendChild(this.columnElement);\r\n }\r\n\r\n private addEmptyCard = () => {\r\n let emptyCards = _.filter(this.cards, function (card) { return !card.data });\r\n if (!emptyCards.length)\r\n this.cards.push(new TruCard(this.cardColumn, this, null, false));\r\n\r\n this.selectAllButton.style.display = 'none';\r\n }\r\n\r\n private removeEmptyCard = () => {\r\n var emptyCards = _.filter(this.cards, (card) => { return !card.data });\r\n if (emptyCards.length) {\r\n var emptyCard = emptyCards[0];\r\n var emptyCardElement = emptyCard.cardContainerElement;\r\n emptyCardElement.parentNode.removeChild(emptyCardElement);\r\n var index = this.cards.indexOf(emptyCards[0]);\r\n if (index !== -1)\r\n this.cards.splice(index, 1);\r\n }\r\n\r\n this.selectAllButton.style.display = 'block';\r\n }\r\n\r\n private columnIsVisuallyEmpty = () => {\r\n return this.cards.every(function (card) {\r\n return card.cardContainerElement.classList.contains('tru-card-portal-card-filtered');\r\n });\r\n }\r\n\r\n private removeCard = (card: any) => {\r\n card.cardContainerElement.parentNode.removeChild(card.cardContainerElement);\r\n\r\n var index = this.data.cards.indexOf(card.data);\r\n if (index !== -1)\r\n this.data.cards.splice(index, 1);\r\n index = this.cards.indexOf(card);\r\n if (index !== -1)\r\n this.cards.splice(index, 1);\r\n if (!this.cards.length || this.columnIsVisuallyEmpty())\r\n this.addEmptyCard();\r\n\r\n card = null;\r\n }\r\n\r\n private updateDataByFilter = () => {\r\n let cardFilterStr = this.cardColumn.cardFilterStr;\r\n if (cardFilterStr) {\r\n for (var i = 0; i < this.cards.length; i++) {\r\n var card = this.cards[i];\r\n\r\n if (card.data) {\r\n let filterParts = cardFilterStr.split(/(\\s+)/).filter(function (s) { return s.trim().length > 0; });\r\n let cardFilterResult;\r\n if (typeof this.cardColumn.config.resultConfig.cardId === 'function') {\r\n cardFilterResult = filterParts.every((part) => {\r\n return this.cardColumn.config.resultConfig.cardId(card.data)!.toLowerCase().indexOf(part) != -1;\r\n });\r\n } else {\r\n cardFilterResult = card.cardFilter(card.data, cardFilterStr)\r\n }\r\n\r\n if (cardFilterResult) {\r\n card.cardContainerElement.classList.remove('tru-card-portal-card-filtered');\r\n } else {\r\n card.cardContainerElement.classList.add('tru-card-portal-card-filtered');\r\n }\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < this.cards.length; i++) {\r\n let card = this.cards[i];\r\n card.cardContainerElement.classList.remove('tru-card-portal-card-filtered');\r\n }\r\n }\r\n\r\n let cardElements = this.columnElement.querySelectorAll('.tru-card-portal-card-container:not(.tru-card-portal-card-filtered):not(.empty)');\r\n if (cardElements.length) {\r\n this.removeEmptyCard();\r\n if (!this.locked) {\r\n this.parentElement.insertBefore(this.columnElement, this.parentElement.firstChild);\r\n }\r\n } else {\r\n this.addEmptyCard();\r\n }\r\n }\r\n\r\n updateData = () => {\r\n this.cardScrollPortElement.innerHTML = '';\r\n\r\n while (this.cards.length) { this.cards.pop(); };\r\n\r\n let columnCards = this.cardColumn.cards.filter((cardData: any) => { return cardData[this.cardColumn.parentTableName + 'Ref'] === this.data.Ref })\r\n\r\n if (columnCards.length) {\r\n for (let i = 0; i < columnCards.length; i++) {\r\n this.cards.push(new TruCard(this.cardColumn, this, columnCards[i], false));\r\n }\r\n } else {\r\n this.addEmptyCard();\r\n }\r\n }\r\n\r\n selectAll = (selectAll: boolean) => {\r\n for (var i = 0; i < this.cards.length; i++)\r\n this.cards[i].selectAll(selectAll);\r\n }\r\n\r\n addCard = (card: any) => {\r\n card.data[this.cardColumn.key] = this.data.Ref;\r\n this.data.cards.unshift(card.data);\r\n this.cards.unshift(new TruCard(this.cardColumn, this, card.data, true));\r\n }\r\n}\r\n\r\nclass ColumnHeader {\r\n constructor(private cardColumn: TruCardColumn, column: Column) {\r\n let columnHeaderElement = document.createElement('div');\r\n columnHeaderElement.classList.add('tru-card-portal-column-header');\r\n\r\n new ColumnHeaderText(cardColumn, column, columnHeaderElement);\r\n new ColumnHeaderButton(column, columnHeaderElement);\r\n\r\n column.columnElement.insertBefore(columnHeaderElement, column.columnElement.firstChild);\r\n }\r\n}\r\n\r\nclass ColumnHeaderText {\r\n private data: any;\r\n constructor(private cardColumn: TruCardColumn, column: Column, parentElement: HTMLDivElement) {\r\n this.data = column.data;\r\n\r\n let headerText = document.createElement('p');\r\n headerText.classList.add('tru-card-portal-column-headertext');\r\n\r\n if (this.cardColumn.userHasParentTableRole) {\r\n headerText.addEventListener('click', () => { cardColumn.config.onCardColumnClicked([column.data]); });\r\n headerText.classList.add('tru-card-portal-column-headertext-hover');\r\n }\r\n\r\n if (!this.data?.unassigned) {\r\n let value = this.cardColumn.config.resultConfig.cardColumnId(column.data);\r\n if (value)\r\n headerText.innerHTML = value;\r\n }\r\n\r\n if (this.data?.unassigned && this.cardColumn.unassignedVisible)\r\n headerText.innerHTML = this.cardColumn.unassignedName ? this.cardColumn.unassignedName : 'Unassigned';\r\n\r\n parentElement.appendChild(headerText);\r\n }\r\n}\r\n\r\nclass ColumnHeaderButton { \r\n private column: Column;\r\n private selectAll = false;\r\n\r\n constructor(column: Column, parentElement: HTMLDivElement) {\r\n this.column = column;\r\n\r\n var linkButtonContainer = document.createElement('div');\r\n linkButtonContainer.classList.add('tru-card-portal-column-header-extras');\r\n\r\n let linkButton: HTMLAnchorElement = document.createElement('a');\r\n linkButton.classList.add('tru-card-portal-column-header-extra-button');\r\n linkButton.classList.add('dark-hover');\r\n linkButton.href = '#';\r\n\r\n let linkButtonText: HTMLInputElement = document.createElement('input');\r\n linkButtonText.type = 'checkbox';\r\n linkButtonText.classList.add('tru-card-icon-small');\r\n linkButtonText.classList.add('icon-check-square-o');\r\n\r\n linkButtonText.addEventListener('change', () => {\r\n this.selectAll = !this.selectAll;\r\n this.column.selectAll(this.selectAll);\r\n });\r\n\r\n linkButton.appendChild(linkButtonText);\r\n linkButtonContainer.appendChild(linkButton);\r\n\r\n this.column.selectAllButton = linkButtonContainer;\r\n\r\n parentElement.appendChild(linkButtonContainer);\r\n }\r\n}\r\n","<div class=\"tru-card\">\r\n <div *ngIf=\"isBusy\"\r\n class=\"tru-card-busy-indicator\">\r\n <p>{{busyMessage}}</p>\r\n </div>\r\n <tru-toolbar>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-dropdown\r\n [tooltip]=\"columnFilterTooltip\"\r\n (selectionChange)=\"filterColumns($event)\"\r\n [options]=\"columnFilterChoices\"\r\n [multiple]=\"true\"\r\n [filterable]=\"true\"\r\n [filterTooltip]=\"columnDropdownFilterTooltip\"\r\n [width]=\"150\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-textbox\r\n [tooltip]=\"cardFilterTooltip\"\r\n (valueChange)=\"filterCards($event)\"\r\n [width]=\"150\">\r\n </tru-toolbar-textbox>\r\n <tru-toolbar-separator *ngIf=\"viewMenuItems.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"viewMenuItems.length\">\r\n <tru-toolbar-menu *ngFor=\"let viewMenuItem of viewMenuItems\" [config]=\"viewMenuItem\"></tru-toolbar-menu>\r\n </div>\r\n </tru-toolbar>\r\n <div class=\"tru-card-portal\" #cardPortal>\r\n <div [ngStyle]=\"{'width': ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1)) + 'px' }\"\r\n [ngClass]=\"{'tru-card-portal-locked-columns-divider': lockedColumns.length}\"\r\n *ngIf=\"lockedColumns.length\"\r\n class=\"tru-card-portal-locked-columns locked-columns\">\r\n </div>\r\n <div [ngStyle]=\"{'left': lockedColumns.length ? ((config.width * lockedColumns.length) + (10 * lockedColumns.length - 1) + 22) + 'px' : 0 }\"\r\n class=\"tru-card-portal-columns unlocked-columns\">\r\n </div>\r\n </div>\r\n</div>\r\n","import { TruUtil } from \"../../../services/tru-util\";\r\n\r\nexport class TruDataGridCellRenderer {\r\n // private eGui: is an empty element to satisfy the getGui method. \r\n private eGui!: HTMLDivElement\r\n private validationContainer!: HTMLDivElement;\r\n\r\n onMouseOver = (e: any) => {\r\n if (e.target)\r\n e.target.classList.contains('invalid-flag') ? this.validationContainer.classList.toggle('show') : this.validationContainer.classList.remove('show');\r\n }\r\n\r\n onRightClick = (event: MouseEvent) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n alert('Cell Clicked');\r\n }\r\n\r\n init(params: any) {\r\n params.eGridCell.innerHTML = '';\r\n let value = params.value;\r\n if (params.value === null)\r\n value = '';\r\n\r\n if (params.colDef.cellEditor && params.colDef.cellEditor.name === \"StdRichTextList\") {\r\n var p = document.createElement('div');\r\n p.innerHTML = value\r\n params.eGridCell.appendChild(p);\r\n } else {\r\n var content = document.createTextNode(value);\r\n params.eGridCell.appendChild(content);\r\n }\r\n\r\n this.validationContainer = document.createElement('div');\r\n this.validationContainer.className = 'dialog-target';\r\n let validationFlag = document.createElement('span');\r\n validationFlag.className = 'invalid-flag';\r\n\r\n params.eGridCell.appendChild(this.validationContainer);\r\n params.eGridCell.appendChild(validationFlag);\r\n\r\n params.eGridCell.addEventListener('mouseover', this.onMouseOver);\r\n params.eGridCell.addEventListener('contextmenu', this.onRightClick);\r\n\r\n Object.assign(params.eGridCell.style, new TruUtil().rulesEval(params.data[params.colDef.field].rules(params.data.$entity)));\r\n }\r\n\r\n getGui() {\r\n return this.eGui\r\n }\r\n\r\n refresh() {\r\n return false;\r\n }\r\n\r\n destroy() {\r\n document.removeEventListener('mouseover', this.onMouseOver);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Column, GridApi, RowNode } from 'ag-grid-community';\r\nimport { TruEntityBase } from '../../../base-classes/tru-entity-base';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruDataGridClipboard {\r\n\r\n private tableName: string | null = null;\r\n private rowData: Array<TruEntityBase> = []; \r\n\r\n copiedRows = (tableName: string, rowData: Array<TruEntityBase>) => {\r\n this.tableName = tableName;\r\n this.rowData = rowData;\r\n }\r\n\r\n getCopiedRows = () => {\r\n return this.rowData;\r\n }\r\n}\r\n","import { NgIf, NgClass, CommonModule } from \"@angular/common\";\r\nimport { ChangeDetectionStrategy, Component, ViewChild } from \"@angular/core\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatMenuModule, MatMenuTrigger } from \"@angular/material/menu\";\r\nimport { ICellRendererParams } from \"ag-grid-community\";\r\nimport { TruDataGridClipboard } from \"../services/tru-data-grid-clipboard\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruUtil } from \"../../../services/tru-util\";\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n CommonModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatMenuModule\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `<div (contextmenu)=\"onRightClick($event)\">{{displayValue}}\r\n <div style=\"visibility: hidden; position: relative\"\r\n [style.left]=\"contextMenuPosition.x\"\r\n [matMenuTriggerFor]=\"truDataGridContextMenu\">\r\n </div>\r\n <mat-menu #truDataGridContextMenu=\"matMenu\">\r\n <button mat-menu-item [disabled]=\"copyIsDisabled\" (click)=\"onCopy($event)\">\r\n <mat-icon [svgIcon]=\"'copy-icon'\"></mat-icon>\r\n <span>Copy</span>\r\n </button>\r\n <button mat-menu-item [disabled]=\"pasteIsDisabled\" (click)=\"onPaste($event)\">\r\n <mat-icon [svgIcon]=\"'paste-icon'\"></mat-icon>\r\n <span>Paste</span>\r\n </button>\r\n <button mat-menu-item>\r\n <mat-icon [svgIcon]=\"'insert-icon'\"></mat-icon>\r\n <span>Insert At Top</span>\r\n </button>\r\n </mat-menu>\r\n </div>`,\r\n styles: [`\r\n ::ng-deep .mat-mdc-menu-item {\r\n height: 25px !important;\r\n min-height: 25px !important;\r\n }\r\n ::ng-deep .mat-mdc-menu-content mat-icon svg {\r\n fill: #949494;\r\n }\r\n `]\r\n})\r\nexport class TruDataGridPkeyCellRenderer {\r\n @ViewChild(MatMenuTrigger) contextMenu!: MatMenuTrigger;\r\n\r\n params!: ICellRendererParams;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n displayValue: string = '';\r\n copyIsDisabled: boolean = true;\r\n pasteIsDisabled: boolean = true;\r\n \r\n // private eGui: is an empty element to satisfy the getGui method. \r\n private eGui!: HTMLDivElement;\r\n\r\n constructor(\r\n private dataGridClipboard: TruDataGridClipboard,\r\n private util: TruUtil) { }\r\n\r\n onRightClick = (event: MouseEvent) => {\r\n event.preventDefault();\r\n this.copyIsDisabled = this.params.api.getSelectedRows().length ? false : true;\r\n this.pasteIsDisabled = this.dataGridClipboard.getCopiedRows().length && this.params.api.getSelectedRows().length ? false : true;\r\n this.contextMenuPosition.x = event.pageX + 'px';\r\n this.contextMenuPosition.y = (event.pageY) + 'px';\r\n this.contextMenu.menu?.focusFirstItem('mouse');\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n onMouseDown = (event: MouseEvent) => {\r\n\r\n }\r\n\r\n onMouseUp = (event: MouseEvent) => {\r\n\r\n }\r\n\r\n onCopy = (event: MouseEvent) => {\r\n let selectedRows = this.params.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n let copiedRowData = selectedRows.map((row: any) => row.$entity);\r\n this.dataGridClipboard.copiedRows('', copiedRowData);\r\n }\r\n }\r\n\r\n onPaste = (event: MouseEvent) => {\r\n let copiedRowData = this.dataGridClipboard.getCopiedRows();\r\n copiedRowData.forEach((row: TruEntityBase) => {\r\n let properties = row.entityType.getPropertyNames();\r\n properties\r\n .filter((propertyName: string) => {\r\n return propertyName !== 'Ref' &&\r\n propertyName !== row.entityType.name + 'Ref' &&\r\n !this.util.isLowerCase(propertyName.charAt(0));\r\n }).forEach((propertyName: string) => {\r\n console.log(propertyName);\r\n });\r\n });\r\n }\r\n\r\n agInit(params: any) {\r\n this.params = params;\r\n if (params.value < 0)\r\n this.displayValue = 'NEW';\r\n else\r\n this.displayValue = params.value;\r\n\r\n params.eGridCell.addEventListener('contextmenu', this.onRightClick);\r\n params.eGridCell.addEventListener('mousedown', this.onMouseDown);\r\n params.eGridCell.addEventListener('mousedown', this.onMouseUp);\r\n }\r\n\r\n getGui() {\r\n return this.eGui\r\n }\r\n\r\n refresh() {\r\n return false;\r\n }\r\n\r\n destroy() {\r\n this.params.eGridCell.removeEventListener('contextmenu', this.onRightClick);\r\n this.params.eGridCell.removeEventListener('mousedown', this.onMouseDown);\r\n this.params.eGridCell.removeEventListener('mousedown', this.onMouseUp);\r\n }\r\n}\r\n","export enum TruDataGridTypes {\r\n Search,\r\n Detail,\r\n DetailManyToMany\r\n}\r\n","import { CommonModule, NgClass, NgIf } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IHeaderAngularComp } from 'ag-grid-angular';\r\nimport { CellFocusedEvent, Column, IHeaderParams } from 'ag-grid-community';\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [NgIf, NgClass, CommonModule, MatIconModule],\r\n template: `\r\n <div #header class=\"ag-cell-label-container\" role=\"presentation\">\r\n <div ref=\"eLabel\" class=\"ag-header-cell-label\" role=\"presentation\" (mouseenter)=\"onHeaderMouseEnter($event)\" (mouseleave)=\"onHeaderMouseLeave($event)\">\r\n <div class=\"ag-header-control-container\">\r\n <div>\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</span>\r\n </div>\r\n <div class=\"ag-header-control-filter-container\" *ngIf=\"showFilterMenu\">\r\n <span ref=\"eFilterButton\" class=\"ag-filter-icon\" (click)=\"onFilterMenuButtonClicked($event)\">\r\n <mat-icon class=\"ag-header-more\" [svgIcon]=\"'more-icon'\" *ngIf=\"!filterIsActive && !ascSort && !descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-asc\" [svgIcon]=\"'asc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"ascSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-desc\" [svgIcon]=\"'desc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-filter\" [svgIcon]=\"'filter-icon'\" *ngIf=\"filterIsActive\"></mat-icon>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>`,\r\n styles: [\r\n `\r\n .ag-header-control-container {\r\n display: flex;\r\n }\r\n .ag-header-control-filter-container {\r\n position: absolute;\r\n top: 1px;\r\n right: 3px;\r\n width: 20px;\r\n height: 20px;\r\n display: table;\r\n }\r\n .ag-header-cell-text {\r\n position: relative;\r\n pointer-events: none;\r\n vertical-align: middle;\r\n vertical-align: -webkit-baseline-middle;\r\n }\r\n .ag-sort-icon {\r\n height: 100%;\r\n width: 100%;\r\n margin-left: 0 !important;\r\n }\r\n .tru-data-grid-select-all-icon {\r\n width: 16px;\r\n font-size: 28px;\r\n color: #ddd;\r\n float: right;\r\n position: absolute;\r\n top: -1px;\r\n right: 4px;\r\n }\r\n .ag-sort-icon mat-icon {\r\n height: 16px;\r\n width: 16px;\r\n padding-top: 4px;\r\n }\r\n .ag-column-focus .ag-header-cell-text {\r\n color: #3f51b5;\r\n font-weight: bold;\r\n }\r\n .ag-column-focus {\r\n background-color: #ddd;\r\n border-bottom: 1px solid #3f51b5;\r\n }\r\n ::ng-deep .tru-data-grid-select-all-icon path {\r\n fill: lightgray;\r\n position: relative;\r\n z-index: 100;\r\n pointer-events: all;\r\n }\r\n ::ng-deep .ag-header-control-filter-container mat-icon {\r\n height: 20px !important;\r\n width: 20px !important;\r\n padding-top: 2px !important;\r\n }\r\n ::ng-deep .ag-filter-icon {\r\n\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-asc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-desc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon {\r\n height: 18px !important;\r\n width: 18px !important;\r\n color: #ddd;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon svg {\r\n fill: #949494 !important;\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridHeader implements IHeaderAngularComp {\r\n @ViewChild('header', { static: false }) headerRef!: ElementRef;\r\n\r\n public params!: IHeaderParams;\r\n public ascSort: boolean = false;\r\n public descSort: boolean = false;\r\n public isHovering: boolean = false;\r\n public columnMenuIsOpen: boolean = false;\r\n public showFilterMenu: boolean = false;\r\n public filterIsActive: boolean = false;\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n this.params.api.addEventListener('cellFocused', this.onCellFocused.bind(this));\r\n }\r\n\r\n getHeaderParams(): IHeaderParams {\r\n return this.params;\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSelectAllIconClicked() {\r\n this.params.api.selectAll();\r\n }\r\n\r\n onCellFocused(event: CellFocusedEvent) {\r\n var column = event.column as Column;\r\n if (column?.getColDef().pinned) {\r\n this.headerRef.nativeElement.classList.add('ag-column-focus');\r\n } else {\r\n if (this.params.column.getColId() === column.getColId()) {\r\n this.headerRef.nativeElement.classList.add('ag-column-focus');\r\n } else {\r\n this.headerRef.nativeElement.classList.remove('ag-column-focus');\r\n }\r\n }\r\n }\r\n\r\n onFilterMenuButtonClicked(event: MouseEvent) {\r\n if (!this.columnMenuIsOpen) {\r\n this.params.column.getColDef().headerComponentParams = this.params;\r\n this.params.showColumnMenu(event.target as HTMLElement, () => {\r\n this.columnMenuIsOpen = false;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n this.ascSort = this.params.column.isSortAscending();\r\n this.descSort = this.params.column.isSortDescending();\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n });\r\n this.columnMenuIsOpen = true;\r\n } else {\r\n this.params.api.hidePopupMenu();\r\n this.columnMenuIsOpen = false;\r\n }\r\n }\r\n\r\n onHeaderMouseEnter(event: MouseEvent) {\r\n this.isHovering = true;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n onHeaderMouseLeave(event: MouseEvent) {\r\n this.isHovering = false;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.params.api.removeEventListener('cellFocused', this.onCellFocused.bind(this));\r\n }\r\n}\r\n","import { CommonModule, NgClass, NgIf } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDivider, MatList, MatListItem, MatListOption, MatSelectionList, MatSelectionListChange } from '@angular/material/list';\r\nimport { MatFormField, MatOption, MatSelect } from '@angular/material/select';\r\nimport { IFilterAngularComp } from 'ag-grid-angular';\r\nimport { IAfterGuiAttachedParams, type IDoesFilterPassParams, type IFilterParams } from 'ag-grid-community';\r\n\r\ninterface Sorts {\r\n value: string | null,\r\n label: string,\r\n selected: boolean,\r\n display: () => boolean,\r\n icon: string\r\n}\r\n\r\ninterface HeaderValues {\r\n sort: string,\r\n filterOpertator: string\r\n filterValue: string\r\n}\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n NgIf,\r\n NgClass,\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatList,\r\n MatListItem,\r\n MatSelectionList,\r\n MatListOption,\r\n MatDivider,\r\n MatFormField,\r\n MatSelect,\r\n MatOption,\r\n MatInputModule,\r\n ReactiveFormsModule\r\n ],\r\n template: `\r\n <div class=\"tru-data-grid-header-filter-container\">\r\n <mat-selection-list #sort [multiple]=\"false\" (selectionChange)=\"onSortSelection($event)\">\r\n @for (typeOfSort of typesOfSort; track typeOfSort.value) {\r\n <mat-list-option [value]='typeOfSort' *ngIf=\"typeOfSort.display()\">\r\n <mat-icon [svgIcon]=\"typeOfSort.icon\"></mat-icon>\r\n <span matListItem>{{typeOfSort.label}}</span>\r\n </mat-list-option>\r\n }\r\n </mat-selection-list>\r\n <mat-divider></mat-divider>\r\n <mat-label>Text Filters:</mat-label>\r\n\t <mat-form-field>\r\n \t<mat-icon matPrefix\r\n\t\t\t [svgIcon]=\"'search-icon'\"\r\n class=\"tru-data-grid-header-filter-search-icon\">\r\n\t\t\t</mat-icon>\r\n\t\t <input #filterInput\r\n\t\t\t\t\t matInput\r\n\t\t\t\t\t [formControl]=\"filterInputControl\"\r\n [(ngModel)]=\"filterText\"\r\n (ngModelChange)=\"onFilterInputChanged()\"\r\n\t\t\t\t\t type=\"text\" />\r\n\t </mat-form-field>\r\n </div>`,\r\n styles: [\r\n `\r\n .tru-data-grid-header-filter-container {\r\n min-width: 200px !important;\r\n }\r\n\r\n .tru-data-grid-header-filter-container mdc-list {\r\n padding-bottom: 0px !important;\r\n padding-bottom: 10px !important;\r\n }\r\n\r\n ::ng-deep .tru-data-grid-header-filter-container mat-list-option {\r\n padding-left: 10px !important;\r\n }\r\n\r\n ::ng-deep .tru-data-grid-header-filter-container mat-icon {\r\n height: 18px !important;\r\n width: 18px !important;\r\n padding-right: 5px;\r\n padding-top: 4px;\r\n }\r\n\r\n ::ng-deep .tru-data-grid-header-filter-container .mdc-list-item__primary-text span {\r\n font-size: 12px !important;\r\n vertical-align: text-bottom;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mdc-list-item.mdc-list-item--with-one-line .mdc-list-item__end {\r\n display: none !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container mat-divider {\r\n padding-top: 5px;\r\n padding-bottom: 5px;\r\n margin-left: 10px;\r\n margin-right: 10px;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container mat-label {\r\n margin-left: 10px;\r\n font-weight: bold;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field {\r\n display: block !important;\r\n margin: 0 10px 10px 10px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-infix {\r\n padding: 0px !important;\r\n min-height: unset !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__leading {\r\n border-color: rgb(189, 54, 47);\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__notch {\r\n border-color: rgb(189, 54, 47);\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-flex.invalid .mdc-notched-outline__trailing {\r\n border-color: rgb(189, 54, 47);\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-bottom-align::before {\r\n content: unset !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-icon-prefix > .mat-icon {\r\n padding: 0 !important;\r\n padding-bottom: 5px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-icon-suffix > .mat-icon {\r\n padding: 0 !important;\r\n padding-bottom: 5px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-container .mat-mdc-form-field-infix {\r\n padding: 0px !important;\r\n min-height: unset !important;\r\n padding-bottom: 5px !important;\r\n }\r\n ::ng-deep .tru-data-grid-header-filter-search-icon svg {\r\n fill: #343434;\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridHeaderFilter implements IFilterAngularComp {\r\n filterParams!: IFilterParams;\r\n guiFilterParams!: IAfterGuiAttachedParams | undefined;\r\n gui!: HTMLDivElement;\r\n filterText: string = '';\r\n typesOfSort: Sorts[] = [];\r\n values: string[] = [];\r\n\r\n filterInputControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n\r\n constructor() {}\r\n\r\n agInit(params: IFilterParams): void {\r\n this.filterParams = params;\r\n this.typesOfSort = [\r\n {\r\n value: 'asc',\r\n label: 'Sort A to Z',\r\n selected: false,\r\n display: () => { return !this.filterParams.column.isSortAscending() },\r\n icon: 'asc-sort-menu-icon'\r\n },\r\n {\r\n value: 'desc',\r\n label: 'Sort Z to A',\r\n selected: false,\r\n display: () => { return !this.filterParams.column.isSortDescending() }, \r\n icon: 'desc-sort-menu-icon'\r\n },\r\n {\r\n value: null,\r\n label: 'Clear Sort',\r\n selected: false,\r\n display: () => { return this.filterParams.column.isSortAscending() || this.filterParams.column.isSortDescending() },\r\n icon: 'no-sort-icon'\r\n }\r\n ];\r\n }\r\n\r\n isFilterActive(): boolean {\r\n return this.filterText != null && this.filterText !== '';\r\n }\r\n\r\n doesFilterPass(params: IDoesFilterPassParams): boolean {\r\n const { node } = params;\r\n const value = this.filterParams.getValue(node).toString().toLowerCase();\r\n\r\n return this.filterText\r\n .toLowerCase()\r\n .split(' ')\r\n .every((filterWord) => value.indexOf(filterWord) >= 0);\r\n }\r\n\r\n getModel() {\r\n if (!this.isFilterActive()) {\r\n return null;\r\n }\r\n\r\n return { value: this.filterText };\r\n }\r\n\r\n setModel(model: any): void {\r\n this.filterText = model == null ? null : model.value;\r\n }\r\n\r\n getGui(): HTMLElement {\r\n return this.gui;\r\n }\r\n\r\n afterGuiAttached(params?: IAfterGuiAttachedParams) {\r\n this.guiFilterParams = params;\r\n }\r\n\r\n onFilterInputChanged() {\r\n this.filterParams.filterChangedCallback();\r\n }\r\n\r\n onSortSelection = (changeEvent: MatSelectionListChange) => {\r\n this.filterParams.colDef.headerComponentParams.setSort(changeEvent.options[0].value.value, false);\r\n this.guiFilterParams!.hidePopup!()\r\n }\r\n}\r\n","import { CommonModule, NgClass, NgIf } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { IHeaderAngularComp } from 'ag-grid-angular';\r\nimport { CellFocusedEvent, Column, IHeaderParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [NgIf, NgClass, CommonModule, MatIconModule],\r\n template: `\r\n <div #header class=\"ag-cell-label-container\" role=\"presentation\">\r\n <div ref=\"eLabel\" class=\"ag-header-cell-label\" role=\"presentation\" (mouseenter)=\"onHeaderMouseEnter($event)\" (mouseleave)=\"onHeaderMouseLeave($event)\">\r\n <div>\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</span>\r\n </div>\r\n <div class=\"ag-header-control-filter-container\" *ngIf=\"showFilterMenu\">\r\n <span ref=\"eFilterButton\" class=\"ag-filter-icon\" (click)=\"onFilterMenuButtonClicked($event)\">\r\n <mat-icon class=\"ag-header-more\" [svgIcon]=\"'more-icon'\" *ngIf=\"!filterIsActive && !ascSort && !descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-asc\" [svgIcon]=\"'asc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"ascSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-desc\" [svgIcon]=\"'desc-sort-icon'\" [ngClass]=\"{'filtering': filterIsActive}\" *ngIf=\"descSort\"></mat-icon>\r\n <mat-icon class=\"ag-header-filter\" [svgIcon]=\"'filter-icon'\" *ngIf=\"filterIsActive\"></mat-icon>\r\n </span>\r\n </div>\r\n </div>\r\n <mat-icon [svgIcon]=\"'select-all-icon'\"\r\n (click)=\"onSelectAllIconClicked()\"\r\n class=\"tru-data-grid-select-all-icon\"\r\n title=\"Select All (Ctrl+A)\"></mat-icon>\r\n </div>`,\r\n styles: [\r\n `\r\n .ag-header-control-container {\r\n display: flex;\r\n }\r\n .ag-header-control-filter-container {\r\n position: absolute;\r\n top: 1px;\r\n left: 5px;\r\n width: 20px;\r\n height: 20px;\r\n display: table;\r\n }\r\n .ag-header-cell-text {\r\n position: relative;\r\n pointer-events: none;\r\n vertical-align: middle;\r\n vertical-align: -webkit-baseline-middle;\r\n }\r\n .ag-sort-icon {\r\n height: 100%;\r\n width: 100%;\r\n margin-left: 0 !important;\r\n }\r\n .tru-data-grid-select-all-icon {\r\n width: 16px;\r\n font-size: 28px;\r\n color: #ddd;\r\n float: right;\r\n position: absolute;\r\n top: -1px;\r\n right: 4px;\r\n }\r\n .ag-sort-icon mat-icon {\r\n height: 16px;\r\n width: 16px;\r\n padding-top: 4px;\r\n }\r\n .ag-column-focus .ag-header-cell-text {\r\n color: #3f51b5;\r\n font-weight: bold;\r\n }\r\n .ag-column-focus {\r\n background-color: #ddd;\r\n border-bottom: 1px solid #3f51b5;\r\n }\r\n ::ng-deep .tru-data-grid-select-all-icon path {\r\n fill: lightgray;\r\n position: relative;\r\n z-index: 100;\r\n pointer-events: all;\r\n }\r\n ::ng-deep .ag-header-control-filter-container mat-icon {\r\n height: 20px !important;\r\n width: 20px !important;\r\n padding-top: 2px !important;\r\n }\r\n ::ng-deep .ag-filter-icon {\r\n\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-asc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon .ag-header-desc.filtering {\r\n position: relative;\r\n right: -7px;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon {\r\n height: 18px !important;\r\n width: 18px !important;\r\n color: #ddd;\r\n }\r\n ::ng-deep .ag-filter-icon mat-icon svg {\r\n fill: #949494 !important;\r\n }\r\n .tru-data-grid-select-all-icon {\r\n width: 16px;\r\n font-size: 28px;\r\n color: #ddd;\r\n float: right;\r\n position: absolute;\r\n top: -1px;\r\n right: 4px;\r\n }\r\n ::ng-deep .tru-data-grid-select-all-icon path {\r\n fill: lightgray;\r\n position: relative;\r\n z-index: 100;\r\n pointer-events: all;\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridRefHeader implements IHeaderAngularComp { \r\n @ViewChild('header', { static: false }) headerRef!: ElementRef;\r\n\r\n public params!: IHeaderParams;\r\n public ascSort: boolean = false;\r\n public descSort: boolean = false;\r\n public isHovering: boolean = false;\r\n public columnMenuIsOpen: boolean = false;\r\n public showFilterMenu: boolean = false;\r\n public filterIsActive: boolean = false;\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n }\r\n\r\n getHeaderParams(): IHeaderParams {\r\n return this.params;\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSelectAllIconClicked() {\r\n this.params.api.selectAll();\r\n }\r\n\r\n onFilterMenuButtonClicked(event: MouseEvent) {\r\n if (!this.columnMenuIsOpen) {\r\n this.params.column.getColDef().headerComponentParams = this.params;\r\n this.params.showColumnMenu(event.target as HTMLElement, () => {\r\n this.columnMenuIsOpen = false;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n this.ascSort = this.params.column.isSortAscending();\r\n this.descSort = this.params.column.isSortDescending();\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n });\r\n this.columnMenuIsOpen = true;\r\n } else {\r\n this.params.api.hidePopupMenu();\r\n this.columnMenuIsOpen = false;\r\n }\r\n }\r\n\r\n onHeaderMouseEnter(event: MouseEvent) {\r\n this.isHovering = true;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n onHeaderMouseLeave(event: MouseEvent) {\r\n this.isHovering = false;\r\n this.showFilterMenu = this.isHovering && this.params.api.getDisplayedRowCount() > 0 || this.columnMenuIsOpen || this.params.column.isFilterActive() || this.ascSort || this.descSort;\r\n this.filterIsActive = this.params.column.isFilterActive();\r\n }\r\n\r\n ngOnDestroy() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Column, GridApi } from 'ag-grid-community';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruDataGridUtil {\r\n\r\n private getColumnIndexByColId = (api: GridApi, colId: string): number => {\r\n return api.getAllDisplayedColumns()?.findIndex(col => col.getColId() === colId);\r\n }\r\n\r\n focusPreviousCell = (api: GridApi, rowIndex: number, colId: string) => {\r\n let currentColumnIndex = this.getColumnIndexByColId(api, colId);\r\n let column: Column;\r\n if (currentColumnIndex === 0) {\r\n if (rowIndex === 0) {\r\n column = api.getAllDisplayedColumns()[api.getAllDisplayedColumns().length - 1];\r\n } else {\r\n rowIndex--;\r\n column = api.getAllDisplayedColumns()[0];\r\n }\r\n } else {\r\n column = api.getAllDisplayedColumns()[currentColumnIndex! - 1];\r\n }\r\n api.stopEditing();\r\n api.setFocusedCell(rowIndex, column);\r\n }\r\n\r\n focusNextCell = (api: GridApi, rowIndex: number, colId: string) => {\r\n let currentColumnIndex = this.getColumnIndexByColId(api, colId);\r\n let column: Column;\r\n if (currentColumnIndex + 1 >= api.getAllDisplayedColumns().length) {\r\n if (rowIndex + 1 === api.getDisplayedRowCount()) {\r\n column = api.getAllDisplayedColumns()[api.getAllDisplayedColumns().length - 1];\r\n } else {\r\n rowIndex++;\r\n column = api.getAllDisplayedColumns()[0];\r\n }\r\n } else {\r\n column = api.getAllDisplayedColumns()[currentColumnIndex! + 1];\r\n }\r\n api.stopEditing(); \r\n api.setFocusedCell(rowIndex, column);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruGridValidationDialogConfig } from './tru-grid-validation-dialog-config';\r\n\r\n@Component({\r\n selector: 'tru-grid-validation-dialog',\r\n templateUrl: './tru-grid-validation-dialog.html',\r\n styleUrls: ['./tru-grid-validation-dialog.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruGridValidationDialog implements OnInit, OnDestroy {\r\n @Input() config!: TruGridValidationDialogConfig;\r\n @Output() close = new EventEmitter();\r\n\r\n errorMsg: string = '';\r\n\r\n private rowElement!: HTMLElement;\r\n private cellElement!: HTMLElement;\r\n private listeners: Array<() => void> = [];\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private util: TruUtil) { }\r\n\r\n onAcceptAll = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n\r\n for (const key in this.config.mergeData?.getAll()) {\r\n entity[key] = this.config.mergeData?.get(key)!.value;\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n };\r\n\r\n if (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.Merge_Data_Set.clearAll();\r\n entity.entityAspect.validateEntity();\r\n this.close.emit();\r\n }\r\n\r\n onAccept = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n let propertyName = this.config.propertyConfig.propertyName as string;\r\n\r\n entity[propertyName] = this.config.mergeData?.get(propertyName)!.value;\r\n this.config.mergeData?.clear(propertyName);\r\n\r\n if (originalValues.hasOwnProperty(propertyName) && (Object.keys(originalValues).length === 0 && originalValues.constructor === Object))\r\n delete originalValues[propertyName];\r\n\r\n if (this.config.mergeData?.isEmpty())\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.entityAspect.validateEntity();\r\n this.close.emit();\r\n }\r\n\r\n onDecline = () => {\r\n let entity = this.config.entity as any;\r\n this.config.mergeData?.clearAll();\r\n entity.entityAspect.validateEntity();\r\n this.close.emit();\r\n }\r\n\r\n ngOnInit() {\r\n this.errorMsg = this.config.errorMsg as string;\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n this.rowElement.style.zIndex = '10000000000';\r\n this.cellElement.classList.add('show');\r\n this.errorMsg = this.config.errorMsg as string; \r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n if (this.rowElement)\r\n this.rowElement.style.zIndex = 'auto';\r\n if (this.cellElement)\r\n this.cellElement.classList.remove('show');\r\n this.listeners.forEach(l => l());\r\n }\r\n}\r\n\r\n","<i class=\"icon-warning-sign icon-white\"></i>{{config.errorMsg}}\r\n<div *ngIf=\"config.mergeData\">\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAcceptAll()\">Accept All</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAccept()\">Accept</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onDecline()\">Decline</button>\r\n</div>\r\n\r\n","import { TruEditControlConfigBase } from \"../../base-classes/tru-edit-control-config-base\";\r\nimport { TruEntityBase } from \"../../base-classes/tru-entity-base\";\r\nimport { TruListControlConfigBase } from \"../../base-classes/tru-list-control-config-base\";\r\nimport { TruMergeDataSet } from \"../../classes/tru-merge-data-set\";\r\n\r\n\r\nexport class TruGridValidationDialogConfig {\r\n private _entity: TruEntityBase;\r\n private _propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>;\r\n private _isSubProperty: boolean;\r\n private _ignore: boolean;\r\n private _propertyName: string = '';\r\n private _errorMsg: string = '';\r\n private _mergeData: TruMergeDataSet | null = null;\r\n \r\n public get entity(): TruEntityBase {\r\n return this._entity;\r\n }\r\n\r\n public get propertyConfig(): TruEditControlConfigBase<any> | TruListControlConfigBase<any> {\r\n return this._propertyConfig;\r\n }\r\n\r\n public get isSubProperty(): boolean {\r\n return this._isSubProperty;\r\n }\r\n\r\n public get ignore(): boolean {\r\n return this._ignore;\r\n }\r\n\r\n public get propertyName(): string | null {\r\n return this._propertyName;\r\n }\r\n\r\n public set propertyName(value: string) {\r\n this._propertyName = value;\r\n }\r\n\r\n public get errorMsg(): string | null {\r\n return this._errorMsg;\r\n }\r\n\r\n public set errorMsg(value: string) {\r\n this._errorMsg = value;\r\n }\r\n\r\n public get mergeData(): TruMergeDataSet | null {\r\n return this._mergeData;\r\n }\r\n\r\n public set mergeData(value: TruMergeDataSet | null) {\r\n this._mergeData = value;\r\n }\r\n\r\n constructor(\r\n entity: TruEntityBase,\r\n propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>,\r\n isSubProperty: boolean = false,\r\n ignore: boolean = false) {\r\n this._entity = entity;\r\n this._propertyConfig = propertyConfig;\r\n this._isSubProperty = isSubProperty;\r\n this._ignore = ignore;\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { ILoadingOverlayAngularComp } from \"ag-grid-angular\";\r\nimport { ILoadingOverlayParams } from \"ag-grid-community\";\r\nimport { MaterialModule } from \"../../../../material.module\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'tru-data-grid-loading-overlay',\r\n imports: [MaterialModule],\r\n template: `\r\n <div class=\"ag-overlay-loading-center\" style=\"height:50px;width:275px;\">\r\n <div style=\"display:inline-block;margin-right:15px;vertical-align:middle;line-height:38px;\">\r\n <mat-spinner [diameter]=\"30\"></mat-spinner>\r\n </div>\r\n <div style=\"display:inline-block;vertical-align:middle;\">\r\n <span style=\"font-size:12px;font-weight:bold;vertical-align:middle;line-height:38px;\">{{ params.loadingMessage }}</span> \r\n </div>\r\n </div>\r\n `\r\n})\r\nexport class TruDataGridLoadingOverlay implements ILoadingOverlayAngularComp {\r\n public params!: ILoadingOverlayParams & { loadingMessage: string };\r\n\r\n agInit(params: ILoadingOverlayParams & { loadingMessage: string }): void {\r\n this.params = params;\r\n }\r\n}\r\n","import { Component } from \"@angular/core\";\r\nimport { INoRowsOverlayAngularComp } from \"ag-grid-angular\";\r\nimport { INoRowsOverlayParams } from \"ag-grid-community\";\r\nimport { MaterialModule } from \"../../../../material.module\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'tru-data-grid-no-rows-overlay',\r\n imports: [MaterialModule],\r\n template: `\r\n <div class=\"ag-overlay-loading-center\" style=\"height:50px;width:275px;\">\r\n <span style=\"font-size:12px;font-weight:bold;line-height:38px;\">{{ params.noRowsMessageFunc() }}</span>\r\n </div>`\r\n})\r\nexport class TruDataGridNoRowsOverlay implements INoRowsOverlayAngularComp {\r\n public params!: INoRowsOverlayParams & { noRowsMessageFunc: () => string };\r\n\r\n agInit(params: INoRowsOverlayParams & { noRowsMessageFunc: () => string }): void {\r\n this.params = params;\r\n }\r\n}\r\n","export class TruMergeData {\r\n private _value: any;\r\n private _modifiedBy: string;\r\n private _hid: string;\r\n\r\n\r\n public get value(): string {\r\n return this._value;\r\n }\r\n\r\n public get modifiedBy(): string {\r\n return this._modifiedBy;\r\n }\r\n\r\n public get hid(): string {\r\n return this._hid;\r\n }\r\n\r\n constructor(value: any, modifiedBy: string, hid: string) {\r\n this._value = value;\r\n this._modifiedBy = modifiedBy;\r\n this._hid = hid;\r\n }\r\n}\r\n","import moment from \"moment\";\r\nimport { Subject } from \"rxjs\";\r\nimport { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\nimport { TruPropertyConfigBase } from \"../base-classes/tru-property-config-base\";\r\nimport { TruAppEnvironment } from \"../services/tru-app-environment\";\r\nimport { TruDataContext } from \"../services/tru-data-context\";\r\nimport { TruModelPropertyLookup } from \"../services/tru-model-property-lookup\";\r\nimport { TruModelTypeLookup } from \"../services/tru-model-type-lookup\";\r\nimport { TruDataChange } from \"./tru-data-change\";\r\nimport { TruMergeData } from \"./tru-merge-data\";\r\n\r\n\r\nexport class TruDataChangeParser {\r\n private appEnvionment: TruAppEnvironment;\r\n private dataContext: TruDataContext;\r\n private entity: any;\r\n private tableName: string;\r\n private addEntity: (newEntity: any, dataNotification: boolean) => void;\r\n private getLatestResults: () => any;\r\n private getLatestQuery: any;\r\n private contextFilters: [];\r\n private expandPaths: Array<string>;\r\n private isLoaded: () => boolean;\r\n private types: TruModelTypeLookup;\r\n private propertyTypes: Map<string, TruPropertyConfigBase>;\r\n\r\n private globalDataContext: TruDataContext | null;\r\n private waitingEntities: Array<TruEntityBase> = [];\r\n\r\n private dataChanged$: Subject<TruDataChange> = new Subject<TruDataChange>();\r\n\r\n onDataChanged() {\r\n return this.dataChanged$;\r\n }\r\n\r\n dataChanged(change: TruDataChange) {\r\n this.dataChanged$.next(change);\r\n }\r\n\r\n constructor(\r\n connection: any,\r\n appEnviroment: TruAppEnvironment,\r\n dataContext: TruDataContext,\r\n globalDataContext: TruDataContext | null,\r\n entity: typeof TruEntityBase,\r\n tableName: string,\r\n addEntity: any,\r\n getLatestResults: any,\r\n getLatestQuery: any,\r\n contextFilters: [],\r\n expandPaths: Array<string>,\r\n isLoaded: () => boolean,\r\n modelTypeLookup: TruModelTypeLookup,\r\n modelPropertyLookup: TruModelPropertyLookup\r\n ) {\r\n this.appEnvionment = appEnviroment;\r\n this.dataContext = dataContext;\r\n this.globalDataContext = globalDataContext;\r\n this.entity = entity;\r\n this.tableName = tableName;\r\n this.addEntity = addEntity;\r\n this.getLatestResults = getLatestResults;\r\n this.getLatestQuery = getLatestQuery;\r\n this.contextFilters = contextFilters;\r\n this.expandPaths = expandPaths;\r\n this.isLoaded = isLoaded;\r\n this.types = modelTypeLookup; \r\n this.propertyTypes = modelPropertyLookup.lookup;\r\n\r\n connection.on(\"change\", (payload: any) => {\r\n this.update(payload);\r\n });\r\n }\r\n\r\n private findEntityInCache = (change: any) => {\r\n var entityAccessor = this.dataContext.entityAccess();\r\n return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);\r\n }\r\n\r\n private findEntityInGlobalCache = (change: any) => {\r\n var entityAccessor = this.globalDataContext!.entityAccess();\r\n return entityAccessor.searchByRefCacheOnly(this.types.getType(change.tableName), parseInt(change.tableRef, 10), true);\r\n }\r\n\r\n private checkIfDateTime = (newValue: any, currentValue: any, typeName: string | undefined) => {\r\n if (typeName === 'date-time' || typeName === 'date') {\r\n if (moment(newValue, \"YYYY-MM-DD HH:mm:ss.sssssss\", true).isValid())\r\n return moment(moment.utc(newValue).toDate()).format('MM/DD/YYYY hh:mm A');\r\n }\r\n return newValue\r\n }\r\n\r\n private hasPropertyAlreadyBeenModified = (propertyName: string, entity: any) => {\r\n return entity.entityAspect.originalValues.hasOwnProperty(propertyName);\r\n }\r\n\r\n private applyPropertyChanges = (change: any, entity: any) => {\r\n let stateBeforePropertyChange = entity.entityAspect.entityState;\r\n let originalValues = entity.entityAspect.originalValues;\r\n\r\n entity['Data_Notification'] = true;\r\n\r\n Object.keys(change.properties).forEach((key) => {\r\n let propertyName = change.tableName + '.' + key\r\n let entityType = this.propertyTypes.get(propertyName);\r\n if (!entityType) {\r\n entityType = new TruPropertyConfigBase();\r\n entityType.typeName = 'text-bounded';\r\n }\r\n let propertyModified = this.hasPropertyAlreadyBeenModified(key, entity)\r\n if (key === 'Updated' || key === 'UpdatedRef') {\r\n entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n } else if (entity[key] !== this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName)) {\r\n if (!propertyModified) {\r\n entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n delete originalValues[key];\r\n } else {\r\n let value = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n let modifiedBy = change.modifiedBy;\r\n let hid = change.properties[key + 'HID'];\r\n let mergeData = new TruMergeData(value, modifiedBy, hid);\r\n entity.Merge_Data_Set.set(key, mergeData);\r\n entity.entityAspect.validateProperty(key);\r\n }\r\n\r\n if (typeof (originalValues[key]) !== 'undefined')\r\n originalValues[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);\r\n } else {\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n }\r\n });\r\n\r\n entity['rowver'] = change.rowver;\r\n delete originalValues['rowver'];\r\n\r\n if (stateBeforePropertyChange.name !== \"Modified\" || (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)) {\r\n if (!entity.entityAspect.isBeingSaved) {\r\n entity.entityAspect.setUnchanged();\r\n } else {\r\n this.waitingEntities.push(entity);\r\n }\r\n }\r\n\r\n delete entity['Data_Notification'];\r\n }\r\n\r\n private setWaitingEntitiesToUnchanged = () => {\r\n this.waitingEntities.forEach((entity: any) => {\r\n if (entity && entity.entityAspect)\r\n entity.entityAspect.setUnchanged();\r\n });\r\n }\r\n\r\n private entityFoundByQuery = (change: any) => {\r\n var entityAccessor = this.dataContext.entityAccess();\r\n var entities = entityAccessor.searchByRefArrayCacheOnly(this.entity, this.getLatestQuery(), [change.tableRef]);\r\n\r\n if (!entities?.length) {\r\n var entityAccessor = this.globalDataContext!.entityAccess();\r\n entities = entityAccessor.searchByRefArrayCacheOnly(this.entity, this.getLatestQuery(), [change.tableRef]);\r\n }\r\n\r\n return entities === null ? 0 : entities.length;\r\n }\r\n\r\n private getEntityFromServer = (change: any) => {\r\n var entityAccessor = this.dataContext.entityAccess();\r\n var entitiy = entityAccessor.searchByRefWithQuery(this.entity, this.getLatestQuery(), change.tableRef);\r\n return entitiy;\r\n }\r\n\r\n private getEntityFromResults = (results: any, change: any) => {\r\n return results.filter((e: any) => { return e.Ref === change.tableRef });\r\n }\r\n\r\n private isSaving = async () => {\r\n return new Promise<void>((resolve, reject) => {\r\n var interval = setInterval(() => {\r\n if (!this.appEnvionment.isSaving) {\r\n clearInterval(interval);\r\n resolve();\r\n }\r\n }, 1000)\r\n })\r\n };\r\n\r\n private update = async (payload: any) => {\r\n await this.isSaving();\r\n\r\n var reloadResults = false;\r\n payload.changes.forEach(async (change: any) => {\r\n var foundEntities = [];\r\n var localEntity = this.findEntityInCache(change);\r\n var globalEntity = this.findEntityInGlobalCache(change);\r\n if (localEntity)\r\n foundEntities.push(localEntity);\r\n if (globalEntity)\r\n foundEntities.push(globalEntity);\r\n\r\n if (foundEntities.length) {\r\n foundEntities.forEach(async (entity: any) => {\r\n if (change.tableName === this.tableName) {\r\n\r\n if (change.changeOperation === 'U') {\r\n this.applyPropertyChanges(change, entity);\r\n\r\n var results = this.getLatestResults();\r\n if (this.entityFoundByQuery(change)) {\r\n var entityAlreadyInResults = this.getEntityFromResults(results, change);\r\n if (!entityAlreadyInResults.length && this.isLoaded()) {\r\n this.addEntity(entity, true);\r\n }\r\n reloadResults = true;\r\n } else {\r\n var entityToRemove = this.getEntityFromResults(results, change);\r\n if (entityToRemove.length) {\r\n results.splice(results.indexOf(entityToRemove[0]), 1);\r\n reloadResults = true;\r\n }\r\n }\r\n } else if (change.changeOperation === 'D') {\r\n var results = this.getLatestResults();\r\n var entityToDelete = this.getEntityFromResults(results, change);\r\n if (entityToDelete.length) {\r\n entityToDelete[0].entityAspect.setDetached();\r\n results.splice(results.indexOf(entityToDelete[0]), 1);\r\n reloadResults = true;\r\n }\r\n } else if (change.changeOperation === 'I') {\r\n var results = this.getLatestResults();\r\n var entityAlreadyInResults = this.getEntityFromResults(results, change);\r\n if (this.entityFoundByQuery(change) && !entityAlreadyInResults.length && this.isLoaded()) {\r\n if (!localEntity) {\r\n var newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n if (this.isLoaded()) {\r\n this.addEntity(newEntity, true);\r\n reloadResults = true;\r\n }\r\n } else if (entity === localEntity) {\r\n this.applyPropertyChanges(change, entity);\r\n this.addEntity(entity, true);\r\n reloadResults = true;\r\n }\r\n } else if (!this.entityFoundByQuery(change) && entityAlreadyInResults.length) {\r\n var entityToDelete = this.getEntityFromResults(results, change);\r\n if (entityToDelete.length) {\r\n results.splice(results.indexOf(entityAlreadyInResults[0]), 1);\r\n reloadResults = true;\r\n }\r\n } else if (!globalEntity) {\r\n var newEntity = this.globalDataContext!.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n reloadResults = true;\r\n } else {\r\n reloadResults = true;\r\n }\r\n }\r\n } else if (change.changeOperation !== 'D') {\r\n this.applyPropertyChanges(change, entity);\r\n }\r\n });\r\n } else if (change.changeOperation === 'U' && change.tableName === this.tableName) {\r\n await this.getEntityFromServer(change).subscribe((entity: any) => {\r\n if (entity) {\r\n this.applyPropertyChanges(change, entity);\r\n\r\n if (this.entityFoundByQuery(change) && this.isLoaded()) {\r\n this.addEntity(newEntity, true);\r\n reloadResults = true;\r\n }\r\n }\r\n });\r\n } else {\r\n if (change.changeOperation === 'I' && change.tableName === this.tableName) {\r\n var newEntity = this.globalDataContext!.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName1 = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName1] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);\r\n type ObjectKey2 = keyof typeof newEntity;\r\n const pkeyName2 = change.tableName + 'Ref' as ObjectKey2;\r\n newEntity[pkeyName2] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n if (this.entityFoundByQuery(change) && this.isLoaded()) {\r\n this.addEntity(newEntity, true);\r\n reloadResults = true;\r\n }\r\n } else if (change.changeOperation === 'I') {\r\n let entityType = this.types.getType(change.tableName);\r\n var newEntity = this.globalDataContext!.entityAccess().add(entityType as any, this.contextFilters);\r\n type ObjectKey = keyof typeof newEntity;\r\n const pkeyName1 = change.tableName + 'Ref' as ObjectKey;\r\n newEntity[pkeyName1] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n\r\n newEntity = this.dataContext.entityAccess().add(entityType as any, this.contextFilters);\r\n type ObjectKey2 = keyof typeof newEntity;\r\n const pkeyName2 = change.tableName + 'Ref' as ObjectKey2;\r\n newEntity[pkeyName2] = change.tableRef;\r\n this.applyPropertyChanges(change, newEntity);\r\n }\r\n }\r\n\r\n if (this.expandPaths && this.expandPaths.length && this.expandPaths.includes('o' + change.tableName))\r\n reloadResults = true;\r\n });\r\n\r\n let dataChangeArgs = new TruDataChange();\r\n dataChangeArgs.dataChanges = payload.changes;\r\n dataChangeArgs.reload = reloadResults;\r\n this.dataChanged(dataChangeArgs);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport * as signalR from \"@microsoft/signalr\"\r\nimport { Subject } from 'rxjs';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\r\nimport { TruDataChange } from '../classes/tru-data-change';\r\nimport { TruDataChangeParser } from '../classes/tru-data-change-parser';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruDataContext } from './tru-data-context';\r\nimport { TruModelPropertyLookup } from './tru-model-property-lookup';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruConnectionHub {\r\n private connection: any;\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private appEnvironment: TruAppEnvironment,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private modelPropertyLookup: TruModelPropertyLookup) {\r\n this.connection = new signalR.HubConnectionBuilder()\r\n .withUrl(`${this.appEnvironment.appUri}/notificationhub`, {\r\n skipNegotiation: true,\r\n transport: signalR.HttpTransportType.WebSockets,\r\n }).withAutomaticReconnect().build();\r\n }\r\n\r\n disconnect = () => {\r\n this.connection.stop();\r\n }\r\n\r\n connect = () => {\r\n try {\r\n Object.defineProperty(WebSocket, 'OPEN', { value: 1, });\r\n this.connection.start().then(() => {\r\n this.connection.invoke('getConnectionId')\r\n .then((connectionId: string) => {\r\n console.log(`SignalR connection success! connectionId: ${connectionId}`);\r\n })\r\n });\r\n } catch (error) {\r\n console.log(`SignalR connection error: ${error}`);\r\n }\r\n }\r\n\r\n start = () => {\r\n this.connection.on(\"error\", (value: string) => {\r\n this.disconnect();\r\n this.connect();\r\n });\r\n\r\n this.connect();\r\n }\r\n\r\n subscribe = (\r\n dataContext: TruDataContext,\r\n entity: typeof TruEntityBase,\r\n tableName: string,\r\n addEntity: (newEntity: any) => void,\r\n getLatestResults: () => any,\r\n getLatestQuery: () => any,\r\n contextFilters: [],\r\n expandPaths: Array<string>,\r\n isLoaded: () => boolean): Subject<TruDataChange> => {\r\n return new TruDataChangeParser(\r\n this.connection,\r\n this.appEnvironment,\r\n dataContext,\r\n this.appEnvironment.globalDataContext,\r\n entity,\r\n tableName,\r\n addEntity,\r\n getLatestResults,\r\n getLatestQuery,\r\n contextFilters,\r\n expandPaths,\r\n isLoaded,\r\n this.modelTypeLookup,\r\n this.modelPropertyLookup).onDataChanged();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruTabGroupEventNotifier {\r\n private active$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n onActiveStateChanged = () => {\r\n return this.active$;\r\n }\r\n\r\n get isActive() {\r\n return this.active$.getValue();\r\n }\r\n\r\n set isActive (value: boolean) {\r\n this.active$.next(value);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ApplicationRef, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, ElementRef, Input, OnChanges, OnInit, Optional, SimpleChanges, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, createComponent } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { AgGridAngular } from \"ag-grid-angular\";\r\nimport type { ColDef, Column, GridApi, GridReadyEvent, SuppressKeyboardEventParams } from \"ag-grid-community\";\r\nimport { AllCommunityModule, ClientSideRowModelModule, CustomFilterModule, ModuleRegistry, TextEditorModule, TextFilterModule, provideGlobalGridOptions } from 'ag-grid-community';\r\nimport { Subscription, forkJoin, fromEvent, skip } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { TruListControlConfigBase } from '../../base-classes/tru-list-control-config-base';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruDataChange } from '../../classes/tru-data-change';\r\nimport { TruMergeDataSet } from '../../classes/tru-merge-data-set';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruComponentLookup } from '../../services/tru-component-lookup';\r\nimport { TruConnectionHub } from '../../services/tru-connection-hub';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruWindowEventHandler } from '../desktop/services/tru-window-event-handler';\r\nimport { TruGridValidationDialog } from '../grid-validation-dialog/tru-grid-validation-dialog';\r\nimport { TruGridValidationDialogConfig } from '../grid-validation-dialog/tru-grid-validation-dialog-config';\r\nimport { TruTabGroupEventNotifier } from '../layout/tab/services/tru-tab-group-event-notifier';\r\nimport { TruToolbarButton } from '../toolbar/button/tru-toolbar-button';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { TruToolbarDropdown } from '../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarMenu } from '../toolbar/menu/tru-toolbar-menu';\r\nimport { TruToolbarSeparator } from '../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbar } from '../toolbar/tru-toolbar';\r\nimport { ITruDataGridConfig } from './classes/tru-data-grid-config';\r\nimport { TruDataGridTypes } from './enums/tru-data-grid-types';\r\nimport { TruDataGridLoadingOverlay } from './overlays/tru-data-grid-loading-overlay/tru-data-grid-loading-overlay';\r\nimport { TruDataGridNoRowsOverlay } from './overlays/tru-data-grid-no-rows-overlay/tru-data-grid-no-rows-overlay';\r\n\r\n// Mark all grids as using legacy themes\r\nprovideGlobalGridOptions({ theme: \"legacy\" });\r\nModuleRegistry.registerModules([\r\n TextFilterModule,\r\n TextEditorModule,\r\n CustomFilterModule,\r\n ClientSideRowModelModule,\r\n AllCommunityModule]);\r\n\r\n@Component({\r\n selector: 'tru-data-grid',\r\n templateUrl: './tru-data-grid.html',\r\n styleUrls: ['./tru-data-grid.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { '[class.tru-data-grid]': 'true' },\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatMenuModule,\r\n MatIconModule,\r\n AgGridAngular,\r\n TruToolbar,\r\n TruToolbarButton,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarMenu\r\n ]\r\n})\r\nexport class TruDataGrid implements OnInit, OnChanges, AfterViewInit {\r\n @ViewChild('dataGridContainer') dataGridContainer!: ElementRef;\r\n @ViewChild('customToolbarContainer', { read: ViewContainerRef }) customToolbarContainer!: ViewContainerRef;\r\n\r\n @Input() config!: ITruDataGridConfig;\r\n @Input() entity!: any;\r\n @Input() name!: any;\r\n\r\n TruDataGridTypes = TruDataGridTypes;\r\n\r\n label: string = '';\r\n columnDefs: any = [];\r\n rowData: any = [];\r\n viewChoices: Array<any> = [];\r\n selectedViewChoice: any;\r\n unassociatedChoices: Array<any> = [];\r\n selectedUnassociatedChoice: any;\r\n viewMenuItems: any = [];\r\n customToolbarComponents: any = [];\r\n selectedViewMenuItem: any | null = null;\r\n gridType: TruDataGridTypes = TruDataGridTypes.Search\r\n unsavedEntities: Array<any> = [];\r\n loadedEntities: Array<any> = [];\r\n latestSetupQuery: any;\r\n firstSearchRan: boolean = false;\r\n rowCount: string = 'Rows: 0';\r\n selectedRowCount: string = 'Selected: 0';\r\n\r\n gridOptions: any = {\r\n getRowId: (params: any) => { return params.data.$entity.Ref.toString() },\r\n animateRows: false,\r\n rowSelection: 'multiple',\r\n rowStyle: { background: 'white' },\r\n loadingOverlayComponent: TruDataGridLoadingOverlay,\r\n loadingOverlayComponentParams: {\r\n loadingMessage: 'Searching - One moment please...',\r\n },\r\n noRowsOverlayComponent: TruDataGridNoRowsOverlay,\r\n noRowsOverlayComponentParams: {\r\n noRowsMessageFunc: () =>\r\n {\r\n if (this.firstSearchRan)\r\n return 'Sorry - no rows found!'\r\n else\r\n return 'Click search to display results.'\r\n },\r\n },\r\n onSelectionChanged: (params: any) => {\r\n let count = 0;\r\n count = this.api?.getSelectedRows().length;\r\n this.selectedRowCount = 'Selected: ' + count;\r\n this.cdr.markForCheck();\r\n },\r\n onRowDataUpdated: () => {\r\n this.config.viewMenuConfig.entities = this.getRowData();\r\n this.config.viewMenuConfig.actionRefs = this.getRefs();\r\n let count = 0;\r\n this.api?.forEachNodeAfterFilter(() => count++);\r\n this.rowCount = 'Rows: ' + count;\r\n },\r\n onCellEditingStarted: (params: any) => {\r\n if (params.colDef.cellEditorPopup && this.validationDialog)\r\n this.validationDialog.destroy();\r\n },\r\n onCellEditingStopped: (params: any) => {\r\n params.api.refreshCells({\r\n force: true,\r\n rowNodes: [params.node]\r\n });\r\n },\r\n onCellValueChanged: (params: any) => {\r\n\r\n },\r\n onGridReady: (event: GridReadyEvent) => {\r\n this.api = event.api;\r\n }\r\n }\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\r\n\r\n private api!: GridApi;\r\n private subs: Array<Subscription> = [];\r\n private isActive: boolean = true;\r\n private rowSelectedOnMousedown: any = null;\r\n private rowFocuedOnMousedown: any = null;\r\n private copiedRowData: any = [];\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private componentLookup: TruComponentLookup,\r\n private searchResultViewManager: TruSearchResultViewManager,\r\n private appEnvironment: TruAppEnvironment,\r\n private searchViewEventHandler: TruSearchViewEventHandler,\r\n private uiNotification: TruUiNotification,\r\n private connectionHub: TruConnectionHub,\r\n private windowEventHandler: TruWindowEventHandler,\r\n private util: TruUtil,\r\n private app: ApplicationRef,\r\n private cdr: ChangeDetectorRef,\r\n @Optional() public tabGroupEventNotifier: TruTabGroupEventNotifier) {\r\n }\r\n\r\n private enhanceRowDataForEntity = (entity: any) => {\r\n let rowData = this.config.resultConfig.rowDataEnhancer(entity);\r\n rowData.$entity = entity;\r\n return rowData;\r\n };\r\n\r\n private setNoRowsTemplate = () => {\r\n //this.noRowsTemplate = `<span style=\"font-size:14px;font-weight:bold;\">No data found.</span>`;\r\n }\r\n\r\n private subscribeTo = () => {\r\n this.subs.push(this.appEnvironment.onSaveComplete$.pipe(skip(1)).subscribe(event => {\r\n if (event?.successful)\r\n this.api?.redrawRows();\r\n }));\r\n this.subs.push(this.appEnvironment.onRevertComplete$.subscribe(event => {\r\n if (event?.successful) {\r\n let rowsToRemove: Array<any> = [];\r\n for (let i = this.rowData.length - 1; i >= 0; i--) {\r\n if (this.rowData[i].$entity[this.config.resultConfig.entityType.name + 'Ref'] < 0)\r\n rowsToRemove.push(this.rowData[i]);\r\n }\r\n this.api?.applyTransaction({ remove: rowsToRemove });\r\n this.api?.redrawRows();\r\n }\r\n\r\n }));\r\n this.subs.push(this.appEnvironment.onDeleteComplete$.subscribe(event => {\r\n if (event?.successful && event.entities && event.entities.length) {\r\n let rowsToRemove: Array<any> = [];\r\n for (let i = this.rowData.length - 1; i >= 0; i--) {\r\n for (let j = event.entities.length - 1; j >= 0; j--) {\r\n if (this.rowData[i].$entity === event.entities[j])\r\n rowsToRemove.push(this.rowData[i]);\r\n }\r\n }\r\n this.api?.applyTransaction({ remove: rowsToRemove });\r\n this.api?.redrawRows();\r\n }\r\n }));\r\n this.subs.push(this.searchViewEventHandler.onSearch().pipe(skip(1)).subscribe((setupQuery: any) => {\r\n this.waitForGridApi(() => {\r\n this.onSearch(setupQuery);\r\n });\r\n }));\r\n this.subs.push(this.config.view.onActive().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n this.isActive = isActive;\r\n if (this.isActive) {\r\n this.api.setGridOption('suppressCellFocus', false);\r\n this.api.setGridOption('suppressHeaderFocus', false);\r\n this.config.viewMenuConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.viewMenuConfig.actionRefs = this.getRefs();\r\n this.api.refreshCells({ force: true });\r\n } else {\r\n this.api.setGridOption('suppressCellFocus', true);\r\n this.api.setGridOption('suppressHeaderFocus', true);\r\n }\r\n }));\r\n this.subs.push(this.windowEventHandler.onActiveStateChanged().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n if (isActive) {\r\n this.api.setGridOption('suppressCellFocus', false);\r\n this.api.setGridOption('suppressHeaderFocus', false);\r\n } else {\r\n this.api.setGridOption('suppressCellFocus', true);\r\n this.api.setGridOption('suppressHeaderFocus', true);\r\n }\r\n }));\r\n if (this.tabGroupEventNotifier !== null) {\r\n this.subs.push(this.tabGroupEventNotifier.onActiveStateChanged().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n this.runSearch();\r\n }));\r\n }\r\n this.subs.push(this.connectionHub.subscribe(\r\n this.dataContext,\r\n this.config.resultConfig.entityType,\r\n this.config.resultConfig.entityType.name,\r\n this.addEntity,\r\n this.getRowData,\r\n () => { return this.latestSetupQuery },\r\n this.config.resultConfig.expands,\r\n [],\r\n () => { return true; }).subscribe((dataChange: TruDataChange) => {\r\n this.api.refreshCells({ force: true });\r\n }));\r\n\r\n this.subs.push(fromEvent<KeyboardEvent>(document, 'keydown').subscribe((event: KeyboardEvent) => {\r\n if (this.config.view.active && this.config.view.window.active) {\r\n let keySequence = this.util.getKeySequence(event);\r\n if (keySequence === 'ctrl+i' || keySequence === 'meta+i') { \r\n this.onAdd();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+d' || keySequence === 'meta+d') { \r\n this.onDelete();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+k' || keySequence === 'meta+k') { \r\n this.onKeep();\r\n event.preventDefault();\r\n }\r\n if (keySequence === 'ctrl+r' || keySequence === 'meta+r') {\r\n this.onRemove();\r\n event.preventDefault();\r\n }\r\n var targetIsControl = this.util.targetIsControl(event.target as HTMLElement);\r\n if (!targetIsControl && event.ctrlKey || event.altKey)\r\n event.preventDefault();\r\n }\r\n }));\r\n\r\n this.subs.push(fromEvent<MouseEvent>(document, 'mousedown').subscribe((event: MouseEvent) => {\r\n if (this.config.view.active &&\r\n this.config.view.window.active &&\r\n !this.dataGridContainer.nativeElement.contains(event.target) &&\r\n !this.util.findClosestAncestorByClass(event.target, '.cdk-overlay-container')) {\r\n this.api.stopEditing();\r\n }\r\n }));\r\n }\r\n\r\n private getRefs = (): string => {\r\n let rowNodes: any = [];\r\n this.api?.forEachNodeAfterFilter((rowNode: any, index: number) => {\r\n rowNodes.push(rowNode);\r\n });\r\n let refs = _.map(rowNodes, (rowNode) => { return rowNode.data.$entity[this.config.resultConfig.entityType.name + 'Ref']; });\r\n return refs.join(',');\r\n }\r\n\r\n private getRowData = () => {\r\n let data: any = [];\r\n this.api?.forEachNodeAfterFilter((rowNode: any) => {\r\n data.push(rowNode.data.$entity);\r\n });\r\n return data;\r\n } \r\n\r\n private loadGridData = (entities: Array<any>) => {\r\n this.rowData = entities.map(this.enhanceRowDataForEntity, entities);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private loadManyToManyGridData = (associatedEntities: Array<any>, associatableEntities: Array<any>, initalLoad: boolean) => {\r\n if (initalLoad)\r\n this.rowData = this.loadGridData(associatedEntities);\r\n else\r\n associatedEntities = this.rowData.map((e: any) => { return e.$entity });\r\n let associatableTypeName = this.config.resultConfig.entityManyToManyType.name\r\n let associatableTypeNameWithPrefix = this.config.resultConfig.entityManyToManyTypeNameWithPrefix\r\n let associatedMapOfAssociatable = _.map(associatedEntities, function (e) { return e['o' + associatableTypeNameWithPrefix]; });\r\n this.unassociatedChoices = associatableEntities.filter(object1 => {\r\n return !associatedMapOfAssociatable.some(object2 => { return object1.value.$ === object2[associatableTypeName + 'Ref']; });\r\n });\r\n }\r\n\r\n private exportData = () => {\r\n this.uiNotification.showExportDialog().then((result) => {\r\n if (!result) return;\r\n let exportGridSpec;\r\n if (this.config.resultConfig.entityType)\r\n exportGridSpec = this.config.resultConfig.name;\r\n else\r\n exportGridSpec = '$custom=' + 1;\r\n\r\n this.dataContext\r\n .entityAccess()\r\n .export(this.config.resultConfig.entityType, exportGridSpec, this.latestSetupQuery, this.getRefs(), result);\r\n });\r\n }\r\n\r\n private onSuppressKeyboardEvent = (params: SuppressKeyboardEventParams): boolean => {\r\n let isTabKey = params.event.code === 'Tab';\r\n let isArrowDown = params.event.code === 'ArrowDown';\r\n let isArrowUp = params.event.code === 'ArrowUp';\r\n let isArrowLeft = params.event.code === 'ArrowLeft';\r\n let isArrowRight = params.event.code === 'ArrowRight';\r\n let isSpace = params.event.code === 'Space';\r\n let isShiftKey = params.event.shiftKey;\r\n let isAltKey = params.event.altKey;\r\n\r\n let focusedCell = params.api.getFocusedCell();\r\n let hasChoices = params.data[params.column.getColId()] && params.data[params.column.getColId()].choices ? true : false;\r\n\r\n if (isSpace)\r\n return true;\r\n\r\n if (params.column.isPinned()) {\r\n if (isTabKey && !isShiftKey)\r\n params.api.tabToNextCell();\r\n else if (isTabKey && isShiftKey)\r\n params.api.tabToPreviousCell();\r\n else if (isArrowLeft)\r\n params.api.tabToPreviousCell();\r\n else if (isArrowRight)\r\n params.api.tabToNextCell();\r\n this.api.stopEditing();\r\n return false;\r\n }\r\n\r\n if (hasChoices && isAltKey && (isArrowDown || isArrowUp)) {\r\n params.event.stopPropagation();\r\n params.api.startEditingCell({\r\n rowIndex: focusedCell?.rowIndex as number,\r\n colKey: focusedCell?.column as Column,\r\n });\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n private addEntity = (newEntity: any, dataNotification: boolean = false) => {\r\n if (this.entity && dataNotification) return;\r\n if (this.entity) {\r\n newEntity[this.config.parentTableRelationshipRefName as string] = this.entity[this.config.parentTableRefName as string];\r\n }\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n //let parentName = this.entity.constructor.name;\r\n let unassociatedType = this.config.resultConfig.entityManyToManyType;\r\n let ref = this.selectedUnassociatedChoice.value.$;\r\n let childToAssociate = this.dataContext.entityAccess().searchByRefCacheOnly(unassociatedType, ref, true)\r\n if (childToAssociate) {\r\n let enhancedEntity = this.enhanceRowDataForEntity(newEntity);\r\n enhancedEntity.$entity[unassociatedType.name + 'Ref'] = childToAssociate[unassociatedType.name + 'Ref'];\r\n enhancedEntity.$entity[this.config.parentTableRelationshipRefName as string] = this.entity[this.config.parentTableRefName as string];\r\n // remove item from the add dropdown control\r\n let itemIndex = this.unassociatedChoices.findIndex((choice) => {\r\n return choice[unassociatedType.name + 'Ref'] === childToAssociate[unassociatedType.name + 'Ref'];\r\n });\r\n this.unassociatedChoices.splice(itemIndex, 1);\r\n // clear add selection\r\n this.selectedUnassociatedChoice = undefined;\r\n // add row to grid\r\n this.unsavedEntities.push(enhancedEntity);\r\n this.api.applyTransaction({ add: [enhancedEntity], addIndex: 0 });\r\n }\r\n } else {\r\n let enhancedEntity = this.enhanceRowDataForEntity(newEntity);\r\n this.rowData.unshift(enhancedEntity);\r\n this.api.applyTransaction({ add: [enhancedEntity], addIndex: 0 });\r\n }\r\n }\r\n\r\n private getMergeData = (config: TruListControlConfigBase<any>, entityToValidate: any): TruMergeDataSet | null => {\r\n if (config.propertyPath?.includes('/')) {\r\n let propertyNameParts = config.propertyPath.split('/');\r\n propertyNameParts.pop();\r\n let targetProperty: any;\r\n propertyNameParts.forEach((name) => {\r\n if (!targetProperty) {\r\n let targetPropertyName = 'o' + name as keyof typeof entityToValidate;\r\n targetProperty = entityToValidate[targetPropertyName];\r\n } else {\r\n let targetPropertyName = 'o' + name as keyof typeof entityToValidate;\r\n targetProperty = targetProperty[targetPropertyName];\r\n }\r\n });\r\n if (targetProperty && targetProperty.Merge_Data) {\r\n return targetProperty.Merge_Data_Set;\r\n }\r\n return null;\r\n } else {\r\n return entityToValidate.Merge_Data_Set?.get(config.propertyName as string) ? entityToValidate.Merge_Data_Set : null;\r\n }\r\n }\r\n\r\n private validationDialog: ComponentRef<TruGridValidationDialog> | null = null;\r\n private addValidationDialog = (config: TruGridValidationDialogConfig, hostElement: any) => {\r\n let target = hostElement.querySelectorAll('.dialog-target')[0];\r\n let dialogElement = document.createElement('div');\r\n dialogElement.classList.add('invalid');\r\n target.appendChild(dialogElement);\r\n let componentRef = createComponent<TruGridValidationDialog>(TruGridValidationDialog, {\r\n environmentInjector: this.app.injector,\r\n hostElement: dialogElement,\r\n });\r\n\r\n componentRef.instance.config = config;\r\n componentRef.instance.close.subscribe(() => {\r\n this.api.refreshCells({ force: true });\r\n componentRef.destroy()\r\n });\r\n this.validationDialog = componentRef;\r\n this.app.attachView(componentRef.hostView);\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n\r\n private waitForGridApi = (callback: () => void) => {\r\n var interval = setInterval(() => {\r\n if (this.api) {\r\n clearInterval(interval);\r\n callback();\r\n }\r\n }, 200);\r\n }\r\n\r\n private runSearch = async () => {\r\n this.waitForGridApi(() => {\r\n let containerIsActive = true;\r\n if (this.tabGroupEventNotifier !== null)\r\n containerIsActive = this.tabGroupEventNotifier.isActive;\r\n else\r\n containerIsActive = true;\r\n\r\n if ((\r\n this.gridType === TruDataGridTypes.Detail ||\r\n this.gridType === TruDataGridTypes.DetailManyToMany ||\r\n this.config.noQuery) &&\r\n containerIsActive) {\r\n if (this.config.noQuery)\r\n this.onSearch(null);\r\n else\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n });\r\n }\r\n\r\n private getPropertyPathParts = (propertyPath: string) => {\r\n let lastIndex = propertyPath.lastIndexOf('.');\r\n propertyPath = propertyPath.slice(0, lastIndex);\r\n return propertyPath.split('.');\r\n }\r\n\r\n private renderCustomToolbarComponents = () => {\r\n this.customToolbarComponents.filter((componentName: string) => componentName).forEach((componentName: string) => {\r\n let toolbarContainerRef = this.customToolbarContainer.createComponent(this.componentLookup.get(componentName)) as any;\r\n toolbarContainerRef.instance.tableName = this.config.tableName;\r\n toolbarContainerRef.instance.getEntities = () => { return this.rowData.map((row: any) => { return row.$entity }) };\r\n });\r\n }\r\n\r\n defaultColDef: ColDef = {\r\n suppressKeyboardEvent: this.onSuppressKeyboardEvent\r\n };\r\n\r\n onRowDataChanged = (data: any) => {\r\n if (this.rowData === null) {\r\n this.setNoRowsTemplate();\r\n this.api.showNoRowsOverlay();\r\n }\r\n }\r\n\r\n onCellMouseDown = (cellData: any) => {\r\n this.rowSelectedOnMousedown = cellData.node.isSelected();\r\n if (!cellData.event?.shiftKey)\r\n this.rowFocuedOnMousedown = cellData.node;\r\n }\r\n\r\n onCellClicked = (cellData: any) => {\r\n let target = cellData.event.target as Element;\r\n if (!target.classList.contains('ag-cell-last-left-pinned')) {\r\n cellData.api.deselectAll();\r\n }\r\n else {\r\n if (cellData.event.ctrlKey) {\r\n if (this.rowSelectedOnMousedown)\r\n cellData.node.setSelected(false);\r\n else\r\n cellData.node.setSelected(true);\r\n } else if (cellData.event.shiftKey) {\r\n let focusedId = this.rowFocuedOnMousedown.id;\r\n } else {\r\n cellData.api.deselectAll();\r\n cellData.node.setSelected(true);\r\n }\r\n }\r\n }\r\n\r\n onCellDoubleClicked = (gridConfig: any) => {\r\n if (gridConfig.colDef.cellClass === 'ag-pk-aligned-cell')\r\n this.config.rowHeaderDoubleClicked(gridConfig);\r\n }\r\n\r\n onCellKeyDown = (params: any) => {\r\n if (!params.event) return;\r\n const event = (params.event as unknown) as KeyboardEvent;\r\n if (event.code === 'Space') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.api?.startEditingCell({\r\n rowIndex: params.rowIndex,\r\n colKey: params.column.getColId(),\r\n key: event.code\r\n });\r\n } else if (params.column.isPinned() && event.ctrlKey && event.code === 'KeyC') {\r\n let selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n this.copiedRowData = selectedRows.map((row: any) => row.$entity);\r\n }\r\n } else if (params.column.isPinned() && event.ctrlKey && event.code === 'KeyV') {\r\n if (this.copiedRowData.length) {\r\n this.copiedRowData.forEach((row: any) => {\r\n let newEntity = this.dataContext.entityAccess().add(this.config.resultConfig.entityType);\r\n let properties = row.entityType.getPropertyNames();\r\n properties\r\n .filter((propertyName: string) => {\r\n return propertyName !== 'Ref' &&\r\n propertyName !== this.config.resultConfig.entityType.name + 'Ref' &&\r\n !this.util.isLowerCase(propertyName.charAt(0));\r\n })\r\n .forEach((propertyName: string) => {\r\n if (typeof newEntity.setProperty !== 'undefined')\r\n newEntity.setProperty(propertyName, row.getProperty(propertyName));\r\n });\r\n this.addEntity(newEntity);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onCellMouseOver(e: any) {\r\n let targetElement = e.event.target;\r\n if (\r\n targetElement &&\r\n !targetElement.classList.contains('ag-cell-popup-editing') &&\r\n e.data.$entity.entityAspect.hasValidationErrors) {\r\n\r\n if (!targetElement.classList.contains('ag-cell'))\r\n targetElement = targetElement.closest('.ag-cell');\r\n if (targetElement && targetElement.classList.contains('invalid')) {\r\n let fieldName = e.colDef.field;\r\n let propertyConfig = e.data[fieldName];\r\n\r\n let propertyPathParts: string[] = [];\r\n if (propertyConfig.propertyPath.includes('.')) {\r\n propertyPathParts = this.getPropertyPathParts(propertyConfig.propertyPath);\r\n }\r\n\r\n let entityToValidate = propertyPathParts.length ? propertyPathParts.reduce((p: any, c: any) => p && p[c] || null, e.data.$entity) : e.data.$entity;\r\n let validationErrorsForProperty = this.dataContext.getValidationErrorsForProperty(entityToValidate, propertyConfig.propertyName);\r\n let validationErrorsMessagesForProperty = this.dataContext.parseErrorMessages(validationErrorsForProperty);\r\n\r\n let validationDialogConfig = new TruGridValidationDialogConfig(entityToValidate, propertyConfig, false);\r\n validationDialogConfig.errorMsg = validationErrorsMessagesForProperty;\r\n validationDialogConfig.mergeData = this.getMergeData(propertyConfig, entityToValidate);\r\n this.addValidationDialog(validationDialogConfig, targetElement);\r\n }\r\n } else {\r\n if (this.validationDialog)\r\n this.validationDialog.destroy();\r\n }\r\n }\r\n\r\n onCellMouseOut(e: any) {\r\n if (this.validationDialog)\r\n this.validationDialog.destroy();\r\n }\r\n\r\n onRightClick(event: MouseEvent) {\r\n event.preventDefault();\r\n }\r\n\r\n onSearch = (setupQuery: any) => {\r\n this.firstSearchRan = true;\r\n this.api?.hideOverlay();\r\n this.api?.showLoadingOverlay();\r\n\r\n let searchLocally = this.entity && this.entity['Ref'] < 0 || this.loadedEntities.some((ref) => {\r\n return ref === this.entity['Ref']\r\n });\r\n let joins = [];\r\n if (searchLocally) {\r\n joins.push(this.dataContext.entityAccess().searchCacheOnly(\r\n this.config.resultConfig.entityType,\r\n setupQuery,\r\n this.config.resultConfig.expands));\r\n\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany && this.config.tableConfig.canAdd)\r\n joins.push(this.dataContext.entityAccess().searchQueryChoices(\r\n this.config.resultConfig.entityManyToManyType,\r\n this.config.resultConfig.manyToManySetupQuery(this.entity), false))\r\n } else {\r\n joins.push(this.dataContext.entityAccess().search(\r\n this.config.resultConfig.entityType,\r\n setupQuery,\r\n this.config.resultConfig.expands, false));\r\n\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany && this.config.tableConfig.canAdd)\r\n joins.push(this.dataContext.entityAccess().searchQueryChoices(\r\n this.config.resultConfig.entityManyToManyType,\r\n this.config.resultConfig.manyToManySetupQuery(this.entity), true))\r\n }\r\n\r\n this.latestSetupQuery = setupQuery;\r\n\r\n forkJoin(joins).subscribe({\r\n next: results => {\r\n this.setNoRowsTemplate();\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany)\r\n this.loadManyToManyGridData(results[0], results[1], true);\r\n else\r\n this.loadGridData(results[0]);\r\n },\r\n complete: () => {\r\n if (this.gridType !== TruDataGridTypes.Search)\r\n this.loadedEntities.push(this.entity[this.entity.constructor.name + 'Ref']);\r\n this.api.hideOverlay();\r\n if (this.rowData === null || !this.rowData.length) {\r\n this.api.showNoRowsOverlay();\r\n }\r\n }\r\n });\r\n }\r\n\r\n onUnassociatedChoiceChanged = (option: Array<ITruToolbarDropdownOption> | null) => {}\r\n onSelectedReportChanged = (event: any) => {}\r\n\r\n canAdd = (): boolean => {\r\n if (!this.config.tableConfig.canAdd) return false;\r\n if (this.gridType === TruDataGridTypes.DetailManyToMany)\r\n return this.selectedUnassociatedChoice !== undefined;\r\n return true;\r\n }\r\n\r\n onAdd = (): void => {\r\n this.addEntity(this.dataContext.entityAccess().add(this.config.resultConfig.entityType));\r\n }\r\n\r\n onDelete = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n let entities = selectedRows.map(function (row: any) { return row.$entity; });\r\n let confirmMsg = this.appEnvironment.formatDeleteConfirmationMessage(this.config.tableName, this.config.tablePluralLabel, selectedRows.length);\r\n let onSuccess = () => {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n this.dataContext.delete(entities, confirmMsg, onSuccess);\r\n } else {\r\n this.uiNotification.warning(this.appEnvironment.msgNoRecordsSelected);\r\n }\r\n }\r\n\r\n onKeep = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length) {\r\n this.rowData = this.api.getSelectedRows();\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n onRemove = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n setTimeout(() => {\r\n let filteredRows: Array<any> = [];\r\n this.api.forEachNodeAfterFilter(node => {\r\n filteredRows.push(node.data);\r\n });\r\n if (filteredRows.length)\r\n this.rowData = filteredRows;\r\n else\r\n this.rowData = [];\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n onExport = (): void => {\r\n this.exportData();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscribeTo();\r\n this.label = this.config.resultConfig.label; \r\n this.columnDefs = this.config.resultConfig.columnDefs;\r\n this.gridType = this.config.resultConfig.gridType;\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //setTimeout to prevent: ERROR Error: NG0100: ExpressionChangedAfterItHasBeenCheckedError. \r\n setTimeout(() => {\r\n this.parentToolbarTemplate = this.searchResultViewManager.searchViewToolbarTemplate;\r\n this.config.viewMenuConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.viewMenuConfig.allMenus().subscribe((menu: any) => { this.viewMenuItems = menu; });\r\n this.customToolbarComponents = this.config.customToolbarComponents;\r\n\r\n this.renderCustomToolbarComponents();\r\n this.runSearch();\r\n }, 0);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.runSearch();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","<div [ngClass]=\"{'tru-data-grid-label-offset': label}\">\r\n <span class=\"tru-data-grid-label\" *ngIf=\"label\">{{label}}</span>\r\n <div class=\"tru-data-grid-toolbar-container\">\r\n <tru-toolbar>\r\n <tru-toolbar-dropdown [options]=\"unassociatedChoices\"\r\n [(selectedOption)]=\"selectedUnassociatedChoice\"\r\n [disabled]=\"!this.config.tableConfig.canAdd\"\r\n (selectionChange)=\"onUnassociatedChoiceChanged($event)\"\r\n *ngIf=\"gridType == TruDataGridTypes.DetailManyToMany\">\r\n </tru-toolbar-dropdown>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-add-icon'\" [tooltip]=\"'Add - [Ctrl + I]'\" [disabled]=\"!canAdd()\" (onClick)=\"onAdd()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-delete-icon'\" [tooltip]=\"'Delete - [Ctrl + D]'\" (click)=\"onDelete()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-keep-icon'\" [tooltip]=\"'Keep selected records - [Ctrl + K]'\" (click)=\"onKeep()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-remove-icon'\" [tooltip]=\"'Remove selected records - [Ctrl + R]'\" (click)=\"onRemove()\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"parentToolbarTemplate\"></tru-toolbar-separator>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\r\n <tru-toolbar-separator *ngIf=\"viewMenuItems.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"viewMenuItems.length\">\r\n <tru-toolbar-menu *ngFor=\"let viewMenuItem of viewMenuItems\" [config]=\"viewMenuItem\"></tru-toolbar-menu>\r\n </div>\r\n <ng-container #customToolbarContainer></ng-container>\r\n </tru-toolbar>\r\n </div>\r\n <div #dataGridContainer class=\"tru-data-grid-container\">\r\n <ag-grid-angular class=\"ag-theme-alpine\"\r\n [gridOptions]=\"gridOptions\"\r\n [rowData]=\"rowData\"\r\n [columnDefs]=\"columnDefs\"\r\n [defaultColDef]=\"defaultColDef\"\r\n [headerHeight]=\"25\"\r\n [rowHeight]=\"22\"\r\n [rowBuffer]=\"50\"\r\n [enterNavigatesVertically]=\"true\"\r\n [enterNavigatesVerticallyAfterEdit]=\"true\"\r\n [suppressRowHoverHighlight]=\"true\"\r\n [suppressRowClickSelection]=\"true\"\r\n [stopEditingWhenCellsLoseFocus]=\"false\"\r\n (cellClicked)=\"onCellClicked($event)\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (cellKeyDown)=\"onCellKeyDown($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\"\r\n (cellMouseOver)=\"onCellMouseOver($event)\"\r\n (cellMouseOut)=\"onCellMouseOut($event)\"\r\n (contextmenu)=\"onRightClick($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n <div class=\"tru-data-grid-statusbar-container\">\r\n <div class=\"tru-data-grid-statusbar-values-container\">\r\n <p class=\"tru-data-grid-statusbar-values-text\">{{rowCount}}</p>\r\n <p class=\"tru-data-grid-statusbar-values-text\">{{selectedRowCount}}</p>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, ElementRef, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruUser } from '../../../services/tru-user';\r\nimport { TruAuth } from '../../login/services/tru-auth';\r\nimport { TruEntityAccessor } from '../../../services/tru-entity-accessor';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TruAppSettingsDialog } from '../../app-settings-dialog/tru-app-settings-dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatDivider } from '@angular/material/divider';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { MaterialModule } from '../../../material.module';\r\n\r\n\r\n@Component({\r\n selector: 'tru-toolbar-app-customization',\r\n templateUrl: './tru-toolbar-app-customization.html',\r\n styleUrls: ['./tru-toolbar-app-customization.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenu,\r\n MatButton,\r\n MatIcon,\r\n MatDivider,\r\n MaterialModule\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarAppCustomization {\r\n private _dialog: MatDialog;\r\n\r\n @ViewChild('file') fileInputElement!: ElementRef;\r\n\r\n initial: string | null | undefined = null;\r\n name: string | null | undefined = null;\r\n email: string | null | undefined = null;\r\n\r\n constructor(\r\n private dialog: MatDialog,\r\n private entityAccessor: TruEntityAccessor,\r\n private user: TruUser,\r\n private auth: TruAuth,\r\n private uiNotification: TruUiNotification) {\r\n this._dialog = this.dialog;\r\n this.initial = user?.firstName ? user?.firstName.slice(0, 1).toUpperCase() : user?.username?.slice(0, 1).toUpperCase()\r\n this.name = user?.firstName && user?.lastName ? user?.firstName + ' ' + user?.lastName : user?.username;\r\n this.email = user?.email;\r\n }\r\n\r\n importFiles = (files: Array<File>) => {\r\n this.entityAccessor.import(files);\r\n }\r\n\r\n onImportClicked = () => {\r\n this.fileInputElement.nativeElement.click();\r\n }\r\n\r\n onSettingsClicked = () => {\r\n new Promise<boolean>((resolve, reject) => {\r\n let dialogRef = this._dialog.open(TruAppSettingsDialog, {\r\n disableClose: true,\r\n minHeight: '600px',\r\n minWidth: '800px'\r\n });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\r\n\r\n onAboutClicked = () => {\r\n this.uiNotification.about();\r\n }\r\n}\r\n","<div class=\"tru-toolbar-app-customization\">\r\n <button mat-mini-fab class=\"tru-toolbar-app-customization-button\" [matMenuTriggerFor]=\"appCustomizationMenu\">\r\n <mat-icon \r\n [svgIcon]=\"'more-icon'\"\r\n title=\"Customize App\"\r\n class=\"std-search-control-operator-icon\">\r\n </mat-icon>\r\n </button>\r\n</div>\r\n<mat-menu #appCustomizationMenu=\"matMenu\">\r\n <input type=\"file\" #file (change)=\"importFiles($any($event.target).files)\" style=\"display:none\" accept=\".csv,.xlsx\" multiple>\r\n <div class=\"tru-toolbar-app-customization-menu-container\">\r\n <button mat-menu-item\r\n (click)=\"onImportClicked()\"\r\n class=\"tru-toolbar-app-customization-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'import-icon'\"\r\n title=\"Import\"\r\n class=\"tru-toolbar-app-customization-import-icon\">\r\n </mat-icon>\r\n <span>Import</span>\r\n </button>\r\n <button mat-menu-item\r\n (click)=\"onSettingsClicked()\"\r\n class=\"tru-toolbar-app-customization-menu-logout-button\">\r\n <mat-icon [svgIcon]=\"'settings-icon'\"\r\n title=\"Settings\"\r\n class=\"tru-toolbar-app-customization-settings-icon\">\r\n </mat-icon>\r\n <span>Settings</span>\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item\r\n (click)=\"onAboutClicked()\"\r\n class=\"tru-toolbar-app-customization-menu-about-button\">\r\n <mat-icon [svgIcon]=\"'about-icon'\"\r\n title=\"About\"\r\n class=\"tru-toolbar-app-customization-about-icon\">\r\n </mat-icon>\r\n <span>About</span>\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { MatMenu } from '@angular/material/menu';\r\nimport { TruContextFilters } from '../../../services/tru-context-filters';\r\nimport { TruToolbarMenu } from '../../toolbar/menu/tru-toolbar-menu';\r\nimport { TruToolbar } from '../../toolbar/tru-toolbar';\r\nimport { TruToolbarDropdown } from '../../toolbar/dropdown/tru-toolbar-dropdown';\r\nimport { TruToolbarSeparator } from '../../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbarContextFilter } from '../../toolbar/context-filter/tru-toolbar-context-filter';\r\nimport { TruToolbarUserProfile } from '../../toolbar/user-profile/tru-toolbar-user-profile';\r\nimport { TruToolbarAppCustomization } from '../../toolbar/app-customization/tru-toolbar-app-customization';\r\n\n@Component({\n selector: 'tru-desktop-menubar',\n templateUrl: './tru-desktop-menubar.html',\n styleUrls: ['./tru-desktop-menubar.css'],\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenu,\r\n MatButton,\r\n MatIcon,\r\n TruToolbar,\r\n TruToolbarMenu,\r\n TruToolbarDropdown,\r\n TruToolbarSeparator,\r\n TruToolbarContextFilter,\r\n TruToolbarUserProfile,\r\n TruToolbarAppCustomization\r\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class TruDesktopMenubar implements OnInit {\n @Input() desktopCtrl: any;\n\n constructor(private contextFilters: TruContextFilters) { }\n\n options: any | null = null;\n configs: any | null = null;\n filters: Array<any> = [];\n\n openWindow = (event: any, windowOverrides: any) => {\n this.desktopCtrl.openWindow(windowOverrides);\n };\n\n ngOnInit(): void {\n this.options = this.desktopCtrl.getOptions();\n this.configs = this.options.menubarConfig;\n this.filters = this.contextFilters.filters;\n }\n}\n","<div class=\"desktop-main-menu\">\r\n <tru-toolbar>\r\n <tru-toolbar-menu *ngFor=\"let config of configs\" [config]=\"config\"></tru-toolbar-menu>\r\n <tru-toolbar-separator *ngIf=\"filters.length\"></tru-toolbar-separator>\r\n <tru-toolbar-context-filter></tru-toolbar-context-filter>\r\n </tru-toolbar>\r\n <tru-toolbar>\r\n <tru-toolbar-app-customization></tru-toolbar-app-customization>\r\n <tru-toolbar-user-profile></tru-toolbar-user-profile>\r\n </tru-toolbar>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { TruContextFilter } from '../../../classes/tru-context-filter';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\r\n\r\n@Injectable()\r\nexport class TruDesktopService {\r\n /**\r\n * @tru.doc function\r\n * @name DesktopService.createDesktop\r\n * @module tru.desktop\r\n *\r\n * @description\r\n * Creates a new desktop instance.\r\n *\r\n * @returns {object} Desktop\r\n */\r\n public createDesktop = function () {\r\n var desktop = new Desktop();\r\n return desktop;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @tru.desktop.doc class\r\n * @name DesktopService.Desktop\r\n * @module tru.desktop\r\n *\r\n * @description Desktop defines a logical desktop. Any non-dom properties and elements needed by the desktop should\r\n * be defined in this class\r\n *\r\n */\r\nexport class Desktop {\r\n options = new DesktopOptions();\r\n windowConfig = new WindowConfig();\r\n viewConfig = new TruDesktopViewConfig();\r\n};\r\n\r\n/**\r\n * @tru.desktop.doc class\r\n * @name DesktopService.DesktopOptions\r\n * @module tru.desktop\r\n *\r\n * @description Default DesktopOptions class. DesktopOptions are defined by the application developer and overlaid\r\n * over this object.\r\n *\r\n */\r\nexport class DesktopOptions {\r\n allowDirtyClose = false;\r\n allowInvalidClose = false;\r\n cancelEditingOnNavigation = false;\r\n canCloseFn = undefined;\r\n canNavigateFn = undefined;\r\n displayViewportDimensions = false;\r\n enableAnimation = true;\r\n enableWindowCascading = true;\r\n logoUrl = undefined;\r\n menubarHeight = 32;\r\n menubarConfig = undefined;\r\n showLaunchMenu = false;\r\n};\r\n\r\n\r\n/**\r\n * @tru.desktop.doc class\r\n * @name DesktopService.WindowConfig\r\n * @module tru.desktop\r\n *\r\n * @description\r\n * Default configuration object for a window. windowConfig properties can be defined by the application developer and overlaid\r\n * over this object.\r\n *\r\n */\r\nexport class WindowConfig {\r\n tableName: string = '';\r\n tablePluralName: string = '';\r\n tablePluralLabel: string = '';\r\n\r\n active = true;\r\n bottom = 'auto';\r\n globals = undefined;\r\n height = '400px';\r\n isDirty = false;\r\n isInvalid = false;\r\n left = 0;\r\n maximized = undefined;\r\n minHeight = '200px';\r\n minimized = false;\r\n minWidth = '200px';\r\n outOfBounds = false;\r\n savedPosition = {};\r\n right = 'auto';\r\n scope = undefined;\r\n title = '';\r\n top = 0;\r\n width = '400px';\r\n views = Array<TruDesktopViewConfig>();\r\n zIndex = -1;\r\n isReadOnly = false;\r\n unsubscribes: Array<any> = [];\r\n wasReadOnly = false;\r\n contextFilters: Array<TruContextFilter> = [];\r\n parentDataContext: TruDataContext | null = null;\r\n parentView: any | null = null;\r\n\r\n removeForwardViews = () => { }\r\n\r\n goToPreviousView = () => { }\r\n\r\n closed = () => { }\r\n\r\n destroy = () => {\r\n while (this.unsubscribes.length) this?.unsubscribes?.shift()?.call();\r\n }\r\n};\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\n@Component({\n selector: 'tru-desktop-statusbar',\n templateUrl: './tru-desktop-statusbar.html',\n styleUrls: ['./tru-desktop-statusbar.css'],\n imports: [CommonModule, FormsModule]\n})\nexport class TruDesktopStatusbar implements OnInit {\n @Input() desktopCtrl: any;\n\n label: string;\n\n constructor() {\n this.label = '';//this.contextFilter.label();\n }\n\n ngOnInit(): void {\n\n }\n}\n","<div class=\"desktop-window-statusbar\" data-ng-class=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-statusbar-container\">\r\n <div class=\"desktop-window-statusbar-context-filter-container\">\r\n <p class=\"desktop-window-statusbar-context-filter-container-text\">{{label}}</p>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { TruToolbarButton } from '../../toolbar/button/tru-toolbar-button';\r\n\r\n@Component({\r\n selector: 'tru-desktop-taskbar',\r\n templateUrl: './tru-desktop-taskbar.html',\r\n styleUrls: ['./tru-desktop-taskbar.css'],\r\n imports: [CommonModule, FormsModule, TruToolbarButton, MatIcon]\r\n})\r\nexport class TruDesktopTaskbar implements OnInit {\r\n\r\n @Input() windows: any;\r\n @Input() desktopCtrl: any;\r\n\r\n options = null;\r\n desktopShown = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.options = this.desktopCtrl.getOptions();\r\n }\r\n\r\n updateWindowState = (wdw: any) => {\r\n if (wdw.active)\r\n this.desktopCtrl.minimize(wdw);\r\n else if (!wdw.outOfBounds)\r\n this.desktopCtrl.restore(wdw);\r\n else if (wdw.outOfBounds)\r\n this.desktopCtrl.recover(wdw);\r\n };\r\n\r\n hideShowAll = () => {\r\n this.desktopShown = this.desktopCtrl.hideShowAll();\r\n };\r\n\r\n close = (e: any, wdw: any) => {\r\n this.desktopCtrl.closeWindow(wdw);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n };\r\n}\r\n","<div class=\"desktop-taskbar-container\">\r\n <div class=\"desktop-taskbar-list\">\r\n <ul>\r\n <li class=\"am-fade-and-scale desktop-text\"\r\n *ngFor=\"let window of windows\"\r\n [ngClass]=\"{'is-modal': window.isModal}\"\r\n (click)=\"updateWindowState(window)\"\r\n (keydown.enter)=\"updateWindowState(window)\">\r\n <div class=\"desktop-relative desktop-taskbar-list-item\" tabindex=\"0\" [ngClass]=\"{'desktop-active-taskbar-list-item': window.active, 'desktop-minimized-taskbar-list-item': window.minimized, 'desktop-taskbar-list-item-recover': window.outOfBounds}\">\r\n <div class=\"desktop-taskbar-list-item-title\">\r\n <span>{{window.title}}</span>\r\n </div>\r\n <mat-icon [svgIcon]=\"'tru-toolbar-close-icon'\" class=\"desktop-taskbar-list-item-close-icon\" [ngClass]=\"{'desktop-taskbar-list-item-close-minimized': window.minimized}\" (click)=\"close($event, window)\"></mat-icon>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"desktop-taskbar-hide\">\r\n <div class=\"desktop-taskbar-hide-button\" (click)=\"hideShowAll()\">\r\n\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ComponentFactoryResolver, Injector, Input, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruComponentLookup } from '../../../services/tru-component-lookup';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruDesktopViewEventNotifier } from '../services/tru-desktop-view-event-notifier';\r\n\n@Component({\n selector: 'tru-desktop-view',\n templateUrl: './tru-desktop-view.html',\n styleUrls: ['./tru-desktop-view.css'],\n imports: [CommonModule, FormsModule],\n providers: [TruDesktopViewEventNotifier]\n})\nexport class TruDesktopView implements OnInit {\n @Input() view!: TruDesktopViewConfig;\n @Input() active!: boolean;\n\n constructor(\n private injector: Injector,\n private viewContainerRef: ViewContainerRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private componentLookup: TruComponentLookup) {}\n\n ngOnInit(): void {\n var component = this.componentLookup.get(this.view.componentName);\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n const containerRef = this.viewContainerRef.createComponent<any>(componentFactory, 0, this.injector);\n containerRef.instance.view = this.view;\n }\n\n ngOnChanges(changes: SimpleChanges): void {}\n}\n","<div></div>\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityType, breeze } from 'breeze-client';\r\nimport { TruGlobalDataContext } from './tru-global-data-context';\r\nimport { TruUser } from './tru-user';\r\nimport { TruDataContext } from './tru-data-context';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\nimport _ from 'underscore';\r\nimport { TruTextManager } from './tru-text-manager';\r\nimport { TruDesktopManager } from '../components/desktop/services/tru-desktop-manager';\r\nimport { TruUiNotification } from './tru-ui-notification';\r\nimport { TruDesktopViewConfig } from '../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruWindowEventHandler } from '../components/desktop/services/tru-window-event-handler';\r\n\r\n@Injectable()\r\nexport class TruActionInvoke {\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private textManager: TruTextManager,\r\n private desktopManager: TruDesktopManager,\r\n private windowEventHandler: TruWindowEventHandler,\r\n private uiNotification: TruUiNotification,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private globalDataContext: TruGlobalDataContext,\r\n private user: TruUser) { }\r\n\r\n /**\r\n * Creates an array of menu item config objects.\r\n * @param {object[]} menuItemConfigs - Menu item config configs(!)\r\n * @returns {object[]} - Configs.\r\n */\r\n createMenuConfigs = (menuItemConfigs: any) => {\r\n var executableConfigs = _.filter(menuItemConfigs, function (c) {\r\n var hasAccess = typeof c.item.hasAccess != 'function' ? true : c.item.hasAccess();\r\n return c.canExecute && hasAccess;\r\n });\r\n return _.pluck(executableConfigs, 'item');\r\n }\r\n\r\n /**\r\n * Post to a URL that results in a file download.\r\n * @param {string} url \r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n */\r\n executeHttpPostActionForDownload = (url: any, actionRefs: any) => {\r\n var data = this.textManager.formatAsUrlParameters({ refs: actionRefs });\r\n this.dataContext.entityAccess().downloadFromUrl(url, data);\r\n }\r\n\r\n /**\r\n * Execute an action that downloads a file.\r\n * @param {string} actionName \r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n */\r\n executeActionForDownload = (actionName: any, actionRefs: any) => {\r\n var data = this.textManager.formatAsUrlParameters({ refs: actionRefs });\r\n this.dataContext.entityAccess().downloadFromService('RequestAction' + actionName, data);\r\n }\r\n\r\n /**\r\n * Execute an action and show the resulting message.\r\n * @param {string} actionName - Name of an action.\r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n */\r\n executeActionForMessage = (actionName: any, actionRefs: string) => {\r\n this.dataContext.entityAccess().requestAction(actionName, actionRefs).subscribe({\r\n next: (results) => {\r\n this.uiNotification.info(results[0].Message);\r\n }, error: error => {\r\n this.uiNotification.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Queue the execution of an action.\r\n * @param {string} actionName - Name of an action.\r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n * @param {string} actionLabel - Display name of the action.\r\n */\r\n queueAction = (actionName: string, actionRefs: string, actionLabel: string) => {\r\n this.dataContext.entityAccess().requestAction(actionName, actionRefs).subscribe({\r\n next: (results) => {\r\n this.uiNotification.info(actionLabel + ' queued');\r\n }, error: error => {\r\n this.uiNotification.error(error.message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Open a new window with a query function to an action that accepts a list of\r\n * record refs.\r\n * @param {string} actionName - Name of an action.\r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n * @param {string} componentName - Name of the directive for the window view.\r\n * @param {object} data - Passed to view.\r\n */\r\n openWindowForQueryResultFromAction = (actionName: string, actionRefs: string, componentName: string, data: any) => {\r\n let itemsQuery = (dataContext: TruDataContext) => {\r\n this.dataContext.entityAccess().requestAction(actionName, actionRefs).subscribe({\r\n next: (results) => {\r\n return results;\r\n }, error: error => {\r\n this.uiNotification.error(error.message);\r\n }\r\n });\r\n }\r\n //this.desktopManager.addWindowForQueryResult(componentName, itemsQuery, data);\r\n }\r\n\r\n /**\r\n * Open a new view with a URL and a list of record refs.\r\n * @param {string} url \r\n * @param {string} actionRefs - Comma separated list of record refs.\r\n * @param {string} actionLabel - Action label.\r\n * @param {string} windowCtrl - window manager.\r\n */\r\n openViewForReportFromUrl = (url: string, actionRefs: string, actionLabel: string, windowCtrl: string) => {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.title = actionLabel;\r\n windowAddViewEventArgs.actionRefs = actionRefs;\r\n windowAddViewEventArgs.url = url;\r\n windowAddViewEventArgs.componentName = 'TruReportView';\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n }\r\n\r\n processCustomReport = (reportRef: string, actionRefs: string, mimeRef: string) => {\r\n this.dataContext.entityAccess().downloadFromService('/api/report/execute', {\r\n reportRef: reportRef,\r\n refs: actionRefs,\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { breeze } from 'breeze-client';\r\nimport { TruUser } from './tru-user';\r\nimport { TruDataContext } from './tru-data-context';\r\nimport { TruModelTypeLookup } from './tru-model-type-lookup';\r\nimport { Observable, forkJoin } from 'rxjs';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { TruActionInvoke } from './tru-action-invoke';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruReportManager {\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private modelTypeLookup: TruModelTypeLookup,\r\n private appEnvironment: TruAppEnvironment,\r\n private actionInvoke: TruActionInvoke,\r\n private user: TruUser) { }\r\n\r\n private setupMenuImpl(report: any, menu: any, getActionRefs: any, enabled: () => {}) {\r\n var reportRef = report.Ref;\r\n var mimeRef = report.ReportMimeTypeStdMimeTypeRef;\r\n menu[0].choices.push(\r\n {\r\n hasAccess: function () {\r\n return true;\r\n },\r\n label: report.ReportName,\r\n enabled: function () {\r\n return enabled();\r\n },\r\n reportRef: reportRef,\r\n mimeRef: mimeRef,\r\n fire: () => {\r\n this.actionInvoke.processCustomReport(\r\n reportRef,\r\n getActionRefs(),\r\n mimeRef\r\n );\r\n }\r\n });\r\n }\r\n\r\n get(url: string, method: string, callback: (o: any) => any, params = null) {\r\n let obj = new XMLHttpRequest();\r\n try {\r\n obj = new XMLHttpRequest();\r\n } catch (e) {\r\n alert(\"Your browser does not support Ajax.\");\r\n }\r\n obj.onreadystatechange = function () {\r\n if (obj.readyState == 4) {\r\n callback(obj);\r\n }\r\n }\r\n obj.open(method, url, true);\r\n obj.send(params);\r\n return obj;\r\n }\r\n\r\n private setupMenu(report: any, menu: any, getActionRefs: any, enabled: () => {}): Observable<any> {\r\n return new Observable(obs => {\r\n this.dataContext.entityAccess().search(this.modelTypeLookup.getType('TruDbCloudFile'), (query: any) => {\r\n var predicate = new breeze.Predicate('TruDbCloudFileRef', breeze.FilterQueryOp.Equals, report.ReportTruDbCloudFileRef)\r\n return query.where(predicate);\r\n }, null, false).subscribe((cloudFiles: any) => {\r\n if (cloudFiles.length) {\r\n //there is a cloud file associated with this report\r\n if (cloudFiles[0].Filename.endsWith(\".mrt\")) {\r\n //this is a stimulsoft report, check if license file exists\r\n\r\n this.dataContext.entityAccess().search(this.modelTypeLookup.getType('TruDbConfig'), (query: any) => {\r\n var predicate = new breeze.Predicate('Key', breeze.FilterQueryOp.Equals, 'StimulsoftLicensePath');\r\n return query.where(predicate);\r\n }, null, false).subscribe((config: any) => {\r\n if (!config.length || !config[0].Value) {\r\n //do nothing, no menu option will be pushed into the dom since\r\n //we couldn't find the required license path info in the config\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n else {\r\n //var path = config[0].Value.replace(\"~\", \"\");\r\n //this.get(path, 'get', (data: any) => {\r\n // if (data.length) {\r\n\r\n // }\r\n //});\r\n this.setupMenuImpl(report, menu, getActionRefs, enabled);\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n });\r\n }\r\n else {\r\n //there is a cloud file associated with this report, but it isn't an mrt report push menu option\r\n //since this a different type of report (word, excel)\r\n this.setupMenuImpl(report, menu, getActionRefs, enabled);\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n }\r\n else {\r\n //no cloud file, so no need to check for license, push menu option\r\n //since this could be a non mrt report (word, excel)\r\n this.setupMenuImpl(report, menu, getActionRefs, enabled);\r\n obs.next(menu);\r\n obs.complete();\r\n }\r\n });\r\n });\r\n }\r\n\r\n queryReports = (tableName: string, menu: any, getActionRefs: () => string, enabled: () => {}): Observable<any> => {\r\n return new Observable(obs => {\r\n this.appEnvironment.globalDataContext?.entityAccess().searchCacheOnly(this.modelTypeLookup.getType('TruDbReport'), (query: any) => {\r\n var predicate = new breeze.Predicate('OwnerTruDbUserRef', breeze.FilterQueryOp.Equals, this.user.activeUserRef)\r\n .or('OwnerTruDbUserRef', breeze.FilterQueryOp.Equals, null)\r\n .or('Public', breeze.FilterQueryOp.Equals, true)\r\n .and('TableName', breeze.FilterQueryOp.Equals, tableName);\r\n return query.where(predicate);\r\n }).subscribe((reports) => {\r\n if (reports.length) {\r\n let obsList = [];\r\n for (var i = 0; i < reports.length; i++) {\r\n obsList.push(this.setupMenu(reports[i], menu, getActionRefs, enabled));\r\n }\r\n forkJoin(obsList).subscribe(response => {\r\n obs.next(menu);\r\n });\r\n }\r\n else {\r\n obs.next([]);\r\n }\r\n });\r\n });\r\n };\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Directive, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\n@Directive({\n selector: '[tru-desktop-resizable]'\n})\nexport class TruDesktopResizable implements OnInit {\n @Input() window: any;\n @Input() maximized: any;\n @Input() direction: any;\n\n constructor(private elementRef: ElementRef) { }\n\n currentHeight: any;\n currentWidth: any;\n currentTop: any;\n currentLeft: any;\n currentRight: any;\n currentBottom: any;\n currentMinHeight: any;\n currentMinWidth: any;\n mouseOffsetX = 0;\n mouseOffsetY = 0;\n lastMouseX = 0;\n lastMouseY = 0;\n originalHeight = 0;\n originalWidth = 0;\n viewport: any;\n\n mouseDown = (event: any) => {\n if (this.maximized) return;\n event.preventDefault();\n this.mouseOffsetY = event.clientY;\n this.mouseOffsetX = event.clientX;\n this.originalHeight = parseInt(this.window.height, 10);\n this.originalWidth = parseInt(this.window.width, 10);\n this.viewport = this.getViewport();\n document.addEventListener('mousemove', this.mouseMove);\n document.addEventListener('mouseup', this.mouseUp);\n };\n\n mouseMove = (event: any) => {\n var mouseY = event.pageY - this.mouseOffsetY;\n var mouseX = event.pageX - this.mouseOffsetX;\n var diffY = mouseY - this.lastMouseY;\n var diffX = mouseX - this.lastMouseX;\n this.lastMouseY = mouseY;\n this.lastMouseX = mouseX;\n\n this.currentHeight = parseInt(this.window.height, 10);\n this.currentWidth = parseInt(this.window.width, 10);\n this.currentTop = parseInt(this.window.top, 10);\n this.currentLeft = parseInt(this.window.left, 10);\n this.currentRight = parseInt(this.window.right, 10);\n this.currentBottom = parseInt(this.window.bottom, 10);\n this.currentMinHeight = parseInt(this.window.minHeight, 10);\n this.currentMinWidth = parseInt(this.window.minWidth, 10);\n\n if (this.direction.indexOf(\"w\") > -1) {\n if (this.currentWidth - diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentWidth - this.currentMinWidth));\n\n //Contain resizing to the west\n if (this.currentLeft + diffX < 0)\n this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = 0 - this.currentLeft));\n\n this.window.left = (this.currentLeft + diffX) + 'px';\n this.window.width = (this.currentWidth - diffX) + 'px';\n }\n if (this.direction.indexOf(\"n\") > -1) {\n if (this.currentHeight - diffY < this.currentMinHeight) this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = this.currentHeight - this.currentMinHeight));\n\n //Contain resizing to the north\n if (this.currentTop + diffY < 0) this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = 0 - this.currentTop));\n\n this.window.top = (this.currentTop + diffY) + 'px';\n this.window.height = (this.currentHeight - diffY) + 'px';\n }\n if (this.direction.indexOf(\"e\") > -1) {\n if (this.currentWidth + diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentMinWidth - this.currentWidth));\n\n //Contain resizing to the east\n if ((this.currentLeft + this.currentWidth) + diffX > this.viewport.offsetWidth)\n this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.viewport.offsetWidth - (this.currentLeft + this.currentWidth)));\n\n this.window.width = (this.currentWidth + diffX) + 'px';\n }\n if (this.direction.indexOf(\"s\") > -1) {\n if (this.currentHeight + diffY < this.currentMinHeight) this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = this.currentMinHeight - this.currentHeight));\n\n //Contain resizing to the south\n if ((this.currentTop + this.currentHeight) + diffY > this.viewport.offsetHeight)\n this.mouseOffsetY = this.mouseOffsetY - (diffY - (diffY = this.viewport.offsetHeight - (this.currentTop + this.currentHeight)));\n\n this.window.height = (this.currentHeight + diffY) + 'px';\n }\n }\n\n mouseUp = (event: any) => {\n this.mouseOffsetX = 0;\n this.mouseOffsetY = 0;\n this.lastMouseX = 0;\n this.lastMouseY = 0;\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n };\n\n getViewport = function () {\n return document.querySelectorAll('.desktop-viewport-container')[0];\n };\n\n ngOnInit(): void {\n this.elementRef.nativeElement.addEventListener('mousedown', this.mouseDown);\n }\n\n ngOnDestroy() {\n this.elementRef.nativeElement.removeEventListener('mousedown', this.mouseDown);\n\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n }\n}\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\r\nimport { TruWindowEventHandler } from '../../services/tru-window-event-handler';\r\nimport { OverlayContainer } from '@angular/cdk/overlay';\r\n\r\n@Directive({\r\n selector: '[truDesktopWindowStateMonitor]'\r\n})\r\nexport class TruDesktopWindowStateMonitor {\r\n @Input('truDesktopWindowStateMonitor') active: boolean = true;\r\n\r\n private tabListener!: () => void;\r\n private focusListener!: () => void;\r\n private focusableElements: Array<HTMLElement> = [];\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private renderer: Renderer2,\r\n private windowEventHandler: TruWindowEventHandler,\r\n private overlayContainer: OverlayContainer) { }\r\n\r\n private setWindowState = () => {\r\n if (this.active)\r\n this.el.nativeElement.classList.remove('desktop-window-disabled');\r\n else\r\n this.el.nativeElement.classList.add('desktop-window-disabled');\r\n }\r\n\r\n private getFocusableChildElements = () => {\r\n return this.el.nativeElement.querySelectorAll('a[href],input,select,textarea,button,mat-select,mat-tab,.mdc-tab,.ag-header-cell,.ag-cell,[tabindex]:not([tabindex=\"-1\"]');\r\n }\r\n\r\n private focusAppropriateElement = (event: KeyboardEvent) => {\r\n let target = event.target;\r\n this.focusableElements = this.getFocusableChildElements();\r\n let firstFocusableElement = this.focusableElements[0];\r\n let lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\r\n if (target !== null && !this.el.nativeElement.contains(target)) {\r\n event.preventDefault();\r\n firstFocusableElement.focus();\r\n } else {\r\n if (event.key === 'Tab') {\r\n if (event.shiftKey) {\r\n if (document.activeElement === firstFocusableElement) {\r\n event.preventDefault();\r\n lastFocusableElement.focus();\r\n }\r\n } else {\r\n if (document.activeElement === lastFocusableElement) {\r\n event.preventDefault();\r\n firstFocusableElement.focus();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onKeydown(event: KeyboardEvent) {\r\n if (event.key === 'Tab') {\r\n if (this.active) {\r\n this.focusAppropriateElement(event);\r\n } else {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n\r\n onFocusIn(event: FocusEvent) {\r\n if (this.active) {\r\n let overlayElement = this.overlayContainer.getContainerElement();\r\n if (overlayElement.childElementCount > 0)\r\n return; // Ignore focus events when overlays are present\r\n setTimeout(() => {\r\n let target = event.target;\r\n this.focusableElements = this.getFocusableChildElements();\r\n let firstFocusableElement = this.focusableElements[0];\r\n if (target !== null && !this.el.nativeElement.contains(target)) {\r\n firstFocusableElement.focus();\r\n }\r\n }, 0); // Allow focus to settle\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.setWindowState();\r\n if (this.active) {\r\n this.tabListener = this.renderer.listen('document', 'keydown', this.onKeydown.bind(this));\r\n this.focusListener = this.renderer.listen('window', 'focusin', this.onFocusIn.bind(this));\r\n } else {\r\n if (typeof this.tabListener === 'function')\r\n this.tabListener();\r\n if (typeof this.focusListener === 'function')\r\n this.focusListener();\r\n }\r\n this.windowEventHandler.activeStateChanged(this.active);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabListener();\r\n this.focusListener();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TruContextFilters } from \"../../../services/tru-context-filters\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruDesktopViewConfig } from \"../classes/tru-desktop-view-config\";\r\nimport { TruWindowEventHandler } from \"./tru-window-event-handler\";\r\n\r\n@Injectable()\r\nexport class TruWindowManager {\r\n\r\n constructor(private windowEventHandler: TruWindowEventHandler) { }\r\n\r\n addCustomView = (componentName: string, entities: Array<TruEntityBase>, entityIndex: number) => {\r\n let windowAddViewEventArgs = new TruDesktopViewConfig();\r\n windowAddViewEventArgs.entities = entities;\r\n windowAddViewEventArgs.entityIndex = entityIndex;\r\n windowAddViewEventArgs.componentName = componentName;\r\n this.windowEventHandler.addView(windowAddViewEventArgs);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruActionInvoke } from '../../../services/tru-action-invoke';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\r\nimport { TruEntityAccessor } from '../../../services/tru-entity-accessor';\r\nimport { TruReportManager } from '../../../services/tru-report-manager';\r\nimport { TruTextManager } from '../../../services/tru-text-manager';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruUtil } from '../../../services/tru-util';\r\nimport { TruToolbarButton } from '../../toolbar/button/tru-toolbar-button';\r\nimport { TruToolbarSeparator } from '../../toolbar/separator/tru-toolbar-separator';\r\nimport { TruToolbar } from '../../toolbar/tru-toolbar';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruDesktopResizable } from '../directives/resizable/tru-desktop-resizable';\r\nimport { TruDesktopWindowStateMonitor } from '../directives/window-state-monitor/tru-desktop-window-state-monitor';\r\nimport { WindowConfig } from '../services/tru-desktop-service';\r\nimport { TruDesktopViewEventNotifier } from '../services/tru-desktop-view-event-notifier';\r\nimport { TruWindowCloseEventArgs } from '../services/tru-window-close-event-args';\r\nimport { TruWindowEventHandler } from '../services/tru-window-event-handler';\r\nimport { TruWindowManager } from '../services/tru-window-manager';\r\nimport { TruDesktopStatusbar } from '../statusbar/tru-desktop-statusbar';\r\nimport { TruDesktopView } from '../view/tru-desktop-view';\r\nimport { HasChangesChangedEventArgs } from 'breeze-client';\r\n\n@Component({\n selector: 'tru-desktop-window',\n templateUrl: './tru-desktop-window.html',\n styleUrls: ['../tru-desktop.css', './tru-desktop-window.css'],\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButton,\r\n MatIcon,\r\n TruDesktopResizable,\r\n TruDesktopView,\r\n TruDesktopStatusbar,\r\n TruToolbar,\r\n TruToolbarButton,\r\n TruToolbarSeparator,\r\n TruDesktopWindowStateMonitor\r\n ],\n providers: [\n TruDataContext,\n TruEntityAccessor,\n TruReportManager,\n TruActionInvoke,\n TruDesktopViewEventNotifier,\n TruWindowEventHandler,\n TruWindowManager,\n WindowConfig]\n})\nexport class TruDesktopWindow implements OnInit, AfterViewInit {\n @Input() window: any;\n @Input() viewportCtrl: any;\n @Input() desktopCtrl: any;\n\n constructor(\n private dataContext: TruDataContext,\n private uiNotification: TruUiNotification,\n private textManager: TruTextManager,\n private windowEventHandler: TruWindowEventHandler,\n private elementRef: ElementRef,\n private util: TruUtil,\n private cd: ChangeDetectorRef) {\n }\n\n x = 0;\n y = 0;\n lastX = 0;\n lastY = 0;\n startX = 0;\n startY = 0;\n titleBar: HTMLElement | null = null;\n canCloseFn = undefined;\n canNavigateFn!: () => boolean;\n cancelEditingOnNavigation = false;\n viewportDimensions: any = undefined;\n showNavigation: boolean = true;\n hasChanges: boolean = false;\n\n private subs: Array<Subscription> = [];\n private onHasChangedToken: number = 0;\n\n mouseMove = (event: MouseEvent) => {\n\n this.viewportDimensions = this.viewportCtrl.getViewportDimensions();\n if (event.pageX <= 0 ||\n event.pageX >= this.viewportDimensions.width ||\n this.window.maximized) return;\n\n if (this.titleBar == null) return;\n\n //this.elementRef.nativeElement.setAttribute('style', 'opacity: 0.5;');\n this.x = event.screenX - this.startX;\n this.y = event.screenY - this.startY;\n\n //Top Containment\n this.y = this.y >= 0 ? this.y : 0;\n //Bottom Containment\n this.y = this.y <= this.viewportDimensions.height - this.titleBar.offsetHeight ? this.y : this.viewportDimensions.height - this.titleBar.offsetHeight;\n\n //Left Containment\n this.x = this.x >= -(this.titleBar.offsetWidth + this.titleBar.offsetLeft) ? this.x : -(this.titleBar.offsetWidth + this.titleBar.offsetLeft);\n //Right Containment\n this.x = this.x <= this.viewportDimensions.width - this.titleBar.offsetLeft ? this.x : this.viewportDimensions.width - this.titleBar.offsetLeft;\n\n this.window.top = this.y + 'px';\n this.window.left = this.x + 'px';\n };\n\n mouseUp = (event: MouseEvent) => {\n if (event.pageY <= this.desktopCtrl.options.viewportTop) {\n this.desktopCtrl.maximize(this.window);\n }\n if (event.pageX <= 0) {\n this.desktopCtrl.maximizeLeft(this.window);\n }\n this.viewportDimensions = this.viewportCtrl.getViewportDimensions();\n if (event.pageX >= this.viewportDimensions.width - 1) {\n this.desktopCtrl.maximizeRight(this.window);\n }\n\n //this.elementRef.nativeElement.setAttribute('style', 'opacity: 1.0;');\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.updateNavigationState\n * @module tru.desktop.window\n *\n * @description\n * Updates window navigation buttons based location of the active view in the views array.\n *\n */\n updateNavigationState = () => {\n if (this.window.views === undefined) return;\n var length = this.window.views.length;\n this.disablePrevious = !!(this.window.views[0].active || length === 1);\n this.disableNext = !!(this.window.views[length - 1].active || length === 1);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.isWindowInViewport\n * @module tru.desktop.window\n *\n * @description\n * Determines if the window is within the viewport boundaries.\n *\n */\n isWindowInViewport = () => {\n var windowTop = 0;\n var windowLeft = 0;\n if (!this.window.minimized) {\n windowTop = this.elementRef.nativeElement.offsetTop;\n windowLeft = this.elementRef.nativeElement.offsetLeft;\n } else {\n windowTop = parseInt(this.window.savedPosition.top, 10);\n windowLeft = parseInt(this.window.savedPosition.left, 10);\n }\n if ((windowTop + 10) >= this.viewportCtrl.getViewportDimensions().height ||\n (windowLeft + 60) >= this.viewportCtrl.getViewportDimensions().width) {\n this.window.outOfBounds = true;\n this.window.active = false;\n this.desktopCtrl.activateForemostWindow();\n } else {\n this.window.outOfBounds = false;\n }\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.getWindow\n * @module tru.desktop.window\n *\n * @description\n * Gets the window object.\n *\n * @returns {object} window object.\n */\n getWindow = () => {\n return this.window;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.setWindowTitle\n * @module tru.desktop.window\n *\n * @description\n * Sets the window title.\n *\n * @param {string} value to display in the window title bar.\n */\n setWindowTitle = (value: string) => {\n this.window.title = value;\n };\n\n getWindowTitle = () => {\n return this.window.title;\n };\n\n isActive = (): boolean => {\n return this.window.active;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.goToPreviousView\n * @module tru.desktop.window\n *\n * @description\n * Public method for navigating to the previous view.\n *\n */\n goToPreviousView = () => {\n this.previousView();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.viewIsEditing\n * @module tru.desktop.window\n *\n * @description\n * Checks whether view is editing.\n *\n * @returns {boolean}.\n */\n viewIsEditing = () => {\n var isEditing = false;\n this.window.views.forEach((view: any) => {\n if (view.isEditing === true) {\n isEditing = true;\n }\n }, null);\n return isEditing;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.canNavigate\n * @module tru.desktop.window\n *\n * @description\n * Checks whether navigation can occur..\n *\n * @returns {boolean}.\n */\n canNavigate = () => {\n var canNavigate = true;\n if (this.canNavigateFn !== null) {\n if (this.viewIsEditing()) {\n canNavigate = this!.canNavigateFn();\n }\n }\n return canNavigate;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.removeForwardViews\n * @module tru.desktop.window\n *\n * @description\n * Removes all view(s) forward of the active view.\n *\n */\n removeForwardViews = () => {\n var activeView = this.desktopCtrl.getActiveView(this.window);\n var activeViewIndex = this.window.views.indexOf(activeView);\n for (var i = this.window.views.length; i > activeViewIndex; i--) {\n this.window.views.splice(i, 1);\n }\n this.updateNavigationState();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.addView\n * @module tru.desktop.window\n *\n * @description\n * Removes all inactive view(s) following the active view and inserts a new view.\n *\n */\n addView = (viewConfig: any) => {\n this.removeForwardViews();\n var activeView = this.desktopCtrl.getActiveView(this.window);\n activeView.active = false;\n viewConfig.window = this;\n this.window.views.push(viewConfig);\n this.updateNavigationState();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.getGlobals\n * @module tru.desktop.window\n *\n * @description\n * returns the global values.\n *\n */\n getGlobals = () => {\n return this.window.globals;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.firstView\n * @module tru.desktop.window\n *\n * @description\n *\n */\n firstView = () => {\n if (!this.canNavigate() || this.disablePrevious) return;\n if (this.cancelEditingOnNavigation) this.desktopCtrl.getActiveView(this.window).isEditing = false;\n let activeView = this.desktopCtrl.getActiveView(this.window);\n activeView.active = false;\n this.window.views[0].active = true;\n this.updateNavigationState();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopWindowComponent.firstView\n * @module tru.desktop.window\n *\n * @description\n *\n */\n lastView = () => {\n if (!this.canNavigate() || this.disableNext) return;\n if (this.cancelEditingOnNavigation) this.desktopCtrl.getActiveView(this.window).isEditing = false;\n let activeView = this.desktopCtrl.getActiveView(this.window);\n activeView.active = false;\n this.window.views[this.window.views.length - 1].active = true;\n this.updateNavigationState();\n };;\n\n resizeEventHandler = () => {\n this.isWindowInViewport();\n }\n\n /**\n * @tru.doc event\n * @module tru.desktop.window\n *\n * @description\n *\n */\n onWindowKeydown = (event: KeyboardEvent) => {\n if (!this.window.active || event.key === 'Control' || event.key === 'Shift') return;\n var keySequence = this.util.getKeySequence(event);\n if (keySequence === 'ctrl+s' || keySequence === 'meta+s') { //Save\n this.save();\n event.preventDefault();\n }\n if (keySequence === 'ctrl+shift+r' || keySequence === 'meta+shift+r') { //Restore\n this.revert();\n event.preventDefault();\n }\n if (keySequence === 'alt+left') { //Previous View\n this.previousView();\n event.preventDefault();\n }\n if (keySequence === 'alt+right') { //Next View\n this.nextView();\n event.preventDefault();\n }\n if (keySequence === 'alt+up') { //First View\n this.firstView();\n event.preventDefault();\n }\n if (keySequence === 'alt+down') { //Last View\n this.lastView();\n event.preventDefault();\n }\n var targetIsControl = this.util.targetIsControl(event.target as HTMLElement);\n if (!targetIsControl && event.ctrlKey || event.altKey)\n event.preventDefault();\n };\n\n /**\n * @tru.doc watch\n * @module tru.desktop.window\n *\n * @description\n * Monitors the window's minimized state\n *\n */\n //$scope.$watch('window.minimized',\n // function(value) {\n // if (value && !$scope.window.maximized) {\n // $scope.desktopCtrl.savePosition($scope.window);\n // }\n //}\n // );\n\n disablePrevious = true;\n disableNext = true;\n\n activate = () => {\n var activeWindow = this.desktopCtrl.getActiveWindow();\n if (activeWindow.isModal) return;\n if (this.window.outOfBounds) return;\n this.desktopCtrl.clearActive();\n this.window.active = true;\n this.window.zIndex = this.desktopCtrl.getNextMaxZIndex();\n };\n\n minimize = () => {\n this.desktopCtrl.minimize(this.window);\n };\n\n maximize = () => {\n if (this.window.maximized) {\n this.desktopCtrl.restoreSavedPosition(this.window);\n this.window.maximized = undefined;\n } else {\n this.desktopCtrl.savePosition(this.window);\n this.desktopCtrl.maximize(this.window);\n }\n };\n\n close = (windowCloseEventArgs: TruWindowCloseEventArgs | null = null) => {\n if (this.hasChanges && !this.window.isModal)\n this.uiNotification.confirm('Confirm Action', this.textManager.msgDirtyPreventsClose, false, true, '', 'Ok').then((confirm: boolean) => {});\n else\n this.desktopCtrl.closeWindow(this.window, windowCloseEventArgs);\n };\n\n windowTitleMouseDown = (event: MouseEvent) => {\n if (this.window.maximized) return;\n event.preventDefault();\n this.titleBar = event.srcElement as HTMLElement || event.target as HTMLElement;\n this.x = this.elementRef.nativeElement.children[0].offsetLeft;\n this.y = this.elementRef.nativeElement.children[0].offsetTop;\n this.startX = event.screenX - this.x;\n this.startY = event.screenY - this.y;\n\n this.desktopCtrl.savePosition(this.window);\n\n document.addEventListener('mousemove', this.mouseMove);\n document.addEventListener('mouseup', this.mouseUp);\n\n window.addEventListener('resize', this.resizeEventHandler);\n };\n\n previousView = () => {\n if (!this.canNavigate() || this.disablePrevious) return;\n var activeView = this.desktopCtrl.getActiveView(this.window);\n var activeViewIndex = this.window.views.indexOf(activeView);\n if (this.cancelEditingOnNavigation) activeView.isEditing = false;\n activeView.active = false;\n this.window.views[activeViewIndex - 1].active = true;\n this.updateNavigationState();\n };\n\n nextView = () => {\n if (!this.canNavigate() || this.disableNext) return;\n var activeView = this.desktopCtrl.getActiveView(this.window);\n var activeViewIndex = this.window.views.indexOf(activeView);\n if (this.cancelEditingOnNavigation) activeView.isEditing = false;\n activeView.active = false;\n this.window.views[activeViewIndex + 1].active = true;\n this.updateNavigationState();\n };\n\n save = () => {\n this.dataContext.save();\n };\n\n revert = () => {\n this.dataContext.revert();\n };\n\n ngOnInit(): void {\n this.canCloseFn = this.desktopCtrl.getOptions().canCloseFn;\n this.canNavigateFn = this.desktopCtrl.getOptions().canNavigateFn;\n this.cancelEditingOnNavigation = this.desktopCtrl.getOptions().cancelEditingOnNavigation;\n this.showNavigation = this.window.showNavigation ? true : false;\n this.updateNavigationState();\n\n this.subs.push(this.windowEventHandler.onAddView().subscribe((windiowAddViewEvent: TruDesktopViewConfig) => {\r\n this.addView(windiowAddViewEvent);\r\n }));\n\n this.subs.push(this.windowEventHandler.onSetWindowTitle().subscribe((windowTitle: string) => {\r\n this.setWindowTitle(windowTitle);\r\n }));\n\n this.subs.push(this.windowEventHandler.onClose().subscribe((windowCloseEventArgs: TruWindowCloseEventArgs | null = null) => {\r\n this.close(windowCloseEventArgs);\r\n }));\n\n this.onHasChangedToken = this.dataContext.onHasChanged.subscribe((eventArgs: HasChangesChangedEventArgs) => {\n this.hasChanges = eventArgs.hasChanges;\n });\n\n window.addEventListener('keydown', this.onWindowKeydown);\n }\n\n ngAfterViewInit() {\r\n this.cd.detectChanges();\r\n }\n\n ngOnDestroy() {\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n\n window.removeEventListener('keydown', this.onWindowKeydown);\n window.removeEventListener('resize', this.resizeEventHandler);\n\n this.subs.forEach(s => s.unsubscribe());\n this.dataContext.onHasChanged.unsubscribe(this.onHasChangedToken);\n }\n}\n","<div class=\"desktop-window-container\"\r\n [ngClass]=\"{'desktop-window-active': window.active, 'desktop-window-maximized': window.maximized}\"\r\n [ngStyle]=\"{'z-index': window.zIndex, 'top': window.top, 'left': window.left, 'right': window.right, 'bottom': window.bottom, 'height': window.height, 'width': window.width, 'min-height': window.minHeight, 'minWidth': window.minWidth}\"\r\n [style.offsetLeft.px]=\"x\"\r\n [style.offsetTop.px]=\"y\"\r\n (mousedown)=\"activate()\"\r\n [hidden]=\"window.minimized\"\r\n [truDesktopWindowStateMonitor]=\"window.active\">\r\n <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\" *ngIf=\"showNavigation\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-previous-icon'\" [tooltip]=\"'Go Back One View - [Alt + Left]'\" (click)=\"previousView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-next-icon'\" [tooltip]=\"'Go Forward One View - [Alt + Right]'\" (click)=\"nextView()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-save-icon'\" class=\"desktop-window-save-icon\" [ngClass]=\"{'desktop-window-save-icon-has-changes': hasChanges}\" [tooltip]=\"'Save - [Ctrl + S]'\" (click)=\"save()\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-revert-icon'\" class=\"desktop-window-revert-icon\" [ngClass]=\"{'desktop-window-revert-icon-has-changes': hasChanges}\" [tooltip]=\"'Revert - [Ctrl + Shift + R]'\" (click)=\"revert()\"></tru-toolbar-button>\r\n <tru-toolbar-separator></tru-toolbar-separator>\r\n </tru-toolbar>\r\n </div>\r\n <div class=\"desktop-window-title\" [ngClass]=\"{'no-navigation': !showNavigation}\" (dblclick)=\"maximize()\" (mousedown)=\"windowTitleMouseDown($event)\">\r\n <div class=\"desktop-click-through\">\r\n <div class=\"desktop-text\">{{window.title}}</div>\r\n </div>\r\n </div>\r\n <div class=\"desktop-window-action\" *ngIf=\"!window.isModal\">\r\n <tru-toolbar>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-minimize-icon'\" [tooltip]=\"'Minimize - [Alt + N]'\" (click)=\"minimize()\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"!window.maximized\" [icon]=\"'tru-toolbar-maximize-icon'\" [tooltip]=\"'Maximize Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button *ngIf=\"window.maximized\" [icon]=\"'tru-toolbar-restore-icon'\" [tooltip]=\"'Restore Window - [Alt + M]'\" (click)=\"maximize()\" class=\"maximize\"></tru-toolbar-button>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-close-icon'\" [tooltip]=\"'Close Window - [Alt + SHIFT + X]'\" (click)=\"close(null)\"></tru-toolbar-button>\r\n </tru-toolbar>\r\n </div>\r\n </div>\r\n <fieldset ng-disabled=\"!window.active\" class=\"desktop-window-fieldset\" [ngClass]=\"{'desktop-window-opacity': !window.active}\">\r\n <div class=\"desktop-window-content\">\r\n <div *ngFor=\"let view of window.views\">\r\n <tru-desktop-view [view]=\"view\" [active]=\"view.active\" [hidden]=\"!view.active\"><ng-template></ng-template></tru-desktop-view>\r\n </div>\r\n </div>\r\n </fieldset>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-nw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'nw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-ne\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'ne'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-sw\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'sw'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-se\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'se'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-n\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'n'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-s\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'s'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-w\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'w'\"></span>\r\n <span class=\"desktop-window-resizable-handle desktop-window-resizable-e\" tru-desktop-resizable [window]=\"window\" *ngIf=\"!window.maximized\" [direction]=\"'e'\"></span>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, HostListener, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruDesktopWindow } from '../window/tru-desktop-window';\r\n\n@Component({\n selector: 'tru-desktop-viewport',\n templateUrl: './tru-desktop-viewport.html',\n styleUrls: ['./tru-desktop-viewport.css'],\n imports: [CommonModule, FormsModule, TruDesktopWindow]\n})\nexport class TruDesktopViewport implements OnInit {\n @Input() windows: any;\n @Input() desktopCtrl: any;\n @ViewChildren(TruDesktopWindow) windowComponents!: QueryList<TruDesktopWindow>;\n\n options: any = null;\n\n constructor(private elementRef: ElementRef) { }\n\n getViewportDimensions = () => {\n var viewportContainerElement = this.elementRef.nativeElement.querySelectorAll(\".desktop-viewport-container\")[0];\n this.dimensions = {\n height: viewportContainerElement.clientHeight,\n width: viewportContainerElement.clientWidth\n };\n return this.dimensions;\n };\n\n mouseMove = (event: any) => {\n this.showFillOutline = event.pageY <= this.options.viewportTop;\n this.showLeftOutline = event.pageX <= 0;\n this.showRightOutline = event.pageX >= this.dimensions.width - 1;\n };\n\n mouseUp = (event: any) => {\n this.showFillOutline = false;\n this.showLeftOutline = false;\n this.showRightOutline = false;\n\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n };\n\n dimensions: any = { height: null, width: null };\n showFillOutline = false;\n showLeftOutline = false;\n showRightOutline = false;\n displayViewportDimensions = false;\n logoUrl = undefined;\n\n viewportMouseDown = (event: any) => {\n //Ignore resize events.\n if (event.target.nodeName.toLowerCase() === 'span') return;\n\n document.addEventListener('mousemove', this.mouseMove);\n document.addEventListener('mouseup', this.mouseUp);\n };\n\n /**\n * @tru.doc $watch function\n * @name truDesktopViewportComponent.visibilityWatch\n * @module tru.desktop.viewport\n * @function\n *\n * @description\n * Monitors for visibility changes. This method is responsible for updating the viewport\n * dimensions in situations where the viewport is initially hidden.\n *\n */\n //$watch(function() {\n // //Emulates jQuery's $(element).is(':visible')\n // return this.elementRef.nativeElement.offsetWidth > 0 && this.elementRef.nativeElement.offsetHeight > 0;\n //}, function() {\n // this.dimensions = {\n // height: this.elementRef.nativeElement.clientHeight,\n // width: this.elementRef.nativeElement.clientWidth\n // };\n //});\n\n /**\n * @tru.doc window.resize\n * @name truDesktopViewportComponent.resize\n * @module tru.desktop.viewport\n * @function\n *\n * @description\n * This method is responsible for updating the viewport dimensions when the\n * browser window has been re-sized.\n *\n */\n @HostListener('window:resize', ['$event'])\n onResize(event: any) {\n var viewportContainerElement = this.elementRef.nativeElement.querySelectorAll(\".desktop-viewport-container\")[0];\n this.dimensions = {\n height: viewportContainerElement.clientHeight,\n width: viewportContainerElement.clientWidth\n };\n };\n\n //document.querySelectorAll(\".desktop-viewport-container\")[0].onscroll = function (event) {\n // event.preventDefault();\n // document.querySelectorAll(\".desktop-viewport-container\")[0].scrollTop = 0;\n //};\n\n ngOnInit(): void {\n this.options = this.desktopCtrl.getOptions();\n this.displayViewportDimensions = this.options.displayViewportDimensions;\n this.logoUrl = this.options.logoUrl;\n }\n\n ngOnDestroy() {\n document.removeEventListener('mousemove', this.mouseMove);\n document.removeEventListener('mouseup', this.mouseUp);\n }\n}\n","<div class=\"desktop-viewport-container\" [ngStyle]=\"{'top': options.viewportTop + 'px' }\" (mousedown)=\"viewportMouseDown($event)\">\r\n <span class=\"desktop-viewport-dimensions desktop-text\" *ngIf=\"displayViewportDimensions\">{{dimensions.height}} x {{dimensions.width}}</span>\r\n <div *ngFor=\"let window of windows\" class=\"am-fade-and-scale\">\r\n <tru-desktop-window [window]=\"window\" [viewportCtrl]=\"this\" [desktopCtrl]=\"this.desktopCtrl\"></tru-desktop-window>\r\n </div>\r\n <div class=\"desktop-viewport-fill-outline\" *ngIf=\"showFillOutline\"></div>\r\n <div class=\"desktop-viewport-left-outline\" *ngIf=\"showLeftOutline\"></div>\r\n <div class=\"desktop-viewport-right-outline\" *ngIf=\"showRightOutline\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatIcon } from '@angular/material/icon';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruDesktopViewConfig } from './classes/tru-desktop-view-config';\r\nimport { TruDesktopMenubar } from './menubar/tru-desktop-menubar';\r\nimport { TruDesktopEventHandler } from './services/tru-desktop-event-handler';\r\nimport { TruDesktopService, WindowConfig } from './services/tru-desktop-service';\r\nimport { TruWindowCloseEventArgs } from './services/tru-window-close-event-args';\r\nimport { TruWindowEventArgs } from './services/tru-window-event-args';\r\nimport { TruDesktopStatusbar } from './statusbar/tru-desktop-statusbar';\r\nimport { TruDesktopTaskbar } from './taskbar/tru-desktop-taskbar';\r\nimport { TruDesktopView } from './view/tru-desktop-view';\r\nimport { TruDesktopViewport } from './viewport/tru-desktop-viewport';\r\nimport { TruDesktopWindow } from './window/tru-desktop-window';\r\n\n@Component({\n selector: 'tru-desktop',\n templateUrl: './tru-desktop.html',\n styleUrls: ['./tru-desktop.css'],\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n BrowserAnimationsModule,\n MatButton,\n MatIcon,\n TruDesktopMenubar,\n TruDesktopStatusbar,\n TruDesktopTaskbar,\n TruDesktopViewport,\n TruDesktopWindow,\n TruDesktopView,\n ],\n providers: [TruDesktopService]\n})\nexport class TruDesktop implements OnInit {\n @Input() options: any;\n @ViewChild(TruDesktopViewport) private viewportComponent!: TruDesktopViewport;\n\n constructor(\n private desktopService: TruDesktopService,\n private textManager: TruTextManager,\n private truDesktopEventHandler: TruDesktopEventHandler,\n private util: TruUtil) {\n this.desktop = this.desktopService.createDesktop();\n }\r\n\n minimizeAll = false;\n desktop: any;\n minWindowCascadePosition = 40;\n maxWindowCascadePosition = 100;\n lastWindowCascadePosition = { top: this.minWindowCascadePosition, left: this.minWindowCascadePosition };\n shiftPressed = false;\n altPressed = false;\n xPressed = false;\n logoUrl = null;\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getDesktop\n * @module tru.desktop\n *\n * @description\n * Return an object of desktop.\n *\n * @returns {object} desktop.\n */\n getDesktop = () => {\n return this.desktop;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getOptions\n * @module tru.desktop\n *\n * @description\n * Return an object of desktop options.\n *\n * @returns {object} options.\n */\n getOptions = () => {\n return this.options;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getWindows\n * @module tru.desktop\n *\n * @description\n * Return an array of windows.\n *\n * @returns {array} windows.\n */\n getWindows = () => {\n return this.windows;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getNextMaxZIndex\n * @module tru.desktop\n *\n * @description\n * Iterates through all window objects in the windows array to find the max z-index\n * and increases the value found by 1.\n *\n * @returns {int}\n */\n getNextMaxZIndex = () => {\n var max = 0;\n var tmp;\n for (var i = this.windows.length - 1; i >= 0; i--) {\n tmp = this.windows[i].zIndex;\n if (tmp > max) max = tmp;\n }\n return ++max;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.clearActive\n * @module tru.desktop\n *\n * @description\n * Iterates through all window objects in the windows\n * and sets the active property to false.\n *\n */\n clearActive = () => {\n this.windows.forEach((window: any) => {\n window.active = false;\n });\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getActiveWindow\n * @module tru.desktop\n *\n * @description\n * Gets the active window.\n *\n * @returns {object} view object.\n */\n getActiveWindow = (): any => {\n var activeWindow = null;\n this.windows.forEach((wdw: any) => {\n if (wdw.active === true) {\n activeWindow = wdw;\n }\n });\n return activeWindow;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.getActiveView\n * @module tru.desktop\n *\n * @description\n * Gets the active view.\n *\n * @returns {object} view object.\n */\n getActiveView = (wdw: any) => {\n var activeView = null;\n wdw.views.forEach((view: any) => {\n if (view.active === true) {\n activeView = view;\n }\n });\n return activeView;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.allWindowsAreMinimized\n * @module tru.desktop\n *\n * @description\n * Iterates through windows to determine if all are minimized.\n *\n */\n allWindowsAreMinimized = () => {\n var allMinimized = true;\n this.windows.forEach((window: any) => {\n if (!window.minimized) {\n allMinimized = false;\n }\n });\n return allMinimized;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.hideShowAll\n * @module tru.desktop\n *\n * @description\n * Hides/shows all windows\n *\n */\n hideShowAll = () => {\n this.minimizeAll = this.allWindowsAreMinimized() ? false : !this.minimizeAll;\n this.windows.forEach((wdw: any) => {\n if (wdw.outOfBounds) this.recover(wdw);\n wdw.active = false;\n wdw.minimized = this.minimizeAll;\n });\n this.activateForemostWindow();\n return this.minimizeAll;\n };\n\n /**\r\n * @tru.doc function\r\n * @name truDesktopComponent.findWindowViewDirective\r\n * @module tru.desktop\r\n *\r\n * @description\r\n * Looks for previously open window with a view directive\r\n *\r\n */\r\n findWindowViewDirective = (windowViewDirective: any) => {\r\n for (let i = 0; i < this.windows.length; i++) {\r\n for (let j = 0; j < this.windows[i].views.length; j++) {\r\n if (this.windows[i].views[0].viewDirective === windowViewDirective)\r\n return this.windows[i];\r\n }\r\n }\r\n return null;\r\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.openWindow\n * @module tru.desktop\n *\n * @description\n * Displays a new window. All window properties defined by the application developer will be\n * overlaid here before displaying the window\n *\n */\n openWindow = (windowConfigOverlays: any, singleInstance: any): WindowConfig => {\n let activeWindow = this.getActiveWindow();\r\n if (activeWindow && activeWindow.isModal) {\r\n activeWindow.invalidOperation = true;\r\n return activeWindow;\r\n }\r\n\r\n if (singleInstance) {\r\n let window = this.findWindowViewDirective(windowConfigOverlays.views[0].viewDirective);\r\n if (window) {\r\n this.updateWindowState(window);\r\n return window;\r\n }\r\n }\r\n\r\n if (windowConfigOverlays.isModal) {\r\n let heightOffset = (parseInt(windowConfigOverlays.height, 10) / 2) + 30;\r\n let widthOffset = (parseInt(windowConfigOverlays.width, 10) / 2);\r\n windowConfigOverlays.top = 'calc(50% - ' + heightOffset + 'px )';\r\n windowConfigOverlays.left = 'calc(50% - ' + widthOffset + 'px )';\r\n }\r\n\r\n this.clearActive();\r\n let configuredWindow = this.configureWindow(windowConfigOverlays);\r\n configuredWindow.views = this.configureViews(windowConfigOverlays, configuredWindow);\r\n if (!configuredWindow.isModal) {\r\n configuredWindow.cascadeWindow = false;\r\n this.savePosition(configuredWindow);\r\n this.maximize(configuredWindow);\r\n this.windows.push(configuredWindow);\r\n } else {\r\n this.windows.push(configuredWindow);\r\n }\n return configuredWindow;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.configureWindow\n * @module tru.desktop\n *\n * @description\n * Creates a new window instance.\n *\n */\n configureWindow = (windowConfigOverlays: any) => {\n var windowConfigInstance = Object.assign({}, this.desktop.windowConfig);\n windowConfigInstance.savedPosition = Object.create({ top: 0, left: 0, right: 0, bottom: 0, height: 0, width: 0 });\n windowConfigInstance.zIndex = this.getNextMaxZIndex();\n //windowConfigInstance.globals = Object.assign({}, $rootScope.$eval(this.options.globals));\n return Object.assign(windowConfigInstance, windowConfigOverlays);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.configureViews\n * @module tru.desktop\n *\n * @description\n * Creates one or more view instances\n *\n */\n configureViews = (windowConfigOverlays: any, configuredWindow: any): Array<any> => {\n let configuredViews: Array<any> = [];\n windowConfigOverlays.views.forEach((view: any) => {\n let configuredView = new TruDesktopViewConfig();\r\n configuredView.componentName = view.componentName;\r\n configuredView.entities = view.entities;\r\n configuredView.entityIndex = view.entityIndex;\r\n configuredView.isDirty = view.isDirty;\r\n configuredView.isEditing = view.isEditing;\r\n configuredView.isInvalid = view.isValid;\r\n configuredView.openAsDetaiView = view.openAsDetailView;\n //viewConfigInstance.globals = this.options.globals;\n //let configuredView = Object.assign(viewConfigInstance, view);\n configuredView.window = configuredWindow;\n configuredViews.push(configuredView);\n });\n return configuredViews;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.closeWindow\n * @module tru.desktop\n *\n * @description\n * Remove a window {object} from the windows array.\n *\n * @returns {boolean} returns true if window was closed, false if not closed.\n */\n closeWindow = (wdw: any, windowCloseEventArgs: TruWindowCloseEventArgs | null = null) => {\n if (!this.options.allowDirtyClose && wdw.isDirty) {\n alert(\"Unsaved Changes. Save changes before closing window.\");\n return false;\n }\n\n if (!this.options.allowInvalidClose && wdw.isInvalid) {\n alert(\"Data is invalid. Correct Invalid data before closing window.\");\n return false;\n }\n\n if (this.options.canCloseFn !== undefined) {\n if (this.options.canCloseFn(wdw)) {\n this.windows.splice(this.windows.indexOf(wdw), 1);\n this.activateForemostWindow();\n wdw.onClose$.next(windowCloseEventArgs);\n wdw.closed();\n return true;\n };\n } else {\n this.windows.splice(this.windows.indexOf(wdw), 1);\n this.activateForemostWindow();\n wdw.onClose$.next(windowCloseEventArgs);\n wdw.closed();\n return true;\n }\n return false;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.activateForemostWindow\n * @module tru.desktop\n *\n * @description\n * Set the foremost window to an active state\n *\n */\n activateForemostWindow = () => {\n var foremost = undefined;\n for (var i = 0; i < this.windows.length; i++) {\n if ((foremost === undefined || this.windows[i].zIndex > foremost.zIndex) && !this.windows[i].minimized && !this.windows[i].outOfBounds)\n foremost = this.windows[i];\n }\n if (foremost)\n foremost.active = true;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.activateNextWindow\n * @module tru.desktop\n *\n * @description\n * Set the next window to an active state\n *\n */\n activateNextWindow = (activeWindowLocation: any) => {\n if (this.windows.length <= 1) return;\n var backend = this.windows.slice(activeWindowLocation);\n var frontend = this.windows.slice(0, activeWindowLocation - 1);\n var sorted = backend.concat(frontend);\n var nextWindow = undefined;\n for (var i = 0; i < sorted.length; i++) {\n if (!sorted[i].minimized && !sorted[i].outOfBounds && !nextWindow)\n nextWindow = sorted[i];\n }\n\n if (nextWindow) {\n this.clearActive();\n nextWindow.zIndex = this.getNextMaxZIndex();\n nextWindow.active = true;\n }\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.activatePreviousWindow\n * @module tru.desktop\n *\n * @description\n * Set the previous window to an active state\n *\n */\n activatePreviousWindow = (activeWindowLocation: any) => {\n if (this.windows.length <= 1) return;\n var backend = this.windows.slice(activeWindowLocation);\n var frontend = this.windows.slice(0, activeWindowLocation - 1);\n var sorted = backend.concat(frontend);\n var nextWindow = undefined;\n for (var i = sorted.length - 1; i >= 0; i--) {\n if (!sorted[i].minimized && !sorted[i].outOfBounds && !nextWindow)\n nextWindow = sorted[i];\n }\n\n if (nextWindow) {\n this.clearActive();\n nextWindow.zIndex = this.getNextMaxZIndex();\n nextWindow.active = true;\n }\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.minimize\n * @module tru.desktop\n *\n * @description\n * Visually removes window from the viewport.\n *\n */\n minimize = (window: any) => {\n this.savePosition(window);\n\n window.active = false;\n window.minimized = true;\n this.activateForemostWindow();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.maximize\n * @module tru.desktop\n *\n * @description\n * Positions window such that it fills the whole viewport.\n *\n */\n maximize = (window: any) => {\n window.top = 0;\n window.left = 0;\n window.right = 0;\n window.bottom = 0;\n window.height = 'auto';\n window.width = '100%';\n window.maximized = 'fill';\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.maximizeLeft\n * @module tru.desktop\n *\n * @description\n * Positions window such that it fills the left portion viewport.\n *\n */\n maximizeLeft = (window: any) => {\n window.split = true;\n window.top = 0;\n window.left = 0;\n window.bottom = 0;\n window.width = '50%';\n window.height = 'auto';\n window.maximized = 'left';\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.maximizeRight\n * @module tru.desktop\n *\n * @description\n * Positions window such that it fills the right portion viewport.\n *\n */\n maximizeRight = (window: any) => {\n window.top = 0;\n window.left = '50%';\n window.right = 0;\n window.bottom = 0;\n window.width = '50%';\n window.height = 'auto';\n window.maximized = 'right';\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.recover\n * @module tru.desktop\n *\n * @description\n * Brings window back into view when it has escaped the viewport.\n *\n */\n recover = (window: any) => {\n window.active = true;\n window.outOfBounds = false;\n window.minimized = false;\n window.zIndex = this.getNextMaxZIndex();\n this.cascadeWindow(window);\n this.clearActive();\n this.activateForemostWindow();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.restore\n * @module tru.desktop\n *\n * @description\n *\n */\n restore = (wdw: any) => {\n if (wdw.maximized === 'fill') {\n this.maximize(wdw);\n } else if (wdw.maximized === 'left') {\n this.maximizeLeft(wdw);\n } else if (wdw.maximized === 'right') {\n this.maximizeRight(wdw);\n }\n this.updateWindowState(wdw);\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.bringToFront\n * @module tru.desktop\n *\n * @description\n *\n */\n updateWindowState = (wdw: any) => {\r\n if (wdw.outOfBounds) {\r\n this.recover(wdw);\r\n return;\r\n }\r\n\r\n if (wdw.maximized === 'fill') {\r\n this.maximize(wdw);\r\n } else if (wdw.maximized === 'left') {\r\n this.maximizeLeft(wdw);\r\n } else if (wdw.maximized === 'right') {\r\n this.maximizeRight(wdw);\r\n }\r\n this.clearActive();\r\n wdw.active = true;\r\n wdw.minimized = false;\r\n wdw.zIndex = this.getNextMaxZIndex();\r\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.restoreSavedPosition\n * @module tru.desktop\n *\n * @description\n * Set the windows last know position to the current position.\n *\n */\n restoreSavedPosition = (wdw: any) => {\n this.clearActive();\n wdw.top = wdw.savedPosition.top;\n wdw.left = wdw.savedPosition.left;\n wdw.right = wdw.savedPosition.right;\n wdw.bottom = wdw.savedPosition.bottom;\n wdw.height = wdw.savedPosition.height;\n wdw.width = wdw.savedPosition.width;\n wdw.maximized = undefined;\n wdw.minimized = undefined;\n wdw.active = true;\n wdw.minimized = false;\n wdw.zIndex = this.getNextMaxZIndex();\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.savePosition\n * @module tru.desktop\n *\n * @description\n * Save the windows last know position.\n *\n */\n savePosition = (wdw: any) => {\n wdw.savedPosition.top = wdw.top;\n wdw.savedPosition.left = wdw.left;\n wdw.savedPosition.right = wdw.right;\n wdw.savedPosition.bottom = wdw.bottom;\n wdw.savedPosition.height = wdw.height;\n wdw.savedPosition.width = wdw.width;\n };\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.closeWindow\n * @module tru.desktop\n *\n * @description\n * Moves a window to the next cascade position.\n *\n */\n cascadeWindow = (window: any) => {\n if (!this.options.enableWindowCascading || window.isModal) return;\n this.lastWindowCascadePosition.top += 10;\n this.lastWindowCascadePosition.left += 10;\n if (this.lastWindowCascadePosition.top > this.maxWindowCascadePosition)\n this.lastWindowCascadePosition.top = this.minWindowCascadePosition;\n if (this.lastWindowCascadePosition.left > this.maxWindowCascadePosition)\n this.lastWindowCascadePosition.left = this.minWindowCascadePosition;\n\n window.top = this.lastWindowCascadePosition.top + 'px';\n window.left = this.lastWindowCascadePosition.left + 'px';\n };\n\n /**\n * @tru.doc event\n * @module tru.desktop\n *\n * @description\n *\n */\n onKeyDown = (event: any) => {\n if (event.key === 'Control' || event.key === 'Shift') return;\n if (event.altKey)\n event.preventDefault();\n var keySequence = this.util.getKeySequence(event);\n if (keySequence === 'alt+m') { //Maximize\n var activeWindow = this.getActiveWindow();\n if (activeWindow === null) return;\n if (!activeWindow.maximized) {\n this.savePosition(activeWindow);\n this.maximize(activeWindow);\n } else if (activeWindow.maximized === 'right' || activeWindow.maximized === 'left')\n this.maximize(activeWindow);\n else\n this.restoreSavedPosition(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+n') { //Minimize\n var activeWindow = this.getActiveWindow();\n if (activeWindow === null || activeWindow.minimized) return;\n this.minimize(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+w') { //Cycles Forward\n var index = this.windows.indexOf(this.getActiveWindow());\n this.activateNextWindow(index + 1);\n event.preventDefault();\n }\n if (keySequence === 'shift+alt+w') { //Cycles Backward\n var index = this.windows.indexOf(this.getActiveWindow());\n this.activatePreviousWindow(index + 1);\n event.preventDefault();\n }\n if (keySequence === 'shift+alt+x' && !(this.shiftPressed && this.altPressed && this.xPressed)) { //Close\n var activeWindow = this.getActiveWindow();\n if (!activeWindow) return;\n this.closeWindow(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+l') { //Maximize left\n var activeWindow = this.getActiveWindow();\n if (!activeWindow.maximized) {\n this.savePosition(activeWindow);\n this.maximizeLeft(activeWindow);\n } else if (activeWindow.maximized === 'right' || activeWindow.maximized === 'fill')\n this.maximizeLeft(activeWindow);\n else\n this.restoreSavedPosition(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+r') { //Maximize right\n var activeWindow = this.getActiveWindow();\n if (!activeWindow.maximized) {\n this.savePosition(activeWindow);\n this.maximizeRight(activeWindow);\n } else if (activeWindow.maximized === 'left' || activeWindow.maximized === 'fill')\n this.maximizeRight(activeWindow);\n else\n this.restoreSavedPosition(activeWindow);\n event.preventDefault();\n }\n if (keySequence === 'alt+d') { //Toggle Desktop\n //this.desktopShown = this.hideShowAll();\n event.preventDefault();\n }\n\n if (event.shiftKey)\n this.shiftPressed = true;\n if (event.altKey)\n this.altPressed = true;\n if (event.keyCode === 88)\n this.xPressed = true;\n }\n\n onKeyUp = (event: any) => {\n if (event.shiftKey)\n this.shiftPressed = false;\n if (event.altKey)\n this.altPressed = false;\n if (event.keyCode === 88)\n this.xPressed = false;\n }\n\n /**\n * @tru.doc function\n * @name truDesktopComponent.handleSelectAttempt\n * @module tru.desktop\n *\n * @description\n * Prevents the user from highlight desktop elements.\n *\n */\n handleSelectAttempt = (e: any) => {\n var nodeName = e.target.nodeName.toLowerCase();\n let richTextElement = this.util.findClosestAncestorByClass(e.target, '.rich-text');\n if (\n nodeName === 'input' ||\n nodeName === 'textarea' ||\n nodeName === 'select' ||\n nodeName === '#text' ||\n richTextElement) return true;\n\n if (window.event) { e.preventDefault(); }\n return true;\n }\n\n windows: Array<any> = [];\n\n ngOnInit(): void {\r\n this.logoUrl = this.options.logoUrl;\r\n this.options = Object.assign(this.desktop.options, this.options);\r\n this.options.viewportTop = this.options.menubarConfig !== undefined ? this.options.menubarHeight + 1 : 0;\r\n this.truDesktopEventHandler.onOpen().subscribe((windiowEvent: TruWindowEventArgs) => {\r\n this.openWindow(windiowEvent, false);\r\n });\r\n document.onselectstart = this.handleSelectAttempt;\r\n window.addEventListener('keydown', this.onKeyDown);\r\n window.addEventListener('keyup', this.onKeyUp);\r\n window.onbeforeunload = (e: any) => {\r\n let hasChanges = this.viewportComponent.windowComponents.filter((w: TruDesktopWindow) => { return w.hasChanges; })\r\n if (hasChanges.length) {\r\n e = e || window.event;\r\n var msg = this.textManager.msgConfirmExitWithChangesPending;\r\n\r\n // For IE and Firefox\r\n if (e) {\r\n e.returnValue = msg;\r\n }\r\n\r\n // For Safari / chrome\r\n return msg;\r\n }\r\n return null;\r\n };\r\n }\n\n ngOnDestroy() {\n window.removeEventListener('keydown', this.onKeyDown);\n window.removeEventListener('keyup', this.onKeyUp);\n }\n}\n","<div class=\"desktop-wrapper\">\r\n\r\n <div class=\"desktop-menubar-container\" [ngStyle]=\"{'height': options.menubarHeight + 'px'}\">\r\n <tru-desktop-menubar [desktopCtrl]=\"this\"></tru-desktop-menubar>\r\n </div>\r\n\r\n <tru-desktop-viewport [windows]=\"windows\" [desktopCtrl]=\"this\"></tru-desktop-viewport>\r\n\r\n <tru-desktop-taskbar [windows]=\"windows\" [desktopCtrl]=\"this\"></tru-desktop-taskbar>\r\n\r\n <img class=\"desktop-viewport-logo\" data-ng-show=\"logoUrl\" alt=\"\">\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class TruWindowActionEventHandler {\r\n\r\n private save$: Subject<null> = new Subject();\r\n private revert$: Subject<null> = new Subject();\r\n\r\n onSave = () => {\r\n return this.save$;\r\n }\r\n\r\n onRevert = () => {\r\n return this.revert$;\r\n }\r\n\r\n save = () => {\r\n this.save$.next(null);\r\n }\r\n\r\n revert = () => {\r\n this.revert$.next(null);\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, Inject, OnInit, signal } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\n@Component({\r\n selector: 'tru-error-dialog',\r\n templateUrl: './tru-error-dialog.html',\r\n styleUrls: ['./tru-error-dialog.css'],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MaterialModule,\r\n MatSidenav,\r\n MatExpansionModule\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class TruErrorDialog implements OnInit {\r\n title: string;\r\n message: string;\r\n stackTrace: string;\r\n\r\n constructor(\r\n public dialogRef: MatDialogRef<TruErrorDialog>,\r\n @Inject(MAT_DIALOG_DATA) public data: TruErrorDialog) {\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.stackTrace = data.stackTrace;\r\n }\r\n\r\n readonly panelOpenState = signal(false);\r\n\r\n ngOnInit() {}\r\n\r\n onDismiss(): void {\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n\r\n","<div mat-dialog-title class=\"tru-error-dialog-title mat-dialog-title\">\r\n <div class=\"mat-dialog-title-container\">\r\n <mat-icon [svgIcon]=\"'error-icon'\"\r\n title=\"Error\">\r\n </mat-icon>\r\n Error - {{title}}\r\n </div>\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content\">\r\n <div class=\"tru-about-description\">\r\n {{message}}\r\n </div>\r\n <mat-expansion-panel *ngIf=\"stackTrace\"\r\n (opened)=\"panelOpenState.set(true)\"\r\n (closed)=\"panelOpenState.set(false)\">\r\n <mat-expansion-panel-header>\r\n <mat-panel-description>\r\n Show Stack Trace\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n <p>{{stackTrace}}</p>\r\n </mat-expansion-panel>\r\n</div>\r\n\r\n<div mat-dialog-actions class=\"mat-dialog-actions\">\r\n <button mat-raised-button (click)=\"onDismiss()\">Close</button>\r\n</div>\r\n","export class TruErrorDialogConfig {\r\n constructor(\r\n public title: string,\r\n public message: string,\r\n public stackTrace: string) {\r\n }\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\n\r\nexport class TruServerError {\r\n id: string;\r\n type: string;\r\n code: number;\r\n title: string = '';\r\n message: string | null | undefined = undefined;\r\n data: object | null = null;\r\n stackTrace: string;\r\n status: number;\r\n statusText: string;\r\n componentName: string = '';\r\n\r\n constructor(error: HttpErrorResponse) {\r\n let parsedError = JSON.parse(error.error);\r\n if (parsedError.ExceptionType && parsedError.ExceptionType === 'tru-db-custom-exception') {\r\n parsedError = JSON.parse(parsedError.Message);\r\n this.id = parsedError.$id;\r\n this.type = 'tru-db-custom-exception';\r\n this.code = parsedError.Code;\r\n this.title = parsedError.data.exceptionObj.title;\r\n this.message = parsedError.message;\r\n this.stackTrace = parsedError.StackTrace;\r\n this.status = error.status;\r\n this.statusText = error.statusText;\r\n this.data = parsedError.data.exceptionObj;\r\n this.componentName = parsedError.componentName;\r\n } else {\r\n this.id = parsedError.$id;\r\n this.type = parsedError.$type;\r\n this.code = parsedError.Code;\r\n this.message = parsedError.Message;\r\n this.stackTrace = parsedError.StackTrace;\r\n this.status = error.status;\r\n this.statusText = error.statusText;\r\n }\r\n }\r\n}\r\n","import { ApplicationRef, ComponentFactoryResolver, EmbeddedViewRef, Injectable, Injector } from \"@angular/core\";\r\nimport { TruUiNotification } from \"./tru-ui-notification\";\r\nimport { TruTextManager } from \"./tru-text-manager\";\r\nimport { TruErrorDialog } from \"../components/error-dialog/tru-error-dialog\";\r\nimport { TruErrorDialogConfig } from \"../components/error-dialog/classes/tru-error-dialog-config\";\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { HttpClient, HttpErrorResponse } from \"@angular/common/http\";\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruServerError } from \"../classes/tru-server-error\";\r\nimport { TruComponentLookup } from \"./tru-component-lookup\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruErrorManager {\r\n private baseUrl: string;\r\n private appName: string;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private dialog: MatDialog,\r\n private textManager: TruTextManager,\r\n private uiNotification: TruUiNotification,\r\n private componentLookup: TruComponentLookup,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private injector: Injector,\r\n private appEnvironment: TruAppEnvironment) {\r\n this.baseUrl = appEnvironment.appUri;\r\n this.appName = appEnvironment.appName;\r\n }\r\n\r\n private handleClientSideError = (error: HttpErrorResponse) => {\r\n\r\n }\r\n\r\n private handleServerSideError = (error: HttpErrorResponse) => {\r\n let serverError = new TruServerError(error);\r\n if (serverError.type === 'tru-db-custom-exception') {\r\n var component = this.componentLookup.get(serverError.componentName);\r\n this.dialog.open(component, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: serverError\r\n });\r\n } else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {\r\n\r\n let dialogConfig = new TruErrorDialogConfig(\r\n 'Require Valid Choice Exception',\r\n error.message,\r\n serverError.stackTrace);\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n } else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {\r\n\r\n let dialogConfig = new TruErrorDialogConfig(\r\n 'Duplicate Key Error',\r\n error.message\r\n .replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')\r\n .replace('dbo.', '')\r\n .replace('UIX_', '')\r\n .replace('The statement has been terminated.', ''),\r\n serverError.stackTrace );\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n\r\n } else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {\r\n\r\n let dialogConfig = new TruErrorDialogConfig(\r\n 'Concurrent saves not allowed',\r\n 'Please review any changes and save again.',\r\n serverError.stackTrace);\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n } else if (serverError.type.lastIndexOf('TruDB.EfMssql.Runtime.DataError', 0) === 0) {\r\n this.uiNotification.error(\r\n this.textManager.fmtDataError(serverError.type),\r\n [this.textManager.fmtExceptionToShow(serverError.stackTrace)])\r\n } else {\r\n var message = this.textManager.fmtErrorToShow(serverError);\r\n let dialogConfig = new TruErrorDialogConfig(\r\n serverError.type,\r\n serverError.message as string,\r\n serverError.stackTrace);\r\n\r\n this.dialog.open(TruErrorDialog, {\r\n disableClose: true,\r\n minWidth: \"400px\",\r\n maxWidth: \"600px\",\r\n data: dialogConfig\r\n });\r\n }\r\n }\r\n\r\n handleError = (error: HttpErrorResponse) => {\r\n if (error.type)\r\n this.handleClientSideError(error);\r\n else\r\n this.handleServerSideError(error);\r\n }\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n HttpErrorResponse,\r\n} from \"@angular/common/http\";\r\nimport { Observable, of, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\nimport { TruErrorManager } from \"../../../services/tru-error-manager\";\r\n\r\n@Injectable()\r\nexport class TruErrorInterceptor implements HttpInterceptor {\r\n constructor(private errorManager: TruErrorManager) { }\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(\r\n catchError((error: HttpErrorResponse) => {\r\n if (error.status !== 401 && !(error.error instanceof Blob))\r\n this.errorManager.handleError(error);\r\n return next.handle(request);\r\n })\r\n );\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-column',\r\n templateUrl: './tru-column.html',\r\n styleUrls: ['./tru-column.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruColumn {\r\n constructor() { }\r\n}\r\n","<li>\r\n <div class=\"tvl-container-grid js-grid\">\r\n <div class=\"tvl-container-grid-col\">\r\n <div class=\"tvl-container-panel\">\r\n <ul class=\"tvl-container-vList\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</li>\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-form',\r\n templateUrl: './tru-form.html',\r\n styleUrls: ['./tru-form.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruForm implements AfterViewInit {\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n ngAfterViewInit(): void {\r\n this.updateLayout();\r\n }\r\n\r\n private updateLayout = () => {\r\n let rowComponentElements = this.element.nativeElement.querySelectorAll('.tvl-container-hList');\r\n rowComponentElements.forEach((rowComponentElement: any) => {\r\n var numberOfItems = rowComponentElement.children.length;\r\n var childWidth = 100 / numberOfItems;\r\n [...rowComponentElement.children].forEach((rowChildElement: any, index: number) => {\r\n if (index === numberOfItems - 1) {\r\n rowChildElement.style['width'] = 'calc(' + childWidth + '% - 10px)';\r\n } else {\r\n rowChildElement.style['width'] = 'calc(' + childWidth + '% - 5px)';\r\n }\r\n if (index > 0)\r\n rowChildElement.style['margin-left'] = '5px';\r\n });\r\n });\r\n }\r\n}\r\n","<div class=\"tvl-container-grid js-grid\">\r\n <div class=\"tvl-container-grid-col\">\r\n <div class=\"tvl-container-panel\">\r\n <ul class=\"tvl-container-hList\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-group-box',\r\n templateUrl: './tru-group-box.html',\r\n styleUrls: ['./tru-group-box.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruGroupBox {\r\n constructor() { }\r\n}\r\n","<div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-row',\r\n templateUrl: './tru-row.html',\r\n styleUrls: ['./tru-row.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruRow {\r\n constructor() { }\r\n}\r\n","<li>\r\n <div class=\"tvl-container-grid js-grid\">\r\n <div class=\"tvl-container-grid-col\">\r\n <div class=\"tvl-container-panel\">\r\n <ul class=\"tvl-container-hList\">\r\n <ng-content></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n</li>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatTab, MatTabsModule } from '@angular/material/tabs';\r\nimport { TruTabGroupEventNotifier } from '../services/tru-tab-group-event-notifier';\r\n\r\n@Component({\r\n selector: 'tru-tab',\r\n templateUrl: './tru-tab.html',\r\n styleUrls: ['./tru-tab.css'],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [TruTabGroupEventNotifier]\r\n})\r\nexport class TruTab {\r\n @Input() view!: any;\r\n @Input() label!: string;\r\n @ViewChild(MatTab) public matTab!: MatTab;\r\n\r\n constructor(private tabGroupEventNotifier: TruTabGroupEventNotifier) { }\r\n\r\n notifyListeners = (isActive: boolean) => {\r\n this.tabGroupEventNotifier.isActive = isActive;\r\n }\r\n}\r\n","<mat-tab [label]=\"label\" [disabled]=\"!view.window.isActive()\">\r\n <ng-content></ng-content>\r\n</mat-tab>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, ContentChildren, QueryList, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatTab, MatTabChangeEvent, MatTabGroup, MatTabsModule } from '@angular/material/tabs';\r\nimport { TruTab } from '../tab/tru-tab';\r\n\r\n@Component({\r\n selector: 'tru-tab-group',\r\n templateUrl: './tru-tab-group.html',\r\n styleUrls: ['./tru-tab-group.css'],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruTabGroup {\r\n @ViewChild(MatTabGroup) public tabGroup!: MatTabGroup;\r\n @ContentChildren(TruTab) protected tabs!: QueryList<TruTab>;\r\n\r\n constructor() {}\r\n\r\n public ngAfterViewInit() {\r\n const matTabsFromQueryList = this.tabs.map((tab) => tab.matTab);\r\n const list = new QueryList<MatTab>();\r\n list.reset([matTabsFromQueryList]);\r\n this.tabGroup._tabs = list;\r\n }\r\n\r\n onChange(event: MatTabChangeEvent) {\r\n const selectedTabLabel = event.tab.textLabel;\r\n this.tabs.forEach((tab) => {\r\n if (selectedTabLabel === tab.label) {\r\n tab.notifyListeners(true);\r\n } else {\r\n tab.notifyListeners(false);\r\n }\r\n })\r\n }\r\n}\r\n","<mat-tab-group #tabGroup\r\n (selectedTabChange)=\"onChange($event)\"\r\n animationDuration=\"0ms\">\r\n <ng-content #outlet></ng-content>\r\n</mat-tab-group>\r\n","import { Component } from '@angular/core';\r\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\r\nimport { TruAuth } from './services/tru-auth';\r\nimport { TruAuthLoginRequest } from \"./classes/tru-auth-login-request\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { finalize } from 'rxjs';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\n\r\n@Component({\r\n selector: 'tru-login',\r\n templateUrl: './tru-login.html',\r\n styleUrls: ['./tru-login.css'],\r\n standalone: false\r\n})\r\nexport class TruLogin {\r\n loginForm = new FormGroup({\r\n username: new FormControl('', Validators.required),\r\n password: new FormControl('', Validators.required)\r\n });\r\n loginError: string = \"\";\r\n isLoggingIn: boolean = false;\r\n title: string;\r\n\r\n constructor(\r\n private auth: TruAuth,\r\n private appEnvironment: TruAppEnvironment) {\r\n this.title = appEnvironment.loginFormTitle;\r\n }\r\n\r\n get f() {\r\n return this.loginForm.controls;\r\n }\r\n\r\n isDisabled = (): boolean => {\r\n return !this.f.username.value || !this.f.password.value || this.isLoggingIn;\r\n }\r\n\r\n onSubmit() {\r\n const loginRequest: TruAuthLoginRequest = {\r\n username: this.f.username.value!,\r\n password: this.f.password.value!\r\n };\r\n\r\n if (loginRequest.username && loginRequest.password) {\r\n this.isLoggingIn = true;\r\n this.auth\r\n .login(loginRequest).pipe(\r\n finalize(() => {\r\n this.isLoggingIn = false; \r\n })\r\n )\r\n .subscribe(() => {\r\n this.isLoggingIn = false;\r\n }\r\n ,(error: HttpErrorResponse) => {\r\n if (error.status === 401) {\r\n this.loginError = \"Incorrect username and/or password\"\r\n }\r\n else {\r\n this.loginError = \"Invalid Login - Error: \" + error.status;\r\n }\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> {{title}} </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n","import { Observable, of } from \"rxjs\";\r\nimport { TruAuthToken } from \"./tru-auth-token\";\r\nimport { ITruUser, TruUser } from \"../../../services/tru-user\";\r\nimport { TruAuthStrategy } from \"./tru-auth-config\";\r\n\r\nexport class TruAuthJwtStrategy implements TruAuthStrategy<TruAuthToken> {\r\n private readonly JWT_ACCESS_TOKEN = \"ACCESS_TOKEN\";\r\n private readonly JWT_REFRESH_TOKEN = \"REFRESH_TOKEN\";\r\n\r\n doLoginUser(token: TruAuthToken): void {\r\n localStorage.setItem(this.JWT_ACCESS_TOKEN, JSON.stringify(token.accessToken));\r\n localStorage.setItem(this.JWT_REFRESH_TOKEN, JSON.stringify(token.refreshToken));\r\n }\r\n\r\n doLogoutUser(): void {\r\n localStorage.removeItem(this.JWT_ACCESS_TOKEN);\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return !!this.getJwtToken();\r\n }\r\n\r\n createUser(user: TruUser): Observable<any> {\r\n let jwtData = this.getDecodedJwtJsonData() as any;\r\n console.log(jwtData);\r\n let userData: ITruUser = {\r\n activeUserRef: jwtData.UserRef,\r\n firstName: jwtData.FirstName,\r\n lastName: jwtData.LastName,\r\n email: jwtData.Email,\r\n username: jwtData['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'],\r\n roles: jwtData['http://schemas.microsoft.com/ws/2008/06/identity/claims/role']\r\n }\r\n return of(user.create(userData));\r\n }\r\n\r\n getJwtToken() {\r\n try {\r\n return JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\r\n } catch (e) {\r\n return null;\r\n } \r\n }\r\n\r\n getDecodedJwtJsonData() {\r\n let token = this.getJwtToken();\r\n let payload = {}\r\n if (token && token !== \"undefined\") {\r\n const encodedPayload = token.split(\".\")[1];\r\n const payloadStr = window.atob(encodedPayload);\r\n\r\n payload = JSON.parse(payloadStr);\r\n }\r\n\r\n return payload;\r\n }\r\n\r\n getToken() {\r\n var token = this.getJwtToken();\r\n\r\n if (token && token !== \"undefined\") {\r\n const encodedPayload = token.split(\".\")[1];\r\n const payloadStr = window.atob(encodedPayload);\r\n\r\n var payload = JSON.parse(payloadStr);\r\n var exp = payload[\"exp\"];\r\n var d = new Date();\r\n var epoch = Math.round(d.getTime() / 1000);\r\n\r\n if (exp < epoch) {\r\n localStorage.removeItem(this.JWT_ACCESS_TOKEN);\r\n return null;\r\n }\r\n }\r\n \r\n return token;\r\n }\r\n}\r\n","import { Injectable, Inject } from \"@angular/core\";\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor,\r\n} from \"@angular/common/http\";\r\nimport { Observable, throwError } from \"rxjs\";\r\nimport { catchError } from \"rxjs/operators\";\r\n\r\nimport { TruAuth } from \"./tru-auth\";\r\nimport { TruAuthJwtStrategy } from \"../classes/tru-auth-jwt-strategy\";\r\nimport { TRU_AUTH_STRATEGY } from \"../classes/tru-auth-config\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\n\r\n@Injectable()\r\nexport class TruAuthInterceptor implements HttpInterceptor {\r\n constructor(\r\n private auth: TruAuth,\r\n private appEnvironment: TruAppEnvironment,\r\n @Inject(TRU_AUTH_STRATEGY) private jwt: TruAuthJwtStrategy\r\n ) {}\r\n\r\n intercept(\r\n request: HttpRequest<any>,\r\n next: HttpHandler\r\n ): Observable<HttpEvent<any>> {\r\n if (this.appEnvironment.authType === 'jwt')\r\n request = this.addToken(request, String(this.jwt.getToken()));\r\n\r\n if (this.appEnvironment.authType === 'session')\r\n request = request.clone({\r\n withCredentials: true\r\n });\r\n\r\n return next.handle(request).pipe(\r\n catchError((error) => {\r\n if (error.status === 401) {\r\n this.auth.doLogoutAndRedirectToLogin();\r\n }\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n private addToken(request: HttpRequest<any>, token: string) {\r\n return request.clone({\r\n setHeaders: { Authorization: `Bearer ${token}` },\r\n });\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { TruAuthStrategy } from \"./tru-auth-config\";\r\nimport { TruUser } from \"../../../services/tru-user\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n\r\nexport class TruAuthSessionStrategy implements TruAuthStrategy<TruUser> {\r\n private loggedUser?: TruUser;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n doLoginUser(user: TruUser): void {\r\n this.loggedUser = user;\r\n }\r\n\r\n doLogoutUser(): void {\r\n this.loggedUser = undefined;\r\n }\r\n\r\n createUser(user: TruUser): Observable<any> {\r\n return of({});\r\n }\r\n\r\n isLoggedIn(): boolean {\r\n return false;//todo, implement this\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\nimport { TRU_AUTH_CONFIG, TRU_AUTH_STRATEGY } from \"./tru-auth-config\";\r\nimport { TruAuthJwtStrategy } from \"./tru-auth-jwt-strategy\";\r\nimport { TruAuthSessionStrategy } from \"./tru-auth-session-strategy\";\r\n\r\nexport const TruAuthStrategyProvider = {\r\n provide: TRU_AUTH_STRATEGY,\r\n deps: [HttpClient, TruAppEnvironment],\r\n useFactory: (http: HttpClient, appEnvironment: TruAppEnvironment) => {\r\n switch (appEnvironment.authType) {\r\n case \"session\":\r\n return new TruAuthSessionStrategy(http);\r\n case \"jwt\":\r\n return new TruAuthJwtStrategy();\r\n default:\r\n throw new Error(\"Invalid auth strategy\");\r\n }\r\n },\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaterialModule } from '../../material.module';\r\n\r\nimport { TruLogin } from './tru-login';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { TruAuthInterceptor } from './services/tru-auth-interceptor';\r\nimport { TruAuthStrategyProvider } from './classes/tru-auth-strategy-provider';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { TruErrorInterceptor } from '../error-dialog/services/tru-error-interceptor';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'login',\r\n component: TruLogin\r\n }\r\n];\r\n\r\n@NgModule({\r\n declarations: [TruLogin],\r\n imports: [CommonModule, MaterialModule, FormsModule, ReactiveFormsModule, RouterModule.forChild(routes)],\r\n exports: [TruLogin],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TruAuthInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: TruErrorInterceptor,\r\n multi: true,\r\n },\r\n TruAuthStrategyProvider\r\n ],\r\n})\r\nexport class TruLoginModule { }\r\n","export enum TruValidationDialogContext {\r\n Control = 0,\r\n Grid = 1,\r\n Card = 2\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruValidationDialogConfig } from './tru-validation-dialog-config';\r\nimport { TruValidationDialogContext } from './tru-validation-dialog-context';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'tru-validation-dialog',\r\n templateUrl: './tru-validation-dialog.html',\r\n styleUrls: ['./tru-validation-dialog.css'],\r\n imports: [CommonModule, FormsModule]\r\n})\r\nexport class TruValidationDialog implements OnInit, OnDestroy {\r\n @Input() config!: TruValidationDialogConfig;\r\n @Output() close = new EventEmitter();\r\n\r\n errorMsg: string = '';\r\n\r\n private rowElement!: HTMLElement;\r\n private cellElement!: HTMLElement;\r\n private listeners: Array<() => void> = [];\r\n\r\n constructor(\r\n private renderer: Renderer2,\r\n private elementRef: ElementRef,\r\n private util: TruUtil) { }\r\n\r\n onAcceptAll = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n\r\n for (const key in this.config.mergeData?.getAll()) {\r\n entity[key] = this.config.mergeData?.get(key)!.value;\r\n if (originalValues.hasOwnProperty(key))\r\n delete originalValues[key];\r\n };\r\n\r\n if (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.Merge_Data_Set.clearAll();\r\n entity.entityAspect.validateEntity();\r\n\r\n if (this.config.context === TruValidationDialogContext.Grid)\r\n this.elementRef.nativeElement.remove();\r\n }\r\n\r\n onAccept = () => {\r\n let entity = this.config.entity as any;\r\n let originalValues = entity.entityAspect.originalValues;\r\n let propertyName = this.config.propertyName as string;\r\n\r\n entity[propertyName] = this.config.mergeData?.get(propertyName)!.value;\r\n this.config.mergeData?.clear(propertyName);\r\n\r\n if (originalValues.hasOwnProperty(propertyName) && (Object.keys(originalValues).length === 0 && originalValues.constructor === Object))\r\n delete originalValues[propertyName];\r\n\r\n if (this.config.mergeData?.isEmpty())\r\n entity.entityAspect.setUnchanged();\r\n\r\n entity.entityAspect.validateEntity();\r\n\r\n if (this.config.context === TruValidationDialogContext.Grid)\r\n this.elementRef.nativeElement.remove();\r\n }\r\n\r\n onDecline = () => {\r\n let entity = this.config.entity as any;\r\n this.config.mergeData?.clearAll();\r\n entity.entityAspect.validateEntity();\r\n\r\n if (this.config.context === TruValidationDialogContext.Grid)\r\n this.elementRef.nativeElement.remove();\r\n }\r\n\r\n ngOnInit() {\r\n this.errorMsg = this.config.errorMsg as string;\r\n\r\n if (this.config.context === TruValidationDialogContext.Control) {\r\n var invalidTarget = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.invalid-target');\r\n if (invalidTarget) {\r\n this.listeners.push(this.renderer.listen(invalidTarget, 'mouseenter', (event: MouseEvent) => {\r\n this.elementRef.nativeElement.childNodes[0].classList.remove('hide');\r\n this.elementRef.nativeElement.childNodes[0].classList.add('show');\r\n }));\r\n\r\n this.listeners.push(this.renderer.listen(invalidTarget, 'mouseleave', (event: MouseEvent) => {\r\n this.elementRef.nativeElement.childNodes[0].classList.remove('show');\r\n this.elementRef.nativeElement.childNodes[0].classList.add('hide');\r\n }));\r\n }\r\n } else if (this.config.context === TruValidationDialogContext.Grid) {\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n this.rowElement.style.zIndex = '10000000000';\r\n this.cellElement.classList.add('show');\r\n this.errorMsg = this.config.errorMsg as string;\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.config.context === TruValidationDialogContext.Control) {\r\n let invalidTarget = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.invalid-target');\r\n if (invalidTarget)\r\n invalidTarget.classList.add('invalid');\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.config.context === TruValidationDialogContext.Control) {\r\n let invalidTarget = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.invalid-target');\r\n if (invalidTarget)\r\n invalidTarget.classList.remove('invalid');\r\n } else if (this.config.context === TruValidationDialogContext.Grid) {\r\n this.rowElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-row');\r\n this.cellElement = this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.ag-cell-value');\r\n if (this.rowElement)\r\n this.rowElement.style.zIndex = 'auto';\r\n if (this.cellElement)\r\n this.cellElement.classList.remove('show');\r\n }\r\n this.listeners.forEach(l => l());\r\n }\r\n}\r\n\r\n","@if (config.context === 0) {\r\n<div class=\"invalid hide\">\r\n <i class=\"icon-warning-sign icon-white\"></i>{{config.errorMsg}}\r\n <div *ngIf=\"config.mergeData\">\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAcceptAll()\">Accept All</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAccept()\">Accept</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onDecline()\">Decline</button>\r\n </div>\r\n</div>\r\n<span class=\"invalid-flag\"></span>\r\n}\r\n@else {\r\n<i class=\"icon-warning-sign icon-white\"></i>{{config.errorMsg}}\r\n<div *ngIf=\"config.mergeData\">\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAcceptAll()\">Accept All</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onAccept()\">Accept</button>\r\n <button class=\"md-primary md-button ng-scope md-ink-ripple merge-button\" (click)=\"onDecline()\">Decline</button>\r\n</div>\r\n}\r\n","import { TruEditControlConfigBase } from \"../../base-classes/tru-edit-control-config-base\";\r\nimport { TruEntityBase } from \"../../base-classes/tru-entity-base\";\r\nimport { TruListControlConfigBase } from \"../../base-classes/tru-list-control-config-base\";\r\nimport { TruMergeDataSet } from \"../../classes/tru-merge-data-set\";\r\nimport { TruValidationDialogContext } from \"./tru-validation-dialog-context\";\r\n\r\n\r\nexport class TruValidationDialogConfig {\r\n private _entity: TruEntityBase;\r\n private _propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>;\r\n private _context: TruValidationDialogContext;\r\n private _isSubProperty: boolean;\r\n private _ignore: boolean;\r\n private _propertyName: string = '';\r\n private _errorMsg: string = '';\r\n private _mergeData: TruMergeDataSet | null = null;\r\n \r\n public get entity(): TruEntityBase {\r\n return this._entity;\r\n }\r\n\r\n public get propertyConfig(): TruEditControlConfigBase<any> | TruListControlConfigBase<any> {\r\n return this._propertyConfig;\r\n }\r\n\r\n public get context(): TruValidationDialogContext {\r\n return this._context;\r\n }\r\n\r\n public get isSubProperty(): boolean {\r\n return this._isSubProperty;\r\n }\r\n\r\n public get ignore(): boolean {\r\n return this._ignore;\r\n }\r\n\r\n public get propertyName(): string | null {\r\n return this._propertyName;\r\n }\r\n\r\n public set propertyName(value: string) {\r\n this._propertyName = value;\r\n }\r\n\r\n public get errorMsg(): string | null {\r\n return this._errorMsg;\r\n }\r\n\r\n public set errorMsg(value: string) {\r\n this._errorMsg = value;\r\n }\r\n\r\n public get mergeData(): TruMergeDataSet | null {\r\n return this._mergeData;\r\n }\r\n\r\n public set mergeData(value: TruMergeDataSet | null) {\r\n this._mergeData = value;\r\n }\r\n\r\n constructor(\r\n entity: TruEntityBase,\r\n propertyConfig: TruEditControlConfigBase<any> | TruListControlConfigBase<any>,\r\n context: TruValidationDialogContext = TruValidationDialogContext.Control,\r\n isSubProperty: boolean = false,\r\n ignore: boolean = false) {\r\n this._entity = entity;\r\n this._propertyConfig = propertyConfig;\r\n this._context = context;\r\n this._isSubProperty = isSubProperty;\r\n this._ignore = ignore;\r\n }\r\n}\r\n","import { ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Input, OnDestroy, OnInit, SimpleChanges, ViewContainerRef } from '@angular/core';\r\nimport { ValidationError } from 'breeze-client';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruValidationDialogContext } from '../../../public-api';\r\nimport { TruEditControlConfigBase } from '../../base-classes/tru-edit-control-config-base';\r\nimport { TruListControlConfigBase } from '../../base-classes/tru-list-control-config-base';\r\nimport { TruMergeDataSet } from '../../classes/tru-merge-data-set';\r\nimport { TruValidationDialog } from '../../components/validation-dialog/tru-validation-dialog';\r\nimport { TruValidationDialogConfig } from '../../components/validation-dialog/tru-validation-dialog-config';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { property } from 'underscore';\r\n\r\n@Directive({\r\n selector: '[truBreezeValidator]'\r\n})\r\nexport class TruBreezeValidator implements OnInit, OnDestroy {\r\n @Input('truBreezeValidator') entity!: any;\r\n @Input() config!: TruEditControlConfigBase<any> | TruListControlConfigBase<any>;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private dataContext: TruDataContext,\r\n private viewContainerRef: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver) {\r\n }\r\n\r\n configModel: any = {};\r\n mergeData: any;\r\n\r\n private dialogRef: ComponentRef<any> | null = null;\r\n private subs: Array<Subscription> = [];\r\n private currentDialog: ComponentRef<TruValidationDialog> | null = null;\r\n private context: TruValidationDialogContext = TruValidationDialogContext.Control;\r\n\r\n private getMergeData = (): TruMergeDataSet | undefined => {\r\n if (this.config.propertyPath?.includes('/')) {\r\n let propertyNameParts = this.config.propertyPath.split('/');\r\n propertyNameParts.pop();\r\n let targetProperty: any;\r\n propertyNameParts.forEach((name) => {\r\n if (!targetProperty) {\r\n let targetPropertyName = 'o' + name as keyof typeof this.entity;\r\n targetProperty = this.entity[targetPropertyName];\r\n } else {\r\n let targetPropertyName = 'o' + name as keyof typeof this.entity;\r\n targetProperty = targetProperty[targetPropertyName];\r\n }\r\n });\r\n if (targetProperty && targetProperty.Merge_Data) {\r\n return targetProperty.Merge_Data_Set;\r\n }\r\n return undefined;\r\n } else {\r\n return this.entity.Merge_Data_Set?.get(this.config.propertyName as string) ? this.entity.Merge_Data_Set : undefined;\r\n }\r\n }\r\n\r\n private parseErrorMessages = (validationErrors: Array<ValidationError>): string => {\r\n let errorMsg: string = '';\r\n validationErrors.forEach((error) => {\r\n errorMsg += error.errorMessage + '; ';\r\n });\r\n return errorMsg;\r\n }\r\n\r\n private addValidationDialog = (config: TruValidationDialogConfig) => {\r\n let componentFactory = this.componentFactoryResolver.resolveComponentFactory(TruValidationDialog);\r\n let component = this.viewContainerRef.createComponent<TruValidationDialog>(componentFactory, 0, this.viewContainerRef.injector);\r\n component.instance.config = config;\r\n this.currentDialog = component;\r\n this.dialogRef = component;\r\n }\r\n\r\n private removeValidationDialog = () => {\r\n if (this.currentDialog) {\r\n this.currentDialog.destroy();\r\n this.currentDialog = null;\r\n }\r\n }\r\n\r\n valErrsChanged = (validationObject: any) => {\r\n let validationObjectEntity = validationObject.entity\r\n let validationTableName = validationObjectEntity.constructor.name;\r\n\r\n type EntityObjectKey = keyof typeof this.entity;\r\n const entityPkeyName = validationTableName + 'Ref' as EntityObjectKey;\r\n\r\n type ValidationObjectEntityObjectKey = keyof typeof validationObjectEntity;\r\n const validationObjectEntitypkeyName = validationTableName + 'Ref' as ValidationObjectEntityObjectKey;\r\n\r\n let propertyName = this.config.isSubProperty ? this.config.propertyName!.replace(/\\./g, \"\") : this.config.propertyName;\r\n let addedPropertyValdations = validationObject.added.filter((v: any) => {\r\n return v.propertyName === propertyName\r\n });\r\n\r\n let removedPropertyValdations = validationObject.removed.filter((v: any) => {\r\n return v.propertyName === propertyName\r\n });\r\n\r\n this.mergeData = this.getMergeData();\r\n\r\n if (\r\n this.config.rootTable === validationTableName &&\r\n this.entity[entityPkeyName] === validationObjectEntity[validationObjectEntitypkeyName] &&\r\n (addedPropertyValdations.length || this.mergeData)) {\r\n this.removeValidationDialog();\r\n let config = new TruValidationDialogConfig(this.entity, this.config);\r\n config.propertyName = this.config.propertyName as string;\r\n config.mergeData = this.mergeData;\r\n config.errorMsg = this.parseErrorMessages(addedPropertyValdations);\r\n this.addValidationDialog(config);\r\n }\r\n\r\n if (\r\n this.config.rootTable === validationTableName &&\r\n this.entity[entityPkeyName] === validationObjectEntity[validationObjectEntitypkeyName] &&\r\n (removedPropertyValdations.length)) {\r\n this.removeValidationDialog();\r\n }\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.context !== TruValidationDialogContext.Grid) {\r\n this.subs.push(this.dataContext.validationChangeDetection.subscribe(entities => {\r\n this.valErrsChanged(entities);\r\n }));\r\n }\r\n this.entity.entityAspect.validateEntity();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.removeValidationDialog();\r\n this.entity.entityAspect.validateEntity();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","import { Directive, ElementRef, Input, Renderer2 } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[truSearchPanelPositionManager]'\r\n})\r\nexport class TruSearchPanelPositionManager {\r\n @Input() config: any = { size: 300 };\r\n\r\n private searchViewPortal: HTMLElement | null = null;\r\n private tab: HTMLElement | null = null;\r\n private dropZones: any = [];\r\n private dragHandles: Array<HTMLElement> = [];\r\n\r\n private currentWidth = 0\r\n private currentMinWidth = 0;\r\n private mouseOffsetX = 0;\r\n private lastMouseX = 0;\r\n private dragHandle: HTMLElement | null = null;\r\n private listeners: Array<any> = [];\r\n private mousemoveListener: any;\r\n private mouseupListener: any;\r\n\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n }\r\n\r\n ngAfterViewInit() {\r\n this.searchViewPortal = this.el.nativeElement.closest('.search-container');\r\n this.tab = this.el.nativeElement.querySelectorAll('.search-panel-tab')[0];\r\n this.dropZones = this.searchViewPortal?.querySelectorAll('.search-panel-dropzone');\r\n this.dragHandles = this.el.nativeElement.querySelectorAll('.search-panel-resizable-handle');\r\n\r\n this.addTabEventListeners();\r\n this.addDropzoneEventListeners();\r\n this.addDragHandleEventListeners();\r\n }\r\n\r\n\r\n private addTabEventListeners = () => {\r\n this.listeners.push(this.renderer.listen(this.tab, 'dragstart', this.dragStart));\r\n this.listeners.push(this.renderer.listen(this.tab, 'dragend', this.dragEnd));\r\n };\r\n\r\n private addDropzoneEventListeners = () => {\r\n this.dropZones.forEach((dropZone: HTMLElement) => {\r\n this.listeners.push(this.renderer.listen(dropZone, 'dragover', this.dragOver));\r\n this.listeners.push(this.renderer.listen(dropZone, 'dragleave', this.dragLeave));\r\n this.listeners.push(this.renderer.listen(dropZone, 'drop', this.drop));\r\n }); \r\n };\r\n\r\n private addDragHandleEventListeners = () => {\r\n this.dragHandles.forEach((dropHandle: HTMLElement) => {\r\n this.listeners.push(this.renderer.listen(dropHandle, 'mousedown', this.mousedown));\r\n });\r\n };\r\n\r\n\r\n private addPointerEvents = () => {\r\n this.dropZones.forEach((dropZone: HTMLElement) => {\r\n dropZone.style.pointerEvents = 'all';\r\n });\r\n }\r\n\r\n private removePointerEvents = () => {\r\n this.dropZones.forEach((dropZone: HTMLElement) => {\r\n dropZone.style.pointerEvents = 'none';\r\n });\r\n }\r\n\r\n private addMouseoverDropzoneStyles = (event: MouseEvent) => {\r\n (event.target as HTMLElement).classList.add('mouseover');\r\n }\r\n\r\n private removeMouseoverDropzoneStyles = (event: MouseEvent) => {\r\n for (var i = 0; i < this.dropZones.length; i++) {\r\n if (event.target !== this.dropZones[i])\r\n this.dropZones[i].classList.remove('mouseover');\r\n }\r\n }\r\n\r\n private dragStart = (event: MouseEvent) => {\r\n this.addPointerEvents();\r\n }\r\n\r\n private dragEnd = (event: MouseEvent) => {\r\n this.removePointerEvents();\r\n this.removeMouseoverDropzoneStyles(event);\r\n }\r\n\r\n private dragOver = (event: MouseEvent) => {\r\n event.preventDefault();\r\n this.addMouseoverDropzoneStyles(event);\r\n }\r\n\r\n private dragLeave = (event: MouseEvent) => {\r\n (event.target as HTMLElement).classList.remove('mouseover');\r\n }\r\n\r\n private drop = (event: MouseEvent) => {\r\n if ((event.target as HTMLElement).classList.contains('left')) {\r\n this.config.side = 'left';\r\n this.config.setGridPinnedPositionFn(\r\n { 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' }\r\n );\r\n this.config.setToolbarPinnedPositionFn(\r\n { 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' }\r\n );\r\n //userPreference.set(userPreference.searchPanelSide, 'left');\r\n }\r\n\r\n if ((event.target as HTMLElement).classList.contains('right')) {\r\n this.config.side = 'right';\r\n this.config.setGridPinnedPositionFn(\r\n { 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' }\r\n );\r\n this.config.setToolbarPinnedPositionFn(\r\n { 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' }\r\n );\r\n //userPreference.set(userPreference.searchPanelSide, 'right');\r\n }\r\n\r\n this.removeMouseoverDropzoneStyles(event);\r\n }\r\n\r\n private mousedown = (event: MouseEvent) => {\r\n if (this.config.pinned) return;\r\n if (!this.dragHandle)\r\n this.dragHandle = (event.target as HTMLElement);\r\n this.mouseOffsetX = event.clientX;\r\n this.mousemoveListener = this.renderer.listen('document', 'mousemove', this.mouseMove);\r\n this.mouseupListener = this.renderer.listen('document', 'mouseup', this.mouseUp);\r\n }\r\n\r\n private mouseMove = (event: MouseEvent) => {\r\n var mouseX = event.pageX - this.mouseOffsetX;\r\n var diffX = mouseX - this.lastMouseX;\r\n this.lastMouseX = mouseX;\r\n\r\n this.currentWidth = this.config.size;\r\n this.currentMinWidth = 100;\r\n\r\n if (this.dragHandle?.classList.contains('search-panel-resizable-w')) {\r\n if (this.currentWidth - diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentWidth - this.currentMinWidth));\r\n this.config.size = (this.currentWidth - diffX);\r\n this.updateSide();\r\n }\r\n if (this.dragHandle?.classList.contains('search-panel-resizable-e')) {\r\n if (this.currentWidth + diffX < this.currentMinWidth) this.mouseOffsetX = this.mouseOffsetX - (diffX - (diffX = this.currentMinWidth - this.currentWidth));\r\n this.config.size = (this.currentWidth + diffX);\r\n this.updateSide();\r\n }\r\n }\r\n\r\n private mouseUp = () => {\r\n this.dragHandle = null;\r\n this.mouseOffsetX = 0;\r\n this.lastMouseX = 0;\r\n\r\n this.mousemoveListener();\r\n this.mouseupListener();\r\n };\r\n\r\n private updateSide = () => {\r\n //if (this.config.side === 'left') {\r\n // this.config.setGridPinnedPositionFn({ 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' });\r\n // this.config.setToolbarPinnedPositionFn({ 'position': 'absolute', 'width': 'calc(100% - ' + (this.config.size - 20) + 'px', 'left': (this.config.size - 20) + 'px', 'margin-left': 'auto' });\r\n //}\r\n //if (this.config.side === 'right') {\r\n // this.config.setGridPinnedPositionFn({ 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' });\r\n // this.config.setToolbarPinnedPositionFn({ 'width': 'calc(100% - ' + (this.config.size - 20) + 'px' });\r\n //}\r\n }\r\n\r\n ngOnDestroy() {\r\n this.listeners.forEach(fn => fn());\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, Observer } from \"rxjs\";\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruUser } from \"./tru-user\";\r\nimport { TruUtil } from \"./tru-util\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruCloudFileManager {\r\n private baseUrl: string;\r\n private reader!: FileReader;\r\n private file!: File;\r\n private sliceSize: number = 10000 * 1024;\r\n\r\n constructor(\r\n private appEnvironment: TruAppEnvironment,\r\n private util: TruUtil,\r\n private user: TruUser) {\r\n this.baseUrl = this.appEnvironment.appUri;\r\n }\r\n\r\n private getFileLength = (blobId: string, temp: any): Observable<any> => {\r\n return Observable.create((observer: Observer<any>) => {\r\n let xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = function () {\r\n if (xhr.readyState == XMLHttpRequest.DONE) {\r\n if (xhr.status == 200) {\r\n observer.next(xhr.response);\r\n }\r\n else {\r\n console.log('Download Failed. Unable to acquire file size.');\r\n }\r\n }\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/BlobLength', true);\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.send(JSON.stringify({\r\n blobId: blobId,\r\n temp: temp ? true : false\r\n }));\r\n });\r\n }\r\n\r\n private uploadFile = (\r\n start: number,\r\n tableName: string,\r\n propertyName: string,\r\n filename: string,\r\n blobMetaData: any,\r\n temp: any,\r\n updateProgress: (progress: number) => {},\r\n done: (response: any | undefined) => {}) => {\r\n\r\n let nextSlice = start + this.sliceSize + 1;\r\n let blob = this.file?.slice(start, nextSlice);\r\n\r\n this.reader.onloadend = (event: ProgressEvent<FileReader>) => {\r\n if (event.target?.readyState !== FileReader.DONE) {\r\n return;\r\n }\r\n\r\n let xhr = new XMLHttpRequest();\r\n xhr.onreadystatechange = () => {\r\n if (xhr.readyState == XMLHttpRequest.DONE) {\r\n if (xhr.status == 200) {\r\n var sizeDone = start + this.sliceSize;\r\n var percentDone = Math.floor((sizeDone / this.file.size) * 100);\r\n\r\n var blobMetaData = JSON.parse(xhr.response);\r\n\r\n if (nextSlice < this.file?.size) {\r\n updateProgress(percentDone);\r\n console.log('Uploading File - ' + percentDone + '%');\r\n this.uploadFile(nextSlice, tableName, propertyName, filename, blobMetaData, temp, updateProgress, done);\r\n } else {\r\n done(blobMetaData.truDbCloudFileRef);\r\n }\r\n }\r\n else {\r\n console.log(xhr.responseType);\r\n }\r\n }\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/Upload', true);\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n\r\n xhr.send(JSON.stringify({\r\n tableName: tableName,\r\n propertyName: propertyName,\r\n fileData: (event.target.result as any).split(',')[1],\r\n filename: filename,\r\n blobId: blobMetaData.blobId,\r\n blobBlockIdStr: blobMetaData.blobBlockIdStr,\r\n createdRef: this.user.activeUserRef,\r\n public: false,\r\n temp: temp ? true : false,\r\n commit: nextSlice < this.file.size ? false : true\r\n }));\r\n };\r\n\r\n this.reader.readAsDataURL(blob);\r\n };\r\n\r\n upload = (tableName: string, propertyName: string, fileData: File, temp: any, updateProgress: (progress: number) => {}, done: (response: any | undefined) => {}) => {\r\n this.reader = new FileReader();\r\n this.file = fileData;\r\n\r\n this.uploadFile(0, tableName, propertyName, this.file.name, { blobId: null, blobBlockIdStr: null }, temp, updateProgress, done);\r\n }\r\n\r\n download = (\r\n blobId: string,\r\n temp: any,\r\n filename: string,\r\n updateProgress: (progress: number) => {},\r\n done: () => {}) => {\r\n\r\n this.getFileLength(blobId, temp).subscribe((fileLength: string) => {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onprogress = function (e) {\r\n updateProgress(Math.round(e.loaded / e.total * 100))\r\n }\r\n\r\n xhr.onload = function () {\r\n //var fileName = xhr.getResponseHeader('Content-Disposition').split(\"filename=\")[1];\r\n var blob = new Blob([xhr.response], { type: 'application/octet-stream' });\r\n\r\n var a = document.createElement('a');\r\n a.href = URL.createObjectURL(blob);\r\n a.download = filename;\r\n\r\n document.body.appendChild(a);\r\n\r\n a.dispatchEvent(new MouseEvent('click'));\r\n done();\r\n }\r\n\r\n xhr.onerror = function (e) {\r\n done();\r\n console.log(e);\r\n };\r\n\r\n xhr.ontimeout = function (e) {\r\n done();\r\n console.log(e);\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/Download');\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.responseType = 'arraybuffer';\r\n xhr.send(JSON.stringify({\r\n blobId: blobId,\r\n filename: filename,\r\n fileLength: parseInt(fileLength),\r\n temp: temp ? true : false\r\n }));\r\n });\r\n }\r\n\r\n sasUrl = (\r\n blobId: string,\r\n temp: boolean,\r\n filename: string,\r\n updateProgress: () => {},\r\n done: (blob: any) => {}) => {\r\n\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onprogress = function (e) {}\r\n\r\n xhr.onload = function () {\r\n done(xhr.response);\r\n }\r\n\r\n xhr.onerror = function (e) {\r\n done(undefined);\r\n console.log(e);\r\n };\r\n\r\n xhr.ontimeout = function (e) {\r\n done(undefined);\r\n console.log(e);\r\n };\r\n\r\n xhr.open('POST', this.baseUrl + '/api/CloudFile/SASTokenURL');\r\n xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');\r\n xhr.responseType = 'text';\r\n xhr.send(JSON.stringify({\r\n blobId: blobId\r\n }));\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { DatePipe } from '@angular/common';\r\nimport moment from 'moment';\r\nimport * as _ from 'underscore';\r\nimport { TruAppEnvironment } from \"./tru-app-environment\";\r\nimport { TruModelTypeLookup } from \"./tru-model-type-lookup\";\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruFormatter {\r\n\r\n constructor(\r\n private appEnvironemt: TruAppEnvironment,\r\n private modelTypeLookup: TruModelTypeLookup) { }\r\n\r\n private formatDate = (date: Date, format: string) => {\r\n if (date === null)\r\n return null;\r\n if (!(date instanceof Date))\r\n return '';\r\n if (isNaN(date.getTime()))\r\n return '';\r\n var datePipe = new DatePipe('en-US');\r\n return datePipe.transform(date, format);\r\n };\r\n\r\n private isDate = (date: any) => {\r\n if (Object.prototype.toString.call(date) === '[object Date]') {\r\n if (isNaN(date.getTime())) {\r\n return false;\r\n }\r\n else {\r\n return true;\r\n }\r\n }\r\n else if (moment(date, \"MM/DD/YYYY\", true).isValid()) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n };\r\n\r\n private isPromise = function (value: any) {\r\n return Boolean(value && typeof value.then === 'function');\r\n }\r\n\r\n\r\n //Filters\r\n\r\n bigInteger = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n boolean = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v ? 'True' : 'False';\r\n };\r\n\r\n choiceLabel = (cfg: any) => {\r\n if (cfg.$ === null)\r\n return null;\r\n if (cfg.type) {\r\n var item = cfg.type.choices.filter(function (c: any) {\r\n return c.$ === cfg.$;\r\n });\r\n } else {\r\n return cfg.$\r\n }\r\n\r\n if (item.length == 0)\r\n return null;\r\n return item[0].label;\r\n };\r\n\r\n dateShort = (cfg: any) => {\r\n var v = cfg.$;\r\n if (!v || !this.isDate(v))\r\n return 'mm/dd/yyyy';\r\n v = new Date(v);\r\n var utc = new Date(v.getUTCFullYear(), v.getUTCMonth(), v.getUTCDate());\r\n return this.formatDate(utc, 'MM/dd/yyyy');\r\n };\r\n\r\n datetimeShort = (cfg: any) => {\r\n var v = cfg.$;\r\n if (!v)\r\n return 'mm/dd/yyyy hh:mm a';\r\n return this.formatDate(v, 'MM/dd/yyyy hh:mm a');\r\n };\r\n\r\n datetimespanShort = (cfg: any) => {\r\n var start = cfg.start.$;\r\n var end = cfg.end.$;\r\n var text = '';\r\n if (start !== null) {\r\n text = this.formatDate(start, 'MM/dd/yyyy hh:mm a') + ' - ';\r\n if (end != null) {\r\n if (start.getYear() === end.getYear() && start.getMonth() === end.getMonth() && start.getDay() === end.getDay())\r\n text += this.formatDate(end, 'hh:mm a');\r\n else\r\n text += this.formatDate(end, 'MM/dd/yyyy hh:mm a');\r\n }\r\n } else {\r\n if (end !== null)\r\n text += this.formatDate(end, 'MM/dd/yyyy hh:mm a');\r\n }\r\n return text;\r\n };\r\n\r\n decimal = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n excelFormula = (val: any) => {\r\n if (_.isNaN(val))\r\n return '#VALUE!';\r\n if (val === Infinity)\r\n return '#DIV/0!';\r\n return val;\r\n };\r\n\r\n file = (cfg: any) => {\r\n if (this.isPromise(cfg.filename.$))\r\n return null;\r\n var text = '';\r\n if (cfg.filename.$ !== null)\r\n text += cfg.filename.$;\r\n return text;\r\n };\r\n\r\n float = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n id = (value: string | null) => {\r\n if (!value) return null;\r\n return value;\r\n };\r\n\r\n integer = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v;\r\n };\r\n\r\n intlAddress = (cfg: any) => {\r\n var text = '';\r\n if (cfg.address1.$ !== null)\r\n text += cfg.address1.$ + ' ';\r\n if (cfg.address2.$ !== null)\r\n text += cfg.address2.$ + ' ';\r\n if (cfg.country.$ !== null)\r\n text += cfg.country.$ + ' ';\r\n if (cfg.city.$ !== null)\r\n text += cfg.city.$ + ' ';\r\n if (cfg.stateProvince.$ !== null)\r\n text += cfg.stateProvince.$ + ' ';\r\n if (cfg.postalCode.$ !== null)\r\n text += cfg.postalCode.$ + ' ';\r\n\r\n return text;\r\n };\r\n\r\n intlAddressBasic = (cfg: any) => {\r\n var text = '';\r\n if (cfg.address1.$ !== null)\r\n text += cfg.address1.$ + ' ';\r\n if (cfg.address2.$ !== null)\r\n text += cfg.address2.$ + ' ';\r\n if (cfg.country.$ !== null)\r\n text += cfg.country.$ + ' ';\r\n if (cfg.city.$ !== null)\r\n text += cfg.city.$ + ' ';\r\n if (cfg.stateProvince.$ !== null)\r\n text += cfg.stateProvince.$ + ' ';\r\n if (cfg.postalCode.$ !== null)\r\n text += cfg.postalCode.$ + ' ';\r\n\r\n return text;\r\n };\r\n\r\n naPhone = (number: any) => {\r\n if (!number) { return ''; }\r\n\r\n if (number) {\r\n if (number.$)\r\n number = number.$.replace(/[^0-9]/g, '');\r\n else\r\n number = number.$\r\n }\r\n\r\n if (!number) { return ''; }\r\n\r\n number = String(number);\r\n\r\n var formattedNumber = number;\r\n\r\n var c = (number[0] == '1') ? '+1 ' : '';\r\n number = number[0] == '1' ? number.slice(1) : number;\r\n\r\n var area = number.substring(0, 3);\r\n var front = number.substring(3, 6);\r\n var end = number.substring(6, 10);\r\n var ext = number.substring(10, 20);\r\n\r\n if (front) {\r\n formattedNumber = (c + \"(\" + area + \") \" + front);\r\n }\r\n if (end) {\r\n formattedNumber += (\"-\" + end);\r\n }\r\n if (ext) {\r\n formattedNumber += (\" x\" + ext);\r\n }\r\n return formattedNumber;\r\n }\r\n\r\n intlPhone = (cfg: any) => {\r\n var field = cfg;\r\n var text = '';\r\n //if (cfg.countryCode.$ !== null) {\r\n // var country = _.find(countries.allCountries, function (country) { return country.iso2 === cfg.countryCode.$ });\r\n // var dialCode = country.dialCode;\r\n // text += '+' + dialCode + ' ';\r\n //}\r\n //if (cfg.phone.$ !== null) {\r\n // var clean = cfg.phone.$.replace(/[^0-9]/g, '');\r\n // try {\r\n // var countryCode = cfg.countryCode.$ ? cfg.countryCode.$ : field.property.countryCode;\r\n // var number = clean;\r\n // text += number + ' ';\r\n // } catch (e) {\r\n // text += clean + ' ';\r\n // }\r\n //}\r\n //if (cfg.extension.$ !== null)\r\n // text += ' x' + cfg.extension.$;\r\n return text;\r\n };\r\n\r\n password = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n if (v.length > 0)\r\n return '********';\r\n return '';\r\n };\r\n\r\n percentage = (cfg: any) => {\r\n var v = cfg.$;\r\n if (typeof v === 'undefined')\r\n return undefined;\r\n if (v === null)\r\n return null;\r\n if (typeof v.toFixed === 'function')\r\n return (v * 100).toFixed(2) + '%';\r\n return v;\r\n };\r\n\r\n picture = (cfg: any) => {\r\n var text = '';\r\n if (cfg.filename.$ !== null)\r\n text += cfg.filename.$;\r\n return text;\r\n };\r\n\r\n ref = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v.toString();\r\n };\r\n\r\n richText = (cfg: any) => {\r\n return cfg.$;\r\n };\r\n\r\n socialSecurityNumber = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v.substring(0, 3) + '-' + v.substring(3, 5) + '-' + v.substring(5);\r\n };\r\n\r\n text = (cfg: any) => {\r\n return cfg.$;\r\n };\r\n\r\n textFormatting = (text: any) => {\r\n if (!text)\r\n return text;\r\n if (typeof text.replace === 'function')\r\n return text.replace(/[\\n\\r]+/g, ' ').replace(/\\s{2,}/g, ' ').replace(/^\\s+|\\s+$/, '');\r\n return text;\r\n };\r\n\r\n timeShort = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n\r\n var duration = moment.duration(v);\r\n\r\n var datetime = new Date('01/01/1999 ' + duration.hours + ':' + duration.minutes + ':' + duration.seconds);\r\n var datePipe = new DatePipe('en-US');\r\n return datePipe.transform(datetime, 'hh:mm a');\r\n };\r\n\r\n timeSpanHhMmSs = (cfg: any) => {\r\n return cfg.hours.$ + ' H, ' + cfg.minutes.$ + ' M, ' + cfg.seconds.$ + '.' + cfg.milliseconds.$ + ' S';\r\n };\r\n\r\n usaAddress = (cfg: any) => {\r\n let text = \"Loading...\";\r\n\r\n let buildText = () => {\r\n text = '';\r\n if (cfg.address1.$ !== null)\r\n text += cfg.address1.$ + ' ';\r\n if (cfg.address2.$ !== null)\r\n text += cfg.address2.$ + ' ';\r\n if (cfg.city.$ !== null)\r\n text += cfg.city.$ + ' ';\r\n if (cfg.state.$ !== null) {\r\n var state = this.appEnvironemt.globalDataContext?.entityAccess().searchByRefCacheOnly(this.modelTypeLookup.getType('StdUSAState'), cfg.state.$);\r\n if (state)\r\n text += state.Code + ', ';\r\n }\r\n if (cfg.zip.$ !== null) {\r\n if (cfg.zip.$.length > 5)\r\n text += cfg.zip.$.substring(0, 5) + '-' + cfg.zip.$.substring(5);\r\n else\r\n text += cfg.zip.$;\r\n }\r\n return text;\r\n }\r\n\r\n if (this.appEnvironemt.globalDataContext?.entityAccess().searchByRefCacheOnly(this.modelTypeLookup.getType('StdUSAState'), cfg.state.$)) {\r\n return buildText();\r\n }\r\n\r\n return null;\r\n };\r\n\r\n usaDollars = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return '$' + (v)?.toFixed(2);\r\n };\r\n\r\n usaSocialSecurity = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n return v.substring(0, 3) + '-' + v.substring(3, 5) + '-' + v.substring(5);\r\n };\r\n\r\n usaZip = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n if (v.length > 5)\r\n return v.substring(0, 5) + '-' + v.substring(5);\r\n return v;\r\n };\r\n\r\n zipCode = (cfg: any) => {\r\n var v = cfg.$;\r\n if (v === null)\r\n return null;\r\n if (v.length > 5)\r\n return v.substring(0, 5) + '-' + v.substring(5);\r\n return v;\r\n };\r\n\r\n passwordEightBullets = (cfg: any) => {\r\n var v = cfg.$;\r\n return v;\r\n }\r\n\r\n formulaJsonParser = (formatter: (value: any) => any, data: string) => {\r\n var json = JSON.parse(data);\r\n if (json.DATA || (typeof json.DATA === 'number' && isFinite(json.DATA)))\r\n return formatter({ $: json.DATA });\r\n return { $: json.Error_Message };\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class TruPredicateMap {\r\n constructor() { }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruSort {\r\n\r\n constructor() { }\r\n\r\n /**\r\n * @callback differenceCallback\r\n * @param {*} valueA - any value except for undefined or null\r\n * @param {*} valueB - any value except for undefined or null\r\n * @return {number} - <0 for a sorts before b, 0 for a sorts same as b, >0 for a sorts after b.\r\n */\r\n\r\n /**\r\n * A generalized comparison algorithm for use with a sort function. Ensures that null\r\n * sorts before non-null. Delegates to difference() for both non-null values.\r\n * @param {*} valueA - any value except for undefined\r\n * @param {*} valueB - any value except for undefined\r\n * @param {differenceCallback} difference - same result meaning as for this function.\r\n * @return {number} - <0 for a sorts before b, 0 for a sorts same as b, >0 for a sorts after b.\r\n */\r\n numCompare = (valueA: any, valueB: any, difference: any) => {\r\n if (valueA === null || isNaN(valueA))\r\n return valueB === null ? 0 : -1;\r\n else if (valueB === null || isNaN(valueB))\r\n return 1;\r\n return difference(valueA, valueB);\r\n }\r\n\r\n compare = (valueA: any, valueB: any, difference: any, inverted: boolean = false) => {\r\n if (inverted) {\r\n if (valueA < 0)\r\n return 1;\r\n if (valueB < 0)\r\n return -1;\r\n } else {\r\n if (valueA < 0)\r\n return -1;\r\n if (valueB < 0)\r\n return 1;\r\n }\r\n if (valueA === null)\r\n return valueB === null ? 0 : -1;\r\n else if (valueB === null)\r\n return 1;\r\n return difference(valueA, valueB);\r\n }\r\n\r\n /**\r\n * Sort comparison for unnamed, number field control config objects.\r\n * @param {object} a,b - control config\r\n * @returns {number}\r\n */\r\n numberCompare = (a: any, b: any) => {\r\n return this.numCompare(a, b, function (x: any, y: any) { return x - y; });\r\n };\r\n\r\n /**\r\n * Alphabetical sort comparison for unnamed, string field control config objects.\r\n * @param {object} a,b - control config\r\n * @returns {number}\r\n */\r\n textCompare = (a: any, b: any) => {\r\n return this.compare(a, b, function (x: any, y: any) { return (x || \"\").localeCompare(y || \"\"); });\r\n };\r\n\r\n dateCompare = (a: any, b: any) => {\r\n return this.compare(new Date(a), new Date(b), function (x: any, y: any) { return x - y; });\r\n };\r\n\r\n /**\r\n * @callback filterCallback\r\n * @param {object} a,b - Control config\r\n * @returns {string} \r\n */\r\n\r\n /**\r\n * Alphabetical sort comparison for strings. Both input values are control config \r\n * objects and passed to a filter function to obtain a value for comparison.\r\n * @param {object} a,b - control config\r\n * @param {filterCallback} filter - filter function\r\n * @returns {number}\r\n */\r\n filteredTextCompare = (a: any, b: any, filter: any) => {\r\n return this.compare(filter(a), filter(b), function (x: any, y: any) { return x.localeCompare(y); });\r\n };\r\n\r\n\r\n /**\r\n * Alphabetical sort comparison for strings. Both input values are control config \r\n * objects and passed to a filter function to obtain a value for comparison.\r\n * @param {object} entity - a breeze $entity\r\n * @param {array} pathSegments - a list of strings that make up a navigation path\r\n * @returns {value}\r\n */\r\n getValueFromSortPath = (entity: any, pathSegments: any) => {\r\n var current = entity;\r\n for (var i = 0; i < pathSegments.length; i++) {\r\n var partName;\r\n // if we're not on the last iteration then\r\n if (i != pathSegments.length - 1)\r\n partName = 'o' + pathSegments[i];\r\n else\r\n partName = pathSegments[i];\r\n\r\n if (current[partName]) {\r\n current = current[partName];\r\n } else {\r\n return null;\r\n }\r\n }\r\n return current;\r\n }\r\n}\r\n","export { }\r\ndeclare global {\r\n export interface Number {\r\n numberToString(): string;\r\n nullableNumberToString(this: number | null | undefined): string;\r\n }\r\n}\r\nNumber.prototype.numberToString = function(this: number | undefined): string {\r\n return this === undefined ? '' : (this).toString();\r\n}\r\nNumber.prototype.nullableNumberToString = function (this: number | null | undefined): string {\r\n return this === null || this === undefined ? '' : (this).toString();\r\n}\r\n\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { DomSanitizer } from \"@angular/platform-browser\";\nimport { MatIconRegistry } from \"@angular/material/icon\";\n\nconst EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M17,16V14H7V16H17M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H19M17,10V8H7V10H17Z\" /></svg>\n`;\n\nconst NOT_EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M6,15H8V17H6M11,13H18V15H11M11,9H18V11H11M6,7H8V13H6M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst GREATER_THAN_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M10.41,7.41L15,12L10.41,16.6L9,15.18L12.18,12L9,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst GREATER_THAN_OR_EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M13,13H18V15H13M13,9H18V11H13M6.91,7.41L11.5,12L6.91,16.6L5.5,15.18L8.68,12L5.5,8.82M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst LESS_THAN_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M13.59,7.41L9,12L13.59,16.6L15,15.18L11.82,12L15,8.82M19,3C20.11,3 21,3.9 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19Z\" /></svg>\n`;\n\nconst LESS_THAN_OR_EQUAL_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M13,13H18V15H13M13,9H18V11H13M10.09,7.41L11.5,8.82L8.32,12L11.5,15.18L10.09,16.6L5.5,12M5,3C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3H5Z\" /></svg>\n`;\n\nconst CONTAINS_ICON = `\n <svg style=\"width:24px;height:24px\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M2,3H8V5H4V19H8V21H2V3M7,17V15H9V17H7M11,17V15H13V17H11M15,17V15H17V17H15M22,3V21H16V19H20V5H16V3H22Z\" /></svg>\n`;\n\n@NgModule({\n imports: [CommonModule, FormsModule],\n declarations: [],\n exports: []\n})\nexport class TruSearchIconModule {\n constructor(sanitizer: DomSanitizer, iconRegistry: MatIconRegistry) {\n iconRegistry.addSvgIconLiteral(\n \"equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"not-equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(NOT_EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"greater-than-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(GREATER_THAN_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"greater-than-or-equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(GREATER_THAN_OR_EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"less-than-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(LESS_THAN_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"less-than-or-equal-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(LESS_THAN_OR_EQUAL_ICON)\n );\n iconRegistry.addSvgIconLiteral(\n \"contains-operator-icon\",\n sanitizer.bypassSecurityTrustHtml(CONTAINS_ICON)\n );\n }\n}\n","import { NgModule } from '@angular/core';\r\nimport { MaterialModule } from './material.module';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [],\r\n exports: []\r\n})\r\nexport class TruCommonModule { }\r\n","/*\n * Public API Surface of tru-common-lib\n */\n\n/*\n * Base Classes\n */\nexport * from './lib/base-classes/tru-component-config-base';\nexport * from './lib/base-classes/tru-control-component-config-base';\nexport * from './lib/base-classes/tru-edit-control-base';\nexport * from './lib/base-classes/tru-edit-control-config-base';\nexport * from './lib/base-classes/tru-edit-parent-control-config-base';\nexport * from './lib/base-classes/tru-edit-pkey-control-config-base';\nexport * from './lib/base-classes/tru-entity-base';\nexport * from './lib/base-classes/tru-list-control-config-base';\nexport * from './lib/base-classes/tru-property-config-base';\nexport * from './lib/base-classes/tru-search-control-base';\nexport * from './lib/base-classes/tru-search-control-parent-base';\nexport * from './lib/base-classes/tru-search-control-config-base';\nexport * from './lib/base-classes/tru-search-control-range-base';\nexport * from './lib/base-classes/tru-search-config-base';\nexport * from './lib/base-classes/tru-table-config-base';\n\n/*\n * Base View\n */\nexport * from './lib/base-views/detail/tru-detail-view-base';\n\nexport * from './lib/base-views/search/tru-search-view-base';\nexport * from './lib/base-views/search/services/tru-search-view-control-event-handler';\nexport * from './lib/base-views/search/services/tru-search-view-event-handler';\n\nexport * from './lib/base-views/search-result/tru-search-result-view-base';\n\nexport * from './lib/base-views/tru-view-base';\n\n/*\n * Classes\n */\nexport * from './lib/classes/tru-choice';\nexport * from './lib/classes/tru-context-filter';\nexport * from './lib/classes/tru-context-filter-choice';\nexport * from './lib/classes/tru-data-change';\nexport * from './lib/classes/tru-formula-eval';\nexport * from './lib/classes/tru-name-value';\nexport * from './lib/classes/tru-navigation-properties-config';\nexport * from './lib/classes/tru-navigation-property-config'\nexport * from './lib/classes/tru-predicate';\nexport * from './lib/classes/tru-property-config-cloud-file';\nexport * from './lib/classes/tru-property-config-date';\nexport * from './lib/classes/tru-property-config-decimal';\nexport * from './lib/classes/tru-property-config-file';\nexport * from './lib/classes/tru-property-config-foreign-key';\nexport * from './lib/classes/tru-property-config-integer';\nexport * from './lib/classes/tru-property-config-password';\nexport * from './lib/classes/tru-property-config-percentage';\nexport * from './lib/classes/tru-property-config-scientific';\nexport * from './lib/classes/tru-property-config-text';\nexport * from './lib/classes/tru-property-config-text-choices';\nexport * from './lib/classes/tru-property-config-usa-address';\nexport * from './lib/classes/tru-property-config-zip-code';\nexport * from './lib/classes/tru-query-predicate-manager';\nexport * from './lib/classes/tru-view-menu-config';\nexport * from './lib/classes/tru-validator-factory';\n\n/*\n * Components\n */\nexport * from './lib/components/about-dialog/tru-about-dialog';\n\nexport * from './lib/components/app-settings-dialog/tru-app-settings-dialog';\n\nexport * from './lib/components/card-column/classes/tru-card-column-config';\nexport * from './lib/components/card-column/classes/tru-card-column-data';\nexport * from './lib/components/card-column/classes/tru-card-column-search-results-config-base';\nexport * from './lib/components/card-column/tru-card-column';\nexport * from './lib/components/card-column/tru-card';\n\nexport * from './lib/components/clone-view/tru-clone-view';\n\nexport * from './lib/components/confirm-dialog/tru-confirm-dialog';\n\nexport * from './lib/components/data-grid/classes/tru-data-grid-config';\nexport * from './lib/components/data-grid/classes/tru-data-grid-cell-renderer';\nexport * from './lib/components/data-grid/classes/tru-data-grid-pkey-cell-renderer';\nexport * from './lib/components/data-grid/enums/tru-data-grid-types';\nexport * from './lib/components/data-grid/headers/tru-data-grid-header';\nexport * from './lib/components/data-grid/headers/tru-data-grid-header-filter';\nexport * from './lib/components/data-grid/headers/tru-data-grid-ref-header';\nexport * from './lib/components/data-grid/services/tru-data-grid-util';\nexport * from './lib/components/data-grid/tru-data-grid';\n\nexport * from './lib/components/desktop/tru-desktop';\n\nexport * from './lib/components/desktop/classes/tru-desktop-view-config';\n\nexport * from './lib/components/desktop/services/tru-desktop-manager';\nexport * from './lib/components/desktop/services/tru-window-manager';\nexport * from './lib/components/desktop/services/tru-desktop-view-event-notifier';\nexport * from './lib/components/desktop/services/tru-window-action-event-handler';\nexport * from './lib/components/desktop/services/tru-window-close-event-args';\nexport * from './lib/components/desktop/services/tru-window-event-args';\nexport * from './lib/components/desktop/services/tru-window-event-handler';\nexport * from './lib/components/desktop/services/tru-desktop-event-handler';\n\nexport * from './lib/components/error-dialog/services/tru-error-interceptor';\nexport * from './lib/components/error-dialog/tru-error-dialog';\n\nexport * from './lib/components/export-dialog/tru-export-dialog';\n\nexport * from './lib/components/grid-validation-dialog/tru-grid-validation-dialog';\nexport * from './lib/components/grid-validation-dialog/tru-grid-validation-dialog-config';\n\nexport * from './lib/components/layout/column/tru-column';\nexport * from './lib/components/layout/form/tru-form';\nexport * from './lib/components/layout/group-box/tru-group-box';\nexport * from './lib/components/layout/row/tru-row';\nexport * from './lib/components/layout/tab/tab/tru-tab';\nexport * from './lib/components/layout/tab/tab-group/tru-tab-group';\n\nexport * from './lib/components/password-dialog/tru-password-dialog';\n\nexport * from './lib/components/report-view/tru-report-view';\n\nexport * from './lib/components/toolbar/tru-toolbar';\nexport * from './lib/components/toolbar/menu/tru-toolbar-menu';\nexport * from './lib/components/toolbar/button/tru-toolbar-button';\nexport * from './lib/components/toolbar/dropdown/tru-toolbar-dropdown';\nexport * from './lib/components/toolbar/separator/tru-toolbar-separator';\nexport * from './lib/components/toolbar/context-filter/tru-toolbar-context-filter';\nexport * from './lib/components/toolbar/text/tru-toolbar-text';\nexport * from './lib/components/toolbar/textbox/tru-toolbar-textbox';\nexport * from './lib/components/toolbar/app-customization/tru-toolbar-app-customization';\nexport * from './lib/components/toolbar/user-profile/tru-toolbar-user-profile';\n\nexport * from './lib/components/login/tru-login';\nexport * from './lib/components/login/tru-login-module';\nexport * from './lib/components/login/services/tru-auth';\nexport * from './lib/components/login/services/tru-auth-interceptor';\n\nexport * from './lib/components/validation-dialog/tru-validation-dialog';\nexport * from './lib/components/validation-dialog/tru-validation-dialog-config';\nexport * from './lib/components/validation-dialog/tru-validation-dialog-context';\n\n/*\n * Directives\n */\nexport * from './lib/directives/breeze-validator/tru-breeze-validator';\nexport * from './lib/directives/search-panel-position-manager/tru-search-panel-position-manager';\nexport * from './lib/directives/select-panel/tru-mat-select-panel';\n\n/*\n * Interfaces\n */\nexport * from './lib/interfaces/tru-ancestor';\nexport * from './lib/interfaces/tru-value';\n\n/*\n * Services\n */\nexport * from './lib/services/tru-action-invoke';\nexport * from './lib/services/tru-app-environment';\nexport * from './lib/services/tru-breeze-context-factory';\nexport * from './lib/services/tru-breeze-metadata-provider';\nexport * from './lib/services/tru-cloud-file-manager';\nexport * from './lib/services/tru-component-lookup';\nexport * from './lib/services/tru-connection-hub';\nexport * from './lib/services/tru-context-filters';\nexport * from './lib/services/tru-data-context';\nexport * from './lib/services/tru-entity-accessor';\nexport * from './lib/services/tru-formatter';\nexport * from './lib/services/tru-model-navigation-properties-lookup';\nexport * from './lib/services/tru-model-property-lookup';\nexport * from './lib/services/tru-model-type-lookup';\nexport * from './lib/services/tru-predicate-map';\nexport * from './lib/services/tru-report-manager';\nexport * from './lib/services/tru-search-result-view-manager';\nexport * from './lib/services/tru-sort';\nexport * from './lib/services/tru-model-table-lookup';\nexport * from './lib/services/tru-text-manager';\nexport * from './lib/services/tru-ui-notification';\nexport * from './lib/services/tru-user-preference-manager';\nexport * from './lib/services/tru-user';\nexport * from './lib/services/tru-util';\n\n/*\n * Global Extensions\n */\nexport * from './lib/extensions';\n\n/*\n * Modules\n */\nexport * from './lib/assets/tru-icon-module';\nexport * from './lib/assets/tru-search-icon-module';\nexport * from './lib/tru-common-module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BreezeDataService","i1.TruBreezeMetadataProvider","i2.TruAppEnvironment","i2","i5","i6","i7","i8","i4","i1","i1.TruUtil","i3.TruUiNotification","i4.TruTextManager","i5.TruUser","i1.TruBreezeContextFactory","i2.TruModelNavigationPropertiesLookup","i3.TruGlobalDataContext","i4.TruAppEnvironment","i5.TruEntityAccessor","i6.TruUiNotification","i1.TruContextFilters","i2.TruDesktopEventHandler","i1.TruDesktopManager","i2.TruWindowEventHandler","i4.TruUser","i1.TruTextManager","i2.TruUtil","MatFormField","MatOption","i1.TruUser","i2.TruAuth","i3.TruDataContext","i4.TruModelTableLookup","i5.TruModelPropertyLookup","i6.TruModelTypeLookup","i7.TruModelNavigationPropertiesLookup","i8.TruUiNotification","i9","i11","i1.TruDataContext","i2.TruComponentLookup","i3.TruAppEnvironment","i5.TruDesktopManager","i6.TruWindowEventHandler","i7.TruDesktopViewEventNotifier","i8.TruUtil","i1.TruUiNotification","_","i1.TruModelTypeLookup","i3.TruUser","i1.TruUserPreferenceManager","i2.TruModelTableLookup","uuidv4","i2.TruModelTypeLookup","i3.TruSearchViewEventHandler","i4.TruSearchResultViewManager","i1.TruDataGridClipboard","i3","moment","i3.TruModelTypeLookup","i4.TruModelPropertyLookup","i3.TruSearchResultViewManager","i5.TruSearchViewEventHandler","i7.TruConnectionHub","i8.TruWindowEventHandler","i9.TruUtil","i10.TruTabGroupEventNotifier","i2.TruEntityAccessor","i4.TruAuth","i5.TruUiNotification","MatDivider","i1.TruComponentLookup","i2.TruTextManager","i3.TruDesktopManager","i4.TruWindowEventHandler","i7.TruGlobalDataContext","i8.TruUser","i4.TruActionInvoke","i1.TruWindowEventHandler","i2.TruUiNotification","i3.TruTextManager","i5.TruUtil","i1.TruDesktopService","i3.TruDesktopEventHandler","i4.TruUtil","i4.TruUiNotification","i5.TruComponentLookup","i6.TruAppEnvironment","i1.TruErrorManager","i1.TruTabGroupEventNotifier","i1.TruAuth","i1.TruAppEnvironment"],"mappings":"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"}