aboutsummaryrefslogtreecommitdiff
path: root/website/resources/js
diff options
context:
space:
mode:
Diffstat (limited to 'website/resources/js')
-rw-r--r--website/resources/js/order-license.js139
-rw-r--r--website/resources/js/supporters.js13
2 files changed, 144 insertions, 8 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() {
diff --git a/website/resources/js/supporters.js b/website/resources/js/supporters.js
index 5ec1b057..5f21c79c 100644
--- a/website/resources/js/supporters.js
+++ b/website/resources/js/supporters.js
@@ -3,7 +3,7 @@
(function($) {
var supporters = {};
var weights = {};
- var types = ["patron", "professional", "enterprise"];
+ var types = ["enterprise", "professional", "patron"];
function shuffle(array) {
var i = 0, j = 0, temp = null;
@@ -49,7 +49,7 @@
var d = $("<div />").addClass("supportItem").addClass(this.type);
var a = d;
if (this.url) {
- a = $("<a />").attr("href", this.url).attr("rel", "noopener");
+ a = $("<a />").attr("href", this.url).attr("rel", "noopener").attr("target", "_blank");
d.append(a);
}
var n = $("<span />").text(this.name);
@@ -69,8 +69,13 @@
var ht = Math.round(h / f);
i.width = wt;
i.height = ht;
+ var ji = $(i);
if (!showName) a.empty();
- a.prepend(i);
+ ji.css("width", wt + "px");
+ ji.css("height", ht + "px");
+ ji.attr("alt", n);
+ ji.attr("title", n);
+ a.prepend(ji);
};
i.src = 'files/' + this.logo;
}
@@ -129,6 +134,8 @@
var s = $(".supporterBar");
s.find(".introText").show();
s.append($("<div />").addClass("sbCnt"));
+ var sf = s.find(".supporterFooter").show();
+ s.append(sf);
s = s.find(".sbCnt");
var now = new Date();
var list = [];