@trudb/tru-common-lib 0.0.506 → 0.0.511

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Directive, Input, Injectable, Component, Inject, HostListener, NgModule, EventEmitter, ViewEncapsulation, Output, APP_INITIALIZER, InjectionToken } from '@angular/core';
3
- import { EntityAspect, MetadataStore, EntityManager, DataService, EntityQuery, FetchStrategy, EntityState, BinaryPredicate, AndOrPredicate, breeze } from 'breeze-client';
3
+ import { EntityAspect, MetadataStore, EntityManager, DataService, EntityQuery, Predicate, FetchStrategy, EntityState, BinaryPredicate, AndOrPredicate, breeze } from 'breeze-client';
4
4
  import { BehaviorSubject, defer, from, of, Observable, Subject, skip, forkJoin, throwError } from 'rxjs';
5
5
  import * as _ from 'underscore';
6
6
  import * as i1$2 from '@angular/common/http';
@@ -275,6 +275,7 @@ class TruAppEnvironment {
275
275
  this._saveComplete = new BehaviorSubject(null);
276
276
  this._revertComplete = new BehaviorSubject(null);
277
277
  this._deleteComplete = new BehaviorSubject(null);
278
+ this._globalDataContext = null;
278
279
  this.onSavingChanged$ = this._isSaving.asObservable();
279
280
  this.onSaveComplete$ = this._saveComplete.asObservable();
280
281
  this.onRevertComplete$ = this._revertComplete.asObservable();
@@ -337,6 +338,12 @@ class TruAppEnvironment {
337
338
  set maxRecordCount(maxRecordCount) {
338
339
  this._maxRecordCount = maxRecordCount;
339
340
  }
341
+ get globalDataContext() {
342
+ return this._globalDataContext;
343
+ }
344
+ set globalDataContext(context) {
345
+ this._globalDataContext = context;
346
+ }
340
347
  get isMac() {
341
348
  return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
342
349
  }
@@ -412,6 +419,9 @@ class TruBreezeContext {
412
419
  return (x) => { return new EntityQuery(x); };
413
420
  }
414
421
  ;
422
+ get createPredicate() {
423
+ return (...args) => { return new Predicate(args); };
424
+ }
415
425
  get entityManager() {
416
426
  return this._entityManager;
417
427
  }
@@ -700,6 +710,44 @@ class TruEntityAccessor {
700
710
  return result;
701
711
  return null;
702
712
  };
713
+ this.searchByRefArrayCacheOnly = (entity, setupQuery = null, refs, includeDeleted = false) => {
714
+ if (!includeDeleted)
715
+ includeDeleted = false;
716
+ var queryOptions = this._entityManager.queryOptions.using({
717
+ includeDeleted: includeDeleted,
718
+ fetchStrategy: FetchStrategy.FromLocalCache
719
+ });
720
+ var query = this._breezeContext.createQuery(this.getQueryServiceName(entity)).using(queryOptions);
721
+ if (setupQuery)
722
+ query = setupQuery(query);
723
+ if (query === null) //setupQuery() returned null to select no rows
724
+ return [];
725
+ if (refs.length > 0) {
726
+ const pkeyName = entity.name + 'Ref';
727
+ var predicate = this._breezeContext.createPredicate(pkeyName, '==', refs[0]);
728
+ _.rest(refs, 1).forEach(function (ref) {
729
+ predicate = predicate.or(pkeyName, '==', ref);
730
+ });
731
+ query = query.where(predicate);
732
+ }
733
+ var results = this._entityManager.executeQueryLocally(query);
734
+ if (results && results.length)
735
+ return results;
736
+ return null;
737
+ };
738
+ this.searchByRefWithQuery = (entity, setupQuery, ref) => {
739
+ var query = this._breezeContext.createQuery(this.getQueryServiceName(entity));
740
+ query = setupQuery(query);
741
+ const pkeyName = entity.name + 'Ref';
742
+ var predicate = this._breezeContext.createPredicate(pkeyName, '==', ref);
743
+ query = query.where(predicate);
744
+ var localResults = this._entityManager.executeQueryLocally(query);
745
+ if (localResults.length)
746
+ return of(localResults);
747
+ return defer(() => from(this._entityManager.executeQuery(query).then((queryData) => {
748
+ return queryData.results;
749
+ })));
750
+ };
703
751
  this.export = (entity, gridSpec, setupQuery, entityRefs, options) => {
704
752
  options = options || {};
705
753
  var args = {
@@ -2011,16 +2059,16 @@ class TruDataChangeParser {
2011
2059
  dataChanged(change) {
2012
2060
  this.dataChanged$.next(change);
2013
2061
  }
2014
- constructor(connection, dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, modelPropertyLookup) {
2062
+ constructor(connection, dataContext, globalDataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, modelPropertyLookup) {
2015
2063
  this.waitingEntities = [];
2016
2064
  this.dataChanged$ = new Subject();
2017
2065
  this.findEntityInCache = (change) => {
2018
- var entityAccessor = this.dataContext.entityAccess(change.tableName);
2066
+ var entityAccessor = this.dataContext.entityAccess();
2019
2067
  return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true);
2020
2068
  };
2021
2069
  this.findEntityInGlobalCache = (change) => {
2022
- var entityAccessor = this.globalDataContext.entityAccess(change.tableName);
2023
- return entityAccessor.getByRefCacheOnly(parseInt(change.tableRef, 10), true);
2070
+ var entityAccessor = this.globalDataContext.entityAccess();
2071
+ return entityAccessor.searchByRefCacheOnly(this.entity, parseInt(change.tableRef, 10), true);
2024
2072
  };
2025
2073
  this.checkIfDateTime = (newValue, currentValue, typeName) => {
2026
2074
  if (typeName === 'date-time' || typeName === 'date') {
@@ -2100,17 +2148,17 @@ class TruDataChangeParser {
2100
2148
  });
2101
2149
  };
2102
2150
  this.entityFoundByQuery = (change) => {
2103
- var entityAccessor = this.dataContext.entityAccess(this.tableName);
2104
- var entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2105
- if (!entities.length) {
2106
- var entityAccessor = this.globalDataContext.entityAccess(this.tableName);
2107
- entities = entityAccessor.subsearch(this.getLatestQuery(), [change.tableRef]);
2151
+ var entityAccessor = this.dataContext.entityAccess();
2152
+ var entities = entityAccessor.searchByRefArrayCacheOnly(this.entity, this.getLatestQuery(), [change.tableRef]);
2153
+ if (entities !== null && !entities.length) {
2154
+ var entityAccessor = this.globalDataContext.entityAccess();
2155
+ entities = entityAccessor.searchByRefArrayCacheOnly(this.entity, this.getLatestQuery(), [change.tableRef]);
2108
2156
  }
2109
- return entities.length;
2157
+ return entities === null ? 0 : entities.length;
2110
2158
  };
2111
2159
  this.getEntityFromServer = (change) => {
2112
- var entityAccessor = this.dataContext.entityAccess(this.tableName);
2113
- var entitiy = entityAccessor.customSearchByRef(this.getLatestQuery(), change.tableRef);
2160
+ var entityAccessor = this.dataContext.entityAccess();
2161
+ var entitiy = entityAccessor.searchByRefWithQuery(this.entity, this.getLatestQuery(), change.tableRef);
2114
2162
  return entitiy;
2115
2163
  };
2116
2164
  this.getEntityFromResults = (results, change) => {
@@ -2172,8 +2220,9 @@ class TruDataChangeParser {
2172
2220
  var entityAlreadyInResults = this.getEntityFromResults(results, change);
2173
2221
  if (this.entityFoundByQuery(change) && !entityAlreadyInResults.length && this.isLoaded()) {
2174
2222
  if (!localEntity) {
2175
- var newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2176
- newEntity[change.tableName + 'Ref'] = change.tableRef;
2223
+ var newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);
2224
+ const pkeyName = change.tableName + 'Ref';
2225
+ newEntity[pkeyName] = change.tableRef;
2177
2226
  this.applyPropertyChanges(change, newEntity);
2178
2227
  if (this.isLoaded()) {
2179
2228
  var results = this.getLatestResults();
@@ -2197,8 +2246,9 @@ class TruDataChangeParser {
2197
2246
  }
2198
2247
  }
2199
2248
  else if (!globalEntity) {
2200
- var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2201
- newEntity[change.tableName + 'Ref'] = change.tableRef;
2249
+ var newEntity = this.globalDataContext.entityAccess().add(this.entity, this.contextFilters);
2250
+ const pkeyName = change.tableName + 'Ref';
2251
+ newEntity[pkeyName] = change.tableRef;
2202
2252
  this.applyPropertyChanges(change, newEntity);
2203
2253
  reloadResults = true;
2204
2254
  }
@@ -2213,7 +2263,7 @@ class TruDataChangeParser {
2213
2263
  });
2214
2264
  }
2215
2265
  else if (change.changeOperation === 'U' && change.tableName === this.tableName) {
2216
- await this.getEntityFromServer(change).then((entity) => {
2266
+ await this.getEntityFromServer(change).subscribe((entity) => {
2217
2267
  if (entity) {
2218
2268
  this.applyPropertyChanges(change, entity);
2219
2269
  var results = this.getLatestResults();
@@ -2226,11 +2276,13 @@ class TruDataChangeParser {
2226
2276
  }
2227
2277
  else {
2228
2278
  if (change.changeOperation === 'I' && change.tableName === this.tableName) {
2229
- var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2230
- newEntity[change.tableName + 'Ref'] = change.tableRef;
2279
+ var newEntity = this.globalDataContext.entityAccess().add(this.entity, this.contextFilters);
2280
+ const pkeyName1 = change.tableName + 'Ref';
2281
+ newEntity[pkeyName1] = change.tableRef;
2231
2282
  this.applyPropertyChanges(change, newEntity);
2232
- newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2233
- newEntity[this.tableName + 'Ref'] = change.tableRef;
2283
+ newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);
2284
+ const pkeyName2 = change.tableName + 'Ref';
2285
+ newEntity[pkeyName2] = change.tableRef;
2234
2286
  this.applyPropertyChanges(change, newEntity);
2235
2287
  if (this.entityFoundByQuery(change) && this.isLoaded()) {
2236
2288
  var results = this.getLatestResults();
@@ -2239,11 +2291,13 @@ class TruDataChangeParser {
2239
2291
  }
2240
2292
  }
2241
2293
  else if (change.changeOperation === 'I') {
2242
- var newEntity = this.globalDataContext.entityAccess(change.tableName).add(this.contextFilters);
2243
- newEntity[change.tableName + 'Ref'] = change.tableRef;
2294
+ var newEntity = this.globalDataContext.entityAccess().add(this.entity, this.contextFilters);
2295
+ const pkeyName1 = change.tableName + 'Ref';
2296
+ newEntity[pkeyName1] = change.tableRef;
2244
2297
  this.applyPropertyChanges(change, newEntity);
2245
- newEntity = this.dataContext.entityAccess(change.tableName).add(this.contextFilters);
2246
- newEntity[change.tableName + 'Ref'] = change.tableRef;
2298
+ newEntity = this.dataContext.entityAccess().add(this.entity, this.contextFilters);
2299
+ const pkeyName2 = change.tableName + 'Ref';
2300
+ newEntity[pkeyName2] = change.tableRef;
2247
2301
  this.applyPropertyChanges(change, newEntity);
2248
2302
  }
2249
2303
  }
@@ -2256,6 +2310,7 @@ class TruDataChangeParser {
2256
2310
  this.dataChanged(dataChangeArgs);
2257
2311
  };
2258
2312
  this.dataContext = dataContext;
2313
+ this.globalDataContext = globalDataContext;
2259
2314
  this.entity = entity;
2260
2315
  this.tableName = tableName;
2261
2316
  this.getLatestResults = getLatestResults;
@@ -2312,7 +2367,7 @@ class TruConnectionHub {
2312
2367
  }
2313
2368
  };
2314
2369
  this.subscribe = (dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded) => {
2315
- return new TruDataChangeParser(this.connection, dataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
2370
+ return new TruDataChangeParser(this.connection, dataContext, this.appEnvironment.globalDataContext, entity, tableName, getLatestResults, getLatestQuery, contextFilters, expandPaths, isLoaded, this.modelPropertyLookup).onDataChanged();
2316
2371
  };
2317
2372
  this.connection = new signalR.HubConnectionBuilder()
2318
2373
  .withUrl(`${this.appEnvironment.appUri}/notificationhub`, {