From 1891191ebc9f38377ea95f88738dc59b16fbcca1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xavier=20Juli=C3=A1n?= Date: Tue, 2 Aug 2016 10:24:33 +0200 Subject: [PATCH] Update assigned --- .../assigned-item.directive.coffee | 5 +-- .../assigned-item/assigned-item.jade | 2 +- .../assigned-item/assigned-item.scss | 8 +++-- .../assigned-to-selector.controller.coffee | 17 ++++++--- .../assigned-to-selector.directive.coffee | 4 ++- .../assigned-to-selector.jade | 12 ++++++- .../assigned-to-selector.scss | 20 +++++++++++ .../assigned-to/assigned-to.controller.coffee | 23 +++++++++--- .../assigned-to/assigned-to.directive.coffee | 4 ++- .../epic-row/epic-row.controller.coffee | 35 +++++++++++++++++-- .../epics/dashboard/epic-row/epic-row.jade | 2 ++ 11 files changed, 109 insertions(+), 23 deletions(-) diff --git a/app/modules/components/assigned-to/assigned-item/assigned-item.directive.coffee b/app/modules/components/assigned-to/assigned-item/assigned-item.directive.coffee index 42bcf36d..709ba6cc 100644 --- a/app/modules/components/assigned-to/assigned-item/assigned-item.directive.coffee +++ b/app/modules/components/assigned-to/assigned-item/assigned-item.directive.coffee @@ -22,12 +22,9 @@ AssignedItemDirective = () -> link = (scope, el, attrs) -> return { - # controller: "AssignedToSelectorCtrl", - # controllerAs: "vm", - # bindToController: true, templateUrl: "components/assigned-to/assigned-item/assigned-item.html", scope: { - member: "=", + member: "=" }, link: link } diff --git a/app/modules/components/assigned-to/assigned-item/assigned-item.jade b/app/modules/components/assigned-to/assigned-item/assigned-item.jade index 28564e61..b0c06515 100644 --- a/app/modules/components/assigned-to/assigned-item/assigned-item.jade +++ b/app/modules/components/assigned-to/assigned-item/assigned-item.jade @@ -1,3 +1,3 @@ -.assignable-member-single(ng-click="onSelectMember()") +.assignable-member-single img.assignable-member-avatar(tg-avatar="member") .assignable-member-name {{member.full_name}} diff --git a/app/modules/components/assigned-to/assigned-item/assigned-item.scss b/app/modules/components/assigned-to/assigned-item/assigned-item.scss index a4865088..132d34aa 100644 --- a/app/modules/components/assigned-to/assigned-item/assigned-item.scss +++ b/app/modules/components/assigned-to/assigned-item/assigned-item.scss @@ -1,12 +1,14 @@ .assignable-member-single { align-items: center; - background: $white; - border-bottom: 1px solid $whitish; display: flex; padding: .25rem 0; + .assigned-members-option & { + background: $white; + border-bottom: 1px solid $whitish; + cursor: pointer; + } &:hover { background: rgba($primary-light, .05); - cursor: pointer; } .assignable-member-avatar { flex-basis: 3rem; diff --git a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.controller.coffee b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.controller.coffee index 65bf4b42..4e70615b 100644 --- a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.controller.coffee +++ b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.controller.coffee @@ -21,14 +21,21 @@ class AssignedToSelectorController @.$inject = [] constructor: () -> + if @.assigned + @._getAssignedMember() @._filterAssignedMember() - _filterAssignedMember: () -> - @.nonAssignedMembers = _.filter(@.project.members, (member) => - return member.id != @.assigned.get('id') + _getAssignedMember: () -> + @.assignedMember = _.filter(@.project.members, (member) => + return member.id == @.assigned.get('id') ) - onAssignTo: (member) -> - console.log member + _filterAssignedMember: () -> + if @.assigned + @.nonAssignedMembers = _.filter(@.project.members, (member) => + return member.id != @.assigned.get('id') + ) + else + @.nonAssignedMembers = @.project.members angular.module('taigaComponents').controller('AssignedToSelectorCtrl', AssignedToSelectorController) diff --git a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.directive.coffee b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.directive.coffee index 33b828d0..b840e856 100644 --- a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.directive.coffee +++ b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.directive.coffee @@ -26,7 +26,9 @@ AssignedToSelectorDirective = () -> templateUrl: "components/assigned-to/assigned-to-selector/assigned-to-selector.html", scope: { assigned: "=", - project: "=" + project: "=", + onRemoveAssigned: "&", + onAssignTo: "&" } } diff --git a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.jade b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.jade index 12c02a7c..e74b5bb3 100644 --- a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.jade +++ b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.jade @@ -10,8 +10,18 @@ tg-lightbox-close ng-model-options="{debounce: 200}" ) ul.assignable-member-list + li.assigned-member( + ng-repeat="member in vm.assignedMember" + ng-if="vm.assigned" + ) + tg-assigned-item(member="member") + tg-svg.unassign-epic( + svg-icon="icon-close" + svg-title-translate="COMMON.ASSIGNED_TO.REMOVE_ASSIGNED" + ng-click="vm.onRemoveAssigned()" + ) li(ng-repeat="member in vm.nonAssignedMembers | filter: vm.assignToMember.name | limitTo:6") tg-assigned-item.assigned-members-option( member="member" - ng-click="vm.onAssignTo(member)" + ng-click="vm.onAssignTo({'member': member})" ) diff --git a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.scss b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.scss index c5b1aec3..ac54aa3a 100644 --- a/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.scss +++ b/app/modules/components/assigned-to/assigned-to-selector/assigned-to-selector.scss @@ -4,4 +4,24 @@ .assignable-member-list { margin-top: 1rem; + .assigned-member { + align-items: center; + background: rgba($primary-light, .05); + border-bottom: 1px solid $whitish; + display: flex; + justify-content: space-between; + margin-bottom: 1rem; + } + .unassign-epic { + cursor: pointer; + margin-right: 1rem; + } + .icon { + fill: $red-light; + transition: fill .2s; + &:hover { + cursor: pointer; + fill: $red; + } + } } diff --git a/app/modules/components/assigned-to/assigned-to.controller.coffee b/app/modules/components/assigned-to/assigned-to.controller.coffee index d3e1c878..dc69b30e 100644 --- a/app/modules/components/assigned-to/assigned-to.controller.coffee +++ b/app/modules/components/assigned-to/assigned-to.controller.coffee @@ -14,25 +14,38 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # -# File: attchment.controller.coffee +# File: assigned-to.controller.coffee ### class AssignedToController @.$inject = [ - "tgLightboxFactory" + "tgLightboxFactory", + "lightboxService", ] - constructor: (@lightboxFactory) -> + constructor: (@lightboxFactory, @lightboxService) -> @.has_permissions = _.includes(@.project.my_permissions, 'modify_epic') + _closeAndRemoveAssigned: () -> + @lightboxService.closeAll() + @.onRemoveAssigned() + + _closeAndAssign: (member) -> + @lightboxService.closeAll() + @.onAssignTo({'member': member}) + onSelectAssignedTo: (assigned, project) -> @lightboxFactory.create('tg-assigned-to-selector', { "class": "lightbox lightbox-assigned-to-selector open", "assigned": "assigned", - "project": "project" + "project": "project", + "on-remove-assigned": "onRemoveAssigned()" + "on-assign-to": "assignTo(member)" }, { "assigned": @.assignedTo, - "project": @.project + "project": @.project, + "onRemoveAssigned": @._closeAndRemoveAssigned.bind(this), + "assignTo": @._closeAndAssign.bind(this) }) angular.module('taigaComponents').controller('AssignedToCtrl', AssignedToController) diff --git a/app/modules/components/assigned-to/assigned-to.directive.coffee b/app/modules/components/assigned-to/assigned-to.directive.coffee index ae0683ce..a6ec47aa 100644 --- a/app/modules/components/assigned-to/assigned-to.directive.coffee +++ b/app/modules/components/assigned-to/assigned-to.directive.coffee @@ -26,7 +26,9 @@ AssignedToDirective = () -> templateUrl: "components/assigned-to/assigned-to.html", scope: { assignedTo: "=", - project: "=" + project: "=", + onRemoveAssigned: "&", + onAssignTo: "&" } } diff --git a/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee b/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee index ffe2898a..7b26a8d2 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee +++ b/app/modules/epics/dashboard/epic-row/epic-row.controller.coffee @@ -73,7 +73,38 @@ class EpicRowController else @.displayUserStories = false - onSelectAssignedTo: () -> - console.log 'Assigned to' + onRemoveAssigned: () -> + id = @.epic.get('id') + version = @.epic.get('version') + patch = { + 'assigned_to': null, + 'version': version + } + + onSuccess = => + @.onUpdateEpicStatus() + @confirm.notify('success') + + onError = (data) => + @confirm.notify('error') + + return @rs.epics.patch(id, patch).then(onSuccess, onError) + + onAssignTo: (member) -> + id = @.epic.get('id') + version = @.epic.get('version') + patch = { + 'assigned_to': member.id, + 'version': version + } + + onSuccess = => + @.onUpdateEpicStatus() + @confirm.notify('success') + + onError = (data) => + @confirm.notify('error') + + return @rs.epics.patch(id, patch).then(onSuccess, onError) module.controller("EpicRowCtrl", EpicRowController) diff --git a/app/modules/epics/dashboard/epic-row/epic-row.jade b/app/modules/epics/dashboard/epic-row/epic-row.jade index 627579ce..4e778250 100644 --- a/app/modules/epics/dashboard/epic-row/epic-row.jade +++ b/app/modules/epics/dashboard/epic-row/epic-row.jade @@ -35,6 +35,8 @@ tg-assigned-to-component( assigned-to="vm.epic.get('assigned_to_extra_info')" project="vm.project" + on-remove-assigned="vm.onRemoveAssigned()" + on-assign-to="vm.onAssignTo(member)" ) .status( ng-if="vm.column.status && !vm.permissions.canEdit"