Update Epic Status
parent
9c1a7013b8
commit
6e6257f039
|
@ -21,16 +21,33 @@ module = angular.module("taigaEpics")
|
||||||
|
|
||||||
class EpicRowController
|
class EpicRowController
|
||||||
@.$inject = [
|
@.$inject = [
|
||||||
|
"tgResources",
|
||||||
|
"$tgConfirm"
|
||||||
]
|
]
|
||||||
|
|
||||||
constructor: () ->
|
constructor: (@rs, @confirm) ->
|
||||||
console.log @.epic.toJS()
|
|
||||||
console.log @.project
|
|
||||||
@._calculateProgressBar()
|
@._calculateProgressBar()
|
||||||
|
|
||||||
_calculateProgressBar: () ->
|
_calculateProgressBar: () ->
|
||||||
totalUs = @.epic.getIn(['user_stories_counts', 'closed'])
|
totalUs = @.epic.getIn(['user_stories_counts', 'closed'])
|
||||||
totalUsCompleted = @.epic.getIn(['user_stories_counts', 'opened'])
|
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)
|
module.controller("EpicRowCtrl", EpicRowController)
|
||||||
|
|
|
@ -29,7 +29,9 @@ EpicRowDirective = () ->
|
||||||
scope: {
|
scope: {
|
||||||
project: '=',
|
project: '=',
|
||||||
epic: '=',
|
epic: '=',
|
||||||
column: '='
|
column: '=',
|
||||||
|
permissions: '=',
|
||||||
|
onUpdateEpicStatus: "&"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
.epic-row(
|
.epic-row(
|
||||||
ng-class="{'is-blocked': vm.epic.get('is_blocked'), 'is-closed': vm.epic.get('is_closed')}"
|
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(
|
.vote(
|
||||||
ng-if="vm.column.votes"
|
ng-if="vm.column.votes"
|
||||||
ng-class="{'is-voter': vm.epic.get('is_voter')}"
|
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'])"
|
ng-if="vm.column.assigned && !vm.epic.getIn(['assigned_to_extra_info', 'photo'])"
|
||||||
) Unassigned
|
) Unassigned
|
||||||
.status(
|
.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"
|
ng-mouseleave="displayStatusList = false"
|
||||||
)
|
)
|
||||||
button(
|
button(
|
||||||
ng-click="displayStatusList = true"
|
ng-click="displayStatusList = true"
|
||||||
ng-style="{'color': vm.epic.getIn(['status_extra_info', 'color'])}"
|
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(
|
tg-svg(
|
||||||
svg-icon="icon-arrow-down"
|
svg-icon="icon-arrow-down"
|
||||||
)
|
)
|
||||||
|
@ -46,7 +52,7 @@
|
||||||
ul.epic-statuses(ng-show="displayStatusList")
|
ul.epic-statuses(ng-show="displayStatusList")
|
||||||
li(
|
li(
|
||||||
ng-repeat="status in vm.project.epic_statuses | orderBy:'order'"
|
ng-repeat="status in vm.project.epic_statuses | orderBy:'order'"
|
||||||
ng-click="vm.updateEpicStatus(status.name)"
|
ng-click="vm.updateEpicStatus(status.id)"
|
||||||
) {{status.name}}
|
) {{status.name}}
|
||||||
.progress(ng-if="vm.column.progress")
|
.progress(ng-if="vm.column.progress")
|
||||||
.progress-bar
|
.progress-bar
|
||||||
|
|
|
@ -2,7 +2,14 @@
|
||||||
@include font-size(small);
|
@include font-size(small);
|
||||||
align-items: center;
|
align-items: center;
|
||||||
border-bottom: 1px solid $whitish;
|
border-bottom: 1px solid $whitish;
|
||||||
|
cursor: pointer;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
&:hover {
|
||||||
|
.icon-drag {
|
||||||
|
cursor: move;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
&.is-blocked {
|
&.is-blocked {
|
||||||
background: rgba($red-light, .5);
|
background: rgba($red-light, .5);
|
||||||
}
|
}
|
||||||
|
@ -13,7 +20,10 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.icon-drag {
|
.icon-drag {
|
||||||
fill: $gray-light;
|
@include svg-size(.75rem);
|
||||||
|
fill: $whitish;
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity .1s;
|
||||||
}
|
}
|
||||||
.status {
|
.status {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
|
|
@ -36,15 +36,21 @@ class EpicsTableController
|
||||||
status: true,
|
status: true,
|
||||||
progress: true
|
progress: true
|
||||||
}
|
}
|
||||||
@._loadEpics()
|
@.loadEpics()
|
||||||
|
@._checkPermissions()
|
||||||
|
|
||||||
toggleEpicTableOptions: () ->
|
toggleEpicTableOptions: () ->
|
||||||
@.displayOptions = !@.displayOptions
|
@.displayOptions = !@.displayOptions
|
||||||
|
|
||||||
_loadEpics: () ->
|
_checkPermissions: () ->
|
||||||
|
@.permissions = {
|
||||||
|
canEdit: _.includes(@.project.my_permissions, 'modify_epic')
|
||||||
|
}
|
||||||
|
|
||||||
|
loadEpics: () ->
|
||||||
projectId = @.project.id
|
projectId = @.project.id
|
||||||
params = {}
|
promise = @rs.epics.list(projectId).then (epics) =>
|
||||||
promise = @rs.epics.listAll(projectId, params).then (epics) =>
|
|
||||||
@.epics = epics
|
@.epics = epics
|
||||||
|
console.log @.epics
|
||||||
|
|
||||||
module.controller("EpicsTableCtrl", EpicsTableController)
|
module.controller("EpicsTableCtrl", EpicsTableController)
|
||||||
|
|
|
@ -94,4 +94,6 @@ mixin epicSwitch(name, model)
|
||||||
epic="epic"
|
epic="epic"
|
||||||
project="vm.project"
|
project="vm.project"
|
||||||
column="vm.column"
|
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 http.get(url, params, httpOptions).then (result) ->
|
||||||
return Immutable.fromJS(result.data)
|
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 () ->
|
||||||
return {"epics": service}
|
return {"epics": service}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue