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
