mirror of
https://github.com/nasa/openmct.git
synced 2025-05-02 08:43:17 +00:00
[Framework] Implement runs category-of-extension
Implement 'runs' as a built-in category of extension, to support bundle addition of functions to run when the application first starts. Specifically supports loading of stylesheets, WTD-591.
This commit is contained in:
parent
f70fca081e
commit
04ee5bbbb5
@ -72,6 +72,21 @@ define(
|
||||
|
||||
}
|
||||
|
||||
// Custom registration function for extensions of category "runs"
|
||||
function registerRun(extension) {
|
||||
if (typeof extension === 'function') {
|
||||
// Prepend dependencies, and schedule to run
|
||||
app.run((extension.depends || []).concat([extension]));
|
||||
} else {
|
||||
// If it's not a function, no implementation was given
|
||||
$log.warn([
|
||||
"Cannot register run extension from ",
|
||||
(extension.bundle || {}).path,
|
||||
"; no implementation."
|
||||
].join(""));
|
||||
}
|
||||
}
|
||||
|
||||
// Custom registration function for extensions of category "route"
|
||||
function registerRoute(extension) {
|
||||
var route = Object.create(extension);
|
||||
@ -107,7 +122,7 @@ define(
|
||||
// Utility; create a function which converts another function
|
||||
// (which acts on single objects) to one which acts upon arrays.
|
||||
function mapUpon(func) {
|
||||
return function(array) {
|
||||
return function (array) {
|
||||
return array.map(func);
|
||||
};
|
||||
}
|
||||
@ -121,6 +136,7 @@ define(
|
||||
directives: mapUpon(new CustomRegistrar("directive")),
|
||||
controllers: mapUpon(new CustomRegistrar("controller")),
|
||||
services: mapUpon(new CustomRegistrar("service")),
|
||||
runs: mapUpon(registerRun),
|
||||
components: registerComponents
|
||||
};
|
||||
}
|
||||
|
@ -135,6 +135,14 @@ define(
|
||||
expect(customRegistrars.components).toBeTruthy();
|
||||
customRegistrars.components([]);
|
||||
});
|
||||
|
||||
it("warns if no implementation is provided for runs", function () {
|
||||
// Verify precondition
|
||||
expect(mockLog.warn).not.toHaveBeenCalled();
|
||||
customRegistrars.runs([{ something: "that is not a function"}]);
|
||||
expect(mockLog.warn).toHaveBeenCalledWith(jasmine.any(String));
|
||||
expect(mockApp.run).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
}
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user