Skip to content

Commit a01e0ed

Browse files
feat(editors/substation/transformerwinding): add remove button (openscd#1157)
* feat(transformer-winding-editor):add_delete_butt * fix(transformer-winding...):use_correct_element
1 parent 51e19a7 commit a01e0ed

File tree

3 files changed

+89
-5
lines changed

3 files changed

+89
-5
lines changed

src/editors/substation/transformer-winding-editor.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@ import '../../action-icon.js';
1818
import '../../action-pane.js';
1919

2020
import { styles } from './foundation.js';
21-
import { getChildElementsByTagName, newWizardEvent } from '../../foundation.js';
21+
import {
22+
getChildElementsByTagName,
23+
newActionEvent,
24+
newWizardEvent,
25+
} from '../../foundation.js';
2226
import { wizards } from '../../wizards/wizard-library.js';
2327

2428
@customElement('transformer-winding-editor')
@@ -56,6 +60,18 @@ export class TransformerWindingEditor extends LitElement {
5660
if (wizard) this.dispatchEvent(newWizardEvent(wizard));
5761
}
5862

63+
remove(): void {
64+
if (this.element.parentElement)
65+
this.dispatchEvent(
66+
newActionEvent({
67+
old: {
68+
parent: this.element.parentElement,
69+
element: this.element,
70+
},
71+
})
72+
);
73+
}
74+
5975
private renderLNodes(): TemplateResult {
6076
const lNodes = getChildElementsByTagName(this.element, 'LNode');
6177

@@ -95,6 +111,12 @@ export class TransformerWindingEditor extends LitElement {
95111
@click=${() => this.openEditWizard()}
96112
></mwc-icon-button>
97113
</abbr>
114+
<abbr slot="action" title="${translate('remove')}">
115+
<mwc-icon-button
116+
icon="delete"
117+
@click=${() => this.remove()}
118+
></mwc-icon-button>
119+
</abbr>
98120
${this.renderLNodes()} ${this.renderEqFunctions()}
99121
</action-pane> `;
100122
}

test/integration/editors/substation/transformer-winding-editor-wizard-editing.test.ts

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ describe('transformer-winding-editor wizarding editing integration', () => {
2929
await fixture(
3030
html`<mock-wizard-editor
3131
><transformer-winding-editor
32-
.element=${doc.querySelector('TransformerWinding')}
32+
.element=${doc.querySelector(
33+
'PowerTransformer[name="pTransVolt"] > TransformerWinding[name="some"]'
34+
)}
3335
></transformer-winding-editor
3436
></mock-wizard-editor>`
3537
)
@@ -69,7 +71,11 @@ describe('transformer-winding-editor wizarding editing integration', () => {
6971
primaryAction.click();
7072
await parent.updateComplete;
7173
expect(
72-
doc.querySelector('TransformerWinding')?.getAttribute('name')
74+
doc
75+
.querySelector(
76+
'PowerTransformer[name="pTransVolt"] > TransformerWinding[name="some"]'
77+
)
78+
?.getAttribute('name')
7379
).to.equal(oldName);
7480
});
7581
it('changes desc attribute on primary action', async () => {
@@ -80,7 +86,11 @@ describe('transformer-winding-editor wizarding editing integration', () => {
8086
primaryAction.click();
8187
await parent.updateComplete;
8288
expect(
83-
doc.querySelector('TransformerWinding')?.getAttribute('desc')
89+
doc
90+
.querySelector(
91+
'PowerTransformer[name="pTransVolt"] > TransformerWinding[name="some"]'
92+
)
93+
?.getAttribute('desc')
8494
).to.equal('newDesc');
8595
});
8696
it('changes virtual attribute on primary action', async () => {
@@ -94,8 +104,39 @@ describe('transformer-winding-editor wizarding editing integration', () => {
94104
primaryAction.click();
95105
await parent.updateComplete;
96106
expect(
97-
doc.querySelector('TransformerWinding')?.getAttribute('virtual')
107+
doc
108+
.querySelector(
109+
'PowerTransformer[name="pTransVolt"] > TransformerWinding[name="some"]'
110+
)
111+
?.getAttribute('virtual')
98112
).to.equal('true');
99113
});
114+
115+
describe('has a delete icon button that', () => {
116+
let deleteButton: HTMLElement;
117+
118+
beforeEach(async () => {
119+
deleteButton = <HTMLElement>(
120+
element?.shadowRoot?.querySelector('mwc-icon-button[icon="delete"]')
121+
);
122+
await parent.updateComplete;
123+
});
124+
125+
it('removes the attached TransformerWinding element from the document', async () => {
126+
expect(
127+
doc.querySelector(
128+
'PowerTransformer[name="pTransVolt"] > TransformerWinding[name="some"]'
129+
)
130+
).to.exist;
131+
132+
await deleteButton.click();
133+
134+
expect(
135+
doc.querySelector(
136+
'PowerTransformer[name="pTransVolt"] > TransformerWinding[name="some"]'
137+
)
138+
).to.not.exist;
139+
});
140+
});
100141
});
101142
});

test/unit/editors/substation/__snapshots__/transformer-winding-editor.test.snap.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,13 @@ snapshots["transformer-winding-editor with children when EqFunction elements are
1313
<mwc-icon-button icon="edit">
1414
</mwc-icon-button>
1515
</abbr>
16+
<abbr
17+
slot="action"
18+
title="[remove]"
19+
>
20+
<mwc-icon-button icon="delete">
21+
</mwc-icon-button>
22+
</abbr>
1623
<div class="container lnode">
1724
<l-node-editor>
1825
</l-node-editor>
@@ -35,6 +42,13 @@ snapshots["transformer-winding-editor with children when hiding EqFunction eleme
3542
<mwc-icon-button icon="edit">
3643
</mwc-icon-button>
3744
</abbr>
45+
<abbr
46+
slot="action"
47+
title="[remove]"
48+
>
49+
<mwc-icon-button icon="delete">
50+
</mwc-icon-button>
51+
</abbr>
3852
<div class="container lnode">
3953
<l-node-editor>
4054
</l-node-editor>
@@ -55,6 +69,13 @@ snapshots["transformer-winding-editor without children looks like the latest sna
5569
<mwc-icon-button icon="edit">
5670
</mwc-icon-button>
5771
</abbr>
72+
<abbr
73+
slot="action"
74+
title="[remove]"
75+
>
76+
<mwc-icon-button icon="delete">
77+
</mwc-icon-button>
78+
</abbr>
5879
</action-pane>
5980
`;
6081
/* end snapshot transformer-winding-editor without children looks like the latest snapshot */

0 commit comments

Comments
 (0)