@sumaris-net/ngx-components 1.5.6 → 1.5.10
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/sumaris-net.ngx-components.umd.js +49 -30
- package/bundles/sumaris-net.ngx-components.umd.js.map +1 -1
- package/bundles/sumaris-net.ngx-components.umd.min.js +2 -2
- package/bundles/sumaris-net.ngx-components.umd.min.js.map +1 -1
- package/doc/changelog.md +4 -0
- package/esm2015/src/app/core/table/table.class.js +19 -4
- package/esm2015/src/app/shared/functions.js +29 -26
- package/fesm2015/sumaris-net.ngx-components.js +47 -29
- package/fesm2015/sumaris-net.ngx-components.js.map +1 -1
- package/package.json +1 -1
- package/src/app/shared/functions.d.ts +1 -0
- package/sumaris-net.ngx-components.metadata.json +1 -1
|
@@ -523,53 +523,56 @@
|
|
|
523
523
|
return { data: [], total: 0 };
|
|
524
524
|
}
|
|
525
525
|
// Filter items
|
|
526
|
-
var
|
|
526
|
+
var filteredItems = items;
|
|
527
527
|
if (isNotNilOrBlank(value)) {
|
|
528
528
|
// If wildcard, search using regexp
|
|
529
529
|
if (value.indexOf('*') !== -1) {
|
|
530
530
|
value = value.replace('*', '.*');
|
|
531
|
-
|
|
531
|
+
filteredItems = filteredItems.filter(function (v) { return keys.findIndex(function (key) { return matchUpperCase(getPropertyByPathAsString(v, key), value); }) !== -1; });
|
|
532
532
|
}
|
|
533
533
|
// Else (no wildcard), search using startsWith
|
|
534
534
|
else {
|
|
535
|
-
|
|
535
|
+
filteredItems = filteredItems.filter(function (v) { return keys.findIndex(function (key) { return startsWithUpperCase(getPropertyByPathAsString(v, key), value); }) !== -1; });
|
|
536
536
|
}
|
|
537
537
|
}
|
|
538
538
|
// Exclude ids
|
|
539
539
|
if (isNotEmptyArray(opts === null || opts === void 0 ? void 0 : opts.excludedIds)) {
|
|
540
|
-
|
|
541
|
-
}
|
|
542
|
-
// Sort
|
|
543
|
-
if (
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
}
|
|
550
|
-
|
|
540
|
+
filteredItems = filteredItems.filter(function (v) { return !opts.excludedIds.includes(+v['id']); });
|
|
541
|
+
}
|
|
542
|
+
// Sort
|
|
543
|
+
if (!opts || opts.skipSort !== true) {
|
|
544
|
+
// Make to copy input items, before sorting (if not yet already done)
|
|
545
|
+
if (filteredItems === items)
|
|
546
|
+
filteredItems = filteredItems.slice();
|
|
547
|
+
// Sort by keys
|
|
548
|
+
filteredItems.sort(propertiesPathComparator(keys));
|
|
549
|
+
}
|
|
550
|
+
var total = filteredItems.length || 0;
|
|
551
|
+
// Pagination (truncate if need)
|
|
552
|
+
var pageData = filteredItems;
|
|
551
553
|
if (opts) {
|
|
552
|
-
if (
|
|
553
|
-
|
|
554
|
+
if ((opts.offset || 0) > 0) {
|
|
555
|
+
pageData = pageData.slice(opts.offset);
|
|
554
556
|
}
|
|
555
|
-
if (isNotNil(opts.size) &&
|
|
556
|
-
|
|
557
|
+
if (isNotNil(opts.size) && pageData.length > opts.size) {
|
|
558
|
+
pageData = pageData.slice(0, opts.size);
|
|
557
559
|
}
|
|
558
560
|
}
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
561
|
+
var result = {
|
|
562
|
+
data: pageData,
|
|
563
|
+
total: total
|
|
564
|
+
};
|
|
562
565
|
// Add fetch more capability, if total was fetched
|
|
563
|
-
var nextOffset = (opts && opts.offset || 0) +
|
|
564
|
-
if (nextOffset <
|
|
565
|
-
|
|
566
|
+
var nextOffset = (opts && opts.offset || 0) + pageData.length;
|
|
567
|
+
if (nextOffset < total) {
|
|
568
|
+
result.fetchMore = function (_) { return __awaiter(_this, void 0, void 0, function () {
|
|
566
569
|
return __generator(this, function (_a) {
|
|
567
|
-
return [2 /*return*/, suggestFromArray(
|
|
570
|
+
return [2 /*return*/, suggestFromArray(filteredItems, undefined /*OPTIMISATION: already applied*/, Object.assign(Object.assign({}, opts), { offset: nextOffset, skipSort: true, excludedIds: undefined // OPTIMISATION: already filtered
|
|
568
571
|
}))];
|
|
569
572
|
});
|
|
570
573
|
}); };
|
|
571
574
|
}
|
|
572
|
-
return
|
|
575
|
+
return result;
|
|
573
576
|
}
|
|
574
577
|
function suggestFromStringArray(values, value, options) {
|
|
575
578
|
value = (typeof value === 'string' && value !== '*') && value.toUpperCase() || undefined;
|
|
@@ -24889,8 +24892,10 @@
|
|
|
24889
24892
|
* @param opts Use interactive=false to avoid user interaction (e.g. user confirmation)
|
|
24890
24893
|
*/
|
|
24891
24894
|
AppTable.prototype.deleteRows = function (event, rows, opts) {
|
|
24895
|
+
var _a;
|
|
24892
24896
|
return __awaiter(this, void 0, void 0, function () {
|
|
24893
|
-
var canDelete, saved, rowsToDelete, deleteCount, err_2;
|
|
24897
|
+
var confirmed, canDelete, saved, rowsToDelete, deleteCount, err_2;
|
|
24898
|
+
var _this = this;
|
|
24894
24899
|
return __generator(this, function (_d) {
|
|
24895
24900
|
switch (_d.label) {
|
|
24896
24901
|
case 0:
|
|
@@ -24904,15 +24909,29 @@
|
|
|
24904
24909
|
return [2 /*return*/, 0];
|
|
24905
24910
|
if (this.loading || isEmptyArray(rows))
|
|
24906
24911
|
return [2 /*return*/, 0];
|
|
24912
|
+
// Make sure to keep newly created row
|
|
24913
|
+
if (((_a = this.editedRow) === null || _a === void 0 ? void 0 : _a.id) === -1 && this.editedRow.editing && !rows.includes(this.editedRow)) {
|
|
24914
|
+
confirmed = this.confirmEditCreate();
|
|
24915
|
+
if (!confirmed)
|
|
24916
|
+
return [2 /*return*/, 0]; // Cannot delete (e.g. edited row is invalid)
|
|
24917
|
+
}
|
|
24907
24918
|
return [4 /*yield*/, this.canDeleteRows(rows, opts)];
|
|
24908
24919
|
case 1:
|
|
24909
24920
|
canDelete = _d.sent();
|
|
24910
24921
|
if (!canDelete)
|
|
24911
24922
|
return [2 /*return*/, 0]; // Cannot delete
|
|
24912
24923
|
if (!this.saveBeforeDelete) return [3 /*break*/, 3];
|
|
24913
|
-
// Cancel invalid rows (because of save() will
|
|
24924
|
+
// Cancel invalid rows (because of save() will fail, if invalid rows exists)
|
|
24914
24925
|
rows.filter(function (row) { var _a; return !((_a = row.validator) === null || _a === void 0 ? void 0 : _a.valid); })
|
|
24915
|
-
.forEach(function (row) {
|
|
24926
|
+
.forEach(function (row) {
|
|
24927
|
+
var deleted = row.id === -1;
|
|
24928
|
+
row.cancelOrDelete();
|
|
24929
|
+
// When deleted (= newly created row) : decrement counter
|
|
24930
|
+
if (deleted) {
|
|
24931
|
+
_this.visibleRowCount--;
|
|
24932
|
+
_this.totalRowCount--;
|
|
24933
|
+
}
|
|
24934
|
+
});
|
|
24916
24935
|
return [4 /*yield*/, this.saveBeforeAction('delete')];
|
|
24917
24936
|
case 2:
|
|
24918
24937
|
saved = _d.sent();
|
|
@@ -24936,7 +24955,7 @@
|
|
|
24936
24955
|
return [4 /*yield*/, this._dataSource.deleteAll(rowsToDelete)];
|
|
24937
24956
|
case 5:
|
|
24938
24957
|
_d.sent();
|
|
24939
|
-
//
|
|
24958
|
+
// DO not update manually, because watchALl().subscribe() will update this count
|
|
24940
24959
|
//this.totalRowCount -= deleteCount;
|
|
24941
24960
|
//this.visibleRowCount -= deleteCount;
|
|
24942
24961
|
this.selection.clear();
|