http://git-wip-us.apache.org/repos/asf/ignite/blob/6699b1e9/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 4c50210..aff65ce 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 @@ -39,157 +39,155 @@ mixin chart-settings(mdl) .col-xs-4 +result-toolbar +.row + .col-sm-12 + .docs-content(ng-controller='sqlController' dw-loading='loadingNotebookScreen' dw-loading-options='{text: "Loading notebook screen...", className: "page-loading-overlay"}') + 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(ng-click='goToConfiguration()') Back to configuration + div(ng-if='loaded && notebook') + .block-callout-parent + table + tbody + tr + td.block-callout-left(width='50%') + i.fa.fa-check-square.block-callout-header-left + label.block-callout-header-left With SQL Notebook you can: + ul + li Create any number of queries + li Execute and explain SQL queries + li Execute scan queries + li View data in tabular form and as charts + td.block-callout-right(width='50%') + i.fa.fa-check-square.block-callout-header-right + label.block-callout-header-right To execute SQL you need: + ul + li Start Apache Ignite Cluster with caches + li Populate caches with data + li Start Apache Ignite Web Agent + li Create query, enter some SQL and execute it + hr + .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.activePanels' 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}} -block container - .row - .col-sm-12 - .docs-content(ng-controller='sqlController' dw-loading='loadingNotebookScreen' dw-loading-options='{text: "Loading notebook screen...", className: "page-loading-overlay"}') - 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(ng-click='goToConfiguration()') Back to configuration - div(ng-if='loaded && notebook') - .block-callout-parent - table - tbody - tr - td.block-callout-left(width='50%') - i.fa.fa-check-square.block-callout-header-left - label.block-callout-header-left With SQL Notebook you can: - ul - li Create any number of queries - li Execute and explain SQL queries - li Execute scan queries - li View data in tabular form and as charts - td.block-callout-right(width='50%') - i.fa.fa-check-square.block-callout-header-right - label.block-callout-header-right To execute SQL you need: - ul - li Start Apache Ignite Cluster with caches - li Populate caches with data - li Start Apache Ignite Web Agent - li Create query, enter some SQL and execute it - hr - .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.activePanels' 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') + .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(bs-popover data-template-url='/sql/cache-metadata.html', data-placement='bottom', data-trigger='click') .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(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 - .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(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 + 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(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='exportPage(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 + .sql-table.ag-bootstrap(ag-grid='paragraph.gridOptions') + 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 - .col-xs-4 - .btn-group.pull-right(ng-disabled='paragraph.loading') - button.btn.btn-primary.fieldButton(ng-click='exportPage(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 - .sql-table.ag-bootstrap(ag-grid='paragraph.gridOptions') - 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()))' + 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
http://git-wip-us.apache.org/repos/asf/ignite/blob/6699b1e9/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade b/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade index a4d7681..c3ca4b4 100644 --- a/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade +++ b/modules/control-center-web/src/main/js/views/templates/batch-confirm.jade @@ -28,5 +28,5 @@ input(type='checkbox' ng-model='batchConfirm.applyToAll') | Apply to all button.btn.btn-default(id='batch-confirm-btn-cancel' ng-click='batchConfirm.cancel()') Cancel - button.btn.btn-default(id='batch-confirm-btn-cancel' ng-click='batchConfirm.skip()') Skip + button.btn.btn-default(id='batch-confirm-btn-skip' ng-click='batchConfirm.skip()') Skip button.btn.btn-primary(id='batch-confirm-btn-overwrite' ng-click='batchConfirm.overwrite()') Overwrite http://git-wip-us.apache.org/repos/asf/ignite/blob/6699b1e9/modules/control-center-web/src/main/js/views/templates/layout.jade ---------------------------------------------------------------------- diff --git a/modules/control-center-web/src/main/js/views/templates/layout.jade b/modules/control-center-web/src/main/js/views/templates/layout.jade deleted file mode 100644 index a600dc9..0000000 --- a/modules/control-center-web/src/main/js/views/templates/layout.jade +++ /dev/null @@ -1,50 +0,0 @@ -//- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -doctype html -html(ng-app='ignite-web-console') - head - title=title - - block css - link(rel='stylesheet', href='/app.min.css') - - block scripts - script(src='/common-utils.js') - script(src='/app.min.js') - - // ignite:modules - script(src='app/modules/navbar/main.js') - script(src='app/modules/configuration-sidebar/main.js') - // endignite - - // ignite:plugins - // endignite - - script(src='/common-module.js') - script(src='/data-structures.js') - - body.theme-line.body-overlap.greedy - .wrapper - block body - include ../includes/header - - block main-container - .container.body-container - .main-content - block container - - include ../includes/footer