[API] Add a top-level main.js

...which can depend upon the bundle registry, as well
as a set of installed bundles.

https://github.com/nasa/openmctweb/issues/450
This commit is contained in:
Victor Woeltjen 2016-01-06 10:59:21 -08:00
parent fdc875379f
commit 9f66f39d8d
4 changed files with 99 additions and 20 deletions

View File

@ -27,7 +27,7 @@
<title></title>
<script type="text/javascript"
src="platform/framework/lib/require.js"
data-main="platform/framework/src/Main.js">
data-main="main.js">
</script>
<link rel="icon" type="image/png" href="platform/commonUI/general/res/images/favicons/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="platform/commonUI/general/res/images/favicons/favicon-96x96.png" sizes="96x96">

48
main.js Normal file
View File

@ -0,0 +1,48 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed 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.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define, window, requirejs*/
requirejs.config({
"paths": {
"bundleRegistry": "./src/bundleRegistry",
"angular": "./platform/framework/lib/angular.min",
"angular-route": "./platform/framework/lib/angular-route.min"
},
"shim": {
"angular": {
"exports": "angular"
},
"angular-route": {
"deps": [ "angular" ]
}
}
});
define([
'./platform/framework/src/Main',
'bundleRegistry',
"angular",
"angular-route"
], function (Main, bundleRegistry, angular) {
'use strict';
new Main(angular).run(bundleRegistry);
});

View File

@ -41,36 +41,41 @@ define(
[
'require',
'../lib/es6-promise-2.0.0.min',
'../lib/angular.min',
'../lib/angular-route.min',
'./FrameworkLayer'
],
function (
require,
es6promise,
angular,
angularRoute,
FrameworkLayer
) {
"use strict";
// Get a reference to Angular's injector, so we can get $http and $log
// services, which are useful to the framework layer.
var injector = angular.injector(['ng']);
// Look up log level from query string
function logLevel() {
var match = /[?&]log=([a-z]+)/.exec(window.location.search);
return match ? match[1] : "";
function Main(angular) {
this.angular = angular;
}
// Polyfill Promise, in case browser does not natively provide Promise
window.Promise = window.Promise || es6promise.Promise;
Main.prototype.run = function () {
// Get a reference to Angular's injector, so we can get $http and $log
// services, which are useful to the framework layer.
var angular = this.angular,
injector = angular.injector(['ng']);
// Reconfigure base url, since bundle paths will all be relative
// to the root now.
requirejs.config({ "baseUrl": "" });
injector.instantiate(['$http', '$log', FrameworkLayer])
.initializeApplication(angular, logLevel());
// Look up log level from query string
function logLevel() {
var match = /[?&]log=([a-z]+)/.exec(window.location.search);
return match ? match[1] : "";
}
// Polyfill Promise, in case browser does not natively provide Promise
window.Promise = window.Promise || es6promise.Promise;
// Reconfigure base url, since bundle paths will all be relative
// to the root now.
requirejs.config({"baseUrl": ""});
injector.instantiate(['$http', '$log', FrameworkLayer])
.initializeApplication(angular, logLevel());
};
return Main;
}
);

26
src/bundleRegistry.js Normal file
View File

@ -0,0 +1,26 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed 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.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define, window, requirejs*/
define(function () {
return {};
});