diff options
Diffstat (limited to 'plugins/CoreHome/angularjs/common/services/report-metadata-model.js')
-rw-r--r-- | plugins/CoreHome/angularjs/common/services/report-metadata-model.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/plugins/CoreHome/angularjs/common/services/report-metadata-model.js b/plugins/CoreHome/angularjs/common/services/report-metadata-model.js new file mode 100644 index 0000000000..f158861423 --- /dev/null +++ b/plugins/CoreHome/angularjs/common/services/report-metadata-model.js @@ -0,0 +1,52 @@ +/*! + * 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('reportMetadataModel', reportMetadataModel); + + reportMetadataModel.$inject = ['piwik', 'piwikApi']; + + function reportMetadataModel (piwik, piwikApi) { + + var reportsPromise = null; + + var model = { + reports: [], + fetchReportMetadata: fetchReportMetadata, + findReport: findReport + }; + + return model; + + function findReport(module, action) + { + var found = []; + + angular.forEach(model.reports, function (report) { + if (report.module === module && report.action === action) { + found = report; + } + }); + + return found; + } + + function fetchReportMetadata() + { + if (!reportsPromise) { + reportsPromise = piwikApi.fetch({ + method: 'API.getReportMetadata', + idSites: piwik.idSite || piwik.broadcast.getValueFromUrl('idSite'), + }).then(function (response) { + model.reports = response; + return response; + }); + } + + return reportsPromise; + } + } +})();
\ No newline at end of file |