http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/modules/web-console/frontend/gulpfile.babel.js/tasks/jade.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/gulpfile.babel.js/tasks/jade.js b/modules/web-console/frontend/gulpfile.babel.js/tasks/jade.js deleted file mode 100644 index 4935976..0000000 --- a/modules/web-console/frontend/gulpfile.babel.js/tasks/jade.js +++ /dev/null @@ -1,49 +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 ll from 'gulp-ll'; -import jade from 'gulp-jade'; - -import { jadeViewsPaths, jadeAppModulePaths, jadeModulePaths, destDir, rootDir } from '../paths'; - -const jadeOptions = { - basedir: rootDir, - cache: true -}; - -ll.tasks(['jade:views', 'jade:app', 'jade:ignite_modules']); - -gulp.task('jade', ['jade:views', 'jade:app', 'jade:ignite_modules']); - -gulp.task('jade:views', () => - gulp.src(jadeViewsPaths) - .pipe(jade(jadeOptions)) - .pipe(gulp.dest(destDir)) -); - -gulp.task('jade:app', () => - gulp.src(jadeAppModulePaths) - .pipe(jade(jadeOptions)) - .pipe(gulp.dest(destDir)) -); - -gulp.task('jade:ignite_modules', () => - gulp.src(jadeModulePaths) - .pipe(jade(jadeOptions)) - .pipe(gulp.dest(`${destDir}/ignite_modules`)) -); http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/test.js ---------------------------------------------------------------------- diff --git a/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/test.js b/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/test.js index 1c37196..0cb9b77 100644 --- a/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/test.js +++ b/modules/web-console/frontend/gulpfile.babel.js/webpack/environments/test.js @@ -19,34 +19,26 @@ import webpack from 'webpack'; const NODE_ENV = process.env.NODE_ENV || 'production'; -export default () => { - - return { - cache: true, - node: { - fs: 'empty' - }, - - module: { - preLoaders: null - }, - - // Entry points. - entry: null, - - // Output system. - output: null, - eslint: null, - - // Load plugins. - plugins: [ - new webpack.ProvidePlugin({ - $: 'jquery', - jQuery: 'jquery', - _: 'lodash', - nv: 'nvd3' - }), - new webpack.DefinePlugin({NODE_ENV: JSON.stringify(NODE_ENV)}) - ] - }; +export default { + cache: true, + node: { + fs: 'empty' + }, + + // Entry points. + entry: null, + + // Output system. + output: null, + + // Load plugins. + plugins: [ + new webpack.ProvidePlugin({ + $: 'jquery', + jQuery: 'jquery', + _: 'lodash', + nv: 'nvd3' + }), + new webpack.DefinePlugin({NODE_ENV: JSON.stringify(NODE_ENV)}) + ] }; http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/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/1080e686/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/1080e686/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('j...@doe.com'); }); -}); \ No newline at end of file +}); http://git-wip-us.apache.org/repos/asf/ignite/blob/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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/1080e686/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