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,42 @@ 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 ">
93
+ < mwc-icon @click =${ ( ) => {
94
+ this . confirmRestoreCompas ( version ) ;
95
+ } } > restore</ mwc-icon >
96
+ </ span >
97
+ </ mwc-list-item > `
98
+ }
75
99
return html `< mwc-list-item tabindex ="0 "
76
- @click =${ ( ) => {
77
- this . confirmRestoreCompas ( version ) ;
78
- } } >
100
+ graphic ="control ">
79
101
${ name } (${ version } )
102
+ < span slot ="graphic " style ="width: 90px ">
103
+ < mwc-icon @click =${ ( ) => {
104
+ this . confirmRestoreCompas ( version ) ;
105
+ } } > restore</ mwc-icon >
106
+ < mwc-icon @click =${ ( ) => {
107
+ this . confirmDeleteVersionCompas ( version ) ;
108
+ } } > delete</ mwc-icon >
109
+ </ span >
80
110
</ mwc-list-item > `
81
111
} ) }
82
112
</ mwc-list >
@@ -123,8 +153,54 @@ function openScl(docName: string, docId: string, version: string) {
123
153
const type = getTypeFromDocName ( docName ) ;
124
154
fetchScl ( type , docId , version ) ;
125
155
156
+ const openScd = getOpenScdElement ( ) ;
157
+ openScd . dispatchEvent (
158
+ newLogEvent ( {
159
+ kind : 'info' ,
160
+ title : get ( 'compas.versions.restoreVersionSuccess' , { version : version } )
161
+ } ) ) ;
162
+
163
+ // Close the Restore Dialog.
164
+ openScd . dispatchEvent ( newWizardEvent ( ) ) ;
165
+
166
+ return [ ] ;
167
+ }
168
+ }
169
+
170
+ function deleteScl ( docName : string , docId : string ) {
171
+ return function ( ) {
172
+ const type = getTypeFromDocName ( docName ) ;
173
+ CompasSclDataService ( ) . deleteSclDocument ( type , docId ) ;
174
+
175
+ const openScd = getOpenScdElement ( ) ;
176
+ openScd . docId = '' ;
177
+ openScd . dispatchEvent (
178
+ newLogEvent ( {
179
+ kind : 'info' ,
180
+ title : get ( 'compas.versions.deleteSuccess' )
181
+ } ) ) ;
182
+
126
183
// Close the Restore Dialog.
127
- getOpenScdElement ( ) . dispatchEvent ( newWizardEvent ( ) ) ;
184
+ openScd . dispatchEvent ( newWizardEvent ( ) ) ;
185
+
186
+ return [ ] ;
187
+ }
188
+ }
189
+
190
+ function deleteSclVersion ( docName : string , docId : string , version : string ) {
191
+ return function ( ) {
192
+ const type = getTypeFromDocName ( docName ) ;
193
+ CompasSclDataService ( ) . deleteSclDocumentVersion ( type , docId , version ) ;
194
+
195
+ const openScd = getOpenScdElement ( ) ;
196
+ openScd . dispatchEvent (
197
+ newLogEvent ( {
198
+ kind : 'info' ,
199
+ title : get ( 'compas.versions.deleteVersionSuccess' , { version : version } )
200
+ } ) ) ;
201
+
202
+ // Close the Restore Dialog.
203
+ openScd . dispatchEvent ( newWizardEvent ( ) ) ;
128
204
129
205
return [ ] ;
130
206
}
@@ -133,14 +209,46 @@ function openScl(docName: string, docId: string, version: string) {
133
209
function confirmRestoreCompasWizard ( docName : string , docId : string , version : string ) : Wizard {
134
210
return [
135
211
{
136
- title : get ( 'compas.versions.confirmTitle ' ) ,
212
+ title : get ( 'compas.versions.confirmRestoreTitle ' ) ,
137
213
primary : {
138
214
icon : '' ,
139
215
label : get ( 'compas.versions.confirmButton' ) ,
140
216
action : openScl ( docName , docId , version ) ,
141
217
} ,
142
218
content : [
143
- html `< span > ${ translate ( 'compas.versions.confirm' ) } </ span > ` ,
219
+ html `< span > ${ translate ( 'compas.versions.confirmRestore' , { version : version } ) } </ span > ` ,
220
+ ] ,
221
+ } ,
222
+ ] ;
223
+ }
224
+
225
+ function confirmDeleteCompasWizard ( docName : string , docId : string ) : Wizard {
226
+ return [
227
+ {
228
+ title : get ( 'compas.versions.confirmDeleteTitle' ) ,
229
+ primary : {
230
+ icon : '' ,
231
+ label : get ( 'compas.versions.confirmButton' ) ,
232
+ action : deleteScl ( docName , docId ) ,
233
+ } ,
234
+ content : [
235
+ html `< span > ${ translate ( 'compas.versions.confirmDelete' ) } </ span > ` ,
236
+ ] ,
237
+ } ,
238
+ ] ;
239
+ }
240
+
241
+ function confirmDeleteVersionCompasWizard ( docName : string , docId : string , version : string ) : Wizard {
242
+ return [
243
+ {
244
+ title : get ( 'compas.versions.confirmDeleteVersionTitle' ) ,
245
+ primary : {
246
+ icon : '' ,
247
+ label : get ( 'compas.versions.confirmButton' ) ,
248
+ action : deleteSclVersion ( docName , docId , version ) ,
249
+ } ,
250
+ content : [
251
+ html `< span > ${ translate ( 'compas.versions.confirmDeleteVersion' , { version : version } ) } </ span > ` ,
144
252
] ,
145
253
} ,
146
254
] ;
0 commit comments