import { RdDTimestamp } from "./rdd-timestamp.js"; /** * Extend the base Dialog entity by defining a custom window to perform roll. * @extends {Dialog} */ export class RdDCalendrierEditeur extends Dialog { /* -------------------------------------------- */ constructor(html, calendrier, calendrierData) { let dialogConf = { content: html, title: "Editeur de date/heure", buttons: { save: { label: "Enregistrer", callback: html => this.saveCalendrier() } }, default: "save" }; let dialogOptions = { classes: ["rdd-dialog-calendar-editor"], width: 400, height: 'fit-content', 'z-index': 99999 } super(dialogConf, dialogOptions) this.calendrier = calendrier; this.calendrierData = calendrierData; } activateListeners(html) { super.activateListeners(html); this.html = html; this.html.find("input[name='calendar.annee']").val(this.calendrierData.annee); this.html.find("select[name='calendar.mois']").val(this.calendrierData.mois.key); this.html.find("select[name='calendar.heure']").val(this.calendrierData.heure.key); RdDCalendrierEditeur.setLimited(this.html.find("input[name='calendar.jourDuMois']"), this.calendrierData.jourDuMois, 1, 28); RdDCalendrierEditeur.setLimited(this.html.find("input[name='calendar.minute']"), this.calendrierData.minute, 0, 119); } static setLimited(input, init, min, max) { input.val(init); input.change(event => { const val = Number.parseInt(input.val()); if (val < min) { input.val(min); } if (val > max) { input.val(max); } }); } /* -------------------------------------------- */ saveCalendrier() { const annee = Number.parseInt(this.html.find("input[name='calendar.annee']").val()); const mois = this.html.find("select[name='calendar.mois']").val(); const jour = Number.parseInt(this.html.find("input[name='calendar.jourDuMois']").val()); const heure = this.html.find("select[name='calendar.heure']").val(); const minute = Number.parseInt(this.html.find("input[name='calendar.minute']").val()); this.calendrier.setNewTimestamp(RdDTimestamp.timestamp(annee, mois, jour, heure, minute)) } /* -------------------------------------------- */ updateData(calendrierData) { this.calendrierData = duplicate(calendrierData); } }