function getDefaultBlipCustomization() { return { isEnabled: true, sprite: 480, label: "Auction", scale: "1.0", color: 1, display: 2, alpha: 255, } } async function blipDialog(currentBlipData) { return new Promise((resolve, reject) => { let div = $(` `); // delete the div when the modal is closed div.on("hidden.bs.modal", function() { div.remove(); }); if(!currentBlipData) { currentBlipData = getDefaultBlipCustomization() } div.find(".blip-enabled").prop("checked", currentBlipData.isEnabled).change(); div.find(".blip-sprite").val(currentBlipData.sprite); div.find(".blip-name").val(currentBlipData.label); div.find(".blip-color").val(currentBlipData.color); div.find(".blip-display").val(currentBlipData.display); div.find(".blip-scale").val(currentBlipData.scale); div.find(".blip-transparency").val(currentBlipData.alpha); div.find(".blip-enabled").change(function() { let isEnabled = $(this).prop("checked"); div.find("input, select").not( $(this) ) .prop("disabled", !isEnabled) .prop("required", isEnabled); }) div.find("form").submit(function(event) { if(isThereAnyErrorInForm(event)) return; let blipData = { isEnabled: div.find(".blip-enabled").prop("checked"), sprite: parseInt( div.find(".blip-sprite").val() ), label: div.find(".blip-name").val(), scale: parseFloat( div.find(".blip-scale").val() ), color: parseInt( div.find(".blip-color").val() ), display: parseInt( div.find(".blip-display").val() ), alpha: parseInt( div.find(".blip-transparency").val() ), } div.modal("hide"); resolve(blipData); }) div.modal("show"); }); }