From c85e1cf4a01270027026c44dd60de810201f3d8b Mon Sep 17 00:00:00 2001 From: Juanfran Date: Tue, 19 May 2015 14:09:23 +0200 Subject: [PATCH] fix tags in project detail page --- app/modules/projects/project/project.jade | 4 ++- app/modules/projects/projects.service.coffee | 27 +++++++++-------- .../projects/projects.service.spec.coffee | 30 +++++++++++++------ 3 files changed, 38 insertions(+), 23 deletions(-) diff --git a/app/modules/projects/project/project.jade b/app/modules/projects/project/project.jade index 29dbcb30..20884bac 100644 --- a/app/modules/projects/project/project.jade +++ b/app/modules/projects/project/project.jade @@ -6,8 +6,10 @@ div.wrapper span.private(ng-if="::vm.project.get('is_private')", title="{{'PROJECT.PRIVATE' | translate}}") include ../../../svg/lock.svg p.description {{vm.project.get('description')}} + div.project-list-single-tags.tags-container(ng-if="::vm.project.get('tags').size") - div.tags-block(tg-colorize-tags="vm.project.get('tags')", tg-colorize-tags-type="backlog") + span.tag(style='border-left: 5px solid {{::tag.get("color")}};', tg-repeat="tag in ::vm.project.get('colorized_tags')") + span.tag-name {{::tag.get('name')}} div.project-data section.timeline(ng-if="vm.project") diff --git a/app/modules/projects/projects.service.coffee b/app/modules/projects/projects.service.coffee index d9887f18..066352e2 100644 --- a/app/modules/projects/projects.service.coffee +++ b/app/modules/projects/projects.service.coffee @@ -8,6 +8,8 @@ class ProjectsService extends taiga.Service getProjectBySlug: (projectSlug) -> return @rs.projects.getProjectBySlug(projectSlug) + .then (project) => + return @._decorate(project) getProjectStats: (projectId) -> return @rs.projects.getProjectStats(projectId) @@ -15,25 +17,24 @@ class ProjectsService extends taiga.Service getProjectsByUserId: (userId) -> return @rs.projects.getProjectsByUserId(userId) .then (projects) => - return @._decorate(projects) + return projects.map @._decorate.bind(@) - _decorate: (projects) -> - return projects.map (project) => - url = @projectUrl.get(project.toJS()) + _decorate: (project) -> + url = @projectUrl.get(project.toJS()) - project = project.set("url", url) - colorized_tags = [] + project = project.set("url", url) + colorized_tags = [] - if project.get("tags") - tags = project.get("tags").sort() + if project.get("tags") + tags = project.get("tags").sort() - colorized_tags = tags.map (tag) -> - color = project.get("tags_colors").get(tag) - return Immutable.fromJS({name: tag, color: color}) + colorized_tags = tags.map (tag) -> + color = project.get("tags_colors").get(tag) + return Immutable.fromJS({name: tag, color: color}) - project = project.set("colorized_tags", colorized_tags) + project = project.set("colorized_tags", colorized_tags) - return project + return project newProject: -> @lightboxFactory.create("tg-lb-create-project", { diff --git a/app/modules/projects/projects.service.spec.coffee b/app/modules/projects/projects.service.spec.coffee index 56911cd9..531029f4 100644 --- a/app/modules/projects/projects.service.spec.coffee +++ b/app/modules/projects/projects.service.spec.coffee @@ -87,15 +87,6 @@ describe "tgProjectsService", -> expect(result).to.be.true - it "getProjectBySlug", () -> - projectSlug = "project-slug" - - mocks.resources.projects = {} - mocks.resources.projects.getProjectBySlug = sinon.stub() - mocks.resources.projects.getProjectBySlug.withArgs(projectSlug).returns(true) - - expect(projectsService.getProjectBySlug(projectSlug)).to.be.true - it "getProjectStats", () -> projectId = 3 @@ -105,6 +96,27 @@ describe "tgProjectsService", -> expect(projectsService.getProjectStats(projectId)).to.be.true + it "getProjectBySlug", (done) -> + projectSlug = "project-slug" + project = Immutable.fromJS({id: 2, url: 'url-2', tags: ['xx', 'yy', 'aa'], tags_colors: {xx: "red", yy: "blue", aa: "white"}}) + + mocks.resources.projects = {} + mocks.resources.projects.getProjectBySlug = sinon.stub().promise() + mocks.resources.projects.getProjectBySlug.withArgs(projectSlug).resolve(project) + + projectsService.getProjectBySlug(projectSlug).then (project) -> + expect(project.toJS()).to.be.eql( + { + id: 2, + url: 'url-2', + tags: ['xx', 'yy', 'aa'], + tags_colors: {xx: "red", yy: "blue", aa: "white"}, + colorized_tags: [{name: 'aa', color: 'white'}, {name: 'xx', color: 'red'}, {name: 'yy', color: 'blue'}] + } + ) + + done() + it "getProjectsByUserId", (done) -> projectId = 3