From cfacf52a4203ad529a560ae490332c535550c94f Mon Sep 17 00:00:00 2001 From: FrancescoUK Date: Sun, 22 May 2016 19:01:16 +0100 Subject: [PATCH] Changed graphical reports to use Chartist (#342) --- application/controllers/Reports.php | 304 ++++++++-------------- application/views/reports/graphical.php | 12 +- application/views/reports/graphs/bar.php | 122 ++++++--- application/views/reports/graphs/hbar.php | 129 +++++---- application/views/reports/graphs/line.php | 141 ++++++---- application/views/reports/graphs/pie.php | 68 +++-- 6 files changed, 418 insertions(+), 358 deletions(-) diff --git a/application/controllers/Reports.php b/application/controllers/Reports.php index 73adf2709..fc226bb3f 100644 --- a/application/controllers/Reports.php +++ b/application/controllers/Reports.php @@ -398,77 +398,64 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_sales'); $model = $this->Summary_sales; + + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); + + $labels = ''; + $series = ''; + foreach($report_data as $row) + { + $labels .= "'" . date($this->config->item('dateformat'), strtotime($row['sale_date'])) . "', "; + $series .= $row['total'] . ", "; + } $data = array( "title" => $this->lang->line('reports_sales_summary_report'), - "data_file" => site_url("reports/graphical_summary_sales_graph/$start_date/$end_date/$sale_type"), "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) + "chart_type" => "reports/graphs/line", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)), + "yaxis_title" => $this->lang->line('reports_revenue'), + "xaxis_title" => $this->lang->line('reports_date') ); $this->load->view("reports/graphical", $data); } - //The actual graph data - function graphical_summary_sales_graph($start_date, $end_date, $sale_type) + private function _escapeJavaScriptText($string) { - $this->load->model('reports/Summary_sales'); - $model = $this->Summary_sales; - $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - - $graph_data = array(); - foreach($report_data as $row) - { - $graph_data[date($this->config->item('dateformat'), strtotime($row['sale_date']))] = $row['total']; - } - - $data = array( - "title" => $this->lang->line('reports_sales_summary_report'), - "yaxis_label"=>$this->lang->line('reports_revenue'), - "xaxis_label"=>$this->lang->line('reports_date'), - "data" => $graph_data - ); - - $this->load->view("reports/graphs/line", $data); + return str_replace("\n", '\n', str_replace('"', '\"', addcslashes(str_replace("\r", '', (string)$string), "\0..\37'\\"))); } - + //Graphical summary items report function graphical_summary_items($start_date, $end_date, $sale_type) { $this->load->model('reports/Summary_items'); $model = $this->Summary_items; - - $data = array( - "title" => $this->lang->line('reports_items_summary_report'), - "data_file" => site_url("reports/graphical_summary_items_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_items_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_items'); - $model = $this->Summary_items; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['name']] = $row['total']; + $labels .= "'" . $this->_escapeJavaScriptText($row['name']) . "', "; + $series .= $row['total'] . ", "; } $data = array( "title" => $this->lang->line('reports_items_summary_report'), - "xaxis_label"=>$this->lang->line('reports_revenue'), - "yaxis_label"=>$this->lang->line('reports_items'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/hbar", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)), + "yaxis_title" => $this->lang->line('reports_items'), + "xaxis_title" => $this->lang->line('reports_revenue') ); - $this->load->view("reports/graphs/hbar", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary customers report @@ -476,36 +463,27 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_categories'); $model = $this->Summary_categories; - - $data = array( - "title" => $this->lang->line('reports_categories_summary_report'), - "data_file" => site_url("reports/graphical_summary_categories_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_categories_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_categories'); - $model = $this->Summary_categories; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['category']] = $row['total']; + $labels .= "'" . $row['category'] . "', "; + $series .= $row['total'] . ", "; } $data = array( "title" => $this->lang->line('reports_categories_summary_report'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/pie", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) ); - $this->load->view("reports/graphs/pie", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary suppliers report @@ -513,36 +491,27 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_suppliers'); $model = $this->Summary_suppliers; - - $data = array( - "title" => $this->lang->line('reports_suppliers_summary_report'), - "data_file" => site_url("reports/graphical_summary_suppliers_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_suppliers_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_suppliers'); - $model = $this->Summary_suppliers; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['supplier']] = $row['total']; + $labels .= "'" . $row['supplier'] . "', "; + $series .= $row['total'] . ", "; } $data = array( "title" => $this->lang->line('reports_suppliers_summary_report'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/pie", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) ); - $this->load->view("reports/graphs/pie", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary employees report @@ -550,36 +519,27 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_employees'); $model = $this->Summary_employees; - - $data = array( - "title" => $this->lang->line('reports_employees_summary_report'), - "data_file" => site_url("reports/graphical_summary_employees_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_employees_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_employees'); - $model = $this->Summary_employees; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['employee']] = $row['total']; + $labels .= "'" . $row['employee'] . "', "; + $series .= $row['total'] . ", "; } $data = array( "title" => $this->lang->line('reports_employees_summary_report'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/pie", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) ); - $this->load->view("reports/graphs/pie", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary taxes report @@ -587,36 +547,27 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_taxes'); $model = $this->Summary_taxes; - - $data = array( - "title" => $this->lang->line('reports_taxes_summary_report'), - "data_file" => site_url("reports/graphical_summary_taxes_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_taxes_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_taxes'); - $model = $this->Summary_taxes; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['percent']] = $row['total']; + $labels .= "'" . $row['percent'] . "', "; + $series .= $row['total'] . ", "; } $data = array( "title" => $this->lang->line('reports_taxes_summary_report'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/pie", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) ); - $this->load->view("reports/graphs/pie", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary customers report @@ -624,38 +575,29 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_customers'); $model = $this->Summary_customers; - - $data = array( - "title" => $this->lang->line('reports_customers_summary_report'), - "data_file" => site_url("reports/graphical_summary_customers_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_customers_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_customers'); - $model = $this->Summary_customers; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['customer']] = $row['total']; + $labels .= "'" . $row['customer'] . "', "; + $series .= $row['total'] . ", "; } $data = array( "title" => $this->lang->line('reports_customers_summary_report'), - "xaxis_label"=>$this->lang->line('reports_revenue'), - "yaxis_label"=>$this->lang->line('reports_customers'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/hbar", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)), + "yaxis_title" => $this->lang->line('reports_customers'), + "xaxis_title" => $this->lang->line('reports_revenue') ); - $this->load->view("reports/graphs/hbar", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary discounts report @@ -663,38 +605,29 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_discounts'); $model = $this->Summary_discounts; - - $data = array( - "title" => $this->lang->line('reports_discounts_summary_report'), - "data_file" => site_url("reports/graphical_summary_discounts_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_discounts_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_discounts'); - $model = $this->Summary_discounts; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['discount_percent']] = $row['count']; + $labels .= "'" . $row['discount_percent'] . "', "; + $series .= $row['count'] . ", "; } $data = array( "title" => $this->lang->line('reports_discounts_summary_report'), - "yaxis_label"=>$this->lang->line('reports_count'), - "xaxis_label"=>$this->lang->line('reports_discount_percent'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/bar", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)), + "yaxis_title" => $this->lang->line('reports_count'), + "xaxis_title" => $this->lang->line('reports_discount_percent') ); - $this->load->view("reports/graphs/bar", $data); + $this->load->view("reports/graphical", $data); } //Graphical summary payments report @@ -702,38 +635,27 @@ class Reports extends Secure_area { $this->load->model('reports/Summary_payments'); $model = $this->Summary_payments; - - $data = array( - "title" => $this->lang->line('reports_payments_summary_report'), - "data_file" => site_url("reports/graphical_summary_payments_graph/$start_date/$end_date/$sale_type"), - "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), - "summary_data" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) - ); - - $this->load->view("reports/graphical", $data); - } - - //The actual graph data - function graphical_summary_payments_graph($start_date, $end_date, $sale_type) - { - $this->load->model('reports/Summary_payments'); - $model = $this->Summary_payments; + $report_data = $model->getData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)); - $graph_data = array(); + $labels = ''; + $series = ''; foreach($report_data as $row) { - $graph_data[$row['payment_type']] = $row['payment_amount']; + $labels .= "'" . $row['payment_type'] . "', "; + $series .= $row['payment_amount'] . ", "; } $data = array( "title" => $this->lang->line('reports_payments_summary_report'), - "yaxis_label"=>$this->lang->line('reports_revenue'), - "xaxis_label"=>$this->lang->line('reports_payment_type'), - "data" => $graph_data + "subtitle" => date($this->config->item('dateformat'), strtotime($start_date)) . '-' . date($this->config->item('dateformat'), strtotime($end_date)), + "chart_type" => "reports/graphs/pie", + "labels_1" => rtrim($labels, ", "), + "series_data_1" => rtrim($series, ", "), + "summary_data_1" => $model->getSummaryData(array('start_date'=>$start_date, 'end_date'=>$end_date, 'sale_type'=>$sale_type)) ); - $this->load->view("reports/graphs/pie", $data); + $this->load->view("reports/graphical", $data); } function specific_customer_input() diff --git a/application/views/reports/graphical.php b/application/views/reports/graphical.php index 46d66d336..f6c50e74b 100644 --- a/application/views/reports/graphical.php +++ b/application/views/reports/graphical.php @@ -4,19 +4,13 @@
-
- -
+
-
-
-
+load->view($chart_type); ?>
$value) + foreach($summary_data_1 as $name=>$value) { ?>
lang->line('reports_'.$name). ': ' . to_currency($value); ?>
diff --git a/application/views/reports/graphs/bar.php b/application/views/reports/graphs/bar.php index c42baf1cf..9f5f01c57 100644 --- a/application/views/reports/graphs/bar.php +++ b/application/views/reports/graphs/bar.php @@ -1,46 +1,88 @@ -output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); -$this->output->set_header("Pragma: public"); -$bar = new bar_filled( '#4386a1', '#577261' ); + -if (isset($xaxis_label)) -{ - $x_legend = new x_legend($xaxis_label ); - $x_legend->set_style( '{font-size: 20px; color: #000000}' ); - $chart->set_x_legend( $x_legend ); -} -echo $chart->toPrettyString(); -?> \ No newline at end of file + \ No newline at end of file diff --git a/application/views/reports/graphs/hbar.php b/application/views/reports/graphs/hbar.php index 10463f5c4..4803897d0 100644 --- a/application/views/reports/graphs/hbar.php +++ b/application/views/reports/graphs/hbar.php @@ -1,61 +1,90 @@ -output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); -$this->output->set_header("Pragma: public"); + -$chart->set_bg_colour("#f3f3f3"); + \ No newline at end of file diff --git a/application/views/reports/graphs/line.php b/application/views/reports/graphs/line.php index 62fa570e6..b462b6829 100644 --- a/application/views/reports/graphs/line.php +++ b/application/views/reports/graphs/line.php @@ -1,49 +1,102 @@ -output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); -$this->output->set_header("Pragma: public"); -$line_data = array(); -$labels = array(); -foreach($data as $label=>$value) -{ - $line_data[] = (float)$value; - $labels[] = (string)$label; + -if (isset($xaxis_label)) -{ - $x_legend = new x_legend($xaxis_label ); - $x_legend->set_style( '{font-size: 20px; color: #000000}' ); - $chart->set_x_legend( $x_legend ); -} + \ No newline at end of file diff --git a/application/views/reports/graphs/pie.php b/application/views/reports/graphs/pie.php index fda94d8b6..56bca6eea 100644 --- a/application/views/reports/graphs/pie.php +++ b/application/views/reports/graphs/pie.php @@ -1,25 +1,45 @@ -output->set_header("Cache-Control: no-store, no-cache, must-revalidate"); -$this->output->set_header("Pragma: public"); -$title = new title($title); - -$pie = new pie(); -$pie->set_alpha(0.6); -$pie->set_start_angle( 35 ); -$pie->add_animation( new pie_fade() ); -$pie->set_tooltip( '#val# of #total#
#percent# of 100%' ); -$pie->set_colours(get_random_colors(count($data))); - -$pie_values = array(); -foreach($data as $label=>$value) -{ - $pie_values[] = new pie_value((float)$value, (string)$label); + + + \ No newline at end of file