You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2015/08/18 10:42:26 UTC
incubator-ignite git commit: IGNITE-843: Caches validation.
Repository: incubator-ignite
Updated Branches:
refs/heads/ignite-843 7f915a5f5 -> cc29f79ad
IGNITE-843: Caches validation.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/cc29f79a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/cc29f79a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/cc29f79a
Branch: refs/heads/ignite-843
Commit: cc29f79adf41fd89895e42d0f05df1b476d490bf
Parents: 7f915a5
Author: AKuznetsov <ak...@gridgain.com>
Authored: Tue Aug 18 15:42:42 2015 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Tue Aug 18 15:42:42 2015 +0700
----------------------------------------------------------------------
.../main/js/controllers/caches-controller.js | 49 ++++++++++++++++----
.../src/main/js/controllers/models/caches.json | 12 +++--
.../main/js/controllers/models/clusters.json | 4 +-
.../src/main/js/views/configuration/caches.jade | 4 +-
.../src/main/js/views/includes/controls.jade | 10 ++--
5 files changed, 58 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cc29f79a/modules/control-center-web/src/main/js/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/caches-controller.js b/modules/control-center-web/src/main/js/controllers/caches-controller.js
index 604a39e..17932f4 100644
--- a/modules/control-center-web/src/main/js/controllers/caches-controller.js
+++ b/modules/control-center-web/src/main/js/controllers/caches-controller.js
@@ -40,6 +40,8 @@ controlCenterModule.controller('cachesController', [
$scope.compactJavaName = $common.compactJavaName;
+ $scope.hidePopover = $common.hidePopover;
+
$scope.atomicities = $common.mkOptions(['ATOMIC', 'TRANSACTIONAL']);
$scope.modes = $common.mkOptions(['PARTITIONED', 'REPLICATED', 'LOCAL']);
@@ -78,6 +80,8 @@ controlCenterModule.controller('cachesController', [
$scope.toggleExpanded = function () {
$scope.ui.expanded = !$scope.ui.expanded;
+
+ $common.hidePopover();
};
$scope.panels = {activePanels: [0]};
@@ -279,24 +283,51 @@ controlCenterModule.controller('cachesController', [
// Check cache logical consistency.
function validate(item) {
+ if ($common.isEmptyString(item.name))
+ return $common.showPopoverMessage($scope.panels, 'general-data', 'cacheName', 'Name should not be empty');
+
+ if (item.memoryMode == 'OFFHEAP_TIERED' && item.offHeapMaxMemory == null)
+ return $common.showPopoverMessage($scope.panels, 'memory-data', 'offHeapMaxMemory',
+ 'Off-heap max memory should be specified');
+
var cacheStoreFactorySelected = item.cacheStoreFactory && item.cacheStoreFactory.kind;
- if (cacheStoreFactorySelected && !(item.readThrough || item.writeThrough)) {
- $common.showError('Store is configured but read/write through are not enabled!');
+ if (cacheStoreFactorySelected) {
+ if (item.cacheStoreFactory.kind == 'CacheJdbcPojoStoreFactory') {
+ if ($common.isEmptyString(item.cacheStoreFactory.CacheJdbcPojoStoreFactory.dataSourceBean))
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'dataSourceBean',
+ 'Data source bean should not be empty');
+
+ if (!item.cacheStoreFactory.CacheJdbcPojoStoreFactory.dialect)
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'dialect',
+ 'Dialect should not be empty');
+ }
+
+ if (item.cacheStoreFactory.kind == 'CacheJdbcBlobStoreFactory') {
+ if ($common.isEmptyString(item.cacheStoreFactory.CacheJdbcBlobStoreFactory.user))
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'user',
+ 'User should not be empty');
- return false;
+ if ($common.isEmptyString(item.cacheStoreFactory.CacheJdbcBlobStoreFactory.dataSourceBean))
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'dataSourceBean',
+ 'Data source bean should not be empty');
+ }
}
- if ((item.readThrough || item.writeThrough) && !cacheStoreFactorySelected) {
- $common.showError('Read / write through are enabled but store is not configured!');
- return false;
+ if (cacheStoreFactorySelected && !(item.readThrough || item.writeThrough)) {
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'readThrough',
+ 'Store is configured but read/write through are not enabled!');
}
- if (item.writeBehindEnabled && !cacheStoreFactorySelected) {
- $common.showError('Write behind enabled but store is not configured!');
+ if ((item.readThrough || item.writeThrough) && !cacheStoreFactorySelected) {
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'cacheStoreFactory',
+ 'Read / write through are enabled but store is not configured!');
+ }
- return false;
+ if (item.writeBehindEnabled && !cacheStoreFactorySelected) {
+ return $common.showPopoverMessage($scope.panels, 'store-data', 'cacheStoreFactory',
+ 'Write behind enabled but store is not configured!');
}
return true;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cc29f79a/modules/control-center-web/src/main/js/controllers/models/caches.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/models/caches.json b/modules/control-center-web/src/main/js/controllers/models/caches.json
index b34dcea..9162a85 100644
--- a/modules/control-center-web/src/main/js/controllers/models/caches.json
+++ b/modules/control-center-web/src/main/js/controllers/models/caches.json
@@ -24,11 +24,11 @@
"fields": [
{
"label": "Name",
+ "id": "cacheName",
"type": "text",
"model": "name",
"required": true,
- "placeholder": "Input name",
- "id": "cacheName"
+ "placeholder": "Input name"
},
{
"label": "Clusters",
@@ -117,6 +117,7 @@
},
{
"label": "Memory",
+ "id": "memory-data",
"tip": [
"Cache memory settings."
],
@@ -143,6 +144,7 @@
},
{
"label": "Off-heap max memory",
+ "id": "offHeapMaxMemory",
"type": "number",
"model": "offHeapMaxMemory",
"min": -1,
@@ -398,6 +400,7 @@
"fields": [
{
"label": "Store factory",
+ "id": "cacheStoreFactory",
"type": "dropdown-details",
"settings": true,
"path": "cacheStoreFactory",
@@ -424,6 +427,7 @@
},
{
"label": "Dialect",
+ "id": "dialect",
"type": "dropdown",
"path": "cacheStoreFactory.CacheJdbcPojoStoreFactory",
"model": "dialect",
@@ -459,7 +463,8 @@
"expanded": true,
"fields": [
{
- "label": "user",
+ "label": "User",
+ "id": "user",
"type": "text",
"path": "cacheStoreFactory.CacheJdbcBlobStoreFactory",
"model": "user",
@@ -470,6 +475,7 @@
},
{
"label": "Data source bean",
+ "id": "dataSourceBean",
"type": "text",
"path": "cacheStoreFactory.CacheJdbcBlobStoreFactory",
"model": "dataSourceBean",
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cc29f79a/modules/control-center-web/src/main/js/controllers/models/clusters.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/controllers/models/clusters.json b/modules/control-center-web/src/main/js/controllers/models/clusters.json
index a8884d2..67dbd33 100644
--- a/modules/control-center-web/src/main/js/controllers/models/clusters.json
+++ b/modules/control-center-web/src/main/js/controllers/models/clusters.json
@@ -29,11 +29,11 @@
"fields": [
{
"label": "Name",
+ "id": "clusterName",
"type": "text",
"model": "name",
"required": true,
- "placeholder": "Input name",
- "id": "clusterName"
+ "placeholder": "Input name"
},
{
"label": "Caches",
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cc29f79a/modules/control-center-web/src/main/js/views/configuration/caches.jade
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/views/configuration/caches.jade b/modules/control-center-web/src/main/js/views/configuration/caches.jade
index 3608ccb..27b2832 100644
--- a/modules/control-center-web/src/main/js/views/configuration/caches.jade
+++ b/modules/control-center-web/src/main/js/views/configuration/caches.jade
@@ -39,6 +39,6 @@ block content
+groups('advanced', 'backupItem')
+advanced-options-top
.section
- button.btn.btn-primary(ng-disabled='inputForm.$invalid' ng-click='saveItem()') Save
- button.btn.btn-primary(ng-show='backupItem._id' ng-disabled='inputForm.$invalid' ng-click='saveItemAs()') Copy
+ button.btn.btn-primary(ng-click='saveItem()') Save
+ button.btn.btn-primary(ng-show='backupItem._id' ng-click='saveItemAs()') Copy
button.btn.btn-primary(ng-show='backupItem._id' ng-click='removeItem()') Remove
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cc29f79a/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
index 4308eea..5c6adb5 100644
--- a/modules/control-center-web/src/main/js/views/includes/controls.jade
+++ b/modules/control-center-web/src/main/js/views/includes/controls.jade
@@ -136,7 +136,7 @@ mixin details-row
.col-sm-8
+tipField('detail.tip')
.input-tip
- input.form-control(name='{{detail.model}}' type='number' ng-disabled=detailDisabled placeholder='{{::detail.placeholder}}' min='{{detail.min ? detail.min : 0}}' max='{{detail.max ? detail.max : Number.MAX_VALUE}}')&attributes(detailCommon)
+ input.form-control(id='{{::detail.id}}' name='{{detail.model}}' type='number' ng-disabled=detailDisabled 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.')
@@ -145,8 +145,8 @@ mixin details-row
.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}}' tabindex='0')&attributes(detailCommon)
- div(ng-switch-when='dropdown-multiple')
+ button.form-control(id='{{::detail.id}}' bs-select data-placeholder='{{::detail.placeholder}}' bs-options='item.value as item.label for item in {{detail.items}}' tabindex='0')&attributes(detailCommon)
+ div(ng-switch-when='dropdown-multiple')
label(class=lblDetailClasses ng-class='{required: detail.required}') {{::detail.label}}:
.col-sm-8
+tipField('detail.tip')
@@ -287,7 +287,7 @@ mixin form-row-custom(lblClasses, fieldClasses, dataSource)
div(class=fieldClasses)
+tipField('field.tip')
.input-tip
- input.form-control(name='{{field.model}}' type='number' ng-disabled=fieldDisabled placeholder='{{::field.placeholder}}' ng-focus='tableReset()' min='{{field.min ? field.min : 0}}' max='{{field.max ? field.max : Number.MAX_VALUE}}')&attributes(fieldCommon)
+ input.form-control(id='{{::field.id}}' name='{{field.model}}' type='number' ng-disabled=fieldDisabled placeholder='{{::field.placeholder}}' ng-focus='tableReset()' 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.')
@@ -296,7 +296,7 @@ mixin form-row-custom(lblClasses, fieldClasses, dataSource)
div(class=fieldClasses)
+tipField('field.tip')
.input-tip
- button.form-control(bs-select ng-disabled=fieldDisabled data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}' tabindex='0')&attributes(fieldCommon)
+ button.form-control(id='{{::field.id}}' bs-select ng-disabled=fieldDisabled data-placeholder='{{::field.placeholder}}' bs-options='item.value as item.label for item in {{field.items}}' tabindex='0')&attributes(fieldCommon)
div(ng-switch-when='dropdown-multiple' ng-hide=fieldHide)
label(class=lblClasses ng-class=fieldRequiredClass) {{::field.label}}:
div(class=fieldClasses)