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