// Compare data on the chart

This commit is contained in:
Damien Metzger
2013-10-18 12:10:06 +02:00
parent d6235bdacc
commit 1cd9ceca35
+53 -34
View File
@@ -254,7 +254,8 @@ class Dashtrends extends Module
$this->dashboard_data_sum_compare = $this->addupData($this->dashboard_data_compare);
$data_trends = $this->compareData($this->dashboard_data_sum, $this->dashboard_data_sum_compare);
$this->dashboard_data_compare = $this->translateCompareData($this->dashboard_data, $this->dashboard_data_compare);
return array(
'data_value' => array(
'sales_score' => Tools::displayPrice(round($this->dashboard_data_sum['sales']), $currency),
@@ -269,6 +270,33 @@ class Dashtrends extends Module
);
}
protected function translateCompareData($normal, $compare)
{
$translated_array = array();
foreach ($compare as $key => $date_array)
{
$normal_min = key($normal[$key]);
end($normal[$key]); // move the internal pointer to the end of the array
$normal_max = key($normal[$key]);
reset($normal[$key]);
$normal_size = $normal_max - $normal_min;
$compare_min = key($compare[$key]);
end($compare[$key]); // move the internal pointer to the end of the array
$compare_max = key($compare[$key]);
reset($compare[$key]);
$compare_size = $compare_max - $compare_min;
$translated_array[$key] = array();
foreach ($date_array as $compare_date => $value)
{
$translation = $normal_min + ($compare_date - $compare_min) * ($normal_size / $compare_size);
$translated_array[$key][number_format($translation, 0, '', '')] = $value;
}
}
return $translated_array;
}
public function getChartTrends()
{
$chart_data = array();
@@ -281,40 +309,31 @@ class Dashtrends extends Module
$calibration = $value;
break;
}
$chart_values = array();
foreach ($this->dashboard_data[$chart_key] as $key => $value)
$chart_values[] = array(1000 * $key, 100 * $value / $calibration);
$chart_data[$chart_key] = $chart_values;
}
return array(
'chart_type' => 'line_chart_trends',
'data' => array(
array(
'key' => $this->l('Sales'),
'values' => $chart_data['sales']
),
array(
'key' => $this->l('Orders'),
'values' => $chart_data['orders']
),
array(
'key' => $this->l('Average Cart Value'),
'values' => $chart_data['average_cart_value']
),
array(
'key' => $this->l('Visits'),
'values' => $chart_data['visits']
),
array(
'key' => $this->l('Conversion Rate'),
'values' => $chart_data['conversion_rate']
),
array(
'key' => $this->l('Net Profits'),
'values' => $chart_data['net_profits']
)
)
$chart_data[$chart_key] = array();
foreach ($this->dashboard_data[$chart_key] as $key => $value)
$chart_data[$chart_key][] = array(1000 * $key, 100 * $value / $calibration);
$chart_data_compare[$chart_key] = array();
foreach ($this->dashboard_data_compare[$chart_key] as $key => $value)
$chart_data_compare[$chart_key][] = array(1000 * $key, 100 * $value / $calibration);
}
$charts = array(
'sales' => $this->l('Sales'),
'orders' => $this->l('Orders'),
'average_cart_value' => $this->l('Average Cart Value'),
'visits' => $this->l('Visits'),
'conversion_rate' => $this->l('Conversion Rate'),
'net_profits' => $this->l('Net Profits')
);
$data = array('chart_type' => 'line_chart_trends', 'data' => array());
foreach ($charts as $key => $title)
{
$data['data'][] = array('key' => $title, 'values' => $chart_data[$key], 'disabled' => ($key == 'sales' ? false : true));
$data['data'][] = array('key' => sprintf($this->l('%s (previous period)'), $title), 'values' => $chart_data_compare[$key], 'disabled' => ($key == 'sales' ? false : true));
}
return $data;
}
}