diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 7f684cf30d..cdc92d11f5 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,13 @@ +2013-04-04 Miguel de Dios + + * include/graphs/functions_flot.php, operation/agentes/stat_win.php: + cleaned source code style. + + * mobile/include/ui.class.php, mobile/include/style/main.css, + mobile/index.php, mobile/operation/module_graph.php, + mobile/operation/modules.php: more changes for the mobile in the + view of graph module. + 2013-04-04 Mario Pulido * extensions/update_manager/main.php: Fixed information bug and diff --git a/pandora_console/include/graphs/functions_flot.php b/pandora_console/include/graphs/functions_flot.php index 26739fc76f..180fb17b1e 100644 --- a/pandora_console/include/graphs/functions_flot.php +++ b/pandora_console/include/graphs/functions_flot.php @@ -197,9 +197,9 @@ function flot_area_graph($chart_data, $width, $height, $color, $legend, $long_in $values2 = array(); $i = 0; $max_x = 0; - foreach($data as $jsvar => $values) { + foreach ($data as $jsvar => $values) { $n_values = count($values); - if($n_values > $max_x) { + if ($n_values > $max_x) { $max_x = $n_values; } diff --git a/pandora_console/mobile/include/style/main.css b/pandora_console/mobile/include/style/main.css index 8a1d8503fb..bda701673a 100644 --- a/pandora_console/mobile/include/style/main.css +++ b/pandora_console/mobile/include/style/main.css @@ -42,6 +42,7 @@ tr.group_view_crit, .group_view_crit { } .ui-btn-up-group_view_crit { background: linear-gradient(#D50505, #FA3030) repeat scroll 0 0 #FA3030; + background: -webkit-gradient(linear, left top, left bottom, from(#D50505), to(#FA3030)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -49,6 +50,7 @@ tr.group_view_crit, .group_view_crit { } .ui-btn-hover-group_view_crit { background: linear-gradient(#C41616, #E94141) repeat scroll 0 0 #E94141; + background: -webkit-gradient(linear, left top, left bottom, from(#C41616), to(#E94141)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -68,6 +70,7 @@ tr.group_view_crit, .group_view_crit { .ui-btn-up-group_view_normal, .ui-btn-up-group_view_norm { background: linear-gradient(#D7D7D7, #FFFFFF) repeat scroll 0 0 #FFFFFF; + background: -webkit-gradient(linear, left top, left bottom, from(#D7D7D7), to(#FFFFFF)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -76,6 +79,7 @@ tr.group_view_crit, .group_view_crit { .ui-btn-hover-group_view_normal, .ui-btn-hover-group_view_normal { background: linear-gradient(#D7D7D7, #FFFFFF) repeat scroll 0 0 #FFFFFF; + background: -webkit-gradient(linear, left top, left bottom, from(#D7D7D7), to(#FFFFFF)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -93,6 +97,7 @@ tr.group_view_crit, .group_view_crit { } .ui-btn-up-group_view_ok { background: linear-gradient(#007000, #00C000) repeat scroll 0 0 #00C000; + background: -webkit-gradient(linear, left top, left bottom, from(#007000), to(#00C000)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -100,6 +105,7 @@ tr.group_view_crit, .group_view_crit { } .ui-btn-hover-group_view_ok { background: linear-gradient(#096709, #0FB10F) repeat scroll 0 0 #0FB10F; + background: -webkit-gradient(linear, left top, left bottom, from(#096709), to(#0FB10F)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -116,6 +122,7 @@ a.group_view_warn { } .ui-btn-up-group_view_warn { background: linear-gradient(#D0BF0A, #F5E535) repeat scroll 0 0 #F5E535; + background: -webkit-gradient(linear, left top, left bottom, from(#D0BF0A), to(#F5E535)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -123,6 +130,7 @@ a.group_view_warn { } .ui-btn-hover-group_view_warn { background: linear-gradient(#BFB11B, #E4D746) repeat scroll 0 0 #E4D746; + background: -webkit-gradient(linear, left top, left bottom, from(#BFB11B), to(#E4D746)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -139,6 +147,7 @@ tr.group_view_alrm, .group_view_alrm { } .ui-btn-up-group_view_alrm { background: linear-gradient(#9D5A01, #ED8701) repeat scroll 0 0 #ED8701; + background: -webkit-gradient(linear, left top, left bottom, from(#9D5A01), to(#ED8701)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -146,6 +155,7 @@ tr.group_view_alrm, .group_view_alrm { } .ui-btn-hover-group_view_alrm { background: linear-gradient(#91580D, #DA8414) repeat scroll 0 0 #DA8414; + background: -webkit-gradient(linear, left top, left bottom, from(#91580D), to(#DA8414)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -162,6 +172,7 @@ tr.group_view_unk, .group_view_unk { } .ui-btn-up-group_view_unk { background: linear-gradient(#9C9C9C, #C4C4C4) repeat scroll 0 0 #C4C4C4; + background: -webkit-gradient(linear, left top, left bottom, from(#9C9C9C), to(#C4C4C4)); border: 1px solid #111111; color: #000000; font-weight: bold; @@ -169,6 +180,7 @@ tr.group_view_unk, .group_view_unk { } .ui-btn-hover-group_view_unk { background: linear-gradient(#888888, #B0B0B0) repeat scroll 0 0 #ECECEC; + background: -webkit-gradient(linear, left top, left bottom, from(#888888), to(#B0B0B0)); border: 1px solid #111111; color: #000000; font-weight: bold; diff --git a/pandora_console/mobile/include/ui.class.php b/pandora_console/mobile/include/ui.class.php index 2b13e6f7b1..25d9fd02be 100755 --- a/pandora_console/mobile/include/ui.class.php +++ b/pandora_console/mobile/include/ui.class.php @@ -437,6 +437,27 @@ class Ui { $this->formAddInput($options); } + public function formAddInpuDate($options) { + $options['type'] = 'date'; + $options['data-clear-btn'] = "false"; + + $this->formAddInput($options); + } + + public function formAddCheckbox($options) { + $options['type'] = 'checkbox'; + + if (isset($options['checked'])) { + if ($options['checked']) { + $options['checked'] = 'checked'; + } + else { + unset($options['checked']); + } + } + $this->formAddInput($options); + } + public function formAddSubmitButton($options) { $options['type'] = 'submit'; diff --git a/pandora_console/mobile/index.php b/pandora_console/mobile/index.php index 1c8f703d66..3d92fd4cb0 100644 --- a/pandora_console/mobile/index.php +++ b/pandora_console/mobile/index.php @@ -32,6 +32,7 @@ require_once('operation/events.php'); require_once('operation/alerts.php'); require_once('operation/agents.php'); require_once('operation/modules.php'); +require_once('operation/module_graph.php'); $enterpriseHook = enterprise_include('mobile/include/enterprise.class.php'); $system = System::getInstance(); @@ -62,6 +63,10 @@ switch ($action) { $modules = new Modules(); $modules->ajax($parameter2); break; + case 'module_graph': + $module_graph = new ModuleGraph(); + $module_graph->ajax($parameter2); + break; } return; break; @@ -115,6 +120,10 @@ switch ($action) { $modules = new Modules(); $modules->show(); break; + case 'module_graph': + $module_graph = new ModuleGraph(); + $module_graph->show(); + break; } break; } diff --git a/pandora_console/mobile/operation/module_graph.php b/pandora_console/mobile/operation/module_graph.php new file mode 100644 index 0000000000..399607a73a --- /dev/null +++ b/pandora_console/mobile/operation/module_graph.php @@ -0,0 +1,406 @@ +start_date = date("Y-m-d"); + + if ($system->checkACL($this->acl)) { + $this->correct_acl = true; + } + else { + $this->correct_acl = false; + } + } + + private function getFilters() { + $system = System::getInstance(); + + $this->id = (int)$system->getRequest('id', 0); + $this->module = modules_get_agentmodule($this->id); + $this->graph_type = return_graphtype($this->module["id_tipo_modulo"]); + + $period_hours = $system->getRequest('period_hours', false); + if ($period_hours === false) { + $this->period = SECONDS_1DAY; + } + else { + $this->period = $period_hours * SECONDS_1HOUR; + } + $this->draw_events = (int)$system->getRequest('draw_events', 0); + $this->draw_alerts = (int)$system->getRequest('draw_alerts', 0); + $this->avg_only = (int)$system->getRequest('avg_only', 0); + $this->start_date = $system->getRequest('start_date', false); + if ($this->start_date === false) { + $this->start_date = date("Y-m-d"); + } + else { + $this->start_date = date("Y-m-d", strtotime($this->start_date)); + } + $this->time_compare_separated = (int)$system->getRequest('time_compare_separated', 0); + $this->time_compare_overlapped = (int)$system->getRequest('time_compare_overlapped', 0); + $this->unknown_graph = (int)$system->getRequest('unknown_graph', 0); + $this->zoom = (int)$system->getRequest('zoom', 1); + $this->baseline = (int)$system->getRequest('baseline', 0); + + $this->width = (int)$system->getRequest('width', 0); + $this->width -= 20; //Correct the width + $this->height = (int)$system->getRequest('height', 0); + + //Sancho says "put the height to 1/2 for to make more beautyful" + $this->height = $this->height / 2; + + $this->height -= 80; //Correct the height + + } + + public function ajax($parameter2 = false) { + $system = System::getInstance(); + + if (!$this->correct_acl) { + return; + } + else { + switch ($parameter2) { + case 'get_graph': + $this->getFilters(); + $correct = 0; + $graph = ''; + + $correct = 1; + + $label = $this->module["nombre"]; + $unit = db_get_value('unit', 'tagente_modulo', + 'id_agente_modulo', $this->id); + + $utime = get_system_time (); + $current = date("Y-m-d", $utime); + + if ($this->start_date != $current) + $date = strtotime($this->start_date); + else + $date = $utime; + + $urlImage = ui_get_full_url(false); + + if ($this->time_compare_separated) { + $time_compare = 'separated'; + } + else if ($this->time_compare_overlapped) { + $time_compare = 'overlapped'; + } + + + ob_start(); + switch ($this->graph_type) { + case 'boolean': + $graph = grafico_modulo_boolean ($this->id, + $this->period, $this->draw_events, + $this->width, $this->height, + $label, $unit, $this->draw_alerts, + $this->avg_only, false, $date, false, + $urlImage, 'adapter_' . $this->graph_type, + $time_compare, $this->unknown_graph); + if ($show_events_graph) { + $graph .= '
'; + $graph .= graphic_module_events($this->id, + $this->width, $this->height, + $this->period, $config['homeurl'], + $this->zoom, + 'adapted_' . $this->graph_type, $date); + } + break; + case 'sparse': + $graph = grafico_modulo_sparse ($this->id, + $this->period, $this->draw_events, + $this->width, $this->height, + $label, null, $this->draw_alerts, + $this->avg_only, false, $date, $unit, + $this->baseline, 0, true, false, + $urlImage, 1, false, + 'adapter_' . $this->graph_type, + $time_compare, $this->unknown_graph); + if ($show_events_graph) { + $graph .= '
'; + $graph .= graphic_module_events($this->id, + $this->width, $this->height, + $this->period, $config['homeurl'], + $this->zoom, 'adapted_'.$this->graph_type, $date); + } + break; + case 'string': + $graph = grafico_modulo_string ($this->id, + $this->period, $this->draw_events, + $this->width, $this->height, + $label, null, $this->draw_alerts, 1, + false, $date, false, $urlImage, + 'adapter_' . $this->graph_type); + if ($show_events_graph) { + $graph .= '
'; + $graph .= graphic_module_events($this->id, + $this->width, $this->height, + $this->period, $config['homeurl'], + $this->zoom, 'adapted_' . $this->graph_type, $date); + } + break; + case 'log4x': + $graph .= grafico_modulo_log4x ($this->id, + $this->period, $this->draw_events, + $this->width, $this->height, + $label, $unit_name, $this->draw_alerts, + 1, $pure, $date); + if ($show_events_graph) { + $graph .= '
'; + $graph .= graphic_module_events($this->id, + $this->width, $this->height, + $this->period, $config['homeurl'], $this->zoom, '', $date); + } + break; + default: + $graph .= fs_error_image ('../images'); + break; + } + $graph = ob_get_clean() . $graph; + + echo json_encode(array('correct' => $correct, 'graph' => $graph)); + break; + } + } + } + + public function show() { + if (!$this->correct_acl) { + $this->show_fail_acl(); + } + else { + $this->getFilters(); + $this->showModuleGraph(); + } + } + + private function show_fail_acl() { + $ui = Ui::getInstance(); + + $ui->createPage(); + + $options['type'] = 'onStart'; + $options['title_text'] = __('You don\'t have access to this page'); + $options['content_text'] = __('Access to this page is restricted to authorized users only, please contact system administrator if you need assistance.

Please know that all attempts to access this page are recorded in security logs of Pandora System Database'); + $ui->addDialog($options); + + $ui->showPage(); + } + + private function javascript_code() { + ob_start(); + ?> + + createPage(); + + $ui->createDefaultHeader(sprintf(__("PandoraFMS: %s"), $this->module["nombre"])); + $ui->showFooter(false); + $ui->beginContent(); + $ui->contentAddHtml($ui->getInput(array( + 'id' => 'id_module', + 'value' => $this->id, + 'type' => 'hidden' + ))); + $ui->contentBeginCollapsible("Options"); + $ui->beginForm("index.php?page=module_graph&id=" . $this->id); + $options = array( + 'name' => 'draw_alerts', + 'value' => 1, + 'checked' => (bool)$this->draw_alerts, + 'label' => __('Show Alerts') + ); + $ui->formAddCheckbox($options); + + $options = array( + 'name' => 'draw_events', + 'value' => 1, + 'checked' => (bool)$this->draw_events, + 'label' => __('Show Events') + ); + $ui->formAddCheckbox($options); + + $options = array( + 'name' => 'time_compare_separated', + 'value' => 1, + 'checked' => (bool)$this->time_compare_separated, + 'label' => __('Time compare (Separated)') + ); + $ui->formAddCheckbox($options); + + $options = array( + 'name' => 'time_compare_overlapped', + 'value' => 1, + 'checked' => (bool)$this->time_compare_overlapped, + 'label' => __('Time compare (Overlapped)') + ); + $ui->formAddCheckbox($options); + + $options = array( + 'name' => 'unknown_graph', + 'value' => 1, + 'checked' => (bool)$this->unknown_graph, + 'label' => __('Show unknown graph') + ); + $ui->formAddCheckbox($options); + + $options = array( + 'name' => 'avg_only', + 'value' => 1, + 'checked' => (bool)$this->avg_only, + 'label' => __('Avg Only') + ); + $ui->formAddCheckbox($options); + + $options = array( + 'label' => __('Time range (hours)'), + 'name' => 'period_hours', + 'value' => ($this->period / SECONDS_1HOUR), + 'min' => 0, + 'max' => 24 * 30, + 'step' => 4 + ); + $ui->formAddSlider($options); + + /* + $items = array('1' => __('x1'), + '2' => __('x2'), + '3' => __('x3'), + '4' => __('x4')); + $options = array( + 'name' => 'zoom', + 'title' => __('Zoom'), + 'label' => __('Zoom'), + 'items' => $items, + 'selected' => $this->zoom + ); + $ui->formAddSelectBox($options); + */ + + $options = array( + 'name' => 'start_date', + 'value' => $this->start_date, + 'label' => __('Begin date') + ); + $ui->formAddInpuDate($options); + + $options = array( + 'icon' => 'refresh', + 'icon_pos' => 'right', + 'text' => __('Update graph') + ); + $ui->formAddSubmitButton($options); + + $html = $ui->getEndForm(); + $ui->contentCollapsibleAddItem($html); + $ui->contentEndCollapsible(); + $ui->contentAddHtml(' +
' . __('Loading...') . '
+ '); + $ui->contentAddHtml($this->javascript_code()); + $ui->endContent(); + $ui->showPage(); + } + /* + */ +} \ No newline at end of file diff --git a/pandora_console/mobile/operation/modules.php b/pandora_console/mobile/operation/modules.php index e0d4def920..259bb10ddb 100644 --- a/pandora_console/mobile/operation/modules.php +++ b/pandora_console/mobile/operation/modules.php @@ -440,7 +440,10 @@ class Modules { } } - $row[7] = $row[__('Data')] = $output; + $row[7] = $row[__('Data')] = + '' . + html_print_image('images/chart_curve.png', true, array ("style" => 'vertical-align: middle;')) . '' . + ' ' . $output; if (!$ajax) { unset($row[0]); diff --git a/pandora_console/operation/agentes/stat_win.php b/pandora_console/operation/agentes/stat_win.php index f91a346165..1a5f3c03b6 100644 --- a/pandora_console/operation/agentes/stat_win.php +++ b/pandora_console/operation/agentes/stat_win.php @@ -98,7 +98,7 @@ $label = base64_decode(get_parameter('label', '')); " . __('There was a problem locating the source of the graph') . @@ -130,10 +130,10 @@ $label = base64_decode(get_parameter('label', '')); $time_compare = false; - if($time_compare_separated) { + if ($time_compare_separated) { $time_compare = 'separated'; } - else if($time_compare_overlapped) { + else if ($time_compare_overlapped) { $time_compare = 'overlapped'; } @@ -258,7 +258,7 @@ $label = base64_decode(get_parameter('label', '')); $data[1] .= html_print_image ("images/calendar_view_day.png", true, array ("onclick" => "scwShow(scwID('text-start_date'),this);")); $table->data[] = $data; $table->rowclass[] = ''; - + $data = array(); $data[0] = __('Zoom factor'); $options = array (); @@ -270,31 +270,31 @@ $label = base64_decode(get_parameter('label', '')); $data[1] = html_print_select ($options, "zoom", $zoom, '', '', 0, true); $table->data[] = $data; $table->rowclass[] = ''; - + $data = array(); $data[0] = __('Time range'); $data[1] = html_print_extended_select_for_time('period', $period, '', '', 0, 7, true); $table->data[] = $data; $table->rowclass[] = ''; - + $data = array(); $data[0] = __('Show events'); $data[1] = html_print_checkbox ("draw_events", 1, (bool) $draw_events, true); $table->data[] = $data; $table->rowclass[] = ''; - + $data = array(); $data[0] = __('Show alerts'); $data[1] = html_print_checkbox ("draw_alerts", 1, (bool) $draw_alerts, true); $table->data[] = $data; $table->rowclass[] = ''; - + $data = array(); $data[0] = __('Show event graph'); $data[1] = html_print_checkbox ("show_events_graph", 1, (bool) $show_events_graph, true); $table->data[] = $data; $table->rowclass[] = ''; - + switch ($graph_type) { case 'boolean': case 'sparse': @@ -303,7 +303,7 @@ $label = base64_decode(get_parameter('label', '')); $data[1] = html_print_checkbox ("time_compare_overlapped", 1, (bool) $time_compare_overlapped, true); $table->data[] = $data; $table->rowclass[] = ''; - + $data = array(); $data[0] = __('Time compare') . ' (' . __('Separated') . ')'; $data[1] = html_print_checkbox ("time_compare_separated", 1, (bool) $time_compare_separated, true); @@ -339,7 +339,7 @@ $label = base64_decode(get_parameter('label', '')); html_print_side_layer($params); ?> - +