@meshmakers/shared-services 3.1.158-0 → 3.1.159-0

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.
@@ -6,17 +6,41 @@ export class DataSourceBase {
6
6
  loading$ = this.loadingSubject.asObservable();
7
7
  totalCount$ = this.totalCountSubject.asObservable();
8
8
  addedDtoList = new Array();
9
+ removedDtoList = new Array();
9
10
  lastPagedResult = null;
10
11
  get totalCount() {
11
12
  return this.totalCount$;
12
13
  }
14
+ reset() {
15
+ this.addedDtoList.length = 0;
16
+ this.removedDtoList.length = 0;
17
+ }
13
18
  addTemporaryDto(dto) {
14
- this.addedDtoList.push(dto);
19
+ const index = this.removedDtoList.indexOf(dto);
20
+ if (index !== -1) {
21
+ this.removedDtoList.splice(index, 1);
22
+ }
23
+ else {
24
+ this.addedDtoList.push(dto);
25
+ }
26
+ this.onEndLoad();
27
+ }
28
+ removeTemporaryDto(dto) {
29
+ const index = this.addedDtoList.indexOf(dto);
30
+ if (index !== -1) {
31
+ this.addedDtoList.splice(index, 1);
32
+ }
33
+ else {
34
+ this.removedDtoList.push(dto);
35
+ }
15
36
  this.onEndLoad();
16
37
  }
17
- get temporaryDtos() {
38
+ get addedTemporaryDtos() {
18
39
  return this.addedDtoList;
19
40
  }
41
+ get removedTemporaryDtos() {
42
+ return this.removedDtoList;
43
+ }
20
44
  connect(collectionViewer) {
21
45
  return this.dataSubject.asObservable();
22
46
  }
@@ -37,12 +61,12 @@ export class DataSourceBase {
37
61
  }
38
62
  onEndLoad() {
39
63
  if (this.lastPagedResult !== null) {
40
- const totalCount = this.lastPagedResult?.totalCount + this.addedDtoList.length;
41
- const list = this.lastPagedResult.list.concat(this.addedDtoList);
64
+ const totalCount = this.lastPagedResult?.totalCount + this.addedDtoList.length - this.removedDtoList.length;
65
+ const list = this.lastPagedResult.list.concat(this.addedDtoList).filter((x) => !this.removedDtoList.includes(x));
42
66
  this.loadingSubject?.next(false);
43
67
  this.dataSubject?.next(list);
44
68
  this.totalCountSubject?.next(totalCount);
45
69
  }
46
70
  }
47
71
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YVNvdXJjZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1zZXJ2aWNlcy9zcmMvbGliL2RhdGFTb3VyY2VzL2RhdGFTb3VyY2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFJbkQsTUFBTSxPQUFPLGNBQWM7SUFDUixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3JELGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBELFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFbkQsWUFBWSxHQUFXLElBQUksS0FBSyxFQUFRLENBQUM7SUFDbEQsZUFBZSxHQUFnQyxJQUFJLENBQUM7SUFFNUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU0sZUFBZSxDQUFDLEdBQVM7UUFFOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxPQUFPLENBQUMsZ0JBQWtDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVSxDQUFDLGdCQUFrQztRQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxXQUFpQztRQUV4RCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUVuQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLFNBQVM7UUFFZixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7WUFDL0UsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUVqRSxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29sbGVjdGlvblZpZXdlciwgRGF0YVNvdXJjZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7IFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSBcIi4uL21vZGVscy9wYWdlZFJlc3VsdER0b1wiO1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUJhc2U8VER0bz4gaW1wbGVtZW50cyBEYXRhU291cmNlPFREdG8+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VER0b1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b3RhbENvdW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG90YWxDb3VudCQgPSB0aGlzLnRvdGFsQ291bnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWRkZWREdG9MaXN0OiBURHRvW10gPSBuZXcgQXJyYXk8VER0bz4oKTtcbiAgcHJpdmF0ZSBsYXN0UGFnZWRSZXN1bHQ6IFBhZ2VkUmVzdWx0RHRvPFREdG8+IHwgbnVsbCA9IG51bGw7XG5cbiAgcHVibGljIGdldCB0b3RhbENvdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMudG90YWxDb3VudCQ7XG4gIH1cblxuICBwdWJsaWMgYWRkVGVtcG9yYXJ5RHRvKGR0bzogVER0byk6IHZvaWQge1xuXG4gICAgdGhpcy5hZGRlZER0b0xpc3QucHVzaChkdG8pO1xuICAgIHRoaXMub25FbmRMb2FkKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbXBvcmFyeUR0b3MoKTogVER0b1tdIHtcbiAgICByZXR1cm4gdGhpcy5hZGRlZER0b0xpc3Q7XG4gIH1cblxuICBjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IFREdG9bXT4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZGlzY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nU3ViamVjdD8ubmV4dChmYWxzZSk7XG4gICAgdGhpcy5kYXRhU3ViamVjdD8ubmV4dChbXSk7XG4gICAgdGhpcy50b3RhbENvdW50U3ViamVjdD8ubmV4dCgwKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbkJlZ2luTG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Py5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ29tcGxldGVMb2FkKHBhZ2VkUmVzdWx0OiBQYWdlZFJlc3VsdER0bzxURHRvPik6IHZvaWQge1xuXG4gICAgdGhpcy5sYXN0UGFnZWRSZXN1bHQgPSBwYWdlZFJlc3VsdDtcblxuICAgIHRoaXMub25FbmRMb2FkKCk7XG4gIH1cblxuICBwcml2YXRlIG9uRW5kTG9hZCgpOiB2b2lkIHtcblxuICAgIGlmICh0aGlzLmxhc3RQYWdlZFJlc3VsdCAhPT0gbnVsbCkge1xuXG4gICAgICBjb25zdCB0b3RhbENvdW50ID0gdGhpcy5sYXN0UGFnZWRSZXN1bHQ/LnRvdGFsQ291bnQgKyB0aGlzLmFkZGVkRHRvTGlzdC5sZW5ndGg7XG4gICAgICBjb25zdCBsaXN0ID0gdGhpcy5sYXN0UGFnZWRSZXN1bHQubGlzdC5jb25jYXQodGhpcy5hZGRlZER0b0xpc3QpO1xuXG4gICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Py5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuZGF0YVN1YmplY3Q/Lm5leHQobGlzdCk7XG4gICAgICB0aGlzLnRvdGFsQ291bnRTdWJqZWN0Py5uZXh0KHRvdGFsQ291bnQpO1xuICAgIH1cbiAgfVxufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YVNvdXJjZUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXNobWFrZXJzL3NoYXJlZC1zZXJ2aWNlcy9zcmMvbGliL2RhdGFTb3VyY2VzL2RhdGFTb3VyY2VCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFJbkQsTUFBTSxPQUFPLGNBQWM7SUFDUixXQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDOUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3JELGlCQUFpQixHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBRXBELFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlDLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFbkQsWUFBWSxHQUFXLElBQUksS0FBSyxFQUFRLENBQUM7SUFDekMsY0FBYyxHQUFXLElBQUksS0FBSyxFQUFRLENBQUM7SUFDcEQsZUFBZSxHQUFnQyxJQUFJLENBQUM7SUFFNUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxHQUFTO1FBRTlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9DLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sa0JBQWtCLENBQUMsR0FBUztRQUVqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFHRCxPQUFPLENBQUMsZ0JBQWtDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsVUFBVSxDQUFDLGdCQUFrQztRQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLFdBQVc7UUFDbkIsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxXQUFpQztRQUV4RCxJQUFJLENBQUMsZUFBZSxHQUFHLFdBQVcsQ0FBQztRQUVuQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLFNBQVM7UUFFZixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFLENBQUM7WUFFbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7WUFDNUcsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqSCxJQUFJLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ29sbGVjdGlvblZpZXdlciwgRGF0YVNvdXJjZSB9IGZyb20gXCJAYW5ndWxhci9jZGsvY29sbGVjdGlvbnNcIjtcbmltcG9ydCB7IFBhZ2VkUmVzdWx0RHRvIH0gZnJvbSBcIi4uL21vZGVscy9wYWdlZFJlc3VsdER0b1wiO1xuXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZUJhc2U8VER0bz4gaW1wbGVtZW50cyBEYXRhU291cmNlPFREdG8+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VER0b1tdPihbXSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0b3RhbENvdW50U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICBwdWJsaWMgcmVhZG9ubHkgdG90YWxDb3VudCQgPSB0aGlzLnRvdGFsQ291bnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWRkZWREdG9MaXN0OiBURHRvW10gPSBuZXcgQXJyYXk8VER0bz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZW1vdmVkRHRvTGlzdDogVER0b1tdID0gbmV3IEFycmF5PFREdG8+KCk7XG4gIHByaXZhdGUgbGFzdFBhZ2VkUmVzdWx0OiBQYWdlZFJlc3VsdER0bzxURHRvPiB8IG51bGwgPSBudWxsO1xuXG4gIHB1YmxpYyBnZXQgdG90YWxDb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLnRvdGFsQ291bnQkO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkZWREdG9MaXN0Lmxlbmd0aCA9IDA7XG4gICAgdGhpcy5yZW1vdmVkRHRvTGlzdC5sZW5ndGggPSAwO1xuICB9XG5cbiAgcHVibGljIGFkZFRlbXBvcmFyeUR0byhkdG86IFREdG8pOiB2b2lkIHtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZW1vdmVkRHRvTGlzdC5pbmRleE9mKGR0byk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5yZW1vdmVkRHRvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZGVkRHRvTGlzdC5wdXNoKGR0byk7XG4gICAgfVxuXG4gICAgdGhpcy5vbkVuZExvYWQoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVUZW1wb3JhcnlEdG8oZHRvOiBURHRvKTogdm9pZCB7XG5cbiAgICBjb25zdCBpbmRleCA9IHRoaXMuYWRkZWREdG9MaXN0LmluZGV4T2YoZHRvKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmFkZGVkRHRvTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbW92ZWREdG9MaXN0LnB1c2goZHRvKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uRW5kTG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBhZGRlZFRlbXBvcmFyeUR0b3MoKTogVER0b1tdIHtcbiAgICByZXR1cm4gdGhpcy5hZGRlZER0b0xpc3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlbW92ZWRUZW1wb3JhcnlEdG9zKCk6IFREdG9bXSB7XG4gICAgcmV0dXJuIHRoaXMucmVtb3ZlZER0b0xpc3Q7XG4gIH1cblxuXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8cmVhZG9ubHkgVER0b1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyKCk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Py5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmRhdGFTdWJqZWN0Py5uZXh0KFtdKTtcbiAgICB0aGlzLnRvdGFsQ291bnRTdWJqZWN0Py5uZXh0KDApO1xuICB9XG5cbiAgcHJvdGVjdGVkIG9uQmVnaW5Mb2FkKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZ1N1YmplY3Q/Lm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb25Db21wbGV0ZUxvYWQocGFnZWRSZXN1bHQ6IFBhZ2VkUmVzdWx0RHRvPFREdG8+KTogdm9pZCB7XG5cbiAgICB0aGlzLmxhc3RQYWdlZFJlc3VsdCA9IHBhZ2VkUmVzdWx0O1xuXG4gICAgdGhpcy5vbkVuZExvYWQoKTtcbiAgfVxuXG4gIHByaXZhdGUgb25FbmRMb2FkKCk6IHZvaWQge1xuXG4gICAgaWYgKHRoaXMubGFzdFBhZ2VkUmVzdWx0ICE9PSBudWxsKSB7XG5cbiAgICAgIGNvbnN0IHRvdGFsQ291bnQgPSB0aGlzLmxhc3RQYWdlZFJlc3VsdD8udG90YWxDb3VudCArIHRoaXMuYWRkZWREdG9MaXN0Lmxlbmd0aCAtIHRoaXMucmVtb3ZlZER0b0xpc3QubGVuZ3RoO1xuICAgICAgY29uc3QgbGlzdCA9IHRoaXMubGFzdFBhZ2VkUmVzdWx0Lmxpc3QuY29uY2F0KHRoaXMuYWRkZWREdG9MaXN0KS5maWx0ZXIoKHgpID0+ICF0aGlzLnJlbW92ZWREdG9MaXN0LmluY2x1ZGVzKHgpKTtcblxuICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdD8ubmV4dChmYWxzZSk7XG4gICAgICB0aGlzLmRhdGFTdWJqZWN0Py5uZXh0KGxpc3QpO1xuICAgICAgdGhpcy50b3RhbENvdW50U3ViamVjdD8ubmV4dCh0b3RhbENvdW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -124,17 +124,41 @@ class DataSourceBase {
124
124
  loading$ = this.loadingSubject.asObservable();
125
125
  totalCount$ = this.totalCountSubject.asObservable();
126
126
  addedDtoList = new Array();
127
+ removedDtoList = new Array();
127
128
  lastPagedResult = null;
128
129
  get totalCount() {
129
130
  return this.totalCount$;
130
131
  }
132
+ reset() {
133
+ this.addedDtoList.length = 0;
134
+ this.removedDtoList.length = 0;
135
+ }
131
136
  addTemporaryDto(dto) {
132
- this.addedDtoList.push(dto);
137
+ const index = this.removedDtoList.indexOf(dto);
138
+ if (index !== -1) {
139
+ this.removedDtoList.splice(index, 1);
140
+ }
141
+ else {
142
+ this.addedDtoList.push(dto);
143
+ }
144
+ this.onEndLoad();
145
+ }
146
+ removeTemporaryDto(dto) {
147
+ const index = this.addedDtoList.indexOf(dto);
148
+ if (index !== -1) {
149
+ this.addedDtoList.splice(index, 1);
150
+ }
151
+ else {
152
+ this.removedDtoList.push(dto);
153
+ }
133
154
  this.onEndLoad();
134
155
  }
135
- get temporaryDtos() {
156
+ get addedTemporaryDtos() {
136
157
  return this.addedDtoList;
137
158
  }
159
+ get removedTemporaryDtos() {
160
+ return this.removedDtoList;
161
+ }
138
162
  connect(collectionViewer) {
139
163
  return this.dataSubject.asObservable();
140
164
  }
@@ -155,8 +179,8 @@ class DataSourceBase {
155
179
  }
156
180
  onEndLoad() {
157
181
  if (this.lastPagedResult !== null) {
158
- const totalCount = this.lastPagedResult?.totalCount + this.addedDtoList.length;
159
- const list = this.lastPagedResult.list.concat(this.addedDtoList);
182
+ const totalCount = this.lastPagedResult?.totalCount + this.addedDtoList.length - this.removedDtoList.length;
183
+ const list = this.lastPagedResult.list.concat(this.addedDtoList).filter((x) => !this.removedDtoList.includes(x));
160
184
  this.loadingSubject?.next(false);
161
185
  this.dataSubject?.next(list);
162
186
  this.totalCountSubject?.next(totalCount);
@@ -1 +1 @@
1
- {"version":3,"file":"meshmakers-shared-services.mjs","sources":["../../../../projects/meshmakers/shared-services/src/lib/services/message.service.ts","../../../../projects/meshmakers/shared-services/src/lib/shared-services.module.ts","../../../../projects/meshmakers/shared-services/src/lib/services/breadcrumb.service.ts","../../../../projects/meshmakers/shared-services/src/lib/models/autoCompleteResult.ts","../../../../projects/meshmakers/shared-services/src/lib/models/errorMessage.ts","../../../../projects/meshmakers/shared-services/src/lib/models/pagedResultDto.ts","../../../../projects/meshmakers/shared-services/src/lib/dataSources/dataSourceBase.ts","../../../../projects/meshmakers/shared-services/src/lib/dataSources/genericDataSource.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/isoDateTime.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/enumReader.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/objectCloner.ts","../../../../projects/meshmakers/shared-services/src/public-api.ts","../../../../projects/meshmakers/shared-services/src/meshmakers-shared-services.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ErrorMessage } from '../models/errorMessage';\n\n@Injectable()\nexport class MessageService {\n latestErrorMessage: BehaviorSubject<ErrorMessage | null>;\n\n errorMessages: ErrorMessage[];\n\n constructor(private readonly snackBar: MatSnackBar) {\n this.latestErrorMessage = new BehaviorSubject<ErrorMessage | null>(null);\n this.errorMessages = new Array<ErrorMessage>();\n }\n\n getErrorMessageCount(): number {\n return this.errorMessages.length;\n }\n\n getErrorMessage(index: number): ErrorMessage {\n return this.errorMessages[index];\n }\n\n getLatestErrorMessage(): Observable<ErrorMessage | null> {\n return this.latestErrorMessage.asObservable();\n }\n\n showError(message: string, title: string): void {\n console.error(message);\n\n const errorMessage = {\n title,\n message\n } as ErrorMessage;\n this.errorMessages.push(errorMessage);\n\n this.latestErrorMessage.next(errorMessage);\n }\n\n showErrorMessage(message: string): void {\n console.error(message);\n\n const errorMessage = {\n title: 'Error',\n message\n } as ErrorMessage;\n this.errorMessages.push(errorMessage);\n\n this.latestErrorMessage.next(errorMessage);\n }\n\n showInformation(message: string): void {\n this.snackBar.open(message, undefined, {\n duration: 3000,\n // here specify the position\n horizontalPosition: 'center',\n verticalPosition: 'bottom'\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MessageService } from './services/message.service';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class SharedServicesModule {\n static forRoot(): ModuleWithProviders<SharedServicesModule> {\n return {\n ngModule: SharedServicesModule,\n providers: [MessageService]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport {Breadcrumb} from \"../models/breadcrumb\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreadcrumbService {\n public breadcrumbLabels: BehaviorSubject<any> = new BehaviorSubject<any>([]);\n\n public newBreadcrumb: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n\n updateBreadcrumbLabels(labels: any): void {\n this.breadcrumbLabels.next(labels);\n }\n\n updateBreadcrumb(newBreadcrumb: Breadcrumb[]): void {\n this.newBreadcrumb.next(newBreadcrumb);\n }\n}\n","export class AutoCompleteResult {\n searchTerm?: string;\n\n list?: string[];\n}\n","export class ErrorMessage {\n title?: string;\n message?: string;\n}\n","export class PagedResultDto<T> {\n skip: number;\n take: number;\n totalCount: number;\n list: T[];\n\n constructor() {\n this.skip = 0;\n this.take = 0;\n this.totalCount = 0;\n this.list = new Array<T>();\n }\n}\n","import { BehaviorSubject, Observable } from \"rxjs\";\nimport { CollectionViewer, DataSource } from \"@angular/cdk/collections\";\nimport { PagedResultDto } from \"../models/pagedResultDto\";\n\nexport class DataSourceBase<TDto> implements DataSource<TDto> {\n private readonly dataSubject = new BehaviorSubject<TDto[]>([]);\n private readonly loadingSubject = new BehaviorSubject<boolean>(false);\n private readonly totalCountSubject = new BehaviorSubject<number>(0);\n\n public readonly loading$ = this.loadingSubject.asObservable();\n public readonly totalCount$ = this.totalCountSubject.asObservable();\n\n private readonly addedDtoList: TDto[] = new Array<TDto>();\n private lastPagedResult: PagedResultDto<TDto> | null = null;\n\n public get totalCount(): Observable<number> {\n return this.totalCount$;\n }\n\n public addTemporaryDto(dto: TDto): void {\n\n this.addedDtoList.push(dto);\n this.onEndLoad();\n }\n\n public get temporaryDtos(): TDto[] {\n return this.addedDtoList;\n }\n\n connect(collectionViewer: CollectionViewer): Observable<readonly TDto[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(collectionViewer: CollectionViewer): void {\n this.clear();\n }\n\n clear(): void {\n this.loadingSubject?.next(false);\n this.dataSubject?.next([]);\n this.totalCountSubject?.next(0);\n }\n\n protected onBeginLoad(): void {\n this.loadingSubject?.next(true);\n }\n\n protected onCompleteLoad(pagedResult: PagedResultDto<TDto>): void {\n\n this.lastPagedResult = pagedResult;\n\n this.onEndLoad();\n }\n\n private onEndLoad(): void {\n\n if (this.lastPagedResult !== null) {\n\n const totalCount = this.lastPagedResult?.totalCount + this.addedDtoList.length;\n const list = this.lastPagedResult.list.concat(this.addedDtoList);\n\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n }\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\n\nexport class GenericDataSource<TEntity> implements DataSource<TEntity> {\n private readonly dataSubject = new BehaviorSubject<TEntity[]>([]);\n\n constructor(public data: TEntity[]) {\n this.dataSubject.next(data);\n }\n\n emitChanged(): void {\n this.dataSubject.next(this.data);\n }\n\n connect(collectionViewer: CollectionViewer): Observable<TEntity[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(collectionViewer: CollectionViewer): void {\n this.dataSubject.complete();\n }\n}\n","import { formatISO, parseISO } from 'date-fns';\n\nexport class IsoDateTime {\n public static utcToLocalDateTimeIso(utcDateTime: string): string | null {\n if (!utcDateTime) {\n return null;\n }\n\n return parseISO(utcDateTime).toISOString();\n }\n\n public static localToUtcDateTimeIso(localDateTime: string): string | null {\n if (!localDateTime) {\n return null;\n }\n return formatISO(localDateTime);\n }\n\n public static currentUtcDateTimeIso(): string {\n return formatISO(Date.now());\n }\n}\n","export class EnumTuple<TValue = number> {\n id: string | undefined;\n name: TValue | undefined;\n}\n\nexport class EnumReader<TValue = number> {\n constructor(private readonly value: Record<string, TValue>) {}\n\n public getNamesAndValues(): EnumTuple<TValue>[] {\n return this.getNames().map((n) => {\n return { name: this.value[n], id: n } as EnumTuple<TValue>;\n });\n }\n\n public getNames(): string[] {\n return Object.keys(this.value);\n }\n\n private getObjValues(): TValue[] {\n return Object.keys(this.value).map((k) => this.value[k]);\n }\n}\n","export class ObjectCloner {\n public static cloneObject<TR, TS1>(source: TS1, ignoreProperties: string[] | null = null): TR {\n const clonedObject = Object.assign({} as any, source);\n\n if (ignoreProperties != null) {\n for (const prop of ignoreProperties) {\n \n delete clonedObject[prop];\n }\n }\n return clonedObject as TR;\n }\n\n public static cloneObject2<TR, TS1, TS2>(source: TS1, source2: TS2, ignoreProperties: string[] | null = null): TR {\n const clonedObject = Object.assign({} as any, source, source2);\n\n if (ignoreProperties != null) {\n for (const prop of ignoreProperties) {\n \n delete clonedObject[prop];\n }\n }\n return clonedObject as TR;\n }\n}\n","/*\n * Public API Surface of shared-services\n */\n\nexport * from './lib/shared-services.module';\nexport * from './lib/services/breadcrumb.service';\nexport * from './lib/services/message.service';\nexport * from './lib/models/autoCompleteResult';\nexport * from './lib/models/errorMessage';\nexport * from './lib/models/pagedResultDto';\nexport * from './lib/models/breadcrumb';\nexport * from './lib/dataSources/dataSourceBase';\nexport * from './lib/dataSources/genericDataSource';\nexport * from './lib/dataSources/entitySelectDataSource';\nexport * from './lib/dataSources/autoCompleteDataSource';\nexport * from './lib/shared/isoDateTime';\nexport * from './lib/shared/enumReader';\nexport * from './lib/shared/objectCloner';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meshmakers-shared-services.mjs","sources":["../../../../projects/meshmakers/shared-services/src/lib/services/message.service.ts","../../../../projects/meshmakers/shared-services/src/lib/shared-services.module.ts","../../../../projects/meshmakers/shared-services/src/lib/services/breadcrumb.service.ts","../../../../projects/meshmakers/shared-services/src/lib/models/autoCompleteResult.ts","../../../../projects/meshmakers/shared-services/src/lib/models/errorMessage.ts","../../../../projects/meshmakers/shared-services/src/lib/models/pagedResultDto.ts","../../../../projects/meshmakers/shared-services/src/lib/dataSources/dataSourceBase.ts","../../../../projects/meshmakers/shared-services/src/lib/dataSources/genericDataSource.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/isoDateTime.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/enumReader.ts","../../../../projects/meshmakers/shared-services/src/lib/shared/objectCloner.ts","../../../../projects/meshmakers/shared-services/src/public-api.ts","../../../../projects/meshmakers/shared-services/src/meshmakers-shared-services.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ErrorMessage } from '../models/errorMessage';\n\n@Injectable()\nexport class MessageService {\n latestErrorMessage: BehaviorSubject<ErrorMessage | null>;\n\n errorMessages: ErrorMessage[];\n\n constructor(private readonly snackBar: MatSnackBar) {\n this.latestErrorMessage = new BehaviorSubject<ErrorMessage | null>(null);\n this.errorMessages = new Array<ErrorMessage>();\n }\n\n getErrorMessageCount(): number {\n return this.errorMessages.length;\n }\n\n getErrorMessage(index: number): ErrorMessage {\n return this.errorMessages[index];\n }\n\n getLatestErrorMessage(): Observable<ErrorMessage | null> {\n return this.latestErrorMessage.asObservable();\n }\n\n showError(message: string, title: string): void {\n console.error(message);\n\n const errorMessage = {\n title,\n message\n } as ErrorMessage;\n this.errorMessages.push(errorMessage);\n\n this.latestErrorMessage.next(errorMessage);\n }\n\n showErrorMessage(message: string): void {\n console.error(message);\n\n const errorMessage = {\n title: 'Error',\n message\n } as ErrorMessage;\n this.errorMessages.push(errorMessage);\n\n this.latestErrorMessage.next(errorMessage);\n }\n\n showInformation(message: string): void {\n this.snackBar.open(message, undefined, {\n duration: 3000,\n // here specify the position\n horizontalPosition: 'center',\n verticalPosition: 'bottom'\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MessageService } from './services/message.service';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: []\n})\nexport class SharedServicesModule {\n static forRoot(): ModuleWithProviders<SharedServicesModule> {\n return {\n ngModule: SharedServicesModule,\n providers: [MessageService]\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport {Breadcrumb} from \"../models/breadcrumb\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BreadcrumbService {\n public breadcrumbLabels: BehaviorSubject<any> = new BehaviorSubject<any>([]);\n\n public newBreadcrumb: BehaviorSubject<Breadcrumb[]> = new BehaviorSubject<Breadcrumb[]>([]);\n\n updateBreadcrumbLabels(labels: any): void {\n this.breadcrumbLabels.next(labels);\n }\n\n updateBreadcrumb(newBreadcrumb: Breadcrumb[]): void {\n this.newBreadcrumb.next(newBreadcrumb);\n }\n}\n","export class AutoCompleteResult {\n searchTerm?: string;\n\n list?: string[];\n}\n","export class ErrorMessage {\n title?: string;\n message?: string;\n}\n","export class PagedResultDto<T> {\n skip: number;\n take: number;\n totalCount: number;\n list: T[];\n\n constructor() {\n this.skip = 0;\n this.take = 0;\n this.totalCount = 0;\n this.list = new Array<T>();\n }\n}\n","import { BehaviorSubject, Observable } from \"rxjs\";\nimport { CollectionViewer, DataSource } from \"@angular/cdk/collections\";\nimport { PagedResultDto } from \"../models/pagedResultDto\";\n\nexport class DataSourceBase<TDto> implements DataSource<TDto> {\n private readonly dataSubject = new BehaviorSubject<TDto[]>([]);\n private readonly loadingSubject = new BehaviorSubject<boolean>(false);\n private readonly totalCountSubject = new BehaviorSubject<number>(0);\n\n public readonly loading$ = this.loadingSubject.asObservable();\n public readonly totalCount$ = this.totalCountSubject.asObservable();\n\n private readonly addedDtoList: TDto[] = new Array<TDto>();\n private readonly removedDtoList: TDto[] = new Array<TDto>();\n private lastPagedResult: PagedResultDto<TDto> | null = null;\n\n public get totalCount(): Observable<number> {\n return this.totalCount$;\n }\n\n public reset(): void {\n this.addedDtoList.length = 0;\n this.removedDtoList.length = 0;\n }\n\n public addTemporaryDto(dto: TDto): void {\n\n const index = this.removedDtoList.indexOf(dto);\n if (index !== -1) {\n this.removedDtoList.splice(index, 1);\n } else {\n this.addedDtoList.push(dto);\n }\n\n this.onEndLoad();\n }\n\n public removeTemporaryDto(dto: TDto): void {\n\n const index = this.addedDtoList.indexOf(dto);\n if (index !== -1) {\n this.addedDtoList.splice(index, 1);\n } else {\n this.removedDtoList.push(dto);\n }\n\n this.onEndLoad();\n }\n\n public get addedTemporaryDtos(): TDto[] {\n return this.addedDtoList;\n }\n\n public get removedTemporaryDtos(): TDto[] {\n return this.removedDtoList;\n }\n\n\n connect(collectionViewer: CollectionViewer): Observable<readonly TDto[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(collectionViewer: CollectionViewer): void {\n this.clear();\n }\n\n clear(): void {\n this.loadingSubject?.next(false);\n this.dataSubject?.next([]);\n this.totalCountSubject?.next(0);\n }\n\n protected onBeginLoad(): void {\n this.loadingSubject?.next(true);\n }\n\n protected onCompleteLoad(pagedResult: PagedResultDto<TDto>): void {\n\n this.lastPagedResult = pagedResult;\n\n this.onEndLoad();\n }\n\n private onEndLoad(): void {\n\n if (this.lastPagedResult !== null) {\n\n const totalCount = this.lastPagedResult?.totalCount + this.addedDtoList.length - this.removedDtoList.length;\n const list = this.lastPagedResult.list.concat(this.addedDtoList).filter((x) => !this.removedDtoList.includes(x));\n\n this.loadingSubject?.next(false);\n this.dataSubject?.next(list);\n this.totalCountSubject?.next(totalCount);\n }\n }\n}\n","import { BehaviorSubject, Observable } from 'rxjs';\nimport { CollectionViewer, DataSource } from '@angular/cdk/collections';\n\nexport class GenericDataSource<TEntity> implements DataSource<TEntity> {\n private readonly dataSubject = new BehaviorSubject<TEntity[]>([]);\n\n constructor(public data: TEntity[]) {\n this.dataSubject.next(data);\n }\n\n emitChanged(): void {\n this.dataSubject.next(this.data);\n }\n\n connect(collectionViewer: CollectionViewer): Observable<TEntity[]> {\n return this.dataSubject.asObservable();\n }\n\n disconnect(collectionViewer: CollectionViewer): void {\n this.dataSubject.complete();\n }\n}\n","import { formatISO, parseISO } from 'date-fns';\n\nexport class IsoDateTime {\n public static utcToLocalDateTimeIso(utcDateTime: string): string | null {\n if (!utcDateTime) {\n return null;\n }\n\n return parseISO(utcDateTime).toISOString();\n }\n\n public static localToUtcDateTimeIso(localDateTime: string): string | null {\n if (!localDateTime) {\n return null;\n }\n return formatISO(localDateTime);\n }\n\n public static currentUtcDateTimeIso(): string {\n return formatISO(Date.now());\n }\n}\n","export class EnumTuple<TValue = number> {\n id: string | undefined;\n name: TValue | undefined;\n}\n\nexport class EnumReader<TValue = number> {\n constructor(private readonly value: Record<string, TValue>) {}\n\n public getNamesAndValues(): EnumTuple<TValue>[] {\n return this.getNames().map((n) => {\n return { name: this.value[n], id: n } as EnumTuple<TValue>;\n });\n }\n\n public getNames(): string[] {\n return Object.keys(this.value);\n }\n\n private getObjValues(): TValue[] {\n return Object.keys(this.value).map((k) => this.value[k]);\n }\n}\n","export class ObjectCloner {\n public static cloneObject<TR, TS1>(source: TS1, ignoreProperties: string[] | null = null): TR {\n const clonedObject = Object.assign({} as any, source);\n\n if (ignoreProperties != null) {\n for (const prop of ignoreProperties) {\n \n delete clonedObject[prop];\n }\n }\n return clonedObject as TR;\n }\n\n public static cloneObject2<TR, TS1, TS2>(source: TS1, source2: TS2, ignoreProperties: string[] | null = null): TR {\n const clonedObject = Object.assign({} as any, source, source2);\n\n if (ignoreProperties != null) {\n for (const prop of ignoreProperties) {\n \n delete clonedObject[prop];\n }\n }\n return clonedObject as TR;\n }\n}\n","/*\n * Public API Surface of shared-services\n */\n\nexport * from './lib/shared-services.module';\nexport * from './lib/services/breadcrumb.service';\nexport * from './lib/services/message.service';\nexport * from './lib/models/autoCompleteResult';\nexport * from './lib/models/errorMessage';\nexport * from './lib/models/pagedResultDto';\nexport * from './lib/models/breadcrumb';\nexport * from './lib/dataSources/dataSourceBase';\nexport * from './lib/dataSources/genericDataSource';\nexport * from './lib/dataSources/entitySelectDataSource';\nexport * from './lib/dataSources/autoCompleteDataSource';\nexport * from './lib/shared/isoDateTime';\nexport * from './lib/shared/enumReader';\nexport * from './lib/shared/objectCloner';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -8,10 +8,14 @@ export declare class DataSourceBase<TDto> implements DataSource<TDto> {
8
8
  readonly loading$: Observable<boolean>;
9
9
  readonly totalCount$: Observable<number>;
10
10
  private readonly addedDtoList;
11
+ private readonly removedDtoList;
11
12
  private lastPagedResult;
12
13
  get totalCount(): Observable<number>;
14
+ reset(): void;
13
15
  addTemporaryDto(dto: TDto): void;
14
- get temporaryDtos(): TDto[];
16
+ removeTemporaryDto(dto: TDto): void;
17
+ get addedTemporaryDtos(): TDto[];
18
+ get removedTemporaryDtos(): TDto[];
15
19
  connect(collectionViewer: CollectionViewer): Observable<readonly TDto[]>;
16
20
  disconnect(collectionViewer: CollectionViewer): void;
17
21
  clear(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshmakers/shared-services",
3
- "version": "3.1.158-0",
3
+ "version": "3.1.159-0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.1",
6
6
  "@angular/core": "^18.2.1"