Observium_CE/html/includes/dashboard-generate.inc.php

359 lines
17 KiB
PHP

<?php
$blank = '{}';
dbInsert(['dash_id' => '1', 'dash_name' => 'Default Dashboard'], 'dashboards');
$y = 0;
// Migrate an existing front page arrangement if it exists. Remove this after next CE.
if (!isset($config['frontpage']['order']) || FALSE) {
$height = round((100 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1', 'widget_type' => 'welcome', 'widget_config' => $blank, 'x' => '6', 'y' => $y, 'width' => '12', 'height' => $height], 'dash_widgets');
$y += $height;
$height = round(240 / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'map',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '6',
'height' => $height], 'dash_widgets'
);
dbInsert(['dash_id' => '1',
'widget_type' => 'status_summary',
'widget_config' => $blank,
'x' => '6',
'y' => $y,
'width' => '6',
'height' => $height], 'dash_widgets'
);
$y += $height;
$height = ceil((90 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'alert_boxes',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
$height = ceil((280 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'eventlog',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '6',
'height' => $height], 'dash_widgets'
);
dbInsert(['dash_id' => '1',
'widget_type' => 'alertlog',
'widget_config' => $blank,
'x' => '6',
'y' => $y,
'width' => '6',
'height' => $height], 'dash_widgets'
);
$y += $height;
} else {
$height = ceil((80 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'welcome',
'widget_config' => json_encode(['converted' => TRUE]),
'x' => '6',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$x = 0;
$y += $height;
foreach ($config['frontpage']['order'] as $entry) {
switch ($entry) {
case "map":
$height = ceil((250 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'map',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "portpercent":
$height = ceil((240 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'port_percent',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "status_summary":
$height = ceil((140 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'status_summary',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "alert_table":
$height = ceil((240 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'alert_table',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "device_status_boxes":
$height = ceil((90 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'old_status_boxes',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "eventlog":
$height = ceil((240 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'eventlog',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "syslog":
$height = ceil((240 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'syslog',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "device_status":
$height = ceil((240 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'old_status_table',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '12',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "splitlog":
$height = ceil((240 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
dbInsert(['dash_id' => '1',
'widget_type' => 'syslog',
'widget_config' => $blank,
'x' => '0',
'y' => $y,
'width' => '6',
'height' => $height], 'dash_widgets'
);
dbInsert(['dash_id' => '1',
'widget_type' => 'eventlog',
'widget_config' => $blank,
'x' => '6',
'y' => $y,
'width' => '6',
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "overall_traffic":
//$peering_count = dbFetchCell("SELECT COUNT(port_id) FROM `ports` WHERE `port_descr_type` = 'peering'");
//$transit_count = dbFetchCell("SELECT COUNT(port_id) FROM `ports` WHERE `port_descr_type` = 'transit'");
$peering_exist = dbExist('ports', '`port_descr_type` = ?', ['peering']);
$transit_exist = dbExist('ports', '`port_descr_type` = ?', ['transit']);
$height = ceil((120 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
if ($transit_exist) {
$graph_array = ['type' => 'global_bits', 'port_type' => 'transit', 'title' => 'Transit Traffic', 'separate' => 'yes'];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 6,
'height' => $height], 'dash_widgets'
);
$x += 6;
}
if ($peering_exist) {
$graph_array = ['type' => 'global_bits', 'port_type' => 'peering', 'title' => 'Peering Traffic', 'separate' => 'yes'];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 6,
'height' => $height], 'dash_widgets'
);
$x += 6;
}
$y += $height;
$height = ceil((160 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
$graph_array = ['type' => 'global_bits_types', 'type_a' => 'transit', 'type_b' => 'peering', 'from' => '-1m', 'title' => 'Monthly Transit and Peering Traffic'];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 12,
'height' => $height], 'dash_widgets'
);
$x = 0;
$y += $height;
break;
case "custom_traffic":
if (isset($config['frontpage']['custom_traffic']['title'])) {
$title = $config['frontpage']['custom_traffic']['title'];
} else {
$title = "Custom Traffic";
}
$height = ceil((120 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
$graph_array = ['type' => 'multi-port_bits', 'id' => $config['frontpage']['custom_traffic']['ids'], 'from' => '-1d', 'title' => $title . ' Today'];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 6,
'height' => $height], 'dash_widgets'
);
$x += 6;
$graph_array = ['type' => 'multi-port_bits', 'id' => $config['frontpage']['custom_traffic']['ids'], 'from' => '-7d', 'title' => $title . ' This Week'];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 6,
'height' => $height], 'dash_widgets'
);
$y += $height;
$x = 0;
$graph_array = ['type' => 'multi-port_bits', 'id' => $config['frontpage']['custom_traffic']['ids'], 'from' => '-1m', 'title' => $title . ' This Month'];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 12,
'height' => $height], 'dash_widgets'
);
$y += $height;
break;
case "micrographs":
$height = ceil((40 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
foreach ($config['frontpage']['micrographs'] as $row) {
foreach (explode(';', $row['ids']) as $graph) {
if (!$graph) {
continue;
}
[$device, $type, $header] = explode(',', $graph, 3);
$graph_array = ['type' => $type, 'id' => $device, 'title' => $header];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => 2,
'height' => $height], 'dash_widgets'
);
$x += 2;
}
$y += $height;
$x = 0;
}
break;
case "minigraphs":
$height = ceil((100 + $grid_v_margin) / ($grid_cell_height + $grid_v_margin));
$width = 3;
foreach (explode(';', $config['frontpage']['minigraphs']['ids']) as $graph) {
if (!$graph) {
continue;
}
if ($x + $width > 12) {
$x = 0;
$y += $height;
}
[$id, $type, $header] = explode(',', $graph, 3);
$id = str_replace("%2C", ",", $id); // Replace the HTML code for comma with a comma.
$graph_array = ['type' => $type, 'id' => $id, 'title' => $header];
$widget_id = dbInsert(['dash_id' => '1',
'widget_config' => json_encode($graph_array),
'widget_type' => 'graph',
'x' => $x,
'y' => $y,
'width' => $width,
'height' => $height], 'dash_widgets'
);
$x += 3;
}
$y += $height;
$x = 0;
break;
}
}
}