From 83ce40191c316c3c69317d2c79c38147c6a99023 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 17 Dec 2015 14:27:34 +0100 Subject: [PATCH] tech(systemjs): ok, moving forward --- public/app/app.ts | 107 +----------------- public/app/core/core.ts | 6 - .../dashboard/timepicker/timepicker.ts | 4 +- public/app/grafana_app.ts | 94 +++++++++++++++ public/views/index.html | 2 - tsconfig.json | 49 +++++--- 6 files changed, 134 insertions(+), 128 deletions(-) create mode 100644 public/app/grafana_app.ts diff --git a/public/app/app.ts b/public/app/app.ts index 1b475654786..60943992e3a 100644 --- a/public/app/app.ts +++ b/public/app/app.ts @@ -1,107 +1,4 @@ -/// -import 'bootstrap'; -import 'lodash-src'; -import 'angular-strap'; -import 'angular-route'; -import 'angular-sanitize'; -import 'angular-dragdrop'; -import 'angular-bindonce'; -import 'angular-ui'; -import 'app/core/core'; +import {GrafanaApp} from 'app/grafana_app'; -import _ = require('lodash'); -import $ = require('jquery'); -import bootstrap = require('bootstrap'); -import kbn = require('app/core/utils/kbn'); -import angular = require('angular'); -import config = require('app/core/config'); - -import mod from 'app/core/core_module'; -console.log(mod); - -class GrafanaApp { - registerFunctions: any; - ngModuleDependencies: any[]; - preBootModules: any[]; - - useModule(module) { - if (this.preBootModules) { - this.preBootModules.push(module); - } else { - _.extend(module, this.registerFunctions); - } - this.ngModuleDependencies.push(module.name); - return module; - } - - init() { - this.registerFunctions = {}; - this.preBootModules = []; - - var app = angular.module('grafana', []); - app.constant('grafanaVersion', "@grafanaVersion@"); - - app.config(($locationProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) => { - console.log('app config'); - this.registerFunctions.controller = $controllerProvider.register; - this.registerFunctions.directive = $compileProvider.directive; - this.registerFunctions.factory = $provide.factory; - this.registerFunctions.service = $provide.service; - this.registerFunctions.filter = $filterProvider.register; - }); - - this.ngModuleDependencies = [ - 'grafana.core', - 'ngRoute', - 'ngSanitize', - '$strap.directives', - 'ang-drag-drop', - 'grafana', - 'pasvaz.bindonce', - 'ui.bootstrap.tabs', - ]; - - var module_types = ['controllers', 'directives', 'factories', 'services', 'filters', 'routes']; - - _.each(module_types, type => { - var moduleName = 'grafana.' + type; - this.useModule(angular.module(moduleName, [])); - }); - - //var preBootRequires = [System.import('app/features/all')]; - var preBootRequires = []; - var pluginModules = config.bootData.pluginModules || []; - - // add plugin modules - for (var i = 0; i < pluginModules.length; i++) { - preBootRequires.push(System.import(pluginModules[i])); - } - - Promise.all(preBootRequires).then(() => { - // disable tool tip animation - //$.fn.tooltip.defaults.animation = false; - // bootstrap the app - angular.bootstrap(document, this.ngModuleDependencies).invoke(() => { - _.each(this.preBootModules, module => { - _.extend(module, this.registerFunctions); - }); - - this.preBootModules = null; - }); - }).catch(function(err) { - console.log('Application boot failed:', err); - }); - } - } - - var grafanaApp = new GrafanaApp(); - - export default { - init: function() { - grafanaApp.init(); - }, - useModule: function(m) { - grafanaApp.useModule(m); - } - }; +export default new GrafanaApp(); diff --git a/public/app/core/core.ts b/public/app/core/core.ts index 165af2600bc..849438e2344 100644 --- a/public/app/core/core.ts +++ b/public/app/core/core.ts @@ -28,10 +28,4 @@ import * as routes from 'app/core/routes/all'; // export * from './directives/give_focus' // export * from './filters/filters' -import {Component} from 'vendor/npm/angular2/core'; -console.log(Component); - -// console.log(Component); -// // console.log(Component); - export {arrayJoin, controllers, services, routes}; diff --git a/public/app/features/dashboard/timepicker/timepicker.ts b/public/app/features/dashboard/timepicker/timepicker.ts index dab13b74949..bd81f633e96 100644 --- a/public/app/features/dashboard/timepicker/timepicker.ts +++ b/public/app/features/dashboard/timepicker/timepicker.ts @@ -6,8 +6,8 @@ import _ = require('lodash'); import moment = require('moment'); import kbn = require('app/core/utils/kbn'); -import * as dateMath from '../../../core/utils/datemath'; -import * as rangeUtil from '../../../core/utils/rangeutil'; +import * as dateMath from 'app/core/utils/datemath'; +import * as rangeUtil from 'app/core/utils/rangeutil'; declare var inputDate: any; diff --git a/public/app/grafana_app.ts b/public/app/grafana_app.ts new file mode 100644 index 00000000000..096c4aaa5ee --- /dev/null +++ b/public/app/grafana_app.ts @@ -0,0 +1,94 @@ +/// + +import 'bootstrap'; +import 'lodash-src'; +import 'angular-strap'; +import 'angular-route'; +import 'angular-sanitize'; +import 'angular-dragdrop'; +import 'angular-bindonce'; +import 'angular-ui'; +import 'app/core/core'; + +import _ = require('lodash'); +import $ = require('jquery'); +import bootstrap = require('bootstrap'); +import kbn = require('app/core/utils/kbn'); +import angular = require('angular'); +import config = require('app/core/config'); + +export class GrafanaApp { + registerFunctions: any; + ngModuleDependencies: any[]; + preBootModules: any[]; + + useModule(module) { + if (this.preBootModules) { + this.preBootModules.push(module); + } else { + _.extend(module, this.registerFunctions); + } + this.ngModuleDependencies.push(module.name); + return module; + } + + init() { + this.registerFunctions = {}; + this.preBootModules = []; + + var app = angular.module('grafana', []); + app.constant('grafanaVersion', "@grafanaVersion@"); + + app.config(($locationProvider, $controllerProvider, $compileProvider, $filterProvider, $provide) => { + console.log('app config'); + this.registerFunctions.controller = $controllerProvider.register; + this.registerFunctions.directive = $compileProvider.directive; + this.registerFunctions.factory = $provide.factory; + this.registerFunctions.service = $provide.service; + this.registerFunctions.filter = $filterProvider.register; + }); + + this.ngModuleDependencies = [ + 'grafana.core', + 'ngRoute', + 'ngSanitize', + '$strap.directives', + 'ang-drag-drop', + 'grafana', + 'pasvaz.bindonce', + 'ui.bootstrap.tabs', + ]; + + var module_types = ['controllers', 'directives', 'factories', 'services', 'filters', 'routes']; + + _.each(module_types, type => { + var moduleName = 'grafana.' + type; + this.useModule(angular.module(moduleName, [])); + }); + + //var preBootRequires = [System.import('app/features/all')]; + var preBootRequires = []; + var pluginModules = config.bootData.pluginModules || []; + + // add plugin modules + for (var i = 0; i < pluginModules.length; i++) { + preBootRequires.push(System.import(pluginModules[i])); + } + + Promise.all(preBootRequires).then(() => { + // disable tool tip animation + $.fn.tooltip.defaults.animation = false; + // bootstrap the app + angular.bootstrap(document, this.ngModuleDependencies).invoke(() => { + _.each(this.preBootModules, module => { + _.extend(module, this.registerFunctions); + }); + + this.preBootModules = null; + }); + }).catch(function(err) { + console.log('Application boot failed:', err); + }); + } + } + diff --git a/public/views/index.html b/public/views/index.html index 49bfeddd761..cda2abd45ac 100644 --- a/public/views/index.html +++ b/public/views/index.html @@ -60,10 +60,8 @@ - - diff --git a/tsconfig.json b/tsconfig.json index 6a1d6eaf2aa..43a3888f711 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,38 @@ { "compilerOptions": { - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "sourceMap": true, - "declaration": true, - "outDir": "public_gen", - "noImplicitAny": false, - "target": "es5", - "rootDir": "public", - "module": "system", - "noEmitOnError": true, - "moduleResolution": "classic" - } -} + "sourceMap": true, + "declaration": true, + "outDir": "public_gen", + "noImplicitAny": false, + "target": "es5", + "rootDir": "public/", + "module": "system", + "noEmitOnError": true, + "emitDecoratorMetadata": true + }, + "files": [ + "public/app/app.ts", + "public/app/core/controllers/grafana_ctrl.ts", + "public/app/core/controllers/signup_ctrl.ts", + "public/app/core/core.ts", + "public/app/core/core_module.ts", + "public/app/core/directives/array_join.ts", + "public/app/core/directives/give_focus.ts", + "public/app/core/filters/filters.ts", + "public/app/core/routes/bundle_loader.ts", + "public/app/core/table_model.ts", + "public/app/core/time_series.ts", + "public/app/core/utils/datemath.ts", + "public/app/core/utils/flatten.ts", + "public/app/core/utils/rangeutil.ts", + "public/app/features/dashboard/timepicker/timepicker.ts", + "public/app/features/panel/panel_meta.ts", + "public/app/plugins/datasource/influxdb/influx_query.ts", + "public/app/plugins/datasource/influxdb/query_part.ts", + "public/app/plugins/panels/table/controller.ts", + "public/app/plugins/panels/table/editor.ts", + "public/app/plugins/panels/table/module.ts", + "public/app/plugins/panels/table/renderer.ts", + "public/app/plugins/panels/table/transformers.ts" + ] +} \ No newline at end of file