forked from rebillar/site-accueil-insa
78 lines
No EOL
2.4 KiB
JavaScript
78 lines
No EOL
2.4 KiB
JavaScript
/*!
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
(function () {
|
|
angular.module('piwikApp').factory('segmentGeneratorModel', segmentGeneratorModel);
|
|
|
|
segmentGeneratorModel.$inject = ['piwikApi', 'piwik'];
|
|
|
|
function segmentGeneratorModel(piwikApi, piwik) {
|
|
|
|
var initialSegments = null;
|
|
var limitPromise = null;
|
|
var fetchedSiteId = null;
|
|
|
|
var model = {
|
|
isLoading: false,
|
|
segments : [],
|
|
loadSegments: loadSegments
|
|
};
|
|
|
|
return model;
|
|
|
|
function loadSegments(siteId, visitSegmentsOnly) {
|
|
if (model.isLoading) {
|
|
if (limitPromise) {
|
|
limitPromise.abort();
|
|
limitPromise = null;
|
|
}
|
|
}
|
|
|
|
model.isLoading = true;
|
|
|
|
// we need to clear last limit result because we now fetch different data
|
|
if (fetchedSiteId != siteId) {
|
|
limitPromise = null;
|
|
fetchedSiteId = siteId;
|
|
}
|
|
|
|
if (!limitPromise) {
|
|
var params = {method: 'API.getSegmentsMetadata',filter_limit: '-1', '_hideImplementationData': 0};
|
|
|
|
if (siteId === 'all' || !siteId) {
|
|
params.idSites = 'all';
|
|
params.idSite = 'all';
|
|
} else if (siteId) {
|
|
params.idSites = siteId;
|
|
params.idSite = siteId;
|
|
}
|
|
|
|
limitPromise = piwikApi.fetch(params);
|
|
}
|
|
|
|
return limitPromise.then(function (response) {
|
|
model.isLoading = false;
|
|
|
|
if (angular.isDefined(response)) {
|
|
if (visitSegmentsOnly) {
|
|
model.segments = [];
|
|
angular.forEach(response, function (segment) {
|
|
if (segment.sqlSegment && segment.sqlSegment.match(/log_visit\./)) {
|
|
model.segments.push(segment);
|
|
}
|
|
});
|
|
} else {
|
|
model.segments = response;
|
|
}
|
|
}
|
|
|
|
return model.segments;
|
|
}).finally(function () {
|
|
model.isLoading = false;
|
|
});
|
|
}
|
|
}
|
|
})(); |