diff options
Diffstat (limited to 'plugins/CoreHome/angularjs/common/services/reporting-pages-model.js')
-rw-r--r-- | plugins/CoreHome/angularjs/common/services/reporting-pages-model.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/plugins/CoreHome/angularjs/common/services/reporting-pages-model.js b/plugins/CoreHome/angularjs/common/services/reporting-pages-model.js new file mode 100644 index 0000000000..1b1e406c95 --- /dev/null +++ b/plugins/CoreHome/angularjs/common/services/reporting-pages-model.js @@ -0,0 +1,58 @@ +/*! + * 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.service').factory('reportingPagesModel', reportingPagesModelService); + + reportingPagesModelService.$inject = ['piwikApi']; + + function reportingPagesModelService (piwikApi) { + var fetchAllPagesPromise = false; + + // those sites are going to be displayed + var model = { + pages : [], + findPage: findPage, + reloadAllPages : reloadAllPages, + getAllPages : getAllPages + }; + + return model; + + function findPage(categoryId, subcategoryId) + { + var found = null; + + angular.forEach(model.pages, function (page) { + if (page && + page.category && page.subcategory && + page.category.id === categoryId && ('' + page.subcategory.id) === subcategoryId) { + found = page; + } + }); + + return found; + } + + function reloadAllPages() + { + fetchAllPagesPromise = null; + return getAllPages(); + } + + function getAllPages() + { + if (!fetchAllPagesPromise) { + fetchAllPagesPromise = piwikApi.fetch({method: 'API.getReportPagesMetadata'}).then(function (response) { + model.pages = response; + return response; + }); + } + + return fetchAllPagesPromise; + } + } +})();
\ No newline at end of file |