1
1
$ ( document ) . ready ( function ( ) {
2
+
3
+ keepWidgetOrdered ( ) ;
2
4
// hide localstored hidden widgets
3
5
keepWidgetHidden ( ) ;
4
6
@@ -70,14 +72,23 @@ function pulseElement(element, times, interval) {
70
72
*
71
73
*/
72
74
73
- $ ( ".row " ) . sortable ( {
74
- connectWith : ".row " ,
75
+ $ ( "#widgets " ) . sortable ( {
76
+ connectWith : "#widgets " ,
75
77
handle : ".widget-header" ,
76
78
cancel : "#filter-ps" ,
77
79
cursor : "move" ,
78
80
opacity : 0.7 ,
79
81
scrollSensitivity :10 ,
80
- tolerance : 'pointer'
82
+ tolerance : 'pointer' ,
83
+ stop : function ( event , ui ) {
84
+ // save widget order in localstorage
85
+ var newOrder = new Array ( ) ;
86
+ $ ( '.widget' ) . each ( function ( ) {
87
+ newOrder . push ( $ ( this ) . attr ( "id" ) ) ;
88
+ } ) ;
89
+ console . log ( newOrder ) ;
90
+ localStorage . setItem ( 'positions' , JSON . stringify ( newOrder ) ) ;
91
+ }
81
92
} ) ;
82
93
83
94
/**
@@ -114,8 +125,14 @@ $('.open-widget').live('click',function(){
114
125
// decrement closed-widget-count
115
126
closedWidgetCount . text ( Number ( closedWidgetCount . text ( ) ) - 1 ) ;
116
127
117
- // remove widget from localstorage
118
- window . localStorage . removeItem ( widgetIdentifier ) ;
128
+ // remove widget from localstorage
129
+ var localData = JSON . parse ( window . localStorage . getItem ( 'hidden' ) ) ;
130
+ for ( var i = localData . length ; i -- ; ) {
131
+ if ( localData [ i ] == widgetIdentifier ) {
132
+ localData . splice ( i , 1 ) ;
133
+ }
134
+ }
135
+ localStorage . setItem ( 'hidden' , JSON . stringify ( localData ) ) ;
119
136
} ) ;
120
137
121
138
@@ -133,12 +150,41 @@ function hideWidget(widget, speed){
133
150
// add to hidden list
134
151
closedWidgets . append ( '<li><a class="open-widget" data-id="' + widgetIdentifier + '"><i class="icon-plus-sign"></i> ' + widgetName + '</a></li>' ) ;
135
152
136
- // add widget to localstorage
137
- window . localStorage . setItem ( widgetIdentifier , null ) ;
153
+ // add widget to localstorage (and create item if needed)
154
+ var localData = JSON . parse ( window . localStorage . getItem ( 'hidden' ) ) ;
155
+ if ( localData == null ) {
156
+ hidden = new Array ( ) ;
157
+ hidden . push ( widgetIdentifier ) ;
158
+ localStorage . setItem ( 'hidden' , JSON . stringify ( hidden ) ) ;
159
+ }
160
+ else {
161
+ if ( ! isInArray ( localData , widgetIdentifier ) ) {
162
+ localData . push ( widgetIdentifier ) ;
163
+ localStorage . setItem ( 'hidden' , JSON . stringify ( localData ) ) ;
164
+ }
165
+ }
138
166
}
139
167
140
168
function keepWidgetHidden ( ) {
141
- for ( var i in window . localStorage ) {
142
- hideWidget ( $ ( "#" + i ) , 0 ) ;
169
+ var localData = JSON . parse ( window . localStorage . getItem ( 'hidden' ) ) ;
170
+ if ( localData != null ) {
171
+ $ . each ( localData , function ( i , value ) {
172
+ hideWidget ( $ ( "#" + value ) , 0 ) ;
173
+ } ) ;
143
174
}
175
+ }
176
+
177
+ function keepWidgetOrdered ( ) {
178
+ var localData = JSON . parse ( window . localStorage . getItem ( 'positions' ) ) ;
179
+ if ( localData != null ) {
180
+ $ . each ( localData , function ( i , value ) {
181
+ var widgetId = "#" + value ;
182
+ $ ( "#widgets" ) . append ( $ ( widgetId ) . parent ( ) ) ;
183
+ } ) ;
184
+ }
185
+ }
186
+
187
+ function isInArray ( array , search )
188
+ {
189
+ return ( array . indexOf ( search ) >= 0 ) ? true : false ;
144
190
}
0 commit comments