immutable service properties
parent
bb6920df8f
commit
4e7c1ce90f
|
@ -1,11 +1,18 @@
|
||||||
class HomeService extends taiga.Service
|
class HomeService extends taiga.Service
|
||||||
@.$inject = ["$q", "$tgResources", "$rootScope", "$projectUrl"]
|
@.$inject = ["$q", "$tgResources", "$rootScope", "$projectUrl", "$tgAuth"]
|
||||||
|
|
||||||
constructor: (@q, @rs, @rootScope, @projectUrl) ->
|
constructor: (@q, @rs, @rootScope, @projectUrl, @auth) ->
|
||||||
@.workInProgress = Immutable.Map()
|
@._workInProgress = Immutable.Map()
|
||||||
|
@._projectPromise = null
|
||||||
@._inProgress = false
|
@._inProgress = false
|
||||||
|
|
||||||
fetchWorkInProgress: (userId) ->
|
taiga.defineImmutableProperty @, "workInProgress", () => return @._workInProgress
|
||||||
|
|
||||||
|
@.fetchWorkInProgress()
|
||||||
|
|
||||||
|
fetchWorkInProgress: () ->
|
||||||
|
userId = @auth.getUser().id
|
||||||
|
|
||||||
if not @._inProgress
|
if not @._inProgress
|
||||||
@._inProgress = true
|
@._inProgress = true
|
||||||
params = {
|
params = {
|
||||||
|
@ -21,6 +28,7 @@ class HomeService extends taiga.Service
|
||||||
assignedIssuesPromise = @rs.issues.listInAllProjects(params).then (issues) =>
|
assignedIssuesPromise = @rs.issues.listInAllProjects(params).then (issues) =>
|
||||||
@.assignedToIssues = issues
|
@.assignedToIssues = issues
|
||||||
|
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
status__is_closed: false
|
status__is_closed: false
|
||||||
watchers: userId
|
watchers: userId
|
||||||
|
@ -34,12 +42,12 @@ class HomeService extends taiga.Service
|
||||||
watchingIssuesPromise = @rs.issues.listInAllProjects(params).then (issues) =>
|
watchingIssuesPromise = @rs.issues.listInAllProjects(params).then (issues) =>
|
||||||
@.watchingIssues = issues
|
@.watchingIssues = issues
|
||||||
|
|
||||||
workPromise = @q.all([assignedUserStoriesPromise, assignedTasksPromise,
|
@._projectPromise = @q.all([assignedUserStoriesPromise, assignedTasksPromise,
|
||||||
assignedIssuesPromise, watchingUserStoriesPromise,
|
assignedIssuesPromise, watchingUserStoriesPromise,
|
||||||
watchingUserStoriesPromise, watchingIssuesPromise])
|
watchingUserStoriesPromise, watchingIssuesPromise])
|
||||||
|
|
||||||
workPromise.then =>
|
@._projectPromise.then =>
|
||||||
@.workInProgress = Immutable.fromJS({
|
@._workInProgress = Immutable.fromJS({
|
||||||
assignedTo: {
|
assignedTo: {
|
||||||
userStories: @.assignedToUserStories
|
userStories: @.assignedToUserStories
|
||||||
tasks: @.assignedToTasks
|
tasks: @.assignedToTasks
|
||||||
|
@ -54,6 +62,6 @@ class HomeService extends taiga.Service
|
||||||
|
|
||||||
@._inProgress = false
|
@._inProgress = false
|
||||||
|
|
||||||
return workPromise
|
return @._projectPromise
|
||||||
|
|
||||||
angular.module("taigaHome").service("tgHomeService", HomeService)
|
angular.module("taigaHome").service("tgHomeService", HomeService)
|
||||||
|
|
|
@ -67,6 +67,15 @@ describe "tgHome", ->
|
||||||
|
|
||||||
provide.value "$projectUrl", mocks.projectUrl
|
provide.value "$projectUrl", mocks.projectUrl
|
||||||
|
|
||||||
|
_mockAuth = () ->
|
||||||
|
mocks.auth = {
|
||||||
|
getUser: sinon.stub()
|
||||||
|
}
|
||||||
|
|
||||||
|
mocks.auth.getUser.returns(id: 1)
|
||||||
|
|
||||||
|
provide.value "$tgAuth", mocks.auth
|
||||||
|
|
||||||
_inject = (callback) ->
|
_inject = (callback) ->
|
||||||
inject (_$q_, _$tgResources_, _$rootScope_, _$projectUrl_, _$timeout_, _tgHomeService_) ->
|
inject (_$q_, _$tgResources_, _$rootScope_, _$projectUrl_, _$timeout_, _tgHomeService_) ->
|
||||||
timeout = _$timeout_
|
timeout = _$timeout_
|
||||||
|
@ -78,6 +87,7 @@ describe "tgHome", ->
|
||||||
provide = $provide
|
provide = $provide
|
||||||
_mockResources()
|
_mockResources()
|
||||||
_mockProjectUrl()
|
_mockProjectUrl()
|
||||||
|
_mockAuth()
|
||||||
return null
|
return null
|
||||||
|
|
||||||
_setup = ->
|
_setup = ->
|
||||||
|
@ -90,7 +100,6 @@ describe "tgHome", ->
|
||||||
|
|
||||||
describe "fetch items", ->
|
describe "fetch items", ->
|
||||||
it "work in progress filled", () ->
|
it "work in progress filled", () ->
|
||||||
homeService.fetchWorkInProgress(1)
|
|
||||||
mocks.thenStubAssignedToUserstories.callArg(0, [{"id": 1}])
|
mocks.thenStubAssignedToUserstories.callArg(0, [{"id": 1}])
|
||||||
mocks.thenStubAssignedToTasks.callArg(0, [{"id": 2}])
|
mocks.thenStubAssignedToTasks.callArg(0, [{"id": 2}])
|
||||||
mocks.thenStubAssignedToIssues.callArg(0, [{"id": 3}])
|
mocks.thenStubAssignedToIssues.callArg(0, [{"id": 3}])
|
||||||
|
@ -113,7 +122,6 @@ describe "tgHome", ->
|
||||||
})
|
})
|
||||||
|
|
||||||
it "_inProgress change to false when tgResources end", () ->
|
it "_inProgress change to false when tgResources end", () ->
|
||||||
homeService.fetchWorkInProgress(1)
|
|
||||||
expect(homeService._inProgress).to.be.true
|
expect(homeService._inProgress).to.be.true
|
||||||
timeout.flush()
|
timeout.flush()
|
||||||
expect(homeService._inProgress).to.be.false
|
expect(homeService._inProgress).to.be.false
|
||||||
|
|
|
@ -5,34 +5,38 @@ class ProjectsService extends taiga.Service
|
||||||
@.$inject = ["$tgResources", "$rootScope", "$projectUrl", "tgLightboxFactory"]
|
@.$inject = ["$tgResources", "$rootScope", "$projectUrl", "tgLightboxFactory"]
|
||||||
|
|
||||||
constructor: (@rs, @rootScope, @projectUrl, @lightboxFactory) ->
|
constructor: (@rs, @rootScope, @projectUrl, @lightboxFactory) ->
|
||||||
@.projects = Immutable.Map()
|
@._projects = Immutable.Map()
|
||||||
@.projectsById = Immutable.Map()
|
@._projectsById = Immutable.Map()
|
||||||
@._inProgress = false
|
@._inProgress = false
|
||||||
@.projectsPromise = null
|
@._projectsPromise = null
|
||||||
|
|
||||||
|
taiga.defineImmutableProperty @, "projects", () => return @._projects
|
||||||
|
taiga.defineImmutableProperty @, "projectsById", () => return @._projectsById
|
||||||
|
|
||||||
@.fetchProjects()
|
@.fetchProjects()
|
||||||
|
|
||||||
fetchProjects: ->
|
fetchProjects: ->
|
||||||
if not @._inProgress
|
if not @._inProgress
|
||||||
@._inProgress = true
|
@._inProgress = true
|
||||||
|
|
||||||
@.projectsPromise = @rs.projects.listByMember(@rootScope.user?.id)
|
@._projectsPromise = @rs.projects.listByMember(@rootScope.user?.id)
|
||||||
@.projectsPromise.then (projects) =>
|
@._projectsPromise.then (projects) =>
|
||||||
for project in projects
|
for project in projects
|
||||||
project.url = @projectUrl.get(project)
|
project.url = @projectUrl.get(project)
|
||||||
|
|
||||||
@.projects = Immutable.fromJS({
|
@._projects = Immutable.fromJS({
|
||||||
all: projects,
|
all: projects,
|
||||||
recents: projects.slice(0, 10)
|
recents: projects.slice(0, 10)
|
||||||
})
|
})
|
||||||
|
|
||||||
@.projectsById = Immutable.fromJS(groupBy(projects, (p) -> p.id))
|
@._projectsById = Immutable.fromJS(groupBy(projects, (p) -> p.id))
|
||||||
|
|
||||||
return @.projects
|
return @.projects
|
||||||
|
|
||||||
@.projectsPromise.finally =>
|
@._projectsPromise.finally =>
|
||||||
@._inProgress = false
|
@._inProgress = false
|
||||||
|
|
||||||
return @.projectsPromise
|
return @._projectsPromise
|
||||||
|
|
||||||
newProject: ->
|
newProject: ->
|
||||||
@lightboxFactory.create("tg-lb-create-project", {
|
@lightboxFactory.create("tg-lb-create-project", {
|
||||||
|
|
Loading…
Reference in New Issue