Files
MijnBesluit/src/MijnBesluit.Web/wwwroot/adverteren.js
T
2026-09-27 14:21:31 +00:00

51 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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('.', ',');
}