diff --git a/.gitignore b/.gitignore
index 7ba77672df2..8abd0d17cbd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,7 @@ coverage/
awsconfig
/dist
/emails/dist
-/public/.app_gen
+/public_gen
/tmp
docs/AWS_S3_BUCKET
diff --git a/Gruntfile.js b/Gruntfile.js
index 43cb1f09bd1..70defdeaf6d 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -6,6 +6,7 @@ module.exports = function (grunt) {
pkg: grunt.file.readJSON('package.json'),
baseDir: '.',
srcDir: 'public',
+ genDir: 'public_gen',
destDir: 'dist',
tempDir: 'tmp',
arch: os.arch(),
diff --git a/package.json b/package.json
index 78081c998b8..01b9ae03cb1 100644
--- a/package.json
+++ b/package.json
@@ -61,6 +61,7 @@
"license": "Apache-2.0",
"dependencies": {
"grunt-jscs": "~1.5.x",
+ "grunt-sync": "^0.4.1",
"karma-sinon": "^1.0.3",
"lodash": "^2.4.1",
"sinon": "1.10.3"
diff --git a/public/app/app.js b/public/app/app.js
index 8adc04d1ef7..e91efa1169a 100644
--- a/public/app/app.js
+++ b/public/app/app.js
@@ -104,8 +104,8 @@ function (angular, $, _, appLevelRequire) {
_.each(pre_boot_modules, function (module) {
_.extend(module, register_fns);
});
- pre_boot_modules = false;
+ pre_boot_modules = false;
$rootScope.requireContext = appLevelRequire;
$rootScope.require = function (deps, fn) {
var $scope = this;
diff --git a/public/app/components/require.config.js b/public/app/components/require.config.js
index 268d782114a..f255418414e 100644
--- a/public/app/components/require.config.js
+++ b/public/app/components/require.config.js
@@ -1,6 +1,6 @@
require.config({
urlArgs: 'bust=' + (new Date().getTime()),
- baseUrl: 'public/.app_gen',
+ baseUrl: 'public/app',
paths: {
config: 'components/config',
diff --git a/public/app/controllers/errorCtrl.js b/public/app/controllers/errorCtrl.js
index 9e70efb3ee4..b2dcbd1de50 100644
--- a/public/app/controllers/errorCtrl.js
+++ b/public/app/controllers/errorCtrl.js
@@ -8,6 +8,7 @@ function (angular) {
var module = angular.module('grafana.controllers');
+
module.controller('ErrorCtrl', function($scope, contextSrv) {
var showSideMenu = contextSrv.sidemenu;
diff --git a/public/app/controllers/grafanaCtrl.js b/public/app/controllers/grafanaCtrl.js
index 6576b57de87..16e505a68dc 100644
--- a/public/app/controllers/grafanaCtrl.js
+++ b/public/app/controllers/grafanaCtrl.js
@@ -4,13 +4,10 @@ define([
'lodash',
'jquery',
'store',
- './testCtrl',
],
-function (angular, config, _, $, store, TestCtrl) {
+function (angular, config, _, $, store) {
"use strict";
- console.log(new TestCtrl().getName());
-
var module = angular.module('grafana.controllers');
module.controller('GrafanaCtrl', function($scope, alertSrv, utilSrv, $rootScope, $controller, contextSrv) {
diff --git a/public/app/core/core.ts b/public/app/core/core.ts
new file mode 100644
index 00000000000..f9a4b27c7ff
--- /dev/null
+++ b/public/app/core/core.ts
@@ -0,0 +1,6 @@
+
+export * from './time_series'
+export * from './directives/cool_dir'
+export * from './routes/module_loader'
+
+
diff --git a/public/app/core/directives/cool_dir.ts b/public/app/core/directives/cool_dir.ts
new file mode 100644
index 00000000000..78caa78bed8
--- /dev/null
+++ b/public/app/core/directives/cool_dir.ts
@@ -0,0 +1,7 @@
+
+export class CoolDir {
+ getName() : string {
+ return "CoolDir";
+ }
+}
+
diff --git a/public/app/core/routes/module_loader.ts b/public/app/core/routes/module_loader.ts
new file mode 100644
index 00000000000..9f309250d68
--- /dev/null
+++ b/public/app/core/routes/module_loader.ts
@@ -0,0 +1,19 @@
+///
+
+export class ModuleLoader {
+ lazy: any
+
+ constructor(moduleName) {
+
+ this.lazy = ["$q", "$route", "$rootScope", function($q, $route, $rootScope) {
+ var defered = $q.defer();
+
+ require([moduleName], function () {
+ defered.resolve();
+ });
+
+ return defered.promise;
+ }];
+
+ }
+}
diff --git a/public/app/core/time_series.ts b/public/app/core/time_series.ts
new file mode 100644
index 00000000000..46d78e9fa7f
--- /dev/null
+++ b/public/app/core/time_series.ts
@@ -0,0 +1,6 @@
+export class TimeSeries {
+ getName() : string {
+ return "TimeSeries";
+ }
+}
+
diff --git a/public/app/features/all.js b/public/app/features/all.js
index 1a000a71782..6519d112b74 100644
--- a/public/app/features/all.js
+++ b/public/app/features/all.js
@@ -8,6 +8,5 @@ define([
'./profile/profileCtrl',
'./profile/changePasswordCtrl',
'./profile/selectOrgCtrl',
- './org/all',
'./admin/all',
], function () {});
diff --git a/public/app/routes/all.js b/public/app/routes/all.js
index 74fb4997524..cdfdf0daf37 100644
--- a/public/app/routes/all.js
+++ b/public/app/routes/all.js
@@ -1,7 +1,8 @@
define([
'angular',
+ '../core/core',
'./dashLoadControllers',
-], function(angular) {
+], function(angular, core) {
"use strict";
var module = angular.module('grafana.routes');
@@ -41,30 +42,37 @@ define([
.when('/datasources', {
templateUrl: 'app/features/org/partials/datasources.html',
controller : 'DataSourcesCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/datasources/edit/:id', {
templateUrl: 'app/features/org/partials/datasourceEdit.html',
controller : 'DataSourceEditCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/datasources/new', {
templateUrl: 'app/features/org/partials/datasourceEdit.html',
controller : 'DataSourceEditCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/org', {
templateUrl: 'app/features/org/partials/orgDetails.html',
controller : 'OrgDetailsCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/org/new', {
templateUrl: 'app/features/org/partials/newOrg.html',
controller : 'NewOrgCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/org/users', {
templateUrl: 'app/features/org/partials/orgUsers.html',
controller : 'OrgUsersCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/org/apikeys', {
templateUrl: 'app/features/org/partials/orgApiKeys.html',
controller : 'OrgApiKeysCtrl',
+ resolve: new core.ModuleLoader("features/org/all"),
})
.when('/profile', {
templateUrl: 'app/features/profile/partials/profile.html',
diff --git a/public/css/less/admin.less b/public/less/admin.less
similarity index 100%
rename from public/css/less/admin.less
rename to public/less/admin.less
diff --git a/public/css/less/bootstrap-tagsinput.less b/public/less/bootstrap-tagsinput.less
similarity index 100%
rename from public/css/less/bootstrap-tagsinput.less
rename to public/less/bootstrap-tagsinput.less
diff --git a/public/css/less/bootstrap.dark.less b/public/less/bootstrap.dark.less
similarity index 100%
rename from public/css/less/bootstrap.dark.less
rename to public/less/bootstrap.dark.less
diff --git a/public/css/less/bootstrap.light.less b/public/less/bootstrap.light.less
similarity index 100%
rename from public/css/less/bootstrap.light.less
rename to public/less/bootstrap.light.less
diff --git a/public/css/less/bootswatch.dark.less b/public/less/bootswatch.dark.less
similarity index 100%
rename from public/css/less/bootswatch.dark.less
rename to public/less/bootswatch.dark.less
diff --git a/public/css/less/bootswatch.light.less b/public/less/bootswatch.light.less
similarity index 100%
rename from public/css/less/bootswatch.light.less
rename to public/less/bootswatch.light.less
diff --git a/public/css/less/dashlist.less b/public/less/dashlist.less
similarity index 100%
rename from public/css/less/dashlist.less
rename to public/less/dashlist.less
diff --git a/public/css/less/fonts.less b/public/less/fonts.less
similarity index 100%
rename from public/css/less/fonts.less
rename to public/less/fonts.less
diff --git a/public/css/less/forms.less b/public/less/forms.less
similarity index 100%
rename from public/css/less/forms.less
rename to public/less/forms.less
diff --git a/public/css/less/gfbox.less b/public/less/gfbox.less
similarity index 100%
rename from public/css/less/gfbox.less
rename to public/less/gfbox.less
diff --git a/public/css/less/grafana-responsive.less b/public/less/grafana-responsive.less
similarity index 100%
rename from public/css/less/grafana-responsive.less
rename to public/less/grafana-responsive.less
diff --git a/public/css/less/grafana.less b/public/less/grafana.less
similarity index 100%
rename from public/css/less/grafana.less
rename to public/less/grafana.less
diff --git a/public/css/less/graph.less b/public/less/graph.less
similarity index 100%
rename from public/css/less/graph.less
rename to public/less/graph.less
diff --git a/public/css/less/login.less b/public/less/login.less
similarity index 100%
rename from public/css/less/login.less
rename to public/less/login.less
diff --git a/public/css/less/navbar.less b/public/less/navbar.less
similarity index 100%
rename from public/css/less/navbar.less
rename to public/less/navbar.less
diff --git a/public/css/less/overrides.less b/public/less/overrides.less
similarity index 100%
rename from public/css/less/overrides.less
rename to public/less/overrides.less
diff --git a/public/css/less/panel.less b/public/less/panel.less
similarity index 100%
rename from public/css/less/panel.less
rename to public/less/panel.less
diff --git a/public/css/less/search.less b/public/less/search.less
similarity index 100%
rename from public/css/less/search.less
rename to public/less/search.less
diff --git a/public/css/less/sidemenu.less b/public/less/sidemenu.less
similarity index 100%
rename from public/css/less/sidemenu.less
rename to public/less/sidemenu.less
diff --git a/public/css/less/singlestat.less b/public/less/singlestat.less
similarity index 100%
rename from public/css/less/singlestat.less
rename to public/less/singlestat.less
diff --git a/public/css/less/submenu.less b/public/less/submenu.less
similarity index 100%
rename from public/css/less/submenu.less
rename to public/less/submenu.less
diff --git a/public/css/less/tables_lists.less b/public/less/tables_lists.less
similarity index 100%
rename from public/css/less/tables_lists.less
rename to public/less/tables_lists.less
diff --git a/public/css/less/tabs.less b/public/less/tabs.less
similarity index 100%
rename from public/css/less/tabs.less
rename to public/less/tabs.less
diff --git a/public/css/less/tightform.less b/public/less/tightform.less
similarity index 100%
rename from public/css/less/tightform.less
rename to public/less/tightform.less
diff --git a/public/css/less/type.less b/public/less/type.less
similarity index 100%
rename from public/css/less/type.less
rename to public/less/type.less
diff --git a/public/css/less/validation.less b/public/less/validation.less
similarity index 100%
rename from public/css/less/validation.less
rename to public/less/validation.less
diff --git a/public/css/less/variables.dark.less b/public/less/variables.dark.less
similarity index 100%
rename from public/css/less/variables.dark.less
rename to public/less/variables.dark.less
diff --git a/public/css/less/variables.light.less b/public/less/variables.light.less
similarity index 100%
rename from public/css/less/variables.light.less
rename to public/less/variables.light.less
diff --git a/public/test/karma.conf.js b/public/test/karma.conf.js
index d5d67d5218b..020c65a9e3c 100644
--- a/public/test/karma.conf.js
+++ b/public/test/karma.conf.js
@@ -9,7 +9,7 @@ module.exports = function(config) {
// list of files / patterns to load in the browser
files: [
'public/test/test-main.js',
- {pattern: 'public/app/**/*.js', included: false},
+ {pattern: 'public/.app_gen/**/*.js', included: false},
{pattern: 'public/vendor/**/*.js', included: false},
{pattern: 'public/test/**/*.js', included: false},
{pattern: 'public/**/*.js', included: false}
diff --git a/public/test/test-main.js b/public/test/test-main.js
index 6abf176b3e5..b9c0ba986aa 100644
--- a/public/test/test-main.js
+++ b/public/test/test-main.js
@@ -1,5 +1,5 @@
require.config({
- baseUrl: 'http://localhost:9876/base/public/app',
+ baseUrl: 'http://localhost:9876/base/public/app_gen',
paths: {
specs: '../test/specs',
diff --git a/public/views/index.html b/public/views/index.html
index bf7c5c969c3..b3c1763ce51 100644
--- a/public/views/index.html
+++ b/public/views/index.html
@@ -19,7 +19,7 @@
-
+
diff --git a/tasks/build_task.js b/tasks/build_task.js
index b5c2e14a479..4d7209017b8 100644
--- a/tasks/build_task.js
+++ b/tasks/build_task.js
@@ -6,11 +6,11 @@ module.exports = function(grunt) {
'jshint:source',
'jshint:tests',
'jscs',
- 'karma:test',
'clean:on_start',
- 'less:src',
- 'concat:cssDark',
- 'concat:cssLight',
+ 'copy:app_gen_build',
+ 'typescript:build',
+ 'karma:test',
+ 'css',
'copy:everything_but_less_to_temp',
'htmlmin:build',
'ngtemplates',
@@ -25,7 +25,6 @@ module.exports = function(grunt) {
'uglify:dest'
]);
-
// task to add [[.AppSubUrl]] to reved path
grunt.registerTask('remapFilerev', function(){
var root = grunt.config().destDir;
diff --git a/tasks/default_task.js b/tasks/default_task.js
index 0bd46b9f5f9..edf2a38b35a 100644
--- a/tasks/default_task.js
+++ b/tasks/default_task.js
@@ -1,6 +1,16 @@
// Lint and build CSS
module.exports = function(grunt) {
- grunt.registerTask('css', ['less:src', 'concat:cssDark', 'concat:cssLight']);
- grunt.registerTask('default', ['jscs', 'jshint', 'css']);
+ 'use strict';
+
+ grunt.registerTask('css', ['less', 'concat:cssDark', 'concat:cssLight']);
+ grunt.registerTask('default', [
+ 'jscs',
+ 'jshint',
+ 'clean:gen',
+ 'copy:everything_but_ts_and_less',
+ 'css',
+ 'typescript:build'
+ ]);
+
grunt.registerTask('test', ['default', 'karma:test']);
};
diff --git a/tasks/options/clean.js b/tasks/options/clean.js
index 26bc01bc617..49f09f10e7c 100644
--- a/tasks/options/clean.js
+++ b/tasks/options/clean.js
@@ -1,6 +1,9 @@
module.exports = function(config) {
+ 'use strict';
+
return {
- on_start: ['<%= destDir %>', '<%= tempDir %>'],
+ release: ['<%= destDir %>', '<%= tempDir %>', '<%= genDir %>'],
+ gen: ['<%= genDir %>'],
temp: ['<%= tempDir %>']
};
};
diff --git a/tasks/options/concat.js b/tasks/options/concat.js
index c325afd7f51..648d94fdbcc 100644
--- a/tasks/options/concat.js
+++ b/tasks/options/concat.js
@@ -4,25 +4,25 @@ module.exports = function(config) {
return {
cssDark: {
src: [
- '<%= srcDir %>/vendor/css/normalize.min.css',
- '<%= srcDir %>/vendor/css/timepicker.css',
- '<%= srcDir %>/vendor/css/spectrum.css',
- '<%= srcDir %>/css/bootstrap.dark.min.css',
- '<%= srcDir %>/css/bootstrap-responsive.min.css',
- '<%= srcDir %>/vendor/css/font-awesome.min.css'
+ '<%= genDir %>/vendor/css/normalize.min.css',
+ '<%= genDir %>/vendor/css/timepicker.css',
+ '<%= genDir %>/vendor/css/spectrum.css',
+ '<%= genDir %>/css/bootstrap.dark.min.css',
+ '<%= genDir %>/css/bootstrap-responsive.min.css',
+ '<%= genDir %>/vendor/css/font-awesome.min.css'
],
- dest: '<%= srcDir %>/css/grafana.dark.min.css'
+ dest: '<%= genDir %>/css/grafana.dark.min.css'
},
cssLight: {
src: [
- '<%= srcDir %>/vendor/css/normalize.min.css',
- '<%= srcDir %>/vendor/css/timepicker.css',
- '<%= srcDir %>/vendor/css/spectrum.css',
- '<%= srcDir %>/css/bootstrap.light.min.css',
- '<%= srcDir %>/css/bootstrap-responsive.min.css',
- '<%= srcDir %>/vendor/css/font-awesome.min.css'
+ '<%= genDir %>/vendor/css/normalize.min.css',
+ '<%= genDir %>/vendor/css/timepicker.css',
+ '<%= genDir %>/vendor/css/spectrum.css',
+ '<%= genDir %>/css/bootstrap.light.min.css',
+ '<%= genDir %>/css/bootstrap-responsive.min.css',
+ '<%= genDir %>/vendor/css/font-awesome.min.css'
],
- dest: '<%= srcDir %>/css/grafana.light.min.css'
+ dest: '<%= genDir %>/css/grafana.light.min.css'
},
js: {
diff --git a/tasks/options/copy.js b/tasks/options/copy.js
index 9bd4ad9571f..781042f9921 100644
--- a/tasks/options/copy.js
+++ b/tasks/options/copy.js
@@ -8,11 +8,11 @@ module.exports = function(config) {
dest: '<%= tempDir %>'
},
- app_gen_build: {
- cwd: '<%= srcDir %>/app',
+ everything_but_less: {
+ cwd: '<%= srcDir %>',
expand: true,
- src: ['**/*.js', '**/*.html'],
- dest: '<%= srcDir %>/.app_gen'
+ src: ['**/*', '!**/*.less'],
+ dest: '<%= genDir %>'
}
};
diff --git a/tasks/options/less.js b/tasks/options/less.js
index 4d9fe764e03..b0a893e9a37 100644
--- a/tasks/options/less.js
+++ b/tasks/options/less.js
@@ -1,25 +1,16 @@
module.exports = function(config) {
+
return {
- // this is the only task, other than copy, that runs on the src directory, since we don't really need
- // the less files in the dist. Everything else runs from on temp, and require copys everything
- // from temp -> dist
- dist:{
- expand: true,
- cwd:'<%= srcDir %>/vendor/bootstrap/less/',
- src: ['bootstrap.dark.less', 'bootstrap.light.less'],
- dest: '<%= tempDir %>/css/',
- },
- // Compile in place when not building
src:{
options: {
- paths: ["<%= srcDir %>/vendor/bootstrap/less", "<%= srcDir %>/css/less"],
- yuicompress:true
+ paths: ["<%= srcDir %>/vendor/bootstrap/less", "<%= srcDir %>/less"],
+ yuicompress: true
},
files: {
- "<%= srcDir %>/css/bootstrap.dark.min.css": "<%= srcDir %>/css/less/bootstrap.dark.less",
- "<%= srcDir %>/css/bootstrap.light.min.css": "<%= srcDir %>/css/less/bootstrap.light.less",
- "<%= srcDir %>/css/bootstrap-responsive.min.css": "<%= srcDir %>/css/less/grafana-responsive.less"
+ "<%= genDir %>/css/bootstrap.dark.min.css": "<%= srcDir %>/less/bootstrap.dark.less",
+ "<%= genDir %>/css/bootstrap.light.min.css": "<%= srcDir %>/less/bootstrap.light.less",
+ "<%= genDir %>/css/bootstrap-responsive.min.css": "<%= srcDir %>/less/grafana-responsive.less"
}
}
};
-};
\ No newline at end of file
+};
diff --git a/tasks/options/requirejs.js b/tasks/options/requirejs.js
index 41061158c66..21b22d51c26 100644
--- a/tasks/options/requirejs.js
+++ b/tasks/options/requirejs.js
@@ -7,7 +7,7 @@ module.exports = function(config,grunt) {
appDir: '<%= tempDir %>',
dir: '<%= destDir %>',
mainConfigFile: '<%= tempDir %>/app/components/require.config.js',
- baseUrl: './app',
+ baseUrl: 'app_gen',
waitSeconds: 0,
modules: [], // populated below,
@@ -37,9 +37,9 @@ module.exports = function(config,grunt) {
// setup the modules require will build
var requireModules = options.modules = [
- {
- // main/common module
- name: 'app',
+ {
+ // main/common module
+ name: 'app',
include: [
'kbn',
'text',
@@ -66,7 +66,11 @@ module.exports = function(config,grunt) {
'plugins/datasource/graphite/datasource',
'plugins/datasource/influxdb_08/datasource',
]
- }
+ },
+ // {
+ // name: 'features/org/all',
+ // exclude: ['app'],
+ // }
];
var fs = require('fs');
diff --git a/tasks/options/typescript.js b/tasks/options/typescript.js
index 87c1cab5573..8b60604c6a0 100644
--- a/tasks/options/typescript.js
+++ b/tasks/options/typescript.js
@@ -4,7 +4,7 @@ module.exports = function() {
return {
build: {
src: ['public/app/**/*.ts'],
- dest: 'public/.app_gen',
+ dest: 'public_gen/app',
options: {
module: 'amd', //or commonjs
target: 'es5', //or es3
@@ -14,9 +14,20 @@ module.exports = function() {
generateTsConfig: true,
}
},
+
+ // build2: {
+ // src: ['public/app/alerting#<{(||)}>#*.ts'],
+ // dest: 'public/.app_gen/alerting/all.js',
+ // options: {
+ // target: 'es5', //or es3
+ // declaration: true,
+ // sourceMap: true,
+ // }
+ // },
+
watch: {
src: ['public/app/**/*.ts'],
- dest: 'public/.app_gen',
+ dest: 'public/app_gen',
options: {
module: 'amd', //or commonjs
target: 'es5', //or es3
diff --git a/tasks/options/watch.js b/tasks/options/watch.js
index 692ec08e179..21d3c6ad340 100644
--- a/tasks/options/watch.js
+++ b/tasks/options/watch.js
@@ -1,16 +1,16 @@
module.exports = function(config) {
return {
css: {
- files: [ '<%= srcDir %>/css/**/*.less' ],
+ files: [ '<%= srcDir %>/less/**/*.less' ],
tasks: ['css'],
options: {
spawn: false
}
},
- app_gen: {
- files: ['<%= srcDir %>/app/**/*.js', '<%= srcDir %>/app/**/*.html'],
- tasks: ['copy:app_gen_build'],
+ copy_to_gen: {
+ files: ['<%= srcDir %>/**/*', '!<%= srcDir %>/**/*.less'],
+ tasks: ['copy:everything_but_less'],
options: {
spawn: false
}
diff --git a/tsconfig.json b/tsconfig.json
index e8b34801c24..dfc160e0e64 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,7 +2,7 @@
"compilerOptions": {
"sourceMap": true,
"declaration": true,
- "outDir": "public/.app_gen",
+ "outDir": "public_gen/app",
"target": "ES5",
"rootDir": "public/app",
"module": "amd",
@@ -12,6 +12,10 @@
"public/app/components/panelmeta.ts",
"public/app/controllers/fileSearcher.ts",
"public/app/controllers/testCtrl.ts",
+ "public/app/core/core.ts",
+ "public/app/core/directives/cool_dir.ts",
+ "public/app/core/routes/module_loader.ts",
+ "public/app/core/time_series.ts",
"public/app/headers/require.d.ts"
]
}
\ No newline at end of file