From 797e1710d5cfbb82d18a3a477f3cc6071360aaa0 Mon Sep 17 00:00:00 2001 From: Emmanuel Darnis Date: Mon, 12 Mar 2018 15:39:51 +0000 Subject: [PATCH] [IMPAC-740] Widget transaction by time of day --- ...ransaction-by-time-of-day.directive.coffee | 69 +++++++++++++++++++ .../sales-transaction-by-time-of-day.less | 7 ++ ...sales-transaction-by-time-of-day.tmpl.html | 25 +++++++ src/impac-angular.module.js | 3 +- 4 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.directive.coffee create mode 100644 src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.less create mode 100644 src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.tmpl.html diff --git a/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.directive.coffee b/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.directive.coffee new file mode 100644 index 00000000..6298cbf1 --- /dev/null +++ b/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.directive.coffee @@ -0,0 +1,69 @@ +module = angular.module('impac.components.widgets.sales-transaction-by-time-of-day', []) +module.controller('WidgetSalesTransactionByTimeOfDayCtrl', ($scope, $q, HighchartsFactory) -> + + w = $scope.widget + + # Define settings + # -------------------------------------- + $scope.orgDeferred = $q.defer(); + settingsPromises = [$scope.orgDeferred.promise] + + # Unique identifier for the chart object in the DOM + $scope.chartId = -> + "averageTransactionTimeChart-#{w.id}" + + # # == Sub-Components ============================================================= + $scope.chartDeferred = $q.defer() + + # Widget specific methods + # -------------------------------------- + w.initContext = -> + $scope.isDataFound = w.content? + + w.format = -> + # Instantiate and render chart + options = + chartType: 'line' + chartOnClickCallbacks: [] + currency: w.metadata.currency + showToday: true + showLegend: true + + $scope.chart = new HighchartsFactory($scope.chartId(), w.content.chart, options) + + $scope.chart.formatters = -> + currency = @options.currency + xAxisLabels = + labels: + formatter: -> + moment.utc(this.value).format('MMM YYYY') + yAxisLabels = + labels: + formatter: -> + "#{this.value} %" + xAxis: angular.merge([w.content.chart.xAxis[0]], [xAxisLabels]) + yAxis: angular.merge([w.content.chart.yAxis[0]], [yAxisLabels]) + rangeSelector: + selected: 3 + tooltip: + shared: false + backgroundColor: '#FBF7E6' + formatter: -> + date = moment.utc(this.x).format('MMMM YYYY') + name = this.series.name + "#{date}
#{name}: #{this.y}%" + + $scope.chart.render(w.content.chart, options) + + # Notifies parent element that the chart is ready to be displayed + $scope.chartDeferred.notify($scope.chart) + + $scope.widgetDeferred.resolve(settingsPromises) + +) +module.directive('widgetSalesTransactionByTimeOfDay', -> + return { + restrict: 'A', + controller: 'WidgetSalesTransactionByTimeOfDayCtrl' + } +) \ No newline at end of file diff --git a/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.less b/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.less new file mode 100644 index 00000000..639a0c9a --- /dev/null +++ b/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.less @@ -0,0 +1,7 @@ +.analytics .widget-item .content.sales-transaction-by-time-of-day { + .tall-widget(); + + .transaction-chart { + height: ~"calc(@{impac-big-widget-size} - 50px)"; + } +} diff --git a/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.tmpl.html b/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.tmpl.html new file mode 100644 index 00000000..5c79e535 --- /dev/null +++ b/src/components/widgets/sales-transaction-by-time-of-day/sales-transaction-by-time-of-day.tmpl.html @@ -0,0 +1,25 @@ +
+ +
+

Widget settings

+ +
+ + +
+ + +
+
+ + +
+ +
+
+
+ + +
+
+
\ No newline at end of file diff --git a/src/impac-angular.module.js b/src/impac-angular.module.js index 6347dbe6..f071bec4 100644 --- a/src/impac-angular.module.js +++ b/src/impac-angular.module.js @@ -92,7 +92,8 @@ angular.module('impac.components.widgets', 'impac.components.widgets.sales-summary', 'impac.components.widgets.sales-top-opportunities', 'impac.components.widgets.sales-top-customers', - 'impac.components.widgets.sales-new-vs-existing-customers' + 'impac.components.widgets.sales-new-vs-existing-customers', + 'impac.components.widgets.sales-transaction-by-time-of-day' ] ); angular.module('impac.components.widgets-settings',