initial import for Open Source 🎉
This commit is contained in:
parent
1898c361f3
commit
9c0dd3b722
2048 changed files with 218743 additions and 0 deletions
48
static/js/services/meta-service.js
Normal file
48
static/js/services/meta-service.js
Normal file
|
@ -0,0 +1,48 @@
|
|||
/**
|
||||
* Service which helps set the contents of the <meta> tags (and the <title> of a page).
|
||||
*/
|
||||
angular.module('quay').factory('MetaService', ['$interpolate', '$timeout', function($interpolate, $timeout) {
|
||||
var metaService = {};
|
||||
|
||||
var interpolate = function(page, expr) {
|
||||
if (!expr) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var inter = $interpolate(expr, true, null, true);
|
||||
if (!inter) {
|
||||
return expr.toString();
|
||||
}
|
||||
|
||||
return inter(page.scope);
|
||||
};
|
||||
|
||||
var interpolationPromise = function(page, fieldGetter) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
if (!page || !page.$$route) {
|
||||
resolve(null);
|
||||
return;
|
||||
}
|
||||
|
||||
if (page.scope) {
|
||||
resolve(interpolate(page, fieldGetter()));
|
||||
return;
|
||||
}
|
||||
|
||||
// Timeout needed because page.scope is initially undefined.
|
||||
$timeout(function() {
|
||||
resolve(interpolationPromise(page, fieldGetter));
|
||||
}, 10);
|
||||
});
|
||||
};
|
||||
|
||||
metaService.getTitle = function(page) {
|
||||
return interpolationPromise(page, () => page.$$route.title);
|
||||
};
|
||||
|
||||
metaService.getDescription = function(page) {
|
||||
return interpolationPromise(page, () => page.$$route.description);
|
||||
};
|
||||
|
||||
return metaService;
|
||||
}]);
|
Reference in a new issue