mirror of
https://github.com/nasa/openmct.git
synced 2025-06-15 05:38:12 +00:00
Use Composition API to add/remove from composition (#5941)
* Use composition API in RemoveAction * refactor: ScatterPlotView to use composition API * fix: initialize transaction to null and reset * fix: remove seriesKey and correct found condition * refactor: Gauge to use composition API * refactor: DisplayLayout to use composition API * test: RemoveAction starts and ends transactions * test: add ScatterPlot add/remove telemetry test * test: fix e2e test and add annotation * test: remove unnecessary awaits * test: make some displayLayout tests stable * test{displayLayout}: navigate to objects via url * test(gauge): add test for add/remove telemetry * fix(#3117): init layoutItems within transaction * refactor: add clearSelection() method * test: remove unstable tag * fix(#3117): init frames and use transactions - fixes #3117 for flexible layouts by syncing frames and composition - also uses transactions now to avoid race condition * test(flexibleLayout): removing items via context menu - add test for removing items via context menu while focusing the layout - add test for removing items via context menu while not focusing the layout * fix(e2e): use pluginFixtures * refactor(e2e): improve selectors * refactor: use async/await for saving transactions * docs(e2e): fix comments * test: use soft expects Co-authored-by: Jamie V <jamie.j.vigliotta@nasa.gov>
This commit is contained in:
@ -245,6 +245,9 @@ export default {
|
||||
});
|
||||
this.gridDimensions = [wMax * this.gridSize[0], hMax * this.gridSize[1]];
|
||||
},
|
||||
clearSelection() {
|
||||
this.$el.click();
|
||||
},
|
||||
watchDisplayResize() {
|
||||
const resizeObserver = new ResizeObserver(() => this.updateGrid());
|
||||
|
||||
@ -478,7 +481,7 @@ export default {
|
||||
});
|
||||
_.pullAt(this.layoutItems, indices);
|
||||
this.mutate("configuration.items", this.layoutItems);
|
||||
this.$el.click();
|
||||
this.clearSelection();
|
||||
},
|
||||
untrackItem(item) {
|
||||
if (!item.identifier) {
|
||||
@ -504,15 +507,11 @@ export default {
|
||||
}
|
||||
|
||||
if (!telemetryViewCount && !objectViewCount) {
|
||||
this.removeFromComposition(keyString);
|
||||
this.removeFromComposition(item);
|
||||
}
|
||||
},
|
||||
removeFromComposition(keyString) {
|
||||
let composition = this.domainObject.composition ? this.domainObject.composition : [];
|
||||
composition = composition.filter(identifier => {
|
||||
return this.openmct.objects.makeKeyString(identifier) !== keyString;
|
||||
});
|
||||
this.mutate("composition", composition);
|
||||
removeFromComposition(item) {
|
||||
this.composition.remove(item);
|
||||
},
|
||||
initializeItems() {
|
||||
this.telemetryViewMap = {};
|
||||
@ -529,7 +528,10 @@ export default {
|
||||
}
|
||||
});
|
||||
|
||||
this.startTransaction();
|
||||
removedItems.forEach(this.removeFromConfiguration);
|
||||
|
||||
return this.endTransaction();
|
||||
},
|
||||
isItemAlreadyTracked(child) {
|
||||
let found = false;
|
||||
@ -590,7 +592,7 @@ export default {
|
||||
}
|
||||
});
|
||||
this.mutate("configuration.items", layoutItems);
|
||||
this.$el.click();
|
||||
this.clearSelection();
|
||||
},
|
||||
orderItem(position, selectedItems) {
|
||||
let delta = ORDERS[position];
|
||||
@ -773,7 +775,7 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
this.openmct.objects.mutate(this.domainObject, "configuration.items", this.layoutItems);
|
||||
this.openmct.objects.mutate(this.domainObject, "configuration.objectStyles", objectStyles);
|
||||
this.$el.click(); //clear selection;
|
||||
this.clearSelection();
|
||||
|
||||
newDomainObjectsArray.forEach(domainObject => {
|
||||
this.composition.add(domainObject);
|
||||
@ -867,6 +869,20 @@ export default {
|
||||
this.removeItem(selection);
|
||||
this.initSelectIndex = this.layoutItems.length - 1; //restore selection
|
||||
},
|
||||
startTransaction() {
|
||||
if (!this.openmct.objects.isTransactionActive()) {
|
||||
this.transaction = this.openmct.objects.startTransaction();
|
||||
}
|
||||
},
|
||||
async endTransaction() {
|
||||
if (!this.transaction) {
|
||||
return;
|
||||
}
|
||||
|
||||
await this.transaction.commit();
|
||||
this.openmct.objects.endTransaction();
|
||||
this.transaction = null;
|
||||
},
|
||||
toggleGrid() {
|
||||
this.showGrid = !this.showGrid;
|
||||
},
|
||||
|
Reference in New Issue
Block a user