Skip to content

Commit 4d2bd53

Browse files
author
Dennis Labordus
committed
Refactor compas menus to all use same setup.
Signed-off-by: Dennis Labordus <[email protected]>
1 parent 7949d06 commit 4d2bd53

File tree

13 files changed

+114
-116
lines changed

13 files changed

+114
-116
lines changed

public/js/plugins.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export const officialPlugins = [
3838
},
3939
{
4040
name: 'Open CoMPAS',
41-
src: '/src/menu/OpenCompas.js',
41+
src: '/src/menu/CompasOpen.js',
4242
icon: 'folder_open',
4343
default: true,
4444
kind: 'menu',
@@ -74,7 +74,7 @@ export const officialPlugins = [
7474
},
7575
{
7676
name: 'Save CoMPAS',
77-
src: '/src/menu/SaveToCompas.js',
77+
src: '/src/menu/CompasSaveTo.js',
7878
icon: 'save',
7979
default: true,
8080
kind: 'menu',

src/compas/CompasOpen.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export function newDocRetrievedEvent(
2929
});
3030
}
3131

32-
@customElement('open-compas')
32+
@customElement('compas-open')
3333
export default class CompasOpenElement extends LitElement {
3434
@property()
3535
selectedType: string | undefined;

src/compas/CompasSaveTo.ts

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {customElement, html, LitElement, TemplateResult} from "lit-element";
22
import {get, translate} from "lit-translate";
33
import {TextFieldBase} from "@material/mwc-textfield/mwc-textfield-base";
44

5-
import {newLogEvent, newPendingStateEvent, newWizardEvent, Wizard, WizardInput} from "../foundation.js";
5+
import {newLogEvent, newWizardEvent} from "../foundation.js";
66

77
import {CompasExistsIn} from "./CompasExistsIn.js";
88
import {CompasChangeSetRadiogroup} from "./CompasChangeSetRadiogroup.js";
@@ -50,12 +50,9 @@ export class CompasSaveTo extends CompasExistsIn(LitElement) {
5050

5151
await CompasSclDataService().addSclDocument(docType, {sclName: name, comment: comment, doc: doc})
5252
.then(sclDocument => {
53-
const openScd = getOpenScdElement();
54-
openScd.dispatchEvent(
55-
newLogEvent({
56-
kind: 'reset'
57-
}));
5853
updateDocumentInOpenSCD(sclDocument);
54+
55+
const openScd = getOpenScdElement();
5956
openScd.dispatchEvent(
6057
newLogEvent({
6158
kind: 'info',
@@ -75,13 +72,9 @@ export class CompasSaveTo extends CompasExistsIn(LitElement) {
7572

7673
await CompasSclDataService().updateSclDocument(docType, docId, {changeSet: changeSet!, comment: comment, doc: doc})
7774
.then(sclDocument => {
78-
const openScd = getOpenScdElement();
79-
openScd.dispatchEvent(
80-
newLogEvent({
81-
kind: 'reset'
82-
}));
8375
updateDocumentInOpenSCD(sclDocument);
8476

77+
const openScd = getOpenScdElement();
8578
openScd.dispatchEvent(
8679
newLogEvent({
8780
kind: 'info',
@@ -125,37 +118,3 @@ export class CompasSaveTo extends CompasExistsIn(LitElement) {
125118
`;
126119
}
127120
}
128-
129-
export interface SaveToCompasWizardOptions {
130-
docId: string,
131-
docName: string
132-
}
133-
export function saveToCompasWizard(doc: XMLDocument, saveToOptions: SaveToCompasWizardOptions): Wizard {
134-
function saveToCompas(docId: string, docName: string, doc: XMLDocument) {
135-
return function (inputs: WizardInput[], wizard: Element) {
136-
const compasSaveTo = <CompasSaveTo>wizard.shadowRoot!.querySelector('compas-save-to')
137-
if (!doc || !compasSaveTo.valid()) {
138-
return [];
139-
}
140-
141-
getOpenScdElement().dispatchEvent(newPendingStateEvent(compasSaveTo.saveToCompas(docId, docName, doc)));
142-
return [];
143-
};
144-
}
145-
146-
return [
147-
{
148-
title: get('compas.saveTo.title'),
149-
primary: {
150-
icon: 'save',
151-
label: get('save'),
152-
action: saveToCompas(saveToOptions.docId, saveToOptions.docName, doc),
153-
},
154-
content: [
155-
html `
156-
<compas-save-to .docName="${saveToOptions.docName}" .docId="${saveToOptions.docId}"/>
157-
` ],
158-
},
159-
];
160-
}
161-

src/compas/CompasSettings.ts

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {css, customElement, html, LitElement, property, TemplateResult} from 'lit-element';
2-
import {get, translate} from 'lit-translate';
2+
import {translate} from 'lit-translate';
33

4-
import {newWizardEvent, Wizard, WizardInput} from '../foundation.js';
4+
import {newWizardEvent} from '../foundation.js';
55
import {TextFieldBase} from "@material/mwc-textfield/mwc-textfield-base";
66
import {getOpenScdElement} from "./foundation.js";
77

@@ -11,7 +11,6 @@ export type CompasSettingsRecord = {
1111
};
1212

1313
export function CompasSettings() {
14-
1514
return {
1615
/** Current [[`CompasSettings`]] in `localStorage`, default to [[`defaults`]]. */
1716
get compasSettings(): CompasSettingsRecord {
@@ -118,28 +117,3 @@ export class CompasSettingsElement extends LitElement {
118117
`
119118
}
120119

121-
export function saveAction() {
122-
return function (inputs: WizardInput[], wizard: Element) {
123-
const compasSettingsElement = <CompasSettingsElement>wizard.shadowRoot!.querySelector('compas-settings')
124-
if (compasSettingsElement.save()) {
125-
compasSettingsElement.close();
126-
}
127-
return [];
128-
};
129-
}
130-
131-
export function compasSettingWizard(): Wizard {
132-
return [
133-
{
134-
title: get('compas.settings.name'),
135-
primary: {
136-
icon: 'save',
137-
label: get('save'),
138-
action: saveAction(),
139-
},
140-
content: [
141-
html`<compas-settings></compas-settings>`,
142-
],
143-
},
144-
];
145-
}

src/compas/CompasUploadVersion.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,9 @@ export class CompasUploadVersionElement extends CompasExistsIn(LitElement) {
5050
await CompasSclDataService().updateSclDocument(docType, this.docId,
5151
{changeSet: changeSet!, comment: comment, doc: doc})
5252
.then(sclDocument => {
53-
const openScd = getOpenScdElement();
54-
openScd.dispatchEvent(
55-
newLogEvent({
56-
kind: 'reset'
57-
}));
5853
updateDocumentInOpenSCD(sclDocument);
5954

55+
const openScd = getOpenScdElement();
6056
openScd.dispatchEvent(
6157
newLogEvent({
6258
kind: 'info',

src/compas/foundation.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {get} from "lit-translate";
22

3-
import {newOpenDocEvent, newUserInfoEvent} from "../foundation.js";
3+
import {newLogEvent, newOpenDocEvent, newUserInfoEvent} from "../foundation.js";
44
import {OpenSCD} from "../open-scd.js";
55

66
import {CompasUserInfoService} from "../compas-services/CompasUserInfoService.js";
@@ -42,7 +42,9 @@ export function updateDocumentInOpenSCD(doc: Document): void {
4242
}
4343
docName += '-' + version + '.' + type?.toLowerCase();
4444

45-
getOpenScdElement().dispatchEvent(newOpenDocEvent(doc, docName, {detail: {docId: id}}));
45+
const openScd = getOpenScdElement();
46+
openScd.dispatchEvent(newLogEvent({kind: 'reset'}));
47+
openScd.dispatchEvent(newOpenDocEvent(doc, docName, {detail: {docId: id}}));
4648
}
4749

4850
export async function retrieveUserInfo(): Promise<void> {

src/menu/OpenCompas.ts renamed to src/menu/CompasOpen.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,21 @@
11
import {html, LitElement} from 'lit-element';
2-
import {newLogEvent, newPendingStateEvent, newWizardEvent, Wizard, WizardInput} from '../foundation.js';
32
import {get} from "lit-translate";
43

4+
import {newPendingStateEvent, newWizardEvent, Wizard, WizardInput} from '../foundation.js';
5+
56
import CompasOpenElement, {DocRetrievedEvent} from "../compas/CompasOpen.js";
6-
import {getOpenScdElement, updateDocumentInOpenSCD} from "../compas/foundation.js";
7+
import {updateDocumentInOpenSCD} from "../compas/foundation.js";
78

89
import "../compas/CompasOpen.js";
910

10-
export default class OpenCompasPlugin extends LitElement {
11+
export default class CompasOpenMenuPlugin extends LitElement {
1112
async run(): Promise<void> {
1213
this.dispatchEvent(newWizardEvent(openCompasWizard()));
1314
}
1415
}
1516

1617
function openCompasWizard(): Wizard {
1718
async function openDoc(element: Element, sclDocument: Document): Promise<void> {
18-
const openScd = getOpenScdElement();
19-
openScd.dispatchEvent(
20-
newLogEvent({
21-
kind: 'reset'
22-
}));
23-
2419
updateDocumentInOpenSCD(sclDocument);
2520

2621
element.dispatchEvent(newWizardEvent());
@@ -44,11 +39,13 @@ function openCompasWizard(): Wizard {
4439
style: '--mdc-theme-primary: var(--mdc-theme-error)'
4540
},
4641
content: [
47-
html`<open-compas @docRetrieved=${(evt: DocRetrievedEvent) => {
42+
html`<compas-open @docRetrieved=${(evt: DocRetrievedEvent) => {
4843
const element = evt.detail.element;
4944
const doc = evt.detail.doc;
5045
element.dispatchEvent(newPendingStateEvent(openDoc(element, doc)));
51-
}}/>`,
46+
}}>
47+
</compas-open>
48+
`,
5249
],
5350
},
5451
];

src/menu/CompasSaveTo.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import {html, LitElement} from 'lit-element';
2+
import {get} from "lit-translate";
3+
4+
import {newPendingStateEvent, newWizardEvent, Wizard, WizardInput} from '../foundation.js';
5+
6+
import {CompasSaveTo} from "../compas/CompasSaveTo.js";
7+
import {getOpenScdElement} from "../compas/foundation.js";
8+
9+
import "../compas/CompasSaveTo.js";
10+
11+
export default class CompasSaveToMenuPlugin extends LitElement {
12+
doc!: XMLDocument;
13+
docId!: string;
14+
docName!: string;
15+
16+
async run(): Promise<void> {
17+
this.dispatchEvent(newWizardEvent(saveToCompasWizard(this.doc, {docId: this.docId, docName: this.docName})));
18+
}
19+
}
20+
21+
interface SaveToCompasWizardOptions {
22+
docId: string,
23+
docName: string
24+
}
25+
function saveToCompasWizard(doc: XMLDocument, saveToOptions: SaveToCompasWizardOptions): Wizard {
26+
function saveToCompas(docId: string, docName: string, doc: XMLDocument) {
27+
return function (inputs: WizardInput[], wizard: Element) {
28+
const compasSaveTo = <CompasSaveTo>wizard.shadowRoot!.querySelector('compas-save-to')
29+
if (!doc || !compasSaveTo.valid()) {
30+
return [];
31+
}
32+
33+
getOpenScdElement().dispatchEvent(newPendingStateEvent(compasSaveTo.saveToCompas(docId, docName, doc)));
34+
return [];
35+
};
36+
}
37+
38+
return [
39+
{
40+
title: get('compas.saveTo.title'),
41+
primary: {
42+
icon: 'save',
43+
label: get('save'),
44+
action: saveToCompas(saveToOptions.docId, saveToOptions.docName, doc),
45+
},
46+
content: [
47+
html `
48+
<compas-save-to .docName="${saveToOptions.docName}" .docId="${saveToOptions.docId}"/>
49+
` ],
50+
},
51+
];
52+
}
53+

src/menu/CompasSettings.ts

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,41 @@
1-
import {LitElement} from 'lit-element';
2-
import {newWizardEvent} from '../foundation.js';
3-
import {compasSettingWizard} from "../compas/CompasSettings.js";
1+
import {html, LitElement} from 'lit-element';
2+
import {get} from "lit-translate";
43

5-
export default class CompasSettingsPlugin extends LitElement {
4+
import {newWizardEvent, Wizard, WizardInput} from '../foundation.js';
5+
6+
import {CompasSettingsElement} from "../compas/CompasSettings.js";
7+
8+
import "../compas/CompasSettings.js";
9+
10+
export default class CompasSettingsMenuPlugin extends LitElement {
611
async run(): Promise<void> {
712
this.dispatchEvent(newWizardEvent(compasSettingWizard()));
813
}
914
}
1015

16+
export function compasSettingWizard(): Wizard {
17+
function save() {
18+
return function (inputs: WizardInput[], wizard: Element) {
19+
const compasSettingsElement = <CompasSettingsElement>wizard.shadowRoot!.querySelector('compas-settings')
20+
if (compasSettingsElement.save()) {
21+
compasSettingsElement.close();
22+
}
23+
return [];
24+
};
25+
}
26+
27+
return [
28+
{
29+
title: get('compas.settings.title'),
30+
primary: {
31+
icon: 'save',
32+
label: get('save'),
33+
action: save(),
34+
},
35+
content: [
36+
html`<compas-settings></compas-settings>`,
37+
],
38+
},
39+
];
40+
}
41+

src/menu/SaveToCompas.ts

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

0 commit comments

Comments
 (0)