US/121 project details

stable
Juanfran 2014-07-24 14:45:26 +02:00
parent 08d9e17894
commit 9e2fd9cfc1
8 changed files with 147 additions and 5 deletions

View File

@ -25,6 +25,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide) ->
$routeProvider.when("/", {templateUrl: "/partials/projects.html"}) $routeProvider.when("/", {templateUrl: "/partials/projects.html"})
$routeProvider.when("/create-project", {templateUrl: "/partials/create-project.html"}) $routeProvider.when("/create-project", {templateUrl: "/partials/create-project.html"})
$routeProvider.when("/project/:pslug/", {templateUrl: "/partials/project.html"})
$routeProvider.when("/project/:pslug/backlog", {templateUrl: "/partials/backlog.html"}) $routeProvider.when("/project/:pslug/backlog", {templateUrl: "/partials/backlog.html"})
$routeProvider.when("/project/:pslug/taskboard/:id", {templateUrl: "/partials/taskboard.html"}) $routeProvider.when("/project/:pslug/taskboard/:id", {templateUrl: "/partials/taskboard.html"})
$routeProvider.when("/project/:pslug/search", {templateUrl: "/partials/search.html"}) $routeProvider.when("/project/:pslug/search", {templateUrl: "/partials/search.html"})

View File

@ -1,7 +1,7 @@
taiga = @.taiga taiga = @.taiga
module = angular.module("taigaProject", []) module = angular.module("taigaProject", [])
class ProjectController extends taiga.Controller class ProjectsController extends taiga.Controller
@.$inject = ["$scope", "$tgResources"] @.$inject = ["$scope", "$tgResources"]
constructor: (@scope, @rs) -> constructor: (@scope, @rs) ->
@ -13,6 +13,39 @@ class ProjectController extends taiga.Controller
return @rs.projects.list().then (projects) => return @rs.projects.list().then (projects) =>
@.projects = {'recents': projects.slice(0, 8), 'all': projects.slice(6)} @.projects = {'recents': projects.slice(0, 8), 'all': projects.slice(6)}
module.controller("ProjectsController", ProjectsController)
class ProjectController extends taiga.Controller
@.$inject = ["$scope", "$tgResources", "$tgRepo", "$routeParams", "$q"]
constructor: (@scope, @rs, @repo, @params, @q) ->
@scope.hideMenu = true
@.loadInitialData()
loadInitialData: ->
# Resolve project slug
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
@scope.projectId = data.project
return data
return promise.then(=> @.loadPageData())
loadPageData: ->
return @q.all([
@.loadProjectStats(),
@.loadProject()])
loadProject: ->
return @rs.projects.get(@scope.projectId).then (project) =>
@.project = project
return project
loadProjectStats: ->
return @rs.projects.stats(@scope.projectId).then (stats) =>
@.stats = stats
return stats
module.controller("ProjectController", ProjectController) module.controller("ProjectController", ProjectController)
ProjectsPaginationDirective = ($timeout) -> ProjectsPaginationDirective = ($timeout) ->

33
app/partials/project.jade Normal file
View File

@ -0,0 +1,33 @@
extends dummy-layout
block head
title Taiga Project management web application with scrum in mind!
block content
.home-project(ng-controller="ProjectController as ctrl")
.inner
h1(tg-bo-html="ctrl.project.name")
ul.home-project-info-list
li
span.info-num(tg-bo-html="ctrl.stats.total_points")
span.info-text projects points
li
span.info-num(tg-bo-html="ctrl.stats.defined_points")
span.info-text defined points
li
span.info-num(tg-bo-html="ctrl.stats.assigned_points")
span.info-text assigned points
li
span.info-num(tg-bo-html="ctrl.stats.closed_points")
span.info-text closed points
p.description(tg-bo-html="ctrl.project.description")
.home-project-bottom
ul
li(ng-repeat="member in ctrl.project.memberships")
img(src="http://www.gravatar.com/avatar/0601c5aa999eb9f589e3516ba7e31820?size=80&default=")
a.button.button-blackish(href="", tg-nav="project-backlog:project=ctrl.project.slug") GO TO PROJECT

View File

@ -4,7 +4,7 @@ block head
title Taiga Project management web application with scrum in mind! title Taiga Project management web application with scrum in mind!
block content block content
div.home-projects-list(ng-controller="ProjectController as ctrl") div.home-projects-list(ng-controller="ProjectsController as ctrl")
.home-projects-list-inner .home-projects-list-inner
ul.recent-projects ul.recent-projects
li(ng-repeat="project in ctrl.projects.recents") li(ng-repeat="project in ctrl.projects.recents")
@ -12,14 +12,14 @@ block content
h2(tg-bo-html="project.name") h2(tg-bo-html="project.name")
p(tg-bo-html="project.description") p(tg-bo-html="project.description")
.project-link .project-link
a.button.button-gray(href="", tg-nav="project-backlog:project=project.slug") Go to project a.button.button-gray(href="", tg-nav="project:project=project.slug") Go to project
div.all-projects div.all-projects
h1 Projects h1 Projects
div(tg-projects-pagination, active="ctrl.projects.all.length") div(tg-projects-pagination, active="ctrl.projects.all.length")
ul ul
li(ng-repeat="project in ctrl.projects.all") li(ng-repeat="project in ctrl.projects.all")
a.button(href="", tg-bo-html="project.name", tg-nav="project-backlog:project=project.slug") a.button(href="", tg-bo-html="project.name", tg-nav="project:project=project.slug")
.create-project-button-wrapper .create-project-button-wrapper
a.button.button-green(href="", tg-nav="create-project") Create project a.button.button-green(href="", tg-nav="create-project") Create project

View File

@ -53,6 +53,18 @@ a.button-green {
} }
} }
.button-blackish {
background: $blackish;
color: $whitish;
&:hover {
background: $button-gray-hover;
color: $white;
}
span {
color: $white;
}
}
.button-red { .button-red {
background: $red-light; background: $red-light;
&:hover { &:hover {

View File

@ -58,6 +58,7 @@ $prefix-for-spec: true;
//Project modules //Project modules
@import 'modules/home-projects-list'; @import 'modules/home-projects-list';
@import 'modules/home-project';
@import 'modules/project-details'; @import 'modules/project-details';
//Issues modules //Issues modules

View File

@ -0,0 +1,62 @@
.home-project {
align-items: center;
display: flex;
.inner {
background-color: rgba(255, 255, 255, .2);
padding: 2rem;
width: 970px;
}
h1 {
font-weight: bold;
margin-bottom: 3rem;
}
li,
h1,
p {
color: $whitish;
}
}
.home-project-info-list {
display: flex;
.info-num {
@extend %xlarge;
font-family: 'DroidSans-Bold';
margin-right: .3rem;
}
.info-text {
@extend %small;
display: block;
line-height: 12px;
width: 55px;
}
li {
align-items: center;
display: flex;
margin-right: 1rem;
}
}
.home-project-bottom {
align-items: center;
display: flex;
justify-content: space-between;
margin-top: 2rem;
img {
border-radius: 3px;
width: 40px;
}
li {
margin-right: .5rem;
}
ul {
display: flex;
flex-flow: row wrap;
margin-bottom: 0;
width: 50%;
}
.button-blackish {
color: $whitish;
}
}

View File

@ -1,4 +1,4 @@
.home-projects-list { .home-projects-list, .home-project {
align-items: center; align-items: center;
background-image: url('/images/project-selector.jpg'); background-image: url('/images/project-selector.jpg');
background-position: center center; background-position: center center;