示例#1
0
 function get_statistic()
 {
     $this->load->library('OpenFlashChartLib', NULL, 'OFCL');
     $data_1 = array();
     $data_2 = array();
     // generate 7 data points
     for ($i = 0; $i <= 7; $i++) {
         $x = mktime(0, 0, 0, date("m"), date("d") - $i, date('Y'));
         $param['sms_date'] = date('Y-m-d', mktime(0, 0, 0, date("m"), date("d") - $i, date("Y")));
         $param['user_id'] = $this->session->userdata('id_user');
         $y = $this->Kalkun_model->get_sms_used('date', $param);
         $data_1[] = new scatter_value($x, $y);
         $data_2[] = $y;
     }
     $def = new solid_dot();
     $def->size(4)->halo_size(0)->colour('#21759B')->tooltip('#date:d M y#<br>#val# SMS');
     $line = new scatter_line('#21759B', 3);
     $line->set_values($data_1);
     $line->set_default_dot_style($def);
     $line->set_key("SMS used in last 7 days", 10);
     $x = new x_axis();
     // grid line and tick every 10
     $x->set_range(mktime(0, 0, 0, date("m"), date("d") - 7, date('Y')), mktime(0, 0, 0, date("m"), date("d"), date('Y')));
     // show ticks and grid lines for every day:
     $x->set_steps(86400);
     $labels = new x_axis_labels();
     // tell the labels to render the number as a date:
     $labels->text('#date:M-d#');
     // generate labels for every day
     $labels->set_steps(86400);
     // only display every other label (every other day)
     $labels->visible_steps(1);
     $labels->rotate(45);
     // finally attach the label definition to the x axis
     $x->set_labels($labels);
     $y = new y_axis();
     if (max($data_2) > 0) {
         $max = max($data_2);
     } else {
         $max = 10;
     }
     $y->set_range(0, $max, 10);
     $chart = new open_flash_chart();
     //$chart->set_title( $title );
     $chart->add_element($line);
     $chart->set_x_axis($x);
     $chart->set_y_axis($y);
     echo $chart->toPrettyString();
 }
示例#2
0
 function _render_statistic($x = array(), $yout = array(), $yin = array(), $type = 'bar', $points)
 {
     $this->load->helper('date');
     $this->load->library('OpenFlashChartLib', NULL, 'OFCL');
     $data_1 = array();
     $data_2 = array();
     $data_3 = array();
     switch ($type) {
         case 'bar':
             for ($i = 0; $i <= $points; $i++) {
                 $data_1[$i] = $x[$i];
                 $data_2[$i] = (int) $yout[$i];
                 // force to integer
                 $data_3[$i] = (int) $yin[$i];
                 // force to integer
             }
             $data_1 = array_reverse($data_1);
             $data_2 = array_reverse($data_2);
             $data_3 = array_reverse($data_3);
             $bar_1 = new bar();
             $bar_1->set_values($data_3);
             $bar_1->set_colour('#639F45');
             $bar_1->key(lang('kalkun_incoming_sms'), 10);
             $bar_1->set_tooltip('#x_label#<br>#val# SMS');
             //$bar_1->set_key("SMS used in last 7 days", 10);
             $bar_2 = new bar();
             $bar_2->set_values($data_2);
             $bar_2->set_colour('#21759B');
             $bar_2->key(lang('kalkun_outgoing_sms'), 10);
             $bar_2->set_tooltip('#x_label#<br>#val# SMS');
             $x = new x_axis();
             $labels = new x_axis_labels();
             $labels->set_labels($data_1);
             $labels->set_steps(1);
             $x->set_labels($labels);
             $y = new y_axis();
             $max = max(max($data_2), max($data_3));
             if ($max < 10) {
                 $max = 10;
             }
             $max = ceil($max / 5) * 5;
             $range = ceil($max / 5);
             $range = ceil($range / 10) * 10;
             $y->set_range(0, $max, $range);
             $element1 = $bar_1;
             $element2 = $bar_2;
             break;
         case 'line':
             for ($i = 0; $i <= 7; $i++) {
                 $data_1[$i] = new scatter_value($x[$i], $yin[$i]);
                 $data_2[$i] = new scatter_value($x[$i], $yout[$i]);
                 $data_3[$i] = (int) $yin[$i];
                 $data_4[$i] = (int) $yout[$i];
             }
             $def = new solid_dot();
             $def->size(4)->halo_size(0)->colour('#21759B')->tooltip('#date:d M y#<br>#val# SMS');
             $line_1 = new scatter_line('#639F45', 3);
             $line_1->set_values($data_1);
             $line_1->set_default_dot_style($def);
             $line_1->set_key("Incoming SMS", 10);
             $line_2 = new scatter_line('#21759B', 3);
             $line_2->set_values($data_2);
             $line_2->set_default_dot_style($def);
             $line_2->set_key("Outgoing SMS", 10);
             $x = new x_axis();
             // grid line and tick every 10
             $x->set_range(mktime(0, 0, 0, date("m"), date("d") - 7, date('Y')), mktime(0, 0, 0, date("m"), date("d"), date('Y')));
             // show ticks and grid lines for every day:
             $x->set_steps(86400);
             $labels = new x_axis_labels();
             // tell the labels to render the number as a date:
             $labels->text('#date:M-d#');
             // generate labels for every day
             $labels->set_steps(86400);
             // only display every other label (every other day)
             $labels->visible_steps(1);
             $labels->rotate(45);
             // finally attach the label definition to the x axis
             $x->set_labels($labels);
             $y = new y_axis();
             $max = max(max($data_3), max($data_4));
             if ($max < 1) {
                 $max = 10;
             }
             $y->set_range(0, $max, round($max / 100) * 10);
             $element1 = $line_1;
             $element2 = $line_2;
             break;
     }
     $chart = new open_flash_chart();
     $chart->add_element($element1);
     $chart->add_element($element2);
     $chart->set_x_axis($x);
     $chart->set_y_axis($y);
     echo $chart->toPrettyString();
 }
示例#3
0
    $time_axis[$i] = date('F', strtotime('+' . $i . ' month', 0));
}
$data_w = array_fill(0, 12, 0);
$data_t = array_fill(0, 12, 0);
$stmt = "SELECT date_format(timestamp,'%c')-1 as m, avg(AMsWatt)+avg(BMsWatt) AS Watt, max(ETotal)-min(ETotal) ETotal FROM solardata " . " WHERE date <> 0" . " GROUP BY date_format(timestamp,'%c') " . " ORDER BY TimeStamp LIMIT 100";
$ok = mysql_query($stmt);
if ($ok) {
    while ($row = mysql_fetch_object($ok)) {
        $data_w[$row->m] = round((double) $row->Watt, 3);
        $data_t[$row->m] = round((double) $row->ETotal, 3);
    }
    $title = new title("\nJahresueberblick Verteilung");
    $title->set_style('{font-size: 20px; color: #778877}');
    $vals = array();
    for ($i = 0; $i < count($data_w); $i++) {
        $tmp = new solid_dot($data_t[$i]);
        $tmp->colour('#4d4d4d')->tooltip("{$time_axis[$i]}<br>#val# kWh");
        $vals[] = $tmp;
    }
    $area_w = new area();
    $area_w->set_width(1);
    $area_w->set_default_dot_style(new hollow_dot('#EFC01D', 5));
    $area_w->set_colour('#EFC01D');
    $area_w->set_fill_colour('#EFC01D');
    $area_w->set_fill_alpha(0.4);
    $area_w->set_loop();
    $area_w->set_values($vals);
    $line_t = new line();
    $line_t->set_values($data_t);
    $max = max($data_t) * 1.15;
    $label = array();
示例#4
0
 private function remapSeries($oY, $idx, $scale = 1)
 {
     $maxY = $oY->max;
     $max = 0;
     foreach ($this->aData[$idx] as $v) {
         $v = (double) $v;
         if ($v > $max) {
             $max = $v;
         }
     }
     foreach ($this->aData[$idx] as $k => $v) {
         if (isset($v)) {
             if (!$max) {
                 $this->aData[$idx][$k] = 0;
             } else {
                 $oValue = new solid_dot((double) $v / $max * $maxY * $scale);
                 $oValue->tooltip(str_replace('#val#', $v, $this->aTooltips[$idx]));
                 if (!empty($this->drillDown)) {
                     $oValue->on_click($this->drillDown);
                 }
                 $this->aData[$idx][$k] = $oValue;
             }
         }
     }
 }
示例#5
0
 /**
  * Create a single line graph
  *
  * @param string $title Title of the graph
  * @param array $values Array of values
  * @param array $titles Array of titles
  * @return none 
  *
  */
 public static function create_line_graph($title)
 {
     self::init();
     $d = new solid_dot();
     $d->size(3)->halo_size(1)->colour('#3D5C56');
     $range_values = array();
     foreach (self::$data_set as $data) {
         if (!is_array($data['values'])) {
             continue;
         }
         $line = new line();
         $line->set_default_dot_style($d);
         $line->set_values($data['values']);
         $line->set_width(2);
         $line->set_key($data['line_title'], 10);
         $line->set_colour($data['color']);
         # Since there should be an even number on the xaxis for all sets
         $x_axis_titles = $data['titles'];
         # Add our values into a big bucket so we can get the highest and lowest
         $range_values = array_merge($range_values, $data['values']);
         self::$chart->add_element($line);
     }
     $x_labels = new x_axis_labels();
     $x_labels->set_labels($x_axis_titles);
     $x_labels->set_vertical();
     self::$x_axis->set_labels($x_labels);
     $range = self::get_range($range_values);
     self::$y_axis->set_range($range['min'], $range['max']);
     self::show_chart($title);
 }