Gestion d'items temporels

- Séparation des timestamp / calendrier

Les poisons/maladies/souffles/queues/rencontres/signes peuvent
être temporaires.

- Ajout de champs pour stocker les timestamps de début et fin
- définition de la durée (selon les items)
- extraction des classes spécialisées des items
- initialisation des dates de début/fin des effets temporaires à
  l'ajout d'un item temporel
- préparation de la suppression automatique
- Fix de mauvaise présentations sur les dialog d'astrologie
  et d'édition du calendrier
This commit is contained in:
2023-01-05 00:55:04 +01:00
parent 11e4ad09d3
commit 912b1d3df3
41 changed files with 1020 additions and 576 deletions

View File

@ -1,4 +1,4 @@
import { Misc } from "./misc.js";
import { RdDTimestamp } from "./rdd-timestamp.js";
/**
* Extend the base Dialog entity by defining a custom window to perform roll.
@ -12,7 +12,7 @@ export class RdDCalendrierEditeur extends Dialog {
content: html,
title: "Editeur de date/heure",
buttons: {
save: { label: "Enregistrer", callback: html => this.fillData() }
save: { label: "Enregistrer", callback: html => this.saveCalendrier() }
},
default: "save"
};
@ -26,22 +26,42 @@ export class RdDCalendrierEditeur extends Dialog {
activateListeners(html) {
super.activateListeners(html);
this.html = html;
this.html.find("input[name='nomMois']").val(this.calendrierData.moisKey);
this.html.find("input[name='annee']").val(this.calendrierData.annee);
this.html.find("select[name='nomMois']").val(this.calendrierData.moisKey);
this.html.find("input[name='jourMois']").val(this.calendrierData.jourMois);
this.html.find("select[name='nomHeure']").val(this.calendrierData.heureKey);
this.html.find("select[name='jourMois']").val(this.calendrierData.jourMois);
this.html.find("select[name='minutesRelative']").val(this.calendrierData.minutesRelative);
this.html.find("select[name='annee']").val(this.calendrierData.annee);
this.html.find("input[name='minutesRelative']").val(this.calendrierData.minutesRelative);
this.html.find("input[name='jourMois']").change(event => {
const jour = Number.parseInt(this.html.find("input[name='jourMois']").val());
if (jour < 1) {
this.html.find("input[name='jourMois']").val(1);
}
if (jour > 28) {
this.html.find("input[name='jourMois']").val(28);
}
});
this.html.find("input[name='minutesRelative']").change(event => {
const minute = Number.parseInt(this.html.find("input[name='minutesRelative']").val());
if (minute < 0) {
this.html.find("input[name='minutesRelative']").val(0);
}
if (minute > 119) {
this.html.find("input[name='minutesRelative']").val(119);
}
});
}
/* -------------------------------------------- */
fillData() {
this.calendrierData.annee = this.html.find("input[name='annee']").val();
this.calendrierData.moisKey = this.html.find("select[name='nomMois']").val();
this.calendrierData.heureKey = this.html.find("select[name='nomHeure']").val();
this.calendrierData.jourMois = this.html.find("select[name='jourMois']").val();
this.calendrierData.minutesRelative = this.html.find("select[name='minutesRelative']").val();
saveCalendrier() {
const annee = Number.parseInt(this.html.find("input[name='annee']").val());
const mois = this.html.find("select[name='nomMois']").val();
const jour = Number.parseInt(this.html.find("input[name='jourMois']").val());
const heure = this.html.find("select[name='nomHeure']").val();
const minute = Number.parseInt(this.html.find("input[name='minutesRelative']").val());
this.calendrier.saveEditeur(this.calendrierData)
this.calendrier.setNewTimestamp(RdDTimestamp.timestamp(annee, mois, jour, heure, minute))
}
/* -------------------------------------------- */