git-subtree-dir: plugins/redmine_hourglass git-subtree-split: ec937a4ed4717e358207dd3857fac248b9e625e9
146 lines
4.9 KiB
CoffeeScript
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}"
|
|
|