tmp
parent
b5fbaa402d
commit
3b0db5e951
|
@ -1,4 +1,6 @@
|
||||||
Resource = (urlsService, http) ->
|
pagination = () ->
|
||||||
|
|
||||||
|
Resource = (urlsService, http, paginateResponseService) ->
|
||||||
service = {}
|
service = {}
|
||||||
|
|
||||||
service.getProjectBySlug = (projectSlug) ->
|
service.getProjectBySlug = (projectSlug) ->
|
||||||
|
@ -40,12 +42,14 @@ Resource = (urlsService, http) ->
|
||||||
url = "#{url}/#{projectId}"
|
url = "#{url}/#{projectId}"
|
||||||
|
|
||||||
return http.get(url, params).then (result) ->
|
return http.get(url, params).then (result) ->
|
||||||
return Immutable.fromJS(result.data)
|
result = Immutable.fromJS(result)
|
||||||
|
|
||||||
|
return paginateResponseService(result)
|
||||||
|
|
||||||
return () ->
|
return () ->
|
||||||
return {"projects": service}
|
return {"projects": service}
|
||||||
|
|
||||||
Resource.$inject = ["$tgUrls", "$tgHttp"]
|
Resource.$inject = ["$tgUrls", "$tgHttp", "tgPaginateResponseService"]
|
||||||
|
|
||||||
module = angular.module("taigaResources2")
|
module = angular.module("taigaResources2")
|
||||||
module.factory("tgProjectsResources", Resource)
|
module.factory("tgProjectsResources", Resource)
|
||||||
|
|
|
@ -28,43 +28,63 @@ class UserTimelineController extends mixOf(taiga.Controller, taiga.PageMixin, ta
|
||||||
"tgUserTimelineService"
|
"tgUserTimelineService"
|
||||||
]
|
]
|
||||||
|
|
||||||
min: 20
|
|
||||||
constructor: (@userTimelineService) ->
|
constructor: (@userTimelineService) ->
|
||||||
@.timelineList = Immutable.List()
|
@.timelineList = Immutable.List()
|
||||||
@.page = 1
|
|
||||||
@.scrollDisabled = false
|
@.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: () ->
|
loadTimeline: () ->
|
||||||
@.scrollDisabled = true
|
@.scrollDisabled = true
|
||||||
|
|
||||||
promise = null
|
return @.timeline
|
||||||
|
.next()
|
||||||
|
.then (result) =>
|
||||||
|
@.timelineList = @.timelineList.concat(result)
|
||||||
|
|
||||||
if @.projectId
|
if result.size
|
||||||
promise = @userTimelineService
|
@.scrollDisabled = false
|
||||||
.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()
|
|
||||||
|
|
||||||
return @.timelineList
|
return @.timelineList
|
||||||
|
|
||||||
return promise
|
# loadTimeline: () ->
|
||||||
|
# @.scrollDisabled = true
|
||||||
|
|
||||||
_timelineLoaded: (newTimelineList) ->
|
# promise = null
|
||||||
@.timelineList = @.timelineList.concat(newTimelineList)
|
|
||||||
@.page++
|
|
||||||
|
|
||||||
if newTimelineList.size
|
# if @.projectId
|
||||||
@.scrollDisabled = false
|
# 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")
|
angular.module("taigaUserTimeline")
|
||||||
.controller("UserTimeline", UserTimelineController)
|
.controller("UserTimeline", UserTimelineController)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
taiga = @.taiga
|
taiga = @.taiga
|
||||||
|
|
||||||
class UserTimelineService extends taiga.Service
|
class UserTimelineService extends taiga.Service
|
||||||
@.$inject = ["tgResources"]
|
@.$inject = ["tgResources", "tgPaginationSequenceService"]
|
||||||
|
|
||||||
constructor: (@rs) ->
|
constructor: (@rs, @paginationSequenceService) ->
|
||||||
|
|
||||||
_invalid: [
|
_invalid: [
|
||||||
{# Items with only invalid fields
|
{# Items with only invalid fields
|
||||||
|
@ -82,10 +82,68 @@ class UserTimelineService extends taiga.Service
|
||||||
return result.filterNot (timeline) =>
|
return result.filterNot (timeline) =>
|
||||||
return @._isInValidTimeline(timeline)
|
return @._isInValidTimeline(timeline)
|
||||||
|
|
||||||
getProjectTimeline: (projectId, page) ->
|
getProjectTimeline: (projectId) ->
|
||||||
|
config = {}
|
||||||
|
|
||||||
|
config.fetch = (page) =>
|
||||||
return @rs.projects.getTimeline(projectId, page)
|
return @rs.projects.getTimeline(projectId, page)
|
||||||
.then (result) =>
|
|
||||||
return result.filterNot (timeline) =>
|
config.filter = (result) =>
|
||||||
return @._isInValidTimeline(timeline)
|
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)
|
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