diff --git a/app/components/arts/BaseApplication.ts b/app/components/arts/BaseApplication.ts
index 66c6780..302d293 100644
--- a/app/components/arts/BaseApplication.ts
+++ b/app/components/arts/BaseApplication.ts
@@ -3,12 +3,14 @@
///
///
///
+///
///
///
///
///
///
///
+///
///
///
///
@@ -21,6 +23,7 @@
///
///
///
+///
import IApplication = require('./interface/IApplication');
import IConfiguration = require('./interface/IConfiguration');
@@ -46,10 +49,27 @@ class BaseApplication extends BaseModule implements IApplication
'ngRoute',
'ngSanitize',
'ngTouch',
+ 'hljs',
'pascalprecht.translate',
+ 'angularFileUpload',
'angularMoment',
- 'LocalStorageModule',
- 'hljs'
+ 'nvd3ChartDirectives',
+ 'ui.grid',
+ 'ui.grid.pagination',
+ 'ui.grid.selection',
+ 'ui.grid.expandable',
+ 'ui.grid.pinning',
+ 'ui.grid.resizeColumns',
+ 'ui.grid.moveColumns',
+ 'ui.grid.edit',
+ 'ui.grid.rowEdit',
+ 'ui.grid.cellNav',
+ 'ui.grid.exporter',
+ 'ui.grid.importer',
+ 'ui.grid.saveState',
+ 'ui.grid.infiniteScroll',
+ 'ui.grid.autoResize',
+ 'LocalStorageModule'
];
static dependencies(deps:Array):Array
diff --git a/app/config.ts b/app/config.ts
index 1f5dd09..0c8a207 100644
--- a/app/config.ts
+++ b/app/config.ts
@@ -8,12 +8,14 @@ requirejs.config(
'angular-animate': 'vendor/js/angular-animate',
'angular-aria': 'vendor/js/angular-aria',
'angular-cookies': 'vendor/js/angular-cookies',
+ 'angular-file-upload': 'vendor/js/angular-file-upload',
'angular-highlightjs': 'vendor/js/angular-highlightjs',
'angular-loader': 'vendor/js/angular-loader',
'angular-local-storage': 'vendor/js/angular-local-storage',
'angular-material': 'vendor/js/angular-material',
'angular-messages': 'vendor/js/angular-messages',
'angular-moment': 'vendor/js/angular-moment',
+ 'angular-nvd3-directives': 'vendor/js/angularjs-nvd3-directives',
'angular-resource': 'vendor/js/angular-resource',
'angular-route': 'vendor/js/angular-route',
'angular-sanitize': 'vendor/js/angular-sanitize',
@@ -26,9 +28,12 @@ requirejs.config(
'angular-translate-loader-url': 'vendor/js/angular-translate-loader-url',
'angular-translate-storage-cookie': 'vendor/js/angular-translate-storage-cookie',
'angular-translate-storage-local': 'vendor/js/angular-translate-storage-local',
+ 'angular-ui-grid': 'vendor/js/ui-grid',
+ 'd3': 'vendor/js/d3',
'highlight': 'vendor/js/highlight.pack',
'jquery': 'vendor/js/jquery',
'moment': 'vendor/js/moment',
+ 'nv.d3': 'vendor/js/nv.d3',
'text': 'vendor/js/text'
},
@@ -51,6 +56,11 @@ requirejs.config(
'angular'
]
},
+ 'angular-file-upload': {
+ deps: [
+ 'angular'
+ ]
+ },
'angular-highlightjs': {
deps: [
'angular',
@@ -79,6 +89,12 @@ requirejs.config(
'angular'
]
},
+ 'angular-nvd3-directives': {
+ deps: [
+ 'angular',
+ 'nv.d3'
+ ]
+ },
'angular-resource': {
deps: [
'angular'
@@ -140,6 +156,16 @@ requirejs.config(
'angular-translate',
'angular-cookies'
]
+ },
+ 'angular-ui-grid': {
+ deps: [
+ 'angular'
+ ]
+ },
+ 'nv.d3': {
+ deps: [
+ 'd3'
+ ]
}
},
deps: [
diff --git a/app/index.html b/app/index.html
index 00cdae7..d2a4af1 100644
--- a/app/index.html
+++ b/app/index.html
@@ -9,6 +9,8 @@
+
+
@@ -18,6 +20,7 @@
display: none;
}
+
diff --git a/app/test-config.ts b/app/test-config.ts
index 71e7857..bae60a8 100644
--- a/app/test-config.ts
+++ b/app/test-config.ts
@@ -31,6 +31,7 @@ requirejs.config({
'angular-animate': 'vendor/js/angular-animate',
'angular-aria': 'vendor/js/angular-aria',
'angular-cookies': 'vendor/js/angular-cookies',
+ 'angular-file-upload': 'vendor/js/angular-file-upload',
'angular-highlightjs': 'vendor/js/angular-highlightjs',
'angular-loader': 'vendor/js/angular-loader',
'angular-local-storage': 'vendor/js/angular-local-storage',
@@ -38,6 +39,7 @@ requirejs.config({
'angular-messages': 'vendor/js/angular-messages',
'angular-mocks': 'vendor/js/angular-mocks',
'angular-moment': 'vendor/js/angular-moment',
+ 'angular-nvd3-directives': 'vendor/js/angularjs-nvd3-directives',
'angular-resource': 'vendor/js/angular-resource',
'angular-route': 'vendor/js/angular-route',
'angular-sanitize': 'vendor/js/angular-sanitize',
@@ -50,9 +52,12 @@ requirejs.config({
'angular-translate-loader-url': 'vendor/js/angular-translate-loader-url',
'angular-translate-storage-cookie': 'vendor/js/angular-translate-storage-cookie',
'angular-translate-storage-local': 'vendor/js/angular-translate-storage-local',
+ 'angular-ui-grid': 'vendor/js/ui-grid',
+ 'd3': 'vendor/js/d3',
'highlight': 'vendor/js/highlight.pack',
'jquery': 'vendor/js/jquery',
'moment': 'vendor/js/moment',
+ 'nv.d3': 'vendor/js/nv.d3',
'text': 'vendor/js/text'
},
@@ -75,6 +80,11 @@ requirejs.config({
'angular'
]
},
+ 'angular-file-upload': {
+ deps: [
+ 'angular'
+ ]
+ },
'angular-highlightjs': {
deps: [
'angular',
@@ -103,11 +113,23 @@ requirejs.config({
'angular'
]
},
+ 'angular-moment': {
+ deps: [
+ 'angular',
+ 'moment'
+ ]
+ },
'angular-mocks': {
deps: [
'angular'
]
},
+ 'angular-nvd3-directives': {
+ deps: [
+ 'angular',
+ 'nv.d3'
+ ]
+ },
'angular-resource': {
deps: [
'angular'
@@ -168,6 +190,16 @@ requirejs.config({
deps: [
'angular-translate'
]
+ },
+ 'angular-ui-grid': {
+ deps: [
+ 'angular'
+ ]
+ },
+ 'nv.d3': {
+ deps: [
+ 'd3'
+ ]
}
},
diff --git a/bower.json b/bower.json
index 0406bd3..da861d0 100644
--- a/bower.json
+++ b/bower.json
@@ -52,9 +52,12 @@
"angular-translate-storage-local": "^2.6.1",
"angular-translate": "^2.6.1",
"angular-translate": "^2.6.1",
+ "angular-ui-grid": "^3.0.0-rc.20",
+ "angularjs-nvd3-directives": "^0.0.7",
"font-awesome": "^4.3.0 ",
"jquery": "^2.1.3",
"moment": "^2.9.0",
+ "ng-file-upload": "^3.2.4",
"requirejs": "2.1.17",
"requirejs-text": "2.0.14"
},
@@ -72,6 +75,7 @@
"angular-sanitize": "^1.4.0",
"angular-touch": "^1.4.0",
"angular-translate": "^2.6.1",
- "font-awesome": "^4.3.0"
+ "font-awesome": "^4.3.0",
+ "d3": "~3.4.1"
}
}
diff --git a/conf/gulpfunc.ts b/conf/gulpfunc.ts
index db56df4..40127ca 100644
--- a/conf/gulpfunc.ts
+++ b/conf/gulpfunc.ts
@@ -2,177 +2,209 @@
'use strict';
var amd = require('amd-optimize'),
- bower = require('main-bower-files'),
- through = require('through2'),
- filter = require('gulp-filter'),
- gulp = require('gulp'),
- karma = require('gulp-karma'),
- connect = require('gulp-connect'),
- concat = require('gulp-concat'),
- gulpif = require('gulp-if'),
- maps = require('gulp-sourcemaps'),
- merge = require('merge2'),
- minCSS = require('gulp-minify-css'),
- rename = require('gulp-rename'),
- replace = require('gulp-replace'),
- uglify = require('gulp-uglify'),
- sass = require('gulp-sass'),
- os = require('os'),
- protrac = require('gulp-protractor').protractor,
- push = require('connect-pushstate'),
- ts = require('gulp-typescript'),
- typedoc = require('gulp-typedoc'),
- tsExtends = /^var __extends =/,
- istanbulIgnoreTypeScriptExtend = function () {
- return through.obj(function (file:any, enc:any, done:any) {
- if (file.isBuffer() && tsExtends.test(file.contents)) {
- file.contents = Buffer.concat([
- new Buffer('/* istanbul ignore next: TypeScript extend */' + os.EOL),
- file.contents
- ]);
- }
- this.push(file);
- done();
- });
- };
+ bower = require('main-bower-files'),
+ through = require('through2'),
+ filter = require('gulp-filter'),
+ gulp = require('gulp'),
+ karma = require('gulp-karma'),
+ connect = require('gulp-connect'),
+ concat = require('gulp-concat'),
+ gulpif = require('gulp-if'),
+ compression = require('compression'),
+ maps = require('gulp-sourcemaps'),
+ merge = require('merge2'),
+ minCSS = require('gulp-minify-css'),
+ rename = require('gulp-rename'),
+ replace = require('gulp-replace'),
+ uglify = require('gulp-uglify'),
+ sass = require('gulp-sass'),
+ os = require('os'),
+ protrac = require('gulp-protractor').protractor,
+ push = require('connect-pushstate'),
+ ts = require('gulp-typescript'),
+ typedoc = require('gulp-typedoc'),
+ tsExtends = /^var __extends =/,
+ istanbulIgnoreTypeScriptExtend = function ()
+ {
+ return through.obj(function (file:any, enc:any, done:any)
+ {
+ if (file.isBuffer() && tsExtends.test(file.contents))
+ {
+ file.contents = Buffer.concat([
+ new Buffer('/* istanbul ignore next: TypeScript extend */' + os.EOL),
+ file.contents
+ ]);
+ }
+ this.push(file);
+ done();
+ });
+ };
exports.func = {
build: {
- requirejs: function (out:string, destination:any, source:any, mod:string, exclude:string[], compress:any, sourceMaps:any) {
- return gulp.src([source + '/*.js', source + '/**/*.js'])
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(amd(mod, {
- baseUrl: source,
- configFile: source + '/config.js',
- findNestedDependencies: true,
- exclude: exclude
- }))
- .pipe(concat(out))
- .pipe(gulpif(compress, uglify()))
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(gulp.dest(destination));
+ requirejs: function (out:string, destination:any, source:any, mod:string, exclude:string[], compress:any, sourceMaps:any)
+ {
+ return gulp.src([
+ source + '/*.js',
+ source + '/**/*.js'
+ ])
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(amd(mod, {
+ baseUrl: source,
+ configFile: source + '/config.js',
+ findNestedDependencies: true,
+ exclude: exclude
+ }))
+ .pipe(concat(out))
+ .pipe(gulpif(compress, uglify()))
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(gulp.dest(destination));
},
- bower: function (destination:any, filters:any, compress:any, sourceMaps:any) {
+ bower: function (destination:any, filters:any, compress:any, sourceMaps:any)
+ {
var jsFilter = filter(filters.js),
- cssFilter = filter(filters.css),
- fontFilter = filter(filters.font),
- imagesFilter = filter(filters.images);
+ cssFilter = filter(filters.css),
+ fontFilter = filter(filters.font),
+ imagesFilter = filter(filters.images);
return gulp.src(bower({filter: filters.exclude}))
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(jsFilter)
- .pipe(gulpif(compress, uglify()))
- .pipe(rename(function (path:any) {
- path.dirname = '/js';
- }))
- .pipe(jsFilter.restore())
- .pipe(cssFilter)
- .pipe(replace(/url\('ui-grid/g, "url('../fonts/ui-grid")) // fix font path in ui-grid
- .pipe(gulpif(compress, minCSS()))
- .pipe(rename(function (path:any) {
- path.dirname = '/css';
- }))
- .pipe(cssFilter.restore())
- .pipe(fontFilter)
- .pipe(rename(function (path:any) {
- path.dirname = '/fonts';
- }))
- .pipe(fontFilter.restore())
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(imagesFilter)
- .pipe(rename(function (path:any) {
- path.dirname = '/images';
- }))
- .pipe(imagesFilter.restore())
- .pipe(gulp.dest(destination));
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(jsFilter)
+ .pipe(gulpif(compress, uglify()))
+ .pipe(rename(function (path:any)
+ {
+ path.dirname = '/js';
+ }))
+ .pipe(jsFilter.restore())
+ .pipe(cssFilter)
+ .pipe(replace(/url\('ui-grid/g, "url('../fonts/ui-grid")) // fix font path in ui-grid
+ .pipe(gulpif(compress, minCSS()))
+ .pipe(rename(function (path:any)
+ {
+ path.dirname = '/css';
+ }))
+ .pipe(cssFilter.restore())
+ .pipe(fontFilter)
+ .pipe(rename(function (path:any)
+ {
+ path.dirname = '/fonts';
+ }))
+ .pipe(fontFilter.restore())
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(imagesFilter)
+ .pipe(rename(function (path:any)
+ {
+ path.dirname = '/images';
+ }))
+ .pipe(imagesFilter.restore())
+ .pipe(gulp.dest(destination));
},
- typescript: function (destination:any, source:any, config:any, compress:any, sourceMaps:any) {
+ typescript: function (destination:any, source:any, config:any, compress:any, sourceMaps:any)
+ {
var result = gulp.src(source)
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(ts(ts.createProject(config)));
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(ts(ts.createProject(config)));
return merge([
result.js
- .pipe(istanbulIgnoreTypeScriptExtend())
- .pipe(gulpif(compress, uglify()))
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(gulp.dest(destination)),
+ .pipe(istanbulIgnoreTypeScriptExtend())
+ .pipe(gulpif(compress, uglify()))
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(gulp.dest(destination)),
result.dts
- .pipe(gulp.dest(destination + '/ts-api'))
+ .pipe(gulp.dest(destination + '/ts-api'))
]);
},
- typedoc: function(destination: string, source: string[], config: any) {
+ typedoc: function (destination:string, source:string[], config:any)
+ {
return gulp.src(source).pipe(typedoc(config));
},
- scss: function (destination:any, source:any, compress:any, sourceMaps:any) {
+ scss: function (destination:any, source:any, compress:any, sourceMaps:any)
+ {
return gulp.src(source)
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(sass())
- .pipe(gulpif(compress, minCSS()))
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(gulp.dest(destination));
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(sass())
+ .pipe(gulpif(compress, minCSS()))
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(gulp.dest(destination));
},
- copy: function (destination:any, source:any) {
+ copy: function (destination:any, source:any)
+ {
return gulp.src(source)
- .pipe(gulp.dest(destination));
+ .pipe(gulp.dest(destination));
},
- copyJS: function (destination:any, source:any, compress:any, sourceMaps:any) {
+ copyJS: function (destination:any, source:any, compress:any, sourceMaps:any)
+ {
return gulp.src(source)
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(gulpif(compress, uglify()))
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(gulp.dest(destination));
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(gulpif(compress, uglify()))
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(gulp.dest(destination));
},
- copyCSS: function (destination:any, source:any, compress:any, sourceMaps:any) {
+ copyCSS: function (destination:any, source:any, compress:any, sourceMaps:any)
+ {
return gulp.src(source)
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(gulpif(compress, minCSS()))
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(gulp.dest(destination));
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(gulpif(compress, minCSS()))
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(gulp.dest(destination));
},
- copyJSON: function (destination:any, source:any, compress:any, sourceMaps:any) {
+ copyJSON: function (destination:any, source:any, compress:any, sourceMaps:any)
+ {
return gulp.src(source)
- .pipe(gulpif(compress && sourceMaps, maps.init()))
- .pipe(gulpif(compress, uglify()))
- .pipe(gulpif(compress && sourceMaps, maps.write()))
- .pipe(gulp.dest(destination));
+ .pipe(gulpif(compress && sourceMaps, maps.init()))
+ .pipe(gulpif(compress, uglify()))
+ .pipe(gulpif(compress && sourceMaps, maps.write()))
+ .pipe(gulp.dest(destination));
}
},
test: {
- unit: function (config:any, watch:any) {
+ unit: function (config:any, watch:any)
+ {
return gulp.src([])
- .pipe(karma({
- configFile: config,
- action: watch ? 'watch' : 'run'
- }))
- .on('error', function (err:any) {
- throw err;
- });
+ .pipe(karma({
+ configFile: config,
+ action: watch ? 'watch' : 'run'
+ }))
+ .on('error', function (err:any)
+ {
+ throw err;
+ });
},
- e2e: function (config:any) {
+ e2e: function (config:any)
+ {
return gulp.src([])
- .pipe(protrac({
- configFile: config
- }))
- .on('error', function (err:any) {
- throw err;
- });
+ .pipe(protrac({
+ configFile: config
+ }))
+ .on('error', function (err:any)
+ {
+ throw err;
+ });
}
},
- server: function (path:any, port:any) {
-
+ server: function (path:any, port:any)
+ {
return connect.server({
- root: [path, 'tmp'],
+ root: [
+ path,
+ 'tmp'
+ ],
port: port,
- base: ['.tmp', ''],
+ base: [
+ '.tmp',
+ ''
+ ],
hostname: '*',
livereload: true,
- middleware: function (connect:any, options:any) {
+ middleware: function (connect:any, options:any)
+ {
return [
push({
root: '/index.html'
- })
+ }),
+ compression()
];
}
});
diff --git a/package.json b/package.json
index 1cf9e9c..78825e8 100644
--- a/package.json
+++ b/package.json
@@ -47,6 +47,7 @@
"connect-pushstate": "^1.0.0",
"gulp-concat": "^2.5.2 ",
"gulp-filter": "^2.0.2",
+ "compression": "^1.4.3",
"gulp-rename": "^1.2.0",
"gulp-replace": "^0.5.3",
"gulp-if": "^1.2.5",