Skip to content

Commit 76c57fb

Browse files
author
Dennis Labordus
committed
Refactoring foundation functions, more stable.
Signed-off-by: Dennis Labordus <[email protected]>
1 parent 757648e commit 76c57fb

14 files changed

+95
-77
lines changed

src/compas-editors/CompasVersions.ts

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,20 @@ import '@material/mwc-list/mwc-list-item';
99
import '@material/mwc-list/mwc-check-list-item';
1010

1111
import {newLogEvent, newWizardEvent, Wizard} from "../foundation.js";
12+
import {MultiSelectedEvent} from "@material/mwc-list/mwc-list-foundation";
1213

1314
import {CompasSclDataService, SDS_NAMESPACE} from "../compas-services/CompasSclDataService.js";
1415
import {createLogEvent} from "../compas-services/foundation.js";
15-
import {getTypeFromDocName, updateDocumentInOpenSCD} from "../compas/foundation.js";
16-
import {getElementByName, getOpenScdElement, styles} from './foundation.js';
16+
import {
17+
dispatchEventOnOpenScd,
18+
getOpenScdElement,
19+
getTypeFromDocName,
20+
setDocIdOnOpenScd,
21+
updateDocumentInOpenSCD
22+
} from "../compas/foundation.js";
1723
import {addVersionToCompasWizard} from "../compas/CompasUploadVersion.js";
1824
import {compareWizard} from "../compas/CompasCompareDialog.js";
19-
import {MultiSelectedEvent} from "@material/mwc-list/mwc-list-foundation";
25+
import {getElementByName, styles} from './foundation.js';
2026

2127
// Save the selection for the current document.
2228
let selectedVersionsOnCompasVersionsEditor: Set<number> = new Set();
@@ -38,7 +44,7 @@ export default class CompasVersionsPlugin extends LitElement {
3844

3945
// Add event to get a notification when a new document is opened.
4046
const openSCD = getOpenScdElement();
41-
if (openSCD) {
47+
if (openSCD !== null) {
4248
openSCD.addEventListener('open-doc', this.resetSelection);
4349
}
4450
}
@@ -273,14 +279,13 @@ export default class CompasVersionsPlugin extends LitElement {
273279
function confirmDeleteCompasWizard(docName: string, docId: string): Wizard {
274280
function deleteScl(docName: string, docId: string) {
275281
return function () {
276-
const openScd = getOpenScdElement();
277282
const type = getTypeFromDocName(docName);
278283

279284
CompasSclDataService()
280285
.deleteSclDocument(type, docId)
281286
.then (() => {
282-
openScd.docId = '';
283-
openScd.dispatchEvent(
287+
setDocIdOnOpenScd('');
288+
dispatchEventOnOpenScd(
284289
newLogEvent({
285290
kind: 'info',
286291
title: get('compas.versions.deleteSuccess')
@@ -289,7 +294,7 @@ function confirmDeleteCompasWizard(docName: string, docId: string): Wizard {
289294
.catch(createLogEvent);
290295

291296
// Close the Restore Dialog.
292-
openScd.dispatchEvent(newWizardEvent());
297+
dispatchEventOnOpenScd(newWizardEvent());
293298

294299
return [];
295300
}
@@ -313,14 +318,13 @@ function confirmDeleteCompasWizard(docName: string, docId: string): Wizard {
313318
function confirmRestoreVersionCompasWizard(docName: string, docId: string, version: string): Wizard {
314319
function openScl(docName: string, docId: string, version: string) {
315320
return function () {
316-
const openScd = getOpenScdElement();
317321
const type = getTypeFromDocName(docName);
318322

319323
CompasSclDataService().getSclDocumentVersion(type, docId, version)
320324
.then(sclDocument => {
321325
updateDocumentInOpenSCD(sclDocument);
322326

323-
openScd.dispatchEvent(
327+
dispatchEventOnOpenScd(
324328
newLogEvent({
325329
kind: 'info',
326330
title: get('compas.versions.restoreVersionSuccess', {version : version})
@@ -329,7 +333,7 @@ function confirmRestoreVersionCompasWizard(docName: string, docId: string, versi
329333
.catch(createLogEvent);
330334

331335
// Close the Restore Dialog.
332-
openScd.dispatchEvent(newWizardEvent());
336+
dispatchEventOnOpenScd(newWizardEvent());
333337

334338
return [];
335339
}
@@ -353,13 +357,12 @@ function confirmRestoreVersionCompasWizard(docName: string, docId: string, versi
353357
function confirmDeleteVersionCompasWizard(docName: string, docId: string, version: string): Wizard {
354358
function deleteSclVersion(docName: string, docId: string, version: string) {
355359
return function () {
356-
const openScd = getOpenScdElement();
357360
const type = getTypeFromDocName(docName);
358361

359362
CompasSclDataService()
360363
.deleteSclDocumentVersion(type, docId, version)
361364
.then(() => {
362-
openScd.dispatchEvent(
365+
dispatchEventOnOpenScd(
363366
newLogEvent({
364367
kind: 'info',
365368
title: get('compas.versions.deleteVersionSuccess', {version : version})
@@ -368,7 +371,7 @@ function confirmDeleteVersionCompasWizard(docName: string, docId: string, versio
368371
.catch(createLogEvent);
369372

370373
// Close the Restore Dialog.
371-
openScd.dispatchEvent(newWizardEvent());
374+
dispatchEventOnOpenScd(newWizardEvent());
372375

373376
return [];
374377
}

src/compas-editors/foundation.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {css} from "lit-element";
2-
import {OpenSCD} from "../open-scd.js";
32

43
export function getElementByName(parent: Element, namespace: string, tagName: string): Element | null {
54
const elements = parent.getElementsByTagNameNS(namespace, tagName);
@@ -9,10 +8,6 @@ export function getElementByName(parent: Element, namespace: string, tagName: st
98
return null;
109
}
1110

12-
export function getOpenScdElement(): OpenSCD {
13-
return <OpenSCD>document.querySelector('open-scd');
14-
}
15-
1611
/** Common `CSS` styles used by Compas Editors subeditors */
1712
export const styles = css`
1813
:host(.moving) section {

src/compas-services/foundation.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
import {get} from "lit-translate";
2-
3-
import {OpenSCD} from "../open-scd.js";
42
import {newLogEvent} from "../foundation.js";
3+
import {dispatchEventOnOpenScd} from "../compas/foundation.js";
54

65
export const NOT_FOUND_ERROR = 'NotFoundError';
76
export const APPLICATION_ERROR = 'ApplicationError';
87
export const SERVER_ERROR = 'ServerError';
98

109
export const COMMONS_NAMESPACE = 'https://www.lfenergy.org/compas/commons/v1';
1110

12-
export function getOpenScdElement(): OpenSCD {
13-
return <OpenSCD>document.querySelector('open-scd');
14-
}
15-
1611
export async function handleResponse(response: Response): Promise<string> {
1712
if (!response.ok) {
1813
let type = APPLICATION_ERROR;
@@ -75,7 +70,7 @@ export function createLogEvent(reason: any): void {
7570
message += " (" + reason.status + ")";
7671
}
7772

78-
getOpenScdElement().dispatchEvent(
73+
dispatchEventOnOpenScd(
7974
newLogEvent({
8075
kind: 'error',
8176
title: get('compas.error.server'),

src/compas/CompasAutoAlignment.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import '@material/mwc-list';
55
import '@material/mwc-list/mwc-check-list-item';
66

77
import {newLogEvent, newOpenDocEvent, newWizardEvent} from "../foundation.js";
8-
import {getOpenScdElement} from "./foundation.js";
8+
import {dispatchEventOnOpenScd, getOpenScdElement} from "./foundation.js";
99

1010
import {CompasSclAutoAlignmentService} from "../compas-services/CompasSclAutoAlignmentService.js";
1111
import {createLogEvent} from "../compas-services/foundation.js";
@@ -37,11 +37,15 @@ export default class CompasAutoAlignmentElement extends LitElement {
3737
if (this.valid()) {
3838
await CompasSclAutoAlignmentService().updateSCL(this.doc, this.getSelectedValues())
3939
.then(sclDocument => {
40-
const openScd = getOpenScdElement();
41-
openScd.dispatchEvent(newLogEvent({kind: 'reset'}));
42-
openScd.dispatchEvent(newOpenDocEvent(sclDocument, this.docName, {detail: {docId: this.docId}}));
40+
dispatchEventOnOpenScd(newLogEvent({kind: 'reset'}));
41+
dispatchEventOnOpenScd(
42+
newOpenDocEvent(
43+
sclDocument,
44+
this.docName,
45+
{detail: {docId: this.docId}}
46+
));
4347

44-
openScd.dispatchEvent(
48+
dispatchEventOnOpenScd(
4549
newLogEvent({
4650
kind: 'info',
4751
title: get('compas.autoAlignment.success')

src/compas/CompasCompareDialog.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import '@material/mwc-icon';
88

99
import {identity, isSame, newWizardEvent, Wizard} from "../foundation.js";
1010

11-
import {getOpenScdElement} from "./foundation.js";
11+
import {dispatchEventOnOpenScd} from "./foundation.js";
1212

1313
interface CompareOptions {
1414
title: string;
@@ -180,7 +180,7 @@ export function compareWizard(
180180
): Wizard {
181181
function close() {
182182
return function () {
183-
getOpenScdElement().dispatchEvent(newWizardEvent())
183+
dispatchEventOnOpenScd(newWizardEvent())
184184
return [];
185185
};
186186
}

src/compas/CompasOpen.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {newPendingStateEvent} from "../foundation.js";
77

88
import {CompasSclDataService} from "../compas-services/CompasSclDataService.js";
99
import {createLogEvent} from "../compas-services/foundation.js";
10-
import {getOpenScdElement} from "./foundation.js";
10+
import {dispatchEventOnOpenScd} from "./foundation.js";
1111
import {SclSelectedEvent} from "./CompasScl.js";
1212
import {TypeSelectedEvent} from "./CompasSclTypeList.js";
1313

@@ -66,7 +66,7 @@ export default class CompasOpenElement extends LitElement {
6666
<input id="scl-file" accept=".sed,.scd,.ssd,.isd,.iid,.cid,.icd"
6767
type="file" hidden required
6868
@change=${(evt: Event) =>
69-
getOpenScdElement().dispatchEvent(newPendingStateEvent(this.getSclFile(evt)))
69+
dispatchEventOnOpenScd(newPendingStateEvent(this.getSclFile(evt)))
7070
}>
7171
7272
<mwc-button label="${translate('compas.open.selectFileButton')}"
@@ -92,7 +92,7 @@ export default class CompasOpenElement extends LitElement {
9292
<p>${translate('compas.open.listScls', {type: this.selectedType??''})}</p>
9393
<compas-scl-list .type=${this.selectedType}
9494
@sclSelected=${(evt: SclSelectedEvent) =>
95-
getOpenScdElement().dispatchEvent(newPendingStateEvent(this.getSclDocument(evt.detail.docId)))
95+
dispatchEventOnOpenScd(newPendingStateEvent(this.getSclDocument(evt.detail.docId)))
9696
}/>
9797
</compas-scl-list>
9898
<mwc-button id="reselect-type"

src/compas/CompasSave.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ import {CompasSclTypeRadiogroup} from "./CompasSclTypeRadiogroup.js";
1414
import {CompasCommentElement} from "./CompasComment.js";
1515
import {CompasSclDataService} from "../compas-services/CompasSclDataService.js";
1616
import {createLogEvent} from "../compas-services/foundation.js";
17-
import {getOpenScdElement, getTypeFromDocName, stripExtensionFromName, updateDocumentInOpenSCD} from "./foundation.js";
17+
import {
18+
dispatchEventOnOpenScd,
19+
getTypeFromDocName,
20+
stripExtensionFromName,
21+
updateDocumentInOpenSCD
22+
} from "./foundation.js";
1823

1924
import './CompasChangeSetRadiogroup.js';
2025
import './CompasComment.js';
@@ -62,8 +67,7 @@ export default class CompasSaveElement extends CompasExistsIn(LitElement) {
6267
.then(sclDocument => {
6368
updateDocumentInOpenSCD(sclDocument);
6469

65-
const openScd = getOpenScdElement();
66-
openScd.dispatchEvent(
70+
dispatchEventOnOpenScd(
6771
newLogEvent({
6872
kind: 'info',
6973
title: get('compas.save.addSuccess')
@@ -84,8 +88,7 @@ export default class CompasSaveElement extends CompasExistsIn(LitElement) {
8488
.then(sclDocument => {
8589
updateDocumentInOpenSCD(sclDocument);
8690

87-
const openScd = getOpenScdElement();
88-
openScd.dispatchEvent(
91+
dispatchEventOnOpenScd(
8992
newLogEvent({
9093
kind: 'info',
9194
title: get('compas.save.updateSuccess')

src/compas/CompasSession.ts

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import '@material/mwc-dialog';
66
import '@material/mwc-button';
77

88
import {saveDocumentToFile} from "../file.js";
9-
import {getOpenScdElement} from "./foundation.js";
9+
import {dispatchEventOnOpenScd, getOpenScdElement} from "./foundation.js";
1010

1111
import {CompasUserInfoService} from "../compas-services/CompasUserInfoService.js";
1212
import {newUserInfoEvent} from "../foundation.js";
@@ -21,9 +21,13 @@ export class CompasSessionExpiringDialogElement extends LitElement {
2121

2222
private expiringSessionWarningTimer: NodeJS.Timeout | null = null;
2323

24-
static getElement(): CompasSessionExpiringDialogElement {
25-
return (<CompasSessionExpiringDialogElement>getOpenScdElement()
26-
.shadowRoot!.querySelector('compas-session-expiring-dialog'));
24+
static getElement(): CompasSessionExpiringDialogElement | null {
25+
const openScd = getOpenScdElement();
26+
if (openScd !== null) {
27+
return (<CompasSessionExpiringDialogElement>openScd
28+
.shadowRoot!.querySelector('compas-session-expiring-dialog'));
29+
}
30+
return null;
2731
}
2832

2933
resetTimer(): void {
@@ -84,9 +88,13 @@ export class CompasSessionExpiredDialogElement extends LitElement {
8488

8589
private expiredSessionMessageTimer: NodeJS.Timeout | null = null;
8690

87-
static getElement(): CompasSessionExpiredDialogElement {
88-
return (<CompasSessionExpiredDialogElement>getOpenScdElement()
89-
.shadowRoot!.querySelector('compas-session-expired-dialog'));
91+
static getElement(): CompasSessionExpiredDialogElement | null {
92+
const openScd = getOpenScdElement();
93+
if (openScd !== null) {
94+
return (<CompasSessionExpiredDialogElement>openScd
95+
.shadowRoot!.querySelector('compas-session-expired-dialog'));
96+
}
97+
return null;
9098
}
9199

92100
resetTimer(): void {
@@ -173,18 +181,18 @@ function schedulePing() {
173181
}
174182

175183
function showExpiringSessionWarning() {
176-
CompasSessionExpiringDialogElement.getElement().show();
184+
CompasSessionExpiringDialogElement.getElement()!.show();
177185
}
178186

179187
function showExpiredSessionMessage() {
180-
CompasSessionExpiringDialogElement.getElement().close();
181-
CompasSessionExpiredDialogElement.getElement().show();
188+
CompasSessionExpiringDialogElement.getElement()!.close();
189+
CompasSessionExpiredDialogElement.getElement()!.show();
182190
unregisterEvents();
183191
}
184192

185193
export function resetTimer(): void {
186-
CompasSessionExpiringDialogElement.getElement().resetTimer();
187-
CompasSessionExpiredDialogElement.getElement().resetTimer();
194+
CompasSessionExpiringDialogElement.getElement()!.resetTimer();
195+
CompasSessionExpiredDialogElement.getElement()!.resetTimer();
188196
schedulePing();
189197
}
190198

@@ -202,9 +210,9 @@ export function setSessionTimeouts(sessionWarning: number, sessionExpires: numbe
202210
const expiringSessionWarning = sessionWarning * 60 * 1000;
203211
const expiredSessionMessage = sessionExpires * 60 * 1000;
204212

205-
CompasSessionExpiringDialogElement.getElement().expiringSessionWarning = expiringSessionWarning;
206-
CompasSessionExpiringDialogElement.getElement().expiredSessionMessage = expiredSessionMessage;
207-
CompasSessionExpiredDialogElement.getElement().expiredSessionMessage = expiredSessionMessage;
213+
CompasSessionExpiringDialogElement.getElement()!.expiringSessionWarning = expiringSessionWarning;
214+
CompasSessionExpiringDialogElement.getElement()!.expiredSessionMessage = expiredSessionMessage;
215+
CompasSessionExpiredDialogElement.getElement()!.expiredSessionMessage = expiredSessionMessage;
208216
resetTimer();
209217
registerEvents();
210218
}
@@ -214,7 +222,7 @@ export async function retrieveUserInfo(): Promise<void> {
214222
.then(response => {
215223
const name = response.querySelectorAll("Name").item(0)?.textContent;
216224
if (name != null) {
217-
getOpenScdElement().dispatchEvent(newUserInfoEvent(name));
225+
dispatchEventOnOpenScd(newUserInfoEvent(name));
218226
}
219227

220228
const sessionWarning = response.querySelectorAll("SessionWarning").item(0)?.textContent??"15";

src/compas/CompasSettings.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import '@material/mwc-button';
66

77
import {newWizardEvent} from '../foundation.js';
88
import {TextFieldBase} from "@material/mwc-textfield/mwc-textfield-base";
9-
import {getOpenScdElement} from "./foundation.js";
9+
import {dispatchEventOnOpenScd} from "./foundation.js";
1010

1111
export type CompasSettingsRecord = {
1212
sclDataServiceUrl: string;
@@ -92,8 +92,7 @@ export class CompasSettingsElement extends LitElement {
9292

9393
close(): void {
9494
// Close the Save Dialog.
95-
const openScd = getOpenScdElement();
96-
openScd.dispatchEvent(newWizardEvent());
95+
dispatchEventOnOpenScd(newWizardEvent());
9796
}
9897

9998
render(): TemplateResult {

0 commit comments

Comments
 (0)