From af9588741dd9c4f8b9e8fdc21fb0dc24f58b7b57 Mon Sep 17 00:00:00 2001 From: Adam Zapletal Date: Sat, 19 Apr 2025 12:15:17 -0500 Subject: [PATCH] Refactored `corporate-member-join.js` - Stopped using jQuery - Moved refactored code to `djangoproject.js` - Reused membership level data between event handlers --- djangoproject/static/js/djangoproject.js | 29 +++++++++++ djangoproject/static/js/main.js | 4 -- .../static/js/mod/corporate-member-join.js | 52 ------------------- 3 files changed, 29 insertions(+), 56 deletions(-) delete mode 100644 djangoproject/static/js/mod/corporate-member-join.js diff --git a/djangoproject/static/js/djangoproject.js b/djangoproject/static/js/djangoproject.js index ac3e9a5d58..0961c0cc4d 100644 --- a/djangoproject/static/js/djangoproject.js +++ b/djangoproject/static/js/djangoproject.js @@ -228,3 +228,32 @@ document.querySelectorAll('.btn-clipboard').forEach(function (el) { input_el.value = '25'; }); })(); + +// Manage amount and membership level fields on corporate membership page +(function () { + const form_el = document.querySelector('.corporate-membership-join-form'); + + if (!form_el) { + return; + } + + const amount_el = form_el.querySelector('#id_amount'); + const level_el = form_el.querySelector('#id_membership_level'); + const levels = [-Infinity, 2000, 5000, 12500, 30000, 100000]; + + amount_el.addEventListener('change', function () { + let value; + + for (let i = 0; i < levels.length; i++) { + if (this.value >= levels[i]) { + value = i; + } + + level_el.value = value || ''; + } + }); + + level_el.addEventListener('change', function () { + amount_el.value = this.value ? levels[Number(this.value)] : ''; + }); +})(); diff --git a/djangoproject/static/js/main.js b/djangoproject/static/js/main.js index d076ddb6da..f68c94af5f 100644 --- a/djangoproject/static/js/main.js +++ b/djangoproject/static/js/main.js @@ -33,9 +33,5 @@ define(function () { mods.push('mod/stripe-change-card'); } - if (hasClass('corporate-membership-join-form')) { - mods.push('mod/corporate-member-join'); - } - require(mods); }); diff --git a/djangoproject/static/js/mod/corporate-member-join.js b/djangoproject/static/js/mod/corporate-member-join.js deleted file mode 100644 index 9a3d1bd7df..0000000000 --- a/djangoproject/static/js/mod/corporate-member-join.js +++ /dev/null @@ -1,52 +0,0 @@ -define(['jquery'], function ($) { - var CorporateMembershipJoinForm = function (form) { - this.form = $(form); - this.init(); - }; - CorporateMembershipJoinForm.prototype = { - init: function () { - var self = this; - var $amount = self.form.find('#id_amount'); - var $membershipLevel = self.form.find('#id_membership_level'); - $amount.change(function () { - self.setMembershipLevel($(this), $membershipLevel); - }); - $membershipLevel.change(function () { - self.setDonationAmount($(this), $amount); - }); - }, - setDonationAmount: function ($membershipLevel, $amount) { - var selectedMembership = $membershipLevel.val(); - if (selectedMembership == '5') { - $amount.val(100000); - } else if (selectedMembership == '4') { - $amount.val(30000); - } else if (selectedMembership == '3') { - $amount.val(12500); - } else if (selectedMembership == '2') { - $amount.val(5000); - } else if (selectedMembership == '1') { - $amount.val(2000); - } else { - $amount.val(''); - } - }, - setMembershipLevel: function ($amount, $membershipLevel) { - var amount = parseInt($amount.val()); - if (amount >= 100000) { - $membershipLevel.val(5); - } else if (amount >= 30000) { - $membershipLevel.val(4); - } else if (amount >= 12500) { - $membershipLevel.val(3); - } else if (amount >= 5000) { - $membershipLevel.val(2); - } else if (amount >= 2000) { - $membershipLevel.val(1); - } else { - $membershipLevel.val(''); - } - }, - }; - return new CorporateMembershipJoinForm('.corporate-membership-join-form'); -});