diff --git a/app/coffee/app.coffee b/app/coffee/app.coffee index c5536218..7f92d0e3 100644 --- a/app/coffee/app.coffee +++ b/app/coffee/app.coffee @@ -25,6 +25,7 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide) -> $routeProvider.when("/", {templateUrl: "/partials/projects.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/taskboard/:id", {templateUrl: "/partials/taskboard.html"}) $routeProvider.when("/project/:pslug/search", {templateUrl: "/partials/search.html"}) diff --git a/app/coffee/modules/project.coffee b/app/coffee/modules/project.coffee index fa131170..a519268e 100644 --- a/app/coffee/modules/project.coffee +++ b/app/coffee/modules/project.coffee @@ -1,7 +1,7 @@ taiga = @.taiga module = angular.module("taigaProject", []) -class ProjectController extends taiga.Controller +class ProjectsController extends taiga.Controller @.$inject = ["$scope", "$tgResources"] constructor: (@scope, @rs) -> @@ -13,6 +13,39 @@ class ProjectController extends taiga.Controller return @rs.projects.list().then (projects) => @.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) ProjectsPaginationDirective = ($timeout) -> diff --git a/app/partials/project.jade b/app/partials/project.jade new file mode 100644 index 00000000..398b37a9 --- /dev/null +++ b/app/partials/project.jade @@ -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 diff --git a/app/partials/projects.jade b/app/partials/projects.jade index 7f890357..b0afaa78 100644 --- a/app/partials/projects.jade +++ b/app/partials/projects.jade @@ -4,7 +4,7 @@ block head title Taiga Project management web application with scrum in mind! block content - div.home-projects-list(ng-controller="ProjectController as ctrl") + div.home-projects-list(ng-controller="ProjectsController as ctrl") .home-projects-list-inner ul.recent-projects li(ng-repeat="project in ctrl.projects.recents") @@ -12,14 +12,14 @@ block content h2(tg-bo-html="project.name") p(tg-bo-html="project.description") .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 h1 Projects div(tg-projects-pagination, active="ctrl.projects.all.length") ul 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 a.button.button-green(href="", tg-nav="create-project") Create project \ No newline at end of file diff --git a/app/styles/components/buttons.scss b/app/styles/components/buttons.scss index c93f5c19..121465ef 100755 --- a/app/styles/components/buttons.scss +++ b/app/styles/components/buttons.scss @@ -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 { background: $red-light; &:hover { diff --git a/app/styles/main.scss b/app/styles/main.scss index 1248f79c..507bfa91 100755 --- a/app/styles/main.scss +++ b/app/styles/main.scss @@ -58,6 +58,7 @@ $prefix-for-spec: true; //Project modules @import 'modules/home-projects-list'; +@import 'modules/home-project'; @import 'modules/project-details'; //Issues modules diff --git a/app/styles/modules/home-project.scss b/app/styles/modules/home-project.scss new file mode 100644 index 00000000..81f17a21 --- /dev/null +++ b/app/styles/modules/home-project.scss @@ -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; + } +} diff --git a/app/styles/modules/home-projects-list.scss b/app/styles/modules/home-projects-list.scss index 8dedb87c..f5a972cd 100644 --- a/app/styles/modules/home-projects-list.scss +++ b/app/styles/modules/home-projects-list.scss @@ -1,4 +1,4 @@ -.home-projects-list { +.home-projects-list, .home-project { align-items: center; background-image: url('/images/project-selector.jpg'); background-position: center center;