pandorafms/pandora_console/include/javascript/pandora.js

1667 lines
44 KiB
JavaScript
Raw Normal View History

2009-02-19 Esteban Sanchez <estebans@artica.es> * include/functions_ui.php: Added require_css_file(), require_javascript_file() and require_jquery_file() to add CSS, javascript and jQuery files to the header easily without changing config object. A path parameter is addded to allow the use on enterprise code. * include/functions_db.php: Added get_db_value_filter(), get_db_all_rows_filter() and process_sql_delete(). Fixed delete_agent() style and use these functions. Added process_page_head() from functions_ui.php and changed a bit the config javascript object part. * include/functions_custom_graphs.php: Get results indexed by id on get_user_custom_graphs(). * include/functions.php: Moved process_page_head to functions_ui.php. * godmode/agentes/manage_delete.php: New interface to perform massive agents deletion. * godmode/menu.php: Added new option to massive agents deletion. * general/main_menu.php, godmode/agentes/manage_config.php, godmode/agentes/module_manager_editor.php, godmode/agentes/planned_downtime.php, godmode/alerts/alert_compounds.php, godmode/alerts/alert_list.php, godmode/alerts/configure_alert_compound.php, godmode/alerts/configure_alert_template.php, godmode/reporting/map_builder.php, operation/agentes/networkmap.php, operation/reporting/reporting_viewer.php, operation/visual_console/render_view.php: Use new functions in include CSS and javascript files. * index.php: Bit of style when printing the header so the HTML can be readed easily in a editor. * include/javascript/pandora.js: Added a variable to determine the enterprise directory. * include/styles/pandora.css: Added style for manage_delete.php git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@1467 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2009-02-19 17:10:04 +01:00
var ENTERPRISE_DIR = 'enterprise';
2008-03-06 Sancho Lerena <slerena@gmail.com> Pandora FMS 2.0 development first commit. 1.4 version is now 2.0 * pandoradb_data.sql: Added correct tnetwork_components, fixed ttipo_modulo (categoria values). * include/styles/pandora.css: Added some server icons, tab style for module editor has been improved. * include/functions_db.php: added new functions, lang_string and check_login, and a first review of several functions that currently need change for new config session parameters in array $config[] * include/javascript/pandora.js: Added a new global include for spare javascript functions before included into a few pages. * include/languages/language_en.php: New tokens. * include/help*: New contextual help system. * include/config_process.php: New way to manage config. * include/functions.php: Added new functions to manage global * operation/agentes/estado_ultimopaquete.php: removed old javascript code from there. * operation/agentes/estado_agente.php: Removed references to deprecated field "agent_type". * operation/agentes/tactical.php: Some code cleanup and progressbar issues merged from 1.3.1 branch. Need to add support to new server types and new module types. * operation/servers/view_server.php: Added support to new servers, code cleanup. * reporting/fgraph.php: Code cleanup, changes to use new config method, and a lot of style change. * general/pandora_help.php: New source for contextual help in the way of moodle. * general/footer.php, general/noaccess.php: Code cleanup and uses of new config. * module_manager_editor: New editors for each module family. Need finish and implement EDITION of data, now only inserts data. * godmode/agentes/agent_manager.php: Implemented new server assigment and edition. * godmode/agentes/configurar_agente.php: Small changes that affects module management, visualization and agent management. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@739 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-03-07 17:22:16 +01:00
/* Function to hide/unhide a specific Div id */
function toggleDiv (divid){
2008-06-26 Esteban Sanchez <estebans@artica.es> * ajax.php: Sed id_user in config array. * godmode/menu.php, general/header.php, operation/menu.php: Replaced lang_label with lang_string(). * general/logon_ok.php: Reduced one indentation level. * godmode/agentes/agent_manager.php: Replaced lang_label with lang_string(). Use pandora functions. * include/functions_html.php, godmode/agentes/configurar_agente.php: Tab and blankspaces style correction. * godmode/reporting/map_builder.php: Complete rewritten to provide an intuitive way of build the maps. It's cool, useful and very simple. * godmode/reporting/reporting_builder.php: Deleted an output debug. * godmode/setup/setup.php: Rewritten to use pandora functions. Added a colorpicker for color settings. * include/config.php: Reset pandora password. We must solve things with this file... * include/functions.php: Check if input is an array on safe_input(). Use filename as id in array returned by list_files(). * include/functions_db.php: Renamed return_coordinate_* functions. Style correction. * include/javascript/jquery.js: Updated to 1.2.6. * include/javascript/jquery.ui.datepicker.js: Code minimized. * include/javascript/pandora.js: Style correction. * include/javascript/wz_jsgraphics.js: Added a class to the elements of a line, so it can be modified using javascript. * /include/styles/pandora.css: Added style to some tables dropdowns. Added new styles relative to visual map editor. * operation/reporting/reporting_viewer.php: Style correction. Added jQuery UI. * operation/visual_console/index.php: Use Pandora functions. * operation/visual_console/render_view.php: Drawing the map is now on functions_visual_map.php. Added a countdown if a refresh time is set. Use pandora functions. Style correction. * reporting/fgraph.php: Style correction. Use graphic_error() if there's no data on grafico_modulo_sparse(). * images/trash.png: Added to repository. Image used on trash area on visual map editor. * images/console/background/africa.jpg, images/console/background/asia.jpg, images/console/background/europe.jpg, images/console/background/north_america.jpg, images/console/background/oceania.jpg, images/console/background/shouth_america.jpg, images/console/background/world.jpg: Added to repository. Useful and cool map backgrounds. * include/functions_visual_map.php: Added to repository. Implements visual map functions like drawing the map. * include/javascript/jquery.colorpicker.js: Added to repository. Implements a color picker widget. * /include/javascript/jquery.countdown.js: Added to repository. Implements a countdown widget. * include/javascript/jquery.ui.core.js: Added to repository. jQuery UI core. * include/javascript/jquery.ui.draggable.js: Added to repository. jQuery draggable plugin. * include/javascript/jquery.ui.droppable.js: Added to repository. jQuery droppable plugin. * include/javascript/pandora_visual_console.js: Added to repository. Function useful to visual map interface. * include/languages/countdown_*.js: Added to repository. Countdown localization. * include/languages/date_es_la.js, include/languages/date_gl.js, include/languages/time_es_la.js, include/languages/time_gl.js: Added to repository. Missing localizations. * include/styles/color-picker.css: Added to repository. Colorpicker style sheet. * include/styles/countdown.css: Added to repository. Countdown style sheet. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@899 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-06-26 15:26:48 +02:00
if (document.getElementById(divid).style.display == 'none') {
2008-03-06 Sancho Lerena <slerena@gmail.com> Pandora FMS 2.0 development first commit. 1.4 version is now 2.0 * pandoradb_data.sql: Added correct tnetwork_components, fixed ttipo_modulo (categoria values). * include/styles/pandora.css: Added some server icons, tab style for module editor has been improved. * include/functions_db.php: added new functions, lang_string and check_login, and a first review of several functions that currently need change for new config session parameters in array $config[] * include/javascript/pandora.js: Added a new global include for spare javascript functions before included into a few pages. * include/languages/language_en.php: New tokens. * include/help*: New contextual help system. * include/config_process.php: New way to manage config. * include/functions.php: Added new functions to manage global * operation/agentes/estado_ultimopaquete.php: removed old javascript code from there. * operation/agentes/estado_agente.php: Removed references to deprecated field "agent_type". * operation/agentes/tactical.php: Some code cleanup and progressbar issues merged from 1.3.1 branch. Need to add support to new server types and new module types. * operation/servers/view_server.php: Added support to new servers, code cleanup. * reporting/fgraph.php: Code cleanup, changes to use new config method, and a lot of style change. * general/pandora_help.php: New source for contextual help in the way of moodle. * general/footer.php, general/noaccess.php: Code cleanup and uses of new config. * module_manager_editor: New editors for each module family. Need finish and implement EDITION of data, now only inserts data. * godmode/agentes/agent_manager.php: Implemented new server assigment and edition. * godmode/agentes/configurar_agente.php: Small changes that affects module management, visualization and agent management. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@739 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-03-07 17:22:16 +01:00
document.getElementById(divid).style.display = 'block';
}
else {
2008-03-06 Sancho Lerena <slerena@gmail.com> Pandora FMS 2.0 development first commit. 1.4 version is now 2.0 * pandoradb_data.sql: Added correct tnetwork_components, fixed ttipo_modulo (categoria values). * include/styles/pandora.css: Added some server icons, tab style for module editor has been improved. * include/functions_db.php: added new functions, lang_string and check_login, and a first review of several functions that currently need change for new config session parameters in array $config[] * include/javascript/pandora.js: Added a new global include for spare javascript functions before included into a few pages. * include/languages/language_en.php: New tokens. * include/help*: New contextual help system. * include/config_process.php: New way to manage config. * include/functions.php: Added new functions to manage global * operation/agentes/estado_ultimopaquete.php: removed old javascript code from there. * operation/agentes/estado_agente.php: Removed references to deprecated field "agent_type". * operation/agentes/tactical.php: Some code cleanup and progressbar issues merged from 1.3.1 branch. Need to add support to new server types and new module types. * operation/servers/view_server.php: Added support to new servers, code cleanup. * reporting/fgraph.php: Code cleanup, changes to use new config method, and a lot of style change. * general/pandora_help.php: New source for contextual help in the way of moodle. * general/footer.php, general/noaccess.php: Code cleanup and uses of new config. * module_manager_editor: New editors for each module family. Need finish and implement EDITION of data, now only inserts data. * godmode/agentes/agent_manager.php: Implemented new server assigment and edition. * godmode/agentes/configurar_agente.php: Small changes that affects module management, visualization and agent management. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@739 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-03-07 17:22:16 +01:00
document.getElementById(divid).style.display = 'none';
}
}
2008-06-26 Esteban Sanchez <estebans@artica.es> * ajax.php: Sed id_user in config array. * godmode/menu.php, general/header.php, operation/menu.php: Replaced lang_label with lang_string(). * general/logon_ok.php: Reduced one indentation level. * godmode/agentes/agent_manager.php: Replaced lang_label with lang_string(). Use pandora functions. * include/functions_html.php, godmode/agentes/configurar_agente.php: Tab and blankspaces style correction. * godmode/reporting/map_builder.php: Complete rewritten to provide an intuitive way of build the maps. It's cool, useful and very simple. * godmode/reporting/reporting_builder.php: Deleted an output debug. * godmode/setup/setup.php: Rewritten to use pandora functions. Added a colorpicker for color settings. * include/config.php: Reset pandora password. We must solve things with this file... * include/functions.php: Check if input is an array on safe_input(). Use filename as id in array returned by list_files(). * include/functions_db.php: Renamed return_coordinate_* functions. Style correction. * include/javascript/jquery.js: Updated to 1.2.6. * include/javascript/jquery.ui.datepicker.js: Code minimized. * include/javascript/pandora.js: Style correction. * include/javascript/wz_jsgraphics.js: Added a class to the elements of a line, so it can be modified using javascript. * /include/styles/pandora.css: Added style to some tables dropdowns. Added new styles relative to visual map editor. * operation/reporting/reporting_viewer.php: Style correction. Added jQuery UI. * operation/visual_console/index.php: Use Pandora functions. * operation/visual_console/render_view.php: Drawing the map is now on functions_visual_map.php. Added a countdown if a refresh time is set. Use pandora functions. Style correction. * reporting/fgraph.php: Style correction. Use graphic_error() if there's no data on grafico_modulo_sparse(). * images/trash.png: Added to repository. Image used on trash area on visual map editor. * images/console/background/africa.jpg, images/console/background/asia.jpg, images/console/background/europe.jpg, images/console/background/north_america.jpg, images/console/background/oceania.jpg, images/console/background/shouth_america.jpg, images/console/background/world.jpg: Added to repository. Useful and cool map backgrounds. * include/functions_visual_map.php: Added to repository. Implements visual map functions like drawing the map. * include/javascript/jquery.colorpicker.js: Added to repository. Implements a color picker widget. * /include/javascript/jquery.countdown.js: Added to repository. Implements a countdown widget. * include/javascript/jquery.ui.core.js: Added to repository. jQuery UI core. * include/javascript/jquery.ui.draggable.js: Added to repository. jQuery draggable plugin. * include/javascript/jquery.ui.droppable.js: Added to repository. jQuery droppable plugin. * include/javascript/pandora_visual_console.js: Added to repository. Function useful to visual map interface. * include/languages/countdown_*.js: Added to repository. Countdown localization. * include/languages/date_es_la.js, include/languages/date_gl.js, include/languages/time_es_la.js, include/languages/time_gl.js: Added to repository. Missing localizations. * include/styles/color-picker.css: Added to repository. Colorpicker style sheet. * include/styles/countdown.css: Added to repository. Countdown style sheet. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@899 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-06-26 15:26:48 +02:00
function winopeng (url, wid) {
2018-06-12 16:54:45 +02:00
open (url, wid,"width=1000,height=550,status=no,toolbar=no,menubar=no,scrollbars=yes,resizable=yes");
// WARNING !! Internet Explorer DOESNT SUPPORT "-" CARACTERS IN WINDOW HANDLE VARIABLE
status = wid;
}
function winopeng_var (url, wid, width, height) {
open (url, wid,"width="+width+",height="+height+",status=no,toolbar=no,menubar=no,scrollbar=yes");
// WARNING !! Internet Explorer DOESNT SUPPORT "-" CARACTERS IN WINDOW HANDLE VARIABLE
status = wid;
2008-03-06 Sancho Lerena <slerena@gmail.com> Pandora FMS 2.0 development first commit. 1.4 version is now 2.0 * pandoradb_data.sql: Added correct tnetwork_components, fixed ttipo_modulo (categoria values). * include/styles/pandora.css: Added some server icons, tab style for module editor has been improved. * include/functions_db.php: added new functions, lang_string and check_login, and a first review of several functions that currently need change for new config session parameters in array $config[] * include/javascript/pandora.js: Added a new global include for spare javascript functions before included into a few pages. * include/languages/language_en.php: New tokens. * include/help*: New contextual help system. * include/config_process.php: New way to manage config. * include/functions.php: Added new functions to manage global * operation/agentes/estado_ultimopaquete.php: removed old javascript code from there. * operation/agentes/estado_agente.php: Removed references to deprecated field "agent_type". * operation/agentes/tactical.php: Some code cleanup and progressbar issues merged from 1.3.1 branch. Need to add support to new server types and new module types. * operation/servers/view_server.php: Added support to new servers, code cleanup. * reporting/fgraph.php: Code cleanup, changes to use new config method, and a lot of style change. * general/pandora_help.php: New source for contextual help in the way of moodle. * general/footer.php, general/noaccess.php: Code cleanup and uses of new config. * module_manager_editor: New editors for each module family. Need finish and implement EDITION of data, now only inserts data. * godmode/agentes/agent_manager.php: Implemented new server assigment and edition. * godmode/agentes/configurar_agente.php: Small changes that affects module management, visualization and agent management. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@739 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-03-07 17:22:16 +01:00
}
function open_help (help_id, home_url, id_user) {
open (home_url+"general/pandora_help.php?id="+help_id+"&id_user="+id_user, "pandorahelp", "width=650,height=500,status=0,toolbar=0,menubar=0,scrollbars=1,location=0");
2008-06-17 Esteban Sanchez <estebans@artica.es> * ajax.php: Added to repository. AJAX interface for Pandora. A new time is coming... * pandoradb.sql: Added id_group to treport. A report is now assigned to a group of agents. Changes in treport_content to add an order field, drop sla fields and use an enum for the type. NOTE: This will break all your current defined reports, update under your responsabillity. Added table treport_content_sla_combined to define SLAs in the SLA types reports. * godmode/reporting/graph_builder.php: Use Pandora functions. Adde javascript code to display the module icon when changing from the dropdown menu. * godmode/reporting/reporting_builder.php: Almost complet rewritten to use Pandora HTML functions. Style correction. * include/functions.php: Added new report types. Style correction. * include/functions_db.php: Use Pandora database functions to get simple values. Added functions get_agents_in_group(), get_modules_in_agent(), get_simple_alerts_in_agent(), get_combined_alerts_in_agent(), get_alerts_in_agent(), get_monitor_downs_in_period(), get_monitor_last_down_timestamp_in_period(), get_alert_fires_in_period(), get_alert_last_fire_timestamp_in_period(). Deleted debug output and fixed calling to an inexistent function in return_moduledata_sum_value(). * include/functions_html.php: Tab style correction. Thanks to Ramon for the advice. Fixed some errors on print_table that was causing not to work fine if rowclass or colspan was defined. * include/functions_reporting.php: Adde date support to return_module_SLA(), event_reporting(). Added alert_reporting(), monitor_health_reporting(), general_group_reporting() and agents_detailed_reporting() to implement new report types. Style correction. * include/javascript/pandora.js: Added html_entity_decode() function to decode some AJAX results. * javascript/jquery.js: Added to repository. jQuery version 1.2.4a * include/javascript/jquery.timeentry.js: jQuery plugin to manage time inputs. * include/javascript/jquery.ui.datepicker.js: jQuery plugin to manage date inputs in a dropdown calendar. * include/languages/date_*.js, include/languages/time_*.js: Added to repository. Translation of date and time strings for the new calendar javascript support. * include/languages/language_en.php: Added new strings relatives to reports. * include/languages/language_de.php, include/languages/language_fr.php, include/languages/language_gl.php, include/languages/language_pt_br.php: Fixed a variable name. * godmode/groups/group_list.php: Avoid the use of an extra indentation by returning if no success on comprueba_login(). * include/styles/pandora.css: Add some classes. Tab style correction. * operation/agentes/ver_agente.php: Added AJAX support to agent operations. * operation/reporting/graph_viewer.php: Period dropdown selection improved and printed with Pandora functions. * operation/reporting/reporting_viewer.php: Massive rewritten. Implemented date and time support, added new report types, use Pandora functions... * reporting/fgraph.php: Documentation fix. Added a new graphic to show monitors health. * godmode/agentes/agent_manager.php, operation/reporting/custom_reporting.php: Style correction. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@869 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-06-17 16:30:44 +02:00
}
/**
* Decode HTML entities into characters. Useful when receiving something from AJAX
*
* @param str String to convert
*
* @retval str with entities decoded
*/
function js_html_entity_decode (str) {
2008-06-17 Esteban Sanchez <estebans@artica.es> * ajax.php: Added to repository. AJAX interface for Pandora. A new time is coming... * pandoradb.sql: Added id_group to treport. A report is now assigned to a group of agents. Changes in treport_content to add an order field, drop sla fields and use an enum for the type. NOTE: This will break all your current defined reports, update under your responsabillity. Added table treport_content_sla_combined to define SLAs in the SLA types reports. * godmode/reporting/graph_builder.php: Use Pandora functions. Adde javascript code to display the module icon when changing from the dropdown menu. * godmode/reporting/reporting_builder.php: Almost complet rewritten to use Pandora HTML functions. Style correction. * include/functions.php: Added new report types. Style correction. * include/functions_db.php: Use Pandora database functions to get simple values. Added functions get_agents_in_group(), get_modules_in_agent(), get_simple_alerts_in_agent(), get_combined_alerts_in_agent(), get_alerts_in_agent(), get_monitor_downs_in_period(), get_monitor_last_down_timestamp_in_period(), get_alert_fires_in_period(), get_alert_last_fire_timestamp_in_period(). Deleted debug output and fixed calling to an inexistent function in return_moduledata_sum_value(). * include/functions_html.php: Tab style correction. Thanks to Ramon for the advice. Fixed some errors on print_table that was causing not to work fine if rowclass or colspan was defined. * include/functions_reporting.php: Adde date support to return_module_SLA(), event_reporting(). Added alert_reporting(), monitor_health_reporting(), general_group_reporting() and agents_detailed_reporting() to implement new report types. Style correction. * include/javascript/pandora.js: Added html_entity_decode() function to decode some AJAX results. * javascript/jquery.js: Added to repository. jQuery version 1.2.4a * include/javascript/jquery.timeentry.js: jQuery plugin to manage time inputs. * include/javascript/jquery.ui.datepicker.js: jQuery plugin to manage date inputs in a dropdown calendar. * include/languages/date_*.js, include/languages/time_*.js: Added to repository. Translation of date and time strings for the new calendar javascript support. * include/languages/language_en.php: Added new strings relatives to reports. * include/languages/language_de.php, include/languages/language_fr.php, include/languages/language_gl.php, include/languages/language_pt_br.php: Fixed a variable name. * godmode/groups/group_list.php: Avoid the use of an extra indentation by returning if no success on comprueba_login(). * include/styles/pandora.css: Add some classes. Tab style correction. * operation/agentes/ver_agente.php: Added AJAX support to agent operations. * operation/reporting/graph_viewer.php: Period dropdown selection improved and printed with Pandora functions. * operation/reporting/reporting_viewer.php: Massive rewritten. Implemented date and time support, added new report types, use Pandora functions... * reporting/fgraph.php: Documentation fix. Added a new graphic to show monitors health. * godmode/agentes/agent_manager.php, operation/reporting/custom_reporting.php: Style correction. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@869 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-06-17 16:30:44 +02:00
if (! str)
return "";
str2 = str.replace (/</g, "&lt;").
replace (/>/g,"&gt;").replace(/&lt;/g,'<')
.replace(/&gt;/g,'>').replace(/&#92;/g,'\\')
.replace(/&quot;/g,'\"').replace(/&#039;/g,'\'')
.replace(/&amp;/g,'&').replace(/&#x20;/g,' ')
.replace(/&#13;/g, '\r').replace(/&#10;/g, '\n');
return str2;
2008-06-17 Esteban Sanchez <estebans@artica.es> * ajax.php: Added to repository. AJAX interface for Pandora. A new time is coming... * pandoradb.sql: Added id_group to treport. A report is now assigned to a group of agents. Changes in treport_content to add an order field, drop sla fields and use an enum for the type. NOTE: This will break all your current defined reports, update under your responsabillity. Added table treport_content_sla_combined to define SLAs in the SLA types reports. * godmode/reporting/graph_builder.php: Use Pandora functions. Adde javascript code to display the module icon when changing from the dropdown menu. * godmode/reporting/reporting_builder.php: Almost complet rewritten to use Pandora HTML functions. Style correction. * include/functions.php: Added new report types. Style correction. * include/functions_db.php: Use Pandora database functions to get simple values. Added functions get_agents_in_group(), get_modules_in_agent(), get_simple_alerts_in_agent(), get_combined_alerts_in_agent(), get_alerts_in_agent(), get_monitor_downs_in_period(), get_monitor_last_down_timestamp_in_period(), get_alert_fires_in_period(), get_alert_last_fire_timestamp_in_period(). Deleted debug output and fixed calling to an inexistent function in return_moduledata_sum_value(). * include/functions_html.php: Tab style correction. Thanks to Ramon for the advice. Fixed some errors on print_table that was causing not to work fine if rowclass or colspan was defined. * include/functions_reporting.php: Adde date support to return_module_SLA(), event_reporting(). Added alert_reporting(), monitor_health_reporting(), general_group_reporting() and agents_detailed_reporting() to implement new report types. Style correction. * include/javascript/pandora.js: Added html_entity_decode() function to decode some AJAX results. * javascript/jquery.js: Added to repository. jQuery version 1.2.4a * include/javascript/jquery.timeentry.js: jQuery plugin to manage time inputs. * include/javascript/jquery.ui.datepicker.js: jQuery plugin to manage date inputs in a dropdown calendar. * include/languages/date_*.js, include/languages/time_*.js: Added to repository. Translation of date and time strings for the new calendar javascript support. * include/languages/language_en.php: Added new strings relatives to reports. * include/languages/language_de.php, include/languages/language_fr.php, include/languages/language_gl.php, include/languages/language_pt_br.php: Fixed a variable name. * godmode/groups/group_list.php: Avoid the use of an extra indentation by returning if no success on comprueba_login(). * include/styles/pandora.css: Add some classes. Tab style correction. * operation/agentes/ver_agente.php: Added AJAX support to agent operations. * operation/reporting/graph_viewer.php: Period dropdown selection improved and printed with Pandora functions. * operation/reporting/reporting_viewer.php: Massive rewritten. Implemented date and time support, added new report types, use Pandora functions... * reporting/fgraph.php: Documentation fix. Added a new graphic to show monitors health. * godmode/agentes/agent_manager.php, operation/reporting/custom_reporting.php: Style correction. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@869 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-06-17 16:30:44 +02:00
}
2008-06-26 Esteban Sanchez <estebans@artica.es> * ajax.php: Sed id_user in config array. * godmode/menu.php, general/header.php, operation/menu.php: Replaced lang_label with lang_string(). * general/logon_ok.php: Reduced one indentation level. * godmode/agentes/agent_manager.php: Replaced lang_label with lang_string(). Use pandora functions. * include/functions_html.php, godmode/agentes/configurar_agente.php: Tab and blankspaces style correction. * godmode/reporting/map_builder.php: Complete rewritten to provide an intuitive way of build the maps. It's cool, useful and very simple. * godmode/reporting/reporting_builder.php: Deleted an output debug. * godmode/setup/setup.php: Rewritten to use pandora functions. Added a colorpicker for color settings. * include/config.php: Reset pandora password. We must solve things with this file... * include/functions.php: Check if input is an array on safe_input(). Use filename as id in array returned by list_files(). * include/functions_db.php: Renamed return_coordinate_* functions. Style correction. * include/javascript/jquery.js: Updated to 1.2.6. * include/javascript/jquery.ui.datepicker.js: Code minimized. * include/javascript/pandora.js: Style correction. * include/javascript/wz_jsgraphics.js: Added a class to the elements of a line, so it can be modified using javascript. * /include/styles/pandora.css: Added style to some tables dropdowns. Added new styles relative to visual map editor. * operation/reporting/reporting_viewer.php: Style correction. Added jQuery UI. * operation/visual_console/index.php: Use Pandora functions. * operation/visual_console/render_view.php: Drawing the map is now on functions_visual_map.php. Added a countdown if a refresh time is set. Use pandora functions. Style correction. * reporting/fgraph.php: Style correction. Use graphic_error() if there's no data on grafico_modulo_sparse(). * images/trash.png: Added to repository. Image used on trash area on visual map editor. * images/console/background/africa.jpg, images/console/background/asia.jpg, images/console/background/europe.jpg, images/console/background/north_america.jpg, images/console/background/oceania.jpg, images/console/background/shouth_america.jpg, images/console/background/world.jpg: Added to repository. Useful and cool map backgrounds. * include/functions_visual_map.php: Added to repository. Implements visual map functions like drawing the map. * include/javascript/jquery.colorpicker.js: Added to repository. Implements a color picker widget. * /include/javascript/jquery.countdown.js: Added to repository. Implements a countdown widget. * include/javascript/jquery.ui.core.js: Added to repository. jQuery UI core. * include/javascript/jquery.ui.draggable.js: Added to repository. jQuery draggable plugin. * include/javascript/jquery.ui.droppable.js: Added to repository. jQuery droppable plugin. * include/javascript/pandora_visual_console.js: Added to repository. Function useful to visual map interface. * include/languages/countdown_*.js: Added to repository. Countdown localization. * include/languages/date_es_la.js, include/languages/date_gl.js, include/languages/time_es_la.js, include/languages/time_gl.js: Added to repository. Missing localizations. * include/styles/color-picker.css: Added to repository. Colorpicker style sheet. * include/styles/countdown.css: Added to repository. Countdown style sheet. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@899 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2008-06-26 15:26:48 +02:00
/**
* Function to search an element in an array.
*
* Extends the array object to use it like a method in an array object. Example:
* <code>
a = Array (4, 7, 9);
alert (a.in_array (4)); // true
alert (a.in_array (5)); // false
*/
Array.prototype.in_array = function () {
for (var j in this) {
if (this[j] == arguments[0])
return true;
}
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 ("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 ();
if (typeof($(document).data('text_for_module')) != 'undefined') {
$('#module').append ($('<option></option>').html ($(document).data('text_for_module')).attr("value", 0).prop('selected', true));
}
else {
if (typeof(data['any_text']) != 'undefined') {
$('#module').append ($('<option></option>').html (data['any_text']).attr ("value", 0).prop('selected', true));
}
else {
var anyText = $("#any_text").html(); //Trick for catch the translate text.
if (anyText == null) {
anyText = 'Any';
}
$('#module').append ($('<option></option>').html (anyText).attr ("value", 0).prop('selected', true));
}
}
jQuery.each (data, function (i, val) {
s = js_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').removeAttr('disabled');
},
"json"
);
}
/**
* Util for check is empty object
*
* @param obj the object to check
* @returns {Boolean} True it is empty
*/
function isEmptyObject(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
/**
* Fill up select box with id "module" with modules after agent has been selected, but this not empty the select box.s
*
* @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_by_multiple_agents (event, id_agent, selected) {
2015-08-03 13:32:46 +02:00
// Hack to avoid certain module types
var module_types_excluded = [];
if (typeof $("input.module_types_excluded") !== 'undefined') {
try {
$("input.module_types_excluded").each(function(index, el) {
var module_type = parseInt($(el).val());
if (module_type !== NaN)
module_types_excluded.push(module_type);
});
}
catch (error) {
}
}
var module_status = -1;
if (typeof $("#status_module") !== 'undefined') {
try {
module_status = $("#status_module").val();
}
catch (error) {
}
}
// Module name
var module_name = $("#text-module_filter").val();
var idAgents = Array();
jQuery.each ($("#id_agents option:selected"), function (i, val) {
//val() because the var is same <option val="NNN"></option>
idAgents.push($(val).val());
});
var tags_to_search = $('#tags1').val();
//Hack to find only enabled modules
//Pass a flag as global var
find_modules = 'all';
if (typeof show_only_enabled_modules !== 'undefined'
&& show_only_enabled_modules) {
find_modules = 'enabled';
}
var selection_mode = $('#modules_selection_mode').val();
if (typeof selection_mode === 'undefined') {
selection_mode = 'common';
}
var serialized = $('#hidden-serialized').val();
if (typeof serialized === 'undefined') {
serialized = '';
}
$('#module')
.prop('disabled', true)
.empty()
.append($('<option></option>')
.html("Loading...")
.attr("value", 0));
// Check if homedir was received like a JSON
var homedir = '.';
var id_server = 0;
if (typeof event !== 'undefined' && typeof event.data !== 'undefined') {
if (event.data != null) {
if (typeof event.data !== 'undefined') {
if (typeof event.data.homedir !== 'undefined') {
homedir = event.data.homedir;
}
if (typeof event.data.metaconsole !== 'undefined'
&& event.data.metaconsole) {
id_server = $("#" + event.data.id_server).val();
}
}
}
}
jQuery.post (homedir + '/ajax.php',
{
"page": "operation/agentes/ver_agente",
"get_agent_modules_json_for_multiple_agents": 1,
"id_agent[]": idAgents,
"tags[]": tags_to_search,
"all": find_modules,
2015-08-03 13:32:46 +02:00
"module_types_excluded[]": module_types_excluded,
"name": module_name,
"selection_mode": selection_mode,
"serialized": serialized,
"id_server": id_server,
"status_module": module_status
},
function (data) {
$('#module').empty ();
if (isEmptyObject(data)) {
var noneText = $("#none_text").html(); //Trick for catch the translate text.
if (noneText == null) {
noneText = 'None';
}
$('#module')
.append ($('<option></option>')
.html(noneText)
.attr ("None", "")
.prop('selected', true));
return;
}
if (typeof($(document).data('text_for_module')) != 'undefined') {
$('#module')
.append ($('<option></option>')
.html ($(document)
.data('text_for_module'))
.attr("value", 0)
.prop('selected', true));
}
else {
if (typeof(data['any_text']) != 'undefined') {
$('#module')
.append ($('<option></option>')
.html (data['any_text'])
.attr ("value", 0)
.prop('selected', true));
}
else {
var anyText = $("#any_text").html(); //Trick for catch the translate text.
if (anyText == null) {
anyText = 'Any';
}
$('#module')
.append ($('<option></option>')
.html (anyText)
.attr ("value", 0)
.prop('selected', true));
}
}
jQuery.each (data, function (i, val) {
var s = js_html_entity_decode(val);
$('#module')
.append ($('<option></option>')
.html (s)
.attr ("value", i)
.attr("title", s));
$('#module').fadeIn ('normal');
});
if (typeof selected !== 'undefined')
$('#module').attr ('value', selected);
$('#module')
.css ("max-width", "")
.prop('disabled', false);
if (typeof(function_hook_loaded_module_list) == 'function') {
function_hook_loaded_module_list();
}
},
"json");
}
/**
* Fill up select box with id "module" with modules with alerts of one template
* after agent has been selected, but this not empty the select box.s
*
* @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_by_multiple_agents_with_alerts (event, id_agent, selected) {
var idAgents = Array();
jQuery.each ($("#id_agents option:selected"), function (i, val) {
//val() because the var is same <option val="NNN"></option>
idAgents.push($(val).val());
});
var selection_mode = $('#modules_selection_mode').val();
if(selection_mode == undefined) {
selection_mode = 'common';
}
template = $('#id_alert_template option:selected').val();
$('#module').attr ('disabled', 1);
$('#module').empty ();
$('#module').append ($('<option></option>').html ("Loading...").attr ("value", 0));
jQuery.post ('ajax.php',
{"page": "operation/agentes/ver_agente",
"get_agent_modules_multiple_alerts_json_for_multiple_agents": 1,
"template": template,
"id_agent[]": idAgents,
"selection_mode": selection_mode
},
function (data) {
$('#module').empty ();
if (typeof($(document).data('text_for_module')) != 'undefined') {
$('#module').append ($('<option></option>').html ($(document).data('text_for_module')).attr("value", 0).prop('selected', true));
}
else {
if (typeof(data['any_text']) != 'undefined') {
$('#module').append ($('<option></option>').html (data['any_text']).attr ("value", 0).prop('selected', true));
}
else {
var anyText = $("#any_text").html(); //Trick for catch the translate text.
if (anyText == null) {
anyText = 'Any';
}
$('#module').append ($('<option></option>').html (anyText).attr ("value", 0).prop('selected', true));
}
}
jQuery.each (data, function (i, val) {
s = js_html_entity_decode(val);
$('#module').append ($('<option></option>').html (s).attr ("value", val));
$('#module').fadeIn ('normal');
});
if (selected != undefined)
$('#module').attr ('value', selected);
$('#module').removeAttr('disabled');
},
"json"
);
}
/**
* Fill up select box with id "module" with modules with alerts of one or more templates
* before agent has been selected, but this not empty the select box.s
*
* @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 alert_templates_changed_by_multiple_agents_with_alerts (event, id_agent, selected) {
var idAgents = Array();
jQuery.each ($("#id_agents option:selected"), function (i, val) {
//val() because the var is same <option val="NNN"></option>
idAgents.push($(val).val());
});
var selection_mode = $('#modules_selection_mode').val();
if(selection_mode == undefined) {
selection_mode = 'common';
}
templates = Array();
jQuery.each ($("#id_alert_templates option:selected"), function (i, val) {
//val() because the var is same <option val="NNN"></option>
templates.push($(val).val());
});
$('#module').attr ('disabled', 1);
$('#module').empty ();
$('#module').append ($('<option></option>').html ("Loading...").attr ("value", 0));
jQuery.post ('ajax.php',
{"page": "operation/agentes/ver_agente",
"get_agent_modules_alerts_json_for_multiple_agents": 1,
"templates[]": templates,
"id_agent[]": idAgents,
"selection_mode": selection_mode
},
function (data) {
$('#module').empty ();
if (typeof($(document).data('text_for_module')) != 'undefined') {
$('#module').append ($('<option></option>').html ($(document).data('text_for_module')).attr("value", 0).prop('selected', true));
}
else {
if (typeof(data['any_text']) != 'undefined') {
$('#module').append ($('<option></option>').html (data['any_text']).attr ("value", 0).prop('selected', true));
}
else {
var anyText = $("#any_text").html(); //Trick for catch the translate text.
if (anyText == null) {
anyText = 'Any';
}
$('#module').append ($('<option></option>').html (anyText).attr ("value", 0).prop('selected', true));
}
}
jQuery.each (data, function (i, val) {
s = js_html_entity_decode(val);
$('#module').append ($('<option></option>').html (s).attr ("value", val));
$('#module').fadeIn ('normal');
});
if (selected != undefined)
$('#module').attr ('value', selected);
$('#module').removeAttr('disabled');
},
"json"
);
}
/**
* Fill up select box with id "agent" with agents after module has been selected, but this not empty the select box.s
*
* @param event that has been triggered
* @param id_module Module ID that has been selected
* @param selected Which agent(s) have to be selected
*/
function module_changed_by_multiple_modules (event, id_module, selected) {
var idModules = Array();
jQuery.each ($("#module_name option:selected"), function (i, val) {
//val() because the var is same <option val="NNN"></option>
idModules.push($(val).val());
});
$('#agents').attr ('disabled', 1);
$('#agents').empty ();
$('#agents').append ($('<option></option>').html ("Loading...").attr ("value", 0));
var status_module = -1;
if (typeof $("#status_module") !== 'undefined') {
try {
status_module = $("#status_module").val();
}
catch (error) {
}
}
var selection_mode = $('#agents_selection_mode').val();
if(selection_mode == undefined) {
selection_mode = 'common';
}
jQuery.post('ajax.php',
{"page": "operation/agentes/ver_agente",
"get_agents_json_for_multiple_modules": 1,
"status_module": status_module,
"module_name[]": idModules,
"selection_mode": selection_mode
},
function (data) {
$('#agents')
.append ($('<option></option>').html ("Loading...").attr ("value", 0));
$('#agents').empty ();
if (isEmptyObject(data)) {
var noneText = $("#none_text").html(); //Trick for catch the translate text.
if (noneText == null) {
noneText = 'None';
}
$('#agents')
.append($('<option></option>').html (noneText).attr ("None", "").prop('selected', true));
return;
}
if (typeof($(document).data('text_for_module')) != 'undefined') {
$('#agents')
.append ($('<option></option>').html ($(document).data('text_for_module')).attr("value", 0).prop('selected', true));
}
else {
if (typeof(data['any_text']) != 'undefined') {
$('#agents')
.append ($('<option></option>').html (data['any_text']).attr ("value", 0).prop('selected', true));
}
else {
var anyText = $("#any_text").html(); //Trick for catch the translate text.
if (anyText == null) {
anyText = 'Any';
}
$('#agents')
.append($('<option></option>').html (anyText).attr ("value", 0).prop('selected', true));
}
}
jQuery.each (data, function (i, val) {
s = js_html_entity_decode(val);
$('#agents')
.append ($('<option></option>').html (s).attr ("value", val));
$('#agents').fadeIn ('normal');
});
if (selected != undefined)
$('#agents').attr ('value', selected);
$('#agents').removeAttr('disabled');
},
"json"
);
}
/**
* Fill up select box with id "module" with modules after agent has been selected, but this not empty the select box.s
*
* @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_by_multiple_agents_id (event, id_agent, selected) {
var idAgents = Array();
jQuery.each ($("#id_agents option:selected"), function (i, val) {
//val() because the var is same <option val="NNN"></option>
idAgents.push($(val).val());
});
$('#module').attr ('disabled', 1);
$('#module').empty ();
$('#module').append ($('<option></option>').html ("Loading...").attr ("value", 0));
jQuery.post ('ajax.php',
{"page": "operation/agentes/ver_agente",
"get_agent_modules_json_for_multiple_agents_id": 1,
"id_agent[]": idAgents
},
function (data) {
$('#module').empty ();
if (typeof($(document).data('text_for_module')) != 'undefined') {
$('#module').append ($('<option></option>').html ($(document).data('text_for_module')).attr("value", 0).prop('selected', true));
}
else {
if (typeof(data['any_text']) != 'undefined') {
$('#module').append ($('<option></option>').html (data['any_text']).attr ("value", 0).prop('selected', true));
}
else {
var anyText = $("#any_text").html(); //Trick for catch the translate text.
if (anyText == null) {
anyText = 'Any';
}
$('#module').append ($('<option></option>').html (anyText).attr ("value", 0).prop('selected', true));
}
}
jQuery.each (data, function (i, val) {
s = js_html_entity_decode(val['nombre']);
//$('#module').append ($('<option></option>').html (s).attr ("value", val));
$('#module').append ($('<option></option>').html (s).attr ("value", val['id_agente_modulo']));
$('#module').fadeIn ('normal');
});
if (selected != undefined)
$('#module').attr ('value', selected);
$('#module').removeAttr('disabled');
},
"json"
);
}
function post_process_select_init(name) {
// Manual mode is hidden by default
$('#' + name + '_manual').hide();
$('#' + name + '_default').show();
}
2017-09-14 12:10:41 +02:00
function post_process_select_init_unit(name,selected) {
// Manual mode is hidden by default
$('#' + name + '_manual').hide();
$('#' + name + '_default').show();
if(selected != "") {
var select_or_text = false;
$('#' + name + '_select option').each(function(i,item) {
if ($(item).val() == selected) {
select_or_text = true;
return false;
}
});
if(select_or_text) {
$('#' + name + '_select option[value='+ selected +']').attr("selected",true);
$('#text-' + name + '_text').val("");
} else {
$('#' + name + '_select option[value=none]').attr("selected",true);
$('#' + name + '_default').hide();
$('#' + name + '_manual').show();
}
} else {
$('#' + name + '_select option[value=none]').attr("selected",true);
}
$('#' + name + '_select').change(function() {
var value = $('#' + name + '_select').val();
$('#' + name + '_select option[value='+ value +']').attr("selected",true);
});
}
function post_process_select_events_unit(name,selected) {
$('.' + name + '_toggler').click(function() {
$('#' + name + '_select option[value=none]').attr("selected",true);
$('#text-' + name + '_text').val("");
toggleBoth(name);
});
}
function post_process_select_events(name) {
$('.' + name + '_toggler').click(function() {
var value = $('#text-' + name + '_text').val();
var count = $('#' + name + '_select option')
.filter(function(i, item) {
if (Number($(item).val()) == Number(value))
return true;
else return false;
})
.length;
if (count != 1) {
$('#' + name + '_select')
.append($("<option>").val(value).text(value));
}
$('#' + name + '_select option')
.filter(function(i, item) {
if (Number($(item).val()) == Number(value))
return true;
else return false;
})
.prop("selected", true);
//~ $('#' + name + '_select').val(value);
toggleBoth(name);
$('#text-' + name + '_text').focus();
});
// When select a default period, is setted in seconds
$('#' + name + '_select').change(function() {
var value = $('#' + name + '_select').val();
$('.' + name).val(value);
$('#text-' + name + '_text').val(value);
});
$('#text-' + name + '_text').keyup (function () {
var value = $('#text-' + name + '_text').val();
if (isNaN(value)) {
value = 0;
$('#text-' + name + '_text').val(value);
}
else {
$('.' + name).val(value);
}
});
}
/**
* Init values for html_extended_select_for_time
*
* This function initialize the values of the control
*
* @param name string with the name of the select for time
*/
function period_select_init(name) {
// Manual mode is hidden by default
$('#' + name + '_manual').hide();
$('#' + name + '_default').show();
// If the text input is empty, we put on it 5 minutes by default
if ($('#text-' + name + '_text').val() == '') {
$('#text-' + name + '_text').val(300);
// Set the value in the hidden field too
$('.' + name).val(300);
if ($('#' + name + '_select option:eq(0)').val() == 0) {
$('#' + name + '_select option:eq(2)')
.prop('selected', true);
}
else {
$('#' + name + '_select option:eq(1)')
.prop('selected', true);
}
}
else if ($('#text-' + name + '_text').val() == 0) {
$('#' + name + '_units option:last').prop('selected', false);
$('#' + name + '_manual').show();
$('#' + name + '_default').hide();
}
}
/**
* Manage events into html_extended_select_for_time
*
* This function has all the events to manage the extended select
* for time
*
* @param name string with the name of the select for time
*/
function period_select_events(name) {
$('.' + name + '_toggler').click(function() {
toggleBoth(name);
$('#text-' + name + '_text').focus();
});
adjustTextUnits(name);
// When select a default period, is setted in seconds
$('#' + name + '_select').change(function() {
var value = $('#' + name + '_select').val();
if (value == -1) {
value = 300;
toggleBoth(name);
$('#text-' + name + '_text').focus();
}
$('.' + name).val(value);
$('#text-' + name + '_text').val(value);
adjustTextUnits(name);
});
// When select a custom units, the default period changes to
// 'custom' and the time in seconds is calculated into hidden input
$('#' + name + '_units').change(function() {
selectFirst(name);
calculateSeconds(name);
});
// When write any character into custom input, it check to convert
// it to integer and calculate in seconds into hidden input
$('#text-' + name + '_text').keyup (function () {
var cleanValue = parseInt($('#text-' + name + '_text').val());
if (isNaN(cleanValue)) {
cleanValue = '';
}
$('#text-' + name + '_text').val(cleanValue);
selectFirst(name + '_select');
calculateSeconds(name);
});
}
function period_set_value(name, value) {
$("#text-" + name + "_text").val(value);
adjustTextUnits(name);
calculateSeconds(name);
selectFirst(name + '_select');
$("#" + name + "_manual").hide();
$("#" + name + "_default").show();
}
/**
*
* Select first option of a select if is not value=0
*
*/
function selectFirst(name) {
if ($('#'+name+' option:eq(0)').val() == 0) {
$('#'+name+' option:eq(1)').prop('selected', true);
}
else {
$('#'+name+' option:eq(0)').prop('selected', true);
}
}
/**
*
* Toggle default and manual controls of period control
* It is done with css function because hide and show do not
* work properly when the divs are into a hiden div
*
*/
function toggleBoth(name) {
if ($('#'+name+'_default').css('display') == 'none') {
$('#'+name+'_default').css('display','inline');
}
else {
$('#'+name+'_default').css('display','none');
}
if ($('#'+name+'_manual').css('display') == 'none') {
$('#'+name+'_manual').css('display','inline');
}
else {
$('#'+name+'_manual').css('display','none');
}
}
/**
*
* Calculate the custom time in seconds into hidden input
*
*/
function calculateSeconds(name) {
var calculated =
$('#text-' + name + '_text').val() * $('#' + name + '_units').val();
2012-09-12 Miguel de Dios <miguel.dedios@artica.es> * extensions/insert_data.php, operation/incidents/incident_detail.php: started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * godmode/agentes/agent_manager.php: erased unused source code for old ajax call, and started to use the new function "ui_print_agent_autocomplete_input" to make more easy (and standar) the autocomplete agent input. * operation/agentes/exportdata.php: erased duplicated source code for call ajax, and rewrote some javascript to use same page to ajax. * godmode/alerts/alert_list.builder.php, godmode/events/event_edit_filter.php, godmode/reporting/visual_console_builder.editor.js: rewrote some javascript to use same page to ajax. * include/ajax/agent.php: cleaned source code style. * include/functions_ui.php: removed the old unused code as the functions "ui_print_ui_agents_list" and "ui_popup_help". And added the first version of "ui_print_agent_autocomplete_input", and this function maybe will be changing for a some time. * include/functions_html.php: into the function "html_print_input_text_extended" added code to use the $alt parameter (never it have been used before) and added the function "html_print_input_hidden_extended" with more parameters than the simple "html_print_input_hidden" function. * include/javascript/pandora.js: marked as Deprecated the function "agent_module_autocomplete". git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6965 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f
2012-09-12 17:53:58 +02:00
$('.' + name).val(calculated);
}
/**
*
* Update via Javascript an advance selec for time
*
*/
function period_select_update(name, seconds) {
$('#text-' + name + '_text').val(seconds);
adjustTextUnits(name);
calculateSeconds(name);
$('#' + name + '_manual').show();
$('#' + name + '_default').hide();
}
/**
*
* Adjust units in the advanced select for time
*
*/
function adjustTextUnits(name) {
var restPrev;
var unitsSelected = false;
$('#'+name+'_units option').each(function() {
if($(this).val() < 0) {
return;
}
var rest = $('#text-'+name+'_text').val()/$(this).val();
var restInt = parseInt(rest).toString();
if(rest != restInt && unitsSelected == false) {
$('#'+name+'_units option:eq('+($(this).index()-1)+')').prop('selected', true);
$('#text-'+name+'_text').val(restPrev);
unitsSelected = true;
}
restPrev = rest;
});
if(unitsSelected == false) {
$('#'+name+'_units option:last').prop('selected', true);
$('#text-'+name+'_text').val(restPrev);
}
if($('#text-'+name+'_text').val() == 0) {
selectFirst(name+'_units');
}
}
/**
* Sidebar function
* params:
* menuW: $params['width']
* icon_width: $params['icon_width']
* position: $params['position']
* top_dist: $params['top']
* autotop: $params['autotop']
* icon_closed: $params['icon_closed']
* icon_open: $params['icon_open']
* homeurl: $config['homeurl']
*
**/
function hidded_sidebar(position, menuW, menuH, icon_width, top_dist, autotop, right_dist, autoright, icon_closed, icon_open, homeurl, vertical_mode) {
var defSlideTime = 220;
var visibleMargin = icon_width + 10;
var hiddenMarginW = menuW - visibleMargin;
menuH = parseInt(menuH);
var hiddenMarginH = menuH - visibleMargin;
var windowWidth = $(window).width();
var sideClosed = 1;
if(top_dist == 'auto_over') {
top_dist = $('#' + autotop).offset().top;
}
else if(top_dist == 'auto_below') {
top_dist = $('#' + autotop).offset().top + $('#' + autotop).height();
switch(position) {
case 'bottom':
if(vertical_mode == 'in') {
top_dist -= visibleMargin + 10;
}
}
}
if(right_dist == 'auto_right') {
right_dist = $('#' + autoright).offset().left + $('#' + autoright).width();
}
else if(right_dist == 'auto_left') {
right_dist = $('#' + autoright).offset().left;
}
$(document).ready( function() {
// SET INITIAL POSITION AND SHOW LAYER
$('#side_layer').css('top', top_dist);
switch (position) {
case 'left':
$('#side_layer').css('left', -hiddenMarginW);
break;
case 'right':
$('#side_layer').css('left', windowWidth - visibleMargin - 1);
$('#side_layer').css('width', visibleMargin + 'px');
break;
case 'bottom':
$('#side_layer').css('left', right_dist - menuW);
$('#side_layer').css('height', visibleMargin + 'px');
break;
}
$('#side_layer').show();
$("#graph_menu_arrow").click(function(){
switch(position) {
case 'right':
if (sideClosed == 0){
$('#side_layer').animate({"width": "-=" + (hiddenMarginW) + "px", "left": "+=" + (hiddenMarginW) + "px"}, defSlideTime);
$("#graph_menu_arrow").attr("src", homeurl + icon_closed);
}
else {
$('#side_layer').animate({"width": "+=" + (hiddenMarginW) + "px", "left": "-=" + (hiddenMarginW) + "px"}, defSlideTime);
$("#graph_menu_arrow").attr("src", homeurl + icon_open);
}
break;
case 'left':
if (sideClosed == 1){
$('#side_layer').animate({"left": "+=" + (hiddenMarginW) + "px"}, defSlideTime);
$("#graph_menu_arrow").attr("src", homeurl + icon_closed);
}
else {
$('#side_layer').animate({"left": "-=" + (hiddenMarginW) + "px"}, defSlideTime);
$("#graph_menu_arrow").attr("src", homeurl + icon_open);
}
break;
case 'bottom':
if (sideClosed == 0){
$('#side_layer').animate({"height": "-=" + (hiddenMarginH+10) + "px", "top": "+=" + (hiddenMarginH) + "px"}, defSlideTime);
$("#graph_menu_arrow").attr("src", homeurl + icon_closed);
}
else {
$('#side_layer').animate({"height": "+=" + (hiddenMarginH-10) + "px", "top": "-=" + (hiddenMarginH) + "px"}, defSlideTime);
$("#graph_menu_arrow").attr("src", homeurl + icon_open);
}
break;
}
if(sideClosed == 0) {
//$('#side_top_text').hide();
//$('#side_body_text').hide();
//$('#side_bottom_text').hide();
sideClosed = 1;
}
else {
$('#side_top_text').show();
$('#side_body_text').show();
$('#side_bottom_text').show();
sideClosed = 0;
}
});
});
switch(position) {
case 'right':
case 'bottom':
// Move the right menu if window is resized
$(window).resize(function() {
var newWindowWidth = $(window).width();
var widthVariation = newWindowWidth - windowWidth;
$('#side_layer').animate({"left": "+=" + (widthVariation) + "px"}, 0);
windowWidth = newWindowWidth;
});
break;
}
}
// Function that recover a previously stored value from php code
function get_php_value(value) {
return $.parseJSON($('#php_to_js_value_' + value).html());
}
function paint_qrcode(text, where, width, height) {
if (typeof(text) == 'undefined') {
text = window.location.href;
}
else {
//null value
if (isEmptyObject(text)) {
text = window.location.href;
}
}
if (typeof(where) == 'undefined') {
where = $("#qrcode_container_image").get(0);
}
else if (typeof(where) == 'string') {
where = $(where).get(0);
}
if (typeof(where) == 'undefined') {
where = $("#qrcode_container_image").get(0);
}
else if (typeof(where) == 'string') {
where = $(where).get(0);
}
if (typeof(width) == 'undefined') {
width = 256;
}
else {
if (typeof(width) == 'object')
//null value
if (isEmptyObject(width)) {
width = 256;
}
}
if (typeof(height) == 'undefined') {
height = 256;
}
else {
if (typeof(height) == 'object')
//null value
if (isEmptyObject(height)) {
height = 256;
}
}
$(where).empty();
var qrcode = new QRCode(where, {
text: text,
width: width,
height: height,
colorDark : "#3B6941",
colorLight : "#ffffff",
correctLevel : QRCode.CorrectLevel.M
});
}
function show_dialog_qrcode(dialog, text, where, width, height) {
if (typeof(dialog) == 'undefined') {
dialog = "#qrcode_container";
}
else {
if (typeof(dialog) == 'object')
//null value
if (isEmptyObject(dialog)) {
dialog = "#qrcode_container";
}
}
if (typeof(where) == 'undefined') {
where = $("#qrcode_container_image").get(0);
}
else if (typeof(where) == 'string') {
where = $(where).get(0);
}
if (typeof(width) == 'undefined') {
width = 256;
}
else {
if (typeof(width) == 'object')
//null value
if (isEmptyObject(width)) {
width = 256;
}
}
if (typeof(height) == 'undefined') {
height = 256;
}
else {
if (typeof(height) == 'object')
//null value
if (isEmptyObject(height)) {
height = 256;
}
}
paint_qrcode(text, where, 256, 256);
$(dialog).dialog({ autoOpen: false, modal: true }).dialog('open');
2014-10-20 13:11:38 +02:00
}
function openURLTagWindow(url) {
window.open(url, '','width=300, height=300, toolbar=no, location=no, directories=no, status=no, menubar=no');
}
function removeTinyMCE(elementID) {
if (elementID.length > 0 && !isEmptyObject(tinyMCE))
tinyMCE.EditorManager.execCommand('mceRemoveControl', true, elementID);
}
function addTinyMCE(elementID) {
if (elementID.length > 0 && !isEmptyObject(tinyMCE))
tinyMCE.EditorManager.execCommand('mceAddControl', true, elementID);
}
function toggle_full_value(id) {
$("#hidden_value_module_" + id).dialog({
resizable: true,
draggable: true,
modal: true,
height: 200,
width: 400,
overlay: {
opacity: 0.5,
background: "black"
}
});
2016-05-24 16:33:32 +02:00
}
function autoclick_profile_users(actual_level, firts_level, second_level) {
if ($('#checkbox-' + actual_level).is(":checked")) {
if (typeof firts_level !== "undefined") {
var is_checked_firts = $('#checkbox-' + firts_level).is(':checked');
if (!is_checked_firts) {
$('#checkbox-' + firts_level).prop('checked', true);
}
if (second_level !== false) {
if (!$('#checkbox-' + second_level).is(":checked")) {
$('#checkbox-' + second_level).prop('checked', true);
}
}
}
}
}
/**
* Auto hides an element and shows it
* when the user moves the mouse over the body.
*
* @param element [Element object] Element object to hide.
* @param hideTime [integer] ms of the hide timeout.
*
* @retval void
*/
var autoHideElement = function (element, hideTime) {
hideTime = hideTime || 3000;
var timerRef;
var isHoverElement = false;
var showElement = function () {
$(element).show();
}
var hideElement = function () {
$(element).fadeOut();
}
var startHideTimeout = function (msec) {
showElement();
timerRef = setTimeout(hideElement, msec);
}
var cancelHideTimeout = function () {
clearTimeout(timerRef);
timerRef = null;
}
var handleBodyMove = function (event) {
if (isHoverElement) return;
if (timerRef) cancelHideTimeout();
startHideTimeout(hideTime);
}
var handleElementEnter = function (event) {
isHoverElement = true;
cancelHideTimeout();
}
var handleElementLeave = function (event) {
isHoverElement = false;
startHideTimeout(hideTime);
}
// Bind event handlers
$(element)
.mouseenter(handleElementEnter)
.mouseleave(handleElementLeave);
$('body').mousemove(handleBodyMove);
// Start hide
startHideTimeout(hideTime);
}
function htmlEncode(value){
// Create a in-memory div, set its inner text (which jQuery automatically encodes)
// Then grab the encoded contents back out. The div never exists on the page.
return $('<div/>').text(value).html();
}
function htmlDecode(value){
return $('<div/>').html(value).text();
2017-08-30 16:09:11 +02:00
}
function pagination_show_more(params, message){
//value input hidden for save limit
var value_offset = $('#hidden-offset').val();
//For each execution offset + limit
var offset = parseInt(value_offset) + params['limit'];
//save new value innput hidden
$('#hidden-offset').val(offset);
//add array value offset
params['offset'] = offset;
$.ajax({
type: "POST",
url: "ajax.php",
data: params,
success: function(data) {
if(data == ''){
$('#container_error').empty();
$('#container_error').append('<h4>'+ message +'</h4>');
}
else{
$('#container_pag').append(data);
}
},
datatype: "html"
});
2017-10-23 14:05:21 +02:00
}
/*
*function use d3.js for paint graph
*/
function paint_graph_status(min_w, max_w, min_c, max_c, inverse_w, inverse_c, error_w, error_c,
legend_normal, legend_warning, legend_critical,
message_error_warning, message_error_critical) {
//Check if they are numbers
if(isNaN(min_w)){ min_w = 0; };
if(isNaN(max_w)){ max_w = 0; };
if(isNaN(min_c)){ min_c = 0; };
if(isNaN(max_c)){ max_c = 0; };
//if haven't errors
if (error_w == 0 && error_c == 0){
//parse element
min_w = parseFloat(min_w);
min_c = parseFloat(min_c);
max_w = parseFloat(max_w);
max_c = parseFloat(max_c);
//inicialize var
var range_min = 0;
var range_max = 0;
var range_max_min = 0;
var range_max_min = 0;
//Find the lowest possible value
if(min_w < 0 || min_c < 0){
if(min_w < min_c){
range_min = min_w - 100;
} else {
range_min = min_c - 100;
}
} else if (min_w > 0 || min_c > 0) {
if(min_w > min_c){
range_max_min = min_w;
} else {
range_max_min = min_c;
}
} else {
if(min_w < min_c){
range_min = min_w - 100;
} else {
range_min = min_c - 100;
}
}
//Find the maximum possible value
if(max_w > max_c){
range_max = max_w + 100 + range_max_min;
} else {
range_max = max_c + 100 + range_max_min;
}
//Controls whether the maximum = 0 is infinite
if((max_w == 0 || max_w == 0.00) && min_w != 0){
max_w = range_max;
}
if((max_c == 0 || max_c == 0.00) && min_c != 0){
max_c = range_max;
}
//Scale according to the position
position = 200 / (range_max-range_min);
//axes
var yScale = d3.scale.linear()
.domain([range_min, range_max])
.range([100, -100]);
var yAxis = d3.svg.axis()
.scale(yScale)
.orient("left");
//create svg
var svg = d3.select("#svg_dinamic");
//delete elements
svg.selectAll("g").remove();
width_x = 201;
height_x = 50;
svg.append("g")
.attr("transform", "translate(200, 150)")
.call(yAxis);
//legend Normal text
svg.append("g")
.attr("width", 300)
.attr("height", 300)
.append("text")
.attr("x", width_x)
.attr("y", height_x - 20)
.attr("fill", 'black')
.style("font-family", "arial")
.style("font-weight", "bold")
.style("font-size", '8pt')
.html(legend_normal)
.style("text-anchor", "first")
.attr("width", 300)
.attr("height", 300);
//legend Normal rect
svg.append("g")
.append("rect")
.attr("id", "legend_normal")
.attr("x", width_x + 80)
.attr("y", height_x - 30)
.attr("width", 10)
.attr("height", 10)
.style("fill", "#82B92E");
//legend Warning text
svg.append("g")
.append("text")
.attr("x", width_x + 100)
.attr("y", height_x - 20)
.attr("fill", 'black')
.style("font-family", "arial")
.style("font-weight", "bold")
.style("font-size", '8pt')
.html(legend_warning)
.style("text-anchor", "first");
//legend Warning rect
svg.append("g")
.append("rect")
.attr("id", "legend_warning")
.attr("x", width_x + 185)
.attr("y", height_x - 30)
.attr("width", 10)
.attr("height", 10)
.style("fill", "#ffd731");
//legend Critical text
svg.append("g")
.append("text")
.attr("x", width_x + 205)
.attr("y", height_x - 20)
.attr("fill", 'black')
.style("font-family", "arial")
.style("font-weight", "bold")
.style("font-size", '8pt')
.html(legend_critical)
.style("text-anchor", "first");
//legend critical rect
svg.append("g")
.append("rect")
.attr("id", "legend_critical")
.attr("x", width_x + 285)
.attr("y", height_x - 30)
.attr("width", 10)
.attr("height", 10)
.style("fill", "#fc4444");
//styles for number and axes
svg.selectAll("g .domain")
.style("stroke-width", 2)
.style("fill", "none")
.style("stroke", "black");
svg.selectAll("g .tick text")
.style("font-size", "9pt")
.style("font-weight", "initial");
//estatus normal
svg.append("g")
.append("rect")
.attr("id", "status_rect")
.attr("x", width_x)
.attr("y", height_x)
.attr("width", 300)
.attr("height", 200)
.style("fill", "#82B92E");
//controls the inverse warning
if(inverse_w == 0){
svg.append("g")
.append("rect").transition()
.duration(600)
.attr("id", "warning_rect")
.attr("x", width_x)
.attr("y", (height_x +(range_max - min_w) * position) - ((max_w - min_w) * position))
.attr("width", 300)
.attr("height", ((max_w - min_w) * position))
.style("fill", "#ffd731");
}
else {
svg.append("g")
.append("rect").transition()
.duration(600)
.attr("id", "warning_rect")
.attr("x", width_x)
.attr("y", height_x + 200 - ((min_w -range_min) * position))
.attr("width", 300)
.attr("height", (min_w -range_min) * position)
.style("fill", "#ffd731");
svg.append("g")
.append("rect").transition()
.duration(600)
.attr("id", "warning_inverse_rect")
.attr("x", width_x)
.attr("y", height_x)
.attr("width", 300)
.attr("height", ((range_max - min_w) * position) - ((max_w - min_w) * position))
.style("fill", "#ffd731");
}
//controls the inverse critical
if(inverse_c == 0){
svg.append("g")
.append("rect").transition()
.duration(600)
.attr("id", "critical_rect")
.attr("x", width_x)
.attr("y", (height_x + (range_max - min_c) * position) - ((max_c - min_c) * position))
.attr("width", 300)
.attr("height", ((max_c - min_c) * position))
.style("fill", "#fc4444");
}
else {
svg.append("g")
.append("rect").transition()
.duration(600)
.attr("id", "critical_rect")
.attr("x", width_x)
.attr("y", height_x + 200 - ((min_c -range_min) * position))
.attr("width", 300)
.attr("height", (min_c -range_min) * position)
.style("fill", "#fc4444");
svg.append("g")
.append("rect").transition()
.duration(600)
.attr("id", "critical_inverse_rect")
.attr("x", width_x)
.attr("y", height_x)
.attr("width", 300)
.attr("height", ((range_max - min_c) * position) - ((max_c - min_c) * position))
.style("fill", "#fc4444");
}
}
else {
d3.select("#svg_dinamic rect").remove();
//create svg
var svg = d3.select("#svg_dinamic");
svg.selectAll("g").remove();
width_x = 201;
height_x = 50;
2017-10-23 14:05:21 +02:00
//message error warning
if (error_w == 1) {
$("#text-max_warning").addClass("input_error");
svg.append("g")
.append("text")
.attr("x", width_x)
.attr("y", height_x)
.attr("fill", 'black')
.style("font-family", "arial")
.style("font-weight", "bold")
.style("font-size", 14)
.style("fill", "red")
.html(message_error_warning)
.style("text-anchor", "first");
}
//message error critical
if (error_c == 1) {
$("#text-max_critical").addClass("input_error");
svg.append("g")
.append("text")
.attr("x", width_x)
.attr("y", height_x)
.attr("fill", 'black')
.style("font-family", "arial")
.style("font-weight", "bold")
.style("font-size", 14)
.style("fill", "red")
.html(message_error_critical)
.style("text-anchor", "first");
}
}
2018-04-17 11:54:52 +02:00
}
2018-06-06 11:18:39 +02:00
function round_with_decimals(value, multiplier) {
// Default values
if (typeof(multiplier) === "undefined") multiplier = 1;
// Return non numeric types without modification
if (typeof(value) !== "number") return value;
2018-04-17 11:54:52 +02:00
if ((value * multiplier) == 0) return 0;
2018-05-22 10:50:38 +02:00
if ((Math.abs(value) * multiplier) >= 1) {
2018-04-17 11:54:52 +02:00
return Math.round(value * multiplier) / multiplier;
}
return round_with_decimals (value, multiplier * 10);
}
/**
* Display a confirm dialog box
*
* @param string Text to display
* @param string Ok button text
* @param string Cancel button text
* @param function Callback to action when ok button is pressed
*/
2018-06-06 11:18:39 +02:00
function display_confirm_dialog (message, ok_text, cancel_text, ok_function) {
// Clean function to close the dialog
var clean_function = function () {
$("#pandora_confirm_dialog_text").hide();
$("#pandora_confirm_dialog_text").remove();
}
// Modify the ok function to close the dialog too
var ok_function_clean = function () {
ok_function();
clean_function();
}
// Display the dialog
$("body").append('<div id="pandora_confirm_dialog_text"><h3>' + message + '</h3></div>');
$("#pandora_confirm_dialog_text").dialog({
resizable: false,
draggable: true,
modal: true,
dialogClass: "pandora_confirm_dialog",
overlay: {
opacity: 0.5,
background: "black"
},
closeOnEscape: true,
modal: true,
buttons: {
Cancel: clean_function,
"Confirm": ok_function_clean
}
});
}
function ellipsize (str, max, ellipse) {
if (max == null) max = 140;
if (ellipse == null) ellipse = "…";
return str.trim().length > max ? str.substr(0, max).trim() + ellipse : str;
}
/**
* Display a dialog with an image
*
* @param {string} icon_name The name of the icon you will display
* @param {string} icon_path The path to the icon
* @param {Object} incoming_options All options
* grayed: {bool} True to display the background black
* title {string} 'Logo preview' by default
*/
function logo_preview (icon_name, icon_path, incoming_options) {
// Get the options
options = {
grayed: false,
title: "Logo preview"
}
$.extend(options, incoming_options);
if (icon_name == "") return;
$dialog = $("<div></div>");
$image = $("<img src=\"" + icon_path + "\">");
$image.css('max-width', '500px').css('max-height', '500px');
try {
$dialog
.hide()
.html($image)
.dialog({
title: options.title,
resizable: true,
draggable: true,
modal: true,
dialogClass: options.grayed ? 'dialog-grayed' : '',
overlay: {
opacity: 0.5,
background: "black"
},
minHeight: 1,
width: $image.width,
close: function () {
$dialog
.empty()
.remove();
}
}).show();
}
catch (err) {
// console.log(err);
}
}