6
6
Create ,
7
7
createElement ,
8
8
EditorAction ,
9
+ getChildElementsByTagName ,
9
10
getReference ,
10
11
getValue ,
11
12
identity ,
@@ -378,29 +379,25 @@ function startLNodeTypeCreate(
378
379
379
380
const desc = getValue ( inputs . find ( i => i . label === 'desc' ) ! ) ;
380
381
381
- const lnClass = ( < Select > inputs . find ( i => i . label === 'lnClass' ) ) ?. selected
382
+ const value = ( < Select > inputs . find ( i => i . label === 'lnClass' ) ) ?. selected
382
383
?. value ;
383
- const templateLNodeType = templates . querySelector (
384
- `LNodeType[lnClass="${ lnClass } "]`
385
- ) ;
386
-
387
- const autoimport =
388
- wizard . shadowRoot ?. querySelector < Switch > ( '#autoimport' ) ?. checked ;
384
+ const templateLNodeType = value
385
+ ? templates . querySelector ( selector ( 'LNodeType' , value ) )
386
+ : null ;
389
387
390
- const newLNodeType =
391
- templateLNodeType && autoimport
392
- ? < Element > templateLNodeType ! . cloneNode ( true )
393
- : createElement ( parent . ownerDocument , 'LNodeType' , {
394
- lnClass : lnClass ?? '' ,
395
- } ) ;
388
+ const newLNodeType = templateLNodeType
389
+ ? < Element > templateLNodeType ! . cloneNode ( true )
390
+ : createElement ( parent . ownerDocument , 'LNodeType' , {
391
+ lnClass : value ?? '' ,
392
+ } ) ;
396
393
397
394
newLNodeType . setAttribute ( 'id' , id ) ;
398
395
if ( desc ) newLNodeType . setAttribute ( 'desc' , desc ) ;
399
396
400
- if ( autoimport && templateLNodeType )
397
+ if ( templateLNodeType )
401
398
return addPredefinedLNodeType ( parent , newLNodeType , templateLNodeType ) ;
402
399
403
- const allDo = getAllDataObjects ( nsd74 , lnClass ! ) ;
400
+ const allDo = getAllDataObjects ( nsd74 , value ! ) ;
404
401
wizard . dispatchEvent (
405
402
newWizardEvent ( createLNodeTypeHelperWizard ( parent , newLNodeType , allDo ) )
406
403
) ;
@@ -411,54 +408,25 @@ function startLNodeTypeCreate(
411
408
}
412
409
413
410
function onLnClassChange ( e : Event , templates : XMLDocument ) : void {
414
- const lnClass = ( < Select > e . target ) . selected ?. value ;
415
- const autoimport = ( < Select > e . target ) . parentElement ! . querySelector < Switch > (
416
- '#autoimport'
417
- ) ! ;
411
+ const identity = ( < Select > e . target ) . selected ?. value ;
412
+ const lnodetype = identity
413
+ ? templates . querySelector ( selector ( 'LNodeType' , identity ) )
414
+ : null ;
418
415
419
416
const primaryAction =
420
417
( < Element > e . target )
421
418
?. closest ( 'mwc-dialog' )
422
419
?. querySelector ( 'mwc-button[slot="primaryAction"]' ) ?? null ;
423
420
424
- autoimport . parentElement ! . removeAttribute ( 'style' ) ;
425
-
426
- if ( templates . querySelector ( `LNodeType[lnClass="${ lnClass } "]` ) ) {
427
- autoimport . checked = true ;
428
- autoimport . disabled = false ;
429
- autoimport . parentElement ! . setAttribute (
430
- 'label' ,
431
- get ( 'lnodetype.autoimport' )
432
- ) ;
421
+ if ( lnodetype ) {
433
422
primaryAction ?. setAttribute ( 'label' , get ( 'save' ) ) ;
434
423
primaryAction ?. setAttribute ( 'icon' , 'save' ) ;
435
424
} else {
436
- autoimport . checked = false ;
437
- autoimport . disabled = true ;
438
- autoimport . parentElement ! . setAttribute (
439
- 'label' ,
440
- get ( 'lnodetype.missinglnclass' )
441
- ) ;
442
425
primaryAction ?. setAttribute ( 'label' , get ( 'next' ) + '...' ) ;
443
426
primaryAction ?. setAttribute ( 'icon' , '' ) ;
444
427
}
445
428
}
446
429
447
- function toggleAutoimport ( e : Event ) : void {
448
- const autoimport = < Switch > e . target ;
449
- const primaryAction =
450
- ( < Element > e . target )
451
- ?. closest ( 'mwc-dialog' )
452
- ?. querySelector ( 'mwc-button[slot="primaryAction"]' ) ?? null ;
453
-
454
- autoimport . checked
455
- ? primaryAction ?. setAttribute ( 'label' , get ( 'save' ) )
456
- : primaryAction ?. setAttribute ( 'label' , get ( 'next' ) + '...' ) ;
457
- autoimport . checked
458
- ? primaryAction ?. setAttribute ( 'icon' , 'save' )
459
- : primaryAction ?. setAttribute ( 'icon' , '' ) ;
460
- }
461
-
462
430
export function createLNodeTypeWizard (
463
431
parent : Element ,
464
432
templates : Document ,
@@ -484,6 +452,33 @@ export function createLNodeTypeWizard(
484
452
dialogInitialFocus
485
453
@selected =${ ( e : Event ) => onLnClassChange ( e , templates ) }
486
454
>
455
+ < mwc-list-item noninteractive
456
+ > Pre-defined lnClasses from templates</ mwc-list-item
457
+ >
458
+ < li divider role ="separator "> </ li >
459
+ ${ Array . from ( templates . querySelectorAll ( 'LNodeType' ) ) . map (
460
+ lnodetpye => {
461
+ const lnClass = lnodetpye . getAttribute ( 'lnClass' ) ?? '' ;
462
+ const desc = lnodetpye . getAttribute ( 'desc' ) ?? '' ;
463
+
464
+ return html `< mwc-list-item
465
+ twoline
466
+ style ="min-width:200px "
467
+ graphic ="icon "
468
+ hasMeta
469
+ value ="${ identity ( lnodetpye ) } "
470
+ > < span > ${ lnClass } </ span >
471
+ < span slot ="secondary "> ${ desc } </ span >
472
+ < span slot ="meta "
473
+ > ${ getChildElementsByTagName ( lnodetpye , 'DO' ) . length } </ span
474
+ >
475
+ </ mwc-list-item > ` ;
476
+ }
477
+ ) }
478
+ < mwc-list-item noninteractive
479
+ > Empty lnClasses from IEC 61850-7-4</ mwc-list-item
480
+ >
481
+ < li divider role ="separator "> </ li >
487
482
${ Array . from ( nsd74 . querySelectorAll ( 'LNClasses > LNClass' ) ) . map (
488
483
lnClass => {
489
484
const className = lnClass . getAttribute ( 'name' ) ?? '' ;
@@ -500,13 +495,6 @@ export function createLNodeTypeWizard(
500
495
}
501
496
) }
502
497
</ mwc-select > ` ,
503
- html `< mwc-formfield style ="display:none "
504
- > < mwc-switch
505
- id ="autoimport "
506
- @change =${ ( e : Event ) => toggleAutoimport ( e ) }
507
- > </ mwc-switch
508
- > < mwc-formfield > </ mwc-formfield
509
- > </ mwc-formfield > ` ,
510
498
html `< wizard-textfield
511
499
label ="id "
512
500
helper ="${ translate ( 'scl.id' ) } "
0 commit comments