Beispiel #1
0
function render_chart($options = array())
{
    $genid = array_var($options, 'genid', gen_id());
    $title = array_var($options, 'title', '');
    $width = array_var($options, 'width', 700);
    $height = array_var($options, 'height', 500);
    $type = array_var($options, 'type', 'line');
    $x_range = array_var($options, 'x_range', array());
    $y_range = array_var($options, 'y_range', array());
    $x_labels = array_var($options, 'x_labels', array());
    $y_axis_right = array_var($options, 'y_axis_right');
    $y_values = array_var($options, 'data');
    $shapes = array_var($options, 'shapes', array());
    $label_step = array_var($options, 'label_step', 7);
    $title = new OFC_Elements_Title($title);
    $max = 0;
    $chart_values = array();
    foreach ($y_values as $y_values_array) {
        $data_object = create_chart_data_object($type, $y_values_array);
        $values_data = array_var($y_values_array, 'values', array());
        $max = count($values_data) > $max ? count($values_data) : $max;
        $chart_values[] = $data_object;
    }
    $x_range_start = array_var($x_range, 'start', 0);
    $x_range_end = array_var($x_range, 'end', 10) - $x_range_start > $max ? $max + $x_range_start - 1 : array_var($x_range, 'end', 10);
    $labels = array();
    $coef = floor(count($x_labels) / $label_step);
    if ($coef > 0) {
        $k = 0;
        foreach ($x_labels as $label) {
            $labels[] = $k % $coef == 0 ? $label : "";
            $k++;
        }
    } else {
        $labels = $x_labels;
    }
    $x_axis = new OFC_Elements_Axis_X();
    $x_axis->set_colours(array_var($options, 'x_axis_color', '#87C4FA'), array_var($options, 'x_grid_color', '#D4E8FA'));
    if (array_var($x_range, 'step')) {
        $x_axis->set_range($x_range_start, $x_range_end, array_var($x_range, 'step', 1));
    }
    $x_axis->set_labels_from_array($labels);
    $y_axis = new OFC_Elements_Axis_Y();
    $y_axis->set_colours(array_var($options, 'y_axis_color', '#87C4FA'), array_var($options, 'y_grid_color', '#D4E8FA'));
    if (array_var($y_range, 'step')) {
        $y_axis->set_range(array_var($y_range, 'start', 0), array_var($y_range, 'end', 10), array_var($y_range, 'step', 1));
    }
    $chart = new OFC_Chart();
    $chart->set_title($title);
    foreach ($chart_values as $cv) {
        $chart->add_element($cv);
    }
    $chart->set_x_axis($x_axis);
    $chart->set_y_axis($y_axis);
    $chart->set_bg_colour(array_var($options, 'back_color', '#FFFFFF'));
    if ($y_axis_right) {
        $chart->set_y_axis_right($y_axis);
    }
    foreach ($shapes as $s) {
        $shape = new shape(array_var($s, 'color', '#FA6900'));
        $points = array_var($s, 'points', array());
        foreach ($points as $p) {
            $shape->append_value(new shape_point($p['x'], $p['y']));
        }
        if (array_var($s, 'text')) {
            $shape->set_text(array_var($s, 'text'));
        }
        if (array_var($s, 'alpha')) {
            $shape->set_alpha(array_var($s, 'alpha'));
        }
        $chart->add_element($shape);
    }
    $filename = 'tmp/' . gen_id() . '.json';
    file_put_contents(ROOT . "/{$filename}", $chart->toPrettyString());
    open_flash_chart_object($width, $height, ROOT_URL . "/{$filename}", $genid);
    //	unlink(ROOT . "/$filename");
}