Skip to content

Commit f255bfb

Browse files
feat(editors/subscriber): use filtered lists (openscd#638)
* refactor(subscriber/subscriber-ied-list): split into functions * refactor(editors/subscribe): remove ied-element-subscriber * refactor(editors/subscriber): add filtered list to goose list * fix(editors/subscriber): add missing import statement * style(editors/subscriber): fix broken CSS rule * refactor(editors/substation): show all ieds in the list * refactor(editors/subscriber): remove unused console.log * test(editors/Subscriber): fix integration tests
1 parent 9a655e8 commit f255bfb

File tree

12 files changed

+459
-459
lines changed

12 files changed

+459
-459
lines changed

src/editors/subscription/elements/goose-message.ts

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/editors/subscription/elements/ied-element-goose.ts

Lines changed: 0 additions & 43 deletions
This file was deleted.

src/editors/subscription/publisher-goose-list.ts

Lines changed: 36 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import {
99
import { translate } from 'lit-translate';
1010

1111
import '@material/mwc-icon';
12-
import '@material/mwc-list';
1312
import '@material/mwc-list/mwc-list-item';
1413

15-
import './elements/goose-message.js';
14+
import '../../filtered-list.js';
1615
import { compareNames, getNameAttribute } from '../../foundation.js';
17-
import { styles } from './foundation.js';
16+
import { newGOOSESelectEvent, styles } from './foundation.js';
17+
import { gooseIcon } from '../../icons/icons.js';
1818

1919
/** An sub element for showing all published GOOSE messages per IED. */
2020
@customElement('publisher-goose-list')
@@ -43,33 +43,49 @@ export class PublisherGOOSEList extends LitElement {
4343
);
4444
}
4545

46+
private onGooseSelect(element: Element): void {
47+
const ln = element.parentElement;
48+
const dataset = ln?.querySelector(
49+
`DataSet[name=${element.getAttribute('datSet')}]`
50+
);
51+
this.dispatchEvent(newGOOSESelectEvent(element, dataset!));
52+
}
53+
54+
renderGoose(element: Element): TemplateResult {
55+
return html`<mwc-list-item
56+
@click=${() => this.onGooseSelect(element)}
57+
graphic="large"
58+
>
59+
<span>${element.getAttribute('name')}</span>
60+
<mwc-icon slot="graphic">${gooseIcon}</mwc-icon>
61+
</mwc-list-item>`;
62+
}
63+
4664
render(): TemplateResult {
4765
return html` <section>
4866
<h1>${translate('subscription.publisherGoose.title')}</h1>
49-
<mwc-list>
50-
${this.ieds.map(ied =>
51-
ied.querySelector('GSEControl')
52-
? html`
53-
<mwc-list-item noninteractive graphic="icon">
54-
<span class="iedListTitle">${getNameAttribute(ied)}</span>
55-
<mwc-icon slot="graphic">developer_board</mwc-icon>
56-
</mwc-list-item>
57-
<li divider role="separator"></li>
58-
${this.getGSEControls(ied).map(
59-
control =>
60-
html`<goose-message .element=${control}></goose-message>`
61-
)}
62-
`
63-
: ``
67+
<filtered-list>
68+
${this.ieds.map(
69+
ied =>
70+
html`
71+
<mwc-list-item noninteractive graphic="icon">
72+
<span class="iedListTitle">${getNameAttribute(ied)}</span>
73+
<mwc-icon slot="graphic">developer_board</mwc-icon>
74+
</mwc-list-item>
75+
<li divider role="separator"></li>
76+
${this.getGSEControls(ied).map(control =>
77+
this.renderGoose(control)
78+
)}
79+
`
6480
)}
65-
</mwc-list>
81+
</filtered-list>
6682
</section>`;
6783
}
6884

6985
static styles = css`
7086
${styles}
7187
72-
mwc-list {
88+
filtered-list {
7389
height: 100vh;
7490
overflow-y: scroll;
7591
}

0 commit comments

Comments
 (0)