@genexus/genexus-ide-ui 1.1.40 → 1.1.41
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/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +12 -28
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +20 -4
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +99 -238
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +60 -10
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/tabular-grid-column-sort-5ca06dc1.js +43 -0
- package/dist/cjs/tabular-grid-column-sort-5ca06dc1.js.map +1 -0
- package/dist/cjs/tabular-grid-render-4350dbaf.js +223 -0
- package/dist/cjs/tabular-grid-render-4350dbaf.js.map +1 -0
- package/dist/cjs/uncheck-ignored-77ca69fe.js +43 -0
- package/dist/cjs/uncheck-ignored-77ca69fe.js.map +1 -0
- package/dist/collection/common/chameleon/tabular-grid-column-sort.js +39 -0
- package/dist/collection/common/chameleon/tabular-grid-column-sort.js.map +1 -0
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js +18 -4
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
- package/dist/collection/components/team-dev/server-selector/server-selector.css +18 -14
- package/dist/collection/components/team-dev/server-selector/server-selector.js +11 -27
- package/dist/collection/components/team-dev/server-selector/server-selector.js.map +1 -1
- package/dist/collection/components/team-dev/update/update.css +1 -0
- package/dist/collection/components/team-dev/update/update.js +62 -9
- package/dist/collection/components/team-dev/update/update.js.map +1 -1
- package/dist/collection/components/team-dev/version-control/commit/commit.css +1 -0
- package/dist/collection/components/team-dev/version-control/commit/commit.js +79 -20
- package/dist/collection/components/team-dev/version-control/commit/commit.js.map +1 -1
- package/dist/collection/components/team-dev/version-control/common/are-sets-equal.js +21 -0
- package/dist/collection/components/team-dev/version-control/common/are-sets-equal.js.map +1 -0
- package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js +13 -3
- package/dist/collection/components/team-dev/version-control/common/tabular-grid-render.js.map +1 -1
- package/dist/collection/components/team-dev/version-control/common/uncheck-ignored.js +18 -0
- package/dist/collection/components/team-dev/version-control/common/uncheck-ignored.js.map +1 -0
- package/dist/components/gx-ide-server-selector.js +12 -28
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +18 -4
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-team-dev-commit.js +78 -221
- package/dist/components/gx-ide-team-dev-commit.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +61 -10
- package/dist/components/gx-ide-team-dev-update.js.map +1 -1
- package/dist/components/tabular-grid-column-sort.js +41 -0
- package/dist/components/tabular-grid-column-sort.js.map +1 -0
- package/dist/components/tabular-grid-render.js +216 -0
- package/dist/components/tabular-grid-render.js.map +1 -0
- package/dist/components/uncheck-ignored.js +40 -0
- package/dist/components/uncheck-ignored.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +12 -28
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +20 -4
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +81 -220
- package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +60 -10
- package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/tabular-grid-column-sort-1d503b27.js +41 -0
- package/dist/esm/tabular-grid-column-sort-1d503b27.js.map +1 -0
- package/dist/esm/tabular-grid-render-f7eb612b.js +216 -0
- package/dist/esm/tabular-grid-render-f7eb612b.js.map +1 -0
- package/dist/esm/uncheck-ignored-4ba48c9e.js +40 -0
- package/dist/esm/uncheck-ignored-4ba48c9e.js.map +1 -0
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/p-02fb496a.js +36 -0
- package/dist/genexus-ide-ui/p-02fb496a.js.map +1 -0
- package/dist/genexus-ide-ui/{p-970e89ac.entry.js → p-4b06b578.entry.js} +100 -115
- package/dist/genexus-ide-ui/p-4b06b578.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-34447b77.entry.js → p-4e3ad78d.entry.js} +261 -234
- package/dist/genexus-ide-ui/p-4e3ad78d.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-77c2e69d.js +314 -0
- package/dist/genexus-ide-ui/p-77c2e69d.js.map +1 -0
- package/dist/genexus-ide-ui/p-a7883e6b.entry.js +691 -0
- package/dist/genexus-ide-ui/p-a7883e6b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-c9b9e260.js +36 -0
- package/dist/genexus-ide-ui/p-c9b9e260.js.map +1 -0
- package/dist/genexus-ide-ui/{p-42f37527.entry.js → p-e1a2550e.entry.js} +351 -289
- package/dist/genexus-ide-ui/p-e1a2550e.entry.js.map +1 -0
- package/dist/types/common/chameleon/tabular-grid-column-sort.d.ts +4 -0
- package/dist/types/components/team-dev/update/update.d.ts +6 -0
- package/dist/types/components/team-dev/version-control/commit/commit.d.ts +15 -13
- package/dist/types/components/team-dev/version-control/common/are-sets-equal.d.ts +12 -0
- package/dist/types/components/team-dev/version-control/common/tabular-grid-render.d.ts +13 -1
- package/dist/types/components/team-dev/version-control/common/uncheck-ignored.d.ts +13 -0
- package/package.json +1 -1
- package/dist/genexus-ide-ui/p-34447b77.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-42f37527.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-723d25ae.entry.js +0 -912
- package/dist/genexus-ide-ui/p-723d25ae.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-970e89ac.entry.js.map +0 -1
|
@@ -14,14 +14,18 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
14
14
|
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
15
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
16
|
};
|
|
17
|
-
var _GxIdeTeamDevUpdate_componentLocale, _GxIdeTeamDevUpdate_actionsComboBoxModel, _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, _GxIdeTeamDevUpdate_updateCheckedClickedHandler, _GxIdeTeamDevUpdate_reloadClickedHandler, _GxIdeTeamDevUpdate_updateObjectsHandler, _GxIdeTeamDevUpdate_renderActionCellContent, _GxIdeTeamDevUpdate_updateSingleObject, _GxIdeTeamDevUpdate_renderObjectStatus, _GxIdeTeamDevUpdate_renderRows, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, _GxIdeTeamDevUpdate_updatePendingCheckedItems, _GxIdeTeamDevUpdate_searchInputHandler, _GxIdeTeamDevUpdate_actionChangedHandler, _GxIdeTeamDevUpdate_typeChangedHandler, _GxIdeTeamDevUpdate_setInitialObjectsStatus, _GxIdeTeamDevUpdate_loadData, _GxIdeTeamDevUpdate_markPendingObjects, _GxIdeTeamDevUpdate_applyClientFilter, _GxIdeTeamDevUpdate_onRowContextMenuHandler, _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes, _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes, _GxIdeTeamDevUpdate_kbPropertiesChangedHandler;
|
|
17
|
+
var _GxIdeTeamDevUpdate_componentLocale, _GxIdeTeamDevUpdate_actionsComboBoxModel, _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, _GxIdeTeamDevUpdate_updateCheckedClickedHandler, _GxIdeTeamDevUpdate_reloadClickedHandler, _GxIdeTeamDevUpdate_updateObjectsHandler, _GxIdeTeamDevUpdate_renderActionCellContent, _GxIdeTeamDevUpdate_updateSingleObject, _GxIdeTeamDevUpdate_renderObjectStatus, _GxIdeTeamDevUpdate_renderRows, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, _GxIdeTeamDevUpdate_updatePendingCheckedItems, _GxIdeTeamDevUpdate_searchInputHandler, _GxIdeTeamDevUpdate_actionChangedHandler, _GxIdeTeamDevUpdate_typeChangedHandler, _GxIdeTeamDevUpdate_setInitialObjectsStatus, _GxIdeTeamDevUpdate_loadData, _GxIdeTeamDevUpdate_markPendingObjects, _GxIdeTeamDevUpdate_applyClientFilter, _GxIdeTeamDevUpdate_onRowContextMenuHandler, _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes, _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes, _GxIdeTeamDevUpdate_kbPropertiesChangedHandler, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, _GxIdeTeamDevUpdate_columnSelectorClickedCallback;
|
|
18
18
|
import { Host, h } from "@stencil/core";
|
|
19
19
|
import { getIconPath } from "@genexus/mercury";
|
|
20
20
|
import { Locale } from "../../../common/locale";
|
|
21
|
+
import uncheckIgnoredObjects from "../version-control/common/uncheck-ignored";
|
|
21
22
|
import { renderObjectTypeWithIcon } from "../common/utilities";
|
|
22
23
|
import { formatDate } from "../../../common/helpers";
|
|
23
24
|
import { config } from "../../../common/config";
|
|
24
25
|
import { mapObjectTypeToComboBoxItemModel } from "../version-control/common/object-type-to-combo-box";
|
|
26
|
+
import { COLUMNS_IDS } from "../version-control/common/tabular-grid-render";
|
|
27
|
+
import sortTabularGridColumn from "../../../common/chameleon/tabular-grid-column-sort";
|
|
28
|
+
import areSetsEqual from "../version-control/common/are-sets-equal";
|
|
25
29
|
const CSS_BUNDLES = [
|
|
26
30
|
"resets/box-sizing",
|
|
27
31
|
"components/tabular-grid",
|
|
@@ -123,7 +127,7 @@ export class GxIdeTeamDevUpdate {
|
|
|
123
127
|
this.objectsMessagesDataMap.delete(objectResult.id);
|
|
124
128
|
}
|
|
125
129
|
if (objectResult.result === "updated") {
|
|
126
|
-
this.alreadyUpdatedObjectsIdsSet.add(objectResult.id);
|
|
130
|
+
this.alreadyUpdatedObjectsIdsSet = new Set(this.alreadyUpdatedObjectsIdsSet).add(objectResult.id);
|
|
127
131
|
this.objectsStatusMap.set(objectResult.id, "updated");
|
|
128
132
|
await __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, "f").markRow(objectResult.id, false);
|
|
129
133
|
}
|
|
@@ -401,6 +405,39 @@ export class GxIdeTeamDevUpdate {
|
|
|
401
405
|
this.kbPropertiesChecked = event.detail === CHECKBOX_CHECKED_VALUE;
|
|
402
406
|
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_loadData, "f").call(this, true);
|
|
403
407
|
});
|
|
408
|
+
_GxIdeTeamDevUpdate_sortTabularGridColumnCallback.set(this, (e) => {
|
|
409
|
+
const columnId = e.detail.columnId;
|
|
410
|
+
let objectProperty;
|
|
411
|
+
let dateType = "string";
|
|
412
|
+
if (columnId === COLUMNS_IDS.modifiedOn ||
|
|
413
|
+
columnId === COLUMNS_IDS.lastSynchronized) {
|
|
414
|
+
dateType = "dateString";
|
|
415
|
+
}
|
|
416
|
+
this.pendingObjectsAfterActionFilter = [
|
|
417
|
+
...sortTabularGridColumn(e, this.pendingObjectsAfterActionFilter, dateType, objectProperty)
|
|
418
|
+
];
|
|
419
|
+
this.ignoredObjectsAfterActionFilter = [
|
|
420
|
+
...sortTabularGridColumn(e, this.ignoredObjectsAfterActionFilter, dateType, objectProperty)
|
|
421
|
+
];
|
|
422
|
+
});
|
|
423
|
+
/**
|
|
424
|
+
* WA: Ignored objects must always remain unchecked.
|
|
425
|
+
* Because `tabular-grid` selects all rows when the checkbox column is toggled,
|
|
426
|
+
* we need to manually unselect the ignored IDs. // TODO: Move this function
|
|
427
|
+
* to common
|
|
428
|
+
*/
|
|
429
|
+
_GxIdeTeamDevUpdate_columnSelectorClickedCallback.set(this, async (e) => {
|
|
430
|
+
const allRowsChecked = e.detail;
|
|
431
|
+
if (allRowsChecked) {
|
|
432
|
+
const markedRowsIds = await __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, "f").getMarkedRows();
|
|
433
|
+
const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {
|
|
434
|
+
return this.ignoredIdsSet.has(rowId);
|
|
435
|
+
});
|
|
436
|
+
if (ignoredMarkedRowsIds.length) {
|
|
437
|
+
uncheckIgnoredObjects(ignoredMarkedRowsIds, __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, "f"));
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
});
|
|
404
441
|
this.atLeastOneObjectIsChecked = false;
|
|
405
442
|
this.loading = true;
|
|
406
443
|
this.menuContextAction = undefined;
|
|
@@ -412,6 +449,7 @@ export class GxIdeTeamDevUpdate {
|
|
|
412
449
|
this.ignoredIdsSet = new Set([]);
|
|
413
450
|
this.objectsMessagesDataMap = new Map();
|
|
414
451
|
this.updating = false;
|
|
452
|
+
this.allPendingAreUpdated = false;
|
|
415
453
|
this.kbPropertiesChecked = false;
|
|
416
454
|
this.typesComboBoxModel = undefined;
|
|
417
455
|
this.selectedType = undefined;
|
|
@@ -434,6 +472,11 @@ export class GxIdeTeamDevUpdate {
|
|
|
434
472
|
markedObjectsSetChanged(newMarkedObjectsSet) {
|
|
435
473
|
this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;
|
|
436
474
|
}
|
|
475
|
+
alreadyUpdatedObjectsIdsSetChanged(newUpdatedObjectsIdsSet) {
|
|
476
|
+
const pendingIdsSetAndUpdatedIdsSetAreEqual = areSetsEqual(newUpdatedObjectsIdsSet, this.pendingIdsSet);
|
|
477
|
+
this.allPendingAreUpdated =
|
|
478
|
+
pendingIdsSetAndUpdatedIdsSetAreEqual && this.pendingIdsSet.size > 0;
|
|
479
|
+
}
|
|
437
480
|
objectsStatusMapChanged(newObjectsStatusMap) {
|
|
438
481
|
const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(([, state]) => state === "updating");
|
|
439
482
|
if (!someObjectIsUpdating) {
|
|
@@ -441,15 +484,20 @@ export class GxIdeTeamDevUpdate {
|
|
|
441
484
|
}
|
|
442
485
|
}
|
|
443
486
|
pendingAndIgnoredChanged() {
|
|
444
|
-
|
|
445
|
-
this.
|
|
487
|
+
this.pendingIdsSet.clear(); // before pendingIdsSet.add
|
|
488
|
+
this.ignoredIdsSet.clear(); // before pendingIdsSet.add
|
|
489
|
+
this.objectsMessagesDataMap = new Map();
|
|
490
|
+
this.alreadyUpdatedObjectsIdsSet = new Set();
|
|
491
|
+
this.markedObjectsSet = new Set(); // before #markPendingObjects
|
|
446
492
|
this.pendingAndIgnored.pendingForUpdate.forEach(pending => {
|
|
447
493
|
this.pendingIdsSet.add(pending.id);
|
|
448
494
|
});
|
|
449
|
-
this.ignoredIdsSet.clear();
|
|
450
495
|
this.pendingAndIgnored.ignoredObjects.forEach(ignored => {
|
|
451
496
|
this.ignoredIdsSet.add(ignored.id);
|
|
452
497
|
});
|
|
498
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_markPendingObjects, "f").call(this); // after pendingIdsSet.add and ignoredIdsSet.add
|
|
499
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_setInitialObjectsStatus, "f").call(this); // after pendingIdsSet.add and ignoredIdsSet.add
|
|
500
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_applyClientFilter, "f").call(this);
|
|
453
501
|
}
|
|
454
502
|
async componentWillLoad() {
|
|
455
503
|
var _a;
|
|
@@ -483,6 +531,8 @@ export class GxIdeTeamDevUpdate {
|
|
|
483
531
|
}
|
|
484
532
|
async componentDidLoad() {
|
|
485
533
|
await __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_loadData, "f").call(this, true);
|
|
534
|
+
// initialize "allPendingAreUpdated"
|
|
535
|
+
this.alreadyUpdatedObjectsIdsSetChanged(this.alreadyUpdatedObjectsIdsSet);
|
|
486
536
|
}
|
|
487
537
|
/**
|
|
488
538
|
* Used by the host to instruct the component to force a data reload in the grids.
|
|
@@ -491,7 +541,6 @@ export class GxIdeTeamDevUpdate {
|
|
|
491
541
|
__classPrivateFieldGet(this, _GxIdeTeamDevUpdate_loadData, "f").call(this, true);
|
|
492
542
|
}
|
|
493
543
|
render() {
|
|
494
|
-
const enableRichRowSelector = true;
|
|
495
544
|
const disableControls = this.updating || this.loading;
|
|
496
545
|
const gridIsEmpty = this.pendingObjectsAfterActionFilter.length === 0 &&
|
|
497
546
|
this.ignoredObjectsAfterActionFilter.length === 0;
|
|
@@ -533,10 +582,10 @@ export class GxIdeTeamDevUpdate {
|
|
|
533
582
|
"objects-tabular-grid": true,
|
|
534
583
|
"disabled-custom-selector": this.updating,
|
|
535
584
|
"empty-result": gridIsEmpty
|
|
536
|
-
}, keyboardNavigationMode: "focus", rowSelectionMode: "multiple", onRowMarkingChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, "f"), onRowContextMenu: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_onRowContextMenuHandler, "f").call(this), ref: (el) => (__classPrivateFieldSet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, el, "f")) }, h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId:
|
|
585
|
+
}, keyboardNavigationMode: "focus", rowSelectionMode: "multiple", onRowMarkingChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_rowMarkingChangedHandler, "f"), onRowContextMenu: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_onRowContextMenuHandler, "f").call(this), ref: (el) => (__classPrivateFieldSet(this, _GxIdeTeamDevUpdate_chGridPendingForUpdateEl, el, "f")) }, h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.name, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.name, columnType: "rich", richRowSelector: !this.allPendingAreUpdated, richRowSelectorMode: "mark", settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), onColumnSelectorClicked: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_columnSelectorClickedCallback, "f"), size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.type, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.type, settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.description, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.description, settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), size: config.tabularGrid.colSize.description }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.modifiedOn, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.modifiedOn, settingable: false, sortable: true, onColumnSortChanged: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_sortTabularGridColumnCallback, "f"), size: "max-content" }), h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.action, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.action, settingable: false, sortable: false, size: "max-content" }), h("ch-tabular-grid-column", {
|
|
537
586
|
// size of this column should the enough for the largest pill, and no more.
|
|
538
587
|
// this prevents layout shifts when pills state changes.
|
|
539
|
-
class: "tabular-grid-column", columnId:
|
|
588
|
+
class: "tabular-grid-column", columnId: COLUMNS_IDS.status, columnName: __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.status, settingable: false, sortable: false, size: "100px"
|
|
540
589
|
})), !gridIsEmpty
|
|
541
590
|
? [
|
|
542
591
|
h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, h("ch-tabular-grid-rowset-legend", { class: "tabular-grid-rowset-legend" }, __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_componentLocale, "f").objects.pending), __classPrivateFieldGet(this, _GxIdeTeamDevUpdate_renderRows, "f").call(this, "pending")),
|
|
@@ -738,6 +787,7 @@ export class GxIdeTeamDevUpdate {
|
|
|
738
787
|
"ignoredIdsSet": {},
|
|
739
788
|
"objectsMessagesDataMap": {},
|
|
740
789
|
"updating": {},
|
|
790
|
+
"allPendingAreUpdated": {},
|
|
741
791
|
"kbPropertiesChecked": {},
|
|
742
792
|
"typesComboBoxModel": {},
|
|
743
793
|
"selectedType": {},
|
|
@@ -773,6 +823,9 @@ export class GxIdeTeamDevUpdate {
|
|
|
773
823
|
return [{
|
|
774
824
|
"propName": "markedObjectsSet",
|
|
775
825
|
"methodName": "markedObjectsSetChanged"
|
|
826
|
+
}, {
|
|
827
|
+
"propName": "alreadyUpdatedObjectsIdsSet",
|
|
828
|
+
"methodName": "alreadyUpdatedObjectsIdsSetChanged"
|
|
776
829
|
}, {
|
|
777
830
|
"propName": "objectsStatusMap",
|
|
778
831
|
"methodName": "objectsStatusMapChanged"
|
|
@@ -782,5 +835,5 @@ export class GxIdeTeamDevUpdate {
|
|
|
782
835
|
}];
|
|
783
836
|
}
|
|
784
837
|
}
|
|
785
|
-
_GxIdeTeamDevUpdate_componentLocale = new WeakMap(), _GxIdeTeamDevUpdate_actionsComboBoxModel = new WeakMap(), _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser = new WeakMap(), _GxIdeTeamDevUpdate_chGridPendingForUpdateEl = new WeakMap(), _GxIdeTeamDevUpdate_updateCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_reloadClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updateObjectsHandler = new WeakMap(), _GxIdeTeamDevUpdate_renderActionCellContent = new WeakMap(), _GxIdeTeamDevUpdate_updateSingleObject = new WeakMap(), _GxIdeTeamDevUpdate_renderObjectStatus = new WeakMap(), _GxIdeTeamDevUpdate_renderRows = new WeakMap(), _GxIdeTeamDevUpdate_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updatePendingCheckedItems = new WeakMap(), _GxIdeTeamDevUpdate_searchInputHandler = new WeakMap(), _GxIdeTeamDevUpdate_actionChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_typeChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_setInitialObjectsStatus = new WeakMap(), _GxIdeTeamDevUpdate_loadData = new WeakMap(), _GxIdeTeamDevUpdate_markPendingObjects = new WeakMap(), _GxIdeTeamDevUpdate_applyClientFilter = new WeakMap(), _GxIdeTeamDevUpdate_onRowContextMenuHandler = new WeakMap(), _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_kbPropertiesChangedHandler = new WeakMap();
|
|
838
|
+
_GxIdeTeamDevUpdate_componentLocale = new WeakMap(), _GxIdeTeamDevUpdate_actionsComboBoxModel = new WeakMap(), _GxIdeTeamDevUpdate_rowCheckedChangedByTheUser = new WeakMap(), _GxIdeTeamDevUpdate_chGridPendingForUpdateEl = new WeakMap(), _GxIdeTeamDevUpdate_updateCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_reloadClickedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updateObjectsHandler = new WeakMap(), _GxIdeTeamDevUpdate_renderActionCellContent = new WeakMap(), _GxIdeTeamDevUpdate_updateSingleObject = new WeakMap(), _GxIdeTeamDevUpdate_renderObjectStatus = new WeakMap(), _GxIdeTeamDevUpdate_renderRows = new WeakMap(), _GxIdeTeamDevUpdate_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_updatePendingCheckedItems = new WeakMap(), _GxIdeTeamDevUpdate_searchInputHandler = new WeakMap(), _GxIdeTeamDevUpdate_actionChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_typeChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_setInitialObjectsStatus = new WeakMap(), _GxIdeTeamDevUpdate_loadData = new WeakMap(), _GxIdeTeamDevUpdate_markPendingObjects = new WeakMap(), _GxIdeTeamDevUpdate_applyClientFilter = new WeakMap(), _GxIdeTeamDevUpdate_onRowContextMenuHandler = new WeakMap(), _GxIdeTeamDevUpdate_revertPendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_togglePendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevUpdate_kbPropertiesChangedHandler = new WeakMap(), _GxIdeTeamDevUpdate_sortTabularGridColumnCallback = new WeakMap(), _GxIdeTeamDevUpdate_columnSelectorClickedCallback = new WeakMap();
|
|
786
839
|
//# sourceMappingURL=update.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/components/team-dev/update/update.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChCheckboxCustomEvent,\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\nimport { formatDate } from \"../../../common/helpers\";\nimport {\n ContextMenuInfo,\n ItemsCheckedResult,\n ItemsCheckedState,\n ObjectType\n} from \"../../../common/types\";\nimport { config } from \"../../../common/config\";\nimport { mapObjectTypeToComboBoxItemModel } from \"../version-control/common/object-type-to-combo-box\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst CHECKBOX_CHECKED_VALUE = \"true\";\nconst CHECKBOX_UNCHECKED_VALUE = \"false\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\n// icons\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\nconst SUCCESS_ICON = getIconPath({\n category: \"system\",\n name: \"check \",\n colorType: \"success\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-elevation\"\n});\nconst REFRESH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"neutral\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-update\",\n styleUrl: \"update.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-update\"]\n})\nexport class GxIdeTeamDevUpdate {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #actionsComboBoxModel: { caption: string; value: ActionForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be called or not.\n * It should be ignored if the grid checkboxes state is changed programmatically, by\n * setting markRow to false once the object has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // - - - - - - - - - - - - -\n // States Bring Changes\n // - - - - - - - - - - - - -\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: Action;\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() selectedAction: ActionForFilter = \"all-actions\";\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>([]);\n @Watch(\"markedObjectsSet\")\n markedObjectsSetChanged(newMarkedObjectsSet: Set<string>) {\n this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;\n }\n\n /**\n * A set that holds the id's of the objects that have been updated already.\n */\n @State() alreadyUpdatedObjectsIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly determine if the selected rows belong\n * to \"pending\" or not. This information is required for the ContextMenuCallback callback. This set has to be updated\n * on every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the ignored objects. Used to quickly determine if the selected rows belong\n * to \"ignored\" or not. This information is required for the ContextMenuCallback callback. This set has to be updated\n * on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A map that holds object messages, after trying to update ('info' | ‘success’ | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() updating: boolean = false;\n\n // - - - - - - - - - - - - -\n // State Update\n // - - - - - - - - - - - - -\n\n /**\n * The \"KB Properties\" checkbox value\n */\n @State() kbPropertiesChecked: boolean = false;\n\n /**\n * The combobox model for the types filter.\n */\n @State() typesComboBoxModel: ComboBoxModel;\n\n /**\n * The selected type\n */\n @State() selectedType: string;\n\n /**\n * A map that holds the current update objects states (\"inserted\" | \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" | \"update\")\n */\n @State() objectsStatusMap: Map<string, StatusInternal> = new Map();\n @Watch(\"objectsStatusMap\")\n objectsStatusMapChanged(newObjectsStatusMap: Map<string, StatusInternal>) {\n const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(\n ([, state]) => state === \"updating\"\n );\n\n if (!someObjectIsUpdating) {\n this.updating = false;\n }\n }\n\n // - - - - - - - - - - - - -\n // Properties Bring Changes\n // - - - - - - - - - - - - -\n\n /**\n * Callback invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before \"state\" filter\n */\n @State() pendingAndIgnored: UpdateData = {\n pendingForUpdate: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged() {\n this.#applyClientFilter();\n this.pendingIdsSet.clear();\n this.pendingAndIgnored.pendingForUpdate.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n this.ignoredIdsSet.clear();\n this.pendingAndIgnored.ignoredObjects.forEach(ignored => {\n this.ignoredIdsSet.add(ignored.id);\n });\n }\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterActionFilter: ModifiedObject[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterActionFilter: ModifiedObject[] = [];\n\n /**\n * Callback invoked to return the list of data types loaded from file or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Callback invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Possible values for type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n // - - - - - - - - - - - - -\n // Properties Update\n // - - - - - - - - - - - - -\n\n /**\n * Callback invoked when the update process is to be started (’Update’ button).\n */\n @Prop() readonly updateCallback!: UpdateCallback;\n\n /**\n * Callback invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly updateFrom: UpdateFromData;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#actionsComboBoxModel = [\n {\n caption: this.#componentLocale.actions.allActions,\n value: \"all-actions\"\n },\n {\n caption: this.#componentLocale.actions.insert,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.actions.modify,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.actions.modifyWithConflicts,\n value: \"modified-with-conflicts\"\n },\n {\n caption: this.#componentLocale.actions.delete,\n value: \"deleted\"\n }\n ];\n\n // Set type initial value\n this.selectedType = this.types[0]?.id;\n\n this.typesComboBoxModel = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n await this.#loadData(true);\n }\n\n /**\n * Used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n this.#loadData(true);\n }\n\n #updateCheckedClickedHandler = async () => {\n this.#updateObjectsHandler([...this.markedObjectsSet]);\n };\n\n #reloadClickedHandler = async () => {\n this.#loadData(true);\n };\n\n #updateObjectsHandler = async (selection: string[]) => {\n this.#rowCheckedChangedByTheUser = false;\n this.updating = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"updating\");\n });\n\n const updateResult = await this.updateCallback(selection);\n updateResult.forEach(async objectResult => {\n const messages = objectResult.messages;\n if (messages.length) {\n this.objectsMessagesDataMap.set(objectResult.id, objectResult.messages);\n } else {\n // clear messages\n this.objectsMessagesDataMap.delete(objectResult.id);\n }\n if (objectResult.result === \"updated\") {\n this.alreadyUpdatedObjectsIdsSet.add(objectResult.id);\n this.objectsStatusMap.set(objectResult.id, \"updated\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n this.updating = false;\n };\n\n #renderActionCellContent = (\n action: Action\n ): JSX.Element[] | null | string => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (action === \"deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (action === \"inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else if (action === \"modified\") {\n icon = EDITED_ICON;\n caption = this.#componentLocale.actions.modify;\n iconColor = \"--mer-icon__warning\";\n } else if (action === \"modified-with-conflicts\") {\n icon = WARNING_ICON;\n caption = this.#componentLocale.actions.modifyWithConflicts;\n iconColor = \"--mer-icon__warning\";\n } else if (!action) {\n // proably is \"ignored\"\n return null;\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #updateSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"updating\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#updateObjectsHandler([objectId]);\n };\n\n #renderObjectStatus = (objectId: string): JSX.Element[] => {\n const status = this.objectsStatusMap.get(objectId);\n\n const caption =\n status === \"pending\" && this.updatePillAsButton\n ? this.#componentLocale.status.update\n : this.#componentLocale.status[status];\n if (status === \"updating\") {\n return <span class=\"updating-spinner-caption\">{caption}</span>;\n }\n const classes = `pill pill--${status}`;\n if (this.updatePillAsButton && status === \"pending\") {\n return (\n <button\n class=\"button-secondary pill pill--update\"\n onClick={this.#updateSingleObject(objectId)}\n >\n {caption}\n </button>\n );\n } else {\n return <span class={classes}>{caption}</span>;\n }\n };\n\n #renderRows = (type: UpdateSourceType): JSX.Element[] => {\n let objects: ModifiedObject[];\n if (type === \"pending\") {\n objects = this.pendingObjectsAfterActionFilter;\n } else if (type === \"ignored\") {\n objects = this.ignoredObjectsAfterActionFilter;\n }\n\n return objects.map(object => {\n const objectType: ObjectType = {\n id: object.id,\n icon: object.typeIcon,\n name: object.name\n };\n\n const alreadyUpdated = this.alreadyUpdatedObjectsIdsSet.has(object.id);\n const hideCheckbox = alreadyUpdated || type === \"ignored\";\n\n const marked = this.markedObjectsSet.has(object.id);\n\n const messages = this.objectsMessagesDataMap.get(object.id);\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={object.id}\n rowid={object.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": hideCheckbox\n }}\n size=\"max-content\"\n >\n {object.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(objectType)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(object.modifiedOn)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(object.action)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectStatus(object.id)}\n </ch-tabular-grid-cell>\n\n {messages?.length && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{\n \"tabular-grid-rowset-empty\": true\n }}\n >\n <ul class=\"messages-list\">\n {messages.map(message => {\n let MESSAGE_ICON;\n if (message.type === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (message.type === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n } else if (message.type === \"success\") {\n MESSAGE_ICON = SUCCESS_ICON;\n } else {\n // info\n MESSAGE_ICON = INFO_ICON;\n }\n\n return (\n <li class=\"message-description\">\n <ch-image\n class=\"icon-md message-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {message.text}\n </li>\n );\n })}\n </ul>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId => !this.alreadyUpdatedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const addedRowsIds = event.detail.addedRowsId;\n const removedRowsId = event.detail.removedRowsId;\n\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = event.detail as string;\n this.#loadData();\n };\n\n // Local Methods Update\n\n #actionChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedAction = event.detail as ActionForFilter;\n this.#loadData();\n };\n\n #typeChangedHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #setInitialObjectsStatus = (): void => {\n this.pendingAndIgnored.pendingForUpdate.forEach(pendingObject => {\n const status: StatusInternal =\n (pendingObject.status as Status) ?? \"pending\";\n\n this.objectsStatusMap.set(pendingObject.id, status);\n if (status === \"updated\") {\n this.alreadyUpdatedObjectsIdsSet.add(pendingObject.id);\n }\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal =\n (ignoredObject.status as Status) ?? \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (forceLoad: boolean = false): Promise<void> => {\n const filters: FiltersData = {\n search: this.searchValue,\n type: this.selectedType,\n kbProperties: this.kbPropertiesChecked,\n action: this.selectedAction\n };\n this.loading = true;\n this.objectsMessagesDataMap.clear();\n\n this.pendingAndIgnored = await this.loadCallback(filters, forceLoad);\n this.#setInitialObjectsStatus();\n\n this.loading = false;\n\n // Is is required to mark/check all objects after loadCallback.\n this.#markPendingObjects();\n };\n\n /**\n * Marks all pending objects that have not been committed yet.\n *\n * Iterates through all pending object IDs and adds them to the marked objects set\n * if they are not already in the committed objects set. This effectively identifies\n * and marks all the pending objects that still need to be processed.\n **/\n #markPendingObjects = () => {\n for (const pendingId of this.pendingIdsSet) {\n if (!this.alreadyUpdatedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n #applyClientFilter = () => {\n // this.pendingObjectsAfterActionFilter = this.#filteredObjects(\n // this.pendingAndIgnored.pendingForUpdate\n // );\n this.pendingObjectsAfterActionFilter =\n this.pendingAndIgnored.pendingForUpdate;\n // this.ignoredObjectsAfterActionFilter = this.#filteredObjects(\n // this.pendingAndIgnored.ignoredObjects\n // );\n this.ignoredObjectsAfterActionFilter =\n this.pendingAndIgnored.ignoredObjects;\n };\n\n // #filteredObjects = (objects: ModifiedObject[]): ModifiedObject[] => {\n // let filtered = objects;\n\n // // name or description\n // if (this.searchValue.length) {\n // filtered = filtered.filter(object => {\n // const nameFiltered = object.name\n // .toLowerCase()\n // .includes(this.searchValue.toLowerCase());\n\n // const descriptionFiltered = object.description\n // .toLowerCase()\n // .includes(this.searchValue.toLowerCase());\n\n // return nameFiltered || descriptionFiltered;\n // });\n // }\n\n // return filtered;\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selection = await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const selectedRowId = (\n await this.#chGridPendingForUpdateEl.getSelectedCell()\n ).rowId;\n\n const source: UpdateSourceType = this.pendingIdsSet.has(selectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n let filteredSelection: string[] = [];\n // remove selected rows from the other source, if any.\n if (selection.length > 1 && source === \"pending\") {\n selection.forEach(async selectedRowId => {\n if (this.ignoredIdsSet.has(selectedRowId)) {\n await this.#chGridPendingForUpdateEl.selectRow(\n selectedRowId,\n false\n );\n } else {\n filteredSelection.push(selectedRowId);\n }\n });\n } else if (selection.length > 1 && source === \"ignored\") {\n selection.forEach(async selectedRowId => {\n if (this.pendingIdsSet.has(selectedRowId)) {\n await this.#chGridPendingForUpdateEl.selectRow(\n selectedRowId,\n false\n );\n } else {\n filteredSelection.push(selectedRowId);\n }\n });\n } else {\n filteredSelection = selection;\n }\n\n await this.contextMenuCallback(source, {\n selection: filteredSelection,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n for (const rowId of addedRowsIds) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n }\n };\n\n #togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n }\n };\n\n #kbPropertiesChangedHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.kbPropertiesChecked = event.detail === CHECKBOX_CHECKED_VALUE;\n this.#loadData(true);\n };\n\n render() {\n const enableRichRowSelector = true;\n const disableControls = this.updating || this.loading;\n const gridIsEmpty =\n this.pendingObjectsAfterActionFilter.length === 0 &&\n this.ignoredObjectsAfterActionFilter.length === 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail header__detail-1\"\n >\n <p class=\"detail__heading-genexus-server subtitle-semi-bold-s\">\n {this.#componentLocale.commitDetail.title}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <button\n class=\"detail__link body-regular-s\"\n onClick={this.openServerCallback}\n >\n {this.updateFrom ? this.updateFrom.serverUrl : \"\"}\n </button>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">\n {this.updateFrom ? this.updateFrom.kbName : \"\"}\n </p>\n </div>\n\n <div\n // version\n class=\"detail__version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.version}\n </span>\n <p class=\"body-regular-s\">\n {this.updateFrom ? this.updateFrom.versionName : \"\"}\n </p>\n </div>\n\n <div\n // last full update\n class=\"detail__last-full-update field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.lastFullUpdate}\n </span>\n <p class=\"body-regular-s\">\n {formatDate(this.updateFrom.lastFullUpdate)}\n </p>\n </div>\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class=\"filter\">\n <ch-edit\n // search\n class=\"input filter__search\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n debounce={config.inputDebounce}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__types\"\n disabled={disableControls}\n model={this.typesComboBoxModel}\n value={this.selectedType}\n accessibleName={this.#componentLocale.filter.typeAccesibleName}\n placeholder={this.#componentLocale.filter.typePlaceholder}\n onInput={this.#typeChangedHandler}\n ></ch-combo-box-render>\n\n <ch-combo-box-render\n // actions\n class=\"combo-box filter__actions\"\n disabled={disableControls}\n model={this.#actionsComboBoxModel}\n value={this.selectedAction}\n onInput={this.#actionChangedHandler}\n accessibleName={\n this.#componentLocale.filter.actionAccesibleName\n }\n placeholder={this.#componentLocale.filter.actionPlaceholder}\n ></ch-combo-box-render>\n\n <ch-checkbox\n // kb properties\n class=\"checkbox filter__kb-properties\"\n caption={this.#componentLocale.filter.kbProperties}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n value={CHECKBOX_UNCHECKED_VALUE}\n onInput={this.#kbPropertiesChangedHandler}\n disabled={disableControls}\n />\n\n <div class=\"buttons-spacer filter__buttons\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#reloadClickedHandler}\n >\n <ch-image class=\"icon-md\" src={REFRESH_ICON}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n <button\n // update button\n class=\"button-primary button-update\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#updateCheckedClickedHandler}\n >\n {this.#componentLocale.filter.update}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"main spacing-body\">\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.updating,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size={config.tabularGrid.colSize.description}\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"modified-on\"\n columnName={this.#componentLocale.objects.modifiedOn}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty\n ? [\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.pending}\n </ch-tabular-grid-rowset-legend>\n {this.#renderRows(\"pending\")}\n </ch-tabular-grid-rowset>,\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.ignored}\n </ch-tabular-grid-rowset-legend>\n {this.#renderRows(\"ignored\")}\n </ch-tabular-grid-rowset>\n ]\n : null}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {gridIsEmpty && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\n// - - - - - - - - - - - - -\n// Types from Update\n// - - - - - - - - - - - - -\n\nexport type Status = \"pending\" | \"updated\" | \"ignored\";\n\nexport type StatusInternal = Status | \"updating\" | \"ignored\";\n\nexport type Action =\n | \"inserted\"\n | \"modified\"\n | \"modified-with-conflicts\"\n | \"deleted\";\n\ntype ActionForFilter = Action | \"all-actions\";\n\nexport type ContextMenuCallback = (\n source: UpdateSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type PendingItemsCheckedCallback = (\n pendingItemsCheckedState: ItemsCheckedState\n) => Promise<ItemsCheckedResult | undefined>;\n\nexport type UpdateSourceType = \"pending\" | \"ignored\";\n\nexport type LoadCallback = (\n filters: FiltersData,\n forceLoad: boolean\n) => Promise<UpdateData>;\n\nexport interface ModifiedObject {\n id: string;\n typeIcon: string;\n action?: Action;\n name: string;\n type: string;\n description?: string;\n modifiedOn?: Date;\n status?: Status;\n}\nexport interface UpdateData {\n pendingForUpdate: ModifiedObject[];\n ignoredObjects: ModifiedObject[];\n}\n\nexport interface FiltersData {\n search: string;\n type: string;\n kbProperties: boolean;\n action: ActionForFilter;\n}\n\nexport interface UpdateFromData {\n serverUrl: string;\n kbName: string;\n versionName: string;\n lastFullUpdate: Date;\n}\n\nexport type UpdateCallback = (\n selection: string[]\n) => Promise<UpdateResultData[]>;\n\nexport interface UpdateResultData {\n id: string;\n result: Status;\n messages: MessageData[];\n}\n\nexport interface MessageData {\n type: \"info\" | \"success\" | \"warning\" | \"error\";\n text: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/components/team-dev/update/update.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChCheckboxCustomEvent,\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridColumnSelectorClickedEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\n\nimport uncheckIgnoredObjects from \"../version-control/common/uncheck-ignored\";\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\nimport { formatDate } from \"../../../common/helpers\";\nimport {\n ContextMenuInfo,\n ItemsCheckedResult,\n ItemsCheckedState,\n ObjectType\n} from \"../../../common/types\";\nimport { config } from \"../../../common/config\";\nimport { mapObjectTypeToComboBoxItemModel } from \"../version-control/common/object-type-to-combo-box\";\nimport { COLUMNS_IDS } from \"../version-control/common/tabular-grid-render\";\nimport sortTabularGridColumn, {\n type SortTabularGridColumnDataType\n} from \"../../../common/chameleon/tabular-grid-column-sort\";\nimport areSetsEqual from \"../version-control/common/are-sets-equal\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst CHECKBOX_CHECKED_VALUE = \"true\";\nconst CHECKBOX_UNCHECKED_VALUE = \"false\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\n// icons\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\nconst SUCCESS_ICON = getIconPath({\n category: \"system\",\n name: \"check \",\n colorType: \"success\"\n});\nconst INFO_ICON = getIconPath({\n category: \"system\",\n name: \"information\",\n colorType: \"on-elevation\"\n});\nconst REFRESH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"neutral\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-update\",\n styleUrl: \"update.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-update\"]\n})\nexport class GxIdeTeamDevUpdate {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n #actionsComboBoxModel: { caption: string; value: ActionForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be called or not.\n * It should be ignored if the grid checkboxes state is changed programmatically, by\n * setting markRow to false once the object has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // - - - - - - - - - - - - -\n // States Bring Changes\n // - - - - - - - - - - - - -\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: Action;\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() selectedAction: ActionForFilter = \"all-actions\";\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>([]);\n @Watch(\"markedObjectsSet\")\n markedObjectsSetChanged(newMarkedObjectsSet: Set<string>) {\n this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;\n }\n\n /**\n * A set that holds the id's of the objects that have been updated already.\n */\n @State() alreadyUpdatedObjectsIdsSet: Set<string> = new Set<string>([]);\n @Watch(\"alreadyUpdatedObjectsIdsSet\")\n alreadyUpdatedObjectsIdsSetChanged(newUpdatedObjectsIdsSet: Set<string>) {\n const pendingIdsSetAndUpdatedIdsSetAreEqual = areSetsEqual(\n newUpdatedObjectsIdsSet,\n this.pendingIdsSet\n );\n\n this.allPendingAreUpdated =\n pendingIdsSetAndUpdatedIdsSetAreEqual && this.pendingIdsSet.size > 0;\n }\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly determine if the selected rows belong\n * to \"pending\" or not. This information is required for the ContextMenuCallback callback. This set has to be updated\n * on every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the ignored objects. Used to quickly determine if the selected rows belong\n * to \"ignored\" or not. This information is required for the ContextMenuCallback callback. This set has to be updated\n * on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A map that holds object messages, after trying to update ('info' | ‘success’ | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() updating: boolean = false;\n\n // - - - - - - - - - - - - -\n // State Update\n // - - - - - - - - - - - - -\n\n /**\n * A boolean that indicates if all the pending objects, have been updated\n * already.\n */\n @State() allPendingAreUpdated: boolean = false;\n\n /**\n * The \"KB Properties\" checkbox value\n */\n @State() kbPropertiesChecked: boolean = false;\n\n /**\n * The combobox model for the types filter.\n */\n @State() typesComboBoxModel: ComboBoxModel;\n\n /**\n * The selected type\n */\n @State() selectedType: string;\n\n /**\n * A map that holds the current update objects states (\"inserted\" | \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" | \"update\")\n */\n @State() objectsStatusMap: Map<string, StatusInternal> = new Map();\n @Watch(\"objectsStatusMap\")\n objectsStatusMapChanged(newObjectsStatusMap: Map<string, StatusInternal>) {\n const someObjectIsUpdating = [...newObjectsStatusMap.entries()].find(\n ([, state]) => state === \"updating\"\n );\n\n if (!someObjectIsUpdating) {\n this.updating = false;\n }\n }\n\n // - - - - - - - - - - - - -\n // Properties Bring Changes\n // - - - - - - - - - - - - -\n\n /**\n * Callback invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before \"state\" filter\n */\n @State() pendingAndIgnored: UpdateData = {\n pendingForUpdate: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged() {\n this.pendingIdsSet.clear(); // before pendingIdsSet.add\n this.ignoredIdsSet.clear(); // before pendingIdsSet.add\n this.objectsMessagesDataMap = new Map();\n this.alreadyUpdatedObjectsIdsSet = new Set();\n this.markedObjectsSet = new Set(); // before #markPendingObjects\n\n this.pendingAndIgnored.pendingForUpdate.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n\n this.pendingAndIgnored.ignoredObjects.forEach(ignored => {\n this.ignoredIdsSet.add(ignored.id);\n });\n\n this.#markPendingObjects(); // after pendingIdsSet.add and ignoredIdsSet.add\n this.#setInitialObjectsStatus(); // after pendingIdsSet.add and ignoredIdsSet.add\n\n this.#applyClientFilter();\n }\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterActionFilter: ModifiedObject[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterActionFilter: ModifiedObject[] = [];\n\n /**\n * Callback invoked to return the list of data types loaded from file or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Callback invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Possible values for type filter\n */\n @Prop() readonly types: ObjectType[];\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n // - - - - - - - - - - - - -\n // Properties Update\n // - - - - - - - - - - - - -\n\n /**\n * Callback invoked when the update process is to be started (’Update’ button).\n */\n @Prop() readonly updateCallback!: UpdateCallback;\n\n /**\n * Callback invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly updateFrom: UpdateFromData;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#actionsComboBoxModel = [\n {\n caption: this.#componentLocale.actions.allActions,\n value: \"all-actions\"\n },\n {\n caption: this.#componentLocale.actions.insert,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.actions.modify,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.actions.modifyWithConflicts,\n value: \"modified-with-conflicts\"\n },\n {\n caption: this.#componentLocale.actions.delete,\n value: \"deleted\"\n }\n ];\n\n // Set type initial value\n this.selectedType = this.types[0]?.id;\n\n this.typesComboBoxModel = mapObjectTypeToComboBoxItemModel(this.types);\n }\n\n async componentDidLoad() {\n await this.#loadData(true);\n\n // initialize \"allPendingAreUpdated\"\n this.alreadyUpdatedObjectsIdsSetChanged(this.alreadyUpdatedObjectsIdsSet);\n }\n\n /**\n * Used by the host to instruct the component to force a data reload in the grids.\n */\n @Method()\n async reload() {\n this.#loadData(true);\n }\n\n #updateCheckedClickedHandler = async () => {\n this.#updateObjectsHandler([...this.markedObjectsSet]);\n };\n\n #reloadClickedHandler = async () => {\n this.#loadData(true);\n };\n\n #updateObjectsHandler = async (selection: string[]) => {\n this.#rowCheckedChangedByTheUser = false;\n this.updating = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"updating\");\n });\n\n const updateResult = await this.updateCallback(selection);\n updateResult.forEach(async objectResult => {\n const messages = objectResult.messages;\n if (messages.length) {\n this.objectsMessagesDataMap.set(objectResult.id, objectResult.messages);\n } else {\n // clear messages\n this.objectsMessagesDataMap.delete(objectResult.id);\n }\n if (objectResult.result === \"updated\") {\n this.alreadyUpdatedObjectsIdsSet = new Set(\n this.alreadyUpdatedObjectsIdsSet\n ).add(objectResult.id);\n\n this.objectsStatusMap.set(objectResult.id, \"updated\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n this.updating = false;\n };\n\n #renderActionCellContent = (\n action: Action\n ): JSX.Element[] | null | string => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (action === \"deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (action === \"inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else if (action === \"modified\") {\n icon = EDITED_ICON;\n caption = this.#componentLocale.actions.modify;\n iconColor = \"--mer-icon__warning\";\n } else if (action === \"modified-with-conflicts\") {\n icon = WARNING_ICON;\n caption = this.#componentLocale.actions.modifyWithConflicts;\n iconColor = \"--mer-icon__warning\";\n } else if (!action) {\n // proably is \"ignored\"\n return null;\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #updateSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"updating\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#updateObjectsHandler([objectId]);\n };\n\n #renderObjectStatus = (objectId: string): JSX.Element[] => {\n const status = this.objectsStatusMap.get(objectId);\n\n const caption =\n status === \"pending\" && this.updatePillAsButton\n ? this.#componentLocale.status.update\n : this.#componentLocale.status[status];\n if (status === \"updating\") {\n return <span class=\"updating-spinner-caption\">{caption}</span>;\n }\n const classes = `pill pill--${status}`;\n if (this.updatePillAsButton && status === \"pending\") {\n return (\n <button\n class=\"button-secondary pill pill--update\"\n onClick={this.#updateSingleObject(objectId)}\n >\n {caption}\n </button>\n );\n } else {\n return <span class={classes}>{caption}</span>;\n }\n };\n\n #renderRows = (type: UpdateSourceType): JSX.Element[] => {\n let objects: ModifiedObject[];\n if (type === \"pending\") {\n objects = this.pendingObjectsAfterActionFilter;\n } else if (type === \"ignored\") {\n objects = this.ignoredObjectsAfterActionFilter;\n }\n\n return objects.map(object => {\n const objectType: ObjectType = {\n id: object.id,\n icon: object.typeIcon,\n name: object.name\n };\n\n const alreadyUpdated = this.alreadyUpdatedObjectsIdsSet.has(object.id);\n const hideCheckbox = alreadyUpdated || type === \"ignored\";\n\n const marked = this.markedObjectsSet.has(object.id);\n\n const messages = this.objectsMessagesDataMap.get(object.id);\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={object.id}\n rowid={object.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": hideCheckbox\n }}\n size=\"max-content\"\n >\n {object.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(objectType)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {object.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(object.modifiedOn)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(object.action)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectStatus(object.id)}\n </ch-tabular-grid-cell>\n\n {messages?.length && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{\n \"tabular-grid-rowset-empty\": true\n }}\n >\n <ul class=\"messages-list\">\n {messages.map(message => {\n let MESSAGE_ICON;\n if (message.type === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (message.type === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n } else if (message.type === \"success\") {\n MESSAGE_ICON = SUCCESS_ICON;\n } else {\n // info\n MESSAGE_ICON = INFO_ICON;\n }\n\n return (\n <li class=\"message-description\">\n <ch-image\n class=\"icon-md message-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {message.text}\n </li>\n );\n })}\n </ul>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId => !this.alreadyUpdatedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const addedRowsIds = event.detail.addedRowsId;\n const removedRowsId = event.detail.removedRowsId;\n\n const pendingItemCheckedResult = await this.pendingItemsCheckedCallback({\n itemsChecked: addedRowsIds,\n itemsUnchecked: removedRowsId\n });\n\n if (pendingItemCheckedResult === undefined) {\n // undo check/uncheck\n await this.#revertPendingCommitsCheckboxes(addedRowsIds, removedRowsId);\n } else {\n await this.#togglePendingCommitsCheckboxes(pendingItemCheckedResult);\n }\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = event.detail as string;\n this.#loadData();\n };\n\n // Local Methods Update\n\n #actionChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedAction = event.detail as ActionForFilter;\n this.#loadData();\n };\n\n #typeChangedHandler = async (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #setInitialObjectsStatus = (): void => {\n this.pendingAndIgnored.pendingForUpdate.forEach(pendingObject => {\n const status: StatusInternal =\n (pendingObject.status as Status) ?? \"pending\";\n\n this.objectsStatusMap.set(pendingObject.id, status);\n if (status === \"updated\") {\n this.alreadyUpdatedObjectsIdsSet.add(pendingObject.id);\n }\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal =\n (ignoredObject.status as Status) ?? \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (forceLoad: boolean = false): Promise<void> => {\n const filters: FiltersData = {\n search: this.searchValue,\n type: this.selectedType,\n kbProperties: this.kbPropertiesChecked,\n action: this.selectedAction\n };\n this.loading = true;\n this.objectsMessagesDataMap.clear();\n\n this.pendingAndIgnored = await this.loadCallback(filters, forceLoad);\n this.#setInitialObjectsStatus();\n\n this.loading = false;\n\n // Is is required to mark/check all objects after loadCallback.\n this.#markPendingObjects();\n };\n\n /**\n * Marks all pending objects that have not been committed yet.\n *\n * Iterates through all pending object IDs and adds them to the marked objects set\n * if they are not already in the committed objects set. This effectively identifies\n * and marks all the pending objects that still need to be processed.\n **/\n #markPendingObjects = () => {\n for (const pendingId of this.pendingIdsSet) {\n if (!this.alreadyUpdatedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n #applyClientFilter = () => {\n // this.pendingObjectsAfterActionFilter = this.#filteredObjects(\n // this.pendingAndIgnored.pendingForUpdate\n // );\n this.pendingObjectsAfterActionFilter =\n this.pendingAndIgnored.pendingForUpdate;\n // this.ignoredObjectsAfterActionFilter = this.#filteredObjects(\n // this.pendingAndIgnored.ignoredObjects\n // );\n this.ignoredObjectsAfterActionFilter =\n this.pendingAndIgnored.ignoredObjects;\n };\n\n // #filteredObjects = (objects: ModifiedObject[]): ModifiedObject[] => {\n // let filtered = objects;\n\n // // name or description\n // if (this.searchValue.length) {\n // filtered = filtered.filter(object => {\n // const nameFiltered = object.name\n // .toLowerCase()\n // .includes(this.searchValue.toLowerCase());\n\n // const descriptionFiltered = object.description\n // .toLowerCase()\n // .includes(this.searchValue.toLowerCase());\n\n // return nameFiltered || descriptionFiltered;\n // });\n // }\n\n // return filtered;\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selection = await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const selectedRowId = (\n await this.#chGridPendingForUpdateEl.getSelectedCell()\n ).rowId;\n\n const source: UpdateSourceType = this.pendingIdsSet.has(selectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n let filteredSelection: string[] = [];\n // remove selected rows from the other source, if any.\n if (selection.length > 1 && source === \"pending\") {\n selection.forEach(async selectedRowId => {\n if (this.ignoredIdsSet.has(selectedRowId)) {\n await this.#chGridPendingForUpdateEl.selectRow(\n selectedRowId,\n false\n );\n } else {\n filteredSelection.push(selectedRowId);\n }\n });\n } else if (selection.length > 1 && source === \"ignored\") {\n selection.forEach(async selectedRowId => {\n if (this.pendingIdsSet.has(selectedRowId)) {\n await this.#chGridPendingForUpdateEl.selectRow(\n selectedRowId,\n false\n );\n } else {\n filteredSelection.push(selectedRowId);\n }\n });\n } else {\n filteredSelection = selection;\n }\n\n await this.contextMenuCallback(source, {\n selection: filteredSelection,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n #revertPendingCommitsCheckboxes = async (\n addedRowsIds: string[],\n removedRowsId: string[]\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n for (const rowId of addedRowsIds) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n for (const rowId of removedRowsId) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n }\n };\n\n #togglePendingCommitsCheckboxes = async (\n itemsToToggle: ItemsCheckedResult\n ) => {\n if (this.#chGridPendingForUpdateEl) {\n const itemsToCheck: string[] = itemsToToggle.itemsToCheck;\n const itemsToUncheck: string[] = itemsToToggle.itemsToUncheck;\n // check\n for (const rowId of itemsToCheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, true);\n }\n // uncheck\n for (const rowId of itemsToUncheck) {\n await this.#chGridPendingForUpdateEl.markRow(rowId, false);\n }\n }\n };\n\n #kbPropertiesChangedHandler = (\n event: ChCheckboxCustomEvent<any> | InputEvent\n ) => {\n this.kbPropertiesChecked = event.detail === CHECKBOX_CHECKED_VALUE;\n this.#loadData(true);\n };\n\n #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n const columnId = e.detail.columnId;\n\n let objectProperty;\n let dateType: SortTabularGridColumnDataType = \"string\";\n if (\n columnId === COLUMNS_IDS.modifiedOn ||\n columnId === COLUMNS_IDS.lastSynchronized\n ) {\n dateType = \"dateString\";\n }\n\n this.pendingObjectsAfterActionFilter = [\n ...sortTabularGridColumn(\n e,\n this.pendingObjectsAfterActionFilter,\n dateType,\n objectProperty\n )\n ];\n this.ignoredObjectsAfterActionFilter = [\n ...sortTabularGridColumn(\n e,\n this.ignoredObjectsAfterActionFilter,\n dateType,\n objectProperty\n )\n ];\n };\n\n /**\n * WA: Ignored objects must always remain unchecked.\n * Because `tabular-grid` selects all rows when the checkbox column is toggled,\n * we need to manually unselect the ignored IDs. // TODO: Move this function\n * to common\n */\n #columnSelectorClickedCallback = async (\n e: CustomEvent<TabularGridColumnSelectorClickedEvent>\n ) => {\n const allRowsChecked = e.detail;\n if (allRowsChecked) {\n const markedRowsIds =\n await this.#chGridPendingForUpdateEl.getMarkedRows();\n const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {\n return this.ignoredIdsSet.has(rowId);\n });\n if (ignoredMarkedRowsIds.length) {\n uncheckIgnoredObjects(\n ignoredMarkedRowsIds,\n this.#chGridPendingForUpdateEl\n );\n }\n }\n };\n\n render() {\n const disableControls = this.updating || this.loading;\n const gridIsEmpty =\n this.pendingObjectsAfterActionFilter.length === 0 &&\n this.ignoredObjectsAfterActionFilter.length === 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail header__detail-1\"\n >\n <p class=\"detail__heading-genexus-server subtitle-semi-bold-s\">\n {this.#componentLocale.commitDetail.title}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <button\n class=\"detail__link body-regular-s\"\n onClick={this.openServerCallback}\n >\n {this.updateFrom ? this.updateFrom.serverUrl : \"\"}\n </button>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">\n {this.updateFrom ? this.updateFrom.kbName : \"\"}\n </p>\n </div>\n\n <div\n // version\n class=\"detail__version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.version}\n </span>\n <p class=\"body-regular-s\">\n {this.updateFrom ? this.updateFrom.versionName : \"\"}\n </p>\n </div>\n\n <div\n // last full update\n class=\"detail__last-full-update field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.lastFullUpdate}\n </span>\n <p class=\"body-regular-s\">\n {formatDate(this.updateFrom.lastFullUpdate)}\n </p>\n </div>\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class=\"filter\">\n <ch-edit\n // search\n class=\"input filter__search\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n debounce={config.inputDebounce}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__types\"\n disabled={disableControls}\n model={this.typesComboBoxModel}\n value={this.selectedType}\n accessibleName={this.#componentLocale.filter.typeAccesibleName}\n placeholder={this.#componentLocale.filter.typePlaceholder}\n onInput={this.#typeChangedHandler}\n ></ch-combo-box-render>\n\n <ch-combo-box-render\n // actions\n class=\"combo-box filter__actions\"\n disabled={disableControls}\n model={this.#actionsComboBoxModel}\n value={this.selectedAction}\n onInput={this.#actionChangedHandler}\n accessibleName={\n this.#componentLocale.filter.actionAccesibleName\n }\n placeholder={this.#componentLocale.filter.actionPlaceholder}\n ></ch-combo-box-render>\n\n <ch-checkbox\n // kb properties\n class=\"checkbox filter__kb-properties\"\n caption={this.#componentLocale.filter.kbProperties}\n checkedValue={CHECKBOX_CHECKED_VALUE}\n value={CHECKBOX_UNCHECKED_VALUE}\n onInput={this.#kbPropertiesChangedHandler}\n disabled={disableControls}\n />\n\n <div class=\"buttons-spacer filter__buttons\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#reloadClickedHandler}\n >\n <ch-image class=\"icon-md\" src={REFRESH_ICON}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n <button\n // update button\n class=\"button-primary button-update\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#updateCheckedClickedHandler}\n >\n {this.#componentLocale.filter.update}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"main spacing-body\">\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.updating,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.name}\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={!this.allPendingAreUpdated}\n richRowSelectorMode=\"mark\"\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n onColumnSelectorClicked={\n this.#columnSelectorClickedCallback\n }\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.type}\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.description}\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size={config.tabularGrid.colSize.description}\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.modifiedOn}\n columnName={this.#componentLocale.objects.modifiedOn}\n settingable={false}\n sortable={true}\n onColumnSortChanged={this.#sortTabularGridColumnCallback}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.action}\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n sortable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId={COLUMNS_IDS.status}\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n sortable={false}\n size=\"100px\"\n />\n </ch-tabular-grid-columnset>\n\n {!gridIsEmpty\n ? [\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.pending}\n </ch-tabular-grid-rowset-legend>\n {this.#renderRows(\"pending\")}\n </ch-tabular-grid-rowset>,\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-legend class=\"tabular-grid-rowset-legend\">\n {this.#componentLocale.objects.ignored}\n </ch-tabular-grid-rowset-legend>\n {this.#renderRows(\"ignored\")}\n </ch-tabular-grid-rowset>\n ]\n : null}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {gridIsEmpty && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\n// - - - - - - - - - - - - -\n// Types from Update\n// - - - - - - - - - - - - -\n\nexport type Status = \"pending\" | \"updated\" | \"ignored\";\n\nexport type StatusInternal = Status | \"updating\" | \"ignored\";\n\nexport type Action =\n | \"inserted\"\n | \"modified\"\n | \"modified-with-conflicts\"\n | \"deleted\";\n\ntype ActionForFilter = Action | \"all-actions\";\n\nexport type ContextMenuCallback = (\n source: UpdateSourceType,\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type PendingItemsCheckedCallback = (\n pendingItemsCheckedState: ItemsCheckedState\n) => Promise<ItemsCheckedResult | undefined>;\n\nexport type UpdateSourceType = \"pending\" | \"ignored\";\n\nexport type LoadCallback = (\n filters: FiltersData,\n forceLoad: boolean\n) => Promise<UpdateData>;\n\nexport interface ModifiedObject {\n id: string;\n typeIcon: string;\n action?: Action;\n name: string;\n type: string;\n description?: string;\n modifiedOn?: Date;\n status?: Status;\n}\nexport interface UpdateData {\n pendingForUpdate: ModifiedObject[];\n ignoredObjects: ModifiedObject[];\n}\n\nexport interface FiltersData {\n search: string;\n type: string;\n kbProperties: boolean;\n action: ActionForFilter;\n}\n\nexport interface UpdateFromData {\n serverUrl: string;\n kbName: string;\n versionName: string;\n lastFullUpdate: Date;\n}\n\nexport type UpdateCallback = (\n selection: string[]\n) => Promise<UpdateResultData[]>;\n\nexport interface UpdateResultData {\n id: string;\n result: Status;\n messages: MessageData[];\n}\n\nexport interface MessageData {\n type: \"info\" | \"success\" | \"warning\" | \"error\";\n text: string;\n}\n"]}
|