3
3
try { angular . module ( "kubernetesUI" ) } catch ( e ) { angular . module ( "kubernetesUI" , [ ] ) }
4
4
5
5
angular . module ( 'kubernetesUI' )
6
- . factory ( 'LabelFilter' , [ function ( ) {
6
+ . factory ( 'LabelFilter' , function ( $location ) {
7
7
function LabelFilter ( ) {
8
8
this . _existingLabels = { } ;
9
9
this . _labelSelector = new LabelSelector ( null , true ) ;
@@ -34,6 +34,42 @@ angular.module('kubernetesUI')
34
34
}
35
35
} ;
36
36
37
+ LabelFilter . prototype . persistFilterState = function ( persist ) {
38
+ this . _shouldPersistState = ! ! persist ;
39
+ } ;
40
+
41
+ LabelFilter . prototype . _persistState = function ( ) {
42
+ if ( ! this . _shouldPersistState ) {
43
+ return ;
44
+ }
45
+ if ( this . _labelSelector . isEmpty ( ) ) {
46
+ var search = $location . search ( ) ;
47
+ search . labelFilter = null ;
48
+ $location . replace ( ) . search ( search ) ;
49
+ }
50
+ else {
51
+ var search = $location . search ( ) ;
52
+ search . labelFilter = this . _labelSelector . exportJSON ( ) ;
53
+ $location . replace ( ) . search ( search ) ;
54
+ }
55
+ } ;
56
+
57
+ LabelFilter . prototype . readPersistedState = function ( ) {
58
+ var labelFilterStr = $location . search ( ) . labelFilter ;
59
+ if ( labelFilterStr ) {
60
+ try {
61
+ this . _labelSelector = new LabelSelector ( JSON . parse ( labelFilterStr ) , true ) ;
62
+ }
63
+ catch ( e ) {
64
+ // wasn't valid JSON so don't use the data
65
+ this . _labelSelector = new LabelSelector ( { } , true ) ;
66
+ }
67
+ }
68
+ else {
69
+ this . _labelSelector = new LabelSelector ( { } , true ) ;
70
+ }
71
+ } ;
72
+
37
73
LabelFilter . prototype . _extractLabelsFromItem = function ( item , map ) {
38
74
var labels = item . metadata ? item . metadata . labels : { } ;
39
75
var self = this ;
@@ -71,6 +107,8 @@ angular.module('kubernetesUI')
71
107
}
72
108
}
73
109
110
+ this . _persistState ( ) ;
111
+
74
112
if ( ! dontFireCallbacks ) {
75
113
this . _onActiveFiltersChangedCallbacks . fire ( this . _labelSelector ) ;
76
114
}
@@ -121,11 +159,11 @@ angular.module('kubernetesUI')
121
159
$ ( '<span>' )
122
160
. text ( opts . addButtonText || "Add Filter" )
123
161
) ;
124
-
162
+
125
163
this . _labelFilterActiveFiltersElement = $ ( '<span>' )
126
164
. addClass ( "label-filter-active-filters" )
127
165
. appendTo ( activeFiltersElement ) ;
128
-
166
+
129
167
// Render active filters area
130
168
this . _labelFilterActiveElement = $ ( '<span>' )
131
169
. addClass ( "label-filter-clear" )
@@ -347,6 +385,7 @@ angular.module('kubernetesUI')
347
385
348
386
LabelFilter . prototype . _addActiveFilter = function ( key , operator , values ) {
349
387
var filter = this . _labelSelector . addConjunct ( key , operator , values ) ;
388
+ this . _persistState ( ) ;
350
389
this . _onActiveFiltersChangedCallbacks . fire ( this . _labelSelector ) ;
351
390
this . _renderActiveFilter ( filter ) ;
352
391
} ;
@@ -378,11 +417,13 @@ angular.module('kubernetesUI')
378
417
}
379
418
380
419
this . _labelSelector . removeConjunct ( filter ) ;
420
+ this . _persistState ( ) ;
381
421
this . _onActiveFiltersChangedCallbacks . fire ( this . _labelSelector ) ;
382
422
} ;
383
423
384
424
LabelFilter . prototype . _clearActiveFilters = function ( ) {
385
425
this . _labelSelector . clearConjuncts ( ) ;
426
+ this . _persistState ( ) ;
386
427
this . _onActiveFiltersChangedCallbacks . fire ( this . _labelSelector ) ;
387
428
} ;
388
429
@@ -406,4 +447,4 @@ angular.module('kubernetesUI')
406
447
} ;
407
448
408
449
return new LabelFilter ( ) ;
409
- } ] ) ;
450
+ } ) ;
0 commit comments