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