Skip to content

Commit 2b8928a

Browse files
author
Dennis Labordus
committed
Combine standard open project with open compas.
Signed-off-by: Dennis Labordus <[email protected]>
1 parent 4d2bd53 commit 2b8928a

17 files changed

+230
-124
lines changed

__snapshots__/compas-loading.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
mwc-list-item=""
1010
tabindex="0"
1111
>
12-
[compas.loading]
12+
<i>
13+
[compas.loading]
14+
</i>
1315
</mwc-list-item>
1416
</mwc-list>
1517

__snapshots__/compas-open.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# `compas-open`
2+
3+
## `when-type-needs-to-be-selected`
4+
5+
#### `looks like the latest snapshot`
6+
7+
```html
8+
<section>
9+
<h3>
10+
Local
11+
</h3>
12+
<input
13+
accept=".sed,.scd,.ssd,.isd,.iid,.cid,.icd"
14+
hidden=""
15+
id="scl-file"
16+
required=""
17+
type="file"
18+
>
19+
<mwc-button label="[compas.open.selectFileButton]">
20+
</mwc-button>
21+
</section>
22+
<section>
23+
<h3>
24+
CoMPAS
25+
</h3>
26+
<p>
27+
[compas.open.listSclTypes]
28+
</p>
29+
<compas-scltype-list>
30+
</compas-scltype-list>
31+
</section>
32+
33+
```
34+
35+
## `when-project-needs-to-be-selected`
36+
37+
#### `looks like the latest snapshot`
38+
39+
```html
40+
<section>
41+
<h3>
42+
Local
43+
</h3>
44+
<input
45+
accept=".sed,.scd,.ssd,.isd,.iid,.cid,.icd"
46+
hidden=""
47+
id="scl-file"
48+
required=""
49+
type="file"
50+
>
51+
<mwc-button label="[compas.open.selectFileButton]">
52+
</mwc-button>
53+
</section>
54+
<section>
55+
<h3>
56+
CoMPAS
57+
</h3>
58+
<p>
59+
[compas.open.listScls]
60+
</p>
61+
<compas-scl-list>
62+
</compas-scl-list>
63+
<mwc-button
64+
icon="arrow_back"
65+
id="reselect-type"
66+
label="[compas.open.otherTypeButton]"
67+
>
68+
</mwc-button>
69+
</section>
70+
71+
```
72+

__snapshots__/compas-scl-list.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
mwc-list-item=""
2222
tabindex="0"
2323
>
24-
[compas.noScls]
24+
<i>
25+
[compas.noScls]
26+
</i>
2527
</mwc-list-item>
2628
</mwc-list>
2729

__snapshots__/compas-scltype-list.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
mwc-list-item=""
2222
tabindex="0"
2323
>
24-
[compas.noSclTypes]
24+
<i>
25+
[compas.noSclTypes]
26+
</i>
2527
</mwc-list-item>
2628
</mwc-list>
2729

__snapshots__/compas-scltype-radiogroup.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
mwc-list-item=""
2222
tabindex="0"
2323
>
24-
[compas.noSclTypes]
24+
<i>
25+
[compas.noSclTypes]
26+
</i>
2527
</mwc-list-item>
2628
</mwc-list>
2729

__snapshots__/open-scd.md

Lines changed: 5 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,6 @@
3636
<mwc-linear-progress indeterminate="">
3737
</mwc-linear-progress>
3838
</mwc-list-item>
39-
<mwc-list-item
40-
aria-disabled="false"
41-
class="top"
42-
graphic="icon"
43-
iconid="folder_open"
44-
mwc-list-item=""
45-
tabindex="-1"
46-
>
47-
<mwc-icon slot="graphic">
48-
folder_open
49-
</mwc-icon>
50-
<span>
51-
Open CoMPAS
52-
</span>
53-
<mwc-linear-progress indeterminate="">
54-
</mwc-linear-progress>
55-
</mwc-list-item>
5639
<mwc-list-item
5740
aria-disabled="false"
5841
class="top"
@@ -82,7 +65,7 @@
8265
input
8366
</mwc-icon>
8467
<span>
85-
New project from CIM
68+
Project from CIM
8669
</span>
8770
<mwc-linear-progress indeterminate="">
8871
</mwc-linear-progress>
@@ -431,14 +414,6 @@
431414
Open project
432415
</div>
433416
</mwc-icon-button>
434-
<mwc-icon-button
435-
class="landing_icon"
436-
icon="folder_open"
437-
>
438-
<div class="landing_label">
439-
Open CoMPAS
440-
</div>
441-
</mwc-icon-button>
442417
<mwc-icon-button
443418
class="landing_icon"
444419
icon="create_new_folder"
@@ -452,7 +427,7 @@
452427
icon="input"
453428
>
454429
<div class="landing_label">
455-
New project from CIM
430+
Project from CIM
456431
</div>
457432
</mwc-icon-button>
458433
</div>
@@ -740,29 +715,13 @@
740715
mwc-list-item=""
741716
selected=""
742717
tabindex="-1"
743-
value="/src/menu/OpenProject.js"
718+
value="/src/menu/CompasOpen.js"
744719
>
745720
<mwc-icon slot="meta">
746721
folder_open
747722
</mwc-icon>
748723
Open project
749724
</mwc-check-list-item>
750-
<mwc-check-list-item
751-
aria-disabled="false"
752-
class="official"
753-
graphic="control"
754-
hasmeta=""
755-
left=""
756-
mwc-list-item=""
757-
selected=""
758-
tabindex="-1"
759-
value="/src/menu/OpenCompas.js"
760-
>
761-
<mwc-icon slot="meta">
762-
folder_open
763-
</mwc-icon>
764-
Open CoMPAS
765-
</mwc-check-list-item>
766725
<mwc-check-list-item
767726
aria-disabled="false"
768727
class="official"
@@ -793,7 +752,7 @@
793752
<mwc-icon slot="meta">
794753
input
795754
</mwc-icon>
796-
New project from CIM
755+
Project from CIM
797756
</mwc-check-list-item>
798757
<mwc-check-list-item
799758
aria-disabled="false"
@@ -820,7 +779,7 @@
820779
mwc-list-item=""
821780
selected=""
822781
tabindex="-1"
823-
value="/src/menu/SaveToCompas.js"
782+
value="/src/menu/CompasSaveTo.js"
824783
>
825784
<mwc-icon slot="meta">
826785
save

public/js/plugins.js

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,6 @@ export const officialPlugins = [
2929
},
3030
{
3131
name: 'Open project',
32-
src: '/src/menu/OpenProject.js',
33-
icon: 'folder_open',
34-
default: true,
35-
kind: 'menu',
36-
requireDoc: false,
37-
position: 'top'
38-
},
39-
{
40-
name: 'Open CoMPAS',
4132
src: '/src/menu/CompasOpen.js',
4233
icon: 'folder_open',
4334
default: true,
@@ -55,7 +46,7 @@ export const officialPlugins = [
5546
position: 'top'
5647
},
5748
{
58-
name: 'New project from CIM',
49+
name: 'Project from CIM',
5950
src: '/src/menu/CompasCimMapping.js',
6051
icon: 'input',
6152
default: true,

src/compas/CompasLoading.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export class CompasLoadingElement extends LitElement {
66
render(): TemplateResult {
77
return html`
88
<mwc-list>
9-
<mwc-list-item>${translate("compas.loading")}</mwc-list-item>
9+
<mwc-list-item><i>${translate("compas.loading")}</i></mwc-list-item>
1010
</mwc-list>
1111
`
1212
}

src/compas/CompasOpen.ts

Lines changed: 72 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import {customElement, html, LitElement, property, TemplateResult} from "lit-element";
1+
import {customElement, html, LitElement, property, query, TemplateResult} from "lit-element";
2+
import {translate} from "lit-translate";
23

3-
import {newPendingStateEvent, newWizardEvent} from "../foundation.js";
4+
import {newPendingStateEvent} from "../foundation.js";
45

56
import {CompasSclDataService} from "../compas-services/CompasSclDataService.js";
67
import {createLogEvent} from "../compas-services/foundation.js";
@@ -10,22 +11,23 @@ import {TypeSelectedEvent} from "./CompasSclTypeList.js";
1011

1112
import './CompasSclTypeList.js';
1213
import './CompasScl.js';
13-
import {translate} from "lit-translate";
1414

1515
/* Event that will be used when a SCL Document is retrieved. */
1616
export interface DocRetrievedDetail {
1717
element: Element,
18-
doc: Document
18+
doc: Document,
19+
docName?: string,
1920
}
2021
export type DocRetrievedEvent = CustomEvent<DocRetrievedDetail>;
2122
export function newDocRetrievedEvent(
2223
element: Element,
23-
doc: Document
24+
doc: Document,
25+
docName?: string,
2426
): DocRetrievedEvent {
2527
return new CustomEvent<DocRetrievedDetail>('docRetrieved', {
2628
bubbles: true,
2729
composed: true,
28-
detail: { element, doc },
30+
detail: { element, doc, docName },
2931
});
3032
}
3133

@@ -34,9 +36,8 @@ export default class CompasOpenElement extends LitElement {
3436
@property()
3537
selectedType: string | undefined;
3638

37-
retrieveSclDocument(id?: string): void {
38-
getOpenScdElement().dispatchEvent(newPendingStateEvent(this.getSclDocument(id)));
39-
}
39+
@query('#scl-file')
40+
private sclFileUI!: HTMLInputElement;
4041

4142
private async getSclDocument(id?: string): Promise<void> {
4243
const sclDocument = await CompasSclDataService()
@@ -47,27 +48,72 @@ export default class CompasOpenElement extends LitElement {
4748
}
4849
}
4950

50-
cancel(): void {
51-
if (this.selectedType) {
52-
this.selectedType = undefined;
53-
} else {
54-
this.dispatchEvent(newWizardEvent());
55-
}
51+
private async getSclFile(evt: Event): Promise<void> {
52+
const file = (<HTMLInputElement | null>evt.target)?.files?.item(0) ?? false;
53+
if (!file) return;
54+
55+
const text = await file.text();
56+
const docName = file.name;
57+
const doc = new DOMParser().parseFromString(text, 'application/xml');
58+
59+
this.dispatchEvent(newDocRetrievedEvent(this, doc, docName));
60+
this.sclFileUI.onchange = null;
5661
}
5762

58-
render(): TemplateResult {
59-
if (this.selectedType) {
60-
return html `
61-
<h3>${translate('compas.open.listScls', {type: this.selectedType})}</h3>
62-
<compas-scl-list .type=${this.selectedType}
63-
@sclSelected=${(evt: SclSelectedEvent) =>
64-
this.retrieveSclDocument(evt.detail.docId)}/>
65-
`
66-
}
63+
private renderFileSelect(): TemplateResult {
6764
return html `
68-
<h3>${translate('compas.open.listSclTypes')}</h3>
65+
<input id="scl-file" accept=".sed,.scd,.ssd,.isd,.iid,.cid,.icd"
66+
type="file" hidden required
67+
@change=${(evt: Event) =>
68+
getOpenScdElement().dispatchEvent(newPendingStateEvent(this.getSclFile(evt)))
69+
}>
70+
71+
<mwc-button label="${translate('compas.open.selectFileButton')}"
72+
@click=${() => {
73+
const input = <HTMLInputElement | null>this.shadowRoot!.querySelector("#scl-file");
74+
input?.click();
75+
}}>
76+
</mwc-button>
77+
`;
78+
}
79+
80+
private renderSclTypeList(): TemplateResult {
81+
return html `
82+
<p>${translate('compas.open.listSclTypes')}</p>
6983
<compas-scltype-list @typeSelected=${(evt: TypeSelectedEvent) =>
70-
this.selectedType = evt.detail.type}/>
84+
this.selectedType = evt.detail.type
85+
}/>
86+
`;
87+
}
88+
89+
private renderSclList(): TemplateResult {
90+
return html `
91+
<p>${translate('compas.open.listScls', {type: this.selectedType??''})}</p>
92+
<compas-scl-list .type=${this.selectedType}
93+
@sclSelected=${(evt: SclSelectedEvent) =>
94+
getOpenScdElement().dispatchEvent(newPendingStateEvent(this.getSclDocument(evt.detail.docId)))
95+
}/>
96+
</compas-scl-list>
97+
<mwc-button id="reselect-type"
98+
label="${translate('compas.open.otherTypeButton')}"
99+
icon="arrow_back"
100+
@click=${() => {
101+
this.selectedType = undefined;
102+
}}>
103+
</mwc-button>
104+
`;
105+
}
106+
107+
render(): TemplateResult {
108+
return html `
109+
<section>
110+
<h3>Local</h3>
111+
${this.renderFileSelect()}
112+
</section>
113+
<section>
114+
<h3>CoMPAS</h3>
115+
${(this.selectedType) ? this.renderSclList() : this.renderSclTypeList()}
116+
</section>
71117
`
72118
}
73119
}

0 commit comments

Comments
 (0)