houdini/app/javascript/legacy/gift_options/admin.js

102 lines
3 KiB
JavaScript
Raw Normal View History

2019-11-06 20:36:28 +00:00
// License: LGPL-3.0-or-later
require('../common/restful_resource')
const reorder = require('../components/drag-to-reorder')
const format = require('../common/format')
const R = require('ramda')
const url = `/nonprofits/${app.nonprofit_id}/campaigns/${app.campaign_id}/campaign_gift_options/update_order`
reorder(url, 'js-reorderGifts', appl.ajax_gift_options.index)
appl.def('ajax_gift_options', {
update: function(form_obj, node) {
if(checkForAmount(form_obj)){
return
}
var id = appl.gift_options.current.id
appl.ajax.update('gift_options', id, form_obj, node).then(function(resp) {
node.parentNode.reset()
appl.def('loading', false)
appl.ajax_gift_options.index()
appl.notify('Gift option updated successfully')
appl.open_modal('manageGiftOptionsModal')
})
},
create: function(form_obj, node) {
if(checkForAmount(form_obj)){
return
}
appl.ajax.create('gift_options', form_obj, node).then(function(resp) {
node.parentNode.reset()
appl.def('loading', false)
appl.open_modal('manageGiftOptionsModal')
appl.notify('Gift option created successfully')
appl.ajax_gift_options.index()
})
},
del: function(id, node) {
var task = appl.ajax.del('gift_options', id, node)
task.then(function(resp) {
appl.open_modal('manageGiftOptionsModal')
appl.notify('Gift option removed successfully')
appl.ajax_gift_options.index()
})
task.catch(function(resp){
appl.open_modal('manageGiftOptionsModal')
appl.notify('This gift option has already been used. It can\'t be removed')
appl.ajax_gift_options.index()
})
},
// Update or create a gift option depending on which mode we're in
save: function(form_obj, node) {
// the server expects both amount_one_time and amount_recurring to have
// a number value and this function passes in '0' as a fallback in the
// case that either input is left blank by the user
const toCents = x => format.dollarsToCents(x || '0')
var data = R.evolve({
amount_one_time: toCents
, amount_recurring: toCents
}, form_obj)
if(appl.gift_options.is_updating) {
appl.ajax_gift_options.update(data, node)
} else {
appl.ajax_gift_options.create(data, node)
}
},
})
function checkForAmount(form_obj) {
if(!form_obj.amount_one_time && !form_obj.amount_recurring) {
appl.notify('Please enter at least one amount')
return true
} else {
return false
}
}
appl.def('gift_options', {
resource_name: 'campaign_gift_options',
path_prefix: '/nonprofits/' + app.nonprofit_id + '/campaigns/' + app.campaign_id + '/',
open_edit: function(gift_option) {
appl.def('gift_options', {current: gift_option, is_updating: true})
.def('gift_option_action', 'Edit')
appl.open_modal('giftOptionFormModal')
},
open_new: function() {
appl.def('gift_options', {current: undefined, is_updating: false})
.def('gift_option_action', 'New')
document.querySelector("#giftOptionFormModal form").reset()
appl.open_modal('giftOptionFormModal')
}
})