46
46
<v-checkbox
47
47
class =" small-checkbox"
48
48
color =" success"
49
- label =" Change all"
49
+ label =" Select all"
50
50
v-model =" changeAllCheckbox"
51
51
@change =" changeAll"
52
52
>
@@ -159,7 +159,6 @@ export default {
159
159
reactive: false ,
160
160
range: 7 ,
161
161
changeAllCheckbox: true ,
162
- selectedNodes: 0 ,
163
162
allFlag: false ,
164
163
nodeFlag: false
165
164
}
@@ -172,6 +171,12 @@ export default {
172
171
watch: {
173
172
parsedNodes () {
174
173
this .fillTable ()
174
+ for (var nodeIndex in this .parsedNodes ) {
175
+ var nodeName = this .parsedNodes [nodeIndex].nodeName
176
+ this .checkIfAllResourcesSelected (nodeName)
177
+ }
178
+ this .checkIfAllNodesSelected ()
179
+ this .loadResources ()
175
180
}
176
181
},
177
182
@@ -189,15 +194,20 @@ export default {
189
194
changeWholeNode : function (nodeName ) {
190
195
this .nodeFlag = true
191
196
for (var resourceId in this .tableContent .nodes [nodeName].resources ) {
192
- var resourceName = this .tableContent .nodes [nodeName].resources [resourceId]
193
- var resource = this .tableContent .resources [resourceName ]
197
+ var resourceUUID = this .tableContent .nodes [nodeName].resources [resourceId]
198
+ var resource = this .tableContent .resources [resourceUUID ]
194
199
resource .selected = this .tableContent .nodes [nodeName].selected
200
+ if (this .tableContent .nodes [nodeName].selected ) {
201
+ this .selectedResources [nodeName].add (resource .resourceUUID )
202
+ } else {
203
+ this .selectedResources [nodeName].delete (resource .resourceUUID )
204
+ }
195
205
}
196
206
if (! this .allFlag ) {
197
207
if (this .tableContent .nodes [nodeName].selected ) {
198
- this .selectedNodes += 1
208
+ this .selectedNodes . add (nodeName)
199
209
} else {
200
- this .selectedNodes -= 1
210
+ this .selectedNodes . delete (nodeName)
201
211
}
202
212
this .checkIfAllNodesSelected ()
203
213
this .loadResources ()
@@ -206,38 +216,74 @@ export default {
206
216
},
207
217
208
218
checkIfAllNodesSelected : function () {
209
- if (this .selectedNodes === Object .keys (this .tableContent .nodes ).length ) {
219
+ if (this .selectedNodes . size === Object .keys (this .tableContent .nodes ).length ) {
210
220
this .changeAllCheckbox = true
211
221
} else {
212
222
this .changeAllCheckbox = false
213
223
}
214
224
},
215
225
216
226
changeResource : function (nodeName , resourceUUID ) {
217
- if (! this .allFlag && ! this .nodeFlag ) {
218
- if (this .tableContent .resources [resourceUUID].selected ) {
219
- this .tableContent .nodes [nodeName].selectedResources += 1
220
- } else {
221
- this .tableContent .nodes [nodeName].selectedResources -= 1
222
- }
223
- this .checkIfAllResourcesSelected (nodeName)
224
- this .checkIfAllNodesSelected ()
225
- this .forceRerenderTables ()
226
- this .loadResources ()
227
+ if (this .allFlag || this .nodeFlag ) {
228
+ return
227
229
}
230
+
231
+ if (this .tableContent .resources [resourceUUID].selected ) {
232
+ this .selectedResources [nodeName].add (resourceUUID)
233
+ } else {
234
+ this .selectedResources [nodeName].delete (resourceUUID)
235
+ }
236
+
237
+ this .checkIfAllResourcesSelected (nodeName)
238
+ this .checkIfAllNodesSelected ()
239
+ this .forceRerenderTables ()
240
+ this .loadResources ()
228
241
},
229
242
230
243
checkIfAllResourcesSelected : function (nodeName ) {
231
- if (this .tableContent . nodes [nodeName].selectedResources === Object .keys (this .tableContent .nodes [nodeName].resources ).length ) {
244
+ if (this .selectedResources [nodeName].size === Object .keys (this .tableContent .nodes [nodeName].resources ).length ) {
232
245
this .tableContent .nodes [nodeName].selected = true
233
- this .selectedNodes += 1
246
+ this .selectedNodes . add (nodeName)
234
247
} else {
235
248
this .tableContent .nodes [nodeName].selected = false
236
- this .selectedNodes -= 1
249
+ this .selectedNodes .delete (nodeName)
250
+ }
251
+ },
252
+
253
+ loadOrInitSelected : function () {
254
+ this .selectedNodes = Set .from (JSON .parse (window .localStorage .getItem (' selectedNodes' )))
255
+ this .selectedResources = JSON .parse (window .localStorage .getItem (' selectedResources' ))
256
+
257
+ if (this .selectedNodes === null || this .selectedResources === null ) {
258
+ this .selectedNodes = new Set ()
259
+ this .selectedResources = {}
260
+ for (var nodeIndex in this .parsedNodes ) {
261
+ var node = this .parsedNodes [nodeIndex]
262
+ var nodeName = node .nodeName
263
+ this .selectedNodes .add (nodeName)
264
+
265
+ this .selectedResources [nodeName] = new Set ()
266
+ for (var resourceTypeIndex in node .resourceTypes ) {
267
+ var resourceType = node .resourceTypes [resourceTypeIndex]
268
+ for (var resourceIndex in resourceType .resources ) {
269
+ var resourceUUID = resourceType .resources [resourceIndex].resourceUUID
270
+ this .selectedResources [nodeName].add (resourceUUID)
271
+ }
272
+ }
273
+ }
237
274
}
275
+ for (var entry in this .selectedResources ) {
276
+ this .selectedResources [entry] = Set .from (this .selectedResources [entry])
277
+ }
278
+ },
279
+
280
+ storeSelected : function () {
281
+ window .localStorage .setItem (' selectedNodes' , JSON .stringify (this .selectedNodes ))
282
+ window .localStorage .setItem (' selectedResources' , JSON .stringify (this .selectedResources ))
238
283
},
239
284
240
285
loadResources : function () {
286
+ this .storeSelected ()
241
287
this .$emit (' loadResources' , this .tableContent .resources )
242
288
},
243
289
@@ -265,42 +311,45 @@ export default {
265
311
fillTable : function () {
266
312
this .resourceIds = []
267
313
this .tableContent .nodes = {}
268
- this .tableContent .resources = []
314
+ this .tableContent .resources = {}
315
+
269
316
for (var nodeIndex in this .parsedNodes ) {
270
317
var node = this .parsedNodes [nodeIndex]
318
+ var nodeName = node .nodeName
271
319
var nodeSlots = []
272
320
for (var i = 0 ; i < 48 * this .range ; i++ ) {
273
321
nodeSlots .push ({ value: ' ' , id: ' slot ' + i, reserved: false , userReservation: false })
274
322
}
275
- this .tableContent .nodes [node . nodeName ] = {
276
- nodeName: node . nodeName ,
323
+ this .tableContent .nodes [nodeName] = {
324
+ nodeName: nodeName,
277
325
hidden: true ,
278
326
resources: [],
279
- selected: true ,
280
- selectedResources: 0 ,
327
+ selected: this .selectedNodes .has (nodeName),
281
328
slots: nodeSlots
282
329
}
330
+
283
331
for (var resourceTypeIndex in node .resourceTypes ) {
284
332
var resourceType = node .resourceTypes [resourceTypeIndex]
285
333
for (var resourceIndex in resourceType .resources ) {
286
334
var resource = resourceType .resources [resourceIndex]
287
- resource .name = resource .nodeName + ' GPU' + resourceIndex
288
- resource[' selected' ] = true
289
- this .tableContent .nodes [node .nodeName ].selectedResources += 1
335
+ resource .name = resource .nodeName + ' ' + resourceType .name + resourceIndex
336
+ if (resource .nodeName in this .selectedResources ) {
337
+ resource[' selected' ] = this .selectedResources [resource .nodeName ].has (resource .resourceUUID )
338
+ } else {
339
+ resource[' selected' ] = ' false'
340
+ }
290
341
this .resourcesIds .push (resource .resourceUUID )
291
342
var slots = []
292
343
for (i = 0 ; i < 48 * this .range ; i++ ) {
293
344
slots .push ({ value: ' ' , id: ' slot ' + i, reserved: false , userReservation: false })
294
345
}
295
346
resource[' slots' ] = slots
296
- this .tableContent .nodes [node . nodeName ].resources .push (resource .resourceUUID )
347
+ this .tableContent .nodes [nodeName].resources .push (resource .resourceUUID )
297
348
this .tableContent .resources [resource .resourceUUID ] = resource
298
349
}
299
350
}
300
- this .tableContent . nodes [ node . nodeName ]. selectedResources = Object . keys ( this . tableContent . nodes [ node . nodeName ]. resources ). length
351
+ this .selectedNodes . add ( nodeName)
301
352
}
302
- this .selectedNodes = Object .keys (this .tableContent .nodes ).length
303
- this .getReservations ()
304
353
},
305
354
306
355
getReservations : function () {
@@ -400,7 +449,7 @@ export default {
400
449
header: header,
401
450
hours: hours
402
451
}
403
- this .fillTable ()
452
+ this .loadOrInitSelected ()
404
453
}
405
454
}
406
455
</script >
0 commit comments