You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/09/02 05:31:43 UTC
ignite git commit: IGNITE-843: WIP on charts.
Repository: ignite
Updated Branches:
refs/heads/ignite-843 577795018 -> 9588e269b
IGNITE-843: WIP on charts.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9588e269
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9588e269
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9588e269
Branch: refs/heads/ignite-843
Commit: 9588e269bba03507617e61c24667373de318bf87
Parents: 5777950
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Wed Sep 2 10:32:12 2015 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Wed Sep 2 10:32:12 2015 +0700
----------------------------------------------------------------------
.../src/main/js/controllers/sql-controller.js | 100 +++++++++++++++----
.../src/main/js/views/sql/sql.jade | 10 +-
2 files changed, 91 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9588e269/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 1abab92..80fffd9 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
@@ -33,7 +33,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
{value: 'LOCAL', label: 'LOCAL'}
];
- var loadNotebook = function() {
+ var loadNotebook = function () {
$http.post('/notebooks/get', {noteId: $scope.noteId})
.success(function (notebook) {
$scope.notebook = notebook;
@@ -52,7 +52,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
loadNotebook();
- $scope.renameNotebook = function(name) {
+ $scope.renameNotebook = function (name) {
if ($scope.notebook.name != name) {
$scope.notebook.name = name;
@@ -80,7 +80,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
$scope.notebook.edit = false
};
- $scope.saveNotebook = function() {
+ $scope.saveNotebook = function () {
$http.post('/notebooks/save', $scope.notebook)
.success(function () {
$common.showInfo("Notebook successfully saved.");
@@ -90,7 +90,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
});
};
- $scope.removeNotebook = function() {
+ $scope.removeNotebook = function () {
$http.post('/notebooks/remove', $scope.notebook)
.success(function () {
$common.showInfo("Notebook successfully removed.");
@@ -100,7 +100,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
});
};
- $scope.renameParagraph = function(paragraph, newName) {
+ $scope.renameParagraph = function (paragraph, newName) {
if (paragraph.name != newName) {
paragraph.name = newName;
@@ -116,7 +116,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
paragraph.edit = false
};
- $scope.addParagraph = function() {
+ $scope.addParagraph = function () {
if (!$scope.notebook.paragraphs)
$scope.notebook.paragraphs = [];
@@ -132,7 +132,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
$scope.notebook.paragraphs.push(paragraph);
};
- $scope.removeParagraph = function(paragraph) {
+ $scope.removeParagraph = function (paragraph) {
var paragraph_idx = _.findIndex($scope.notebook.paragraphs, function (item) {
return paragraph == item;
});
@@ -175,7 +175,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
$common.showError('Receive agent error: ' + err);
});
- var _appendOnLast = function(item) {
+ var _appendOnLast = function (item) {
var idx = _.findIndex($scope.notebook.paragraphs, function (paragraph) {
return paragraph == item;
});
@@ -184,8 +184,8 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
$scope.addParagraph();
};
- var _processQueryResult = function(item) {
- return function(res) {
+ var _processQueryResult = function (item) {
+ return function (res) {
item.meta = [];
if (res.meta)
@@ -203,7 +203,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
}
};
- $scope.execute = function(item) {
+ $scope.execute = function (item) {
_appendOnLast(item);
$http.post('/agent/query', {query: item.query, pageSize: item.pageSize, cacheName: item.cache.name})
@@ -213,17 +213,21 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
});
};
- $scope.explain = function(item) {
+ $scope.explain = function (item) {
_appendOnLast(item);
- $http.post('/agent/query', {query: 'EXPLAIN ' + item.query, pageSize: item.pageSize, cacheName: item.cache.name})
+ $http.post('/agent/query', {
+ query: 'EXPLAIN ' + item.query,
+ pageSize: item.pageSize,
+ cacheName: item.cache.name
+ })
.success(_processQueryResult(item))
.error(function (errMsg) {
$common.showError(errMsg);
});
};
- $scope.scan = function(item) {
+ $scope.scan = function (item) {
_appendOnLast(item);
$http.post('/agent/scan', {pageSize: item.pageSize, cacheName: item.cache.name})
@@ -233,8 +237,12 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
});
};
- $scope.nextPage = function(item) {
- $http.post('/agent/query/fetch', {queryId: item.queryId, pageSize: item.pageSize, cacheName: item.cache.name})
+ $scope.nextPage = function (item) {
+ $http.post('/agent/query/fetch', {
+ queryId: item.queryId,
+ pageSize: item.pageSize,
+ cacheName: item.cache.name
+ })
.success(function (res) {
item.page++;
@@ -250,7 +258,7 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
});
};
- $scope.columnToolTip = function(col) {
+ $scope.columnToolTip = function (col) {
var res = [];
if (col.schemaName)
@@ -263,11 +271,67 @@ controlCenterModule.controller('sqlController', ['$scope', '$controller', '$http
return res.join(".");
};
- $scope.resultMode = function(paragraph, type) {
+ $scope.resultMode = function (paragraph, type) {
return (paragraph.result === type);
};
$scope.getter = function (value) {
return value;
};
+
+ $scope.showBarChart = function (paragraph) {
+ paragraph.result = 'bar';
+
+ var testdata = [
+ {
+ "key": "Quantity",
+ "bar": true,
+ "values": [[1136005200000, 1271000.0], [1138683600000, 1271000.0], [1141102800000, 1271000.0], [1143781200000, 0], [1146369600000, 0], [1149048000000, 0], [1151640000000, 0], [1154318400000, 0], [1156996800000, 0], [1159588800000, 3899486.0], [1162270800000, 3899486.0], [1164862800000, 3899486.0], [1167541200000, 3564700.0], [1170219600000, 3564700.0], [1172638800000, 3564700.0], [1175313600000, 2648493.0], [1177905600000, 2648493.0], [1180584000000, 2648493.0], [1183176000000, 2522993.0], [1185854400000, 2522993.0], [1188532800000, 2522993.0], [1191124800000, 2906501.0], [1193803200000, 2906501.0], [1196398800000, 2906501.0], [1199077200000, 2206761.0], [1201755600000, 2206761.0], [1204261200000, 2206761.0], [1206936000000, 2287726.0], [1209528000000, 2287726.0], [1212206400000, 2287726.0], [1214798400000, 2732646.0], [1217476800000, 2732646.0], [1220155200000, 2732646.0], [1222747200000, 2599196.0], [1225425600000, 2599196.0], [1228021200000, 2599196.0], [123069960
0000, 1924387.0], [1233378000000, 1924387.0], [1235797200000, 1924387.0], [1238472000000, 1756311.0], [1241064000000, 1756311.0], [1243742400000, 1756311.0], [1246334400000, 1743470.0], [1249012800000, 1743470.0], [1251691200000, 1743470.0], [1254283200000, 1519010.0], [1256961600000, 1519010.0], [1259557200000, 1519010.0], [1262235600000, 1591444.0], [1264914000000, 1591444.0], [1267333200000, 1591444.0], [1270008000000, 1543784.0], [1272600000000, 1543784.0], [1275278400000, 1543784.0], [1277870400000, 1309915.0], [1280548800000, 1309915.0], [1283227200000, 1309915.0], [1285819200000, 1331875.0], [1288497600000, 1331875.0], [1291093200000, 1331875.0], [1293771600000, 1331875.0], [1296450000000, 1154695.0], [1298869200000, 1154695.0], [1301544000000, 1194025.0], [1304136000000, 1194025.0], [1306814400000, 1194025.0], [1309406400000, 1194025.0], [1312084800000, 1194025.0], [1314763200000, 1244525.0], [1317355200000, 475000.0], [1320033600000, 475000.0], [1322629200000, 475000.0], [1
325307600000, 690033.0], [1327986000000, 690033.0], [1330491600000, 690033.0], [1333166400000, 514733.0], [1335758400000, 514733.0]]
+ },
+ {
+ "key": "Price",
+ "values": [[1136005200000, 71.89], [1138683600000, 75.51], [1141102800000, 68.49], [1143781200000, 62.72], [1146369600000, 70.39], [1149048000000, 59.77], [1151640000000, 57.27], [1154318400000, 67.96], [1156996800000, 67.85], [1159588800000, 76.98], [1162270800000, 81.08], [1164862800000, 91.66], [1167541200000, 84.84], [1170219600000, 85.73], [1172638800000, 84.61], [1175313600000, 92.91], [1177905600000, 99.8], [1180584000000, 121.191], [1183176000000, 122.04], [1185854400000, 131.76], [1188532800000, 138.48], [1191124800000, 153.47], [1193803200000, 189.95], [1196398800000, 182.22], [1199077200000, 198.08], [1201755600000, 135.36], [1204261200000, 125.02], [1206936000000, 143.5], [1209528000000, 173.95], [1212206400000, 188.75], [1214798400000, 167.44], [1217476800000, 158.95], [1220155200000, 169.53], [1222747200000, 113.66], [1225425600000, 107.59], [1228021200000, 92.67], [1230699600000, 85.35], [1233378000000, 90.13], [1235797200000, 89.31], [1238472000000, 1
05.12], [1241064000000, 125.83], [1243742400000, 135.81], [1246334400000, 142.43], [1249012800000, 163.39], [1251691200000, 168.21], [1254283200000, 185.35], [1256961600000, 188.5], [1259557200000, 199.91], [1262235600000, 210.732], [1264914000000, 192.063], [1267333200000, 204.62], [1270008000000, 235.0], [1272600000000, 261.09], [1275278400000, 256.88], [1277870400000, 251.53], [1280548800000, 257.25], [1283227200000, 243.1], [1285819200000, 283.75], [1288497600000, 300.98], [1291093200000, 311.15], [1293771600000, 322.56], [1296450000000, 339.32], [1298869200000, 353.21], [1301544000000, 348.5075], [1304136000000, 350.13], [1306814400000, 347.83], [1309406400000, 335.67], [1312084800000, 390.48], [1314763200000, 384.83], [1317355200000, 381.32], [1320033600000, 404.78], [1322629200000, 382.2], [1325307600000, 405.0], [1327986000000, 456.48], [1330491600000, 542.44], [1333166400000, 599.55], [1335758400000, 583.98]]
+ }
+ ].map(function (series) {
+ series.values = series.values.map(function (d) {
+ return {x: d[0], y: d[1]}
+ });
+ return series;
+ });
+
+ var chart;
+
+ nv.addGraph(function () {
+ chart = nv.models.linePlusBarChart()
+ .margin({top: 50, right: 60, bottom: 30, left: 70})
+ .legendRightAxisHint(' [Using Right Axis]')
+ .color(d3.scale.category10().range());
+ chart.xAxis.tickFormat(function (d) {
+ return d3.time.format('%x')(new Date(d))
+ }).showMaxMin(false);
+
+ chart.y1Axis.tickFormat(function (d) {
+ return '$' + d3.format(',f')(d)
+ });
+
+ chart.bars.forceY([0]).padData(false);
+
+ chart.x2Axis.tickFormat(function (d) {
+ return d3.time.format('%x')(new Date(d))
+ }).showMaxMin(false);
+
+ var z = d3.select('#chart svg');
+
+ z.datum(testdata)
+ .transition().duration(500).call(chart);
+
+ nv.utils.windowResize(chart.update);
+
+ chart.dispatch.on('stateChange', function (e) {
+ nv.log('New State:', JSON.stringify(e));
+ });
+
+ return chart;
+ });
+ }
}]);
http://git-wip-us.apache.org/repos/asf/ignite/blob/9588e269/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 45b251d..51dba89 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
@@ -20,6 +20,9 @@ append scripts
script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/theme-chrome.js')
script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/mode-sql.js')
script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/ext-language_tools.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.1/nv.d3.min.js')
+ link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/nvd3/1.8.1/nv.d3.min.css')
block container
.row
@@ -51,7 +54,7 @@ block container
.btn-group(ng-model='paragraph.result' ng-click='$event.stopPropagation();' style='float: right' )
i.btn.btn-default.fa.fa-table(ng-click='paragraph.result="table"' ng-class="{'active': resultMode(paragraph, 'table')}" bs-tooltip data-title='Show table' data-trigger='hover')
- i.btn.btn-default.fa.fa-bar-chart(ng-click='paragraph.result="bar"' ng-class="{'active': resultMode(paragraph, 'bar')}" bs-tooltip data-title='Show bar chart' data-trigger='hover')
+ i.btn.btn-default.fa.fa-bar-chart(ng-click='showBarChart(paragraph)' ng-class="{'active': resultMode(paragraph, 'bar')}" bs-tooltip data-title='Show bar chart' data-trigger='hover')
div(ng-show='paragraph.edit')
input.sql-name-input(ng-model='paragraph.edit_name' ng-click='$event.stopPropagation();' on-enter='renameParagraph(paragraph, paragraph.edit_name)' on-escape='renameParagraph(paragraph, paragraph.name)')
i.tipLabel.fa.fa-floppy-o(ng-click='renameParagraph(paragraph, paragraph.edit_name); $event.stopPropagation();' bs-tooltip data-title='Save paragraph name' data-trigger='hover')
@@ -104,3 +107,8 @@ block container
// tr
// td.text-right(colspan='{{paragraph.meta.length}}')
// div(st-pagination st-items-by-page='10' st-displayed-pages='5')
+ .panel-body(ng-show='paragraph.result === "bar"')
+ label Bar chart
+ #chart
+ svg
+