rosa-abf/rosa-build

View on GitHub
app/assets/javascripts/angularjs/issues/issue_controller.js.coffee

Summary

Maintainability
Test Coverage
IssueController = (dataservice, $http, Issue, $rootScope, Preview, Label, confirmMessage) ->
 
updateIssueFromResponse = (response) ->
$('#issue_title_text').html(response.data.title)
$('#issue_body_text').html(response.data.body)
vm.assignee = response.data.assignee
vm.labels = response.data.labels
vm.status = response.data.status
 
updateStatusCLass()
 
getLabels = ->
promise = Label.get_labels(vm.project)
promise.then (response) ->
old_labels = vm.labels
vm.labels = response.data
_.each(vm.labels, (l) ->
_.each(old_labels, (ol) ->
if l.id is ol.id
l.selected = ol.selected
l.style = ol.style
l.selected_id = ol.selected_id
)
)
true
 
updateStatusCLass = ->
if vm.status.name is 'open' or vm.status.name is 'reopen'
vm.issue_status_class = 'btn-primary'
else
vm.issue_status_class = 'btn-danger'
 
 
vm = this
 
vm.previewBody = ->
body = $('#issue-body').val()
if body is '' or !body
vm.preview_body = ''
return false
if body is Preview.old_text
return false
 
return false if vm.processing
vm.processing = true
 
promise = Preview.get_preview(vm.project, body)
promise.success( (response) ->
vm.preview_body = response.html
Preview.old_text = body
).error( (response) ->
vm.preview_body = 'Error :('
)
 
vm.processing = false
false
 
vm.toggleLabel = (label) ->
if vm.action is 'show'
return false if vm.processing_issue_labels
vm.processing_issue_labels = true
 
label.selected = !label.selected
if label.selected
label.style = label.default_style
label.selected_id = label.id
else
label.selected_id = null
label.style = {}
 
if vm.action is 'show'
vm.updateIssue('labels', label: label)
true
 
vm.getAssignees = (val) ->
vm.processing_issue_assignee = true
promise = Issue.getAssignees(vm.project, val)
promise.then (response) ->
vm.processing_issue_assignee = false
response.data
 
vm.selectAssignee = (item, model, label) ->
if vm.action is 'show'
return false if vm.processing_issue_assignee
vm.processing_issue_assignee = true
 
vm.assignee = item
 
if vm.action is 'show'
vm.updateIssue('assignee', assignee: vm.assignee)
vm.toggle_manage_assignee = false
false
 
vm.removeAssignee = () ->
return false unless confirmMessage.show()
if vm.action is 'show'
return false if vm.processing_issue_assignee
vm.processing_issue_assignee = true
 
vm.assignee = {}
 
if vm.action is 'show'
vm.updateIssue('assignee', assignee: vm.assignee)
vm.toggle_manage_assignee = false
false
 
vm.updateStatus = ->
return false if vm.action isnt 'show'
return false if vm.processing_issue_status
vm.processing_issue_status = true
vm.updateIssue('status', status: vm.status)
false
 
vm.updateIssue = (kind, extra = {}) ->
promise = Issue.update(vm.project, vm.serial_id, kind, extra)
promise.then (response) ->
updateIssueFromResponse(response)
vm.edit = false if kind is 'title_body'
if vm.action is 'show' and vm.processing_issue_assignee
vm.processing_issue_assignee = false
if vm.action is 'show' and vm.processing_issue_labels
vm.processing_issue_labels = false
if vm.action is 'show' and vm.processing_issue_status
vm.processing_issue_status = false
false
 
 
$rootScope.$on "updateLabels", (event, args) ->
getLabels()
 
init = (dataservice) ->
vm.project = dataservice.project
vm.serial_id = dataservice.serial_id
vm.labels = dataservice.labels
vm.action = dataservice.action
vm.assignee = dataservice.assignee
vm.status = dataservice.status
 
vm.toggle_manage_assignee = false
vm.processing = false
 
vm.processing_issue_labels = false
vm.processing_issue_assignee = false
 
updateStatusCLass()
 
init(dataservice)
true
 
angular
.module("RosaABF")
.controller "IssueController", IssueController
 
IssueController.$inject = [
'IssueInitializer'
'$http'
'Issue'
'$rootScope'
'Preview'
'Label'
'confirmMessage'
]