<?php

// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas
// Please see http://pandorafms.org for full contribution list
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation for version 2.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
global $config;

require_once 'include/functions_custom_graphs.php';

if (is_ajax()) {
    $search_agents = (bool) get_parameter('search_agents');

    if ($search_agents) {
        include_once 'include/functions_agents.php';

        $id_agent = (int) get_parameter('id_agent');
        $string = (string) get_parameter('q');
        // q is what autocomplete plugin gives
        $id_group = (int) get_parameter('id_group');

        $filter = [];
        $filter[] = '(nombre COLLATE utf8_general_ci LIKE "%'.$string.'%" OR direccion LIKE "%'.$string.'%" OR comentarios LIKE "%'.$string.'%")';
        $filter['id_grupo'] = $id_group;

        $agents = agents_get_agents($filter, ['nombre', 'direccion']);
        if ($agents === false) {
            return;
        }

        foreach ($agents as $agent) {
            echo $agent['nombre'].'|'.$agent['direccion']."\n";
        }

        return;
    }

    return;
}

check_login();

if (! check_acl($config['id_user'], 0, 'RW') && ! check_acl($config['id_user'], 0, 'RM')) {
    db_pandora_audit(
        'ACL Violation',
        'Trying to access graph builder'
    );
    include 'general/noaccess.php';
    exit;
}

if ($edit_graph) {
    $graphInTgraph = db_get_row_sql('SELECT * FROM tgraph WHERE id_graph = '.$id_graph);
    $stacked = $graphInTgraph['stacked'];
    $period = $graphInTgraph['period'];
    $id_group = $graphInTgraph['id_group'];
    $check = false;
    $percentil = $graphInTgraph['percentil'];
    $summatory_series = $graphInTgraph['summatory_series'];
    $average_series = $graphInTgraph['average_series'];
    $modules_series = $graphInTgraph['modules_series'];
    $fullscale = $graphInTgraph['fullscale'];

    if ($stacked == CUSTOM_GRAPH_BULLET_CHART_THRESHOLD) {
        $stacked = CUSTOM_GRAPH_BULLET_CHART;
        $check = true;
    }
} else {
    $id_agent = 0;
    $id_module = 0;
    $id_group = 0;
    $period = SECONDS_1DAY;
    $factor = 1;
    $stacked = 4;
    $check = false;
    $percentil = 0;
    $summatory_series = 0;
    $average_series = 0;
    $modules_series = 0;
    if ($config['full_scale_option'] == 1) {
        $fullscale = 1;
    } else {
        $fullscale = 0;
    }
}

// -----------------------
// CREATE/EDIT GRAPH FORM
// -----------------------
echo "<table width='100%' cellpadding=4 cellspacing=4 class='databox filters'>";

if ($edit_graph) {
    echo "<form method='post' action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&update_graph=1&id=".$id_graph."'>";
} else {
    echo "<form method='post' action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&edit_graph=1&add_graph=1'>";
}

echo '<tr>';
echo "<td class='datos'><b>".__('Name').'</b></td>';
echo "<td class='datos'><input type='text' name='name' size='25' ";
if ($edit_graph) {
    echo "value='".$graphInTgraph['name']."' ";
}

echo '>';

$own_info = get_user_info($config['id_user']);

echo '<td><b>'.__('Group').'</b></td><td>';
if (check_acl($config['id_user'], 0, 'RW')) {
    echo html_print_select_groups($config['id_user'], 'RW', true, 'graph_id_group', $id_group, '', '', '', true);
} else if (check_acl($config['id_user'], 0, 'RM')) {
    echo html_print_select_groups($config['id_user'], 'RM', true, 'graph_id_group', $id_group, '', '', '', true);
}

echo '</td></tr>';
echo '<tr>';
echo "<td class='datos2'><b>".__('Description').'</b></td>';
echo "<td class='datos2' colspan=3><textarea name='description' style='height:45px;' cols=55 rows=2>";
if ($edit_graph) {
    echo $graphInTgraph['description'];
}

echo '</textarea>';
echo '</td></tr>';
if ($stacked == CUSTOM_GRAPH_GAUGE) {
    $hidden = ' style="display:none;" ';
} else {
    $hidden = '';
}

echo '<tr>';
echo "<td class='datos'>";
echo '<b>'.__('Period').'</b></td>';
echo "<td class='datos'>";
html_print_extended_select_for_time('period', $period, '', '', '0', 10);
echo "</td><td class='datos2'>";
echo '<b>'.__('Type of graph').'</b></td>';
echo "<td class='datos2'> <div style='float:left;display:inline-block'>";

require_once $config['homedir'].'/include/functions_graph.php';

$stackeds = [
    CUSTOM_GRAPH_AREA         => __('Area'),
    CUSTOM_GRAPH_STACKED_AREA => __('Stacked area'),
    CUSTOM_GRAPH_LINE         => __('Line'),
    CUSTOM_GRAPH_STACKED_LINE => __('Stacked line'),
    CUSTOM_GRAPH_BULLET_CHART => __('Bullet chart'),
    CUSTOM_GRAPH_GAUGE        => __('Gauge'),
    CUSTOM_GRAPH_HBARS        => __('Horizontal bars'),
    CUSTOM_GRAPH_VBARS        => __('Vertical bars'),
    CUSTOM_GRAPH_PIE          => __('Pie'),
];
html_print_select($stackeds, 'stacked', $stacked);

echo '</div></td></tr>';

echo "<tr><td class='datos2'><b>".__('Percentil').'</b></td>';
echo "<td class='datos2'>".html_print_checkbox('percentil', 1, $percentil, true).'</td>';
echo "<td class='datos2'><div id='thresholdDiv' name='thresholdDiv'><b>".__('Equalize maximum thresholds').'</b>'.ui_print_help_tip(__('If an option is selected, all graphs will have the highest value from all modules included in the graph as a maximum threshold'), true);
    html_print_checkbox('threshold', CUSTOM_GRAPH_BULLET_CHART_THRESHOLD, $check, false, false, '', false);
echo '</div></td></tr>';
echo "<tr><td class='datos2'><b>".__('Add summatory series').ui_print_help_tip(
    __(
        'Adds synthetic series to the graph, using all module 
	values to calculate the summation and/or average in each time interval. 
	This feature could be used instead of synthetic modules if you only want to see a graph.'
    ),
    true
).'</b></td>';
echo "<td class='datos2'>".html_print_checkbox('summatory_series', 1, $summatory_series, true)."</td>
<td class='datos2'><b>".__('Add average series').'</b></td>';
echo "<td class='datos2'>".html_print_checkbox('average_series', 1, $average_series, true).'</td></tr>';
echo "<tr><td class='datos2'><b>".__('Modules and series').'</b></td>';

echo "<td class='datos2'>".html_print_checkbox('modules_series', 1, $modules_series, true).'</td>';
echo "<td class='datos2'><b>".__('Show full scale graph (TIP)').ui_print_help_tip(__('This option may cause performance issues'), true).'</td>';
echo "<td class='datos2'>".html_print_checkbox('fullscale', 1, $fullscale, true).'</td>';
echo '</tr>';
echo '</table>';

if ($edit_graph) {
    echo "<div style='width:100%'><input style='float:right;' type=submit name='store' class='sub upd' value='".__('Update')."'></div>";
} else {
    echo "<div style='width:100%'><input style='float:right;' type=submit name='store' class='sub next' value='".__('Create')."'></div>";
}

echo '</form>';


echo '<script type="text/javascript">
	$(document).ready(function() {
		if ($("#stacked").val() == '.CUSTOM_GRAPH_BULLET_CHART.') {
			$("#thresholdDiv").show();
		}else{
			$("#thresholdDiv").hide();
		}
		
		if(!$("#checkbox-summatory_series").is(":checked") && !$("#checkbox-average_series").is(":checked")){
			$("#checkbox-modules_series").attr("disabled", true);
			$("#checkbox-modules_series").attr("checked", false);
		}
		
	});

	$("#stacked").change(function(){
		if ( $(this).val() == '.CUSTOM_GRAPH_GAUGE.') {
			$("[name=threshold]").prop("checked", false);
			$(".stacked").hide();
			$("input[name=\'width\']").hide();
			$("#thresholdDiv").hide();
		} else if ($(this).val() == '.CUSTOM_GRAPH_BULLET_CHART.') {
			$("#thresholdDiv").show();
			$(".stacked").show();
			$("input[name=\'width\']").show();
		} else {
			$("[name=threshold]").prop("checked", false);
			$(".stacked").show();
			$("input[name=\'width\']").show();
			$("#thresholdDiv").hide();
		}
	});
	
	$("#checkbox-summatory_series").change(function() {
		if($("#checkbox-summatory_series").is(":checked") && $("#checkbox-modules_series").is(":disabled")) {
			$("#checkbox-modules_series").removeAttr("disabled");
		} else if(!$("#checkbox-average_series").is(":checked")) {
			$("#checkbox-modules_series").attr("disabled", true);
			$("#checkbox-modules_series").attr("checked", false);
		}
	});
	
	$("#checkbox-average_series").change(function() {
		if($("#checkbox-average_series").is(":checked") && $("#checkbox-modules_series").is(":disabled")) {
			$("#checkbox-modules_series").removeAttr("disabled");
		} else if(!$("#checkbox-summatory_series").is(":checked")) {
			$("#checkbox-modules_series").attr("disabled", true);
			$("#checkbox-modules_series").attr("checked", false);
		}
	});

</script>';