aboutsummaryrefslogtreecommitdiff
path: root/website/resources/js/order-license.js
diff options
context:
space:
mode:
authorReinier Zwitserloot <reinier@zwitserloot.com>2018-03-11 16:57:22 +0100
committerReinier Zwitserloot <reinier@zwitserloot.com>2018-03-11 16:57:22 +0100
commit2f1a26b6069d6d75729a971be20d45f0fc5fefcc (patch)
tree54d04577522105782dbd63560403f5d27c0af2fc /website/resources/js/order-license.js
parentcc55391a7544b0ce0cc37b8aa628dc8f9a46db49 (diff)
downloadlombok-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.js139
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() {