This is an automated email from the ASF dual-hosted git repository. akuznetsov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push: new 01c45aa IGNITE-11259 Web Console: Added missing "enumValues" to binary configuration. 01c45aa is described below commit 01c45aad5b19c29e810eb6373d53019d1f7d220d Author: Vasiliy Sisko <vsi...@gridgain.com> AuthorDate: Fri Mar 29 13:17:02 2019 +0700 IGNITE-11259 Web Console: Added missing "enumValues" to binary configuration. --- modules/web-console/backend/app/schemas.js | 3 ++- .../cluster-edit-form/templates/binary.pug | 26 ++++++++++++++++++++++ .../generator/generator/ConfigurationGenerator.js | 4 +++- .../generator/defaults/Cluster.service.js | 7 +++++- .../frontend/app/configuration/mixins.pug | 18 +++++++++++++++ .../WebConsoleConfigurationSelfTest.java | 1 + 6 files changed, 56 insertions(+), 3 deletions(-) diff --git a/modules/web-console/backend/app/schemas.js b/modules/web-console/backend/app/schemas.js index 808bfd4..10c294f 100644 --- a/modules/web-console/backend/app/schemas.js +++ b/modules/web-console/backend/app/schemas.js @@ -590,7 +590,8 @@ module.exports.factory = function(mongoose) { idMapper: String, nameMapper: String, serializer: String, - enum: Boolean + enum: Boolean, + enumValues: [String] }], compactFooter: Boolean }, diff --git a/modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug b/modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug index aa74620..07b02a6 100644 --- a/modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug +++ b/modules/web-console/frontend/app/configuration/components/page-configure-advanced/components/cluster-edit-form/templates/binary.pug @@ -105,6 +105,32 @@ panel-collapsible(ng-form=form on-open=`ui.loadPanel('${form}')`) name: 'enum', tip: 'Flag indicating that this type is the enum' }) + .pc-form-grid-col-60(ng-if='$item.enum') + mixin enum-values + .ignite-form-field + -let items = '$item.enumValues' + + list-editable( + ng-model=items + name='enumValues' + list-editable-cols=`::[{name: "Enum values:"}]` + ) + list-editable-item-view {{ $item }} + + list-editable-item-edit + +list-java-identifier-field('Value', '$item', '"value"', 'Enter Enum value', '$item.$item.enumValues') + +form-field__error({error: 'igniteUnique', message: 'Value already configured!'}) + + list-editable-no-items + list-editable-add-item-button( + add-item=`$editLast((${items} = ${items} || []).push(''))` + label-single='enum value' + label-multiple='enum values' + ) + + - var form = '$parent.$parent.form' + +enum-values + - var form = '$parent.form' list-editable-no-items list-editable-add-item-button( diff --git a/modules/web-console/frontend/app/configuration/generator/generator/ConfigurationGenerator.js b/modules/web-console/frontend/app/configuration/generator/generator/ConfigurationGenerator.js index b330f6e..358a453 100644 --- a/modules/web-console/frontend/app/configuration/generator/generator/ConfigurationGenerator.js +++ b/modules/web-console/frontend/app/configuration/generator/generator/ConfigurationGenerator.js @@ -27,6 +27,7 @@ import IgniteIGFSDefaults from './defaults/IGFS.service'; import JavaTypes from '../../../services/JavaTypes.service'; import VersionService from 'app/services/Version.service'; +import _ from 'lodash'; import isNil from 'lodash/isNil'; import {nonNil, nonEmpty} from 'app/utils/lodashMixins'; @@ -469,7 +470,8 @@ export default class IgniteConfigurationGenerator { .emptyBeanProperty('idMapper') .emptyBeanProperty('nameMapper') .emptyBeanProperty('serializer') - .intProperty('enum'); + .boolProperty('enum') + .mapProperty('enumValues', _.map(type.enumValues, (v, idx) => ({name: v, value: idx})), 'enumValues'); if (typeCfg.nonEmpty()) typeCfgs.push(typeCfg); diff --git a/modules/web-console/frontend/app/configuration/generator/generator/defaults/Cluster.service.js b/modules/web-console/frontend/app/configuration/generator/generator/defaults/Cluster.service.js index 8e82403..0457bc9 100644 --- a/modules/web-console/frontend/app/configuration/generator/generator/defaults/Cluster.service.js +++ b/modules/web-console/frontend/app/configuration/generator/generator/defaults/Cluster.service.js @@ -96,7 +96,12 @@ const DFLT_CLUSTER = { binary: { compactFooter: true, typeConfigurations: { - enum: false + enum: false, + enumValues: { + keyClsName: 'java.lang.String', + valClsName: 'java.lang.Integer', + entries: [] + } } }, collision: { diff --git a/modules/web-console/frontend/app/configuration/mixins.pug b/modules/web-console/frontend/app/configuration/mixins.pug index 75c96aa..92b4d39 100644 --- a/modules/web-console/frontend/app/configuration/mixins.pug +++ b/modules/web-console/frontend/app/configuration/mixins.pug @@ -209,6 +209,24 @@ mixin list-java-class-field(label, model, name, items) if block block +mixin list-java-identifier-field(label, model, name, placeholder, items) + +form-field__text({ + label, + model, + name, + required: true, + placeholder + })( + java-identifier='true' + + ignite-unique=items + ignite-form-field-input-autofocus='true' + ) + +form-field__error({ error: 'javaIdentifier', message: `${ label } is invalid Java identifier!` }) + + if block + block + mixin list-url-field(label, model, name, items) +form-field__text({ label, diff --git a/modules/web-console/src/test/java/org/apache/ignite/console/configuration/WebConsoleConfigurationSelfTest.java b/modules/web-console/src/test/java/org/apache/ignite/console/configuration/WebConsoleConfigurationSelfTest.java index cb8d5d7..c15b4c7 100644 --- a/modules/web-console/src/test/java/org/apache/ignite/console/configuration/WebConsoleConfigurationSelfTest.java +++ b/modules/web-console/src/test/java/org/apache/ignite/console/configuration/WebConsoleConfigurationSelfTest.java @@ -230,6 +230,7 @@ public class WebConsoleConfigurationSelfTest { binaryTypeCfgProps.add("nameMapper"); binaryTypeCfgProps.add("serializer"); binaryTypeCfgProps.add("enum"); + binaryTypeCfgProps.add("enumValues"); metadata.put(BinaryTypeConfiguration.class, new MetadataInfo(binaryTypeCfgProps, EMPTY_FIELDS, EMPTY_FIELDS)); Set<String> sharedFsCheckpointProps = new HashSet<>();