Files
redmine/app/assets/javascripts/redmine_integrations.coffee
Roman Vaníček bbe840cd8b Squashed 'plugins/redmine_hourglass/' content from commit ec937a4
git-subtree-dir: plugins/redmine_hourglass
git-subtree-split: ec937a4ed4717e358207dd3857fac248b9e625e9
2023-03-23 12:49:36 +01:00

146 lines
4.9 KiB
CoffeeScript

startNewTracker = (link) ->
$(link).addClass('js-skip-dialog').first().click()
timeTrackerAjax = (args) ->
$.ajax
url: args.url
type: args.type || 'post'
data: $.extend {_method: args.method}, args.data or {}
success: args.success
error: ({responseJSON}) ->
hourglass.Utils.showErrorMessage responseJSON.message
stopDialogApplyHandler = (link) ->
$stopDialog = $(@)
$activityField = $stopDialog.find('[name*=activity_id]')
return unless hourglass.FormValidator.isFieldValid $activityField
$stopDialog.dialog 'close'
timeTrackerAjax
url: $(link).attr('href')
type: 'delete'
data:
time_tracker:
activity_id: $activityField.val()
success: -> location.reload()
startDialogApplyHandler = (link) ->
$startDialog = $(@)
switch $startDialog.find('input[type=radio]:checked').val()
when 'log'
$activityField = $startDialog.find('[name*=activity_id]')
if $activityField.length
return unless hourglass.FormValidator.isFieldValid $activityField
$startDialog.dialog 'close'
timeTrackerAjax
url: hourglassRoutes.start_hourglass_time_trackers()
method: 'post'
data:
$.extend Object.fromEntries(new URLSearchParams($(link).data('params'))),
id: 'current'
current_action: 'stop'
current_update:
activity_id: $activityField.val()
success: -> location.reload()
else
$startDialog.dialog 'close'
timeTrackerAjax
url: hourglassRoutes.start_hourglass_time_trackers()
method: 'post'
data:
$.extend Object.fromEntries(new URLSearchParams($(link).data('params'))),
id: 'current'
current_action: 'stop'
success: -> location.reload()
when 'discard'
$startDialog.dialog 'close'
timeTrackerAjax
url: hourglassRoutes.start_hourglass_time_trackers()
method: 'post'
data:
$.extend Object.fromEntries(new URLSearchParams($(link).data('params'))),
id: 'current'
current_action: 'destroy'
success: -> location.reload()
when 'takeover'
$startDialog.dialog 'close'
timeTrackerAjax
url: hourglassRoutes.hourglass_time_tracker 'current'
type: 'put'
data: Object.fromEntries(new URLSearchParams($(link).data('params')))
success: ->
location.reload()
showStartDialog = (e) ->
return true if $(@).hasClass('js-skip-dialog')
$startDialog = $('.js-start-dialog')
if $startDialog.length is 0
$startDialogContent = $('.js-start-dialog-content')
if $startDialogContent.length isnt 0
e.preventDefault()
e.stopPropagation()
hourglass.Utils.showDialog 'js-start-dialog', $startDialogContent, [
{
text: $startDialogContent.data('button-ok-text')
click: -> startDialogApplyHandler.call(@, e.target)
}
{
text: $startDialogContent.data('button-cancel-text')
click: -> $(@).dialog 'close'
}
]
else
e.preventDefault()
e.stopPropagation()
$startDialog.dialog 'open'
showStopDialog = (e) ->
return true if $(@).hasClass('js-skip-dialog')
$stopDialog = $('.js-stop-dialog')
if $stopDialog.length is 0
$stopDialogContent = $('.js-stop-dialog-content')
if $stopDialogContent.length isnt 0
e.preventDefault()
e.stopPropagation()
hourglass.Utils.showDialog 'js-stop-dialog', $stopDialogContent, [
{
text: $stopDialogContent.data('button-ok-text')
click: -> stopDialogApplyHandler.call(@, e.target)
}
{
text: $stopDialogContent.data('button-cancel-text')
click: -> $(@).dialog 'close'
}
]
$stopDialogContent.on 'change', '[name*=activity_id]', ->
hourglass.FormValidator.validateField $(@)
else
e.preventDefault()
e.stopPropagation()
$stopDialog.dialog 'open'
window.oldToggleOperator = window.toggleOperator
window.toggleOperator = (field) ->
operator = $("#operators_" + field.replace('.', '_')).val()
return enableValues(field, []) if operator is 'q' or operator is 'lq'
window.oldToggleOperator field
$ ->
$('#content > .contextual >:nth-child(2)').after $('.js-issue-action').removeClass('hidden')
$('.hourglass-quick').replaceWith $('.js-account-menu-link').removeClass('hidden')
$('#content, #top-menu')
.on 'click', '.js-start-tracker', showStartDialog
.on 'click', '.js-stop-tracker', showStopDialog
$contextMenuTarget = null
$(document).on 'contextmenu', '.hourglass-list', (e) ->
$contextMenuTarget = $(@)
$.ajaxPrefilter (options) ->
return unless options.url.endsWith 'hourglass/ui/context_menu'
options.data = $.param list_type: $contextMenuTarget.data('list-type')
$contextMenuTarget.find('.context-menu-selection').each ->
options.data += "&ids[]=#{@id}"