From b62952accf8a6a1b08d5bf3b90ca56b665c5e9a4 Mon Sep 17 00:00:00 2001 From: Damien Metzger Date: Fri, 15 Nov 2013 18:07:07 +0100 Subject: [PATCH] [*] BO : Added simulation mode to the dashboard --- .../dashboard/helpers/view/view.tpl | 16 +++++++ .../admin/AdminDashboardController.php | 8 +++- install-dev/data/theme.sql | 1 + js/admin-dashboard.js | 14 ++++++ modules/dashactivity/dashactivity.php | 43 ++++++++++++++++++- modules/dashtrends/dashtrends.php | 34 ++++++++++++--- 6 files changed, 107 insertions(+), 9 deletions(-) diff --git a/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl b/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl index c39de195c..ffe85bf5c 100644 --- a/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl +++ b/admin-dev/themes/default/template/controllers/dashboard/helpers/view/view.tpl @@ -128,6 +128,22 @@
{l s="Go to prestashop.com"}
+ +
+

{l s="Simulation Mode"}

+ + + + + + + +
+ \ No newline at end of file diff --git a/controllers/admin/AdminDashboardController.php b/controllers/admin/AdminDashboardController.php index f7c6289fd..9a9dc3f0c 100644 --- a/controllers/admin/AdminDashboardController.php +++ b/controllers/admin/AdminDashboardController.php @@ -309,7 +309,13 @@ class AdminDashboardControllerCore extends AdminController die(Tools::jsonEncode(Hook::exec('dashboardData', $params, $id_module, true, true, (int)Tools::getValue('dashboard_use_push')))); } - + + public function ajaxProcessSetSimulationMode() + { + Configuration::updateValue('PS_DASHBOARD_SIMULATION', (int)Tools::getValue('PS_DASHBOARD_SIMULATION')); + die ('k'.Configuration::get('PS_DASHBOARD_SIMULATION').'k'); + } + public function ajaxProcessGetBlogRss() { $return = array('has_errors' => false, 'rss' => array()); diff --git a/install-dev/data/theme.sql b/install-dev/data/theme.sql index 82e32c790..6e746f123 100644 --- a/install-dev/data/theme.sql +++ b/install-dev/data/theme.sql @@ -67,6 +67,7 @@ UPDATE `PREFIX_configuration` SET value = '1' WHERE name = 'BLOCK_CATEG_NBR_COLU UPDATE `PREFIX_configuration` SET value = '' WHERE name = 'UPGRADER_BACKUPDB_FILENAME'; UPDATE `PREFIX_configuration` SET value = '' WHERE name = 'UPGRADER_BACKUPFILES_FILENAME'; UPDATE `PREFIX_configuration` SET value = '40' WHERE name = 'CONF_AVERAGE_PRODUCT_MARGIN'; +UPDATE `PREFIX_configuration` SET value = '1' WHERE name = 'PS_DASHBOARD_SIMULATION'; /* No right column */ DELETE FROM `PREFIX_hook_module` WHERE id_hook = (SELECT id_hook FROM `PREFIX_hook` WHERE name = 'displayRightColumn'); diff --git a/js/admin-dashboard.js b/js/admin-dashboard.js index 4f1dd753e..4ba33e6d3 100644 --- a/js/admin-dashboard.js +++ b/js/admin-dashboard.js @@ -289,4 +289,18 @@ $(document).ready( function () { getBlogRss(); bindSubmitDashConfig(); bindCancelDashConfig(); + + $('.ps_dashboard_simulation').change(function(e) { + $.ajax({ + url : dashboard_ajax_url, + data : { + ajax:true, + action:'setSimulationMode', + PS_DASHBOARD_SIMULATION: $(this).val() + }, + success : function(result) { + refreshDashboard(false, false); + } + }); + }); }); diff --git a/modules/dashactivity/dashactivity.php b/modules/dashactivity/dashactivity.php index 63804f7e8..11043100d 100644 --- a/modules/dashactivity/dashactivity.php +++ b/modules/dashactivity/dashactivity.php @@ -97,6 +97,45 @@ class Dashactivity extends Module public function hookDashboardData($params) { + if (Configuration::get('PS_DASHBOARD_SIMULATION')) + { + $days = round((strtotime($params['date_to']) - strtotime($params['date_from'])) / 3600 / 24); + $online_visitor = round(rand(10, 50)); + $visits = round(rand(200, 2000) * $days); + + return array( + 'data_value' => array( + 'pending_orders' => round(rand(0, 5)), + 'return_exchanges' => round(rand(0, 5)), + 'abandoned_cart' => round(rand(5, 50)), + 'products_out_of_stock' => round(rand(1, 10)), + 'new_messages' => round(rand(1, 10) * $days), + 'order_inquires' => 42, + 'product_reviews' => round(rand(5, 50) * $days), + 'new_customers' => round(rand(1, 5) * $days), + 'online_visitor' => $online_visitor, + 'active_shopping_cart' => round($online_visitor / 10), + 'new_registrations' => round(rand(1, 5) * $days), + 'total_suscribers' => round(rand(200, 2000)), + 'visits' => $visits, + 'unique_visitors' => round($visits * 0.6), + ), + 'data_trends' => array( + 'orders_trends' => array('way' => 'down', 'value' => 0.42), + ), + 'data_list_small' => array( + 'dash_traffic_source' => array('prestashop.com' => round($visits / 2), 'google.com' => round($visits / 3), 'Direct Traffic' => round($visits / 4)) + ), + 'data_chart' => array( + 'dash_trends_chart1' => array('chart_type' => 'pie_chart_trends', 'data' => array( + array('key' => 'prestashop.com', 'y' => round($visits / 2)), + array('key' => 'google.com', 'y' => round($visits / 3)), + array('key' => 'Direct Traffic', 'y' => round($visits / 4)) + )) + ) + ); + } + $gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false; if (Validate::isLoadedObject($gapi) && $gapi->isConfigured()) { @@ -353,14 +392,14 @@ class Dashactivity extends Module $fields_form['form']['input'][] = array( 'label' => $this->l('Cart abandoned (min)'), 'desc' => $this->l('Default time range (min) to consider a Shopping cart as abandoned (default 24hrs)'), - 'name' => 'DASHACTIVITY_CART_ABANDONED_MIN', + 'name' => 'DASHACTIVITY_CART_ABANDONED', 'type' => 'text', 'suffix' => $this->l('hrs'), ); $fields_form['form']['input'][] = array( 'label' => $this->l('Cart abandoned (max)'), 'desc' => $this->l('Default time range (max) to consider a Shopping cart as abandoned (default 48hrs)'), - 'name' => 'DASHACTIVITY_CART_ABANDONED_MAX', + 'name' => 'DASHACTIVITY_CART_ABANDONED', 'type' => 'text', 'suffix' => $this->l('hrs'), ); diff --git a/modules/dashtrends/dashtrends.php b/modules/dashtrends/dashtrends.php index 80c8583d9..015945ff4 100644 --- a/modules/dashtrends/dashtrends.php +++ b/modules/dashtrends/dashtrends.php @@ -75,11 +75,30 @@ class Dashtrends extends Module 'total_expenses' => array() ); - $tmp_data['visits'] = AdminStatsControllerCore::getVisits(false, $date_from, $date_to, 'day'); - $tmp_data['orders'] = AdminStatsControllerCore::getOrders($date_from, $date_to, 'day'); - $tmp_data['total_paid_tax_excl'] = AdminStatsControllerCore::getTotalSales($date_from, $date_to, 'day'); - $tmp_data['total_purchases'] = AdminStatsControllerCore::getPurchases($date_from, $date_to, 'day'); - $tmp_data['total_expenses'] = AdminStatsControllerCore::getExpenses($date_from, $date_to, 'day'); + if (Configuration::get('PS_DASHBOARD_SIMULATION')) + { + $from = strtotime($date_from.' 00:00:00'); + $to = min(time(), strtotime($date_to.' 23:59:59')); + for ($date = $from; $date <= $to; $date = strtotime('+1 day', $date)) + { + $tmp_data['visits'][$date] = round(rand(2000, 20000)); + $tmp_data['conversion_rate'][$date] = rand(80, 250) / 100; + $tmp_data['average_cart_value'][$date] = round(rand(60, 200), 2); + $tmp_data['orders'][$date] = round($tmp_data['visits'][$date] * $tmp_data['conversion_rate'][$date] / 100); + $tmp_data['total_paid_tax_excl'][$date] = $tmp_data['orders'][$date] * $tmp_data['average_cart_value'][$date]; + $tmp_data['total_purchases'][$date] = $tmp_data['total_paid_tax_excl'][$date] * rand(50, 70) / 100; + $tmp_data['total_expenses'][$date] = $tmp_data['total_paid_tax_excl'][$date] * rand(0, 10) / 100; + } + } + else + { + $tmp_data['visits'] = AdminStatsControllerCore::getVisits(false, $date_from, $date_to, 'day'); + $tmp_data['orders'] = AdminStatsControllerCore::getOrders($date_from, $date_to, 'day'); + $tmp_data['total_paid_tax_excl'] = AdminStatsControllerCore::getTotalSales($date_from, $date_to, 'day'); + $tmp_data['total_purchases'] = AdminStatsControllerCore::getPurchases($date_from, $date_to, 'day'); + $tmp_data['total_expenses'] = AdminStatsControllerCore::getExpenses($date_from, $date_to, 'day'); + } + return $tmp_data; } @@ -93,7 +112,10 @@ class Dashtrends extends Module 'conversion_rate' => array(), 'net_profits' => array() ); - $from = max(strtotime(_PS_CREATION_DATE_.' 00:00:00'), strtotime($date_from.' 00:00:00')); + + $from = strtotime($date_from.' 00:00:00'); + if (!Configuration::get('PS_DASHBOARD_SIMULATION')) + $from = max(strtotime(_PS_CREATION_DATE_.' 00:00:00'), $from); $to = min(time(), strtotime($date_to.' 23:59:59')); for ($date = $from; $date <= $to; $date = strtotime('+1 day', $date)) {