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"
|
// Custom registration function for extensions of category "route"
|
||||||
function registerRoute(extension) {
|
function registerRoute(extension) {
|
||||||
var route = Object.create(extension);
|
var route = Object.create(extension);
|
||||||
@ -107,7 +122,7 @@ define(
|
|||||||
// Utility; create a function which converts another function
|
// Utility; create a function which converts another function
|
||||||
// (which acts on single objects) to one which acts upon arrays.
|
// (which acts on single objects) to one which acts upon arrays.
|
||||||
function mapUpon(func) {
|
function mapUpon(func) {
|
||||||
return function(array) {
|
return function (array) {
|
||||||
return array.map(func);
|
return array.map(func);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -121,6 +136,7 @@ define(
|
|||||||
directives: mapUpon(new CustomRegistrar("directive")),
|
directives: mapUpon(new CustomRegistrar("directive")),
|
||||||
controllers: mapUpon(new CustomRegistrar("controller")),
|
controllers: mapUpon(new CustomRegistrar("controller")),
|
||||||
services: mapUpon(new CustomRegistrar("service")),
|
services: mapUpon(new CustomRegistrar("service")),
|
||||||
|
runs: mapUpon(registerRun),
|
||||||
components: registerComponents
|
components: registerComponents
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -135,6 +135,14 @@ define(
|
|||||||
expect(customRegistrars.components).toBeTruthy();
|
expect(customRegistrars.components).toBeTruthy();
|
||||||
customRegistrars.components([]);
|
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