@@ -27,21 +27,26 @@ import { wizards } from '../../../wizards/wizard-library.js';
27
27
28
28
import { styles } from '../foundation.js' ;
29
29
30
- import { getFcdaTitleValue , newFcdaSelectEvent } from './foundation.js' ;
30
+ import {
31
+ getFcdaTitleValue ,
32
+ newFcdaSelectEvent ,
33
+ } from '../smv-laterbinding/foundation.js' ;
31
34
32
35
/**
33
- * A sub element for showing all Sampled Value Controls.
34
- * A Sample Value Control can be edited using the standard wizard.
36
+ * A sub element for showing all Goose/ Sampled Value Controls.
37
+ * A control can be edited using the standard wizard.
35
38
* And when selecting a FCDA Element a custom event is fired, so other list can be updated.
36
39
*/
37
- @customElement ( 'svc -later-binding-list' )
38
- export class SVCLaterBindingList extends LitElement {
40
+ @customElement ( 'fcda -later-binding-list' )
41
+ export class FCDALaterBindingList extends LitElement {
39
42
@property ( { attribute : false } )
40
43
doc ! : XMLDocument ;
44
+ @property ( )
45
+ controlTag ! : 'SampledValueControl' | 'GSEControl' ;
41
46
42
47
// The selected Elements when a FCDA Line is clicked.
43
48
@state ( )
44
- selectedSvcElement : Element | undefined ;
49
+ selectedControlElement : Element | undefined ;
45
50
@state ( )
46
51
selectedFcdaElement : Element | undefined ;
47
52
@@ -52,41 +57,43 @@ export class SVCLaterBindingList extends LitElement {
52
57
parent . addEventListener ( 'open-doc' , this . resetSelection ) ;
53
58
}
54
59
55
- private getSvcElements ( ) : Element [ ] {
60
+ private getControlElements ( ) : Element [ ] {
56
61
if ( this . doc ) {
57
62
return Array . from (
58
- this . doc . querySelectorAll ( ' LN0 > SampledValueControl' )
63
+ this . doc . querySelectorAll ( ` LN0 > ${ this . controlTag } ` )
59
64
) . sort ( ( a , b ) => compareNames ( `${ identity ( a ) } ` , `${ identity ( b ) } ` ) ) ;
60
65
}
61
66
return [ ] ;
62
67
}
63
68
64
- private getFcdaElements ( svcElement : Element ) : Element [ ] {
65
- const lnElement = svcElement . parentElement ;
69
+ private getFcdaElements ( controlElement : Element ) : Element [ ] {
70
+ const lnElement = controlElement . parentElement ;
66
71
if ( lnElement ) {
67
72
return Array . from (
68
73
lnElement . querySelectorAll (
69
- `:scope > DataSet[name=${ svcElement . getAttribute ( 'datSet' ) } ] > FCDA`
74
+ `:scope > DataSet[name=${ controlElement . getAttribute (
75
+ 'datSet'
76
+ ) } ] > FCDA`
70
77
)
71
78
) . sort ( ( a , b ) => compareNames ( `${ identity ( a ) } ` , `${ identity ( b ) } ` ) ) ;
72
79
}
73
80
return [ ] ;
74
81
}
75
82
76
- private openEditWizard ( svcElement : Element ) : void {
77
- const wizard = wizards [ 'SampledValueControl' ] . edit ( svcElement ) ;
83
+ private openEditWizard ( controlElement : Element ) : void {
84
+ const wizard = wizards [ this . controlTag ] . edit ( controlElement ) ;
78
85
if ( wizard ) this . dispatchEvent ( newWizardEvent ( wizard ) ) ;
79
86
}
80
87
81
88
private resetSelection ( ) : void {
82
- this . selectedSvcElement = undefined ;
89
+ this . selectedControlElement = undefined ;
83
90
this . selectedFcdaElement = undefined ;
84
91
}
85
92
86
- private onFcdaSelect ( svcElement : Element , fcdaElement : Element ) {
93
+ private onFcdaSelect ( controlElement : Element , fcdaElement : Element ) {
87
94
this . resetSelection ( ) ;
88
95
89
- this . selectedSvcElement = svcElement ;
96
+ this . selectedControlElement = controlElement ;
90
97
this . selectedFcdaElement = fcdaElement ;
91
98
}
92
99
@@ -96,22 +103,25 @@ export class SVCLaterBindingList extends LitElement {
96
103
// When the document is updated, we will fire the event again.
97
104
if (
98
105
_changedProperties . has ( 'doc' ) ||
99
- _changedProperties . has ( 'selectedSvcElement ' ) ||
106
+ _changedProperties . has ( 'selectedControlElement ' ) ||
100
107
_changedProperties . has ( 'selectedFcdaElement' )
101
108
) {
102
109
this . dispatchEvent (
103
- newFcdaSelectEvent ( this . selectedSvcElement , this . selectedFcdaElement )
110
+ newFcdaSelectEvent (
111
+ this . selectedControlElement ,
112
+ this . selectedFcdaElement
113
+ )
104
114
) ;
105
115
}
106
116
}
107
117
108
- renderFCDA ( svcElement : Element , fcdaElement : Element ) : TemplateResult {
118
+ renderFCDA ( controlElement : Element , fcdaElement : Element ) : TemplateResult {
109
119
return html `<mwc- lis t- item
110
120
graphic= "large"
111
121
twoline
112
122
class = "subitem"
113
- @click = ${ ( ) => this . onFcdaSelect ( svcElement , fcdaElement ) }
114
- value= "${ identity ( svcElement ) } ${ identity ( fcdaElement ) } "
123
+ @click = ${ ( ) => this . onFcdaSelect ( controlElement , fcdaElement ) }
124
+ value= "${ identity ( controlElement ) } ${ identity ( fcdaElement ) } "
115
125
>
116
126
<span> ${ getFcdaTitleValue ( fcdaElement ) } </ span>
117
127
<span slot= "secondary" >
@@ -128,49 +138,53 @@ export class SVCLaterBindingList extends LitElement {
128
138
}
129
139
130
140
render ( ) : TemplateResult {
131
- const svcElements = this . getSvcElements ( ) ;
141
+ const controlElements = this . getControlElements ( ) ;
132
142
return html ` <section tabindex= "0" >
133
- ${ svcElements . length > 0
143
+ ${ controlElements . length > 0
134
144
? html `<h1>
135
- ${ translate ( 'subscription.smvLaterBinding.svcList.title' ) }
145
+ ${ translate (
146
+ `subscription.laterBinding.${ this . controlTag } .controlBlockList.title`
147
+ ) }
136
148
</ h1>
137
149
<filtered- lis t>
138
- ${ svcElements . map ( svcElement => {
139
- const fcdaElements = this . getFcdaElements ( svcElement ) ;
150
+ ${ controlElements . map ( controlElement => {
151
+ const fcdaElements = this . getFcdaElements ( controlElement ) ;
140
152
return html `
141
153
<mwc- lis t- item
142
154
noninteractive
143
155
graphic= "icon"
144
156
twoline
145
157
hasMeta
146
- value = "${ identity ( svcElement ) } ${ fcdaElements
158
+ value = "${ identity ( controlElement ) } ${ fcdaElements
147
159
. map ( fcdaElement => identity ( fcdaElement ) as string )
148
160
. join ( ' ' ) } "
149
161
>
150
162
<mwc- icon- butto n
151
163
slot= "meta"
152
164
icon = "edit"
153
165
class= "interactive"
154
- @click = ${ ( ) => this . openEditWizard ( svcElement ) }
166
+ @click = ${ ( ) => this . openEditWizard ( controlElement ) }
155
167
> </ mwc- icon- butto n>
156
168
<span
157
- > ${ getNameAttribute ( svcElement ) }
158
- ${ getDescriptionAttribute ( svcElement )
159
- ? html `${ getDescriptionAttribute ( svcElement ) } `
169
+ > ${ getNameAttribute ( controlElement ) }
170
+ ${ getDescriptionAttribute ( controlElement )
171
+ ? html `${ getDescriptionAttribute ( controlElement ) } `
160
172
: nothing } </ span
161
173
>
162
- <span slot= "secondary" > ${ identity ( svcElement ) } </ span>
174
+ <span slot= "secondary" > ${ identity ( controlElement ) } </ span>
163
175
<mwc- icon slot= "graphic" > ${ smvIcon } </ mwc- icon>
164
176
</ mwc- lis t- item>
165
177
<li divider role= "separator" > </ li>
166
178
${ fcdaElements . map ( fcdaElement =>
167
- this . renderFCDA ( svcElement , fcdaElement )
179
+ this . renderFCDA ( controlElement , fcdaElement )
168
180
) }
169
181
` ;
170
182
} ) }
171
183
</ filtered- lis t> `
172
184
: html `<h1>
173
- ${ translate ( 'subscription.smvLaterBinding.svcList.noSvcFound' ) }
185
+ ${ translate (
186
+ `subscription.laterBinding.${ this . controlTag } .controlBlockList.noControlBlockFound`
187
+ ) }
174
188
</ h1> ` }
175
189
</ section> ` ;
176
190
}
0 commit comments