taiga-front/app/modules/projects/projects.service.coffee

37 lines
1.2 KiB
CoffeeScript

class ProjectsService extends taiga.Service
@.$inject = ["$q", "$tgResources", "$rootScope", "$projectUrl", "tgLightboxFactory"]
constructor: (@q, @rs, @rootScope, @projectUrl, @lightboxFactory) ->
@.projects = Immutable.Map()
@.inProgress = false
@.projectsPromise = null
@.fetchProjects()
fetchProjects: ->
if not @.inProgress
@.inProgress = true
@.projectsPromise = @rs.projects.listByMember(@rootScope.user?.id).then (projects) =>
for project in projects
project.url = @projectUrl.get(project)
@.projects = Immutable.fromJS({
all: projects,
recents: projects.slice(0, 10)
})
return @.projects
@.projectsPromise.then () =>
@.inProgress = false
return @.projectsPromise
newProject: ->
@lightboxFactory.create("tg-lb-create-project")
bulkUpdateProjectsOrder: (sortData) ->
@rs.projects.bulkUpdateOrder(sortData).then =>
@.fetchProjects()
angular.module("taigaProjects").service("tgProjects", ProjectsService)