Fixed UI tests
diff --git a/views/ngXosLib/xosHelpers/spec/ui/smart-table.test.js b/views/ngXosLib/xosHelpers/spec/ui/smart-table.test.js
index 5cacaf8..09445ca 100644
--- a/views/ngXosLib/xosHelpers/spec/ui/smart-table.test.js
+++ b/views/ngXosLib/xosHelpers/spec/ui/smart-table.test.js
@@ -145,7 +145,8 @@
first_name: 'Jon',
last_name: 'Snow',
hidden_field: 'hidden',
- $save: ''
+ $save: '',
+ $update: ''
};
spyOn(model, '$save').and.callFake(function() {
@@ -154,10 +155,16 @@
return deferred.promise;
});
+ spyOn(model, '$update').and.callFake(function() {
+ var deferred = $q.defer();
+ deferred.resolve();
+ return deferred.promise;
+ });
+
isolatedScope.detailedItem = model;
scope.$apply();
$(element).find('xos-form .btn.btn-success').click();
- expect(model.$save).toHaveBeenCalled();
+ expect(model.$update).toHaveBeenCalled();
}));
it('should have an add button', () => {
diff --git a/views/ngXosViews/helperView/.bowerrc b/views/ngXosViews/helperView/.bowerrc
deleted file mode 100644
index e491038..0000000
--- a/views/ngXosViews/helperView/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "directory": "src/vendor/"
-}
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/.eslintrc b/views/ngXosViews/helperView/.eslintrc
deleted file mode 100644
index c852748..0000000
--- a/views/ngXosViews/helperView/.eslintrc
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "ecmaFeatures": {
- "blockBindings": true,
- "forOf": true,
- "destructuring": true,
- "arrowFunctions": true,
- "templateStrings": true
- },
- "env": {
- "browser": true,
- "node": true,
- "es6": true
- },
- "plugins": [
- //"angular"
- ],
- "rules": {
- "quotes": [2, "single"],
- "camelcase": [1, {"properties": "always"}],
- "no-underscore-dangle": 1,
- "eqeqeq": [2, "smart"],
- "no-alert": 1,
- "key-spacing": [1, { "beforeColon": false, "afterColon": true }],
- "indent": [2, 2],
- "no-irregular-whitespace": 1,
- "eol-last": 0,
- "max-nested-callbacks": [2, 4],
- "comma-spacing": [1, {"before": false, "after": true}],
- "no-trailing-spaces": [1, { skipBlankLines: true }],
- "no-unused-vars": [1, {"vars": "all", "args": "after-used"}],
- "new-cap": 0,
-
- //"angular/ng_module_name": [2, '/^xos\.*[a-z]*$/'],
- //"angular/ng_controller_name": [2, '/^[a-z].*Ctrl$/'],
- //"angular/ng_service_name": [2, '/^[A-Z].*Service$/'],
- //"angular/ng_directive_name": [2, '/^[a-z]+[[A-Z].*]*$/'],
- //"angular/ng_di": [0, "function or array"]
- },
- "globals" :{
- "angular": true
- }
-}
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/.gitignore b/views/ngXosViews/helperView/.gitignore
deleted file mode 100644
index 567aee4..0000000
--- a/views/ngXosViews/helperView/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-dist/
-src/vendor
-.tmp
-node_modules
-npm-debug.log
-dist/
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/bower.json b/views/ngXosViews/helperView/bower.json
deleted file mode 100644
index d369cab..0000000
--- a/views/ngXosViews/helperView/bower.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "xos-helperView",
- "version": "0.0.0",
- "authors": [
- "Matteo Scandolo <teo@onlab.us>"
- ],
- "description": "The helperView view",
- "license": "MIT",
- "ignore": [
- "**/.*",
- "node_modules",
- "bower_components",
- "static/js/vendor/",
- "test",
- "tests"
- ],
- "dependencies": {
- },
- "devDependencies": {
- "jquery": "2.1.4",
- "angular-mocks": "1.4.7",
- "angular": "1.4.7",
- "angular-ui-router": "0.2.15",
- "angular-cookies": "1.4.7",
- "angular-animate": "1.4.7",
- "angular-resource": "1.4.7",
- "lodash": "~4.11.1",
- "bootstrap-css": "3.3.6"
- }
-}
diff --git a/views/ngXosViews/helperView/env/default.js b/views/ngXosViews/helperView/env/default.js
deleted file mode 100644
index 8df1415..0000000
--- a/views/ngXosViews/helperView/env/default.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This is a default configuration for your development environment.
-// You can duplicate this configuration for any of your Backend Environments.
-// Different configurations are loaded setting a NODE_ENV variable that contain the config file name.
-// `NODE_ENV=local npm start`
-//
-// If xoscsrftoken or xossessionid are not specified the browser value are used
-// (works only for local environment as both application are served on the same domain)
-
-module.exports = {
- host: 'http://xos.dev:9999/',
- xoscsrftoken: 'Y5oPUJm4WNZJ1FXhdHoHA2Q6nDGZICtm',
- xossessionid: '0fogbjmioma94ukjeoe0xrktfdk3yd7l'
-};
diff --git a/views/ngXosViews/helperView/gulp/build.js b/views/ngXosViews/helperView/gulp/build.js
deleted file mode 100644
index 2ca4b74..0000000
--- a/views/ngXosViews/helperView/gulp/build.js
+++ /dev/null
@@ -1,163 +0,0 @@
-'use strict';
-
-// BUILD
-//
-// The only purpose of this gulpfile is to build a XOS view and copy the correct files into
-// .html => dashboards
-// .js (minified and concat) => static/js
-//
-// The template are parsed and added to js with angular $templateCache
-
-var gulp = require('gulp');
-var ngAnnotate = require('gulp-ng-annotate');
-var uglify = require('gulp-uglify');
-var templateCache = require('gulp-angular-templatecache');
-var runSequence = require('run-sequence');
-var concat = require('gulp-concat-util');
-var del = require('del');
-var wiredep = require('wiredep');
-var angularFilesort = require('gulp-angular-filesort');
-var _ = require('lodash');
-var eslint = require('gulp-eslint');
-var inject = require('gulp-inject');
-var rename = require('gulp-rename');
-var replace = require('gulp-replace');
-var postcss = require('gulp-postcss');
-var autoprefixer = require('autoprefixer');
-var mqpacker = require('css-mqpacker');
-var csswring = require('csswring');
-
-const TEMPLATE_FOOTER = `
-angular.module('xos.helperView')
-.run(['$location', function(a){
- a.path('/');
-}])
-`
-
-module.exports = function(options){
-
- // delete previous builded file
- gulp.task('clean', function(){
- return del(
- [
- options.dashboards + 'xosHelperView.html',
- options.static + 'css/xosHelperView.css'
- ],
- {force: true}
- );
- });
-
- // minify css
- gulp.task('css', function () {
- var processors = [
- autoprefixer({browsers: ['last 1 version']}),
- mqpacker,
- csswring
- ];
-
- gulp.src([
- `${options.css}**/*.css`,
- `!${options.css}dev.css`
- ])
- .pipe(postcss(processors))
- .pipe(gulp.dest(options.tmp + '/css/'));
- });
-
- // copy css in correct folder
- gulp.task('copyCss', ['wait'], function(){
- return gulp.src([`${options.tmp}/css/*.css`])
- .pipe(concat('xosHelperView.css'))
- .pipe(gulp.dest(options.static + 'css/'))
- });
-
- // compile and minify scripts
- gulp.task('scripts', function() {
- return gulp.src([
- options.tmp + '**/*.js'
- ])
- .pipe(ngAnnotate())
- .pipe(angularFilesort())
- .pipe(concat('xosHelperView.js'))
- .pipe(concat.header('//Autogenerated, do not edit!!!\n'))
- .pipe(concat.footer(TEMPLATE_FOOTER))
- .pipe(uglify())
- .pipe(gulp.dest(options.static + 'js/'));
- });
-
- // set templates in cache
- gulp.task('templates', function(){
- return gulp.src('./src/templates/*.html')
- .pipe(templateCache({
- module: 'xos.helperView',
- root: 'templates/'
- }))
- .pipe(gulp.dest(options.tmp));
- });
-
- // copy html index to Django Folder
- gulp.task('copyHtml', function(){
- return gulp.src(options.src + 'index.html')
- // remove dev dependencies from html
- .pipe(replace(/<!-- bower:css -->(\n.*)*\n<!-- endbower --><!-- endcss -->/, ''))
- .pipe(replace(/<!-- bower:js -->(\n.*)*\n<!-- endbower --><!-- endjs -->/, ''))
- // injecting minified files
- .pipe(
- inject(
- gulp.src([
- options.static + 'js/vendor/xosHelperViewVendor.js',
- options.static + 'js/xosHelperView.js',
- options.static + 'css/xosHelperView.css'
- ]),
- {ignorePath: '/../../../xos/core/xoslib'}
- )
- )
- .pipe(rename('xosHelperView.html'))
- .pipe(gulp.dest(options.dashboards));
- });
-
- // minify vendor js files
- gulp.task('wiredep', function(){
- var bowerDeps = wiredep().js;
- if(!bowerDeps){
- return;
- }
-
- // remove angular (it's already loaded)
- _.remove(bowerDeps, function(dep){
- return dep.indexOf('angular/angular.js') !== -1;
- });
-
- return gulp.src(bowerDeps)
- .pipe(concat('xosHelperViewVendor.js'))
- .pipe(uglify())
- .pipe(gulp.dest(options.static + 'js/vendor/'));
- });
-
- gulp.task('lint', function () {
- return gulp.src(['src/js/**/*.js'])
- .pipe(eslint())
- .pipe(eslint.format())
- .pipe(eslint.failAfterError());
- });
-
- gulp.task('wait', function (cb) {
- // setTimeout could be any async task
- setTimeout(function () {
- cb();
- }, 1000);
- });
-
- gulp.task('build', function() {
- runSequence(
- 'clean',
- 'templates',
- 'babel',
- 'scripts',
- 'wiredep',
- 'css',
- 'copyCss',
- 'copyHtml',
- 'cleanTmp'
- );
- });
-};
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/gulp/server.js b/views/ngXosViews/helperView/gulp/server.js
deleted file mode 100644
index c0678d9..0000000
--- a/views/ngXosViews/helperView/gulp/server.js
+++ /dev/null
@@ -1,168 +0,0 @@
-'use strict';
-
-var gulp = require('gulp');
-var browserSync = require('browser-sync').create();
-var inject = require('gulp-inject');
-var runSequence = require('run-sequence');
-var angularFilesort = require('gulp-angular-filesort');
-var babel = require('gulp-babel');
-var wiredep = require('wiredep').stream;
-var httpProxy = require('http-proxy');
-var del = require('del');
-var sass = require('gulp-sass');
-
-const environment = process.env.NODE_ENV;
-
-if (environment){
- var conf = require(`../env/${environment}.js`);
-}
-else{
- var conf = require('../env/default.js')
-}
-
-var proxy = httpProxy.createProxyServer({
- target: conf.host || 'http://0.0.0.0:9999'
-});
-
-
-proxy.on('error', function(error, req, res) {
- res.writeHead(500, {
- 'Content-Type': 'text/plain'
- });
-
- console.error('[Proxy]', error);
-});
-
-module.exports = function(options){
-
- gulp.task('browser', function() {
- browserSync.init({
- startPath: '#/',
- snippetOptions: {
- rule: {
- match: /<!-- browserSync -->/i
- }
- },
- server: {
- baseDir: options.src,
- routes: {
- '/xos/core/xoslib/static/js/vendor': options.helpers,
- '/xos/core/static': options.static + '../../static/'
- },
- middleware: function(req, res, next){
- if(
- // to be removed, deprecated API
- // req.url.indexOf('/xos/') !== -1 ||
- // req.url.indexOf('/xoslib/') !== -1 ||
- // req.url.indexOf('/hpcapi/') !== -1 ||
- req.url.indexOf('/api/') !== -1
- ){
- if(conf.xoscsrftoken && conf.xossessionid){
- req.headers.cookie = `xoscsrftoken=${conf.xoscsrftoken}; xossessionid=${conf.xossessionid}`;
- req.headers['x-csrftoken'] = conf.xoscsrftoken;
- }
- proxy.web(req, res);
- }
- else{
- next();
- }
- }
- }
- });
-
- gulp.watch(options.src + 'js/**/*.js', ['js-watch']);
- gulp.watch(options.src + 'vendor/**/*.js', ['bower'], function(){
- browserSync.reload();
- });
- gulp.watch(options.src + '**/*.html', function(){
- browserSync.reload();
- });
- gulp.watch(options.css + '**/*.css', function(){
- browserSync.reload();
- });
- gulp.watch(`${options.sass}/**/*.scss`, ['sass'], function(){
- browserSync.reload();
- });
-
- gulp.watch([
- options.helpers + 'ngXosHelpers.js',
- options.static + '../../static/xosNgLib.css'
- ], function(){
- browserSync.reload();
- });
- });
-
- // compile sass
- gulp.task('sass', function () {
- return gulp.src(`${options.sass}/**/*.scss`)
- .pipe(sass().on('error', sass.logError))
- .pipe(gulp.dest(options.css));
- });
-
- // transpile js with sourceMaps
- gulp.task('babel', function(){
- return gulp.src(options.scripts + '**/*.js')
- .pipe(babel({sourceMaps: true}))
- .pipe(gulp.dest(options.tmp));
- });
-
- // inject scripts
- gulp.task('injectScript', ['cleanTmp', 'babel'], function(){
- return gulp.src(options.src + 'index.html')
- .pipe(
- inject(
- gulp.src([
- options.tmp + '**/*.js',
- options.helpers + 'ngXosHelpers.js'
- ])
- .pipe(angularFilesort()),
- {
- ignorePath: [options.src, '/../../ngXosLib']
- }
- )
- )
- .pipe(gulp.dest(options.src));
- });
-
- // inject CSS
- gulp.task('injectCss', function(){
- return gulp.src(options.src + 'index.html')
- .pipe(
- inject(
- gulp.src([
- options.src + 'css/*.css',
- options.static + '../../static/xosNgLib.css'
- ]),
- {
- ignorePath: [options.src]
- }
- )
- )
- .pipe(gulp.dest(options.src));
- });
-
- // inject bower dependencies with wiredep
- gulp.task('bower', function () {
- return gulp.src(options.src + 'index.html')
- .pipe(wiredep({devDependencies: true}))
- .pipe(gulp.dest(options.src));
- });
-
- gulp.task('js-watch', ['injectScript'], function(){
- browserSync.reload();
- });
-
- gulp.task('cleanTmp', function(){
- return del([options.tmp + '**/*']);
- });
-
- gulp.task('serve', function() {
- runSequence(
- 'sass',
- 'bower',
- 'injectScript',
- 'injectCss',
- ['browser']
- );
- });
-};
diff --git a/views/ngXosViews/helperView/gulpfile.js b/views/ngXosViews/helperView/gulpfile.js
deleted file mode 100644
index 08df554..0000000
--- a/views/ngXosViews/helperView/gulpfile.js
+++ /dev/null
@@ -1,26 +0,0 @@
-'use strict';
-
-var gulp = require('gulp');
-var wrench = require('wrench');
-
-var options = {
- src: 'src/',
- css: 'src/css/',
- sass: 'src/sass/',
- scripts: 'src/js/',
- tmp: 'src/.tmp',
- dist: 'dist/',
- api: '../../ngXosLib/api/',
- helpers: '../../../xos/core/xoslib/static/js/vendor/',
- static: '../../../xos/core/xoslib/static/', // this is the django static folder
- dashboards: '../../../xos/core/xoslib/dashboards/' // this is the django html folder
-};
-
-wrench.readdirSyncRecursive('./gulp')
-.map(function(file) {
- require('./gulp/' + file)(options);
-});
-
-gulp.task('default', function () {
- gulp.start('build');
-});
diff --git a/views/ngXosViews/helperView/karma.conf.js b/views/ngXosViews/helperView/karma.conf.js
deleted file mode 100644
index 4123be9..0000000
--- a/views/ngXosViews/helperView/karma.conf.js
+++ /dev/null
@@ -1,88 +0,0 @@
-// Karma configuration
-// Generated on Tue Oct 06 2015 09:27:10 GMT+0000 (UTC)
-
-/* eslint indent: [2,2], quotes: [2, "single"]*/
-
-/*eslint-disable*/
-var wiredep = require('wiredep');
-var path = require('path');
-
-var bowerComponents = wiredep( {devDependencies: true} )[ 'js' ].map(function( file ){
- return path.relative(process.cwd(), file);
-});
-
-module.exports = function(config) {
-/*eslint-enable*/
- config.set({
-
- // base path that will be used to resolve all patterns (eg. files, exclude)
- basePath: '',
-
-
- // frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['jasmine'],
-
-
- // list of files / patterns to load in the browser
- files: bowerComponents.concat([
- '../../../xos/core/xoslib/static/js/vendor/ngXosVendor.js',
- '../../../xos/core/xoslib/static/js/vendor/ngXosHelpers.js',
- 'src/js/**/*.js',
- 'spec/**/*.mock.js',
- 'spec/**/*.test.js',
- 'src/**/*.html'
- ]),
-
-
- // list of files to exclude
- exclude: [
- ],
-
-
- // preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: {
- 'src/js/**/*.js': ['babel'],
- 'spec/**/*.test.js': ['babel'],
- 'src/**/*.html': ['ng-html2js']
- },
-
- ngHtml2JsPreprocessor: {
- stripPrefix: 'src/', //strip the src path from template url (http://stackoverflow.com/questions/22869668/karma-unexpected-request-when-testing-angular-directive-even-with-ng-html2js)
- moduleName: 'templates' // define the template module name
- },
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: ['mocha'],
-
-
- // web server port
- port: 9876,
-
-
- // enable / disable colors in the output (reporters and logs)
- colors: true,
-
-
- // level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,
-
-
- // enable / disable watching file and executing tests whenever any file changes
- autoWatch: true,
-
-
- // start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: ['PhantomJS'],
-
-
- // Continuous Integration mode
- // if true, Karma captures browsers, runs the tests and exits
- singleRun: false
- });
-};
diff --git a/views/ngXosViews/helperView/package.json b/views/ngXosViews/helperView/package.json
deleted file mode 100644
index e301a17..0000000
--- a/views/ngXosViews/helperView/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "xos-helperView",
- "version": "1.0.0",
- "description": "Angular Application for XOS, created with generator-xos",
- "scripts": {
- "prestart": "npm install && bower install",
- "start": "gulp serve",
- "prebuild": "npm install && bower install",
- "build": "gulp",
- "test": "karma start",
- "test:ci": "karma start --single-run",
- "lint": "eslint src/js/"
- },
- "keywords": [
- "XOS",
- "Angular",
- "XOSlib"
- ],
- "author": "Matteo Scandolo",
- "license": "MIT",
- "dependencies": {},
- "devDependencies": {
- "autoprefixer": "^6.3.3",
- "browser-sync": "^2.9.11",
- "css-mqpacker": "^4.0.0",
- "csswring": "^4.2.1",
- "del": "^2.0.2",
- "easy-mocker": "^1.2.0",
- "eslint": "^1.8.0",
- "eslint-plugin-angular": "linkmesrl/eslint-plugin-angular",
- "gulp": "^3.9.0",
- "gulp-angular-filesort": "^1.1.1",
- "gulp-angular-templatecache": "^1.8.0",
- "gulp-babel": "^5.3.0",
- "gulp-concat": "^2.6.0",
- "gulp-concat-util": "^0.5.5",
- "gulp-eslint": "^1.0.0",
- "gulp-inject": "^3.0.0",
- "gulp-minify-html": "^1.0.4",
- "gulp-ng-annotate": "^1.1.0",
- "gulp-postcss": "^6.0.1",
- "gulp-rename": "^1.2.2",
- "gulp-replace": "^0.5.4",
- "gulp-sass": "^2.2.0",
- "gulp-uglify": "^1.4.2",
- "http-proxy": "^1.12.0",
- "ink-docstrap": "^0.5.2",
- "jasmine-core": "~2.3.4",
- "karma": "^0.13.14",
- "karma-babel-preprocessor": "~5.2.2",
- "karma-coverage": "^0.5.3",
- "karma-jasmine": "~0.3.6",
- "karma-mocha-reporter": "~1.1.1",
- "karma-ng-html2js-preprocessor": "^0.2.0",
- "karma-phantomjs-launcher": "~0.2.1",
- "lodash": "^3.10.1",
- "phantomjs": "^1.9.19",
- "proxy-middleware": "^0.15.0",
- "run-sequence": "^1.1.4",
- "wiredep": "^3.0.0-beta",
- "wrench": "^1.5.8"
- }
-}
diff --git a/views/ngXosViews/helperView/spec/sample.test.js b/views/ngXosViews/helperView/spec/sample.test.js
deleted file mode 100644
index edf6ef4..0000000
--- a/views/ngXosViews/helperView/spec/sample.test.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-
-describe('The User List', () => {
-
- var scope, element, isolatedScope, httpBackend;
-
- beforeEach(module('xos.helperView'));
- beforeEach(module('templates'));
-
- beforeEach(inject(function($httpBackend, $compile, $rootScope){
-
- httpBackend = $httpBackend;
- // Setting up mock request
- $httpBackend.expectGET('/api/core/users/?no_hyperlinks=1').respond([
- {
- email: 'teo@onlab.us',
- firstname: 'Matteo',
- lastname: 'Scandolo'
- }
- ]);
-
- scope = $rootScope.$new();
- element = angular.element('<users-list></users-list>');
- $compile(element)(scope);
- scope.$digest();
- isolatedScope = element.isolateScope().vm;
- }));
-
- it('should load 1 users', () => {
- httpBackend.flush();
- expect(isolatedScope.users.length).toBe(1);
- expect(isolatedScope.users[0].email).toEqual('teo@onlab.us');
- expect(isolatedScope.users[0].firstname).toEqual('Matteo');
- expect(isolatedScope.users[0].lastname).toEqual('Scandolo');
- });
-
-});
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/src/css/main.css b/views/ngXosViews/helperView/src/css/main.css
deleted file mode 100644
index e69de29..0000000
--- a/views/ngXosViews/helperView/src/css/main.css
+++ /dev/null
diff --git a/views/ngXosViews/helperView/src/index.html b/views/ngXosViews/helperView/src/index.html
deleted file mode 100644
index 1f21510..0000000
--- a/views/ngXosViews/helperView/src/index.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!-- browserSync -->
-<!-- bower:css -->
-<link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
-<!-- endbower -->
-<!-- endcss -->
-<!-- inject:css -->
-<link rel="stylesheet" href="/css/main.css">
-<link rel="stylesheet" href="/../../../xos/core/static/xosNgLib.css">
-<!-- endinject -->
-
-<div ng-app="xos.helperView" id="xosHelperView" class="container-fluid">
- <div class="row">
- <div class="col-xs-12">
- <h1>Hi Matteo!</h1>
- <h3>Welcome to you development environment.</h3>
- <p>
- We provided this environment to help you creating a custom view.
- </p>
- <p>
- When the environment is running you will have an
- <code>auto-reload</code>
- feature enabled, so any time you update one of your files, the browser will be reloaded.
- </p>
- <p> <i>Note that is environment is already functional and that it is loading information from the XOS APIs and presenting them using the
- <code>xos-table</code>
- component.</i>
- </p>
- <h3>Development notes:</h3>
- <p>
- This views are designed using
- <a href="https://angularjs.org/" target="_blank">Angular Js</a>
- version 1.4.7 and
- <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a>
- 3.3.6 is included.
- </p>
- <p>
- We just want to remind you that this development environment provide you three helper command:
- <ul>
- <li>
- <code>npm start</code>
- - will start your setup (you should already be familiar with it)
- </li>
- <li>
- <code>npm test</code>
- - will execute your unit tests defined with
- <a href="https://karma-runner.github.io/0.13/index.html" target="_blank">Karma</a>
- and
- <a href="jasmine.github.io" target="_blank">Jasmine</a>
- . You can check the
- <code>spec/</code>
- folder to see an example of your first test.
- </li>
- <li>
- <code>npm run build</code>
- - will build your dashboard and make it available to XOS
- </li>
- </ul>
- </p>
- <h3>Helpers:</h3>
- <p>
- We provide a set of helpers that you can leverage in your dashboard:
- <ul>
- <li>
- <code>xos.helpers</code>
- - A set of
- <a href="https://docs.angularjs.org/guide/services" target="_blank">Angular Services</a>
- </li>
- <li>
- <code>xos.uiComponents</code>
- - A set of
- <a href="https://docs.angularjs.org/guide/directive" target="_blank">Angular Directives</a>
- </li>
- <li>
- <code>xos.rest</code>
- - A set of
- <a href="https://docs.angularjs.org/api/ngResource/service/$resource" target="_blank">Angular $resources</a>
- </li>
- </ul>
- To know more about this helpers you can naviate to
- <code>/views/ngXosLib/</code>
- and generate the documentation with
- <code>npm run doc</code>
- </p>
- <h3>Example:</h3>
- </div>
- </div>
- <div ui-view></div>
-</div>
-
-<!-- bower:js -->
-<script src="vendor/jquery/dist/jquery.js"></script>
-<script src="vendor/angular/angular.js"></script>
-<script src="vendor/angular-mocks/angular-mocks.js"></script>
-<script src="vendor/angular-ui-router/release/angular-ui-router.js"></script>
-<script src="vendor/angular-cookies/angular-cookies.js"></script>
-<script src="vendor/angular-animate/angular-animate.js"></script>
-<script src="vendor/angular-resource/angular-resource.js"></script>
-<script src="vendor/lodash/lodash.js"></script>
-<script src="vendor/bootstrap-css/js/bootstrap.min.js"></script>
-<!-- endbower -->
-<!-- endjs -->
-<!-- inject:js -->
-<script src="/../../../xos/core/xoslib/static/js/vendor/ngXosHelpers.js"></script>
-<script src="/.tmp/main.js"></script>
-<!-- endinject -->
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/src/js/main.js b/views/ngXosViews/helperView/src/js/main.js
deleted file mode 100644
index 6dc1d0f..0000000
--- a/views/ngXosViews/helperView/src/js/main.js
+++ /dev/null
@@ -1,42 +0,0 @@
-'use strict';
-
-angular.module('xos.helperView', [
- 'ngResource',
- 'ngCookies',
- 'ui.router',
- 'xos.helpers'
-])
-.config(($stateProvider) => {
- $stateProvider
- .state('user-list', {
- url: '/',
- template: '<users-list></users-list>'
- });
-})
-.config(function($httpProvider){
- $httpProvider.interceptors.push('NoHyperlinks');
-})
-.directive('usersList', function(){
- return {
- restrict: 'E',
- scope: {},
- bindToController: true,
- controllerAs: 'vm',
- templateUrl: 'templates/users-list.tpl.html',
- controller: function(Users){
-
- this.tableConfig = {
- resource: 'Instances'
- };
-
- // retrieving user list
- Users.query().$promise
- .then((users) => {
- this.users = users;
- })
- .catch((e) => {
- throw new Error(e);
- });
- }
- };
-});
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/src/sass/main.scss b/views/ngXosViews/helperView/src/sass/main.scss
deleted file mode 100644
index 9d457ab..0000000
--- a/views/ngXosViews/helperView/src/sass/main.scss
+++ /dev/null
@@ -1,5 +0,0 @@
-@import '../../../../style/sass/lib/_variables.scss';
-
-#xosHelperView {
-
-}
\ No newline at end of file
diff --git a/views/ngXosViews/helperView/src/templates/users-list.tpl.html b/views/ngXosViews/helperView/src/templates/users-list.tpl.html
deleted file mode 100644
index 0641dd9..0000000
--- a/views/ngXosViews/helperView/src/templates/users-list.tpl.html
+++ /dev/null
@@ -1 +0,0 @@
-<xos-smart-table config="vm.tableConfig"></xos-smart-table>
\ No newline at end of file
diff --git a/views/ngXosViews/sampleView/bower.json b/views/ngXosViews/sampleView/bower.json
index bb1b04d..a940676 100644
--- a/views/ngXosViews/sampleView/bower.json
+++ b/views/ngXosViews/sampleView/bower.json
@@ -20,9 +20,9 @@
"jquery": "2.1.4",
"angular-mocks": "1.4.7",
"angular": "1.4.7",
- "angular-animate": "1.4.7",
"angular-ui-router": "0.2.15",
"angular-cookies": "1.4.7",
+ "angular-animate": "1.4.7",
"angular-resource": "1.4.7",
"lodash": "~4.11.1",
"bootstrap-css": "3.3.6"
diff --git a/views/ngXosViews/sampleView/env/default.js b/views/ngXosViews/sampleView/env/default.js
index aa5ad1e..6343727 100644
--- a/views/ngXosViews/sampleView/env/default.js
+++ b/views/ngXosViews/sampleView/env/default.js
@@ -8,6 +8,6 @@
module.exports = {
host: 'http://xos.dev:9999/',
- xoscsrftoken: '7LIg5beILzsfLGW0AiZwHnhnNiNmv4Ll',
- xossessionid: '3zxm9cmkrxqlmpch5t4clrmvs2rxo7ng'
+ xoscsrftoken: '6OdNq1P7Aydyut3KjWBZoXLPJhb4DcuQ',
+ xossessionid: 'fpyv5s71bj779wmguxtg8wori16kiyrz'
};
diff --git a/views/ngXosViews/sampleView/gulp/server.js b/views/ngXosViews/sampleView/gulp/server.js
index bc8e9c0..c0678d9 100644
--- a/views/ngXosViews/sampleView/gulp/server.js
+++ b/views/ngXosViews/sampleView/gulp/server.js
@@ -3,7 +3,6 @@
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var inject = require('gulp-inject');
-var es = require('event-stream');
var runSequence = require('run-sequence');
var angularFilesort = require('gulp-angular-filesort');
var babel = require('gulp-babel');
@@ -11,7 +10,6 @@
var httpProxy = require('http-proxy');
var del = require('del');
var sass = require('gulp-sass');
-var debug = require('gulp-debug');
const environment = process.env.NODE_ENV;
@@ -36,13 +34,9 @@
});
module.exports = function(options){
- // open in browser with sync and proxy to 0.0.0.0
+
gulp.task('browser', function() {
- console.log(options.helpers);
browserSync.init({
- // reloadDelay: 500,
- // logLevel: 'debug',
- // logConnections: true,
startPath: '#/',
snippetOptions: {
rule: {
@@ -52,12 +46,12 @@
server: {
baseDir: options.src,
routes: {
- // '/xosHelpers/src': options.helpers,
'/xos/core/xoslib/static/js/vendor': options.helpers,
'/xos/core/static': options.static + '../../static/'
},
middleware: function(req, res, next){
if(
+ // to be removed, deprecated API
// req.url.indexOf('/xos/') !== -1 ||
// req.url.indexOf('/xoslib/') !== -1 ||
// req.url.indexOf('/hpcapi/') !== -1 ||
@@ -86,6 +80,9 @@
gulp.watch(options.css + '**/*.css', function(){
browserSync.reload();
});
+ gulp.watch(`${options.sass}/**/*.scss`, ['sass'], function(){
+ browserSync.reload();
+ });
gulp.watch([
options.helpers + 'ngXosHelpers.js',
@@ -93,10 +90,6 @@
], function(){
browserSync.reload();
});
-
- gulp.watch(`${options.sass}/**/*.scss`, ['sass'], function(){
- browserSync.reload();
- });
});
// compile sass
@@ -113,40 +106,16 @@
.pipe(gulp.dest(options.tmp));
});
- // // inject sourceMap
- // gulp.task('injectMaps', function(){
- // return gulp.src(options.src + 'index.html')
- // .pipe(
- // inject(
- // gulp.src([
- // options.helpersSourceMaps + '**/*.js.map'
- // ], {read: false}).pipe(debug()),
- // {
- // starttag: '<!-- inject:maps -->',
- // // ignorePath: [options.src, '/../../ngXosLib']
- // }
- // )
- // )
- // .pipe(gulp.dest(options.src));
- // });
-
// inject scripts
gulp.task('injectScript', ['cleanTmp', 'babel'], function(){
-
- var appScripts = gulp.src([
- options.tmp + '**/*.js',
- options.helpers + 'ngXosHelpers.js'
- ])
- .pipe(angularFilesort()).pipe(debug());
-
- var helpersSourceMaps = gulp.src([
- options.helpersSourceMaps + '**/*.js.map'
- ]).pipe(debug());
-
return gulp.src(options.src + 'index.html')
.pipe(
inject(
- es.merge(appScripts, helpersSourceMaps),
+ gulp.src([
+ options.tmp + '**/*.js',
+ options.helpers + 'ngXosHelpers.js'
+ ])
+ .pipe(angularFilesort()),
{
ignorePath: [options.src, '/../../ngXosLib']
}
diff --git a/views/ngXosViews/sampleView/gulpfile.js b/views/ngXosViews/sampleView/gulpfile.js
index 8b50345..08df554 100644
--- a/views/ngXosViews/sampleView/gulpfile.js
+++ b/views/ngXosViews/sampleView/gulpfile.js
@@ -12,7 +12,6 @@
dist: 'dist/',
api: '../../ngXosLib/api/',
helpers: '../../../xos/core/xoslib/static/js/vendor/',
- helpersSourceMaps: '../../ngXosLib/xosHelpers/.tmp/maps/',
static: '../../../xos/core/xoslib/static/', // this is the django static folder
dashboards: '../../../xos/core/xoslib/dashboards/' // this is the django html folder
};
diff --git a/views/ngXosViews/sampleView/package.json b/views/ngXosViews/sampleView/package.json
index e92f937..0ffe32c 100644
--- a/views/ngXosViews/sampleView/package.json
+++ b/views/ngXosViews/sampleView/package.json
@@ -28,14 +28,12 @@
"easy-mocker": "^1.2.0",
"eslint": "^1.8.0",
"eslint-plugin-angular": "linkmesrl/eslint-plugin-angular",
- "event-stream": "^3.3.2",
"gulp": "^3.9.0",
"gulp-angular-filesort": "^1.1.1",
"gulp-angular-templatecache": "^1.8.0",
"gulp-babel": "^5.3.0",
"gulp-concat": "^2.6.0",
"gulp-concat-util": "^0.5.5",
- "gulp-debug": "^2.1.2",
"gulp-eslint": "^1.0.0",
"gulp-inject": "^3.0.0",
"gulp-minify-html": "^1.0.4",
diff --git a/views/ngXosViews/sampleView/spec/sample.test.js b/views/ngXosViews/sampleView/spec/sample.test.js
index 6005af7..f0db699 100644
--- a/views/ngXosViews/sampleView/spec/sample.test.js
+++ b/views/ngXosViews/sampleView/spec/sample.test.js
@@ -15,7 +15,7 @@
{
email: 'teo@onlab.us',
firstname: 'Matteo',
- lastname: 'Scandolo'
+ lastname: 'Scandolo'
}
]);
diff --git a/views/ngXosViews/sampleView/src/css/main.css b/views/ngXosViews/sampleView/src/css/main.css
index 6120f18..e69de29 100644
--- a/views/ngXosViews/sampleView/src/css/main.css
+++ b/views/ngXosViews/sampleView/src/css/main.css
@@ -1,2 +0,0 @@
-#xosSampleView {
- max-width: 100%; }
diff --git a/views/ngXosViews/sampleView/src/index.html b/views/ngXosViews/sampleView/src/index.html
index 593e982..d9905a4 100644
--- a/views/ngXosViews/sampleView/src/index.html
+++ b/views/ngXosViews/sampleView/src/index.html
@@ -1,31 +1,105 @@
<!-- browserSync -->
<!-- bower:css -->
<link rel="stylesheet" href="vendor/bootstrap-css/css/bootstrap.min.css" />
-<!-- endbower --><!-- endcss -->
+<!-- endbower -->
+<!-- endcss -->
<!-- inject:css -->
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="/../../../xos/core/static/xosNgLib.css">
<!-- endinject -->
-<div ng-cloak ng-app="xos.sampleView" id="xosSampleView" class="container-fluid">
- <div ui-view></div>
+<div ng-app="xos.sampleView" id="xosSampleView" class="container-fluid">
+ <div class="row">
+ <div class="col-xs-12">
+ <h1>Hi Matteo!</h1>
+ <h3>Welcome to you development environment.</h3>
+ <p>
+ We provided this environment to help you creating a custom view.
+ </p>
+ <p>
+ When the environment is running you will have an
+ <code>auto-reload</code>
+ feature enabled, so any time you update one of your files, the browser will be reloaded.
+ </p>
+ <p> <i>Note that is environment is already functional and that it is loading information from the XOS APIs and presenting them using the
+ <code>xos-table</code>
+ component.</i>
+ </p>
+ <h3>Development notes:</h3>
+ <p>
+ This views are designed using
+ <a href="https://angularjs.org/" target="_blank">Angular Js</a>
+ version 1.4.7 and
+ <a href="http://getbootstrap.com/" target="_blank">Bootstrap</a>
+ 3.3.6 is included.
+ </p>
+ <p>
+ We just want to remind you that this development environment provide you three helper command:
+ <ul>
+ <li>
+ <code>npm start</code>
+ - will start your setup (you should already be familiar with it)
+ </li>
+ <li>
+ <code>npm test</code>
+ - will execute your unit tests defined with
+ <a href="https://karma-runner.github.io/0.13/index.html" target="_blank">Karma</a>
+ and
+ <a href="jasmine.github.io" target="_blank">Jasmine</a>
+ . You can check the
+ <code>spec/</code>
+ folder to see an example of your first test.
+ </li>
+ <li>
+ <code>npm run build</code>
+ - will build your dashboard and make it available to XOS
+ </li>
+ </ul>
+ </p>
+ <h3>Helpers:</h3>
+ <p>
+ We provide a set of helpers that you can leverage in your dashboard:
+ <ul>
+ <li>
+ <code>xos.helpers</code>
+ - A set of
+ <a href="https://docs.angularjs.org/guide/services" target="_blank">Angular Services</a>
+ </li>
+ <li>
+ <code>xos.uiComponents</code>
+ - A set of
+ <a href="https://docs.angularjs.org/guide/directive" target="_blank">Angular Directives</a>
+ </li>
+ <li>
+ <code>xos.rest</code>
+ - A set of
+ <a href="https://docs.angularjs.org/api/ngResource/service/$resource" target="_blank">Angular $resources</a>
+ </li>
+ </ul>
+ To know more about this helpers you can naviate to
+ <code>/views/ngXosLib/</code>
+ and generate the documentation with
+ <code>npm run doc</code>
+ </p>
+ <h3>Example:</h3>
+ </div>
+ </div>
+ <div ui-view></div>
</div>
<!-- bower:js -->
<script src="vendor/jquery/dist/jquery.js"></script>
<script src="vendor/angular/angular.js"></script>
<script src="vendor/angular-mocks/angular-mocks.js"></script>
-<script src="vendor/angular-animate/angular-animate.js"></script>
<script src="vendor/angular-ui-router/release/angular-ui-router.js"></script>
<script src="vendor/angular-cookies/angular-cookies.js"></script>
+<script src="vendor/angular-animate/angular-animate.js"></script>
<script src="vendor/angular-resource/angular-resource.js"></script>
<script src="vendor/lodash/lodash.js"></script>
<script src="vendor/bootstrap-css/js/bootstrap.min.js"></script>
-<!-- endbower --><!-- endjs -->
+<!-- endbower -->
+<!-- endjs -->
<!-- inject:js -->
<script src="/../../../xos/core/xoslib/static/js/vendor/ngXosHelpers.js"></script>
<script src="/.tmp/main.js"></script>
-<!-- endinject -->
-
-<!-- inject:map -->
<!-- endinject -->
\ No newline at end of file
diff --git a/views/ngXosViews/sampleView/src/js/main.js b/views/ngXosViews/sampleView/src/js/main.js
index 3dc24a6..b22e0ab 100644
--- a/views/ngXosViews/sampleView/src/js/main.js
+++ b/views/ngXosViews/sampleView/src/js/main.js
@@ -23,115 +23,16 @@
bindToController: true,
controllerAs: 'vm',
templateUrl: 'templates/users-list.tpl.html',
- controller: function(Users, _){
+ controller: function(Users){
this.tableConfig = {
- columns: [
- {
- label: 'E-Mail',
- prop: 'email'
- },
- {
- label: 'First Name',
- prop: 'firstname'
- },
- {
- label: 'Last Name',
- prop: 'lastname'
- },
- {
- label: 'Created',
- prop: 'created'
- },
- {
- label: 'is_admin',
- prop: 'is_admin'
- }
- ],
- classes: 'table table-striped table-condensed',
- actions: [
- {
- label: 'delete',
- icon: 'remove',
- cb: (user) => {
- console.log(user);
- // _.remove(this.users, {id: user.id});
- },
- color: 'red'
- }
- ],
- filter: 'field',
- order: true,
- pagination: {
- pageSize: 10
- }
+ resource: 'Users'
};
-
- this.smartTableConfig = {
- resource: 'Users',
- hiddenFields: [
- 'email',
- 'username',
- // 'created',
- 'updated',
- 'last_login',
- 'is_active',
- 'is_admin',
- 'is_staff',
- 'is_readonly',
- 'is_registering',
- 'is_appuser',
- 'timezone'
- ]
- }
-
- this.alertConfig = {
- type: 'danger',
- closeBtn: true
- }
-
- this.formConfig = {
- exclude: ['password'],
- formName: 'myForm',
- fields: {
- firstname: {
- validators: {
- minlength: 10
- }
- },
- lastname: {
- validators: {
- maxlength: 3
- }
- },
- user_url: {
- validators: {
- required: true
- }
- }
- },
- actions: [
- {
- label: 'Save',
- icon: 'ok', // refers to bootstraps glyphicon
- cb: (user) => { // receive the model
- console.log(user);
- },
- class: 'success'
- }
- ]
- };
-
- this.errors = {
- email: false
- }
-
- console.log('aaa')
-
+
// retrieving user list
Users.query().$promise
.then((users) => {
- this.users = users.concat(users).concat(users).concat(users);
+ this.users = users;
})
.catch((e) => {
throw new Error(e);
diff --git a/views/ngXosViews/sampleView/src/sass/main.scss b/views/ngXosViews/sampleView/src/sass/main.scss
index ce33ceb..76ed61e 100644
--- a/views/ngXosViews/sampleView/src/sass/main.scss
+++ b/views/ngXosViews/sampleView/src/sass/main.scss
@@ -1,5 +1,5 @@
@import '../../../../style/sass/lib/_variables.scss';
#xosSampleView {
- max-width: 100%;
+
}
\ No newline at end of file
diff --git a/views/ngXosViews/sampleView/src/templates/users-list.tpl.html b/views/ngXosViews/sampleView/src/templates/users-list.tpl.html
index 4c2554c..0641dd9 100644
--- a/views/ngXosViews/sampleView/src/templates/users-list.tpl.html
+++ b/views/ngXosViews/sampleView/src/templates/users-list.tpl.html
@@ -1,24 +1 @@
-<div class="row">
- <div class="col-xs-12">
- <h1>Users List</h1>
- <p>This is only an example view.</p>
- </div>
-</div>
-
-<div class="row">
- <div class="col-xs-12">
- <!-- <xos-form ng-model="vm.users[0]" config="vm.formConfig"></xos-form> -->
- <!-- <xos-alert config="vm.alertConfig">Random alert</xos-alert>
- <a class="btn" ng-click="vm.errors.email = !vm.errors.email" ng-class="{'btn-default': !vm.errors.email, 'btn-success': vm.errors.email}">
- Email
- </a> -->
- <!-- <xos-validation errors="vm.errors"></xos-validation> -->
- </div>
-</div>
-
-<div class="row">
- <div class="col-xs-12">
- <!-- <xos-table config="vm.tableConfig" data="vm.users"></xos-table> -->
- <xos-smart-table config="vm.smartTableConfig"></xos-smart-table>
- </div>
-</div>
\ No newline at end of file
+<xos-smart-table config="vm.tableConfig"></xos-smart-table>
\ No newline at end of file
diff --git a/xos/configurations/frontend/Makefile b/xos/configurations/frontend/Makefile
index 09c714b..38e077e 100644
--- a/xos/configurations/frontend/Makefile
+++ b/xos/configurations/frontend/Makefile
@@ -31,7 +31,7 @@
mock-cord:
sudo docker-compose run xos python /opt/xos/tosca/run.py padmin@vicci.org /opt/xos/configurations/frontend/mocks/cord.yaml
- sudo docker exec frontend_xos_1 cp /opt/xos/configurations/cord/xos_cord_config /opt/xos/xos_configuration/
+ sudo docker exec frontend_xos_1 cp /opt/xos/configurations/cord-pod/xos_cord_config /opt/xos/xos_configuration/
sudo docker exec frontend_xos_1 touch /opt/xos/xos/settings.py
mock-cord-pod:
diff --git a/xos/configurations/frontend/mocks/cord.yaml b/xos/configurations/frontend/mocks/cord.yaml
index c448da5..9ec0ae2 100644
--- a/xos/configurations/frontend/mocks/cord.yaml
+++ b/xos/configurations/frontend/mocks/cord.yaml
@@ -7,6 +7,21 @@
topology_template:
node_templates:
+
+ addresses_vsg:
+ type: tosca.nodes.AddressPool
+ properties:
+ addresses: 10.168.0.0/24
+ gateway_ip: 10.168.0.1
+ gateway_mac: 02:42:0a:a8:00:01
+
+ addresses_exampleservice-public:
+ type: tosca.nodes.AddressPool
+ properties:
+ addresses: 10.168.1.0/24
+ gateway_ip: 10.168.1.1
+ gateway_mac: 02:42:0a:a8:00:01
+
# CORD Services
service_vtr:
type: tosca.nodes.Service
@@ -30,11 +45,23 @@
view_url: /admin/cord/voltservice/$id$/
kind: vOLT
+ service_vrouter:
+ type: tosca.nodes.VRouterService
+ properties:
+ view_url: /admin/vrouter/vrouterservice/$id$/
+ requirements:
+ - addresses_vsg:
+ node: addresses_vsg
+ relationship: tosca.relationships.ProvidesAddresses
+ - addresses_service1:
+ node: addresses_exampleservice-public
+ relationship: tosca.relationships.ProvidesAddresses
+
service_vsg:
type: tosca.nodes.VSGService
requirements:
- - vbng_tenant:
- node: service_vbng
+ - vrouter_tenant:
+ node: service_vrouter
relationship: tosca.relationships.TenantOfService
properties:
view_url: /admin/cord/vsgservice/$id$/