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"); }