@genexus/genexus-ide-ui 1.1.40 → 1.1.42
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/gx-ide-ww-files.cjs.entry.js +1 -9
- package/dist/cjs/gx-ide-ww-files.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/collection/components/ww-files/ww-files.js +1 -9
- package/dist/collection/components/ww-files/ww-files.js.map +1 -1
- 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/gx-ide-ww-files.js +1 -9
- package/dist/components/gx-ide-ww-files.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/gx-ide-ww-files.entry.js +1 -9
- package/dist/esm/gx-ide-ww-files.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-9b8a8487.entry.js → p-8c867f9a.entry.js} +159 -167
- package/dist/genexus-ide-ui/p-8c867f9a.entry.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/dist/types/components/ww-files/ww-files.d.ts +0 -1
- 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
- package/dist/genexus-ide-ui/p-9b8a8487.entry.js.map +0 -1
|
@@ -14,17 +14,20 @@ 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 _GxIdeTeamDevCommit_componentLocale, _GxIdeTeamDevCommit_localStatesComboBoxModel, _GxIdeTeamDevCommit_rowCheckedChangedByTheUser, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, _GxIdeTeamDevCommit_commitCheckedClickedHandler, _GxIdeTeamDevCommit_commitSingleObject, _GxIdeTeamDevCommit_commitObjectsHandler, _GxIdeTeamDevCommit_rowMarkingChangedHandler, _GxIdeTeamDevCommit_rowSelectionChangedHandler, _GxIdeTeamDevCommit_commentsInputHandler, _GxIdeTeamDevCommit_applyClientFilter, _GxIdeTeamDevCommit_filteredObjects, _GxIdeTeamDevCommit_evaluateSecondaryFilterHasConditions, _GxIdeTeamDevCommit_toggleFiltersHandler, _GxIdeTeamDevCommit_searchInputHandler, _GxIdeTeamDevCommit_typeChangedHandler, _GxIdeTeamDevCommit_stateChangedHandler, _GxIdeTeamDevCommit_folderChanged, _GxIdeTeamDevCommit_onRowContextMenuHandler, _GxIdeTeamDevCommit_updatePendingCheckedItems, _GxIdeTeamDevCommit_setInitialObjectsStatus, _GxIdeTeamDevCommit_loadData, _GxIdeTeamDevCommit_markPendingObjects, _GxIdeTeamDevCommit_revertPendingCommitsCheckboxes, _GxIdeTeamDevCommit_togglePendingCommitsCheckboxes;
|
|
17
|
+
var _GxIdeTeamDevCommit_componentLocale, _GxIdeTeamDevCommit_localStatesComboBoxModel, _GxIdeTeamDevCommit_rowCheckedChangedByTheUser, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, _GxIdeTeamDevCommit_commitCheckedClickedHandler, _GxIdeTeamDevCommit_commitSingleObject, _GxIdeTeamDevCommit_commitObjectsHandler, _GxIdeTeamDevCommit_rowMarkingChangedHandler, _GxIdeTeamDevCommit_rowSelectionChangedHandler, _GxIdeTeamDevCommit_commentsInputHandler, _GxIdeTeamDevCommit_applyClientFilter, _GxIdeTeamDevCommit_filteredObjects, _GxIdeTeamDevCommit_evaluateSecondaryFilterHasConditions, _GxIdeTeamDevCommit_toggleFiltersHandler, _GxIdeTeamDevCommit_searchInputHandler, _GxIdeTeamDevCommit_typeChangedHandler, _GxIdeTeamDevCommit_stateChangedHandler, _GxIdeTeamDevCommit_folderChanged, _GxIdeTeamDevCommit_onRowContextMenuHandler, _GxIdeTeamDevCommit_updatePendingCheckedItems, _GxIdeTeamDevCommit_setInitialObjectsStatus, _GxIdeTeamDevCommit_loadData, _GxIdeTeamDevCommit_markPendingObjects, _GxIdeTeamDevCommit_revertPendingCommitsCheckboxes, _GxIdeTeamDevCommit_togglePendingCommitsCheckboxes, _GxIdeTeamDevCommit_sortTabularGridColumnCallback, _GxIdeTeamDevCommit_columnSelectorClickedCallback;
|
|
18
18
|
// stencil
|
|
19
19
|
import { Host, h } from "@stencil/core";
|
|
20
20
|
// local
|
|
21
21
|
import { Locale } from "../../../../common/locale";
|
|
22
22
|
import clearGridSelection from "../common/clear-grid-selection";
|
|
23
|
+
import areSetsEqual from "../common/are-sets-equal";
|
|
24
|
+
import uncheckIgnoredObjects from "../common/uncheck-ignored";
|
|
23
25
|
import headerDetail, { headerTitle } from "../common/header-renders";
|
|
24
26
|
import { changesetToComboBoxModel } from "./utilities/changeset-to-combo-box";
|
|
25
27
|
import { foldersToComboBoxModel } from "./utilities/folders-to-combo-box";
|
|
26
28
|
import { typesToComboBoxItemModel } from "./utilities/types-to-combo-box";
|
|
27
|
-
import renderTabularGridRows, { renderTabularGridColumns } from "../common/tabular-grid-render";
|
|
29
|
+
import renderTabularGridRows, { renderTabularGridColumns, COLUMNS_IDS } from "../common/tabular-grid-render";
|
|
30
|
+
import sortTabularGridColumn from "../../../../common/chameleon/tabular-grid-column-sort";
|
|
28
31
|
import { CSS_SELECTORS as CLASSES, ALL_VALUE } from "../common/constants";
|
|
29
32
|
import ICONS from "../common/constants";
|
|
30
33
|
const FILTER_SECONDARY_CONTAINER_ID = "filters-secondary-container";
|
|
@@ -92,7 +95,11 @@ export class GxIdeTeamDevCommit {
|
|
|
92
95
|
this.objectsMessagesDataMap.delete(objectResult.id);
|
|
93
96
|
}
|
|
94
97
|
if (objectResult.result === "commited") {
|
|
95
|
-
|
|
98
|
+
// Apply a new Set to "alreadyCommitedObjectsIdsSet" in order for the Watch to fire.
|
|
99
|
+
this.alreadyCommitedObjectsIdsSet = new Set([
|
|
100
|
+
...this.alreadyCommitedObjectsIdsSet,
|
|
101
|
+
objectResult.id
|
|
102
|
+
]);
|
|
96
103
|
this.objectsStatusMap.set(objectResult.id, "commited");
|
|
97
104
|
await __classPrivateFieldGet(this, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, "f").markRow(objectResult.id, false);
|
|
98
105
|
}
|
|
@@ -227,9 +234,6 @@ export class GxIdeTeamDevCommit {
|
|
|
227
234
|
__classPrivateFieldSet(this, _GxIdeTeamDevCommit_rowCheckedChangedByTheUser, true, "f");
|
|
228
235
|
});
|
|
229
236
|
_GxIdeTeamDevCommit_setInitialObjectsStatus.set(this, () => {
|
|
230
|
-
if (this.objectsRenderedAlready) {
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
237
|
this.pendingAndIgnored.pendingForCommit.forEach(pendingObject => {
|
|
234
238
|
const status = "pending";
|
|
235
239
|
this.objectsStatusMap.set(pendingObject.id, status);
|
|
@@ -248,10 +252,9 @@ export class GxIdeTeamDevCommit {
|
|
|
248
252
|
folder: this.selectedFolder,
|
|
249
253
|
category: this.selectedCategory
|
|
250
254
|
});
|
|
251
|
-
__classPrivateFieldGet(this, _GxIdeTeamDevCommit_setInitialObjectsStatus, "f").call(this);
|
|
252
255
|
this.loading = false;
|
|
253
256
|
// Is is required to mark/check all objects after loadCallback.
|
|
254
|
-
|
|
257
|
+
// this.#markPendingObjects();
|
|
255
258
|
});
|
|
256
259
|
/**
|
|
257
260
|
* Marks all pending objects that have not been committed yet.
|
|
@@ -292,6 +295,44 @@ export class GxIdeTeamDevCommit {
|
|
|
292
295
|
}
|
|
293
296
|
}
|
|
294
297
|
});
|
|
298
|
+
_GxIdeTeamDevCommit_sortTabularGridColumnCallback.set(this, (e) => {
|
|
299
|
+
const columnId = e.detail.columnId;
|
|
300
|
+
let objectProperty;
|
|
301
|
+
let dateType = "string";
|
|
302
|
+
if (columnId === COLUMNS_IDS.type) {
|
|
303
|
+
objectProperty = "name"; // the type name
|
|
304
|
+
dateType = "object";
|
|
305
|
+
}
|
|
306
|
+
else if (columnId === COLUMNS_IDS.modifiedOn ||
|
|
307
|
+
columnId === COLUMNS_IDS.lastSynchronized) {
|
|
308
|
+
dateType = "dateString";
|
|
309
|
+
}
|
|
310
|
+
this.pendingObjectsAfterFilter = [
|
|
311
|
+
...sortTabularGridColumn(e, this.pendingObjectsAfterFilter, dateType, objectProperty)
|
|
312
|
+
];
|
|
313
|
+
this.ignoredObjectsAfterFilter = [
|
|
314
|
+
...sortTabularGridColumn(e, this.ignoredObjectsAfterFilter, dateType, objectProperty)
|
|
315
|
+
];
|
|
316
|
+
});
|
|
317
|
+
/**
|
|
318
|
+
* WA: Ignored objects must always remain unchecked.
|
|
319
|
+
* Because `tabular-grid` selects all rows when the checkbox column is toggled,
|
|
320
|
+
* we need to manually unselect the ignored IDs. // TODO: Move this function
|
|
321
|
+
* to common
|
|
322
|
+
*/
|
|
323
|
+
_GxIdeTeamDevCommit_columnSelectorClickedCallback.set(this, async (e) => {
|
|
324
|
+
const allRowsChecked = e.detail;
|
|
325
|
+
if (allRowsChecked) {
|
|
326
|
+
const markedRowsIds = await __classPrivateFieldGet(this, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, "f").getMarkedRows();
|
|
327
|
+
const ignoredMarkedRowsIds = markedRowsIds.filter(rowId => {
|
|
328
|
+
return this.ignoredIdsSet.has(rowId);
|
|
329
|
+
});
|
|
330
|
+
if (ignoredMarkedRowsIds.length) {
|
|
331
|
+
uncheckIgnoredObjects(ignoredMarkedRowsIds, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, "f"));
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
this.allPendingAreCommited = false;
|
|
295
336
|
this.alreadyCommitedObjectsIdsSet = new Set([]);
|
|
296
337
|
this.ignoredIdsSet = new Set([]);
|
|
297
338
|
this.pendingIdsSet = new Set([]);
|
|
@@ -304,7 +345,6 @@ export class GxIdeTeamDevCommit {
|
|
|
304
345
|
this.filterSecondaryIsHidden = true;
|
|
305
346
|
this.filterSecondaryHasConditions = false;
|
|
306
347
|
this.loading = true;
|
|
307
|
-
this.objectsRenderedAlready = false;
|
|
308
348
|
this.changesetsComboBoxModel = undefined;
|
|
309
349
|
this.pendingObjectsAfterFilter = [];
|
|
310
350
|
this.ignoredObjectsAfterFilter = [];
|
|
@@ -333,6 +373,11 @@ export class GxIdeTeamDevCommit {
|
|
|
333
373
|
this.updatePillAsButton = false;
|
|
334
374
|
this.serverDetails = undefined;
|
|
335
375
|
}
|
|
376
|
+
alreadyCommitedObjectsIdsSetChanged(newCommitedObjectsIdsSet) {
|
|
377
|
+
const pendingIdsSetAndCommitedIdsSetAreEqual = areSetsEqual(newCommitedObjectsIdsSet, this.pendingIdsSet);
|
|
378
|
+
this.allPendingAreCommited =
|
|
379
|
+
pendingIdsSetAndCommitedIdsSetAreEqual && this.pendingIdsSet.size > 0;
|
|
380
|
+
}
|
|
336
381
|
markedObjectsSetChanged(newMarkedObjectsSet) {
|
|
337
382
|
this.atLeastOneObjectIsChecked = newMarkedObjectsSet.size > 0;
|
|
338
383
|
}
|
|
@@ -342,17 +387,24 @@ export class GxIdeTeamDevCommit {
|
|
|
342
387
|
this.commiting = false;
|
|
343
388
|
}
|
|
344
389
|
}
|
|
345
|
-
pendingAndIgnoredChanged() {
|
|
390
|
+
pendingAndIgnoredChanged(newPendingAndIgnored) {
|
|
346
391
|
var _a, _b;
|
|
347
|
-
|
|
348
|
-
this.pendingIdsSet.clear();
|
|
349
|
-
|
|
392
|
+
// clear previous state
|
|
393
|
+
this.pendingIdsSet.clear(); // before pendingIdsSet.add
|
|
394
|
+
this.ignoredIdsSet.clear(); // before ignoredIdsSet.add
|
|
395
|
+
this.objectsMessagesDataMap = new Map();
|
|
396
|
+
this.alreadyCommitedObjectsIdsSet = new Set();
|
|
397
|
+
this.commentInputHasError = false;
|
|
398
|
+
this.markedObjectsSet = new Set(); // before #markPendingObjects
|
|
399
|
+
(_a = newPendingAndIgnored.pendingForCommit) === null || _a === void 0 ? void 0 : _a.forEach(pending => {
|
|
350
400
|
this.pendingIdsSet.add(pending.id);
|
|
351
401
|
});
|
|
352
|
-
|
|
353
|
-
(_b = this.pendingAndIgnored.ignoredObjects) === null || _b === void 0 ? void 0 : _b.forEach(ignored => {
|
|
402
|
+
(_b = newPendingAndIgnored.ignoredObjects) === null || _b === void 0 ? void 0 : _b.forEach(ignored => {
|
|
354
403
|
this.ignoredIdsSet.add(ignored.id);
|
|
355
404
|
});
|
|
405
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevCommit_markPendingObjects, "f").call(this); // after pendingIdsSet.add and ignoredIdsSet.add
|
|
406
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevCommit_setInitialObjectsStatus, "f").call(this); // after pendingIdsSet.add and ignoredIdsSet.add
|
|
407
|
+
__classPrivateFieldGet(this, _GxIdeTeamDevCommit_applyClientFilter, "f").call(this);
|
|
356
408
|
}
|
|
357
409
|
typesChanged(newTypes) {
|
|
358
410
|
this.typesComboBoxModel = typesToComboBoxItemModel(newTypes);
|
|
@@ -412,12 +464,14 @@ export class GxIdeTeamDevCommit {
|
|
|
412
464
|
}
|
|
413
465
|
async componentDidLoad() {
|
|
414
466
|
await __classPrivateFieldGet(this, _GxIdeTeamDevCommit_loadData, "f").call(this);
|
|
467
|
+
// initialize "allPendingAreCommited"
|
|
468
|
+
this.alreadyCommitedObjectsIdsSetChanged(this.alreadyCommitedObjectsIdsSet);
|
|
415
469
|
}
|
|
416
470
|
/**
|
|
417
471
|
* Used by the host to instruct the component to force a data reload in the grids.
|
|
418
472
|
*/
|
|
419
473
|
async reload() {
|
|
420
|
-
__classPrivateFieldGet(this, _GxIdeTeamDevCommit_loadData, "f").call(this);
|
|
474
|
+
await __classPrivateFieldGet(this, _GxIdeTeamDevCommit_loadData, "f").call(this);
|
|
421
475
|
}
|
|
422
476
|
render() {
|
|
423
477
|
const disableControls = this.commiting || this.loading;
|
|
@@ -426,7 +480,9 @@ export class GxIdeTeamDevCommit {
|
|
|
426
480
|
const filterIcon = this.filterSecondaryHasConditions
|
|
427
481
|
? ICONS.filterWithConditions
|
|
428
482
|
: ICONS.filter;
|
|
429
|
-
const commitButtonEnabled = this.atLeastOneObjectIsChecked &&
|
|
483
|
+
const commitButtonEnabled = this.atLeastOneObjectIsChecked &&
|
|
484
|
+
this.commentsValue.length > 0 &&
|
|
485
|
+
!this.allPendingAreCommited;
|
|
430
486
|
return (h(Host, { class: "widget" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, h("header", { class: { [CLASSES.HEADER]: true } }, h("div", {
|
|
431
487
|
// header details
|
|
432
488
|
class: { [CLASSES.HEADER_DETAILS]: true }
|
|
@@ -472,7 +528,7 @@ export class GxIdeTeamDevCommit {
|
|
|
472
528
|
"objects-tabular-grid": true,
|
|
473
529
|
"disabled-custom-selector": this.commiting,
|
|
474
530
|
"empty-result": gridIsEmpty
|
|
475
|
-
}, keyboardNavigationMode: "focus", rowSelectionMode: "multiple", onSelectionChanged: __classPrivateFieldGet(this, _GxIdeTeamDevCommit_rowSelectionChangedHandler, "f"), onRowMarkingChanged: __classPrivateFieldGet(this, _GxIdeTeamDevCommit_rowMarkingChangedHandler, "f"), onRowContextMenu: __classPrivateFieldGet(this, _GxIdeTeamDevCommit_onRowContextMenuHandler, "f").call(this), ref: (el) => (__classPrivateFieldSet(this, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, el, "f")) }, renderTabularGridColumns(["action"], gridIsEmpty, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_componentLocale, "f")), !gridIsEmpty
|
|
531
|
+
}, keyboardNavigationMode: "focus", rowSelectionMode: "multiple", onSelectionChanged: __classPrivateFieldGet(this, _GxIdeTeamDevCommit_rowSelectionChangedHandler, "f"), onRowMarkingChanged: __classPrivateFieldGet(this, _GxIdeTeamDevCommit_rowMarkingChangedHandler, "f"), onRowContextMenu: __classPrivateFieldGet(this, _GxIdeTeamDevCommit_onRowContextMenuHandler, "f").call(this), ref: (el) => (__classPrivateFieldSet(this, _GxIdeTeamDevCommit_chGridPendingForUpdateEl, el, "f")) }, renderTabularGridColumns(["action"], gridIsEmpty, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_sortTabularGridColumnCallback, "f"), __classPrivateFieldGet(this, _GxIdeTeamDevCommit_columnSelectorClickedCallback, "f"), __classPrivateFieldGet(this, _GxIdeTeamDevCommit_componentLocale, "f"), !this.allPendingAreCommited), !gridIsEmpty
|
|
476
532
|
? [
|
|
477
533
|
h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, h("ch-tabular-grid-rowset-legend", { class: "tabular-grid-rowset-legend" }, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_componentLocale, "f").objects.pendingCommits), renderTabularGridRows("pending", this.pendingObjectsAfterFilter, this.ignoredObjectsAfterFilter, this.alreadyCommitedObjectsIdsSet, this.markedObjectsSet, this.objectsMessagesDataMap, this.updatePillAsButton, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_commitSingleObject, "f"), this.objectsStatusMap, this.searchValue, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_componentLocale, "f"))),
|
|
478
534
|
h("ch-tabular-grid-rowset", { class: "tabular-grid-rowset" }, h("ch-tabular-grid-rowset-legend", { class: "tabular-grid-rowset-legend" }, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_componentLocale, "f").objects.ignoredObjects), renderTabularGridRows("ignored", this.pendingObjectsAfterFilter, this.ignoredObjectsAfterFilter, this.alreadyCommitedObjectsIdsSet, this.markedObjectsSet, this.objectsMessagesDataMap, this.updatePillAsButton, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_commitSingleObject, "f"), this.objectsStatusMap, this.searchValue, __classPrivateFieldGet(this, _GxIdeTeamDevCommit_componentLocale, "f")))
|
|
@@ -725,6 +781,7 @@ export class GxIdeTeamDevCommit {
|
|
|
725
781
|
}
|
|
726
782
|
static get states() {
|
|
727
783
|
return {
|
|
784
|
+
"allPendingAreCommited": {},
|
|
728
785
|
"alreadyCommitedObjectsIdsSet": {},
|
|
729
786
|
"ignoredIdsSet": {},
|
|
730
787
|
"pendingIdsSet": {},
|
|
@@ -737,7 +794,6 @@ export class GxIdeTeamDevCommit {
|
|
|
737
794
|
"filterSecondaryIsHidden": {},
|
|
738
795
|
"filterSecondaryHasConditions": {},
|
|
739
796
|
"loading": {},
|
|
740
|
-
"objectsRenderedAlready": {},
|
|
741
797
|
"changesetsComboBoxModel": {},
|
|
742
798
|
"pendingObjectsAfterFilter": {},
|
|
743
799
|
"ignoredObjectsAfterFilter": {},
|
|
@@ -777,6 +833,9 @@ export class GxIdeTeamDevCommit {
|
|
|
777
833
|
static get elementRef() { return "el"; }
|
|
778
834
|
static get watchers() {
|
|
779
835
|
return [{
|
|
836
|
+
"propName": "alreadyCommitedObjectsIdsSet",
|
|
837
|
+
"methodName": "alreadyCommitedObjectsIdsSetChanged"
|
|
838
|
+
}, {
|
|
780
839
|
"propName": "markedObjectsSet",
|
|
781
840
|
"methodName": "markedObjectsSetChanged"
|
|
782
841
|
}, {
|
|
@@ -797,5 +856,5 @@ export class GxIdeTeamDevCommit {
|
|
|
797
856
|
}];
|
|
798
857
|
}
|
|
799
858
|
}
|
|
800
|
-
_GxIdeTeamDevCommit_componentLocale = new WeakMap(), _GxIdeTeamDevCommit_localStatesComboBoxModel = new WeakMap(), _GxIdeTeamDevCommit_rowCheckedChangedByTheUser = new WeakMap(), _GxIdeTeamDevCommit_chGridPendingForUpdateEl = new WeakMap(), _GxIdeTeamDevCommit_commitCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevCommit_commitSingleObject = new WeakMap(), _GxIdeTeamDevCommit_commitObjectsHandler = new WeakMap(), _GxIdeTeamDevCommit_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_rowSelectionChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_commentsInputHandler = new WeakMap(), _GxIdeTeamDevCommit_applyClientFilter = new WeakMap(), _GxIdeTeamDevCommit_filteredObjects = new WeakMap(), _GxIdeTeamDevCommit_evaluateSecondaryFilterHasConditions = new WeakMap(), _GxIdeTeamDevCommit_toggleFiltersHandler = new WeakMap(), _GxIdeTeamDevCommit_searchInputHandler = new WeakMap(), _GxIdeTeamDevCommit_typeChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_stateChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_folderChanged = new WeakMap(), _GxIdeTeamDevCommit_onRowContextMenuHandler = new WeakMap(), _GxIdeTeamDevCommit_updatePendingCheckedItems = new WeakMap(), _GxIdeTeamDevCommit_setInitialObjectsStatus = new WeakMap(), _GxIdeTeamDevCommit_loadData = new WeakMap(), _GxIdeTeamDevCommit_markPendingObjects = new WeakMap(), _GxIdeTeamDevCommit_revertPendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevCommit_togglePendingCommitsCheckboxes = new WeakMap();
|
|
859
|
+
_GxIdeTeamDevCommit_componentLocale = new WeakMap(), _GxIdeTeamDevCommit_localStatesComboBoxModel = new WeakMap(), _GxIdeTeamDevCommit_rowCheckedChangedByTheUser = new WeakMap(), _GxIdeTeamDevCommit_chGridPendingForUpdateEl = new WeakMap(), _GxIdeTeamDevCommit_commitCheckedClickedHandler = new WeakMap(), _GxIdeTeamDevCommit_commitSingleObject = new WeakMap(), _GxIdeTeamDevCommit_commitObjectsHandler = new WeakMap(), _GxIdeTeamDevCommit_rowMarkingChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_rowSelectionChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_commentsInputHandler = new WeakMap(), _GxIdeTeamDevCommit_applyClientFilter = new WeakMap(), _GxIdeTeamDevCommit_filteredObjects = new WeakMap(), _GxIdeTeamDevCommit_evaluateSecondaryFilterHasConditions = new WeakMap(), _GxIdeTeamDevCommit_toggleFiltersHandler = new WeakMap(), _GxIdeTeamDevCommit_searchInputHandler = new WeakMap(), _GxIdeTeamDevCommit_typeChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_stateChangedHandler = new WeakMap(), _GxIdeTeamDevCommit_folderChanged = new WeakMap(), _GxIdeTeamDevCommit_onRowContextMenuHandler = new WeakMap(), _GxIdeTeamDevCommit_updatePendingCheckedItems = new WeakMap(), _GxIdeTeamDevCommit_setInitialObjectsStatus = new WeakMap(), _GxIdeTeamDevCommit_loadData = new WeakMap(), _GxIdeTeamDevCommit_markPendingObjects = new WeakMap(), _GxIdeTeamDevCommit_revertPendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevCommit_togglePendingCommitsCheckboxes = new WeakMap(), _GxIdeTeamDevCommit_sortTabularGridColumnCallback = new WeakMap(), _GxIdeTeamDevCommit_columnSelectorClickedCallback = new WeakMap();
|
|
801
860
|
//# sourceMappingURL=commit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../../../src/components/team-dev/version-control/commit/commit.tsx"],"names":[],"mappings":"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","sourcesContent":["// stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Watch\n} from \"@stencil/core\";\n\n// external libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\n\n// local\nimport { Locale } from \"../../../../common/locale\";\nimport {\n GxOption,\n ItemsCheckedResult,\n ObjectType\n} from \"../../../../common/types\";\nimport clearGridSelection from \"../common/clear-grid-selection\";\n\nimport type {\n StateForFilter,\n StatusInternal,\n MessageData,\n ModifiedObjectData,\n CommitData,\n CommitCallback,\n ContextMenuCallback,\n LoadCallback,\n PendingItemsCheckedCallback,\n SelectCallback,\n ServerDetails,\n SourceType\n} from \"../common/types\";\n\nimport headerDetail, { headerTitle } from \"../common/header-renders\";\nimport { changesetToComboBoxModel } from \"./utilities/changeset-to-combo-box\";\nimport { foldersToComboBoxModel } from \"./utilities/folders-to-combo-box\";\nimport { typesToComboBoxItemModel } from \"./utilities/types-to-combo-box\";\nimport renderTabularGridRows, {\n renderTabularGridColumns\n} from \"../common/tabular-grid-render\";\n\nimport { CSS_SELECTORS as CLASSES, ALL_VALUE } from \"../common/constants\";\nimport ICONS from \"../common/constants\";\n\nconst FILTER_SECONDARY_CONTAINER_ID = \"filters-secondary-container\";\nconst FILTER_SECONDARY_BUTTON_ID = \"filter-toggle-button\";\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\n@Component({\n tag: \"gx-ide-team-dev-commit\",\n styleUrl: \"commit.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-commit\"]\n})\nexport class GxIdeTeamDevCommit {\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\n /**\n * The ComboBoxModel for \"Local State\" filter.\n */\n #localStatesComboBoxModel: { caption: string; value: StateForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be\n * called or not. It should be ignored if the grid checkboxes state is\n * changed programmatically, by setting markRow to false once the object\n * has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevCommitElement;\n\n /**\n * A reference to the tablar grid. Used to call methods.\n */\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // sets\n\n /**\n * A set that holds the id's of the objects that have been updated already.\n */\n @State() alreadyCommitedObjectsIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the ids of all the ignored objects. Used to quickly\n * determine if the selected rows belong to \"ignored\" or not. This\n * information is required for the ContextMenuCallback callback. This set\n * has to be updated on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly\n * determine if the selected rows belong to \"pending\" or \"igonred\". This\n * information is required for the ContextMenuCallback callback. This set\n * has to be updated after every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that stores the marked state of each object cell. This is\n * necessary because filtering the grid causes marked cells to lose\n * 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 // maps\n\n /**\n * A map that holds the current update objects states (\"inserted\" |\n * \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" |\n * \"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 === \"commiting\"\n );\n\n if (!someObjectIsUpdating) {\n this.commiting = false;\n }\n }\n\n /**\n * A map that holds object messages, after trying to commit ('info' |\n * 'success' | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n // boolean\n\n /**\n * It holds a boolean indicating if at least one object from the\n * tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * A boolean to indicate if the comments input has error or not.\n */\n @State() commentInputHasError: boolean = false;\n\n /**\n * Set to true when objects are being commited. This helps disabling\n * controls until all objects are done.\n */\n @State() commiting: boolean = false;\n\n /**\n * Hides or shows the filter secondary controls\n */\n @State() filterSecondaryIsHidden = true;\n\n /**\n * Indicates if any of the filter secondary controls have a condition\n * (have a value other than default \"All\"). This changes the filter\n * toggle button icon, from \"filter\" to \"filterWithConditions\".\n */\n @State() filterSecondaryHasConditions = false;\n\n /**\n * Used to display a loader. Set to true when loadCallback is called.\n */\n @State() loading: boolean = true;\n\n /**\n * Used to mark all the grid checkboxes, only on the first render.\n */\n @State() objectsRenderedAlready: boolean = false;\n\n // models\n\n /**\n * changeset options as ComboBoxModel\n */\n @State() changesetsComboBoxModel: ComboBoxModel;\n\n /**\n * categories options as ComboBoxModel\n */\n // @State() categoriesComboBoxModel: ComboBoxModel;\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * The ComboBoxModel for \"Types\" filter.\n */\n @State() typesComboBoxModel: ComboBoxModel = [];\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before\n * \"state\" filter\n */\n @State() pendingAndIgnored: CommitData = {\n pendingForCommit: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged() {\n this.#applyClientFilter();\n this.pendingIdsSet.clear();\n this.pendingAndIgnored.pendingForCommit?.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 // current values\n\n /**\n * Holds the current value for the commit \"comments\"\n */\n @State() commentsValue: string = \"\";\n\n /**\n * The current search filter value.\n */\n @State() searchValue: string = \"\";\n\n /**\n * Holds the current value for the \"type\" filter\n */\n @State() selectedType: string;\n\n /**\n * Holds the current value for the \"local state\" filter\n */\n @State() selectedState: StateForFilter = ALL_VALUE;\n\n /**\n * Holds the current value for the \"changeset\" filter\n */\n @State() selectedChangeset: string;\n\n /**\n * Holds the current value for the \"folder\" filter\n */\n @State() selectedFolder: string;\n\n /**\n * Holds the current value for the \"category\" filter\n */\n @State() selectedCategory: string;\n\n /**\n * folder options as ComboBoxModel\n */\n @State() foldersComboBoxModel: ComboBoxModel;\n\n // callbacks\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback: CommitCallback;\n\n /**\n * Invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly objectsContextMenuCallback!: ContextMenuCallback;\n\n /**\n * Invoked to return the list of data types loaded from file\n * or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Invoked when the user selects rows from the grid\n */\n @Prop() readonly selectCallback: SelectCallback;\n\n // models\n\n /**\n * \"types\" options for the filter.\n */\n @Prop() readonly types: ObjectType[];\n @Watch(\"types\")\n typesChanged(newTypes: ObjectType[]) {\n this.typesComboBoxModel = typesToComboBoxItemModel(newTypes);\n }\n\n /**\n * \"changeset\" options for the filter.\n */\n @Prop() readonly changeset: GxOption[];\n @Watch(\"changeset\")\n changesetChanged(newChangesetOptions: GxOption[]) {\n this.changesetsComboBoxModel =\n changesetToComboBoxModel(newChangesetOptions);\n }\n\n /**\n * \"folder\" options for the filter.\n */\n @Prop() readonly folders: GxOption[];\n @Watch(\"folders\")\n folderChanged(newFolderOptions: GxOption[]) {\n this.foldersComboBoxModel = foldersToComboBoxModel(newFolderOptions);\n }\n\n /**\n * \"category\" options for the filter.\n */\n // @Prop() readonly categories: GxOption[];\n // @Watch(\"categories\")\n // categoryChanged(newCategoryOptions: GxOption[]) {\n // this.categoriesComboBoxModel =\n // categoriesToComboBoxModel(newCategoryOptions);\n // }\n\n // boolean\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill,\n * only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly serverDetails: ServerDetails;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#localStatesComboBoxModel = [\n {\n caption: this.#componentLocale.states.all,\n value: ALL_VALUE\n },\n {\n caption: this.#componentLocale.states.inserted,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.states.modified,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.states.conflicted,\n value: \"conflicted\"\n },\n {\n caption: this.#componentLocale.states.deleted,\n value: \"deleted\"\n }\n ];\n\n // intialize combo-box models\n\n this.typesComboBoxModel = typesToComboBoxItemModel(this.types);\n this.selectedType = this.typesComboBoxModel[0].value;\n\n this.selectedState = this.#localStatesComboBoxModel[0].value;\n\n this.changesetChanged(this.changeset);\n this.selectedChangeset =\n this.changesetsComboBoxModel.length > 0\n ? this.changesetsComboBoxModel[0].value\n : ALL_VALUE;\n\n this.folderChanged(this.folders);\n this.selectedFolder =\n this.foldersComboBoxModel && this.foldersComboBoxModel.length > 0\n ? this.foldersComboBoxModel[0].value\n : ALL_VALUE;\n\n // this.categoryChanged(this.categories);\n // this.selectedCategory =\n // this.categoriesComboBoxModel.length > 0\n // ? this.categoriesComboBoxModel[0].value\n // : ALL_VALUE;\n\n this.#evaluateSecondaryFilterHasConditions();\n }\n\n async componentDidLoad() {\n await this.#loadData();\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();\n }\n\n // commit related\n\n #commitCheckedClickedHandler = () => {\n this.#commitObjectsHandler([...this.markedObjectsSet]);\n };\n\n #commitSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"commiting\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#commitObjectsHandler([objectId]);\n };\n\n #commitObjectsHandler = async (selection: string[]) => {\n if (this.commentsValue.length === 0) {\n // A comment is required to commit.\n this.commentInputHasError = true;\n return;\n }\n this.commentInputHasError = false;\n this.commiting = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"commiting\");\n });\n\n const commitResult = await this.commitCallback(\n selection,\n this.commentsValue\n );\n\n commitResult.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 === \"commited\") {\n this.alreadyCommitedObjectsIdsSet.add(objectResult.id);\n this.objectsStatusMap.set(objectResult.id, \"commited\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n\n this.commiting = false;\n };\n\n // handlers\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.alreadyCommitedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #rowSelectionChangedHandler = async (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedRowsIds = event.detail.rowsId;\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource: SourceType = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n const filteredSelectedRowsIds = clearGridSelection(\n gridSource,\n selectedRowsIds,\n this.pendingIdsSet,\n this.ignoredIdsSet,\n this.#chGridPendingForUpdateEl\n );\n\n await this.selectCallback(gridSource, filteredSelectedRowsIds);\n };\n\n #commentsInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.commentsValue = event.detail as string;\n if (this.commentsValue.length && this.commentInputHasError) {\n // remove error style and tooltip\n this.commentInputHasError = false;\n }\n };\n\n // filter related\n\n #applyClientFilter = () => {\n this.pendingObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.pendingForCommit\n );\n this.ignoredObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.ignoredObjects\n );\n };\n\n #filteredObjects = (objects: ModifiedObjectData[]): ModifiedObjectData[] => {\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 // status\n if (this.selectedState && this.selectedState !== ALL_VALUE) {\n filtered = filtered.filter(object => object.state === this.selectedState);\n }\n\n return filtered;\n };\n\n #evaluateSecondaryFilterHasConditions = () => {\n if (\n // this.selectedChangeset !== ALL_VALUE ||\n this.selectedFolder !== ALL_VALUE\n // this.selectedCategory !== ALL_VALUE\n ) {\n this.filterSecondaryHasConditions = true;\n } else {\n this.filterSecondaryHasConditions = false;\n }\n };\n\n #toggleFiltersHandler = () => {\n this.filterSecondaryIsHidden = !this.filterSecondaryIsHidden;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).trim();\n this.#applyClientFilter();\n };\n\n #typeChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedState = event.detail as StateForFilter;\n this.#applyClientFilter();\n };\n\n // changeset is a WIP.\n // #changesetChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedChangeset = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #folderChanged = (event: CustomEvent<string> | InputEvent) => {\n this.selectedFolder = event.detail as string;\n this.#loadData();\n this.#evaluateSecondaryFilterHasConditions();\n };\n\n // #categoryChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedCategory = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selectedRowsIds =\n await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n await this.objectsContextMenuCallback(gridSource, {\n selection: selectedRowsIds,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n // other methods\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n this.#rowCheckedChangedByTheUser = false;\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 this.#rowCheckedChangedByTheUser = true;\n };\n\n #setInitialObjectsStatus = (): void => {\n if (this.objectsRenderedAlready) {\n return;\n }\n this.pendingAndIgnored.pendingForCommit.forEach(pendingObject => {\n const status: StatusInternal = \"pending\";\n this.objectsStatusMap.set(pendingObject.id, status);\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal = \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (): Promise<void> => {\n this.loading = true;\n this.pendingAndIgnored = await this.loadCallback({\n search: this.searchValue,\n type: this.selectedType,\n changeset: this.selectedChangeset,\n folder: this.selectedFolder,\n category: this.selectedCategory\n });\n\n this.#setInitialObjectsStatus();\n this.loading = false;\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.alreadyCommitedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n // render methods\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 render() {\n const disableControls = this.commiting || this.loading;\n const gridIsEmpty =\n this.pendingObjectsAfterFilter.length === 0 &&\n this.ignoredObjectsAfterFilter.length === 0;\n\n const filterIcon = this.filterSecondaryHasConditions\n ? ICONS.filterWithConditions\n : ICONS.filter;\n\n const commitButtonEnabled =\n this.atLeastOneObjectIsChecked && this.commentsValue.length > 0;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class={{ [CLASSES.HEADER]: true }}>\n <div\n // header details\n class={{ [CLASSES.HEADER_DETAILS]: true }}\n >\n {headerTitle(this.#componentLocale.commitDetail.title)}\n\n {\n // genexus server\n headerDetail(\n \"link\",\n this.#componentLocale.commitDetail.genexusServer,\n this.serverDetails ? this.serverDetails.serverUrl : \"\",\n this.openServerCallback,\n \"detail__genexus-server\"\n )\n }\n\n {\n // knowledge base\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.knowledgeBase,\n this.serverDetails ? this.serverDetails.kbName : \"\",\n undefined,\n \"detail__knowledge-base\"\n )\n }\n\n {\n // version\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.version,\n this.serverDetails ? this.serverDetails.versionName : \"\",\n undefined,\n \"detail__version\"\n )\n }\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class={{ [CLASSES.FILTER]: true, \"filter-primary\": true }}>\n <ch-edit\n // searchch-edit\n class=\"input filter__combo\"\n disabled={disableControls}\n startImgSrc={ICONS.search}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__combo\"\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 // local states\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.#localStatesComboBoxModel}\n value={this.selectedState}\n onInput={this.#stateChangedHandler}\n accessibleName={\n this.#componentLocale.filter.localStateAccesibleName\n }\n placeholder={this.#componentLocale.filter.localStatePlaceholder}\n ></ch-combo-box-render>\n </div>\n\n <button\n // toggle secondary filter button\n id={FILTER_SECONDARY_BUTTON_ID}\n class=\"button-secondary button-icon-only\"\n disabled={disableControls}\n aria-label={this.#componentLocale.filter.secondaryFilterAriaLabel}\n aria-expanded={this.filterSecondaryIsHidden ? \"false\" : \"true\"}\n aria-controls={FILTER_SECONDARY_CONTAINER_ID}\n onClick={this.#toggleFiltersHandler}\n title={this.#componentLocale.filter.secondaryFilterAriaLabel}\n >\n <ch-image class=\"icon-md\" src={filterIcon}></ch-image>\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#loadData}\n >\n <ch-image class=\"icon-md\" src={ICONS.refresh}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n\n <button\n // commit button\n class=\"button-primary\"\n disabled={!commitButtonEnabled || disableControls}\n onClick={this.#commitCheckedClickedHandler}\n >\n {this.#componentLocale.filter.commit}\n </button>\n </div>\n\n <div\n // secondary filter\n id={FILTER_SECONDARY_CONTAINER_ID}\n aria-labelledby={FILTER_SECONDARY_BUTTON_ID}\n class={{\n [CLASSES.FILTER]: true,\n \"filter-secondary\": true,\n \"filter-secondary--visible\": !this.filterSecondaryIsHidden\n }}\n inert={this.filterSecondaryIsHidden}\n hidden={this.filterSecondaryIsHidden}\n >\n <div>\n {/* \n // changeset is a WIP.\n <ch-combo-box-render\n // changeset\n class=\"combo-box\"\n disabled={disableControls}\n model={this.changesetsComboBoxModel}\n value={this.selectedChangeset}\n onInput={this.#changesetChangedHandler}\n accessibleName={\n this.#componentLocale.filter.changesetAccesibleName\n }\n placeholder={\n this.#componentLocale.filter.changesetPlaceholder\n }\n ></ch-combo-box-render> */}\n\n <ch-combo-box-render\n // folder\n class=\"combo-box\"\n disabled={disableControls}\n model={this.foldersComboBoxModel}\n value={this.selectedFolder}\n onInput={this.#folderChanged}\n accessibleName={\n this.#componentLocale.filter.folderAccesibleName\n }\n placeholder={this.#componentLocale.filter.folderPlaceholder}\n ></ch-combo-box-render>\n\n {/* <ch-combo-box-render\n // category\n class=\"combo-box\"\n disabled={disableControls}\n model={this.categoriesComboBoxModel}\n value={this.selectedCategory}\n onInput={this.#categoryChangedHandler}\n accessibleName={\n this.#componentLocale.filter.categoryPlaceholder\n }\n placeholder={this.#componentLocale.filter.categoryPlaceholder}\n ></ch-combo-box-render> */}\n </div>\n </div>\n\n <ch-edit\n // commit comments\n class=\"input comments\"\n multiline={true}\n autoGrow={true}\n placeholder={this.#componentLocale.commitCommentPlaceholder}\n onInput={this.#commentsInputHandler}\n ></ch-edit>\n </div>\n\n <div class={CLASSES.MAIN}>\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.commiting,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onSelectionChanged={this.#rowSelectionChangedHandler}\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n {renderTabularGridColumns(\n [\"action\"],\n gridIsEmpty,\n this.#componentLocale\n )}\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.pendingCommits}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"pending\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>,\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.ignoredObjects}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"ignored\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\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={ICONS.filter}\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"]}
|
|
1
|
+
{"version":3,"file":"commit.js","sourceRoot":"","sources":["../../../../../src/components/team-dev/version-control/commit/commit.tsx"],"names":[],"mappings":"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","sourcesContent":["// stencil\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n Watch\n} from \"@stencil/core\";\n\n// external libraries\nimport { MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChEditCustomEvent,\n ComboBoxModel,\n TabularGridColumnSelectorClickedEvent,\n TabularGridColumnSortChangedEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent,\n TabularGridSelectionChangedEvent\n} from \"@genexus/chameleon-controls-library\";\n\n// local\nimport { Locale } from \"../../../../common/locale\";\nimport {\n GxOption,\n ItemsCheckedResult,\n ObjectType\n} from \"../../../../common/types\";\nimport clearGridSelection from \"../common/clear-grid-selection\";\nimport areSetsEqual from \"../common/are-sets-equal\";\nimport uncheckIgnoredObjects from \"../common/uncheck-ignored\";\n\nimport type {\n StateForFilter,\n StatusInternal,\n MessageData,\n ModifiedObjectData,\n CommitData,\n CommitCallback,\n ContextMenuCallback,\n LoadCallback,\n PendingItemsCheckedCallback,\n SelectCallback,\n ServerDetails,\n SourceType\n} from \"../common/types\";\n\nimport headerDetail, { headerTitle } from \"../common/header-renders\";\nimport { changesetToComboBoxModel } from \"./utilities/changeset-to-combo-box\";\nimport { foldersToComboBoxModel } from \"./utilities/folders-to-combo-box\";\nimport { typesToComboBoxItemModel } from \"./utilities/types-to-combo-box\";\nimport renderTabularGridRows, {\n renderTabularGridColumns,\n COLUMNS_IDS\n} from \"../common/tabular-grid-render\";\nimport sortTabularGridColumn, {\n type SortTabularGridColumnDataType\n} from \"../../../../common/chameleon/tabular-grid-column-sort\";\n\nimport { CSS_SELECTORS as CLASSES, ALL_VALUE } from \"../common/constants\";\nimport ICONS from \"../common/constants\";\n\nconst FILTER_SECONDARY_CONTAINER_ID = \"filters-secondary-container\";\nconst FILTER_SECONDARY_BUTTON_ID = \"filter-toggle-button\";\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\n@Component({\n tag: \"gx-ide-team-dev-commit\",\n styleUrl: \"commit.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-commit\"]\n})\nexport class GxIdeTeamDevCommit {\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\n /**\n * The ComboBoxModel for \"Local State\" filter.\n */\n #localStatesComboBoxModel: { caption: string; value: StateForFilter }[];\n\n /**\n * Used to determine if pendingItemsCheckedCallback callback has to be\n * called or not. It should be ignored if the grid checkboxes state is\n * changed programmatically, by setting markRow to false once the object\n * has been successfully updated, for example.\n */\n #rowCheckedChangedByTheUser: boolean = true;\n\n @Element() el: HTMLGxIdeTeamDevCommitElement;\n\n /**\n * A reference to the tablar grid. Used to call methods.\n */\n #chGridPendingForUpdateEl!: HTMLChTabularGridElement;\n\n // sets\n\n /**\n * A boolean that indicates if all the pending objects, have been commited\n * already.\n */\n @State() allPendingAreCommited: boolean = false;\n\n /**\n * A set that holds the id's of the objects that have been commited already.\n */\n @State() alreadyCommitedObjectsIdsSet: Set<string> = new Set<string>([]);\n @Watch(\"alreadyCommitedObjectsIdsSet\")\n alreadyCommitedObjectsIdsSetChanged(newCommitedObjectsIdsSet: Set<string>) {\n const pendingIdsSetAndCommitedIdsSetAreEqual = areSetsEqual(\n newCommitedObjectsIdsSet,\n this.pendingIdsSet\n );\n\n this.allPendingAreCommited =\n pendingIdsSetAndCommitedIdsSetAreEqual && this.pendingIdsSet.size > 0;\n }\n\n /**\n * A set that holds the ids of all the ignored objects. Used to quickly\n * determine if the selected rows belong to \"ignored\" or not. This\n * information is required for the ContextMenuCallback. This set\n * has to be updated on every loadCallback.\n */\n @State() ignoredIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that holds the id's of all the pending objects. Used to quickly\n * determine if the selected rows belong to \"pending\" or \"ignored\". This\n * information is required for the ContextMenuCallback. This set\n * has to be updated after every loadCallback.\n */\n @State() pendingIdsSet: Set<string> = new Set<string>([]);\n\n /**\n * A set that stores the marked state of each row. This is\n * required because filtering the grid causes marked cells to lose\n * their marked 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 // maps\n\n /**\n * A map that holds the current state of every row (\"inserted\" |\n * \"modified\" | \"modified-with-conflicts\" | \"deleted\" | \"updating\" |\n * \"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 === \"commiting\"\n );\n\n if (!someObjectIsUpdating) {\n this.commiting = false;\n }\n }\n\n /**\n * A map that holds object messages, after trying to commit ('info' |\n * 'success' | 'warning' | 'error')\n */\n @State() objectsMessagesDataMap: Map<string, MessageData[]> = new Map();\n\n // boolean\n\n /**\n * It holds a boolean indicating if at least one object from the\n * tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * A boolean to indicate if the comments input has error or not.\n */\n @State() commentInputHasError: boolean = false;\n\n /**\n * Set to true when objects are being commited. This helps disabling\n * controls until all objects are done.\n */\n @State() commiting: boolean = false;\n\n /**\n * Hides or shows the filter secondary controls\n */\n @State() filterSecondaryIsHidden = true;\n\n /**\n * Indicates if any of the filter secondary controls have a condition\n * (have a value other than default \"All\"). This changes the filter\n * toggle button icon, from \"filter\" to \"filterWithConditions\".\n */\n @State() filterSecondaryHasConditions = false;\n\n /**\n * Used to display a loader. Set to true when loadCallback is called.\n */\n @State() loading: boolean = true;\n\n // models\n\n /**\n * changeset options as ComboBoxModel\n */\n @State() changesetsComboBoxModel: ComboBoxModel;\n\n /**\n * categories options as ComboBoxModel\n */\n // @State() categoriesComboBoxModel: ComboBoxModel;\n\n /**\n * Pending objects after \"action\" filter\n */\n @State() pendingObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * Ignored objects after \"action\" filter\n */\n @State() ignoredObjectsAfterFilter: ModifiedObjectData[] = [];\n\n /**\n * The ComboBoxModel for \"Types\" filter.\n */\n @State() typesComboBoxModel: ComboBoxModel = [];\n\n /**\n * All objects (\"pending for update\" and \"ignored objects\") before\n * \"state\" filter\n */\n @State() pendingAndIgnored: CommitData = {\n pendingForCommit: [],\n ignoredObjects: []\n };\n @Watch(\"pendingAndIgnored\")\n pendingAndIgnoredChanged(newPendingAndIgnored: CommitData) {\n // clear previous state\n this.pendingIdsSet.clear(); // before pendingIdsSet.add\n this.ignoredIdsSet.clear(); // before ignoredIdsSet.add\n this.objectsMessagesDataMap = new Map();\n this.alreadyCommitedObjectsIdsSet = new Set();\n this.commentInputHasError = false;\n this.markedObjectsSet = new Set(); // before #markPendingObjects\n\n newPendingAndIgnored.pendingForCommit?.forEach(pending => {\n this.pendingIdsSet.add(pending.id);\n });\n newPendingAndIgnored.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 // current values\n\n /**\n * Holds the current value for the commit \"comments\"\n */\n @State() commentsValue: string = \"\";\n\n /**\n * The current search filter value.\n */\n @State() searchValue: string = \"\";\n\n /**\n * Holds the current value for the \"type\" filter\n */\n @State() selectedType: string;\n\n /**\n * Holds the current value for the \"local state\" filter\n */\n @State() selectedState: StateForFilter = ALL_VALUE;\n\n /**\n * Holds the current value for the \"changeset\" filter\n */\n @State() selectedChangeset: string;\n\n /**\n * Holds the current value for the \"folder\" filter\n */\n @State() selectedFolder: string;\n\n /**\n * Holds the current value for the \"category\" filter\n */\n @State() selectedCategory: string;\n\n /**\n * folder options as ComboBoxModel\n */\n @State() foldersComboBoxModel: ComboBoxModel;\n\n // callbacks\n\n /**\n * Invoked when user starts the commit process\n */\n @Prop() readonly commitCallback: CommitCallback;\n\n /**\n * Invoked when user activates the context menu on any of the grids.\n */\n @Prop() readonly objectsContextMenuCallback!: ContextMenuCallback;\n\n /**\n * Invoked to return the list of data types loaded from file\n * or url.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Invoked when user clicks in server url of Update From group.\n */\n @Prop() readonly openServerCallback!: () => Promise<void>;\n\n /**\n * Invoked to return information of a Font type of data.\n */\n @Prop() readonly pendingItemsCheckedCallback!: PendingItemsCheckedCallback;\n\n /**\n * Invoked when the user selects rows from the grid\n */\n @Prop() readonly selectCallback: SelectCallback;\n\n // models\n\n /**\n * \"types\" options for the filter.\n */\n @Prop() readonly types: ObjectType[];\n @Watch(\"types\")\n typesChanged(newTypes: ObjectType[]) {\n this.typesComboBoxModel = typesToComboBoxItemModel(newTypes);\n }\n\n /**\n * \"changeset\" options for the filter.\n */\n @Prop() readonly changeset: GxOption[];\n @Watch(\"changeset\")\n changesetChanged(newChangesetOptions: GxOption[]) {\n this.changesetsComboBoxModel =\n changesetToComboBoxModel(newChangesetOptions);\n }\n\n /**\n * \"folder\" options for the filter.\n */\n @Prop() readonly folders: GxOption[];\n @Watch(\"folders\")\n folderChanged(newFolderOptions: GxOption[]) {\n this.foldersComboBoxModel = foldersToComboBoxModel(newFolderOptions);\n }\n\n /**\n * \"category\" options for the filter.\n */\n // @Prop() readonly categories: GxOption[];\n // @Watch(\"categories\")\n // categoryChanged(newCategoryOptions: GxOption[]) {\n // this.categoriesComboBoxModel =\n // categoriesToComboBoxModel(newCategoryOptions);\n // }\n\n // boolean\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill,\n * only when the action is\n */\n @Prop() readonly updatePillAsButton: boolean = false;\n\n /**\n * Information to show in Update From group.\n */\n @Prop() readonly serverDetails: ServerDetails;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // Initiate \"actions\" combo box filter\n this.#localStatesComboBoxModel = [\n {\n caption: this.#componentLocale.states.all,\n value: ALL_VALUE\n },\n {\n caption: this.#componentLocale.states.inserted,\n value: \"inserted\"\n },\n {\n caption: this.#componentLocale.states.modified,\n value: \"modified\"\n },\n {\n caption: this.#componentLocale.states.conflicted,\n value: \"conflicted\"\n },\n {\n caption: this.#componentLocale.states.deleted,\n value: \"deleted\"\n }\n ];\n\n // intialize combo-box models\n\n this.typesComboBoxModel = typesToComboBoxItemModel(this.types);\n this.selectedType = this.typesComboBoxModel[0].value;\n\n this.selectedState = this.#localStatesComboBoxModel[0].value;\n\n this.changesetChanged(this.changeset);\n this.selectedChangeset =\n this.changesetsComboBoxModel.length > 0\n ? this.changesetsComboBoxModel[0].value\n : ALL_VALUE;\n\n this.folderChanged(this.folders);\n this.selectedFolder =\n this.foldersComboBoxModel && this.foldersComboBoxModel.length > 0\n ? this.foldersComboBoxModel[0].value\n : ALL_VALUE;\n\n // this.categoryChanged(this.categories);\n // this.selectedCategory =\n // this.categoriesComboBoxModel.length > 0\n // ? this.categoriesComboBoxModel[0].value\n // : ALL_VALUE;\n\n this.#evaluateSecondaryFilterHasConditions();\n }\n\n async componentDidLoad() {\n await this.#loadData();\n\n // initialize \"allPendingAreCommited\"\n this.alreadyCommitedObjectsIdsSetChanged(this.alreadyCommitedObjectsIdsSet);\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 await this.#loadData();\n }\n\n // commit related\n\n #commitCheckedClickedHandler = () => {\n this.#commitObjectsHandler([...this.markedObjectsSet]);\n };\n\n #commitSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n const newobjectsStatusMap = new Map(this.objectsStatusMap);\n newobjectsStatusMap.set(objectId, \"commiting\");\n this.objectsStatusMap = newobjectsStatusMap;\n this.#commitObjectsHandler([objectId]);\n };\n\n #commitObjectsHandler = async (selection: string[]) => {\n if (this.commentsValue.length === 0) {\n // A comment is required to commit.\n this.commentInputHasError = true;\n return;\n }\n this.commentInputHasError = false;\n this.commiting = true;\n\n selection.forEach(itemToUpdate => {\n this.objectsStatusMap.set(itemToUpdate, \"commiting\");\n });\n\n const commitResult = await this.commitCallback(\n selection,\n this.commentsValue\n );\n\n commitResult.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 === \"commited\") {\n // Apply a new Set to \"alreadyCommitedObjectsIdsSet\" in order for the Watch to fire.\n this.alreadyCommitedObjectsIdsSet = new Set([\n ...this.alreadyCommitedObjectsIdsSet,\n objectResult.id\n ]);\n this.objectsStatusMap.set(objectResult.id, \"commited\");\n await this.#chGridPendingForUpdateEl.markRow(objectResult.id, false);\n } else {\n this.objectsStatusMap.set(objectResult.id, \"pending\");\n }\n });\n\n this.commiting = false;\n };\n\n // handlers\n\n #rowMarkingChangedHandler = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const markedRowsIds = event.detail.rowsId;\n\n this.markedObjectsSet = new Set(\n markedRowsIds.filter(\n markedObjectId => !this.alreadyCommitedObjectsIdsSet.has(markedObjectId)\n )\n );\n\n if (this.#rowCheckedChangedByTheUser) {\n this.#updatePendingCheckedItems(event);\n }\n };\n\n #rowSelectionChangedHandler = async (\n event: CustomEvent<TabularGridSelectionChangedEvent>\n ) => {\n const selectedRowsIds = event.detail.rowsId;\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource: SourceType = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n const filteredSelectedRowsIds = clearGridSelection(\n gridSource,\n selectedRowsIds,\n this.pendingIdsSet,\n this.ignoredIdsSet,\n this.#chGridPendingForUpdateEl\n );\n\n await this.selectCallback(gridSource, filteredSelectedRowsIds);\n };\n\n #commentsInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.commentsValue = event.detail as string;\n if (this.commentsValue.length && this.commentInputHasError) {\n // remove error style and tooltip\n this.commentInputHasError = false;\n }\n };\n\n // filter related\n\n #applyClientFilter = () => {\n this.pendingObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.pendingForCommit\n );\n this.ignoredObjectsAfterFilter = this.#filteredObjects(\n this.pendingAndIgnored.ignoredObjects\n );\n };\n\n #filteredObjects = (objects: ModifiedObjectData[]): ModifiedObjectData[] => {\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 // status\n if (this.selectedState && this.selectedState !== ALL_VALUE) {\n filtered = filtered.filter(object => object.state === this.selectedState);\n }\n\n return filtered;\n };\n\n #evaluateSecondaryFilterHasConditions = () => {\n if (\n // this.selectedChangeset !== ALL_VALUE ||\n this.selectedFolder !== ALL_VALUE\n // this.selectedCategory !== ALL_VALUE\n ) {\n this.filterSecondaryHasConditions = true;\n } else {\n this.filterSecondaryHasConditions = false;\n }\n };\n\n #toggleFiltersHandler = () => {\n this.filterSecondaryIsHidden = !this.filterSecondaryIsHidden;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).trim();\n this.#applyClientFilter();\n };\n\n #typeChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedType = event.detail as string;\n this.#loadData();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.selectedState = event.detail as StateForFilter;\n this.#applyClientFilter();\n };\n\n // changeset is a WIP.\n // #changesetChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedChangeset = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #folderChanged = (event: CustomEvent<string> | InputEvent) => {\n this.selectedFolder = event.detail as string;\n this.#loadData();\n this.#evaluateSecondaryFilterHasConditions();\n };\n\n // #categoryChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n // this.selectedCategory = event.detail as string;\n // this.#loadData();\n // this.#evaluateSecondaryFilterHasConditions();\n // };\n\n #onRowContextMenuHandler =\n () => async (ev: CustomEvent<TabularGridRowContextMenuEvent>) => {\n ev.preventDefault();\n ev.stopPropagation();\n\n const selectedRowsIds =\n await this.#chGridPendingForUpdateEl.getSelectedRows();\n\n const firstSelectedRowId = selectedRowsIds[0];\n const gridSource = this.pendingIdsSet.has(firstSelectedRowId)\n ? \"pending\"\n : \"ignored\";\n\n await this.objectsContextMenuCallback(gridSource, {\n selection: selectedRowsIds,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n };\n\n // other methods\n\n #updatePendingCheckedItems = async (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n this.#rowCheckedChangedByTheUser = false;\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 this.#rowCheckedChangedByTheUser = true;\n };\n\n #setInitialObjectsStatus = (): void => {\n this.pendingAndIgnored.pendingForCommit.forEach(pendingObject => {\n const status: StatusInternal = \"pending\";\n this.objectsStatusMap.set(pendingObject.id, status);\n });\n this.pendingAndIgnored.ignoredObjects.forEach(ignoredObject => {\n const status: StatusInternal = \"ignored\";\n this.objectsStatusMap.set(ignoredObject.id, status);\n });\n };\n\n #loadData = async (): Promise<void> => {\n this.loading = true;\n\n this.pendingAndIgnored = await this.loadCallback({\n search: this.searchValue,\n type: this.selectedType,\n changeset: this.selectedChangeset,\n folder: this.selectedFolder,\n category: this.selectedCategory\n });\n\n this.loading = false;\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.alreadyCommitedObjectsIdsSet.has(pendingId)) {\n this.markedObjectsSet = new Set([...this.markedObjectsSet, pendingId]);\n }\n }\n };\n\n // render methods\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 #sortTabularGridColumnCallback = (\n e: CustomEvent<TabularGridColumnSortChangedEvent>\n ) => {\n const columnId = e.detail.columnId;\n\n let objectProperty;\n let dateType: SortTabularGridColumnDataType = \"string\";\n if (columnId === COLUMNS_IDS.type) {\n objectProperty = \"name\"; // the type name\n dateType = \"object\";\n } else if (\n columnId === COLUMNS_IDS.modifiedOn ||\n columnId === COLUMNS_IDS.lastSynchronized\n ) {\n dateType = \"dateString\";\n }\n this.pendingObjectsAfterFilter = [\n ...sortTabularGridColumn(\n e,\n this.pendingObjectsAfterFilter,\n dateType,\n objectProperty\n )\n ];\n this.ignoredObjectsAfterFilter = [\n ...sortTabularGridColumn(\n e,\n this.ignoredObjectsAfterFilter,\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.commiting || this.loading;\n const gridIsEmpty =\n this.pendingObjectsAfterFilter.length === 0 &&\n this.ignoredObjectsAfterFilter.length === 0;\n\n const filterIcon = this.filterSecondaryHasConditions\n ? ICONS.filterWithConditions\n : ICONS.filter;\n\n const commitButtonEnabled =\n this.atLeastOneObjectIsChecked &&\n this.commentsValue.length > 0 &&\n !this.allPendingAreCommited;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class={{ [CLASSES.HEADER]: true }}>\n <div\n // header details\n class={{ [CLASSES.HEADER_DETAILS]: true }}\n >\n {headerTitle(this.#componentLocale.commitDetail.title)}\n\n {\n // genexus server\n headerDetail(\n \"link\",\n this.#componentLocale.commitDetail.genexusServer,\n this.serverDetails ? this.serverDetails.serverUrl : \"\",\n this.openServerCallback,\n \"detail__genexus-server\"\n )\n }\n\n {\n // knowledge base\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.knowledgeBase,\n this.serverDetails ? this.serverDetails.kbName : \"\",\n undefined,\n \"detail__knowledge-base\"\n )\n }\n\n {\n // version\n headerDetail(\n \"text\",\n this.#componentLocale.commitDetail.version,\n this.serverDetails ? this.serverDetails.versionName : \"\",\n undefined,\n \"detail__version\"\n )\n }\n </div>\n </header>\n\n <div class=\"filter-container spacing-body-inline\">\n <div class={{ [CLASSES.FILTER]: true, \"filter-primary\": true }}>\n <ch-edit\n // searchch-edit\n class=\"input filter__combo\"\n disabled={disableControls}\n startImgSrc={ICONS.search}\n accessibleName={\n this.#componentLocale.filter.searchAccessibleName\n }\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>\n\n <ch-combo-box-render\n // types\n class=\"combo-box filter__combo\"\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 // local states\n class=\"combo-box filter__combo\"\n disabled={disableControls}\n model={this.#localStatesComboBoxModel}\n value={this.selectedState}\n onInput={this.#stateChangedHandler}\n accessibleName={\n this.#componentLocale.filter.localStateAccesibleName\n }\n placeholder={this.#componentLocale.filter.localStatePlaceholder}\n ></ch-combo-box-render>\n </div>\n\n <button\n // toggle secondary filter button\n id={FILTER_SECONDARY_BUTTON_ID}\n class=\"button-secondary button-icon-only\"\n disabled={disableControls}\n aria-label={this.#componentLocale.filter.secondaryFilterAriaLabel}\n aria-expanded={this.filterSecondaryIsHidden ? \"false\" : \"true\"}\n aria-controls={FILTER_SECONDARY_CONTAINER_ID}\n onClick={this.#toggleFiltersHandler}\n title={this.#componentLocale.filter.secondaryFilterAriaLabel}\n >\n <ch-image class=\"icon-md\" src={filterIcon}></ch-image>\n </button>\n\n <div class=\"buttons-spacer\">\n <button\n // reload button\n class=\"button-secondary button-icon-and-text\"\n disabled={disableControls}\n onClick={this.#loadData}\n >\n <ch-image class=\"icon-md\" src={ICONS.refresh}></ch-image>\n {this.#componentLocale.filter.reload}\n </button>\n\n <button\n // commit button\n class=\"button-primary\"\n disabled={!commitButtonEnabled || disableControls}\n onClick={this.#commitCheckedClickedHandler}\n >\n {this.#componentLocale.filter.commit}\n </button>\n </div>\n\n <div\n // secondary filter\n id={FILTER_SECONDARY_CONTAINER_ID}\n aria-labelledby={FILTER_SECONDARY_BUTTON_ID}\n class={{\n [CLASSES.FILTER]: true,\n \"filter-secondary\": true,\n \"filter-secondary--visible\": !this.filterSecondaryIsHidden\n }}\n inert={this.filterSecondaryIsHidden}\n hidden={this.filterSecondaryIsHidden}\n >\n <div>\n {/* \n // changeset is a WIP.\n <ch-combo-box-render\n // changeset\n class=\"combo-box\"\n disabled={disableControls}\n model={this.changesetsComboBoxModel}\n value={this.selectedChangeset}\n onInput={this.#changesetChangedHandler}\n accessibleName={\n this.#componentLocale.filter.changesetAccesibleName\n }\n placeholder={\n this.#componentLocale.filter.changesetPlaceholder\n }\n ></ch-combo-box-render> */}\n\n <ch-combo-box-render\n // folder\n class=\"combo-box\"\n disabled={disableControls}\n model={this.foldersComboBoxModel}\n value={this.selectedFolder}\n onInput={this.#folderChanged}\n accessibleName={\n this.#componentLocale.filter.folderAccesibleName\n }\n placeholder={this.#componentLocale.filter.folderPlaceholder}\n ></ch-combo-box-render>\n\n {/* <ch-combo-box-render\n // category\n class=\"combo-box\"\n disabled={disableControls}\n model={this.categoriesComboBoxModel}\n value={this.selectedCategory}\n onInput={this.#categoryChangedHandler}\n accessibleName={\n this.#componentLocale.filter.categoryPlaceholder\n }\n placeholder={this.#componentLocale.filter.categoryPlaceholder}\n ></ch-combo-box-render> */}\n </div>\n </div>\n\n <ch-edit\n // commit comments\n class=\"input comments\"\n multiline={true}\n autoGrow={true}\n placeholder={this.#componentLocale.commitCommentPlaceholder}\n onInput={this.#commentsInputHandler}\n ></ch-edit>\n </div>\n\n <div class={CLASSES.MAIN}>\n {!this.loading ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.commiting,\n \"empty-result\": gridIsEmpty\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onSelectionChanged={this.#rowSelectionChangedHandler}\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#onRowContextMenuHandler()}\n ref={(el: HTMLChTabularGridElement) =>\n (this.#chGridPendingForUpdateEl = el)\n }\n >\n {renderTabularGridColumns(\n [\"action\"],\n gridIsEmpty,\n this.#sortTabularGridColumnCallback,\n this.#columnSelectorClickedCallback,\n this.#componentLocale,\n !this.allPendingAreCommited\n )}\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.pendingCommits}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"pending\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\n </ch-tabular-grid-rowset>,\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.ignoredObjects}\n </ch-tabular-grid-rowset-legend>\n {renderTabularGridRows(\n \"ignored\",\n this.pendingObjectsAfterFilter,\n this.ignoredObjectsAfterFilter,\n this.alreadyCommitedObjectsIdsSet,\n this.markedObjectsSet,\n this.objectsMessagesDataMap,\n this.updatePillAsButton,\n this.#commitSingleObject,\n this.objectsStatusMap,\n this.searchValue,\n this.#componentLocale\n )}\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={ICONS.filter}\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"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two sets of string IDs and checks if they are identical.
|
|
3
|
+
*
|
|
4
|
+
* Two sets are considered identical if they have the same size and
|
|
5
|
+
* contain exactly the same elements, regardless of order.
|
|
6
|
+
*
|
|
7
|
+
* @param {Set<string>} a - The first set of string IDs.
|
|
8
|
+
* @param {Set<string>} b - The second set of string IDs.
|
|
9
|
+
* @returns {boolean} True if both sets are identical, false otherwise.
|
|
10
|
+
*/
|
|
11
|
+
const areSetsEqual = (a, b) => {
|
|
12
|
+
if (a.size !== b.size)
|
|
13
|
+
return false;
|
|
14
|
+
for (const value of a) {
|
|
15
|
+
if (!b.has(value))
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
};
|
|
20
|
+
export default areSetsEqual;
|
|
21
|
+
//# sourceMappingURL=are-sets-equal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"are-sets-equal.js","sourceRoot":"","sources":["../../../../../src/components/team-dev/version-control/common/are-sets-equal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,YAAY,GAAG,CAAC,CAAc,EAAE,CAAc,EAAW,EAAE;IAC/D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,CAAC,EAAE;QACrB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;KACjC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF,eAAe,YAAY,CAAC","sourcesContent":["/**\n * Compares two sets of string IDs and checks if they are identical.\n *\n * Two sets are considered identical if they have the same size and\n * contain exactly the same elements, regardless of order.\n *\n * @param {Set<string>} a - The first set of string IDs.\n * @param {Set<string>} b - The second set of string IDs.\n * @returns {boolean} True if both sets are identical, false otherwise.\n */\nconst areSetsEqual = (a: Set<string>, b: Set<string>): boolean => {\n if (a.size !== b.size) return false;\n for (const value of a) {\n if (!b.has(value)) return false;\n }\n return true;\n};\nexport default areSetsEqual;\n"]}
|
|
@@ -7,6 +7,17 @@ import { CSS_SELECTORS as CLASSES } from "./constants";
|
|
|
7
7
|
import { hiChar } from "../../../ww-files/helpers";
|
|
8
8
|
import { config } from "../../../../common/config";
|
|
9
9
|
const BUTTON_ACTION_SELECTOR = "button-action-custom-selector";
|
|
10
|
+
export const COLUMNS_IDS = {
|
|
11
|
+
action: "action",
|
|
12
|
+
description: "description",
|
|
13
|
+
lastSynchronized: "lastSynchronized",
|
|
14
|
+
localState: "localState",
|
|
15
|
+
modifiedOn: "modifiedOn",
|
|
16
|
+
module: "module",
|
|
17
|
+
name: "name",
|
|
18
|
+
status: "status",
|
|
19
|
+
type: "type"
|
|
20
|
+
};
|
|
10
21
|
const renderStateCellContent = (action, componentLocale) => {
|
|
11
22
|
let icon;
|
|
12
23
|
let caption;
|
|
@@ -99,14 +110,13 @@ const renderTabularGridRows = (type, pendingObjectsAfterFilter, ignoredObjectsAf
|
|
|
99
110
|
return (h("li", { class: "message-description" }, h("ch-image", { class: "icon-md message-icon", src: MESSAGE_ICON }), message.text));
|
|
100
111
|
})))))));
|
|
101
112
|
});
|
|
102
|
-
// this.objectsRenderedAlready = true;
|
|
103
113
|
return filteredRows;
|
|
104
114
|
};
|
|
105
115
|
export default renderTabularGridRows;
|
|
106
|
-
export const renderTabularGridColumns = (ignoredGridColumns, gridIsEmpty = false, componentLocale) => {
|
|
116
|
+
export const renderTabularGridColumns = (ignoredGridColumns, gridIsEmpty = false, sortTabularGridColumnCallback, columnSelectorClickedCallback, componentLocale, showRichRowSelector) => {
|
|
107
117
|
const colSize = gridIsEmpty
|
|
108
118
|
? config.tabularGrid.colSize.auto
|
|
109
119
|
: config.tabularGrid.colSize.maxContent;
|
|
110
|
-
return (h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, !ignoredGridColumns.includes("name") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId:
|
|
120
|
+
return (h("ch-tabular-grid-columnset", { class: "tabular-grid-column-set" }, !ignoredGridColumns.includes("name") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.name, columnName: componentLocale.objects.name, columnType: "rich", richRowSelector: showRichRowSelector, richRowSelectorMode: "mark", settingable: false, sortable: true, onColumnSortChanged: sortTabularGridColumnCallback, onColumnSelectorClicked: columnSelectorClickedCallback, size: colSize })), !ignoredGridColumns.includes("type") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.type, columnName: componentLocale.objects.type, settingable: false, sortable: true, onColumnSortChanged: sortTabularGridColumnCallback, size: colSize })), !ignoredGridColumns.includes("description") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.description, columnName: componentLocale.objects.description, settingable: false, sortable: true, onColumnSortChanged: sortTabularGridColumnCallback, size: config.tabularGrid.colSize.description })), !ignoredGridColumns.includes("modifiedOn") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.modifiedOn, columnName: componentLocale.objects.modifiedOn, sortable: true, onColumnSortChanged: sortTabularGridColumnCallback, settingable: false, size: colSize })), !ignoredGridColumns.includes("module") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.module, columnName: componentLocale.objects.module, sortable: true, onColumnSortChanged: sortTabularGridColumnCallback, settingable: false, size: colSize })), !ignoredGridColumns.includes("localState") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.localState, columnName: componentLocale.objects.localState, sortable: false, settingable: false, size: colSize })), !ignoredGridColumns.includes("lastSynchronized") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.lastSynchronized, columnName: componentLocale.objects.lastSynchronized, settingable: false, sortable: true, onColumnSortChanged: sortTabularGridColumnCallback, size: colSize })), !ignoredGridColumns.includes("action") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.action, columnName: componentLocale.objects.action, sortable: false, settingable: false, size: colSize })), !ignoredGridColumns.includes("status") && (h("ch-tabular-grid-column", { class: "tabular-grid-column", columnId: COLUMNS_IDS.status, columnName: componentLocale.objects.status, sortable: false, settingable: false, size: gridIsEmpty ? "auto" : "100px" }))));
|
|
111
121
|
};
|
|
112
122
|
//# sourceMappingURL=tabular-grid-render.js.map
|