Refactoring projects service

stable
Alejandro Alonso 2015-04-23 09:30:22 +02:00 committed by Juanfran
parent 37f3ba68a0
commit 71f8ab18e0
3 changed files with 22 additions and 52 deletions

View File

@ -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"

View File

@ -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: {}

View File

@ -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()