Project

General

Profile

Download (4.18 KB) Statistics
| Branch: | Tag: | Revision:
$(document).on('ContentLoad', function(){start_gridster(); auto_refresh()});

$(document).on("click",".widget_control .minimize" ,function(){ hide_widget(this);});
$(document).on("click",".widget_control .remove" ,function(){ remove_widget(this);});

var refresh_timeout;
function auto_refresh(){
var element = $(".auto-refresh");
clearTimeout(refresh_timeout);

if (element[0]) {
refresh_timeout = setTimeout(function(){
if ($(".auto-refresh").hasClass("on")) {
Turbolinks.visit(location.toString());
}
},60000);
}
}

function start_gridster(){
var gridster = $(".gridster>ul").gridster({
widget_margins: [10, 10],
widget_base_dimensions: [82, 340],
max_size_x: 12,
min_cols: 12,
max_cols: 12,
autogenerate_stylesheet: false
}).data('gridster');

$(".gridster>ul>li[data-hide='true']").each(function(i, widget) {
$(widget).hide();
gridster.remove_widget(widget);
$(".gridster>ul").append($(widget));
});
fill_restore_list();
}

function hide_widget(item){
var gridster = $(".gridster>ul").gridster().data('gridster');
var widget = $(item).parents('li.gs_w');

widget.attr('data-hide', 'true').hide();
gridster.remove_widget(widget);
$(".gridster>ul").append(widget);
fill_restore_list();
}

function remove_widget(item){
var widget = $(item).parents('li.gs_w');
var gridster = $(".gridster>ul").gridster().data('gridster');
if (confirm(__("Are you sure you want to delete this widget from your dashboard?"))){
$.ajax({
type: 'DELETE',
url: $(item).data('url'),
success: function(){
$.jnotify(__("Widget removed from dashboard."), 'success', false);
gridster.remove_widget(widget);
window.location.reload();
},
error: function(){
$.jnotify(__("Error removing widget from dashboard."), 'error', true);
},
});
}
}

function add_widget(name){
$.ajax({
type: 'POST',
url: 'widgets',
data: {'name': name},
success: function(){
$.jnotify(__("Widget added to dashboard."), 'success', false);
window.location.reload();
},
error: function(){
$.jnotify(__("Error adding widget to dashboard."), 'error', true);
},
dataType: 'json'
});
}

function save_position(path){
var positions = serialize_grid();
$.ajax({
type: 'POST',
url: path,
data: {'widgets': positions},
success: function(){
$.jnotify(__("Widget positions successfully saved."), 'success', false);
},
error: function(){
$.jnotify(__("Failed to save widget positions."), 'error', true);
},
dataType: 'json'
});
}

function serialize_grid(){
var result = {};
$(".gridster>ul>li").each(function(i, widget) {
$widget = $(widget);
result[$widget.data('id')] = {
hide: $widget.data('hide'),
col: $widget.data('col'),
row: $widget.data('row'),
sizex: $widget.data('sizex'),
sizey: $widget.data('sizey')
};
});

return result;
}

function fill_restore_list(){
$("ul>li.widget-restore").remove();
var restore_list = [];
var hidden_widgets = $(".gridster>ul>li[data-hide='true']");
if (hidden_widgets.exists()){
hidden_widgets.each(function(i, widget) {
restore_list.push("<li class='widget-restore'><a href='#' onclick='show_widget(\"" +
$(widget).attr('data-id') + "\")'>" +
$(widget).attr('data-name') + "</a></li>");
});
} else {
restore_list.push("<li class='widget-restore'><a>" + __('Nothing to restore') + "</a></li>");
}
$('#restore_list').after(restore_list.join(" "));
}

function show_widget(id){
var gridster = $(".gridster>ul").gridster().data('gridster');
var widget = $(".gridster>ul>li[data-id="+id+"]");
widget.attr("data-hide", 'false');
widget.attr("data-row", 1);
widget.attr("data-col", 1);
widget.show();

gridster.register_widget(widget);
fill_restore_list();
}
(7-7/32)