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 2018/08/23 10:44:06 UTC
[3/6] ignite git commit: IGNITE-9286 Web Console: Refactored UI to
modern UI/UX. Cleaned old code.
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/controller.js b/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/controller.js
deleted file mode 100644
index 0d751e8..0000000
--- a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/controller.js
+++ /dev/null
@@ -1,135 +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.
- */
-
-import get from 'lodash/get';
-
-export default class PCFormFieldSizeController {
- /** @type {ng.INgModelController} */
- ngModel;
- /** @type {number} */
- min;
- /** @type {number} */
- max;
- /** @type {ng.ICompiledExpression} */
- onScaleChange;
- /** @type {ng.IFormController} */
- innerForm;
-
- static $inject = ['$element', '$attrs'];
-
- /** @type {ig.config.formFieldSize.ISizeTypes} */
- static sizeTypes = {
- bytes: [
- {label: 'Kb', value: 1024},
- {label: 'Mb', value: 1024 * 1024},
- {label: 'Gb', value: 1024 * 1024 * 1024}
- ],
- seconds: [
- {label: 'ns', value: 1 / 1000},
- {label: 'ms', value: 1},
- {label: 's', value: 1000}
- ]
- };
-
- /**
- * @param {JQLite} $element
- * @param {ng.IAttributes} $attrs
- */
- constructor($element, $attrs) {
- this.$element = $element;
- this.$attrs = $attrs;
- this.id = Math.random();
- }
-
- $onDestroy() {
- this.$element = null;
- }
-
- $onInit() {
- if (!this.min) this.min = 0;
- if (!this.sizesMenu) this.setDefaultSizeType();
- this.$element.addClass('ignite-form-field');
- this.ngModel.$render = () => this.assignValue(this.ngModel.$viewValue);
- }
-
- $postLink() {
- if ('min' in this.$attrs)
- this.ngModel.$validators.min = (value) => this.ngModel.$isEmpty(value) || value === void 0 || value >= this.min;
- if ('max' in this.$attrs)
- this.ngModel.$validators.max = (value) => this.ngModel.$isEmpty(value) || value === void 0 || value <= this.max;
-
- this.ngModel.$validators.step = (value) => this.ngModel.$isEmpty(value) || value === void 0 || Math.floor(value) === value;
- }
-
- $onChanges(changes) {
- if ('sizeType' in changes) {
- this.sizesMenu = PCFormFieldSizeController.sizeTypes[changes.sizeType.currentValue];
- this.sizeScale = this.chooseSizeScale(get(changes, 'sizeScaleLabel.currentValue'));
- }
- if (!this.sizesMenu) this.setDefaultSizeType();
- if ('sizeScaleLabel' in changes)
- this.sizeScale = this.chooseSizeScale(changes.sizeScaleLabel.currentValue);
-
- if ('min' in changes) this.ngModel.$validate();
- }
-
- /**
- * @param {ig.config.formFieldSize.ISizeTypeOption} value
- */
- set sizeScale(value) {
- this._sizeScale = value;
- if (this.onScaleChange) this.onScaleChange({$event: this.sizeScale});
- if (this.ngModel) this.assignValue(this.ngModel.$viewValue);
- }
-
- get sizeScale() {
- return this._sizeScale;
- }
-
- /**
- * @param {number} rawValue
- */
- assignValue(rawValue) {
- if (!this.sizesMenu) this.setDefaultSizeType();
- return this.value = rawValue
- ? rawValue / this.sizeScale.value
- : rawValue;
- }
-
- onValueChange() {
- this.ngModel.$setViewValue(this.value ? this.value * this.sizeScale.value : this.value);
- }
-
- _defaultLabel() {
- if (!this.sizesMenu)
- return;
-
- return this.sizesMenu[1].label;
- }
-
- chooseSizeScale(label = this._defaultLabel()) {
- if (!label)
- return;
-
- return this.sizesMenu.find((option) => option.label.toLowerCase() === label.toLowerCase());
- }
-
- setDefaultSizeType() {
- this.sizesMenu = PCFormFieldSizeController.sizeTypes.bytes;
- this.sizeScale = this.chooseSizeScale();
- }
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/index.js b/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/index.js
deleted file mode 100644
index 1fdc379..0000000
--- a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/index.js
+++ /dev/null
@@ -1,23 +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.
- */
-
-import angular from 'angular';
-import component from './component';
-
-export default angular
- .module('ignite-console.page-configure.form-field-size', [])
- .component('pcFormFieldSize', component);
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/style.scss b/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/style.scss
deleted file mode 100644
index 737b2a0..0000000
--- a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/style.scss
+++ /dev/null
@@ -1,52 +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.
- */
-
-pc-form-field-size {
- @import "./../../../../../public/stylesheets/variables.scss";
-
- .input-tip {
- display: flex;
- flex-direction: row;
-
- .form-control {
- border-top-right-radius: 0;
- border-bottom-right-radius: 0;
- }
-
- input {
- border-top-right-radius: 0 !important;
- border-bottom-right-radius: 0 !important;
- min-width: 0;
- }
-
- .btn-ignite {
- border-top-left-radius: 0 !important;
- border-bottom-left-radius: 0 !important;
- flex: 0 0 auto;
- width: 60px !important;
- line-height: initial !important;
- }
- }
-
- &.ng-invalid:not(.ng-pristine),
- &.ng-invalid.ng-touched {
- input, .btn-ignite {
- border-color: $ignite-brand-primary !important;
- box-shadow: inset 0 1px 3px 0 rgba($ignite-brand-primary, .5) !important;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/template.pug b/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/template.pug
deleted file mode 100644
index de62d35..0000000
--- a/modules/web-console/frontend/app/components/page-configure/components/pc-form-field-size/template.pug
+++ /dev/null
@@ -1,61 +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.
-
-include /app/helpers/jade/mixins
-
-+ignite-form-field__label('{{ ::$ctrl.label }}', '$ctrl.id', '$ctrl.required', '$ctrl.ngDisabled')
- span(ng-if='::$ctrl.tip')
- +tooltip('{{::$ctrl.tip}}')
-.ignite-form-field__control(ng-form='$ctrl.innerForm')
- .input-tip
- input.form-control(
- type='number'
- id='{{::$ctrl.id}}Input'
- ng-model='$ctrl.value'
- ng-model-options='{allowInvalid: true}'
- ng-change='$ctrl.onValueChange()'
- name='numberInput'
- placeholder='{{$ctrl.placeholder}}'
- min='{{ $ctrl.min ? $ctrl.min / $ctrl.sizeScale.value : "" }}'
- max='{{ $ctrl.max ? $ctrl.max / $ctrl.sizeScale.value : "" }}'
- ng-required='$ctrl.required'
- ng-disabled='$ctrl.ngDisabled'
- )
- button.btn-ignite.btn-ignite--secondary(
- bs-select
- bs-options='size as size.label for size in $ctrl.sizesMenu'
- ng-model='$ctrl.sizeScale'
- protect-from-bs-select-render
- ng-disabled='$ctrl.ngDisabled'
- type='button'
- )
- | {{ $ctrl.sizeScale.label }}
- span.fa.fa-caret-down.icon-right
-.ignite-form-field__errors(
- ng-messages='$ctrl.ngModel.$error'
- ng-show=`($ctrl.ngModel.$dirty || $ctrl.ngModel.$touched || $ctrl.ngModel.$submitted) && $ctrl.ngModel.$invalid`
-)
- div(ng-transclude)
- div(ng-message='required')
- | This field could not be empty
- div(ng-message='min')
- | Value is less than allowable minimum: {{ $ctrl.min/$ctrl.sizeScale.value }} {{$ctrl.sizeScale.label}}
- div(ng-message='max')
- | Value is more than allowable maximum: {{ $ctrl.max/$ctrl.sizeScale.value }} {{$ctrl.sizeScale.label}}
- div(ng-message='number')
- | Only numbers allowed
- div(ng-message='step')
- | Invalid step
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/style.scss b/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/style.scss
index 227f23c..2147714 100644
--- a/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/style.scss
+++ b/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/style.scss
@@ -24,9 +24,6 @@ pc-items-table {
display: flex;
flex-direction: row;
}
- .ui-grid-settings--heading {
- flex: 1;
- }
// Removes unwanted box-shadow and border-right from checkboxes column
.ui-grid.ui-grid--ignite .ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-render-container-left:before {
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/template.pug b/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/template.pug
index 0dbb760..dbc7202 100644
--- a/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/template.pug
+++ b/modules/web-console/frontend/app/components/page-configure/components/pc-items-table/template.pug
@@ -17,25 +17,23 @@
include /app/helpers/jade/mixins
.panel--ignite
- .panel-heading.ui-grid-settings.ui-grid-ignite__panel(ng-if='!$ctrl.hideHeader')
- .panel-title
- .pc-items-table__table-name.ng-animate-disabled(
- ng-hide='$ctrl.gridAPI.selection.getSelectedCount()'
- )
- | {{ $ctrl.tableTitle }}
- grid-column-selector(grid-api='$ctrl.gridAPI')
- .pc-items-table__selection-count.ng-animate-disabled(
- ng-show='$ctrl.gridAPI.selection.getSelectedCount()'
- )
- i {{ $ctrl.gridAPI.selection.getSelectedCount() }} of {{ $ctrl.items.length }} selected
- .pco-clusters-table__actions-button
- +ignite-form-field-bsdropdown({
- label: 'Actions',
- name: 'action',
- disabled: '!$ctrl.gridAPI.selection.getSelectedCount()',
- required: false,
- options: '$ctrl.actionsMenu'
- })
+ header.header-with-selector(ng-if='!$ctrl.hideHeader')
+ div(ng-hide='$ctrl.gridAPI.selection.getSelectedCount()')
+ span {{ $ctrl.tableTitle }}
+ grid-column-selector(grid-api='$ctrl.gridAPI')
+
+ div(ng-show='$ctrl.gridAPI.selection.getSelectedCount()')
+ grid-item-selected(grid-api='$ctrl.gridAPI')
+
+ div
+ +ignite-form-field-bsdropdown({
+ label: 'Actions',
+ name: 'action',
+ disabled: '!$ctrl.gridAPI.selection.getSelectedCount()',
+ required: false,
+ options: '$ctrl.actionsMenu'
+ })
+
.grid.ui-grid--ignite(
ui-grid='$ctrl.grid'
ui-grid-selection
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/index.js b/modules/web-console/frontend/app/components/page-configure/index.js
index 9beea7a..6dee704 100644
--- a/modules/web-console/frontend/app/components/page-configure/index.js
+++ b/modules/web-console/frontend/app/components/page-configure/index.js
@@ -36,7 +36,6 @@ import effects from './store/effects';
import projectStructurePreview from './components/modal-preview-project';
import itemsTable from './components/pc-items-table';
import pcUiGridFilters from './components/pc-ui-grid-filters';
-import pcFormFieldSize from './components/pc-form-field-size';
import isInCollection from './components/pcIsInCollection';
import pcValidation from './components/pcValidation';
import fakeUiCanExit from './components/fakeUICanExit';
@@ -99,7 +98,6 @@ export default angular
'ui.router',
'asyncFilter',
uiValidate,
- pcFormFieldSize.name,
pcUiGridFilters.name,
projectStructurePreview.name,
itemsTable.name,
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/style.scss b/modules/web-console/frontend/app/components/page-configure/style.scss
index 36ae752..be19e8a 100644
--- a/modules/web-console/frontend/app/components/page-configure/style.scss
+++ b/modules/web-console/frontend/app/components/page-configure/style.scss
@@ -130,30 +130,15 @@ page-configure {
background: var(--pc-form-group-title-bg-color);
}
- &>.form-field-checkbox .ignite-form-field__control {
- & > span {
- position: relative;
-
- &:after {
- content: '';
- display: block;
- position: absolute;
- background-color: var(--pc-form-group-title-bg-color);
- z-index: -1;
- top: 0;
- bottom: 0;
- left: -26px;
- right: -5px;
- }
- }
- [ignite-icon] {
- background-color: var(--pc-form-group-title-bg-color);
- }
- }
-
&+.pc-form-group {
padding-top: 10px;
}
+
+ .form-field__checkbox {
+ background-color: white;
+ padding: 0 5px;
+ margin: 0 -5px;
+ }
}
.pc-form-grid-row > .pc-form-group__text-title[class*='pc-form-grid-col-'] {
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-configure/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-configure/template.pug b/modules/web-console/frontend/app/components/page-configure/template.pug
index bd299be..86180fa 100644
--- a/modules/web-console/frontend/app/components/page-configure/template.pug
+++ b/modules/web-console/frontend/app/components/page-configure/template.pug
@@ -39,7 +39,7 @@ div.pc-content-container
input(type='checkbox' ng-model='$ctrl.tooltipsVisible')
div
- ui-view.theme--ignite(
+ ui-view.theme--ignite.theme--ignite-errors-horizontal(
ignite-loading='configuration'
ignite-loading-text='{{ $ctrl.loadingText }}'
ignite-loading-position='top'
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.js b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.js
index c887f4d..5ba7a27 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.js
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/controller.js
@@ -283,7 +283,15 @@ export class NotebookCtrl {
$scope.caches = [];
- $scope.pageSizes = [50, 100, 200, 400, 800, 1000];
+ $scope.pageSizesOptions = [
+ {value: 50, label: '50'},
+ {value: 100, label: '100'},
+ {value: 200, label: '200'},
+ {value: 400, label: '400'},
+ {value: 800, label: '800'},
+ {value: 1000, label: '1000'}
+ ];
+
$scope.maxPages = [
{label: 'Unlimited', value: 0},
{label: '1', value: 1},
@@ -1048,7 +1056,7 @@ export class NotebookCtrl {
const paragraph = _newParagraph({
name: 'Query' + (sz === 0 ? '' : sz),
query: '',
- pageSize: $scope.pageSizes[1],
+ pageSize: $scope.pageSizesOptions[1].value,
timeLineSpan: $scope.timeLineSpans[0],
result: 'none',
rate: {
@@ -1077,7 +1085,7 @@ export class NotebookCtrl {
const paragraph = _newParagraph({
name: 'Scan' + (sz === 0 ? '' : sz),
query: '',
- pageSize: $scope.pageSizes[1],
+ pageSize: $scope.pageSizesOptions[1].value,
timeLineSpan: $scope.timeLineSpans[0],
result: 'none',
rate: {
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
index a5fd50a..a687d75 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/style.scss
@@ -121,4 +121,24 @@ queries-notebook {
.btn.btn-default.select-toggle.tipLabel {
padding-right: 25px;
}
+
+ .form-field__sensitive {
+ input[type='checkbox'] {
+ height: 0;
+ }
+
+ input:checked + span {
+ color: #0067b9;
+ }
+ }
+
+ .queries-notebook-displayed-caches {
+ max-height: 210px;
+ padding: 0 5px;
+ margin-top: 10px;
+ margin-left: -5px;
+ margin-right: -5px;
+
+ overflow-y: auto;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
index 713f83e..9ae56d0 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebook/template.tpl.pug
@@ -16,6 +16,24 @@
include /app/helpers/jade/mixins
+mixin form-field__sensitive({ label, modelFilter, modelSensitive, name, placeholder })
+ .form-field.form-field__sensitive.ignite-form-field
+ +form-field__label({ label, name })
+ +form-field__tooltip({ title: 'You can set case sensitive search' })
+ .form-field__control.form-field__control-group
+ +form-field__input({ name, model: modelFilter, placeholder })(
+ type='text'
+ )
+ label.btn-ignite.btn-ignite--secondary
+ +form-field__input({ name: `${ name } + "Sensitive"`, model: modelSensitive, placeholder })(
+ type='checkbox'
+ )
+ span Cs
+ .form-field__errors(
+ ng-messages=`$input.$error`
+ ng-show=`($input.$dirty || $input.$touched || $input.$submitted) && $input.$invalid`
+ )
+
mixin btn-toolbar(btn, click, tip, focusId)
i.btn.btn-default.fa(class=btn ng-click=click bs-tooltip='' data-title=tip ignite-on-click-focus=focusId data-trigger='hover' data-placement='bottom')
@@ -72,59 +90,120 @@ mixin paragraph-rename
input.form-control(id='paragraph-name-{{paragraph.id}}' ng-model='paragraph.editName' required ng-click='$event.stopPropagation();' ignite-on-enter='renameParagraph(paragraph, paragraph.editName)' ignite-on-escape='paragraph.edit = false')
mixin query-settings
- .panel-top-align
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Configure periodical execution of last successfully executed query') 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='{{ $ctrl.paragraphRateTemplateUrl }}' data-placement='left' data-auto-close='1' data-trigger='click') {{rateAsString(paragraph)}}
-
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Max number of rows to show in query result as one page') Page size:
- button.btn.btn-default.select-toggle.tipLabel(ng-model='paragraph.pageSize' bs-select bs-options='item for item in pageSizes')
-
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Limit query max results to specified number of pages') Max pages:
- button.btn.btn-default.select-toggle.tipLabel(ng-model='paragraph.maxPages' bs-select bs-options='item.value as item.label for item in maxPages')
-
- .panel-tip-container
- .row(ng-if='nonCollocatedJoinsAvailable(paragraph)')
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Non-collocated joins is a special mode that allow to join data across cluster without collocation.<br/>\
- Nested joins are not supported for now.<br/>\
- <b>NOTE</b>: In some cases it may consume more heap memory or may take a long time than collocated joins.' data-trigger='hover')
- input(type='checkbox' ng-model='paragraph.nonCollocatedJoins')
- span Allow non-collocated joins
- .row(ng-if='collocatedJoinsAvailable(paragraph)')
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Used For Optimization Purposes Of Queries With GROUP BY Statements.<br/>\
- <b>NOTE:</b> Whenever Ignite executes a distributed query, it sends sub-queries to individual cluster members.<br/>\
- If you know in advance that the elements of your query selection are collocated together on the same node\
- and you group by collocated key (primary or affinity key), then Ignite can make significant performance and\
- network optimizations by grouping data on remote nodes.' data-trigger='hover')
- input(type='checkbox' ng-model='paragraph.collocated')
- span Collocated Query
- .row(ng-if='enforceJoinOrderAvailable(paragraph)')
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Enforce join order of tables in the query.<br/>\
- If <b>set</b>, then query optimizer will not reorder tables within join.<br/>\
- <b>NOTE:</b> It is not recommended to enable this property unless you have verified that\
- indexes are not selected in optimal order.' data-trigger='hover')
- input(type='checkbox' ng-model='paragraph.enforceJoinOrder')
- span Enforce join order
- .row(ng-if='lazyQueryAvailable(paragraph)')
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='By default Ignite attempts to fetch the whole query result set to memory and send it to the client.<br/>\
- For small and medium result sets this provides optimal performance and minimize duration of internal database locks, thus increasing concurrency.<br/>\
- If result set is too big to fit in available memory this could lead to excessive GC pauses and even OutOfMemoryError.<br/>\
- Use this flag as a hint for Ignite to fetch result set lazily, thus minimizing memory consumption at the cost of moderate performance hit.' data-trigger='hover')
- input(type='checkbox' ng-model='paragraph.lazy')
- span Lazy result set
+ div
+ .form-field--inline(
+ bs-tooltip
+ data-placement='top'
+ data-title='Max number of rows to show in query result as one page'
+ )
+ +form-field__dropdown({
+ label: 'Rows per page:',
+ model: 'paragraph.pageSize',
+ name: '"pageSize" + paragraph.id',
+ options: 'pageSizesOptions'
+ })
+
+ .form-field--inline(
+ bs-tooltip
+ data-placement='top'
+ data-title='Limit query max results to specified number of pages'
+ )
+ +form-field__dropdown({
+ label: 'Max pages:',
+ model: 'paragraph.maxPages',
+ name: '"maxPages" + paragraph.id',
+ options: 'maxPages'
+ })
+
+ .form-field--inline(
+ bs-tooltip
+ data-placement='bottom'
+ data-title='Configure periodical execution of last successfully executed query'
+ )
+ button.btn-ignite-group(
+ bs-popover
+ data-template-url='{{ $ctrl.paragraphRateTemplateUrl }}'
+ data-placement='bottom-right'
+ data-auto-close='1'
+ data-trigger='click'
+ )
+ .btn-ignite(
+ ng-class='{\
+ "btn-ignite--primary": paragraph.rate && paragraph.rate.installed,\
+ "btn-ignite--secondary": !(paragraph.rate && paragraph.rate.installed),\
+ }'
+ )
+ svg(ignite-icon='clock')
+ | {{ rateAsString(paragraph) }}
+ .btn-ignite(
+ ng-class='{\
+ "btn-ignite--primary": paragraph.rate && paragraph.rate.installed,\
+ "btn-ignite--secondary": !(paragraph.rate && paragraph.rate.installed),\
+ }'
+ )
+ span.icon.fa.fa-caret-down
+ div
+ .row(ng-if='nonCollocatedJoinsAvailable(paragraph)')
+ +form-field__checkbox({
+ label: 'Allow non-collocated joins',
+ model: 'paragraph.nonCollocatedJoins',
+ name: '"nonCollocatedJoins" + paragraph.id',
+ tip: 'Non-collocated joins is a special mode that allow to join data across cluster without collocation.<br/>\
+ Nested joins are not supported for now.<br/>\
+ <b>NOTE</b>: In some cases it may consume more heap memory or may take a long time than collocated joins.',
+ tipOpts: { placement: 'top' }
+ })
+
+ .row(ng-if='collocatedJoinsAvailable(paragraph)')
+ +form-field__checkbox({
+ label: 'Collocated Query',
+ model: 'paragraph.collocated',
+ name: '"collocated" + paragraph.id',
+ tip: 'Used For Optimization Purposes Of Queries With GROUP BY Statements.<br/>\
+ <b>NOTE:</b> Whenever Ignite executes a distributed query, it sends sub-queries to individual cluster members.<br/>\
+ If you know in advance that the elements of your query selection are collocated together on the same node\
+ and you group by collocated key (primary or affinity key), then Ignite can make significant performance and\
+ network optimizations by grouping data on remote nodes.',
+ tipOpts: { placement: 'top' }
+ })
+
+ .row(ng-if='enforceJoinOrderAvailable(paragraph)')
+ +form-field__checkbox({
+ label: 'Enforce join order',
+ model: 'paragraph.enforceJoinOrder',
+ name: '"enforceJoinOrder" + paragraph.id',
+ tip: 'Enforce join order of tables in the query.<br/>\
+ If <b>set</b>, then query optimizer will not reorder tables within join.<br/>\
+ <b>NOTE:</b> It is not recommended to enable this property unless you have verified that\
+ indexes are not selected in optimal order.',
+ tipOpts: { placement: 'top' }
+ })
+
+ .row(ng-if='lazyQueryAvailable(paragraph)')
+ +form-field__checkbox({
+ label: 'Lazy result set',
+ model: 'paragraph.lazy',
+ name: '"lazy" + paragraph.id',
+ tip: 'By default Ignite attempts to fetch the whole query result set to memory and send it to the client.<br/>\
+ For small and medium result sets this provides optimal performance and minimize duration of internal database locks, thus increasing concurrency.<br/>\
+ If result set is too big to fit in available memory this could lead to excessive GC pauses and even OutOfMemoryError.<br/>\
+ Use this flag as a hint for Ignite to fetch result set lazily, thus minimizing memory consumption at the cost of moderate performance hit.',
+ tipOpts: { placement: 'top' }
+ })
mixin query-actions
- button.btn.btn-primary(ng-disabled='!queryAvailable(paragraph)' ng-click='execute(paragraph)')
- div
- i.fa.fa-fw.fa-play(ng-hide='paragraph.executionInProgress(false)')
- i.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.executionInProgress(false)')
- span.tipLabelExecute Execute
- button.btn.btn-primary(ng-disabled='!queryAvailable(paragraph)' ng-click='execute(paragraph, true)')
- div
- i.fa.fa-fw.fa-play(ng-hide='paragraph.executionInProgress(true)')
- i.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.executionInProgress(true)')
- span.tipLabelExecute Execute on selected node
-
- a.btn.btn-default(ng-disabled='!queryAvailable(paragraph)' ng-click='explain(paragraph)' data-placement='bottom' bs-tooltip='' data-title='{{queryTooltip(paragraph, "explain query")}}') Explain
+ button.btn-ignite.btn-ignite--primary(ng-disabled='!queryAvailable(paragraph)' ng-click='execute(paragraph)')
+ span.icon-left.fa.fa-fw.fa-play(ng-hide='paragraph.executionInProgress(false)')
+ span.icon-left.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.executionInProgress(false)')
+ | Execute
+
+ button.btn-ignite.btn-ignite--primary(ng-disabled='!queryAvailable(paragraph)' ng-click='execute(paragraph, true)')
+ span.icon-left.fa.fa-fw.fa-play(ng-hide='paragraph.executionInProgress(true)')
+ span.icon-left.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.executionInProgress(true)')
+ | Execute on selected node
+
+ button.btn-ignite.btn-ignite--secondary(ng-disabled='!queryAvailable(paragraph)' ng-click='explain(paragraph)' data-placement='bottom' bs-tooltip='' data-title='{{queryTooltip(paragraph, "explain query")}}')
+ | Explain
mixin table-result-heading-query
.total.row
@@ -243,24 +322,36 @@ mixin paragraph-scan
.col-sm-3
+dropdown-required('Cache:', 'paragraph.cacheName', '"cache"', 'true', 'false', 'Choose cache', 'caches')
.col-sm-3
- +text-enabled('Filter:', 'paragraph.filter', '"filter"', true, false, 'Enter filter')
- label.btn.btn-default.ignite-form-field__btn(ng-click='paragraph.caseSensitive = !paragraph.caseSensitive')
- input(type='checkbox' ng-model='paragraph.caseSensitive')
- span(bs-tooltip data-title='Select this checkbox for case sensitive search') Cs
- label.tipLabel(bs-tooltip data-placement='bottom' data-title='Max number of rows to show in query result as one page') Page size:
- button.btn.btn-default.select-toggle.tipLabel(ng-model='paragraph.pageSize' bs-select bs-options='item for item in pageSizes')
+ +form-field__sensitive({
+ label: 'Filter:',
+ modelFilter: 'paragraph.filter',
+ modelSensitive: 'paragraph.caseSensitive',
+ name: '"filter"',
+ placeholder: 'Enter filter'
+ })
- .col-sm-12.sql-controls
- button.btn.btn-primary(ng-disabled='!scanAvailable(paragraph)' ng-click='scan(paragraph)')
- div
- i.fa.fa-fw.fa-play(ng-hide='paragraph.checkScanInProgress(false)')
- i.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.checkScanInProgress(false)')
- span.tipLabelExecute Scan
+ .col-sm-3
+ +form-field__dropdown({
+ label: 'Rows per page:',
+ model: 'paragraph.pageSize',
+ name: '"pageSize" + paragraph.id',
+ options: 'pageSizesOptions',
+ tip: 'Max number of rows to show in query result as one page',
+ tipOpts: { placement: 'top' }
+ })
- button.btn.btn-primary(ng-disabled='!scanAvailable(paragraph)' ng-click='scan(paragraph, true)')
- i.fa.fa-fw.fa-play(ng-hide='paragraph.checkScanInProgress(true)')
- i.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.checkScanInProgress(true)')
- span.tipLabelExecute Scan on selected node
+ .col-sm-12.sql-controls
+ div
+ button.btn-ignite.btn-ignite--primary(ng-disabled='!scanAvailable(paragraph)' ng-click='scan(paragraph)')
+ span.icon-left.fa.fa-fw.fa-play(ng-hide='paragraph.checkScanInProgress(false)')
+ span.icon-left.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.checkScanInProgress(false)')
+ | Scan
+
+ button.btn-ignite.btn-ignite--primary(ng-disabled='!scanAvailable(paragraph)' ng-click='scan(paragraph, true)')
+ span.icon-left.fa.fa-fw.fa-play(ng-hide='paragraph.checkScanInProgress(true)')
+ span.icon-left.fa.fa-fw.fa-refresh.fa-spin(ng-show='paragraph.checkScanInProgress(true)')
+ | Scan on selected node
+ div
.col-sm-12.sql-result(ng-if='paragraph.queryExecuted() && !paragraph.scanningInProgress' ng-switch='paragraph.resultType()')
.error(ng-switch-when='error') Error: {{paragraph.error.message}}
@@ -295,31 +386,36 @@ mixin paragraph-query
i.fa.fa-database.tipField(title='Click to show cache types metadata dialog' bs-popover data-template-url='{{ $ctrl.cacheMetadataTemplateUrl }}' data-placement='bottom-right' data-trigger='click' data-container='#{{ paragraph.id }}')
.input-tip
input.form-control(type='text' st-search='label' placeholder='Filter caches...')
- table.links
- tbody.scrollable-y(style='max-height: 15em; display: block;')
- tr(ng-repeat='cache in displayedCaches track by cache.name')
- td(style='width: 100%')
- input.labelField(id='cache_{{ [paragraph.id, $index].join("_") }}' type='radio' value='{{cache.name}}' ng-model='paragraph.cacheName')
- label(for='cache_{{ [paragraph.id, $index].join("_") }} ' ng-bind-html='cache.label')
+
+ .queries-notebook-displayed-caches
+ div(ng-repeat='cache in displayedCaches track by cache.name')
+ +form-field__radio({
+ label: '{{ cache.label }}',
+ model: 'paragraph.cacheName',
+ name: '"cache_" + [paragraph.id, $index].join("_")',
+ value: 'cache.name'
+ })
+
.settings-row
.row(ng-if='ddlAvailable(paragraph)')
- label.tipLabel.use-cache(bs-tooltip data-placement='bottom'
- data-title=
- 'Use selected cache as default schema name.<br/>\
+ +form-field__checkbox({
+ label: 'Use selected cache as default schema name',
+ model: 'paragraph.useAsDefaultSchema',
+ name: '"useAsDefaultSchema" + paragraph.id',
+ tip: 'Use selected cache as default schema name.<br/>\
This will allow to execute query on specified cache without specify schema name.<br/>\
- <b>NOTE:</b> In future version of Ignite this feature will be removed.'
- data-trigger='hover')
- input(type='checkbox' ng-model='paragraph.useAsDefaultSchema')
- span Use selected cache as default schema name
+ <b>NOTE:</b> In future version of Ignite this feature will be removed.',
+ tipOpts: { placement: 'top' }
+ })
.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.sql-controls
- +query-actions
+ div
+ +query-actions
- .pull-right
- +query-settings
+ +query-settings
.col-sm-12.sql-result(ng-if='paragraph.queryExecuted()' ng-switch='paragraph.resultType()')
.error(ng-switch-when='error')
label Error: {{paragraph.error.message}}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/template.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/template.tpl.pug b/modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/template.tpl.pug
index 614a6a6..b5c5a7b 100644
--- a/modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/template.tpl.pug
+++ b/modules/web-console/frontend/app/components/page-queries/components/queries-notebooks-list/template.tpl.pug
@@ -27,22 +27,19 @@ page-queries-slot(slot-name="'queriesButtons'" ng-if="!$root.IgniteDemoMode")
.queries-notebooks-list
.panel--ignite
- .panel-heading.ui-grid-settings.ui-grid-ignite__panel
- .panel-title
- div(ng-if="!$root.IgniteDemoMode")
- +ignite-form-field-bsdropdown({
- label: 'Actions',
- model: '$ctrl.action',
- name: 'action',
- disabled: '$ctrl.gridApi.selection.legacyGetSelectedRows().length === 0',
- required: false,
- options: '$ctrl.actionOptions'
- })
-
- .ui-grid-settings--heading
- span Notebooks
-
-
+ header.header-with-selector
+ div
+ span Notebooks
+
+ div(ng-if="!$root.IgniteDemoMode")
+ +ignite-form-field-bsdropdown({
+ label: 'Actions',
+ model: '$ctrl.action',
+ name: 'action',
+ disabled: '$ctrl.gridApi.selection.legacyGetSelectedRows().length === 0',
+ required: false,
+ options: '$ctrl.actionOptions'
+ })
.panel-collapse(ignite-loading='notebooksLoading' ignite-loading-text='Loading notebooks...')
.grid.ui-grid--ignite#queriesNotebooksList(ui-grid='$ctrl.gridOptions' ui-grid-resize-columns ui-grid-selection ui-grid-hovering)
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/page-queries/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/page-queries/style.scss b/modules/web-console/frontend/app/components/page-queries/style.scss
index 8f13c2e..818fb1c 100644
--- a/modules/web-console/frontend/app/components/page-queries/style.scss
+++ b/modules/web-console/frontend/app/components/page-queries/style.scss
@@ -18,3 +18,7 @@
button.select-toggle.btn-chart-column-agg-fx::after {
right: 0;
}
+
+.sql-controls {
+ flex-wrap: wrap;
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/ui-grid/component.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/ui-grid/component.js b/modules/web-console/frontend/app/components/ui-grid/component.js
new file mode 100644
index 0000000..4c8a49f
--- /dev/null
+++ b/modules/web-console/frontend/app/components/ui-grid/component.js
@@ -0,0 +1,38 @@
+/*
+ * 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.
+ */
+
+import './style.scss';
+import template from './template.pug';
+import controller from './controller';
+
+export default {
+ template,
+ controller,
+ bindings: {
+ gridApi: '=?',
+
+ // Input Events.
+ items: '<',
+ columnDefs: '<',
+ categories: '<',
+ oneWaySelection: '<?',
+ rowIdentityKey: '@?',
+
+ // Output events.
+ onSelectionChange: '&?'
+ }
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/ui-grid/controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/ui-grid/controller.js b/modules/web-console/frontend/app/components/ui-grid/controller.js
new file mode 100644
index 0000000..813bacb
--- /dev/null
+++ b/modules/web-console/frontend/app/components/ui-grid/controller.js
@@ -0,0 +1,139 @@
+/*
+ * 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.
+ */
+
+import debounce from 'lodash/debounce';
+import headerTemplate from 'app/primitives/ui-grid-header/index.tpl.pug';
+
+export default class IgniteUiGrid {
+ /** @type */
+ gridApi;
+
+ /** @type */
+ items;
+
+ /** @type */
+ columnDefs;
+
+ /** @type */
+ categories;
+
+ /** @type */
+ onSelectionChange;
+
+ static $inject = ['$scope', '$element', 'gridUtil'];
+
+ /**
+ * @param {ng.IScope} $scope
+ */
+ constructor($scope, $element, gridUtil) {
+ this.$scope = $scope;
+ this.$element = $element;
+ this.gridUtil = gridUtil;
+ this.selectedRows = [];
+
+ this.rowIdentityKey = '_id';
+ }
+
+ $onInit() {
+ this.SCROLLBAR_WIDTH = this.gridUtil.getScrollbarWidth();
+
+ this.grid = {
+ data: this.items,
+ columnDefs: this.columnDefs,
+ categories: this.categories,
+ columnVirtualizationThreshold: 30,
+ rowHeight: 48,
+ headerRowHeight: 70,
+ enableColumnMenus: false,
+ enableFullRowSelection: true,
+ enableFiltering: true,
+ enableRowHashing: false,
+ fastWatch: true,
+ showTreeExpandNoChildren: false,
+ multiSelect: true,
+ selectionRowHeaderWidth: 30,
+ exporterCsvFilename: `${_.camelCase([this.tabName, this.tableTitle])}.csv`,
+ onRegisterApi: (api) => {
+ this.gridApi = api;
+
+ api.core.on.rowsVisibleChanged(this.$scope, () => {
+ this.adjustHeight();
+ });
+
+ if (this.onSelectionChange) {
+ api.selection.on.rowSelectionChanged(this.$scope, (row, e) => {
+ this.onRowsSelectionChange([row], e);
+ });
+
+ api.selection.on.rowSelectionChangedBatch(this.$scope, (rows, e) => {
+ this.onRowsSelectionChange(rows, e);
+ });
+ }
+ }
+ };
+
+ if (this.grid.categories)
+ this.grid.headerTemplate = headerTemplate;
+ }
+
+ $onChanges(changes) {
+ const hasChanged = (binding) =>
+ binding in changes && changes[binding].currentValue !== changes[binding].previousValue;
+
+ if (hasChanged('items') && this.grid) {
+ this.grid.data = changes.items.currentValue;
+ this.gridApi.grid.modifyRows(this.grid.data);
+
+ this.adjustHeight();
+
+ if (this.onSelectionChange)
+ this.applyIncomingSelection(this.selectedRows);
+ }
+ }
+
+ applyIncomingSelection(selected = []) {
+ this.gridApi.selection.clearSelectedRows({ ignore: true });
+
+ const rows = this.grid.data.filter((r) =>
+ selected.map((row) =>
+ row[this.rowIdentityKey]).includes(r[this.rowIdentityKey]));
+
+ rows.forEach((r) => {
+ this.gridApi.selection.selectRow(r, { ignore: true });
+ });
+ }
+
+ onRowsSelectionChange = debounce((rows, e = {}) => {
+ if (e.ignore) return;
+ this.selectedRows = this.gridApi.selection.legacyGetSelectedRows();
+
+ if (this.onSelectionChange)
+ this.onSelectionChange({ $event: this.selectedRows });
+ });
+
+ adjustHeight() {
+ const maxRowsToShow = this.maxRowsToShow || 5;
+ const headerBorder = 1;
+ const visibleRows = this.gridApi.core.getVisibleRows().length;
+ const header = this.grid.headerRowHeight + headerBorder;
+ const optionalScroll = (visibleRows ? this.gridUtil.getScrollbarWidth() : 0);
+ const height = Math.min(visibleRows, maxRowsToShow) * this.grid.rowHeight + header + optionalScroll;
+
+ this.gridApi.grid.element.css('height', height + 'px');
+ this.gridApi.core.handleWindowResize();
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/ui-grid/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/ui-grid/index.js b/modules/web-console/frontend/app/components/ui-grid/index.js
new file mode 100644
index 0000000..9fc9c63
--- /dev/null
+++ b/modules/web-console/frontend/app/components/ui-grid/index.js
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+
+import angular from 'angular';
+import component from './component';
+
+export default angular
+ .module('ignite-console.ui-grid', [])
+ .component('igniteGridTable', component);
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/ui-grid/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/ui-grid/style.scss b/modules/web-console/frontend/app/components/ui-grid/style.scss
new file mode 100644
index 0000000..d426070
--- /dev/null
+++ b/modules/web-console/frontend/app/components/ui-grid/style.scss
@@ -0,0 +1,111 @@
+/*
+ * 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.
+ */
+
+ignite-grid-table {
+ @import 'public/stylesheets/variables';
+
+ .ui-grid.ui-grid--ignite {
+ // Start section row height.
+ .ui-grid-row {
+ height: 48px;
+
+ .ui-grid-cell {
+ height: 100%;
+ }
+ }
+
+ .ui-grid-cell .ui-grid-cell-contents {
+ padding: 14px 20px;
+ }
+
+ // Set force header height.
+ // Fix hide border bottom of pinned column without data.
+ .ui-grid-header-canvas {
+ height: 70px;
+ }
+
+ [role="columnheader"] {
+ display: flex;
+ align-items: center;
+ margin: 11px 0;
+ }
+
+ .ui-grid-header--subcategories [role="columnheader"] {
+ margin: 0;
+ }
+
+ // Fix checkbox position.
+ .ui-grid-header-cell .ui-grid-selection-row-header-buttons {
+ margin-top: 12px;
+ }
+
+ // Removes unwanted box-shadow and border-right from checkboxes column
+ .ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-render-container-left:before {
+ box-shadow: none;
+ }
+ .ui-grid-pinned-container.ui-grid-pinned-container-left .ui-grid-cell:last-child {
+ border-right: none;
+ }
+
+ .ui-grid-pinned-container-left .ui-grid-header--subcategories .ui-grid-header-span.ui-grid-header-cell {
+ box-shadow: none;
+ }
+
+ .ui-grid-header:not(.ui-grid-header--subcategories) .ui-grid-filters[role="columnheader"] {
+ padding-top: 6px;
+ }
+
+ // End section row height.
+ .ui-grid-header-cell:last-child .ui-grid-column-resizer.right {
+ border-right: none;
+ }
+
+ input[type="text"].ui-grid-filter-input {
+ &::placeholder {
+ color: rgba(66, 66, 66, 0.5);
+ font-weight: normal;
+ text-align: left;
+ }
+
+ &:focus {
+ border-color: $ignite-brand-success;
+ box-shadow: none;
+ }
+
+ font-family: Roboto;
+ outline: none;
+ overflow: visible;
+
+ box-sizing: border-box;
+ width: 100%;
+ max-width: initial;
+ height: 29px;
+ padding: 0 10px;
+ margin-right: 0;
+
+ border: solid 1px #c5c5c5;
+ border-radius: 4px;
+ background-color: #ffffff;
+ box-shadow: none;
+
+ color: $text-color;
+ text-align: left;
+ font-weight: normal;
+ line-height: 16px;
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/ui-grid/template.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/ui-grid/template.pug b/modules/web-console/frontend/app/components/ui-grid/template.pug
new file mode 100644
index 0000000..6965a4e
--- /dev/null
+++ b/modules/web-console/frontend/app/components/ui-grid/template.pug
@@ -0,0 +1,34 @@
+//-
+ 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.
+
+div(ng-if='::$ctrl.onSelectionChange')
+ .grid.ui-grid--ignite(
+ ui-grid='$ctrl.grid'
+ ui-grid-resize-columns
+ ui-grid-filters
+ ui-grid-selection
+ ui-grid-exporter
+ ui-grid-pinning
+ )
+
+div(ng-if='::!$ctrl.onSelectionChange')
+ .grid.ui-grid--ignite(
+ ui-grid='$ctrl.grid'
+ ui-grid-resize-columns
+ ui-grid-filters
+ ui-grid-exporter
+ ui-grid-pinning
+ )
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/user-notifications/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/user-notifications/style.scss b/modules/web-console/frontend/app/components/user-notifications/style.scss
index e4fa39e..a1dd94f 100644
--- a/modules/web-console/frontend/app/components/user-notifications/style.scss
+++ b/modules/web-console/frontend/app/components/user-notifications/style.scss
@@ -21,43 +21,4 @@ $disabled-color: #c5c5c5;
#user-notifications-dialog {
min-height: 160px;
-
- > .ignite-form-field {
- display: flex;
- flex-direction: column;
-
- > .ignite-form-field__label {
- color: $gray-light;
- font-size: 12px;
-
- margin-left: 10px;
- margin-bottom: 5px;
- }
-
- > .ignite-form-field__control {
- width: 100%;
-
- .ace_editor {
- border-radius: 4px;
- box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, 0.5);
- border: solid 1px $disabled-color;
-
- margin: 0;
-
- .ace_content {
- padding-left: 2px;
- }
- }
- }
- }
-}
-
-.modal-footer {
- .show-message {
- display: flex;
-
- span {
- margin-left: 5px;
- }
- }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/components/user-notifications/template.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/components/user-notifications/template.tpl.pug b/modules/web-console/frontend/app/components/user-notifications/template.tpl.pug
index a8c0394..10cc6ac 100644
--- a/modules/web-console/frontend/app/components/user-notifications/template.tpl.pug
+++ b/modules/web-console/frontend/app/components/user-notifications/template.tpl.pug
@@ -30,18 +30,18 @@ include /app/helpers/jade/mixins
| Enter the text, which will show for all users of the Web Console about an important event or
| warning about ongoing technical works. It will appear #[b on the yellow bar] in the header.
- .ignite-form-field
- +ignite-form-field__label('Your notification:', 'notification', true)
-
- .ignite-form-field__control
- .input-tip
- div(ignite-ace='{onLoad: $ctrl.onLoad, mode: "xml"}' ng-trim='true' ng-model='$ctrl.message')
+ .form-field__ace.ignite-form-field
+ +form-field__label({ label: 'Your notification:', name: 'notification', required: true})
+ .form-field__control
+ div(ignite-ace='{onLoad: $ctrl.onLoad, mode: "xml"}' ng-trim='true' ng-model='$ctrl.message')
.modal-footer
- .pull-left
- label.show-message
- input(type='checkbox' ng-model='$ctrl.isShown')
- span Show message
-
- button.btn-ignite.btn-ignite--link-success(id='btn-cancel' ng-click='$hide()') Cancel
- button.btn-ignite.btn-ignite--success(id='btn-submit' ng-click='$ctrl.submit()') Submit
+ +form-field__checkbox({
+ label: 'Show message',
+ name: 'showMessages',
+ model: '$ctrl.isShown'
+ })
+
+ div
+ button.btn-ignite.btn-ignite--link-success(id='btn-cancel' ng-click='$hide()') Cancel
+ button.btn-ignite.btn-ignite--success(id='btn-submit' ng-click='$ctrl.submit()') Submit
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form.pug b/modules/web-console/frontend/app/helpers/jade/form.pug
deleted file mode 100644
index 44eaed9..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form.pug
+++ /dev/null
@@ -1,26 +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.
-
-include ./form/form-field-feedback
-include ./form/form-field-label
-include ./form/form-field-text
-include ./form/form-field-password
-include ./form/form-field-dropdown
-include ./form/form-field-datalist
-include ./form/form-field-checkbox
-include ./form/form-field-number
-include ./form/form-field-up
-include ./form/form-field-down
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-checkbox.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-checkbox.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-checkbox.pug
deleted file mode 100644
index a8236a9..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-checkbox.pug
+++ /dev/null
@@ -1,44 +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.
-
-mixin form-field-checkbox(label, model, name, disabled, required, tip)
- label.form-field-checkbox.ignite-form-field
- .ignite-form-field__control
- input(
- id=`{{ ${name} }}Input`
- name=`{{ ${name} }}`
- type='checkbox'
-
- ng-model=model
- ng-required=required && `${required}`
- ng-disabled=disabled && `${disabled}`
- expose-ignite-form-field-control='$input'
- )&attributes(attributes ? attributes.attributes ? attributes.attributes : attributes : {})
- span #{label}
- +tooltip(tip, tipOpts, 'tipLabel')
- .ignite-form-field__errors(
- ng-messages=`$input.$error`
- ng-show=`($input.$dirty || $input.$touched || $input.$submitted) && $input.$invalid`
- )
- if block
- block
- if required
- +form-field-feedback(name, 'required', `${errLbl} could not be empty!`)
-
-mixin sane-form-field-checkbox({label, model, name, disabled, required, tip})
- +form-field-checkbox(label, model, name, disabled = false, required = false, tip)&attributes(attributes)
- if block
- block
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-datalist.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-datalist.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-datalist.pug
deleted file mode 100644
index 888634b..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-datalist.pug
+++ /dev/null
@@ -1,52 +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.
-
-mixin form-field-datalist(label, model, name, disabled, required, placeholder, options, tip)
- -var errLbl = label.substring(0, label.length - 1)
-
- mixin form-field-input()
- input.form-control(
- id=`{{ ${name} }}Input`
- name=`{{ ${name} }}`
- placeholder=placeholder
-
- ng-model=model
-
- ng-required=required && `${required}`
- ng-disabled=disabled && `${disabled}` || `!${options}.length`
-
- bs-typeahead
- bs-options=`item for item in ${options}`
- container='body'
- data-min-length='1'
- ignite-retain-selection
- expose-ignite-form-field-control='$input'
- )&attributes(attributes.attributes)
-
- .ignite-form-field
- +ignite-form-field__label(label, name, required, disabled)
- +tooltip(tip, tipOpts)
- .ignite-form-field__control
- .input-tip
- +form-field-input(attributes=attributes)
- .ignite-form-field__errors(
- ng-messages=`$input.$error`
- ng-if=`($input.$dirty || $input.$touched || $input.$submitted) && $input.$invalid`
- )
- if block
- block
-
- +form-field-feedback(name, 'required', `${errLbl} could not be empty!`)
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-down.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-down.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-down.pug
deleted file mode 100644
index 1ced54c..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-down.pug
+++ /dev/null
@@ -1,18 +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.
-
-mixin ignite-form-field-down()
- i.tipField.fa.fa-arrow-down(ignite-form-field-down ng-click='vm.down()')&attributes(attributes)
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.pug
deleted file mode 100644
index c6579e3..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.pug
+++ /dev/null
@@ -1,60 +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.
-
-mixin ignite-form-field-dropdown(label, model, name, disabled, required, multiple, placeholder, placeholderEmpty, options, tip)
- mixin form-field-input()
- -var errLbl = label.substring(0, label.length - 1)
-
- button.select-toggle.form-control(
- type='button'
- id=`{{ ${name} }}Input`
- name=`{{ ${name} }}`
-
- data-placeholder=placeholderEmpty ? `{{ ${options}.length > 0 ? '${placeholder}' : '${placeholderEmpty}' }}` : placeholder
-
- ng-model=model
- ng-disabled=disabled && `${disabled}`
- ng-required=required && `${required}`
-
- bs-select
- bs-options=`item.value as item.label for item in ${options}`
- expose-ignite-form-field-control='$input'
-
- data-multiple=multiple ? '1' : false
-
- tabindex='0'
- )&attributes(attributes.attributes)
-
- .ignite-form-field.ignite-form-field-dropdown
- +ignite-form-field__label(label, name, required, disabled)
- +tooltip(tip, tipOpts)
- .ignite-form-field__control
- .input-tip
- +form-field-input(attributes=attributes)
- .ignite-form-field__errors(
- ng-messages=`$input.$error`
- ng-show=`($input.$dirty || $input.$touched || $input.$submitted) && $input.$invalid`
- )
- if block
- block
-
- if required
- +form-field-feedback(name, 'required', multiple ? 'At least one option should be selected' : 'An option should be selected')
-
-mixin sane-ignite-form-field-dropdown({label, model, name, disabled = false, required = false, multiple = false, placeholder, placeholderEmpty, options, tip})
- +ignite-form-field-dropdown(label, model, name, disabled, required, multiple, placeholder, placeholderEmpty, options, tip)&attributes(attributes)
- if block
- block
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-feedback.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-feedback.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-feedback.pug
deleted file mode 100644
index dcdcf0e..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-feedback.pug
+++ /dev/null
@@ -1,18 +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.
-
-mixin form-field-feedback(name, error, message)
- div(ng-message=error) #{message}
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-label.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-label.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-label.pug
deleted file mode 100644
index 2edd115..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-label.pug
+++ /dev/null
@@ -1,25 +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.
-
-mixin ignite-form-field__label(label, name, required, disabled)
- label.ignite-form-field__label(
- id=`{{ ${name} }}Label`
- for=`{{ ${name} }}Input`
- ng-class=disabled && `{'ignite-form-field__label-disabled': ${disabled}}`
- )
- span(class=`{{ ${required} ? 'required' : '' }}`) !{label}
- if block
- block
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-number.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-number.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-number.pug
deleted file mode 100644
index 75f2a20..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-number.pug
+++ /dev/null
@@ -1,59 +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.
-
-mixin ignite-form-field-number(label, model, name, disabled, required, placeholder, min, max, step, tip)
- -var errLbl = label.substring(0, label.length - 1)
-
- mixin form-field-input()
- input.form-control(
- id=`{{ ${name} }}Input`
- name=`{{ ${name} }}`
- placeholder=placeholder
- type='number'
-
- min=min ? min : '0'
- max=max ? max : '{{ Number.MAX_VALUE }}'
- step=step ? step : '1'
-
- ng-model=model
-
- ng-required=required && `${required}`
- ng-disabled=disabled && `${disabled}`
- expose-ignite-form-field-control='$input'
- )&attributes(attributes.attributes)
-
- .ignite-form-field
- +ignite-form-field__label(label, name, required, disabled)
- +tooltip(tip, tipOpts)
- .ignite-form-field__control
- .input-tip
- +form-field-input(attributes=attributes)
- .ignite-form-field__errors(
- ng-messages=`$input.$error`
- ng-show=`($input.$dirty || $input.$touched || $input.$submitted) && $input.$invalid`
- )
- if block
- block
- +form-field-feedback(name, 'required', `${errLbl} could not be empty`)
- +form-field-feedback(name, 'min', `${errLbl} is less than allowable minimum: ${min || 0}`)
- +form-field-feedback(name, 'max', `${errLbl} is more than allowable maximum: ${max}`)
- +form-field-feedback(name, 'number', `Only numbers are allowed`)
- +form-field-feedback(name, 'step', `${errLbl} step should be ${step || 1}`)
-
-mixin sane-ignite-form-field-number({label, model, name, disabled = 'false', required = false, placeholder, min = '0', max, step = '1', tip})
- +ignite-form-field-number(label, model, name, disabled, required, placeholder, min, max, step, tip)&attributes(attributes)
- if block
- block
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-password.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-password.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-password.pug
deleted file mode 100644
index 3e35974..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-password.pug
+++ /dev/null
@@ -1,47 +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.
-
-mixin ignite-form-field-password-input(name, model, disabled, required, placeholder)
- input.form-control(
- id=`{{ ${name} }}Input`
- name=`{{ ${name} }}`
- placeholder=placeholder
- type='password'
-
- ng-model=model
-
- ng-required=required && `${required}`
- ng-disabled=disabled && `${disabled}`
- expose-ignite-form-field-control='$input'
- )&attributes(attributes ? attributes.attributes ? attributes.attributes : attributes : {})
-
-mixin ignite-form-field-password(label, model, name, disabled, required, placeholder, tip)
- -var errLbl = label.substring(0, label.length - 1)
-
- .ignite-form-field
- +ignite-form-field__label(label, name, required, disabled)
- +tooltip(tip, tipOpts)
- .ignite-form-field__control
- .input-tip
- +ignite-form-field-password-input(name, model, disabled, required, placeholder)(attributes=attributes)
- .ignite-form-field__errors(
- ng-messages=`$input.$error`
- ng-if=`!$input.$pristine && $input.$invalid`
- )
- if block
- block
-
- +form-field-feedback(name, 'required', `${errLbl} could not be empty!`)
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-text.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-text.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-text.pug
deleted file mode 100644
index 3d28e17..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-text.pug
+++ /dev/null
@@ -1,53 +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.
-
-mixin ignite-form-field-input(name, model, disabled, required, placeholder)
- input.form-control(
- id=`{{ ${name} }}Input`
- name=`{{ ${name} }}`
- placeholder=placeholder
-
- ng-model=model
-
- ng-required=required && `${required}`
- ng-disabled=disabled && `${disabled}`
- expose-ignite-form-field-control='$input'
-
- )&attributes(attributes ? attributes.attributes ? attributes.attributes : attributes : {})
-
-mixin ignite-form-field-text(lbl, model, name, disabled, required, placeholder, tip)
- -let errLbl = lbl[lbl.length - 1] === ':' ? lbl.substring(0, lbl.length - 1) : lbl
-
- .ignite-form-field
- +ignite-form-field__label(lbl, name, required, disabled)
- +tooltip(tip, tipOpts)
- .ignite-form-field__control
- .input-tip
- +ignite-form-field-input(name, model, disabled, required, placeholder)(attributes=attributes)
- .ignite-form-field__errors(
- ng-messages=`$input.$error`
- ng-show=`($input.$dirty || $input.$touched || $input.$submitted) && $input.$invalid`
- )
- if block
- block
-
- if required
- +form-field-feedback(name, 'required', `${errLbl} could not be empty!`)
-
-mixin sane-ignite-form-field-text({label, model, name, disabled, required, placeholder, tip})
- +ignite-form-field-text(label, model, name, disabled, required, placeholder, tip)&attributes(attributes)
- if block
- block
http://git-wip-us.apache.org/repos/asf/ignite/blob/fb26835f/modules/web-console/frontend/app/helpers/jade/form/form-field-up.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-up.pug b/modules/web-console/frontend/app/helpers/jade/form/form-field-up.pug
deleted file mode 100644
index 3522fb5..0000000
--- a/modules/web-console/frontend/app/helpers/jade/form/form-field-up.pug
+++ /dev/null
@@ -1,18 +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.
-
-mixin ignite-form-field-up()
- i.tipField.fa.fa-arrow-up.ng-scope(ignite-form-field-up ng-click='vm.up()')&attributes(attributes)