diff --git a/html/ajax_dash.php b/html/ajax_dash.php index a26e46e5a7..ec88e68eca 100644 --- a/html/ajax_dash.php +++ b/html/ajax_dash.php @@ -30,23 +30,30 @@ $type = mres($_POST['type']); if ($type == 'placeholder') { $output = 'Please add a Widget to get started'; $status = 'ok'; + $title = 'Placeholder'; } elseif (is_file('includes/common/'.$type.'.inc.php')) { $results_limit = 10; $no_form = true; + $title = ucfirst($type); + $unique_id = str_replace(array("-","."),"_",uniqid($type,true)); $widget_id = mres($_POST['id']); $widget_settings = json_decode(dbFetchCell('select settings from users_widgets where user_widget_id = ?',array($widget_id)),true); - $widget_dimensions = dbfetchRow('select size_x,size_y from users_widgets where user_widget_id = ?',array($widget_id)); + $widget_dimensions = $_POST['dimensions']; + if( !empty($_POST['settings']) ) { + define('show_settings',true); + } include 'includes/common/'.$type.'.inc.php'; $output = implode('', $common_output); $status = 'ok'; - + $title = $widget_settings['title'] ?: $title; } $response = array( 'status' => $status, 'html' => $output, + 'title' => $title, ); echo _json_encode($response); diff --git a/html/includes/common/generic-graph.inc.php b/html/includes/common/generic-graph.inc.php index b6e5773eee..9d79fff228 100644 --- a/html/includes/common/generic-graph.inc.php +++ b/html/includes/common/generic-graph.inc.php @@ -22,13 +22,13 @@ * @subpackage Widgets */ -if( empty($widget_settings) ) { +if( defined('show_settings') || empty($widget_settings) ) { $common_output[] = '
- +
@@ -37,10 +37,10 @@ if( empty($widget_settings) ) { Legend + Legend
-
- -
- -
-
-
- -
- -
-
+ +'; } else { $widget_settings['device_id'] = dbFetchCell('select device_id from devices where hostname = ?',array($widget_settings['graph_device'])); - $common_output[] = "
".$widget_settings['graph_device']." / ".$widget_settings['graph_type']."
"; - $common_output[] = generate_minigraph_image(array('device_id'=>(int) $widget_settings['device_id']), $config['time']['day'], $config['time']['now'], $widget_settings['graph_type'], $widget_settings['graph_legend'] == 1 ? 'yes' : 'no', $widget_settings['graph_width'], $widget_settings['graph_height'], '&', $widget_settings['graph_type']); + $widget_settings['title'] = $widget_settings['graph_device']." / ".$widget_settings['graph_type']; + $common_output[] = generate_minigraph_image( + array('device_id'=>(int) $widget_settings['device_id']), + $config['time']['day'], + $config['time']['now'], + $widget_settings['graph_type'], + $widget_settings['graph_legend'] == 1 ? 'yes' : 'no', + $widget_dimensions['x'], + $widget_dimensions['y'], + '&', + 'minigraph-image', + 1 + ); } ?> diff --git a/html/includes/forms/update-dashboard-config.inc.php b/html/includes/forms/update-dashboard-config.inc.php index fd6dc18a4c..de278fd918 100644 --- a/html/includes/forms/update-dashboard-config.inc.php +++ b/html/includes/forms/update-dashboard-config.inc.php @@ -25,7 +25,7 @@ elseif ($sub_type == 'add' && is_numeric($widget_id)) { list($x,$y) = explode(',',$widget['base_dimensions']); $item_id = dbInsert(array('user_id'=>$_SESSION['user_id'],'widget_id'=>$widget_id, 'col'=>1,'row'=>1,'refresh'=>60,'title'=>$widget['widget_title'],'size_x'=>$x,'size_y'=>$y),'users_widgets'); if (is_numeric($item_id)) { - $extra = array('widget_id'=>$item_id,'title'=>$widget['widget_title'],'widget'=>$widget['widget'],'size_x'=>$x,'size_y'=>$y); + $extra = array('user_widget_id'=>$item_id,'widget_id'=>$item_id,'title'=>$widget['widget_title'],'widget'=>$widget['widget'],'refresh'=>60,'size_x'=>$x,'size_y'=>$y); $status = 'ok'; $message = ''; } diff --git a/html/pages/front/tiles.php b/html/pages/front/tiles.php index 063b4bba62..5c6effb1e7 100644 --- a/html/pages/front/tiles.php +++ b/html/pages/front/tiles.php @@ -103,31 +103,25 @@ foreach (dbFetchRows("SELECT * FROM `widgets` ORDER BY `widget_title`") as $widg }, resize: { enabled: true, - stop: function(e, ui, $widget) { + stop: function(e, ui, widget) { updatePos(gridster); + widget_reload(widget.attr('id'),widget.data('type')); } }, - serialize_params: function($w, wgd) { - return { - id: $($w).attr('id'), - col: wgd.col, - row: wgd.row, - size_x: wgd.size_x, - size_y: wgd.size_y + serialize_params: function(w, wgd) { + return { + id: $(w).attr('id'), + col: wgd.col, + row: wgd.row, + size_x: wgd.size_x, + size_y: wgd.size_y }; } }).data('gridster'); gridster.remove_all_widgets(); $.each(serialization, function() { - gridster.add_widget( - '
  • '+ - '\var timeout'+this.user_widget_id+' = grab_data('+this.user_widget_id+','+this.refresh+',\''+this.widget+'\');\<\/script\>'+ - '
    '+this.title+'
    '+ - '
    '+this.widget+'
    '+ - '
  • ', - parseInt(this.size_x), parseInt(this.size_y), parseInt(this.col), parseInt(this.row) - ); + widget_dom(this); }); $(document).on('click','#clear_widgets', function() { @@ -160,19 +154,7 @@ foreach (dbFetchRows("SELECT * FROM `widgets` ORDER BY `widget_title`") as $widg dataType: "json", success: function (data) { if (data.status == 'ok') { - var widget_id = data.extra.widget_id; - var title = data.extra.title; - var widget = data.extra.widget; - var size_x = data.extra.size_x; - var size_y = data.extra.size_y; - gridster.add_widget( - '
  • '+ - '\var timeout'+widget_id+' = grab_data('+widget_id+',60,\''+widget+'\');\<\/script\>'+ - '
    '+title+'
    '+ - '
    '+widget+'
    '+ - '
  • ', - parseInt(size_x), parseInt(size_y) - ); + widget_dom(data.extra); updatePos(gridster); } else { @@ -207,65 +189,96 @@ foreach (dbFetchRows("SELECT * FROM `widgets` ORDER BY `widget_title`") as $widg }); }); + $(document).on("click",".edit-widget",function() { + obj = $(this).parent().parent(); + if( obj.data('settings') == 1 ) { + obj.data('settings','0'); + } else { + obj.data('settings','1'); + } + widget_reload(obj.attr('id'),obj.data('type')); + }); + }); - function widget_settings(data) { - var widget_settings = {}; - var widget_id = 0; - datas = $(data).serializeArray(); - for( var field in datas ) { - widget_settings[datas[field].name] = datas[field].value; - } -console.log(widget_settings); - $('.gridster').find('div[id^=widget_body_]').each(function() { - if(this.contains(data)) { - widget_id = $(this).parent().attr('id'); - widget_type = $(this).parent().data('type'); - } - }); - if( widget_id > 0 && widget_settings != {} ) { - $.ajax({ - type: 'POST', - url: 'ajax_form.php', - data: {type: 'widget-settings', id: widget_id, settings: widget_settings}, - dataType: "json", - success: function (data) { - if( data.status == "ok" ) { - widget_reload(widget_id,widget_type); - } - } - }); - } - } + function widget_dom(data) { + dom = '
  • '+ + '
    '+data.title+''+ + ''+ + ''+ + '
    '+ + '
    '+data.widget+'
    '+ + '\var timeout'+data.user_widget_id+' = grab_data('+data.user_widget_id+','+data.refresh+',\''+data.widget+'\');\<\/script\>'+ + '
  • '; + if (data.hasOwnProperty('col') && data.hasOwnProperty('row')) { + gridster.add_widget(dom, parseInt(data.size_x), parseInt(data.size_y), parseInt(data.col), parseInt(data.row)); + } else { + gridster.add_widget(dom, parseInt(data.size_x), parseInt(data.size_y)); + } + } - function widget_reload(id,data_type) { - $.ajax({ - type: 'POST', - url: 'ajax_dash.php', - data: {type: data_type, id: id}, - dataType: "json", - success: function (data) { - if (data.status == 'ok') { - $("#widget_body_"+id).html(data.html); - } - else { - $("#widget_body_"+id).html('
    ' + data.message + '
    '); - } - }, - error: function () { - $("#widget_body_"+id).html('
    Problem with backend
    '); - } - }); - } + function widget_settings(data) { + var widget_settings = {}; + var widget_id = 0; + datas = $(data).serializeArray(); + for( var field in datas ) { + widget_settings[datas[field].name] = datas[field].value; + } + $('.gridster').find('div[id^=widget_body_]').each(function() { + if(this.contains(data)) { + widget_id = $(this).parent().attr('id'); + widget_type = $(this).parent().data('type'); + $(this).parent().data('settings','0'); + } + }); + if( widget_id > 0 && widget_settings != {} ) { + $.ajax({ + type: 'POST', + url: 'ajax_form.php', + data: {type: 'widget-settings', id: widget_id, settings: widget_settings}, + dataType: "json", + success: function (data) { + if( data.status == "ok" ) { + widget_reload(widget_id,widget_type); + } + } + }); + } + } - function grab_data(id,refresh,data_type) { - new_refresh = refresh * 1000; - widget_reload(id,data_type); - setTimeout(function() { - grab_data(id,refresh,data_type); - }, - new_refresh); - } -$('#new-widget').popover(); + function widget_reload(id,data_type) { + if( $("#widget_body_"+id).parent().data('settings') == 1 ) { + settings = 1; + } else { + settings = 0; + } + $.ajax({ + type: 'POST', + url: 'ajax_dash.php', + data: {type: data_type, id: id, dimensions: {x:$("#widget_body_"+id).innerWidth()-50, y:$("#widget_body_"+id).innerHeight()-50}, settings:settings}, + dataType: "json", + success: function (data) { + if (data.status == 'ok') { + $("#widget_title_"+id).html(data.title); + $("#widget_body_"+id).html(data.html); + } + else { + $("#widget_body_"+id).html('
    ' + data.message + '
    '); + } + }, + error: function () { + $("#widget_body_"+id).html('
    Problem with backend
    '); + } + }); + } + function grab_data(id,refresh,data_type) { + new_refresh = refresh * 1000; + widget_reload(id,data_type); + setTimeout(function() { + grab_data(id,refresh,data_type); + }, + new_refresh); + } + $('#new-widget').popover();