Repository: ignite
Updated Branches:
  refs/heads/ignite-843-rc1 cf9eddc78 -> 91ce6b57a


IGNITE-1870 WIP on agg functions.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/67c6d4ac
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/67c6d4ac
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/67c6d4ac

Branch: refs/heads/ignite-843-rc1
Commit: 67c6d4acebeafa7273b601de7e2cd02e5f0c3b54
Parents: 5200031
Author: Alexey Kuznetsov <[email protected]>
Authored: Wed Nov 11 17:57:21 2015 +0700
Committer: Alexey Kuznetsov <[email protected]>
Committed: Wed Nov 11 17:57:21 2015 +0700

----------------------------------------------------------------------
 .../src/main/js/controllers/sql-controller.js   | 78 ++++++++++++++++++--
 .../src/main/js/views/sql/chart-settings.jade   |  2 +-
 .../src/main/js/views/sql/sql.jade              |  2 +-
 3 files changed, 75 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/67c6d4ac/modules/control-center-web/src/main/js/controllers/sql-controller.js
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/controllers/sql-controller.js 
b/modules/control-center-web/src/main/js/controllers/sql-controller.js
index 2eb38d5..48b0976 100644
--- a/modules/control-center-web/src/main/js/controllers/sql-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/sql-controller.js
@@ -34,7 +34,7 @@ consoleModule.controller('sqlController',
 
     $scope.timeLineSpans = ['1', '5', '10', '15', '30'];
 
-    $scope.aggregateFxs = ['FIRST', 'LAST', 'MIN', 'MAX', 'AVG', 'SUM', 
'COUNT'];
+    $scope.aggregateFxs = ['FIRST', 'LAST', 'MIN', 'MAX', 'SUM', 'AVG', 
'COUNT'];
 
     $scope.modes = $common.mkOptions(['PARTITIONED', 'REPLICATED', 'LOCAL']);
 
@@ -913,6 +913,71 @@ consoleModule.controller('sqlController',
         return dflt;
     }
 
+    function _min(rows, idx, dflt) {
+        var min = _chartNumber(rows[0], idx, dflt);
+
+        _.forEach(rows, function (row) {
+            var v = _chartNumber(row, idx, dflt);
+
+            if (v < min)
+                min = v;
+        });
+
+        return min;
+    }
+
+    function _max(rows, idx, dflt) {
+        var max = _chartNumber(rows[0], idx, dflt);
+
+        _.forEach(rows, function (row) {
+            var v = _chartNumber(row, idx, dflt);
+
+            if (v > max)
+                max = v;
+        });
+
+        return max;
+    }
+
+    function _sum(rows, idx) {
+        var sum = 0;
+
+        _.forEach(rows, function (row) {
+            sum += _chartNumber(row, idx, 0);
+        });
+
+        return sum;
+    }
+
+    function _aggregate(rows, aggFx, idx, dflt) {
+        var len = rows.length;
+
+        switch (aggFx) {
+            case  'FIRST':
+                return _chartNumber(rows[0], idx, dflt);
+
+            case 'LAST':
+                return _chartNumber(rows[len - 1], idx, dflt);
+
+            case 'MIN':
+                return _min(rows, idx, dflt);
+
+            case 'MAX':
+                return _max(rows, idx, dflt);
+
+            case 'SUM':
+                return _sum(rows, idx);
+
+            case 'AVG':
+                return len > 0 ? _sum(idx) / len : 0;
+
+            case 'COUNT':
+                return len;
+        }
+
+        return 0;
+    }
+
     function _chartDatum(paragraph) {
         var datum = [];
 
@@ -920,8 +985,11 @@ consoleModule.controller('sqlController',
             paragraph.chartValCols.forEach(function (valCol) {
                 var index = 0;
                 var values = [];
+                var colIdx = valCol.value;
 
                 if (paragraph.chartTimeLineEnabled()) {
+                    var aggFx = valCol.aggFx;
+
                     if (paragraph.charts && paragraph.charts.length == 1)
                         datum = paragraph.charts[0].data;
 
@@ -937,7 +1005,7 @@ consoleModule.controller('sqlController',
 
                         values.push({
                             x: lastItem.tm,
-                            y: _chartNumber(lastItem.rows[0], valCol.value, 
index++)
+                            y: _aggregate(lastItem.rows[0], aggFx, colIdx, 
index++)
                         });
 
                         while (values.length > 0 && values[0].x < leftBound)
@@ -948,7 +1016,7 @@ consoleModule.controller('sqlController',
                             if (history.tm >= leftBound)
                                 values.push({
                                     x: history.tm,
-                                    y: _chartNumber(history.rows[0], 
valCol.value, index++)
+                                    y: _aggregate(history.rows, aggFx, colIdx, 
index++)
                                 });
                         });
 
@@ -964,7 +1032,7 @@ consoleModule.controller('sqlController',
                         var v = {
                             x: _chartNumber(row, xCol, index),
                             xLbl: _chartLabel(row, xCol, undefined),
-                            y: _chartNumber(row, valCol.value, index)
+                            y: _chartNumber(row, colIdx, index)
                         };
 
                         index++;
@@ -1043,7 +1111,7 @@ consoleModule.controller('sqlController',
         }
     }
 
-    $scope.applyChartTimeFrame = function (paragraph) {
+    $scope.applyChartSettings = function (paragraph) {
         _chartApplySettings(paragraph, true);
     };
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/67c6d4ac/modules/control-center-web/src/main/js/views/sql/chart-settings.jade
----------------------------------------------------------------------
diff --git 
a/modules/control-center-web/src/main/js/views/sql/chart-settings.jade 
b/modules/control-center-web/src/main/js/views/sql/chart-settings.jade
index f0943e3..5a1ceed 100644
--- a/modules/control-center-web/src/main/js/views/sql/chart-settings.jade
+++ b/modules/control-center-web/src/main/js/views/sql/chart-settings.jade
@@ -36,5 +36,5 @@
                 
ul.chart-settings-columns-list(dnd-list='paragraph.chartValCols' 
dnd-drop='chartAcceptValColumn(paragraph, item)')
                     li(ng-repeat='col in paragraph.chartValCols track by 
$index')
                         
.btn.btn-default.btn-chart-column(ng-style='chartColor($index)') {{col.label}}
-                            
button.btn-chart-column-agg-fx.select-toggle(ng-show='paragraphTimeSpanVisible(paragraph)'
 ng-style='chartColor($index)' ng-model='col.aggFx' placeholder='...' bs-select 
bs-options='item for item in aggregateFxs' data-container='false' tabindex='-1')
+                            
button.btn-chart-column-agg-fx.select-toggle(ng-change='applyChartSettings(paragraph)'
 ng-show='paragraphTimeSpanVisible(paragraph)' ng-style='chartColor($index)' 
ng-model='col.aggFx' placeholder='...' bs-select bs-options='item for item in 
aggregateFxs' data-container='false' tabindex='-1')
                             
i.fa.fa-close(ng-click='chartRemoveValColumn(paragraph, $index)')

http://git-wip-us.apache.org/repos/asf/ignite/blob/67c6d4ac/modules/control-center-web/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/sql/sql.jade 
b/modules/control-center-web/src/main/js/views/sql/sql.jade
index c6d47a3..25be312 100644
--- a/modules/control-center-web/src/main/js/views/sql/sql.jade
+++ b/modules/control-center-web/src/main/js/views/sql/sql.jade
@@ -49,7 +49,7 @@ mixin chart-settings(mdl)
                 a(ng-click='$event.stopPropagation()' bs-popover 
data-template-url='chart-settings' data-placement='bottom' data-auto-close='1' 
data-trigger='click') Chart settings
                 div(ng-show='paragraphTimeSpanVisible(paragraph)')
                     label Show
-                    
button.select-manual-caret.btn.btn-default(ng-model='paragraph.timeLineSpan' 
ng-change='applyChartTimeFrame(paragraph)' bs-options='item for item in 
timeLineSpans' bs-select data-caret-html='<span class="caret"></span>')
+                    
button.select-manual-caret.btn.btn-default(ng-model='paragraph.timeLineSpan' 
ng-change='applyChartSettings(paragraph)' bs-options='item for item in 
timeLineSpans' bs-select data-caret-html='<span class="caret"></span>')
                     label min
         .col-xs-4
             +result-toolbar

Reply via email to