diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index e294903ab9..75a63660fd 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,17 @@ +2009-03-09 Evi Vanoost <vanooste@rcbi.rochester.edu> + + * include/javascript/pandora.js: Moved agent_changed here from map_builder + because it's quite a useful function. + + * include/functions_visual_map.php: In case you want no labels (a lot of + icons on a graph) just set the color to anything not starting with # + + * godmode/reporting/map_builder_wizard.php: Added the possibility to add + modules as well using the wizard. Very useful if you have a switch. + + * godmode/reporting/map_builder.php: Fixed some issues with the ajax thing + and fixed issue #2527894. + 2009-03-05 Evi Vanoost <vanooste@rcbi.rochester.edu> * godmode/reporting/map_builder_wizard.php: Fixed small error when no diff --git a/pandora_console/godmode/reporting/map_builder.php b/pandora_console/godmode/reporting/map_builder.php index cb6864787f..b8cfc398f3 100644 --- a/pandora_console/godmode/reporting/map_builder.php +++ b/pandora_console/godmode/reporting/map_builder.php @@ -88,9 +88,9 @@ if ($delete_layout) { if ($update_layout) { $name = (string) get_parameter ('name'); - $id_group = (int) get_parameter ('id_group'); - $width = (int) get_parameter ('width'); - $height = (int) get_parameter ('height'); + $id_group = (int) get_parameter ('id_group', 1); + $width = (int) get_parameter ('width', 0); + $height = (int) get_parameter ('height', 0); $background = (string) get_parameter ('background'); $bg_info = array (0, 0); if (file_exists ('images/console/background/'.$background)) @@ -101,15 +101,10 @@ if ($update_layout) { if (! $height) $height = $bg_info[1]; - $result = process_sql_update ('tlayout', - array ('name' => $name, 'background' => $background, - 'height' => $height, 'width' => $width), - array ('id' => $id_layout)); - if ($result) { - echo '<h3 class="suc">'.__('Update layout successful').'</h3>'; - } else { - echo '<h3 class="err">'.__('Update layout failed').'</h3>'; - } + $result = process_sql_update ('tlayout', array ('name' => $name, 'background' => $background, 'height' => $height, 'width' => $width, 'id_group' => $id_group), array ('id' => $id_layout)); + + print_error_message ($result, __('Update layout successful'), __('Update layout failed')); + if (is_ajax ()) { exit; } @@ -377,18 +372,18 @@ if (! $edit_layout && ! $id_layout) { /* Layout_data editor form */ $intervals = array (); - $intervals[1] = __('Hour'); - $intervals[2] = "2 ".__('Hours'); - $intervals[3] = "3 ".__('Hours'); - $intervals[6] = "6 ".__('Hours'); - $intervals[12] = "12 ".__('Hours'); - $intervals[24] = __('Last day'); - $intervals[48] = "2 ". __('days'); - $intervals[168] = __('Last week'); - $intervals[360] = __('15 days'); - $intervals[720] = __('Last Month'); - $intervals[1440] = __('Two Months'); - $intervals[4320] = __('Six Months'); + $intervals[3600] = __('Hour'); + $intervals[7200] = "2 ".__('Hours'); + $intervals[10800] = "3 ".__('Hours'); + $intervals[21600] = "6 ".__('Hours'); + $intervals[43200] = "12 ".__('Hours'); + $intervals[86400] = __('Last day'); + $intervals[172800] = "2 ". __('days'); + $intervals[1209600] = __('Last week'); + $intervals[2419200] = __('15 days'); + $intervals[4838400] = __('Last Month'); + $intervals[9676800] = __('Two Months'); + $intervals[29030400] = __('Six Months'); $agents = get_group_agents ($id_group); @@ -451,33 +446,6 @@ require_javascript_file ('wz_jsgraphics'); require_javascript_file ('pandora_visual_console'); ?> <script language="javascript" type="text/javascript"> -function agent_changed (event, id_agent, selected) { - if (id_agent == undefined) - id_agent = this.value; - $('#form_layout_data_editor #module').attr ('disabled', 1); - $('#form_layout_data_editor #module').empty (); - $('#form_layout_data_editor #module').append ($('<option></option>').html ("<?php echo __('Loading'); ?>...").attr ("value", 0)); - jQuery.post ('ajax.php', - {"page": "operation/agentes/ver_agente", - "get_agent_modules_json": 1, - "id_agent": id_agent - }, - function (data) { - $('#form_layout_data_editor #module').empty (); - $('#form_layout_data_editor #module').append ($('<option></option>').html ("<?php echo __('Any')?>").attr ("value", 0)); - jQuery.each (data, function (i, val) { - s = html_entity_decode (val['nombre']); - $('#form_layout_data_editor #module').append ($('<option></option>').html (s).attr ("value", val['id_agente_modulo'])); - $('#form_layout_data_editor #module').fadeIn ('normal'); - }); - if (selected != undefined) - $('#form_layout_data_editor #module').attr ('value', selected); - $('#form_layout_data_editor #module').attr ('disabled', 0); - }, - "json" - ); -} - $(document).ready (function () { <?php if ($id_layout): ?> if (lines) @@ -554,7 +522,7 @@ $(document).ready (function () { $("#form_layout_data_editor #text-height").attr ('value', data['height']); $("#form_layout_data_editor #image").change (); $("#form_layout_data_editor #id_layout_data").attr ('value', data['id']); - $("#form_layout_data_editor #period").attr ('value', data['period'] / 3600); + $("#form_layout_data_editor #period").attr ('value', data['period']); $("#form_layout_data_editor #agent").attr ('value', data['id_agent']); $("#form_layout_data_editor #parent_item").attr ('value', data['parent_item']); $("#form_layout_data_editor #map_linked").attr ('value', data['id_layout_linked']); diff --git a/pandora_console/godmode/reporting/map_builder_wizard.php b/pandora_console/godmode/reporting/map_builder_wizard.php index 3afbb024fe..1bc5ab49e3 100644 --- a/pandora_console/godmode/reporting/map_builder_wizard.php +++ b/pandora_console/godmode/reporting/map_builder_wizard.php @@ -42,9 +42,9 @@ if (! give_acl ($config['id_user'], $layout_group, "AW")) { exit; } -function process_wizard_add ($id_agents, $image, $id_layout, $range) { +function process_wizard_add ($id_agents, $image, $id_layout, $range, $width = 0, $height = 0) { if (empty ($id_agents)) { - echo '<h3 class="error">'.__('No agents selected').'</h3>'; + print_error_message (false, '', __('No agents selected')); return false; } @@ -60,31 +60,78 @@ function process_wizard_add ($id_agents, $image, $id_layout, $range) { } process_sql_insert ('tlayout_data', - array ('id_layout' => $id_layout, - 'pos_x' => $pos_x, - 'pos_y' => $pos_y, - 'label' => get_agent_name ($id_agent), - 'image' => $image, - 'id_agent' => $id_agent, - 'label_color' => '#000000')); + array ('id_layout' => $id_layout, + 'pos_x' => $pos_x, + 'pos_y' => $pos_y, + 'label' => get_agent_name ($id_agent), + 'image' => $image, + 'id_agent' => $id_agent, + 'width' => $width, + 'height' => $height, + 'label_color' => '#000000') + ); $pos_x = $pos_x + $range; } - echo '<h3 class="suc">'.__('Successfully added').'</h3>'; + print_error_message (true, __('Agent successfully added to layout'), ''); echo '<h3><a href="index.php?sec=greporting&sec2=godmode/reporting/map_builder&id_layout='.$id_layout.'">'.__('Map builder').'</a></h3>'; } +function process_wizard_add_modules ($id_modules, $image, $id_layout, $range, $width = 0, $height = 0) { + if (empty ($id_modules)) { + print_error_message (false, '', __('No modules selected')); + return false; + } + + $id_modules = (array) $id_modules; + + $error = false; + $pos_y = 10; + $pos_x = 10; + + foreach ($id_modules as $id_module) { + if ($pos_x > 600) { + $pos_x = 10; + $pos_y = $pos_y + $range; + } + + $id_agent = get_agentmodule_agent ($id_module); + + process_sql_insert ('tlayout_data', + array ('id_layout' => $id_layout, + 'pos_x' => $pos_x, + 'pos_y' => $pos_y, + 'label' => get_agentmodule_name ($id_module), + 'image' => $image, + 'id_agent' => $id_agent, + 'id_agente_modulo' => $id_module, + 'width' => $width, + 'height' => $height, + 'label_color' => '#000000') + ); + + $pos_x = $pos_x + $range; + } + + print_error_message (true, __('Modules successfully added to layout'), ''); +} echo '<h2>'.__('Visual map wizard').' - '.$layout["name"].'</h2>'; -$id_agents = get_parameter ('id_agents'); +$id_agents = get_parameter ('id_agents', array ()); +$id_modules = get_parameter ('module', array ()); $image = get_parameter ('image'); $add = (bool) get_parameter ('add', false); -$range = get_parameter ("range", 50); +$range = (int) get_parameter ("range", 50); +$width = (int) get_parameter ("width", 0); +$height = (int) get_parameter ("height", 0); if ($add) { - process_wizard_add ($id_agents, $image, $layout["id"], $range); + process_wizard_add ($id_agents, $image, $layout["id"], $range, $width, $height); + if (!empty ($id_modules)) { + process_wizard_add_modules ($id_modules, $image, $layout["id"], $range, $width, $height); + } } $table->id = 'wizard_table'; @@ -115,9 +162,16 @@ $table->data[0][1] = print_select ($images_list, 'image', '', '', '', '', true); $table->data[1][0] = __('Image range (px)'); $table->data[1][1] = print_input_text ('range', $range, '', 5, 5, true); -$table->data[2][0] = __('Agents'); -$table->data[2][1] = print_select (get_group_agents ($layout_group, false, "none"), +$table->data[2][0] = __('Image size (px)'); +$table->data[2][1] = __('Width').': '.print_input_text ('width', 0, '', 5, 5, true); +$table->data[2][1] .= '<br />'.__('Height').': '.print_input_text ('height', 0, '', 5, 5, true); + +$table->data[3][0] = __('Agents'); +$table->data[3][1] = print_select (get_group_agents ($layout_group, false, "none"), 'id_agents[]', 0, false, '', '', true, true); + +$table->data[4][0] = __('Modules'); +$table->data[4][1] = print_select (array (), 'module[]', 0, false, '', '', true, true); echo '<form method="post" onsubmit="if (! confirm(\''.__('Are you sure').'\')) return false;">'; print_table ($table); @@ -128,7 +182,9 @@ print_input_hidden ('id_layout', $layout["id"]); print_submit_button (__('Add'), 'go', false, 'class="sub wizard"'); echo '</div>'; echo '</form>'; - -echo '<h3 class="error invisible" id="message"> </h3>'; ?> - +<script language="javascript" type="text/javascript"> +$(document).ready (function () { + $("#id_agents").change (agent_changed); +}); +</script> \ No newline at end of file diff --git a/pandora_console/include/functions_visual_map.php b/pandora_console/include/functions_visual_map.php index b201e29bdd..809362bf51 100644 --- a/pandora_console/include/functions_visual_map.php +++ b/pandora_console/include/functions_visual_map.php @@ -89,7 +89,7 @@ function print_pandora_visual_map ($id_layout, $show_links = true, $draw_lines = $z_index = 1; // Print BAD over good // Draw image - echo '<div style="z-index: '.$z_index.'; color: '.$layout_data['label_color'].'; position: absolute; margin-left: '.$layout_data['pos_x'].'px; margin-top:'.$layout_data['pos_y'].'px;" id="layout-data-'.$layout_data['id'].'" class="layout-data">'; + echo '<div style="z-index: '.$z_index.'; '.($layout_data['label_color'][0] == '#' ? 'color: '.$layout_data['label_color'].';' : '').' position: absolute; margin-left: '.$layout_data['pos_x'].'px; margin-top:'.$layout_data['pos_y'].'px;" id="layout-data-'.$layout_data['id'].'" class="layout-data">'; if (!isset($id_agent)) $id_agent = 0; @@ -144,9 +144,11 @@ function print_pandora_visual_map ($id_layout, $show_links = true, $draw_lines = echo "</a>"; - // Print label - echo "<br />"; - echo $layout_data['label']; + // Print label if valid label_color (only testing for starting with #) otherwise print nothing + if ($layout_data['label_color'][0] == '#') { + echo "<br />"; + echo $layout_data['label']; + } echo "</div>"; } diff --git a/pandora_console/include/javascript/pandora.js b/pandora_console/include/javascript/pandora.js index b8a0befa1a..a53acf432b 100644 --- a/pandora_console/include/javascript/pandora.js +++ b/pandora_console/include/javascript/pandora.js @@ -50,3 +50,37 @@ Array.prototype.in_array = function () { } return false; } + +/** + * Fill up select box with id "module" with modules after agent has been selected + * + * @param event that has been triggered + * @param id_agent Agent ID that has been selected + * @param selected Which module(s) have to be selected + */ +function agent_changed (event, id_agent, selected) { + if (id_agent == undefined) + id_agent = this.value; + $('#module').attr ('disabled', 1); + $('#module').empty (); + $('#module').append ($('<option></option>').html ("<?php echo __('Loading'); ?>...").attr ("value", 0)); + jQuery.post ('ajax.php', + {"page": "operation/agentes/ver_agente", + "get_agent_modules_json": 1, + "id_agent": id_agent + }, + function (data) { + $('#module').empty (); + $('#module').append ($('<option></option>').html ("<?php echo __('Any')?>").attr ("value", 0)); + jQuery.each (data, function (i, val) { + s = html_entity_decode (val['nombre']); + $('#module').append ($('<option></option>').html (s).attr ("value", val['id_agente_modulo'])); + $('#module').fadeIn ('normal'); + }); + if (selected != undefined) + $('#module').attr ('value', selected); + $('#module').attr ('disabled', 0); + }, + "json" + ); +}