Skip to content

Commit 3dc85f1

Browse files
committed
chore: Fix oscd plugins
1 parent 8ae5cca commit 3dc85f1

6 files changed

Lines changed: 130 additions & 41 deletions

File tree

package-lock.json

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"dependencies": {
2121
"@compas-oscd/core": "^0.1.23",
2222
"@compas-oscd/open-scd": "0.34.49",
23-
"@compas-oscd/plugins": "0.0.6",
23+
"@compas-oscd/plugins": "0.0.13",
2424
"@compas-oscd/xml": "^0.0.1",
2525
"@material/mwc-dialog": "0.22.1",
2626
"@material/mwc-drawer": "0.22.1",

public/js/plugins.js

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,71 +9,71 @@ export const officialPlugins = [
99
},
1010
{
1111
name: 'Substation',
12-
src: '/plugins/dist/editors/Substation.js',
12+
src: '/oscd-plugins/editors/Substation.js',
1313
icon: 'margin',
1414
activeByDefault: true,
1515
kind: 'editor',
1616
requireDoc: true,
1717
},
1818
{
1919
name: 'Single Line Diagram',
20-
src: '/plugins/dist/editors/SingleLineDiagram.js',
20+
src: '/oscd-plugins/editors/SingleLineDiagram.js',
2121
icon: 'edit',
2222
activeByDefault: true,
2323
kind: 'editor',
2424
requireDoc: true,
2525
},
2626
{
2727
name: 'Subscriber Message Binding (GOOSE)',
28-
src: '/plugins/dist/editors/GooseSubscriberMessageBinding.js',
28+
src: '/oscd-plugins/editors/GooseSubscriberMessageBinding.js',
2929
icon: 'link',
3030
activeByDefault: false,
3131
kind: 'editor',
3232
requireDoc: true,
3333
},
3434
{
3535
name: 'Subscriber Data Binding (GOOSE)',
36-
src: '/plugins/dist/editors/GooseSubscriberDataBinding.js',
36+
src: '/oscd-plugins/editors/GooseSubscriberDataBinding.js',
3737
icon: 'link',
3838
activeByDefault: false,
3939
kind: 'editor',
4040
requireDoc: true,
4141
},
4242
{
4343
name: 'Subscriber Message Binding (SMV)',
44-
src: '/plugins/dist/editors/SMVSubscriberMessageBinding.js',
44+
src: '/oscd-plugins/editors/SMVSubscriberMessageBinding.js',
4545
icon: 'link',
4646
activeByDefault: false,
4747
kind: 'editor',
4848
requireDoc: true,
4949
},
5050
{
5151
name: 'Subscriber Data Binding (SMV)',
52-
src: '/plugins/dist/editors/SMVSubscriberDataBinding.js',
52+
src: '/oscd-plugins/editors/SMVSubscriberDataBinding.js',
5353
icon: 'link',
5454
activeByDefault: false,
5555
kind: 'editor',
5656
requireDoc: true,
5757
},
5858
{
5959
name: 'Communication',
60-
src: '/plugins/dist/editors/Communication.js',
60+
src: '/oscd-plugins/editors/Communication.js',
6161
icon: 'settings_ethernet',
6262
activeByDefault: true,
6363
kind: 'editor',
6464
requireDoc: true,
6565
},
6666
{
6767
name: '104',
68-
src: '/plugins/dist/editors/Protocol104.js',
68+
src: '/oscd-plugins/editors/Protocol104.js',
6969
icon: 'settings_ethernet',
7070
activeByDefault: false,
7171
kind: 'editor',
7272
requireDoc: true,
7373
},
7474
{
7575
name: 'Templates',
76-
src: '/plugins/dist/editors/Templates.js',
76+
src: '/oscd-plugins/editors/Templates.js',
7777
icon: 'copy_all',
7878
activeByDefault: true,
7979
kind: 'editor',
@@ -113,7 +113,7 @@ export const officialPlugins = [
113113
},
114114
{
115115
name: 'Cleanup',
116-
src: '/plugins/dist/editors/Cleanup.js',
116+
src: '/oscd-plugins/editors/Cleanup.js',
117117
icon: 'cleaning_services',
118118
activeByDefault: false,
119119
kind: 'editor',
@@ -162,7 +162,7 @@ export const officialPlugins = [
162162
},
163163
{
164164
name: 'New project',
165-
src: '/plugins/dist/menu/NewProject.js',
165+
src: '/oscd-plugins/menu/NewProject.js',
166166
icon: 'create_new_folder',
167167
activeByDefault: true,
168168
kind: 'menu',
@@ -223,14 +223,14 @@ export const officialPlugins = [
223223
},
224224
{
225225
name: 'Validate Schema',
226-
src: '/plugins/dist/validators/ValidateSchema.js',
226+
src: '/oscd-plugins/validators/ValidateSchema.js',
227227
icon: 'rule_folder',
228228
activeByDefault: true,
229229
kind: 'validator',
230230
},
231231
{
232232
name: 'Validate Templates',
233-
src: '/plugins/dist/validators/ValidateTemplates.js',
233+
src: '/oscd-plugins/validators/ValidateTemplates.js',
234234
icon: 'rule_folder',
235235
activeByDefault: true,
236236
kind: 'validator',
@@ -246,7 +246,7 @@ export const officialPlugins = [
246246
},
247247
{
248248
name: 'Create Virtual IED',
249-
src: '/plugins/dist/menu/VirtualTemplateIED.js',
249+
src: '/oscd-plugins/menu/VirtualTemplateIED.js',
250250
icon: 'developer_board',
251251
activeByDefault: false,
252252
kind: 'menu',
@@ -255,23 +255,23 @@ export const officialPlugins = [
255255
},
256256
{
257257
name: 'Subscriber Update',
258-
src: '/plugins/dist/menu/SubscriberInfo.js',
258+
src: '/oscd-plugins/menu/SubscriberInfo.js',
259259
activeByDefault: true,
260260
kind: 'menu',
261261
requireDoc: true,
262262
position: 'middle',
263263
},
264264
{
265265
name: 'Update desc (ABB)',
266-
src: '/plugins/dist/menu/UpdateDescriptionABB.js',
266+
src: '/oscd-plugins/menu/UpdateDescriptionABB.js',
267267
activeByDefault: false,
268268
kind: 'menu',
269269
requireDoc: true,
270270
position: 'middle',
271271
},
272272
{
273273
name: 'Update desc (SEL)',
274-
src: '/plugins/dist/menu/UpdateDescriptionSEL.js',
274+
src: '/oscd-plugins/menu/UpdateDescriptionSEL.js',
275275
activeByDefault: false,
276276
kind: 'menu',
277277
requireDoc: true,
@@ -342,7 +342,7 @@ export const officialPlugins = [
342342
},
343343
{
344344
name: 'Show SCL History',
345-
src: '/plugins/dist/menu/SclHistory.js',
345+
src: '/oscd-plugins/menu/SclHistory.js',
346346
icon: 'history_toggle_off',
347347
activeByDefault: true,
348348
kind: 'menu',
@@ -360,7 +360,7 @@ export const officialPlugins = [
360360
},
361361
{
362362
name: 'Help',
363-
src: '/plugins/dist/menu/Help.js',
363+
src: '/oscd-plugins/menu/Help.js',
364364
icon: 'help',
365365
activeByDefault: true,
366366
kind: 'menu',
@@ -369,7 +369,7 @@ export const officialPlugins = [
369369
},
370370
{
371371
name: 'Export Communication Section',
372-
src: '/plugins/dist/menu/ExportCommunication.js',
372+
src: '/oscd-plugins/menu/ExportCommunication.js',
373373
icon: 'sim_card_download',
374374
activeByDefault: false,
375375
kind: 'menu',
@@ -392,14 +392,5 @@ export const officialPlugins = [
392392
kind: 'menu',
393393
requireDoc: true,
394394
position: 'middle',
395-
},
396-
{
397-
name: 'Export IEC 104 CSV',
398-
src: '/plugins/dist/menu/Export104.js',
399-
icon: 'sim_card_download',
400-
activeByDefault: false,
401-
kind: 'menu',
402-
requireDoc: true,
403-
position: 'middle',
404-
},
395+
}
405396
];

src/open-scd.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import packageJson from '../package.json';
4444
import { CompasSclDataService } from './compas-services/CompasSclDataService.js';
4545
import { createLogEvent } from './compas-services/foundation.js';
4646
import { languages, loader } from './translations/loader.js';
47+
import { registerOscdPlugins, OscdPluginSrc } from './oscd-plugins.js';
4748

4849
const LNODE_LIB_DOC_ID = 'fc55c46d-c109-4ccd-bf66-9f1d0e135689';
4950

@@ -224,6 +225,7 @@ export class OpenSCD extends LitElement {
224225
connectedCallback(): void {
225226
super.connectedCallback();
226227
this.checkAppVersion();
228+
registerOscdPlugins();
227229
this.loadPlugins();
228230

229231
this.unsubscribers.push(this.editor.subscribe(() => this.editCount++));
@@ -465,9 +467,20 @@ export class OpenSCD extends LitElement {
465467
return builtinPlugins as CorePlugin[];
466468
}
467469

468-
private addContent(plugin: Omit<Plugin, 'content'>): Plugin {
470+
private addContent(plugin: Plugin): Plugin {
469471
const tag = this.pluginTag(plugin.src);
470472

473+
const isOscdPlugin = Object.values(OscdPluginSrc).includes(plugin.src as any);
474+
if (isOscdPlugin) {
475+
const tag = pluginTag(plugin.src);
476+
return {
477+
...plugin,
478+
content: {
479+
tag,
480+
},
481+
};
482+
}
483+
471484
if (!this.loadedPlugins.has(tag)) {
472485
this.loadedPlugins.add(tag);
473486
import(plugin.src).then(mod => {

src/oscd-plugins.ts

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { pluginTag } from '@compas-oscd/open-scd/dist/plugin-tag.js';
2+
3+
// editor plugins
4+
import { default as Substation } from '@compas-oscd/plugins/dist/editors/Substation.js';
5+
// import { default as SingleLineDiagram } from '@compas-oscd/plugins/dist/editors/SingleLineDiagram.js';
6+
import { default as GooseSubscriberMessageBinding } from '@compas-oscd/plugins/dist/editors/GooseSubscriberMessageBinding.js';
7+
import { default as GooseSubscriberDataBinding } from '@compas-oscd/plugins/dist/editors/GooseSubscriberDataBinding.js';
8+
import { default as SMVSubscriberMessageBinding } from '@compas-oscd/plugins/dist/editors/SMVSubscriberMessageBinding.js';
9+
import { default as SMVSubscriberDataBinding } from '@compas-oscd/plugins/dist/editors/SMVSubscriberDataBinding.js';
10+
import { default as Communication } from '@compas-oscd/plugins/dist/editors/Communication.js';
11+
import { default as Protocol104 } from '@compas-oscd/plugins/dist/editors/Protocol104.js';
12+
import { default as Templates } from '@compas-oscd/plugins/dist/editors/Templates.js';
13+
import { default as Cleanup } from '@compas-oscd/plugins/dist/editors/Cleanup.js';
14+
// validator plugins
15+
import { default as ValidateSchema } from '@compas-oscd/plugins/dist/validators/ValidateSchema.js';
16+
import { default as ValidateTemplates } from '@compas-oscd/plugins/dist/validators/ValidateTemplates.js';
17+
// menu plugins
18+
import { default as NewProject } from '@compas-oscd/plugins/dist/menu/NewProject.js';
19+
import { default as VirtualTemplateIED } from '@compas-oscd/plugins/dist/menu/VirtualTemplateIED.js';
20+
import { default as SubscriberInfo } from '@compas-oscd/plugins/dist/menu/SubscriberInfo.js';
21+
import { default as UpdateDescriptionABB } from '@compas-oscd/plugins/dist/menu/UpdateDescriptionABB.js';
22+
import { default as UpdateDescriptionSEL } from '@compas-oscd/plugins/dist/menu/UpdateDescriptionSEL.js';
23+
import { default as SclHistory } from '@compas-oscd/plugins/dist/menu/SclHistory.js';
24+
import { default as Help } from '@compas-oscd/plugins/dist/menu/Help.js';
25+
import { default as ExportCommunication } from '@compas-oscd/plugins/dist/menu/ExportCommunication.js';
26+
27+
export enum OscdPluginSrc {
28+
Substation = '/oscd-plugins/editors/Substation.js',
29+
// SingleLineDiagram = '/oscd-plugins/editors/SingleLineDiagram.js',
30+
GooseSubscriberMessageBinding = '/oscd-plugins/editors/GooseSubscriberMessageBinding.js',
31+
GooseSubscriberDataBinding = '/oscd-plugins/editors/GooseSubscriberDataBinding.js',
32+
SMVSubscriberMessageBinding = '/oscd-plugins/editors/SMVSubscriberMessageBinding.js',
33+
SMVSubscriberDataBinding = '/oscd-plugins/editors/SMVSubscriberDataBinding.js',
34+
Communication = '/oscd-plugins/editors/Communication.js',
35+
Protocol104 = '/oscd-plugins/editors/Protocol104.js',
36+
Templates = '/oscd-plugins/editors/Templates.js',
37+
Cleanup = '/oscd-plugins/editors/Cleanup.js',
38+
ValidateSchema = '/oscd-plugins/validators/ValidateSchema.js',
39+
ValidateTemplates = '/oscd-plugins/validators/ValidateTemplates.js',
40+
NewProject = '/oscd-plugins/menu/NewProject.js',
41+
VirtualTemplateIED = '/oscd-plugins/menu/VirtualTemplateIED.js',
42+
SubscriberInfo = '/oscd-plugins/menu/SubscriberInfo.js',
43+
UpdateDescriptionABB = '/oscd-plugins/menu/UpdateDescriptionABB.js',
44+
UpdateDescriptionSEL = '/oscd-plugins/menu/UpdateDescriptionSEL.js',
45+
SclHistory = '/oscd-plugins/menu/SclHistory.js',
46+
Help = '/oscd-plugins/menu/Help.js',
47+
ExportCommunication = '/oscd-plugins/menu/ExportCommunication.js'
48+
}
49+
50+
const plugins: { [key in OscdPluginSrc]: CustomElementConstructor } = {
51+
[OscdPluginSrc.Substation]: Substation,
52+
// [OscdPluginSrc.SingleLineDiagram]: SingleLineDiagram,
53+
[OscdPluginSrc.GooseSubscriberMessageBinding]: GooseSubscriberMessageBinding,
54+
[OscdPluginSrc.GooseSubscriberDataBinding]: GooseSubscriberDataBinding,
55+
[OscdPluginSrc.SMVSubscriberMessageBinding]: SMVSubscriberMessageBinding,
56+
[OscdPluginSrc.SMVSubscriberDataBinding]: SMVSubscriberDataBinding,
57+
[OscdPluginSrc.Communication]: Communication,
58+
[OscdPluginSrc.Protocol104]: Protocol104,
59+
[OscdPluginSrc.Templates]: Templates,
60+
[OscdPluginSrc.Cleanup]: Cleanup,
61+
[OscdPluginSrc.ValidateSchema]: ValidateSchema,
62+
[OscdPluginSrc.ValidateTemplates]: ValidateTemplates,
63+
[OscdPluginSrc.NewProject]: NewProject,
64+
[OscdPluginSrc.VirtualTemplateIED]: VirtualTemplateIED,
65+
[OscdPluginSrc.SubscriberInfo]: SubscriberInfo,
66+
[OscdPluginSrc.UpdateDescriptionABB]: UpdateDescriptionABB,
67+
[OscdPluginSrc.UpdateDescriptionSEL]: UpdateDescriptionSEL,
68+
[OscdPluginSrc.SclHistory]: SclHistory,
69+
[OscdPluginSrc.Help]: Help,
70+
[OscdPluginSrc.ExportCommunication]: ExportCommunication
71+
};
72+
73+
export function registerOscdPlugins() {
74+
for (const [src, pluginConstructor] of Object.entries(plugins)) {
75+
const tag = pluginTag(src);
76+
77+
customElements.define(tag, pluginConstructor);
78+
}
79+
}

vite.config.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,11 @@ export default defineConfig({
99
{ src: 'node_modules/@compas-oscd/plugins/**/*', dest: 'plugins', rename: { stripBase: 3 } }
1010
]
1111
})
12-
]
12+
],
13+
optimizeDeps: {
14+
exclude: ['@compas-oscd/plugins']
15+
},
16+
server: {
17+
port: 8080
18+
}
1319
})

0 commit comments

Comments
 (0)