From 15ee9b78a36c676d79428ce98afb92f9380fd531 Mon Sep 17 00:00:00 2001 From: Gregory Ballantine Date: Sun, 4 Dec 2022 17:28:01 -0500 Subject: [PATCH] Refactored the ticket attribute click handlers to be more modular for adding new attribute modifications --- assets/coffee/slepe.coffee | 60 ++++++++++++-------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/assets/coffee/slepe.coffee b/assets/coffee/slepe.coffee index 24346a5..d871794 100644 --- a/assets/coffee/slepe.coffee +++ b/assets/coffee/slepe.coffee @@ -1,61 +1,37 @@ $(document).ready -> console.log('Hello, world!') - $('.ticket-severity').on('click', handleSeverityClick) - $('.ticket-status').on('click', handleStatusClick) + $('.ticket-severity').on('click', handleAttributeClick('severity')) + $('.ticket-status').on('click', handleAttributeClick('status')) -handleSeverityClick = (e, msg = 'Set ticket severity:') -> - validSeverity = ['low', 'medium', 'high'] - newSeverity = prompt(msg, $('.ticket-severity > span').text()) - newSeverity = newSeverity.toLowerCase() +validOptions = + 'severity' = ['low', 'medium', 'high'], + 'status' = ['open', 'closed', 'parked'] - if (newSeverity != null) and (newSeverity != '') - if (newSeverity in validSeverity) - console.log('Setting severity to ' + newSeverity) - editLink = $('#ticketEditLink').attr('href') + '/severity' +handleAttributeClick = (e, attr, fail = false) -> + newValue = prompt('Set ticket ' + attr + ':', $('.ticket-' + attr + ' > span').text()) + newValue = newValue.toLowerCase() + + if (newValue != null) and (newValue != '') + if (newValue in validOptions[attr]) + console.log('Setting ' + attr + ' to ' + newValue) + editLink = $('#ticketEditLink').attr('href') + '/' + attr console.log('Sending data to ' + editLink) $.ajax({ type: "POST", url: editLink, data: - severity: newSeverity, + attr: newValue, dataType: 'json', success: (result) -> - newSeverity = newSeverity.charAt(0).toUpperCase() + newSeverity.slice(1) - $('.ticket-severity > span').text(newSeverity) + newValue = newValue.charAt(0).toUpperCase() + newValue.slice(1) + $('.ticket-' + attr + ' > span').text(newValue) updateTicketModified(result.updated_at) console.log('Ticket updated successfully.') }) else - console.log('Invalid severity entered') - handleSeverityClick(e, 'Invalid severity; valid values are low, medium, and high.') - - -handleStatusClick = (e, msg = 'Set ticket status:') -> - validStatus = ['open', 'closed', 'parked'] - newStatus = prompt(msg, $('.ticket-status > span').text()) - newStatus = newStatus.toLowerCase() - - if (newStatus != null) and (newStatus != '') - if (newStatus in validStatus) - console.log('Setting status to ' + newStatus) - editLink = $('#ticketEditLink').attr('href') + '/status' - console.log('Sending data to ' + editLink) - $.ajax( - type: "POST", - url: editLink, - data: - status: newStatus, - dataType: 'json', - success: (result) -> - newStatus = newStatus.charAt(0).toUpperCase() + newStatus.slice(1) - $('.ticket-status > span').text(newStatus) - updateTicketModified(result.updated_at) - console.log('Ticket updated successfully.') - ) - else - console.log('Invalid status entered') - handleStatusClick(e, 'Invalid status; valid values are open, closed, and parked.') + console.log('Invalid ' + attr + ' entered') + handleAttributeClick(e, attr, 'Invalid ' + attr + '; valid values are ' + validOptions.toString() + '.') updateTicketModified = (date) -> $('.ticket-updated > span').text(date)