You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by an...@apache.org on 2015/07/30 11:36:59 UTC
[15/28] incubator-ignite git commit: # ignite-843 Rename
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/includes/controls.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/controls.jade b/modules/control-center-web/src/main/js/views/includes/controls.jade
new file mode 100644
index 0000000..e9fe71b
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/includes/controls.jade
@@ -0,0 +1,350 @@
+//-
+ 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 block-callout(titleWorkflow, contentWorkflow, whatsNextWorkflow, whatsNextContent)
+ .block-callout-parent.block-callout-border.margin-bottom-dflt
+ .block-callout
+ i.fa.fa-check-square
+ label #{titleWorkflow}
+ p(ng-bind-html=contentWorkflow)
+ .block-callout
+ i.fa.fa-check-square
+ label #{whatsNextWorkflow}
+ p(ng-bind-html=whatsNextContent)
+
+
+mixin tipField(lines)
+ i.tipField.fa.fa-question-circle(ng-if=lines bs-tooltip='joinTip(#{lines})' type='button')
+ i.tipField.fa.fa-question-circle.blank(ng-if='!#{lines}')
+
+mixin tipLabel(lines)
+ i.tipLabel.fa.fa-question-circle(ng-if=lines bs-tooltip='joinTip(#{lines})' type='button')
+ i.tipLabel.fa.fa-question-circle.blank(ng-if='!#{lines}')
+
+mixin ico-exclamation(mdl, err, msg)
+ i.fa.fa-exclamation-triangle.form-control-feedback(ng-show='inputForm["#{mdl}"].$error.#{err}' bs-tooltip data-title='#{msg}' type='button')
+
+mixin btn-save(show, click)
+ i.tipField.fa.fa-floppy-o(ng-show=show ng-click=click bs-tooltip data-title='Save item')
+
+mixin btn-add(click, tip, focusId)
+ i.tipField.fa.fa-plus(ng-click=click bs-tooltip=tip event-focus='click' event-focus-id=focusId)
+
+mixin btn-remove(click, tip)
+ i.tipField.fa.fa-remove(ng-click=click bs-tooltip=tip data-trigger='hover')
+
+mixin btn-up(show, click)
+ i.tipField.fa.fa-arrow-up(ng-show=show ng-click=click bs-tooltip data-title='Move item up')
+
+mixin btn-down(show, click)
+ i.tipField.fa.fa-arrow-down(ng-show=show ng-click=click bs-tooltip data-title='Move item down')
+
+mixin table-pair-edit(keyModel, valModel, keyPlaceholder, valPlaceholder, keyJavaBuildInTypes, valueJavaBuildInTypes, focusId)
+ .col-sm-6(style='float: right')
+ if valueJavaBuildInTypes
+ input.form-control(type='text' ng-model=valModel placeholder=valPlaceholder bs-typeahead data-min-length='1' bs-options='javaType for javaType in javaBuildInTypes' ng-escape='tableReset()')
+ else
+ input.form-control(type='text' ng-model=valModel placeholder=valPlaceholder ng-escape='tableReset()')
+ label.fieldSep /
+ .input-tip
+ if keyJavaBuildInTypes
+ input.form-control(id=focusId type='text' ng-model=keyModel placeholder=keyPlaceholder bs-typeahead data-min-length='1' bs-options='javaType for javaType in javaBuildInTypes' ng-escape='tableReset()')
+ else
+ input.form-control(id=focusId type='text' ng-model=keyModel placeholder=keyPlaceholder ng-escape='tableReset()')
+
+mixin table-pair(header, tblMdl, keyFld, valFld, keyPlaceholder, valPlaceholder, keyJavaBuildInTypes, valueJavaBuildInTypes)
+ .col-sm-6
+ label.table-header #{header}:
+ +tipLabel('field.tip')
+ +btn-add('tableNewItem(field)', 'field.addTip', '{{::field.focusNewItemId}}')
+ .table-details(ng-show='(#{tblMdl} && #{tblMdl}.length > 0) || tableNewItemActive(field)')
+ table.links-edit.col-sm-12(st-table=tblMdl)
+ tbody
+ tr(ng-repeat='item in #{tblMdl}')
+ td.col-sm-12
+ div(ng-show='!tableEditing(field, $index)')
+ a.labelFormField(event-focus='click' event-focus-id='{{::field.focusCurItemId}}' ng-click='curPair = tableStartEdit(backupItem, field, $index); curKey = curPair.#{keyFld}; curValue = curPair.#{valFld}') {{$index + 1}}) {{item.#{keyFld}}} / {{item.#{valFld}}}
+ +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
+ div(ng-if='tableEditing(field, $index)')
+ label.labelField {{$index + 1}})
+ +btn-save('tablePairSaveVisible(curKey, curValue)', 'tablePairSave(tablePairValid, backupItem, field, curKey, curValue, $index)')
+ +table-pair-edit('curKey', 'curValue', keyPlaceholder, valPlaceholder, keyJavaBuildInTypes, valueJavaBuildInTypes, '{{::field.focusCurItemId}}')
+ tfoot(ng-show='tableNewItemActive(field)')
+ tr
+ td.col-sm-12
+ +btn-save('tablePairSaveVisible(newKey, newValue)', 'tablePairSave(tablePairValid, backupItem, field, newKey, newValue, -1)')
+ +table-pair-edit('newKey', 'newValue', keyPlaceholder, valPlaceholder, keyJavaBuildInTypes, valueJavaBuildInTypes, '{{::field.focusNewItemId}}')
+
+mixin details-row
+ - var lblDetailClasses = ['col-sm-4', 'details-label']
+
+ - var detailMdl = 'getModel(backupItem, detail)[detail.model]';
+ - var detailCommon = {'ng-model': detailMdl, 'ng-required': 'detail.required'};
+
+ - var customValidators = {'ng-attr-ipaddress': '{{detail.ipaddress}}'}
+
+ div(ng-switch='detail.type')
+ div(ng-switch-when='label')
+ label {{::detail.label}}
+ div.checkbox(ng-switch-when='check')
+ label
+ input(type='checkbox')&attributes(detailCommon)
+ |{{::detail.label}}
+ +tipLabel('detail.tip')
+ div(ng-switch-when='text')
+ label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
+ .col-sm-8
+ +tipField('detail.tip')
+ .input-tip
+ input.form-control(type='text' placeholder='{{::detail.placeholder}}')&attributes(detailCommon)
+ div(ng-switch-when='number' )
+ label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
+ .col-sm-8
+ +tipField('detail.tip')
+ .input-tip
+ input.form-control(name='{{detail.model}}' type='number' placeholder='{{::detail.placeholder}}' min='{{detail.min ? detail.min : 0}}' max='{{detail.max ? detail.max : Number.MAX_VALUE}}')&attributes(detailCommon)
+ +ico-exclamation('{{detail.model}}', 'min', 'Value is less than allowable minimum.')
+ +ico-exclamation('{{detail.model}}', 'max', 'Value is more than allowable maximum.')
+ +ico-exclamation('{{detail.model}}', 'number', 'Invalid value. Only numbers allowed.')
+ div(ng-switch-when='dropdown')
+ label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
+ .col-sm-8
+ +tipField('detail.tip')
+ .input-tip
+ button.form-control(bs-select data-placeholder='{{::detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}')&attributes(detailCommon)
+ div(ng-switch-when='dropdown-multiple')
+ label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
+ .col-sm-8
+ button.form-control(bs-select data-multiple='1' data-placeholder='{{::detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}')&attributes(detailCommon)
+ +tipField('detail.tip')
+ div(ng-switch-when='table-simple')&attributes(detailCommon)
+ div(ng-if='detail.label')
+ label.table-header {{::detail.label}}:
+ +tipLabel('detail.tableTip')
+ table.col-sm-12.links-edit-details(st-table='#{detailMdl}')
+ tbody
+ tr(ng-repeat='item in #{detailMdl} track by $index')
+ td
+ div(ng-show='!tableEditing(detail, $index)')
+ a.labelFormField(event-focus='click' event-focus-id='{{::detail.focusCurItemId}}' ng-click='curValue = tableStartEdit(backupItem, detail, $index)') {{$index + 1}}) {{item}}
+ +btn-remove('tableRemove(backupItem, detail, $index)', 'detail.removeTip')
+ +btn-down('detail.reordering && tableSimpleDownVisible(backupItem, detail, $index)', 'tableSimpleDown(backupItem, detail, $index)')
+ +btn-up('detail.reordering && $index > 0', 'tableSimpleUp(backupItem, detail, $index)')
+ div(ng-if='tableEditing(detail, $index)')
+ label.labelField {{$index + 1}})
+ +btn-save('tableSimpleSaveVisible(curValue)', 'tableSimpleSave(tableSimpleValid, backupItem, detail, curValue, $index)')
+ .input-tip.form-group.has-feedback
+ input.form-control(id='{{::detail.focusCurItemId}}' name='{{detail.model}}.edit' type='text' ng-model='curValue' placeholder='{{::detail.placeholder}}' ng-escape='tableReset()')&attributes(customValidators)
+ +ico-exclamation('{{detail.model}}.edit', 'ipaddress', 'Invalid address, see help for format description.')
+ button.btn.btn-primary.fieldButton(ng-disabled='!newValue' ng-click='tableSimpleSave(tableSimpleValid, backupItem, detail, newValue, -1)') Add
+ +tipField('detail.tip')
+ .input-tip.form-group.has-feedback
+ input.form-control(name='{{detail.model}}' type='text' ng-model='newValue' ng-focus='tableNewItem(detail)' placeholder='{{::detail.placeholder}}')&attributes(customValidators)
+ +ico-exclamation('{{detail.model}}', 'ipaddress', 'Invalid address, see help for format description.')
+
+mixin table-db-field-edit(databaseName, databaseType, javaName, javaType)
+ div(style='width: 22%; float: right')
+ button.form-control(ng-model=javaType bs-select data-placeholder='Java type' bs-options='item.value as item.label for item in {{javaTypes}}')
+ label.fieldSep /
+ div(style='width: 20%; float: right')
+ input.form-control(type='text' ng-model=javaName placeholder='Java name' ng-escape='tableReset()')
+ label.fieldSep /
+ div(style='width: 22%; float: right')
+ button.form-control(ng-model=databaseType bs-select data-placeholder='JDBC type' bs-options='item.value as item.label for item in {{jdbcTypes}}')
+ label.fieldSep /
+ .input-tip
+ input.form-control(type='text' ng-model=databaseName placeholder='DB name' ng-escape='tableReset()')
+
+mixin table-group-item-edit(fieldName, className, direction, focusId)
+ div(style='width: 15%; float: right')
+ button.form-control(ng-model=direction bs-select data-placeholder='Sort' bs-options='item.value as item.label for item in {{sortDirections}}')
+ label.fieldSep /
+ div(style='width: 38%; float: right')
+ input.form-control(type='text' ng-model=className placeholder='Class name' bs-typeahead data-min-length='1' bs-options='javaType for javaType in javaBuildInTypes' ng-escape='tableReset()')
+ label.fieldSep /
+ .input-tip
+ input.form-control(id=focusId type='text' ng-model=fieldName placeholder='Field name' ng-escape='tableReset()')
+
+mixin form-row
+ +form-row-custom(['col-sm-2'], ['col-sm-4'])
+
+mixin form-row-custom(lblClasses, fieldClasses)
+ - var fieldMdl = 'getModel(backupItem, field)[field.model]';
+ - var fieldCommon = {'ng-model': fieldMdl, 'ng-required': 'field.required || required(field)'};
+ - var fieldRequiredClass = '{true: "required"}[field.required || required(field)]'
+ - var fieldHide = '{{field.hide}}'
+
+ div(ng-switch='field.type')
+ div.col-sm-6(ng-switch-when='label')
+ label {{::field.label}}
+ div.checkbox.col-sm-6(ng-switch-when='check' ng-hide=fieldHide)
+ label
+ input(type='checkbox')&attributes(fieldCommon)
+ | {{::field.label}}
+ +tipLabel('field.tip')
+ div(ng-switch-when='text' ng-hide=fieldHide)
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ input.form-control(id='{{::field.id}}' type='text' placeholder='{{::field.placeholder}}')&attributes(fieldCommon)
+ div(ng-switch-when='withJavaBuildInTypes' ng-hide=fieldHide)
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ input.form-control(type='text' placeholder='{{::field.placeholder}}' bs-typeahead data-min-length='1' bs-options='javaType for javaType in javaBuildInTypes')&attributes(fieldCommon)
+ div(ng-switch-when='password' ng-hide=fieldHide)
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ input.form-control(type='password' placeholder='{{::field.placeholder}}')&attributes(fieldCommon)
+ div(ng-switch-when='number' ng-hide=fieldHide)
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ input.form-control(name='{{field.model}}' type='number' placeholder='{{::field.placeholder}}' min='{{field.min ? field.min : 0}}' max='{{field.max ? field.max : Number.MAX_VALUE}}')&attributes(fieldCommon)
+ +ico-exclamation('{{field.model}}', 'min', 'Value is less than allowable minimum.')
+ +ico-exclamation('{{field.model}}', 'max', 'Value is more than allowable maximum.')
+ +ico-exclamation('{{field.model}}', 'number', 'Invalid value. Only numbers allowed.')
+ div(ng-switch-when='dropdown' ng-hide=fieldHide)
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ button.form-control(bs-select data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
+ div(ng-switch-when='dropdown-multiple' ng-hide=fieldHide)
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ button.form-control(bs-select ng-disabled='{{field.items}}.length == 0' data-multiple='1' data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
+ a.customize(ng-show='field.addLink' ng-href='{{field.addLink.ref}}') {{field.addLink.label}}
+ div(ng-switch-when='dropdown-details' ng-hide=fieldHide)
+ - var expanded = 'field.details[' + fieldMdl + '].expanded'
+
+ label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
+ div(class=fieldClasses)
+ +tipField('field.tip')
+ .input-tip
+ button.form-control(bs-select data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}')&attributes(fieldCommon)
+ a.customize(ng-show='#{fieldMdl} && field.details[#{fieldMdl}].fields' ng-click='#{expanded} = !#{expanded}') {{#{expanded} ? "Hide settings" : "Show settings"}}
+ .col-sm-6.panel-details(ng-show='#{expanded} && #{fieldMdl}')
+ .details-row(ng-repeat='detail in field.details[#{fieldMdl}].fields')
+ +details-row
+ div(ng-switch-when='table-simple' ng-hide=fieldHide)&attributes(fieldCommon)
+ .col-sm-6
+ label.table-header {{::field.label}}:
+ +tipLabel('field.tableTip')
+ +btn-add('tableNewItem(field)', 'field.addTip', '{{::field.focusNewItemId}}')
+ .col-sm-12(ng-show='(#{fieldMdl} && #{fieldMdl}.length > 0) || tableNewItemActive(field)')
+ .col-sm-6
+ .table-details
+ table.links-edit.col-sm-12(st-table='#{fieldMdl}')
+ tbody
+ tr(ng-repeat='item in #{fieldMdl} track by $index')
+ td.col-sm-12
+ div(ng-show='!tableEditing(field, $index)')
+ a.labelFormField(event-focus='click' event-focus-id='{{::field.focusCurItemId}}' ng-click='curValue = tableStartEdit(backupItem, field, $index)') {{$index + 1}}) {{item | compact}}
+ +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
+ +btn-down('field.reordering && tableSimpleDownVisible(backupItem, field, $index)', 'tableSimpleDown(backupItem, field, $index)')
+ +btn-up('field.reordering && $index > 0', 'tableSimpleUp(backupItem, field, $index)')
+ div(ng-if='tableEditing(field, $index)')
+ label.labelField {{$index + 1}})
+ +btn-save('tableSimpleSaveVisible(curValue)', 'tableSimpleSave(tableSimpleValid, backupItem, field, curValue, $index)')
+ .input-tip
+ input.form-control(id='{{::field.focusCurItemId}}' type='text' ng-model='curValue' placeholder='{{::field.placeholder}}' ng-enter='tableSimpleSaveVisible(curValue) && tableSimpleSave(tableSimpleValid, backupItem, field, curValue, $index)' ng-escape='tableReset()')
+ tfoot(ng-show='tableNewItemActive(field)')
+ tr
+ td.col-sm-12
+ +btn-save('tableSimpleSaveVisible(newValue)', 'tableSimpleSave(tableSimpleValid, backupItem, field, newValue, -1)')
+ .input-tip
+ input.form-control(id='{{::field.focusNewItemId}}' type='text' ng-model='newValue' placeholder='{{::field.placeholder}}' ng-enter='tableSimpleSaveVisible(newValue) && tableSimpleSave(tableSimpleValid, backupItem, field, newValue, -1)' ng-escape='tableReset()')
+ div(ng-switch-when='indexedTypes')
+ +table-pair('Index key-value type pairs', fieldMdl, 'keyClass', 'valueClass', 'Key class full name', 'Value class full name', true, false)
+ div(ng-switch-when='queryFields' ng-hide=fieldHide)
+ +table-pair('{{::field.label}}', fieldMdl, 'name', 'className', 'Field name', 'Field class full name', false, true)
+ div(ng-switch-when='dbFields' ng-hide=fieldHide)
+ .col-sm-6
+ label.table-header {{::field.label}}:
+ +tipLabel('field.tip')
+ +btn-add('tableNewItem(field)', 'field.addTip', 'field.focusNewItemId')
+ .col-sm-12(ng-show='(#{fieldMdl} && #{fieldMdl}.length > 0) || tableNewItemActive(field)')
+ .col-sm-6
+ .table-details
+ table.links-edit.col-sm-12(st-table=fieldMdl)
+ tbody
+ tr(ng-repeat='item in #{fieldMdl}')
+ td.col-sm-12
+ div(ng-show='!tableEditing(field, $index)')
+ a.labelFormField(ng-click='curField = tableStartEdit(backupItem, field, $index); curDatabaseName = curField.databaseName; curDatabaseType = curField.databaseType; curJavaName = curField.javaName; curJavaType = curField.javaType') {{$index + 1}}) {{item.databaseName}} / {{item.databaseType}} / {{item.javaName}} / {{item.javaType}}
+ +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
+ div(ng-if='tableEditing(field, $index)')
+ label.labelField {{$index + 1}})
+ +btn-save('tableDbFieldSaveVisible(curDatabaseName, curDatabaseType, curJavaName, curJavaType)', 'tableDbFieldSave(field, curDatabaseName, curDatabaseType, curJavaName, curJavaType, $index)')
+ +table-db-field-edit('curDatabaseName', 'curDatabaseType', 'curJavaName', 'curJavaType')
+ tfoot(ng-show='tableNewItemActive(field)')
+ tr
+ td.col-sm-12
+ +btn-save('tableDbFieldSaveVisible(newDatabaseName, newDatabaseType, newJavaName, newJavaType)', 'tableDbFieldSave(field, newDatabaseName, newDatabaseType, newJavaName, newJavaType, -1)')
+ +table-db-field-edit('newDatabaseName', 'newDatabaseType', 'newJavaName', 'newJavaType')
+ div(ng-switch-when='queryGroups' ng-hide=fieldHide)
+ .col-sm-6
+ label.table-header {{::field.label}}:
+ +tipLabel('field.tip')
+ +btn-add('tableNewItem(field)', 'field.addTip', 'newGroupId')
+ .col-sm-12(ng-show='(#{fieldMdl} && #{fieldMdl}.length > 0) || tableNewItemActive(field)')
+ .col-sm-6
+ .table-details
+ table.links-edit.col-sm-12(st-table=fieldMdl ng-init='newDirection = false')
+ tbody
+ tr(ng-repeat='group in #{fieldMdl}')
+ td.col-sm-12
+ div
+ .col-sm-12(ng-show='!tableEditing(field, $index)')
+ a.labelFormField(event-focus='click' event-focus-id='curGroupId' ng-click='curGroup = tableStartEdit(backupItem, field, $index); curGroupName = curGroup.name; curFields = curGroup.fields') {{$index + 1}}) {{group.name}}
+ +btn-remove('tableRemove(backupItem, field, $index)', 'field.removeTip')
+ +btn-add('tableGroupNewItem($index)', 'field.addItemTip', 'newGroupItemId')
+ div(ng-if='tableEditing(field, $index)')
+ label.labelField {{$index + 1}})
+ +btn-save('tableGroupSaveVisible(curGroupName)', 'tableGroupSave(curGroupName, $index)')
+ .input-tip
+ input#curGroupId.form-control(type='text' ng-model='curGroupName' placeholder='Index name' ng-enter='tableGroupSaveVisible(curGroupName) && tableGroupSave(curGroupName, $index)' ng-escape='tableReset()')
+ div
+ table.links-edit.col-sm-12(st-table='group.fields' ng-init='groupIndex = $index')
+ tbody
+ tr(ng-repeat='groupItem in group.fields')
+ td
+ div(ng-show='!tableGroupItemEditing(groupIndex, $index)')
+ a.labelFormField(event-focus='click' event-focus-id='curGroupItemId' ng-click='curGroupItem = tableGroupItemStartEdit(groupIndex, $index); curFieldName = curGroupItem.name; curClassName = curGroupItem.className; curDirection = curGroupItem.direction') {{$index + 1}}) {{groupItem.name}} / {{groupItem.className}} / {{groupItem.direction ? "DESC" : "ASC"}}
+ +btn-remove('tableRemoveGroupItem(group, $index)', 'field.removeItemTip')
+ div(ng-if='tableGroupItemEditing(groupIndex, $index)')
+ label.labelField {{$index + 1}})
+ +btn-save('tableGroupItemSaveVisible(curFieldName, curClassName)', 'tableGroupItemSave(curFieldName, curClassName, curDirection, groupIndex, $index)')
+ +table-group-item-edit('curFieldName', 'curClassName', 'curDirection', 'curGroupItemId')
+ tfoot(ng-if='tableGroupNewItemActive(groupIndex)')
+ tr.col-sm-12(style='padding-left: 18px')
+ td
+ +btn-save('tableGroupItemSaveVisible(newFieldName, newClassName)', 'tableGroupItemSave(newFieldName, newClassName, newDirection, groupIndex, -1)')
+ +table-group-item-edit('newFieldName', 'newClassName', 'newDirection', 'newGroupItemId')
+ tfoot(ng-show='tableNewItemActive(field)')
+ tr
+ td.col-sm-12
+ +btn-save('tableGroupSaveVisible(newGroupName)', 'tableGroupSave(newGroupName, -1)')
+ .input-tip
+ input#newGroupId.form-control(type='text' ng-model='newGroupName' placeholder='Group name' ng-enter='tableGroupSaveVisible(newGroupName) && tableGroupSave(newGroupName, -1)' ng-escape='tableReset()')
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/includes/footer.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/footer.jade b/modules/control-center-web/src/main/js/views/includes/footer.jade
new file mode 100644
index 0000000..d8ff5d7
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/includes/footer.jade
@@ -0,0 +1,22 @@
+//-
+ 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.
+
+.container.container-footer
+ footer
+ center
+ p Apache Ignite Control Center, version 1.0.0
+ p © 2015 The Apache Software Foundation.
+ p Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are trademarks of The Apache Software Foundation.
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/includes/header.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/includes/header.jade b/modules/control-center-web/src/main/js/views/includes/header.jade
new file mode 100644
index 0000000..bfd5275
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/includes/header.jade
@@ -0,0 +1,39 @@
+//-
+ 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 header-item(active, ref, txt)
+ li
+ a(ng-class='{active: isActive("#{active}")}' href='#{ref}') #{txt}
+
+header.header(id='header')
+ .viewedUser(ng-show='becomeUsed') Currently assuming "
+ strong {{user.username}}
+ | ",
+ a(href='/admin/become') revert to your identity.
+ .container
+ h1.navbar-brand
+ a(href='/') Apache Ignite Web Configurator
+ .navbar-collapse.collapse(ng-controller='auth')
+ ul.nav.navbar-nav(ng-controller='activeLink' ng-show='user')
+ +header-item('/configuration', '/configuration/clusters', 'Configuration')
+ //+header-item('/monitoring', '/monitoring', 'Monitoring')
+ +header-item('/sql', '/sql', 'SQL')
+ //+header-item('/deploy', '/deploy', 'Deploy')
+ ul.nav.navbar-nav.pull-right
+ li(ng-if='user')
+ a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='userDropdown' data-placement='bottom-right') {{user.username}}
+ span.caret
+ li.nav-login(ng-if='!user')
+ a(ng-click='login()' href='#') Log In
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/index.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/index.jade b/modules/control-center-web/src/main/js/views/index.jade
new file mode 100644
index 0000000..999c4f8
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/index.jade
@@ -0,0 +1,30 @@
+//-
+ 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.
+
+extends templates/layout
+
+block container
+ .row
+ .docs-content
+ div
+ p
+ | Apache Ignite<sup>tm</sup> In-Memory Data Fabric is a high-performance,
+ | integrated and distributed in-memory platform for computing and transacting on large-scale data
+ | sets in real-time, orders of magnitude faster than possible with traditional disk-based or flash technologies.
+ .block-image.block-display-image
+ img(ng-src='https://www.filepicker.io/api/file/lydEeGB6Rs9hwbpcQxiw' alt='Apache Ignite stack')
+ .text-center(ng-controller='auth')
+ button.btn.btn-primary(ng-click='login()' href='#') Configure Now
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/login.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/login.jade b/modules/control-center-web/src/main/js/views/login.jade
new file mode 100644
index 0000000..a580c01
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/login.jade
@@ -0,0 +1,55 @@
+//-
+ 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 lbl(txt)
+ label.col-sm-3.required #{txt}
+
+.modal.center(role='dialog')
+ .modal-dialog
+ .modal-content
+ .modal-header.header
+ div(id='errors-container')
+ button.close(type='button' ng-click='$hide()' aria-hidden='true') ×
+ h1.navbar-brand
+ a(href='/') Apache Ignite Web Configurator
+ h4.modal-title(style='padding-right: 55px') Authentication
+ p(style='padding-right: 55px') Log in or register in order to collaborate
+ form.form-horizontal(name='loginForm')
+ .modal-body.row
+ .col-sm-9.login.col-sm-offset-1
+ .details-row(ng-show='action == "register"')
+ +lbl('Full Name:')
+ .col-sm-9
+ input.form-control(type='text' ng-model='user_info.username' placeholder='John Smith' focus-me='action=="register"' ng-required='action=="register"')
+ .details-row
+ +lbl('Email:')
+ .col-sm-9
+ input.form-control(type='email' ng-model='user_info.email' placeholder='you@domain.com' focus-me='action=="login"' required)
+ .details-row
+ +lbl('Password:')
+ .col-sm-9
+ input.form-control(type='password' ng-model='user_info.password' placeholder='Password' required ng-enter='action == "login" && auth(action, user_info)')
+ .details-row(ng-show='action == "register"')
+ +lbl('Confirm:')
+ .col-sm-9.input-tip.has-feedback
+ input.form-control(type='password' ng-model='user_info.confirm' match='user_info.password' placeholder='Confirm password' required ng-enter='auth(action, user_info)')
+
+ .modal-footer
+ a.show-signup.ng-hide(ng-show='action != "login"' ng-click='action = "login";') log in
+ a.show-signup(ng-show='action != "register"' ng-click='action = "register"') sign up
+ | or
+ button.btn.btn-primary(ng-show='action == "login"' ng-click='auth(action, user_info)') Log In
+ button.btn.btn-primary(ng-show='action == "register"' ng-disabled='loginForm.$invalid || user_info.password != user_info.confirm' ng-click='auth(action, user_info)') Sign Up
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/settings/admin.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/settings/admin.jade b/modules/control-center-web/src/main/js/views/settings/admin.jade
new file mode 100644
index 0000000..8345bb9
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/settings/admin.jade
@@ -0,0 +1,58 @@
+//-
+ 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.
+
+extends ../templates/layout
+
+append scripts
+ script(src='/admin-controller.js')
+
+block container
+ .row(ng-controller='adminController')
+ .docs-content
+ .docs-header
+ h1 List of registered users
+ hr
+ .docs-body
+ table.table.table-striped.admin(st-table='displayedUsers' st-safe-src='users')
+ thead
+ tr
+ th.header(colspan='5')
+ .col-sm-2.pull-right
+ input.form-control(type='text' st-search='' placeholder='Filter users...')
+ tr
+ th(st-sort='username') User name
+ th(st-sort='email') Email
+ th.col-sm-2(st-sort='lastLogin') Last login
+ th(width='1%' st-sort='admin') Admin
+ th(width='1%') Actions
+ tbody
+ tr(ng-repeat='row in displayedUsers')
+ td {{row.username}}
+ td
+ a(ng-href='mailto:{{row.email}}') {{row.email}}
+ td
+ span {{row.lastLogin | date:'medium'}}
+ td(style='text-align: center;')
+ input(type='checkbox' ng-disabled='row.adminChanging || row._id == user._id'
+ ng-model='row.admin' ng-change='toggleAdmin(row)')
+ td(style='text-align: center;')
+ a(ng-click='removeUser(row)' ng-show='row._id != user._id' bs-tooltip data-title='Remove user')
+ i.fa.fa-remove
+ a(style='margin-left: 5px' ng-href='admin/become?viewedUserId={{row._id}}' ng-show='row._id != user._id' bs-tooltip data-title='Become this user')
+ i.fa.fa-eye
+ tfoot
+ tr
+ td.text-right(colspan='5')
+ div(st-pagination st-items-by-page='15' st-displayed-pages='5')
+
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/settings/profile.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/settings/profile.jade b/modules/control-center-web/src/main/js/views/settings/profile.jade
new file mode 100644
index 0000000..6ddcafa
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/settings/profile.jade
@@ -0,0 +1,58 @@
+//-
+ 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.
+
+extends ../templates/layout
+
+mixin lbl(txt)
+ label.col-sm-2.required.labelFormField #{txt}
+
+append scripts
+ script(src='/profile-controller.js')
+
+block container
+ .row(ng-controller='profileController')
+ .docs-content
+ .docs-header
+ h1 User profile
+ hr
+ .docs-body
+ form.form-horizontal(name='profileForm' novalidate)
+ .col-sm-10(style='padding: 0')
+ .details-row
+ +lbl('User name:')
+ .col-sm-4
+ input.form-control(type='text' ng-model='profileUser.username' placeholder='Input name' required)
+ .details-row
+ +lbl('Email:')
+ .col-sm-4
+ input.form-control(type='email' ng-model='profileUser.email' placeholder='you@domain.com' required)
+ .details-row
+ .checkbox
+ label
+ input(type='checkbox' ng-model='profileUser.changePassword')
+ | Change password
+ div(ng-show='profileUser.changePassword')
+ .details-row
+ +lbl('New password:')
+ .col-sm-4
+ input.form-control(type='password' ng-model='profileUser.newPassword' placeholder='New password' ng-required='profileUser.changePassword')
+ .details-row
+ +lbl('Confirm:')
+ .col-sm-4
+ input.form-control(type='password' ng-model='profileUser.confirmPassword' match='profileUser.newPassword' placeholder='Confirm new password' ng-required='profileUser.changePassword')
+ .col-sm-12.details-row
+ button.btn.btn-primary(ng-disabled='profileForm.$invalid' ng-click='saveUser()') Save
+
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/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
new file mode 100644
index 0000000..97d34de
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/sql/sql.jade
@@ -0,0 +1,85 @@
+//-
+ 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.
+extends ../templates/layout
+
+append scripts
+ script(src='/sql-controller.js')
+
+ script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/theme-chrome.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/mode-sql.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/ext-language_tools.js')
+
+block container
+ .row
+ .col-sm-12
+ .docs-content
+ .docs-header
+ h1 Connect to Ignite and Execute SQL Queries
+ hr
+ .docs-body(ng-controller='sqlController')
+ - var tab = 'tabs[tabs.activeIdx]'
+
+ .block-callout-parent.block-callout-border.margin-bottom-dflt
+ .block-callout
+ p(ng-bind-html='joinTip(screenTip)')
+ .tabs-below(bs-tabs bs-active-pane='tabs.activeIdx' data-template='/tab')
+ div(ng-repeat='tab in tabs' title='Query' bs-pane)
+ .row
+ .col-sm-9(style='border-right: 1px solid #eee')
+ div(style='height: 200px' ui-ace='{ theme: "chrome", mode: "sql",' +
+ 'require: ["ace/ext/language_tools"],' +
+ 'rendererOptions: {showPrintMargin: false, highlightGutterLine: false, fontSize: 14},' +
+ 'advanced: {enableSnippets: false, enableBasicAutocompletion: true, enableLiveAutocompletion: true}}' ng-model='#{tab}.query')
+ .col-sm-3
+ div(ng-hide='caches.length == 0' style='margin-top: 0.65em')
+ lable.labelHeader Caches:
+ table.links(st-table='caches')
+ tbody
+ tr(ng-repeat='row in caches track by row._id')
+ td.col-sm-6(ng-class='{active: row._id == #{tab}.selectedItem._id}')
+ a(ng-click='#{tab}.selectedItem = row') {{$index + 1}}) {{row.name}}, {{row.mode | displayValue:modes:'Cache mode not set'}}
+ hr(style='margin: 0')
+ .settings-row
+ label Page Size:
+ button.btn.btn-default.base-control(ng-init='pageSize = pageSizes[0]' ng-model='pageSize' bs-options='item for item in pageSizes' bs-select)
+ .settings-row
+ button.btn.btn-primary(ng-click='') Explain
+ button.btn.btn-primary(ng-click='') Execute
+ button.btn.btn-primary(ng-click='' disabled) Scan
+
+ div(ng-show='#{tab}.rows.length > 0' style='margin-top: 0.65em')
+ hr
+ div
+ table.table.table-striped.col-sm-12.sql-results(st-table='rows' st-safe-src='#{tab}.rows')
+ thead
+ tr(style='border-size: 0')
+ td(colspan='{{#{tab}.cols.length}}')
+ .col-sm-8
+ lable Page #:
+ b {{#{tab}.page}}
+ | Results:
+ b {{#{tab}.rows.length + #{tab}.total}}
+ .col-sm-4
+ button.btn.btn-primary.fieldButton(ng-click='') Next page
+ .input-tip
+ input.form-control(type='text' st-search='' placeholder='Filter...')
+
+ tr
+ th(ng-repeat='column in #{tab}.cols' st-sort='{{column}}') {{column}}
+ tbody
+ //tr
+ // td(colspan='{{#{tab}.cols.length}}')
+ // .loading-indicator
+ tr(ng-repeat='row in rows')
+ td(ng-repeat='column in #{tab}.cols') {{row[column]}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/templates/confirm.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/templates/confirm.jade b/modules/control-center-web/src/main/js/views/templates/confirm.jade
new file mode 100644
index 0000000..949318a
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/templates/confirm.jade
@@ -0,0 +1,27 @@
+//-
+ 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.
+
+.modal(tabindex='-1' role='dialog')
+ .modal-dialog
+ .modal-content
+ .modal-header
+ button.close(type='button' ng-click='$hide()') ×
+ h4.modal-title Confirmation
+ .modal-body(ng-show='content')
+ p(ng-bind-html='content' style='text-align: center;')
+ .modal-footer
+ button.btn.btn-default(type='button' ng-click='$hide()') Cancel
+ button.btn.btn-primary(type='button' ng-click='ok()') Confirm
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/templates/copy.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/templates/copy.jade b/modules/control-center-web/src/main/js/views/templates/copy.jade
new file mode 100644
index 0000000..2ba9096
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/templates/copy.jade
@@ -0,0 +1,31 @@
+//-
+ 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.
+
+.modal(tabindex='-1' role='dialog')
+ .modal-dialog
+ .modal-content
+ .modal-header
+ button.close(type='button' ng-click='$hide()') ×
+ h4.modal-title Copy
+ form.form-horizontal(name='inputForm' novalidate)
+ .modal-body.row
+ .col-sm-9.login.col-sm-offset-1
+ label.required.labelFormField() New name:
+ .col-sm-9
+ input.form-control(type='text' ng-model='newName' required)
+ .modal-footer
+ button.btn.btn-default(type='button' ng-click='$hide()') Cancel
+ button.btn.btn-primary(type='button' ng-disabled='inputForm.$invalid' ng-click='ok(newName)') Confirm
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/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
new file mode 100644
index 0000000..71d8936
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/templates/layout.jade
@@ -0,0 +1,61 @@
+//-
+ 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-control-center' ng-init='user = #{JSON.stringify(user)}; becomeUsed = #{becomeUsed}')
+ head
+ title= title
+
+ block css
+ // Bootstrap
+ link(rel='stylesheet', href='//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.4/css/bootstrap.css')
+
+ // Font Awesome Icons
+ link(rel='stylesheet', href='//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.css')
+
+ // Font
+ link(rel='stylesheet', href='//fonts.googleapis.com/css?family=Roboto+Slab:700:serif|Roboto+Slab:400:serif')
+
+ link(rel='stylesheet', href='/stylesheets/style.css')
+
+ block scripts
+ script(src='//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js')
+
+ script(src='//cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.0/lodash.min.js')
+
+ script(src='//ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.2/angular-sanitize.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.3.0/angular-strap.js')
+ script(src='//cdnjs.cloudflare.com/ajax/libs/angular-strap/2.3.0/angular-strap.tpl.min.js')
+
+ script(src='//cdnjs.cloudflare.com/ajax/libs/angular-smart-table/2.0.3/smart-table.js')
+
+ script(src='//cdnjs.cloudflare.com/ajax/libs/ace/1.2.0/ace.js')
+ script(src='//angular-ui.github.io/ui-ace/dist/ui-ace.min.js')
+
+ script(src='/common-module.js')
+ script(src='/data-structures.js')
+
+ body.theme-line.body-overlap.greedy
+ .wrapper
+ include ../includes/header
+
+ block main-container
+ .container.body-container
+ .main-content
+ block container
+
+ include ../includes/footer
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/templates/select.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/templates/select.jade b/modules/control-center-web/src/main/js/views/templates/select.jade
new file mode 100644
index 0000000..b219f13
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/templates/select.jade
@@ -0,0 +1,26 @@
+//-
+ 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.
+
+ul.select.dropdown-menu(tabindex='-1' ng-show='$isVisible()' role='select')
+ li(role='presentation' ng-repeat='match in $matches')
+ hr(ng-if='match.value == undefined' style='margin: 5px 0')
+ a(style='cursor: default; padding: 3px 6px;' role='menuitem' tabindex='-1' ng-class='{active: $isActive($index)}' ng-click='$select($index, $event)')
+ i(class='{{$iconCheckmark}}' ng-if='$isActive($index)' ng-class='{active: $isActive($index)}' style='color: #ec1c24; margin-left: 15px; line-height: 20px; float: right;background-color: transparent;')
+ span(ng-bind='match.label')
+ li(ng-if='$showAllNoneButtons || ($isMultiple && $matches.length > 5)')
+ hr(style='margin: 5px 0')
+ a(ng-click='$selectAll()') {{$allText}}
+ a(ng-click='$selectNone()') {{$noneText}}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/control-center-web/src/main/js/views/templates/tab.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/templates/tab.jade b/modules/control-center-web/src/main/js/views/templates/tab.jade
new file mode 100644
index 0000000..6c7afc5
--- /dev/null
+++ b/modules/control-center-web/src/main/js/views/templates/tab.jade
@@ -0,0 +1,26 @@
+//-
+ 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.
+
+ul.nav(ng-class='$navClass', role='tablist')
+ li(role='presentation' ng-repeat='$pane in $panes track by $index' ng-class='[ $isActive($pane, $index) ? $activeClass : "", $pane.disabled ? "disabled" : "" ]')
+ a(ng-if='$index == 0' role='tab' data-toggle='tab' ng-click='!$pane.disabled && $setActive($pane.name || $index)' data-index='{{ $index }}' aria-controls='$pane.title') {{$pane.title}}
+ i.fa.fa-remove(ng-click='removeTab($index)' ng-if='$index > 0' style='margin-left: 5px')
+ a(ng-if='$index > 0' role='tab' data-toggle='tab' ng-click='!$pane.disabled && $setActive($pane.name || $index)' data-index='{{ $index }}' aria-controls='$pane.title') {{$pane.title}}: {{$index}}
+ i.fa.fa-remove(ng-click='removeTab($index)' style='margin-left: 5px')
+ li.pull-right(bs-tooltip data-title='Add new query')
+ a(role='tab' data-toggle='tab' ng-click='addTab()')
+ i.fa.fa-plus
+.tab-content(ng-transclude)
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/licenses/apache-2.0.txt
----------------------------------------------------------------------
diff --git a/modules/web-control-center/licenses/apache-2.0.txt b/modules/web-control-center/licenses/apache-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/modules/web-control-center/licenses/apache-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed 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.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/.gitignore
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/.gitignore b/modules/web-control-center/src/main/js/.gitignore
deleted file mode 100644
index 65f2596..0000000
--- a/modules/web-control-center/src/main/js/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-node_modules
-*.idea
-*.log
-*.css
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/DEVNOTES.txt
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/DEVNOTES.txt b/modules/web-control-center/src/main/js/DEVNOTES.txt
deleted file mode 100644
index e8c558c..0000000
--- a/modules/web-control-center/src/main/js/DEVNOTES.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Ignite Web Control Center Instructions
-======================================
-
-How to deploy:
-
-1. Install locally NodeJS using installer from site https://nodejs.org for your OS.
-2. Install locally MongoDB folow instructions from site http://docs.mongodb.org/manual/installation
-3. Checkout ignite-843 branch.
-4. Change directory '$IGNITE_HOME/modules/web-control-center/src/main/js'.
-5. Run "npm install" in terminal for download all dependencies.
-
-Steps 1 - 5 should be executed once.
-
-How to run:
-
-1. Run MongoDB.
- 1.1 In terminal change dir to $MONGO_ISNTALL_DIR/server/3.0/bin.
- 1.2 Run "mongod".
-2. In new terminal change directory '$IGNITE_HOME/modules/web-control-center/src/main/js'.
-3. Start application by executing "npm start".
-4. In browser open: http://localhost:3000
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/app.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/app.js b/modules/web-control-center/src/main/js/app.js
deleted file mode 100644
index a67afc8..0000000
--- a/modules/web-control-center/src/main/js/app.js
+++ /dev/null
@@ -1,156 +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.
- */
-
-var flash = require('connect-flash');
-var express = require('express');
-var path = require('path');
-var favicon = require('serve-favicon');
-var logger = require('morgan');
-var cookieParser = require('cookie-parser');
-var bodyParser = require('body-parser');
-var session = require('express-session');
-var mongoStore = require('connect-mongo')(session);
-
-var publicRoutes = require('./routes/public');
-var clustersRouter = require('./routes/clusters');
-var cachesRouter = require('./routes/caches');
-var metadataRouter = require('./routes/metadata');
-var summary = require('./routes/summary');
-var adminRouter = require('./routes/admin');
-var profileRouter = require('./routes/profile');
-var sqlRouter = require('./routes/sql');
-
-var passport = require('passport');
-
-var db = require('./db');
-
-var app = express();
-
-// Views engine setup.
-app.set('views', path.join(__dirname, 'views'));
-app.set('view engine', 'jade');
-
-// Site favicon.
-app.use(favicon(__dirname + '/public/favicon.ico'));
-
-app.use(logger('dev'));
-
-app.use(bodyParser.json());
-app.use(bodyParser.urlencoded({extended: false}));
-
-app.use(require('node-sass-middleware')({
- /* Options */
- src: path.join(__dirname, 'public'),
- dest: path.join(__dirname, 'public'),
- debug: true,
- outputStyle: 'nested'
-}));
-
-app.use(express.static(path.join(__dirname, 'public')));
-app.use(express.static(path.join(__dirname, 'controllers')));
-app.use(express.static(path.join(__dirname, 'helpers')));
-
-app.use(cookieParser('keyboard cat'));
-
-app.use(session({
- secret: 'keyboard cat',
- resave: false,
- saveUninitialized: true,
- store: new mongoStore({
- mongooseConnection: db.mongoose.connection
- })
-}));
-
-app.use(flash());
-
-app.use(passport.initialize());
-app.use(passport.session());
-
-passport.serializeUser(db.Account.serializeUser());
-passport.deserializeUser(db.Account.deserializeUser());
-
-passport.use(db.Account.createStrategy());
-
-var mustAuthenticated = function (req, res, next) {
- req.isAuthenticated() ? next() : res.redirect('/');
-};
-
-var adminOnly = function(req, res, next) {
- req.isAuthenticated() && req.user.admin ? next() : res.sendStatus(403);
-};
-
-app.all('/configuration/*', mustAuthenticated);
-
-app.all('*', function(req, res, next) {
- var becomeUsed = req.session.viewedUser && req.user.admin;
-
- res.locals.user = becomeUsed ? req.session.viewedUser : req.user;
- res.locals.becomeUsed = becomeUsed;
-
- req.currentUserId = function() {
- if (!req.user)
- return null;
-
- if (req.session.viewedUser && req.user.admin)
- return req.session.viewedUser._id;
-
- return req.user._id;
- };
-
- next();
-});
-
-app.use('/', publicRoutes);
-app.use('/admin', mustAuthenticated, adminOnly, adminRouter);
-app.use('/profile', mustAuthenticated, profileRouter);
-
-app.use('/configuration/clusters', clustersRouter);
-app.use('/configuration/caches', cachesRouter);
-app.use('/configuration/metadata', metadataRouter);
-app.use('/configuration/summary', summary);
-app.use('/sql', sqlRouter);
-
-// Catch 404 and forward to error handler.
-app.use(function (req, res, next) {
- var err = new Error('Not Found: ' + req.originalUrl);
- err.status = 404;
- next(err);
-});
-
-// Error handlers.
-
-// Development error handler: will print stacktrace.
-if (app.get('env') === 'development') {
- app.use(function (err, req, res) {
- res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: err
- });
- });
-}
-
-// Production error handler: no stacktraces leaked to user.
-app.use(function (err, req, res) {
- res.status(err.status || 500);
- res.render('error', {
- message: err.message,
- error: {}
- });
-});
-
-module.exports = app;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/bin/www
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/bin/www b/modules/web-control-center/src/main/js/bin/www
deleted file mode 100644
index 4cf0583..0000000
--- a/modules/web-control-center/src/main/js/bin/www
+++ /dev/null
@@ -1,85 +0,0 @@
-#!/usr/bin/env node
-
-/**
- * Module dependencies.
- */
-var app = require('../app');
-var config = require('../helpers/configuration-loader.js');
-var debug = require('debug')('ignite-web-control-center:server');
-var http = require('http');
-
-/**
- * Get port from environment and store in Express.
- */
-var port = normalizePort(process.env.PORT || config.get('express:port'));
-app.set('port', port);
-
-/**
- * Create HTTP server.
- */
-var server = http.createServer(app);
-
-/**
- * Listen on provided port, on all network interfaces.
- */
-server.listen(port);
-server.on('error', onError);
-server.on('listening', onListening);
-
-/**
- * Normalize a port into a number, string, or false.
- */
-function normalizePort(val) {
- var port = parseInt(val, 10);
-
- if (isNaN(port)) {
- // named pipe
- return val;
- }
-
- if (port >= 0) {
- // port number
- return port;
- }
-
- return false;
-}
-
-/**
- * Event listener for HTTP server "error" event.
- */
-function onError(error) {
- if (error.syscall !== 'listen') {
- throw error;
- }
-
- var bind = typeof port === 'string'
- ? 'Pipe ' + port
- : 'Port ' + port;
-
- // handle specific listen errors with friendly messages
- switch (error.code) {
- case 'EACCES':
- console.error(bind + ' requires elevated privileges');
- process.exit(1);
- break;
- case 'EADDRINUSE':
- console.error(bind + ' is already in use');
- process.exit(1);
- break;
- default:
- throw error;
- }
-}
-
-/**
- * Event listener for HTTP server "listening" event.
- */
-function onListening() {
- var addr = server.address();
- var bind = typeof addr === 'string'
- ? 'pipe ' + addr
- : 'port ' + addr.port;
-
- debug('Listening on ' + bind);
-}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/config/default.json
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/config/default.json b/modules/web-control-center/src/main/js/config/default.json
deleted file mode 100644
index 72dbd4e..0000000
--- a/modules/web-control-center/src/main/js/config/default.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "express": {
- "port": 3000
- },
- "mongoDB": {
- "url": "mongodb://localhost/web-control-center"
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/controllers/admin-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/admin-controller.js b/modules/web-control-center/src/main/js/controllers/admin-controller.js
deleted file mode 100644
index 09490fe..0000000
--- a/modules/web-control-center/src/main/js/controllers/admin-controller.js
+++ /dev/null
@@ -1,68 +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.
- */
-
-controlCenterModule.controller('adminController', ['$scope', '$http', '$common', '$confirm', function ($scope, $http, $common, $confirm) {
- $scope.users = null;
-
- function reload() {
- $http.post('admin/list')
- .success(function (data) {
- $scope.users = data;
- })
- .error(function (errMsg) {
- $common.showError($common.errorMessage(errMsg));
- });
- }
-
- reload();
-
- $scope.removeUser = function (user) {
- $confirm.show('Are you sure you want to remove user: "' + user.username + '"?').then(function () {
- $http.post('admin/remove', {userId: user._id}).success(
- function () {
- var i = _.findIndex($scope.users, function (u) {
- return u._id == user._id;
- });
-
- if (i >= 0)
- $scope.users.splice(i, 1);
-
- $common.showInfo('User has been removed: "' + user.username + '"');
- }).error(function (errMsg) {
- $common.showError('Failed to remove user: "' + $common.errorMessage(errMsg) + '"');
- });
- });
- };
-
- $scope.toggleAdmin = function (user) {
- if (user.adminChanging)
- return;
-
- user.adminChanging = true;
-
- $http.post('admin/save', {userId: user._id, adminFlag: user.admin}).success(
- function () {
- $common.showInfo('Admin right was successfully toggled for user: "' + user.username + '"');
-
- user.adminChanging = false;
- }).error(function (errMsg) {
- $common.showError('Failed to toggle admin right for user: "' + $common.errorMessage(errMsg) + '"');
-
- user.adminChanging = false;
- });
- }
-}]);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96522874/modules/web-control-center/src/main/js/controllers/cache-viewer-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-control-center/src/main/js/controllers/cache-viewer-controller.js b/modules/web-control-center/src/main/js/controllers/cache-viewer-controller.js
deleted file mode 100644
index 6e0c130..0000000
--- a/modules/web-control-center/src/main/js/controllers/cache-viewer-controller.js
+++ /dev/null
@@ -1,77 +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.
- */
-
-var demoResults = [
- {
- id: 256,
- s: 'com.foo.User@3213',
- fields: {
- id: 256,
- firstName: 'Ivan',
- lastName: 'Ivanov',
- old: 23
- }
- },
-
- {
- id: 384,
- s: 'com.foo.User@23214',
- fields: {
- id: 384,
- firstName: 'Sergey',
- lastName: 'Petrov',
- old: 28
- }
- },
-
- {
- id: 923,
- s: 'com.foo.User@93494',
- fields: {
- id: 923,
- firstName: 'Andrey',
- lastName: 'Sidorov',
- old: 28
- }
- }
-];
-
-var demoCaches = ['Users', 'Organizations', 'Cities'];
-
-controlCenterModule.controller('cacheViewerController', ['$scope', '$http', '$common', function ($scope, $http, $common) {
- $scope.results = demoResults;
-
- $scope.caches = demoCaches;
-
- $scope.defCache = $scope.caches.length > 0 ? $scope.caches[0] : null;
-
- var sqlEditor = ace.edit('querySql');
-
- sqlEditor.setOptions({
- highlightActiveLine: false,
- showPrintMargin: false,
- showGutter: true,
- theme: "ace/theme/chrome",
- mode: "ace/mode/sql",
- fontSize: 14
- });
-
- sqlEditor.setValue("select u.id from User u where u.name like 'aaaa';");
-
- sqlEditor.selection.clearSelection()
-
-}]);