From 6b6c06b39e7cb777672b3ba8882e86173ea44e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Wed, 12 Nov 2014 18:03:31 +0100 Subject: [PATCH 01/12] Squish layout styles --- app/coffee/modules/common.coffee | 4 +- app/fonts/taiga.eot | Bin 7664 -> 7828 bytes app/fonts/taiga.svg | 72 ++++++++--------- app/fonts/taiga.ttf | Bin 7508 -> 7672 bytes app/fonts/taiga.woff | Bin 5484 -> 5608 bytes app/partials/views/modules/kanban-table.jade | 30 ++++---- app/styles/layout/typography.scss | 77 ++++++++++--------- app/styles/modules/kanban/kanban-table.scss | 52 ++++++++++--- 8 files changed, 137 insertions(+), 98 deletions(-) diff --git a/app/coffee/modules/common.coffee b/app/coffee/modules/common.coffee index 11d3fa79..594469a8 100644 --- a/app/coffee/modules/common.coffee +++ b/app/coffee/modules/common.coffee @@ -29,10 +29,10 @@ module = angular.module("taigaCommon", []) CheckPermissionDirective = -> render = ($el, project, permission) -> - $el.show() if project.my_permissions.indexOf(permission) > -1 + $el.removeClass('hidden') if project.my_permissions.indexOf(permission) > -1 link = ($scope, $el, $attrs) -> - $el.hide() + $el.addClass('hidden') permission = $attrs.tgCheckPermission $scope.$watch "project", (project) -> diff --git a/app/fonts/taiga.eot b/app/fonts/taiga.eot index 4d7ef8bb3c7664a1806f5d6106a3afb700ff4729..3993e361c0af9cdb41f1e4a970425f34a4692824 100644 GIT binary patch delta 778 zcmYk4QAkr!7{~wLx%ckQ-6(D9hTFBSfmfZ9-j)k1l~`tFNM>$1sV+K~;d12?E1aM& z2@%Pae2Sie2p(3OapYloO?x&M?(+V3INX>Kvxq3gGpgpI0eXNeiHC9Po3`>xz zrTfy7^lKZNZR0~U`&(Eo80A19%1{P7;DQ1;^YRP#DO&CRJb&pPrNqYP+e%9PwHoKI zC#{%dQb=*r9k-&m(@D2N?OKzjH7z%^)VDOGXK3CmS`EEsqNU##`J7H)krxaj@X$E@ zga8Q$xB{+lKnB9XH3@vH{RBa!m)&8&i944@Rl-%I2QsG`fMimrf42&t)* z8pO8Ayqglow}lWKa*hJU`xxm*;(M9$t;{RRc&* z@lJVWX=Qe*JD=^lT?UMU0Q8=tiDT%63oy0=2qsVL+n@ZBc?nP-fK%DLRs7iUE(5SF z0HsE(Qn6Np1Q%5@faU;Xa-&%*w=nzy zkj^@H^VWC~W4Hy7lOtHL@Lha1{BzMJu z`6s;EC@g(X*hFFTVL%4Q-8yrqcvfc@INpoLx*3im0tqBHK!yj`>&&qY_v-9|2d~7s jeuknVZA2(4CXKZCU<4^5){T=Q83@o`Q3y1v|CRX{(rkzp diff --git a/app/fonts/taiga.svg b/app/fonts/taiga.svg index ff41af91..f347cfdc 100644 --- a/app/fonts/taiga.svg +++ b/app/fonts/taiga.svg @@ -11,39 +11,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/fonts/taiga.ttf b/app/fonts/taiga.ttf index 8fb9b030d0f25e221634f21180d683794bc026ee..a41437dd495b43a16038c8eaf56cead78a73da3d 100644 GIT binary patch delta 746 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 Date: Wed, 12 Nov 2014 18:22:58 +0100 Subject: [PATCH 02/12] Add fold option to only one column --- app/partials/views/modules/kanban-table.jade | 15 +++++++------- app/styles/modules/kanban/kanban-table.scss | 21 ++++++++------------ 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index 9e1b74c2..cbb9f288 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -1,16 +1,15 @@ -div.kanban-table //-.fold +div.kanban-table div.kanban-table-header div.kanban-table-inner(tg-kanban-row-width-fixer) - h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", - ng-style="{'border-top-color':s.color}") + h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}") //Add '.fold' class here if folded span(tg-bo-bind="s.name") div.options - a.icon.icon-vfold.hfold(href="", title="Fold") - a.icon.icon-vunfold.hunfold(href="", title="Unfold") //-.hidden - a.icon.icon-vfold(href="", title="Minimize", + a.icon.icon-vfold.hfold(href="", title="Fold Column") //Toggle hidden class if folded + a.icon.icon-vunfold.hunfold.hidden(href="", title="Unfold Column") //Toggle hidden class if folded + a.icon.icon-vfold(href="", title="Fold Cards", ng-if="statusViewModes[s.id] == 'maximized'", ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") - a.icon.icon-vunfold(href="", title="Maximize", + a.icon.icon-vunfold(href="", title="Unfold Cards", ng-if="statusViewModes[s.id] == 'minimized'", ng-click="ctrl.updateStatusViewMode(s.id, 'maximized')") @@ -27,7 +26,7 @@ div.kanban-table //-.fold div.kanban-uses-box.task-column(ng-repeat="status in usStatusList track by status.id", tg-kanban-sortable, tg-kanban-wip-limit, - tg-kanban-column-height-fixer) + tg-kanban-column-height-fixer) //Add '.fold' class here if folded div.kanban-task(ng-repeat="us in usByStatus[status.id] track by us.id", tg-kanban-userstory, ng-model="us", ng-class="ctrl.getCardClass(status.id)") diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index 6bf0cc2c..dc2a9f5b 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -8,9 +8,8 @@ $column-margin: 0 10px 0 0; .kanban-table { overflow: hidden; width: 100%; - &.fold { - @include table-flex(); - .task-colum-name { + .fold { + &.task-colum-name { @include transition(opacity .3s linear); cursor: pointer; opacity: .8; @@ -18,23 +17,19 @@ $column-margin: 0 10px 0 0; @include transition(opacity .3s linear); opacity: 1; } + div, + span { + display: none; + } } - .task-colum-name, - .task-column { + &.task-colum-name, + &.task-column { @include table-flex-child(1, 0, 0); border: 0; max-width: 30px; min-height: 2.5rem; width: 30px; } - .kanban-table-header { - .task-colum-name { - div, - span { - display: none; - } - } - } .kanban-task { display: none; } From 766fc94c025a8bbe781af0f40e84676a6b539545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Thu, 13 Nov 2014 12:52:55 +0100 Subject: [PATCH 03/12] Squish Kanban Directive --- app/coffee/modules/kanban/main.coffee | 27 ++++++++++++++++++++ app/partials/views/modules/kanban-table.jade | 8 +++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 3ab7a514..92e363ac 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -355,6 +355,33 @@ KanbanUserstoryDirective = ($rootscope) -> module.directive("tgKanbanUserstory", ["$rootScope", KanbanUserstoryDirective]) +############################################################################# +## Kanban Squish Column Directive +############################################################################# + +KanbanSquishColumnDirective = -> + link = ($scope, $el, $attrs) -> + buttonFold = $el.find(".hfold") + buttonUnfold = $el.find(".hunfold") + + buttonFold.on "click", (event) -> + target = angular.element(event.currentTarget) + fold(target) + + buttonUnfold.on "click", (event) -> + target = angular.element(event.currentTarget) + unfold(target) + + fold = (target) -> + console.log 'fold' + + unfold = (target) -> + console.log 'unfold' + + return {link: link} + +module.directive("tgKanbanSquishColumn", KanbanSquishColumnDirective) + ############################################################################# ## Kaban WIP Limit Directive diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index cbb9f288..c32da5ea 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -1,11 +1,11 @@ -div.kanban-table +div.kanban-table(tg-kanban-squish-column) div.kanban-table-header div.kanban-table-inner(tg-kanban-row-width-fixer) - h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}") //Add '.fold' class here if folded + h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}") span(tg-bo-bind="s.name") div.options - a.icon.icon-vfold.hfold(href="", title="Fold Column") //Toggle hidden class if folded - a.icon.icon-vunfold.hunfold.hidden(href="", title="Unfold Column") //Toggle hidden class if folded + a.icon.icon-vfold.hfold(href="", title="Fold Column") + a.icon.icon-vunfold.hunfold.hidden(href="", title="Unfold Column") a.icon.icon-vfold(href="", title="Fold Cards", ng-if="statusViewModes[s.id] == 'maximized'", ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") From b8862380f889b8d74de0ede9ece33ae8e29bbcc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Thu, 13 Nov 2014 14:06:25 +0100 Subject: [PATCH 04/12] Broken kanban squish directive --- app/coffee/modules/kanban/main.coffee | 20 +++++++++++++------- app/partials/views/modules/kanban-table.jade | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 92e363ac..84dd65e4 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -361,28 +361,34 @@ module.directive("tgKanbanUserstory", ["$rootScope", KanbanUserstoryDirective]) KanbanSquishColumnDirective = -> link = ($scope, $el, $attrs) -> - buttonFold = $el.find(".hfold") - buttonUnfold = $el.find(".hunfold") - buttonFold.on "click", (event) -> + #TODO: Only header is folding/unfolding so + # 1. Fold/Unfold also related column (.task-colum-name and .task-colum) + # 2. Save folded/unfolded column status + # 3. Recalculate container width + + $el.on "click", ".hfold", (event) -> target = angular.element(event.currentTarget) fold(target) - buttonUnfold.on "click", (event) -> + $el.on "click", ".hunfold", (event) -> target = angular.element(event.currentTarget) unfold(target) fold = (target) -> - console.log 'fold' + target.closest('.task-colum-name').addClass('fold') + target.toggleClass('hidden') + target.siblings('.hunfold').toggleClass('hidden') unfold = (target) -> - console.log 'unfold' + target.closest('.task-colum-name').removeClass('fold') + target.toggleClass('hidden') + target.siblings('.hfold').toggleClass('hidden') return {link: link} module.directive("tgKanbanSquishColumn", KanbanSquishColumnDirective) - ############################################################################# ## Kaban WIP Limit Directive ############################################################################# diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index c32da5ea..16a2fa29 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -26,7 +26,7 @@ div.kanban-table(tg-kanban-squish-column) div.kanban-uses-box.task-column(ng-repeat="status in usStatusList track by status.id", tg-kanban-sortable, tg-kanban-wip-limit, - tg-kanban-column-height-fixer) //Add '.fold' class here if folded + tg-kanban-column-height-fixer) div.kanban-task(ng-repeat="us in usByStatus[status.id] track by us.id", tg-kanban-userstory, ng-model="us", ng-class="ctrl.getCardClass(status.id)") From 38bb85bdf0b336052a2f5c135cee775a507e026a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Fri, 14 Nov 2014 13:10:48 +0100 Subject: [PATCH 05/12] Fold/unfold kanban columns --- app/coffee/modules/kanban/main.coffee | 33 ++++++-------------- app/partials/views/modules/kanban-table.jade | 12 +++---- app/styles/modules/kanban/kanban-table.scss | 16 +++++++--- 3 files changed, 27 insertions(+), 34 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 84dd65e4..5aa50532 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -360,30 +360,17 @@ module.directive("tgKanbanUserstory", ["$rootScope", KanbanUserstoryDirective]) ############################################################################# KanbanSquishColumnDirective = -> + + #TODO: Only header is folding/unfolding so + # 1. Save folded/unfolded column status. + # 2. Recalculate container width. + link = ($scope, $el, $attrs) -> - - #TODO: Only header is folding/unfolding so - # 1. Fold/Unfold also related column (.task-colum-name and .task-colum) - # 2. Save folded/unfolded column status - # 3. Recalculate container width - - $el.on "click", ".hfold", (event) -> - target = angular.element(event.currentTarget) - fold(target) - - $el.on "click", ".hunfold", (event) -> - target = angular.element(event.currentTarget) - unfold(target) - - fold = (target) -> - target.closest('.task-colum-name').addClass('fold') - target.toggleClass('hidden') - target.siblings('.hunfold').toggleClass('hidden') - - unfold = (target) -> - target.closest('.task-colum-name').removeClass('fold') - target.toggleClass('hidden') - target.siblings('.hfold').toggleClass('hidden') + $scope.folds = [] + $scope.foldStatus = (status) -> + $scope.folds[status.id] = !!!$scope.folds[status.id] + if $scope.folds[status.id] + fold() return {link: link} diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index 16a2fa29..384643f1 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -1,11 +1,11 @@ div.kanban-table(tg-kanban-squish-column) div.kanban-table-header div.kanban-table-inner(tg-kanban-row-width-fixer) - h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}") + h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}", tg-bo-title="s.name", ng-class='{vfold:folds[s.id]}') span(tg-bo-bind="s.name") div.options - a.icon.icon-vfold.hfold(href="", title="Fold Column") - a.icon.icon-vunfold.hunfold.hidden(href="", title="Unfold Column") + a.icon.icon-vfold.hfold(href="", ng-click='foldStatus(s)' title="Fold Column", ng-class='{hidden:folds[s.id]}') + a.icon.icon-vunfold.hunfold(href="", ng-click='foldStatus(s)', title="Unfold Column", ng-class='{hidden:!folds[s.id]}') a.icon.icon-vfold(href="", title="Fold Cards", ng-if="statusViewModes[s.id] == 'maximized'", ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") @@ -23,10 +23,10 @@ div.kanban-table(tg-kanban-squish-column) div.kanban-table-body div.kanban-table-inner(tg-kanban-row-width-fixer) - div.kanban-uses-box.task-column(ng-repeat="status in usStatusList track by status.id", + div.kanban-uses-box.task-column(ng-class='{vfold:folds[s.id]}', ng-repeat="s in usStatusList track by s.id", tg-kanban-sortable, tg-kanban-wip-limit, tg-kanban-column-height-fixer) - div.kanban-task(ng-repeat="us in usByStatus[status.id] track by us.id", + div.kanban-task(ng-repeat="us in usByStatus[s.id] track by us.id", tg-kanban-userstory, ng-model="us", - ng-class="ctrl.getCardClass(status.id)") + ng-class="ctrl.getCardClass(s.id)") diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index dc2a9f5b..94ea92ca 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -1,6 +1,7 @@ //Table basic shared vars $column-width: 300px; +$column-folded-width: 30px; $column-flex: 1; $column-shrink: 0; $column-margin: 0 10px 0 0; @@ -8,16 +9,22 @@ $column-margin: 0 10px 0 0; .kanban-table { overflow: hidden; width: 100%; - .fold { + .vfold { &.task-colum-name { + @include align-items(center); + @include justify-content(center); @include transition(opacity .3s linear); cursor: pointer; opacity: .8; + padding: .5rem; &:hover { @include transition(opacity .3s linear); opacity: 1; } - div, + .icon-plus, + .icon-bulk, + .icon-vfold, + .icon-vunfold, span { display: none; } @@ -25,10 +32,9 @@ $column-margin: 0 10px 0 0; &.task-colum-name, &.task-column { @include table-flex-child(1, 0, 0); - border: 0; - max-width: 30px; + max-width: $column-folded-width; min-height: 2.5rem; - width: 30px; + width: $column-folded-width; } .kanban-task { display: none; From 53745273e65c39568e83a1bbc89f84ad8e4e186f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Mon, 17 Nov 2014 12:30:16 +0100 Subject: [PATCH 06/12] Save fold unfold status on storage --- app/coffee/modules/kanban/main.coffee | 14 +++++++------- app/coffee/modules/resources/kanban.coffee | 11 +++++++++++ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 5aa50532..6d65de4c 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -359,22 +359,22 @@ module.directive("tgKanbanUserstory", ["$rootScope", KanbanUserstoryDirective]) ## Kanban Squish Column Directive ############################################################################# -KanbanSquishColumnDirective = -> +KanbanSquishColumnDirective = (rs) -> #TODO: Only header is folding/unfolding so - # 1. Save folded/unfolded column status. - # 2. Recalculate container width. + # 1. Recalculate container width. link = ($scope, $el, $attrs) -> - $scope.folds = [] + $scope.$on "project:loaded", (event, project) -> + $scope.folds = rs.kanban.getStatusColumnModes(project.id) + $scope.foldStatus = (status) -> $scope.folds[status.id] = !!!$scope.folds[status.id] - if $scope.folds[status.id] - fold() + rs.kanban.storeStatusColumnModes($scope.projectId, $scope.folds) return {link: link} -module.directive("tgKanbanSquishColumn", KanbanSquishColumnDirective) +module.directive("tgKanbanSquishColumn", ["$tgResources", KanbanSquishColumnDirective]) ############################################################################# ## Kaban WIP Limit Directive diff --git a/app/coffee/modules/resources/kanban.coffee b/app/coffee/modules/resources/kanban.coffee index a5c1fd53..b1268dfe 100644 --- a/app/coffee/modules/resources/kanban.coffee +++ b/app/coffee/modules/resources/kanban.coffee @@ -27,6 +27,7 @@ generateHash = taiga.generateHash resourceProvider = ($storage) -> service = {} hashSuffixStatusViewModes = "kanban-statusviewmodels" + hashSuffixStatusColumnModes = "kanban-statuscolumnmodels" service.storeStatusViewModes = (projectId, params) -> ns = "#{projectId}:#{hashSuffixStatusViewModes}" @@ -38,6 +39,16 @@ resourceProvider = ($storage) -> hash = generateHash([projectId, ns]) return $storage.get(hash) or {} + service.storeStatusColumnModes = (projectId, params) -> + ns = "#{projectId}:#{hashSuffixStatusColumnModes}" + hash = generateHash([projectId, ns]) + $storage.set(hash, params) + + service.getStatusColumnModes = (projectId) -> + ns = "#{projectId}:#{hashSuffixStatusColumnModes}" + hash = generateHash([projectId, ns]) + return $storage.get(hash) or {} + return (instance) -> instance.kanban = service From 91c3b213e8ba7543998eeedfd2f421dcddd5f4ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Mon, 17 Nov 2014 12:59:05 +0100 Subject: [PATCH 07/12] Recalculate Kanban Table Container Width on load page --- app/coffee/modules/kanban/main.coffee | 11 ++++++++--- app/styles/modules/kanban/kanban-table.scss | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 6d65de4c..e0f2a740 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -283,9 +283,14 @@ module.directive("tgKanban", ["$tgRepo", "$rootScope", KanbanDirective]) KanbanRowWidthFixerDirective = -> link = ($scope, $el, $attrs) -> bindOnce $scope, "usStatusList", (statuses) -> - itemSize = 310 - size = (statuses.length * itemSize) - 10 - $el.css("width", "#{size}px") + columnWidths = _.map statuses, (status) -> + if $scope.folds[status.id] + return 40 + else + return 310 + totalWidth = _.reduce columnWidths, (total, width) -> + return total + width + $el.css("width", totalWidth) $scope.$on "$destroy", -> $el.off() diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index 94ea92ca..a10330ba 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -34,6 +34,7 @@ $column-margin: 0 10px 0 0; @include table-flex-child(1, 0, 0); max-width: $column-folded-width; min-height: 2.5rem; + min-width: $column-folded-width; width: $column-folded-width; } .kanban-task { From f5c6031262c3c1647e1d8f3bfa5d6f16f20a3b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Mon, 17 Nov 2014 15:59:31 +0100 Subject: [PATCH 08/12] Kanban Table Width Recalculation on Squish Columns --- app/coffee/modules/kanban/main.coffee | 39 ++++++-------------- app/partials/views/modules/kanban-table.jade | 2 +- 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index e0f2a740..c05c95b5 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -276,30 +276,6 @@ KanbanDirective = ($repo, $rootscope) -> module.directive("tgKanban", ["$tgRepo", "$rootScope", KanbanDirective]) -############################################################################# -## Kanban Row Size Fixer Directive -############################################################################# - -KanbanRowWidthFixerDirective = -> - link = ($scope, $el, $attrs) -> - bindOnce $scope, "usStatusList", (statuses) -> - columnWidths = _.map statuses, (status) -> - if $scope.folds[status.id] - return 40 - else - return 310 - totalWidth = _.reduce columnWidths, (total, width) -> - return total + width - $el.css("width", totalWidth) - - $scope.$on "$destroy", -> - $el.off() - - return {link: link} - -module.directive("tgKanbanRowWidthFixer", KanbanRowWidthFixerDirective) - - ############################################################################# ## Kanban Column Height Fixer Directive ############################################################################# @@ -366,16 +342,25 @@ module.directive("tgKanbanUserstory", ["$rootScope", KanbanUserstoryDirective]) KanbanSquishColumnDirective = (rs) -> - #TODO: Only header is folding/unfolding so - # 1. Recalculate container width. - link = ($scope, $el, $attrs) -> $scope.$on "project:loaded", (event, project) -> $scope.folds = rs.kanban.getStatusColumnModes(project.id) + updateTableWidth() $scope.foldStatus = (status) -> $scope.folds[status.id] = !!!$scope.folds[status.id] rs.kanban.storeStatusColumnModes($scope.projectId, $scope.folds) + updateTableWidth() + + updateTableWidth = -> + columnWidths = _.map $scope.usStatusList, (status) -> + if $scope.folds[status.id] + return 40 + else + return 310 + totalWidth = _.reduce columnWidths, (total, width) -> + return total + width + $el.find('.kanban-table-inner').css("width", totalWidth) return {link: link} diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index 384643f1..ea3d6baf 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -1,6 +1,6 @@ div.kanban-table(tg-kanban-squish-column) div.kanban-table-header - div.kanban-table-inner(tg-kanban-row-width-fixer) + div.kanban-table-inner h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}", tg-bo-title="s.name", ng-class='{vfold:folds[s.id]}') span(tg-bo-bind="s.name") div.options From 6d817c29444c7666db382c907a3eb9285ad4d65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Mon, 17 Nov 2014 16:15:34 +0100 Subject: [PATCH 09/12] Kanban table header icon responsive --- app/styles/modules/kanban/kanban-table.scss | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index a10330ba..30a06e50 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -11,15 +11,18 @@ $column-margin: 0 10px 0 0; width: 100%; .vfold { &.task-colum-name { + @include table-flex(); @include align-items(center); @include justify-content(center); @include transition(opacity .3s linear); cursor: pointer; opacity: .8; - padding: .5rem; + padding: .5rem 0; &:hover { - @include transition(opacity .3s linear); - opacity: 1; + .icon.hunfold { + @include transition(opacity .3s linear); + opacity: 1; + } } .icon-plus, .icon-bulk, @@ -28,6 +31,11 @@ $column-margin: 0 10px 0 0; span { display: none; } + .hunfold { + @include transition(opacity .3s linear); + margin: 0; + opacity: 0; + } } &.task-colum-name, &.task-column { From 18bf7d9f4b6da67d81cb034affe8e32a345533d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Mon, 17 Nov 2014 16:48:43 +0100 Subject: [PATCH 10/12] Fixed JS bug and CSS show/hide effect --- app/coffee/modules/kanban/main.coffee | 1 + app/partials/views/modules/kanban-table.jade | 4 ++++ app/styles/modules/kanban/kanban-table.scss | 8 -------- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index c05c95b5..1038f5b3 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -351,6 +351,7 @@ KanbanSquishColumnDirective = (rs) -> $scope.folds[status.id] = !!!$scope.folds[status.id] rs.kanban.storeStatusColumnModes($scope.projectId, $scope.folds) updateTableWidth() + return updateTableWidth = -> columnWidths = _.map $scope.usStatusList, (status) -> diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index ea3d6baf..9a9f9099 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -4,8 +4,12 @@ div.kanban-table(tg-kanban-squish-column) h2.task-colum-name(ng-repeat="s in usStatusList track by s.id", ng-style="{'border-top-color':s.color}", tg-bo-title="s.name", ng-class='{vfold:folds[s.id]}') span(tg-bo-bind="s.name") div.options + + a.icon.icon-vfold.hfold(href="", ng-click='foldStatus(s)' title="Fold Column", ng-class='{hidden:folds[s.id]}') a.icon.icon-vunfold.hunfold(href="", ng-click='foldStatus(s)', title="Unfold Column", ng-class='{hidden:!folds[s.id]}') + + a.icon.icon-vfold(href="", title="Fold Cards", ng-if="statusViewModes[s.id] == 'maximized'", ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index 30a06e50..bc982c17 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -18,12 +18,6 @@ $column-margin: 0 10px 0 0; cursor: pointer; opacity: .8; padding: .5rem 0; - &:hover { - .icon.hunfold { - @include transition(opacity .3s linear); - opacity: 1; - } - } .icon-plus, .icon-bulk, .icon-vfold, @@ -32,9 +26,7 @@ $column-margin: 0 10px 0 0; display: none; } .hunfold { - @include transition(opacity .3s linear); margin: 0; - opacity: 0; } } &.task-colum-name, From 02d507a2818ba1c8adf6c8f5f8ba5edb76462416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Mon, 17 Nov 2014 16:52:58 +0100 Subject: [PATCH 11/12] Changed ng-if with ng-class hidden on compact user stories --- app/partials/views/modules/kanban-table.jade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index 9a9f9099..1e80c37b 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -11,10 +11,10 @@ div.kanban-table(tg-kanban-squish-column) a.icon.icon-vfold(href="", title="Fold Cards", - ng-if="statusViewModes[s.id] == 'maximized'", + ng-class="{hidden:statusViewModes[s.id] == 'minimized'}", ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") a.icon.icon-vunfold(href="", title="Unfold Cards", - ng-if="statusViewModes[s.id] == 'minimized'", + ng-class="{hidden:statusViewModes[s.id] == 'maximized'}", ng-click="ctrl.updateStatusViewMode(s.id, 'maximized')") a.icon.icon-plus(href="", title="Add New task", From 3c6018ae0f6e68e8c35f10ec1441e218005d7258 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Tue, 18 Nov 2014 12:45:03 +0100 Subject: [PATCH 12/12] fix kanban column width when the user fold & unfold --- app/styles/modules/kanban/kanban-table.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/styles/modules/kanban/kanban-table.scss b/app/styles/modules/kanban/kanban-table.scss index bc982c17..fe12d441 100644 --- a/app/styles/modules/kanban/kanban-table.scss +++ b/app/styles/modules/kanban/kanban-table.scss @@ -2,7 +2,7 @@ $column-width: 300px; $column-folded-width: 30px; -$column-flex: 1; +$column-flex: 0; $column-shrink: 0; $column-margin: 0 10px 0 0; @@ -53,7 +53,7 @@ $column-margin: 0 10px 0 0; position: absolute; } .task-colum-name { - @include table-flex-child(); + @include table-flex-child($column-flex, $column-width, $column-shrink, $column-width); @include table-flex(); @include justify-content(space-between); @extend %large; @@ -90,7 +90,7 @@ $column-margin: 0 10px 0 0; overflow-x: auto; width: 100%; .task-column { - @include table-flex-child(); + @include table-flex-child($column-flex, $column-width, $column-shrink, $column-width); margin: $column-margin; overflow-y: auto; &:last-child {