59 lines
2.0 KiB
JavaScript
59 lines
2.0 KiB
JavaScript
/*!
|
|
* Piwik - free/libre analytics platform
|
|
*
|
|
* @link http://piwik.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
(function () {
|
|
angular.module('piwikApp').factory('manageCustomVarsModel', manageCustomVarsModel);
|
|
|
|
manageCustomVarsModel.$inject = ['piwikApi'];
|
|
|
|
function manageCustomVarsModel(piwikApi) {
|
|
|
|
var model = {
|
|
customVariables : [],
|
|
extractions : [],
|
|
isLoading: false,
|
|
fetchUsages: fetchUsages,
|
|
hasCustomVariablesInGeneral: false,
|
|
hasAtLeastOneUsage: false,
|
|
numSlotsAvailable: 5,
|
|
};
|
|
|
|
return model;
|
|
|
|
function fetchCustomVariables() {
|
|
return piwikApi.fetch({method: 'CustomVariables.getCustomVariables', period: 'year', date: 'today', filter_limit: 1})
|
|
.then(function (customVariables) {
|
|
model.hasCustomVariablesInGeneral = (customVariables && customVariables.length > 0);
|
|
});
|
|
}
|
|
|
|
function fetchUsages() {
|
|
|
|
model.isLoading = true;
|
|
|
|
fetchCustomVariables().then(function () {
|
|
return piwikApi.fetch({method: 'CustomVariables.getUsagesOfSlots', filter_limit: '-1'});
|
|
|
|
}).then(function (customVariables) {
|
|
model.customVariables = customVariables;
|
|
|
|
angular.forEach(customVariables, function (customVar) {
|
|
if (customVar.index > model.numSlotsAvailable) {
|
|
model.numSlotsAvailable = customVar.index;
|
|
}
|
|
|
|
if (customVar.usages && customVar.usages.length > 0) {
|
|
model.hasAtLeastOneUsage = true;
|
|
}
|
|
});
|
|
|
|
})['finally'](function () { // .finally() is not IE8 compatible see https://github.com/angular/angular.js/commit/f078762d48d0d5d9796dcdf2cb0241198677582c
|
|
model.isLoading = false;
|
|
});
|
|
}
|
|
|
|
}
|
|
})(); |