rosa-build/app/assets/javascripts/angularjs/services/activity_service.js

85 lines
2.2 KiB
JavaScript

angular.module("RosaABF").factory('ActivityService', ["$http", "$filter", function($http, $filter) {
var ActivityService = {};
var feed;
var next_page_link = null;
var last_date;
var last_is_own = false;
var processFeed = function(feed) {
var res = [];
_.each(feed, function(item) {
var cur_date = $filter('amDateFormat')(item.date, 'll')
if(cur_date != last_date) {
res.push({kind: 'new_day', date: cur_date, class: 'timeline-day'});
last_date = cur_date;
}
res.push(item);
});
return res;
}
ActivityService.getFeed = function(options) {
if(Object.prototype.toString.apply(options) != '[object Object]') {
options = {is_own: last_is_own, load_next_page: false};
}
var url;
if(!options['load_next_page']) {
last_date = null;
feed = {};
params = {format: 'json'};
if(options['owner_uname']) {
params['owner_filter'] = options['owner_uname'];
}
if(options['project_name']) {
params['project_name_filter'] = options['project_name'];
}
last_is_own = options['is_own'];
url = options['is_own'] ? Routes.own_activity_path(params) : Routes.activity_feeds_path(params);
}
else {
if(!next_page_link) {
return false;
}
url = next_page_link;
}
return $http.get(url).then(function(res) {
next_page_link = res.data.next_page_link;
var new_feed = processFeed(res.data.feed);
var ret;
if(options['load_next_page']) {
ret = feed;
ret.push.apply(ret, new_feed);
}
else {
feed = ret = new_feed;
}
return {feed: ret, next_link_present: !!next_page_link};
});
}
ActivityService.getOwnersList = function(val) {
var path = Routes.get_owners_list_path({term: val});
return $http.get(path).then(function(res) {
return res.data;
});
}
ActivityService.getProjectNamesList = function(owner_uname, val) {
var path = Routes.get_project_names_list_path({owner_uname: owner_uname, term: val});
return $http.get(path).then(function(res) {
return res.data;
});
}
return ActivityService;
}]);