From c49a35029876cd04e21174b10a63d4c12161e854 Mon Sep 17 00:00:00 2001 From: counterweight Date: Mon, 24 Mar 2025 16:12:30 +0100 Subject: [PATCH] wip --- src/front/pages/offers.js | 102 ++++++++++++++++++++++++++++++++++++++ src/views/offers.ejs | 55 ++++++++++---------- 2 files changed, 130 insertions(+), 27 deletions(-) diff --git a/src/front/pages/offers.js b/src/front/pages/offers.js index 3a2bd0b..4a16016 100644 --- a/src/front/pages/offers.js +++ b/src/front/pages/offers.js @@ -7,6 +7,108 @@ const PlaceInput = require('../components/PlaceInput'); const TimeInput = require('../components/TimeInput'); const BitcoinMethodCheckboxes = require('../components/BitcoinMethodCheckboxes'); +class TrustCheckboxes { + constructor({ parentElement }) { + this.myTrustedContainer = null; + this.myTrustedCheckboxElement = null; + this.myTrustedTrustedContainer = null; + this.myTrustedTrustedCheckboxElement = null; + this.allMembersContainer = null; + this.allMembersCheckboxElement = null; + this.parentElement = parentElement; + } + + render() { + const labelsAndVars = [ + { + id: 'my-trusted', + label: 'Mis confiados', + containerProperty: 'myTrustedContainer', + checkboxProperty: 'myTrustedCheckboxElement', + }, + { + id: 'my-trusted-trusted', + label: 'Los confiados de mis confiados', + containerProperty: 'myTrustedTrustedContainer', + checkboxProperty: 'myTrustedTrustedCheckboxElement', + }, + { + id: 'all-members', + label: 'Todos los miembros', + containerProperty: 'allMembersContainer', + checkboxProperty: 'allMembersCheckboxElement', + }, + ]; + + for (const labelAndVar of labelsAndVars) { + this[labelAndVar.containerProperty] = this.buildCheckbox({ + id: labelAndVar.id, + label: labelAndVar.label, + }); + + this[labelAndVar.checkboxProperty] = + this[labelAndVar.containerProperty].querySelector('input'); + + this[labelAndVar.checkboxProperty].addEventListener('click', () => { + this.applyTrustCheckboxConstraints(this[labelAndVar.checkboxProperty]); + }); + + this.parentElement.appendChild(this[labelAndVar.containerProperty]); + } + } + + buildCheckbox({ id, label }) { + const checkboxContainer = document.createElement('div'); + checkboxContainer.className = 'checkbox-row'; + checkboxContainer.id = `${id}-checkbox-area`; + + const checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.name = id; + checkbox.id = `${id}-checkbox`; + checkbox.checked = true; + + const labelElement = document.createElement('label'); + labelElement.htmlFor = checkbox.id; + labelElement.textContent = label; + + checkboxContainer.appendChild(checkbox); + checkboxContainer.appendChild(labelElement); + + return checkboxContainer; + } + + applyTrustCheckboxConstraints(pressedCheckbox) { + if (pressedCheckbox === this.myTrustedTrustedCheckboxElement) { + console.log('first case!'); + if ( + !this.myTrustedTrustedCheckboxElement.checked && + this.allMembersCheckboxElement.checked + ) { + this.allMembersCheckboxElement.checked = false; + } + } + + if (pressedCheckbox === this.allMembersCheckboxElement) { + console.log('second case!'); + if ( + !this.myTrustedTrustedCheckboxElement.checked && + this.allMembersCheckboxElement.checked + ) { + this.myTrustedTrustedCheckboxElement.checked = true; + } + } + } + + get isOnchainAccepted() { + return this.onchainCheckboxElement.checked; + } + + get isLightningAccepted() { + return this.lightningCheckboxElement.checked; + } +} + function offersPage() { const createOfferEventBus = new EventTarget(); diff --git a/src/views/offers.ejs b/src/views/offers.ejs index ab3b572..941f689 100644 --- a/src/views/offers.ejs +++ b/src/views/offers.ejs @@ -49,36 +49,37 @@

¿Cómo se mueve el Bitcoin?

-
-
+

¿Quién puede ver la oferta?

-
- -
-
- -
-
- +
+
+ +
+
+ +
+
+ +