Update Epic Status

stable
Xavier Julián 2016-07-22 14:03:12 +02:00 committed by David Barragán Merino
parent 9c1a7013b8
commit 6e6257f039
7 changed files with 70 additions and 14 deletions

View File

@ -21,16 +21,33 @@ module = angular.module("taigaEpics")
class EpicRowController
@.$inject = [
"tgResources",
"$tgConfirm"
]
constructor: () ->
console.log @.epic.toJS()
console.log @.project
constructor: (@rs, @confirm) ->
@._calculateProgressBar()
_calculateProgressBar: () ->
totalUs = @.epic.getIn(['user_stories_counts', 'closed'])
totalUsCompleted = @.epic.getIn(['user_stories_counts', 'opened'])
@.percentage = (totalUs * 100) / totalUsCompleted
@.percentage = totalUs * 100 / totalUsCompleted
updateEpicStatus: (status) ->
id = @.epic.get('id')
version = @.epic.get('version')
patch = {
'status': status,
'version': version
}
onSuccess = =>
@.onUpdateEpicStatus()
onError = (data) =>
console.log data
@confirm.notify('error')
return @rs.epics.patch(id, patch).then(onSuccess, onError)
module.controller("EpicRowCtrl", EpicRowController)

View File

@ -29,7 +29,9 @@ EpicRowDirective = () ->
scope: {
project: '=',
epic: '=',
column: '='
column: '=',
permissions: '=',
onUpdateEpicStatus: "&"
}
}

View File

@ -1,7 +1,9 @@
.epic-row(
ng-class="{'is-blocked': vm.epic.get('is_blocked'), 'is-closed': vm.epic.get('is_closed')}"
)
tg-svg(svg-icon="icon-drag")
tg-svg(
svg-icon="icon-drag"
)
.vote(
ng-if="vm.column.votes"
ng-class="{'is-voter': vm.epic.get('is_voter')}"
@ -31,14 +33,18 @@
ng-if="vm.column.assigned && !vm.epic.getIn(['assigned_to_extra_info', 'photo'])"
) Unassigned
.status(
ng-if="vm.column.status"
ng-if="vm.column.status && !vm.permissions.canEdit"
)
span {{vm.epic.getIn(['status_extra_info', 'name'])}}
.status(
ng-if="vm.column.status && vm.permissions.canEdit"
ng-mouseleave="displayStatusList = false"
)
button(
ng-click="displayStatusList = true"
ng-style="{'color': vm.epic.getIn(['status_extra_info', 'color'])}"
)
span {{::vm.epic.getIn(['status_extra_info', 'name'])}}
span {{vm.epic.getIn(['status_extra_info', 'name'])}}
tg-svg(
svg-icon="icon-arrow-down"
)
@ -46,7 +52,7 @@
ul.epic-statuses(ng-show="displayStatusList")
li(
ng-repeat="status in vm.project.epic_statuses | orderBy:'order'"
ng-click="vm.updateEpicStatus(status.name)"
ng-click="vm.updateEpicStatus(status.id)"
) {{status.name}}
.progress(ng-if="vm.column.progress")
.progress-bar

View File

@ -2,7 +2,14 @@
@include font-size(small);
align-items: center;
border-bottom: 1px solid $whitish;
cursor: pointer;
display: flex;
&:hover {
.icon-drag {
cursor: move;
opacity: 1;
}
}
&.is-blocked {
background: rgba($red-light, .5);
}
@ -13,7 +20,10 @@
}
}
.icon-drag {
fill: $gray-light;
@include svg-size(.75rem);
fill: $whitish;
opacity: 0;
transition: opacity .1s;
}
.status {
cursor: pointer;

View File

@ -36,15 +36,21 @@ class EpicsTableController
status: true,
progress: true
}
@._loadEpics()
@.loadEpics()
@._checkPermissions()
toggleEpicTableOptions: () ->
@.displayOptions = !@.displayOptions
_loadEpics: () ->
_checkPermissions: () ->
@.permissions = {
canEdit: _.includes(@.project.my_permissions, 'modify_epic')
}
loadEpics: () ->
projectId = @.project.id
params = {}
promise = @rs.epics.listAll(projectId, params).then (epics) =>
promise = @rs.epics.list(projectId).then (epics) =>
@.epics = epics
console.log @.epics
module.controller("EpicsTableCtrl", EpicsTableController)

View File

@ -94,4 +94,6 @@ mixin epicSwitch(name, model)
epic="epic"
project="vm.project"
column="vm.column"
on-update-epic-status="vm.loadEpics()"
permissions="vm.permissions"
)

View File

@ -28,6 +28,19 @@ Resource = (urlsService, http) ->
return http.get(url, params, httpOptions).then (result) ->
return Immutable.fromJS(result.data)
service.list = (projectId) ->
url = urlsService.resolve("epics")
params = {project: projectId}
return http.get(url, params)
.then (result) -> Immutable.fromJS(result.data)
service.patch = (id, patch) ->
url = urlsService.resolve("epics") + "/#{id}"
return http.patch(url, patch)
return () ->
return {"epics": service}