Skip to content

Commit 2ab8f67

Browse files
committed
add localstorage for widget order and recode hidden widget storage to not collide with order
1 parent 120e296 commit 2ab8f67

File tree

2 files changed

+57
-11
lines changed

2 files changed

+57
-11
lines changed

index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
A simple web dashboard to monitor your server.
7272
</div>
7373
</div>
74-
<div class="row">
74+
<div id="widgets" class="row">
7575
<div class="span3">
7676
<div id="general-info-widget" class="widget widget-table action-table">
7777
<div class="widget-header">
@@ -133,7 +133,7 @@ <h3>
133133
<div id="refresh-ram" class="btn icon-refresh js-refresh-info"></div>
134134
</div><!-- /widget-header -->
135135
<div class="widget-content">
136-
<div class="widget big-stats-container">
136+
<div class="big-stats-container">
137137
<div class="widget-content">
138138
<div class="cf big_stats">
139139
<div class="stat">

js/base.js

Lines changed: 55 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
$(document).ready(function() {
2+
3+
keepWidgetOrdered();
24
// hide localstored hidden widgets
35
keepWidgetHidden();
46

@@ -70,14 +72,23 @@ function pulseElement(element, times, interval) {
7072
*
7173
*/
7274

73-
$( ".row" ).sortable({
74-
connectWith: ".row",
75+
$( "#widgets" ).sortable({
76+
connectWith: "#widgets",
7577
handle: ".widget-header",
7678
cancel: "#filter-ps",
7779
cursor: "move",
7880
opacity: 0.7,
7981
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+
}
8192
});
8293

8394
/**
@@ -114,8 +125,14 @@ $('.open-widget').live('click',function(){
114125
// decrement closed-widget-count
115126
closedWidgetCount.text( Number(closedWidgetCount.text()) - 1);
116127

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));
119136
});
120137

121138

@@ -133,12 +150,41 @@ function hideWidget(widget, speed){
133150
// add to hidden list
134151
closedWidgets.append('<li><a class="open-widget" data-id="'+widgetIdentifier+'"><i class="icon-plus-sign"></i> '+widgetName+'</a></li>');
135152

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+
}
138166
}
139167

140168
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+
});
143174
}
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;
144190
}

0 commit comments

Comments
 (0)