Refactoring projects service
parent
37f3ba68a0
commit
71f8ab18e0
|
@ -1,11 +1,7 @@
|
|||
DropdownProjectListDirective = (projectsService) ->
|
||||
link = (scope, el, attrs, ctrl) ->
|
||||
scope.vm = {}
|
||||
|
||||
projectsService.projectsSuscription (projects) ->
|
||||
scope.vm.projects = projects
|
||||
|
||||
projectsService.getProjects()
|
||||
scope.vm.projects = projectsService.projects
|
||||
|
||||
directive = {
|
||||
templateUrl: "navigation-bar/dropdown-project-list/dropdown-project-list.html"
|
||||
|
|
|
@ -14,30 +14,17 @@ ProjectsListingDirective = (projectsService) ->
|
|||
itemEl = ui.item
|
||||
project = itemEl.scope().project
|
||||
index = itemEl.index()
|
||||
scope.sorted_project_ids = _.without(scope.sorted_project_ids, project.id)
|
||||
scope.sorted_project_ids.splice(index, 0, project.id)
|
||||
sorted_project_ids = _.map(scope.vm.projects.all, (p) -> p.id)
|
||||
sorted_project_ids = _.without(sorted_project_ids, project.id)
|
||||
sorted_project_ids.splice(index, 0, project.id)
|
||||
sortData = []
|
||||
for value, index in scope.sorted_project_ids
|
||||
for value, index in sorted_project_ids
|
||||
sortData.push({"project_id": value, "order":index})
|
||||
|
||||
projectsService.bulkUpdateProjectsOrder(sortData)
|
||||
|
||||
projectsService.projectsSuscription (projects) ->
|
||||
scope.vm.projects = projects
|
||||
scope.sorted_project_ids = _.map(projects.all, (p) -> p.id)
|
||||
scope.vm.projects = projectsService.projects
|
||||
|
||||
projectsService.getProjects(true)
|
||||
|
||||
"""
|
||||
projectsService.fetchProjects().then (projects) ->
|
||||
Object.defineProperty scope.vm, "projects", {
|
||||
get: () ->
|
||||
projects = projectsService.getProjects()
|
||||
if projects
|
||||
scope.sorted_project_ids = _.map(projects.all, (p) -> p.id)
|
||||
return projects
|
||||
}
|
||||
"""
|
||||
directive = {
|
||||
templateUrl: "projects/listing/listing.html"
|
||||
scope: {}
|
||||
|
|
|
@ -1,43 +1,30 @@
|
|||
class ProjectsService extends taiga.Service
|
||||
@.$inject = ["$q", "$tgResources", "$rootScope", "$projectUrl"]
|
||||
|
||||
constructor: (@q, @rs, @rootscope, @projectUrl) ->
|
||||
constructor: (@q, @rs, @rootScope, @projectUrl) ->
|
||||
@.projects = {all: [], recent: []}
|
||||
@.inProgress = false
|
||||
@.projectsPromise = null
|
||||
@.projects = null
|
||||
@.callbacks = []
|
||||
@.fetchProjects()
|
||||
|
||||
projectsSuscription: (callback) ->
|
||||
@.callbacks.push(callback)
|
||||
fetchProjects: ->
|
||||
console.log "fetchProjects", @.inProgress
|
||||
if not @.inProgress
|
||||
@.inProgress = true
|
||||
@.projectsPromise = @rs.projects.listByMember(@rootScope.user?.id).then (projects) =>
|
||||
for project in projects
|
||||
project.url = @projectUrl.get(project)
|
||||
|
||||
notifySuscriptors: ->
|
||||
for callback in @.callbacks
|
||||
callback(@.projects)
|
||||
@.projects.recents = projects.slice(0, 8)
|
||||
@.projects.all = projects
|
||||
|
||||
fetchProjects: (updateSuscriptors = true) ->
|
||||
@.projectsPromise = @rs.projects.listByMember(@rootscope.user?.id).then (projects) =>
|
||||
for project in projects
|
||||
project.url = @projectUrl.get(project)
|
||||
return @.projects
|
||||
|
||||
@.projects = {'recents': projects.slice(0, 8), 'all': projects}
|
||||
if updateSuscriptors
|
||||
@.notifySuscriptors()
|
||||
|
||||
return @.projects
|
||||
@.projectsPromise.then () =>
|
||||
@.inProgress = false
|
||||
|
||||
return @.projectsPromise
|
||||
|
||||
getProjects: (updateSuscriptors = false) ->
|
||||
if not @.projectsPromise?
|
||||
promise = @.fetchProjects(not updateSuscriptors)
|
||||
else
|
||||
promise = @.projectsPromise
|
||||
|
||||
if updateSuscriptors
|
||||
promise.then =>
|
||||
@.notifySuscriptors()
|
||||
|
||||
return promise
|
||||
|
||||
bulkUpdateProjectsOrder: (sortData) ->
|
||||
@rs.projects.bulkUpdateOrder(sortData).then =>
|
||||
@.fetchProjects()
|
||||
|
|
Loading…
Reference in New Issue