Skip to content

Commit

Permalink
fix(editor/subscriber): filtering on FCDAs retains the parent (opensc…
Browse files Browse the repository at this point in the history
…d#1048)

Signed-off-by: Dennis Labordus <dennis.labordus@alliander.com>

Signed-off-by: Dennis Labordus <dennis.labordus@alliander.com>
  • Loading branch information
Dennis Labordus authored Oct 26, 2022
1 parent 0b414e1 commit d5f8bb7
Show file tree
Hide file tree
Showing 8 changed files with 306 additions and 207 deletions.
26 changes: 13 additions & 13 deletions src/editors/subscription/fcda-binding-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import { gooseIcon, smvIcon } from '../../icons/icons.js';
import { wizards } from '../../wizards/wizard-library.js';

import {
getFcdaSubtitleValue,
getFcdaTitleValue,
newFcdaSelectEvent,
styles,
Expand Down Expand Up @@ -175,18 +176,11 @@ export class FcdaBindingList extends LitElement {
twoline
class="subitem"
@click=${() => this.onFcdaSelect(controlElement, fcdaElement)}
value="${identity(controlElement)} ${identity(fcdaElement)}"
value="${identity(controlElement)}
${identity(fcdaElement)}"
>
<span>${getFcdaTitleValue(fcdaElement)}</span>
<span slot="secondary">
${fcdaElement.getAttribute('ldInst')}${fcdaElement.hasAttribute(
'ldInst'
) && fcdaElement.hasAttribute('prefix')
? html`/`
: nothing}${fcdaElement.getAttribute('prefix')}
${fcdaElement.getAttribute('lnClass')}
${fcdaElement.getAttribute('lnInst')}
</span>
<span slot="secondary">${getFcdaSubtitleValue(fcdaElement)}</span>
<mwc-icon slot="graphic">subdirectory_arrow_right</mwc-icon>
${fcdaCount !== 0 ? html`<span slot="meta">${fcdaCount}</span>` : nothing}
</mwc-list-item>`;
Expand All @@ -210,9 +204,15 @@ export class FcdaBindingList extends LitElement {
graphic="icon"
twoline
hasMeta
value="${identity(controlElement)} ${fcdaElements
.map(fcdaElement => identity(fcdaElement) as string)
.join(' ')}"
value="
${identity(controlElement)}${fcdaElements
.map(
fcdaElement => `
${getFcdaTitleValue(fcdaElement)}
${getFcdaSubtitleValue(fcdaElement)}
${identity(fcdaElement)}`
)
.join('')}"
>
<mwc-icon-button
slot="meta"
Expand Down
10 changes: 10 additions & 0 deletions src/editors/subscription/foundation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,16 @@ export function getFcdaTitleValue(fcdaElement: Element): string {
}${fcdaElement.getAttribute('daName')}`;
}

export function getFcdaSubtitleValue(fcdaElement: Element): string {
return `${fcdaElement.getAttribute('ldInst')} ${
fcdaElement.hasAttribute('ldInst') && fcdaElement.hasAttribute('prefix')
? `/`
: ''
} ${fcdaElement.getAttribute('prefix')} ${fcdaElement.getAttribute(
'lnClass'
)} ${fcdaElement.getAttribute('lnInst')}`;
}

export function existExtRef(
parentInputs: Element,
fcda: Element,
Expand Down
42 changes: 22 additions & 20 deletions test/integration/editors/GooseSubscriberDataBinding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
getExtrefDataBindingList,
getFCDABindingList,
getSelectedSubItemValue,
selectFCDAItem,
} from './test-support.js';

describe('GOOSE Subscribe Data Binding Plugin', async () => {
Expand Down Expand Up @@ -39,12 +40,13 @@ describe('GOOSE Subscribe Data Binding Plugin', async () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefDataBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE1 GOOSE_Publisher>>QB2_Disconnector>GOOSE1sDataSet>QB1_Disconnector/ CSWI 1.Pos q (ST)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'GOOSE_Publisher>>QB2_Disconnector>GOOSE1',
'GOOSE_Publisher>>QB2_Disconnector>GOOSE1sDataSet>QB1_Disconnector/ CSWI 1.Pos q (ST)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

expect(extRefListElement['getSubscribedLNElements']().length).to.be.equal(
0
Expand Down Expand Up @@ -80,11 +82,11 @@ describe('GOOSE Subscribe Data Binding Plugin', async () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefDataBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE2 GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2',
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand Down Expand Up @@ -130,11 +132,11 @@ describe('GOOSE Subscribe Data Binding Plugin', async () => {
).length
).to.be.equal(1);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE2 GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2',
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand All @@ -145,11 +147,11 @@ describe('GOOSE Subscribe Data Binding Plugin', async () => {
)).click();
await element.requestUpdate();

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE2 GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos stVal (ST)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2',
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos stVal (ST)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand Down
22 changes: 12 additions & 10 deletions test/integration/editors/GooseSubscriberLaterBinding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
getExtrefLaterBindingList,
getFCDABindingList,
getSelectedSubItemValue,
selectFCDAItem,
} from './test-support.js';

describe('GOOSE Subscribe Later Binding Plugin', () => {
Expand Down Expand Up @@ -34,12 +35,13 @@ describe('GOOSE Subscribe Later Binding Plugin', () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefLaterBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE1 GOOSE_Publisher>>QB2_Disconnector>GOOSE1sDataSet>QB1_Disconnector/ CSWI 1.Pos q (ST)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'GOOSE_Publisher>>QB2_Disconnector>GOOSE1',
'GOOSE_Publisher>>QB2_Disconnector>GOOSE1sDataSet>QB1_Disconnector/ CSWI 1.Pos q (ST)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

expect(
extRefListElement['getSubscribedExtRefElements']().length
Expand Down Expand Up @@ -69,11 +71,11 @@ describe('GOOSE Subscribe Later Binding Plugin', () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefLaterBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="GOOSE_Publisher>>QB2_Disconnector>GOOSE2 GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2',
'GOOSE_Publisher>>QB2_Disconnector>GOOSE2sDataSet>QB2_Disconnector/ CSWI 1.Pos q (ST)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand Down
52 changes: 27 additions & 25 deletions test/integration/editors/SMVSubscriberDataBinding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
getExtrefDataBindingList,
getFCDABindingList,
getSelectedSubItemValue,
selectFCDAItem,
} from './test-support.js';

describe('SMV Subscribe Data Binding Plugin', async () => {
Expand Down Expand Up @@ -39,12 +40,13 @@ describe('SMV Subscribe Data Binding Plugin', async () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefDataBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>fullSmv SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L2 TCTR 1.AmpSv q (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>fullSmv',
'SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L2 TCTR 1.AmpSv q (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

expect(extRefListElement['getSubscribedLNElements']().length).to.be.equal(
1
Expand Down Expand Up @@ -80,11 +82,11 @@ describe('SMV Subscribe Data Binding Plugin', async () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefDataBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>fullSmv SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L3 TCTR 1.AmpSv instMag.i (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>fullSmv',
'SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L3 TCTR 1.AmpSv instMag.i (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand Down Expand Up @@ -128,11 +130,11 @@ describe('SMV Subscribe Data Binding Plugin', async () => {
).length
).to.be.equal(1);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>fullSmv SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L2 TCTR 1.AmpSv q (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>fullSmv',
'SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L2 TCTR 1.AmpSv q (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand All @@ -143,11 +145,11 @@ describe('SMV Subscribe Data Binding Plugin', async () => {
)).click();
await element.requestUpdate();

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>fullSmv SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L3 TCTR 1.AmpSv instMag.i (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>fullSmv',
'SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L3 TCTR 1.AmpSv instMag.i (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand All @@ -158,11 +160,11 @@ describe('SMV Subscribe Data Binding Plugin', async () => {
)).click();
await element.requestUpdate();

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>fullSmv SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L3 TCTR 1.AmpSv q (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>fullSmv',
'SMV_Publisher>>CurrentTransformer>fullSmvsDataSet>CurrentTransformer/L3 TCTR 1.AmpSv q (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

Expand Down
23 changes: 13 additions & 10 deletions test/integration/editors/SMVSubscriberLaterBinding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
getExtrefLaterBindingList,
getFCDABindingList,
getSelectedSubItemValue,
selectFCDAItem,
} from './test-support.js';

describe('SMV Subscribe Later Binding plugin', () => {
Expand Down Expand Up @@ -35,12 +36,13 @@ describe('SMV Subscribe Later Binding plugin', () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefLaterBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>currentOnly SMV_Publisher>>CurrentTransformer>currentOnlysDataSet>CurrentTransformer/L2 TCTR 1.AmpSv instMag.i (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>currentOnly',
'SMV_Publisher>>CurrentTransformer>currentOnlysDataSet>CurrentTransformer/L2 TCTR 1.AmpSv instMag.i (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

expect(
extRefListElement['getSubscribedExtRefElements']().length
Expand Down Expand Up @@ -70,12 +72,13 @@ describe('SMV Subscribe Later Binding plugin', () => {
const fcdaListElement = getFCDABindingList(element);
const extRefListElement = getExtrefLaterBindingList(element);

(<HTMLElement>(
fcdaListElement.shadowRoot!.querySelector(
'mwc-list-item[value="SMV_Publisher>>CurrentTransformer>currentOnly SMV_Publisher>>CurrentTransformer>currentOnlysDataSet>CurrentTransformer/L1 TCTR 1.AmpSv q (MX)"]'
)
)).click();
selectFCDAItem(
fcdaListElement,
'SMV_Publisher>>CurrentTransformer>currentOnly',
'SMV_Publisher>>CurrentTransformer>currentOnlysDataSet>CurrentTransformer/L1 TCTR 1.AmpSv q (MX)'
);
await element.requestUpdate();
await extRefListElement.requestUpdate();

expect(
extRefListElement['getSubscribedExtRefElements']().length
Expand Down
13 changes: 13 additions & 0 deletions test/integration/editors/test-support.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,19 @@ export function getFCDABindingList(
);
}

export function selectFCDAItem(
listElement: FcdaBindingList,
controlIdentity: string,
fcdaIdentity: string
): void {
(<HTMLElement>Array.from(
listElement.shadowRoot!.querySelectorAll('mwc-list-item[class="subitem"]')
).find(listItem => {
const value = listItem.getAttribute('value') ?? '';
return value.includes(controlIdentity) && value.includes(fcdaIdentity);
})).click();
}

export function getExtrefDataBindingList(
element: SMVSubscribeDataBindingPlugin | GooseSubscribeDataBindingPlugin
): ExtRefLnBindingList {
Expand Down
Loading

0 comments on commit d5f8bb7

Please sign in to comment.