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