From 377a4c9f6c5ebd010e4d70cfe4c6abb47b998a00 Mon Sep 17 00:00:00 2001 From: Daniel Mulholland Date: Sun, 20 Mar 2022 13:29:22 +1300 Subject: [PATCH 01/16] Initial UI implementation with flexbox to improve responsiveness --- src/editors/Cleanup.ts | 283 ++++++++++++++++++--- src/translations/de.ts | 8 + src/translations/en.ts | 8 + test/integration/editors/Cleanup.test.ts | 2 +- test/testfiles/cleanup.scd | 306 ++++++++++++----------- 5 files changed, 427 insertions(+), 180 deletions(-) diff --git a/src/editors/Cleanup.ts b/src/editors/Cleanup.ts index 284de31307..ddf5fbd3f0 100644 --- a/src/editors/Cleanup.ts +++ b/src/editors/Cleanup.ts @@ -16,6 +16,7 @@ import { Button } from '@material/mwc-button'; import { List, MWCListIndex } from '@material/mwc-list'; import { ListItem } from '@material/mwc-list/mwc-list-item.js'; import '@material/mwc-list/mwc-check-list-item.js'; +import '@material/mwc-checkbox'; import '../filtered-list.js'; import { @@ -27,6 +28,10 @@ import { } from '../foundation.js'; import { editDataSetWizard } from '../wizards/dataset.js'; +import { editGseControlWizard } from '../wizards/gsecontrol.js'; +import { editSampledValueControlWizard } from '../wizards/sampledvaluecontrol.js'; +import { editReportControlWizard } from '../wizards/reportcontrol.js'; + import { styles } from './templates/foundation.js'; /** An editor [[`plugin`]] for cleaning SCL references and definitions. */ @@ -34,34 +39,42 @@ export default class Cleanup extends LitElement { /** The document being edited as provided to plugins by [[`OpenSCD`]]. */ @property() doc!: XMLDocument; + + // For DataSet Cleanup @property() disableDataSetClean = false; @property() unreferencedDataSets: Element[] = []; @property() - selectedItems: MWCListIndex | [] = []; + selectedDatasetItems: MWCListIndex | [] = []; @query('.cleanupUnreferencedDataSetsDeleteButton') _cleanUnreferencedDataSetsButton!: Button; @query('.cleanupUnreferencedDataSetsList') _cleanUnreferencedDataSetsList: List | undefined; - @queryAll('mwc-check-list-item') + @queryAll('mwc-check-list-item.cleanupUnreferencedDataSetsCheckListItem') _cleanUnreferencedDataSetItems: ListItem[] | undefined; + // For Control Cleanup + @property() + disableControlClean = false; + @property() + unreferencedControls: Element[] = []; + @property() + selectedControlItems: MWCListIndex | [] = []; + @query('.cleanupUnreferencedControlsDeleteButton') + _cleanUnreferencedControlsButton!: Button; + @query('.cleanupUnreferencedControlsList') + _cleanUnreferencedControlsList: List | undefined; + @queryAll('mwc-check-list-item.cleanupUnreferencedControlsCheckListItem') + _cleanUnreferencedControlsAddress: ListItem | undefined; + @query('mwc-check-list-item.cleanupUnreferencedControlsAddress') + /** - * Set a class variable for selected items to allow processing and UI interaction - */ - private getSelectedUnreferencedDataSetItems() { - this.selectedItems = (( - this.shadowRoot!.querySelector('.cleanupUnreferencedDataSetsList') - )).index; - } - - /** - * Clean datasets as requested by removing DataSet elements specified by the user from the SCL file + * Clean datasets as requested by removing SCL elements specified by the user from the SCL file * @returns an actions array to support undo/redo */ - public cleanDataSets(cleanItems: Element[]): Delete[] { + public cleanSCLItems(cleanItems: Element[]): Delete[] { const actions: Delete[] = []; if (cleanItems) { cleanItems.forEach(item => { @@ -79,7 +92,10 @@ export default class Cleanup extends LitElement { async firstUpdated(): Promise { this._cleanUnreferencedDataSetsList?.addEventListener('selected', () => { - this.getSelectedUnreferencedDataSetItems(); + this.selectedDatasetItems = this._cleanUnreferencedDataSetsList!.index; + }); + this._cleanUnreferencedControlsList?.addEventListener('selected', () => { + this.selectedControlItems = this._cleanUnreferencedControlsList!.index; }); } @@ -119,6 +135,7 @@ export default class Cleanup extends LitElement { }); return html` +

${translate('cleanup.unreferencedDataSets.title')} (${unreferencedDataSets.length}) @@ -134,7 +151,11 @@ export default class Cleanup extends LitElement { >${Array.from( unreferencedDataSets.map( item => - html`${item.getAttribute('name')!} @@ -142,7 +163,7 @@ export default class Cleanup extends LitElement { { e.stopPropagation(); e.target?.dispatchEvent( @@ -163,21 +184,23 @@ export default class Cleanup extends LitElement { ) )} +