@@ -17,6 +17,7 @@ import { ListItem } from '@material/mwc-list/mwc-list-item';
17
17
18
18
import './data-set-element-editor.js' ;
19
19
import '../../filtered-list.js' ;
20
+ import './sampled-value-control-element-editor.js' ;
20
21
import { FilteredList } from '../../filtered-list.js' ;
21
22
22
23
import { compareNames , identity , selector } from '../../foundation.js' ;
@@ -27,10 +28,27 @@ import { styles } from './foundation.js';
27
28
export class SampledValueControlEditor extends LitElement {
28
29
/** The document being edited as provided to plugins by [[`OpenSCD`]]. */
29
30
@property ( { attribute : false } )
30
- doc ! : XMLDocument ;
31
+ set doc ( newDoc : XMLDocument ) {
32
+ if ( this . _doc === newDoc ) return ;
31
33
34
+ this . selectedDataSet = undefined ;
35
+ this . selectedSampledValueControl = undefined ;
36
+ if ( this . selectionList && this . selectionList . selected )
37
+ ( this . selectionList . selected as ListItem ) . selected = false ;
38
+
39
+ this . _doc = newDoc ;
40
+
41
+ this . requestUpdate ( ) ;
42
+ }
43
+ get doc ( ) : XMLDocument {
44
+ return this . _doc ;
45
+ }
46
+ private _doc ! : XMLDocument ;
47
+
48
+ @state ( )
49
+ selectedSampledValueControl ?: Element ;
32
50
@state ( )
33
- selectedSampledValueControl ?: Element | null ;
51
+ selectedDataSet ?: Element | null ;
34
52
35
53
@query ( '.selectionlist' ) selectionList ! : FilteredList ;
36
54
@query ( 'mwc-button' ) selectSampledValueControlButton ! : Button ;
@@ -40,12 +58,15 @@ export class SampledValueControlEditor extends LitElement {
40
58
const smvControl = this . doc . querySelector (
41
59
selector ( 'SampledValueControl' , id )
42
60
) ;
61
+ if ( ! smvControl ) return ;
62
+
63
+ this . selectedSampledValueControl = smvControl ;
43
64
44
65
if ( smvControl ) {
45
- this . selectedSampledValueControl =
66
+ this . selectedDataSet =
46
67
smvControl . parentElement ?. querySelector (
47
68
`DataSet[name="${ smvControl . getAttribute ( 'datSet' ) } "]`
48
- ) ;
69
+ ) ?? null ;
49
70
( evt . target as FilteredList ) . classList . add ( 'hidden' ) ;
50
71
this . selectSampledValueControlButton . classList . remove ( 'hidden' ) ;
51
72
}
@@ -55,8 +76,12 @@ export class SampledValueControlEditor extends LitElement {
55
76
if ( this . selectedSampledValueControl !== undefined )
56
77
return html `<div class= "elementeditorcontainer" >
57
78
<data- set- element- edito r
58
- .element = ${ this . selectedSampledValueControl }
79
+ .element = ${ this . selectedDataSet ! }
59
80
> </ data- set- element- edito r>
81
+ <sampled- value-control- element- edito r
82
+ .doc = ${ this . doc }
83
+ .element = ${ this . selectedSampledValueControl }
84
+ > </ sampled- value-control- element- edito r>
60
85
</ div> ` ;
61
86
62
87
return html `` ;
@@ -126,8 +151,29 @@ export class SampledValueControlEditor extends LitElement {
126
151
static styles = css `
127
152
${ styles }
128
153
154
+ .elementeditorcontainer {
155
+ flex : 65% ;
156
+ margin : 4px 8px 4px 4px ;
157
+ background-color : var (--mdc-theme-surface );
158
+ overflow-y : scroll;
159
+ display : grid;
160
+ grid-gap : 12px ;
161
+ padding : 8px 12px 16px ;
162
+ grid-template-columns : repeat (3 , 1fr );
163
+ }
164
+
129
165
data-set-element-editor {
130
- flex : auto;
166
+ grid-column : 1 / 2 ;
167
+ }
168
+
169
+ sampled-value-control-element-editor {
170
+ grid-column : 2 / 4 ;
171
+ }
172
+
173
+ @media (max-width : 950px ) {
174
+ .elementeditorcontainer {
175
+ display : block;
176
+ }
131
177
}
132
178
` ;
133
179
}
0 commit comments