Ejemplo n.º 1
0
 function displayItem($data, $config)
 {
     global $CFG_GLPI;
     $itemtype = $data['itemtype'];
     $itemtype2 = '';
     if ($itemtype == 'host' || $itemtype == 'service') {
         $itemtype2 = $itemtype;
         $itemtype = 'PluginMonitoringDisplayview';
     }
     $item = new $itemtype();
     $content = '';
     $title = $item->getTypeName();
     $event = '';
     $width = '';
     if ($itemtype == "PluginMonitoringService") {
         $content = $item->showWidget($data['items_id'], $data['extra_infos']);
         if (!isset($item->fields['plugin_monitoring_components_id'])) {
             return false;
         }
         $title .= " : <a href=\"" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/front/display.form.php?itemtype=PluginMonitoringService&items_id=" . $data['items_id'] . "\">" . Dropdown::getDropdownName(getTableForItemType('PluginMonitoringComponent'), $item->fields['plugin_monitoring_components_id']);
         $title .= '</a> ' . __('on', 'monitoring') . ' ';
         $pmComponentscatalog_Host = new PluginMonitoringComponentscatalog_Host();
         $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() . " / " . $data['extra_infos'] . ")");
         }
         $width = "width: 475,";
     } else {
         if ($itemtype == "PluginMonitoringWeathermap") {
             $content = $item->showWidget($data['items_id'], $data['extra_infos']);
             $content = '<div id="weathermap-' . $data['items_id'] . '">' . $content . "</div>";
             $event = ", " . $item->widgetEvent($data['items_id']);
             $title .= " : " . Dropdown::getDropdownName(getTableForItemType('PluginMonitoringWeathermap'), $data['items_id']);
             $item->getFromDB($data['items_id']);
             $width = "width:" . $item->fields['width'] * $data['extra_infos'] / 100 . ",";
         } else {
             if ($itemtype2 != '') {
                 $content = $item->showWidget2($data['id']);
             } else {
                 $content = $item->showWidget($data['items_id']);
             }
             if ($data['itemtype'] == 'PluginMonitoringServicescatalog') {
                 $width = "width: 202,";
             } else {
                 $width = "width: 180,";
             }
         }
     }
     if ($config == 0 && $itemtype != "PluginMonitoringService") {
         $title = '';
     }
     echo "<script>\n         var left = 0;\n         var topd = 0;\n         var obj = document.getElementById('panel');\n         if (obj.offsetParent) {\n           do {\n             left += obj.offsetLeft;\n             topd += obj.offsetTop;\n           } while (obj = obj.offsetParent);\n         }\n\n        var item" . $data['id'] . " = new Ext.Panel({\n             closable: true,           \n             title: '" . $title . "',\n             x: " . $data['x'] . ",\n             y: " . $data['y'] . ",\n             html       : '" . $content . "',\n             baseCls : 'x-panel',\n             layout : 'fit',\n             bodyStyle: 'background:transparent',\n             ";
     if ($config == 0 && $itemtype != "PluginMonitoringService") {
         echo "border: false,";
     }
     echo "renderTo: Ext.getBody(),\n             floating: false,\n             frame: false,\n             " . $width . "\n             autoHeight  : true,\n             layout: 'fit',\n             draggable: {\n                 //Config option of Ext.Panel.DD class.\n                 //It's a floating Panel, so do not show a placeholder proxy in the original position.\n                 insertProxy: false,\n\n                 //Called for each mousemove event while dragging the DD object.\n                 onDrag : function(e){\n                     //Record the x,y position of the drag proxy so that we can\n                     //position the Panel at end of drag.\n                     var el = this.proxy.getEl();\n                     this.x = el.getLeft(true) - left - 5;\n                     this.y = el.getTop(true) - topd - 5;\n\n\n                     //Keep the Shadow aligned if there is one.\n                     var s = this.panel.getEl().shadow;\n                     if (s) {\n                         s.realign(this.x, this.y, pel.getWidth(), pel.getHeight());\n                     }\n                 },\n\n                 //Called on the mouseup event.\n                 endDrag : function(e){\n                     this.panel.setPosition(this.x, this.y);\n";
     if ($config == '1') {
         echo "      Ext.get('updatecoordonates').load({\n                        url: '" . $CFG_GLPI['root_doc'] . "/plugins/monitoring/ajax/displayview_itemcoordinates.php',\n                        scripts: true,\n                        params:'id=" . $data['id'] . "&x=' + (this.x)  + '&y=' + (this.y)\n                     });\n";
         echo "      if (this.x < 1) {\n                        this.panel.destroy();\n                     }\n                     if (this.y < 0) {\n                        this.panel.destroy();\n                     }\n            \n            ";
     }
     echo "      }\n             }\n             " . $event . "\n         });\n     </script>";
     //.show()
     if ($itemtype == "PluginMonitoringService") {
         $pmComponent = new PluginMonitoringComponent();
         $item = new $itemtype();
         $item->getFromDB($data['items_id']);
         $pmComponent->getFromDB($item->fields['plugin_monitoring_components_id']);
         $pmServicegraph = new PluginMonitoringServicegraph();
         $pmServicegraph->displayGraph($pmComponent->fields['graph_template'], "PluginMonitoringService", $data['items_id'], "0", $data['extra_infos'], "js");
     } else {
         if ($itemtype == "PluginMonitoringComponentscatalog") {
             $pmComponentscatalog = new PluginMonitoringComponentscatalog();
             $pmComponentscatalog->ajaxLoad($data['items_id']);
         } else {
             if ($itemtype == "PluginMonitoringServicescatalog") {
                 $pmServicescatalog = new PluginMonitoringServicescatalog();
                 $pmServicescatalog->ajaxLoad($data['items_id']);
             } else {
                 if ($itemtype2 != '') {
                     $pmDisplayview = new PluginMonitoringDisplayview();
                     $pmDisplayview->ajaxLoad2($data['id']);
                 } else {
                     if ($itemtype == "PluginMonitoringDisplayview") {
                         $pmDisplayview = new PluginMonitoringDisplayview();
                         $pmDisplayview->ajaxLoad($data['items_id']);
                     }
                 }
             }
         }
     }
     if ($itemtype == "PluginMonitoringWeathermap") {
         //         echo "<script type='text/javascript'>
         //            function updateimagew".$data['items_id']."() {
         //               var demain=new Date();
         //               document.getElementById('weathermap-".$data['items_id']."').innerHTML = demain.getTime() + '".$content."';
         //            }
         //            setInterval(updateimagew".$data['items_id'].", 50000);
         //         </script>";
         //      }
         echo "<script type='text/javascript'>\n         var mgr = new Ext.UpdateManager('weathermap-" . $data['items_id'] . "');\n         mgr.startAutoRefresh(50, \"" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/widgetWeathermap.php\", \"id=" . $data['items_id'] . "&extra_infos=" . $data['extra_infos'] . "\", \"\", true);\n         </script>";
     }
     return true;
 }
 function show_panel($id, $config)
 {
     global $DB, $CFG_GLPI;
     $pmDisplayview = new PluginMonitoringDisplayview();
     $pmDisplayview->getFromDB($id);
     $queryitems = "SELECT * FROM `glpi_plugin_monitoring_displayviews_items`\n         WHERE `plugin_monitoring_displayviews_id`='" . $id . "'";
     $resultitems = $DB->query($queryitems);
     $a_items = array();
     while ($dataitems = $DB->fetch_array($resultitems)) {
         //         if ($this->displayItem($dataitems, $config)) {
         $a_items[] = $dataitems;
         //         }
         //         }
     }
     echo "\n      <script type=\"text/javascript\">\n      \$(function() {\n      ";
     foreach ($a_items as $item) {
         if ($config == '1') {
             $event = ", stop: function() {\n                 pos = \$('#draggable" . $item['id'] . "').position();\n                 \$.get('" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/displayview_itemcoordinates.php" . "?id=" . $item['id'] . "&x=' + pos.left + '&y=' + pos.top);\n               }";
         } else {
             $event = '';
         }
         $size = $this->getSizeOfWidget($item['itemtype']);
         echo "\$( \"#draggable" . $item['id'] . "\" ).draggable({ cursor: 'move', cursorAt: { " . "top: " . $size['height'] / 2 . ", left: " . $size['width'] / 2 . ", " . " }, grid: [ 10, 10 ]" . $event . " } );";
     }
     echo "\n      });\n      </script>";
     echo "<div id='viewform' style='width: " . $pmDisplayview->fields['width'] . "px;height:1200px;position: relative;'>";
     foreach ($a_items as $item) {
         $itemtype2 = '';
         $size = $this->getSizeOfWidget($item['itemtype']);
         echo '<div id="draggable' . $item['id'] . '" ';
         if ($item['itemtype'] != 'PluginMonitoringServicescatalog' && $item['itemtype'] != 'PluginMonitoringComponentscatalog' && $item['itemtype'] != 'PluginMonitoringDisplayview' && $item['itemtype'] != 'host' && !($item['itemtype'] == 'PluginMonitoringWeathermap' && $item['items_id'] == -1)) {
             echo 'class="ui-widget-content" ';
         }
         if ($item['itemtype'] == 'host' || $item['itemtype'] == 'service') {
             $itemtype2 = $item['itemtype'];
             $item['itemtype'] = 'PluginMonitoringDisplayview';
         }
         if ($item['itemtype'] == 'PluginMonitoringService') {
             echo 'style="width: ' . $size['width'] . 'px; height: ' . $size['height'] . 'px; ' . 'position: absolute; left: ' . $item['x'] . 'px; top: ' . $item['y'] . 'px;">';
             $pmComponent = new PluginMonitoringComponent();
             $pmService = new PluginMonitoringService();
             if ($pmService->getFromDB($item['items_id'])) {
                 $pmComponent->getFromDB($pmService->fields['plugin_monitoring_components_id']);
                 $pmServicegraph = new PluginMonitoringServicegraph();
                 $pmServicegraph->displayGraph($pmComponent->fields['graph_template'], "PluginMonitoringService", $item['items_id'], "0", $item['extra_infos'], "", $size['width'] - 15);
             } else {
                 $this->delete($item);
             }
         } else {
             if ($item['itemtype'] == 'PluginMonitoringWeathermap') {
                 if ($item['items_id'] == -1) {
                     $title = " : " . __('Legend', 'monitoring');
                     echo 'style="width: 400px; height: 51px; ' . 'position: absolute; left: ' . $item['x'] . 'px; top: ' . $item['y'] . 'px;">';
                 } else {
                     $weathermap = new PluginMonitoringWeathermap();
                     $weathermap->getFromDB($item['items_id']);
                     //            $title .= " : ".Dropdown::getDropdownName(
                     //                     getTableForItemType('PluginMonitoringWeathermap'), $item['items_id']);
                     $width = $weathermap->fields['width'] * $item['extra_infos'] / 100;
                     $height = $weathermap->fields['height'] * $item['extra_infos'] / 100;
                     echo 'style="width: ' . $width . 'px; height: ' . $height . 'px; ' . 'position: absolute; left: ' . $item['x'] . 'px; top: ' . $item['y'] . 'px;">';
                 }
                 echo '<div id="weathermap-' . $item['items_id'] . '"></div>';
                 echo "<script type=\"text/javascript\">\n                  (function worker() {\n                    \$.get('" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/widgetWeathermap.php?" . "id=" . $item['items_id'] . "&extra_infos=" . $item['extra_infos'] . "&glpiID=" . $_SESSION['glpiID'] . "', function(data) {\n                      \$('#weathermap-" . $item['items_id'] . "').html(data);\n                      setTimeout(worker, 50000);\n                    });\n                  })();\n               </script>";
             } else {
                 if ($item['itemtype'] == "PluginMonitoringDisplayview") {
                     echo 'style="width: ' . $size['width'] . 'px; height: ' . $size['height'] . 'px; ' . 'position: absolute; left: ' . $item['x'] . 'px; top: ' . $item['y'] . 'px;">';
                     $pmDisplayview = new PluginMonitoringDisplayview();
                     if (!empty($itemtype2)) {
                         echo "<div id=\"updatedisplayview" . $item['id'] . "\"></div>";
                         $pmDisplayview->ajaxLoad2($item['id'], $item['is_minemap']);
                     } else {
                         echo "<div id=\"updatedisplayview" . $item['items_id'] . "\"></div>";
                         $pmDisplayview->ajaxLoad($item['items_id']);
                     }
                 } else {
                     echo 'style="width: ' . $size['width'] . 'px; height: ' . $size['height'] . 'px; ' . 'position: absolute; left: ' . $item['x'] . 'px; top: ' . $item['y'] . 'px;">';
                     echo "<div id=\"update" . $item['itemtype'] . $item['items_id'] . "\"></div>";
                     echo "<script type=\"text/javascript\">";
                     echo "\n                     (function worker() {\n                       \$.get('" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/updateWidgetComponentscatalog.php" . "?id=" . $item['items_id'] . "&is_minemap=" . $item['is_minemap'] . "', function(data) {\n                         \$('#update" . $item['itemtype'] . $item['items_id'] . "').html(data);\n                         setTimeout(worker, 30000);\n                       });\n                     })();";
                     echo "</script>";
                 }
             }
         }
         echo '</div>';
     }
     //      echo "<script type='text/javascript'>
     //
     //        //Simple 'border layout' panel to house both grids
     //        var displayPanel = new Ext.Panel({
     //          id       : 'viewpanel',
     //          width    : ".$pmDisplayview->fields['width'].",
     //          height   : 1200,
     //          layout: 'absolute',
     //          renderTo : 'panel',
     //          items    : []
     //        });
     //
     //      </script>";
     echo "</div>";
     echo "<script type=\"text/javascript\">\n         function reloadview() {\n              \$.get('" . $CFG_GLPI["root_doc"] . "/plugins/monitoring/ajax/loadView.php?id=' + \$('#updateviewid').val() + '&config=" . $config . "', function(data) {\n                \$('#viewform').html(data);\n               });\n         }\n      </script>";
 }