1
+ import { CheckListItem } from '@material/mwc-list/mwc-check-list-item' ;
1
2
import { html } from 'lit-element' ;
2
3
import { get , translate } from 'lit-translate' ;
3
4
@@ -6,40 +7,67 @@ import {
6
7
getValue ,
7
8
identity ,
8
9
newWizardEvent ,
10
+ selector ,
11
+ Update ,
9
12
Wizard ,
10
13
WizardAction ,
11
14
WizardActor ,
12
15
WizardInput ,
13
16
} from '../foundation.js' ;
14
17
import { wizards } from './wizard-library.js' ;
15
18
16
- export function updateDataSetAction ( element : Element ) : WizardActor {
17
- return ( inputs : WizardInput [ ] ) : WizardAction [ ] => {
19
+ function updateDataSetAction ( element : Element ) : WizardActor {
20
+ return ( inputs : WizardInput [ ] , wizard : Element ) : WizardAction [ ] => {
18
21
const name = inputs . find ( i => i . label === 'name' ) ! . value ! ;
19
22
const desc = getValue ( inputs . find ( i => i . label === 'desc' ) ! ) ;
20
-
21
23
const oldName = element . getAttribute ( 'name' ) ;
22
- if ( name === oldName && desc === element . getAttribute ( 'desc' ) ) return [ ] ;
23
24
24
- const newElement = cloneElement ( element , { name, desc } ) ;
25
+ const dataSetUpdateAction : Update [ ] = [ ] ;
26
+ if ( ! ( name === oldName && desc === element . getAttribute ( 'desc' ) ) ) {
27
+ const newElement = cloneElement ( element , { name, desc } ) ;
25
28
26
- const dataSetUpdateAction = [
27
- { old : { element } , new : { element : newElement } } ,
28
- ] ;
29
+ dataSetUpdateAction . push ( {
30
+ old : { element } ,
31
+ new : { element : newElement } ,
32
+ } ) ;
33
+ }
29
34
30
- const cbUpdateAction =
35
+ const controlBlockUpdateActions =
31
36
name !== oldName
32
37
? Array . from (
33
38
element . parentElement ?. querySelectorAll (
34
39
`ReportControlBock[datSet=${ oldName } ], GSEControl[datSet=${ oldName } ],SampledValueControl[datSet=${ oldName } ] `
35
40
) ?? [ ]
36
41
) . map ( cb => {
37
- const newCb = cloneElement ( element , { datSet : name } ) ;
42
+ const newCb = cloneElement ( cb , { datSet : name } ) ;
38
43
return { old : { element : cb } , new : { element : newCb } } ;
39
44
} )
40
45
: [ ] ;
41
46
42
- return dataSetUpdateAction . concat ( cbUpdateAction ) ;
47
+ const fCDARemoveActions = Array . from (
48
+ wizard . shadowRoot ! . querySelectorAll (
49
+ 'filtered-list > mwc-check-list-item:not([selected])'
50
+ )
51
+ )
52
+ . map ( listItem =>
53
+ element . querySelector ( selector ( 'FCDA' , ( < CheckListItem > listItem ) . value ) )
54
+ )
55
+ . filter ( fcda => fcda )
56
+ . map ( fcda => {
57
+ return {
58
+ old : {
59
+ parent : element ,
60
+ element : fcda ! ,
61
+ reference : fcda ! . nextSibling ,
62
+ } ,
63
+ } ;
64
+ } ) ;
65
+
66
+ return [
67
+ ...fCDARemoveActions ,
68
+ ...dataSetUpdateAction ,
69
+ ...controlBlockUpdateActions ,
70
+ ] ;
43
71
} ;
44
72
}
45
73
@@ -86,7 +114,7 @@ export function editDataSetWizard(element: Element): Wizard {
86
114
html `< filtered-list multi
87
115
> ${ Array . from ( element . querySelectorAll ( 'FCDA' ) ) . map (
88
116
fcda =>
89
- html `< mwc-check-list-item value ="${ identity ( fcda ) } "
117
+ html `< mwc-check-list-item selected value ="${ identity ( fcda ) } "
90
118
> ${ ( < string > identity ( fcda ) ) . split ( '>' ) [ 4 ] } </ mwc-check-list-item
91
119
> `
92
120
) } </ filtered-list
0 commit comments