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