Update Epic Status
parent
9c1a7013b8
commit
6e6257f039
|
@ -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)
|
||||
|
|
|
@ -29,7 +29,9 @@ EpicRowDirective = () ->
|
|||
scope: {
|
||||
project: '=',
|
||||
epic: '=',
|
||||
column: '='
|
||||
column: '=',
|
||||
permissions: '=',
|
||||
onUpdateEpicStatus: "&"
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
)
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
Loading…
Reference in New Issue