@elderbyte/ngx-starter 12.12.1 → 12.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/elderbyte-ngx-starter.umd.js +364 -107
- package/bundles/elderbyte-ngx-starter.umd.js.map +1 -1
- package/elderbyte-ngx-starter.d.ts +7 -6
- package/elderbyte-ngx-starter.metadata.json +1 -1
- package/esm2015/elderbyte-ngx-starter.js +8 -7
- package/esm2015/lib/common/data/data-context/data-context-active-page.js +1 -1
- package/esm2015/lib/common/data/data-context/data-context-auto-starter.js +74 -0
- package/esm2015/lib/common/data/data-context/data-context-base.js +10 -2
- package/esm2015/lib/common/data/data-context/data-context-builder.js +32 -5
- package/esm2015/lib/common/data/data-context/data-context-continuable-base.js +1 -1
- package/esm2015/lib/common/data/data-context/data-context-continuable-paged.js +1 -1
- package/esm2015/lib/common/data/data-context/data-context-continuable-token.js +2 -2
- package/esm2015/lib/common/data/data-context/data-context-life-cycle-binding.js +30 -0
- package/esm2015/lib/common/data/data-context/data-context-simple.js +1 -1
- package/esm2015/lib/common/data/data-context/data-context-source-auto-reloader.js +12 -0
- package/esm2015/lib/common/data/data-context/data-context.js +1 -1
- package/esm2015/lib/common/data/data-context/public_api.js +4 -2
- package/esm2015/lib/common/data/required-filter-evaluator.js +70 -0
- package/esm2015/lib/components/auditing/audited-entity/elder-audited-entity.component.js +2 -2
- package/esm2015/lib/components/data-view/base/elder-data-view-base.js +46 -3
- package/esm2015/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.js +45 -0
- package/esm2015/lib/components/data-view/common/elder-data-common.module.js +6 -3
- package/esm2015/lib/components/data-view/grid/elder-grid/elder-grid.component.js +3 -22
- package/esm2015/lib/components/data-view/table/elder-table/elder-table.component.js +5 -48
- package/esm2015/lib/components/files/blob-viewer/elder-blob-viewer.component.js +4 -3
- package/fesm2015/elderbyte-ngx-starter.js +305 -84
- package/fesm2015/elderbyte-ngx-starter.js.map +1 -1
- package/lib/common/data/data-context/data-context-auto-starter.d.ts +41 -0
- package/lib/common/data/data-context/data-context-base.d.ts +7 -1
- package/lib/common/data/data-context/data-context-builder.d.ts +9 -1
- package/lib/common/data/data-context/data-context-continuable-token.d.ts +1 -1
- package/lib/common/data/data-context/data-context-life-cycle-binding.d.ts +33 -0
- package/lib/common/data/data-context/data-context-source-auto-reloader.d.ts +8 -0
- package/lib/common/data/data-context/data-context.d.ts +4 -0
- package/lib/common/data/data-context/public_api.d.ts +3 -1
- package/lib/common/data/required-filter-evaluator.d.ts +46 -0
- package/lib/components/data-view/base/elder-data-view-base.d.ts +11 -1
- package/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.d.ts +29 -0
- package/lib/components/data-view/grid/elder-grid/elder-grid.component.d.ts +0 -5
- package/lib/components/data-view/table/elder-table/elder-table.component.d.ts +5 -10
- package/package.json +1 -1
- package/src/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.scss +0 -0
- package/esm2015/lib/common/data/data-context/data-source-to-data-context-binding.js +0 -20
- package/lib/common/data/data-context/data-source-to-data-context-binding.d.ts +0 -12
|
@@ -3339,8 +3339,8 @@
|
|
|
3339
3339
|
_this._started = new rxjs.BehaviorSubject(false);
|
|
3340
3340
|
_this._closed = new rxjs.BehaviorSubject(false);
|
|
3341
3341
|
_this._primaryIndex = new Map();
|
|
3342
|
-
_this.unsubscribe$ = new rxjs.Subject();
|
|
3343
3342
|
_this._reloadQueue = new rxjs.Subject();
|
|
3343
|
+
_this.unsubscribe$ = new rxjs.Subject();
|
|
3344
3344
|
_this._dataSource = dataSource;
|
|
3345
3345
|
_this._loading = _this._status.pipe(operators.map(function (status) { return status.loading; }));
|
|
3346
3346
|
_this._filter.filters.pipe(operators.filter(function () { return _this.started; }), operators.takeUntil(_this.unsubscribe$)).subscribe(function (filters) { return _this.onFiltersChanged(filters); });
|
|
@@ -3467,6 +3467,13 @@
|
|
|
3467
3467
|
enumerable: false,
|
|
3468
3468
|
configurable: true
|
|
3469
3469
|
});
|
|
3470
|
+
Object.defineProperty(DataContextBase.prototype, "isStarted$", {
|
|
3471
|
+
get: function () {
|
|
3472
|
+
return this._started.asObservable();
|
|
3473
|
+
},
|
|
3474
|
+
enumerable: false,
|
|
3475
|
+
configurable: true
|
|
3476
|
+
});
|
|
3470
3477
|
Object.defineProperty(DataContextBase.prototype, "isClosed", {
|
|
3471
3478
|
get: function () {
|
|
3472
3479
|
return this._closed.getValue();
|
|
@@ -3645,6 +3652,11 @@
|
|
|
3645
3652
|
DataContextBase.prototype.onStatus = function (status) {
|
|
3646
3653
|
this._status.next(status);
|
|
3647
3654
|
};
|
|
3655
|
+
/***************************************************************************
|
|
3656
|
+
* *
|
|
3657
|
+
* Private methods *
|
|
3658
|
+
* *
|
|
3659
|
+
**************************************************************************/
|
|
3648
3660
|
DataContextBase.prototype.clearIndex = function () {
|
|
3649
3661
|
this._primaryIndex.clear();
|
|
3650
3662
|
};
|
|
@@ -3954,7 +3966,7 @@
|
|
|
3954
3966
|
// protected nextContinuationToken?: string;
|
|
3955
3967
|
/***************************************************************************
|
|
3956
3968
|
* *
|
|
3957
|
-
*
|
|
3969
|
+
* Constructor *
|
|
3958
3970
|
* *
|
|
3959
3971
|
**************************************************************************/
|
|
3960
3972
|
function DataContextContinuableToken(dataSource, chunkSize, indexFn, localApply, localSort) {
|
|
@@ -4376,28 +4388,215 @@
|
|
|
4376
4388
|
return MatTableDataContextBinding;
|
|
4377
4389
|
}());
|
|
4378
4390
|
|
|
4379
|
-
|
|
4380
|
-
|
|
4391
|
+
/**
|
|
4392
|
+
* Allows making any kind of subscription which will be automatically unsubscribed
|
|
4393
|
+
* upon data context closing/cleanup.
|
|
4394
|
+
*/
|
|
4395
|
+
var DataContextLifeCycleBinding = /** @class */ (function () {
|
|
4396
|
+
/***************************************************************************
|
|
4397
|
+
* *
|
|
4398
|
+
* Constructor *
|
|
4399
|
+
* *
|
|
4400
|
+
**************************************************************************/
|
|
4401
|
+
function DataContextLifeCycleBinding(_dataContext) {
|
|
4381
4402
|
var _this = this;
|
|
4382
4403
|
this._dataContext = _dataContext;
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4404
|
+
if (_dataContext == null) {
|
|
4405
|
+
throw new Error('dataContext must not be null!');
|
|
4406
|
+
}
|
|
4386
4407
|
this._dataContext.data.subscribe(function (changed) { }, function (err) { }, function () { return _this.unsubscribe(); });
|
|
4387
4408
|
}
|
|
4388
|
-
|
|
4409
|
+
/***************************************************************************
|
|
4410
|
+
* *
|
|
4411
|
+
* Public API *
|
|
4412
|
+
* *
|
|
4413
|
+
**************************************************************************/
|
|
4414
|
+
DataContextLifeCycleBinding.prototype.unsubscribe = function () {
|
|
4389
4415
|
if (this._subscription) {
|
|
4390
4416
|
this._subscription.unsubscribe();
|
|
4391
4417
|
this._subscription = null;
|
|
4392
4418
|
}
|
|
4393
4419
|
};
|
|
4394
|
-
|
|
4420
|
+
return DataContextLifeCycleBinding;
|
|
4421
|
+
}());
|
|
4422
|
+
|
|
4423
|
+
var RequiredFilterContextChangedEvent = /** @class */ (function () {
|
|
4424
|
+
function RequiredFilterContextChangedEvent(requiredFilters, currentFilters, isValid) {
|
|
4425
|
+
this.requiredFilters = requiredFilters;
|
|
4426
|
+
this.currentFilters = currentFilters;
|
|
4427
|
+
this.isValid = isValid;
|
|
4428
|
+
}
|
|
4429
|
+
return RequiredFilterContextChangedEvent;
|
|
4430
|
+
}());
|
|
4431
|
+
var RequiredFilterEvaluator = /** @class */ (function () {
|
|
4432
|
+
/***************************************************************************
|
|
4433
|
+
* *
|
|
4434
|
+
* Fields *
|
|
4435
|
+
* *
|
|
4436
|
+
**************************************************************************/
|
|
4437
|
+
function RequiredFilterEvaluator(filterContext, requiredFilters) {
|
|
4438
|
+
var _this = this;
|
|
4439
|
+
this._requiredFilters = new rxjs.BehaviorSubject([]);
|
|
4440
|
+
if (filterContext == null) {
|
|
4441
|
+
throw new Error('filterContext must not be null!');
|
|
4442
|
+
}
|
|
4443
|
+
this._filterContext = filterContext;
|
|
4444
|
+
if (requiredFilters) {
|
|
4445
|
+
this._requiredFilters.next(requiredFilters);
|
|
4446
|
+
}
|
|
4447
|
+
this.context$ = rxjs.combineLatest([
|
|
4448
|
+
this._requiredFilters,
|
|
4449
|
+
this._filterContext.filters
|
|
4450
|
+
]).pipe(operators.map(function (_a) {
|
|
4451
|
+
var _b = __read(_a, 2), required = _b[0], currentFilters = _b[1];
|
|
4452
|
+
return _this.createEvent(requiredFilters, currentFilters);
|
|
4453
|
+
}));
|
|
4454
|
+
}
|
|
4455
|
+
Object.defineProperty(RequiredFilterEvaluator.prototype, "filterContext", {
|
|
4456
|
+
/***************************************************************************
|
|
4457
|
+
* *
|
|
4458
|
+
* Properties *
|
|
4459
|
+
* *
|
|
4460
|
+
**************************************************************************/
|
|
4461
|
+
get: function () {
|
|
4462
|
+
return this._filterContext;
|
|
4463
|
+
},
|
|
4464
|
+
enumerable: false,
|
|
4465
|
+
configurable: true
|
|
4466
|
+
});
|
|
4467
|
+
Object.defineProperty(RequiredFilterEvaluator.prototype, "requiredFilters$", {
|
|
4468
|
+
get: function () {
|
|
4469
|
+
return this._requiredFilters.asObservable();
|
|
4470
|
+
},
|
|
4471
|
+
enumerable: false,
|
|
4472
|
+
configurable: true
|
|
4473
|
+
});
|
|
4474
|
+
Object.defineProperty(RequiredFilterEvaluator.prototype, "requiredFilters", {
|
|
4475
|
+
get: function () {
|
|
4476
|
+
return this._requiredFilters.getValue();
|
|
4477
|
+
},
|
|
4478
|
+
enumerable: false,
|
|
4479
|
+
configurable: true
|
|
4480
|
+
});
|
|
4481
|
+
/***************************************************************************
|
|
4482
|
+
* *
|
|
4483
|
+
* Public API *
|
|
4484
|
+
* *
|
|
4485
|
+
**************************************************************************/
|
|
4486
|
+
/***************************************************************************
|
|
4487
|
+
* *
|
|
4488
|
+
* Private methods *
|
|
4489
|
+
* *
|
|
4490
|
+
**************************************************************************/
|
|
4491
|
+
RequiredFilterEvaluator.prototype.createEvent = function (requiredFilters, currentFilters) {
|
|
4492
|
+
return new RequiredFilterContextChangedEvent(requiredFilters, currentFilters, this.allRequiredFiltersPresent(requiredFilters, currentFilters));
|
|
4493
|
+
};
|
|
4494
|
+
RequiredFilterEvaluator.prototype.allRequiredFiltersPresent = function (requiredFilters, currentFilters) {
|
|
4395
4495
|
var _this = this;
|
|
4396
|
-
|
|
4496
|
+
if (requiredFilters) {
|
|
4497
|
+
var validatedFilterGroups = requiredFilters.map(function (filterGroup) { return _this.hasAllFilters(filterGroup, currentFilters); });
|
|
4498
|
+
return validatedFilterGroups.find(function (validGroup) { return !!validGroup; });
|
|
4499
|
+
}
|
|
4500
|
+
return true;
|
|
4397
4501
|
};
|
|
4398
|
-
|
|
4502
|
+
RequiredFilterEvaluator.prototype.hasAllFilters = function (requiredFilters, currentFilters) {
|
|
4503
|
+
var currentFilterKeys = currentFilters.map(function (f) { return f.key; });
|
|
4504
|
+
var currentFilterKeySet = new Set(currentFilterKeys);
|
|
4505
|
+
return requiredFilters.every(function (required) { return currentFilterKeySet.has(required); });
|
|
4506
|
+
};
|
|
4507
|
+
return RequiredFilterEvaluator;
|
|
4399
4508
|
}());
|
|
4400
4509
|
|
|
4510
|
+
var AutoStartSpec = /** @class */ (function () {
|
|
4511
|
+
function AutoStartSpec(requiredFilters, initialSort) {
|
|
4512
|
+
this.requiredFilters = requiredFilters;
|
|
4513
|
+
this.initialSort = initialSort;
|
|
4514
|
+
}
|
|
4515
|
+
AutoStartSpec.asap = function (sort) {
|
|
4516
|
+
return new AutoStartSpec(null, sort);
|
|
4517
|
+
};
|
|
4518
|
+
AutoStartSpec.requireFiltersAll = function (filters, sort) {
|
|
4519
|
+
return AutoStartSpec.requireFilters([filters], sort);
|
|
4520
|
+
};
|
|
4521
|
+
AutoStartSpec.requireFiltersAny = function (filters, sort) {
|
|
4522
|
+
var separateFilterArrays = filters.map(function (singleFilter) { return [singleFilter]; });
|
|
4523
|
+
return AutoStartSpec.requireFilters(separateFilterArrays, sort);
|
|
4524
|
+
};
|
|
4525
|
+
AutoStartSpec.requireFilters = function (filters, sort) {
|
|
4526
|
+
return new AutoStartSpec(filters, sort);
|
|
4527
|
+
};
|
|
4528
|
+
return AutoStartSpec;
|
|
4529
|
+
}());
|
|
4530
|
+
var DataContextAutoStarter = /** @class */ (function (_super) {
|
|
4531
|
+
__extends(DataContextAutoStarter, _super);
|
|
4532
|
+
/***************************************************************************
|
|
4533
|
+
* *
|
|
4534
|
+
* Constructor *
|
|
4535
|
+
* *
|
|
4536
|
+
**************************************************************************/
|
|
4537
|
+
function DataContextAutoStarter(dataContext, _autoStartSpec) {
|
|
4538
|
+
var _this = _super.call(this, dataContext) || this;
|
|
4539
|
+
_this._autoStartSpec = _autoStartSpec;
|
|
4540
|
+
/***************************************************************************
|
|
4541
|
+
* *
|
|
4542
|
+
* Fields *
|
|
4543
|
+
* *
|
|
4544
|
+
**************************************************************************/
|
|
4545
|
+
_this.logger = tsLogger.LoggerFactory.getLogger(_this.constructor.name);
|
|
4546
|
+
if (_autoStartSpec == null) {
|
|
4547
|
+
throw new Error('autoStartSpec must not be null!');
|
|
4548
|
+
}
|
|
4549
|
+
if (_autoStartSpec.requiredFilters) {
|
|
4550
|
+
_this._autoStartConditionFulfilled$ = _this.buildRequiredFilterConditionObservable();
|
|
4551
|
+
}
|
|
4552
|
+
else {
|
|
4553
|
+
// no condition defined, try to start immediately
|
|
4554
|
+
_this.startDataContext();
|
|
4555
|
+
}
|
|
4556
|
+
_this.subscribe();
|
|
4557
|
+
return _this;
|
|
4558
|
+
}
|
|
4559
|
+
/***************************************************************************
|
|
4560
|
+
* *
|
|
4561
|
+
* Public API *
|
|
4562
|
+
* *
|
|
4563
|
+
**************************************************************************/
|
|
4564
|
+
DataContextAutoStarter.prototype.subscribe = function () {
|
|
4565
|
+
var _this = this;
|
|
4566
|
+
if (this._autoStartConditionFulfilled$) {
|
|
4567
|
+
this._subscription = this._autoStartConditionFulfilled$.pipe(operators.filter(function (fulfilled) { return !!fulfilled; })).subscribe(function () { return _this.startDataContext(); });
|
|
4568
|
+
}
|
|
4569
|
+
};
|
|
4570
|
+
/***************************************************************************
|
|
4571
|
+
* *
|
|
4572
|
+
* Private methods *
|
|
4573
|
+
* *
|
|
4574
|
+
**************************************************************************/
|
|
4575
|
+
DataContextAutoStarter.prototype.buildRequiredFilterConditionObservable = function () {
|
|
4576
|
+
return new RequiredFilterEvaluator(this._dataContext.filter, this._autoStartSpec.requiredFilters).context$.pipe(operators.map(function (event) { return event.isValid; }));
|
|
4577
|
+
};
|
|
4578
|
+
DataContextAutoStarter.prototype.startDataContext = function () {
|
|
4579
|
+
this.logger.debug('Auto starting data context...');
|
|
4580
|
+
this._dataContext.start(this._autoStartSpec.initialSort);
|
|
4581
|
+
};
|
|
4582
|
+
return DataContextAutoStarter;
|
|
4583
|
+
}(DataContextLifeCycleBinding));
|
|
4584
|
+
|
|
4585
|
+
var DataContextSourceAutoReloader = /** @class */ (function (_super) {
|
|
4586
|
+
__extends(DataContextSourceAutoReloader, _super);
|
|
4587
|
+
function DataContextSourceAutoReloader(dataContext, dataApi) {
|
|
4588
|
+
var _this = _super.call(this, dataContext) || this;
|
|
4589
|
+
_this.dataApi = dataApi;
|
|
4590
|
+
_this.subscribe();
|
|
4591
|
+
return _this;
|
|
4592
|
+
}
|
|
4593
|
+
DataContextSourceAutoReloader.prototype.subscribe = function () {
|
|
4594
|
+
var _this = this;
|
|
4595
|
+
this._subscription = this.dataApi.dataChanged.subscribe(function () { return _this._dataContext.reload(); });
|
|
4596
|
+
};
|
|
4597
|
+
return DataContextSourceAutoReloader;
|
|
4598
|
+
}(DataContextLifeCycleBinding));
|
|
4599
|
+
|
|
4401
4600
|
var EntityIdUtil = /** @class */ (function () {
|
|
4402
4601
|
function EntityIdUtil() {
|
|
4403
4602
|
}
|
|
@@ -4869,6 +5068,22 @@
|
|
|
4869
5068
|
this._reloadOnLocalChanges = true;
|
|
4870
5069
|
return this;
|
|
4871
5070
|
};
|
|
5071
|
+
DataContextBuilder.prototype.autoStartAsap = function (sort) {
|
|
5072
|
+
return this.autoStartOn(AutoStartSpec.asap(sort));
|
|
5073
|
+
};
|
|
5074
|
+
DataContextBuilder.prototype.autoStartOnFilters = function (filters, sort) {
|
|
5075
|
+
return this.autoStartOn(AutoStartSpec.requireFilters(filters, sort));
|
|
5076
|
+
};
|
|
5077
|
+
DataContextBuilder.prototype.autoStartOnFiltersAll = function (filters, sort) {
|
|
5078
|
+
return this.autoStartOn(AutoStartSpec.requireFiltersAll(filters, sort));
|
|
5079
|
+
};
|
|
5080
|
+
DataContextBuilder.prototype.autoStartOnFiltersAny = function (filters, sort) {
|
|
5081
|
+
return this.autoStartOn(AutoStartSpec.requireFiltersAny(filters, sort));
|
|
5082
|
+
};
|
|
5083
|
+
DataContextBuilder.prototype.autoStartOn = function (spec) {
|
|
5084
|
+
this._autoStartSpec = spec;
|
|
5085
|
+
return this;
|
|
5086
|
+
};
|
|
4872
5087
|
/***************************************************************************
|
|
4873
5088
|
* *
|
|
4874
5089
|
* DataSource Builder *
|
|
@@ -4966,7 +5181,10 @@
|
|
|
4966
5181
|
else {
|
|
4967
5182
|
throw new Error('Unsupported IDataSource type: ' + typeof (ds));
|
|
4968
5183
|
}
|
|
4969
|
-
|
|
5184
|
+
if (this._autoStartSpec) {
|
|
5185
|
+
this.setupDataContextAutoStart(dataContext, this._autoStartSpec);
|
|
5186
|
+
}
|
|
5187
|
+
return this.setupDataContextAutoReload(dataContext, ds);
|
|
4970
5188
|
};
|
|
4971
5189
|
DataContextBuilder.prototype.fromListSource = function (listSource) {
|
|
4972
5190
|
return new DataContextSimple(listSource, this._indexFn, this._localApply, this._localSort);
|
|
@@ -4980,9 +5198,16 @@
|
|
|
4980
5198
|
DataContextBuilder.prototype.fromActivePageSource = function (pageSource) {
|
|
4981
5199
|
return new DataContextActivePage(pageSource, this._pageSize, this._indexFn, this._localApply, this._skipLocalSort ? null : this._localSort);
|
|
4982
5200
|
};
|
|
4983
|
-
DataContextBuilder.prototype.
|
|
5201
|
+
DataContextBuilder.prototype.setupDataContextAutoReload = function (dc, dataSource) {
|
|
4984
5202
|
if (this._reloadOnLocalChanges) {
|
|
4985
|
-
var binding = new
|
|
5203
|
+
var binding = new DataContextSourceAutoReloader(dc, dataSource);
|
|
5204
|
+
}
|
|
5205
|
+
return dc;
|
|
5206
|
+
};
|
|
5207
|
+
DataContextBuilder.prototype.setupDataContextAutoStart = function (dc, autoStartSpec) {
|
|
5208
|
+
if (this._autoStartSpec) {
|
|
5209
|
+
this.logger.debug('Setting up data context auto start with spec:', this._autoStartSpec);
|
|
5210
|
+
var binding = new DataContextAutoStarter(dc, autoStartSpec);
|
|
4986
5211
|
}
|
|
4987
5212
|
return dc;
|
|
4988
5213
|
};
|
|
@@ -9273,7 +9498,6 @@
|
|
|
9273
9498
|
* *
|
|
9274
9499
|
**************************************************************************/
|
|
9275
9500
|
function ElderBlobViewerComponent(httpPristine, domSanitizer, toastService) {
|
|
9276
|
-
var _this = this;
|
|
9277
9501
|
this.httpPristine = httpPristine;
|
|
9278
9502
|
this.domSanitizer = domSanitizer;
|
|
9279
9503
|
this.toastService = toastService;
|
|
@@ -9288,6 +9512,14 @@
|
|
|
9288
9512
|
this._mimeType$ = new rxjs.BehaviorSubject(null);
|
|
9289
9513
|
this.destroy$ = new rxjs.Subject();
|
|
9290
9514
|
this._displayUnknownAsText = false;
|
|
9515
|
+
}
|
|
9516
|
+
/***************************************************************************
|
|
9517
|
+
* *
|
|
9518
|
+
* Life Cycle *
|
|
9519
|
+
* *
|
|
9520
|
+
**************************************************************************/
|
|
9521
|
+
ElderBlobViewerComponent.prototype.ngOnInit = function () {
|
|
9522
|
+
var _this = this;
|
|
9291
9523
|
rxjs.combineLatest([this._url$, this._mimeType$]).pipe(operators.takeUntil(this.destroy$), operators.filter(function (_a) {
|
|
9292
9524
|
var _b = __read(_a, 2), url = _b[0], mimeType = _b[1];
|
|
9293
9525
|
return !!url;
|
|
@@ -9295,13 +9527,7 @@
|
|
|
9295
9527
|
var _b = __read(_a, 2), url = _b[0], mimeType = _b[1];
|
|
9296
9528
|
return BlobUrl.from(url, mimeType);
|
|
9297
9529
|
})).subscribe(function (blobUrl) { return _this.blobUrl = blobUrl; });
|
|
9298
|
-
}
|
|
9299
|
-
/***************************************************************************
|
|
9300
|
-
* *
|
|
9301
|
-
* Life Cycle *
|
|
9302
|
-
* *
|
|
9303
|
-
**************************************************************************/
|
|
9304
|
-
ElderBlobViewerComponent.prototype.ngOnInit = function () { };
|
|
9530
|
+
};
|
|
9305
9531
|
ElderBlobViewerComponent.prototype.ngOnDestroy = function () {
|
|
9306
9532
|
this.destroy$.next();
|
|
9307
9533
|
this.destroy$.complete();
|
|
@@ -11094,6 +11320,54 @@
|
|
|
11094
11320
|
{ type: DataContextSelectionDirective }
|
|
11095
11321
|
]; };
|
|
11096
11322
|
|
|
11323
|
+
var DataContextStateIndicatorComponent = /** @class */ (function () {
|
|
11324
|
+
/***************************************************************************
|
|
11325
|
+
* *
|
|
11326
|
+
* Constructor *
|
|
11327
|
+
* *
|
|
11328
|
+
**************************************************************************/
|
|
11329
|
+
function DataContextStateIndicatorComponent() {
|
|
11330
|
+
/***************************************************************************
|
|
11331
|
+
* *
|
|
11332
|
+
* Fields *
|
|
11333
|
+
* *
|
|
11334
|
+
**************************************************************************/
|
|
11335
|
+
this.dataContext$ = new rxjs.BehaviorSubject(null);
|
|
11336
|
+
}
|
|
11337
|
+
/***************************************************************************
|
|
11338
|
+
* *
|
|
11339
|
+
* Life Cycle *
|
|
11340
|
+
* *
|
|
11341
|
+
**************************************************************************/
|
|
11342
|
+
DataContextStateIndicatorComponent.prototype.ngOnInit = function () {
|
|
11343
|
+
};
|
|
11344
|
+
Object.defineProperty(DataContextStateIndicatorComponent.prototype, "dataContext", {
|
|
11345
|
+
/***************************************************************************
|
|
11346
|
+
* *
|
|
11347
|
+
* Properties *
|
|
11348
|
+
* *
|
|
11349
|
+
**************************************************************************/
|
|
11350
|
+
set: function (dataContext) {
|
|
11351
|
+
this.dataContext$.next(dataContext);
|
|
11352
|
+
},
|
|
11353
|
+
enumerable: false,
|
|
11354
|
+
configurable: true
|
|
11355
|
+
});
|
|
11356
|
+
return DataContextStateIndicatorComponent;
|
|
11357
|
+
}());
|
|
11358
|
+
DataContextStateIndicatorComponent.decorators = [
|
|
11359
|
+
{ type: i0.Component, args: [{
|
|
11360
|
+
selector: 'elder-data-context-state-indicator',
|
|
11361
|
+
template: "<ng-container *ngIf=\"dataContext$ | async as dataContext\">\n\n <ng-container *ngIf=\"dataContext else noDataContext\">\n\n <ng-container *ngIf=\"(dataContext.isStarted$ | async) else dataContextNotStarted\">\n\n <ng-container *ngIf=\"!(dataContext?.status | async)?.hasError else dataContextHasError\">\n\n <ng-container *ngIf=\"(dataContext?.data | async)?.length === 0\">\n <ng-template [ngTemplateOutlet]=\"dataContextNoData\"></ng-template>\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n </ng-container>\n\n</ng-container>\n\n<ng-template #noDataContext>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'No data context'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNotStarted>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', text: 'Data context not started'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextHasError>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'warning', iconColor: 'warn', text: 'Error while loading data'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #dataContextNoData>\n <ng-container *ngTemplateOutlet=\"indicator; context:{icon: 'info', text: 'No data available'}\">\n </ng-container>\n</ng-template>\n\n<ng-template #indicator let-icon=\"icon\" let-iconColor=\"iconColor\" let-text=\"text\">\n\n <div fxFill\n fxLayout=\"column\"\n fxLayoutAlign=\"center center\"\n class=\"elder-table-hint mat-body-1\">\n\n <div fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"16px\">\n <mat-icon [color]=\"iconColor\">{{icon}}</mat-icon>\n <span class=\"hint mat-body-1\">{{text | translate}}</span>\n </div>\n\n </div>\n\n</ng-template>\n",
|
|
11362
|
+
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
11363
|
+
styles: [""]
|
|
11364
|
+
},] }
|
|
11365
|
+
];
|
|
11366
|
+
DataContextStateIndicatorComponent.ctorParameters = function () { return []; };
|
|
11367
|
+
DataContextStateIndicatorComponent.propDecorators = {
|
|
11368
|
+
dataContext: [{ type: i0.Input }]
|
|
11369
|
+
};
|
|
11370
|
+
|
|
11097
11371
|
var ElderDataCommonModule = /** @class */ (function () {
|
|
11098
11372
|
function ElderDataCommonModule() {
|
|
11099
11373
|
}
|
|
@@ -11117,14 +11391,16 @@
|
|
|
11117
11391
|
ElderToolbarContentDirective,
|
|
11118
11392
|
ElderSingleSortComponent,
|
|
11119
11393
|
ElderSelectionMasterCheckboxComponent,
|
|
11120
|
-
DataContextSelectionDirective
|
|
11394
|
+
DataContextSelectionDirective,
|
|
11395
|
+
DataContextStateIndicatorComponent
|
|
11121
11396
|
],
|
|
11122
11397
|
exports: [
|
|
11123
11398
|
ElderDataToolbarComponent,
|
|
11124
11399
|
ElderToolbarContentDirective,
|
|
11125
11400
|
ElderSingleSortComponent,
|
|
11126
11401
|
ElderSelectionMasterCheckboxComponent,
|
|
11127
|
-
DataContextSelectionDirective
|
|
11402
|
+
DataContextSelectionDirective,
|
|
11403
|
+
DataContextStateIndicatorComponent
|
|
11128
11404
|
],
|
|
11129
11405
|
},] }
|
|
11130
11406
|
];
|
|
@@ -11657,6 +11933,7 @@
|
|
|
11657
11933
|
* Underlying data context.
|
|
11658
11934
|
*/
|
|
11659
11935
|
this.dataContext$ = new rxjs.BehaviorSubject(null);
|
|
11936
|
+
this.interactionMode = 'open';
|
|
11660
11937
|
/**
|
|
11661
11938
|
* If true, this table is in dense mode.
|
|
11662
11939
|
* Heights are generally reduced.
|
|
@@ -11672,6 +11949,7 @@
|
|
|
11672
11949
|
* No borders / floating visible so that the table can be embedded into another container
|
|
11673
11950
|
*/
|
|
11674
11951
|
this._embedded = false;
|
|
11952
|
+
this._itemClickSubject = new rxjs.Subject();
|
|
11675
11953
|
if (!selectionModel) {
|
|
11676
11954
|
this.selectionModel = new SelectionModel(false, [], function (entity) { return entity ? _this.getId(entity) : 0; });
|
|
11677
11955
|
}
|
|
@@ -11778,6 +12056,18 @@
|
|
|
11778
12056
|
enumerable: false,
|
|
11779
12057
|
configurable: true
|
|
11780
12058
|
});
|
|
12059
|
+
Object.defineProperty(ElderDataViewBaseComponent.prototype, "itemClick", {
|
|
12060
|
+
/***************************************************************************
|
|
12061
|
+
* *
|
|
12062
|
+
* On click properties *
|
|
12063
|
+
* *
|
|
12064
|
+
**************************************************************************/
|
|
12065
|
+
get: function () {
|
|
12066
|
+
return this._itemClickSubject;
|
|
12067
|
+
},
|
|
12068
|
+
enumerable: false,
|
|
12069
|
+
configurable: true
|
|
12070
|
+
});
|
|
11781
12071
|
Object.defineProperty(ElderDataViewBaseComponent.prototype, "dense", {
|
|
11782
12072
|
get: function () {
|
|
11783
12073
|
return this._dense;
|
|
@@ -11824,7 +12114,38 @@
|
|
|
11824
12114
|
* @param data
|
|
11825
12115
|
* @protected
|
|
11826
12116
|
*/
|
|
11827
|
-
ElderDataViewBaseComponent.prototype.onDataContextSet = function (data) {
|
|
12117
|
+
ElderDataViewBaseComponent.prototype.onDataContextSet = function (data) {
|
|
12118
|
+
};
|
|
12119
|
+
ElderDataViewBaseComponent.prototype.onItemClick = function (entity) {
|
|
12120
|
+
if (entity) {
|
|
12121
|
+
switch (this.interactionMode) {
|
|
12122
|
+
case 'open':
|
|
12123
|
+
if (this.selectionModel.hasValue) {
|
|
12124
|
+
this.selectionModel.toggle(entity);
|
|
12125
|
+
}
|
|
12126
|
+
else {
|
|
12127
|
+
this._itemClickSubject.next(entity);
|
|
12128
|
+
}
|
|
12129
|
+
break;
|
|
12130
|
+
case 'selection':
|
|
12131
|
+
this.selectionModel.toggle(entity);
|
|
12132
|
+
break;
|
|
12133
|
+
}
|
|
12134
|
+
}
|
|
12135
|
+
};
|
|
12136
|
+
ElderDataViewBaseComponent.prototype.onItemDoubleClick = function (entity) {
|
|
12137
|
+
if (entity) {
|
|
12138
|
+
switch (this.interactionMode) {
|
|
12139
|
+
// double click in open mode not supported
|
|
12140
|
+
case 'open':
|
|
12141
|
+
break;
|
|
12142
|
+
// double click in selection mode triggers normal item click
|
|
12143
|
+
case 'selection':
|
|
12144
|
+
this._itemClickSubject.next(entity);
|
|
12145
|
+
break;
|
|
12146
|
+
}
|
|
12147
|
+
}
|
|
12148
|
+
};
|
|
11828
12149
|
/***************************************************************************
|
|
11829
12150
|
* *
|
|
11830
12151
|
* Private Methods *
|
|
@@ -11844,11 +12165,13 @@
|
|
|
11844
12165
|
{ type: ElderDataViewSelectionMode }
|
|
11845
12166
|
]; };
|
|
11846
12167
|
ElderDataViewBaseComponent.propDecorators = {
|
|
12168
|
+
interactionMode: [{ type: i0.Input }],
|
|
11847
12169
|
selectableEvaluatorFn: [{ type: i0.Input }],
|
|
11848
12170
|
selection: [{ type: i0.Input }],
|
|
11849
12171
|
selectionChange: [{ type: i0.Output }],
|
|
11850
12172
|
selectionSingleChange: [{ type: i0.Output }],
|
|
11851
12173
|
selectionMultiEnabled: [{ type: i0.Input }],
|
|
12174
|
+
itemClick: [{ type: i0.Output }],
|
|
11852
12175
|
dense: [{ type: i0.Input }],
|
|
11853
12176
|
float: [{ type: i0.Input }],
|
|
11854
12177
|
embedded: [{ type: i0.Input }]
|
|
@@ -12316,7 +12639,6 @@
|
|
|
12316
12639
|
**************************************************************************/
|
|
12317
12640
|
_this.logger = tsLogger.LoggerFactory.getLogger(_this.constructor.name);
|
|
12318
12641
|
_this.destroy$ = new rxjs.Subject();
|
|
12319
|
-
_this._itemClickSubject = new rxjs.Subject();
|
|
12320
12642
|
/**
|
|
12321
12643
|
* Load next chunk after current is done
|
|
12322
12644
|
*/
|
|
@@ -12347,7 +12669,6 @@
|
|
|
12347
12669
|
_this.cleanUp = true;
|
|
12348
12670
|
_this.keepSelection = true;
|
|
12349
12671
|
_this.showFooter = false;
|
|
12350
|
-
_this.interactionMode = 'open';
|
|
12351
12672
|
_this.toolbarRowTemplates$ = new rxjs.BehaviorSubject([]);
|
|
12352
12673
|
/**
|
|
12353
12674
|
* Gets the current rows of this table.
|
|
@@ -12434,7 +12755,7 @@
|
|
|
12434
12755
|
if (data instanceof Array) {
|
|
12435
12756
|
dc = DataContextBuilder.start()
|
|
12436
12757
|
.localSort()
|
|
12437
|
-
.buildLocal(data); // Potential Memory leak (See autoCleanUp)
|
|
12758
|
+
.buildLocal(data, this.idField); // Potential Memory leak (See autoCleanUp)
|
|
12438
12759
|
dc.start();
|
|
12439
12760
|
}
|
|
12440
12761
|
else if (isDataSource(data)) {
|
|
@@ -12493,13 +12814,6 @@
|
|
|
12493
12814
|
enumerable: false,
|
|
12494
12815
|
configurable: true
|
|
12495
12816
|
});
|
|
12496
|
-
Object.defineProperty(ElderTableComponent.prototype, "itemClick", {
|
|
12497
|
-
get: function () {
|
|
12498
|
-
return this._itemClickSubject;
|
|
12499
|
-
},
|
|
12500
|
-
enumerable: false,
|
|
12501
|
-
configurable: true
|
|
12502
|
-
});
|
|
12503
12817
|
/*
|
|
12504
12818
|
@Output()
|
|
12505
12819
|
public get activeItem(): Observable<any> {
|
|
@@ -12540,42 +12854,6 @@
|
|
|
12540
12854
|
enumerable: false,
|
|
12541
12855
|
configurable: true
|
|
12542
12856
|
});
|
|
12543
|
-
/**
|
|
12544
|
-
* Occurs when the user clicks on a row
|
|
12545
|
-
*/
|
|
12546
|
-
ElderTableComponent.prototype.onItemClick = function (entity) {
|
|
12547
|
-
switch (this.interactionMode) {
|
|
12548
|
-
case 'open':
|
|
12549
|
-
if (this.selectionModel.hasValue) {
|
|
12550
|
-
this.selectionModel.toggle(entity);
|
|
12551
|
-
}
|
|
12552
|
-
else {
|
|
12553
|
-
this._itemClickSubject.next(entity);
|
|
12554
|
-
}
|
|
12555
|
-
break;
|
|
12556
|
-
case 'selection':
|
|
12557
|
-
this.selectionModel.toggle(entity);
|
|
12558
|
-
break;
|
|
12559
|
-
// TODO improve onItemDoubleClick behavior with Observable
|
|
12560
|
-
/*
|
|
12561
|
-
clickStream
|
|
12562
|
-
.bufferTime(250)
|
|
12563
|
-
.map(arr => arr.length)
|
|
12564
|
-
.filter(len => len === 2);
|
|
12565
|
-
*/
|
|
12566
|
-
}
|
|
12567
|
-
};
|
|
12568
|
-
ElderTableComponent.prototype.onItemDoubleClick = function (entity) {
|
|
12569
|
-
switch (this.interactionMode) {
|
|
12570
|
-
// double click in open mode not supported
|
|
12571
|
-
case 'open':
|
|
12572
|
-
break;
|
|
12573
|
-
// double click in selection mode triggers normal item click
|
|
12574
|
-
case 'selection':
|
|
12575
|
-
this._itemClickSubject.next(entity);
|
|
12576
|
-
break;
|
|
12577
|
-
}
|
|
12578
|
-
};
|
|
12579
12857
|
/***************************************************************************
|
|
12580
12858
|
* *
|
|
12581
12859
|
* Private Methods *
|
|
@@ -12618,7 +12896,7 @@
|
|
|
12618
12896
|
ElderTableComponent.decorators = [
|
|
12619
12897
|
{ type: i0.Component, args: [{
|
|
12620
12898
|
selector: 'elder-table, ebs-table',
|
|
12621
|
-
template: "\n<div fxLayout=\"column\" fxFlex\n class=\"elder-table\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n>\n\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div fxLayout=\"column\" class=\"scrollable elder-table-scroll\"\n infiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"dataContext$ | async\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode == 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"
|
|
12899
|
+
template: "\n<div fxLayout=\"column\" fxFlex\n class=\"elder-table\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n>\n\n <!-- Toolbar Rows -->\n <ng-container *ngFor=\"let toolbarRowTemplate of toolbarRowTemplates$ | async\">\n <ng-template *ngTemplateOutlet=\"toolbarRowTemplate; context: {$implicit: this}\">\n </ng-template>\n </ng-container>\n\n <!-- Scrollable Table -->\n <div fxLayout=\"column\" class=\"scrollable elder-table-scroll\"\n infiniteScroll\n [eventThrottle]=\"150\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"!isContinuable || !(canLoadMore$ | async)\"\n (closeToEnd)=\"requestMoreDataZoned($event)\"\n >\n <table\n mat-table\n class=\"elder-mat-inner-table\"\n [trackBy]=\"trackByFn\"\n [dataSource]=\"dataContext$ | async\"\n [elderDataContextSelection]=\"dataContext$ | async\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- selection Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef>\n <elder-selection-master-checkbox></elder-selection-master-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selectionModel.toggle(entity) : null\"\n [checked]=\"selectionModel.observeSelection(entity) | async\"\n [disabled]=\"!selectionModel.isSelectable(entity)\"\n class=\"elder-table-checkbox\"\n [class.elder-table-checkbox-visible]=\"(dataSelection.selectionState$ | async).anySelected\"\n >\n </mat-checkbox>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container *ngIf=\"(tableModel.displayedColumnsInner$ | async) as displayedColumnsInner\">\n <tr mat-header-row *matHeaderRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n <tr mat-row class=\"elder-table-row\"\n *matRowDef=\"let entity; columns: displayedColumnsInner;\"\n [elderTableRow]=\"entity\"\n [class.dense]=\"dense\"\n [class.elder-row-hidden]=\"hiddenField && entity[hiddenField]\"\n [class.elder-row-removing]=\"removingField && entity[removingField]\"\n [class.elder-table-row-selected]=\"interactionMode == 'selection' && selectionModel.observeSelection(entity) | async\"\n (click)=\"onItemClick(entity)\"\n (dblclick)=\"onItemDoubleClick(entity)\"\n >\n </tr>\n <ng-container *ngIf=\"showFooter\">\n <tr mat-footer-row *matFooterRowDef=\"displayedColumnsInner; sticky: true\"></tr>\n </ng-container>\n </ng-container>\n </table>\n </div>\n\n <elder-data-context-state-indicator fxFlex [dataContext]=\"dataContext\">\n </elder-data-context-state-indicator>\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(dataContext?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"((dataContext?.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Optional Paginator Toolbar -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Optional Continuation Footer -->\n <div *ngIf=\"isContinuable\" class=\"elder-table-footer\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\" >\n\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataContext?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\" color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataContinuable.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </div>\n\n</div>\n",
|
|
12622
12900
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
12623
12901
|
providers: [
|
|
12624
12902
|
ElderTableProviders.ExistingOrNewTableModel,
|
|
@@ -12652,14 +12930,12 @@
|
|
|
12652
12930
|
cleanUp: [{ type: i0.Input }],
|
|
12653
12931
|
keepSelection: [{ type: i0.Input }],
|
|
12654
12932
|
showFooter: [{ type: i0.Input }],
|
|
12655
|
-
interactionMode: [{ type: i0.Input }],
|
|
12656
12933
|
toolbarRowTemplateQuery: [{ type: i0.ContentChildren, args: [ElderTableToolbarDirective, { read: i0.TemplateRef },] }],
|
|
12657
12934
|
rowsQuery: [{ type: i0.ViewChildren, args: [ElderTableRowDirective,] }],
|
|
12658
12935
|
toolbarTemplate: [{ type: i0.Input }],
|
|
12659
12936
|
data: [{ type: i0.Input }],
|
|
12660
12937
|
displayedColumns: [{ type: i0.Input }],
|
|
12661
|
-
selectionVisible: [{ type: i0.Input }]
|
|
12662
|
-
itemClick: [{ type: i0.Output }]
|
|
12938
|
+
selectionVisible: [{ type: i0.Input }]
|
|
12663
12939
|
};
|
|
12664
12940
|
|
|
12665
12941
|
var ElderInfiniteScrollDirective = /** @class */ (function () {
|
|
@@ -14634,19 +14910,10 @@
|
|
|
14634
14910
|
*/
|
|
14635
14911
|
_this.idField = 'id';
|
|
14636
14912
|
_this.selectionVisible = true;
|
|
14637
|
-
_this.interactionMode = 'open';
|
|
14638
14913
|
_this.pageSizeOptions = [30, 50, 100, 150, 200];
|
|
14639
14914
|
_this.destroy$ = new rxjs.Subject();
|
|
14640
|
-
_this._itemClickSubject = new rxjs.Subject();
|
|
14641
14915
|
return _this;
|
|
14642
14916
|
}
|
|
14643
|
-
Object.defineProperty(ElderGridComponent.prototype, "itemClick", {
|
|
14644
|
-
get: function () {
|
|
14645
|
-
return this._itemClickSubject;
|
|
14646
|
-
},
|
|
14647
|
-
enumerable: false,
|
|
14648
|
-
configurable: true
|
|
14649
|
-
});
|
|
14650
14917
|
/***************************************************************************
|
|
14651
14918
|
* *
|
|
14652
14919
|
* Lifecycle *
|
|
@@ -14749,18 +15016,6 @@
|
|
|
14749
15016
|
* Public API *
|
|
14750
15017
|
* *
|
|
14751
15018
|
**************************************************************************/
|
|
14752
|
-
ElderGridComponent.prototype.onItemClick = function (entity) {
|
|
14753
|
-
switch (this.interactionMode) {
|
|
14754
|
-
case 'open':
|
|
14755
|
-
if (this.selectionModel.hasValue) {
|
|
14756
|
-
this.selectionModel.toggle(entity);
|
|
14757
|
-
}
|
|
14758
|
-
else {
|
|
14759
|
-
this._itemClickSubject.next(entity);
|
|
14760
|
-
}
|
|
14761
|
-
break;
|
|
14762
|
-
}
|
|
14763
|
-
};
|
|
14764
15019
|
ElderGridComponent.prototype.inSelectionMode = function (currentSelection) {
|
|
14765
15020
|
if (this.interactionMode === 'selection') {
|
|
14766
15021
|
return true;
|
|
@@ -14844,7 +15099,7 @@
|
|
|
14844
15099
|
ElderGridComponent.decorators = [
|
|
14845
15100
|
{ type: i0.Component, args: [{
|
|
14846
15101
|
selector: 'elder-grid',
|
|
14847
|
-
template: "<div fxLayout=\"column\" class=\"scroll-fix\" fxFill>\n\n <!-- Grid Browser -->\n <div fxLayout=\"column\" fxFlex\n class=\"scroll-fix elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFlex=\"none\" class=\"elder-grid-toolbar\">\n\n <div fxLayout=\"column\" fxFlex=\"none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox fxFlex=\"none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n fxFlex=\"none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <span class=\"elder-table-hint mat-body-1\" fxFlex fxLayoutAlign=\"center center\"\n *ngIf=\"!dataContext?.isStarted\">\n {{'Datacontext not started' | translate}}\n </span>\n\n <div *ngIf=\"(dataContext?.data | async)?.isStarted\" fxFlex fxLayoutAlign=\"center center\">\n\n <span class=\"elder-table-hint mat-body-1\"\n *ngIf=\"(dataContext?.data | async)?.length === 0 && !(dataContext?.status | async)?.hasError\">\n {{'No data available' | translate}}\n </span>\n\n <div *ngIf=\"(dataContext?.status | async)?.hasError\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"20px\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"hint mat-body-1\">{{'Error while loading data' | translate}}</span>\n </div>\n\n </div>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"elder-grid-browser\" fxLayout=\"column\" fxFlex\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <div *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\"
|
|
15102
|
+
template: "<div fxLayout=\"column\" class=\"scroll-fix\" fxFill>\n\n <!-- Grid Browser -->\n <div fxLayout=\"column\" fxFlex\n class=\"scroll-fix elder-grid-container\"\n *ngIf=\"dataContext$ | async as data\"\n [class.elder-mat-table-container]=\"!embedded\"\n [class.mat-elevation-z5]=\"float\"\n [class.elder-mat-table-flat]=\"!embedded && !float\"\n\n [elderDataContextSelection]=\"data\" #dataSelection=\"elderDataContextSelection\"\n [elderDataContextSelectionModel]=\"selectionModel\"\n >\n\n <!-- Toolbar Row -->\n <div *ngIf=\"toolbarVisible\"\n fxLayout=\"row\" fxLayoutAlign=\"start center\" fxFlex=\"none\" class=\"elder-grid-toolbar\">\n\n <div fxLayout=\"column\" fxFlex=\"none\" style=\"padding-left: 8px; padding-right: 8px\" *ngIf=\"selectionVisible\">\n <elder-selection-master-checkbox fxFlex=\"none\" style=\"padding-left: 12px\"></elder-selection-master-checkbox>\n </div>\n\n <!-- Toolbar -->\n <ng-container *ngIf=\"toolbarTemplate\">\n <ng-template *ngTemplateOutlet=\"toolbarTemplate; context: {$implicit: this}\"></ng-template>\n </ng-container>\n\n <elder-single-sort *ngIf=\"availableSorts && availableSorts.length > 0 && data.sort.sorts | async as sorts\"\n fxFlex=\"none\"\n [availableSorts]=\"availableSorts\"\n [translationPrefix]=\"sortTranslationPrefix\"\n [sort]=\"sorts[0]\"\n (sortChange)=\"updateSort($event)\">\n </elder-single-sort>\n\n </div>\n\n <mat-divider *ngIf=\"toolbarVisible\"></mat-divider>\n\n <span class=\"elder-table-hint mat-body-1\" fxFlex fxLayoutAlign=\"center center\"\n *ngIf=\"!dataContext?.isStarted\">\n {{'Datacontext not started' | translate}}\n </span>\n\n <div *ngIf=\"(dataContext?.data | async)?.isStarted\" fxFlex fxLayoutAlign=\"center center\">\n\n <span class=\"elder-table-hint mat-body-1\"\n *ngIf=\"(dataContext?.data | async)?.length === 0 && !(dataContext?.status | async)?.hasError\">\n {{'No data available' | translate}}\n </span>\n\n <div *ngIf=\"(dataContext?.status | async)?.hasError\"\n fxLayout=\"row\" fxLayoutAlign=\"center center\" fxLayoutGap=\"20px\">\n <mat-icon color=\"warn\">warning</mat-icon>\n <span class=\"hint mat-body-1\">{{'Error while loading data' | translate}}</span>\n </div>\n\n </div>\n\n <!-- [cdkDropListSortingDisabled]=\"true\" -->\n <!-- cdkDropList -->\n <cdk-virtual-scroll-viewport\n class=\"elder-grid-browser\" fxLayout=\"column\" fxFlex\n id=\"documents-container\"\n [itemSize]=\"itemHeight\"\n [minBufferPx]=\"itemHeight * 2\"\n [maxBufferPx]=\"itemHeight * 3\"\n #virtualScrollViewPort\n infiniteScroll\n [eventThrottle]=\"200\"\n [offsetFactor]=\"2\"\n [ignoreScrollEvent]=\"data.loading | async\"\n [containerId]=\"'documents-container'\" [listenToHost]=\"false\"\n (closeToEnd)=\"requestMoreDataZoned($event)\">\n\n <!-- (scrolling)=\"onScrolling($event)\" -->\n\n <div\n *cdkVirtualFor=\"let row of dataRows$; trackBy: trackByIndex; templateCacheSize: 50\"\n class=\"elder-grid-tile-row\"\n [style.height]=\"itemHeight + 'px'\">\n\n <ng-container *ngFor=\"let tile of row; trackBy: trackByFn\">\n\n <!-- Tile Cell -->\n <div *ngIf=\"showTile(tile)\" class=\"elder-grid-tile\">\n <!-- cdkDrag [cdkDragDisabled]=\"true\" [cdkDragData]=\"tile\" -->\n <!-- <div class=\"tile-placeholder\" *cdkDragPlaceholder></div> -->\n <div class=\"elder-grid-tile-content\"\n (click)=\"onItemClick(tile)\"\n (dblclick)=\"onItemDoubleClick(tile)\">\n <ng-container\n *ngTemplateOutlet=\"tileTemplate || simpleTileTemplate; context: {$implicit: tile}\">\n </ng-container>\n\n <!-- Overlay (Selection) -->\n <ng-container *ngIf=\"selectionVisible\">\n <div *ngIf=\"selectionModel.selection | async as selection\"\n class=\"elder-grid-tile-overlay\"\n [class.elder-grid-tile-overlay-hidden]=\"!inSelectionMode(selection)\"\n [class.elder-grid-tile-overlay-visible]=\"inSelectionMode(selection)\"\n [class.elder-click-through]=\"true\"\n >\n <button mat-icon-button type=\"button\"\n (click)=\"selectionModel.toggle(tile)\" elderStopEventPropagation\n class=\"elder-grid-tile-check\">\n <mat-icon\n [class.elder-selected]=\"(selectionModel.observeSelection(tile) | async)\"\n >\n {{(selectionModel.observeSelection(tile) | async) ? 'check_circle' : 'radio_button_unchecked'}}\n </mat-icon>\n </button>\n </div>\n </ng-container>\n\n </div>\n </div>\n\n <div *ngIf=\"!showTile(tile)\" class=\"elder-grid-tile-hidden\"></div>\n </ng-container>\n\n </div>\n\n </cdk-virtual-scroll-viewport>\n\n\n <mat-progress-bar fxFlex=\"none\"\n [mode]=\"(data?.loading | async) ? 'indeterminate' : 'determinate'\"\n [color]=\"(data && (data.status | async)?.hasError) ? 'warn' : 'primary'\">\n </mat-progress-bar>\n\n <!-- Footer -->\n <div class=\"elder-grid-footer\" *ngIf=\"footerVisible\"\n fxLayout=\"row\" fxFlex=\"none\" fxLayoutAlign=\"end center\" fxLayoutGap=\"10px\"\n style=\"padding-right: 10px\">\n\n <!-- Continuable -->\n <ng-container *ngIf=\"isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}} / {{total$ | async}}\n </span>\n\n <button mat-icon-button type=\"button\"\n color=\"primary\"\n [disabled]=\"!(canLoadMore$ | async)\"\n (click)=\"dataSnapshot.loadMore()\">\n <mat-icon>keyboard_arrow_down</mat-icon>\n </button>\n </ng-container>\n\n <!-- Paged -->\n <mat-paginator #matPaginator *ngIf=\"isActivePaged && (dataActivePaged.page | async) as page\"\n fxFlex=\"none\"\n [length]=\"dataContext?.total | async\"\n [pageIndex]=\"page?.index\"\n [pageSize]=\"page?.size\"\n [pageSizeOptions]=\"pageSizeOptions\">\n </mat-paginator>\n\n <!-- Local Source -->\n <ng-container *ngIf=\"!isActivePaged && !isContinuable\">\n <span class=\"mat-caption noselect\" style=\"color: gray\">\n {{(dataSnapshot?.data | async)?.length}}\n </span>\n </ng-container>\n\n </div>\n\n\n </div>\n</div>\n\n<ng-template #simpleTileTemplate let-tile>\n <div *ngIf=\"tile\" fxLayout=\"column\" fxFlex fxLayoutAlign=\"center center\" style=\"background-color: lightblue\">\n <p class=\"noselect\">Tile: {{tile}}</p>\n </div>\n</ng-template>\n",
|
|
14848
15103
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
14849
15104
|
providers: [
|
|
14850
15105
|
{
|
|
@@ -14872,11 +15127,9 @@
|
|
|
14872
15127
|
hiddenField: [{ type: i0.Input }],
|
|
14873
15128
|
idField: [{ type: i0.Input }],
|
|
14874
15129
|
selectionVisible: [{ type: i0.Input }],
|
|
14875
|
-
interactionMode: [{ type: i0.Input }],
|
|
14876
15130
|
pageSizeOptions: [{ type: i0.Input }],
|
|
14877
15131
|
matPaginator: [{ type: i0.ViewChild, args: [paginator.MatPaginator,] }],
|
|
14878
15132
|
toolbarTemplateQuery: [{ type: i0.ContentChild, args: [ElderGridToolbarDirective, { read: i0.TemplateRef, static: true },] }],
|
|
14879
|
-
itemClick: [{ type: i0.Output }],
|
|
14880
15133
|
tileTemplate: [{ type: i0.Input }],
|
|
14881
15134
|
toolbarTemplate: [{ type: i0.Input }],
|
|
14882
15135
|
data: [{ type: i0.Input }],
|
|
@@ -24632,7 +24885,7 @@
|
|
|
24632
24885
|
ElderAuditedEntityComponent.decorators = [
|
|
24633
24886
|
{ type: i0.Component, args: [{
|
|
24634
24887
|
selector: 'elder-audited-entity',
|
|
24635
|
-
template: "<section [fxLayout]=\"layout\" fxLayoutGap=\"8px\" *ngIf=\"auditedCtx$ | async as ctx\">\n\n <mat-form-field class=\"elder-std-form-field\" [appearance]=\"appearance\">\n <mat-icon class=\"decent noselect\"
|
|
24888
|
+
template: "<section [fxLayout]=\"layout\" fxLayoutGap=\"8px\" *ngIf=\"auditedCtx$ | async as ctx\">\n\n <mat-form-field class=\"elder-std-form-field\" [appearance]=\"appearance\">\n <mat-label fxLayoutAlign=\"start center\" fxLayoutGap=\"4px\">\n <mat-icon class=\"decent noselect\" inline>add_circle_outline</mat-icon>\n <span>{{'context.createdAt' | translate}} {{ctx.audited?.createdAt | timeAgo}}</span>\n </mat-label>\n <input matInput name=\"created\"\n [value]=\"ctx.audited?.createdAt | date:'dd.MM.yyyy hh:mm'\"\n readonly>\n <mat-hint>{{ctx.audited?.createdBy}}</mat-hint>\n </mat-form-field>\n\n <mat-form-field class=\"elder-std-form-field\" [appearance]=\"appearance\">\n <mat-label fxLayoutAlign=\"start center\" fxLayoutGap=\"4px\">\n <mat-icon class=\"decent noselect\">mode_edit_outline</mat-icon>\n <span>{{'context.modifiedAt' | translate}} {{ctx.audited?.modifiedAt | timeAgo}}</span>\n </mat-label>\n <input matInput name=\"modified\"\n [value]=\"ctx.audited?.modifiedAt | date:'dd.MM.yyyy hh:mm'\"\n readonly>\n <mat-hint>{{ctx.audited?.modifiedBy}}</mat-hint>\n </mat-form-field>\n\n</section>\n",
|
|
24636
24889
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
24637
24890
|
styles: [".decent{opacity:.5}\n"]
|
|
24638
24891
|
},] }
|
|
@@ -25404,6 +25657,7 @@
|
|
|
25404
25657
|
*/
|
|
25405
25658
|
|
|
25406
25659
|
exports.AuditedEntity = AuditedEntity;
|
|
25660
|
+
exports.AutoStartSpec = AutoStartSpec;
|
|
25407
25661
|
exports.BlobUrl = BlobUrl;
|
|
25408
25662
|
exports.BytesFormat = BytesFormat;
|
|
25409
25663
|
exports.BytesPerSecondFormat = BytesPerSecondFormat;
|
|
@@ -25426,18 +25680,20 @@
|
|
|
25426
25680
|
exports.CurrencyUnitRegistry = CurrencyUnitRegistry;
|
|
25427
25681
|
exports.CustomDateAdapter = CustomDateAdapter;
|
|
25428
25682
|
exports.DataContextActivePage = DataContextActivePage;
|
|
25683
|
+
exports.DataContextAutoStarter = DataContextAutoStarter;
|
|
25429
25684
|
exports.DataContextBase = DataContextBase;
|
|
25430
25685
|
exports.DataContextBuilder = DataContextBuilder;
|
|
25431
25686
|
exports.DataContextContinuableBase = DataContextContinuableBase;
|
|
25432
25687
|
exports.DataContextContinuablePaged = DataContextContinuablePaged;
|
|
25433
25688
|
exports.DataContextContinuableToken = DataContextContinuableToken;
|
|
25689
|
+
exports.DataContextLifeCycleBinding = DataContextLifeCycleBinding;
|
|
25434
25690
|
exports.DataContextSelectionDirective = DataContextSelectionDirective;
|
|
25435
25691
|
exports.DataContextSimple = DataContextSimple;
|
|
25436
25692
|
exports.DataContextSnapshot = DataContextSnapshot;
|
|
25693
|
+
exports.DataContextSourceAutoReloader = DataContextSourceAutoReloader;
|
|
25437
25694
|
exports.DataContextStatus = DataContextStatus;
|
|
25438
25695
|
exports.DataSourceAdapter = DataSourceAdapter;
|
|
25439
25696
|
exports.DataSourceProcessor = DataSourceProcessor;
|
|
25440
|
-
exports.DataSourceToDataContextBinding = DataSourceToDataContextBinding;
|
|
25441
25697
|
exports.DataTransferFactory = DataTransferFactory;
|
|
25442
25698
|
exports.DataTransferProgress = DataTransferProgress;
|
|
25443
25699
|
exports.DataTransferProgressAggregate = DataTransferProgressAggregate;
|
|
@@ -25785,12 +26041,13 @@
|
|
|
25785
26041
|
exports.ɵd = createSelectionModel;
|
|
25786
26042
|
exports.ɵe = createDataViewSelection;
|
|
25787
26043
|
exports.ɵf = ELDER_DATA_VIEW;
|
|
25788
|
-
exports.ɵh =
|
|
25789
|
-
exports.ɵi =
|
|
25790
|
-
exports.ɵj =
|
|
25791
|
-
exports.ɵk =
|
|
25792
|
-
exports.ɵl =
|
|
25793
|
-
exports.ɵm =
|
|
26044
|
+
exports.ɵh = DataContextStateIndicatorComponent;
|
|
26045
|
+
exports.ɵi = ElderTripleStateCheckboxDirective;
|
|
26046
|
+
exports.ɵj = ElderTableColumnDirective;
|
|
26047
|
+
exports.ɵk = ElderTableRowDirective;
|
|
26048
|
+
exports.ɵl = ElderPaginatorIntl;
|
|
26049
|
+
exports.ɵm = StandardToastComponent;
|
|
26050
|
+
exports.ɵn = ElderSelectBase;
|
|
25794
26051
|
|
|
25795
26052
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
25796
26053
|
|