51 lines
2.3 KiB
JavaScript
51 lines
2.3 KiB
JavaScript
// Laat de prijs meelopen terwijl een adverteerder datums en aantallen invult.
|
||
//
|
||
// Waarom dit een apart bestand is en niet een <script> in de pagina zelf: die pagina wordt
|
||
// statisch weergegeven, en Blazor vervangt bij het navigeren alleen de HTML. Een <script> dat
|
||
// op die manier binnenkomt wordt NIET uitgevoerd. Het gevolg was een prijs die niets deed zodra
|
||
// je via een link op het boekscherm kwam - en wel werkte als je de pagina zelf ververste, wat
|
||
// het extra verwarrend maakt. Dit bestand staat in de kop van elke pagina en is er dus altijd.
|
||
//
|
||
// Wat hier wordt uitgerekend is een gemak, geen bedrag. De server rekent bij het indienen zelf
|
||
// uit wat het kost; wie met deze pagina knoeit, verandert alleen wat hij zelf ziet staan.
|
||
window.mbPrijs = function () {
|
||
var vak = document.getElementById('prijsvak');
|
||
var vanaf = document.getElementById('vanaf');
|
||
var tot = document.getElementById('tot');
|
||
var perUur = document.getElementById('peruur');
|
||
var prijs = document.getElementById('prijs');
|
||
var som = document.getElementById('prijssom');
|
||
|
||
if (!vak || !vanaf || !tot || !perUur || !prijs) return;
|
||
|
||
var tarief = parseInt(vak.dataset.tarief, 10);
|
||
var bodem = parseInt(vak.dataset.bodem, 10);
|
||
var max = parseInt(vak.dataset.max, 10);
|
||
|
||
var van = Date.parse(vanaf.value);
|
||
var totdat = Date.parse(tot.value);
|
||
var keer = parseInt(perUur.value, 10);
|
||
|
||
function schrijf(bedrag, uitleg) {
|
||
prijs.textContent = bedrag;
|
||
if (som) som.textContent = uitleg;
|
||
}
|
||
|
||
if (isNaN(van) || isNaN(totdat) || isNaN(keer)) return schrijf('—', '');
|
||
if (totdat < van) return schrijf('—', 'de einddatum ligt voor de begindatum');
|
||
if (keer < 1) return schrijf('—', 'vul in hoe vaak per uur');
|
||
if (keer > max) return schrijf('—', 'hoogstens ' + max + ' keer per uur');
|
||
|
||
var dagen = Math.round((totdat - van) / 86400000) + 1;
|
||
var centen = Math.max(dagen * keer * tarief, bodem);
|
||
|
||
schrijf(euro(centen),
|
||
'(' + dagen + ' dagen × ' + keer + ' per uur × ' + tarief + ' cent, ' +
|
||
'met een minimum van ' + euro(bodem) + ')');
|
||
};
|
||
|
||
// Zelfde vorm als op de server: een komma, want hier leest een mens het.
|
||
function euro(centen) {
|
||
return '€ ' + (centen / 100).toFixed(2).replace('.', ',');
|
||
}
|