function displayGraphs($itemtype, $items_id) { global $CFG_GLPI; $pmComponent = new PluginMonitoringComponent(); $pmConfig = new PluginMonitoringConfig(); $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host(); $item = new $itemtype(); $item->getFromDB($items_id); $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']); if (!isset($_SESSION['glpi_plugin_monitoring']['perfname'][$pmComponent->fields['id']])) { PluginMonitoringServicegraph::loadPreferences($pmComponent->fields['id']); } $css_width = '950'; if (isset($_GET['mobile'])) { $css_width = '300'; } echo "<table class='tab_cadre' width='" . $css_width . "'>"; echo "<tr class='tab_bg_1'>"; echo "<th>"; $title = Dropdown::getDropdownName(getTableForItemType('PluginMonitoringComponent'), $item->fields['plugin_monitoring_components_id']); $title .= ' ' . __('on', 'monitoring') . ' '; $pmComponentscatalog_Host->getFromDB($item->fields["plugin_monitoring_componentscatalogs_hosts_id"]); if (isset($pmComponentscatalog_Host->fields['itemtype']) and $pmComponentscatalog_Host->fields['itemtype'] != '') { $itemtype2 = $pmComponentscatalog_Host->fields['itemtype']; $item2 = new $itemtype2(); $item2->getFromDB($pmComponentscatalog_Host->fields['items_id']); $title .= str_replace("'", "\"", $item2->getLink() . " (" . $item2->getTypeName() . ")"); } echo $title; echo "</th>"; echo "<th width='200'>"; if (!isset($_GET['mobile'])) { echo "<form method='post'>"; $a_timezones = PluginMonitoringConfig::getTimezones(); if (!isset($_SESSION['plugin_monitoring_timezone'])) { $_SESSION['plugin_monitoring_timezone'] = '0'; } $a_timezones_allowed = array(); $pmConfig->getFromDB(1); $a_temp = importArrayFromDB($pmConfig->fields['timezones']); foreach ($a_temp as $key) { $a_timezones_allowed[$key] = $a_timezones[$key]; } if (count($a_timezones_allowed) == '0') { $a_timezones_allowed['0'] = $a_timezones['0']; } Dropdown::showFromArray('plugin_monitoring_timezone', $a_timezones_allowed, array('value' => $_SESSION['plugin_monitoring_timezone'])); echo " <input type='submit' name='update' value=\"" . __('Save') . "\" class='submit'>"; Html::closeForm(); } echo "</th>"; echo "</tr>"; $timezone = '0'; if (isset($_SESSION['plugin_monitoring_timezone'])) { $timezone = $_SESSION['plugin_monitoring_timezone']; } if (!isset($_GET['mobile'])) { echo "<tr class='tab_bg_1'>"; echo "<th colspan='2'>"; echo "<div id='legendlink'><a onClick='Ext.get(\"options\").toggle();'>[ Options ]</a></div>"; echo "</th>"; echo "</tr>"; // * Display perfname echo "<tr class='tab_bg_1'>"; echo "<td colspan='2'>"; echo "<div id='options' style='display:none'>"; PluginMonitoringServicegraph::preferences($pmComponent->fields['id'], 0); echo "</div>"; echo "</td>"; echo "</tr>"; // * Display date slider echo "<tr class='tab_bg_1'>"; echo "<th colspan='2'>"; echo __('Select date (only last 2, 12 and 24 hours)', 'monitoring'); echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<td colspan='2'>"; $end = time(); $oldvalue = current(getAllDatasFromTable('glpi_plugin_monitoring_serviceevents', "`plugin_monitoring_services_id`='" . $items_id . "'", false, 'date ASC LIMIT 1')); $date = new DateTime($oldvalue['date']); $start = $date->getTimestamp(); $pmServicegraph = new PluginMonitoringServicegraph(); echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n var tip = new Ext.slider.Tip({\n getText: function(thumb){\n return String.format('<b> ' + new Date(thumb.value * 1000).format('Y-m-d') + '</b>');\n }\n });\n\n new Ext.Slider({\n renderTo: 'custom-tip-slider',\n width: 940,\n increment: 86400,\n minValue: " . $start . ",\n maxValue: " . $end . ",\n value: " . $end . ",\n plugins: tip,\n listeners: {\n dragend: function(slider, thumb, value){\n document.getElementById('custom_date').textContent = slider.getValue();\n mgr" . $items_id . "2h.stopAutoRefresh();\n mgr" . $items_id . "12h.stopAutoRefresh();\n mgr" . $items_id . "1d.stopAutoRefresh();\n "; $a_graphlist = array('2h', '12h', '1d'); foreach ($a_graphlist as $time) { $pmServicegraph->startAutoRefresh($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $pmComponent->fields['id']); } echo "\n }\n }\n });\n\n});\n</script>"; echo '<center><div id="custom-tip-slider"></div></center>'; echo '<div id="custom_date" style="display:none"></div>'; echo "</td>"; echo "</tr>"; // * Display time slider echo "<tr class='tab_bg_1'>"; echo "<th colspan='2'>"; echo __('Select time (only last 2, 12 and 24 hours)', 'monitoring'); echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<td colspan='2'>"; $start = 0 + 86400 - 3600; $end = 86400 + 86400 - 3600 - 300; $current = mktime(date('H'), date('i'), 0, 1, 2, 1970); echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n var tiptime = new Ext.slider.Tip({\n getText: function(thumb){\n return String.format('<b> ' + new Date(thumb.value * 1000).format('H:i:s') + '</b>');\n }\n });\n\n new Ext.Slider({\n renderTo: 'custom-tip-slider-time',\n width: 940,\n increment: 300,\n minValue: " . $start . ",\n maxValue: " . $end . ",\n value: " . $current . ",\n plugins: tiptime,\n listeners: {\n dragend: function(slider, thumb, value){\n document.getElementById('custom_time').textContent = slider.getValue();\n mgr" . $items_id . "2h.stopAutoRefresh();\n mgr" . $items_id . "12h.stopAutoRefresh();\n mgr" . $items_id . "1d.stopAutoRefresh();\n "; $a_graphlist = array('2h', '12h', '1d'); foreach ($a_graphlist as $time) { $pmServicegraph->startAutoRefresh($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $pmComponent->fields['id']); } echo "\n }\n }\n });\n});\n</script>"; echo '<center><div id="custom-tip-slider-time"></div></center>'; echo '<div id="custom_time" style="display:none"></div>'; echo "</td>"; echo "</tr>"; } $a_list = array(); $a_list["2h"] = __("Last 2 hours", "monitoring"); $a_list["12h"] = __("Last 12 hours", "monitoring"); $a_list["1d"] = __("Last 24 hours", "monitoring"); if (!isset($_GET['mobile'])) { $a_list["1w"] = __("Last 7 days (average)", "monitoring"); $a_list["1m"] = __("Last month (average)", "monitoring"); $a_list["0y6m"] = __("Last 6 months (average)", "monitoring"); $a_list["1y"] = __("Last year (average)", "monitoring"); } foreach ($a_list as $time => $name) { echo "<tr class='tab_bg_1'>"; echo "<th colspan='2'>"; echo $name; echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<td align='center' colspan='2'>"; $pmServicegraph = new PluginMonitoringServicegraph(); $part = ''; $width = '950'; if (isset($_GET['mobile'])) { $width = '294'; } $pmServicegraph->displayGraph($pmComponent->fields['graph_template'], $itemtype, $items_id, $timezone, $time, $part, $width); echo "</td>"; echo "</tr>"; } echo "</table>"; }
function view($id, $config = 0) { global $DB, $CFG_GLPI; $pmDisplayview = new PluginMonitoringDisplayview(); $pmDisplayview_rule = new PluginMonitoringDisplayview_rule(); $pmDisplayview->getFromDB($id); echo "<script type='text/javascript'>\n function fittext(itemid) {\n document.getElementById(itemid).style.fontSize = '50px';\n var fontsize = 50;\n while(document.getElementById(itemid).offsetWidth > 120) {\n fontsize--;\n if (fontsize > 20) {\n fontsize--;\n }\n document.getElementById(itemid).style.fontSize = fontsize + 'px';\n }\n while(document.getElementById(itemid).offsetHeight > 67) {\n fontsize--;\n document.getElementById(itemid).style.fontSize = fontsize + 'px';\n }\n if (fontsize > 30) {\n document.getElementById(itemid).style.fontSize = '30px';\n }\n if (fontsize < 7) {\n document.getElementById(itemid).style.fontSize = '7px';\n }\n }\n </script>"; PluginMonitoringServicegraph::loadLib(); if ($config == '1') { $this->addItem($id); $pmDisplayview_rule->showReplayRulesForm($id); echo "<div id='updatecoordonates'></div>"; } else { if (!is_null($pmDisplayview->fields['counter'])) { $pmDisplay = new PluginMonitoringDisplay(); $pmDisplay->showCounters($pmDisplayview->fields['counter']); } } echo "<table class='tab_cadre_fixe' id='test' style='width:" . $pmDisplayview->fields['width'] . "px'>"; echo "<tr class='tab_bg_1'>"; echo "<th>"; echo $pmDisplayview->fields['name']; echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<th>"; echo "<a onClick='Ext.get(\"date_text\").toggle();Ext.get(\"date_select\").toggle();" . "Ext.get(\"time_text\").toggle();Ext.get(\"time_select\").toggle();'>\n <img src='" . $CFG_GLPI["root_doc"] . "/pics/deplier_down.png' /> \n " . __('Date and time select', 'monitoring') . "\n <img src='" . $CFG_GLPI["root_doc"] . "/pics/deplier_down.png' /></a>"; echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1' id='date_text' style='display: none;'>"; echo "<th>"; echo __('Select date', 'monitoring'); echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1' id='date_select' style='display: none;'>"; echo "<td>"; $query = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`\n WHERE `plugin_monitoring_displayviews_id`='" . $id . "'\n AND `itemtype`='PluginMonitoringService'"; $result = $DB->query($query); $a_items = array(); $end = time(); $start = time(); $pmComponent = new PluginMonitoringComponent(); while ($data = $DB->fetch_array($result)) { $itemtype = $data['itemtype']; $item = new $itemtype(); $item->getFromDB($data['items_id']); if (isset($item->fields['plugin_monitoring_components_id'])) { $oldvalue = current(getAllDatasFromTable('glpi_plugin_monitoring_serviceevents', "`plugin_monitoring_services_id`='" . $data['items_id'] . "'", false, 'date ASC LIMIT 1')); $date = new DateTime($oldvalue['date']); if ($date->getTimestamp() < $start) { $start = $date->getTimestamp(); } $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']); $a_items["item" . $data['id']] = array('rrdtool_template' => $pmComponent->fields['graph_template'], 'itemtype' => $data['itemtype'], 'items_id' => $data['items_id'], 'timezone' => 0, 'time' => $data['extra_infos'], 'pmComponents_id' => $pmComponent->fields['id']); } } echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n var tip = new Ext.slider.Tip({\n getText: function(thumb){\n return String.format('<b> ' + new Date(thumb.value * 1000).format('Y-m-d') + '</b>');\n }\n });\n\n new Ext.Slider({\n renderTo: 'custom-tip-slider',\n width: 940,\n increment: 86400,\n minValue: " . $start . ",\n maxValue: " . $end . ",\n value: " . $end . ",\n plugins: tip,\n listeners: {\n dragend: function(slider, thumb, value){\n document.getElementById('custom_date').textContent = slider.getValue();\n "; $pmServicegraph = new PluginMonitoringServicegraph(); foreach ($a_items as $js_id => $js_data) { echo "mgr" . $js_data['items_id'] . $js_data['time'] . ".stopAutoRefresh();\n"; $pmServicegraph->startAutoRefresh($js_data['rrdtool_template'], $js_data['itemtype'], $js_data['items_id'], $js_data['timezone'], $js_data['time'], $js_data['pmComponents_id']); } echo "\n }\n }\n });\n\n});\n</script>"; echo '<center><div id="custom-tip-slider"></div></center>'; echo "</td>"; echo "</tr>"; echo "<tr class='tab_bg_1' id='time_text' style='display: none;'>"; echo "<th>"; echo __('Select time', 'monitoring'); echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1' id='time_select' style='display: none;'>"; echo "<td>"; $start = 0 + 86400 - 3600; $end = 86400 + 86400 - 3600 - 300; $current = mktime(date('H'), date('i'), 0, 1, 2, 1970); echo "\n<script type=\"text/javascript\">\n\nExt.onReady(function(){\n\n var tiptime = new Ext.slider.Tip({\n getText: function(thumb){\n return String.format('<b> ' + new Date(thumb.value * 1000).format('H:i:s') + '</b>');\n }\n });\n\n new Ext.Slider({\n renderTo: 'custom-tip-slider-time',\n width: 940,\n increment: 300,\n minValue: " . $start . ",\n maxValue: " . $end . ",\n value: " . $current . ",\n plugins: tiptime,\n listeners: {\n dragend: function(slider, thumb, value){\n document.getElementById('custom_time').textContent = slider.getValue();\n "; $pmServicegraph = new PluginMonitoringServicegraph(); foreach ($a_items as $js_id => $js_data) { echo "mgr" . $js_data['items_id'] . $js_data['time'] . ".stopAutoRefresh();\n"; $pmServicegraph->startAutoRefresh($js_data['rrdtool_template'], $js_data['itemtype'], $js_data['items_id'], $js_data['timezone'], $js_data['time'], $js_data['pmComponents_id']); } echo "\n }\n }\n });\n\n});\n</script>"; echo '<center><div id="custom-tip-slider-time"></div></center>'; echo "</td>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<th>"; echo __('View', 'monitoring'); echo "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<td>"; echo "<input type='hidden' name='updateviewid' id='updateviewid' value='" . $id . "' />"; if ($config == 0) { echo "<div id='filariane'> </div>"; echo "<input type='hidden' name='updatefil' id='updatefil' value='" . $id . "!' />"; echo "<script type=\"text/javascript\">\n function reloadfil() {\n Ext.get('filariane').load({\n url: '" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/updateFilariane.php',\n scripts: true,\n params:'updatefil=' + Ext.get('updatefil').getValue() + '&id=" . $_GET['id'] . "¤tview=' + Ext.get('updateviewid').getValue()\n });\n }\n reloadfil();\n </script>"; } echo "</td>"; echo "</tr>"; echo "<tr class='tab_bg_1'>"; echo "<td height='1200' id='panel'>"; echo '<div id="custom_date" style="display:none"></div>'; echo '<div id="custom_time" style="display:none"></div>'; echo "<div id='viewform'>"; echo "<script type='text/javascript'>\n \n //Simple 'border layout' panel to house both grids\n var displayPanel = new Ext.Panel({\n id : 'viewpanel',\n width : " . $pmDisplayview->fields['width'] . ",\n height : 1200,\n layout: 'absolute',\n renderTo : 'panel',\n items : []\n });\n\n </script>"; echo "</div>"; echo "<script type=\"text/javascript\">\n function reloadview() {\n Ext.get('viewform').load({\n url: '" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/loadView.php',\n scripts: true,\n params:'id=' + Ext.get('updateviewid').getValue() + '&config=" . $config . "'\n });\n }\n reloadview();\n </script>"; echo "</td>"; echo "</tr>"; echo "</table>"; echo "<br/>"; }