@trudb/tru-common-lib 0.0.492 → 0.0.494

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.
@@ -15,7 +15,9 @@ import * as i1$1 from 'ngx-toastr';
15
15
  import * as i1$3 from '@angular/common';
16
16
  import { CommonModule } from '@angular/common';
17
17
  import moment from 'moment/moment';
18
- import * as i7$1 from 'ag-grid-angular';
18
+ import * as signalR from '@microsoft/signalr';
19
+ import moment$1 from 'moment';
20
+ import * as i8 from 'ag-grid-angular';
19
21
  import { AgGridModule } from 'ag-grid-angular';
20
22
  import * as i2 from '@angular/material/icon';
21
23
  import { MatIconModule } from '@angular/material/icon';
@@ -72,7 +74,6 @@ import { MatToolbarModule } from '@angular/material/toolbar';
72
74
  import { MatTooltipModule } from '@angular/material/tooltip';
73
75
  import { MatTreeModule } from '@angular/material/tree';
74
76
  import { OverlayModule } from '@angular/cdk/overlay';
75
- import * as signalR from '@microsoft/signalr';
76
77
 
77
78
  class TruComponentConfigBase {
78
79
  constructor() { }
@@ -1994,6 +1995,347 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
1994
1995
  type: Injectable
1995
1996
  }], ctorParameters: function () { return []; } });
1996
1997
 
1998
+ class TruDataChange {
1999
+ constructor() {
2000
+ this.dataChanges = [];
2001
+ this.reload = false;
2002
+ }
2003
+ }
2004
+
2005
+ class TruDataChangeParser {
2006
+ onDataChanged() {
2007
+ return this.dataChanged$;
2008
+ }
2009
+ dataChanged(change) {
2010
+ this.dataChanged$.next(change);
2011
+ }
2012
+ constructor(connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, modelPropertyLookup) {
2013
+ this.waitingEntities = [];
2014
+ this.dataChanged$ = new Subject();
2015
+ this.findEntityInCache = (change) => {
2016
+ var entityAccessor = this.dataContext.entityAccess(change.tableName);
2017
+ return entityAccessor.getByRefCacheOnly(parseInt(change.tableRef, 10), true)[0];
2018
+ };
2019
+ this.findEntityInGlobalCache = (change) => {
2020
+ var entityAccessor = this.globalDataContext.entityAccess(change.tableName);
2021
+ return entityAccessor.getByRefCacheOnly(parseInt(change.tableRef, 10), true)[0];
2022
+ };
2023
+ this.checkIfDateTime = (newValue, currentValue, typeName) => {
2024
+ if (typeName === 'date-time' || typeName === 'date') {
2025
+ if (moment$1(newValue, "YYYY-MM-DD HH:mm:ss.sssssss", true).isValid())
2026
+ return moment$1(moment$1.utc(newValue).toDate()).format('MM/DD/YYYY hh:mm A');
2027
+ }
2028
+ return newValue;
2029
+ };
2030
+ this.hasPropertyAlreadyBeenModified = (propertyName, entity) => {
2031
+ return entity.entityAspect.originalValues.hasOwnProperty(propertyName);
2032
+ };
2033
+ this.applyPropertyChanges = (change, entity) => {
2034
+ var stateBeforePropertyChange = entity.entityAspect.entityState;
2035
+ var originalValues = entity.entityAspect.originalValues;
2036
+ entity['Data_Notification'] = true;
2037
+ Object.keys(change.properties).forEach((key) => {
2038
+ var entityType = this.types.get(change.tableName + '.' + key);
2039
+ if (!entityType) {
2040
+ entityType = new TruPropertyConfigBase();
2041
+ entityType.typeName = 'text-bounded';
2042
+ }
2043
+ var propertyModified = this.hasPropertyAlreadyBeenModified(key, entity);
2044
+ if (key === 'Updated' || key === 'UpdatedRef') {
2045
+ entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2046
+ if (originalValues.hasOwnProperty(key))
2047
+ delete originalValues[key];
2048
+ }
2049
+ else if (entity[key] !== this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName)) {
2050
+ if (!propertyModified) {
2051
+ entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2052
+ delete originalValues[key];
2053
+ }
2054
+ else {
2055
+ var mergeData = JSON.parse(entity.Merge_Data);
2056
+ if (mergeData) {
2057
+ mergeData[key] = {
2058
+ "value": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),
2059
+ "modifiedBy": change.modifiedBy,
2060
+ "hid": change.properties[key + 'HID']
2061
+ };
2062
+ }
2063
+ else {
2064
+ mergeData = {};
2065
+ mergeData[key] = {
2066
+ "value": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),
2067
+ "modifiedBy": change.modifiedBy,
2068
+ "hid": change.properties[key + 'HID']
2069
+ };
2070
+ }
2071
+ entity.Merge_Data = JSON.stringify(mergeData);
2072
+ entity.entityAspect.validateProperty(key);
2073
+ }
2074
+ if (typeof (originalValues[key]) !== 'undefined')
2075
+ originalValues[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2076
+ }
2077
+ else {
2078
+ if (originalValues.hasOwnProperty(key))
2079
+ delete originalValues[key];
2080
+ }
2081
+ });
2082
+ entity['rowver'] = change.rowver;
2083
+ delete originalValues['rowver'];
2084
+ if (stateBeforePropertyChange.name !== "Modified" || (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)) {
2085
+ if (!entity.entityAspect.isBeingSaved) {
2086
+ entity.entityAspect.setUnchanged();
2087
+ }
2088
+ else {
2089
+ this.waitingEntities.push(entity);
2090
+ }
2091
+ }
2092
+ delete entity['Data_Notification'];
2093
+ };
2094
+ this.setWaitingEntitiesToUnchanged = () => {
2095
+ this.waitingEntities.forEach((entity) => {
2096
+ if (entity && entity.entityAspect)
2097
+ entity.entityAspect.setUnchanged();
2098
+ });
2099
+ };
2100
+ this.entityFoundByQuery = (change) => {
2101
+ var entityAccessor = this.dataContext.entityAccess(this.tableName);
2102
+ var entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2103
+ if (!entities.length) {
2104
+ var entityAccessor = this.globalDataContext.entityAccess(this.tableName);
2105
+ entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2106
+ }
2107
+ return entities.length;
2108
+ };
2109
+ this.getEntityFromCache = (change) => {
2110
+ var entityAccessor = this.dataContext.entityAccess(this.tableName);
2111
+ var entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2112
+ if (!entities.length) {
2113
+ var entityAccessor = this.globalDataContext.entityAccess(this.tableName);
2114
+ entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2115
+ }
2116
+ return entities[0];
2117
+ };
2118
+ this.getEntityFromServer = (change) => {
2119
+ var entityAccessor = this.dataContext.entityAccess(this.tableName);
2120
+ var entitiy = entityAccessor.customSearchByRef(this.getLatestQuery(), change.tableRef);
2121
+ return entitiy;
2122
+ };
2123
+ this.getEntityFromResults = (results, change) => {
2124
+ return results.filter((e) => { return e.Ref === change.tableRef; });
2125
+ };
2126
+ this.isSaving = async () => {
2127
+ return new Promise((resolve, reject) => {
2128
+ var interval = setInterval(() => {
2129
+ //if (!$rootScope['isSaving']) {
2130
+ // clearInterval(interval);
2131
+ // resolve();
2132
+ //}
2133
+ }, 1000);
2134
+ });
2135
+ };
2136
+ this.update = async (payload) => {
2137
+ //await this.isSaving();
2138
+ var reloadResults = false;
2139
+ payload.changes.forEach(async (change) => {
2140
+ var foundEntities = [];
2141
+ var localEntity = this.findEntityInCache(change);
2142
+ var globalEntity = this.findEntityInGlobalCache(change);
2143
+ if (localEntity)
2144
+ foundEntities.push(localEntity);
2145
+ if (globalEntity)
2146
+ foundEntities.push(globalEntity);
2147
+ if (foundEntities.length) {
2148
+ foundEntities.forEach(async (entity) => {
2149
+ if (change.tableName === this.tableName) {
2150
+ if (change.changeOperation === 'U') {
2151
+ this.applyPropertyChanges(change, entity);
2152
+ var results = this.getLatestResults();
2153
+ if (this.entityFoundByQuery(change)) {
2154
+ var entityAlreadyInResults = this.getEntityFromResults(results, change);
2155
+ if (!entityAlreadyInResults.length && this.isLoaded()) {
2156
+ results.push(entity);
2157
+ }
2158
+ reloadResults = true;
2159
+ }
2160
+ else {
2161
+ var entityToRemove = this.getEntityFromResults(results, change);
2162
+ if (entityToRemove.length) {
2163
+ results.splice(results.indexOf(entityToRemove[0]), 1);
2164
+ reloadResults = true;
2165
+ }
2166
+ }
2167
+ }
2168
+ else if (change.changeOperation === 'D') {
2169
+ var results = this.getLatestResults();
2170
+ var entityToDelete = this.getEntityFromResults(results, change);
2171
+ if (entityToDelete.length) {
2172
+ entityToDelete[0].entityAspect.setDetached();
2173
+ results.splice(results.indexOf(entityToDelete[0]), 1);
2174
+ reloadResults = true;
2175
+ }
2176
+ }
2177
+ else if (change.changeOperation === 'I') {
2178
+ var results = this.getLatestResults();
2179
+ var entityAlreadyInResults = this.getEntityFromResults(results, change);
2180
+ if (this.entityFoundByQuery(change) && !entityAlreadyInResults.length && this.isLoaded()) {
2181
+ if (!localEntity) {
2182
+ var newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2183
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2184
+ this.applyPropertyChanges(change, newEntity);
2185
+ if (this.isLoaded()) {
2186
+ var results = this.getLatestResults();
2187
+ results.push(newEntity);
2188
+ reloadResults = true;
2189
+ }
2190
+ }
2191
+ else if (entity === localEntity) {
2192
+ this.applyPropertyChanges(change, entity);
2193
+ var results = this.getLatestResults();
2194
+ results.push(entity);
2195
+ reloadResults = true;
2196
+ }
2197
+ }
2198
+ else if (!this.entityFoundByQuery(change) && entityAlreadyInResults.length) {
2199
+ var results = this.getLatestResults();
2200
+ var entityToDelete = this.getEntityFromResults(results, change);
2201
+ if (entityToDelete.length) {
2202
+ results.splice(results.indexOf(entityAlreadyInResults[0]), 1);
2203
+ reloadResults = true;
2204
+ }
2205
+ }
2206
+ else if (!globalEntity) {
2207
+ var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2208
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2209
+ this.applyPropertyChanges(change, newEntity);
2210
+ reloadResults = true;
2211
+ }
2212
+ else {
2213
+ reloadResults = true;
2214
+ }
2215
+ }
2216
+ }
2217
+ else if (change.changeOperation !== 'D') {
2218
+ this.applyPropertyChanges(change, entity);
2219
+ }
2220
+ });
2221
+ }
2222
+ else if (change.changeOperation === 'U' && change.tableName === this.tableName) {
2223
+ await this.getEntityFromServer(change).then((entity) => {
2224
+ if (entity) {
2225
+ this.applyPropertyChanges(change, entity);
2226
+ var results = this.getLatestResults();
2227
+ if (this.entityFoundByQuery(change) && this.isLoaded()) {
2228
+ results.push(entity);
2229
+ reloadResults = true;
2230
+ }
2231
+ }
2232
+ });
2233
+ }
2234
+ else {
2235
+ if (change.changeOperation === 'I' && change.tableName === this.tableName) {
2236
+ var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2237
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2238
+ this.applyPropertyChanges(change, newEntity);
2239
+ newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2240
+ newEntity[this.tableName + 'Ref'] = change.tableRef;
2241
+ this.applyPropertyChanges(change, newEntity);
2242
+ if (this.entityFoundByQuery(change) && this.isLoaded()) {
2243
+ var results = this.getLatestResults();
2244
+ results.push(newEntity);
2245
+ reloadResults = true;
2246
+ }
2247
+ }
2248
+ else if (change.changeOperation === 'I') {
2249
+ var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2250
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2251
+ this.applyPropertyChanges(change, newEntity);
2252
+ newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2253
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2254
+ this.applyPropertyChanges(change, newEntity);
2255
+ }
2256
+ }
2257
+ if (this.expandPaths && this.expandPaths.length && this.expandPaths.includes('o' + change.tableName))
2258
+ reloadResults = true;
2259
+ });
2260
+ let dataChangeArgs = new TruDataChange();
2261
+ dataChangeArgs.dataChanges = payload;
2262
+ dataChangeArgs.reload = reloadResults;
2263
+ this.dataChanged(dataChangeArgs);
2264
+ };
2265
+ this.dataContext = dataContext;
2266
+ this.tableName = tableName;
2267
+ this.getLatestResults = getLatestResults;
2268
+ this.getLatestQuery = getLatestQuery;
2269
+ this.contextFilters = contextFilters;
2270
+ this.expandPaths = expandPaths;
2271
+ this.isLoaded = isLoaded;
2272
+ this.types = modelPropertyLookup.lookup;
2273
+ connection.on("change", (payload) => {
2274
+ this.update(payload);
2275
+ });
2276
+ }
2277
+ }
2278
+
2279
+ class TruModelPropertyLookup {
2280
+ constructor() {
2281
+ this._lookup = new Map();
2282
+ }
2283
+ get lookup() {
2284
+ return this._lookup;
2285
+ }
2286
+ set lookup(value) {
2287
+ this._lookup = value;
2288
+ }
2289
+ }
2290
+ TruModelPropertyLookup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2291
+ TruModelPropertyLookup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, providedIn: 'root' });
2292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, decorators: [{
2293
+ type: Injectable,
2294
+ args: [{
2295
+ providedIn: 'root',
2296
+ }]
2297
+ }], ctorParameters: function () { return []; } });
2298
+
2299
+ class TruConnectionHub {
2300
+ constructor(appEnvironment, modelPropertyLookup) {
2301
+ this.appEnvironment = appEnvironment;
2302
+ this.modelPropertyLookup = modelPropertyLookup;
2303
+ this.start = () => {
2304
+ this.connection.on("error", (value) => {
2305
+ console.log(JSON.parse(value));
2306
+ });
2307
+ try {
2308
+ Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
2309
+ this.connection.start().then(() => {
2310
+ this.connection.invoke('getConnectionId')
2311
+ .then((connectionId) => {
2312
+ console.log(`SignalR connection success! connectionId: ${connectionId}`);
2313
+ });
2314
+ });
2315
+ }
2316
+ catch (error) {
2317
+ console.log(`SignalR connection error: ${error}`);
2318
+ }
2319
+ };
2320
+ this.subscribe = (dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
2321
+ return new TruDataChangeParser(this.connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
2322
+ };
2323
+ this.connection = new signalR.HubConnectionBuilder()
2324
+ .withUrl(`${this.appEnvironment.appUri}/notificationhub`, {
2325
+ skipNegotiation: true,
2326
+ transport: signalR.HttpTransportType.WebSockets,
2327
+ }).withAutomaticReconnect().build();
2328
+ }
2329
+ }
2330
+ TruConnectionHub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, deps: [{ token: TruAppEnvironment }, { token: TruModelPropertyLookup }], target: i0.ɵɵFactoryTarget.Injectable });
2331
+ TruConnectionHub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, providedIn: 'root' });
2332
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, decorators: [{
2333
+ type: Injectable,
2334
+ args: [{
2335
+ providedIn: 'root',
2336
+ }]
2337
+ }], ctorParameters: function () { return [{ type: TruAppEnvironment }, { type: TruModelPropertyLookup }]; } });
2338
+
1997
2339
  class TruToolbar {
1998
2340
  constructor() {
1999
2341
  this.config = null;
@@ -2219,12 +2561,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
2219
2561
  }], ctorParameters: function () { return []; } });
2220
2562
 
2221
2563
  class TruDataGrid {
2222
- constructor(dataContext, searchResultViewManager, appEnvironment, searchViewEventHandler, uiNotification) {
2564
+ constructor(dataContext, searchResultViewManager, appEnvironment, searchViewEventHandler, uiNotification, connectionHub) {
2223
2565
  this.dataContext = dataContext;
2224
2566
  this.searchResultViewManager = searchResultViewManager;
2225
2567
  this.appEnvironment = appEnvironment;
2226
2568
  this.searchViewEventHandler = searchViewEventHandler;
2227
2569
  this.uiNotification = uiNotification;
2570
+ this.connectionHub = connectionHub;
2228
2571
  this.TruDataGridTypes = TruDataGridTypes;
2229
2572
  this.columnDefs = [];
2230
2573
  this.rowData = [];
@@ -2425,6 +2768,9 @@ class TruDataGrid {
2425
2768
  this.onExport = () => {
2426
2769
  this.exportData();
2427
2770
  };
2771
+ this.connectionHub.subscribe(this.dataContext, this.config.tableName, () => { return this.loadedEntities; }, () => { return this.latestSetupQuery; }, this.config.resultConfig.expands, [], () => { return true; }).subscribe((dataChange) => {
2772
+ console.log(dataChange);
2773
+ });
2428
2774
  }
2429
2775
  ngOnInit() {
2430
2776
  this.subscribeTo();
@@ -2445,12 +2791,12 @@ class TruDataGrid {
2445
2791
  }, 0);
2446
2792
  }
2447
2793
  }
2448
- TruDataGrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, deps: [{ token: TruDataContext }, { token: TruSearchResultViewManager }, { token: TruAppEnvironment }, { token: TruSearchViewEventHandler }, { token: TruUiNotification }], target: i0.ɵɵFactoryTarget.Component });
2449
- TruDataGrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruDataGrid, selector: "tru-data-grid", inputs: { config: "config", entity: "entity", name: "name" }, host: { properties: { "class.tru-data-grid": "true" } }, usesOnChanges: true, ngImport: i0, template: "<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 <tru-toolbar-button [icon]=\"'tru-toolbar-star-empty-icon'\" [tooltip]=\"'Set this result view as default'\" (click)=\"onSetDefaultResultView()\" *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-button>\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 <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\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 [headerHeight]=\"25\"\r\n [rowHeight]=\"25\"\r\n [overlayLoadingTemplate]=\"loadingTemplate\"\r\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n", styles: [".tru-data-grid:first-of-type+.tru-data-grid{margin-left:5px}.tru-data-grid-toolbar-container{display:inline-flex}.tru-data-grid-container{min-height:200px}.detail-container .tru-data-grid{position:relative}ag-grid-angular{position:absolute;inset:28px 0 0;width:100%;height:100%}.ag-root-wrapper{border-top:0px!important}.ag-header-cell{padding-left:0!important;padding-right:0!important}.ag-header-cell-resize:after{top:unset!important;height:25px!important}.ag-header-row{font-weight:500!important}.ag-header-cell-label{justify-content:center}.ag-row .ag-cell-value{padding-left:2px!important;padding-right:2px!important}.ag-cell-inline-editing{height:24px!important}.ag-cell{border-right:solid #dde2eb 1px!important}.ag-has-focus .ag-cell-focus:not(.ag-cell-inline-editing){border-right:solid #2196f3 1px!important}.ag-pinned-left-cols-container .ag-cell.ag-cell-focus{border:solid #dde2eb 1px!important;border-top:0px!important;border-bottom:0px!important}.ag-pinned-left-cols-container .ag-row-selected .ag-cell{border:0px solid #dde2eb!important;border-right:2px solid #006dcc!important;color:#006dcc;font-weight:700;background-color:#ddd}.ag-pk-aligned-cell{text-align:center}.ag-horizontal-left-spacer{overflow:hidden}.ag-grid-row-has-changes-gradient{background-color:#fff;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#fff,endColorstr=#ffffff);background-image:linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-ms-linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(25%,#ffffff),color-stop(100%,#dbffdf))}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7$1.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "suppressServerSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: TruToolbarSeparator, selector: "tru-toolbar-separator" }], encapsulation: i0.ViewEncapsulation.None });
2794
+ TruDataGrid.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, deps: [{ token: TruDataContext }, { token: TruSearchResultViewManager }, { token: TruAppEnvironment }, { token: TruSearchViewEventHandler }, { token: TruUiNotification }, { token: TruConnectionHub }], target: i0.ɵɵFactoryTarget.Component });
2795
+ TruDataGrid.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", type: TruDataGrid, selector: "tru-data-grid", inputs: { config: "config", entity: "entity", name: "name" }, host: { properties: { "class.tru-data-grid": "true" } }, usesOnChanges: true, ngImport: i0, template: "<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 <tru-toolbar-button [icon]=\"'tru-toolbar-star-empty-icon'\" [tooltip]=\"'Set this result view as default'\" (click)=\"onSetDefaultResultView()\" *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-button>\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 <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\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 [headerHeight]=\"25\"\r\n [rowHeight]=\"25\"\r\n [overlayLoadingTemplate]=\"loadingTemplate\"\r\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n", styles: [".tru-data-grid:first-of-type+.tru-data-grid{margin-left:5px}.tru-data-grid-toolbar-container{display:inline-flex}.tru-data-grid-container{min-height:200px}.detail-container .tru-data-grid{position:relative}ag-grid-angular{position:absolute;inset:28px 0 0;width:100%;height:100%}.ag-root-wrapper{border-top:0px!important}.ag-header-cell{padding-left:0!important;padding-right:0!important}.ag-header-cell-resize:after{top:unset!important;height:25px!important}.ag-header-row{font-weight:500!important}.ag-header-cell-label{justify-content:center}.ag-row .ag-cell-value{padding-left:2px!important;padding-right:2px!important}.ag-cell-inline-editing{height:24px!important}.ag-cell{border-right:solid #dde2eb 1px!important}.ag-has-focus .ag-cell-focus:not(.ag-cell-inline-editing){border-right:solid #2196f3 1px!important}.ag-pinned-left-cols-container .ag-cell.ag-cell-focus{border:solid #dde2eb 1px!important;border-top:0px!important;border-bottom:0px!important}.ag-pinned-left-cols-container .ag-row-selected .ag-cell{border:0px solid #dde2eb!important;border-right:2px solid #006dcc!important;color:#006dcc;font-weight:700;background-color:#ddd}.ag-pk-aligned-cell{text-align:center}.ag-horizontal-left-spacer{overflow:hidden}.ag-grid-row-has-changes-gradient{background-color:#fff;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#fff,endColorstr=#ffffff);background-image:linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-ms-linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(25%,#ffffff),color-stop(100%,#dbffdf))}\n"], dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i8.AgGridAngular, selector: "ag-grid-angular", inputs: ["gridOptions", "modules", "statusBar", "sideBar", "suppressContextMenu", "preventDefaultOnContextMenu", "allowContextMenuWithControlKey", "suppressMenuHide", "enableBrowserTooltips", "tooltipShowDelay", "tooltipHideDelay", "tooltipMouseTrack", "popupParent", "copyHeadersToClipboard", "copyGroupHeadersToClipboard", "clipboardDelimiter", "suppressCopyRowsToClipboard", "suppressCopySingleCellRanges", "suppressLastEmptyLineOnPaste", "suppressClipboardPaste", "suppressClipboardApi", "columnDefs", "defaultColDef", "defaultColGroupDef", "columnTypes", "maintainColumnOrder", "suppressFieldDotNotation", "headerHeight", "groupHeaderHeight", "floatingFiltersHeight", "pivotHeaderHeight", "pivotGroupHeaderHeight", "allowDragFromColumnsToolPanel", "suppressMovableColumns", "suppressColumnMoveAnimation", "suppressDragLeaveHidesColumns", "suppressRowGroupHidesColumns", "colResizeDefault", "suppressAutoSize", "autoSizePadding", "skipHeaderOnAutoSize", "components", "frameworkComponents", "editType", "singleClickEdit", "suppressClickEdit", "readOnlyEdit", "stopEditingWhenCellsLoseFocus", "enterMovesDown", "enterMovesDownAfterEdit", "enableCellEditingOnBackspace", "undoRedoCellEditing", "undoRedoCellEditingLimit", "defaultCsvExportParams", "suppressCsvExport", "defaultExcelExportParams", "suppressExcelExport", "excelStyles", "quickFilterText", "cacheQuickFilter", "excludeHiddenColumnsFromQuickFilter", "excludeChildrenWhenTreeDataFiltering", "enableCharts", "chartThemes", "customChartThemes", "chartThemeOverrides", "enableChartToolPanelsButton", "suppressChartToolPanelsButton", "chartToolPanelsDef", "loadingCellRenderer", "loadingCellRendererFramework", "loadingCellRendererParams", "loadingCellRendererSelector", "localeText", "masterDetail", "keepDetailRows", "keepDetailRowsCount", "detailCellRenderer", "detailCellRendererFramework", "detailCellRendererParams", "detailRowHeight", "detailRowAutoHeight", "context", "alignedGrids", "tabIndex", "rowBuffer", "valueCache", "valueCacheNeverExpires", "enableCellExpressions", "suppressParentsInRowNodes", "suppressTouch", "suppressFocusAfterRefresh", "suppressAsyncEvents", "suppressBrowserResizeObserver", "suppressPropertyNamesCheck", "suppressChangeDetection", "debug", "overlayLoadingTemplate", "loadingOverlayComponent", "loadingOverlayComponentFramework", "loadingOverlayComponentParams", "suppressLoadingOverlay", "overlayNoRowsTemplate", "noRowsOverlayComponent", "noRowsOverlayComponentFramework", "noRowsOverlayComponentParams", "suppressNoRowsOverlay", "pagination", "paginationPageSize", "paginationAutoPageSize", "paginateChildRows", "suppressPaginationPanel", "pivotMode", "pivotPanelShow", "pivotColumnGroupTotals", "pivotRowTotals", "pivotSuppressAutoColumn", "suppressExpandablePivotGroups", "functionsReadOnly", "aggFuncs", "suppressAggFuncInHeader", "suppressAggAtRootLevel", "aggregateOnlyChangedColumns", "suppressAggFilteredOnly", "removePivotHeaderRowWhenSingleValueColumn", "animateRows", "enableCellChangeFlash", "cellFlashDelay", "cellFadeDelay", "allowShowChangeAfterFilter", "domLayout", "ensureDomOrder", "enableRtl", "suppressColumnVirtualisation", "suppressMaxRenderedRowRestriction", "suppressRowVirtualisation", "rowDragManaged", "suppressRowDrag", "suppressMoveWhenRowDragging", "rowDragEntireRow", "rowDragMultiRow", "rowDragText", "fullWidthCellRenderer", "fullWidthCellRendererFramework", "fullWidthCellRendererParams", "embedFullWidthRows", "groupDisplayType", "groupDefaultExpanded", "autoGroupColumnDef", "groupMaintainOrder", "groupSelectsChildren", "groupAggFiltering", "groupIncludeFooter", "groupIncludeTotalFooter", "groupSuppressBlankHeader", "groupSelectsFiltered", "showOpenedGroup", "groupRemoveSingleChildren", "groupRemoveLowestSingleChildren", "groupHideOpenParents", "groupAllowUnbalanced", "rowGroupPanelShow", "groupRowRenderer", "groupRowRendererFramework", "groupRowRendererParams", "suppressMakeColumnVisibleAfterUnGroup", "treeData", "rowGroupPanelSuppressSort", "groupRowsSticky", "rememberGroupStateWhenNewData", "pinnedTopRowData", "pinnedBottomRowData", "rowModelType", "rowData", "immutableData", "asyncTransactionWaitMillis", "suppressModelUpdateAfterUpdateTransaction", "datasource", "cacheOverflowSize", "infiniteInitialRowCount", "serverSideInitialRowCount", "serverSideStoreType", "suppressServerSideInfiniteScroll", "cacheBlockSize", "maxBlocksInCache", "maxConcurrentDatasourceRequests", "blockLoadDebounceMillis", "purgeClosedRowNodes", "serverSideDatasource", "serverSideSortAllLevels", "serverSideFilterAllLevels", "serverSideSortOnServer", "serverSideFilterOnServer", "serverSideSortingAlwaysResets", "serverSideFilteringAlwaysResets", "viewportDatasource", "viewportRowModelPageSize", "viewportRowModelBufferSize", "alwaysShowHorizontalScroll", "alwaysShowVerticalScroll", "debounceVerticalScrollbar", "suppressHorizontalScroll", "suppressScrollOnNewData", "suppressScrollWhenPopupsAreOpen", "suppressAnimationFrame", "suppressMiddleClickScrolls", "suppressPreventDefaultOnMouseWheel", "scrollbarWidth", "rowSelection", "rowMultiSelectWithClick", "suppressRowDeselection", "suppressRowClickSelection", "suppressCellSelection", "suppressCellFocus", "suppressMultiRangeSelection", "enableCellTextSelection", "enableRangeSelection", "enableRangeHandle", "enableFillHandle", "fillHandleDirection", "suppressClearOnFillReduction", "sortingOrder", "accentedSort", "unSortIcon", "suppressMultiSort", "alwaysMultiSort", "multiSortKey", "suppressMaintainUnsortedOrder", "icons", "rowHeight", "rowStyle", "rowClass", "rowClassRules", "suppressRowHoverHighlight", "suppressRowTransform", "columnHoverHighlight", "deltaSort", "treeDataDisplayType", "functionsPassive", "enableGroupEdit", "getContextMenuItems", "getMainMenuItems", "postProcessPopup", "processCellForClipboard", "processHeaderForClipboard", "processGroupHeaderForClipboard", "processCellFromClipboard", "sendToClipboard", "processDataFromClipboard", "isExternalFilterPresent", "doesExternalFilterPass", "getChartToolbarItems", "createChartContainer", "navigateToNextHeader", "tabToNextHeader", "navigateToNextCell", "tabToNextCell", "localeTextFunc", "getLocaleText", "getDocument", "paginationNumberFormatter", "groupRowAggNodes", "getGroupRowAgg", "isGroupOpenByDefault", "initialGroupOrderComparator", "defaultGroupOrderComparator", "processSecondaryColDef", "processSecondaryColGroupDef", "processPivotResultColDef", "processPivotResultColGroupDef", "getDataPath", "getChildCount", "getServerSideGroupLevelParams", "getServerSideStoreParams", "isServerSideGroupOpenByDefault", "isApplyServerSideTransaction", "isServerSideGroup", "getServerSideGroupKey", "getBusinessKeyForNode", "getRowNodeId", "getRowId", "resetRowDataOnUpdate", "processRowPostCreate", "isRowSelectable", "isRowMaster", "fillOperation", "postSort", "postSortRows", "getRowStyle", "getRowClass", "getRowHeight", "isFullWidthCell", "isFullWidthRow"], outputs: ["toolPanelVisibleChanged", "toolPanelSizeChanged", "pasteStart", "pasteEnd", "columnVisible", "columnPinned", "columnResized", "columnMoved", "columnValueChanged", "columnPivotModeChanged", "columnPivotChanged", "columnGroupOpened", "newColumnsLoaded", "gridColumnsChanged", "displayedColumnsChanged", "virtualColumnsChanged", "columnEverythingChanged", "componentStateChanged", "cellValueChanged", "cellEditRequest", "rowValueChanged", "cellEditingStarted", "cellEditingStopped", "rowEditingStarted", "rowEditingStopped", "undoStarted", "undoEnded", "redoStarted", "redoEnded", "filterOpened", "filterChanged", "filterModified", "chartCreated", "chartRangeSelectionChanged", "chartOptionsChanged", "chartDestroyed", "cellKeyDown", "cellKeyPress", "gridReady", "firstDataRendered", "gridSizeChanged", "modelUpdated", "virtualRowRemoved", "viewportChanged", "bodyScroll", "bodyScrollEnd", "dragStarted", "dragStopped", "paginationChanged", "rowDragEnter", "rowDragMove", "rowDragLeave", "rowDragEnd", "columnRowGroupChanged", "rowGroupOpened", "expandOrCollapseAll", "pinnedRowDataChanged", "rowDataChanged", "rowDataUpdated", "asyncTransactionsFlushed", "cellClicked", "cellDoubleClicked", "cellFocused", "cellMouseOver", "cellMouseOut", "cellMouseDown", "rowClicked", "rowDoubleClicked", "rowSelected", "selectionChanged", "cellContextMenu", "rangeSelectionChanged", "sortChanged", "columnRowGroupChangeRequest", "columnPivotChangeRequest", "columnValueChangeRequest", "columnAggFuncChangeRequest"] }, { kind: "component", type: TruToolbar, selector: "tru-toolbar", inputs: ["config"] }, { kind: "component", type: TruToolbarButton, selector: "tru-toolbar-button", inputs: ["config", "icon", "text", "disabled", "tooltip", "type"], outputs: ["onClick", "onKeydown"] }, { kind: "component", type: TruToolbarDropdown, selector: "tru-toolbar-dropdown", inputs: ["config", "options", "selectedOption", "disabled"], outputs: ["selectedOptionChange", "selectionChange"] }, { kind: "component", type: TruToolbarSeparator, selector: "tru-toolbar-separator" }], encapsulation: i0.ViewEncapsulation.None });
2450
2796
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, decorators: [{
2451
2797
  type: Component,
2452
2798
  args: [{ selector: 'tru-data-grid', encapsulation: ViewEncapsulation.None, host: { '[class.tru-data-grid]': 'true' }, template: "<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 <tru-toolbar-button [icon]=\"'tru-toolbar-star-empty-icon'\" [tooltip]=\"'Set this result view as default'\" (click)=\"onSetDefaultResultView()\" *ngIf=\"gridType == TruDataGridTypes.Search\"></tru-toolbar-button>\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 <ng-container *ngTemplateOutlet=\"parentToolbarTemplate\"></ng-container>\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 [headerHeight]=\"25\"\r\n [rowHeight]=\"25\"\r\n [overlayLoadingTemplate]=\"loadingTemplate\"\r\n [overlayNoRowsTemplate]=\"noRowsTemplate\"\r\n (cellDoubleClicked)=\"onCellDoubleClicked($event)\"\r\n (rowDataChanged)=\"onRowDataChanged($event)\">\r\n </ag-grid-angular>\r\n </div>\r\n</div>\r\n", styles: [".tru-data-grid:first-of-type+.tru-data-grid{margin-left:5px}.tru-data-grid-toolbar-container{display:inline-flex}.tru-data-grid-container{min-height:200px}.detail-container .tru-data-grid{position:relative}ag-grid-angular{position:absolute;inset:28px 0 0;width:100%;height:100%}.ag-root-wrapper{border-top:0px!important}.ag-header-cell{padding-left:0!important;padding-right:0!important}.ag-header-cell-resize:after{top:unset!important;height:25px!important}.ag-header-row{font-weight:500!important}.ag-header-cell-label{justify-content:center}.ag-row .ag-cell-value{padding-left:2px!important;padding-right:2px!important}.ag-cell-inline-editing{height:24px!important}.ag-cell{border-right:solid #dde2eb 1px!important}.ag-has-focus .ag-cell-focus:not(.ag-cell-inline-editing){border-right:solid #2196f3 1px!important}.ag-pinned-left-cols-container .ag-cell.ag-cell-focus{border:solid #dde2eb 1px!important;border-top:0px!important;border-bottom:0px!important}.ag-pinned-left-cols-container .ag-row-selected .ag-cell{border:0px solid #dde2eb!important;border-right:2px solid #006dcc!important;color:#006dcc;font-weight:700;background-color:#ddd}.ag-pk-aligned-cell{text-align:center}.ag-horizontal-left-spacer{overflow:hidden}.ag-grid-row-has-changes-gradient{background-color:#fff;filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=#fff,endColorstr=#ffffff);background-image:linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-ms-linear-gradient(top,#fff 0%,#ffffff 25%,#dbffdf 100%);background-image:-webkit-gradient(linear,right top,right bottom,color-stop(0%,#fff),color-stop(25%,#ffffff),color-stop(100%,#dbffdf))}\n"] }]
2453
- }], ctorParameters: function () { return [{ type: TruDataContext }, { type: TruSearchResultViewManager }, { type: TruAppEnvironment }, { type: TruSearchViewEventHandler }, { type: TruUiNotification }]; }, propDecorators: { config: [{
2799
+ }], ctorParameters: function () { return [{ type: TruDataContext }, { type: TruSearchResultViewManager }, { type: TruAppEnvironment }, { type: TruSearchViewEventHandler }, { type: TruUiNotification }, { type: TruConnectionHub }]; }, propDecorators: { config: [{
2454
2800
  type: Input
2455
2801
  }], entity: [{
2456
2802
  type: Input
@@ -5607,41 +5953,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
5607
5953
  }]
5608
5954
  }] });
5609
5955
 
5610
- const connection = new signalR.HubConnectionBuilder()
5611
- .withUrl("https://localhost:44303/notificationhub", {
5612
- skipNegotiation: true,
5613
- transport: signalR.HttpTransportType.WebSockets,
5614
- }).withAutomaticReconnect().build();
5615
- class TruConnectionHub {
5616
- constructor() {
5617
- this.start = () => {
5618
- connection.on("change", (value) => {
5619
- console.log(JSON.parse(value));
5620
- });
5621
- try {
5622
- Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
5623
- connection.start().then(() => {
5624
- connection.invoke('getConnectionId')
5625
- .then(function (connectionId) {
5626
- console.log(`SignalR connection success! connectionId: ${connectionId}`);
5627
- });
5628
- });
5629
- }
5630
- catch (error) {
5631
- console.log(`SignalR connection error: ${error}`);
5632
- }
5633
- };
5634
- }
5635
- }
5636
- TruConnectionHub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5637
- TruConnectionHub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, providedIn: 'root' });
5638
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, decorators: [{
5639
- type: Injectable,
5640
- args: [{
5641
- providedIn: 'root',
5642
- }]
5643
- }], ctorParameters: function () { return []; } });
5644
-
5645
5956
  class TruPredicateMap {
5646
5957
  constructor() { }
5647
5958
  }
@@ -5919,5 +6230,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
5919
6230
  * Generated bundle index. Do not edit.
5920
6231
  */
5921
6232
 
5922
- export { DetailViewModule, TruAppEnvironment, TruAuth, TruAuthInterceptor, TruBreezeContext, TruBreezeContextFactory, TruBreezeMetadataProvider, TruBreezeValidator, TruBreezeValidatorModule, TruChoice, TruColumn, TruColumnModule, TruCommonModule, TruComponentConfigBase, TruComponentLookup, TruConfirmDialog, TruConfirmDialogConfig, TruConfirmDialogModule, TruConnectionHub, TruContextFilter, TruContextFilterChoice, TruContextFilters, TruControlComponentConfigBase, TruDataContext, TruDataGrid, TruDataGridModule, TruDataGridTypes, TruDesktop, TruDesktopManager, TruDesktopModule, TruDesktopViewConfig, TruDetailViewBase, TruEditControlBase, TruEditControlConfigBase, TruEditParentControlConfigBase, TruEditPkeyControlConfigBase, TruEntityAccessor, TruEntityBase, TruExportDialog, TruExportDialogConfig, TruExportDialogModule, TruForm, TruFormModule, TruFormulaEval, TruGroupBox, TruGroupBoxModule, TruIconModule, TruLogin, TruLoginModule, TruPredicate, TruPredicateMap, TruPropertyConfigBase, TruPropertyConfigCloudFile, TruPropertyConfigDate, TruPropertyConfigDecimal, TruPropertyConfigFile, TruPropertyConfigForeignKey, TruPropertyConfigInteger, TruPropertyConfigPassword, TruPropertyConfigPercentage, TruPropertyConfigScientific, TruPropertyConfigText, TruPropertyConfigTextChoices, TruPropertyConfigUsaAddress, TruPropertyConfigZipCode, TruQueryPredicateManager, TruRow, TruRowModule, TruSearchConfigBase, TruSearchControlBase, TruSearchControlConfigBase, TruSearchControlRangeBase, TruSearchIconModule, TruSearchPanelPositionManager, TruSearchPanelPositionManagerModule, TruSearchResultViewBase, TruSearchResultViewBaseModule, TruSearchResultViewManager, TruSearchViewBase, TruSearchViewBaseModule, TruSearchViewControlEventHandler, TruSearchViewEventHandler, TruSort, TruTableConfigBase, TruTableRegistry, TruTextManager, TruToolbar, TruToolbarButton, TruToolbarButtonModule, TruToolbarContextFilter, TruToolbarContextFilterModule, TruToolbarDropdown, TruToolbarDropdownModule, TruToolbarMenu, TruToolbarMenuModule, TruToolbarModule, TruToolbarSeparator, TruToolbarSeparatorModule, TruToolbarText, TruToolbarTextModule, TruUiNotification, TruUser, TruUtil, TruValidationDialog, TruValidationDialogModule, TruWindowActionEventHandler, TruWindowEventArgs, TruWindowEventHandler };
6233
+ export { DetailViewModule, TruAppEnvironment, TruAuth, TruAuthInterceptor, TruBreezeContext, TruBreezeContextFactory, TruBreezeMetadataProvider, TruBreezeValidator, TruBreezeValidatorModule, TruChoice, TruColumn, TruColumnModule, TruCommonModule, TruComponentConfigBase, TruComponentLookup, TruConfirmDialog, TruConfirmDialogConfig, TruConfirmDialogModule, TruConnectionHub, TruContextFilter, TruContextFilterChoice, TruContextFilters, TruControlComponentConfigBase, TruDataContext, TruDataGrid, TruDataGridModule, TruDataGridTypes, TruDesktop, TruDesktopManager, TruDesktopModule, TruDesktopViewConfig, TruDetailViewBase, TruEditControlBase, TruEditControlConfigBase, TruEditParentControlConfigBase, TruEditPkeyControlConfigBase, TruEntityAccessor, TruEntityBase, TruExportDialog, TruExportDialogConfig, TruExportDialogModule, TruForm, TruFormModule, TruFormulaEval, TruGroupBox, TruGroupBoxModule, TruIconModule, TruLogin, TruLoginModule, TruModelPropertyLookup, TruPredicate, TruPredicateMap, TruPropertyConfigBase, TruPropertyConfigCloudFile, TruPropertyConfigDate, TruPropertyConfigDecimal, TruPropertyConfigFile, TruPropertyConfigForeignKey, TruPropertyConfigInteger, TruPropertyConfigPassword, TruPropertyConfigPercentage, TruPropertyConfigScientific, TruPropertyConfigText, TruPropertyConfigTextChoices, TruPropertyConfigUsaAddress, TruPropertyConfigZipCode, TruQueryPredicateManager, TruRow, TruRowModule, TruSearchConfigBase, TruSearchControlBase, TruSearchControlConfigBase, TruSearchControlRangeBase, TruSearchIconModule, TruSearchPanelPositionManager, TruSearchPanelPositionManagerModule, TruSearchResultViewBase, TruSearchResultViewBaseModule, TruSearchResultViewManager, TruSearchViewBase, TruSearchViewBaseModule, TruSearchViewControlEventHandler, TruSearchViewEventHandler, TruSort, TruTableConfigBase, TruTableRegistry, TruTextManager, TruToolbar, TruToolbarButton, TruToolbarButtonModule, TruToolbarContextFilter, TruToolbarContextFilterModule, TruToolbarDropdown, TruToolbarDropdownModule, TruToolbarMenu, TruToolbarMenuModule, TruToolbarModule, TruToolbarSeparator, TruToolbarSeparatorModule, TruToolbarText, TruToolbarTextModule, TruUiNotification, TruUser, TruUtil, TruValidationDialog, TruValidationDialogModule, TruWindowActionEventHandler, TruWindowEventArgs, TruWindowEventHandler };
5923
6234
  //# sourceMappingURL=trudb-tru-common-lib.mjs.map