phpchartjs pandora_enterprise#9554
This commit is contained in:
parent
5907d55ec1
commit
c32483a38a
|
@ -4815,6 +4815,13 @@ function graph_nodata_image($options)
|
||||||
$height = $options['height'];
|
$height = $options['height'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$width_style = '';
|
||||||
|
if (isset($options['width']) === true
|
||||||
|
&& empty($options['width']) === false
|
||||||
|
) {
|
||||||
|
$width_style = 'width:'.$options['width'].'px';
|
||||||
|
}
|
||||||
|
|
||||||
if ($options['base64'] === true) {
|
if ($options['base64'] === true) {
|
||||||
$dataImg = file_get_contents(
|
$dataImg = file_get_contents(
|
||||||
$config['homedir'].'/images/image_problem_area_150.png'
|
$config['homedir'].'/images/image_problem_area_150.png'
|
||||||
|
@ -4827,7 +4834,7 @@ function graph_nodata_image($options)
|
||||||
true,
|
true,
|
||||||
[
|
[
|
||||||
'title' => __('No data'),
|
'title' => __('No data'),
|
||||||
'style' => 'height:'.$height.'px;',
|
'style' => 'height:'.$height.'px;'.$width_style,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2371,6 +2371,11 @@ function get_bars_module_data($id_module, $typeGraph='horizontal')
|
||||||
$values_to_return = [];
|
$values_to_return = [];
|
||||||
foreach ($values as $val) {
|
foreach ($values as $val) {
|
||||||
$data = explode(',', $val);
|
$data = explode(',', $val);
|
||||||
|
|
||||||
|
if ($data[0] === $val) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
$values_to_return['labels'][] = io_safe_output($data[0]);
|
$values_to_return['labels'][] = io_safe_output($data[0]);
|
||||||
if ($typeGraph === 'horizontal') {
|
if ($typeGraph === 'horizontal') {
|
||||||
$values_to_return['data'][] = [
|
$values_to_return['data'][] = [
|
||||||
|
@ -2839,73 +2844,22 @@ function get_donut_module_data($id_module)
|
||||||
$no_data_to_show = true;
|
$no_data_to_show = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
$colors = [];
|
|
||||||
$colors[] = '#aa3333';
|
|
||||||
$colors[] = '#045FB4';
|
|
||||||
$colors[] = '#8181F7';
|
|
||||||
$colors[] = '#F78181';
|
|
||||||
$colors[] = '#D0A9F5';
|
|
||||||
$colors[] = '#BDBDBD';
|
|
||||||
$colors[] = '#6AB277';
|
|
||||||
|
|
||||||
$max_elements = 6;
|
|
||||||
$values_to_return = [];
|
$values_to_return = [];
|
||||||
$index = 0;
|
|
||||||
$total = 0;
|
|
||||||
foreach ($values as $val) {
|
foreach ($values as $val) {
|
||||||
if ($index < $max_elements) {
|
|
||||||
$data = explode(',', $val);
|
$data = explode(',', $val);
|
||||||
|
|
||||||
|
if ($data[0] === $val) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($no_data_to_show) {
|
if ($no_data_to_show) {
|
||||||
$values_to_return[$index]['tag_name'] = $data[0];
|
$values_to_return['labels'][] = $data[0];
|
||||||
} else {
|
} else {
|
||||||
$values_to_return[$index]['tag_name'] = $data[0].': '.$data[1];
|
$values_to_return['labels'][] = $data[0].': '.$data[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
$values_to_return[$index]['color'] = $colors[$index];
|
$values_to_return['data'][] = (int) $data[1];
|
||||||
$values_to_return[$index]['value'] = (int) $data[1];
|
|
||||||
$total += (int) $data[1];
|
|
||||||
$index++;
|
|
||||||
} else {
|
|
||||||
$data = explode(',', $val);
|
|
||||||
$values_to_return[$index]['tag_name'] = __('Others').': '.$data[1];
|
|
||||||
$values_to_return[$index]['color'] = $colors[$index];
|
|
||||||
$values_to_return[$index]['value'] += (int) $data[1];
|
|
||||||
$total += (int) $data[1];
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($values_to_return as $ind => $donut_data) {
|
|
||||||
$values_to_return[$ind]['percent'] = (($donut_data['value'] * 100) / $total);
|
|
||||||
}
|
|
||||||
|
|
||||||
// sort array
|
|
||||||
$new_values_to_return = [];
|
|
||||||
while (!empty($values_to_return)) {
|
|
||||||
$first = true;
|
|
||||||
$max_elem = 0;
|
|
||||||
$max_elem_array = [];
|
|
||||||
$index_to_del = 0;
|
|
||||||
foreach ($values_to_return as $i => $val) {
|
|
||||||
if ($first) {
|
|
||||||
$max_elem = $val['value'];
|
|
||||||
$max_elem_array = $val;
|
|
||||||
$index_to_del = $i;
|
|
||||||
$first = false;
|
|
||||||
} else {
|
|
||||||
if ($val['value'] > $max_elem) {
|
|
||||||
$max_elem = $val['value'];
|
|
||||||
$max_elem_array = $val;
|
|
||||||
$index_to_del = $i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$new_values_to_return[] = $max_elem_array;
|
|
||||||
unset($values_to_return[$index_to_del]);
|
|
||||||
}
|
|
||||||
|
|
||||||
$values_to_return = $new_values_to_return;
|
|
||||||
|
|
||||||
return $values_to_return;
|
return $values_to_return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -461,6 +461,12 @@ function ring_graph(
|
||||||
global $config;
|
global $config;
|
||||||
|
|
||||||
if (empty($chart_data) === true) {
|
if (empty($chart_data) === true) {
|
||||||
|
if (isset($options['ttl']) === true
|
||||||
|
&& (int) $options['ttl'] === 2
|
||||||
|
) {
|
||||||
|
$options['base64'] = true;
|
||||||
|
}
|
||||||
|
|
||||||
return graph_nodata_image($options);
|
return graph_nodata_image($options);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -241,11 +241,15 @@ final class BarsGraph extends Item
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$width = (int) $data['width'];
|
||||||
|
$height = (int) $data['height'];
|
||||||
$moduleData = \get_bars_module_data($moduleId, $typeGraph);
|
$moduleData = \get_bars_module_data($moduleId, $typeGraph);
|
||||||
if ($moduleData !== false && is_array($moduleData) === true) {
|
|
||||||
|
if (empty($moduleData) === true) {
|
||||||
|
$graph = graph_nodata_image(['width' => $width, 'height' => $height]);
|
||||||
|
} else {
|
||||||
array_pop($moduleData['labels']);
|
array_pop($moduleData['labels']);
|
||||||
array_pop($moduleData['data']);
|
array_pop($moduleData['data']);
|
||||||
}
|
|
||||||
|
|
||||||
$waterMark = [
|
$waterMark = [
|
||||||
'file' => $config['homedir'].'/images/logo_vertical_water.png',
|
'file' => $config['homedir'].'/images/logo_vertical_water.png',
|
||||||
|
@ -316,7 +320,10 @@ final class BarsGraph extends Item
|
||||||
$options['axis'] = 'y';
|
$options['axis'] = 'y';
|
||||||
}
|
}
|
||||||
|
|
||||||
$graph = vbar_graph($moduleData['data'], $options);
|
$graph = '<div style="background-color:'.$backGroundColor.'">';
|
||||||
|
$graph .= vbar_graph($moduleData['data'], $options);
|
||||||
|
$graph .= '</div>';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore connection.
|
// Restore connection.
|
||||||
|
|
|
@ -72,7 +72,7 @@ final class DonutGraph extends Item
|
||||||
'border_color',
|
'border_color',
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
'#000000'
|
'#ffffff'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,13 +103,11 @@ final class DonutGraph extends Item
|
||||||
// Load side libraries.
|
// Load side libraries.
|
||||||
global $config;
|
global $config;
|
||||||
include_once $config['homedir'].'/include/functions_visual_map.php';
|
include_once $config['homedir'].'/include/functions_visual_map.php';
|
||||||
include_once $config['homedir'].'/include/graphs/functions_d3.php';
|
|
||||||
if (is_metaconsole()) {
|
if (is_metaconsole()) {
|
||||||
\enterprise_include_once('include/functions_metaconsole.php');
|
\enterprise_include_once('include/functions_metaconsole.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract needed properties.
|
// Extract needed properties.
|
||||||
$legendBackGroundColor = static::extractLegendBackgroundColor($data);
|
|
||||||
// Get the linked agent and module Ids.
|
// Get the linked agent and module Ids.
|
||||||
$linkedModule = static::extractLinkedModule($data);
|
$linkedModule = static::extractLinkedModule($data);
|
||||||
$agentId = $linkedModule['agentId'];
|
$agentId = $linkedModule['agentId'];
|
||||||
|
@ -158,32 +156,27 @@ final class DonutGraph extends Item
|
||||||
|
|
||||||
if ($isString === true) {
|
if ($isString === true) {
|
||||||
$graphData = \get_donut_module_data($moduleId);
|
$graphData = \get_donut_module_data($moduleId);
|
||||||
if (empty($graphData) || $graphData === null) {
|
|
||||||
$aux = [];
|
|
||||||
$aux[0]['tag_name'] = 'No data to show';
|
|
||||||
$aux[0]['color'] = '#aa3333';
|
|
||||||
$aux[0]['value'] = 1;
|
|
||||||
$aux[0]['percent'] = 100;
|
|
||||||
$graphData = $aux;
|
|
||||||
}
|
|
||||||
|
|
||||||
$data['html'] = \d3_donut_graph(
|
if (empty($graphData) === true) {
|
||||||
(int) $data['id'],
|
$data['html'] = graph_nodata_image(['width' => $width, 'height' => $height]);
|
||||||
$width,
|
|
||||||
$height,
|
|
||||||
$graphData,
|
|
||||||
$legendBackGroundColor
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
$src = 'images/console/signes/wrong_donut_graph.png';
|
array_pop($graphData['labels']);
|
||||||
if (\is_metaconsole() === true) {
|
array_pop($graphData['data']);
|
||||||
$src = '../../'.$src;
|
|
||||||
|
$options = [
|
||||||
|
'waterMark' => false,
|
||||||
|
'legend' => [
|
||||||
|
'display' => true,
|
||||||
|
'position' => 'right',
|
||||||
|
'align' => 'center',
|
||||||
|
],
|
||||||
|
'labels' => $graphData['labels'],
|
||||||
|
];
|
||||||
|
|
||||||
|
$data['html'] = \ring_graph($graphData['data'], $options);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
$src = ui_get_full_url($src);
|
$data['html'] = graph_nodata_image(['width' => $width, 'height' => $height]);
|
||||||
|
|
||||||
$style = 'width:'.$width.'px; height:'.$height.'px;';
|
|
||||||
$data['html'] = '<img src="'.$src.'" style="'.$style.'">';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore connection.
|
// Restore connection.
|
||||||
|
@ -255,12 +248,12 @@ final class DonutGraph extends Item
|
||||||
|
|
||||||
// Resume data color.
|
// Resume data color.
|
||||||
$inputs[] = [
|
$inputs[] = [
|
||||||
'label' => __('Resume data color'),
|
'label' => __('Background color'),
|
||||||
'arguments' => [
|
'arguments' => [
|
||||||
'wrapper' => 'div',
|
'wrapper' => 'div',
|
||||||
'name' => 'legendBackgroundColor',
|
'name' => 'legendBackgroundColor',
|
||||||
'type' => 'color',
|
'type' => 'color',
|
||||||
'value' => $values['legendBackgroundColor'],
|
'value' => (($values['legendBackgroundColor']) ?? '#ffffff'),
|
||||||
'return' => true,
|
'return' => true,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -450,7 +450,8 @@ class View extends \HTML
|
||||||
$data['metaconsoleId'] = \get_parameter('metaconsoleId');
|
$data['metaconsoleId'] = \get_parameter('metaconsoleId');
|
||||||
$data['moduleId'] = \get_parameter('moduleId');
|
$data['moduleId'] = \get_parameter('moduleId');
|
||||||
$data['legendBackgroundColor'] = \get_parameter(
|
$data['legendBackgroundColor'] = \get_parameter(
|
||||||
'legendBackgroundColor'
|
'legendBackgroundColor',
|
||||||
|
'#ffffff'
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -43,7 +43,7 @@ export function donutGraphPropsDecoder(
|
||||||
? data.html
|
? data.html
|
||||||
: decodeBase64(data.encodedHtml),
|
: decodeBase64(data.encodedHtml),
|
||||||
legendBackgroundColor: stringIsEmpty(data.legendBackgroundColor)
|
legendBackgroundColor: stringIsEmpty(data.legendBackgroundColor)
|
||||||
? "#000000"
|
? "#ffffff"
|
||||||
: data.legendBackgroundColor,
|
: data.legendBackgroundColor,
|
||||||
...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.
|
...modulePropsDecoder(data), // Object spread. It will merge the properties of the two objects.
|
||||||
...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.
|
...linkedVCPropsDecoder(data) // Object spread. It will merge the properties of the two objects.
|
||||||
|
@ -55,6 +55,7 @@ export default class DonutGraph extends Item<DonutGraphProps> {
|
||||||
const element = document.createElement("div");
|
const element = document.createElement("div");
|
||||||
element.className = "donut-graph";
|
element.className = "donut-graph";
|
||||||
element.innerHTML = this.props.html;
|
element.innerHTML = this.props.html;
|
||||||
|
element.style.backgroundColor = this.props.legendBackgroundColor;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
this.props.agentDisabled === true ||
|
this.props.agentDisabled === true ||
|
||||||
|
@ -66,21 +67,31 @@ export default class DonutGraph extends Item<DonutGraphProps> {
|
||||||
// Hack to execute the JS after the HTML is added to the DOM.
|
// Hack to execute the JS after the HTML is added to the DOM.
|
||||||
const scripts = element.getElementsByTagName("script");
|
const scripts = element.getElementsByTagName("script");
|
||||||
for (let i = 0; i < scripts.length; i++) {
|
for (let i = 0; i < scripts.length; i++) {
|
||||||
|
if (scripts[i].src.length === 0) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (scripts[i].src.length === 0) eval(scripts[i].innerHTML.trim());
|
try {
|
||||||
|
eval(scripts[i].innerHTML.trim());
|
||||||
|
} catch (ignored) {} // eslint-disable-line no-empty
|
||||||
}, 0);
|
}, 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected updateDomElement(element: HTMLElement): void {
|
protected updateDomElement(element: HTMLElement): void {
|
||||||
element.innerHTML = this.props.html;
|
element.innerHTML = this.props.html;
|
||||||
|
element.style.backgroundColor = this.props.legendBackgroundColor;
|
||||||
|
|
||||||
|
if (
|
||||||
|
this.props.agentDisabled === true ||
|
||||||
|
this.props.moduleDisabled === true
|
||||||
|
) {
|
||||||
|
element.style.opacity = "0.2";
|
||||||
|
}
|
||||||
|
|
||||||
// Hack to execute the JS after the HTML is added to the DOM.
|
// Hack to execute the JS after the HTML is added to the DOM.
|
||||||
const aux = document.createElement("div");
|
const scripts = element.getElementsByTagName("script");
|
||||||
aux.innerHTML = this.props.html;
|
|
||||||
const scripts = aux.getElementsByTagName("script");
|
|
||||||
for (let i = 0; i < scripts.length; i++) {
|
for (let i = 0; i < scripts.length; i++) {
|
||||||
if (scripts[i].src.length === 0) {
|
if (scripts[i].src.length === 0) {
|
||||||
eval(scripts[i].innerHTML.trim());
|
eval(scripts[i].innerHTML.trim());
|
||||||
|
|
Loading…
Reference in New Issue