taiga-front/app/modules/components/detail/header/detail-header.controller.co...

103 lines
3.1 KiB
CoffeeScript

###
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# File: story-header.controller.coffee
###
module = angular.module("taigaUserStories")
class StoryHeaderController
@.$inject = [
"$rootScope",
"$tgConfirm",
"$tgQueueModelTransformation",
"$tgNavUrls",
"$window"
]
constructor: (@rootScope, @confirm, @modelTransform, @navUrls, @window) ->
@.editMode = false
@.loadingSubject = false
@.originalSubject = @.item.subject
@.objType = {
'tasks': 'task',
'issues': 'issue',
'userstories': 'us',
}[@.item._name]
_checkNav: () ->
if @.item.neighbors.previous?.ref?
ctx = {
project: @.project.slug
ref: @.item.neighbors.previous.ref
}
@.previousUrl = @navUrls.resolve("project-" + @.item._name + "-detail", ctx)
if @.item.neighbors.next?.ref?
ctx = {
project: @.project.slug
ref: @.item.neighbors.next.ref
}
@.nextUrl = @navUrls.resolve("project-" + @.item._name + "-detail", ctx)
_checkPermissions: () ->
@.permissions = {
canEdit: _.includes(@.project.my_permissions, @.requiredPerm)
}
cancelEdit: () ->
@.editMode = false
@.item.subject = @.originalSubject
editSubject: (value) ->
selection = @window.getSelection()
if selection.type != "Range"
if value
@.editMode = true
if !value
@.editMode = false
onKeyDown: (event) ->
if event.which == 13
@.saveSubject()
if event.which == 27
@.item.subject = @.originalSubject
@.editSubject(false)
saveSubject: () ->
onEditSubjectSuccess = () =>
@.loadingSubject = false
@rootScope.$broadcast("object:updated")
@confirm.notify('success')
@.originalSubject = @.item.subject
onEditSubjectError = () =>
@.loadingSubject = false
@confirm.notify('error')
@.editMode = false
@.loadingSubject = true
item = @.item
transform = @modelTransform.save (item) ->
return item
return transform.then(onEditSubjectSuccess, onEditSubjectError)
relateToEpic: (us) ->
@rootScope.$broadcast("relate-to-epic:add", us)
module.controller("StoryHeaderCtrl", StoryHeaderController)