premium and price connected
This commit is contained in:
parent
cca4402126
commit
a3643ee9d0
3 changed files with 50 additions and 44 deletions
|
|
@ -1,8 +1,9 @@
|
||||||
class PremiumSelector {
|
class PremiumSelector {
|
||||||
constructor({ parentElement, id }) {
|
constructor({ parentElement, id, eventSink }) {
|
||||||
this.element = null;
|
this.element = null;
|
||||||
this.parentElement = parentElement;
|
this.parentElement = parentElement;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
this.eventSink = eventSink;
|
||||||
|
|
||||||
this.premiumValue = null;
|
this.premiumValue = null;
|
||||||
}
|
}
|
||||||
|
|
@ -56,10 +57,11 @@ class PremiumSelector {
|
||||||
const newValue = `${numValue + delta}%`;
|
const newValue = `${numValue + delta}%`;
|
||||||
|
|
||||||
this.premiumValue.innerText = newValue;
|
this.premiumValue.innerText = newValue;
|
||||||
|
this.eventSink.dispatchEvent(new Event('premium-changed'));
|
||||||
}
|
}
|
||||||
|
|
||||||
getPremium() {
|
getPremium() {
|
||||||
return parseInt(this.premiumValue.innerText.match(/-?\d+/)[0]) / 100;
|
return parseInt(this.premiumValue.textContent.match(/-?\d+/)[0]) / 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,12 @@ const BuyOrSellButtonGroup = require('../components/BuyOrSellButtonGroup');
|
||||||
const PremiumSelector = require('../components/PremiumSelector');
|
const PremiumSelector = require('../components/PremiumSelector');
|
||||||
|
|
||||||
class PriceDisplay {
|
class PriceDisplay {
|
||||||
constructor(
|
constructor({
|
||||||
{parentElement,
|
parentElement,
|
||||||
id,
|
id,
|
||||||
premiumProvidingCallback,
|
premiumProvidingCallback,
|
||||||
priceProvidingCallback}
|
priceProvidingCallback,
|
||||||
) {
|
}) {
|
||||||
this.element = null;
|
this.element = null;
|
||||||
this.parentElement = parentElement;
|
this.parentElement = parentElement;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
@ -18,30 +18,30 @@ class PriceDisplay {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const container = document.createElement("div");
|
const container = document.createElement('div');
|
||||||
container.id = "premium-price-display-area";
|
container.id = 'premium-price-display-area';
|
||||||
|
|
||||||
const offerParagraph = document.createElement("p");
|
const offerParagraph = document.createElement('p');
|
||||||
offerParagraph.id = "offer-price-paragraph";
|
offerParagraph.id = 'offer-price-paragraph';
|
||||||
offerParagraph.textContent = "Tu precio: ";
|
offerParagraph.textContent = 'Tu precio: ';
|
||||||
|
|
||||||
const offerSpan = document.createElement("span");
|
const offerSpan = document.createElement('span');
|
||||||
offerSpan.id = "offer-price";
|
offerSpan.id = 'offer-price';
|
||||||
this.offerPriceSpan = offerSpan
|
this.offerPriceSpan = offerSpan;
|
||||||
|
|
||||||
offerParagraph.appendChild(offerSpan);
|
offerParagraph.appendChild(offerSpan);
|
||||||
offerParagraph.append("€/BTC");
|
offerParagraph.append('€/BTC');
|
||||||
|
|
||||||
const marketParagraph = document.createElement("p");
|
const marketParagraph = document.createElement('p');
|
||||||
marketParagraph.id = "market-price-paragraph";
|
marketParagraph.id = 'market-price-paragraph';
|
||||||
marketParagraph.textContent = "(Precio mercado: ";
|
marketParagraph.textContent = '(Precio mercado: ';
|
||||||
|
|
||||||
const marketSpan = document.createElement("span");
|
const marketSpan = document.createElement('span');
|
||||||
marketSpan.id = "market-price";
|
marketSpan.id = 'market-price';
|
||||||
this.marketPriceSpan = marketSpan
|
this.marketPriceSpan = marketSpan;
|
||||||
|
|
||||||
marketParagraph.appendChild(marketSpan);
|
marketParagraph.appendChild(marketSpan);
|
||||||
marketParagraph.append("€/BTC)");
|
marketParagraph.append('€/BTC)');
|
||||||
|
|
||||||
container.appendChild(offerParagraph);
|
container.appendChild(offerParagraph);
|
||||||
container.appendChild(marketParagraph);
|
container.appendChild(marketParagraph);
|
||||||
|
|
@ -50,16 +50,13 @@ class PriceDisplay {
|
||||||
|
|
||||||
this.element = container;
|
this.element = container;
|
||||||
this.parentElement.appendChild(this.element);
|
this.parentElement.appendChild(this.element);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
updatePrices() {
|
updatePrices() {
|
||||||
const marketPrice = this.priceProvidingCallback()
|
const marketPrice = this.priceProvidingCallback();
|
||||||
const marketPriceString = formatNumberWithSpaces(marketPrice);
|
const marketPriceString = formatNumberWithSpaces(marketPrice);
|
||||||
const offerPriceString = formatNumberWithSpaces(
|
const offerPriceString = formatNumberWithSpaces(
|
||||||
Math.round(marketPrice * (
|
Math.round(marketPrice * (1 + this.premiumProvidingCallback()))
|
||||||
1 + this.premiumProvidingCallback()
|
|
||||||
))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
this.marketPriceSpan.innerText = marketPriceString;
|
this.marketPriceSpan.innerText = marketPriceString;
|
||||||
|
|
@ -68,6 +65,8 @@ class PriceDisplay {
|
||||||
}
|
}
|
||||||
|
|
||||||
function offersPage() {
|
function offersPage() {
|
||||||
|
const createOfferEventBus = new EventTarget();
|
||||||
|
|
||||||
const publishOfferButton = new PublishOfferButton({
|
const publishOfferButton = new PublishOfferButton({
|
||||||
parentElement: document.getElementById('submit-button-area'),
|
parentElement: document.getElementById('submit-button-area'),
|
||||||
id: 'button-submit-offer',
|
id: 'button-submit-offer',
|
||||||
|
|
@ -88,18 +87,24 @@ function offersPage() {
|
||||||
const premiumSelector = new PremiumSelector({
|
const premiumSelector = new PremiumSelector({
|
||||||
parentElement: document.getElementById('premium-content-area'),
|
parentElement: document.getElementById('premium-content-area'),
|
||||||
id: 'premium-selector-area',
|
id: 'premium-selector-area',
|
||||||
|
eventSink: createOfferEventBus,
|
||||||
});
|
});
|
||||||
premiumSelector.render();
|
premiumSelector.render();
|
||||||
|
|
||||||
const priceDisplay = new PriceDisplay(
|
const priceDisplay = new PriceDisplay({
|
||||||
{
|
|
||||||
parentElement: document.getElementById('premium-content-area'),
|
parentElement: document.getElementById('premium-content-area'),
|
||||||
id: 'premium-price-display-area',
|
id: 'premium-price-display-area',
|
||||||
premiumProvidingCallback: () => {return 0.02},
|
premiumProvidingCallback: () => {
|
||||||
priceProvidingCallback: () => {return Math.floor(Math.random() * (95000 - 70000 + 1) + 70000)}
|
return premiumSelector.getPremium();
|
||||||
}
|
},
|
||||||
)
|
priceProvidingCallback: () => {
|
||||||
|
return Math.floor(Math.random() * (95000 - 70000 + 1) + 70000);
|
||||||
|
},
|
||||||
|
});
|
||||||
priceDisplay.render();
|
priceDisplay.render();
|
||||||
|
createOfferEventBus.addEventListener('premium-changed', () => {
|
||||||
|
priceDisplay.updatePrices();
|
||||||
|
});
|
||||||
|
|
||||||
// -----------
|
// -----------
|
||||||
const navbuttonHome = document.getElementById('navbutton-home');
|
const navbuttonHome = document.getElementById('navbutton-home');
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,7 @@
|
||||||
<div id="buy-or-sell-area" class="create-offer-step"></div>
|
<div id="buy-or-sell-area" class="create-offer-step"></div>
|
||||||
<div id="premium-area" class="create-offer-step">
|
<div id="premium-area" class="create-offer-step">
|
||||||
<h3>Premium</h3>
|
<h3>Premium</h3>
|
||||||
<div id="premium-content-area">
|
<div id="premium-content-area"></div>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div id="amount-area" class="create-offer-step">
|
<div id="amount-area" class="create-offer-step">
|
||||||
<h3>¿Cuánto?</h3>
|
<h3>¿Cuánto?</h3>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue