Skip to content

Commit 9932bf2

Browse files
author
Rob Tjalma
authored
Merge pull request #88 from com-pas/combine-other-menus
Combined menu item for Import IEDs and Merge Project
2 parents 35a4256 + 52782bc commit 9932bf2

File tree

16 files changed

+239
-149
lines changed

16 files changed

+239
-149
lines changed

__snapshots__/compas-scl-list.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,14 @@
4040
mwc-list-item=""
4141
tabindex="0"
4242
>
43-
Station-Utrecht-0001 (
44-
<version>
45-
2.1.0
46-
</version>
47-
)
43+
Station-Utrecht-0001 (2.1.0)
4844
</mwc-list-item>
4945
<mwc-list-item
5046
aria-disabled="false"
5147
mwc-list-item=""
5248
tabindex="-1"
5349
>
54-
Station-Utrecht-0002 (
55-
<version>
56-
1.3.0
57-
</version>
58-
)
50+
Station-Utrecht-0002 (1.3.0)
5951
</mwc-list-item>
6052
</mwc-list>
6153

__snapshots__/open-scd.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@
805805
mwc-list-item=""
806806
selected=""
807807
tabindex="-1"
808-
value="/src/menu/ImportIEDs.js"
808+
value="/src/menu/CompasImportIEDs.js"
809809
>
810810
<mwc-icon slot="meta">
811811
snippet_folder
@@ -837,7 +837,7 @@
837837
mwc-list-item=""
838838
selected=""
839839
tabindex="-1"
840-
value="/src/menu/Merge.js"
840+
value="/src/menu/CompasMerge.js"
841841
>
842842
<mwc-icon slot="meta">
843843
merge_type

public/js/plugins.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export const officialPlugins = [
7979
},
8080
{
8181
name: 'Import IEDs',
82-
src: '/src/menu/ImportIEDs.js',
82+
src: '/src/menu/CompasImportIEDs.js',
8383
icon: 'snippet_folder',
8484
default: true,
8585
kind: 'menu',
@@ -96,7 +96,7 @@ export const officialPlugins = [
9696
},
9797
{
9898
name: 'Merge Project',
99-
src: '/src/menu/Merge.js',
99+
src: '/src/menu/CompasMerge.js',
100100
icon: 'merge_type',
101101
default: true,
102102
kind: 'menu',

src/compas/CompasOpen.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,18 @@ import './CompasScl.js';
1414

1515
/* Event that will be used when a SCL Document is retrieved. */
1616
export interface DocRetrievedDetail {
17-
element: Element,
1817
doc: Document,
1918
docName?: string,
2019
}
2120
export type DocRetrievedEvent = CustomEvent<DocRetrievedDetail>;
2221
export function newDocRetrievedEvent(
23-
element: Element,
2422
doc: Document,
2523
docName?: string,
2624
): DocRetrievedEvent {
2725
return new CustomEvent<DocRetrievedDetail>('docRetrieved', {
2826
bubbles: true,
2927
composed: true,
30-
detail: { element, doc, docName },
28+
detail: { doc, docName },
3129
});
3230
}
3331

@@ -44,7 +42,7 @@ export default class CompasOpenElement extends LitElement {
4442
.getSclDocument(this.selectedType ?? '', id ?? '')
4543
.catch(createLogEvent);
4644
if (sclDocument instanceof Document) {
47-
this.dispatchEvent(newDocRetrievedEvent(this, sclDocument));
45+
this.dispatchEvent(newDocRetrievedEvent(sclDocument));
4846
}
4947
}
5048

@@ -56,7 +54,7 @@ export default class CompasOpenElement extends LitElement {
5654
const docName = file.name;
5755
const doc = new DOMParser().parseFromString(text, 'application/xml');
5856

59-
this.dispatchEvent(newDocRetrievedEvent(this, doc, docName));
57+
this.dispatchEvent(newDocRetrievedEvent(doc, docName));
6058
this.sclFileUI.onchange = null;
6159
}
6260

src/compas/CompasScl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ export class CompasScl extends LitElement {
5757
if (name === '') {
5858
name = id;
5959
}
60-
const version = item.getElementsByTagNameNS(SDS_NAMESPACE, "Version").item(0);
60+
const version = item.getElementsByTagNameNS(SDS_NAMESPACE, "Version").item(0)!.textContent ?? '';
6161
return html`<mwc-list-item tabindex="0"
6262
@click=${() => this.dispatchEvent(newSclSelectedEvent(id))}>
6363
${name} (${version})

src/menu/CompasCimMapping.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,11 @@ export default class OpenProjectPlugin extends LitElement {
4343
}
4444

4545
render(): TemplateResult {
46-
return html`<input
47-
@click=${(event: MouseEvent) => ((<HTMLInputElement>event.target).value = '')}
48-
@change=${(event: MouseEvent) => getOpenScdElement().dispatchEvent(newPendingStateEvent(this.convertCimFile(event)))}
49-
id="cim-mapping-input" accept=".xml" type="file" multiple></input>`;
46+
return html`<input @click=${(event: MouseEvent) => ((<HTMLInputElement>event.target).value = '')}
47+
@change=${(event: MouseEvent) =>
48+
getOpenScdElement().dispatchEvent(newPendingStateEvent(this.convertCimFile(event)))}
49+
id="cim-mapping-input" accept=".xml" type="file" multiple>
50+
`;
5051
}
5152

5253
static styles = css`

src/menu/CompasImportIEDs.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import {html, LitElement} from 'lit-element';
2+
import {get} from "lit-translate";
3+
4+
import {newWizardEvent, Wizard} from '../foundation.js';
5+
6+
import {DocRetrievedEvent} from "../compas/CompasOpen.js";
7+
import {prepareImportIEDs} from "./ImportIEDs.js";
8+
9+
import "../compas/CompasOpen.js";
10+
11+
export default class CompasImportIEDSMenuPlugin extends LitElement {
12+
doc!: XMLDocument;
13+
parent!: HTMLElement;
14+
15+
private importIEDsCompasWizard(parent: HTMLElement, doc: Document): Wizard {
16+
return [
17+
{
18+
title: get('compas.importIEDS.title'),
19+
content: [
20+
html`<compas-open @docRetrieved=${async (event: DocRetrievedEvent) => {
21+
await prepareImportIEDs(parent, doc, event.detail.doc);
22+
parent.dispatchEvent(newWizardEvent());
23+
}}>
24+
</compas-open>
25+
`,
26+
],
27+
},
28+
];
29+
}
30+
31+
firstUpdated(): void {
32+
this.parent = this.parentElement!;
33+
}
34+
35+
async run(): Promise<void> {
36+
this.dispatchEvent(newWizardEvent(this.importIEDsCompasWizard(this.parent, this.doc)));
37+
}
38+
}

src/menu/CompasMerge.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import {html, LitElement} from 'lit-element';
2+
import {get} from "lit-translate";
3+
4+
import {newWizardEvent, Wizard} from '../foundation.js';
5+
import {mergeWizard} from "../wizards.js";
6+
7+
import {DocRetrievedEvent} from "../compas/CompasOpen.js";
8+
9+
import "../compas/CompasOpen.js";
10+
11+
export default class CompasMergeMenuPlugin extends LitElement {
12+
doc!: XMLDocument;
13+
parent!: HTMLElement;
14+
15+
private mergeCompasWizard(): Wizard {
16+
return [
17+
{
18+
title: get('compas.merge.title'),
19+
content: [
20+
html`<compas-open @docRetrieved=${(evt: DocRetrievedEvent) => {
21+
this.parent.dispatchEvent(
22+
newWizardEvent(
23+
mergeWizard(this.doc.documentElement, evt.detail.doc.documentElement)
24+
)
25+
);
26+
this.parent.dispatchEvent(newWizardEvent());
27+
}}>
28+
</compas-open>
29+
`,
30+
],
31+
},
32+
];
33+
}
34+
35+
firstUpdated(): void {
36+
this.parent = this.parentElement!;
37+
}
38+
39+
async run(): Promise<void> {
40+
this.dispatchEvent(newWizardEvent(this.mergeCompasWizard()));
41+
}
42+
}

src/menu/CompasOpen.ts

Lines changed: 25 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,33 @@ import {updateDocumentInOpenSCD} from "../compas/foundation.js";
99
import "../compas/CompasOpen.js";
1010

1111
export default class CompasOpenMenuPlugin extends LitElement {
12-
async run(): Promise<void> {
13-
this.dispatchEvent(newWizardEvent(openCompasWizard()));
12+
parent!: HTMLElement;
13+
14+
private openCompasWizard(parent: HTMLElement): Wizard {
15+
async function openDoc(parent: Element, event: DocRetrievedEvent): Promise<void> {
16+
updateDocumentInOpenSCD(event.detail.doc, event.detail.docName);
17+
parent.dispatchEvent(newWizardEvent());
18+
}
19+
20+
return [
21+
{
22+
title: get('compas.open.title'),
23+
content: [
24+
html`<compas-open @docRetrieved=${(event: DocRetrievedEvent) => {
25+
parent.dispatchEvent(newPendingStateEvent(openDoc(parent, event)));
26+
}}>
27+
</compas-open>
28+
`,
29+
],
30+
},
31+
];
1432
}
15-
}
1633

17-
function openCompasWizard(): Wizard {
18-
async function openDoc(element: Element, sclDocument: Document, docName?: string): Promise<void> {
19-
updateDocumentInOpenSCD(sclDocument, docName);
20-
element.dispatchEvent(newWizardEvent());
34+
firstUpdated(): void {
35+
this.parent = this.parentElement!;
2136
}
2237

23-
return [
24-
{
25-
title: get('compas.open.title'),
26-
content: [
27-
html`<compas-open @docRetrieved=${(evt: DocRetrievedEvent) => {
28-
const element = evt.detail.element;
29-
const doc = evt.detail.doc;
30-
const docName = evt.detail.docName;
31-
element.dispatchEvent(newPendingStateEvent(openDoc(element, doc, docName)));
32-
}}>
33-
</compas-open>
34-
`,
35-
],
36-
},
37-
];
38+
async run(): Promise<void> {
39+
this.dispatchEvent(newWizardEvent(this.openCompasWizard(this.parent)));
40+
}
3841
}

src/menu/CompasSave.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@ function saveToCompasWizard(doc: XMLDocument, saveToOptions: SaveToCompasWizardO
4444
action: saveToCompas(),
4545
},
4646
content: [
47-
html `
48-
<compas-save .doc="${doc}" .docName="${saveToOptions.docName}" .docId="${saveToOptions.docId}">
49-
</compas-save>
47+
html `<compas-save .doc="${doc}" .docName="${saveToOptions.docName}" .docId="${saveToOptions.docId}">
48+
</compas-save>
5049
` ],
5150
},
5251
];

0 commit comments

Comments
 (0)