tmp
parent
b5fbaa402d
commit
3b0db5e951
|
@ -1,4 +1,6 @@
|
|||
Resource = (urlsService, http) ->
|
||||
pagination = () ->
|
||||
|
||||
Resource = (urlsService, http, paginateResponseService) ->
|
||||
service = {}
|
||||
|
||||
service.getProjectBySlug = (projectSlug) ->
|
||||
|
@ -40,12 +42,14 @@ Resource = (urlsService, http) ->
|
|||
url = "#{url}/#{projectId}"
|
||||
|
||||
return http.get(url, params).then (result) ->
|
||||
return Immutable.fromJS(result.data)
|
||||
result = Immutable.fromJS(result)
|
||||
|
||||
return paginateResponseService(result)
|
||||
|
||||
return () ->
|
||||
return {"projects": service}
|
||||
|
||||
Resource.$inject = ["$tgUrls", "$tgHttp"]
|
||||
Resource.$inject = ["$tgUrls", "$tgHttp", "tgPaginateResponseService"]
|
||||
|
||||
module = angular.module("taigaResources2")
|
||||
module.factory("tgProjectsResources", Resource)
|
||||
|
|
|
@ -28,43 +28,63 @@ class UserTimelineController extends mixOf(taiga.Controller, taiga.PageMixin, ta
|
|||
"tgUserTimelineService"
|
||||
]
|
||||
|
||||
min: 20
|
||||
constructor: (@userTimelineService) ->
|
||||
@.timelineList = Immutable.List()
|
||||
@.page = 1
|
||||
@.scrollDisabled = false
|
||||
|
||||
@.timeline = null
|
||||
|
||||
if @.projectId
|
||||
@.timeline = @userTimelineService.getProjectTimeline(@.projectId)
|
||||
else if @.currentUser
|
||||
@.timeline = @userTimelineService.getProfileTimeline(@.user.get("id"))
|
||||
else
|
||||
@.timeline = @userTimelineService.getUserTimeline(@.user.get("id"))
|
||||
|
||||
loadTimeline: () ->
|
||||
@.scrollDisabled = true
|
||||
|
||||
promise = null
|
||||
return @.timeline
|
||||
.next()
|
||||
.then (result) =>
|
||||
@.timelineList = @.timelineList.concat(result)
|
||||
|
||||
if @.projectId
|
||||
promise = @userTimelineService
|
||||
.getProjectTimeline(@.projectId, @.page)
|
||||
else if @.currentUser
|
||||
promise = @userTimelineService
|
||||
.getProfileTimeline(@.user.get("id"), @.page)
|
||||
else
|
||||
promise = @userTimelineService
|
||||
.getUserTimeline(@.user.get("id"), @.page)
|
||||
|
||||
promise.then (list) =>
|
||||
@._timelineLoaded(list)
|
||||
|
||||
if !@.scrollDisabled && @.timelineList.size < @.min
|
||||
return @.loadTimeline()
|
||||
if result.size
|
||||
@.scrollDisabled = false
|
||||
|
||||
return @.timelineList
|
||||
|
||||
return promise
|
||||
# loadTimeline: () ->
|
||||
# @.scrollDisabled = true
|
||||
|
||||
_timelineLoaded: (newTimelineList) ->
|
||||
@.timelineList = @.timelineList.concat(newTimelineList)
|
||||
@.page++
|
||||
# promise = null
|
||||
|
||||
if newTimelineList.size
|
||||
@.scrollDisabled = false
|
||||
# if @.projectId
|
||||
# promise = @userTimelineService
|
||||
# .getProjectTimeline(@.projectId, @.page)
|
||||
# else if @.currentUser
|
||||
# promise = @userTimelineService
|
||||
# .getProfileTimeline(@.user.get("id"), @.page)
|
||||
# else
|
||||
# promise = @userTimelineService
|
||||
# .getUserTimeline(@.user.get("id"), @.page)
|
||||
|
||||
# promise.then (result) =>
|
||||
# @._timelineLoaded(result)
|
||||
|
||||
# if !@.scrollDisabled && @.timelineList.size < @.min
|
||||
# return @.loadTimeline()
|
||||
|
||||
# return @.timelineList
|
||||
|
||||
# return promise
|
||||
|
||||
# _timelineLoaded: (result) ->
|
||||
# @.timelineList = @.timelineList.concat(result.get("data"))
|
||||
# @.page++
|
||||
|
||||
# if result.get("next")
|
||||
# @.scrollDisabled = false
|
||||
|
||||
angular.module("taigaUserTimeline")
|
||||
.controller("UserTimeline", UserTimelineController)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
taiga = @.taiga
|
||||
|
||||
class UserTimelineService extends taiga.Service
|
||||
@.$inject = ["tgResources"]
|
||||
@.$inject = ["tgResources", "tgPaginationSequenceService"]
|
||||
|
||||
constructor: (@rs) ->
|
||||
constructor: (@rs, @paginationSequenceService) ->
|
||||
|
||||
_invalid: [
|
||||
{# Items with only invalid fields
|
||||
|
@ -82,10 +82,68 @@ class UserTimelineService extends taiga.Service
|
|||
return result.filterNot (timeline) =>
|
||||
return @._isInValidTimeline(timeline)
|
||||
|
||||
getProjectTimeline: (projectId, page) ->
|
||||
getProjectTimeline: (projectId) ->
|
||||
config = {}
|
||||
|
||||
config.fetch = (page) =>
|
||||
return @rs.projects.getTimeline(projectId, page)
|
||||
.then (result) =>
|
||||
return result.filterNot (timeline) =>
|
||||
return @._isInValidTimeline(timeline)
|
||||
|
||||
config.filter = (result) =>
|
||||
return result.filterNot (item) => @._isInValidTimeline(item)
|
||||
|
||||
config.items = 20
|
||||
|
||||
return @paginationSequenceService(config)
|
||||
|
||||
# return @rs.projects.getTimeline(projectId, page)
|
||||
# .then (result) =>
|
||||
# timeline = Immutable.Map()
|
||||
|
||||
# data = result.get("data").filterNot (item) =>
|
||||
# return @._isInValidTimeline(item)
|
||||
|
||||
# timeline = timeline.set("data", data)
|
||||
# timeline = timeline.set("next", !!result.get("headers")("x-pagination-next"))
|
||||
|
||||
# return timeline
|
||||
|
||||
angular.module("taigaUserTimeline").service("tgUserTimelineService", UserTimelineService)
|
||||
|
||||
PaginationSequence = () ->
|
||||
return (config) ->
|
||||
page = 1
|
||||
|
||||
obj = {}
|
||||
|
||||
obj.next = () ->
|
||||
config.fetch(page).then (response) ->
|
||||
page++
|
||||
|
||||
data = response.get("data")
|
||||
|
||||
if config.filter
|
||||
data = config.filter(response.get("data"))
|
||||
|
||||
if data.size < config.items && response.get("next")
|
||||
return obj.next()
|
||||
|
||||
return data
|
||||
|
||||
return obj
|
||||
|
||||
angular.module("taigaCommon").factory("tgPaginationSequenceService", PaginationSequence)
|
||||
|
||||
|
||||
PaginateResponse = () ->
|
||||
return (result) ->
|
||||
paginateResponse = Immutable.Map()
|
||||
|
||||
paginateResponse = paginateResponse.set("data", result.get("data"))
|
||||
paginateResponse = paginateResponse.set("next", !!result.get("headers")("x-pagination-next"))
|
||||
paginateResponse = paginateResponse.set("prev", !!result.get("headers")("x-pagination-prev"))
|
||||
paginateResponse = paginateResponse.set("current", result.get("headers")("x-pagination-current"))
|
||||
paginateResponse = paginateResponse.set("count", result.get("headers")("x-pagination-count"))
|
||||
|
||||
return paginateResponse
|
||||
|
||||
angular.module("taigaCommon").factory("tgPaginateResponseService", PaginateResponse)
|
||||
|
|
Loading…
Reference in New Issue