1
1
import { css , html , LitElement , property , TemplateResult } from 'lit-element' ;
2
2
import { get , translate } from 'lit-translate' ;
3
- import { newWizardEvent , Wizard } from "../foundation.js" ;
3
+ import { newLogEvent , newWizardEvent , Wizard } from "../foundation.js" ;
4
4
5
5
import { CompasSclDataService , SDS_NAMESPACE } from "../compas-services/CompasSclDataService.js" ;
6
6
import { getTypeFromDocName , updateDocumentInOpenSCD } from "../compas/foundation.js" ;
@@ -36,6 +36,14 @@ export default class CompasVersionsPlugin extends LitElement {
36
36
this . dispatchEvent ( newWizardEvent ( confirmRestoreCompasWizard ( this . docName , this . docId , version ) ) )
37
37
}
38
38
39
+ confirmDeleteCompas ( ) : void {
40
+ this . dispatchEvent ( newWizardEvent ( confirmDeleteCompasWizard ( this . docName , this . docId ) ) )
41
+ }
42
+
43
+ confirmDeleteVersionCompas ( version : string ) : void {
44
+ this . dispatchEvent ( newWizardEvent ( confirmDeleteVersionCompasWizard ( this . docName , this . docId , version ) ) )
45
+ }
46
+
39
47
private getElementbyName ( parent : Element , namespace : string , tagName : string ) : Element | null {
40
48
const elements = parent . getElementsByTagNameNS ( namespace , tagName ) ;
41
49
if ( elements . length > 0 ) {
@@ -63,20 +71,39 @@ export default class CompasVersionsPlugin extends LitElement {
63
71
return html `
64
72
< div id ="containerCompasVersions ">
65
73
< section tabindex ="0 ">
66
- < h1 > ${ translate ( 'compas.versions.title' ) } </ h1 >
74
+ < h1 >
75
+ ${ translate ( 'compas.versions.title' ) }
76
+ < mwc-icon-button icon ="delete_forever "
77
+ @click =${ ( ) => {
78
+ this . confirmDeleteCompas ( ) ;
79
+ } } > </ mwc-icon-button >
80
+ </ h1 >
67
81
< mwc-list >
68
- ${ this . scls . map ( item => {
82
+ ${ this . scls . map ( ( item , index , items ) => {
69
83
let element = this . getElementbyName ( item , SDS_NAMESPACE , "Name" ) ;
70
84
if ( element === null ) {
71
85
element = this . getElementbyName ( item , SDS_NAMESPACE , "Id" ) ;
72
86
}
73
87
const name = element ! . textContent ?? '' ;
74
88
const version = this . getElementbyName ( item , SDS_NAMESPACE , "Version" ) ! . textContent ?? '' ;
89
+ if ( items . length - 1 === index ) {
90
+ return html `< mwc-list-item tabindex ="0 " graphic ="control ">
91
+ ${ name } (${ version } )
92
+ < span slot ="graphic " style ="width: 90px "> </ span >
93
+ </ mwc-list-item > `
94
+ }
75
95
return html `< mwc-list-item tabindex ="0 "
76
- @click =${ ( ) => {
77
- this . confirmRestoreCompas ( version ) ;
78
- } } >
96
+ hasMeta
97
+ graphic ="control ">
79
98
${ name } (${ version } )
99
+ < span slot ="graphic " style ="width: 90px ">
100
+ < mwc-icon @click =${ ( ) => {
101
+ this . confirmRestoreCompas ( version ) ;
102
+ } } > restore</ mwc-icon >
103
+ < mwc-icon @click =${ ( ) => {
104
+ this . confirmDeleteVersionCompas ( version ) ;
105
+ } } > delete</ mwc-icon >
106
+ </ span >
80
107
</ mwc-list-item > `
81
108
} ) }
82
109
</ mwc-list >
@@ -123,8 +150,54 @@ function openScl(docName: string, docId: string, version: string) {
123
150
const type = getTypeFromDocName ( docName ) ;
124
151
fetchScl ( type , docId , version ) ;
125
152
153
+ const openScd = getOpenScdElement ( ) ;
154
+ openScd . dispatchEvent (
155
+ newLogEvent ( {
156
+ kind : 'info' ,
157
+ title : get ( 'compas.versions.restoreVersionSuccess' , { version : version } )
158
+ } ) ) ;
159
+
160
+ // Close the Restore Dialog.
161
+ openScd . dispatchEvent ( newWizardEvent ( ) ) ;
162
+
163
+ return [ ] ;
164
+ }
165
+ }
166
+
167
+ function deleteScl ( docName : string , docId : string ) {
168
+ return function ( ) {
169
+ const type = getTypeFromDocName ( docName ) ;
170
+ CompasSclDataService ( ) . deleteSclDocument ( type , docId ) ;
171
+
172
+ const openScd = getOpenScdElement ( ) ;
173
+ openScd . docId = '' ;
174
+ openScd . dispatchEvent (
175
+ newLogEvent ( {
176
+ kind : 'info' ,
177
+ title : get ( 'compas.versions.deleteSuccess' )
178
+ } ) ) ;
179
+
126
180
// Close the Restore Dialog.
127
- getOpenScdElement ( ) . dispatchEvent ( newWizardEvent ( ) ) ;
181
+ openScd . dispatchEvent ( newWizardEvent ( ) ) ;
182
+
183
+ return [ ] ;
184
+ }
185
+ }
186
+
187
+ function deleteSclVersion ( docName : string , docId : string , version : string ) {
188
+ return function ( ) {
189
+ const type = getTypeFromDocName ( docName ) ;
190
+ CompasSclDataService ( ) . deleteSclDocumentVersion ( type , docId , version ) ;
191
+
192
+ const openScd = getOpenScdElement ( ) ;
193
+ openScd . dispatchEvent (
194
+ newLogEvent ( {
195
+ kind : 'info' ,
196
+ title : get ( 'compas.versions.deleteVersionSuccess' , { version : version } )
197
+ } ) ) ;
198
+
199
+ // Close the Restore Dialog.
200
+ openScd . dispatchEvent ( newWizardEvent ( ) ) ;
128
201
129
202
return [ ] ;
130
203
}
@@ -133,14 +206,46 @@ function openScl(docName: string, docId: string, version: string) {
133
206
function confirmRestoreCompasWizard ( docName : string , docId : string , version : string ) : Wizard {
134
207
return [
135
208
{
136
- title : get ( 'compas.versions.confirmTitle ' ) ,
209
+ title : get ( 'compas.versions.confirmRestoreTitle ' ) ,
137
210
primary : {
138
211
icon : '' ,
139
212
label : get ( 'compas.versions.confirmButton' ) ,
140
213
action : openScl ( docName , docId , version ) ,
141
214
} ,
142
215
content : [
143
- html `< span > ${ translate ( 'compas.versions.confirm' ) } </ span > ` ,
216
+ html `< span > ${ translate ( 'compas.versions.confirmRestore' , { version : version } ) } </ span > ` ,
217
+ ] ,
218
+ } ,
219
+ ] ;
220
+ }
221
+
222
+ function confirmDeleteCompasWizard ( docName : string , docId : string ) : Wizard {
223
+ return [
224
+ {
225
+ title : get ( 'compas.versions.confirmDeleteTitle' ) ,
226
+ primary : {
227
+ icon : '' ,
228
+ label : get ( 'compas.versions.confirmButton' ) ,
229
+ action : deleteScl ( docName , docId ) ,
230
+ } ,
231
+ content : [
232
+ html `< span > ${ translate ( 'compas.versions.confirmDelete' ) } </ span > ` ,
233
+ ] ,
234
+ } ,
235
+ ] ;
236
+ }
237
+
238
+ function confirmDeleteVersionCompasWizard ( docName : string , docId : string , version : string ) : Wizard {
239
+ return [
240
+ {
241
+ title : get ( 'compas.versions.confirmDeleteVersionTitle' ) ,
242
+ primary : {
243
+ icon : '' ,
244
+ label : get ( 'compas.versions.confirmButton' ) ,
245
+ action : deleteSclVersion ( docName , docId , version ) ,
246
+ } ,
247
+ content : [
248
+ html `< span > ${ translate ( 'compas.versions.confirmDeleteVersion' , { version : version } ) } </ span > ` ,
144
249
] ,
145
250
} ,
146
251
] ;
0 commit comments