You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by nt...@apache.org on 2017/04/03 08:31:08 UTC
[08/50] [abbrv] ignite git commit: IGNITE-4659 Migration to Webpack
2. Upgrade template engine from jade to pug. (cherry picked from commit
1080e68)
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/app/services/Clone.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/Clone.service.js b/modules/web-console/frontend/app/services/Clone.service.js
index 52a4e4e..d079141 100644
--- a/modules/web-console/frontend/app/services/Clone.service.js
+++ b/modules/web-console/frontend/app/services/Clone.service.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import templateUrl from 'views/templates/clone.tpl.pug';
+
// Service for clone objects.
export default ['IgniteClone', ['$rootScope', '$q', '$modal', ($root, $q, $modal) => {
const scope = $root.$new();
@@ -36,7 +38,7 @@ export default ['IgniteClone', ['$rootScope', '$q', '$modal', ($root, $q, $modal
return tmpName;
}
- const cloneModal = $modal({templateUrl: '/templates/clone.html', scope, placement: 'center', show: false});
+ const cloneModal = $modal({templateUrl, scope, placement: 'center', show: false});
scope.ok = function(newName) {
if (!_validator || _validator(newName)) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/app/services/Confirm.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/Confirm.service.js b/modules/web-console/frontend/app/services/Confirm.service.js
index 8208ea2..0b5b9be 100644
--- a/modules/web-console/frontend/app/services/Confirm.service.js
+++ b/modules/web-console/frontend/app/services/Confirm.service.js
@@ -15,11 +15,13 @@
* limitations under the License.
*/
+import templateUrl from 'views/templates/confirm.tpl.pug';
+
// Confirm popup service.
export default ['IgniteConfirm', ['$rootScope', '$q', '$modal', '$animate', ($root, $q, $modal, $animate) => {
const scope = $root.$new();
- const modal = $modal({templateUrl: '/templates/confirm.html', scope, placement: 'center', show: false, backdrop: true});
+ const modal = $modal({templateUrl, scope, placement: 'center', show: false, backdrop: true});
const _hide = () => {
$animate.enabled(modal.$element, false);
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/app/services/ConfirmBatch.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/services/ConfirmBatch.service.js b/modules/web-console/frontend/app/services/ConfirmBatch.service.js
index ef66335..2fd55b7 100644
--- a/modules/web-console/frontend/app/services/ConfirmBatch.service.js
+++ b/modules/web-console/frontend/app/services/ConfirmBatch.service.js
@@ -15,12 +15,14 @@
* limitations under the License.
*/
+import templateUrl from 'views/templates/batch-confirm.tpl.pug';
+
// Service for confirm or skip several steps.
export default ['IgniteConfirmBatch', ['$rootScope', '$q', '$modal', ($root, $q, $modal) => {
const scope = $root.$new();
scope.confirmModal = $modal({
- templateUrl: '/templates/batch-confirm.html',
+ templateUrl,
scope,
placement: 'center',
show: false,
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/controllers/caches-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/controllers/caches-controller.js b/modules/web-console/frontend/controllers/caches-controller.js
index e7521b5..b50fde3 100644
--- a/modules/web-console/frontend/controllers/caches-controller.js
+++ b/modules/web-console/frontend/controllers/caches-controller.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import infoMessageTemplateUrl from 'views/templates/message.tpl.pug';
+
// Controller for Caches screen.
export default ['cachesController', [
'$scope', '$http', '$state', '$filter', '$timeout', '$modal', 'IgniteLegacyUtils', 'IgniteMessages', 'IgniteConfirm', 'IgniteClone', 'IgniteLoading', 'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 'IgniteConfigurationResource', 'IgniteErrorPopover', 'IgniteFormUtils', 'IgniteLegacyTable',
@@ -542,7 +544,7 @@ export default ['cachesController', [
];
// Show a basic modal from a controller
- $modal({scope, template: '/templates/message.html', placement: 'center', show: true});
+ $modal({scope, templateUrl: infoMessageTemplateUrl, placement: 'center', show: true});
}
save(item);
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/controllers/domains-controller.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/controllers/domains-controller.js b/modules/web-console/frontend/controllers/domains-controller.js
index bfffe92..5c9e511 100644
--- a/modules/web-console/frontend/controllers/domains-controller.js
+++ b/modules/web-console/frontend/controllers/domains-controller.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import templateUrl from 'views/configuration/domains-import.tpl.pug';
+
// Controller for Domain model screen.
export default ['domainsController', [
'$rootScope', '$scope', '$http', '$state', '$filter', '$timeout', '$modal', 'IgniteLegacyUtils', 'IgniteMessages', 'IgniteFocus', 'IgniteConfirm', 'IgniteConfirmBatch', 'IgniteClone', 'IgniteLoading', 'IgniteModelNormalizer', 'IgniteUnsavedChangesGuard', 'IgniteAgentMonitor', 'IgniteLegacyTable', 'IgniteConfigurationResource', 'IgniteErrorPopover', 'IgniteFormUtils', 'JavaTypes', 'SqlTypes', 'IgniteActivitiesData',
@@ -409,7 +411,7 @@ export default ['domainsController', [
$scope.$watch('importDomain.displayedTables', $scope.selectTable);
// Pre-fetch modal dialogs.
- const importDomainModal = $modal({scope: $scope, templateUrl: '/configuration/domains-import.html', show: false});
+ const importDomainModal = $modal({scope: $scope, templateUrl, show: false});
const hideImportDomain = importDomainModal.hide;
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/paths.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/paths.js b/modules/web-console/frontend/gulpfile.babel.js/paths.js
index 6ebfbad..627b2f9 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/paths.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/paths.js
@@ -24,33 +24,15 @@ const destDir = path.resolve('build');
const igniteModulesDir = process.env.IGNITE_MODULES ? path.join(path.normalize(process.env.IGNITE_MODULES), 'frontend') : './ignite_modules';
const igniteModulesTemp = path.resolve('ignite_modules_temp');
-const jadeViewsPaths = [
- './views/**/*.jade',
- '!./views/configuration/*.jade'
-];
-
-const jadeAppModulePaths = [
- './app/modules/states/configuration/**/*.jade',
- './app/modules/sql/*.jade',
- './views/**/*.jade',
- '!./views/*.jade',
- '!./views/includes/*.jade',
- '!./views/settings/*.jade',
- '!./views/sql/*.jade',
- '!./views/templates/*.jade'
-];
-
-const jadeModulePaths = [
- igniteModulesDir + '/**/view/**/*.jade'
-];
-
const appModulePaths = [
igniteModulesDir + '/index.js',
igniteModulesDir + '/**/main.js',
igniteModulesDir + '/**/module.js',
igniteModulesDir + '/**/app/modules/*.js',
igniteModulesDir + '/**/app/modules/**/*.js',
- igniteModulesDir + '/**/app/modules/**/*.jade',
+ igniteModulesDir + '/**/app/modules/**/*.pug',
+ igniteModulesDir + '/**/*.pug',
+ igniteModulesDir + '/**/*.tpl.pug',
igniteModulesDir + '/**/app/**/*.css',
igniteModulesDir + '/**/app/**/*.scss',
igniteModulesDir + '/**/app/data/*.json'
@@ -73,10 +55,6 @@ export {
igniteModulesDir,
igniteModulesTemp,
- jadeViewsPaths,
- jadeAppModulePaths,
- jadeModulePaths,
-
resourcePaths,
resourceModulePaths,
appModulePaths
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/tasks/build.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/tasks/build.js b/modules/web-console/frontend/gulpfile.babel.js/tasks/build.js
index 7d7401b..149b076 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/tasks/build.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/tasks/build.js
@@ -18,4 +18,4 @@
import gulp from 'gulp';
import sequence from 'gulp-sequence';
-gulp.task('build', (cb) => sequence(['clean', 'clean:ignite-modules-temp'], 'ignite:modules', ['copy:resource', 'jade'], 'bundle', cb));
+gulp.task('build', (cb) => sequence(['clean', 'clean:ignite-modules-temp'], 'ignite:modules', ['copy:resource'], 'bundle', cb));
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/tasks/bundle.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/tasks/bundle.js b/modules/web-console/frontend/gulpfile.babel.js/tasks/bundle.js
index d3e8dca..ac3ac76 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/tasks/bundle.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/tasks/bundle.js
@@ -21,10 +21,14 @@ import webpackConfig from '../webpack';
import WebpackDevServer from 'webpack-dev-server';
gulp.task('bundle', (cb) => {
+ const devServerConfig = webpackConfig.devServer;
+
+ delete webpackConfig.devServer;
+
if (process.env.NODE_ENV === 'development') {
// Important! Call webpack and WebpackDevServer must be inline.
- new WebpackDevServer(webpack(webpackConfig), webpackConfig.devServer)
- .listen(webpackConfig.devServer.port, 'localhost', cb);
+ new WebpackDevServer(webpack(webpackConfig), devServerConfig)
+ .listen(devServerConfig.port, 'localhost', cb);
}
else
webpack(webpackConfig, cb);
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/tasks/watch.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/tasks/watch.js b/modules/web-console/frontend/gulpfile.babel.js/tasks/watch.js
index dfaa1a3..9a02b88 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/tasks/watch.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/tasks/watch.js
@@ -18,15 +18,12 @@
import gulp from 'gulp';
import sequence from 'gulp-sequence';
-import { jadeViewsPaths, jadeAppModulePaths, jadeModulePaths, resourcePaths, resourceModulePaths, appModulePaths } from '../paths';
+import { resourcePaths, resourceModulePaths, appModulePaths } from '../paths';
gulp.task('watch:ignite-modules', (cb) => sequence('clean:ignite-modules-temp', 'ignite:modules', cb));
// Build + watch task.
gulp.task('watch', ['build'], () => {
- gulp.watch(jadeViewsPaths, ['jade:views']);
- gulp.watch(jadeAppModulePaths.concat('./app/helpers/**/*.jade'), ['jade:app']);
- gulp.watch(jadeModulePaths.concat('./app/helpers/**/*.jade'), ['jade:ignite_modules']);
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/cad46799/modules/web-console/frontend/gulpfile.babel.js/webpack/common.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/webpack/common.js b/modules/web-console/frontend/gulpfile.babel.js/webpack/common.js
index 7360ac4..3d9616f 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/webpack/common.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/webpack/common.js
@@ -18,21 +18,22 @@
import path from 'path';
import fs from 'fs';
import webpack from 'webpack';
-import autoprefixer from 'autoprefixer-core';
-import jade from 'jade';
+
import ProgressBarPlugin from 'progress-bar-webpack-plugin';
import eslintFormatter from 'eslint-friendly-formatter';
-import ExtractTextPlugin from 'extract-text-webpack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
+import ExtractTextPlugin from 'extract-text-webpack-plugin';
+
import {srcDir, destDir, rootDir, igniteModulesDir} from '../paths';
+const viewsDir = path.resolve('views');
+const imagesDir = path.resolve('public/images');
+
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 = 'build/ignite_modules/favicon.ico';
@@ -42,150 +43,155 @@ try {
favicon = 'build/favicon.ico';
}
-export default () => {
- const assetsLoader = 'file-loader';
-
- return {
- cache: true,
- 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,
- filename: '[name].js'
- },
-
- // Resolves modules.
- resolve: {
- extensions: [
- '',
- '.js'
- ],
- root: [rootDir],
- modulesDirectories: [
- node_modules_path,
- './'
- ]
- },
- jade: {
- basedir: rootDir,
- locals: {}
- },
- // 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],
- loader: 'babel-loader',
- query: {
+export default {
+ cache: true,
+ node: {
+ fs: 'empty'
+ },
+ // Entry points.
+ entry: {
+ polyfill: 'babel-polyfill',
+ vendor: path.join(srcDir, 'vendor.js'),
+ app: path.join(srcDir, 'app.js')
+ },
+
+ // Output system.
+ output: {
+ path: destDir,
+ filename: '[name].js'
+ },
+
+ // Resolves modules.
+ resolve: {
+ extensions: [
+ '.js'
+ ],
+ modules: [
+ srcDir,
+ rootDir,
+ node_modules_path
+ ],
+ // A list of module source folders.
+ alias: {
+ app: srcDir,
+ views: viewsDir,
+ images: imagesDir
+ }
+ },
+
+ // Resolve loader use postfix.
+ resolveLoader: {
+ moduleExtensions: ['-loader']
+ },
+
+ module: {
+ rules: [
+ {
+ test: /\.json$/,
+ loader: 'json'
+ },
+
+ // Exclude tpl.pug files to import in bundle.
+ {
+ test: /^(?:(?!tpl\.pug$).)*\.pug$/, // TODO: check this regexp for correct.
+ loader: `pug-html?basedir=${rootDir}`
+ },
+
+ // Render .tpl.pug files to assets folder.
+ {
+ test: /\.tpl\.pug$/,
+ use: [
+ 'file?exports=false&name=assets/templates/[name].[hash].html',
+ `pug-html?exports=false&basedir=${rootDir}`
+ ]
+ },
+ {
+ test: /\.js$/,
+ enforce: 'pre',
+ exclude: [node_modules_path],
+ use: [{
+ loader: 'eslint',
+ options: {
+ failOnWarning: false,
+ failOnError: false,
+ formatter: eslintFormatter
+ }
+ }]
+ },
+ {
+ test: /\.js$/,
+ exclude: [node_modules_path],
+ use: [{
+ loader: 'babel',
+ options: {
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: /\.(ttf|eot|svg|woff(2)?)(\?v=[\d.]+)?(\?[a-z0-9#-]+)?$/,
- loaders: [`${assetsLoader}?name=assets/fonts/[name].[ext]`]
- },
- {
- test: /\.(jpe?g|png|gif)$/i,
- loaders: [`${assetsLoader}?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 webpack.optimize.OccurenceOrderPlugin(),
- 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
- }),
- new ProgressBarPlugin()
+ }]
+ },
+ {
+ test: /\.css$/,
+ use: development ? ['style', 'css'] : ExtractTextPlugin.extract({
+ fallback: 'style',
+ use: ['css']
+ })
+ },
+ {
+ test: /\.scss$/,
+ use: development ? ['style', 'css', 'sass'] : ExtractTextPlugin.extract({
+ fallback: 'style-loader',
+ use: ['css', 'sass']
+ })
+ },
+ {
+ test: /\.(ttf|eot|svg|woff(2)?)(\?v=[\d.]+)?(\?[a-z0-9#-]+)?$/,
+ loader: 'file?name=assets/fonts/[name].[ext]'
+ },
+ {
+ test: /\.(jpe?g|png|gif)$/i,
+ loader: 'file?name=assets/images/[name]_[hash].[ext]'
+ },
+ {
+ test: require.resolve('jquery'),
+ use: [
+ 'expose-loader?$',
+ 'expose-loader?jQuery'
+ ]
+ },
+ {
+ test: require.resolve('nvd3'),
+ use: ['expose-loader?nv']
+ }
]
- };
+ },
+
+ // Load plugins.
+ plugins: [
+ new webpack.LoaderOptionsPlugin({
+ options: {
+ pug: {
+ basedir: rootDir
+ }
+ }
+ }),
+ new webpack.ProvidePlugin({
+ $: 'jquery',
+ jQuery: 'jquery',
+ _: 'lodash',
+ nv: 'nvd3'
+ }),
+ new webpack.DefinePlugin({NODE_ENV: JSON.stringify(NODE_ENV)}),
+ new webpack.optimize.CommonsChunkPlugin({name: 'vendor'}),
+ new webpack.optimize.AggressiveMergingPlugin({moveToParents: true}),
+ new HtmlWebpackPlugin({
+ template: './views/index.pug',
+ favicon
+ }),
+ new ExtractTextPlugin({filename: 'assets/css/[name].css', allChunks: true}),
+ new ProgressBarPlugin()
+ ]
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/development.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/development.js b/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/development.js
index 34e1f6a..c837c43 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/development.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/development.js
@@ -15,65 +15,47 @@
* limitations under the License.
*/
-import path from 'path';
-import webpack from 'webpack';
-
-import {destDir, rootDir, srcDir} from '../../paths';
+import {destDir} from '../../paths';
const backendPort = 3000;
const devServerPort = 9000;
-export default () => {
- const plugins = [
- new webpack.HotModuleReplacementPlugin()
- ];
-
- return {
- entry: {
- app: [path.join(srcDir, 'app.js'), 'webpack/hot/only-dev-server']
- },
- output: {
- publicPath: `http://localhost:${devServerPort}/`
- },
- context: rootDir,
- debug: true,
- devtool: 'source-map',
- watch: true,
- devServer: {
- compress: true,
- historyApiFallback: true,
- contentBase: destDir,
- hot: true,
- inline: true,
- proxy: {
- '/socket.io': {
- target: `http://localhost:${backendPort}`,
- changeOrigin: true,
- ws: true
- },
- '/agents': {
- target: `http://localhost:${backendPort}`,
- changeOrigin: true,
- ws: true
- },
- '/api/v1/*': {
- target: `http://localhost:${backendPort}`,
- changeOrigin: true,
- pathRewrite: {
- '^/api/v1': ''
- }
- }
+export default {
+ devtool: 'source-map',
+ watch: true,
+ devServer: {
+ compress: true,
+ historyApiFallback: true,
+ contentBase: destDir,
+ // hot: true,
+ inline: true,
+ proxy: {
+ '/socket.io': {
+ target: `http://localhost:${backendPort}`,
+ changeOrigin: true,
+ ws: true
},
- watchOptions: {
- aggregateTimeout: 1000,
- poll: 2000
+ '/agents': {
+ target: `http://localhost:${backendPort}`,
+ changeOrigin: true,
+ ws: true
},
- stats: {
- colors: true,
- chunks: false
- },
- port: devServerPort
+ '/api/v1/*': {
+ target: `http://localhost:${backendPort}`,
+ changeOrigin: true,
+ pathRewrite: {
+ '^/api/v1': ''
+ }
+ }
+ },
+ watchOptions: {
+ aggregateTimeout: 1000,
+ poll: 2000
+ },
+ stats: {
+ colors: true,
+ chunks: false
},
- plugins
- };
+ port: devServerPort
+ }
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/production.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/production.js b/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/production.js
index 1194568..cbbe9ca 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/production.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/production.js
@@ -15,30 +15,27 @@
* limitations under the License.
*/
+
import webpack from 'webpack';
-import {destDir, rootDir} from '../../paths';
+import {destDir} from '../../paths';
-export default () => {
- const plugins = [
- new webpack.optimize.UglifyJsPlugin({
- path: destDir,
- minimize: true,
- warnings: false,
- sourceMap: false,
- mangle: true
- })
- ];
+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'
- },
- plugins
- };
+export default {
+ bail: true, // Cancel build on error.
+ devtool: 'cheap-source-map',
+ output: {
+ publicPath: '/',
+ filename: '[name].[chunkhash].js'
+ },
+ plugins
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/gulpfile.babel.js/webpack/index.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/gulpfile.babel.js/webpack/index.js b/modules/web-console/frontend/gulpfile.babel.js/webpack/index.js
index 9b344dd..3caf06c 100644
--- a/modules/web-console/frontend/gulpfile.babel.js/webpack/index.js
+++ b/modules/web-console/frontend/gulpfile.babel.js/webpack/index.js
@@ -19,6 +19,8 @@ import _ from 'lodash';
import commonConfig from './common';
import devConfig from './environments/development';
import prodConfig from './environments/production';
+
+// TODO check test config
import testConfig from './environments/test';
const env = process.env.NODE_ENV || 'production';
@@ -31,4 +33,4 @@ const configs = {
};
// Load config file by environment
-export default _.merge(commonConfig(), configs[env]());
+export default _.merge(commonConfig, configs[env]);
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/package.json
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/package.json b/modules/web-console/frontend/package.json
index 2d12655..b11f690 100644
--- a/modules/web-console/frontend/package.json
+++ b/modules/web-console/frontend/package.json
@@ -5,7 +5,7 @@
"private": true,
"scripts": {
"dev": "cross-env NODE_ENV=development gulp watch",
- "build": "cross-env NODE_ENV=production gulp build --no-ll",
+ "build": "cross-env NODE_ENV=production gulp build",
"test": "cross-env NODE_ENV=test karma start ./test/karma.conf.js",
"eslint": "eslint --format node_modules/eslint-friendly-formatter gulpfile.babel.js/ app/ controllers/ ignite_modules/ ignite_modules_temp/ -- --eff-by-issue"
},
@@ -50,7 +50,7 @@
"angular-ui-router": "0.4.2",
"bootstrap-sass": "3.3.7",
"brace": "0.8.0",
- "es6-promise": "3.3.1",
+ "es6-promise": "4.0.5",
"file-saver": "1.3.3",
"font-awesome": "4.7.0",
"glob": "7.1.1",
@@ -60,12 +60,12 @@
"nvd3": "1.8.4",
"raleway-webfont": "3.0.1",
"roboto-font": "0.1.0",
- "socket.io-client": "1.7.2",
+ "socket.io-client": "1.7.3",
"ui-router-metatags": "1.0.3"
},
"devDependencies": {
"assets-webpack-plugin": "3.5.1",
- "autoprefixer-core": "6.0.1",
+ "autoprefixer": "6.7.5",
"babel-core": "6.20.0",
"babel-eslint": "7.0.0",
"babel-loader": "6.2.10",
@@ -77,52 +77,50 @@
"babel-preset-es2015": "6.18.0",
"babel-runtime": "6.20.0",
"chai": "3.5.0",
- "cross-env": "1.0.8",
- "css-loader": "0.26.1",
- "eslint": "3.12.2",
+ "cross-env": "3.1.4",
+ "css-loader": "0.26.2",
+ "eslint": "3.16.1",
"eslint-friendly-formatter": "2.0.7",
- "eslint-loader": "1.6.1",
- "expose-loader": "0.7.1",
- "extract-text-webpack-plugin": "1.0.1",
- "file-loader": "0.9.0",
+ "eslint-loader": "1.6.3",
+ "expose-loader": "0.7.3",
+ "extract-text-webpack-plugin": "2.0.0",
+ "file-loader": "0.10.1",
"gulp": "3.9.1",
"gulp-eslint": "3.0.1",
- "gulp-inject": "4.1.0",
- "gulp-jade": "1.1.0",
- "gulp-ll": "1.0.4",
+ "gulp-inject": "4.2.0",
"gulp-rimraf": "0.2.1",
"gulp-sequence": "0.4.6",
"gulp-util": "3.0.8",
- "html-loader": "0.4.4",
- "html-webpack-plugin": "2.24.1",
- "jade": "1.11.0",
- "jade-html-loader": "git://github.com/courcelan/jade-html-loader",
+ "html-loader": "0.4.5",
+ "html-webpack-plugin": "2.28.0",
"jasmine-core": "2.5.2",
"json-loader": "0.5.4",
- "karma": "0.13.22",
+ "karma": "1.5.0",
"karma-babel-preprocessor": "6.0.1",
"karma-jasmine": "1.1.0",
"karma-mocha": "1.3.0",
"karma-mocha-reporter": "2.2.2",
"karma-phantomjs-launcher": "1.0.2",
"karma-teamcity-reporter": "1.0.0",
- "karma-webpack": "1.8.1",
- "mocha": "2.5.3",
+ "karma-webpack": "2.0.2",
+ "mocha": "3.2.0",
"mocha-teamcity-reporter": "1.1.1",
- "morgan": "1.7.0",
"ngtemplate-loader": "1.3.1",
- "node-sass": "3.13.1",
+ "node-sass": "4.5.0",
"phantomjs-prebuilt": "2.1.14",
- "postcss-loader": "0.9.1",
+ "postcss-loader": "1.3.2",
"progress-bar-webpack-plugin": "1.9.3",
+ "pug-html-loader": "1.1.0",
+ "pug-loader": "2.3.0",
"require-dir": "0.3.1",
- "resolve-url-loader": "1.6.1",
- "sass-loader": "3.2.2",
- "style-loader": "0.13.1",
+ "resolve-url-loader": "2.0.0",
+ "sass-loader": "6.0.2",
+ "style-loader": "0.13.2",
"url": "0.11.0",
- "url-loader": "0.5.7",
- "webpack": "1.14.0",
- "webpack-dev-server": "1.16.3",
- "worker-loader": "0.7.1"
+ "url-loader": "0.5.8",
+ "webpack": "2.2.1",
+ "webpack-dev-server": "2.4.1",
+ "webpack-stream": "3.2.0",
+ "worker-loader": "0.8.0"
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/e2e/exampe.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/e2e/exampe.test.js b/modules/web-console/frontend/test/e2e/exampe.test.js
index c778c79..00788bb 100644
--- a/modules/web-console/frontend/test/e2e/exampe.test.js
+++ b/modules/web-console/frontend/test/e2e/exampe.test.js
@@ -15,6 +15,8 @@
* limitations under the License.
*/
+import { suite, test, setup } from 'mocha';
+
suite('ExampleTestSuite', () => {
setup(() => {
// browser.get('http://localhost:9000/');
@@ -37,4 +39,4 @@ suite('ExampleTestSuite', () => {
// element(by.model('ui.email')).sendKeys('jhon@doe.com');
});
-});
\ No newline at end of file
+});
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/karma.conf.babel.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/karma.conf.babel.js b/modules/web-console/frontend/test/karma.conf.babel.js
index 76a0ba0..992c4d0 100644
--- a/modules/web-console/frontend/test/karma.conf.babel.js
+++ b/modules/web-console/frontend/test/karma.conf.babel.js
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import webpackConfig from '../gulpfile.babel.js/webpack';
+import webpack from '../gulpfile.babel.js/webpack';
import path from 'path';
const basePath = path.resolve('./');
@@ -23,7 +23,7 @@ const basePath = path.resolve('./');
export default (config) => {
config.set({
// Base path that will be used to resolve all patterns (eg. files, exclude).
- basePath: basePath,
+ basePath,
// Frameworks to use available frameworks: https://npmjs.org/browse/keyword/karma-adapter
frameworks: ['mocha'],
@@ -46,7 +46,8 @@ export default (config) => {
preprocessors: {
'test/**/*.js': ['webpack']
},
- webpack: webpackConfig,
+
+ webpack,
webpackMiddleware: {
noInfo: true
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/protractor.conf.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/protractor.conf.js b/modules/web-console/frontend/test/protractor.conf.js
index 3386e66..4ee1c69 100644
--- a/modules/web-console/frontend/test/protractor.conf.js
+++ b/modules/web-console/frontend/test/protractor.conf.js
@@ -23,10 +23,10 @@
// };
exports.config = {
- seleniumAddress: 'http://localhost:4444/wd/hub',
+ seleniumAddress: 'http://localhost:4444/wd/hub',
- capabilities: {
- 'browserName': 'chrome'
+ capabilities: {
+ browserName: 'chrome'
// 'browserName': 'phantomjs',
// /*
@@ -40,11 +40,11 @@ exports.config = {
// * See https://github.com/detro/ghostdriver#faq
// */
// 'phantomjs.ghostdriver.cli.args': ['--loglevel=DEBUG']
- },
+ },
- specs: ['test/e2e/*.js'],
+ specs: ['test/e2e/*.js'],
- jasmineNodeOpts: {
- showColors: true
- }
+ jasmineNodeOpts: {
+ showColors: true
+ }
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/JavaTransformer.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/JavaTransformer.test.js b/modules/web-console/frontend/test/unit/JavaTransformer.test.js
index 3f39000..7dacc16 100644
--- a/modules/web-console/frontend/test/unit/JavaTransformer.test.js
+++ b/modules/web-console/frontend/test/unit/JavaTransformer.test.js
@@ -20,7 +20,7 @@ import JavaTypes from '../../app/services/JavaTypes.service.js';
import generator from '../../app/modules/configuration/generator/ConfigurationGenerator';
import transformer from '../../app/modules/configuration/generator/JavaTransformer.service';
-import { assert } from 'chai';
+import { suite, test } from 'mocha';
suite.skip('JavaTransformerTestsSuite', () => {
test('AtomicConfiguration', () => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/JavaTypes.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/JavaTypes.test.js b/modules/web-console/frontend/test/unit/JavaTypes.test.js
index 49e78cc..e42d687 100644
--- a/modules/web-console/frontend/test/unit/JavaTypes.test.js
+++ b/modules/web-console/frontend/test/unit/JavaTypes.test.js
@@ -21,113 +21,114 @@ import ClusterDflts from '../../app/modules/configuration/generator/defaults/Clu
import CacheDflts from '../../app/modules/configuration/generator/defaults/Cache.service';
import IgfsDflts from '../../app/modules/configuration/generator/defaults/IGFS.service';
-const INSTANCE = new JavaTypes(new ClusterDflts(), new CacheDflts(), new IgfsDflts());
+const instance = new JavaTypes(new ClusterDflts(), new CacheDflts(), new IgfsDflts());
+import { suite, test } from 'mocha';
import { assert } from 'chai';
suite('JavaTypesTestsSuite', () => {
test('nonBuiltInClass', () => {
- assert.equal(INSTANCE.nonBuiltInClass('BigDecimal'), false);
- assert.equal(INSTANCE.nonBuiltInClass('java.math.BigDecimal'), false);
+ assert.equal(instance.nonBuiltInClass('BigDecimal'), false);
+ assert.equal(instance.nonBuiltInClass('java.math.BigDecimal'), false);
- assert.equal(INSTANCE.nonBuiltInClass('String'), false);
- assert.equal(INSTANCE.nonBuiltInClass('java.lang.String'), false);
+ assert.equal(instance.nonBuiltInClass('String'), false);
+ assert.equal(instance.nonBuiltInClass('java.lang.String'), false);
- assert.equal(INSTANCE.nonBuiltInClass('Timestamp'), false);
- assert.equal(INSTANCE.nonBuiltInClass('java.sql.Timestamp'), false);
+ assert.equal(instance.nonBuiltInClass('Timestamp'), false);
+ assert.equal(instance.nonBuiltInClass('java.sql.Timestamp'), false);
- assert.equal(INSTANCE.nonBuiltInClass('Date'), false);
- assert.equal(INSTANCE.nonBuiltInClass('java.sql.Date'), false);
+ assert.equal(instance.nonBuiltInClass('Date'), false);
+ assert.equal(instance.nonBuiltInClass('java.sql.Date'), false);
- assert.equal(INSTANCE.nonBuiltInClass('Date'), false);
- assert.equal(INSTANCE.nonBuiltInClass('java.util.Date'), false);
+ assert.equal(instance.nonBuiltInClass('Date'), false);
+ assert.equal(instance.nonBuiltInClass('java.util.Date'), false);
- assert.equal(INSTANCE.nonBuiltInClass('CustomClass'), true);
- assert.equal(INSTANCE.nonBuiltInClass('java.util.CustomClass'), true);
- assert.equal(INSTANCE.nonBuiltInClass('my.package.CustomClass'), true);
+ assert.equal(instance.nonBuiltInClass('CustomClass'), true);
+ assert.equal(instance.nonBuiltInClass('java.util.CustomClass'), true);
+ assert.equal(instance.nonBuiltInClass('my.package.CustomClass'), true);
});
test('nonEnum', () => {
- assert.equal(INSTANCE.nonEnum('org.apache.ignite.cache.CacheMode'), false);
- assert.equal(INSTANCE.nonEnum('org.apache.ignite.transactions.TransactionConcurrency'), false);
- assert.equal(INSTANCE.nonEnum('org.apache.ignite.cache.CacheWriteSynchronizationMode'), false);
- assert.equal(INSTANCE.nonEnum('org.apache.ignite.igfs.IgfsIpcEndpointType'), false);
- assert.equal(INSTANCE.nonEnum('java.io.Serializable'), true);
- assert.equal(INSTANCE.nonEnum('BigDecimal'), true);
+ assert.equal(instance.nonEnum('org.apache.ignite.cache.CacheMode'), false);
+ assert.equal(instance.nonEnum('org.apache.ignite.transactions.TransactionConcurrency'), false);
+ assert.equal(instance.nonEnum('org.apache.ignite.cache.CacheWriteSynchronizationMode'), false);
+ assert.equal(instance.nonEnum('org.apache.ignite.igfs.IgfsIpcEndpointType'), false);
+ assert.equal(instance.nonEnum('java.io.Serializable'), true);
+ assert.equal(instance.nonEnum('BigDecimal'), true);
});
test('shortClassName', () => {
- assert.equal(INSTANCE.shortClassName('java.math.BigDecimal'), 'BigDecimal');
- assert.equal(INSTANCE.shortClassName('BigDecimal'), 'BigDecimal');
- assert.equal(INSTANCE.shortClassName('int'), 'int');
- assert.equal(INSTANCE.shortClassName('java.lang.Integer'), 'Integer');
- assert.equal(INSTANCE.shortClassName('Integer'), 'Integer');
- assert.equal(INSTANCE.shortClassName('java.util.UUID'), 'UUID');
- assert.equal(INSTANCE.shortClassName('java.sql.Date'), 'Date');
- assert.equal(INSTANCE.shortClassName('Date'), 'Date');
- assert.equal(INSTANCE.shortClassName('com.my.Abstract'), 'Abstract');
- assert.equal(INSTANCE.shortClassName('Abstract'), 'Abstract');
+ assert.equal(instance.shortClassName('java.math.BigDecimal'), 'BigDecimal');
+ assert.equal(instance.shortClassName('BigDecimal'), 'BigDecimal');
+ assert.equal(instance.shortClassName('int'), 'int');
+ assert.equal(instance.shortClassName('java.lang.Integer'), 'Integer');
+ assert.equal(instance.shortClassName('Integer'), 'Integer');
+ assert.equal(instance.shortClassName('java.util.UUID'), 'UUID');
+ assert.equal(instance.shortClassName('java.sql.Date'), 'Date');
+ assert.equal(instance.shortClassName('Date'), 'Date');
+ assert.equal(instance.shortClassName('com.my.Abstract'), 'Abstract');
+ assert.equal(instance.shortClassName('Abstract'), 'Abstract');
});
test('fullClassName', () => {
- assert.equal(INSTANCE.fullClassName('BigDecimal'), 'java.math.BigDecimal');
+ assert.equal(instance.fullClassName('BigDecimal'), 'java.math.BigDecimal');
});
test('validIdentifier', () => {
- assert.equal(INSTANCE.validIdentifier('myIdent'), true);
- assert.equal(INSTANCE.validIdentifier('java.math.BigDecimal'), false);
- assert.equal(INSTANCE.validIdentifier('2Demo'), false);
- assert.equal(INSTANCE.validIdentifier('abra kadabra'), false);
- assert.equal(INSTANCE.validIdentifier(undefined), false);
- assert.equal(INSTANCE.validIdentifier(null), false);
- assert.equal(INSTANCE.validIdentifier(''), false);
- assert.equal(INSTANCE.validIdentifier(' '), false);
+ assert.equal(instance.validIdentifier('myIdent'), true);
+ assert.equal(instance.validIdentifier('java.math.BigDecimal'), false);
+ assert.equal(instance.validIdentifier('2Demo'), false);
+ assert.equal(instance.validIdentifier('abra kadabra'), false);
+ assert.equal(instance.validIdentifier(), false);
+ assert.equal(instance.validIdentifier(null), false);
+ assert.equal(instance.validIdentifier(''), false);
+ assert.equal(instance.validIdentifier(' '), false);
});
test('validClassName', () => {
- assert.equal(INSTANCE.validClassName('java.math.BigDecimal'), true);
- assert.equal(INSTANCE.validClassName('2Demo'), false);
- assert.equal(INSTANCE.validClassName('abra kadabra'), false);
- assert.equal(INSTANCE.validClassName(undefined), false);
- assert.equal(INSTANCE.validClassName(null), false);
- assert.equal(INSTANCE.validClassName(''), false);
- assert.equal(INSTANCE.validClassName(' '), false);
+ assert.equal(instance.validClassName('java.math.BigDecimal'), true);
+ assert.equal(instance.validClassName('2Demo'), false);
+ assert.equal(instance.validClassName('abra kadabra'), false);
+ assert.equal(instance.validClassName(), false);
+ assert.equal(instance.validClassName(null), false);
+ assert.equal(instance.validClassName(''), false);
+ assert.equal(instance.validClassName(' '), false);
});
test('validPackage', () => {
- assert.equal(INSTANCE.validPackage('java.math.BigDecimal'), true);
- assert.equal(INSTANCE.validPackage('my.org.SomeClass'), true);
- assert.equal(INSTANCE.validPackage('25'), false);
- assert.equal(INSTANCE.validPackage('abra kadabra'), false);
- assert.equal(INSTANCE.validPackage(''), false);
- assert.equal(INSTANCE.validPackage(' '), false);
+ assert.equal(instance.validPackage('java.math.BigDecimal'), true);
+ assert.equal(instance.validPackage('my.org.SomeClass'), true);
+ assert.equal(instance.validPackage('25'), false);
+ assert.equal(instance.validPackage('abra kadabra'), false);
+ assert.equal(instance.validPackage(''), false);
+ assert.equal(instance.validPackage(' '), false);
});
test('packageSpecified', () => {
- assert.equal(INSTANCE.packageSpecified('java.math.BigDecimal'), true);
- assert.equal(INSTANCE.packageSpecified('BigDecimal'), false);
+ assert.equal(instance.packageSpecified('java.math.BigDecimal'), true);
+ assert.equal(instance.packageSpecified('BigDecimal'), false);
});
test('isKeyword', () => {
- assert.equal(INSTANCE.isKeyword('abstract'), true);
- assert.equal(INSTANCE.isKeyword('Abstract'), true);
- assert.equal(INSTANCE.isKeyword('abra kadabra'), false);
- assert.equal(INSTANCE.isKeyword(undefined), false);
- assert.equal(INSTANCE.isKeyword(null), false);
- assert.equal(INSTANCE.isKeyword(''), false);
- assert.equal(INSTANCE.isKeyword(' '), false);
+ assert.equal(instance.isKeyword('abstract'), true);
+ assert.equal(instance.isKeyword('Abstract'), true);
+ assert.equal(instance.isKeyword('abra kadabra'), false);
+ assert.equal(instance.isKeyword(), false);
+ assert.equal(instance.isKeyword(null), false);
+ assert.equal(instance.isKeyword(''), false);
+ assert.equal(instance.isKeyword(' '), false);
});
test('isPrimitive', () => {
- assert.equal(INSTANCE.isPrimitive('boolean'), true);
+ assert.equal(instance.isPrimitive('boolean'), true);
});
test('validUUID', () => {
- assert.equal(INSTANCE.validUUID('123e4567-e89b-12d3-a456-426655440000'), true);
- assert.equal(INSTANCE.validUUID('12345'), false);
- assert.equal(INSTANCE.validUUID(undefined), false);
- assert.equal(INSTANCE.validUUID(null), false);
- assert.equal(INSTANCE.validUUID(''), false);
- assert.equal(INSTANCE.validUUID(' '), false);
+ assert.equal(instance.validUUID('123e4567-e89b-12d3-a456-426655440000'), true);
+ assert.equal(instance.validUUID('12345'), false);
+ assert.equal(instance.validUUID(), false);
+ assert.equal(instance.validUUID(null), false);
+ assert.equal(instance.validUUID(''), false);
+ assert.equal(instance.validUUID(' '), false);
});
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/SharpTransformer.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/SharpTransformer.test.js b/modules/web-console/frontend/test/unit/SharpTransformer.test.js
index 20de266..3fb9265 100644
--- a/modules/web-console/frontend/test/unit/SharpTransformer.test.js
+++ b/modules/web-console/frontend/test/unit/SharpTransformer.test.js
@@ -18,7 +18,7 @@
import generator from '../../app/modules/configuration/generator/PlatformGenerator';
import transformer from '../../app/modules/configuration/generator/SharpTransformer.service';
-import { assert } from 'chai';
+import { suite, test } from 'mocha';
suite.skip('SharpTransformerTestsSuite', () => {
test('AtomicConfiguration', () => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/SpringTransformer.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/SpringTransformer.test.js b/modules/web-console/frontend/test/unit/SpringTransformer.test.js
index 7998f66..e96cab3 100644
--- a/modules/web-console/frontend/test/unit/SpringTransformer.test.js
+++ b/modules/web-console/frontend/test/unit/SpringTransformer.test.js
@@ -20,7 +20,7 @@ import JavaTypes from '../../app/services/JavaTypes.service.js';
import generator from '../../app/modules/configuration/generator/ConfigurationGenerator';
import transformer from '../../app/modules/configuration/generator/SpringTransformer.service';
-import { assert } from 'chai';
+import { suite, test } from 'mocha';
suite.skip('SpringTransformerTestsSuite', () => {
test('AtomicConfiguration', () => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/SqlTypes.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/SqlTypes.test.js b/modules/web-console/frontend/test/unit/SqlTypes.test.js
index 2d54bdf..17f899c 100644
--- a/modules/web-console/frontend/test/unit/SqlTypes.test.js
+++ b/modules/web-console/frontend/test/unit/SqlTypes.test.js
@@ -19,6 +19,7 @@ import SqlTypes from '../../app/services/SqlTypes.service.js';
const INSTANCE = new SqlTypes();
+import { suite, test } from 'mocha';
import { assert } from 'chai';
suite('SqlTypesTestsSuite', () => {
@@ -27,7 +28,7 @@ suite('SqlTypesTestsSuite', () => {
assert.equal(INSTANCE.validIdentifier('java.math.BigDecimal'), false);
assert.equal(INSTANCE.validIdentifier('2Demo'), false);
assert.equal(INSTANCE.validIdentifier('abra kadabra'), false);
- assert.equal(INSTANCE.validIdentifier(undefined), false);
+ assert.equal(INSTANCE.validIdentifier(), false);
assert.equal(INSTANCE.validIdentifier(null), false);
assert.equal(INSTANCE.validIdentifier(''), false);
assert.equal(INSTANCE.validIdentifier(' '), false);
@@ -38,7 +39,7 @@ suite('SqlTypesTestsSuite', () => {
assert.equal(INSTANCE.isKeyword('Group'), true);
assert.equal(INSTANCE.isKeyword('select'), true);
assert.equal(INSTANCE.isKeyword('abra kadabra'), false);
- assert.equal(INSTANCE.isKeyword(undefined), false);
+ assert.equal(INSTANCE.isKeyword(), false);
assert.equal(INSTANCE.isKeyword(null), false);
assert.equal(INSTANCE.isKeyword(''), false);
assert.equal(INSTANCE.isKeyword(' '), false);
@@ -47,5 +48,5 @@ suite('SqlTypesTestsSuite', () => {
test('findJdbcType', () => {
assert.equal(INSTANCE.findJdbcType(0).dbName, 'NULL');
assert.equal(INSTANCE.findJdbcType(5555).dbName, 'Unknown');
- })
+ });
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/UserAuth.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/UserAuth.test.js b/modules/web-console/frontend/test/unit/UserAuth.test.js
index dbba1f6..7b6b24c 100644
--- a/modules/web-console/frontend/test/unit/UserAuth.test.js
+++ b/modules/web-console/frontend/test/unit/UserAuth.test.js
@@ -15,7 +15,9 @@
* limitations under the License.
*/
-import AuthService from '../../app/modules/user/Auth.service';
+// import AuthService from '../../app/modules/user/Auth.service';
+
+import { suite, test } from 'mocha';
suite('AuthServiceTestsSuite', () => {
test('SignIn', (done) => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/Version.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/Version.test.js b/modules/web-console/frontend/test/unit/Version.test.js
index 72685ea..d8c8f65 100644
--- a/modules/web-console/frontend/test/unit/Version.test.js
+++ b/modules/web-console/frontend/test/unit/Version.test.js
@@ -19,6 +19,7 @@ import VersionService from '../../app/modules/configuration/Version.service';
const INSTANCE = new VersionService();
+import { suite, test } from 'mocha';
import { assert } from 'chai';
suite('VersionServiceTestsSuite', () => {
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/test/unit/defaultName.filter.test.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/test/unit/defaultName.filter.test.js b/modules/web-console/frontend/test/unit/defaultName.filter.test.js
index 5f28290..2eaf223 100644
--- a/modules/web-console/frontend/test/unit/defaultName.filter.test.js
+++ b/modules/web-console/frontend/test/unit/defaultName.filter.test.js
@@ -17,22 +17,25 @@
import defaultName from '../../app/filters/default-name.filter';
+import { suite, test } from 'mocha';
import { assert } from 'chai';
-const INSTANCE = defaultName[0]();
+const instance = defaultName[0]();
suite('defaultName', () => {
test('defaultName filter', () => {
- assert.equal(INSTANCE(''), '<default>');
- assert.equal(INSTANCE(null), '<default>');
- assert.equal(INSTANCE(undefined), '<default>');
- assert.equal(INSTANCE('', false), '<default>');
- assert.equal(INSTANCE(null, false), '<default>');
- assert.equal(INSTANCE(undefined, false), '<default>');
- assert.equal(INSTANCE('', true), '<default>');
- assert.equal(INSTANCE(null, true), '<default>');
- assert.equal(INSTANCE(undefined, true), '<default>');
- assert.equal(INSTANCE("name", false), 'name');
- assert.equal(INSTANCE("name", true), 'name');
+ let undef;
+
+ assert.equal(instance(''), '<default>');
+ assert.equal(instance(null), '<default>');
+ assert.equal(instance(), '<default>');
+ assert.equal(instance('', false), '<default>');
+ assert.equal(instance(null, false), '<default>');
+ assert.equal(instance(undef, false), '<default>');
+ assert.equal(instance('', true), '<default>');
+ assert.equal(instance(null, true), '<default>');
+ assert.equal(instance(undef, true), '<default>');
+ assert.equal(instance('name', false), 'name');
+ assert.equal(instance('name', true), 'name');
});
});
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/403.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/403.jade b/modules/web-console/frontend/views/403.jade
deleted file mode 100644
index 38d8bb5..0000000
--- a/modules/web-console/frontend/views/403.jade
+++ /dev/null
@@ -1,22 +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.
-
-include includes/header
-
-.error-page
- .container
- h1.error-page__title 403
- h2.error-page__description You are not authorized
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/403.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/403.pug b/modules/web-console/frontend/views/403.pug
new file mode 100644
index 0000000..38d8bb5
--- /dev/null
+++ b/modules/web-console/frontend/views/403.pug
@@ -0,0 +1,22 @@
+//-
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+include includes/header
+
+.error-page
+ .container
+ h1.error-page__title 403
+ h2.error-page__description You are not authorized
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/404.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/404.jade b/modules/web-console/frontend/views/404.jade
deleted file mode 100644
index 7d2fc55..0000000
--- a/modules/web-console/frontend/views/404.jade
+++ /dev/null
@@ -1,22 +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.
-
-include includes/header
-
-.error-page
- .container
- h1.error-page__title 404
- h2.error-page__description Page not found
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/404.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/404.pug b/modules/web-console/frontend/views/404.pug
new file mode 100644
index 0000000..7d2fc55
--- /dev/null
+++ b/modules/web-console/frontend/views/404.pug
@@ -0,0 +1,22 @@
+//-
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+include includes/header
+
+.error-page
+ .container
+ h1.error-page__title 404
+ h2.error-page__description Page not found
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/base.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/base.jade b/modules/web-console/frontend/views/base.jade
deleted file mode 100644
index a910d1b..0000000
--- a/modules/web-console/frontend/views/base.jade
+++ /dev/null
@@ -1,22 +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.
-
-include includes/header
-
-.container.body-container
- .main-content(ui-view='')
-
-include includes/footer
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/base.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/base.pug b/modules/web-console/frontend/views/base.pug
new file mode 100644
index 0000000..b05cdba
--- /dev/null
+++ b/modules/web-console/frontend/views/base.pug
@@ -0,0 +1,22 @@
+//-
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+include ./includes/header
+
+.container.body-container
+ .main-content(ui-view='')
+
+include ./includes/footer
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/configuration/caches.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/configuration/caches.jade b/modules/web-console/frontend/views/configuration/caches.jade
deleted file mode 100644
index 73a6309..0000000
--- a/modules/web-console/frontend/views/configuration/caches.jade
+++ /dev/null
@@ -1,55 +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.
-
-include /app/helpers/jade/mixins.jade
-
-.docs-header
- h1 Configure Ignite Caches
-.docs-body(ng-controller='cachesController')
- ignite-information
- ul
- li Configure #[a(href='https://apacheignite.readme.io/docs/data-grid' target='_blank') memory] settings
- li Configure persistence
- div(ignite-loading='loadingCachesScreen' ignite-loading-text='Loading caches...' ignite-loading-position='top')
- div(ng-show='ui.ready')
- hr
- +main-table('caches', 'caches', 'cacheName', 'selectItem(row)', '{{$index + 1}}) {{row.label}}', 'label')
- .padding-top-dflt(bs-affix)
- .panel-tip-container(data-placement='bottom' bs-tooltip='' data-title='Create new cache')
- button.btn.btn-primary(id='new-item' ng-click='createItem()') Add cache
- +save-remove-clone-undo-buttons('cache')
- hr
- .bs-affix-fix
- div(bs-collapse='' data-allow-multiple='true' ng-model='ui.activePanels')
- form.form-horizontal(name='ui.inputForm' novalidate ng-if='contentVisible()')
- .panel-group
- include /app/modules/states/configuration/caches/general.jade
- include /app/modules/states/configuration/caches/memory.jade
- include /app/modules/states/configuration/caches/query.jade
- include /app/modules/states/configuration/caches/store.jade
-
- +advanced-options-toggle-default
-
- div(ng-show='ui.expanded')
- include /app/modules/states/configuration/caches/affinity.jade
- include /app/modules/states/configuration/caches/concurrency.jade
- include /app/modules/states/configuration/caches/near-cache-client.jade
- include /app/modules/states/configuration/caches/near-cache-server.jade
- include /app/modules/states/configuration/caches/node-filter.jade
- include /app/modules/states/configuration/caches/rebalance.jade
- include /app/modules/states/configuration/caches/statistics.jade
-
- +advanced-options-toggle-default
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/configuration/caches.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/configuration/caches.tpl.pug b/modules/web-console/frontend/views/configuration/caches.tpl.pug
new file mode 100644
index 0000000..fca41a8
--- /dev/null
+++ b/modules/web-console/frontend/views/configuration/caches.tpl.pug
@@ -0,0 +1,55 @@
+//-
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+include /app/helpers/jade/mixins
+
+.docs-header
+ h1 Configure Ignite Caches
+.docs-body(ng-controller='cachesController')
+ ignite-information
+ ul
+ li Configure #[a(href='https://apacheignite.readme.io/docs/data-grid' target='_blank') memory] settings
+ li Configure persistence
+ div(ignite-loading='loadingCachesScreen' ignite-loading-text='Loading caches...' ignite-loading-position='top')
+ div(ng-show='ui.ready')
+ hr
+ +main-table('caches', 'caches', 'cacheName', 'selectItem(row)', '{{$index + 1}}) {{row.label}}', 'label')
+ .padding-top-dflt(bs-affix)
+ .panel-tip-container(data-placement='bottom' bs-tooltip='' data-title='Create new cache')
+ button.btn.btn-primary(id='new-item' ng-click='createItem()') Add cache
+ +save-remove-clone-undo-buttons('cache')
+ hr
+ .bs-affix-fix
+ div(bs-collapse='' data-allow-multiple='true' ng-model='ui.activePanels')
+ form.form-horizontal(name='ui.inputForm' novalidate ng-if='contentVisible()')
+ .panel-group
+ include /app/modules/states/configuration/caches/general
+ include /app/modules/states/configuration/caches/memory
+ include /app/modules/states/configuration/caches/query
+ include /app/modules/states/configuration/caches/store
+
+ +advanced-options-toggle-default
+
+ div(ng-show='ui.expanded')
+ include /app/modules/states/configuration/caches/affinity
+ include /app/modules/states/configuration/caches/concurrency
+ include /app/modules/states/configuration/caches/near-cache-client
+ include /app/modules/states/configuration/caches/near-cache-server
+ include /app/modules/states/configuration/caches/node-filter
+ include /app/modules/states/configuration/caches/rebalance
+ include /app/modules/states/configuration/caches/statistics
+
+ +advanced-options-toggle-default
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/configuration/clusters.jade
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/configuration/clusters.jade b/modules/web-console/frontend/views/configuration/clusters.jade
deleted file mode 100644
index 7826464..0000000
--- a/modules/web-console/frontend/views/configuration/clusters.jade
+++ /dev/null
@@ -1,68 +0,0 @@
-//-
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-include /app/helpers/jade/mixins.jade
-
-.docs-header
- h1 Configure Ignite Clusters
-.docs-body(ng-controller='clustersController')
- ignite-information
- ul
- li Configure #[a(href='https://apacheignite.readme.io/docs/clustering' target='_blank') clusters] properties
- li Associate clusters with caches and in-memory file systems
- div(ignite-loading='loadingClustersScreen' ignite-loading-text='Loading clusters...' ignite-loading-position='top')
- div(ng-show='ui.ready')
- hr
- +main-table('clusters', 'clusters', 'clusterName', 'selectItem(row)', '{{$index + 1}}) {{row.label}}', 'label')
- .padding-top-dflt(bs-affix)
- .panel-tip-container(data-placement='bottom' bs-tooltip='' data-title='Create new cluster')
- button.btn.btn-primary(id='new-item' ng-click='createItem()') Add cluster
- +save-remove-clone-undo-buttons('cluster')
- hr
- .bs-affix-fix
- div(bs-collapse='' data-allow-multiple='true' ng-model='ui.activePanels')
- form.form-horizontal(name='ui.inputForm' novalidate ng-if='contentVisible()')
- .panel-group
- include /app/modules/states/configuration/clusters/general.jade
-
- +advanced-options-toggle-default
-
- div(ng-show='ui.expanded')
- include /app/modules/states/configuration/clusters/atomic.jade
- include /app/modules/states/configuration/clusters/binary.jade
- include /app/modules/states/configuration/clusters/cache-key-cfg.jade
- include /app/modules/states/configuration/clusters/checkpoint.jade
- include /app/modules/states/configuration/clusters/collision.jade
- include /app/modules/states/configuration/clusters/communication.jade
- include /app/modules/states/configuration/clusters/connector.jade
- include /app/modules/states/configuration/clusters/deployment.jade
- include /app/modules/states/configuration/clusters/discovery.jade
- include /app/modules/states/configuration/clusters/events.jade
- include /app/modules/states/configuration/clusters/failover.jade
- include /app/modules/states/configuration/clusters/igfs.jade
- include /app/modules/states/configuration/clusters/load-balancing.jade
- include /app/modules/states/configuration/clusters/logger.jade
- include /app/modules/states/configuration/clusters/marshaller.jade
- include /app/modules/states/configuration/clusters/metrics.jade
- include /app/modules/states/configuration/clusters/odbc.jade
- include /app/modules/states/configuration/clusters/ssl.jade
- include /app/modules/states/configuration/clusters/swap.jade
- include /app/modules/states/configuration/clusters/thread.jade
- include /app/modules/states/configuration/clusters/time.jade
- include /app/modules/states/configuration/clusters/transactions.jade
- include /app/modules/states/configuration/clusters/attributes.jade
-
- +advanced-options-toggle-default
http://git-wip-us.apache.org/repos/asf/ignite/blob/cad46799/modules/web-console/frontend/views/configuration/clusters.tpl.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/views/configuration/clusters.tpl.pug b/modules/web-console/frontend/views/configuration/clusters.tpl.pug
new file mode 100644
index 0000000..c979012
--- /dev/null
+++ b/modules/web-console/frontend/views/configuration/clusters.tpl.pug
@@ -0,0 +1,68 @@
+//-
+ 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.
+
+include /app/helpers/jade/mixins
+
+.docs-header
+ h1 Configure Ignite Clusters
+.docs-body(ng-controller='clustersController')
+ ignite-information
+ ul
+ li Configure #[a(href='https://apacheignite.readme.io/docs/clustering' target='_blank') clusters] properties
+ li Associate clusters with caches and in-memory file systems
+ div(ignite-loading='loadingClustersScreen' ignite-loading-text='Loading clusters...' ignite-loading-position='top')
+ div(ng-show='ui.ready')
+ hr
+ +main-table('clusters', 'clusters', 'clusterName', 'selectItem(row)', '{{$index + 1}}) {{row.label}}', 'label')
+ .padding-top-dflt(bs-affix)
+ .panel-tip-container(data-placement='bottom' bs-tooltip='' data-title='Create new cluster')
+ button.btn.btn-primary(id='new-item' ng-click='createItem()') Add cluster
+ +save-remove-clone-undo-buttons('cluster')
+ hr
+ .bs-affix-fix
+ div(bs-collapse='' data-allow-multiple='true' ng-model='ui.activePanels')
+ form.form-horizontal(name='ui.inputForm' novalidate ng-if='contentVisible()')
+ .panel-group
+ include /app/modules/states/configuration/clusters/general
+
+ +advanced-options-toggle-default
+
+ div(ng-show='ui.expanded')
+ include /app/modules/states/configuration/clusters/atomic
+ include /app/modules/states/configuration/clusters/binary
+ include /app/modules/states/configuration/clusters/cache-key-cfg
+ include /app/modules/states/configuration/clusters/checkpoint
+ include /app/modules/states/configuration/clusters/collision
+ include /app/modules/states/configuration/clusters/communication
+ include /app/modules/states/configuration/clusters/connector
+ include /app/modules/states/configuration/clusters/deployment
+ include /app/modules/states/configuration/clusters/discovery
+ include /app/modules/states/configuration/clusters/events
+ include /app/modules/states/configuration/clusters/failover
+ include /app/modules/states/configuration/clusters/igfs
+ include /app/modules/states/configuration/clusters/load-balancing
+ include /app/modules/states/configuration/clusters/logger
+ include /app/modules/states/configuration/clusters/marshaller
+ include /app/modules/states/configuration/clusters/metrics
+ include /app/modules/states/configuration/clusters/odbc
+ include /app/modules/states/configuration/clusters/ssl
+ include /app/modules/states/configuration/clusters/swap
+ include /app/modules/states/configuration/clusters/thread
+ include /app/modules/states/configuration/clusters/time
+ include /app/modules/states/configuration/clusters/transactions
+ include /app/modules/states/configuration/clusters/attributes
+
+ +advanced-options-toggle-default