Repository: ignite Updated Branches: refs/heads/ignite-843-rc2 59a3dcef7 -> 0dfdaeb35
IGNITE-843 Clean up. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/0dfdaeb3 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/0dfdaeb3 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/0dfdaeb3 Branch: refs/heads/ignite-843-rc2 Commit: 0dfdaeb35bc6c39b410980387703fc59cd8deb23 Parents: 59a3dcef7 Author: Andrey <[email protected]> Authored: Mon Dec 21 17:49:44 2015 +0700 Committer: Andrey <[email protected]> Committed: Mon Dec 21 17:49:44 2015 +0700 ---------------------------------------------------------------------- .../app/modules/states/configuration/index.js | 20 +- .../src/main/js/app/modules/states/sql/index.js | 5 +- .../src/main/js/controllers/sql-controller.js | 6 +- .../src/main/js/public/stylesheets/style.scss | 7 +- .../src/main/js/views/sql/sql.jade | 251 ++++++++++--------- 5 files changed, 154 insertions(+), 135 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaeb3/modules/control-center-web/src/main/js/app/modules/states/configuration/index.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/configuration/index.js b/modules/control-center-web/src/main/js/app/modules/states/configuration/index.js index e5a97fe..61b2d7e 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/configuration/index.js +++ b/modules/control-center-web/src/main/js/app/modules/states/configuration/index.js @@ -35,19 +35,31 @@ angular }) .state('base.configuration.clusters', { url: '/clusters', - templateUrl: '/configuration/clusters.html' + templateUrl: '/configuration/clusters.html', + data: { + loading: 'Loading clusters screen...' + } }) .state('base.configuration.caches', { url: '/caches', - templateUrl: '/configuration/caches.html' + templateUrl: '/configuration/caches.html', + data: { + loading: 'Loading caches screen...' + } }) .state('base.configuration.metadata', { url: '/metadata', - templateUrl: '/configuration/metadata.html' + templateUrl: '/configuration/metadata.html', + data: { + loading: 'Loading metadata screen...' + } }) .state('base.configuration.igfs', { url: '/igfs', - templateUrl: '/configuration/igfs.html' + templateUrl: '/configuration/igfs.html', + data: { + loading: 'Loading IGFS screen...' + } }) .state('base.configuration.summary', { url: '/summary', http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaeb3/modules/control-center-web/src/main/js/app/modules/states/sql/index.js ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/app/modules/states/sql/index.js b/modules/control-center-web/src/main/js/app/modules/states/sql/index.js index ea81343..fe09f33 100644 --- a/modules/control-center-web/src/main/js/app/modules/states/sql/index.js +++ b/modules/control-center-web/src/main/js/app/modules/states/sql/index.js @@ -26,6 +26,9 @@ angular $stateProvider .state('base.sql', { url: '/sql/{id}', - templateUrl: '/sql/sql.html' + templateUrl: '/sql/sql.html', + data: { + loading: 'Loading notebook screen...' + } }); }]); http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaeb3/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 4667640..ccc7689 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 @@ -247,7 +247,7 @@ consoleModule.controller('sqlController', function ($animate, $scope, $controlle }; var loadNotebook = function () { - $loading.start('loadingNotebookScreen'); + $loading.start('loading'); $http.post('/api/v1/notebooks/get', {noteId: $state.params.id}) .success(function (notebook) { @@ -280,9 +280,7 @@ consoleModule.controller('sqlController', function ($animate, $scope, $controlle .finally(function () { $scope.loaded = true; - console.log($scope.notebook); - - $loading.finish('loadingNotebookScreen'); + $loading.finish('loading'); }); }; http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaeb3/modules/control-center-web/src/main/js/public/stylesheets/style.scss ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/public/stylesheets/style.scss b/modules/control-center-web/src/main/js/public/stylesheets/style.scss index bd9dbff..d353575 100644 --- a/modules/control-center-web/src/main/js/public/stylesheets/style.scss +++ b/modules/control-center-web/src/main/js/public/stylesheets/style.scss @@ -571,6 +571,11 @@ button.form-control { } } + .sql-controls { + margin: 10px 0; + padding: 0 10px; + } + .sql-table-total { padding: 0 10px; @@ -1827,4 +1832,4 @@ treecontrol.tree-classic { border-top-left-radius: 0; } } -} \ No newline at end of file +} http://git-wip-us.apache.org/repos/asf/ignite/blob/0dfdaeb3/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 803f066..beb8137 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 @@ -40,7 +40,7 @@ mixin chart-settings(mdl) .col-xs-4 +result-toolbar -.row.greedy +.row ignite-callout ignite-callout-cel(data-title='With SQL Notebook you can') li Create any number of queries @@ -54,133 +54,134 @@ mixin chart-settings(mdl) li Start Apache Ignite Web Agent li Create query, enter some SQL and execute it - .docs-content(ng-controller='sqlController' dw-loading='loadingNotebookScreen' dw-loading-options='{text: "Loading notebook screen...", className: "page-loading-overlay"}') - hr - div(ng-if='loaded && !notebook' style='text-align: center') - h2 Failed to load notebook - label.col-sm-12 Notebook not accessible any more. Go back to configuration or open to another notebook. - button.h3.btn.btn-primary(ui-sref='base.configuration.clusters') Back to configuration - div(ng-if='loaded && notebook') - .row(bs-affix style='margin-bottom: 10px') - .docs-header.notebook-header - h1.col-sm-6(ng-hide='notebook.edit') - label(style='max-width: calc(100% - 60px)') {{notebook.name}} - .btn-group - +btn-toolbar('fa-pencil', 'notebook.edit = true;notebook.editName = notebook.name', 'Rename notebook') - +btn-toolbar('fa-trash', 'removeNotebook()', 'Remove notebook') - h1.col-sm-6(ng-show='notebook.edit') - i.btn.fa.fa-floppy-o(ng-show='notebook.editName' ng-click='renameNotebook(notebook.editName)' bs-tooltip data-title='Save notebook name' data-trigger='hover') - .input-tip - input.form-control(ng-model='notebook.editName' required on-enter='renameNotebook(notebook.editName)' on-escape='notebook.edit = false;') - h1.pull-right - a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='scrollParagraphs' data-placement='bottom-right') Scroll to query - span.caret - .btn-group(style='margin-top: 2px') - +btn-toolbar('fa-plus', 'addParagraph()', 'Add new query') - .docs-body.paragraphs - .panel-group(bs-collapse ng-model='notebook.expandedParagraphs' data-allow-multiple='true' data-start-collapsed='false') - .panel.panel-default(ng-repeat='paragraph in notebook.paragraphs') - .panel-heading(id='{{paragraph.id}}' bs-collapse-toggle) - .row - .col-sm-6(ng-hide='paragraph.edit') - i.tipLabel.fa(ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-up" : "fa-chevron-circle-down"') - label {{paragraph.name}} + ignite-loading + .docs-content(ng-controller='sqlController') + hr + div(ng-if='loaded && !notebook' style='text-align: center') + h2 Failed to load notebook + label.col-sm-12 Notebook not accessible any more. Go back to configuration or open to another notebook. + button.h3.btn.btn-primary(ui-sref='base.configuration.clusters') Back to configuration + div(ng-if='loaded && notebook') + .row(bs-affix style='margin-bottom: 10px') + .docs-header.notebook-header + h1.col-sm-6(ng-hide='notebook.edit') + label(style='max-width: calc(100% - 60px)') {{notebook.name}} + .btn-group + +btn-toolbar('fa-pencil', 'notebook.edit = true;notebook.editName = notebook.name', 'Rename notebook') + +btn-toolbar('fa-trash', 'removeNotebook()', 'Remove notebook') + h1.col-sm-6(ng-show='notebook.edit') + i.btn.fa.fa-floppy-o(ng-show='notebook.editName' ng-click='renameNotebook(notebook.editName)' bs-tooltip data-title='Save notebook name' data-trigger='hover') + .input-tip + input.form-control(ng-model='notebook.editName' required on-enter='renameNotebook(notebook.editName)' on-escape='notebook.edit = false;') + h1.pull-right + a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='scrollParagraphs' data-placement='bottom-right') Scroll to query + span.caret + .btn-group(style='margin-top: 2px') + +btn-toolbar('fa-plus', 'addParagraph()', 'Add new query') + .docs-body.paragraphs + .panel-group(bs-collapse ng-model='notebook.expandedParagraphs' data-allow-multiple='true' data-start-collapsed='false') + .panel.panel-default(ng-repeat='paragraph in notebook.paragraphs') + .panel-heading(id='{{paragraph.id}}' bs-collapse-toggle) + .row + .col-sm-6(ng-hide='paragraph.edit') + i.tipLabel.fa(ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-up" : "fa-chevron-circle-down"') + label {{paragraph.name}} - .btn-group(ng-hide='notebook.paragraphs.length > 1') - +btn-toolbar('fa-pencil', 'paragraph.edit = true; paragraph.editName = paragraph.name; $event.stopPropagation();', 'Rename query', 'paragraph-name-{{paragraph.id}}') + .btn-group(ng-hide='notebook.paragraphs.length > 1') + +btn-toolbar('fa-pencil', 'paragraph.edit = true; paragraph.editName = paragraph.name; $event.stopPropagation();', 'Rename query', 'paragraph-name-{{paragraph.id}}') - .btn-group(ng-show='notebook.paragraphs.length > 1' ng-click='$event.stopPropagation();') - +btn-toolbar('fa-pencil', 'paragraph.edit = true; paragraph.editName = paragraph.name;', 'Rename query', 'paragraph-name-{{paragraph.id}}') - +btn-toolbar('fa-remove', 'removeParagraph(paragraph)', 'Remove query') + .btn-group(ng-show='notebook.paragraphs.length > 1' ng-click='$event.stopPropagation();') + +btn-toolbar('fa-pencil', 'paragraph.edit = true; paragraph.editName = paragraph.name;', 'Rename query', 'paragraph-name-{{paragraph.id}}') + +btn-toolbar('fa-remove', 'removeParagraph(paragraph)', 'Remove query') - .col-sm-6(ng-show='paragraph.edit') - i.tipLabel.fa(style='float: left;' ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-up" : "fa-chevron-circle-down"') - i.tipLabel.fa.fa-floppy-o(style='float: right;' ng-show='paragraph.editName' ng-click='renameParagraph(paragraph, paragraph.editName); $event.stopPropagation();' bs-tooltip data-title='Save query name' data-trigger='hover') - .input-tip - input.form-control(id='paragraph-name-{{paragraph.id}}' ng-model='paragraph.editName' required ng-click='$event.stopPropagation();' on-enter='renameParagraph(paragraph, paragraph.editName)' on-escape='paragraph.edit = false') - .panel-collapse(role='tabpanel' bs-collapse-target) - .col-sm-12(ng-show='paragraph.editor') - .col-xs-8.col-sm-9(style='border-right: 1px solid #eee') - .sql-editor(ui-ace='{onLoad: aceInit(paragraph), theme: "chrome", mode: "sql", require: ["ace/ext/language_tools"],' + - 'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}' - ng-model='paragraph.query') - .col-xs-4.col-sm-3 - div(ng-show='caches.length > 0' style='padding: 5px 10px' st-table='displayedCaches' st-safe-src='caches') - lable.labelField.labelFormField Caches: - i.fa.fa-database.tipField(title='Click to show cache types metadata dialog' bs-popover data-template-url='/sql/cache-metadata.html', data-placement='bottom', data-trigger='click') + .col-sm-6(ng-show='paragraph.edit') + i.tipLabel.fa(style='float: left;' ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-up" : "fa-chevron-circle-down"') + i.tipLabel.fa.fa-floppy-o(style='float: right;' ng-show='paragraph.editName' ng-click='renameParagraph(paragraph, paragraph.editName); $event.stopPropagation();' bs-tooltip data-title='Save query name' data-trigger='hover') .input-tip - input.form-control(type='text' st-search placeholder='Filter caches...') - table.links - tbody.scrollable-y(style='max-height: 15em;display:block;' ng-model='paragraph.cacheName' bs-radio-group) - tr(ng-repeat='cache in displayedCaches track by cache.name') - td(style='width: 100%') - input.labelField(type='radio' value='{{cache.name}}') - label {{cache.name || "<default>"}} - .empty-caches(ng-show='displayedCaches.length == 0 && caches.length != 0') - label Wrong caches filter - .empty-caches(ng-show='caches.length == 0') - label No caches - .col-sm-12 - hr(style='margin: 0') - .col-sm-12 - .details-row - a.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, true)' ng-click='actionAvailable(paragraph, true) ? explain(paragraph) : ""' data-placement='bottom' bs-tooltip data-title='{{actionTooltip(paragraph, "explain", true)}}') Explain - a.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, true)' ng-click='actionAvailable(paragraph, true) ? execute(paragraph) : ""' data-placement='bottom' bs-tooltip data-title='{{actionTooltip(paragraph, "execute", true)}}') Execute - a.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, false)' ng-click='actionAvailable(paragraph, false) ? scan(paragraph): ""' data-placement='bottom' bs-tooltip data-title='{{actionTooltip(paragraph, "execute scan", false)}}') Scan - .pull-right - labelHide System columns: - a.btn.btn-default.fa.fa-bars.tipLabel(ng-class='{"btn-info": paragraph.systemColumns}' ng-click='toggleSystemColumns(paragraph)' ng-disabled='paragraph.disabledSystemColumns' bs-tooltip data-title='Show "_KEY", "_VAL" columns') - label.tipLabel Refresh rate: - button.btn.btn-default.fa.fa-clock-o.tipLabel(title='Click to show refresh rate dialog' ng-class='{"btn-info": paragraph.rate && paragraph.rate.installed}' bs-popover data-template-url='/sql/paragraph-rate.html' data-placement='left' data-auto-close='1' data-trigger='click') {{rateAsString(paragraph)}} - label.tipLabel Page size: - button.select-toggle.fieldButton.btn.btn-default(ng-model='paragraph.pageSize' bs-options='item for item in pageSizes' bs-select bs-tooltip data-title='Max number of rows to show in query result as one page') - .col-sm-12(ng-show='paragraph.errMsg') - hr(style='margin-top: 0; margin-bottom: 10px') - .sql-error-result(ng-show='paragraph.errMsg') Error: {{paragraph.errMsg}} - .col-sm-12(ng-show='!paragraph.errMsg && paragraph.result != "none"') - hr(style='margin-top: 0; margin-bottom: 10px') - .sql-empty-result(ng-show='!paragraph.nonEmpty()') Result set is empty - div(ng-show='paragraph.table() && paragraph.nonEmpty()') - .sql-table-total.row - .col-xs-4 - label Page # - b {{paragraph.page}} - label Results so far: - b {{paragraph.rows.length + paragraph.total}} - .col-xs-4 - +result-toolbar - .col-xs-4 - .btn-group.pull-right(ng-disabled='paragraph.loading') - button.btn.btn-primary.fieldButton(ng-click='exportCsv(paragraph)' bs-tooltip data-title='{{actionTooltip(paragraph, "export", false)}}') Export - button.btn.btn-primary(id='export-item-dropdown' data-toggle='dropdown' data-container='body' bs-dropdown='exportDropdown' data-placement='bottom-right') - span.caret - .grid(ui-grid='paragraph.gridOptions' ui-grid-auto-resize ui-grid-exporter ng-style='{ height: paragraph.gridOptions.height }') - div(ng-show='paragraph.chart() && paragraph.nonEmpty()') - div(ng-show='paragraph.queryExecute()') - +chart-settings - div(ng-show='paragraph.chartColumns.length > 0 && !paragraph.chartColumnsConfigured()') - .sql-empty-result Cannot display chart. Please configure axis using  - b Chart settings - div(ng-show='paragraph.chartColumns.length == 0') - .sql-empty-result Cannot display chart. Result set must contain Java build-in type columns. Please change query and execute it again. - div(ng-show='paragraph.chartColumnsConfigured()') - div(ng-show='paragraph.timeLineSupported() || !paragraph.chartTimeLineEnabled()') - div(ng-repeat='chart in paragraph.charts') - nvd3(options='chart.options' data='chart.data' api='chart.api') - .sql-empty-result(ng-show='!paragraph.timeLineSupported() && paragraph.chartTimeLineEnabled()') Pie chart does not support 'TIME_LINE' column for X-axis. Please use another column for X-axis or switch to another chart. - .sql-empty-result(ng-hide='paragraph.queryExecute()') - .row - .col-xs-4.col-xs-offset-4 + input.form-control(id='paragraph-name-{{paragraph.id}}' ng-model='paragraph.editName' required ng-click='$event.stopPropagation();' on-enter='renameParagraph(paragraph, paragraph.editName)' on-escape='paragraph.edit = false') + .panel-collapse(role='tabpanel' bs-collapse-target) + .col-sm-12(ng-show='paragraph.editor') + .col-xs-8.col-sm-9(style='border-right: 1px solid #eee') + .sql-editor(ui-ace='{onLoad: aceInit(paragraph), theme: "chrome", mode: "sql", require: ["ace/ext/language_tools"],' + + 'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}' + ng-model='paragraph.query') + .col-xs-4.col-sm-3 + div(ng-show='caches.length > 0' style='padding: 5px 10px' st-table='displayedCaches' st-safe-src='caches') + lable.labelField.labelFormField Caches: + i.fa.fa-database.tipField(title='Click to show cache types metadata dialog' bs-popover data-template-url='/sql/cache-metadata.html', data-placement='bottom', data-trigger='click') + .input-tip + input.form-control(type='text' st-search placeholder='Filter caches...') + table.links + tbody.scrollable-y(style='max-height: 15em;display:block;' ng-model='paragraph.cacheName' bs-radio-group) + tr(ng-repeat='cache in displayedCaches track by cache.name') + td(style='width: 100%') + input.labelField(type='radio' value='{{cache.name}}') + label {{cache.name || "<default>"}} + .empty-caches(ng-show='displayedCaches.length == 0 && caches.length != 0') + label Wrong caches filter + .empty-caches(ng-show='caches.length == 0') + label No caches + .col-sm-12 + hr(style='margin: 0') + .col-sm-12 + .sql-controls + a.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, true)' ng-click='actionAvailable(paragraph, true) ? explain(paragraph) : ""' data-placement='bottom' bs-tooltip data-title='{{actionTooltip(paragraph, "explain", true)}}') Explain + a.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, true)' ng-click='actionAvailable(paragraph, true) ? execute(paragraph) : ""' data-placement='bottom' bs-tooltip data-title='{{actionTooltip(paragraph, "execute", true)}}') Execute + a.btn.btn-primary(ng-disabled='!actionAvailable(paragraph, false)' ng-click='actionAvailable(paragraph, false) ? scan(paragraph): ""' data-placement='bottom' bs-tooltip data-title='{{actionTooltip(paragraph, "execute scan", false)}}') Scan + .pull-right + labelHide System columns: + a.btn.btn-default.fa.fa-bars.tipLabel(ng-class='{"btn-info": paragraph.systemColumns}' ng-click='toggleSystemColumns(paragraph)' ng-disabled='paragraph.disabledSystemColumns' bs-tooltip data-title='Show "_KEY", "_VAL" columns') + label.tipLabel Refresh rate: + button.btn.btn-default.fa.fa-clock-o.tipLabel(title='Click to show refresh rate dialog' ng-class='{"btn-info": paragraph.rate && paragraph.rate.installed}' bs-popover data-template-url='/sql/paragraph-rate.html' data-placement='left' data-auto-close='1' data-trigger='click') {{rateAsString(paragraph)}} + label.tipLabel Page size: + button.select-toggle.fieldButton.btn.btn-default(ng-model='paragraph.pageSize' bs-options='item for item in pageSizes' bs-select bs-tooltip data-title='Max number of rows to show in query result as one page') + .col-sm-12(ng-show='paragraph.errMsg') + hr(style='margin-top: 0; margin-bottom: 10px') + .sql-error-result(ng-show='paragraph.errMsg') Error: {{paragraph.errMsg}} + .col-sm-12(ng-show='!paragraph.errMsg && paragraph.result != "none"') + hr(style='margin-top: 0; margin-bottom: 10px') + .sql-empty-result(ng-show='!paragraph.nonEmpty()') Result set is empty + div(ng-show='paragraph.table() && paragraph.nonEmpty()') + .sql-table-total.row + .col-xs-4 + label Page # + b {{paragraph.page}} + label Results so far: + b {{paragraph.rows.length + paragraph.total}} + .col-xs-4 +result-toolbar - label.margin-top-dflt Charts do not support  - b Explain - | and - b Scan - | query - div(ng-show='queryExecuted(paragraph) && !paragraph.refreshExecuting()') - -var nextVisibleCondition = 'paragraph.queryId && (paragraph.table() || paragraph.chart() && paragraph.queryExecute() && (paragraph.timeLineSupported() || !paragraph.chartTimeLineEnabled()))' + .col-xs-4 + .btn-group.pull-right(ng-disabled='paragraph.loading') + button.btn.btn-primary.fieldButton(ng-click='exportCsv(paragraph)' bs-tooltip data-title='{{actionTooltip(paragraph, "export", false)}}') Export + button.btn.btn-primary(id='export-item-dropdown' data-toggle='dropdown' data-container='body' bs-dropdown='exportDropdown' data-placement='bottom-right') + span.caret + .grid(ui-grid='paragraph.gridOptions' ui-grid-auto-resize ui-grid-exporter ng-style='{ height: paragraph.gridOptions.height }') + div(ng-show='paragraph.chart() && paragraph.nonEmpty()') + div(ng-show='paragraph.queryExecute()') + +chart-settings + div(ng-show='paragraph.chartColumns.length > 0 && !paragraph.chartColumnsConfigured()') + .sql-empty-result Cannot display chart. Please configure axis using  + b Chart settings + div(ng-show='paragraph.chartColumns.length == 0') + .sql-empty-result Cannot display chart. Result set must contain Java build-in type columns. Please change query and execute it again. + div(ng-show='paragraph.chartColumnsConfigured()') + div(ng-show='paragraph.timeLineSupported() || !paragraph.chartTimeLineEnabled()') + div(ng-repeat='chart in paragraph.charts') + nvd3(options='chart.options' data='chart.data' api='chart.api') + .sql-empty-result(ng-show='!paragraph.timeLineSupported() && paragraph.chartTimeLineEnabled()') Pie chart does not support 'TIME_LINE' column for X-axis. Please use another column for X-axis or switch to another chart. + .sql-empty-result(ng-hide='paragraph.queryExecute()') + .row + .col-xs-4.col-xs-offset-4 + +result-toolbar + label.margin-top-dflt Charts do not support  + b Explain + | and + b Scan + | query + div(ng-show='queryExecuted(paragraph) && !paragraph.refreshExecuting()') + -var nextVisibleCondition = 'paragraph.queryId && (paragraph.table() || paragraph.chart() && paragraph.queryExecute() && (paragraph.timeLineSupported() || !paragraph.chartTimeLineEnabled()))' - hr(style='margin-top: 0; margin-bottom: 5px') - a(ng-show='paragraph.queryArgs.type' style='float: left; margin-left: 5px; margin-bottom: 5px' ng-click='showResultQuery(paragraph)') Show query - i.fa.fa-chevron-circle-right(ng-show=nextVisibleCondition style='float: right;margin-right: 10px;' ng-click='nextPage(paragraph)') - a(ng-show=nextVisibleCondition style='float: right; margin-bottom: 5px;margin-right: 5px;' ng-click='nextPage(paragraph)') Next + hr(style='margin-top: 0; margin-bottom: 5px') + a(ng-show='paragraph.queryArgs.type' style='float: left; margin-left: 5px; margin-bottom: 5px' ng-click='showResultQuery(paragraph)') Show query + i.fa.fa-chevron-circle-right(ng-show=nextVisibleCondition style='float: right;margin-right: 10px;' ng-click='nextPage(paragraph)') + a(ng-show=nextVisibleCondition style='float: right; margin-bottom: 5px;margin-right: 5px;' ng-click='nextPage(paragraph)') Next
