63 lines
2.0 KiB
CoffeeScript
63 lines
2.0 KiB
CoffeeScript
taiga = @.taiga
|
|
groupBy = @.taiga.groupBy
|
|
|
|
class ProjectsService extends taiga.Service
|
|
@.$inject = ["$tgResources", "$rootScope", "$projectUrl", "tgLightboxFactory"]
|
|
|
|
constructor: (@rs, @rootScope, @projectUrl, @lightboxFactory) ->
|
|
@._projects = Immutable.Map()
|
|
@._projectsById = Immutable.Map()
|
|
@._inProgress = false
|
|
@._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) =>
|
|
_.map projects, (project) =>
|
|
project.url = @projectUrl.get(project)
|
|
|
|
|
|
console.log project.memberships
|
|
|
|
project.colorized_tags = []
|
|
|
|
if project.tags
|
|
tags = project.tags.sort()
|
|
|
|
project.colorized_tags = _.map tags, (tag) ->
|
|
color = project.tags_colors[tag]
|
|
return {name: tag, color: color}
|
|
|
|
@._projects = Immutable.fromJS({
|
|
all: projects,
|
|
recents: projects.slice(0, 10)
|
|
})
|
|
|
|
@._projectsById = Immutable.fromJS(groupBy(projects, (p) -> p.id))
|
|
|
|
return @.projects
|
|
|
|
@._projectsPromise.finally =>
|
|
@._inProgress = false
|
|
|
|
return @._projectsPromise
|
|
|
|
newProject: ->
|
|
@lightboxFactory.create("tg-lb-create-project", {
|
|
"class": "wizard-create-project"
|
|
})
|
|
|
|
bulkUpdateProjectsOrder: (sortData) ->
|
|
@rs.projects.bulkUpdateOrder(sortData).then =>
|
|
@.fetchProjects()
|
|
|
|
angular.module("taigaProjects").service("tgProjectsService", ProjectsService)
|