You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/07/20 09:06:50 UTC
[05/46] ignite git commit: Ignite Web Console speed up bundle rebuild
and watch. Minor fixes.
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/tasks/eslint.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/eslint.js b/modules/web-console/src/main/js/gulpfile.babel.js/tasks/eslint.js
deleted file mode 100644
index 2d60037..0000000
--- a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/eslint.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import gulp from 'gulp';
-import cache from 'gulp-cached';
-import eslint from 'gulp-eslint';
-import sequence from 'gulp-sequence';
-
-const paths = [
- './app/**/*.js',
- './controllers/**/*.js',
- './generator/**/*.js',
- './ignite_modules_temp/**/*.js',
- './gulpfile.babel.js/**/*.js',
- './gulpfile.babel.js/*.js'
-];
-
-gulp.task('eslint:node', () =>
- gulp.src('./serve/**/*.js')
- .pipe(cache('eslint:node'))
- .pipe(eslint({envs: ['node']}))
- .pipe(eslint.format())
-);
-
-gulp.task('eslint:browser', () =>
- gulp.src(paths)
- .pipe(cache('eslint:browser'))
- .pipe(eslint({envs: ['browser']}))
- .pipe(eslint.format())
-);
-
-gulp.task('eslint', (cb) => sequence('eslint:browser', 'eslint:node', cb));
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/tasks/ignite-modules.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/ignite-modules.js b/modules/web-console/src/main/js/gulpfile.babel.js/tasks/ignite-modules.js
index b1b1190..b97de7c 100644
--- a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/ignite-modules.js
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/tasks/ignite-modules.js
@@ -19,8 +19,7 @@ import gulp from 'gulp';
import inject from 'gulp-inject';
import clean from 'gulp-rimraf';
import sequence from 'gulp-sequence';
-
-import { appModulePaths, igniteModulesTemp } from '../paths';
+import {appModulePaths, igniteModulesTemp} from '../paths';
gulp.task('ignite:modules', (cb) => sequence('ignite:modules:copy', 'ignite:modules:inject', cb));
@@ -37,7 +36,7 @@ gulp.task('ignite:modules:inject', () =>
transform: (filePath) => {
const igniteModuleName = filePath.replace(/.*ignite_modules_temp\/([^\/]+).*/mgi, '$1');
- // return file contents as string
+ // Return file contents as string.
return `import './${igniteModuleName}/main';`;
}
}))
@@ -47,10 +46,10 @@ gulp.task('ignite:modules:inject', () =>
transform: (filePath, file, i) => {
const igniteModuleName = filePath.replace(/.*ignite_modules_temp\/([^\/]+).*/mgi, '$1');
- // return file contents as string
+ // Return file contents as string.
return (i ? ',' : '') + `'ignite-console.${igniteModuleName}'`;
}
}))
- .pipe(clean({ force: true }))
+ .pipe(clean({force: true}))
.pipe(gulp.dest(igniteModulesTemp))
);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/tasks/sass.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/sass.js b/modules/web-console/src/main/js/gulpfile.babel.js/tasks/sass.js
deleted file mode 100644
index 13dc502..0000000
--- a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/sass.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import gulp from 'gulp';
-import sass from 'gulp-sass';
-
-gulp.task('sass', () =>
- gulp.src('./public/stylesheets/style.scss')
- .pipe(sass({ outputStyle: 'nested' }).on('error', sass.logError))
- .pipe(gulp.dest('./public/stylesheets'))
-);
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/tasks/watch.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/watch.js b/modules/web-console/src/main/js/gulpfile.babel.js/tasks/watch.js
index 8666999..c179f9c 100644
--- a/modules/web-console/src/main/js/gulpfile.babel.js/tasks/watch.js
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/tasks/watch.js
@@ -18,22 +18,14 @@
import gulp from 'gulp';
import sequence from 'gulp-sequence';
-import { sassPaths, jadePaths, jadeModulePaths, resourcePaths, resourceModulePaths, appPaths, appModulePaths } from '../paths';
+import { jadePaths, jadeModulePaths, resourcePaths, resourceModulePaths, appModulePaths } from '../paths';
-gulp.task('watch:sass', (cb) => sequence('sass', 'bundle:ignite:app', cb));
-
-gulp.task('watch:ignite-modules', (cb) => sequence('clean:ignite-modules-temp', 'ignite:modules', ['eslint:browser', 'copy:ignite_modules:js', 'bundle:ignite:app'], cb));
-
-// Build + connect + watch task.
-gulp.task('watch', ['build', 'connect'], () => {
- gulp.watch(sassPaths, ['watch:sass']);
+gulp.task('watch:ignite-modules', (cb) => sequence('clean:ignite-modules-temp', 'ignite:modules', cb));
+// Build + watch task.
+gulp.task('watch', ['build'], () => {
gulp.watch(jadePaths.concat(jadeModulePaths), ['jade']);
-
- gulp.watch(resourcePaths, ['copy:resource']);
- gulp.watch(resourceModulePaths, ['copy:ignite_modules:resource']);
-
- gulp.watch(appPaths, ['eslint:browser', 'copy:js', 'bundle:ignite:app']);
+ gulp.watch(resourcePaths, ['copy:resource:app']);
+ gulp.watch(resourceModulePaths, ['copy:resource:ignite_modules']);
gulp.watch(appModulePaths, ['watch:ignite-modules']);
});
-
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/webpack/common.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/webpack/common.js b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/common.js
new file mode 100644
index 0000000..237f2e7
--- /dev/null
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/common.js
@@ -0,0 +1,192 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import path from 'path';
+import fs from 'fs';
+import webpack from 'webpack';
+import autoprefixer from 'autoprefixer-core';
+import jade from 'jade';
+import progressPlugin from './plugins/progress';
+import eslintFormatter from 'eslint-friendly-formatter';
+
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+import HtmlWebpackPlugin from 'html-webpack-plugin';
+
+import {srcDir, destDir, rootDir} from '../paths';
+
+const NODE_ENV = process.env.NODE_ENV || 'production';
+const development = NODE_ENV === 'development';
+const node_modules_path = path.resolve('node_modules');
+const cssLoader = 'css-loader?sourceMap!postcss-loader';
+const stylesLoader = cssLoader + '!sass-loader?outputStyle=expanded&sourceMap=true&sourceMapContents=true';
+
+let favicon;
+
+try {
+ fs.accessSync('build/ignite_modules/favicon.ico', fs.F_OK);
+
+ favicon = 'build/ignite_modules/favicon.ico';
+} catch (ignore) {
+ favicon = 'build/favicon.ico';
+}
+
+export default () => {
+ return {
+ node: {
+ fs: 'empty'
+ },
+
+ // Entry points.
+ entry: {
+ polyfill: 'babel-polyfill',
+ app: path.join(srcDir, 'app.js'),
+ vendor: path.join(srcDir, 'vendor.js')
+ },
+
+ // Output system.
+ output: {
+ path: destDir,
+ publicPath: './',
+ filename: '[name].js'
+ },
+
+ // Resolves modules.
+ resolve: {
+ extensions: [
+ '',
+ '.js'
+ ],
+ root: [rootDir],
+ modulesDirectories: [
+ node_modules_path,
+ './'
+ ]
+ },
+
+ // Modules resolvers.
+ /* global require */
+ module: {
+ noParse: [],
+ preLoaders: [
+ {
+ test: /\.js$/,
+ exclude: [node_modules_path],
+ loader: 'eslint-loader'
+ }
+ ],
+ loaders: [
+ {
+ test: /\.json$/,
+ loader: 'json-loader'
+ },
+ {
+ test: /\.jade$/,
+ loaders: [
+ `ngtemplate-loader?relativeTo=${rootDir}`,
+ 'html-loader?attrs[]=img:src&attrs[]=img:data-src',
+ 'jade-html-loader'
+ ]
+ },
+ {
+ test: /\.js$/,
+ exclude: [node_modules_path],
+ loaders: ['ng-annotate-loader']
+ },
+ {
+ test: /\.js$/,
+ exclude: [node_modules_path],
+ loader: 'babel-loader',
+ query: {
+ cacheDirectory: true,
+ plugins: ['transform-runtime',
+ 'add-module-exports'],
+ presets: ['angular']
+
+ }
+ },
+ {
+ test: /\.css$/,
+ loader: development ? `style-loader!${cssLoader}` : ExtractTextPlugin.extract('style-loader', cssLoader)
+ },
+ {
+ test: /\.(scss|sass)$/,
+ loader: development ? `style-loader!${stylesLoader}` : ExtractTextPlugin.extract('style-loader', stylesLoader)
+ },
+ {
+ test: /\.(woff2|woff|ttf|eot|svg)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
+ loaders: [
+ 'file-loader?name=assets/fonts/[name].[ext]'
+ ]
+ },
+ {
+ test: /\.(jpe?g|png|gif)$/i,
+ loaders: ['file-loader?name=assets/images/[name]_[hash].[ext]']
+ },
+ {
+ test: require.resolve('jquery'),
+ loaders: [
+ 'expose-loader?$',
+ 'expose-loader?jQuery'
+ ]
+ },
+ {
+ test: require.resolve('nvd3'),
+ loaders: [
+ 'expose-loader?nv'
+ ]
+ }
+ ]
+ },
+
+ // Postcss configuration.
+ postcss: [autoprefixer({browsers: ['last 2 versions']})],
+
+ // ESLint loader configuration.
+ eslint: {
+ failOnWarning: false,
+ failOnError: false,
+ formatter: eslintFormatter
+ },
+
+ // Load plugins.
+ plugins: [
+ new webpack.ProvidePlugin({
+ $: 'jquery',
+ jQuery: 'jquery',
+ _: 'lodash',
+ nv: 'nvd3'
+ }),
+ new webpack.DefinePlugin({NODE_ENV: JSON.stringify(NODE_ENV)}),
+ // new webpack.NoErrorsPlugin(),
+ new webpack.optimize.DedupePlugin(),
+ new webpack.optimize.CommonsChunkPlugin({
+ name: 'common',
+ chunks: ['vendor', 'app']
+ }),
+ new webpack.optimize.AggressiveMergingPlugin({moveToParents: true}),
+ new ExtractTextPlugin('assets/css/[name]' + (development ? '' : '.[chunkhash]') + '.css', {allChunks: true}),
+ new HtmlWebpackPlugin({
+ filename: 'index.html',
+ templateContent: () => {
+ return jade.renderFile(path.join(rootDir, 'views', 'index.jade'));
+ },
+ favicon
+ }),
+ progressPlugin
+ ]
+ };
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/development.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/development.js b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/development.js
new file mode 100644
index 0000000..aad4b37
--- /dev/null
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/development.js
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import webpack from 'webpack';
+import {destDir, rootDir} from '../../paths';
+
+export default () => {
+ const plugins = [
+ new webpack.HotModuleReplacementPlugin()
+ ];
+
+ return {
+ context: rootDir,
+ debug: true,
+ devtool: 'source-map',
+ watch: true,
+ devServer: {
+ historyApiFallback: true,
+ publicPath: '/',
+ contentBase: destDir,
+ info: true,
+ hot: true,
+ inline: true,
+ proxy: {
+ '/socket.io': {
+ target: 'http://localhost:3000',
+ changeOrigin: true,
+ ws: true
+ },
+ '/api/v1/*': {
+ target: 'http://localhost:3000',
+ changeOrigin: true,
+ rewrite: (req) => {
+ req.url = req.url.replace(/^\/api\/v1/, '');
+
+ return req;
+ }
+ }
+ },
+ watchOptions: {
+ aggregateTimeout: 1000,
+ poll: 1000
+ },
+ stats: {colors: true},
+ port: 9000
+ },
+ stats: {colors: true},
+ plugins
+ };
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/production.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/production.js b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/production.js
new file mode 100644
index 0000000..db66720
--- /dev/null
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/environments/production.js
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import webpack from 'webpack';
+
+import {destDir, rootDir} from '../../paths';
+
+export default () => {
+ const plugins = [
+ new webpack.optimize.UglifyJsPlugin({
+ path: destDir,
+ minimize: true,
+ warnings: false,
+ sourceMap: false,
+ mangle: true
+ })
+ ];
+
+ return {
+ context: rootDir,
+ bail: true, // Cancel build on error.
+ debug: false,
+ devtool: 'cheap-source-map',
+ output: {
+ publicPath: '/',
+ filename: '[name].[chunkhash].js',
+ path: destDir
+ },
+ plugins
+ };
+};
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/webpack/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/webpack/index.js b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/index.js
new file mode 100644
index 0000000..6682f9c
--- /dev/null
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/index.js
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import _ from 'lodash';
+import commonConfig from './common';
+import devConfig from './environments/development';
+import prodConfig from './environments/production';
+
+const env = process.env.NODE_ENV || 'production';
+
+// Config by environments.
+const configs = {
+ production: prodConfig,
+ development: devConfig
+};
+
+// Load config file by environment
+export default _.merge(commonConfig(), configs[env]());
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/gulpfile.babel.js/webpack/plugins/progress.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/gulpfile.babel.js/webpack/plugins/progress.js b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/plugins/progress.js
new file mode 100644
index 0000000..5f753c7
--- /dev/null
+++ b/modules/web-console/src/main/js/gulpfile.babel.js/webpack/plugins/progress.js
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import ProgressPlugin from 'webpack/lib/ProgressPlugin';
+
+let chars = 0;
+let lastState = 0;
+let lastStateTime = 0;
+
+const outputStream = process.stdout;
+
+const _goToLineStart = (nextMessage) => {
+ let str = '';
+
+ for (; chars > nextMessage.length; chars--)
+ str += '\b \b';
+
+ chars = nextMessage.length;
+
+ for (let i = 0; i < chars; i++)
+ str += '\b';
+
+ if (str)
+ outputStream.write(str);
+};
+
+export default new ProgressPlugin((percentage, msg) => {
+ let state = msg;
+
+ if (percentage < 1) {
+ percentage = Math.floor(percentage * 100);
+
+ msg = percentage + '% ' + msg;
+
+ if (percentage < 100)
+ msg = ' ' + msg;
+
+ if (percentage < 10)
+ msg = ' ' + msg;
+ }
+
+ state = state.replace(/^\d+\/\d+\s+/, '');
+
+ if (percentage === 0) {
+ lastState = null;
+ lastStateTime = (new Date()).getTime();
+ }
+ else if (state !== lastState || percentage === 1) {
+ const now = (new Date()).getTime();
+
+ if (lastState) {
+ const stateMsg = (now - lastStateTime) + 'ms ' + lastState;
+
+ _goToLineStart(stateMsg);
+
+ outputStream.write(stateMsg + '\n');
+
+ chars = 0;
+ }
+
+ lastState = state;
+ lastStateTime = now;
+ }
+
+ _goToLineStart(msg);
+
+ outputStream.write(msg);
+});
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/package.json b/modules/web-console/src/main/js/package.json
index 776ebdc..b2c648d 100644
--- a/modules/web-console/src/main/js/package.json
+++ b/modules/web-console/src/main/js/package.json
@@ -4,8 +4,9 @@
"description": "Interactive Web console for configuration, executing SQL queries and monitoring of Apache Ignite Cluster",
"private": true,
"scripts": {
- "start": "jspm i && gulp build --debug && node serve",
- "eslint": "node_modules/.bin/gulp eslint"
+ "dev": "cross-env NODE_ENV=development gulp watch",
+ "build": "cross-env NODE_ENV=production gulp build",
+ "eslint": "eslint --env node --format node_modules/eslint-friendly-formatter gulpfile.babel.js/ serve/ app/ controllers/ generator/ ignite_modules/ ignite_modules_temp/"
},
"author": "",
"contributors": [
@@ -18,254 +19,110 @@
"keywords": "grid",
"homepage": "https://ignite.apache.org/",
"engines": {
- "node": ">=0.12.4"
+ "npm": "^3.x.x",
+ "node": "^4.x.x"
},
+ "os": [
+ "darwin",
+ "linux",
+ "win32"
+ ],
"dependencies": {
- "async": "1.5.2",
+ "angular": "^1.5.5",
+ "angular-animate": "^1.5.5",
+ "angular-aria": "^1.5.5",
+ "angular-cookies": "^1.5.5",
+ "angular-drag-and-drop-lists": "^1.4.0",
+ "angular-gridster": "^0.13.3",
+ "angular-motion": "^0.4.4",
+ "angular-nvd3": "^1.0.7",
+ "angular-retina": "^0.3.13",
+ "angular-sanitize": "^1.5.5",
+ "angular-smart-table": "^2.1.8",
+ "angular-socket-io": "^0.7.0",
+ "angular-strap": "^2.3.8",
+ "angular-touch": "^1.5.5",
+ "angular-tree-control": "^0.2.26",
+ "angular-ui-grid": "^3.1.1",
+ "angular-ui-router": "^0.3.1",
"body-parser": "^1.15.0",
"bootstrap-sass": "^3.3.6",
+ "brace": "^0.8.0",
"connect-mongo": "^1.1.0",
"cookie-parser": "~1.4.0",
- "debug": "~2.2.0",
- "express": "~4.13.3",
+ "es6-promise": "^3.0.2",
+ "express": "^4.14.0",
"express-session": "^1.12.0",
+ "file-saver": "^1.3.2",
"fire-up": "^1.0.0",
- "jade": "~1.11.0",
- "jszip": "^2.6.0",
+ "font-awesome": "^4.6.3",
+ "glob": "^7.0.3",
+ "jquery": "^3.0.0",
+ "jszip": "^3.0.0",
"lodash": "^4.8.2",
"mongoose": "^4.4.11",
"mongoose-deep-populate": "^3.0.0",
"nconf": "^0.8.2",
"nodemailer": "^2.3.0",
+ "nvd3": "^1.8.3",
"passport": "^0.3.2",
"passport-local": "^1.0.0",
"passport-local-mongoose": "^4.0.0",
"passport.socketio": "^3.6.1",
+ "query-command-supported": "^1.0.0",
"require-dir": "^0.3.0",
"socket.io": "^1.4.5",
+ "socket.io-client": "^1.4.6",
+ "ui-router-metatags": "^1.0.3",
"ws": "^0.8.0"
},
"devDependencies": {
- "babel-core": "^6.7.2",
- "babel-eslint": "^6.0.2",
- "babel-preset-es2015": "^6.6.0",
- "babel-register": "^6.7.2",
- "gulp": "^3.9.0",
- "gulp-cached": "^1.1.0",
- "gulp-connect": "^3.2.2",
- "gulp-environments": "^0.1.1",
+ "assets-webpack-plugin": "^3.2.0",
+ "autoprefixer-core": "^6.0.1",
+ "babel-core": "^6.7.6",
+ "babel-eslint": "^6.0.4",
+ "babel-loader": "^6.2.4",
+ "babel-plugin-add-module-exports": "^0.2.1",
+ "babel-plugin-transform-runtime": "^6.7.5",
+ "babel-polyfill": "^6.7.4",
+ "babel-preset-angular": "^6.0.15",
+ "babel-runtime": "^6.6.1",
+ "bootstrap-loader": "^1.0.10",
+ "cross-env": "^1.0.7",
+ "css-loader": "^0.23.0",
+ "eslint": "^2.9.0",
+ "eslint-friendly-formatter": "^2.0.5",
+ "eslint-loader": "^1.0.0",
+ "expose-loader": "^0.7.1",
+ "extract-text-webpack-plugin": "^1.0.1",
+ "file-loader": "^0.9.0",
+ "gulp": "^3.9.1",
"gulp-eslint": "^2.0.0",
- "gulp-html-replace": "^1.5.5",
- "gulp-ignore": "^2.0.1",
"gulp-inject": "^4.0.0",
"gulp-jade": "^1.1.0",
"gulp-rimraf": "^0.2.0",
- "gulp-sass": "^2.1.0",
"gulp-sequence": "^0.4.1",
"gulp-util": "^3.0.7",
- "http-proxy-middleware": "^0.13.0",
- "jspm": "^0.16.32",
- "mocha": "~2.4.5",
+ "html-loader": "^0.4.3",
+ "html-webpack-plugin": "^2.21.0",
+ "imagemin-pngquant": "^5.0.0",
+ "jade": "^1.11.0",
+ "jade-html-loader": "0.0.3",
+ "json-loader": "^0.5.4",
+ "mocha": "~2.5.3",
"morgan": "^1.7.0",
- "should": "^8.3.0",
- "supertest": "^1.1.0"
- },
- "jspm": {
- "directories": {
- "packages": "build/jspm_packages"
- },
- "configFile": "build/system.config.js",
- "dependencies": {
- "ace": "github:ajaxorg/ace-builds@1.2.3",
- "angular": "github:angular/bower-angular@^1.5.0",
- "angular-animate": "github:angular/bower-angular-animate@^1.5.0",
- "angular-drag-and-drop-lists": "github:marceljuenemann/angular-drag-and-drop-lists@^1.3.0",
- "angular-gridster": "github:ManifestWebDesign/angular-gridster@^0.13.5",
- "angular-motion": "github:mgcrea/angular-motion@^0.4.3",
- "angular-nvd3": "github:krispo/angular-nvd3@^1.0.4",
- "angular-retina": "github:jrief/angular-retina@0.3.8",
- "angular-sanitize": "github:angular/bower-angular-sanitize@^1.5.0",
- "angular-smart-table": "github:lorenzofox3/Smart-Table@^2.1.4",
- "angular-socket-io": "github:btford/angular-socket-io@^0.7.0",
- "angular-strap": "github:mgcrea/angular-strap@2.3.8",
- "angular-tree-control": "github:wix/angular-tree-control@^0.2.23",
- "angular-ui-grid": "github:angular-ui/bower-ui-grid@^3.0.7",
- "angular-ui-router": "github:angular-ui/ui-router@^0.2.15",
- "angular-ui-router-metatags": "github:tinusn/ui-router-metatags@^1.0.3",
- "blob": "github:eligrey/Blob.js@master",
- "bootstrap-carousel": "github:twbs/bootstrap@^3.3.6",
- "css": "github:systemjs/plugin-css@^0.1.20",
- "file-saver": "github:eligrey/FileSaver.js@master",
- "font-awesome": "npm:font-awesome@4.5.0",
- "jade": "github:johnsoftek/plugin-jade@^0.6.0",
- "jquery": "github:components/jquery@^2.1.4",
- "json": "github:systemjs/plugin-json@^0.1.0",
- "jszip": "github:Stuk/jszip@^2.5.0",
- "lodash": "github:lodash/lodash@^4.2.6",
- "pdfmake": "github:bpampuch/pdfmake@^0.1.20",
- "query-command-supported": "github:zenorocha/document.queryCommandSupported@^1.0.0",
- "socket.io-client": "github:socketio/socket.io-client@1.4.5",
- "text": "github:systemjs/plugin-text@^0.0.7"
- },
- "devDependencies": {
- "babel": "npm:babel-core@^5.8.24",
- "babel-runtime": "npm:babel-runtime@^5.8.24",
- "clean-css": "npm:clean-css@^3.4.8",
- "core-js": "npm:core-js@^1.1.4"
- },
- "overrides": {
- "github:angular/bower-angular@1.5.0": {
- "format": "global",
- "dependencies": {
- "jquery": "github:components/jquery@^2.1.4"
- },
- "shim": {
- "angular": {
- "deps": [
- "jquery"
- ]
- }
- }
- },
- "github:btford/angular-socket-io@0.7.0": {
- "dependencies": {
- "socket.io-client": "github:socketio/socket.io-client@1.4.5"
- }
- },
- "github:socketio/socket.io-client@1.4.5": {
- "format": "global",
- "main": "socket.io",
- "shim": {
- "socket.io": {
- "exports": "io"
- }
- }
- },
- "github:Stuk/jszip@2.5.0": {
- "format": "global",
- "main": "./dist/jszip"
- },
- "github:bpampuch/pdfmake@0.1.20": {
- "format": "global",
- "main": "vfs_fonts",
- "shim": {
- "vfs_fonts": {
- "deps": [
- "./pdfmake"
- ],
- "exports": "pdfMake"
- }
- }
- },
- "github:zenorocha/document.queryCommandSupported@1.0.0": {
- "format": "global"
- },
- "github:krispo/angular-nvd3@1.0.4": {
- "main": "dist/angular-nvd3",
- "dependencies": {
- "nvd3": "npm:nvd3@1.8.1",
- "d3": "npm:d3@3.5.14"
- },
- "shim": {
- "dist/angular-nvd3": {
- "deps": [
- "d3",
- "nvd3",
- "nvd3/build/nv.d3.css!"
- ]
- }
- }
- },
- "github:components/jquery@2.1.4": {
- "format": "global"
- },
- "github:ajaxorg/ace-builds@1.2.3": {
- "format": "global",
- "main": "theme-chrome",
- "shim": {
- "theme-chrome": {
- "exports": "ace",
- "deps": [
- "./ace",
- "./mode-xml",
- "./mode-java",
- "./mode-sql",
- "./ext-language_tools",
- "./mode-dockerfile"
- ]
- },
- "ace": {
- "exports": "ace"
- },
- "mode-xml": {
- "deps": [
- "./ace"
- ]
- },
- "mode-java": {
- "deps": [
- "./ace"
- ]
- },
- "mode-sql": {
- "deps": [
- "./ace"
- ]
- },
- "ext-language_tools": {
- "deps": [
- "./ace"
- ]
- },
- "worker-xml": {
- "deps": [
- "./ace"
- ]
- },
- "mode-dockerfile": {
- "deps": [
- "./ace"
- ]
- }
- }
- },
- "github:angular-ui/bower-ui-grid@3.0.7": {
- "dependencies": {
- "pdfmake": "github:bpampuch/pdfmake@^0.1.20"
- }
- },
- "github:mgcrea/angular-strap@2.3.8": {
- "directories": {
- "lib": "dist"
- },
- "main": "angular-strap.tpl",
- "dependencies": {
- "angular": "^1",
- "angular-animate": "github:angular/bower-angular-animate@^1.5.0",
- "angular-motion": "github:mgcrea/angular-motion@^0.4.3",
- "angular-sanitize": "github:angular/bower-angular-sanitize@^1.5.0"
- },
- "shim": {
- "angular-strap.tpl": {
- "deps": [
- "./angular-strap",
- "angular"
- ]
- }
- }
- },
- "github:eligrey/FileSaver.js@master": {
- "format": "global",
- "dependencies": {
- "blob": "github:eligrey/Blob.js@master"
- }
- },
- "github:eligrey/Blob.js@master": {
- "format": "global"
- },
- "github:jrief/angular-retina@0.3.8": {
- "main": "build/angular-retina.min"
- }
- }
+ "ng-annotate-loader": "0.1.0",
+ "ngtemplate-loader": "^1.3.1",
+ "node-sass": "^3.4.2",
+ "postcss-loader": "^0.9.1",
+ "resolve-url-loader": "^1.4.3",
+ "sass-loader": "^3.1.1",
+ "should": "^9.0.2",
+ "style-loader": "^0.13.1",
+ "supertest": "^1.1.0",
+ "url": "^0.11.0",
+ "url-loader": "^0.5.6",
+ "webpack": "^1.13.1",
+ "webpack-dev-server": "^1.14.1"
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/public/stylesheets/_font-awesome-custom.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/public/stylesheets/_font-awesome-custom.scss b/modules/web-console/src/main/js/public/stylesheets/_font-awesome-custom.scss
index 6ce9550..514acc2 100644
--- a/modules/web-console/src/main/js/public/stylesheets/_font-awesome-custom.scss
+++ b/modules/web-console/src/main/js/public/stylesheets/_font-awesome-custom.scss
@@ -15,17 +15,18 @@
* limitations under the License.
*/
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/variables";
-$fa-font-path: "/jspm_packages/npm/font-awesome@4.5.0/fonts";
+@import '~font-awesome/scss/variables';
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/mixins";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/path";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/core";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/larger";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/fixed-width";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/list";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/bordered-pulled";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/animated";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/rotated-flipped";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/stacked";
-@import "../../build/jspm_packages/npm/font-awesome@4.5.0/scss/icons";
+$fa-font-path: 'https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/fonts';
+
+@import '~font-awesome/scss/mixins';
+@import '~font-awesome/scss/path';
+@import '~font-awesome/scss/core';
+@import '~font-awesome/scss/larger';
+@import '~font-awesome/scss/fixed-width';
+@import '~font-awesome/scss/list';
+@import '~font-awesome/scss/bordered-pulled';
+@import '~font-awesome/scss/animated';
+@import '~font-awesome/scss/rotated-flipped';
+@import '~font-awesome/scss/stacked';
+@import '~font-awesome/scss/icons';
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/public/stylesheets/style.scss
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/public/stylesheets/style.scss b/modules/web-console/src/main/js/public/stylesheets/style.scss
index 2c047ac..9f35637 100644
--- a/modules/web-console/src/main/js/public/stylesheets/style.scss
+++ b/modules/web-console/src/main/js/public/stylesheets/style.scss
@@ -15,9 +15,8 @@
* limitations under the License.
*/
-@import "font-awesome-custom";
-@import "bootstrap-custom";
-
+@import "./font-awesome-custom";
+@import "./bootstrap-custom";
@import "./variables";
@import "./../../app/directives/information/information.scss";
@@ -26,14 +25,14 @@
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 400;
- src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(//fonts.gstatic.com/s/robotoslab/v6/y7lebkjgREBJK96VQi37ZiwlidHJgAgmTjOEEzwu1L8.ttf) format('truetype');
+ src: local('Roboto Slab Regular'), local('RobotoSlab-Regular'), url(https://fonts.gstatic.com/s/robotoslab/v6/y7lebkjgREBJK96VQi37ZiwlidHJgAgmTjOEEzwu1L8.ttf) format('truetype');
}
@font-face {
font-family: 'Roboto Slab';
font-style: normal;
font-weight: 700;
- src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(//fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJTdGNerWpg2Hn6A-BxWgZ_I.ttf) format('truetype');
+ src: local('Roboto Slab Bold'), local('RobotoSlab-Bold'), url(https://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJTdGNerWpg2Hn6A-BxWgZ_I.ttf) format('truetype');
}
hr {
@@ -1927,6 +1926,7 @@ treecontrol.tree-classic {
.ui-grid-cell .ui-grid-cell-contents {
text-align: center;
+ white-space: pre;
> i.fa {
cursor: default;
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/serve/agent.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/agent.js b/modules/web-console/src/main/js/serve/agent.js
index 77da925..a529e94 100644
--- a/modules/web-console/src/main/js/serve/agent.js
+++ b/modules/web-console/src/main/js/serve/agent.js
@@ -481,56 +481,57 @@ module.exports.factory = function(_, ws, fs, path, JSZip, socketio, settings, mo
const jarFilter = (file) => path.extname(file) === '.jar';
- for (const archive of agentArchives) {
- const filePath = path.join(settings.agent.dists, archive);
-
- const zip = new JSZip(fs.readFileSync(filePath));
-
- const jarPath = _.find(_.keys(zip.files), jarFilter);
-
- const jar = new JSZip(zip.files[jarPath].asNodeBuffer());
-
- const manifest = jar.files['META-INF/MANIFEST.MF']
- .asText()
- .trim()
- .split(/\s*\n+\s*/)
- .map((line, r) => {
- r = line.split(/\s*:\s*/);
-
- this[r[0]] = r[1];
-
- return this;
- }, {})[0];
+ const agentsPromises = _.map(agentArchives, (fileName) => {
+ const filePath = path.join(settings.agent.dists, fileName);
+
+ return JSZip.loadAsync(fs.readFileSync(filePath))
+ .then((zip) => {
+ const jarPath = _.find(_.keys(zip.files), jarFilter);
+
+ return JSZip.loadAsync(zip.files[jarPath].async('nodebuffer'))
+ .then((jar) => jar.files['META-INF/MANIFEST.MF'].async('string'))
+ .then((lines) => lines.trim()
+ .split(/\s*\n+\s*/)
+ .map((line, r) => {
+ r = line.split(/\s*:\s*/);
+
+ this[r[0]] = r[1];
+
+ return this;
+ }, {})[0])
+ .then((manifest) => {
+ const ver = manifest['Implementation-Version'];
+ const buildTime = manifest['Build-Time'];
+
+ if (ver && buildTime)
+ return { fileName, filePath, ver, buildTime };
+ });
+ });
+ });
- const ver = manifest['Implementation-Version'];
+ Promise.all(agentsPromises)
+ .then((agents) => {
+ this.supportedAgents = _.keyBy(_.remove(agents, null), 'ver');
- if (ver) {
- this.supportedAgents[ver] = {
- fileName: archive,
- filePath,
- buildTime: manifest['Build-Time']
- };
- }
- }
+ const latest = _.head(Object.keys(this.supportedAgents).sort((a, b) => {
+ const aParts = a.split('.');
+ const bParts = b.split('.');
- const latest = _.head(Object.keys(this.supportedAgents).sort((a, b) => {
- const aParts = a.split('.');
- const bParts = b.split('.');
+ for (let i = 0; i < aParts.length; ++i) {
+ if (bParts.length === i)
+ return 1;
- for (let i = 0; i < aParts.length; ++i) {
- if (bParts.length === i)
- return 1;
+ if (aParts[i] === aParts[i])
+ continue;
- if (aParts[i] === aParts[i])
- continue;
+ return aParts[i] > bParts[i] ? 1 : -1;
+ }
+ }));
- return aParts[i] > bParts[i] ? 1 : -1;
- }
- }));
-
- // Latest version of agent distribution.
- if (latest)
- this.supportedAgents.latest = this.supportedAgents[latest];
+ // Latest version of agent distribution.
+ if (latest)
+ this.supportedAgents.latest = this.supportedAgents[latest];
+ });
}
attachLegacy(server) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/serve/keys/test.crt
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/keys/test.crt b/modules/web-console/src/main/js/serve/keys/test.crt
deleted file mode 100644
index 50c6d5c..0000000
--- a/modules/web-console/src/main/js/serve/keys/test.crt
+++ /dev/null
@@ -1,13 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIB6zCCAVQCCQDcAphbU6UcLjANBgkqhkiG9w0BAQsFADA6MRIwEAYDVQQDDAls
-b2NhbGhvc3QxJDAiBgkqhkiG9w0BCQEWFXNldmRva2ltb3ZAYXBhY2hlLm9yZzAe
-Fw0xNTA3MTQxMzAyNTNaFw0xODA2MjMxMzAyNTNaMDoxEjAQBgNVBAMMCWxvY2Fs
-aG9zdDEkMCIGCSqGSIb3DQEJARYVc2V2ZG9raW1vdkBhcGFjaGUub3JnMIGfMA0G
-CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP/zpJrdHqCj6lPpeFF6LQtzKef6UiyBBo
-rbuOtCCgW8KMJJciluBWk2126qLt9smBN4jBpSNU3pq0r9gBMUTd/LSe7aY4D5ED
-Pjp7XsypNVKeHaHbFi7KhfHy0LYxsWiNPmmHJv4dtYOp+pGK25rkXNfyJxxjgxN6
-wo34+MnZIQIDAQABMA0GCSqGSIb3DQEBCwUAA4GBAFk9XEjcdyihws+fVmdGGUFo
-bVxI9YGH6agiNbU3WNF4B4VRzcPPW8z2mEo7eF9kgYmq/YzH4T8tgi/qkL/u8eZV
-Wmi9bg6RThLN6/hj3wVoOFKykbDQ05FFdhIJXN5UOjPmxYM97EKqg6J0W2HAb8SG
-+UekPnmAo/2HTKsLykH8
------END CERTIFICATE-----
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/serve/keys/test.key
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/keys/test.key b/modules/web-console/src/main/js/serve/keys/test.key
deleted file mode 100644
index 1b395c0..0000000
--- a/modules/web-console/src/main/js/serve/keys/test.key
+++ /dev/null
@@ -1,18 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: DES-EDE3-CBC,6798185330CE2EE2
-
-sOwkmD8rvjx11l09V26dJhLhl+SyPIhyeZ3TqHXrYCATKoXlzidT+uPu1jVYtrwr
-nBLA6TrIDYRrBNlEsqGZ0cSvWTIczzVW1xZKHEJo5q2vUT/W8u/Q1QQtS3P3GeKF
-dEzx496rpZqwwVw59GNbuIwyYoVvQf3iEXzfhplGmLPELYIplDFOLgNuXQyXSGx6
-rwKsCxXMLsDyrA6DCz0Odf08p2HvWk/s5Ne3DFcQlqRNtIrBVGD2O0/Fp8ZZ2I4E
-Yn2OIIWJff3HanOjLOWKdN8YAn5UleNmlEUdIHeS5qaQ68mabOxLkSef9qglV+sd
-FHTtUq0cG6t6nhxZBziexha6v1yl/xABAHHhNPOfak+HthWxRD4N9f1yFYAeTmkn
-4kwBWoSUe12XRf2pGNqhEUKN/KhDmWk85wI55i/Cu2XmNoiBFlS9BXrRYU8uVCJw
-KlxjKTDWl1opCyvxTDxJnMkt44ZT445LRePKVueGIIKSUIXNQypOE+C1I0CL0N2W
-Ts3m9nthquvLeMx92k7b8yW69BER5uac3SIlGCOJObQXsHgyk8wYiyd/zLKfjctG
-PXieaW81UKjp+GqWpvWPz3VqnKwoyUWeVOOTviurli6kYOrHuySTMqMb6hxJctw9
-grAQTT0UPiAKWcM7InLzZnRjco+v9QLLEokjVngXPba16K/CItFY16xuGlaFLW7Y
-XTc67AkL8b76HBZelMjmCsqjvSoULhuMFwTOvUMm/mSM8rMoi9asrJRLQHRMWCST
-/6RENPLzPlOMnNLBujpBbn8V3/aYzEZsHMI+6S3d27WYlTJIqpabSA==
------END RSA PRIVATE KEY-----
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/serve/routes/agent.js
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/serve/routes/agent.js b/modules/web-console/src/main/js/serve/routes/agent.js
index 020b692..48ec131 100644
--- a/modules/web-console/src/main/js/serve/routes/agent.js
+++ b/modules/web-console/src/main/js/serve/routes/agent.js
@@ -53,26 +53,26 @@ module.exports.factory = function(_, express, fs, JSZip, settings, agentMgr) {
if (errFs)
return res.download(agentPathZip, agentZip);
- const zip = new JSZip(data);
-
- const prop = [];
-
- const host = req.hostname.match(/:/g) ? req.hostname.slice(0, req.hostname.indexOf(':')) : req.hostname;
+ // Set the archive name.
+ res.attachment(agentZip);
- prop.push('tokens=' + req.user.token);
- prop.push('server-uri=' + (settings.agent.SSLOptions ? 'https' : 'http') + '://' + host + ':' + settings.agent.port);
- prop.push('#Uncomment following options if needed:');
- prop.push('#node-uri=http://localhost:8080');
- prop.push('#driver-folder=./jdbc-drivers');
+ JSZip.loadAsync(data)
+ .then((zip) => {
+ const prop = [];
- zip.file(agentFld + '/default.properties', prop.join('\n'));
+ const host = req.hostname.match(/:/g) ? req.hostname.slice(0, req.hostname.indexOf(':')) : req.hostname;
- const buffer = zip.generate({type: 'nodebuffer', platform: 'UNIX'});
+ prop.push('tokens=' + req.user.token);
+ prop.push('server-uri=' + (settings.agent.SSLOptions ? 'https' : 'http') + '://' + host + ':' + settings.agent.port);
+ prop.push('#Uncomment following options if needed:');
+ prop.push('#node-uri=http://localhost:8080');
+ prop.push('#driver-folder=./jdbc-drivers');
- // Set the archive name.
- res.attachment(agentZip);
+ zip.file(agentFld + '/default.properties', prop.join('\n'));
- res.send(buffer);
+ zip.generateAsync({type: 'nodebuffer', platform: 'UNIX'})
+ .then((buffer) => res.send(buffer));
+ });
});
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/configuration/domains-import.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/configuration/domains-import.jade b/modules/web-console/src/main/js/views/configuration/domains-import.jade
index 23b9434..ccaeb27 100644
--- a/modules/web-console/src/main/js/views/configuration/domains-import.jade
+++ b/modules/web-console/src/main/js/views/configuration/domains-import.jade
@@ -83,7 +83,7 @@ mixin td-ellipses-lbl(w, lbl)
.col-xs-8.col-sm-10.col-md-10
i.tipField.fa.fa-question-circle(bs-tooltip='' data-title='Password for connecting to database<br>Note, password would not be saved in preferences for security reasons')
.input-tip
- input.form-control(id='password' type='password' ng-model='selectedPreset.password' on-enter='importDomainNext()')
+ input.form-control(id='password' type='password' ng-model='selectedPreset.password' ignite-on-enter='importDomainNext()')
.settings-row
.checkbox
label
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/configuration/domains.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/configuration/domains.jade b/modules/web-console/src/main/js/views/configuration/domains.jade
index 9975df9..7f3253e 100644
--- a/modules/web-console/src/main/js/views/configuration/domains.jade
+++ b/modules/web-console/src/main/js/views/configuration/domains.jade
@@ -30,14 +30,14 @@ include ../../app/helpers/jade/mixins.jade
thead
tr
th
- .col-sm-8
- .col-sm-5
+ .col-sm-9
+ .col-sm-6
lable.labelHeader.labelFormField {{domainModelTitle()}}
- .col-sm-7
+ .col-sm-6
.pull-right.labelLogin.additional-filter(ng-if='(domains | domainsValidation:false:true).length > 0')
a.labelFormField(ng-if='ui.showValid' ng-click='toggleValid()' bs-tooltip='' data-title='{{::ui.invalidKeyFieldsTooltip}}') Key fields should be configured: {{(displayedRows | domainsValidation:false:true).length}} 
a.labelFormField(ng-if='!ui.showValid' ng-click='toggleValid()') Show all domain models: {{displayedRows.length}} 
- .col-sm-4
+ .col-sm-3
input.form-control.pull-right(type='text' st-search='valueType' placeholder='Filter domain models...')
tbody
tr
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/configuration/summary.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/configuration/summary.jade b/modules/web-console/src/main/js/views/configuration/summary.jade
index 830adc1..f367e67 100644
--- a/modules/web-console/src/main/js/views/configuration/summary.jade
+++ b/modules/web-console/src/main/js/views/configuration/summary.jade
@@ -88,7 +88,7 @@ mixin hard-link(ref, txt)
.settings-row
ignite-form-field.col-xs-8.col-sm-8.col-md-7(data-label='Near cache eviction policy')
ignite-form-field-tooltip
- | Cache expiration policy
+ | Near cache eviction policy
ignite-form-field-dropdown(
data-id='evictionPolicies'
data-name='evictionPolicies'
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/includes/header.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/includes/header.jade b/modules/web-console/src/main/js/views/includes/header.jade
index 2b66d82..e224f64 100644
--- a/modules/web-console/src/main/js/views/includes/header.jade
+++ b/modules/web-console/src/main/js/views/includes/header.jade
@@ -23,16 +23,19 @@ header#header.header
ignite-header-logo
td(ng-if='$root.user' style='padding-top: 20px')
ul.nav.navbar-nav(ignite-sidebar ignite-navbar)
- li(ng-class='{active: $state.includes("base.configuration")}')
- a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='sidebar.items' data-placement='bottom-right') Configuration
+ li(ng-class='{active: $state.includes("base.configuration")}' bs-dropdown='sidebar.items' data-placement='bottom-right' data-trigger='hover focus' data-container='self' data-animation='' ng-click='$event.stopPropagation()')
+ a.dropdown-toggle Configuration
span.caret
- li.sql-notebooks(ng-class='{active: $state.includes("base.sql")}' ng-controller='notebooks')
- a(ng-if='IgniteDemoMode' ui-sref='base.sql.demo') SQL
+ ul.nav.navbar-nav(ng-controller='notebooks')
+ li.sql-notebooks(ng-if='IgniteDemoMode' ng-class='{active: $state.includes("base.sql")}')
+ a(ui-sref='base.sql.demo') SQL
- a(ng-if='!IgniteDemoMode && !notebooks.length' ng-click='inputNotebookName()') SQL
+ li.sql-notebooks(ng-if='!IgniteDemoMode && !notebooks.length' ng-class='{active: $state.includes("base.sql")}')
+ a(ng-click='inputNotebookName()') SQL
- a.dropdown-toggle(ng-if='!IgniteDemoMode && notebooks.length' data-toggle='dropdown' bs-dropdown='notebookDropdown' data-placement='bottom-left') SQL
+ li.sql-notebooks(ng-if='!IgniteDemoMode && notebooks.length' ng-class='{active: $state.includes("base.sql")}' bs-dropdown='notebookDropdown' data-placement='bottom-left' data-trigger='hover focus' data-container='self' data-animation='' ng-click='$event.stopPropagation()')
+ a.dropdown-toggle SQL
span.caret
li(ui-sref-active='active' ng-repeat='item in navbar.items')
@@ -43,6 +46,6 @@ header#header.header
button.btn.btn-info(ng-if='!IgniteDemoMode' ng-click='startDemo()') Start demo
ul.nav.navbar-nav.pull-right(ignite-userbar)
- li(ng-class='{active: $state.includes("settings")}')
- a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='userbar.items' data-placement='bottom-right') {{user.firstName}} {{user.lastName}}
+ li(bs-dropdown='userbar.items' data-placement='bottom-right' data-trigger='hover focus' data-container='self' data-animation='' ng-class='{active: $state.includes("settings")}' ng-click='$event.stopPropagation()')
+ a.dropdown-toggle {{user.firstName}} {{user.lastName}}
span.caret
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/index.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/index.jade b/modules/web-console/src/main/js/views/index.jade
index 8514533..707bfac 100644
--- a/modules/web-console/src/main/js/views/index.jade
+++ b/modules/web-console/src/main/js/views/index.jade
@@ -18,7 +18,6 @@ doctype html
html(ng-app='ignite-console' id='app' ng-strict-di)
head
base(href='/')
- link(rel='shortcut icon' href='favicon.ico')
meta(http-equiv='content-type' content='text/html; charset=UTF8')
meta(http-equiv='content-language' content='en')
@@ -30,11 +29,6 @@ html(ng-app='ignite-console' id='app' ng-strict-di)
meta(name='keywords' content='{{$meta.keywords}}')
meta(ng-repeat='(key, value) in $meta.properties' name='{{::key}}' content='{{::value}}')
- // build:css
- link(rel='stylesheet', href='/vendors.css')
- link(rel='stylesheet', href='/app.css')
- // endbuild
-
body.theme-line.body-overlap.greedy
.splash.splash-max-foreground(hide-on-state-change)
@@ -52,15 +46,3 @@ html(ng-app='ignite-console' id='app' ng-strict-di)
label {{IgniteDemoMode ? "Demo" : "Beta" }}
.wrapper(ui-view='')
-
-
- // build:js
- script(src='jspm_packages/system.js')
- script(src='system.config.js')
- script(src='vendors.js')
- script(src='app.js')
- script System.import('app/index');
- // endbuild
-
- // ignite:plugins
- // endignite
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/reset.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/reset.jade b/modules/web-console/src/main/js/views/reset.jade
index e5b8f12..9098105 100644
--- a/modules/web-console/src/main/js/views/reset.jade
+++ b/modules/web-console/src/main/js/views/reset.jade
@@ -37,11 +37,11 @@ header#header.header
.settings-row
label.col-sm-1.required Password:
.col-sm-3
- input#user_password.form-control(enter-focus-next='user_confirm' type='password' ng-model='reset_info.password' placeholder='New password' required)
+ input#user_password.form-control(ignite-on-enter-focus-move='user_confirm' type='password' ng-model='reset_info.password' placeholder='New password' required)
.settings-row
label.col-sm-1.required Confirm:
.col-sm-3
- input#user_confirm.form-control(type='password' ng-model='reset_info.confirm' match='reset_info.password' placeholder='Confirm new password' required on-enter='resetForm.$valid && resetPassword(user_info)')
+ input#user_confirm.form-control(type='password' ng-model='reset_info.confirm' ignite-match='reset_info.password' placeholder='Confirm new password' required ignite-on-enter='resetForm.$valid && resetPassword(user_info)')
.settings-row
button.btn.btn-primary(ng-disabled='resetForm.$invalid' ng-click='resetPassword(reset_info)') Reset Password
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/settings/profile.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/settings/profile.jade b/modules/web-console/src/main/js/views/settings/profile.jade
index 53991b3..bc4965a 100644
--- a/modules/web-console/src/main/js/views/settings/profile.jade
+++ b/modules/web-console/src/main/js/views/settings/profile.jade
@@ -28,23 +28,23 @@ mixin lbl(txt)
.details-row
+lbl('First name:')
.col-xs-5.col-sm-4
- input#profile-firstname.form-control(type='text' ng-model='user.firstName' placeholder='Input first name' required auto-focus)
+ input#profile-firstname.form-control(ignite-on-enter-focus-move='profile-lastname' type='text' ng-model='user.firstName' placeholder='Input first name' required ignite-auto-focus)
.details-row
+lbl('Last name:')
.col-xs-5.col-sm-4
- input#profile-lastname.form-control(type='text' ng-model='user.lastName' placeholder='Input last name' required)
+ input#profile-lastname.form-control(ignite-on-enter-focus-move='profile-email' type='text' ng-model='user.lastName' placeholder='Input last name' required)
.details-row
+lbl('Email:')
.col-xs-5.col-sm-4
- input#profile-email.form-control(type='email' ng-model='user.email' placeholder='Input email' required)
+ input#profile-email.form-control(ignite-on-enter-focus-move='profile-company' type='email' ng-model='user.email' placeholder='Input email' required)
.details-row
+lbl('Company:')
.col-xs-5.col-sm-4
- input#profile-company.form-control(type='text' ng-model='user.company' placeholder='Input company name' required)
+ input#profile-company.form-control(ignite-on-enter-focus-move='profile-country' type='text' ng-model='user.company' placeholder='Input company name' required)
.details-row
+lbl('Country:')
.col-xs-5.col-sm-4
- button#profile-country.select-toggle.form-control(bs-select bs-options='item.name as item.name for item in countries' type='text' ng-model='user.country' placeholder='Choose your country' required)
+ button#profile-country.select-toggle.form-control(bs-select bs-options='item.name as item.name for item in countries' type='text' ng-model='user.country' placeholder='Choose your country' ng-required='true')
.details-row
.advanced-options
i.fa(
@@ -55,7 +55,7 @@ mixin lbl(txt)
+lbl('Security token:')
label {{user.token || 'No security token. Regenerate please.'}}
i.tipLabel.fa.fa-refresh(ng-click='generateToken()' bs-tooltip='' data-title='Generate random security token')
- i.tipLabel.fa.fa-clipboard(ng-click-copy='{{user.token}}' bs-tooltip='' data-title='Copy security token to clipboard')
+ i.tipLabel.fa.fa-clipboard(ignite-copy-to-clipboard='{{user.token}}' bs-tooltip='' data-title='Copy security token to clipboard')
i.tipLabel.fa.fa-question-circle(ng-if=lines bs-tooltip='' data-title='The security token is used for authorization of web agent')
.details-row
.advanced-options
@@ -67,10 +67,10 @@ mixin lbl(txt)
.details-row
+lbl('New password:')
.col-xs-5.col-sm-4
- input.form-control(type='password' ng-model='user.password' placeholder='New password')
+ input#profile_password.form-control(ignite-on-enter-focus-move='profile_confirm' type='password' ng-model='user.password' placeholder='New password')
.details-row
+lbl('Confirm:')
.col-xs-5.col-sm-4
- input.form-control(type='password' ng-model='user.confirm' match='user.password' placeholder='Confirm new password')
+ input#profile_confirm.form-control(type='password' ng-model='user.confirm' ignite-match='user.password' placeholder='Confirm new password')
.col-xs-12.col-sm-12.details-row
a.btn.btn-primary(ng-disabled='!profileCouldBeSaved()' ng-click='profileCouldBeSaved() && saveUser()' bs-tooltip='' data-title='{{saveBtnTipText()}}' data-placement='bottom' data-trigger='hover') Save
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/signin.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/signin.jade b/modules/web-console/src/main/js/views/signin.jade
index 73a07e7..a6c64a8 100644
--- a/modules/web-console/src/main/js/views/signin.jade
+++ b/modules/web-console/src/main/js/views/signin.jade
@@ -41,42 +41,42 @@ header#header.header
.settings-row
p.col-xs-12.col-md-11(ng-show='action == "password/forgot"')
| That's ok! Simply enter your email below and a reset password link will be sent to you via email. You can then follow that link and select a new password.
+ .settings-row(ng-show='action == "signin"')
+ +lblRequired('Email:')
+ .col-xs-9.col-md-8
+ input#signin_email.form-control(ignite-on-enter-focus-move='user_password' type='email' ng-model='ui.email' placeholder='Input email' required)
+ .settings-row(ng-show='action == "signup"')
+ +lblRequired('Email:')
+ .col-xs-9.col-md-8
+ input#signup_email.form-control(ignite-on-enter-focus-move='user_password' type='email' ng-model='ui.email' placeholder='Input email' required)
+ .settings-row(ng-show='action != "password/forgot"')
+ +lblRequired('Password:')
+ .col-xs-9.col-md-8
+ input#user_password.form-control(ignite-on-enter-focus-move='user_confirm' type='password' ng-model='ui.password' placeholder='Password' ng-required='action != "password/forgot"' ignite-on-enter='action == "signin" && form.$valid && auth(action, ui)')
+ .settings-row(ng-if='action == "signup"')
+ +lblRequired('Confirm:')
+ .col-xs-9.col-md-8
+ input#user_confirm.form-control(ignite-on-enter-focus-move='first_name' type='password' ng-model='ui_exclude.confirm' ignite-match='ui.password' placeholder='Confirm password' ng-required='action == "signup"')
.settings-row(ng-show='action == "signup"')
+lblRequired('First Name:')
.col-xs-9.col-md-8
- input#first_name.form-control(enter-focus-next='last_name' type='text' ng-model='ui.firstName' placeholder='Input first name' ng-required='action=="signup"')
+ input#first_name.form-control(ignite-on-enter-focus-move='last_name' type='text' ng-model='ui.firstName' placeholder='Input first name' ng-required='action=="signup"')
.settings-row(ng-show='action == "signup"')
+lblRequired('Last Name:')
.col-xs-9.col-md-8
- input#last_name.form-control(enter-focus-next='signup_email' type='text' ng-model='ui.lastName' placeholder='Input last name' ng-required='action=="signup"')
+ input#last_name.form-control(ignite-on-enter-focus-move='company' type='text' ng-model='ui.lastName' placeholder='Input last name' ng-required='action=="signup"')
.settings-row(ng-show='action == "password/forgot"')
+lblRequired('Email:')
.col-xs-9.col-md-8
- input#forgot_email.form-control(on-enter='form.$valid && forgotPassword(ui)' type='email' ng-model='ui.email' placeholder='Input email' required)
- .settings-row(ng-show='action == "signin"')
- +lblRequired('Email:')
- .col-xs-9.col-md-8
- input#signin_email.form-control(enter-focus-next='user_password' type='email' ng-model='ui.email' placeholder='Input email' required)
- .settings-row(ng-show='action == "signup"')
- +lblRequired('Email:')
- .col-xs-9.col-md-8
- input#signup_email.form-control(enter-focus-next='company' type='email' ng-model='ui.email' placeholder='Input email' required)
+ input#forgot_email.form-control(ignite-on-enter='form.$valid && forgotPassword(ui)' type='email' ng-model='ui.email' placeholder='Input email' required)
.settings-row(ng-show='action == "signup"')
+lblRequired('Company:')
.col-xs-9.col-md-8
- input#company.form-control(enter-focus-next='country' type='search' ng-model='ui.company' placeholder='Input company name' ng-required='action=="signup"')
+ input#company.form-control(ignite-on-enter-focus-move='country' type='text' ng-model='ui.company' placeholder='Input company name' ng-required='action=="signup"')
.settings-row(ng-show='action == "signup"')
+lblRequired('Country:')
.col-xs-9.col-md-8
- button#country.select-toggle.form-control(bs-select bs-options='item.name as item.name for item in countries' enter-focus-next='user_password' type='search' ng-model='ui.country' placeholder='Choose your country' ng-required='action=="signup"')
- .settings-row(ng-show='action != "password/forgot"')
- +lblRequired('Password:')
- .col-xs-9.col-md-8
- input#user_password.form-control(enter-focus-next='user_confirm' type='password' ng-model='ui.password' placeholder='Password' ng-required='action != "password/forgot"' on-enter='action == "signin" && form.$valid && auth(action, ui)')
- .settings-row(ng-if='action == "signup"')
- +lblRequired('Confirm:')
- .col-xs-9.col-md-8
- input#user_confirm.form-control(type='password' ng-model='ui_exclude.confirm' match='ui.password' placeholder='Confirm password' ng-required='action == "signup"' on-enter='form.$valid && auth(action, ui)')
+ button#country.select-toggle.form-control(ignite-on-enter-focus-move='signup' bs-select bs-options='item.name as item.name for item in countries' type='text' ng-model='ui.country' placeholder='Choose your country' ng-required='action=="signup"')
.settings-row(ignite-terms)
.col-md-offset-3(ng-if='action == "signup" && terms.termsState')
label
@@ -84,17 +84,17 @@ header#header.header
| I agree to the #[a(ui-sref='{{::terms.termsState}}' target='_blank') terms and conditions]
.col-xs-12.col-md-11
.login-footer(ng-show='action == "signup"')
- a.labelField(ng-click='action = "password/forgot"' on-click-focus='signin_email') Forgot password?
- a.labelLogin(ng-click='action = "signin"' on-click-focus='signin_email') Sign In
+ a.labelField(ng-click='action = "password/forgot"' ignite-on-click-focus='signin_email') Forgot password?
+ a.labelLogin(ng-click='action = "signin"' ignite-on-click-focus='signin_email') Sign In
button#signup.btn.btn-primary(ng-click='auth(action, ui)' ng-disabled='form.$invalid') Sign Up
.col-xs-12.col-md-11
.login-footer(ng-show='action == "password/forgot"')
- a.labelField(ng-click='action = "signin"' on-click-focus='signin_email') Sign In
+ a.labelField(ng-click='action = "signin"' ignite-on-click-focus='signin_email') Sign In
button#forgot.btn.btn-primary(ng-click='forgotPassword(ui)' ng-disabled='form.$invalid') Send it to me
.col-xs-12.col-md-11
.login-footer(ng-show='action == "signin"')
- a.labelField(ng-click='action = "password/forgot"' on-click-focus='signin_email') Forgot password?
- a.labelLogin(ng-click='action = "signup"' on-click-focus='first_name') Sign Up
+ a.labelField(ng-click='action = "password/forgot"' ignite-on-click-focus='signin_email') Forgot password?
+ a.labelLogin(ng-click='action = "signup"' ignite-on-click-focus='first_name') Sign Up
button#login.btn.btn-primary(ng-click='auth(action, ui)' ng-disabled='form.$invalid') Sign In
.col-xs-12.col-md-11.home-panel
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/sql/notebook-new.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/sql/notebook-new.jade b/modules/web-console/src/main/js/views/sql/notebook-new.jade
index 2a50137..51200e8 100644
--- a/modules/web-console/src/main/js/views/sql/notebook-new.jade
+++ b/modules/web-console/src/main/js/views/sql/notebook-new.jade
@@ -25,7 +25,7 @@
.col-sm-2
label.required.labelFormField Name:
.col-sm-10
- input.form-control(id='create-notebook' type='text' ng-model='name' required on-enter='ui.inputForm.$valid && createNewNotebook(name)' auto-focus)
+ input.form-control(id='create-notebook' type='text' ng-model='name' required ignite-on-enter='ui.inputForm.$valid && createNewNotebook(name)' ignite-auto-focus)
.modal-footer
button.btn.btn-default(id='copy-btn-cancel' ng-click='$hide()') Cancel
button.btn.btn-primary(id='copy-btn-confirm' ng-disabled='ui.inputForm.$invalid' ng-click='createNewNotebook(name)') Create
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/sql/paragraph-rate.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/sql/paragraph-rate.jade b/modules/web-console/src/main/js/views/sql/paragraph-rate.jade
index f6f105f..03c6497 100644
--- a/modules/web-console/src/main/js/views/sql/paragraph-rate.jade
+++ b/modules/web-console/src/main/js/views/sql/paragraph-rate.jade
@@ -22,7 +22,7 @@
form(name='popoverForm' novalidate)
.form-group(style='padding: 5px')
.col-sm-4
- input.form-control(id='paragraph-rate' ng-init='value = paragraph.rate.value' ng-model='value' type='number' min='1' required auto-focus)
+ input.form-control(id='paragraph-rate' ng-init='value = paragraph.rate.value' ng-model='value' type='number' min='1' required ignite-auto-focus)
.col-sm-8(style='padding-left: 5px')
button.form-control.select-toggle(id='paragraph-unit' ng-init='unit = paragraph.rate.unit' ng-model='unit' required placeholder='Time unit' bs-select bs-options='item.value as item.label for item in timeUnit' data-container='false' tabindex='0')
.form-actions(style='margin-top: 30px; padding: 5px')
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/sql/sql.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/sql/sql.jade b/modules/web-console/src/main/js/views/sql/sql.jade
index be6d85e..a5e7fae 100644
--- a/modules/web-console/src/main/js/views/sql/sql.jade
+++ b/modules/web-console/src/main/js/views/sql/sql.jade
@@ -15,7 +15,7 @@
limitations under the License.
mixin btn-toolbar(btn, click, tip, focusId)
- i.btn.btn-default.fa(class=btn ng-click=click bs-tooltip='' data-title=tip on-click-focus=focusId data-trigger='hover' data-placement='bottom')
+ i.btn.btn-default.fa(class=btn ng-click=click bs-tooltip='' data-title=tip ignite-on-click-focus=focusId data-trigger='hover' data-placement='bottom')
mixin btn-toolbar-data(btn, kind, tip)
i.btn.btn-default.fa(class=btn ng-click='setResult(paragraph, "#{kind}")' ng-class='{active: resultEq(paragraph, "#{kind}")}' bs-tooltip='' data-title=tip data-trigger='hover' data-placement='bottom')
@@ -52,7 +52,7 @@ mixin notebook-rename
h1.col-sm-6(ng-show='notebook.edit')
i.btn.fa.fa-floppy-o(ng-show='notebook.editName' ng-click='renameNotebook(notebook.editName)' bs-tooltip data-title='Save notebook name' data-trigger='hover')
.input-tip
- input.form-control(ng-model='notebook.editName' required on-enter='renameNotebook(notebook.editName)' on-escape='notebook.edit = false;')
+ input.form-control(ng-model='notebook.editName' required ignite-on-enter='renameNotebook(notebook.editName)' ignite-on-escape='notebook.edit = false;')
h1.pull-right
a.dropdown-toggle(data-toggle='dropdown' bs-dropdown='scrollParagraphs' data-placement='bottom-right') Scroll to query
span.caret
@@ -80,7 +80,7 @@ mixin paragraph-rename
i.tipLabel.fa(style='float: left;' ng-class='paragraphExpanded(paragraph) ? "fa-chevron-circle-down" : "fa-chevron-circle-right"')
i.tipLabel.fa.fa-floppy-o(style='float: right;' ng-show='paragraph.editName' ng-click='renameParagraph(paragraph, paragraph.editName); $event.stopPropagation();' bs-tooltip data-title='Save query name' data-trigger='hover')
.input-tip
- input.form-control(id='paragraph-name-{{paragraph.id}}' ng-model='paragraph.editName' required ng-click='$event.stopPropagation();' on-enter='renameParagraph(paragraph, paragraph.editName)' on-escape='paragraph.edit = false')
+ input.form-control(id='paragraph-name-{{paragraph.id}}' ng-model='paragraph.editName' required ng-click='$event.stopPropagation();' ignite-on-enter='renameParagraph(paragraph, paragraph.editName)' ignite-on-escape='paragraph.edit = false')
mixin query-controls
.sql-controls
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/templates/agent-download.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/templates/agent-download.jade b/modules/web-console/src/main/js/views/templates/agent-download.jade
index f17dac8..864694b 100644
--- a/modules/web-console/src/main/js/views/templates/agent-download.jade
+++ b/modules/web-console/src/main/js/views/templates/agent-download.jade
@@ -33,7 +33,7 @@
a(ng-click='agentLoad.showToken = ! agentLoad.showToken') {{agentLoad.showToken ? 'Hide security token...' : 'Show security token...'}}
.details-row(ng-show='agentLoad.showToken')
label.labelField Security token: {{user.token}}
- i.tipLabel.fa.fa-clipboard(ng-click-copy='{{user.token}}' bs-tooltip='' data-title='Copy security token to clipboard')
+ i.tipLabel.fa.fa-clipboard(ignite-copy-to-clipboard='{{user.token}}' bs-tooltip='' data-title='Copy security token to clipboard')
i.tipLabel.fa.fa-question-circle(ng-if=lines bs-tooltip='' data-title='The security token is used for authorization of web agent')
.agent-download(ng-if='hasAgents')
p Connection to Ignite Web Agent is established, but agent failed to connect to Ignite Node
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/modules/web-console/src/main/js/views/templates/clone.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/src/main/js/views/templates/clone.jade b/modules/web-console/src/main/js/views/templates/clone.jade
index c94c534..25e99e7 100644
--- a/modules/web-console/src/main/js/views/templates/clone.jade
+++ b/modules/web-console/src/main/js/views/templates/clone.jade
@@ -25,7 +25,7 @@
.col-sm-2
label.required.labelFormField New name:
.col-sm-10
- input.form-control(id='copy-new-name' type='text' ng-model='newName' on-enter='form.$valid && ok(newName)' required auto-focus)
+ input.form-control(id='copy-new-name' type='text' ng-model='newName' ignite-on-enter='form.$valid && ok(newName)' required ignite-auto-focus)
.modal-footer
button.btn.btn-default(id='copy-btn-cancel' ng-click='$hide()') Cancel
button.btn.btn-primary(id='copy-btn-confirm' ng-disabled='ui.inputForm.$invalid' ng-click='ok(newName)') Confirm
http://git-wip-us.apache.org/repos/asf/ignite/blob/c38b3ba2/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 9fbc78d..e4a6f84 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -874,13 +874,13 @@
<exclude>**/*.ps1</exclude>
<exclude>**/*.json</exclude>
<!--web console-->
- <exclude>**/src/main/js/*.babelrc</exclude>
- <exclude>**/src/main/js/*.eslintrc</exclude>
- <exclude>**/src/main/js/*.npmrc</exclude>
+ <exclude>**/src/main/js/.babelrc</exclude>
+ <exclude>**/src/main/js/.eslintrc</exclude>
<exclude>**/src/main/js/build/**</exclude>
<exclude>**/src/main/js/node_modules/**</exclude>
+ <exclude>**/src/main/js/ignite_modules/**</exclude>
+ <exclude>**/src/main/js/ignite_modules_temp/**</exclude>
<exclude>**/src/main/js/serve/config/settings.json.sample</exclude>
- <exclude>**/src/main/js/serve/keys/test.*</exclude>
</excludes>
</configuration>
</execution>