Example #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();
 }
Example #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();
 }
Example #3
0
 function getNewUsersByTime($timePhase, $fromDate = '', $toDate = '')
 {
     $this->load->library('ofc');
     $userId = $this->common->getUserId();
     $this->ofc->open_flash_chart();
     $this->ofc->set_bg_colour(CHART_BG_COLOR);
     $toTime = date("Y-m-d", strtotime("-1 day"));
     if ($timePhase == "7day") {
         $fromTime = date("Y-m-d", strtotime("-8 day"));
         $color = CHART_LINE_1;
         $key = "近7日新增用户";
         $title = new title("近7日新增用户统计");
     }
     if ($timePhase == "1month") {
         $title = new title("近30天新增用户统计");
         $fromTime = date("Y-m-d", strtotime("-31 day"));
         $color = CHART_LINE_2;
         $key = "近30天新增用户统计";
     }
     if ($timePhase == "3month") {
         $title = new title("近三个月新增用户统计");
         $fromTime = date("Y-m-d", strtotime("-92 day"));
         $color = CHART_LINE_3;
         $key = "近三个月新增用户统计";
     }
     if ($timePhase == "all") {
         $title = new title("所有新增用户统计");
         $fromTime = '1970-01-01';
         $color = CHART_LINE_4;
         $key = "所有新增用户统计";
     }
     if ($timePhase == "any") {
         $title = new title("所有新增用户统计");
         $fromTime = $fromDate;
         $toTime = $toDate;
         $color = CHART_LINE_4;
         $key = "所有新增用户统计";
     }
     $fromTime = $this->product->getUserStartDate($userId, $fromTime);
     $query = $this->newusermodel->getNewUsersByUserId($fromTime, $toTime, $userId);
     $data = array();
     $maxY = 0;
     $recordCount = $query->num_rows();
     $steps = $recordCount - 1 <= 10 ? 2 : (int) (((int) $recordCount - 1) / 10);
     $xlabelArray = array();
     if ($query != null && $query->num_rows() > 0) {
         foreach ($query->result() as $row) {
             $dot = new dot();
             $dot->size(3)->halo_size(1)->colour($color);
             $dot->tooltip($row->startdate . " 新增" . $row->totalusers . "用户");
             $dot->value((int) $row->totalusers);
             if ((int) $row->totalusers > $maxY) {
                 $maxY = (int) $row->totalusers;
             }
             array_push($xlabelArray, date('y-m-d', strtotime($row->startdate)));
             array_push($data, $dot);
         }
     }
     $y = new y_axis();
     $y->set_range(0, $this->common->getMaxY($maxY), $this->common->getStepY($maxY));
     $x = new x_axis();
     $x->set_range(0, $recordCount > 1 ? $recordCount - 1 : 1);
     $x_labels = new x_axis_labels();
     $x_labels->set_steps($steps);
     $x_labels->set_vertical();
     $x_labels->set_colour(CHART_LABEL_COLOR);
     $x_labels->set_size(13);
     $x_labels->set_labels($xlabelArray);
     $x_labels->rotate(-25);
     $x->set_labels($x_labels);
     $x->set_steps(1);
     $this->ofc->set_y_axis($y);
     $this->ofc->set_x_axis($x);
     $dot = new dot();
     $dot->size(3)->halo_size(1)->colour($color);
     $line = new line();
     $line->set_default_dot_style($dot);
     $line->set_values($data);
     $line->set_width(2);
     $line->set_colour($color);
     $line->colour($color);
     $line->set_key($key, 12);
     $this->ofc->add_element($line);
     $title->set_style("{font-size: 14px; color:#000000; font-family: Verdana; text-align: center;}");
     // 		$x_legend = new x_legend("<a href=\"javascript:changeChartName('chartNewUser')\">新增用户</a> <a href=\"javascript:changeChartName('chartActiveUser')\">活跃用户</a> <a href=\"javascript:changeChartName('chartStartUser')\">启动用户</a>");
     // 		$this->ofc->set_x_legend( $x_legend );
     // 		$x_legend->set_style( '{font-size: 14px; color: #778877}' );
     $this->ofc->set_title($title);
     echo $this->ofc->toPrettyString();
 }
Example #4
0
sort($the_sort);
$lowest = $the_sort[0];
rsort($the_sort);
$highest = $the_sort[0];
// get maximum value (for y-axis)
$the_sort = $the_value_array;
foreach ($the_checked_cols as $col) {
    rsort($the_sort[$col]);
    $maxima[] = $the_sort[$col][0];
}
rsort($maxima);
$maximum = $maxima[0];
//-----/end get ranges  -----------------
// Prepare the x-axis
$x = new x_axis();
$x->set_range($lowest, $highest);
// Calculate the steps and visible steps
$step = ($highest - $lowest) / 60;
$step_vis = 2;
// do not allow steps to be less than 30 minutes
if ($step < 26400) {
    # 86400
    $step = 26400;
    $step_vis = 1;
}
$x->set_steps($step);
$labels = new x_axis_labels();
$labels->text('#date:Y-m-d#');
$labels->set_steps($step);
$labels->visible_steps($step_vis);
$labels->rotate(90);
Example #5
0
      // apply temp F to C conversion
      $y=convertFtoC($row["$name_alt"]);
    }
    else {
     // no conversion, so use raw value
     $y=$row["$name_alt"];
    }
      $data[] = new scatter_value($x, $y);
    }
  }
  $s_alt->set_values( $data );
}

// Prepare the x-axis
$x = new x_axis();
$x->set_range( $ranges['min_date'], $ranges['max_date']  );
// Calculate the steps and visible steps
$step=($ranges['max_date'] - $ranges['min_date'])/60;
$step_vis=2;
// do not allow steps to be less than 1 day
if ($step < 86400) {
  $step = 86400;
  $step_vis=1;
}
$x->set_steps($step);
$labels = new x_axis_labels();
$labels->text('#date:Y-m-d#');
$labels->set_steps($step);
$labels->visible_steps($step_vis);
$labels->rotate(90);
$x->set_labels($labels);
Example #6
0
if (intval($dt) == 1) {
    $dateRange = "DATE(ts) between CONVERT('2012-5-1',DATE) and CONVERT('" . Date('Y-m-d') . "',DATE)";
} else {
    $dtt = explode("-", $dt);
    $dateRange = "DATE(ts) between CONVERT('" . $dtt[0] . "',DATE) and CONVERT('" . $dtt[1] . "',DATE)";
}
$title = new title("Page Views using " . $br . " browser between date " . $dt);
$bar = new bar_glass(55, '#D54C78', '#C31812');
include_once 'db.php';
$q = mysql_query("select count(c_browser) as tot from tracker where c_id=1234 and c_browser='" . $br . "' and " . $dateRange);
$bar->set_values(array(1245, 1202, 455, 120, 3652, 454, 121, 452, 1023, 1054, 1500, 1245, 1278, 123, 6598, 6547, 6589, 6999, 7854, 7562, 5478, 1200, 1254, 1562, 5415, 2587, 4589));
$chart = new open_flash_chart();
$chart->set_title($title);
$chart->add_element($bar);
$x = new x_axis();
$x->set_range(0, 31, 1);
$chart->set_x_axis($x);
$chart->set_y_axis($x);
$y = new y_axis();
$y->set_stroke(3);
$y->set_colour('#000000');
$y->set_tick_length(7);
$y->set_grid_colour('#000000');
// grid steps:
$y->set_range(0, 10000, 1000);
//$y_labels = new y_axis_labels();
//$y_labels->set_labels( array('Zero','One','Two','Three','Four','Five','Six','Seven','Eight') );
// visible labels steps:
//$y_labels->set_steps(4);
//$y->set_labels($y_labels);
//
 function clientstatAction()
 {
     if (!$this->clientdashboardfilter()) {
         return;
     }
     $this->view->activeTab = 'clientstat';
     // process data for chart
     include 'open-flash-chart.php';
     $request = $this->getRequest();
     $this->view->campaign_id = $request->getParam('id');
     $campaignModel = new Campaign();
     $campaign = $campaignModel->fetchRow('id = ' . $this->view->campaign_id);
     $this->_helper->layout->setLayout($this->getCampaignTemplate($campaign->id));
     //if session not exist, get data from webservice
     $reportMap = array();
     $array_data = $this->getReportCountbyCampaign($campaign, 0, $reportMap);
     $sum = 0;
     foreach ($array_data as $date) {
         $sum += $date;
     }
     $i = 0;
     $maxY = 0;
     foreach ($array_data as $date) {
         $array_data[$i] = round($date * 100 / $sum, 1);
         if ($array_data[$i] > $maxY) {
             $maxY = $array_data[$i];
         }
         $i++;
     }
     // create chart
     $array_create_date = array('0', '1', '2', '3', '4', '5', '6', '7');
     $title = new title("Kraft Spraks Comments");
     $title->set_style('{font-size: 14px; color: #FFFFFF; }');
     $max_y = floor($maxY / 10) * 10 + 10;
     $y = new y_axis();
     $y->set_range(0, $max_y, 10);
     $x = new x_axis();
     $x_labels = new x_axis_labels();
     $x_labels->set_labels($array_create_date);
     $x_labels->set_size(11);
     $x->set_labels($x_labels);
     $x->set_range(0, 7, 1);
     //There is a bug on the tooltip of bar: can not show #x_label#. So use bar_stack instead of bar here.
     $bar = new bar_filled();
     $array_bar_data[0] = new bar_value($array_data[0]);
     $array_bar_data[0]->set_colour('#606060');
     $array_bar_data[1] = new bar_value($array_data[1]);
     $array_bar_data[1]->set_colour('#BE3304');
     $array_bar_data[2] = new bar_value($array_data[2]);
     $array_bar_data[2]->set_colour('#F2B538');
     $array_bar_data[3] = new bar_value($array_data[3]);
     $array_bar_data[3]->set_colour('#EE7904');
     $array_bar_data[4] = new bar_value($array_data[4]);
     $array_bar_data[4]->set_colour('#D4FD32');
     $array_bar_data[5] = new bar_value($array_data[5]);
     $array_bar_data[5]->set_colour('#B4EB35');
     $array_bar_data[6] = new bar_value($array_data[6]);
     $array_bar_data[6]->set_colour('#B1D764');
     $array_bar_data[7] = new bar_value($array_data[7]);
     $array_bar_data[7]->set_colour('#A1C463');
     $bar->set_values($array_bar_data);
     //		$bar->set_tooltip('#x_label#: #val#');
     //		$bar = new bar_stack();
     //		$bar->set_colours(array( '#E2D66A', '#A0C361' ));
     //		foreach ($array_data as $date):
     //		$bar->append_stack(array((int)$date));
     //		endforeach;
     $bar->set_tooltip('#val#%');
     $x_legend = new x_legend('Positive');
     $x_legend->set_style('{font-size: 30px; color: #FFFFFF; }');
     $y_legend = new y_legend($this->view->translate('(%)'));
     $y_legend->set_style('{font-size: 30px; color: #FFFFFF;}');
     $tags = new ofc_tags();
     $tags->font("Verdana", 14)->align_x_right();
     $tag_y_value = -($max_y * 0.3);
     $t = new ofc_tag(6.6, $tag_y_value);
     $t->text($this->view->translate('Client_Report Positive'))->colour("#177A16");
     $tags->append_tag($t);
     $t2 = new ofc_tag(0.5, $tag_y_value);
     $t2->text($this->view->translate('Client_Report Negative'))->colour("#D88569");
     $tags->append_tag($t2);
     $t3 = new ofc_tag(-1, $max_y);
     $t3->text($this->view->translate('(%)'))->colour("#000000");
     $tags->append_tag($t3);
     $t4 = new ofc_tag(-0.7, $tag_y_value);
     $t4->text($this->view->translate('Client_Report No opinion'))->colour("#5D5D5D");
     $tags->append_tag($t4);
     $this->view->chart3 = new open_flash_chart();
     $this->view->chart3->set_title($title);
     $this->view->chart3->add_element($bar);
     $this->view->chart3->set_bg_colour('#FFFFFF');
     $this->view->chart3->set_x_axis($x);
     $this->view->chart3->set_y_axis($y);
     $this->view->chart3->set_x_legend($x_legend);
     $this->view->chart3->set_y_legend($y_legend);
     $this->view->chart3->add_element($tags);
 }
 function admin_graphs($id = null)
 {
     App::import('Vendor', 'Newsletter.php-ofc-library', array('file' => 'php-ofc-library/open-flash-chart.php'));
     //Configure::write('debug', 0);
     //$this->layout = null;
     // generate some random data
     srand((double) microtime() * 1000000);
     $title = new title(__d("newsletter", "Views per time", true));
     $chart = new open_flash_chart();
     $chart->set_title($title);
     $newsletter = $this->Newsletter->read(null, $id);
     // Views
     $dates = array();
     $values = array();
     //// init sender class ////
     App::import('Lib', 'Newsletter.ClassCollection');
     $senderOpt = NewsletterConfig::load('sender');
     if (!is_array($senderOpt)) {
         $senderOpt = array('name' => $senderOpt);
     }
     $sender = ClassCollection::getObject('NewsletterSender', $senderOpt['name']);
     //// query ////
     $opt = array('type' => 'graph', 'query' => array('fields' => array('count(*) as nb', 'DATE(NewsletterEvent.date) as date'), 'conditions' => array('NewsletterSended.newsletter_id' => $id, 'or' => array('NewsletterEvent.action' => 'view', array('NewsletterEvent.action IS NULL', 'NewsletterEvent.url' => null))), 'group' => 'DATE(NewsletterEvent.date)', 'order' => 'DATE(NewsletterEvent.date)', 'model' => 'NewsletterEvent'));
     $data = $this->_get_stats(array('viewByDays' => $opt), $newsletter, $sender);
     //debug($data);
     $dates = $data['viewByDays'];
     $min_value = 99999999;
     $max_value = 0;
     foreach ($dates as $d => $val) {
         if ($val < $min_value) {
             $min_value = $val;
         }
         if ($val > $max_value) {
             $max_value = $val;
         }
     }
     if ($max_value == $min_value) {
         $max_value++;
         $min_value--;
     }
     $min_value = 0;
     //debug($dates);
     $min_date = key($dates);
     end($dates);
     $max_date = key($dates);
     for ($cur_date = $min_date; $cur_date <= $max_date; $cur_date = $cur_date + 86400) {
         $x = strtotime('00:00:00', $cur_date);
         if (isset($dates[$cur_date])) {
             $values[] = new scatter_value($x, $dates[$cur_date]);
         } else {
             $values[] = new scatter_value($x, 0);
         }
     }
     if ($max_date == $min_date) {
         $max_date += 86400;
     }
     //debug($values);
     //pr($views);
     $line_dot = new line();
     $line_dot->set_values($values);
     $line_dot->set_text("Views");
     $chart->add_element($line_dot);
     $y = new y_axis();
     $y->set_range($min_value, $max_value, ($max_value - $min_value) / 10);
     $x = new x_axis();
     // grid line and tick every 10
     $x->set_range(mktime(0, 0, 0, date("m", $min_date), date("d", $min_date), date("Y", $min_date)), mktime(0, 0, 0, date("m", $max_date), date("d", $max_date), date("Y", $max_date)));
     // 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:d-m-Y#');
     // generate labels for every day
     $labels->set_steps(86400);
     // only display every other label (every other day)
     $labels->visible_steps(ceil(($max_date - $min_date) / 86400 / 20));
     $labels->rotate(90);
     $x->set_labels($labels);
     $chart->set_x_axis($x);
     $chart->set_y_axis($y);
     $chart->set_bg_colour("#FFFFFF");
     //print_r($views);
     //$this->set("allviews",$views[0][0]['count(*)']);
     $line_dot = new line();
     $line_dot->set_values(array(2, 1));
     $line_dot->set_text("Unique views");
     $line_dot->colour("#0000000");
     //$chart->add_element($line_dot);
     //
     echo $chart->toPrettyString();
     exit;
     //$this->render(false);
 }