@trudb/tru-common-lib 0.0.493 → 0.0.495

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,10 @@ 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 { __awaiter } from 'tslib';
20
+ import moment$1 from 'moment';
21
+ import * as i8 from 'ag-grid-angular';
19
22
  import { AgGridModule } from 'ag-grid-angular';
20
23
  import * as i2 from '@angular/material/icon';
21
24
  import { MatIconModule } from '@angular/material/icon';
@@ -72,7 +75,6 @@ import { MatToolbarModule } from '@angular/material/toolbar';
72
75
  import { MatTooltipModule } from '@angular/material/tooltip';
73
76
  import { MatTreeModule } from '@angular/material/tree';
74
77
  import { OverlayModule } from '@angular/cdk/overlay';
75
- import * as signalR from '@microsoft/signalr';
76
78
 
77
79
  class TruComponentConfigBase {
78
80
  constructor() { }
@@ -2001,6 +2003,347 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
2001
2003
  type: Injectable
2002
2004
  }], ctorParameters: function () { return []; } });
2003
2005
 
2006
+ class TruDataChange {
2007
+ constructor() {
2008
+ this.dataChanges = [];
2009
+ this.reload = false;
2010
+ }
2011
+ }
2012
+
2013
+ class TruDataChangeParser {
2014
+ onDataChanged() {
2015
+ return this.dataChanged$;
2016
+ }
2017
+ dataChanged(change) {
2018
+ this.dataChanged$.next(change);
2019
+ }
2020
+ constructor(connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, modelPropertyLookup) {
2021
+ this.waitingEntities = [];
2022
+ this.dataChanged$ = new Subject();
2023
+ this.findEntityInCache = (change) => {
2024
+ var entityAccessor = this.dataContext.entityAccess(change.tableName);
2025
+ return entityAccessor.getByRefCacheOnly(parseInt(change.tableRef, 10), true)[0];
2026
+ };
2027
+ this.findEntityInGlobalCache = (change) => {
2028
+ var entityAccessor = this.globalDataContext.entityAccess(change.tableName);
2029
+ return entityAccessor.getByRefCacheOnly(parseInt(change.tableRef, 10), true)[0];
2030
+ };
2031
+ this.checkIfDateTime = (newValue, currentValue, typeName) => {
2032
+ if (typeName === 'date-time' || typeName === 'date') {
2033
+ if (moment$1(newValue, "YYYY-MM-DD HH:mm:ss.sssssss", true).isValid())
2034
+ return moment$1(moment$1.utc(newValue).toDate()).format('MM/DD/YYYY hh:mm A');
2035
+ }
2036
+ return newValue;
2037
+ };
2038
+ this.hasPropertyAlreadyBeenModified = (propertyName, entity) => {
2039
+ return entity.entityAspect.originalValues.hasOwnProperty(propertyName);
2040
+ };
2041
+ this.applyPropertyChanges = (change, entity) => {
2042
+ var stateBeforePropertyChange = entity.entityAspect.entityState;
2043
+ var originalValues = entity.entityAspect.originalValues;
2044
+ entity['Data_Notification'] = true;
2045
+ Object.keys(change.properties).forEach((key) => {
2046
+ var entityType = this.types.get(change.tableName + '.' + key);
2047
+ if (!entityType) {
2048
+ entityType = new TruPropertyConfigBase();
2049
+ entityType.typeName = 'text-bounded';
2050
+ }
2051
+ var propertyModified = this.hasPropertyAlreadyBeenModified(key, entity);
2052
+ if (key === 'Updated' || key === 'UpdatedRef') {
2053
+ entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2054
+ if (originalValues.hasOwnProperty(key))
2055
+ delete originalValues[key];
2056
+ }
2057
+ else if (entity[key] !== this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName)) {
2058
+ if (!propertyModified) {
2059
+ entity[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2060
+ delete originalValues[key];
2061
+ }
2062
+ else {
2063
+ var mergeData = JSON.parse(entity.Merge_Data);
2064
+ if (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
+ else {
2072
+ mergeData = {};
2073
+ mergeData[key] = {
2074
+ "value": this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName),
2075
+ "modifiedBy": change.modifiedBy,
2076
+ "hid": change.properties[key + 'HID']
2077
+ };
2078
+ }
2079
+ entity.Merge_Data = JSON.stringify(mergeData);
2080
+ entity.entityAspect.validateProperty(key);
2081
+ }
2082
+ if (typeof (originalValues[key]) !== 'undefined')
2083
+ originalValues[key] = this.checkIfDateTime(change.properties[key], entity[key], entityType.typeName);
2084
+ }
2085
+ else {
2086
+ if (originalValues.hasOwnProperty(key))
2087
+ delete originalValues[key];
2088
+ }
2089
+ });
2090
+ entity['rowver'] = change.rowver;
2091
+ delete originalValues['rowver'];
2092
+ if (stateBeforePropertyChange.name !== "Modified" || (Object.keys(originalValues).length === 0 && originalValues.constructor === Object)) {
2093
+ if (!entity.entityAspect.isBeingSaved) {
2094
+ entity.entityAspect.setUnchanged();
2095
+ }
2096
+ else {
2097
+ this.waitingEntities.push(entity);
2098
+ }
2099
+ }
2100
+ delete entity['Data_Notification'];
2101
+ };
2102
+ this.setWaitingEntitiesToUnchanged = () => {
2103
+ this.waitingEntities.forEach((entity) => {
2104
+ if (entity && entity.entityAspect)
2105
+ entity.entityAspect.setUnchanged();
2106
+ });
2107
+ };
2108
+ this.entityFoundByQuery = (change) => {
2109
+ var entityAccessor = this.dataContext.entityAccess(this.tableName);
2110
+ var entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2111
+ if (!entities.length) {
2112
+ var entityAccessor = this.globalDataContext.entityAccess(this.tableName);
2113
+ entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2114
+ }
2115
+ return entities.length;
2116
+ };
2117
+ this.getEntityFromCache = (change) => {
2118
+ var entityAccessor = this.dataContext.entityAccess(this.tableName);
2119
+ var entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2120
+ if (!entities.length) {
2121
+ var entityAccessor = this.globalDataContext.entityAccess(this.tableName);
2122
+ entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2123
+ }
2124
+ return entities[0];
2125
+ };
2126
+ this.getEntityFromServer = (change) => {
2127
+ var entityAccessor = this.dataContext.entityAccess(this.tableName);
2128
+ var entitiy = entityAccessor.customSearchByRef(this.getLatestQuery(), change.tableRef);
2129
+ return entitiy;
2130
+ };
2131
+ this.getEntityFromResults = (results, change) => {
2132
+ return results.filter((e) => { return e.Ref === change.tableRef; });
2133
+ };
2134
+ this.isSaving = () => __awaiter(this, void 0, void 0, function* () {
2135
+ return new Promise((resolve, reject) => {
2136
+ var interval = setInterval(() => {
2137
+ //if (!$rootScope['isSaving']) {
2138
+ // clearInterval(interval);
2139
+ // resolve();
2140
+ //}
2141
+ }, 1000);
2142
+ });
2143
+ });
2144
+ this.update = (payload) => __awaiter(this, void 0, void 0, function* () {
2145
+ //await this.isSaving();
2146
+ var reloadResults = false;
2147
+ payload.changes.forEach((change) => __awaiter(this, void 0, void 0, function* () {
2148
+ var foundEntities = [];
2149
+ var localEntity = this.findEntityInCache(change);
2150
+ var globalEntity = this.findEntityInGlobalCache(change);
2151
+ if (localEntity)
2152
+ foundEntities.push(localEntity);
2153
+ if (globalEntity)
2154
+ foundEntities.push(globalEntity);
2155
+ if (foundEntities.length) {
2156
+ foundEntities.forEach((entity) => __awaiter(this, void 0, void 0, function* () {
2157
+ if (change.tableName === this.tableName) {
2158
+ if (change.changeOperation === 'U') {
2159
+ this.applyPropertyChanges(change, entity);
2160
+ var results = this.getLatestResults();
2161
+ if (this.entityFoundByQuery(change)) {
2162
+ var entityAlreadyInResults = this.getEntityFromResults(results, change);
2163
+ if (!entityAlreadyInResults.length && this.isLoaded()) {
2164
+ results.push(entity);
2165
+ }
2166
+ reloadResults = true;
2167
+ }
2168
+ else {
2169
+ var entityToRemove = this.getEntityFromResults(results, change);
2170
+ if (entityToRemove.length) {
2171
+ results.splice(results.indexOf(entityToRemove[0]), 1);
2172
+ reloadResults = true;
2173
+ }
2174
+ }
2175
+ }
2176
+ else if (change.changeOperation === 'D') {
2177
+ var results = this.getLatestResults();
2178
+ var entityToDelete = this.getEntityFromResults(results, change);
2179
+ if (entityToDelete.length) {
2180
+ entityToDelete[0].entityAspect.setDetached();
2181
+ results.splice(results.indexOf(entityToDelete[0]), 1);
2182
+ reloadResults = true;
2183
+ }
2184
+ }
2185
+ else if (change.changeOperation === 'I') {
2186
+ var results = this.getLatestResults();
2187
+ var entityAlreadyInResults = this.getEntityFromResults(results, change);
2188
+ if (this.entityFoundByQuery(change) && !entityAlreadyInResults.length && this.isLoaded()) {
2189
+ if (!localEntity) {
2190
+ var newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2191
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2192
+ this.applyPropertyChanges(change, newEntity);
2193
+ if (this.isLoaded()) {
2194
+ var results = this.getLatestResults();
2195
+ results.push(newEntity);
2196
+ reloadResults = true;
2197
+ }
2198
+ }
2199
+ else if (entity === localEntity) {
2200
+ this.applyPropertyChanges(change, entity);
2201
+ var results = this.getLatestResults();
2202
+ results.push(entity);
2203
+ reloadResults = true;
2204
+ }
2205
+ }
2206
+ else if (!this.entityFoundByQuery(change) && entityAlreadyInResults.length) {
2207
+ var results = this.getLatestResults();
2208
+ var entityToDelete = this.getEntityFromResults(results, change);
2209
+ if (entityToDelete.length) {
2210
+ results.splice(results.indexOf(entityAlreadyInResults[0]), 1);
2211
+ reloadResults = true;
2212
+ }
2213
+ }
2214
+ else if (!globalEntity) {
2215
+ var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2216
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2217
+ this.applyPropertyChanges(change, newEntity);
2218
+ reloadResults = true;
2219
+ }
2220
+ else {
2221
+ reloadResults = true;
2222
+ }
2223
+ }
2224
+ }
2225
+ else if (change.changeOperation !== 'D') {
2226
+ this.applyPropertyChanges(change, entity);
2227
+ }
2228
+ }));
2229
+ }
2230
+ else if (change.changeOperation === 'U' && change.tableName === this.tableName) {
2231
+ yield this.getEntityFromServer(change).then((entity) => {
2232
+ if (entity) {
2233
+ this.applyPropertyChanges(change, entity);
2234
+ var results = this.getLatestResults();
2235
+ if (this.entityFoundByQuery(change) && this.isLoaded()) {
2236
+ results.push(entity);
2237
+ reloadResults = true;
2238
+ }
2239
+ }
2240
+ });
2241
+ }
2242
+ else {
2243
+ if (change.changeOperation === 'I' && change.tableName === this.tableName) {
2244
+ var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2245
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2246
+ this.applyPropertyChanges(change, newEntity);
2247
+ newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2248
+ newEntity[this.tableName + 'Ref'] = change.tableRef;
2249
+ this.applyPropertyChanges(change, newEntity);
2250
+ if (this.entityFoundByQuery(change) && this.isLoaded()) {
2251
+ var results = this.getLatestResults();
2252
+ results.push(newEntity);
2253
+ reloadResults = true;
2254
+ }
2255
+ }
2256
+ else if (change.changeOperation === 'I') {
2257
+ var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2258
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2259
+ this.applyPropertyChanges(change, newEntity);
2260
+ newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2261
+ newEntity[change.tableName + 'Ref'] = change.tableRef;
2262
+ this.applyPropertyChanges(change, newEntity);
2263
+ }
2264
+ }
2265
+ if (this.expandPaths && this.expandPaths.length && this.expandPaths.includes('o' + change.tableName))
2266
+ reloadResults = true;
2267
+ }));
2268
+ let dataChangeArgs = new TruDataChange();
2269
+ dataChangeArgs.dataChanges = payload;
2270
+ dataChangeArgs.reload = reloadResults;
2271
+ this.dataChanged(dataChangeArgs);
2272
+ });
2273
+ this.dataContext = dataContext;
2274
+ this.tableName = tableName;
2275
+ this.getLatestResults = getLatestResults;
2276
+ this.getLatestQuery = getLatestQuery;
2277
+ this.contextFilters = contextFilters;
2278
+ this.expandPaths = expandPaths;
2279
+ this.isLoaded = isLoaded;
2280
+ this.types = modelPropertyLookup.lookup;
2281
+ connection.on("change", (payload) => {
2282
+ this.update(payload);
2283
+ });
2284
+ }
2285
+ }
2286
+
2287
+ class TruModelPropertyLookup {
2288
+ constructor() {
2289
+ this._lookup = new Map();
2290
+ }
2291
+ get lookup() {
2292
+ return this._lookup;
2293
+ }
2294
+ set lookup(value) {
2295
+ this._lookup = value;
2296
+ }
2297
+ }
2298
+ TruModelPropertyLookup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2299
+ TruModelPropertyLookup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, providedIn: 'root' });
2300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, decorators: [{
2301
+ type: Injectable,
2302
+ args: [{
2303
+ providedIn: 'root',
2304
+ }]
2305
+ }], ctorParameters: function () { return []; } });
2306
+
2307
+ class TruConnectionHub {
2308
+ constructor(appEnvironment, modelPropertyLookup) {
2309
+ this.appEnvironment = appEnvironment;
2310
+ this.modelPropertyLookup = modelPropertyLookup;
2311
+ this.start = () => {
2312
+ this.connection.on("error", (value) => {
2313
+ console.log(JSON.parse(value));
2314
+ });
2315
+ try {
2316
+ Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
2317
+ this.connection.start().then(() => {
2318
+ this.connection.invoke('getConnectionId')
2319
+ .then((connectionId) => {
2320
+ console.log(`SignalR connection success! connectionId: ${connectionId}`);
2321
+ });
2322
+ });
2323
+ }
2324
+ catch (error) {
2325
+ console.log(`SignalR connection error: ${error}`);
2326
+ }
2327
+ };
2328
+ this.subscribe = (dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
2329
+ return new TruDataChangeParser(this.connection, dataContext, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
2330
+ };
2331
+ this.connection = new signalR.HubConnectionBuilder()
2332
+ .withUrl(`${this.appEnvironment.appUri}/notificationhub`, {
2333
+ skipNegotiation: true,
2334
+ transport: signalR.HttpTransportType.WebSockets,
2335
+ }).withAutomaticReconnect().build();
2336
+ }
2337
+ }
2338
+ 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 });
2339
+ TruConnectionHub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, providedIn: 'root' });
2340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, decorators: [{
2341
+ type: Injectable,
2342
+ args: [{
2343
+ providedIn: 'root',
2344
+ }]
2345
+ }], ctorParameters: function () { return [{ type: TruAppEnvironment }, { type: TruModelPropertyLookup }]; } });
2346
+
2004
2347
  class TruToolbar {
2005
2348
  constructor() {
2006
2349
  this.config = null;
@@ -2226,12 +2569,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
2226
2569
  }], ctorParameters: function () { return []; } });
2227
2570
 
2228
2571
  class TruDataGrid {
2229
- constructor(dataContext, searchResultViewManager, appEnvironment, searchViewEventHandler, uiNotification) {
2572
+ constructor(dataContext, searchResultViewManager, appEnvironment, searchViewEventHandler, uiNotification, connectionHub) {
2230
2573
  this.dataContext = dataContext;
2231
2574
  this.searchResultViewManager = searchResultViewManager;
2232
2575
  this.appEnvironment = appEnvironment;
2233
2576
  this.searchViewEventHandler = searchViewEventHandler;
2234
2577
  this.uiNotification = uiNotification;
2578
+ this.connectionHub = connectionHub;
2235
2579
  this.TruDataGridTypes = TruDataGridTypes;
2236
2580
  this.columnDefs = [];
2237
2581
  this.rowData = [];
@@ -2437,6 +2781,9 @@ class TruDataGrid {
2437
2781
  this.subscribeTo();
2438
2782
  this.columnDefs = this.config.resultConfig.columnDefs;
2439
2783
  this.gridType = this.config.resultConfig.gridType;
2784
+ this.connectionHub.subscribe(this.dataContext, this.config.tableName, () => { return this.loadedEntities; }, () => { return this.latestSetupQuery; }, this.config.resultConfig.expands, [], () => { return true; }).subscribe((dataChange) => {
2785
+ console.log(dataChange);
2786
+ });
2440
2787
  }
2441
2788
  ngOnChanges(changes) {
2442
2789
  if (this.gridType === TruDataGridTypes.Detail || this.gridType === TruDataGridTypes.DetailManyToMany)
@@ -2452,12 +2799,12 @@ class TruDataGrid {
2452
2799
  }, 0);
2453
2800
  }
2454
2801
  }
2455
- 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 });
2456
- 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 });
2802
+ 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 });
2803
+ 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 });
2457
2804
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruDataGrid, decorators: [{
2458
2805
  type: Component,
2459
2806
  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"] }]
2460
- }], ctorParameters: function () { return [{ type: TruDataContext }, { type: TruSearchResultViewManager }, { type: TruAppEnvironment }, { type: TruSearchViewEventHandler }, { type: TruUiNotification }]; }, propDecorators: { config: [{
2807
+ }], ctorParameters: function () { return [{ type: TruDataContext }, { type: TruSearchResultViewManager }, { type: TruAppEnvironment }, { type: TruSearchViewEventHandler }, { type: TruUiNotification }, { type: TruConnectionHub }]; }, propDecorators: { config: [{
2461
2808
  type: Input
2462
2809
  }], entity: [{
2463
2810
  type: Input
@@ -5622,61 +5969,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
5622
5969
  }]
5623
5970
  }] });
5624
5971
 
5625
- const connection = new signalR.HubConnectionBuilder()
5626
- .withUrl("https://localhost:44303/notificationhub", {
5627
- skipNegotiation: true,
5628
- transport: signalR.HttpTransportType.WebSockets,
5629
- }).withAutomaticReconnect().build();
5630
- class TruConnectionHub {
5631
- constructor() {
5632
- this.start = () => {
5633
- connection.on("change", (value) => {
5634
- console.log(JSON.parse(value));
5635
- });
5636
- try {
5637
- Object.defineProperty(WebSocket, 'OPEN', { value: 1, });
5638
- connection.start().then(() => {
5639
- connection.invoke('getConnectionId')
5640
- .then(function (connectionId) {
5641
- console.log(`SignalR connection success! connectionId: ${connectionId}`);
5642
- });
5643
- });
5644
- }
5645
- catch (error) {
5646
- console.log(`SignalR connection error: ${error}`);
5647
- }
5648
- };
5649
- }
5650
- }
5651
- TruConnectionHub.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5652
- TruConnectionHub.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, providedIn: 'root' });
5653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruConnectionHub, decorators: [{
5654
- type: Injectable,
5655
- args: [{
5656
- providedIn: 'root',
5657
- }]
5658
- }], ctorParameters: function () { return []; } });
5659
-
5660
- class TruModelPropertyLookup {
5661
- constructor() {
5662
- this._lookup = new Map();
5663
- }
5664
- get lookup() {
5665
- return this._lookup;
5666
- }
5667
- set lookup(value) {
5668
- this._lookup = value;
5669
- }
5670
- }
5671
- TruModelPropertyLookup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
5672
- TruModelPropertyLookup.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, providedIn: 'root' });
5673
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruModelPropertyLookup, decorators: [{
5674
- type: Injectable,
5675
- args: [{
5676
- providedIn: 'root',
5677
- }]
5678
- }], ctorParameters: function () { return []; } });
5679
-
5680
5972
  class TruPredicateMap {
5681
5973
  constructor() { }
5682
5974
  }