@trudb/tru-common-lib 0.0.705 → 0.0.708
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.
- package/esm2020/lib/components/login/classes/tru-auth-config.mjs +1 -1
- package/esm2020/lib/components/login/classes/tru-auth-jwt-strategy.mjs +11 -1
- package/esm2020/lib/components/login/classes/tru-auth-session-strategy.mjs +4 -13
- package/esm2020/lib/components/login/services/tru-auth.mjs +18 -12
- package/fesm2015/trudb-tru-common-lib.mjs +30 -22
- package/fesm2015/trudb-tru-common-lib.mjs.map +1 -1
- package/fesm2020/trudb-tru-common-lib.mjs +30 -22
- package/fesm2020/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/components/login/classes/tru-auth-config.d.ts +1 -0
- package/lib/components/login/classes/tru-auth-jwt-strategy.d.ts +1 -0
- package/lib/components/login/classes/tru-auth-session-strategy.d.ts +1 -2
- package/lib/components/login/services/tru-auth.d.ts +1 -2
- package/package.json +1 -1
|
@@ -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/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/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/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/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/enums/tru-data-grid-types.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/services/tru-search-result-view-manager.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/toolbar/tru-toolbar.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar.html","../../../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/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/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/data-grid/tru-data-grid.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid.html","../../../projects/tru-common-lib/src/lib/components/toolbar/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/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-module.ts","../../../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/classes/tru-auth-config.ts","../../../projects/tru-common-lib/src/lib/components/login/classes/tru-auth-user-request.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/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/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/password-dialog/tru-password-dialog-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.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog.html","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-module.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-config.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator.ts","../../../projects/tru-common-lib/src/lib/directives/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-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/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 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 propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\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 { Entity, EntityAspect, EntityType } from 'breeze-client';\r\nimport { TruMergeDataSet } from '../classes/tru-merge-data-set';\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 Merge_Data_Set: TruMergeDataSet | undefined = undefined;\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 propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\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 = false;\r\n canEdit: boolean = 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 protected 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 if (this._ref < 0)\r\n throw new Error('Inavlid User.');\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 _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._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 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 { 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 { 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>\r\n {{title}}\r\n</h1>\r\n\r\n<div 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 \r\n [(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()\">No</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\r\n</div>\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 { TruUser } from '../../services/tru-user';\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 newPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n confirmPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n\r\n message: string | null = null;\r\n\r\n private userEntity: any;\r\n\r\n constructor(public dialogRef: MatDialogRef<TruPasswordDialog>,\r\n private user: TruUser,\r\n private appEnvironment: TruAppEnvironment,\r\n @Inject(MAT_DIALOG_DATA) public data: TruPasswordDialog) {\r\n }\r\n\r\n ngOnInit() {\r\n //this.userEntity = this.appEnvironment.globalDataContext?.entityAccess().searchUserByRefCacheOnly(this.user.activeUserRef);\r\n }\r\n\r\n canSubmit = () => {\r\n return this.newPasswordControl.value && this.confirmPasswordControl.value;\r\n }\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\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n Change Password\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container\">\r\n <p>{{message}}</p>\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=\"password\" />\r\n </mat-form-field>\r\n <mat-label>Confirm Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n [formControl]=\"confirmPasswordControl\"\r\n type=\"password\" />\r\n </mat-form-field>\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()\" 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 } 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\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\r\n constructor(\r\n private http: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification) {\r\n this._maxRecordCount = this.appEnvironment.maxRecordCount;\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._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._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._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 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 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 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 var argsText = this.formatAsUrlParameters(args);\r\n if (queryText)\r\n argsText += '&' + queryText;\r\n this.uiNotification.info(args.runAsync ? 'Queuing export...' : 'Exporting...');\r\n this.downloadFromUrl('ExportEntities', argsText);\r\n };\r\n\r\n private formatAsUrlParameters = (data: any) => {\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 private downloadFromUrl = (url: string, data: any) => {\r\n if (data)\r\n data = this.formatAsUrlParameters(data);\r\n const body = { title: 'download request' };\r\n const headers = { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' };\r\n\r\n this.http.post(\r\n url,\r\n body,\r\n { headers }\r\n ).subscribe((response: any) => {\r\n this.saveDownloadedFile(response);\r\n });\r\n };\r\n\r\n private saveDownloadedFile = (response: any) => {\r\n var headers = response.headers;\r\n var contentDisposition = headers('content-disposition');\r\n if (!contentDisposition)\r\n return; // NOTE: cannot save without header info\r\n var filename = this.extractFilenameFromContentDisposition(contentDisposition);\r\n var blob = new Blob([response.data], { type: headers('content-type') });\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\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 } 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\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 appEnvironment: TruAppEnvironment,\r\n private entityAccessor: TruEntityAccessor,\r\n private uiNotification: TruUiNotification\r\n ) {\r\n this._breezeContext = this.breezeContextFactory.createContext();\r\n this.entityAccessor.context = this;\r\n\r\n this.entityManager.entityChanged.subscribe((changeArgs: EntityChangedEventArgs) => {\r\n if (changeArgs.entityAction === EntityAction.PropertyChange || changeArgs.entityAction === EntityAction.RejectChanges)\r\n this.propertyChanged(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 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 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 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 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","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 { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\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\r\n constructor(\r\n protected dataContext: TruDataContext,\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler) {\r\n\r\n }\r\n\r\n onAddEntity = () => {\r\n let 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 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 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 isDirty: boolean = false;\r\n isEditing: boolean = false;\r\n isInvalid: boolean = false;\r\n componentName: string = '';\r\n openAsDetaiView: boolean = false;\r\n window!: WindowConfig;\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","import { 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 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 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","","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 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, true);\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 { 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 enum TruDataGridTypes {\r\n Search,\r\n Detail,\r\n DetailManyToMany\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","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 { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\nimport moment from \"moment\";\r\nimport { TruPropertyConfigBase } from \"../base-classes/tru-property-config-base\";\r\nimport { TruModelPropertyLookup } from \"../services/tru-model-property-lookup\";\r\nimport { Subject } from \"rxjs\";\r\nimport { TruDataContext } from \"../services/tru-data-context\";\r\nimport { TruDataChange } from \"./tru-data-change\";\r\n\r\nexport class TruDataChangeParser {\r\n private dataContext: TruDataContext;\r\n private entity: any;\r\n private tableName: string;\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: 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 dataContext: TruDataContext,\r\n globalDataContext: TruDataContext | null,\r\n entity: typeof TruEntityBase,\r\n tableName: string,\r\n getLatestResults: any,\r\n getLatestQuery: any,\r\n contextFilters: [],\r\n expandPaths: Array<string>,\r\n isLoaded: () => boolean,\r\n modelPropertyLookup: TruModelPropertyLookup\r\n ) {\r\n this.dataContext = dataContext;\r\n this.globalDataContext = globalDataContext;\r\n this.entity = entity;\r\n this.tableName = tableName;\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 = 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.entity, 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.entity, 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 var stateBeforePropertyChange = entity.entityAspect.entityState;\r\n var originalValues = entity.entityAspect.originalValues;\r\n\r\n entity['Data_Notification'] = true;\r\n\r\n Object.keys(change.properties).forEach((key) => {\r\n var entityType = this.types.get(change.tableName + '.' + key);\r\n if (!entityType) {\r\n entityType = new TruPropertyConfigBase();\r\n entityType.typeName = 'text-bounded';\r\n }\r\n var 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 var mergeData = JSON.parse(entity.Merge_Data);\r\n if (mergeData) {\r\n mergeData[key] = {\r\n \"value\": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),\r\n \"modifiedBy\": change.modifiedBy,\r\n \"hid\": change.properties[key + 'HID']\r\n };\r\n } else {\r\n mergeData = {};\r\n mergeData[key] = {\r\n \"value\": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),\r\n \"modifiedBy\": change.modifiedBy,\r\n \"hid\": change.properties[key + 'HID']\r\n };\r\n }\r\n entity.Merge_Data = JSON.stringify(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 !== null && !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((resolve, reject) => {\r\n var interval = setInterval(() => {\r\n //if (!$rootScope['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 results.push(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 var results = this.getLatestResults();\r\n results.push(newEntity);\r\n reloadResults = true;\r\n }\r\n } else if (entity === localEntity) {\r\n this.applyPropertyChanges(change, entity);\r\n var results = this.getLatestResults();\r\n results.push(entity);\r\n reloadResults = true;\r\n }\r\n } else if (!this.entityFoundByQuery(change) && entityAlreadyInResults.length) {\r\n var results = this.getLatestResults();\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 var results = this.getLatestResults();\r\n if (this.entityFoundByQuery(change) && this.isLoaded()) {\r\n results.push(entity);\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 var results = this.getLatestResults();\r\n results.push(newEntity);\r\n reloadResults = true;\r\n }\r\n\r\n } else if (change.changeOperation === 'I') {\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 }\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\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 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 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 dataContext,\r\n this.appEnvironment.globalDataContext,\r\n entity, tableName,\r\n getLatestResults,\r\n getLatestQuery,\r\n contextFilters,\r\n expandPaths,\r\n isLoaded,\r\n this.modelPropertyLookup).onDataChanged();\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, 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 [attr.disabled]=\"disabled ? '' : null\"\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 { ElementRef, Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUtil {\r\n\r\n constructor() { }\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","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 && 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 (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 { 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, Input, OnInit, ViewEncapsulation, OnChanges, AfterViewInit, SimpleChanges, TemplateRef } 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, 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, SuppressKeyboardEventParams } 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\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 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 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 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 onCellEditingStopped: (params: any) => {\r\n //this.gridOptions.api.redrawRows({ rowNodes: params.node });\r\n },\r\n }\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\r\n\r\n private subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\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 }\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.gridOptions.api.redrawRows();\r\n }));\r\n this.subs.push(this.appEnvironment.onRevertComplete$.subscribe(event => {\r\n if (event?.successful) {\r\n let rowNodes: any = [];\r\n this.gridOptions.api.forEachNode((rowNode: any, index: number) => {\r\n return rowNodes.push(rowNode);\r\n });\r\n for (let i = rowNodes.length - 1; i >= 0; --i)\r\n if (rowNodes[i].data.$entity[this.config.resultConfig.entityType.name + 'Ref'] < 0)\r\n this.gridOptions.api.updateRowData({ remove: [rowNodes[i].data] });\r\n this.gridOptions.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.gridOptions.api.applyTransaction({ remove: rowsToRemove });\r\n this.gridOptions.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.connectionHub.subscribe(\r\n this.dataContext,\r\n this.config.resultConfig.entityType,\r\n this.config.tableName,\r\n () => { return this.loadedEntities },\r\n () => { return this.latestSetupQuery },\r\n this.config.resultConfig.expands,\r\n [],\r\n () => { return true; }).subscribe(() => {\r\n this.gridOptions.api.refreshCells({ force: true });\r\n }));\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 associatedMapOfAssociatable = _.map(associatedEntities, function (e) { return e['o' + associatableTypeName]; });\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.entityType.name;\r\n else\r\n exportGridSpec = '$custom=' + 1;\r\n\r\n let rowNodes: any = [];\r\n this.gridOptions.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 this.dataContext\r\n .entityAccess()\r\n .export(this.config.resultConfig.entityType, exportGridSpec, this.latestSetupQuery, refs.join(','), 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.gridOptions.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 defaultColDef: ColDef = {\r\n suppressKeyboardEvent: this.onSuppressKeyboardEvent\r\n };\r\n\r\n getRowCount = () => {\r\n let count = 0;\r\n this.gridOptions.api?.forEachNodeAfterFilter(() => count++);\r\n return 'Rows: ' + count;\r\n }\r\n\r\n getSelectedRowCount = () => {\r\n let count = 0;\r\n count = this.gridOptions.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.gridOptions.showNoRowsOverlay = true;\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\r\n if (!event.colDef.cellRenderer) {\r\n this.gridOptions.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\r\n onCellFocused(event: any) {\r\n if (event.column.colDef.pinned) {\r\n this.gridOptions.suppressRowClickSelection = false;\r\n } else {\r\n this.gridOptions.suppressRowClickSelection = true;\r\n this.gridOptions.api.deselectAll();\r\n }\r\n //let columnDefs = this.config.resultConfig.columnDefs;\r\n //if (event.column.colDef.pinned) {\r\n // columnDefs.forEach((columnDef: any, index: number) => {\r\n // if (index !== 0)\r\n // columnDef.headerClass = 'ag-column-focus';\r\n // });\r\n //} else {\r\n // columnDefs.forEach((columnDef: any, index: number) => {\r\n // if (index !== 0 && event.column.colId === columnDef.field)\r\n // columnDef.headerClass = 'ag-column-focus';\r\n // else\r\n // columnDef.headerClass = undefined;\r\n // });\r\n //}\r\n //this.gridOptions.api.setColumnDefs(columnDefs);\r\n }\r\n\r\n onSearch = (setupQuery: any) => {\r\n this.firstSearchRan = true;\r\n this.gridOptions.api.hideOverlay();\r\n this.gridOptions.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)\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)\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.gridOptions.api.hideOverlay();\r\n if (this.rowData === null || !this.rowData.length) {\r\n this.gridOptions.api.showNoRowsOverlay();\r\n }\r\n }\r\n });\r\n }\r\n\r\n onUnassociatedChoiceChanged = (option: ITruToolbarDropdownOption | null) => {\r\n\r\n }\r\n\r\n canAdd = (): boolean => {\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 if (this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n let parentName = this.entity.constructor.name;\r\n let associatedType = this.config.resultConfig.entityType;\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 // create many-to-many entity\r\n let newEntity = this.enhanceRowDataForEntity(this.dataContext.entityAccess().add(associatedType));\r\n newEntity.$entity[unassociatedType.name + 'Ref'] = childToAssociate[unassociatedType.name + 'Ref'];\r\n newEntity.$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(newEntity);\r\n this.gridOptions.api.applyTransaction({ add: [newEntity], addIndex: 0 });\r\n }\r\n } else {\r\n let newEntity = this.enhanceRowDataForEntity(this.dataContext.entityAccess().add(this.config.resultConfig.entityType));\r\n this.gridOptions.api.applyTransaction({ add: [newEntity], addIndex: 0 });\r\n }\r\n }\r\n\r\n onDelete = (): void => {\r\n let selectedRows = this.gridOptions.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 this.dataContext.delete(entities, confirmMsg, onSuccess);\r\n } else {\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.gridOptions.api.getSelectedRows();\r\n if (selectedRows.length)\r\n this.rowData = this.gridOptions.api.getSelectedRows();\r\n }\r\n\r\n onRemove = (): void => {\r\n let selectedRows = this.gridOptions.api.getSelectedRows();\r\n this.gridOptions.api.applyTransaction({ remove: selectedRows });\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.columnDefs = this.config.resultConfig.columnDefs;\r\n this.gridType = this.config.resultConfig.gridType;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany)\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\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 if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","<div>\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 (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></tru-toolbar-separator>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n <tru-toolbar-separator *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\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 (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (cellKeyDown)=\"onCellKeyDown($event)\"\r\n (cellFocused)=\"onCellFocused($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($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-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</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 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","<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\">\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()\" [disabled]=\"!config.enabled()\" *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 { 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 { 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 { 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 { 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\r\nexport const TRU_AUTH_STRATEGY = new InjectionToken<TruAuthStrategy<any>>(\r\n \"AuthStrategy\"\r\n);\r\n","export class TruAuthUserRequest {\r\n username!: string;\r\n}\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, throwError } 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, map, catchError, switchMap } from \"rxjs/operators\";\r\nimport { ITruUser, TruUser } from \"../../../services/tru-user\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\nimport { TruAuthUserRequest } from \"../classes/tru-auth-user-request\";\r\nimport { flatMap } from \"lodash\";\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 private tokenData: any;\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 private createUserRequest = (username: string): TruAuthUserRequest => {\r\n let truUser = new TruAuthUserRequest();\r\n truUser.username = username;\r\n return truUser; \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(\r\n tap((tokenData) => this.tokenData = tokenData),\r\n switchMap(() => this.http.post<any>(`${this.baseUrl}${TRU_AUTH_CONFIG.authUrl}/user`, this.createUserRequest(loginRequest.username)).pipe(tap((userData) => {\r\n this.auth.doLoginUser(this.tokenData);\r\n this.user.create(userData as ITruUser);\r\n this.loggedIn.next(true);\r\n }))\r\n ));\r\n }\r\n\r\n logout() {\r\n this.doLogoutUser();\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.doLogoutAndRedirectToLogin();\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 { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TruComponentLookup {\r\n private truComponentLookupRegistry: Map<string, any> = new Map();\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 { 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 ],\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 { 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 } from '@angular/core';\nimport { TruComponentLookup } from '../../../services/tru-component-lookup';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\n\n@Component({\n selector: 'tru-desktop-view',\n templateUrl: './tru-desktop-view.html',\n styleUrls: ['./tru-desktop-view.css']\n})\nexport class TruDesktopView implements OnInit {\n @Input() view!: TruDesktopViewConfig;\n\n constructor(\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","<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';\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]\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 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$.getValue() || length === 1);\n this.disableNext = !!(this.window.views[length - 1].active$.getValue() || 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 onKeydown(event: MouseEvent) {\n if (!this.window.active) return;\n var keySequence = this.desktopCtrl.getKeySequence(event);\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 if (keySequence === 'alt+l') { //Maximize left\n if (!this.window.maximized) {\n this.desktopCtrl.savePosition(this.window);\n this.desktopCtrl.maximizeLeft(this.window);\n } else if (this.window.maximized === 'right' || this.window.maximized === 'fill')\n this.desktopCtrl.maximizeLeft(this.window);\n else\n this.desktopCtrl.restoreSavedPosition(this.window);\n event.preventDefault();\n }\n if (keySequence === 'alt+r') { //Maximize right\n if (!this.window.maximized) {\n this.desktopCtrl.savePosition(this.window);\n this.desktopCtrl.maximizeRight(this.window);\n } else if (this.window.maximized === 'left' || this.window.maximized === 'fill')\n this.desktopCtrl.maximizeRight(this.window);\n else\n this.desktopCtrl.restoreSavedPosition(this.window);\n event.preventDefault();\n }\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\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('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\" [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 <div class=\"desktop-relative desktop-taskbar-list-item\" [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\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 }\r\n\n minimizeAll = false;\n desktop = this.desktopService.createDesktop();\n minWindowCascadePosition = 40;\n maxWindowCascadePosition = 100;\n lastWindowCascadePosition = { top: this.minWindowCascadePosition, left: this.minWindowCascadePosition };\n shiftPressed = false;\n altPressed = false;\n xPressed = false;\n 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\", \"\"];\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$.getValue() === 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 function\n * @name truDesktopComponent.getKeyCode\n * @module tru.desktop\n *\n * @description\n *\n */\n getKeySequence = (event: any) => {\n var keys = [];\n if (event.shiftKey) keys.push('shift');\n if (event.ctrlKey) keys.push('ctrl');\n if (event.altKey) keys.push('alt');\n if (event.metaKey) keys.push('meta');\n\n var keyCode = event.keyCode || event.which;\n if (keyCode) keys.push(this.keyboardMap[keyCode].toLowerCase());\n\n return keys.join('+');\n };\n\n /**\n * @tru.doc event\n * @module tru.desktop\n *\n * @description\n *\n */\n onKeyDown = (event: any) => {\n var keySequence = this.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+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 if (nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select') return true;\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\n\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, 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 { 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\n\r\n@NgModule({\r\n declarations: [TruPasswordDialog],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule],\r\n exports: [TruPasswordDialog]\r\n})\r\nexport class TruPasswordDialogModule { }\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 { 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 getJwtToken() {\r\n return JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\r\n }\r\n\r\n getToken() {\r\n var token = JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\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_CONFIG, TRU_AUTH_STRATEGY } from \"../classes/tru-auth-config\";\r\n// import { ConfigService } from \"../config.service\";\r\n\r\n@Injectable()\r\nexport class TruAuthInterceptor implements HttpInterceptor {\r\n constructor(\r\n private auth: TruAuth,\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 (TRU_AUTH_CONFIG.auth === \"token\" && this.jwt && this.jwt.getToken()) {\r\n request = this.addToken(request, String(this.jwt.getToken()));\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 { Observable, of } from \"rxjs\";\r\nimport { TruAuthStrategy } from \"./tru-auth-config\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { TRU_AUTH_CONFIG } from \"./tru-auth-config\";\r\nimport { TruUser } from \"../../../services/tru-user\";\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 getCurrentUser(): Observable<TruUser> {\r\n if (this.loggedUser) {\r\n return of(this.loggedUser);\r\n } else {\r\n return this.http\r\n .get<TruUser>(`${TRU_AUTH_CONFIG.authUrl}/user`)\r\n .pipe(tap((user) => (this.loggedUser = user)));\r\n }\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 { 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],\r\n useFactory: (http: HttpClient) => {\r\n switch (TRU_AUTH_CONFIG.auth) {\r\n case \"session\":\r\n return new TruAuthSessionStrategy(http);\r\n case \"token\":\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 { Component, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruValidationDialogConfig } from './tru-validation-dialog-config';\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\r\n errorMsg: string = '';\r\n\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) {\r\n entity[key] = this.config.mergeData.getData(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 = JSON.stringify({});\r\n\r\n for (const key in this.config.mergeData) {\r\n entity.entityAspect.validateProperty(key);\r\n };\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 = '';\r\n\r\n //let mergeData = JSON.parse(entity.Merge_Data_Set);\r\n //let propertyNameKey = propertyName as keyof typeof this.mergeData;\r\n //entity[propertyName] = this.config.mergeData?.getData(propertyNameKey)!.value;\r\n //delete this.mergeData[propertyNameKey];\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 (!Object.keys(this.mergeData).length)\r\n // entity.entityAspect.setUnchanged();\r\n\r\n //entity.Merge_Data = JSON.stringify(this.mergeData);\r\n //entity.entityAspect.validateProperty(propertyName);\r\n }\r\n\r\n onDecline = () => {\r\n //let entity = this.entity as any;\r\n //let propertyName = '';\r\n\r\n //this.mergeData = JSON.parse(entity.Merge_Data);\r\n //let propertyNameKey = propertyName as keyof typeof this.mergeData;\r\n //delete this.mergeData[propertyNameKey];\r\n //entity.Merge_Data = JSON.stringify(this.mergeData);\r\n //entity.entityAspect.validateProperty(propertyName);\r\n }\r\n\r\n ngOnInit() {\r\n this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.mat-mdc-form-field-flex').classList.add('invalid');\r\n this.errorMsg = this.config.errorMsg;\r\n\r\n this.listeners.push(this.renderer.listen(this.elementRef.nativeElement.previousElementSibling, '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(this.elementRef.nativeElement.previousElementSibling, 'mouseleave', (event: MouseEvent) => {\r\n this.elementRef.nativeElement.childNodes[0].classList.remove('show');\r\n this.elementRef.nativeElement.childNodes[0].classList.add('hide');\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.mat-mdc-form-field-flex').classList.remove('invalid');\r\n this.listeners.forEach(l => l());\r\n }\r\n}\r\n\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","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 { TruEntityBase } from \"../../base-classes/tru-entity-base\";\r\nimport { TruMergeDataSet } from \"../../classes/tru-merge-data-set\";\r\n\r\n\r\nexport class TruValidationDialogConfig {\r\n private _entity: TruEntityBase;\r\n private _propertyName: string;\r\n private _errorMsg: string;\r\n private _mergeData: TruMergeDataSet | null;\r\n \r\n public get entity(): TruEntityBase {\r\n return this._entity;\r\n }\r\n\r\n public get propertyName(): string {\r\n return this._propertyName;\r\n }\r\n\r\n public get errorMsg(): string {\r\n return this._errorMsg;\r\n }\r\n\r\n public get mergeData(): TruMergeDataSet | null {\r\n return this._mergeData;\r\n }\r\n\r\n constructor(\r\n entity: TruEntityBase,\r\n propertyName: string,\r\n errorMsg: string,\r\n mergeData: TruMergeDataSet | null = null) {\r\n this._entity = entity;\r\n this._propertyName = propertyName\r\n this._errorMsg = errorMsg;\r\n this._mergeData = mergeData;\r\n }\r\n}\r\n","import { ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\r\nimport { ValidationError } from 'breeze-client';\r\nimport { Subscription } from 'rxjs';\r\nimport { forEach } from 'underscore';\r\nimport { TruEditControlConfigBase } from '../../base-classes/tru-edit-control-config-base';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-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\n\r\n@Directive({\r\n selector: '[truBreezeValidator]'\r\n})\r\nexport class TruBreezeValidator implements OnInit, OnDestroy {\r\n @Input('truBreezeValidator') entity!: TruEntityBase;\r\n @Input() config!: TruEditControlConfigBase<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\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;\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 const componentFactory = this.componentFactoryResolver.resolveComponentFactory(TruValidationDialog);\r\n const component = this.viewContainerRef.createComponent<TruValidationDialog>(componentFactory, 0, this.viewContainerRef.injector);\r\n component.instance.config = config;\r\n this.dialogRef = component;\r\n }\r\n\r\n private removeValidationDialog = () => {\r\n if (this.dialogRef) {\r\n this.dialogRef.destroy();\r\n this.dialogRef = null;\r\n }\r\n }\r\n\r\n valErrsChanged = (validationObject: any) => {\r\n let validationTableName = validationObject.entity.constructor.name;\r\n if (this.config.rootTable === validationTableName) {\r\n this.mergeData = this.getMergeData();\r\n let addedPropertyValdations = validationObject.added.filter((v: any) => {\r\n return v.propertyName === this.config.propertyName\r\n });\r\n\r\n let removedPropertyValdations = validationObject.removed.filter((v: any) => {\r\n return v.propertyName === this.config.propertyName\r\n });\r\n\r\n if (addedPropertyValdations.length || this.mergeData) {\r\n this.addValidationDialog(new TruValidationDialogConfig(\r\n this.entity,\r\n this.config.propertyName as string,\r\n this.parseErrorMessages(addedPropertyValdations),\r\n this.mergeData\r\n ));\r\n } else if (!addedPropertyValdations.length && removedPropertyValdations.length) {\r\n this.removeValidationDialog();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subs.push(this.dataContext.validationChangeDetection.subscribe(entities => {\r\n console.log(entities);\r\n this.valErrsChanged(entities);\r\n }));\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\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","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\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 }\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';\n\n/*\n * Components\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/enums/tru-data-grid-types';\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';\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/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-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-app-environment';\nexport * from './lib/services/tru-breeze-context-factory';\nexport * from './lib/services/tru-breeze-metadata-provider';\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-predicate-map';\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 * 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","i3","i4","i5","i7","i1","i3.TruUiNotification","i1.TruBreezeContextFactory","i3.TruEntityAccessor","i4.TruUiNotification","i1.TruDataContext","i2.TruTextManager","i3.TruWindowEventHandler","i1.TruContextFilters","i2.TruWindowEventHandler","i1.TruDesktopManager","i1.TruUiNotification","moment","i3.TruModelPropertyLookup","i2.TruUtil","i6.TruMatSelectPanel","i2.TruSearchResultViewManager","i3.TruAppEnvironment","i4.TruSearchViewEventHandler","i5.TruUiNotification","i6.TruConnectionHub","i9.TruToolbar","i10.TruToolbarButton","i11.TruToolbarDropdown","i12.TruToolbarSeparator","i2.TruToolbarMenuItem","i3.TruToolbarMenuButton","i2.TruAuth","i6","i1.TruComponentLookup","i2.TruUiNotification","i3.TruTextManager","i4.TruWindowEventHandler","i6.TruDesktopResizable","i7.TruDesktopView","i8.TruToolbar","i9.TruToolbarButton","i10.TruToolbarSeparator","i2.TruDesktopWindow","i3.TruToolbar","i4.TruToolbarMenu","i5.TruToolbarSeparator","i6.TruToolbarContextFilter","i7.TruToolbarUserProfile","i1.TruDesktopService","i5.TruDesktopMenubar","i6.TruDesktopTaskbar","i7.TruDesktopViewport","i1.TruAuth","i1.TruUtil"],"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/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/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/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/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/enums/tru-data-grid-types.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/services/tru-search-result-view-manager.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/toolbar/tru-toolbar.ts","../../../projects/tru-common-lib/src/lib/components/toolbar/tru-toolbar.html","../../../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/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/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/data-grid/tru-data-grid.ts","../../../projects/tru-common-lib/src/lib/components/data-grid/tru-data-grid.html","../../../projects/tru-common-lib/src/lib/components/toolbar/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/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-module.ts","../../../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/classes/tru-auth-config.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/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/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/password-dialog/tru-password-dialog-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.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog.html","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-module.ts","../../../projects/tru-common-lib/src/lib/components/validation-dialog/tru-validation-dialog-config.ts","../../../projects/tru-common-lib/src/lib/directives/breeze-validator/tru-breeze-validator.ts","../../../projects/tru-common-lib/src/lib/directives/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-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/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 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 propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\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 { Entity, EntityAspect, EntityType } from 'breeze-client';\r\nimport { TruMergeDataSet } from '../classes/tru-merge-data-set';\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 Merge_Data_Set: TruMergeDataSet | undefined = undefined;\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 propertyPath: string | undefined;\r\n abstract rules(entity: any): {} | null;\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 = false;\r\n canEdit: boolean = 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 protected 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 if (this._ref < 0)\r\n throw new Error('Inavlid User.');\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 _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._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 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 { 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 { 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>\r\n {{title}}\r\n</h1>\r\n\r\n<div 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 \r\n [(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()\">No</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\r\n</div>\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 { TruUser } from '../../services/tru-user';\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 newPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n confirmPasswordControl: FormControl = new FormControl<string | null | undefined>('', []);\r\n\r\n message: string | null = null;\r\n\r\n private userEntity: any;\r\n\r\n constructor(public dialogRef: MatDialogRef<TruPasswordDialog>,\r\n private user: TruUser,\r\n private appEnvironment: TruAppEnvironment,\r\n @Inject(MAT_DIALOG_DATA) public data: TruPasswordDialog) {\r\n }\r\n\r\n ngOnInit() {\r\n //this.userEntity = this.appEnvironment.globalDataContext?.entityAccess().searchUserByRefCacheOnly(this.user.activeUserRef);\r\n }\r\n\r\n canSubmit = () => {\r\n return this.newPasswordControl.value && this.confirmPasswordControl.value;\r\n }\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\n","<div mat-dialog-title class=\"mat-dialog-title\">\r\n Change Password\r\n</div>\r\n\r\n<div mat-dialog-content class=\"mat-dialog-content tru-control-container\">\r\n <p>{{message}}</p>\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=\"password\" />\r\n </mat-form-field>\r\n <mat-label>Confirm Password</mat-label>\r\n <mat-form-field>\r\n <input #confirmInput\r\n matInput\r\n [formControl]=\"confirmPasswordControl\"\r\n type=\"password\" />\r\n </mat-form-field>\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()\" 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 } 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\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\r\n constructor(\r\n private http: HttpClient,\r\n private appEnvironment: TruAppEnvironment,\r\n private uiNotification: TruUiNotification) {\r\n this._maxRecordCount = this.appEnvironment.maxRecordCount;\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._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._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._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 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 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 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 var argsText = this.formatAsUrlParameters(args);\r\n if (queryText)\r\n argsText += '&' + queryText;\r\n this.uiNotification.info(args.runAsync ? 'Queuing export...' : 'Exporting...');\r\n this.downloadFromUrl('ExportEntities', argsText);\r\n };\r\n\r\n private formatAsUrlParameters = (data: any) => {\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 private downloadFromUrl = (url: string, data: any) => {\r\n if (data)\r\n data = this.formatAsUrlParameters(data);\r\n const body = { title: 'download request' };\r\n const headers = { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' };\r\n\r\n this.http.post(\r\n url,\r\n body,\r\n { headers }\r\n ).subscribe((response: any) => {\r\n this.saveDownloadedFile(response);\r\n });\r\n };\r\n\r\n private saveDownloadedFile = (response: any) => {\r\n var headers = response.headers;\r\n var contentDisposition = headers('content-disposition');\r\n if (!contentDisposition)\r\n return; // NOTE: cannot save without header info\r\n var filename = this.extractFilenameFromContentDisposition(contentDisposition);\r\n var blob = new Blob([response.data], { type: headers('content-type') });\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\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 } 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\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 appEnvironment: TruAppEnvironment,\r\n private entityAccessor: TruEntityAccessor,\r\n private uiNotification: TruUiNotification\r\n ) {\r\n this._breezeContext = this.breezeContextFactory.createContext();\r\n this.entityAccessor.context = this;\r\n\r\n this.entityManager.entityChanged.subscribe((changeArgs: EntityChangedEventArgs) => {\r\n if (changeArgs.entityAction === EntityAction.PropertyChange || changeArgs.entityAction === EntityAction.RejectChanges)\r\n this.propertyChanged(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 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 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 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 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","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 { TruDesktopViewConfig } from '../../components/desktop/classes/tru-desktop-view-config';\r\nimport { TruWindowEventHandler } from '../../components/desktop/services/tru-window-event-handler';\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\r\n constructor(\r\n protected dataContext: TruDataContext,\r\n protected textManager: TruTextManager,\r\n protected windowEventHandler: TruWindowEventHandler) {\r\n\r\n }\r\n\r\n onAddEntity = () => {\r\n let 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 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 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 isDirty: boolean = false;\r\n isEditing: boolean = false;\r\n isInvalid: boolean = false;\r\n componentName: string = '';\r\n openAsDetaiView: boolean = false;\r\n window!: WindowConfig;\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","import { 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 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 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","","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 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, true);\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 { 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 enum TruDataGridTypes {\r\n Search,\r\n Detail,\r\n DetailManyToMany\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","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 { TruEntityBase } from \"../base-classes/tru-entity-base\";\r\nimport moment from \"moment\";\r\nimport { TruPropertyConfigBase } from \"../base-classes/tru-property-config-base\";\r\nimport { TruModelPropertyLookup } from \"../services/tru-model-property-lookup\";\r\nimport { Subject } from \"rxjs\";\r\nimport { TruDataContext } from \"../services/tru-data-context\";\r\nimport { TruDataChange } from \"./tru-data-change\";\r\n\r\nexport class TruDataChangeParser {\r\n private dataContext: TruDataContext;\r\n private entity: any;\r\n private tableName: string;\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: 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 dataContext: TruDataContext,\r\n globalDataContext: TruDataContext | null,\r\n entity: typeof TruEntityBase,\r\n tableName: string,\r\n getLatestResults: any,\r\n getLatestQuery: any,\r\n contextFilters: [],\r\n expandPaths: Array<string>,\r\n isLoaded: () => boolean,\r\n modelPropertyLookup: TruModelPropertyLookup\r\n ) {\r\n this.dataContext = dataContext;\r\n this.globalDataContext = globalDataContext;\r\n this.entity = entity;\r\n this.tableName = tableName;\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 = 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.entity, 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.entity, 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 var stateBeforePropertyChange = entity.entityAspect.entityState;\r\n var originalValues = entity.entityAspect.originalValues;\r\n\r\n entity['Data_Notification'] = true;\r\n\r\n Object.keys(change.properties).forEach((key) => {\r\n var entityType = this.types.get(change.tableName + '.' + key);\r\n if (!entityType) {\r\n entityType = new TruPropertyConfigBase();\r\n entityType.typeName = 'text-bounded';\r\n }\r\n var 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 var mergeData = JSON.parse(entity.Merge_Data);\r\n if (mergeData) {\r\n mergeData[key] = {\r\n \"value\": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),\r\n \"modifiedBy\": change.modifiedBy,\r\n \"hid\": change.properties[key + 'HID']\r\n };\r\n } else {\r\n mergeData = {};\r\n mergeData[key] = {\r\n \"value\": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),\r\n \"modifiedBy\": change.modifiedBy,\r\n \"hid\": change.properties[key + 'HID']\r\n };\r\n }\r\n entity.Merge_Data = JSON.stringify(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 !== null && !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((resolve, reject) => {\r\n var interval = setInterval(() => {\r\n //if (!$rootScope['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 results.push(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 var results = this.getLatestResults();\r\n results.push(newEntity);\r\n reloadResults = true;\r\n }\r\n } else if (entity === localEntity) {\r\n this.applyPropertyChanges(change, entity);\r\n var results = this.getLatestResults();\r\n results.push(entity);\r\n reloadResults = true;\r\n }\r\n } else if (!this.entityFoundByQuery(change) && entityAlreadyInResults.length) {\r\n var results = this.getLatestResults();\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 var results = this.getLatestResults();\r\n if (this.entityFoundByQuery(change) && this.isLoaded()) {\r\n results.push(entity);\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 var results = this.getLatestResults();\r\n results.push(newEntity);\r\n reloadResults = true;\r\n }\r\n\r\n } else if (change.changeOperation === 'I') {\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 }\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\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 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 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 dataContext,\r\n this.appEnvironment.globalDataContext,\r\n entity, tableName,\r\n getLatestResults,\r\n getLatestQuery,\r\n contextFilters,\r\n expandPaths,\r\n isLoaded,\r\n this.modelPropertyLookup).onDataChanged();\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, 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 [attr.disabled]=\"disabled ? '' : null\"\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 { ElementRef, Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TruUtil {\r\n\r\n constructor() { }\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","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 && 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 (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 { 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, Input, OnInit, ViewEncapsulation, OnChanges, AfterViewInit, SimpleChanges, TemplateRef } 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, 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, SuppressKeyboardEventParams } 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\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 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 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 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 onCellEditingStopped: (params: any) => {\r\n //this.gridOptions.api.redrawRows({ rowNodes: params.node });\r\n },\r\n }\r\n parentToolbarTemplate: TemplateRef<any> | null = null;\r\n\r\n private subs: Array<Subscription> = [];\r\n\r\n constructor(\r\n private dataContext: TruDataContext,\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 }\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.gridOptions.api.redrawRows();\r\n }));\r\n this.subs.push(this.appEnvironment.onRevertComplete$.subscribe(event => {\r\n if (event?.successful) {\r\n let rowNodes: any = [];\r\n this.gridOptions.api.forEachNode((rowNode: any, index: number) => {\r\n return rowNodes.push(rowNode);\r\n });\r\n for (let i = rowNodes.length - 1; i >= 0; --i)\r\n if (rowNodes[i].data.$entity[this.config.resultConfig.entityType.name + 'Ref'] < 0)\r\n this.gridOptions.api.updateRowData({ remove: [rowNodes[i].data] });\r\n this.gridOptions.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.gridOptions.api.applyTransaction({ remove: rowsToRemove });\r\n this.gridOptions.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.connectionHub.subscribe(\r\n this.dataContext,\r\n this.config.resultConfig.entityType,\r\n this.config.tableName,\r\n () => { return this.loadedEntities },\r\n () => { return this.latestSetupQuery },\r\n this.config.resultConfig.expands,\r\n [],\r\n () => { return true; }).subscribe(() => {\r\n this.gridOptions.api.refreshCells({ force: true });\r\n }));\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 associatedMapOfAssociatable = _.map(associatedEntities, function (e) { return e['o' + associatableTypeName]; });\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.entityType.name;\r\n else\r\n exportGridSpec = '$custom=' + 1;\r\n\r\n let rowNodes: any = [];\r\n this.gridOptions.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 this.dataContext\r\n .entityAccess()\r\n .export(this.config.resultConfig.entityType, exportGridSpec, this.latestSetupQuery, refs.join(','), 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.gridOptions.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 defaultColDef: ColDef = {\r\n suppressKeyboardEvent: this.onSuppressKeyboardEvent\r\n };\r\n\r\n getRowCount = () => {\r\n let count = 0;\r\n this.gridOptions.api?.forEachNodeAfterFilter(() => count++);\r\n return 'Rows: ' + count;\r\n }\r\n\r\n getSelectedRowCount = () => {\r\n let count = 0;\r\n count = this.gridOptions.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.gridOptions.showNoRowsOverlay = true;\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\r\n if (!event.colDef.cellRenderer) {\r\n this.gridOptions.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\r\n onCellFocused(event: any) {\r\n if (event.column.colDef.pinned) {\r\n this.gridOptions.suppressRowClickSelection = false;\r\n } else {\r\n this.gridOptions.suppressRowClickSelection = true;\r\n this.gridOptions.api.deselectAll();\r\n }\r\n //let columnDefs = this.config.resultConfig.columnDefs;\r\n //if (event.column.colDef.pinned) {\r\n // columnDefs.forEach((columnDef: any, index: number) => {\r\n // if (index !== 0)\r\n // columnDef.headerClass = 'ag-column-focus';\r\n // });\r\n //} else {\r\n // columnDefs.forEach((columnDef: any, index: number) => {\r\n // if (index !== 0 && event.column.colId === columnDef.field)\r\n // columnDef.headerClass = 'ag-column-focus';\r\n // else\r\n // columnDef.headerClass = undefined;\r\n // });\r\n //}\r\n //this.gridOptions.api.setColumnDefs(columnDefs);\r\n }\r\n\r\n onSearch = (setupQuery: any) => {\r\n this.firstSearchRan = true;\r\n this.gridOptions.api.hideOverlay();\r\n this.gridOptions.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)\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)\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.gridOptions.api.hideOverlay();\r\n if (this.rowData === null || !this.rowData.length) {\r\n this.gridOptions.api.showNoRowsOverlay();\r\n }\r\n }\r\n });\r\n }\r\n\r\n onUnassociatedChoiceChanged = (option: ITruToolbarDropdownOption | null) => {\r\n\r\n }\r\n\r\n canAdd = (): boolean => {\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 if (this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n let parentName = this.entity.constructor.name;\r\n let associatedType = this.config.resultConfig.entityType;\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 // create many-to-many entity\r\n let newEntity = this.enhanceRowDataForEntity(this.dataContext.entityAccess().add(associatedType));\r\n newEntity.$entity[unassociatedType.name + 'Ref'] = childToAssociate[unassociatedType.name + 'Ref'];\r\n newEntity.$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(newEntity);\r\n this.gridOptions.api.applyTransaction({ add: [newEntity], addIndex: 0 });\r\n }\r\n } else {\r\n let newEntity = this.enhanceRowDataForEntity(this.dataContext.entityAccess().add(this.config.resultConfig.entityType));\r\n this.gridOptions.api.applyTransaction({ add: [newEntity], addIndex: 0 });\r\n }\r\n }\r\n\r\n onDelete = (): void => {\r\n let selectedRows = this.gridOptions.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 this.dataContext.delete(entities, confirmMsg, onSuccess);\r\n } else {\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.gridOptions.api.getSelectedRows();\r\n if (selectedRows.length)\r\n this.rowData = this.gridOptions.api.getSelectedRows();\r\n }\r\n\r\n onRemove = (): void => {\r\n let selectedRows = this.gridOptions.api.getSelectedRows();\r\n this.gridOptions.api.applyTransaction({ remove: selectedRows });\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.columnDefs = this.config.resultConfig.columnDefs;\r\n this.gridType = this.config.resultConfig.gridType;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany)\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\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 if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany) {\r\n this.onSearch(this.config.resultConfig.setupQuery(this.entity));\r\n }\r\n }, 0);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subs.forEach(s => s.unsubscribe());\r\n }\r\n}\r\n","<div>\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 (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></tru-toolbar-separator>\r\n <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\r\n <tru-toolbar-separator *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-separator>\r\n <tru-toolbar-button [icon]=\"'tru-toolbar-export-icon'\" [tooltip]=\"'Export'\" (click)=\"onExport()\"></tru-toolbar-button>\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 (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (cellKeyDown)=\"onCellKeyDown($event)\"\r\n (cellFocused)=\"onCellFocused($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($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-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</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 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","<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\">\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()\" [disabled]=\"!config.enabled()\" *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 { 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 { 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 { 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 { 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 getDecodedJwtJsonData(): object;\r\n}\r\n\r\nexport const TRU_AUTH_STRATEGY = new InjectionToken<TruAuthStrategy<any>>(\r\n \"AuthStrategy\"\r\n);\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, throwError } 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, map, catchError, switchMap } from \"rxjs/operators\";\r\nimport { ITruUser, TruUser } from \"../../../services/tru-user\";\r\nimport { TruAppEnvironment } from \"../../../services/tru-app-environment\";\r\nimport { TruAuthUserRequest } from \"../classes/tru-auth-user-request\";\r\nimport { flatMap } from \"lodash\";\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((tokenData) => { \r\n this.auth.doLoginUser(tokenData);\r\n this.loggedIn.next(true);\r\n }));\r\n }\r\n\r\n setUser() {\r\n let jwtData = this.auth.getDecodedJwtJsonData() as any;\r\n console.log(jwtData);\r\n let user: 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 this.user.create(user);\r\n }\r\n\r\n logout() {\r\n this.doLogoutUser();\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.doLogoutAndRedirectToLogin();\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 { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root'})\r\nexport class TruComponentLookup {\r\n private truComponentLookupRegistry: Map<string, any> = new Map();\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 { 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 ],\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 { 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 } from '@angular/core';\nimport { TruComponentLookup } from '../../../services/tru-component-lookup';\r\nimport { TruDesktopViewConfig } from '../classes/tru-desktop-view-config';\r\n\n@Component({\n selector: 'tru-desktop-view',\n templateUrl: './tru-desktop-view.html',\n styleUrls: ['./tru-desktop-view.css']\n})\nexport class TruDesktopView implements OnInit {\n @Input() view!: TruDesktopViewConfig;\n\n constructor(\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","<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';\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]\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 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$.getValue() || length === 1);\n this.disableNext = !!(this.window.views[length - 1].active$.getValue() || 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 onKeydown(event: MouseEvent) {\n if (!this.window.active) return;\n var keySequence = this.desktopCtrl.getKeySequence(event);\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 if (keySequence === 'alt+l') { //Maximize left\n if (!this.window.maximized) {\n this.desktopCtrl.savePosition(this.window);\n this.desktopCtrl.maximizeLeft(this.window);\n } else if (this.window.maximized === 'right' || this.window.maximized === 'fill')\n this.desktopCtrl.maximizeLeft(this.window);\n else\n this.desktopCtrl.restoreSavedPosition(this.window);\n event.preventDefault();\n }\n if (keySequence === 'alt+r') { //Maximize right\n if (!this.window.maximized) {\n this.desktopCtrl.savePosition(this.window);\n this.desktopCtrl.maximizeRight(this.window);\n } else if (this.window.maximized === 'left' || this.window.maximized === 'fill')\n this.desktopCtrl.maximizeRight(this.window);\n else\n this.desktopCtrl.restoreSavedPosition(this.window);\n event.preventDefault();\n }\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\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('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\" [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 <div class=\"desktop-relative desktop-taskbar-list-item\" [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\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 }\r\n\n minimizeAll = false;\n desktop = this.desktopService.createDesktop();\n minWindowCascadePosition = 40;\n maxWindowCascadePosition = 100;\n lastWindowCascadePosition = { top: this.minWindowCascadePosition, left: this.minWindowCascadePosition };\n shiftPressed = false;\n altPressed = false;\n xPressed = false;\n 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\", \"\"];\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$.getValue() === 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 function\n * @name truDesktopComponent.getKeyCode\n * @module tru.desktop\n *\n * @description\n *\n */\n getKeySequence = (event: any) => {\n var keys = [];\n if (event.shiftKey) keys.push('shift');\n if (event.ctrlKey) keys.push('ctrl');\n if (event.altKey) keys.push('alt');\n if (event.metaKey) keys.push('meta');\n\n var keyCode = event.keyCode || event.which;\n if (keyCode) keys.push(this.keyboardMap[keyCode].toLowerCase());\n\n return keys.join('+');\n };\n\n /**\n * @tru.doc event\n * @module tru.desktop\n *\n * @description\n *\n */\n onKeyDown = (event: any) => {\n var keySequence = this.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+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 if (nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select') return true;\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\n\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, 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 { 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\n\r\n@NgModule({\r\n declarations: [TruPasswordDialog],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, MaterialModule],\r\n exports: [TruPasswordDialog]\r\n})\r\nexport class TruPasswordDialogModule { }\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 { 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 getJwtToken() {\r\n return JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\r\n }\r\n\r\n getDecodedJwtJsonData() {\r\n let token = JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\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 = JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN) as string);\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_CONFIG, TRU_AUTH_STRATEGY } from \"../classes/tru-auth-config\";\r\n// import { ConfigService } from \"../config.service\";\r\n\r\n@Injectable()\r\nexport class TruAuthInterceptor implements HttpInterceptor {\r\n constructor(\r\n private auth: TruAuth,\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 (TRU_AUTH_CONFIG.auth === \"token\" && this.jwt && this.jwt.getToken()) {\r\n request = this.addToken(request, String(this.jwt.getToken()));\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\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 getDecodedJwtJsonData(): object {\r\n return {};\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 { 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],\r\n useFactory: (http: HttpClient) => {\r\n switch (TRU_AUTH_CONFIG.auth) {\r\n case \"session\":\r\n return new TruAuthSessionStrategy(http);\r\n case \"token\":\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 { Component, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { TruUtil } from '../../services/tru-util';\r\nimport { TruValidationDialogConfig } from './tru-validation-dialog-config';\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\r\n errorMsg: string = '';\r\n\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) {\r\n entity[key] = this.config.mergeData.getData(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 = JSON.stringify({});\r\n\r\n for (const key in this.config.mergeData) {\r\n entity.entityAspect.validateProperty(key);\r\n };\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 = '';\r\n\r\n //let mergeData = JSON.parse(entity.Merge_Data_Set);\r\n //let propertyNameKey = propertyName as keyof typeof this.mergeData;\r\n //entity[propertyName] = this.config.mergeData?.getData(propertyNameKey)!.value;\r\n //delete this.mergeData[propertyNameKey];\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 (!Object.keys(this.mergeData).length)\r\n // entity.entityAspect.setUnchanged();\r\n\r\n //entity.Merge_Data = JSON.stringify(this.mergeData);\r\n //entity.entityAspect.validateProperty(propertyName);\r\n }\r\n\r\n onDecline = () => {\r\n //let entity = this.entity as any;\r\n //let propertyName = '';\r\n\r\n //this.mergeData = JSON.parse(entity.Merge_Data);\r\n //let propertyNameKey = propertyName as keyof typeof this.mergeData;\r\n //delete this.mergeData[propertyNameKey];\r\n //entity.Merge_Data = JSON.stringify(this.mergeData);\r\n //entity.entityAspect.validateProperty(propertyName);\r\n }\r\n\r\n ngOnInit() {\r\n this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.mat-mdc-form-field-flex').classList.add('invalid');\r\n this.errorMsg = this.config.errorMsg;\r\n\r\n this.listeners.push(this.renderer.listen(this.elementRef.nativeElement.previousElementSibling, '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(this.elementRef.nativeElement.previousElementSibling, 'mouseleave', (event: MouseEvent) => {\r\n this.elementRef.nativeElement.childNodes[0].classList.remove('show');\r\n this.elementRef.nativeElement.childNodes[0].classList.add('hide');\r\n }));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.util.findClosestAncestorByClass(this.elementRef.nativeElement, '.mat-mdc-form-field-flex').classList.remove('invalid');\r\n this.listeners.forEach(l => l());\r\n }\r\n}\r\n\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","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 { TruEntityBase } from \"../../base-classes/tru-entity-base\";\r\nimport { TruMergeDataSet } from \"../../classes/tru-merge-data-set\";\r\n\r\n\r\nexport class TruValidationDialogConfig {\r\n private _entity: TruEntityBase;\r\n private _propertyName: string;\r\n private _errorMsg: string;\r\n private _mergeData: TruMergeDataSet | null;\r\n \r\n public get entity(): TruEntityBase {\r\n return this._entity;\r\n }\r\n\r\n public get propertyName(): string {\r\n return this._propertyName;\r\n }\r\n\r\n public get errorMsg(): string {\r\n return this._errorMsg;\r\n }\r\n\r\n public get mergeData(): TruMergeDataSet | null {\r\n return this._mergeData;\r\n }\r\n\r\n constructor(\r\n entity: TruEntityBase,\r\n propertyName: string,\r\n errorMsg: string,\r\n mergeData: TruMergeDataSet | null = null) {\r\n this._entity = entity;\r\n this._propertyName = propertyName\r\n this._errorMsg = errorMsg;\r\n this._mergeData = mergeData;\r\n }\r\n}\r\n","import { ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\r\nimport { ValidationError } from 'breeze-client';\r\nimport { Subscription } from 'rxjs';\r\nimport { forEach } from 'underscore';\r\nimport { TruEditControlConfigBase } from '../../base-classes/tru-edit-control-config-base';\r\nimport { TruEntityBase } from '../../base-classes/tru-entity-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\n\r\n@Directive({\r\n selector: '[truBreezeValidator]'\r\n})\r\nexport class TruBreezeValidator implements OnInit, OnDestroy {\r\n @Input('truBreezeValidator') entity!: TruEntityBase;\r\n @Input() config!: TruEditControlConfigBase<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\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;\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 const componentFactory = this.componentFactoryResolver.resolveComponentFactory(TruValidationDialog);\r\n const component = this.viewContainerRef.createComponent<TruValidationDialog>(componentFactory, 0, this.viewContainerRef.injector);\r\n component.instance.config = config;\r\n this.dialogRef = component;\r\n }\r\n\r\n private removeValidationDialog = () => {\r\n if (this.dialogRef) {\r\n this.dialogRef.destroy();\r\n this.dialogRef = null;\r\n }\r\n }\r\n\r\n valErrsChanged = (validationObject: any) => {\r\n let validationTableName = validationObject.entity.constructor.name;\r\n if (this.config.rootTable === validationTableName) {\r\n this.mergeData = this.getMergeData();\r\n let addedPropertyValdations = validationObject.added.filter((v: any) => {\r\n return v.propertyName === this.config.propertyName\r\n });\r\n\r\n let removedPropertyValdations = validationObject.removed.filter((v: any) => {\r\n return v.propertyName === this.config.propertyName\r\n });\r\n\r\n if (addedPropertyValdations.length || this.mergeData) {\r\n this.addValidationDialog(new TruValidationDialogConfig(\r\n this.entity,\r\n this.config.propertyName as string,\r\n this.parseErrorMessages(addedPropertyValdations),\r\n this.mergeData\r\n ));\r\n } else if (!addedPropertyValdations.length && removedPropertyValdations.length) {\r\n this.removeValidationDialog();\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subs.push(this.dataContext.validationChangeDetection.subscribe(entities => {\r\n console.log(entities);\r\n this.valErrsChanged(entities);\r\n }));\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\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","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\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 }\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';\n\n/*\n * Components\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/enums/tru-data-grid-types';\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';\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/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-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-app-environment';\nexport * from './lib/services/tru-breeze-context-factory';\nexport * from './lib/services/tru-breeze-metadata-provider';\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-predicate-map';\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 * 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","i3","i4","i5","i7","i1","i3.TruUiNotification","i1.TruBreezeContextFactory","i3.TruEntityAccessor","i4.TruUiNotification","i1.TruDataContext","i2.TruTextManager","i3.TruWindowEventHandler","i1.TruContextFilters","i2.TruWindowEventHandler","i1.TruDesktopManager","i1.TruUiNotification","moment","i3.TruModelPropertyLookup","i2.TruUtil","i6.TruMatSelectPanel","i2.TruSearchResultViewManager","i3.TruAppEnvironment","i4.TruSearchViewEventHandler","i5.TruUiNotification","i6.TruConnectionHub","i9.TruToolbar","i10.TruToolbarButton","i11.TruToolbarDropdown","i12.TruToolbarSeparator","i2.TruToolbarMenuItem","i3.TruToolbarMenuButton","i2.TruAuth","i6","i1.TruComponentLookup","i2.TruUiNotification","i3.TruTextManager","i4.TruWindowEventHandler","i6.TruDesktopResizable","i7.TruDesktopView","i8.TruToolbar","i9.TruToolbarButton","i10.TruToolbarSeparator","i2.TruDesktopWindow","i3.TruToolbar","i4.TruToolbarMenu","i5.TruToolbarSeparator","i6.TruToolbarContextFilter","i7.TruToolbarUserProfile","i1.TruDesktopService","i5.TruDesktopMenubar","i6.TruDesktopTaskbar","i7.TruDesktopViewport","i1.TruAuth","i1.TruUtil"],"mappings":"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"}
|