@trudb/tru-common-lib 0.1.310 → 0.1.313

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-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-user.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-global-data-context.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/services/tru-ui-notification.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/services/tru-text-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-event-handler.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/detail/tru-detail-view-base-module.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-manager.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/base-views/search/tru-search-view-base-module.ts","../../../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/base-views/search-result/tru-search-result-view-base-module.ts","../../../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-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-report-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-validator-factory.ts","../../../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/card-column/tru-card.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-type-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-search-result-view-manager.ts","../../../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/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/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/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/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/toolbar/menu/menu-item/tru-toolbar-menu-item-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/tru-toolbar-menu-module.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/components/toolbar/button/tru-toolbar-button-module.ts","../../../projects/tru-common-lib/src/lib/services/tru-util.ts","../../../projects/tru-common-lib/src/lib/directives/select-panel/tru-mat-select-panel.ts","../../../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/directives/select-panel/tru-mat-select-panel-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/dropdown/tru-toolbar-dropdown-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/separator/tru-toolbar-separator-module.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/context-filter/tru-toolbar-context-filter-module.ts","../../../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/toolbar/text/tru-toolbar-text-module.ts","../../../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/user-profile/tru-toolbar-user-profile-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar-module.ts","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card-column-module.ts","../../../projects/tru-common-lib/src/lib/material.module.ts","../../../projects/tru-common-lib/src/lib/components/confirm-dialog/tru-confirm-dialog-module.ts","../../../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/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-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/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/components/validation-dialog/tru-validation-dialog-context.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-config.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/desktop/services/tru-desktop-view-event-notifier.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-model-property-lookup.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/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/services/tru-component-lookup.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-service.ts","../../../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/view/tru-desktop-view.ts","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view.html","../../../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/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/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/tru-desktop.ts","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop.html","../../../projects/tru-common-lib/src/lib/components/desktop/menubar/tru-desktop-menubar-module.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/statusbar/tru-desktop-statusbar-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/taskbar/tru-desktop-taskbar-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/directives/resizable/tru-desktop-resizable-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/window/tru-desktop-window-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/viewport/tru-desktop-viewport-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-action-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/export-dialog/tru-export-dialog-module.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/column/tru-column-module.ts","../../../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/form/tru-form-module.ts","../../../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/group-box/tru-group-box-module.ts","../../../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/row/tru-row-module.ts","../../../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/tru-tab-module.ts","../../../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/layout/tab/tab-group/tru-tab-group-module.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/tru-password-dialog-module.ts","../../../projects/tru-common-lib/src/lib/components/report-view/tru-report-view-module.ts","../../../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-module.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator-module.ts","../../../projects/tru-common-lib/src/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.ts","../../../projects/tru-common-lib/src/lib/directives/search-panel-position-manager/tru-search-panel-position-manager-module.ts","../../../projects/tru-common-lib/src/lib/services/tru-cloud-file-manager.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/services/tru-table-registry.ts","../../../projects/tru-common-lib/src/lib/extensions.ts","../../../projects/tru-common-lib/src/lib/assets/tru-icon-module.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?: () => 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\nimport { TruDataContext } from '../services/tru-data-context';\r\n\r\nexport class TruEntityBase implements Entity {\r\n constructor(...args: any[]) { }\r\n\r\n entityAspect: EntityAspect = new EntityAspect();\r\n entityType!: EntityType;\r\n\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?: () => Observable<TruChoice[]>;\r\n protected choicesEntityType?: any;\r\n}\r\n","export 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 choices: any = undefined;\r\n validation: string | undefined = undefined;\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 { 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}\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 * 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 } from \"breeze-client\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { TruDataContext } from \"./tru-data-context\";\r\nimport { TruUser } from \"./tru-user\";\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 _appUri: string;\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 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(private truUser: TruUser) {\r\n this._appUri = '';\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.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 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;\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 this.breezeDataService = new BreezeDataService({\r\n serviceName: this.servicePath,\r\n hasServerMetadata: false\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 * 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 { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject } from '@angular/core';\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})\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 { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject, HostListener } from '@angular/core';\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})\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}\r\n","import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TRU_AUTH_CONFIG } from \"../login/classes/tru-auth-config\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TruPasswordChangeRequest } from './classes/tru-password-change-request';\r\nimport { TruUser } from '../../services/tru-user';\r\nimport { Subscription } from 'rxjs';\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})\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 username: string | null = null;\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 user: TruUser,\r\n @Inject(MAT_DIALOG_DATA) public data: TruPasswordDialog) {\r\n this.username = this.user.username;\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 = 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 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\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.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 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 }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">Change Password</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\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\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 [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 [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 { 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\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 = toastr;\r\n this._dialog = 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 popup(message);\r\n message = prefix + ': ' + message;\r\n if (detail)\r\n message += '\\r\\n' + detail;\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 = (): 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 });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\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, 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\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 http: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification,\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 _.map(entities, (entity: any) => { return { value: { $: entity[pKeyName] }, label: hid !== null ? hid : entity.HID }; });\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 _.map(entities, (entity: any) => { return { name: entity.Name, value: { $: entity.Value }, entity: entity }; });\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,\r\n expands: [] | null = null): Array<any> => {\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (ref)\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 hid: string | null = null,\r\n goToServer: boolean = false,\r\n ref: number | null | 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 query = setupQuery(query) ?? query;\r\n if (ref)\r\n query = query.where(entity.name + 'Ref', '==', ref);\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 }\r\n return of(this.formatQueryChoices(query, this._entityManager.executeQueryLocally(query), pkeyName, null));\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 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 fetch(this._baseUrl + url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json; charset=UTF-8'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n this.saveDownloadedFile(response);\r\n })\r\n .catch(err => this.uiNotification.error(err));\r\n };\r\n\r\n downloadFromService = (serviceName: string, data: any) => {\r\n this.downloadFromUrl(serviceName, data);\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: Response) => {\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.arrayBuffer();\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","import { Injectable } from '@angular/core';\r\nimport { Entity, EntityAction, EntityChangedEventArgs, EntityState, EntityType, ValidationError, breeze } from \"breeze-client\";\r\nimport { TruBreezeContextFactory, TruBreezeContext } from './tru-breeze-context-factory';\r\nimport { TruEntityAccessor } from './tru-entity-accessor';\r\nimport { TruUiNotification } from './tru-ui-notification';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TruDataChange } from '../classes/tru-data-change';\r\nimport { TruGlobalDataContext } from './tru-global-data-context';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\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 constructor(\r\n private breezeContextFactory: TruBreezeContextFactory,\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 this.propertyChanged(changeArgs);\r\n this.entityChangedHandler(changeArgs);\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;\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;\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;\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 = JSON.parse(JSON.stringify('Replace with: ModelNavigationProperties.value'))[typeName];\r\n if (entityChildrenNames) {\r\n Object.entries(entityChildrenNames)\r\n .forEach(([k, v]: any) => {\r\n let property = entity[k as keyOfEntity] as any;\r\n property.forEach((child: Entity) => {\r\n if (typeof v === 'object' && v.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 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 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: 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 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 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 this.revert();\r\n }).finally(() => { });\r\n }\r\n });\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 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() {\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.stack)\r\n lines.push(error.stack);\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 * 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 { Subject } from 'rxjs';\r\n\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruWindowEventHandler {\r\n private open$: Subject<TruWindowEventArgs> = new Subject<TruWindowEventArgs>();\r\n private addView$: Subject<TruDesktopViewConfig> = new Subject<TruDesktopViewConfig>();\r\n private setWindowTitle$: Subject<string> = new Subject<string>();\r\n private removeForwadViews$: Subject<null> = new Subject<null>();\r\n\r\n onOpen() {\r\n return this.open$;\r\n }\r\n\r\n open(windowEvent: TruWindowEventArgs) {\r\n this.open$.next(windowEvent);\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 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 } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\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\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})\r\nexport class TruDetailViewBase {\r\n @Input() view!: TruDesktopViewConfig;\r\n\r\n tableName: any;\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 appEnvironment: TruAppEnvironment,\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler) {\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 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\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, () => { return true; });\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 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 }\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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { TruDetailViewBase } from './tru-detail-view-base';\r\n\r\n@NgModule({\r\n declarations: [TruDetailViewBase],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDetailViewBase]\r\n})\r\nexport class DetailViewModule { }\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\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 context: any = {};\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}\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 => {\r\n let choice = this.filters.find(f => f.selectedChoice.table === tableName)?.selectedChoice;\r\n if (!choice)\r\n throw new Error('ContextFilterChoice not found. Possible invalid configuration.');\r\n return choice.ref;\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 { TruWindowEventHandler } from './tru-window-event-handler';\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruContextFilters } from \"../../../services/tru-context-filters\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruDesktopTitle } from \"../classes/tru-desktop-title\";\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 windowEventHandler: TruWindowEventHandler) { }\r\n\r\n getWindowEvent = (\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): 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.views = [\r\n {\r\n active: true,\r\n entities: entities,\r\n entityIndex: 0,\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.windowEventHandler.open(this.getWindowEvent(tableName, tablePluralName, tablePluralLabel, componentName, entities, openAsDetaiView));\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.windowEventHandler.open(this.getWindowEvent(tableName, tablePluralName, tablePluralLabel, componentName, entities, openAsDetaiView));\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 { 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\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})\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() {\r\n if (!this.windowTitle)\r\n this.windowTitle = this.desktopManager.getUniqueTitle(this.tablePluralLabel);\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","","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruSearchViewBase } from \"./tru-search-view-base\";\r\n\r\n@NgModule({\r\n declarations: [TruSearchViewBase],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruSearchViewBase]\r\n})\r\nexport class TruSearchViewBaseModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\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\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","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 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 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\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})\r\nexport class TruSearchResultViewBase implements OnInit {\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 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 ngOnInit(): void {\r\n this.tableName = this.view.window.tableName;\r\n this.tablePluralLabel = this.view.window.tablePluralLabel;\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 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","","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruSearchResultViewBase } from \"./tru-search-result-view-base\";\r\n\r\n@NgModule({\r\n declarations: [TruSearchResultViewBase],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruSearchResultViewBase]\r\n})\r\nexport class TruSearchResultViewBaseModule { }\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 { 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\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}\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\n\r\nexport abstract class TruReportConfig {\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 + '.';\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 { Observable } from \"rxjs\";\r\nimport { TruTableConfigBase } from \"../../../base-classes/tru-table-config-base\";\r\nimport { TruReportConfig } from \"../../../classes/tru-report-config\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\n\r\nexport abstract class TruCardColumnData {\r\n\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: () => 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 _ 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 cards = [];\r\n for (let i = 0; i < allColumns.length; i++) {\r\n for (let j = 0; j < allColumns[i].cards.length; j++) {\r\n cards.push(allColumns[i].cards[j]);\r\n }\r\n }\r\n\r\n let index = _.findIndex(cards, function (i) {\r\n return i.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(cards, index);\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 { 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 { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-toolbar',\r\n templateUrl: './tru-toolbar.html',\r\n styleUrls: ['./tru-toolbar.css']\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 { Component, Input} from '@angular/core';\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})\r\nexport class TruToolbarMenuItem {\r\n @Input() config!: any;\r\n\r\n maxHeight: number = 200;\r\n\r\n constructor() { }\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 }\r\n }\r\n\r\n ngDoCheck() {\r\n this.maxHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0) - 40;\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 <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 { Component, Input, ViewEncapsulation } from '@angular/core';\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 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 { Component, Input } from '@angular/core';\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})\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 { Component } from '@angular/core';\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})\r\nexport class TruToolbarSeparator {\r\n constructor() {}\r\n}\r\n","<div class=\"tru-toolbar-separator\"></div>\r\n","import { Component, ElementRef, Input, TemplateRef, ViewChild } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { breeze } from 'breeze-client';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { TruModelTypeLookup } from '../../services/tru-model-type-lookup';\r\nimport { ITruCardColumnConfig } from './classes/tru-card-column-config';\r\nimport { Subscription, forkJoin, skip } from 'rxjs';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\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})\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 childTablePluralLabel!: 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 busyMessage: string = '';\r\n isBusy: boolean = false;\r\n columns: any = [];\r\n cards: any = [];\r\n lockedColumns: any = [];\r\n columnFilterRefs = [];\r\n cardFilterStr: string | null = 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 reportMenus: any = [];\r\n selectedReport: any | null = null;\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\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 private parentTableModel = null;//dataService.model.tables[parentTableName];\r\n\r\n private createDataForEntity = (entity: TruEntityBase) => {\r\n var data = this.config.resultConfig.rowDataEnhancer();\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.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 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 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 = (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 = .config.save();\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 // scope.config.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 // scope.config.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\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.reportConfig.menuItemsEnabled = () => { return this.columns.length; };\r\n this.config.reportConfig.allMenus().subscribe((menu: any) => { this.reportMenus = 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\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 = () => {\r\n if (this.cardColumn.columnFilterRefs && this.cardColumn.columnFilterRefs.length) {\r\n let filteredColumns;\r\n\r\n for (var i = 0; i < this.columns.length; i++) {\r\n var column = this.columns[i];\r\n\r\n if (!column.locked && column.data.entityAspect) {\r\n var found = this.cardColumn.columnFilterRefs.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.columns.length; i++) {\r\n var column = this.columns[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 locked: boolean;\r\n private parentElement: HTMLDivElement;\r\n\r\n columnElement;\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 (scope.config.cardId) {\r\n // cardFilterResult = filterParts.every(function (part) {\r\n // return scope.config.cardId(card.data.$entity).toLowerCase().indexOf(part) != -1;\r\n // });\r\n //} else {\r\n // cardFilterResult = scope.config.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', () => { alert('goToDetail') });\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: HTMLSpanElement = document.createElement('span');\r\n linkButtonText.classList.add('tru-card-icon-small');\r\n linkButtonText.classList.add('icon-check-square-o');\r\n\r\n linkButtonText.addEventListener('click', () => {\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 *ngIf=\"reportMenus.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"reportMenus.length\">\r\n <tru-toolbar-menu *ngFor=\"let report of reportMenus\" [config]=\"report\"></tru-toolbar-menu>\r\n </div>\r\n </tru-toolbar>\r\n <!--<tru-toolbar [config]=\"config.toolbarConfig\" class=\"main-toolbar\"></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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarMenuItem } from \"./tru-toolbar-menu-item\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarMenuItem],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruToolbarMenuItem]\r\n})\r\nexport class TruToolbarMenuItemModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarMenuButton } from \"./tru-toolbar-menu-button\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarMenuButton],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruToolbarMenuButton]\r\n})\r\nexport class TruToolbarMenuButtonModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarMenu } from \"./tru-toolbar-menu\";\r\nimport { TruToolbarMenuItemModule } from \"./menu-item/tru-toolbar-menu-item-module\"\r\nimport { TruToolbarMenuButtonModule } from \"./menu-button/tru-toolbar-menu-button-module\"\r\n\r\n@NgModule({\r\n declarations: [TruToolbarMenu],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenuItemModule,\r\n TruToolbarMenuButtonModule\r\n ],\r\n exports: [TruToolbarMenu]\r\n})\r\nexport class TruToolbarMenuModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\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 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=\"-1\"\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarButton } from \"./tru-toolbar-button\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarButton],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule\r\n ],\r\n exports: [TruToolbarButton]\r\n})\r\nexport class TruToolbarButtonModule { }\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 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","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 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 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 { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { ITruToolbarDropdownOption } from '../classes/tru-toolbar-dropdown-option';\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 encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarDropdown implements OnInit, AfterViewInit {\r\n @Input() config: [] | null = null;\r\n\r\n @Input() options: Array<ITruToolbarDropdownOption> = [];\r\n\r\n @Input() selectedOption!: ITruToolbarDropdownOption;\r\n @Output() selectedOptionChange = new EventEmitter<ITruToolbarDropdownOption>();\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Output() selectionChange = new EventEmitter<ITruToolbarDropdownOption | null>();\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 onSelectionChange = (event: MatSelectChange) => {\r\n this.selectedOptionChange.emit(event.value);\r\n this.selectionChange.emit(event.value);\r\n }\r\n}\r\n","<mat-form-field>\r\n <mat-select [(ngModel)]=\"selectedOption\"\r\n [disabled]=\"disabled\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n tru-mat-select-panel>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\r\n {{option.label}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { TruMatSelectPanel } from \"./tru-mat-select-panel\";\r\n\n@NgModule({\n declarations: [TruMatSelectPanel],\n imports: [CommonModule, FormsModule],\n exports: [TruMatSelectPanel]\n})\nexport class TruMatSelectPanelModule { }\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarDropdown } from \"./tru-toolbar-dropdown\";\r\nimport { TruMatSelectPanelModule } from \"../../../directives/select-panel/tru-mat-select-panel-module\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarDropdown],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n TruMatSelectPanelModule\r\n ],\r\n exports: [TruToolbarDropdown]\r\n})\r\nexport class TruToolbarDropdownModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarSeparator } from \"./tru-toolbar-separator\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarSeparator],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruToolbarSeparator]\r\n})\r\nexport class TruToolbarSeparatorModule { }\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\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 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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { TruToolbarContextFilter } from './tru-toolbar-context-filter';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TruMatSelectPanelModule } from '../../../directives/select-panel/tru-mat-select-panel-module';\r\n\r\n@NgModule({\r\n declarations: [TruToolbarContextFilter],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatInputModule,\r\n MatIconModule,\r\n TruMatSelectPanelModule\r\n ],\r\n exports: [TruToolbarContextFilter]\r\n})\r\nexport class TruToolbarContextFilterModule { }\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\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 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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarText } from \"./tru-toolbar-text\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarText],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule\r\n ],\r\n exports: [TruToolbarText]\r\n})\r\nexport class TruToolbarTextModule { }\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\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 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();\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 Change Password\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 Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarUserProfile } from \"./tru-toolbar-user-profile\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarUserProfile],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatIconModule\r\n ],\r\n exports: [TruToolbarUserProfile]\r\n})\r\nexport class TruToolbarUserProfileModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbar } from \"./tru-toolbar\";\r\nimport { TruToolbarMenuModule } from \"./menu/tru-toolbar-menu-module\";\r\nimport { TruToolbarButtonModule } from \"./button/tru-toolbar-button-module\";\r\nimport { TruToolbarDropdownModule } from \"./dropdown/tru-toolbar-dropdown-module\";\r\nimport { TruToolbarSeparatorModule } from \"./separator/tru-toolbar-separator-module\";\r\nimport { TruToolbarContextFilterModule } from \"./context-filter/tru-toolbar-context-filter-module\";\r\nimport { TruToolbarTextModule } from \"./text/tru-toolbar-text-module\";\r\nimport { TruToolbarUserProfileModule } from \"./user-profile/tru-toolbar-user-profile-module\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbar],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenuModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarContextFilterModule,\r\n TruToolbarTextModule,\r\n TruToolbarUserProfileModule\r\n ],\r\n exports: [TruToolbar,\r\n TruToolbarMenuModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarContextFilterModule,\r\n TruToolbarTextModule,\r\n TruToolbarUserProfileModule\r\n ]\r\n})\r\nexport class TruToolbarModule { }\r\n","import { NgModule, APP_INITIALIZER } from \"@angular/core\";\r\nimport { CommonModule, } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatIconModule } from \"@angular/material/icon\"\r\nimport { TruToolbarModule } from \"../toolbar/tru-toolbar-module\";\r\nimport { TruToolbarButtonModule } from \"../toolbar/button/tru-toolbar-button-module\";\r\nimport { TruToolbarDropdownModule } from \"../toolbar/dropdown/tru-toolbar-dropdown-module\";\r\nimport { TruToolbarSeparatorModule } from \"../toolbar/separator/tru-toolbar-separator-module\";\r\nimport { TruCardColumn } from \"./tru-card-column\";\r\n\r\n@NgModule({\r\n providers: [],\r\n declarations: [TruCardColumn],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n TruToolbarModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule\r\n ],\r\n exports: [TruCardColumn]\r\n})\r\nexport class TruCardColumnModule { }\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MaterialModule } from '../../material.module';\r\n\r\nimport { TruConfirmDialog } from \"./tru-confirm-dialog\";\r\n\r\n@NgModule({\r\n declarations: [TruConfirmDialog],\r\n imports: [CommonModule, FormsModule, MaterialModule],\r\n exports: [TruConfirmDialog]\r\n})\r\nexport class TruConfirmDialogModule { }\r\n","export 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 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 var content = document.createTextNode(value);\r\n params.eGridCell.appendChild(content);\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 document.addEventListener('mouseover', this.onMouseOver);\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","export class TruDataGridPkeyCellRenderer {\r\n // private eGui: is an empty element to satisfy the getGui method. \r\n private eGui!: HTMLDivElement\r\n\r\n init(params: any) {\r\n params.eGridCell.innerHTML = '';\r\n let value = params.value;\r\n if (params.value < 0)\r\n value = 'NEW';\r\n\r\n var content = document.createTextNode(value);\r\n params.eGridCell.appendChild(content);\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}\r\n","export enum TruDataGridTypes {\r\n Search,\r\n Detail,\r\n DetailManyToMany\r\n}\r\n","import { 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, 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\" (click)=\"onSortRequested($event)\">\r\n <div class=\"ag-header-control-container\">\r\n <div class=\"ag-header-control-sort-container\">\r\n <span *ngIf=\"ascSort === 'active'\" ref=\"eSortAsc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-ascending-icon\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n <span *ngIf=\"descSort === 'active'\" ref=\"eSortDesc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-descending-icon\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n </div>\r\n <div>\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</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-sort-container {\r\n position: relative;\r\n top: 1px;\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-sort-icon.ag-sort-ascending-icon svg {\r\n transform: rotate(180deg);\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 = 'inactive';\r\n public descSort = 'inactive';\r\n public noSort = 'inactive';\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n this.params.column.addEventListener('sortChanged', this.onSortChanged.bind(this));\r\n this.params.api.addEventListener('cellFocused', this.onCellFocused.bind(this));\r\n this.onSortChanged();\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSortChanged() {\r\n this.ascSort = this.descSort = this.noSort = 'inactive';\r\n if (this.params.column.isSortAscending()) {\r\n this.ascSort = 'active';\r\n } else if (this.params.column.isSortDescending()) {\r\n this.descSort = 'active';\r\n } else {\r\n this.noSort = 'active';\r\n }\r\n }\r\n\r\n onSortRequested(event: any) {\r\n var order: 'asc' | 'desc' | null = null;\r\n if (this.params.column.isSortAscending()) {\r\n order = 'desc';\r\n } else if (this.params.column.isSortDescending()) {\r\n order = null;\r\n } else {\r\n order = 'asc';\r\n }\r\n \r\n this.params.setSort(order, event.shiftKey);\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 ngOnDestroy() {\r\n this.params.column.removeEventListener('sortChanged', this.onSortChanged.bind(this));\r\n this.params.api.removeEventListener('cellFocused', this.onCellFocused.bind(this));\r\n }\r\n}\r\n","import { 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, 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\">\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</span>\r\n <span *ngIf=\"ascSort === 'active'\" ref=\"eSortAsc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-ascending-icon\" (click)=\"onSortRequested('desc', $event)\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n <span *ngIf=\"descSort === 'active'\" ref=\"eSortDesc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-descending-icon\" (click)=\"onSortRequested(null, $event)\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n <span *ngIf=\"noSort === 'active'\" ref=\"eSortNone\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-none-icon\" (click)=\"onSortRequested('asc', $event)\"></span>\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-sort-icon {\r\n height: 100%;\r\n width: 100%;\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: 20px;\r\n width: 16px;\r\n padding-top: 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 ::ng-deep .ag-sort-icon.ag-sort-ascending-icon svg {\r\n transform: rotate(180deg);\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridRefHeader implements IHeaderAngularComp {\r\n public params!: IHeaderParams;\r\n public ascSort = 'inactive';\r\n public descSort = 'inactive';\r\n public noSort = 'inactive';\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n this.params.column.addEventListener('sortChanged', this.onSortChanged.bind(this));\r\n this.onSortChanged();\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSortChanged() {\r\n this.ascSort = this.descSort = this.noSort = 'inactive';\r\n if (this.params.column.isSortAscending()) {\r\n this.ascSort = 'active';\r\n } else if (this.params.column.isSortDescending()) {\r\n this.descSort = 'active';\r\n } else {\r\n this.noSort = 'active';\r\n }\r\n }\r\n\r\n onSortRequested(order: 'asc' | 'desc' | null, event: any) {\r\n this.params.setSort(order, event.shiftKey);\r\n }\r\n\r\n onSelectAllIconClicked() {\r\n this.params.api.selectAll();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.params.column.removeEventListener('sortChanged', this.onSortChanged.bind(this));\r\n }\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 { 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 enum TruValidationDialogContext {\r\n Control = 0,\r\n Grid = 1,\r\n Card = 2\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 { 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\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})\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\r\n entity.entityAspect.validateEntity();\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\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\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 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 } 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 { 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","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) => 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);\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);\r\n reloadResults = true;\r\n }\r\n } else if (entity === localEntity) {\r\n this.applyPropertyChanges(change, entity);\r\n this.addEntity(entity);\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);\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);\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 { 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 * 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 start = () => {\r\n this.connection.on(\"error\", (value: string) => {\r\n console.log(JSON.parse(value));\r\n });\r\n\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 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 { Component, Input, OnInit, ViewEncapsulation, OnChanges, AfterViewInit, SimpleChanges, TemplateRef, createComponent, ApplicationRef, ComponentRef, Optional } from '@angular/core';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { ITruDataGridConfig } from './classes/tru-data-grid-config';\r\nimport { TruDataGridTypes } from './enums/tru-data-grid-types';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { forkJoin, fromEvent, Observable, skip, Subscription } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\r\nimport { TruConnectionHub } from '../../services/tru-connection-hub';\r\nimport { ColDef, Column, GridApi, GridReadyEvent, SuppressKeyboardEventParams, RowEvent } from 'ag-grid-community';\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\nimport { TruDataChange } from '../../classes/tru-data-change';\r\nimport { ValidationError } from 'breeze-client';\r\nimport { TruMergeDataSet } from '../../classes/tru-merge-data-set';\r\nimport { TruListControlConfigBase } from '../../base-classes/tru-list-control-config-base';\r\nimport { TruValidationDialogConfig } from '../validation-dialog/tru-validation-dialog-config';\r\nimport { TruValidationDialogContext } from '../validation-dialog/tru-validation-dialog-context';\r\nimport { TruValidationDialog } from '../validation-dialog/tru-validation-dialog';\r\nimport { TruTabGroupEventNotifier } from '../layout/tab/services/tru-tab-group-event-notifier';\r\nimport { TruDesktopViewEventNotifier } from '../desktop/services/tru-desktop-view-event-notifier';\r\nimport { TruUtil } from '../../services/tru-util';\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 host: {'[class.tru-data-grid]': 'true'}\r\n})\r\nexport class TruDataGrid implements OnInit, OnChanges, AfterViewInit {\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 reportMenus: any = [];\r\n selectedReport: 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 gridOptions: any = {\r\n rowSelection: 'multiple',\r\n rowStyle: { background: 'white' },\r\n suppressRowClickSelection: false,\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\r\n },\r\n onRowDataUpdated: () => {\r\n this.config.reportConfig.actionRefs = this.getRefs();\r\n },\r\n onCellEditingStopped: (params: any) => {\r\n //this.gridOptions.api.redrawRows({ rowNodes: params.node });\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\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private desktopViewEventNotifier: TruDesktopViewEventNotifier,\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 util: TruUtil,\r\n private app: ApplicationRef,\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$.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.onSearch(setupQuery);\r\n }));\r\n this.subs.push(this.desktopViewEventNotifier.onActiveStateChanged().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n this.isActive = isActive;\r\n if (this.isActive) {\r\n this.config.reportConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.reportConfig.actionRefs = this.getRefs();\r\n this.api.refreshCells();\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.desktopViewEventNotifier.isActive) {\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\r\n private getRefs = (): string => {\r\n let rowNodes: any = [];\r\n this.api?.forEachNode((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.forEachNode((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 }\r\n\r\n private loadManyToManyGridData = (associatedEntities: Array<any>, associatableEntities: Array<any>, initalLoad: boolean) => {\r\n if (initalLoad)\r\n this.rowData = associatedEntities.map(this.enhanceRowDataForEntity, 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.key === 'Tab';\r\n let isArrowDown = params.event.key === 'ArrowDown';\r\n let isArrowUp = params.event.key === 'ArrowUp';\r\n let isArrowLeft = params.event.key === 'ArrowLeft';\r\n let isArrowRight = params.event.key === 'ArrowRight';\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 (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) => {\r\n if (this.entity) {\r\n let parentName = this.entity.constructor.name;\r\n newEntity[parentName + 'Ref'] = this.entity[parentName + 'Ref'];\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[parentName + 'Ref'] = this.entity[parentName + 'Ref'];\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 : undefined;\r\n }\r\n }\r\n\r\n private validationDialog: ComponentRef<TruValidationDialog> | null = null;\r\n private addValidationDialog = (config: TruValidationDialogConfig, 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<TruValidationDialog>(TruValidationDialog, {\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 defaultColDef: ColDef = {\r\n suppressKeyboardEvent: this.onSuppressKeyboardEvent\r\n };\r\n\r\n getRowCount = () => {\r\n let count = 0;\r\n this.api?.forEachNodeAfterFilter(() => count++);\r\n return 'Rows: ' + count;\r\n }\r\n\r\n getSelectedRowCount = () => {\r\n let count = 0;\r\n count = this.api?.getSelectedRows().length;\r\n return 'Selected: ' + count;\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 onCellClicked = (event: any) => {\r\n if (!event.column.colDef.pinned) {\r\n this.api.deselectAll();\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 = (event: any) => {\r\n if (!event.event) return;\r\n const key = (event.event as unknown) as KeyboardEvent;\r\n if (key.code === 'Space') {\r\n key.preventDefault();\r\n key.stopPropagation();\r\n this.api?.startEditingCell({\r\n rowIndex: event.rowIndex,\r\n colKey: event.column.getColId(),\r\n key: key.code\r\n });\r\n } \r\n }\r\n\r\n onCellMouseOver(e: any) {\r\n let targetElement = e.event.target;\r\n if (!targetElement.classList.contains('ag-cell'))\r\n targetElement = targetElement.closest('.ag-cell');\r\n if (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 TruValidationDialogConfig(entityToValidate, propertyConfig, TruValidationDialogContext.Grid, false);\r\n validationDialogConfig.errorMsg = validationErrorsMessagesForProperty;\r\n validationDialogConfig.mergeData = this.getMergeData(propertyConfig, entityToValidate);\r\n this.addValidationDialog(validationDialogConfig, targetElement);\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 onSearch = (setupQuery: any) => {\r\n this.firstSearchRan = true;\r\n this.api.hideOverlay();\r\n this.api.showLoadingOverlay();\r\n\r\n let entityLoaded = this.loadedEntities.some((ref) => { return ref === this.entity[this.entity.constructor.name + 'Ref']; });\r\n let joins = [];\r\n if (entityLoaded) {\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), null, 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), null, 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: 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 if (this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n let onSuccess = () => {\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.dataContext.delete(entities, confirmMsg, onSuccess);\r\n } else {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.dataContext.delete(entities, confirmMsg);\r\n }\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 }\r\n\r\n onRemove = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.api.selectAll();\r\n selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length)\r\n this.rowData = this.api.getSelectedRows();\r\n else\r\n this.rowData = [];\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.reportConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.reportConfig.allMenus().subscribe((menu: any) => { this.reportMenus = menu; });\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=\"reportMenus.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"reportMenus.length\">\r\n <tru-toolbar-menu *ngFor=\"let report of reportMenus\" [config]=\"report\"></tru-toolbar-menu>\r\n </div>\r\n </tru-toolbar>\r\n </div>\r\n <div 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]=\"25\"\r\n [rowBuffer]=\"50\"\r\n [enterNavigatesVertically]=\"true\"\r\n [enterNavigatesVerticallyAfterEdit]=\"true\"\r\n [suppressRowHoverHighlight]=\"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 </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\">{{getRowCount()}}</p>\r\n <p class=\"tru-data-grid-statusbar-values-text\">{{getSelectedRowCount()}}</p>\r\n </div>\r\n </div>\r\n</div>\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\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})\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 { Injectable } from '@angular/core';\r\nimport { TruReportView } from '../components/report-view/tru-report-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 }\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 { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { CommonModule, } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon'\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { TruDataGrid } from './tru-data-grid';\r\nimport { TruToolbarModule } from '../toolbar/tru-toolbar-module';\r\nimport { TruToolbarButtonModule } from '../toolbar/button/tru-toolbar-button-module';\r\nimport { TruToolbarDropdownModule } from '../toolbar/dropdown/tru-toolbar-dropdown-module';\r\nimport { TruToolbarSeparatorModule } from '../toolbar/separator/tru-toolbar-separator-module';\r\nimport { TruToolbarMenuModule } from '../toolbar/menu/tru-toolbar-menu-module';\r\nimport { TruComponentLookup } from '../../services/tru-component-lookup';\r\n\r\nvar components: Array<any> | null = null;\r\n\r\n@NgModule({\r\n providers: [\r\n TruComponentLookup,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (componentLookup: TruComponentLookup) => function () { components = componentLookup.getBySuffix('list'); },\r\n deps: [TruComponentLookup],\r\n multi: true\r\n }\r\n ],\r\n declarations: [TruDataGrid],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n AgGridModule,\r\n TruToolbarModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarMenuModule\r\n ],\r\n exports: [TruDataGrid]\r\n})\r\nexport class TruDataGridModule { }\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\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\r\n destroy = () => {\r\n while (this.unsubscribes.length) this?.unsubscribes?.shift()?.call();\r\n }\r\n};\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(menu);\r\n }\r\n });\r\n });\r\n };\r\n}\r\n","import { Directive, OnInit, Input, ElementRef } from '@angular/core';\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 { Component, OnInit, Input, ComponentFactoryResolver, ViewContainerRef, SimpleChanges } from '@angular/core';\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 providers: [TruDesktopViewEventNotifier]\n})\nexport class TruDesktopView implements OnInit {\n @Input() view!: TruDesktopViewConfig;\n @Input() active!: boolean;\n\n constructor(\n private desktopViewEventNotifier: TruDesktopViewEventNotifier,\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.viewContainerRef.injector);\n containerRef.instance.view = this.view;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\r\n this.desktopViewEventNotifier.isActive = this.active;\r\n }\n}\n","<div></div>\r\n","import { Component, OnInit, AfterViewInit, Input, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\nimport { TruEntityAccessor } from '../../../services/tru-entity-accessor';\r\nimport { TruTextManager } from '../../../services/tru-text-manager';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruWindowEventHandler } from '../services/tru-window-event-handler';\nimport { TruActionInvoke } from '../../../services/tru-action-invoke';\r\nimport { TruReportManager } from '../../../services/tru-report-manager';\r\nimport { TruUtil } from '../../../services/tru-util';\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 providers: [TruDataContext, TruEntityAccessor, TruWindowEventHandler, TruReportManager, TruActionInvoke]\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 truWindowEventHandler: 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\n private subs: Array<Subscription> = [];\n\n hasChanges = () => {\n return this.dataContext.hasChanges().length;\r\n }\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 /**\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) 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 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 = () => {\n if (this.hasChanges())\n this.uiNotification.confirm('Confirm Action', this.textManager.msgDirtyPreventsClose, false, true, '', 'Ok').then((confirm: boolean) => {});\n else\n this.desktopCtrl.closeWindow(this.window);\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.updateNavigationState();\n\n this.subs.push(this.truWindowEventHandler.onAddView().subscribe((windiowAddViewEvent: TruDesktopViewConfig) => {\r\n this.addView(windiowAddViewEvent);\r\n }));\n\n this.subs.push(this.truWindowEventHandler.onSetWindowTitle().subscribe((windowTitle: string) => {\r\n this.setWindowTitle(windowTitle);\r\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 }\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 <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\">\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\" (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\">\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()\"></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 { Component, OnInit, Input, HostListener, ElementRef, ViewChildren, QueryList } from '@angular/core';\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})\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 { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TruContextFilters } from '../../../services/tru-context-filters';\r\n\n@Component({\n selector: 'tru-desktop-menubar',\n templateUrl: './tru-desktop-menubar.html',\n styleUrls: ['./tru-desktop-menubar.css'],\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-user-profile></tru-toolbar-user-profile>\r\n </tru-toolbar>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\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})\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 (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 { Component, OnInit, Input, QueryList, ViewChild } from '@angular/core';\r\nimport { TruWindowEventArgs } from './services/tru-window-event-args';\r\nimport { TruWindowEventHandler } from './services/tru-window-event-handler';\nimport { TruDesktopService } from './services/tru-desktop-service';\nimport { TruDesktopViewConfig } from './classes/tru-desktop-view-config';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruDesktopWindow } from './window/tru-desktop-window';\r\nimport { TruDesktopViewport } from './viewport/tru-desktop-viewport';\r\nimport { TruUtil } from '../../services/tru-util';\r\n\n@Component({\n selector: 'tru-desktop',\n templateUrl: './tru-desktop.html',\n styleUrls: ['./tru-desktop.css'],\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 truWindowEventHandler: TruWindowEventHandler,\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) => {\n let activeWindow = this.getActiveWindow();\r\n if (activeWindow && activeWindow.isModal) {\r\n activeWindow.invalidOperation = true;\r\n return;\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;\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 };\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) => {\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 return true;\n };\n } else {\n this.windows.splice(this.windows.indexOf(wdw), 1);\n this.activateForemostWindow();\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.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.truWindowEventHandler.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() ? true : false; })\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 false;\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruDesktopMenubar } from \"./tru-desktop-menubar\";\r\nimport { TruToolbarModule } from \"../../toolbar/tru-toolbar-module\";\r\nimport { TruToolbarMenuModule } from \"../../toolbar/menu/tru-toolbar-menu-module\";\r\nimport { TruToolbarDropdownModule } from \"../../toolbar/dropdown/tru-toolbar-dropdown-module\";\r\nimport { TruToolbarSeparatorModule } from \"../../toolbar/separator/tru-toolbar-separator-module\";\r\nimport { TruToolbarContextFilterModule } from \"../../toolbar/context-filter/tru-toolbar-context-filter-module\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopMenubar],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n TruToolbarModule,\r\n TruToolbarMenuModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarContextFilterModule\r\n ],\r\n exports: [TruDesktopMenubar]\r\n})\r\nexport class TruDesktopMenubarModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'tru-desktop-statusbar',\n templateUrl: './tru-desktop-statusbar.html',\n styleUrls: ['./tru-desktop-statusbar.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopStatusbar } from \"./tru-desktop-statusbar\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopStatusbar],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDesktopStatusbar]\r\n})\r\nexport class TruDesktopStatusbarModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopTaskbar } from \"./tru-desktop-taskbar\";\r\nimport { TruToolbarButtonModule } from \"../../toolbar/button/tru-toolbar-button-module\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopTaskbar],\r\n imports: [CommonModule, FormsModule, TruToolbarButtonModule, MatIconModule],\r\n exports: [TruDesktopTaskbar]\r\n})\r\nexport class TruDesktopTaskbarModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopResizable } from \"./tru-desktop-resizable\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopResizable],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDesktopResizable]\r\n})\r\nexport class TruDesktopResizableModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopView } from \"./tru-desktop-view\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopView],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDesktopView]\r\n})\r\nexport class TruDesktopViewModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruDesktopWindow } from \"./tru-desktop-window\";\r\nimport { TruDesktopResizableModule } from \"../directives/resizable/tru-desktop-resizable-module\";\r\nimport { TruDesktopViewModule } from \"../view/tru-desktop-view-module\"\r\nimport { TruDesktopStatusbarModule } from \"../statusbar/tru-desktop-statusbar-module\";\r\nimport { TruToolbarModule } from \"../../toolbar/tru-toolbar-module\";\r\nimport { TruToolbarButtonModule } from \"../../toolbar/button/tru-toolbar-button-module\";\r\nimport { TruToolbarSeparatorModule } from \"../../toolbar/separator/tru-toolbar-separator-module\";\r\nimport { WindowConfig } from \"../services/tru-desktop-service\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopWindow],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n TruDesktopResizableModule,\r\n TruDesktopViewModule,\r\n TruDesktopStatusbarModule,\r\n TruToolbarModule,\r\n TruToolbarButtonModule,\r\n TruToolbarSeparatorModule,\r\n ],\r\n providers: [WindowConfig],\r\n exports: [TruDesktopWindow]\r\n})\r\nexport class TruDesktopWindowModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopViewport } from \"./tru-desktop-viewport\";\r\nimport { TruDesktopWindowModule } from \"../window/tru-desktop-window-module\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopViewport],\r\n imports: [CommonModule, FormsModule, TruDesktopWindowModule],\r\n exports: [TruDesktopViewport]\r\n})\r\nexport class TruDesktopViewportModule { }\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatButtonModule } from \"@angular/material/button\"\nimport { MatIconModule } from \"@angular/material/icon\"\n\nimport { TruDesktop } from './tru-desktop';\nimport { TruDesktopMenubarModule } from './menubar/tru-desktop-menubar-module';\nimport { TruDesktopStatusbarModule } from './statusbar/tru-desktop-statusbar-module';\nimport { TruDesktopTaskbarModule } from './taskbar/tru-desktop-taskbar-module';\nimport { TruDesktopViewportModule } from './viewport/tru-desktop-viewport-module';\nimport { TruDesktopWindowModule } from './window/tru-desktop-window-module';\nimport { TruDesktopViewModule } from './view/tru-desktop-view-module';\n\n@NgModule({\n declarations: [\n TruDesktop\n ],\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n HttpClientModule,\n BrowserAnimationsModule,\n MatButtonModule,\n MatIconModule,\n TruDesktopMenubarModule,\n TruDesktopStatusbarModule,\n TruDesktopTaskbarModule,\n TruDesktopViewportModule,\n TruDesktopWindowModule,\n TruDesktopViewModule,\n ],\n exports: [\n TruDesktop\n ]\n})\nexport class TruDesktopModule { }\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruExportDialog } from \"./tru-export-dialog\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\n\r\n@NgModule({\r\n declarations: [TruExportDialog],\r\n imports: [CommonModule, FormsModule, MaterialModule, MatCheckboxModule],\r\n exports: [TruExportDialog]\r\n})\r\nexport class TruExportDialogModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-column',\r\n templateUrl: './tru-column.html',\r\n styleUrls: ['./tru-column.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruColumn } from \"./tru-column\";\r\n\r\n@NgModule({\r\n declarations: [TruColumn],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruColumn]\r\n})\r\nexport class TruColumnModule { }\r\n","import { AfterViewInit, Component, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-form',\r\n templateUrl: './tru-form.html',\r\n styleUrls: ['./tru-form.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruForm } from \"./tru-form\";\r\n\r\n@NgModule({\r\n declarations: [TruForm],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruForm]\r\n})\r\nexport class TruFormModule { }\r\n","import { Component } from '@angular/core';\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})\r\nexport class TruGroupBox {\r\n constructor() { }\r\n}\r\n","<div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruGroupBox } from \"./tru-group-box\";\r\n\r\n@NgModule({\r\n declarations: [TruGroupBox],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruGroupBox]\r\n})\r\nexport class TruGroupBoxModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-row',\r\n templateUrl: './tru-row.html',\r\n styleUrls: ['./tru-row.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruRow } from \"./tru-row\";\r\n\r\n@NgModule({\r\n declarations: [TruRow],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruRow]\r\n})\r\nexport class TruRowModule { }\r\n","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { MatTab } 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 providers: [TruTabGroupEventNotifier]\r\n})\r\nexport class TruTab {\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\">\r\n <ng-content></ng-content>\r\n</mat-tab>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruTab } from \"./tru-tab\";\r\nimport { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\n@NgModule({\r\n declarations: [TruTab],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n exports: [TruTab]\r\n})\r\nexport class TruTabModule { }\r\n","import { Component, ContentChildren, QueryList, ViewChild } from '@angular/core';\r\nimport { MatTab, MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\r\nimport { TruTab } from '../tab/tru-tab';\r\nimport { TruTabGroupEventNotifier } from '../services/tru-tab-group-event-notifier';\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})\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 (selectedTabChange)=\"onChange($event)\">\r\n <ng-content #outlet></ng-content>\r\n</mat-tab-group>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruTabGroup } from \"./tru-tab-group\";\r\nimport { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\n@NgModule({\r\n declarations: [TruTabGroup],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n exports: [TruTabGroup]\r\n})\r\nexport class TruTabGroupModule { }\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 { TruPasswordDialog } from \"./tru-password-dialog\";\r\nimport { PasswordStrengthMeterComponent } from \"angular-password-strength-meter\";\r\n\r\n@NgModule({\r\n declarations: [TruPasswordDialog],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, PasswordStrengthMeterComponent],\r\n exports: [TruPasswordDialog]\r\n})\r\nexport class TruPasswordDialogModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { TruReportView } from './tru-report-view';\r\n\r\n@NgModule({\r\n declarations: [TruReportView],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSidenavModule\r\n ],\r\n exports: [TruReportView]\r\n})\r\nexport class TruReportViewModule { }\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\n\r\n@Component({\r\n selector: 'tru-login',\r\n templateUrl: './tru-login.html',\r\n styleUrls: ['./tru-login.css']\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 \r\n constructor(private auth: TruAuth) { }\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> loginFormTitle </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\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 TruAuthStrategyProvider\r\n ],\r\n})\r\nexport class TruLoginModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruValidationDialog } from \"./tru-validation-dialog\";\r\n\r\n@NgModule({\r\n declarations: [TruValidationDialog],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruValidationDialog]\r\n})\r\nexport class TruValidationDialogModule { }\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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruBreezeValidator } from './tru-breeze-validator';\r\n\r\n@NgModule({\r\n declarations: [TruBreezeValidator],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruBreezeValidator]\r\n})\r\nexport class TruBreezeValidatorModule { }\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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruSearchPanelPositionManager } from './tru-search-panel-position-manager';\r\n\r\n@NgModule({\r\n declarations: [TruSearchPanelPositionManager],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruSearchPanelPositionManager]\r\n})\r\nexport class TruSearchPanelPositionManagerModule { }\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\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","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 TruTableRegistry {\r\n constructor() { }\r\n\r\n register: Record<string, TruTableConfigBase> = {};\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 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\"><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 SORT_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M440-120v-567l-64 63-56-56 160-160 160 160-56 56-64-63v567h-80Z\"/></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(CIRCLE_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 \"sort-icon\",\n sanitizer.bypassSecurityTrustHtml(SORT_ICON)\n );\n }\n}\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-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';\nexport * from './lib/base-views/detail/tru-detail-view-base-module';\n\nexport * from './lib/base-views/search/tru-search-view-base';\nexport * from './lib/base-views/search/tru-search-view-base-module';\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';\nexport * from './lib/base-views/search-result/tru-search-result-view-base-module';\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-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-report-config';\nexport * from './lib/classes/tru-validator-factory';\n\n/*\n * Components\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';\nexport * from './lib/components/card-column/tru-card-column-module';\n\nexport * from './lib/components/confirm-dialog/tru-confirm-dialog';\nexport * from './lib/components/confirm-dialog/tru-confirm-dialog-module';\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-ref-header';\nexport * from './lib/components/data-grid/services/tru-data-grid-util';\nexport * from './lib/components/data-grid/tru-data-grid';\nexport * from './lib/components/data-grid/tru-data-grid-module';\n\nexport * from './lib/components/desktop/tru-desktop';\nexport * from './lib/components/desktop/tru-desktop-module';\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-action-event-handler';\nexport * from './lib/components/desktop/services/tru-window-event-args';\nexport * from './lib/components/desktop/services/tru-window-event-handler';\n\nexport * from './lib/components/export-dialog/tru-export-dialog';\nexport * from './lib/components/export-dialog/tru-export-dialog-module';\n\nexport * from './lib/components/layout/column/tru-column';\nexport * from './lib/components/layout/column/tru-column-module';\nexport * from './lib/components/layout/form/tru-form';\nexport * from './lib/components/layout/form/tru-form-module';\nexport * from './lib/components/layout/group-box/tru-group-box';\nexport * from './lib/components/layout/group-box/tru-group-box-module';\nexport * from './lib/components/layout/row/tru-row';\nexport * from './lib/components/layout/row/tru-row-module';\nexport * from './lib/components/layout/tab/tab/tru-tab';\nexport * from './lib/components/layout/tab/tab/tru-tab-module';\nexport * from './lib/components/layout/tab/tab-group/tru-tab-group';\nexport * from './lib/components/layout/tab/tab-group/tru-tab-group-module';\n\nexport * from './lib/components/password-dialog/tru-password-dialog';\nexport * from './lib/components/password-dialog/tru-password-dialog-module';\n\nexport * from './lib/components/report-view/tru-report-view';\nexport * from './lib/components/report-view/tru-report-view-module';\n\nexport * from './lib/components/toolbar/tru-toolbar';\nexport * from './lib/components/toolbar/tru-toolbar-module';\nexport * from './lib/components/toolbar/menu/tru-toolbar-menu';\nexport * from './lib/components/toolbar/menu/tru-toolbar-menu-module';\nexport * from './lib/components/toolbar/button/tru-toolbar-button';\nexport * from './lib/components/toolbar/button/tru-toolbar-button-module';\nexport * from './lib/components/toolbar/dropdown/tru-toolbar-dropdown';\nexport * from './lib/components/toolbar/dropdown/tru-toolbar-dropdown-module';\nexport * from './lib/components/toolbar/separator/tru-toolbar-separator';\nexport * from './lib/components/toolbar/separator/tru-toolbar-separator-module';\nexport * from './lib/components/toolbar/context-filter/tru-toolbar-context-filter';\nexport * from './lib/components/toolbar/context-filter/tru-toolbar-context-filter-module';\nexport * from './lib/components/toolbar/text/tru-toolbar-text';\nexport * from './lib/components/toolbar/text/tru-toolbar-text-module';\nexport * from './lib/components/toolbar/user-profile/tru-toolbar-user-profile';\nexport * from './lib/components/toolbar/user-profile/tru-toolbar-user-profile-module';\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';\nexport * from './lib/components/validation-dialog/tru-validation-dialog-module';\n\n/*\n * Directives\n */\nexport * from './lib/directives/breeze-validator/tru-breeze-validator';\nexport * from './lib/directives/breeze-validator/tru-breeze-validator-module';\n\nexport * from './lib/directives/search-panel-position-manager/tru-search-panel-position-manager';\nexport * from './lib/directives/search-panel-position-manager/tru-search-panel-position-manager-module';\n\nexport * from './lib/directives/select-panel/tru-mat-select-panel';\nexport * from './lib/directives/select-panel/tru-mat-select-panel-module';\n\n/*\n * Interfaces\n */\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-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-table-registry';\nexport * from './lib/services/tru-text-manager';\nexport * from './lib/services/tru-ui-notification';\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":["i1.TruUser","BreezeDataService","i1.TruBreezeMetadataProvider","i2.TruAppEnvironment","i2","i5","i6","i7","i8","i1","i3.TruUiNotification","i4.TruUser","i1.TruBreezeContextFactory","i2.TruGlobalDataContext","i3.TruAppEnvironment","i4.TruEntityAccessor","i5.TruUiNotification","i1.TruDataContext","i3.TruTextManager","i4.TruWindowEventHandler","i1.TruContextFilters","i2.TruWindowEventHandler","i1.TruDesktopManager","i1.TruUiNotification","_","i2.TruToolbarMenuItem","i3.TruToolbarMenuButton","uuidv4","i2.TruModelTypeLookup","i3.TruSearchViewEventHandler","i4.TruSearchResultViewManager","i6.TruToolbar","i7.TruToolbarMenu","i8.TruToolbarSeparator","i2.TruUtil","i3","i4","i6.TruMatSelectPanel","i2.TruAuth","i1.TruUtil","moment","i3.TruModelTypeLookup","i4.TruModelPropertyLookup","i2.TruDesktopViewEventNotifier","i3.TruSearchResultViewManager","i4.TruAppEnvironment","i5.TruSearchViewEventHandler","i6.TruUiNotification","i7.TruConnectionHub","i8.TruUtil","i9.TruTabGroupEventNotifier","i10","i11","i12.TruToolbar","i13.TruToolbarMenu","i14.TruToolbarButton","i15.TruToolbarDropdown","i16.TruToolbarSeparator","i2.TruTextManager","i3.TruDesktopManager","i6.TruModelTypeLookup","i7.TruGlobalDataContext","i8.TruUser","i4.TruActionInvoke","i5.TruUser","i1.TruDesktopViewEventNotifier","i2.TruComponentLookup","i2.TruUiNotification","i5.TruUtil","i7.TruDesktopResizable","i8.TruDesktopView","i9.TruToolbar","i10.TruToolbarButton","i11.TruToolbarSeparator","i2.TruDesktopWindow","i3.TruToolbar","i4.TruToolbarMenu","i5.TruToolbarSeparator","i6.TruToolbarContextFilter","i7.TruToolbarUserProfile","i1.TruDesktopService","i3.TruWindowEventHandler","i4.TruUtil","i6.TruDesktopMenubar","i7.TruDesktopTaskbar","i8.TruDesktopViewport","i1.TruTabGroupEventNotifier","i1.TruAuth","i1.TruAppEnvironment","i3.TruUser"],"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-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-user.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-global-data-context.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/services/tru-ui-notification.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/services/tru-text-manager.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-view-event-notifier.ts","../../../projects/tru-common-lib/src/lib/services/tru-util.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/detail/tru-detail-view-base-module.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-manager.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/base-views/search/tru-search-view-base-module.ts","../../../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/base-views/search-result/tru-search-result-view-base-module.ts","../../../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-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-report-config.ts","../../../projects/tru-common-lib/src/lib/classes/tru-validator-factory.ts","../../../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/card-column/tru-card.ts","../../../projects/tru-common-lib/src/lib/services/tru-model-type-lookup.ts","../../../projects/tru-common-lib/src/lib/services/tru-search-result-view-manager.ts","../../../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/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/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/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/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/toolbar/menu/menu-item/tru-toolbar-menu-item-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/menu-button/tru-toolbar-menu-button-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/menu/tru-toolbar-menu-module.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/components/toolbar/button/tru-toolbar-button-module.ts","../../../projects/tru-common-lib/src/lib/directives/select-panel/tru-mat-select-panel.ts","../../../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/directives/select-panel/tru-mat-select-panel-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/dropdown/tru-toolbar-dropdown-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/separator/tru-toolbar-separator-module.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/context-filter/tru-toolbar-context-filter-module.ts","../../../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/toolbar/text/tru-toolbar-text-module.ts","../../../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/user-profile/tru-toolbar-user-profile-module.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar-module.ts","../../../projects/tru-common-lib/src/lib/components/card-column/tru-card-column-module.ts","../../../projects/tru-common-lib/src/lib/material.module.ts","../../../projects/tru-common-lib/src/lib/components/confirm-dialog/tru-confirm-dialog-module.ts","../../../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/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-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/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/components/validation-dialog/tru-validation-dialog-context.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-config.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/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-model-property-lookup.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/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/services/tru-component-lookup.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-desktop-service.ts","../../../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/view/tru-desktop-view.ts","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view.html","../../../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/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/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/tru-desktop.ts","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop.html","../../../projects/tru-common-lib/src/lib/components/desktop/menubar/tru-desktop-menubar-module.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/statusbar/tru-desktop-statusbar-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/taskbar/tru-desktop-taskbar-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/directives/resizable/tru-desktop-resizable-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/view/tru-desktop-view-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/window/tru-desktop-window-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/viewport/tru-desktop-viewport-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/tru-desktop-module.ts","../../../projects/tru-common-lib/src/lib/components/desktop/services/tru-window-action-event-handler.ts","../../../projects/tru-common-lib/src/lib/components/export-dialog/tru-export-dialog-module.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/column/tru-column-module.ts","../../../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/form/tru-form-module.ts","../../../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/group-box/tru-group-box-module.ts","../../../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/row/tru-row-module.ts","../../../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/tru-tab-module.ts","../../../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/layout/tab/tab-group/tru-tab-group-module.ts","../../../projects/tru-common-lib/src/lib/components/password-dialog/tru-password-dialog-module.ts","../../../projects/tru-common-lib/src/lib/components/report-view/tru-report-view-module.ts","../../../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-module.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator-module.ts","../../../projects/tru-common-lib/src/lib/directives/search-panel-position-manager/tru-search-panel-position-manager.ts","../../../projects/tru-common-lib/src/lib/directives/search-panel-position-manager/tru-search-panel-position-manager-module.ts","../../../projects/tru-common-lib/src/lib/services/tru-cloud-file-manager.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/services/tru-table-registry.ts","../../../projects/tru-common-lib/src/lib/extensions.ts","../../../projects/tru-common-lib/src/lib/assets/tru-icon-module.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?: () => 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\nimport { TruDataContext } from '../services/tru-data-context';\r\n\r\nexport class TruEntityBase implements Entity {\r\n constructor(...args: any[]) { }\r\n\r\n entityAspect: EntityAspect = new EntityAspect();\r\n entityType!: EntityType;\r\n\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?: () => Observable<TruChoice[]>;\r\n protected choicesEntityType?: any;\r\n}\r\n","export 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 choices: any = undefined;\r\n validation: string | undefined = undefined;\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 { 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}\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 * 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 } from \"breeze-client\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { TruDataContext } from \"./tru-data-context\";\r\nimport { TruUser } from \"./tru-user\";\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 _appUri: string;\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 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(private truUser: TruUser) {\r\n this._appUri = '';\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.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 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;\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 this.breezeDataService = new BreezeDataService({\r\n serviceName: this.servicePath,\r\n hasServerMetadata: false\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 * 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 { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject } from '@angular/core';\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})\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 { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject, HostListener } from '@angular/core';\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})\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}\r\n","import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TRU_AUTH_CONFIG } from \"../login/classes/tru-auth-config\";\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { TruPasswordChangeRequest } from './classes/tru-password-change-request';\r\nimport { TruUser } from '../../services/tru-user';\r\nimport { Subscription } from 'rxjs';\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})\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 username: string | null = null;\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 user: TruUser,\r\n @Inject(MAT_DIALOG_DATA) public data: TruPasswordDialog) {\r\n this.username = this.user.username;\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 = 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 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\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.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 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 }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n\r\n}\r\n\r\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n <p class=\"tru-password-dialog-title\">Change Password</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\">\r\n <mat-label>Current Password</mat-label>\r\n <mat-form-field>\r\n <input #newInput\r\n matInput\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 [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 [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 { 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\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 = toastr;\r\n this._dialog = 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 popup(message);\r\n message = prefix + ': ' + message;\r\n if (detail)\r\n message += '\\r\\n' + detail;\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 = (): 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 });\r\n\r\n dialogRef.afterClosed().subscribe(dialogResult => {\r\n resolve(dialogResult);\r\n });\r\n });\r\n }\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, 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\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 http: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification,\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 _.map(entities, (entity: any) => { return { value: { $: entity[pKeyName] }, label: hid !== null ? hid : entity.HID }; });\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 _.map(entities, (entity: any) => { return { name: entity.Name, value: { $: entity.Value }, entity: entity }; });\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,\r\n expands: [] | null = null): Array<any> => {\r\n let query = this._breezeContext.createQuery(this.getQueryServiceName(entity));\r\n if (ref)\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 hid: string | null = null,\r\n goToServer: boolean = false,\r\n ref: number | null | 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 query = setupQuery(query) ?? query;\r\n if (ref)\r\n query = query.where(entity.name + 'Ref', '==', ref);\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 }\r\n return of(this.formatQueryChoices(query, this._entityManager.executeQueryLocally(query), pkeyName, null));\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 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 fetch(this._baseUrl + url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json; charset=UTF-8'\r\n },\r\n body: JSON.stringify(data)\r\n })\r\n .then(response => {\r\n this.saveDownloadedFile(response);\r\n })\r\n .catch(err => this.uiNotification.error(err));\r\n };\r\n\r\n downloadFromService = (serviceName: string, data: any) => {\r\n this.downloadFromUrl(serviceName, data);\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: Response) => {\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.arrayBuffer();\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","import { Injectable } from '@angular/core';\r\nimport { Entity, EntityAction, EntityChangedEventArgs, EntityState, EntityType, ValidationError, breeze } from \"breeze-client\";\r\nimport { TruBreezeContextFactory, TruBreezeContext } from './tru-breeze-context-factory';\r\nimport { TruEntityAccessor } from './tru-entity-accessor';\r\nimport { TruUiNotification } from './tru-ui-notification';\r\nimport { TruAppEnvironment } from './tru-app-environment';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { TruDataChange } from '../classes/tru-data-change';\r\nimport { TruGlobalDataContext } from './tru-global-data-context';\r\nimport { TruEntityBase } from '../base-classes/tru-entity-base';\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 constructor(\r\n private breezeContextFactory: TruBreezeContextFactory,\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 this.propertyChanged(changeArgs);\r\n this.entityChangedHandler(changeArgs);\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;\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;\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;\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 = JSON.parse(JSON.stringify('Replace with: ModelNavigationProperties.value'))[typeName];\r\n if (entityChildrenNames) {\r\n Object.entries(entityChildrenNames)\r\n .forEach(([k, v]: any) => {\r\n let property = entity[k as keyOfEntity] as any;\r\n property.forEach((child: Entity) => {\r\n if (typeof v === 'object' && v.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 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 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: 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 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 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 this.revert();\r\n }).finally(() => { });\r\n }\r\n });\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 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() {\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.stack)\r\n lines.push(error.stack);\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 * 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 { Subject } from 'rxjs';\r\n\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TruWindowEventHandler {\r\n private open$: Subject<TruWindowEventArgs> = new Subject<TruWindowEventArgs>();\r\n private addView$: Subject<TruDesktopViewConfig> = new Subject<TruDesktopViewConfig>();\r\n private setWindowTitle$: Subject<string> = new Subject<string>();\r\n private removeForwadViews$: Subject<null> = new Subject<null>();\r\n\r\n onOpen() {\r\n return this.open$;\r\n }\r\n\r\n open(windowEvent: TruWindowEventArgs) {\r\n this.open$.next(windowEvent);\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 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 { 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 { 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 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","import { Component, Input } from '@angular/core';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\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 { TruDesktopViewEventNotifier } from '../../components/desktop/services/tru-desktop-view-event-notifier';\r\nimport { TruUtil } from '../../services/tru-util';\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})\r\nexport class TruDetailViewBase {\r\n @Input() view!: TruDesktopViewConfig;\r\n\r\n tableName: any;\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 appEnvironment: TruAppEnvironment,\r\n protected textManager: TruTextManager,\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 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\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, () => { return true; });\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 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.desktopViewEventNotifier.isActive) {\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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { TruDetailViewBase } from './tru-detail-view-base';\r\n\r\n@NgModule({\r\n declarations: [TruDetailViewBase],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDetailViewBase]\r\n})\r\nexport class DetailViewModule { }\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\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 context: any = {};\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}\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 => {\r\n let choice = this.filters.find(f => f.selectedChoice.table === tableName)?.selectedChoice;\r\n if (!choice)\r\n throw new Error('ContextFilterChoice not found. Possible invalid configuration.');\r\n return choice.ref;\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 { TruWindowEventHandler } from './tru-window-event-handler';\r\nimport { TruWindowEventArgs } from './tru-window-event-args';\r\nimport { TruContextFilters } from \"../../../services/tru-context-filters\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\nimport { TruDesktopTitle } from \"../classes/tru-desktop-title\";\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 windowEventHandler: TruWindowEventHandler) { }\r\n\r\n getWindowEvent = (\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): 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.views = [\r\n {\r\n active: true,\r\n entities: entities,\r\n entityIndex: 0,\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.windowEventHandler.open(this.getWindowEvent(tableName, tablePluralName, tablePluralLabel, componentName, entities, openAsDetaiView));\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.windowEventHandler.open(this.getWindowEvent(tableName, tablePluralName, tablePluralLabel, componentName, entities, openAsDetaiView));\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 { 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\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})\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() {\r\n if (!this.windowTitle)\r\n this.windowTitle = this.desktopManager.getUniqueTitle(this.tablePluralLabel);\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","","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruSearchViewBase } from \"./tru-search-view-base\";\r\n\r\n@NgModule({\r\n declarations: [TruSearchViewBase],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruSearchViewBase]\r\n})\r\nexport class TruSearchViewBaseModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\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\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","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 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 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\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})\r\nexport class TruSearchResultViewBase implements OnInit {\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 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 ngOnInit(): void {\r\n this.tableName = this.view.window.tableName;\r\n this.tablePluralLabel = this.view.window.tablePluralLabel;\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 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","","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruSearchResultViewBase } from \"./tru-search-result-view-base\";\r\n\r\n@NgModule({\r\n declarations: [TruSearchResultViewBase],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruSearchResultViewBase]\r\n})\r\nexport class TruSearchResultViewBaseModule { }\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 { 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\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}\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\n\r\nexport abstract class TruReportConfig {\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 + '.';\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 { Observable } from \"rxjs\";\r\nimport { TruTableConfigBase } from \"../../../base-classes/tru-table-config-base\";\r\nimport { TruReportConfig } from \"../../../classes/tru-report-config\";\r\nimport { TruEntityBase } from \"../../../base-classes/tru-entity-base\";\r\n\r\nexport abstract class TruCardColumnData {\r\n\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: () => 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 _ 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 cards = [];\r\n for (let i = 0; i < allColumns.length; i++) {\r\n for (let j = 0; j < allColumns[i].cards.length; j++) {\r\n cards.push(allColumns[i].cards[j]);\r\n }\r\n }\r\n\r\n let index = _.findIndex(cards, function (i) {\r\n return i.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(cards, index);\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 { 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 { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-toolbar',\r\n templateUrl: './tru-toolbar.html',\r\n styleUrls: ['./tru-toolbar.css']\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 { Component, Input} from '@angular/core';\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})\r\nexport class TruToolbarMenuItem {\r\n @Input() config!: any;\r\n\r\n maxHeight: number = 200;\r\n\r\n constructor() { }\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 }\r\n }\r\n\r\n ngDoCheck() {\r\n this.maxHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0) - 40;\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 <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 { Component, Input, ViewEncapsulation } from '@angular/core';\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 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 { Component, Input } from '@angular/core';\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})\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 { Component } from '@angular/core';\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})\r\nexport class TruToolbarSeparator {\r\n constructor() {}\r\n}\r\n","<div class=\"tru-toolbar-separator\"></div>\r\n","import { Component, ElementRef, Input, TemplateRef, ViewChild } from '@angular/core';\r\nimport * as _ from 'underscore';\r\nimport { breeze } from 'breeze-client';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-base';\r\nimport { TruModelTypeLookup } from '../../services/tru-model-type-lookup';\r\nimport { ITruCardColumnConfig } from './classes/tru-card-column-config';\r\nimport { Subscription, forkJoin, skip } from 'rxjs';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\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})\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 childTablePluralLabel!: 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 busyMessage: string = '';\r\n isBusy: boolean = false;\r\n columns: any = [];\r\n cards: any = [];\r\n lockedColumns: any = [];\r\n columnFilterRefs = [];\r\n cardFilterStr: string | null = 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 reportMenus: any = [];\r\n selectedReport: any | null = null;\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\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 private parentTableModel = null;//dataService.model.tables[parentTableName];\r\n\r\n private createDataForEntity = (entity: TruEntityBase) => {\r\n var data = this.config.resultConfig.rowDataEnhancer();\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.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 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 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 = (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 = .config.save();\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 // scope.config.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 // scope.config.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\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.reportConfig.menuItemsEnabled = () => { return this.columns.length; };\r\n this.config.reportConfig.allMenus().subscribe((menu: any) => { this.reportMenus = 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\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 = () => {\r\n if (this.cardColumn.columnFilterRefs && this.cardColumn.columnFilterRefs.length) {\r\n let filteredColumns;\r\n\r\n for (var i = 0; i < this.columns.length; i++) {\r\n var column = this.columns[i];\r\n\r\n if (!column.locked && column.data.entityAspect) {\r\n var found = this.cardColumn.columnFilterRefs.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.columns.length; i++) {\r\n var column = this.columns[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 locked: boolean;\r\n private parentElement: HTMLDivElement;\r\n\r\n columnElement;\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 (scope.config.cardId) {\r\n // cardFilterResult = filterParts.every(function (part) {\r\n // return scope.config.cardId(card.data.$entity).toLowerCase().indexOf(part) != -1;\r\n // });\r\n //} else {\r\n // cardFilterResult = scope.config.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', () => { alert('goToDetail') });\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: HTMLSpanElement = document.createElement('span');\r\n linkButtonText.classList.add('tru-card-icon-small');\r\n linkButtonText.classList.add('icon-check-square-o');\r\n\r\n linkButtonText.addEventListener('click', () => {\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 *ngIf=\"reportMenus.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"reportMenus.length\">\r\n <tru-toolbar-menu *ngFor=\"let report of reportMenus\" [config]=\"report\"></tru-toolbar-menu>\r\n </div>\r\n </tru-toolbar>\r\n <!--<tru-toolbar [config]=\"config.toolbarConfig\" class=\"main-toolbar\"></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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarMenuItem } from \"./tru-toolbar-menu-item\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarMenuItem],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruToolbarMenuItem]\r\n})\r\nexport class TruToolbarMenuItemModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarMenuButton } from \"./tru-toolbar-menu-button\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarMenuButton],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruToolbarMenuButton]\r\n})\r\nexport class TruToolbarMenuButtonModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarMenu } from \"./tru-toolbar-menu\";\r\nimport { TruToolbarMenuItemModule } from \"./menu-item/tru-toolbar-menu-item-module\"\r\nimport { TruToolbarMenuButtonModule } from \"./menu-button/tru-toolbar-menu-button-module\"\r\n\r\n@NgModule({\r\n declarations: [TruToolbarMenu],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenuItemModule,\r\n TruToolbarMenuButtonModule\r\n ],\r\n exports: [TruToolbarMenu]\r\n})\r\nexport class TruToolbarMenuModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\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 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=\"-1\"\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarButton } from \"./tru-toolbar-button\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarButton],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule\r\n ],\r\n exports: [TruToolbarButton]\r\n})\r\nexport class TruToolbarButtonModule { }\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 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 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 { AfterViewInit, Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\nimport { MatSelectChange } from '@angular/material/select';\r\nimport { ITruToolbarDropdownOption } from '../classes/tru-toolbar-dropdown-option';\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 encapsulation: ViewEncapsulation.None\r\n})\r\nexport class TruToolbarDropdown implements OnInit, AfterViewInit {\r\n @Input() config: [] | null = null;\r\n\r\n @Input() options: Array<ITruToolbarDropdownOption> = [];\r\n\r\n @Input() selectedOption!: ITruToolbarDropdownOption;\r\n @Output() selectedOptionChange = new EventEmitter<ITruToolbarDropdownOption>();\r\n\r\n @Input() disabled!: boolean;\r\n\r\n @Output() selectionChange = new EventEmitter<ITruToolbarDropdownOption | null>();\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 onSelectionChange = (event: MatSelectChange) => {\r\n this.selectedOptionChange.emit(event.value);\r\n this.selectionChange.emit(event.value);\r\n }\r\n}\r\n","<mat-form-field>\r\n <mat-select [(ngModel)]=\"selectedOption\"\r\n [disabled]=\"disabled\"\r\n (selectionChange)=\"onSelectionChange($event)\"\r\n tru-mat-select-panel>\r\n <mat-option *ngFor=\"let option of options\" [value]=\"option\">\r\n {{option.label}}\r\n </mat-option>\r\n </mat-select>\r\n</mat-form-field>\r\n\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { TruMatSelectPanel } from \"./tru-mat-select-panel\";\r\n\n@NgModule({\n declarations: [TruMatSelectPanel],\n imports: [CommonModule, FormsModule],\n exports: [TruMatSelectPanel]\n})\nexport class TruMatSelectPanelModule { }\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarDropdown } from \"./tru-toolbar-dropdown\";\r\nimport { TruMatSelectPanelModule } from \"../../../directives/select-panel/tru-mat-select-panel-module\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarDropdown],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n TruMatSelectPanelModule\r\n ],\r\n exports: [TruToolbarDropdown]\r\n})\r\nexport class TruToolbarDropdownModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbarSeparator } from \"./tru-toolbar-separator\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarSeparator],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruToolbarSeparator]\r\n})\r\nexport class TruToolbarSeparatorModule { }\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\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 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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { TruToolbarContextFilter } from './tru-toolbar-context-filter';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatOptionModule } from '@angular/material/core';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { TruMatSelectPanelModule } from '../../../directives/select-panel/tru-mat-select-panel-module';\r\n\r\n@NgModule({\r\n declarations: [TruToolbarContextFilter],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSelectModule,\r\n MatOptionModule,\r\n MatInputModule,\r\n MatIconModule,\r\n TruMatSelectPanelModule\r\n ],\r\n exports: [TruToolbarContextFilter]\r\n})\r\nexport class TruToolbarContextFilterModule { }\r\n","import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\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 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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarText } from \"./tru-toolbar-text\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarText],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule\r\n ],\r\n exports: [TruToolbarText]\r\n})\r\nexport class TruToolbarTextModule { }\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\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 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();\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 Change Password\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 Logout\r\n </button>\r\n </div>\r\n</mat-menu>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruToolbarUserProfile } from \"./tru-toolbar-user-profile\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbarUserProfile],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatIconModule\r\n ],\r\n exports: [TruToolbarUserProfile]\r\n})\r\nexport class TruToolbarUserProfileModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruToolbar } from \"./tru-toolbar\";\r\nimport { TruToolbarMenuModule } from \"./menu/tru-toolbar-menu-module\";\r\nimport { TruToolbarButtonModule } from \"./button/tru-toolbar-button-module\";\r\nimport { TruToolbarDropdownModule } from \"./dropdown/tru-toolbar-dropdown-module\";\r\nimport { TruToolbarSeparatorModule } from \"./separator/tru-toolbar-separator-module\";\r\nimport { TruToolbarContextFilterModule } from \"./context-filter/tru-toolbar-context-filter-module\";\r\nimport { TruToolbarTextModule } from \"./text/tru-toolbar-text-module\";\r\nimport { TruToolbarUserProfileModule } from \"./user-profile/tru-toolbar-user-profile-module\";\r\n\r\n@NgModule({\r\n declarations: [TruToolbar],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TruToolbarMenuModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarContextFilterModule,\r\n TruToolbarTextModule,\r\n TruToolbarUserProfileModule\r\n ],\r\n exports: [TruToolbar,\r\n TruToolbarMenuModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarContextFilterModule,\r\n TruToolbarTextModule,\r\n TruToolbarUserProfileModule\r\n ]\r\n})\r\nexport class TruToolbarModule { }\r\n","import { NgModule, APP_INITIALIZER } from \"@angular/core\";\r\nimport { CommonModule, } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatIconModule } from \"@angular/material/icon\"\r\nimport { TruToolbarModule } from \"../toolbar/tru-toolbar-module\";\r\nimport { TruToolbarButtonModule } from \"../toolbar/button/tru-toolbar-button-module\";\r\nimport { TruToolbarDropdownModule } from \"../toolbar/dropdown/tru-toolbar-dropdown-module\";\r\nimport { TruToolbarSeparatorModule } from \"../toolbar/separator/tru-toolbar-separator-module\";\r\nimport { TruCardColumn } from \"./tru-card-column\";\r\n\r\n@NgModule({\r\n providers: [],\r\n declarations: [TruCardColumn],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n TruToolbarModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule\r\n ],\r\n exports: [TruCardColumn]\r\n})\r\nexport class TruCardColumnModule { }\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MaterialModule } from '../../material.module';\r\n\r\nimport { TruConfirmDialog } from \"./tru-confirm-dialog\";\r\n\r\n@NgModule({\r\n declarations: [TruConfirmDialog],\r\n imports: [CommonModule, FormsModule, MaterialModule],\r\n exports: [TruConfirmDialog]\r\n})\r\nexport class TruConfirmDialogModule { }\r\n","export 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 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 var content = document.createTextNode(value);\r\n params.eGridCell.appendChild(content);\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 document.addEventListener('mouseover', this.onMouseOver);\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","export class TruDataGridPkeyCellRenderer {\r\n // private eGui: is an empty element to satisfy the getGui method. \r\n private eGui!: HTMLDivElement\r\n\r\n init(params: any) {\r\n params.eGridCell.innerHTML = '';\r\n let value = params.value;\r\n if (params.value < 0)\r\n value = 'NEW';\r\n\r\n var content = document.createTextNode(value);\r\n params.eGridCell.appendChild(content);\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}\r\n","export enum TruDataGridTypes {\r\n Search,\r\n Detail,\r\n DetailManyToMany\r\n}\r\n","import { 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, 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\" (click)=\"onSortRequested($event)\">\r\n <div class=\"ag-header-control-container\">\r\n <div class=\"ag-header-control-sort-container\">\r\n <span *ngIf=\"ascSort === 'active'\" ref=\"eSortAsc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-ascending-icon\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n <span *ngIf=\"descSort === 'active'\" ref=\"eSortDesc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-descending-icon\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n </div>\r\n <div>\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</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-sort-container {\r\n position: relative;\r\n top: 1px;\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-sort-icon.ag-sort-ascending-icon svg {\r\n transform: rotate(180deg);\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 = 'inactive';\r\n public descSort = 'inactive';\r\n public noSort = 'inactive';\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n this.params.column.addEventListener('sortChanged', this.onSortChanged.bind(this));\r\n this.params.api.addEventListener('cellFocused', this.onCellFocused.bind(this));\r\n this.onSortChanged();\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSortChanged() {\r\n this.ascSort = this.descSort = this.noSort = 'inactive';\r\n if (this.params.column.isSortAscending()) {\r\n this.ascSort = 'active';\r\n } else if (this.params.column.isSortDescending()) {\r\n this.descSort = 'active';\r\n } else {\r\n this.noSort = 'active';\r\n }\r\n }\r\n\r\n onSortRequested(event: any) {\r\n var order: 'asc' | 'desc' | null = null;\r\n if (this.params.column.isSortAscending()) {\r\n order = 'desc';\r\n } else if (this.params.column.isSortDescending()) {\r\n order = null;\r\n } else {\r\n order = 'asc';\r\n }\r\n \r\n this.params.setSort(order, event.shiftKey);\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 ngOnDestroy() {\r\n this.params.column.removeEventListener('sortChanged', this.onSortChanged.bind(this));\r\n this.params.api.removeEventListener('cellFocused', this.onCellFocused.bind(this));\r\n }\r\n}\r\n","import { 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, 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\">\r\n <span ref=\"eText\" class=\"ag-header-cell-text\">{{params.displayName}}</span>\r\n <span *ngIf=\"ascSort === 'active'\" ref=\"eSortAsc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-ascending-icon\" (click)=\"onSortRequested('desc', $event)\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n <span *ngIf=\"descSort === 'active'\" ref=\"eSortDesc\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-descending-icon\" (click)=\"onSortRequested(null, $event)\">\r\n <mat-icon [svgIcon]=\"'sort-icon'\"></mat-icon>\r\n </span>\r\n <span *ngIf=\"noSort === 'active'\" ref=\"eSortNone\" class=\"ag-header-icon ag-header-label-icon ag-sort-icon ag-sort-none-icon\" (click)=\"onSortRequested('asc', $event)\"></span>\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-sort-icon {\r\n height: 100%;\r\n width: 100%;\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: 20px;\r\n width: 16px;\r\n padding-top: 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 ::ng-deep .ag-sort-icon.ag-sort-ascending-icon svg {\r\n transform: rotate(180deg);\r\n }\r\n `\r\n ]\r\n})\r\nexport class TruDataGridRefHeader implements IHeaderAngularComp {\r\n public params!: IHeaderParams;\r\n public ascSort = 'inactive';\r\n public descSort = 'inactive';\r\n public noSort = 'inactive';\r\n\r\n agInit(params: IHeaderParams): void {\r\n this.params = params;\r\n this.params.column.addEventListener('sortChanged', this.onSortChanged.bind(this));\r\n this.onSortChanged();\r\n }\r\n\r\n refresh(params: IHeaderParams) {\r\n return false;\r\n }\r\n\r\n onSortChanged() {\r\n this.ascSort = this.descSort = this.noSort = 'inactive';\r\n if (this.params.column.isSortAscending()) {\r\n this.ascSort = 'active';\r\n } else if (this.params.column.isSortDescending()) {\r\n this.descSort = 'active';\r\n } else {\r\n this.noSort = 'active';\r\n }\r\n }\r\n\r\n onSortRequested(order: 'asc' | 'desc' | null, event: any) {\r\n this.params.setSort(order, event.shiftKey);\r\n }\r\n\r\n onSelectAllIconClicked() {\r\n this.params.api.selectAll();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.params.column.removeEventListener('sortChanged', this.onSortChanged.bind(this));\r\n }\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 { 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 enum TruValidationDialogContext {\r\n Control = 0,\r\n Grid = 1,\r\n Card = 2\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 { 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\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})\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\r\n entity.entityAspect.validateEntity();\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\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\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 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 } 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","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) => 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);\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);\r\n reloadResults = true;\r\n }\r\n } else if (entity === localEntity) {\r\n this.applyPropertyChanges(change, entity);\r\n this.addEntity(entity);\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);\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);\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 { 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 * 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 start = () => {\r\n this.connection.on(\"error\", (value: string) => {\r\n console.log(JSON.parse(value));\r\n });\r\n\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 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 { Component, Input, OnInit, ViewEncapsulation, OnChanges, AfterViewInit, SimpleChanges, TemplateRef, createComponent, ApplicationRef, ComponentRef, Optional } from '@angular/core';\r\nimport { TruAppEnvironment } from '../../services/tru-app-environment';\r\nimport { TruSearchViewEventHandler } from '../../base-views/search/services/tru-search-view-event-handler';\r\nimport { TruDataContext } from '../../services/tru-data-context';\r\nimport { TruUiNotification } from '../../services/tru-ui-notification';\r\nimport { ITruDataGridConfig } from './classes/tru-data-grid-config';\r\nimport { TruDataGridTypes } from './enums/tru-data-grid-types';\r\nimport { ITruToolbarDropdownOption } from '../toolbar/classes/tru-toolbar-dropdown-option';\r\nimport { forkJoin, fromEvent, Observable, skip, Subscription } from 'rxjs';\r\nimport * as _ from 'underscore';\r\nimport { TruSearchResultViewManager } from '../../services/tru-search-result-view-manager';\r\nimport { TruConnectionHub } from '../../services/tru-connection-hub';\r\nimport { ColDef, Column, GridApi, GridReadyEvent, SuppressKeyboardEventParams, RowEvent } from 'ag-grid-community';\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\nimport { TruDataChange } from '../../classes/tru-data-change';\r\nimport { ValidationError } from 'breeze-client';\r\nimport { TruMergeDataSet } from '../../classes/tru-merge-data-set';\r\nimport { TruListControlConfigBase } from '../../base-classes/tru-list-control-config-base';\r\nimport { TruValidationDialogConfig } from '../validation-dialog/tru-validation-dialog-config';\r\nimport { TruValidationDialogContext } from '../validation-dialog/tru-validation-dialog-context';\r\nimport { TruValidationDialog } from '../validation-dialog/tru-validation-dialog';\r\nimport { TruTabGroupEventNotifier } from '../layout/tab/services/tru-tab-group-event-notifier';\r\nimport { TruDesktopViewEventNotifier } from '../desktop/services/tru-desktop-view-event-notifier';\r\nimport { TruUtil } from '../../services/tru-util';\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 host: {'[class.tru-data-grid]': 'true'}\r\n})\r\nexport class TruDataGrid implements OnInit, OnChanges, AfterViewInit {\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 reportMenus: any = [];\r\n selectedReport: 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 gridOptions: any = {\r\n rowSelection: 'multiple',\r\n rowStyle: { background: 'white' },\r\n suppressRowClickSelection: false,\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\r\n },\r\n onRowDataUpdated: () => {\r\n this.config.reportConfig.actionRefs = this.getRefs();\r\n },\r\n onCellEditingStopped: (params: any) => {\r\n //this.gridOptions.api.redrawRows({ rowNodes: params.node });\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\r\n constructor(\r\n private dataContext: TruDataContext,\r\n private desktopViewEventNotifier: TruDesktopViewEventNotifier,\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 util: TruUtil,\r\n private app: ApplicationRef,\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$.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.onSearch(setupQuery);\r\n }));\r\n this.subs.push(this.desktopViewEventNotifier.onActiveStateChanged().pipe(skip(1)).subscribe((isActive: boolean) => {\r\n this.isActive = isActive;\r\n if (this.isActive) {\r\n this.config.reportConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.reportConfig.actionRefs = this.getRefs();\r\n this.api.refreshCells();\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.desktopViewEventNotifier.isActive) {\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\r\n private getRefs = (): string => {\r\n let rowNodes: any = [];\r\n this.api?.forEachNode((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.forEachNode((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 }\r\n\r\n private loadManyToManyGridData = (associatedEntities: Array<any>, associatableEntities: Array<any>, initalLoad: boolean) => {\r\n if (initalLoad)\r\n this.rowData = associatedEntities.map(this.enhanceRowDataForEntity, 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.key === 'Tab';\r\n let isArrowDown = params.event.key === 'ArrowDown';\r\n let isArrowUp = params.event.key === 'ArrowUp';\r\n let isArrowLeft = params.event.key === 'ArrowLeft';\r\n let isArrowRight = params.event.key === 'ArrowRight';\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 (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) => {\r\n if (this.entity) {\r\n let parentName = this.entity.constructor.name;\r\n newEntity[parentName + 'Ref'] = this.entity[parentName + 'Ref'];\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[parentName + 'Ref'] = this.entity[parentName + 'Ref'];\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 : undefined;\r\n }\r\n }\r\n\r\n private validationDialog: ComponentRef<TruValidationDialog> | null = null;\r\n private addValidationDialog = (config: TruValidationDialogConfig, 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<TruValidationDialog>(TruValidationDialog, {\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 defaultColDef: ColDef = {\r\n suppressKeyboardEvent: this.onSuppressKeyboardEvent\r\n };\r\n\r\n getRowCount = () => {\r\n let count = 0;\r\n this.api?.forEachNodeAfterFilter(() => count++);\r\n return 'Rows: ' + count;\r\n }\r\n\r\n getSelectedRowCount = () => {\r\n let count = 0;\r\n count = this.api?.getSelectedRows().length;\r\n return 'Selected: ' + count;\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 onCellClicked = (event: any) => {\r\n if (!event.column.colDef.pinned) {\r\n this.api.deselectAll();\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 = (event: any) => {\r\n if (!event.event) return;\r\n const key = (event.event as unknown) as KeyboardEvent;\r\n if (key.code === 'Space') {\r\n key.preventDefault();\r\n key.stopPropagation();\r\n this.api?.startEditingCell({\r\n rowIndex: event.rowIndex,\r\n colKey: event.column.getColId(),\r\n key: key.code\r\n });\r\n } \r\n }\r\n\r\n onCellMouseOver(e: any) {\r\n let targetElement = e.event.target;\r\n if (!targetElement.classList.contains('ag-cell'))\r\n targetElement = targetElement.closest('.ag-cell');\r\n if (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 TruValidationDialogConfig(entityToValidate, propertyConfig, TruValidationDialogContext.Grid, false);\r\n validationDialogConfig.errorMsg = validationErrorsMessagesForProperty;\r\n validationDialogConfig.mergeData = this.getMergeData(propertyConfig, entityToValidate);\r\n this.addValidationDialog(validationDialogConfig, targetElement);\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 onSearch = (setupQuery: any) => {\r\n this.firstSearchRan = true;\r\n this.api.hideOverlay();\r\n this.api.showLoadingOverlay();\r\n\r\n let entityLoaded = this.loadedEntities.some((ref) => { return ref === this.entity[this.entity.constructor.name + 'Ref']; });\r\n let joins = [];\r\n if (entityLoaded) {\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), null, 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), null, 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: 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 if (this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n let onSuccess = () => {\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.dataContext.delete(entities, confirmMsg, onSuccess);\r\n } else {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.dataContext.delete(entities, confirmMsg);\r\n }\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 }\r\n\r\n onRemove = (): void => {\r\n let selectedRows = this.api.getSelectedRows();\r\n this.api.applyTransaction({ remove: selectedRows });\r\n this.api.selectAll();\r\n selectedRows = this.api.getSelectedRows();\r\n if (selectedRows.length)\r\n this.rowData = this.api.getSelectedRows();\r\n else\r\n this.rowData = [];\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.reportConfig.menuItemsEnabled = () => { return this.rowData.length; };\r\n this.config.reportConfig.allMenus().subscribe((menu: any) => { this.reportMenus = menu; });\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=\"reportMenus.length\"></tru-toolbar-separator>\r\n <div *ngIf=\"reportMenus.length\">\r\n <tru-toolbar-menu *ngFor=\"let report of reportMenus\" [config]=\"report\"></tru-toolbar-menu>\r\n </div>\r\n </tru-toolbar>\r\n </div>\r\n <div 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]=\"25\"\r\n [rowBuffer]=\"50\"\r\n [enterNavigatesVertically]=\"true\"\r\n [enterNavigatesVerticallyAfterEdit]=\"true\"\r\n [suppressRowHoverHighlight]=\"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 </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\">{{getRowCount()}}</p>\r\n <p class=\"tru-data-grid-statusbar-values-text\">{{getSelectedRowCount()}}</p>\r\n </div>\r\n </div>\r\n</div>\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\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})\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 { Injectable } from '@angular/core';\r\nimport { TruReportView } from '../components/report-view/tru-report-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 }\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 { NgModule, APP_INITIALIZER } from '@angular/core';\r\nimport { CommonModule, } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon'\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { TruDataGrid } from './tru-data-grid';\r\nimport { TruToolbarModule } from '../toolbar/tru-toolbar-module';\r\nimport { TruToolbarButtonModule } from '../toolbar/button/tru-toolbar-button-module';\r\nimport { TruToolbarDropdownModule } from '../toolbar/dropdown/tru-toolbar-dropdown-module';\r\nimport { TruToolbarSeparatorModule } from '../toolbar/separator/tru-toolbar-separator-module';\r\nimport { TruToolbarMenuModule } from '../toolbar/menu/tru-toolbar-menu-module';\r\nimport { TruComponentLookup } from '../../services/tru-component-lookup';\r\n\r\nvar components: Array<any> | null = null;\r\n\r\n@NgModule({\r\n providers: [\r\n TruComponentLookup,\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (componentLookup: TruComponentLookup) => function () { components = componentLookup.getBySuffix('list'); },\r\n deps: [TruComponentLookup],\r\n multi: true\r\n }\r\n ],\r\n declarations: [TruDataGrid],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n AgGridModule,\r\n TruToolbarModule,\r\n TruToolbarButtonModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarMenuModule\r\n ],\r\n exports: [TruDataGrid]\r\n})\r\nexport class TruDataGridModule { }\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\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\r\n destroy = () => {\r\n while (this.unsubscribes.length) this?.unsubscribes?.shift()?.call();\r\n }\r\n};\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(menu);\r\n }\r\n });\r\n });\r\n };\r\n}\r\n","import { Directive, OnInit, Input, ElementRef } from '@angular/core';\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 { Component, OnInit, Input, ComponentFactoryResolver, ViewContainerRef, SimpleChanges } from '@angular/core';\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 providers: [TruDesktopViewEventNotifier]\n})\nexport class TruDesktopView implements OnInit {\n @Input() view!: TruDesktopViewConfig;\n @Input() active!: boolean;\n\n constructor(\n private desktopViewEventNotifier: TruDesktopViewEventNotifier,\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.viewContainerRef.injector);\n containerRef.instance.view = this.view;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\r\n this.desktopViewEventNotifier.isActive = this.active;\r\n }\n}\n","<div></div>\r\n","import { Component, OnInit, AfterViewInit, Input, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { TruDataContext } from '../../../services/tru-data-context';\nimport { TruEntityAccessor } from '../../../services/tru-entity-accessor';\r\nimport { TruTextManager } from '../../../services/tru-text-manager';\r\nimport { TruUiNotification } from '../../../services/tru-ui-notification';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\nimport { TruWindowEventHandler } from '../services/tru-window-event-handler';\nimport { TruActionInvoke } from '../../../services/tru-action-invoke';\r\nimport { TruReportManager } from '../../../services/tru-report-manager';\r\nimport { TruUtil } from '../../../services/tru-util';\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 providers: [TruDataContext, TruEntityAccessor, TruWindowEventHandler, TruReportManager, TruActionInvoke]\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 truWindowEventHandler: 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\n private subs: Array<Subscription> = [];\n\n hasChanges = () => {\n return this.dataContext.hasChanges().length;\r\n }\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 /**\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) 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 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 = () => {\n if (this.hasChanges())\n this.uiNotification.confirm('Confirm Action', this.textManager.msgDirtyPreventsClose, false, true, '', 'Ok').then((confirm: boolean) => {});\n else\n this.desktopCtrl.closeWindow(this.window);\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.updateNavigationState();\n\n this.subs.push(this.truWindowEventHandler.onAddView().subscribe((windiowAddViewEvent: TruDesktopViewConfig) => {\r\n this.addView(windiowAddViewEvent);\r\n }));\n\n this.subs.push(this.truWindowEventHandler.onSetWindowTitle().subscribe((windowTitle: string) => {\r\n this.setWindowTitle(windowTitle);\r\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 }\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 <div class=\"desktop-window-header\" [ngClass]=\"{'desktop-window-maximized': window.maximized, 'desktop-window-opacity': !window.active}\">\r\n <div class=\"toolbar-window-navigation\">\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\" (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\">\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()\"></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 { Component, OnInit, Input, HostListener, ElementRef, ViewChildren, QueryList } from '@angular/core';\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})\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 { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { TruContextFilters } from '../../../services/tru-context-filters';\r\n\n@Component({\n selector: 'tru-desktop-menubar',\n templateUrl: './tru-desktop-menubar.html',\n styleUrls: ['./tru-desktop-menubar.css'],\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-user-profile></tru-toolbar-user-profile>\r\n </tru-toolbar>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\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})\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 (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 { Component, OnInit, Input, QueryList, ViewChild } from '@angular/core';\r\nimport { TruWindowEventArgs } from './services/tru-window-event-args';\r\nimport { TruWindowEventHandler } from './services/tru-window-event-handler';\nimport { TruDesktopService } from './services/tru-desktop-service';\nimport { TruDesktopViewConfig } from './classes/tru-desktop-view-config';\r\nimport { TruTextManager } from '../../services/tru-text-manager';\r\nimport { TruDesktopWindow } from './window/tru-desktop-window';\r\nimport { TruDesktopViewport } from './viewport/tru-desktop-viewport';\r\nimport { TruUtil } from '../../services/tru-util';\r\n\n@Component({\n selector: 'tru-desktop',\n templateUrl: './tru-desktop.html',\n styleUrls: ['./tru-desktop.css'],\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 truWindowEventHandler: TruWindowEventHandler,\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) => {\n let activeWindow = this.getActiveWindow();\r\n if (activeWindow && activeWindow.isModal) {\r\n activeWindow.invalidOperation = true;\r\n return;\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;\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 };\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) => {\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 return true;\n };\n } else {\n this.windows.splice(this.windows.indexOf(wdw), 1);\n this.activateForemostWindow();\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.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.truWindowEventHandler.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() ? true : false; })\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 false;\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatMenuModule } from \"@angular/material/menu\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruDesktopMenubar } from \"./tru-desktop-menubar\";\r\nimport { TruToolbarModule } from \"../../toolbar/tru-toolbar-module\";\r\nimport { TruToolbarMenuModule } from \"../../toolbar/menu/tru-toolbar-menu-module\";\r\nimport { TruToolbarDropdownModule } from \"../../toolbar/dropdown/tru-toolbar-dropdown-module\";\r\nimport { TruToolbarSeparatorModule } from \"../../toolbar/separator/tru-toolbar-separator-module\";\r\nimport { TruToolbarContextFilterModule } from \"../../toolbar/context-filter/tru-toolbar-context-filter-module\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopMenubar],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatMenuModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n TruToolbarModule,\r\n TruToolbarMenuModule,\r\n TruToolbarDropdownModule,\r\n TruToolbarSeparatorModule,\r\n TruToolbarContextFilterModule\r\n ],\r\n exports: [TruDesktopMenubar]\r\n})\r\nexport class TruDesktopMenubarModule { }\r\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'tru-desktop-statusbar',\n templateUrl: './tru-desktop-statusbar.html',\n styleUrls: ['./tru-desktop-statusbar.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopStatusbar } from \"./tru-desktop-statusbar\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopStatusbar],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDesktopStatusbar]\r\n})\r\nexport class TruDesktopStatusbarModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopTaskbar } from \"./tru-desktop-taskbar\";\r\nimport { TruToolbarButtonModule } from \"../../toolbar/button/tru-toolbar-button-module\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopTaskbar],\r\n imports: [CommonModule, FormsModule, TruToolbarButtonModule, MatIconModule],\r\n exports: [TruDesktopTaskbar]\r\n})\r\nexport class TruDesktopTaskbarModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopResizable } from \"./tru-desktop-resizable\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopResizable],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDesktopResizable]\r\n})\r\nexport class TruDesktopResizableModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopView } from \"./tru-desktop-view\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopView],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruDesktopView]\r\n})\r\nexport class TruDesktopViewModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\n\r\nimport { TruDesktopWindow } from \"./tru-desktop-window\";\r\nimport { TruDesktopResizableModule } from \"../directives/resizable/tru-desktop-resizable-module\";\r\nimport { TruDesktopViewModule } from \"../view/tru-desktop-view-module\"\r\nimport { TruDesktopStatusbarModule } from \"../statusbar/tru-desktop-statusbar-module\";\r\nimport { TruToolbarModule } from \"../../toolbar/tru-toolbar-module\";\r\nimport { TruToolbarButtonModule } from \"../../toolbar/button/tru-toolbar-button-module\";\r\nimport { TruToolbarSeparatorModule } from \"../../toolbar/separator/tru-toolbar-separator-module\";\r\nimport { WindowConfig } from \"../services/tru-desktop-service\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopWindow],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n TruDesktopResizableModule,\r\n TruDesktopViewModule,\r\n TruDesktopStatusbarModule,\r\n TruToolbarModule,\r\n TruToolbarButtonModule,\r\n TruToolbarSeparatorModule,\r\n ],\r\n providers: [WindowConfig],\r\n exports: [TruDesktopWindow]\r\n})\r\nexport class TruDesktopWindowModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruDesktopViewport } from \"./tru-desktop-viewport\";\r\nimport { TruDesktopWindowModule } from \"../window/tru-desktop-window-module\";\r\n\r\n@NgModule({\r\n declarations: [TruDesktopViewport],\r\n imports: [CommonModule, FormsModule, TruDesktopWindowModule],\r\n exports: [TruDesktopViewport]\r\n})\r\nexport class TruDesktopViewportModule { }\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { MatButtonModule } from \"@angular/material/button\"\nimport { MatIconModule } from \"@angular/material/icon\"\n\nimport { TruDesktop } from './tru-desktop';\nimport { TruDesktopMenubarModule } from './menubar/tru-desktop-menubar-module';\nimport { TruDesktopStatusbarModule } from './statusbar/tru-desktop-statusbar-module';\nimport { TruDesktopTaskbarModule } from './taskbar/tru-desktop-taskbar-module';\nimport { TruDesktopViewportModule } from './viewport/tru-desktop-viewport-module';\nimport { TruDesktopWindowModule } from './window/tru-desktop-window-module';\nimport { TruDesktopViewModule } from './view/tru-desktop-view-module';\n\n@NgModule({\n declarations: [\n TruDesktop\n ],\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n HttpClientModule,\n BrowserAnimationsModule,\n MatButtonModule,\n MatIconModule,\n TruDesktopMenubarModule,\n TruDesktopStatusbarModule,\n TruDesktopTaskbarModule,\n TruDesktopViewportModule,\n TruDesktopWindowModule,\n TruDesktopViewModule,\n ],\n exports: [\n TruDesktop\n ]\n})\nexport class TruDesktopModule { }\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MaterialModule } from '../../material.module';\r\nimport { TruExportDialog } from \"./tru-export-dialog\";\r\nimport { MatCheckboxModule } from \"@angular/material/checkbox\";\r\n\r\n@NgModule({\r\n declarations: [TruExportDialog],\r\n imports: [CommonModule, FormsModule, MaterialModule, MatCheckboxModule],\r\n exports: [TruExportDialog]\r\n})\r\nexport class TruExportDialogModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-column',\r\n templateUrl: './tru-column.html',\r\n styleUrls: ['./tru-column.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruColumn } from \"./tru-column\";\r\n\r\n@NgModule({\r\n declarations: [TruColumn],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruColumn]\r\n})\r\nexport class TruColumnModule { }\r\n","import { AfterViewInit, Component, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-form',\r\n templateUrl: './tru-form.html',\r\n styleUrls: ['./tru-form.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruForm } from \"./tru-form\";\r\n\r\n@NgModule({\r\n declarations: [TruForm],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruForm]\r\n})\r\nexport class TruFormModule { }\r\n","import { Component } from '@angular/core';\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})\r\nexport class TruGroupBox {\r\n constructor() { }\r\n}\r\n","<div>\r\n <ng-content></ng-content>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruGroupBox } from \"./tru-group-box\";\r\n\r\n@NgModule({\r\n declarations: [TruGroupBox],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruGroupBox]\r\n})\r\nexport class TruGroupBoxModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tru-row',\r\n templateUrl: './tru-row.html',\r\n styleUrls: ['./tru-row.css']\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 { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruRow } from \"./tru-row\";\r\n\r\n@NgModule({\r\n declarations: [TruRow],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruRow]\r\n})\r\nexport class TruRowModule { }\r\n","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { MatTab } 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 providers: [TruTabGroupEventNotifier]\r\n})\r\nexport class TruTab {\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\">\r\n <ng-content></ng-content>\r\n</mat-tab>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruTab } from \"./tru-tab\";\r\nimport { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\n@NgModule({\r\n declarations: [TruTab],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n exports: [TruTab]\r\n})\r\nexport class TruTabModule { }\r\n","import { Component, ContentChildren, QueryList, ViewChild } from '@angular/core';\r\nimport { MatTab, MatTabChangeEvent, MatTabGroup } from '@angular/material/tabs';\r\nimport { TruTab } from '../tab/tru-tab';\r\nimport { TruTabGroupEventNotifier } from '../services/tru-tab-group-event-notifier';\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})\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 (selectedTabChange)=\"onChange($event)\">\r\n <ng-content #outlet></ng-content>\r\n</mat-tab-group>\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruTabGroup } from \"./tru-tab-group\";\r\nimport { MatTabsModule } from \"@angular/material/tabs\";\r\n\r\n@NgModule({\r\n declarations: [TruTabGroup],\r\n imports: [CommonModule, FormsModule, MatTabsModule],\r\n exports: [TruTabGroup]\r\n})\r\nexport class TruTabGroupModule { }\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 { TruPasswordDialog } from \"./tru-password-dialog\";\r\nimport { PasswordStrengthMeterComponent } from \"angular-password-strength-meter\";\r\n\r\n@NgModule({\r\n declarations: [TruPasswordDialog],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule, PasswordStrengthMeterComponent],\r\n exports: [TruPasswordDialog]\r\n})\r\nexport class TruPasswordDialogModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { TruReportView } from './tru-report-view';\r\n\r\n@NgModule({\r\n declarations: [TruReportView],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatSidenavModule\r\n ],\r\n exports: [TruReportView]\r\n})\r\nexport class TruReportViewModule { }\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\n\r\n@Component({\r\n selector: 'tru-login',\r\n templateUrl: './tru-login.html',\r\n styleUrls: ['./tru-login.css']\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 \r\n constructor(private auth: TruAuth) { }\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> loginFormTitle </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\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 TruAuthStrategyProvider\r\n ],\r\n})\r\nexport class TruLoginModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { TruValidationDialog } from \"./tru-validation-dialog\";\r\n\r\n@NgModule({\r\n declarations: [TruValidationDialog],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruValidationDialog]\r\n})\r\nexport class TruValidationDialogModule { }\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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruBreezeValidator } from './tru-breeze-validator';\r\n\r\n@NgModule({\r\n declarations: [TruBreezeValidator],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruBreezeValidator]\r\n})\r\nexport class TruBreezeValidatorModule { }\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 { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TruSearchPanelPositionManager } from './tru-search-panel-position-manager';\r\n\r\n@NgModule({\r\n declarations: [TruSearchPanelPositionManager],\r\n imports: [CommonModule, FormsModule],\r\n exports: [TruSearchPanelPositionManager]\r\n})\r\nexport class TruSearchPanelPositionManagerModule { }\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\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","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 TruTableRegistry {\r\n constructor() { }\r\n\r\n register: Record<string, TruTableConfigBase> = {};\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 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\"><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 SORT_ICON = `\n <svg height=\"20\" viewBox=\"0 -960 960 960\" width=\"24\"><path d=\"M440-120v-567l-64 63-56-56 160-160 160 160-56 56-64-63v567h-80Z\"/></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(CIRCLE_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 \"sort-icon\",\n sanitizer.bypassSecurityTrustHtml(SORT_ICON)\n );\n }\n}\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-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';\nexport * from './lib/base-views/detail/tru-detail-view-base-module';\n\nexport * from './lib/base-views/search/tru-search-view-base';\nexport * from './lib/base-views/search/tru-search-view-base-module';\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';\nexport * from './lib/base-views/search-result/tru-search-result-view-base-module';\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-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-report-config';\nexport * from './lib/classes/tru-validator-factory';\n\n/*\n * Components\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';\nexport * from './lib/components/card-column/tru-card-column-module';\n\nexport * from './lib/components/confirm-dialog/tru-confirm-dialog';\nexport * from './lib/components/confirm-dialog/tru-confirm-dialog-module';\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-ref-header';\nexport * from './lib/components/data-grid/services/tru-data-grid-util';\nexport * from './lib/components/data-grid/tru-data-grid';\nexport * from './lib/components/data-grid/tru-data-grid-module';\n\nexport * from './lib/components/desktop/tru-desktop';\nexport * from './lib/components/desktop/tru-desktop-module';\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-desktop-view-event-notifier';\nexport * from './lib/components/desktop/services/tru-window-action-event-handler';\nexport * from './lib/components/desktop/services/tru-window-event-args';\nexport * from './lib/components/desktop/services/tru-window-event-handler';\n\nexport * from './lib/components/export-dialog/tru-export-dialog';\nexport * from './lib/components/export-dialog/tru-export-dialog-module';\n\nexport * from './lib/components/layout/column/tru-column';\nexport * from './lib/components/layout/column/tru-column-module';\nexport * from './lib/components/layout/form/tru-form';\nexport * from './lib/components/layout/form/tru-form-module';\nexport * from './lib/components/layout/group-box/tru-group-box';\nexport * from './lib/components/layout/group-box/tru-group-box-module';\nexport * from './lib/components/layout/row/tru-row';\nexport * from './lib/components/layout/row/tru-row-module';\nexport * from './lib/components/layout/tab/tab/tru-tab';\nexport * from './lib/components/layout/tab/tab/tru-tab-module';\nexport * from './lib/components/layout/tab/tab-group/tru-tab-group';\nexport * from './lib/components/layout/tab/tab-group/tru-tab-group-module';\n\nexport * from './lib/components/password-dialog/tru-password-dialog';\nexport * from './lib/components/password-dialog/tru-password-dialog-module';\n\nexport * from './lib/components/report-view/tru-report-view';\nexport * from './lib/components/report-view/tru-report-view-module';\n\nexport * from './lib/components/toolbar/tru-toolbar';\nexport * from './lib/components/toolbar/tru-toolbar-module';\nexport * from './lib/components/toolbar/menu/tru-toolbar-menu';\nexport * from './lib/components/toolbar/menu/tru-toolbar-menu-module';\nexport * from './lib/components/toolbar/button/tru-toolbar-button';\nexport * from './lib/components/toolbar/button/tru-toolbar-button-module';\nexport * from './lib/components/toolbar/dropdown/tru-toolbar-dropdown';\nexport * from './lib/components/toolbar/dropdown/tru-toolbar-dropdown-module';\nexport * from './lib/components/toolbar/separator/tru-toolbar-separator';\nexport * from './lib/components/toolbar/separator/tru-toolbar-separator-module';\nexport * from './lib/components/toolbar/context-filter/tru-toolbar-context-filter';\nexport * from './lib/components/toolbar/context-filter/tru-toolbar-context-filter-module';\nexport * from './lib/components/toolbar/text/tru-toolbar-text';\nexport * from './lib/components/toolbar/text/tru-toolbar-text-module';\nexport * from './lib/components/toolbar/user-profile/tru-toolbar-user-profile';\nexport * from './lib/components/toolbar/user-profile/tru-toolbar-user-profile-module';\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';\nexport * from './lib/components/validation-dialog/tru-validation-dialog-module';\n\n/*\n * Directives\n */\nexport * from './lib/directives/breeze-validator/tru-breeze-validator';\nexport * from './lib/directives/breeze-validator/tru-breeze-validator-module';\n\nexport * from './lib/directives/search-panel-position-manager/tru-search-panel-position-manager';\nexport * from './lib/directives/search-panel-position-manager/tru-search-panel-position-manager-module';\n\nexport * from './lib/directives/select-panel/tru-mat-select-panel';\nexport * from './lib/directives/select-panel/tru-mat-select-panel-module';\n\n/*\n * Interfaces\n */\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-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-table-registry';\nexport * from './lib/services/tru-text-manager';\nexport * from './lib/services/tru-ui-notification';\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":["i1.TruUser","BreezeDataService","i1.TruBreezeMetadataProvider","i2.TruAppEnvironment","i2","i5","i6","i7","i8","i1","i3.TruUiNotification","i4.TruUser","i1.TruBreezeContextFactory","i2.TruGlobalDataContext","i3.TruAppEnvironment","i4.TruEntityAccessor","i5.TruUiNotification","i1.TruDataContext","i3.TruTextManager","i4.TruWindowEventHandler","i5.TruDesktopViewEventNotifier","i6.TruUtil","i1.TruContextFilters","i2.TruWindowEventHandler","i1.TruDesktopManager","i1.TruUiNotification","_","i2.TruToolbarMenuItem","i3.TruToolbarMenuButton","uuidv4","i2.TruModelTypeLookup","i3.TruSearchViewEventHandler","i4.TruSearchResultViewManager","i6.TruToolbar","i7.TruToolbarMenu","i8.TruToolbarSeparator","i2.TruUtil","i3","i4","i6.TruMatSelectPanel","i2.TruAuth","i1.TruUtil","moment","i3.TruModelTypeLookup","i4.TruModelPropertyLookup","i2.TruDesktopViewEventNotifier","i3.TruSearchResultViewManager","i4.TruAppEnvironment","i5.TruSearchViewEventHandler","i6.TruUiNotification","i7.TruConnectionHub","i8.TruUtil","i9.TruTabGroupEventNotifier","i10","i11","i12.TruToolbar","i13.TruToolbarMenu","i14.TruToolbarButton","i15.TruToolbarDropdown","i16.TruToolbarSeparator","i2.TruTextManager","i3.TruDesktopManager","i6.TruModelTypeLookup","i7.TruGlobalDataContext","i8.TruUser","i4.TruActionInvoke","i5.TruUser","i1.TruDesktopViewEventNotifier","i2.TruComponentLookup","i2.TruUiNotification","i5.TruUtil","i7.TruDesktopResizable","i8.TruDesktopView","i9.TruToolbar","i10.TruToolbarButton","i11.TruToolbarSeparator","i2.TruDesktopWindow","i3.TruToolbar","i4.TruToolbarMenu","i5.TruToolbarSeparator","i6.TruToolbarContextFilter","i7.TruToolbarUserProfile","i1.TruDesktopService","i3.TruWindowEventHandler","i4.TruUtil","i6.TruDesktopMenubar","i7.TruDesktopTaskbar","i8.TruDesktopViewport","i1.TruTabGroupEventNotifier","i1.TruAuth","i1.TruAppEnvironment","i3.TruUser"],"mappings":"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"}