2023-01-23 11:03:31 +01:00

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;
});
}
}
})();