disable infinite scroll when the timeline doesn't have content

stable
Juanfran 2015-05-21 09:26:26 +02:00
parent d2953ac92c
commit 96ddc17a1f
3 changed files with 34 additions and 8 deletions

View File

@ -31,10 +31,10 @@ class UserTimelineController extends mixOf(taiga.Controller, taiga.PageMixin, ta
constructor: (@userTimelineService) -> constructor: (@userTimelineService) ->
@.timelineList = Immutable.List() @.timelineList = Immutable.List()
@.page = 1 @.page = 1
@.loadingData = false @.scrollDisabled = false
loadTimeline: () -> loadTimeline: () ->
@.loadingData = true @.scrollDisabled = true
if @.projectId if @.projectId
@userTimelineService @userTimelineService
@ -50,7 +50,9 @@ class UserTimelineController extends mixOf(taiga.Controller, taiga.PageMixin, ta
_timelineLoaded: (newTimelineList) -> _timelineLoaded: (newTimelineList) ->
@.timelineList = @.timelineList.concat(newTimelineList) @.timelineList = @.timelineList.concat(newTimelineList)
@.page++ @.page++
@.loadingData = false
if newTimelineList.size
@.scrollDisabled = false
angular.module("taigaUserTimeline") angular.module("taigaUserTimeline")
.controller("UserTimeline", UserTimelineController) .controller("UserTimeline", UserTimelineController)

View File

@ -47,7 +47,7 @@ describe "UserTimelineController", ->
{ fake: "fake"} { fake: "fake"}
]) ])
it "the loadingData variable must be true during the timeline load", () -> it "the scrollDisabled variable must be true during the timeline load", () ->
myCtrl = controller "UserTimeline" myCtrl = controller "UserTimeline"
myCtrl.userId = mockUser.id myCtrl.userId = mockUser.id
@ -59,15 +59,39 @@ describe "UserTimelineController", ->
then: thenStub then: thenStub
}) })
expect(myCtrl.loadingData).to.be.false expect(myCtrl.scrollDisabled).to.be.false
myCtrl.loadTimeline() myCtrl.loadTimeline()
expect(myCtrl.loadingData).to.be.true expect(myCtrl.scrollDisabled).to.be.true
thenStub.callArgWith(0, timelineList) thenStub.callArgWith(0, timelineList)
expect(myCtrl.loadingData).to.be.false expect(myCtrl.scrollDisabled).to.be.false
it "disable scroll when no more content", () ->
emptyTimelineList = Immutable.fromJS([])
myCtrl = controller "UserTimeline"
myCtrl.userId = mockUser.id
thenStub = sinon.stub()
mocks.userTimelineService.getTimeline = sinon.stub()
.withArgs(mockUser.id, myCtrl.page)
.returns({
then: thenStub
})
expect(myCtrl.scrollDisabled).to.be.false
myCtrl.loadTimeline()
expect(myCtrl.scrollDisabled).to.be.true
thenStub.callArgWith(0, emptyTimelineList)
expect(myCtrl.scrollDisabled).to.be.true
it "pagiantion increase one every call to loadTimeline", () -> it "pagiantion increase one every call to loadTimeline", () ->
myCtrl = controller "UserTimeline" myCtrl = controller "UserTimeline"

View File

@ -1,3 +1,3 @@
section.profile-timeline section.profile-timeline
div(infinite-scroll="vm.loadTimeline()", infinite-scroll-distance="3", infinite-scroll-disabled="vm.loadingData") div(infinite-scroll="vm.loadTimeline()", infinite-scroll-distance="3", infinite-scroll-disabled="vm.scrollDisabled")
div(tg-repeat="timeline in vm.timelineList", tg-user-timeline-item="timeline") div(tg-repeat="timeline in vm.timelineList", tg-user-timeline-item="timeline")