From dfcc1b567d17d58c9e7caf2d39d561f9fed06817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Barrag=C3=A1n=20Merino?= Date: Wed, 17 Sep 2014 14:12:02 +0200 Subject: [PATCH] US #903: Task #1014: Toggle view mode --- app/coffee/modules/kanban/main.coffee | 30 ++++++++++++++++++++ app/partials/views/modules/kanban-table.jade | 25 ++++++++++++---- 2 files changed, 49 insertions(+), 6 deletions(-) diff --git a/app/coffee/modules/kanban/main.coffee b/app/coffee/modules/kanban/main.coffee index 4bc3b172..5887216d 100644 --- a/app/coffee/modules/kanban/main.coffee +++ b/app/coffee/modules/kanban/main.coffee @@ -30,6 +30,19 @@ timeout = @.taiga.timeout module = angular.module("taigaKanban") +# Vars + +defaultViewMode = "maximized" +defaultViewModes = { + maximized: { + cardClass: "kanban-task-maximized" + } + minimized: { + cardClass: "kanban-task-minimized" + } +} + + ############################################################################# ## Kanban Controller ############################################################################# @@ -147,6 +160,7 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi @scope.usStatusById = groupBy(project.us_statuses, (x) -> x.id) @scope.usStatusList = _.sortBy(project.us_statuses, "order") + @.loadStatusViewMode() @scope.$emit("project:loaded", project) return project @@ -161,6 +175,22 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi .then(=> @.loadKanban()) .then(=> @scope.$broadcast("redraw:wip")) + ## View Mode methods + + loadStatusViewMode: -> + @scope.statusViewModes = {} + for status in @scope.usStatusList + @scope.statusViewModes[status.id] = defaultViewMode + + updateStatusViewMode: (statusId, newViewMode) -> + @scope.statusViewModes[statusId] = newViewMode + + getCardClass: (statusId)-> + mode = @scope.statusViewModes[statusId] or defaultViewMode + return defaultViewModes[mode].cardClass or defaultViewModes[defaultViewMode].cardClass + + # Utils methods + prepareBulkUpdateData: (uses, field="kanban_order") -> return _.map(uses, (x) -> {"us_id": x.id, "order": x[field]}) diff --git a/app/partials/views/modules/kanban-table.jade b/app/partials/views/modules/kanban-table.jade index 0e907dd6..6e40e0ec 100644 --- a/app/partials/views/modules/kanban-table.jade +++ b/app/partials/views/modules/kanban-table.jade @@ -4,15 +4,28 @@ div.kanban-table 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") - a.icon.icon-minimize(href="", title="Add New task") - //-a.icon.icon-maximize(href="", title="Add New task") - a.icon.icon-plus(tg-check-permission="add_us", href="", title="Add New task", ng-click="ctrl.addNewUs('standard', s.id)") - a.icon.icon-bulk(tg-check-permission="add_us", href="", title="Add New bulk", ng-click="ctrl.addNewUs('bulk', s.id)") + + a.icon.icon-minimize(href="", title="Minimize", + ng-if="statusViewModes[s.id] == 'maximized'", + ng-click="ctrl.updateStatusViewMode(s.id, 'minimized')") + a.icon.icon-maximize(href="", title="Maximize", + ng-if="statusViewModes[s.id] == 'minimized'", + ng-click="ctrl.updateStatusViewMode(s.id, 'maximized')") + + a.icon.icon-plus(href="", title="Add New task", + ng-click="ctrl.addNewUs('standard', s.id)", + tg-check-permission="add_us") + + a.icon.icon-bulk(href="", title="Add New bulk", + ng-click="ctrl.addNewUs('bulk', s.id)", + tg-check-permission="add_us") + 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", tg-kanban-sortable, tg-kanban-wip-limit, tg-kanban-column-height-fixer) - div.kanban-task.kanban-task-maximized(ng-repeat="us in usByStatus[status.id] track by us.id", - tg-kanban-userstory, ng-model="us") + 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)")