diff --git a/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.coffee b/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.coffee index b6208369..f04de7a3 100644 --- a/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.coffee +++ b/app/modules/navigation-bar/dropdown-project-list/dropdown-project-list.directive.coffee @@ -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" diff --git a/app/modules/projects/listing/listing.directive.coffee b/app/modules/projects/listing/listing.directive.coffee index b7e7cced..6e73c57e 100644 --- a/app/modules/projects/listing/listing.directive.coffee +++ b/app/modules/projects/listing/listing.directive.coffee @@ -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: {} diff --git a/app/modules/projects/projects.service.coffee b/app/modules/projects/projects.service.coffee index 53270b2c..f9b81314 100644 --- a/app/modules/projects/projects.service.coffee +++ b/app/modules/projects/projects.service.coffee @@ -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()