Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 4CC1A200BEB for ; Wed, 28 Dec 2016 15:04:32 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 4B80C160B2E; Wed, 28 Dec 2016 14:04:32 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 2125C160B45 for ; Wed, 28 Dec 2016 15:04:28 +0100 (CET) Received: (qmail 75464 invoked by uid 500); 28 Dec 2016 14:04:28 -0000 Mailing-List: contact commits-help@ignite.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@ignite.apache.org Delivered-To: mailing list commits@ignite.apache.org Received: (qmail 74546 invoked by uid 99); 28 Dec 2016 14:04:27 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 28 Dec 2016 14:04:27 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B50FDF1769; Wed, 28 Dec 2016 14:04:27 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: yzhdanov@apache.org To: commits@ignite.apache.org Date: Wed, 28 Dec 2016 14:05:00 -0000 Message-Id: <308c921705e4465c9d03958dd237f710@git.apache.org> In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [34/50] [abbrv] ignite git commit: Web console beta-7. archived-at: Wed, 28 Dec 2016 14:04:32 -0000 Web console beta-7. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8e7c852b Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8e7c852b Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8e7c852b Branch: refs/heads/ignite-comm-balance-master Commit: 8e7c852b5ff4a3837f2f33f3d9adc0c2318dbdf8 Parents: 1e2469f Author: Andrey Novikov Authored: Fri Dec 23 16:34:10 2016 +0700 Committer: Andrey Novikov Committed: Fri Dec 23 16:34:11 2016 +0700 ---------------------------------------------------------------------- modules/web-console/backend/app/agent.js | 15 + modules/web-console/backend/app/browser.js | 13 + modules/web-console/backend/app/mongo.js | 24 +- modules/web-console/backend/routes/demo.js | 17 +- modules/web-console/backend/routes/profile.js | 3 +- .../web-console/backend/services/notebooks.js | 14 +- .../web-console/backend/services/sessions.js | 6 +- modules/web-console/backend/services/spaces.js | 15 + modules/web-console/frontend/app/app.js | 5 - .../controllers/reset-password.controller.js | 14 +- .../frontend/app/data/event-groups.json | 169 + .../frontend/app/data/event-types.json | 169 - .../frontend/app/data/pom-dependencies.json | 12 +- .../ui-ace-docker/ui-ace-docker.controller.js | 2 +- .../directives/ui-ace-docker/ui-ace-docker.jade | 2 +- .../ui-ace-pojos/ui-ace-pojos.controller.js | 12 +- .../ui-ace-pom/ui-ace-pom.controller.js | 4 +- .../helpers/jade/form/form-field-dropdown.jade | 5 +- .../helpers/jade/form/form-field-number.jade | 3 +- .../app/helpers/jade/form/form-field-text.jade | 19 +- .../frontend/app/helpers/jade/mixins.jade | 52 +- .../frontend/app/modules/Demo/Demo.module.js | 6 +- .../configuration/EventGroups.provider.js | 30 - .../modules/configuration/Version.service.js | 6 +- .../configuration/configuration.module.js | 63 +- .../generator/AbstractTransformer.js | 17 + .../modules/configuration/generator/Beans.js | 5 + .../generator/ConfigurationGenerator.js | 2795 +++++++------- .../configuration/generator/Custom.service.js | 23 + .../configuration/generator/Docker.service.js | 4 +- .../generator/JavaTransformer.service.js | 2318 +++++------ .../configuration/generator/Maven.service.js | 234 ++ .../configuration/generator/Pom.service.js | 233 -- .../generator/Properties.service.js | 2 +- .../configuration/generator/Readme.service.js | 2 +- .../generator/SharpTransformer.service.js | 437 ++- .../generator/SpringTransformer.service.js | 497 ++- .../defaults/Cache.platform.service.js | 56 + .../generator/defaults/Cache.service.js | 131 + .../defaults/Cluster.platform.service.js | 43 + .../generator/defaults/Cluster.service.js | 289 ++ .../generator/defaults/Event-groups.service.js | 27 + .../generator/defaults/IGFS.service.js | 64 + .../defaults/cache.platform.provider.js | 60 - .../generator/defaults/cache.provider.js | 137 - .../defaults/cluster.platform.provider.js | 49 - .../generator/defaults/cluster.provider.js | 293 -- .../generator/defaults/igfs.provider.js | 68 - .../configuration/generator/generator-common.js | 625 --- .../configuration/generator/generator-java.js | 3617 ------------------ .../generator/generator-optional.js | 25 - .../configuration/generator/generator-spring.js | 2111 ---------- .../frontend/app/modules/sql/Notebook.data.js | 11 +- .../app/modules/sql/Notebook.service.js | 2 +- .../app/modules/sql/scan-filter-input.jade | 39 - .../modules/sql/scan-filter-input.service.js | 51 - .../frontend/app/modules/sql/sql.controller.js | 211 +- .../frontend/app/modules/sql/sql.module.js | 2 - .../app/modules/states/configuration.state.js | 2 + .../configuration/caches/node-filter.jade | 2 +- .../states/configuration/caches/query.jade | 3 + .../states/configuration/caches/store.jade | 4 +- .../configuration/clusters/checkpoint.jade | 11 +- .../configuration/clusters/checkpoint/fs.jade | 8 +- .../configuration/clusters/checkpoint/jdbc.jade | 8 +- .../configuration/clusters/checkpoint/s3.jade | 25 +- .../clusters/collision/custom.jade | 2 +- .../clusters/collision/job-stealing.jade | 2 +- .../configuration/clusters/deployment.jade | 129 +- .../states/configuration/clusters/events.jade | 4 +- .../states/configuration/clusters/failover.jade | 4 +- .../clusters/general/discovery/zookeeper.jade | 2 +- .../discovery/zookeeper/retrypolicy/custom.jade | 2 +- .../configuration/clusters/load-balancing.jade | 23 +- .../configuration/clusters/logger/custom.jade | 2 +- .../states/configuration/clusters/ssl.jade | 2 +- .../summary/summary-zipper.service.js | 37 + .../configuration/summary/summary.controller.js | 103 +- .../configuration/summary/summary.worker.js | 123 + .../frontend/app/modules/user/Auth.service.js | 11 +- .../frontend/app/services/JavaTypes.service.js | 13 +- .../frontend/app/services/Messages.service.js | 17 +- .../frontend/controllers/admin-controller.js | 211 +- .../frontend/controllers/caches-controller.js | 22 +- .../frontend/controllers/clusters-controller.js | 42 +- .../frontend/controllers/domains-controller.js | 32 +- .../frontend/controllers/igfs-controller.js | 20 +- .../frontend/controllers/profile-controller.js | 3 +- .../gulpfile.babel.js/webpack/common.js | 17 +- .../webpack/environments/development.js | 14 +- .../webpack/environments/production.js | 3 +- .../webpack/plugins/progress.js | 82 - modules/web-console/frontend/package.json | 178 +- .../frontend/public/images/cache.png | Bin 23700 -> 24791 bytes .../frontend/public/images/domains.png | Bin 23828 -> 22131 bytes .../web-console/frontend/public/images/igfs.png | Bin 14307 -> 14139 bytes .../frontend/public/images/query-chart.png | Bin 16637 -> 17142 bytes .../frontend/public/images/query-metadata.png | Bin 32298 -> 39361 bytes .../frontend/public/images/query-table.png | Bin 29189 -> 28065 bytes .../frontend/public/images/summary.png | Bin 31997 -> 33650 bytes .../stylesheets/_font-awesome-custom.scss | 23 +- .../frontend/public/stylesheets/form-field.scss | 37 + .../frontend/public/stylesheets/style.scss | 111 +- .../frontend/test/unit/JavaTypes.test.js | 17 +- .../frontend/test/unit/Version.test.js | 8 +- .../views/configuration/domains-import.jade | 5 +- .../frontend/views/configuration/summary.jade | 25 +- .../frontend/views/settings/admin.jade | 85 +- .../frontend/views/sql/notebook-new.jade | 2 +- modules/web-console/frontend/views/sql/sql.jade | 235 +- .../frontend/views/templates/alert.jade | 2 +- .../frontend/views/templates/select.jade | 2 +- 112 files changed, 5577 insertions(+), 11296 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/app/agent.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/app/agent.js b/modules/web-console/backend/app/agent.js index f74a3f2..791ea50 100644 --- a/modules/web-console/backend/app/agent.js +++ b/modules/web-console/backend/app/agent.js @@ -314,6 +314,21 @@ module.exports.factory = function(_, fs, path, JSZip, socketio, settings, mongo) /** * @param {Boolean} demo Is need run command on demo node. + * @param {Array.} nids Node ids. + * @returns {Promise} + */ + queryResetDetailMetrics(demo, nids) { + const cmd = new Command(demo, 'exe') + .addParam('name', 'org.apache.ignite.internal.visor.compute.VisorGatewayTask') + .addParam('p1', nids) + .addParam('p2', 'org.apache.ignite.internal.visor.cache.VisorCacheResetQueryDetailMetricsTask') + .addParam('p3', 'java.lang.Void'); + + return this.executeRest(cmd); + } + + /** + * @param {Boolean} demo Is need run command on demo node. * @param {String} cacheName Cache name. * @returns {Promise} */ http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/app/browser.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/app/browser.js b/modules/web-console/backend/app/browser.js index 2710829..499d84d 100644 --- a/modules/web-console/backend/app/browser.js +++ b/modules/web-console/backend/app/browser.js @@ -162,6 +162,19 @@ module.exports.factory = (_, socketio, agentMgr, configure) => { .catch((err) => cb(_errorToJson(err))); }); + // Collect cache query metrics and return result to browser. + socket.on('node:query:reset:metrics', (nids, cb) => { + agentMgr.findAgent(accountId()) + .then((agent) => agent.queryResetDetailMetrics(demo, nids)) + .then((data) => { + if (data.finished) + return cb(null, data.result); + + cb(_errorToJson(data.error)); + }) + .catch((err) => cb(_errorToJson(err))); + }); + // Return cache metadata from all nodes in grid. socket.on('node:cache:metadata', (cacheName, cb) => { agentMgr.findAgent(accountId()) http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/app/mongo.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/app/mongo.js b/modules/web-console/backend/app/mongo.js index 0f38eb2..58ab119 100644 --- a/modules/web-console/backend/app/mongo.js +++ b/modules/web-console/backend/app/mongo.js @@ -247,6 +247,7 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose longQueryWarningTimeout: Number, sqlFunctionClasses: [String], snapshotableIndex: Boolean, + queryDetailMetricsSize: Number, statisticsEnabled: Boolean, managementEnabled: Boolean, readFromBackup: Boolean, @@ -823,7 +824,24 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose Custom: { className: String } - }] + }], + deploymentSpi: { + kind: {type: String, enum: ['URI', 'Local', 'Custom']}, + URI: { + uriList: [String], + temporaryDirectoryPath: String, + scanners: [String], + listener: String, + checkMd5: Boolean, + encodeUri: Boolean + }, + Local: { + listener: String + }, + Custom: { + className: String + } + } }); ClusterSchema.index({name: 1, space: 1}, {unique: true}); @@ -843,13 +861,15 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose result: {type: String, enum: ['none', 'table', 'bar', 'pie', 'line', 'area']}, pageSize: Number, timeLineSpan: String, + maxPages: Number, hideSystemColumns: Boolean, cacheName: String, chartsOptions: {barChart: {stacked: Boolean}, areaChart: {style: String}}, rate: { value: Number, unit: Number - } + }, + qryType: String }] }); http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/routes/demo.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/routes/demo.js b/modules/web-console/backend/routes/demo.js index ad4be6e..3f4166d 100644 --- a/modules/web-console/backend/routes/demo.js +++ b/modules/web-console/backend/routes/demo.js @@ -39,20 +39,17 @@ module.exports.factory = (_, express, settings, mongo, spacesService, errors) => router.post('/reset', (req, res) => { spacesService.spaces(req.user._id, true) .then((spaces) => { - if (spaces.length) { - const spaceIds = spaces.map((space) => space._id); - - return Promise.all([ - mongo.Cluster.remove({space: {$in: spaceIds}}).exec(), - mongo.Cache.remove({space: {$in: spaceIds}}).exec(), - mongo.DomainModel.remove({space: {$in: spaceIds}}).exec(), - mongo.Igfs.remove({space: {$in: spaceIds}}).exec() - ]).then(() => spaces[0]); - } + const spaceIds = _.map(spaces, '_id'); + + return spacesService.cleanUp(spaceIds) + .then(() => mongo.Space.remove({_id: {$in: _.tail(spaceIds)}}).exec()) + .then(() => _.head(spaces)); }) .catch((err) => { if (err instanceof errors.MissingResourceException) return spacesService.createDemoSpace(req.user._id); + + throw err; }) .then((space) => { return Promise.all(_.map(clusters, (cluster) => { http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/routes/profile.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/routes/profile.js b/modules/web-console/backend/routes/profile.js index 4d01cda..1d6fccb 100644 --- a/modules/web-console/backend/routes/profile.js +++ b/modules/web-console/backend/routes/profile.js @@ -45,7 +45,7 @@ module.exports.factory = function(_, express, mongo, usersService) { usersService.save(req.body) .then((user) => { - const becomeUsed = req.session.viewedUser && user.admin; + const becomeUsed = req.session.viewedUser && req.user.admin; if (becomeUsed) { req.session.viewedUser = user; @@ -64,6 +64,7 @@ module.exports.factory = function(_, express, mongo, usersService) { }); }); }) + .then(() => usersService.get(req.user, req.session.viewedUser)) .then(res.api.ok) .catch(res.api.error); }); http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/services/notebooks.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/services/notebooks.js b/modules/web-console/backend/services/notebooks.js index 8846d8e..9aa2c38 100644 --- a/modules/web-console/backend/services/notebooks.js +++ b/modules/web-console/backend/services/notebooks.js @@ -34,12 +34,14 @@ module.exports = { module.exports.factory = (_, mongo, spacesService, errors) => { /** * Convert remove status operation to own presentation. + * * @param {RemoveResult} result - The results of remove operation. */ const convertRemoveStatus = ({result}) => ({rowsAffected: result.n}); /** - * Update existing notebook + * Update existing notebook. + * * @param {Object} notebook - The notebook for updating * @returns {Promise.} that resolves cache id */ @@ -53,6 +55,7 @@ module.exports.factory = (_, mongo, spacesService, errors) => { /** * Create new notebook. + * * @param {Object} notebook - The notebook for creation. * @returns {Promise.} that resolves cache id. */ @@ -67,6 +70,7 @@ module.exports.factory = (_, mongo, spacesService, errors) => { class NotebooksService { /** * Create or update Notebook. + * * @param {Object} notebook - The Notebook * @returns {Promise.} that resolves Notebook id of merge operation. */ @@ -78,16 +82,18 @@ module.exports.factory = (_, mongo, spacesService, errors) => { } /** - * Get caches by spaces. + * Get notebooks by spaces. + * * @param {mongo.ObjectId|String} spaceIds - The spaces ids that own caches. - * @returns {Promise.} - contains requested caches. + * @returns {Promise.} - contains requested caches. */ static listBySpaces(spaceIds) { return mongo.Notebook.find({space: {$in: spaceIds}}).sort('name').lean().exec(); } /** - * Remove Notebook. + * Remove notebook. + * * @param {mongo.ObjectId|String} notebookId - The Notebook id for remove. * @returns {Promise.<{rowsAffected}>} - The number of affected rows. */ http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/services/sessions.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/services/sessions.js b/modules/web-console/backend/services/sessions.js index ff0e303..7f62a60 100644 --- a/modules/web-console/backend/services/sessions.js +++ b/modules/web-console/backend/services/sessions.js @@ -38,11 +38,11 @@ module.exports.factory = (_, mongo, errors) => { * @param {mongo.ObjectId|String} viewedUserId - id of user to become. */ static become(session, viewedUserId) { + if (!session.req.user.admin) + return Promise.reject(new errors.IllegalAccessError('Became this user is not permitted. Only administrators can perform this actions.')); + return mongo.Account.findById(viewedUserId).lean().exec() .then((viewedUser) => { - if (!session.req.user.admin) - throw new errors.IllegalAccessError('Became this user is not permitted. Only administrators can perform this actions.'); - viewedUser.token = session.req.user.token; session.viewedUser = viewedUser; http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/backend/services/spaces.js ---------------------------------------------------------------------- diff --git a/modules/web-console/backend/services/spaces.js b/modules/web-console/backend/services/spaces.js index 863d57c..85f346e 100644 --- a/modules/web-console/backend/services/spaces.js +++ b/modules/web-console/backend/services/spaces.js @@ -68,6 +68,21 @@ module.exports.factory = (mongo, errors) => { static createDemoSpace(userId) { return new mongo.Space({name: 'Demo space', owner: userId, demo: true}).save(); } + + /** + * Clean up spaces. + * + * @param {mongo.ObjectId|String} spaceIds - The space ids for clean up. + * @returns {Promise.<>} + */ + static cleanUp(spaceIds) { + return Promise.all([ + mongo.Cluster.remove({space: {$in: spaceIds}}).exec(), + mongo.Cache.remove({space: {$in: spaceIds}}).exec(), + mongo.DomainModel.remove({space: {$in: spaceIds}}).exec(), + mongo.Igfs.remove({space: {$in: spaceIds}}).exec() + ]); + } } return SpacesService; http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/app.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/app.js b/modules/web-console/frontend/app/app.js index 3510743..4ecd9b5 100644 --- a/modules/web-console/frontend/app/app.js +++ b/modules/web-console/frontend/app/app.js @@ -99,11 +99,6 @@ import domainsValidation from './filters/domainsValidation.filter'; import duration from './filters/duration.filter'; import hasPojo from './filters/hasPojo.filter'; -// Generators -import $generatorOptional from './modules/configuration/generator/generator-optional'; - -window.$generatorOptional = $generatorOptional; - // Controllers import admin from 'controllers/admin-controller'; import caches from 'controllers/caches-controller'; http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/controllers/reset-password.controller.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/controllers/reset-password.controller.js b/modules/web-console/frontend/app/controllers/reset-password.controller.js index da0c37b..f84a876 100644 --- a/modules/web-console/frontend/app/controllers/reset-password.controller.js +++ b/modules/web-console/frontend/app/controllers/reset-password.controller.js @@ -21,10 +21,10 @@ export default ['resetPassword', [ ($scope, $modal, $http, $state, Messages, Focus) => { if ($state.params.token) { $http.post('/api/v1/password/validate/token', {token: $state.params.token}) - .success((res) => { - $scope.email = res.email; - $scope.token = res.token; - $scope.error = res.error; + .then(({data}) => { + $scope.email = data.email; + $scope.token = data.token; + $scope.error = data.error; if ($scope.token && !$scope.error) Focus.move('user_password'); @@ -34,16 +34,16 @@ export default ['resetPassword', [ // Try to reset user password for provided token. $scope.resetPassword = (reset_info) => { $http.post('/api/v1/password/reset', reset_info) - .success(() => { + .then(() => { $state.go('signin'); Messages.showInfo('Password successfully changed'); }) - .error((err, state) => { + .catch(({data, state}) => { if (state === 503) $state.go('signin'); - Messages.showError(err); + Messages.showError(data); }); }; } http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/data/event-groups.json ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/data/event-groups.json b/modules/web-console/frontend/app/data/event-groups.json new file mode 100644 index 0000000..8d0c878 --- /dev/null +++ b/modules/web-console/frontend/app/data/event-groups.json @@ -0,0 +1,169 @@ +[ + { + "label": "EVTS_CHECKPOINT", + "value": "EVTS_CHECKPOINT", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_CHECKPOINT_SAVED", + "EVT_CHECKPOINT_LOADED", + "EVT_CHECKPOINT_REMOVED" + ] + }, + { + "label": "EVTS_DEPLOYMENT", + "value": "EVTS_DEPLOYMENT", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_CLASS_DEPLOYED", + "EVT_CLASS_UNDEPLOYED", + "EVT_CLASS_DEPLOY_FAILED", + "EVT_TASK_DEPLOYED", + "EVT_TASK_UNDEPLOYED", + "EVT_TASK_DEPLOY_FAILED" + ] + }, + { + "label": "EVTS_ERROR", + "value": "EVTS_ERROR", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_JOB_TIMEDOUT", + "EVT_JOB_FAILED", + "EVT_JOB_FAILED_OVER", + "EVT_JOB_REJECTED", + "EVT_JOB_CANCELLED", + "EVT_TASK_TIMEDOUT", + "EVT_TASK_FAILED", + "EVT_CLASS_DEPLOY_FAILED", + "EVT_TASK_DEPLOY_FAILED", + "EVT_TASK_DEPLOYED", + "EVT_TASK_UNDEPLOYED", + "EVT_CACHE_REBALANCE_STARTED", + "EVT_CACHE_REBALANCE_STOPPED" + ] + }, + { + "label": "EVTS_DISCOVERY", + "value": "EVTS_DISCOVERY", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_NODE_JOINED", + "EVT_NODE_LEFT", + "EVT_NODE_FAILED", + "EVT_NODE_SEGMENTED", + "EVT_CLIENT_NODE_DISCONNECTED", + "EVT_CLIENT_NODE_RECONNECTED" + ] + }, + { + "label": "EVTS_JOB_EXECUTION", + "value": "EVTS_JOB_EXECUTION", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_JOB_MAPPED", + "EVT_JOB_RESULTED", + "EVT_JOB_FAILED_OVER", + "EVT_JOB_STARTED", + "EVT_JOB_FINISHED", + "EVT_JOB_TIMEDOUT", + "EVT_JOB_REJECTED", + "EVT_JOB_FAILED", + "EVT_JOB_QUEUED", + "EVT_JOB_CANCELLED" + ] + }, + { + "label": "EVTS_TASK_EXECUTION", + "value": "EVTS_TASK_EXECUTION", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_TASK_STARTED", + "EVT_TASK_FINISHED", + "EVT_TASK_FAILED", + "EVT_TASK_TIMEDOUT", + "EVT_TASK_SESSION_ATTR_SET", + "EVT_TASK_REDUCED" + ] + }, + { + "label": "EVTS_CACHE", + "value": "EVTS_CACHE", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_CACHE_ENTRY_CREATED", + "EVT_CACHE_ENTRY_DESTROYED", + "EVT_CACHE_OBJECT_PUT", + "EVT_CACHE_OBJECT_READ", + "EVT_CACHE_OBJECT_REMOVED", + "EVT_CACHE_OBJECT_LOCKED", + "EVT_CACHE_OBJECT_UNLOCKED", + "EVT_CACHE_OBJECT_SWAPPED", + "EVT_CACHE_OBJECT_UNSWAPPED", + "EVT_CACHE_OBJECT_EXPIRED" + ] + }, + { + "label": "EVTS_CACHE_REBALANCE", + "value": "EVTS_CACHE_REBALANCE", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_CACHE_REBALANCE_STARTED", + "EVT_CACHE_REBALANCE_STOPPED", + "EVT_CACHE_REBALANCE_PART_LOADED", + "EVT_CACHE_REBALANCE_PART_UNLOADED", + "EVT_CACHE_REBALANCE_OBJECT_LOADED", + "EVT_CACHE_REBALANCE_OBJECT_UNLOADED", + "EVT_CACHE_REBALANCE_PART_DATA_LOST" + ] + }, + { + "label": "EVTS_CACHE_LIFECYCLE", + "value": "EVTS_CACHE_LIFECYCLE", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_CACHE_STARTED", + "EVT_CACHE_STOPPED", + "EVT_CACHE_NODES_LEFT" + ] + }, + { + "label": "EVTS_CACHE_QUERY", + "value": "EVTS_CACHE_QUERY", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_CACHE_QUERY_EXECUTED", + "EVT_CACHE_QUERY_OBJECT_READ" + ] + }, + { + "label": "EVTS_SWAPSPACE", + "value": "EVTS_SWAPSPACE", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_SWAP_SPACE_CLEARED", + "EVT_SWAP_SPACE_DATA_REMOVED", + "EVT_SWAP_SPACE_DATA_READ", + "EVT_SWAP_SPACE_DATA_STORED", + "EVT_SWAP_SPACE_DATA_EVICTED" + ] + }, + { + "label": "EVTS_IGFS", + "value": "EVTS_IGFS", + "class": "org.apache.ignite.events.EventType", + "events": [ + "EVT_IGFS_FILE_CREATED", + "EVT_IGFS_FILE_RENAMED", + "EVT_IGFS_FILE_DELETED", + "EVT_IGFS_FILE_OPENED_READ", + "EVT_IGFS_FILE_OPENED_WRITE", + "EVT_IGFS_FILE_CLOSED_WRITE", + "EVT_IGFS_FILE_CLOSED_READ", + "EVT_IGFS_FILE_PURGED", + "EVT_IGFS_META_UPDATED", + "EVT_IGFS_DIR_CREATED", + "EVT_IGFS_DIR_RENAMED", + "EVT_IGFS_DIR_DELETED" + ] + } +] http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/data/event-types.json ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/data/event-types.json b/modules/web-console/frontend/app/data/event-types.json deleted file mode 100644 index 8d0c878..0000000 --- a/modules/web-console/frontend/app/data/event-types.json +++ /dev/null @@ -1,169 +0,0 @@ -[ - { - "label": "EVTS_CHECKPOINT", - "value": "EVTS_CHECKPOINT", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_CHECKPOINT_SAVED", - "EVT_CHECKPOINT_LOADED", - "EVT_CHECKPOINT_REMOVED" - ] - }, - { - "label": "EVTS_DEPLOYMENT", - "value": "EVTS_DEPLOYMENT", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_CLASS_DEPLOYED", - "EVT_CLASS_UNDEPLOYED", - "EVT_CLASS_DEPLOY_FAILED", - "EVT_TASK_DEPLOYED", - "EVT_TASK_UNDEPLOYED", - "EVT_TASK_DEPLOY_FAILED" - ] - }, - { - "label": "EVTS_ERROR", - "value": "EVTS_ERROR", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_JOB_TIMEDOUT", - "EVT_JOB_FAILED", - "EVT_JOB_FAILED_OVER", - "EVT_JOB_REJECTED", - "EVT_JOB_CANCELLED", - "EVT_TASK_TIMEDOUT", - "EVT_TASK_FAILED", - "EVT_CLASS_DEPLOY_FAILED", - "EVT_TASK_DEPLOY_FAILED", - "EVT_TASK_DEPLOYED", - "EVT_TASK_UNDEPLOYED", - "EVT_CACHE_REBALANCE_STARTED", - "EVT_CACHE_REBALANCE_STOPPED" - ] - }, - { - "label": "EVTS_DISCOVERY", - "value": "EVTS_DISCOVERY", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_NODE_JOINED", - "EVT_NODE_LEFT", - "EVT_NODE_FAILED", - "EVT_NODE_SEGMENTED", - "EVT_CLIENT_NODE_DISCONNECTED", - "EVT_CLIENT_NODE_RECONNECTED" - ] - }, - { - "label": "EVTS_JOB_EXECUTION", - "value": "EVTS_JOB_EXECUTION", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_JOB_MAPPED", - "EVT_JOB_RESULTED", - "EVT_JOB_FAILED_OVER", - "EVT_JOB_STARTED", - "EVT_JOB_FINISHED", - "EVT_JOB_TIMEDOUT", - "EVT_JOB_REJECTED", - "EVT_JOB_FAILED", - "EVT_JOB_QUEUED", - "EVT_JOB_CANCELLED" - ] - }, - { - "label": "EVTS_TASK_EXECUTION", - "value": "EVTS_TASK_EXECUTION", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_TASK_STARTED", - "EVT_TASK_FINISHED", - "EVT_TASK_FAILED", - "EVT_TASK_TIMEDOUT", - "EVT_TASK_SESSION_ATTR_SET", - "EVT_TASK_REDUCED" - ] - }, - { - "label": "EVTS_CACHE", - "value": "EVTS_CACHE", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_CACHE_ENTRY_CREATED", - "EVT_CACHE_ENTRY_DESTROYED", - "EVT_CACHE_OBJECT_PUT", - "EVT_CACHE_OBJECT_READ", - "EVT_CACHE_OBJECT_REMOVED", - "EVT_CACHE_OBJECT_LOCKED", - "EVT_CACHE_OBJECT_UNLOCKED", - "EVT_CACHE_OBJECT_SWAPPED", - "EVT_CACHE_OBJECT_UNSWAPPED", - "EVT_CACHE_OBJECT_EXPIRED" - ] - }, - { - "label": "EVTS_CACHE_REBALANCE", - "value": "EVTS_CACHE_REBALANCE", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_CACHE_REBALANCE_STARTED", - "EVT_CACHE_REBALANCE_STOPPED", - "EVT_CACHE_REBALANCE_PART_LOADED", - "EVT_CACHE_REBALANCE_PART_UNLOADED", - "EVT_CACHE_REBALANCE_OBJECT_LOADED", - "EVT_CACHE_REBALANCE_OBJECT_UNLOADED", - "EVT_CACHE_REBALANCE_PART_DATA_LOST" - ] - }, - { - "label": "EVTS_CACHE_LIFECYCLE", - "value": "EVTS_CACHE_LIFECYCLE", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_CACHE_STARTED", - "EVT_CACHE_STOPPED", - "EVT_CACHE_NODES_LEFT" - ] - }, - { - "label": "EVTS_CACHE_QUERY", - "value": "EVTS_CACHE_QUERY", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_CACHE_QUERY_EXECUTED", - "EVT_CACHE_QUERY_OBJECT_READ" - ] - }, - { - "label": "EVTS_SWAPSPACE", - "value": "EVTS_SWAPSPACE", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_SWAP_SPACE_CLEARED", - "EVT_SWAP_SPACE_DATA_REMOVED", - "EVT_SWAP_SPACE_DATA_READ", - "EVT_SWAP_SPACE_DATA_STORED", - "EVT_SWAP_SPACE_DATA_EVICTED" - ] - }, - { - "label": "EVTS_IGFS", - "value": "EVTS_IGFS", - "class": "org.apache.ignite.events.EventType", - "events": [ - "EVT_IGFS_FILE_CREATED", - "EVT_IGFS_FILE_RENAMED", - "EVT_IGFS_FILE_DELETED", - "EVT_IGFS_FILE_OPENED_READ", - "EVT_IGFS_FILE_OPENED_WRITE", - "EVT_IGFS_FILE_CLOSED_WRITE", - "EVT_IGFS_FILE_CLOSED_READ", - "EVT_IGFS_FILE_PURGED", - "EVT_IGFS_META_UPDATED", - "EVT_IGFS_DIR_CREATED", - "EVT_IGFS_DIR_RENAMED", - "EVT_IGFS_DIR_DELETED" - ] - } -] http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/data/pom-dependencies.json ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/data/pom-dependencies.json b/modules/web-console/frontend/app/data/pom-dependencies.json index acf2bc8..7d2bed0 100644 --- a/modules/web-console/frontend/app/data/pom-dependencies.json +++ b/modules/web-console/frontend/app/data/pom-dependencies.json @@ -10,11 +10,11 @@ "HadoopIgfsJcl": {"artifactId": "ignite-hadoop"}, "SLF4J": {"artifactId": "ignite-slf4j"}, - "Generic": {"groupId": "com.mchange", "artifactId": "c3p0", "version": "0.9.5.1"}, - "MySQL": {"groupId": "mysql", "artifactId": "mysql-connector-java", "version": "5.1.37"}, - "PostgreSQL": {"groupId": "org.postgresql", "artifactId": "postgresql", "version": "9.4-1204-jdbc42"}, + "Generic": {"groupId": "com.mchange", "artifactId": "c3p0", "version": "0.9.5.2"}, + "MySQL": {"groupId": "mysql", "artifactId": "mysql-connector-java", "version": "5.1.40"}, + "PostgreSQL": {"groupId": "org.postgresql", "artifactId": "postgresql", "version": "9.4.1212.jre7"}, "H2": {"groupId": "com.h2database", "artifactId": "h2", "version": "1.4.191"}, - "Oracle": {"groupId": "oracle", "artifactId": "jdbc", "version": "11.2", "jar": "ojdbc6.jar"}, - "DB2": {"groupId": "ibm", "artifactId": "jdbc", "version": "4.19.26", "jar": "db2jcc4.jar"}, - "SQLServer": {"groupId": "microsoft", "artifactId": "jdbc", "version": "4.1", "jar": "sqljdbc41.jar"} + "Oracle": {"groupId": "com.oracle.jdbc", "artifactId": "ojdbc7", "version": "12.1.0.2", "jar": "ojdbc7.jar"}, + "DB2": {"groupId": "ibm", "artifactId": "jdbc", "version": "4.21.29", "jar": "db2jcc4.jar"}, + "SQLServer": {"groupId": "microsoft", "artifactId": "jdbc", "version": "4.2", "jar": "sqljdbc41.jar"} } http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.controller.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.controller.js b/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.controller.js index 32feaf3..de335ae 100644 --- a/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.controller.js +++ b/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.controller.js @@ -15,7 +15,7 @@ * limitations under the License. */ -export default ['$scope', 'GeneratorDocker', function($scope, docker) { +export default ['$scope', 'IgniteDockerGenerator', function($scope, docker) { const ctrl = this; // Watchers definition. http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.jade b/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.jade index 3b0e7b8..3a24cfb 100644 --- a/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.jade +++ b/modules/web-console/frontend/app/directives/ui-ace-docker/ui-ace-docker.jade @@ -20,7 +20,7 @@ mixin hard-link(ref, txt) .panel-details-noborder .details-row p - +hard-link('https://docs.docker.com/reference/builder', 'Docker') + +hard-link('https://docs.docker.com/engine/reference/builder/', 'Docker') |  file is a text file with instructions to create Docker image.
| To build image you have to store following Docker file with your Ignite XML configuration to the same directory.
| Also you could use predefined  http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/directives/ui-ace-pojos/ui-ace-pojos.controller.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/directives/ui-ace-pojos/ui-ace-pojos.controller.js b/modules/web-console/frontend/app/directives/ui-ace-pojos/ui-ace-pojos.controller.js index 4e11874..61bf086 100644 --- a/modules/web-console/frontend/app/directives/ui-ace-pojos/ui-ace-pojos.controller.js +++ b/modules/web-console/frontend/app/directives/ui-ace-pojos/ui-ace-pojos.controller.js @@ -30,7 +30,7 @@ export default ['$scope', 'JavaTypes', 'JavaTransformer', function($scope, JavaT const updatePojos = () => { delete ctrl.pojos; - if (!ctrl.cluster || !ctrl.cluster.caches) + if (_.isNil(ctrl.cluster) || _.isEmpty(ctrl.cluster.caches)) return; ctrl.pojos = generator.pojos(ctrl.cluster.caches, ctrl.useConstructor, ctrl.includeKeyFields); @@ -46,7 +46,7 @@ export default ['$scope', 'JavaTypes', 'JavaTransformer', function($scope, JavaT const classes = ctrl.classes = []; _.forEach(ctrl.pojos, (pojo) => { - if (pojo.keyType && JavaTypes.nonBuiltInClass(pojo.keyType)) + if (_.nonNil(pojo.keyClass)) classes.push(pojo.keyType); classes.push(pojo.valueType); @@ -55,17 +55,17 @@ export default ['$scope', 'JavaTypes', 'JavaTransformer', function($scope, JavaT // Update pojos class. const updateClass = (value) => { - if (!value || !ctrl.pojos.length) + if (_.isEmpty(value)) return; - const keyType = ctrl.pojos[0].keyType; + const pojo = value[0]; - ctrl.class = ctrl.class || (JavaTypes.nonBuiltInClass(keyType) ? keyType : null) || ctrl.pojos[0].valueType; + ctrl.class = ctrl.class || (pojo.keyClass ? pojo.keyType : pojo.valueType); }; // Update pojos data. const updatePojosData = (value) => { - if (!value) + if (_.isNil(value)) return; _.forEach(ctrl.pojos, (pojo) => { http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/directives/ui-ace-pom/ui-ace-pom.controller.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/directives/ui-ace-pom/ui-ace-pom.controller.js b/modules/web-console/frontend/app/directives/ui-ace-pom/ui-ace-pom.controller.js index 2bf78c3..477cf20 100644 --- a/modules/web-console/frontend/app/directives/ui-ace-pom/ui-ace-pom.controller.js +++ b/modules/web-console/frontend/app/directives/ui-ace-pom/ui-ace-pom.controller.js @@ -15,7 +15,7 @@ * limitations under the License. */ -export default ['$scope', 'GeneratorPom', 'IgniteVersion', function($scope, pom, Version) { +export default ['$scope', 'IgniteMavenGenerator', 'IgniteVersion', function($scope, maven, Version) { const ctrl = this; // Watchers definition. @@ -25,7 +25,7 @@ export default ['$scope', 'GeneratorPom', 'IgniteVersion', function($scope, pom, if (!value) return; - ctrl.data = pom.generate($scope.cluster, Version.productVersion().ignite).asString(); + ctrl.data = maven.generate($scope.cluster, Version.productVersion().ignite).asString(); }; // Setup watchers. http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.jade b/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.jade index 298db52..33af6d1 100644 --- a/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.jade +++ b/modules/web-console/frontend/app/helpers/jade/form/form-field-dropdown.jade @@ -28,7 +28,7 @@ mixin ignite-form-field-dropdown(label, model, name, disabled, required, multipl data-ng-disabled=disabled && '#{disabled}' || '!#{options}.length' bs-select - bs-options='item.value as item.label for item in #{options}' + bs-options='item.value as item.label for item in #{options}' data-multiple=multiple ? '1' : false data-container='body > .wrapper' @@ -41,7 +41,8 @@ mixin ignite-form-field-dropdown(label, model, name, disabled, required, multipl .ignite-form-field +ignite-form-field__label(label, name, required) .ignite-form-field__control - i.tipField.icon-help(bs-tooltip='' data-title=tip) + if tip + i.tipField.icon-help(bs-tooltip='' data-title=tip) if block block http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/helpers/jade/form/form-field-number.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-number.jade b/modules/web-console/frontend/app/helpers/jade/form/form-field-number.jade index d48343c..58b0dcd 100644 --- a/modules/web-console/frontend/app/helpers/jade/form/form-field-number.jade +++ b/modules/web-console/frontend/app/helpers/jade/form/form-field-number.jade @@ -38,7 +38,8 @@ mixin ignite-form-field-number(label, model, name, disabled, required, placehold .ignite-form-field +ignite-form-field__label(label, name, required) .ignite-form-field__control - i.tipField.icon-help(bs-tooltip='' data-title=tip) + if tip + i.tipField.icon-help(bs-tooltip='' data-title=tip) +form-field-feedback(name, 'required', 'This field could not be empty') +form-field-feedback(name, 'min', 'Value is less than allowable minimum: '+ min || 0) http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/helpers/jade/form/form-field-text.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/helpers/jade/form/form-field-text.jade b/modules/web-console/frontend/app/helpers/jade/form/form-field-text.jade index 136d23b..1f93d3b 100644 --- a/modules/web-console/frontend/app/helpers/jade/form/form-field-text.jade +++ b/modules/web-console/frontend/app/helpers/jade/form/form-field-text.jade @@ -30,13 +30,30 @@ mixin ignite-form-field-input(name, model, disabled, required, placeholder) data-ignite-form-panel-field='' )&attributes(attributes ? attributes.attributes ? attributes.attributes : attributes: {}) +mixin ignite-form-field-url-input(name, model, disabled, required, placeholder) + input.form-control( + id='{{ #{name} }}Input' + name='{{ #{name} }}' + placeholder=placeholder + type='url' + + data-ng-model=model + + data-ng-required=required && '#{required}' + data-ng-disabled=disabled && '#{disabled}' + data-ng-focus='tableReset()' + + data-ignite-form-panel-field='' + )&attributes(attributes ? attributes.attributes ? attributes.attributes : attributes: {}) + mixin ignite-form-field-text(label, model, name, disabled, required, placeholder, tip) -var errLbl = label.substring(0, label.length - 1) .ignite-form-field +ignite-form-field__label(label, name, required) .ignite-form-field__control - i.tipField.icon-help(bs-tooltip='' data-title=tip) + if tip + i.tipField.icon-help(bs-tooltip='' data-title=tip) if block block http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/helpers/jade/mixins.jade ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/helpers/jade/mixins.jade b/modules/web-console/frontend/app/helpers/jade/mixins.jade index 92af1b0..6ca41f6 100644 --- a/modules/web-console/frontend/app/helpers/jade/mixins.jade +++ b/modules/web-console/frontend/app/helpers/jade/mixins.jade @@ -183,6 +183,14 @@ mixin text-enabled(lbl, model, name, enabled, required, placeholder, tip) if block block +//- Mixin for text field with autofocus. +mixin text-enabled-autofocus(lbl, model, name, enabled, required, placeholder, tip) + +ignite-form-field-text(lbl, model, name, enabledToDisabled(enabled), required, placeholder, tip)( + data-ignite-form-field-input-autofocus='true' + ) + if block + block + //- Mixin for text field. mixin text(lbl, model, name, required, placeholder, tip) +ignite-form-field-text(lbl, model, name, false, required, placeholder, tip) @@ -221,12 +229,28 @@ mixin dropdown-required-empty(lbl, model, name, enabled, required, placeholder, if block block +//- Mixin for required dropdown field with autofocus. +mixin dropdown-required-empty-autofocus(lbl, model, name, enabled, required, placeholder, placeholderEmpty, options, tip) + +ignite-form-field-dropdown(lbl, model, name, enabledToDisabled(enabled), required, false, placeholder, placeholderEmpty, options, tip)( + data-ignite-form-field-input-autofocus='true' + ) + if block + block + //- Mixin for required dropdown field. mixin dropdown-required(lbl, model, name, enabled, required, placeholder, options, tip) +ignite-form-field-dropdown(lbl, model, name, enabledToDisabled(enabled), required, false, placeholder, '', options, tip) if block block +//- Mixin for required dropdown field with autofocus. +mixin dropdown-required-autofocus(lbl, model, name, enabled, required, placeholder, options, tip) + +ignite-form-field-dropdown(lbl, model, name, enabledToDisabled(enabled), required, false, placeholder, '', options, tip)( + data-ignite-form-field-input-autofocus='true' + ) + if block + block + //- Mixin for dropdown field. mixin dropdown(lbl, model, name, enabled, placeholder, options, tip) +ignite-form-field-dropdown(lbl, model, name, enabledToDisabled(enabled), false, false, placeholder, '', options, tip) @@ -324,6 +348,28 @@ mixin table-java-package-field(name, model, items, valid, save, newItem) ignite-on-escape=onEscape ) +//- Mixin for table java package field. +mixin table-url-field(name, model, items, valid, save, newItem) + -var resetOnEnter = newItem ? '(stopblur = true) && (group.add = [{}])' : '(field.edit = false)' + -var onEnter = valid + ' && (' + save + '); ' + valid + ' && ' + resetOnEnter + ';' + + -var onEscape = newItem ? 'group.add = []' : 'field.edit = false' + + -var resetOnBlur = newItem ? '!stopblur && (group.add = [])' : 'field.edit = false' + -var onBlur = valid + ' && ( ' + save + '); ' + resetOnBlur + ';' + + div(ignite-on-focus-out=onBlur) + if block + block + + .input-tip + +ignite-form-field-url-input(name, model, false, 'true', 'Enter URL')( + data-ignite-unique=items + data-ignite-form-field-input-autofocus='true' + + ignite-on-enter=onEnter + ignite-on-escape=onEscape + ) //- Mixin for table address field. mixin table-address-field(name, model, items, valid, save, newItem, portRange) @@ -393,17 +439,17 @@ mixin table-save-button(valid, save, newItem) ) //- Mixin for table remove button. -mixin table-remove-conditional-button(items, show, tip) +mixin table-remove-conditional-button(items, show, tip, row) i.tipField.fa.fa-remove( ng-hide='!#{show} || field.edit' bs-tooltip data-title=tip - ng-click='#{items}.splice(#{items}.indexOf(model), 1)' + ng-click='#{items}.splice(#{items}.indexOf(#{row}), 1)' ) //- Mixin for table remove button. mixin table-remove-button(items, tip) - +table-remove-conditional-button(items, 'true', tip) + +table-remove-conditional-button(items, 'true', tip, 'model') //- Mixin for cache mode. mixin cacheMode(lbl, model, name, placeholder) http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/modules/Demo/Demo.module.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/Demo/Demo.module.js b/modules/web-console/frontend/app/modules/Demo/Demo.module.js index 83d55ed..a3700ca 100644 --- a/modules/web-console/frontend/app/modules/Demo/Demo.module.js +++ b/modules/web-console/frontend/app/modules/Demo/Demo.module.js @@ -41,11 +41,11 @@ angular url: '/demo/reset', controller: ['$state', '$http', 'IgniteMessages', ($state, $http, Messages) => { $http.post('/api/v1/demo/reset') - .success(() => $state.go('base.configuration.clusters')) - .error((err) => { + .then(() => $state.go('base.configuration.clusters')) + .catch((res) => { $state.go('base.configuration.clusters'); - Messages.showError(err); + Messages.showError(res); }); }], metaTags: {} http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/modules/configuration/EventGroups.provider.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/configuration/EventGroups.provider.js b/modules/web-console/frontend/app/modules/configuration/EventGroups.provider.js deleted file mode 100644 index 61f3188..0000000 --- a/modules/web-console/frontend/app/modules/configuration/EventGroups.provider.js +++ /dev/null @@ -1,30 +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. - */ - -// Events groups. -import GROUPS from 'app/data/event-types.json'; - -export default ['igniteEventGroups', function() { - const groups = GROUPS; - - this.push = (data) => groups.push(data); - - this.$get = [() => { - return groups; - }]; -}]; - http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/modules/configuration/Version.service.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/configuration/Version.service.js b/modules/web-console/frontend/app/modules/configuration/Version.service.js index 06efdda..f0e9c4c 100644 --- a/modules/web-console/frontend/app/modules/configuration/Version.service.js +++ b/modules/web-console/frontend/app/modules/configuration/Version.service.js @@ -22,7 +22,7 @@ const VERSION_MATCHER = /(\d+)\.(\d+)\.(\d+)([-.]([^0123456789][^-]+)(-SNAPSHOT) const numberComparator = (a, b) => a > b ? 1 : a < b ? -1 : 0; -export default class Version { +export default class IgniteVersion { /** * Tries to parse product version from it's string representation. * @@ -70,7 +70,7 @@ export default class Version { if (res !== 0) return res; - return numberComparator(pa.revTs, pb.maintenance); + return numberComparator(pa.revTs, pb.revTs); } /** @@ -79,7 +79,7 @@ export default class Version { */ productVersion() { return { - ignite: '1.7.0' + ignite: '1.8.0' }; } http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/modules/configuration/configuration.module.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/configuration/configuration.module.js b/modules/web-console/frontend/app/modules/configuration/configuration.module.js index 27f7bef..4288ff7 100644 --- a/modules/web-console/frontend/app/modules/configuration/configuration.module.js +++ b/modules/web-console/frontend/app/modules/configuration/configuration.module.js @@ -17,26 +17,28 @@ import angular from 'angular'; -import igniteEventGroups from './EventGroups.provider'; + import igniteSidebar from './Sidebar.provider'; -import Version from './Version.service'; +import IgniteVersion from './Version.service'; -import clusterDefaults from './generator/defaults/cluster.provider'; -import clusterPlatformDefaults from './generator/defaults/cluster.platform.provider'; -import cacheDefaults from './generator/defaults/cache.provider'; -import cachePlatformDefaults from './generator/defaults/cache.platform.provider'; -import igfsDefaults from './generator/defaults/igfs.provider'; +import IgniteClusterDefaults from './generator/defaults/Cluster.service'; +import IgniteClusterPlatformDefaults from './generator/defaults/Cluster.platform.service'; +import IgniteCacheDefaults from './generator/defaults/Cache.service'; +import IgniteCachePlatformDefaults from './generator/defaults/Cache.platform.service'; +import IgniteIGFSDefaults from './generator/defaults/IGFS.service'; +import IgniteEventGroups from './generator/defaults/Event-groups.service'; -import ConfigurationGenerator from './generator/ConfigurationGenerator'; -import PlatformGenerator from './generator/PlatformGenerator'; +import IgniteConfigurationGenerator from './generator/ConfigurationGenerator'; +import IgnitePlatformGenerator from './generator/PlatformGenerator'; -import SpringTransformer from './generator/SpringTransformer.service'; -import JavaTransformer from './generator/JavaTransformer.service'; +import IgniteSpringTransformer from './generator/SpringTransformer.service'; +import IgniteJavaTransformer from './generator/JavaTransformer.service'; import SharpTransformer from './generator/SharpTransformer.service'; -import GeneratorDocker from './generator/Docker.service'; -import GeneratorPom from './generator/Pom.service'; -import GeneratorProperties from './generator/Properties.service'; -import GeneratorReadme from './generator/Readme.service'; +import IgniteDockerGenerator from './generator/Docker.service'; +import IgniteMavenGenerator from './generator/Maven.service'; +import IgniteGeneratorProperties from './generator/Properties.service'; +import IgniteReadmeGenerator from './generator/Readme.service'; +import IgniteCustomGenerator from './generator/Custom.service'; import igniteSidebarDirective from './sidebar.directive'; @@ -45,21 +47,22 @@ angular .module('ignite-console.configuration', [ ]) -.provider('igniteClusterDefaults', clusterDefaults) -.provider('igniteClusterPlatformDefaults', clusterPlatformDefaults) -.provider('igniteCacheDefaults', cacheDefaults) -.provider('igniteCachePlatformDefaults', cachePlatformDefaults) -.provider('igniteIgfsDefaults', igfsDefaults) -.provider(...igniteEventGroups) .provider(...igniteSidebar) .directive(...igniteSidebarDirective) -.service('IgniteVersion', Version) -.service('IgniteConfigurationGenerator', ConfigurationGenerator) -.service('IgnitePlatformGenerator', PlatformGenerator) -.service('SpringTransformer', SpringTransformer) -.service('JavaTransformer', JavaTransformer) +.service('IgniteConfigurationGenerator', IgniteConfigurationGenerator) +.service('IgnitePlatformGenerator', IgnitePlatformGenerator) +.service('SpringTransformer', IgniteSpringTransformer) +.service('JavaTransformer', IgniteJavaTransformer) .service('IgniteSharpTransformer', SharpTransformer) -.service('IgnitePropertiesGenerator', GeneratorProperties) -.service('IgniteReadmeGenerator', GeneratorReadme) -.service(...GeneratorDocker) -.service(...GeneratorPom); +.service('IgniteVersion', IgniteVersion) +.service('IgniteEventGroups', IgniteEventGroups) +.service('IgniteClusterDefaults', IgniteClusterDefaults) +.service('IgniteClusterPlatformDefaults', IgniteClusterPlatformDefaults) +.service('IgniteCacheDefaults', IgniteCacheDefaults) +.service('IgniteCachePlatformDefaults', IgniteCachePlatformDefaults) +.service('IgniteIGFSDefaults', IgniteIGFSDefaults) +.service('IgnitePropertiesGenerator', IgniteGeneratorProperties) +.service('IgniteReadmeGenerator', IgniteReadmeGenerator) +.service('IgniteDockerGenerator', IgniteDockerGenerator) +.service('IgniteMavenGenerator', IgniteMavenGenerator) +.service('IgniteCustomGenerator', IgniteCustomGenerator); http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js b/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js index 6244a53..f5afe59 100644 --- a/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js +++ b/modules/web-console/frontend/app/modules/configuration/generator/AbstractTransformer.js @@ -17,7 +17,24 @@ import StringBuilder from './StringBuilder'; +import IgniteConfigurationGenerator from './ConfigurationGenerator'; +import IgniteEventGroups from './defaults/Event-groups.service'; + +import IgniteClusterDefaults from './defaults/Cluster.service'; +import IgniteCacheDefaults from './defaults/Cache.service'; +import IgniteIGFSDefaults from './defaults/IGFS.service'; + +import JavaTypes from '../../../services/JavaTypes.service'; + +const clusterDflts = new IgniteClusterDefaults(); +const cacheDflts = new IgniteCacheDefaults(); +const igfsDflts = new IgniteIGFSDefaults(); + export default class AbstractTransformer { + static generator = IgniteConfigurationGenerator; + static javaTypes = new JavaTypes(clusterDflts, cacheDflts, igfsDflts); + static eventGroups = new IgniteEventGroups(); + // Append comment with time stamp. static mainComment(sb, ...lines) { lines.push(sb.generatedBy()); http://git-wip-us.apache.org/repos/asf/ignite/blob/8e7c852b/modules/web-console/frontend/app/modules/configuration/generator/Beans.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/app/modules/configuration/generator/Beans.js b/modules/web-console/frontend/app/modules/configuration/generator/Beans.js index 2750626..ca19342 100644 --- a/modules/web-console/frontend/app/modules/configuration/generator/Beans.js +++ b/modules/web-console/frontend/app/modules/configuration/generator/Beans.js @@ -17,6 +17,11 @@ import _ from 'lodash'; +_.mixin({ + nonNil: _.negate(_.isNil), + nonEmpty: _.negate(_.isEmpty) +}); + export class EmptyBean { /** * @param {String} clsName