diff options
author | Reinier Zwitserloot <reinier@zwitserloot.com> | 2018-03-11 16:57:22 +0100 |
---|---|---|
committer | Reinier Zwitserloot <reinier@zwitserloot.com> | 2018-03-11 16:57:22 +0100 |
commit | 2f1a26b6069d6d75729a971be20d45f0fc5fefcc (patch) | |
tree | 54d04577522105782dbd63560403f5d27c0af2fc /website/resources/js/order-license.js | |
parent | cc55391a7544b0ce0cc37b8aa628dc8f9a46db49 (diff) | |
download | lombok-2f1a26b6069d6d75729a971be20d45f0fc5fefcc.tar.gz lombok-2f1a26b6069d6d75729a971be20d45f0fc5fefcc.tar.bz2 lombok-2f1a26b6069d6d75729a971be20d45f0fc5fefcc.zip |
[website] added supporters infrastructure.
Diffstat (limited to 'website/resources/js/order-license.js')
-rw-r--r-- | website/resources/js/order-license.js | 139 |
1 files changed, 134 insertions, 5 deletions
diff --git a/website/resources/js/order-license.js b/website/resources/js/order-license.js index 82627f2b..4a3edca0 100644 --- a/website/resources/js/order-license.js +++ b/website/resources/js/order-license.js @@ -1,21 +1,140 @@ "use strict"; (function() { + if (!String.prototype.trim) { + String.prototype.trim = function () { + return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + }; + } + var imgDataUrl = null; + + function updateLocationInfo() { + var locationType = $("input:radio[name='locationType']:checked").val(); + $("#locationType_usa").toggle(locationType === "usa"); + $("#locationType_eu").toggle(locationType === "eu"); + $("#locationType_other").toggle(locationType === "other"); + $("#paymentMethod_iban").toggle(locationType === "eu"); + if ($("#paymentMethod_iban input").is(":checked") && locationType !== "eu") $("#paymentMethod_payoneer input").prop("checked", true); + if ($("#paymentMethod_intl input").is(":checked") && locationType === "eu") $("#paymentMethod_iban input").prop("checked", true); + $("#paymentMethod_intl").toggle(locationType !== "eu"); + } + + function updatePriceIndication() { + $("#onlyYearlyWarning").hide(); + var x = getPriceIndication(); + if (x === "") { + $("#costIndicator").text("").hide(); + } else { + $("#costIndicator").text(x).show(); + } + } + + function getPriceIndication() { + try { + var seats = parseInt($("#seats").val()); + if (isNaN(seats)) return ""; + var licenseType = $("input:radio[name='licenseType']:checked").val(); + var costPer; + if (licenseType === "enterprise") costPer = 5; + else if (licenseType === "professional") costPer = 2; + else return ""; + var periodRaw = $("input:radio[name='paymentType']:checked").val(); + if (periodRaw === "monthly") { + if (costPer*seats < 50) { + $("#onlyYearlyWarning").show(); + return "Your license will cost €" + (costPer*seats*12) + ",- per year."; + } + return "Your license will cost €" + (costPer*seats) + ",- per month."; + } + return "Your license will cost €" + (costPer*seats*12) + ",- per year."; + } catch (e) { + return ""; + } + } + + function showError(elemName) { + var elem = $("#" + elemName + "Err"); + elem.fadeIn(); + $("#" + elemName).on("change keyup", function() { + elem.hide(); + }); + } + function applyLicense() { - $("#submit").on("click", function(evt) { + var submitButton = $("#submit"); + var spinner = $("<img>").attr("src", "/img/spinner.gif").attr("alt", "submitting").css("float", "left").css("margin-right", "20px"); + + submitButton.on("click", function(evt) { evt.preventDefault(); var onSuccess = function() { - alert("Form submitted!"); + $("#orderHelp").hide(); + var okMsg = $("<div>").addClass("formSubmitOk").html("Thank you for ordering a Project Lombok license! We'll send your bill via email. If you have any further questions please contact us at <a href=\"mailto:orders@projectlombok.org\"><code>orders@projectlombok.org</code></a>."); + spinner.replaceWith(okMsg); }; var onFailure = function() { - alert("Whoops"); + $("#orderHelp").hide(); + var errMsg = $("<div>").addClass("formSubmitFail").html("Our order form appears to be broken. Could you do us a favour and contact us at <a href=\"mailto:orders@projectlombok.org\"><code>orders@projectlombok.org</code></a>? Thank you!"); + spinner.replaceWith(errMsg); }; var data = {}; - data.name = $("#name").val(); + data.name = $("#companyName").val(); + data.email = $("#email").val(); + data.licenseType = $("input:radio[name='licenseType']:checked").val(); + data.seats = parseInt($("#seats").val()); + data.paymentType = $("input:radio[name='paymentType']:checked").val(); + data.mentionMe = $("#mentionMe").prop("checked"); + data.companyUrl = $("#companyUrl").val(); + data.locationType = $("input:radio[name='locationType']:checked").val(); + data.euVat = $("#euVat").val(); + data.paymentMethod = $("input:radio[name='paymentMethod']:checked").val(); + + var formFail = false; + + if (!data.paymentMethod) { + showError("paymentMethod"); + formFail = true; + } + + if (!data.euVat && data.locationType === 'eu') { + $("#euVat").focus(); + showError("euVat"); + formFail = true; + } + + if (!data.locationType) { + showError("locationType"); + formFail = true; + } + + if (!data.seats || isNaN(data.seats)) { + $("#seats").focus(); + showError("seats"); + formFail = true; + } + + if (!data.paymentType) { + showError("paymentType"); + formFail = true; + } + + if (data.email.indexOf('@') === -1) { + $("#email").focus(); + showError("email"); + formFail = true; + } + + if (data.name.trim().length < 1) { + $("#companyName").focus(); + showError("companyName"); + formFail = true; + } + + if (formFail) return; + var rnd = generateRandom(); var err = processImageUpload(); if (err) { @@ -24,6 +143,9 @@ return; } if (imgDataUrl) data.logo = imgDataUrl; + + submitButton.replaceWith(spinner); + $.ajax({ url: "/license-submit/" + rnd, method: "PUT", @@ -31,7 +153,7 @@ data: JSON.stringify(data), processData: false, success: onSuccess, - failure: onFailure + error: onFailure }); }); @@ -58,6 +180,13 @@ $("#deleteCompanyLogo").show(); } }); + + $("#seats,.paymentType,.licenseType").on("change keyup", function() { + updatePriceIndication(); + }); + $(".locationType").on("change", function() { + updateLocationInfo(); + }); } function generateRandom() { |