Gestion d'update de timestamp

This commit is contained in:
Vincent Vandemeulebrouck 2023-01-07 23:58:33 +01:00
parent c3076fdbfc
commit 3782ed9055
2 changed files with 34 additions and 1 deletions

View File

@ -186,7 +186,7 @@ export class RdDItemSheet extends ItemSheet {
const jour = Number(this.html.find('input.date-enchantement[name="enchantement.jour"]').val()); const jour = Number(this.html.find('input.date-enchantement[name="enchantement.jour"]').val());
const mois = RdDTimestamp.definition(this.html.find('select.date-enchantement[name="enchantement.mois"]').val()); const mois = RdDTimestamp.definition(this.html.find('select.date-enchantement[name="enchantement.mois"]').val());
const indexDate = game.system.rdd.calendrier.getIndexFromDate(jour, mois.heure); const indexDate = game.system.rdd.calendrier.getIndexFromDate(jour, mois.heure);
this.item.update({'system.prdate': indexDate}); this.item.update({ 'system.prdate': indexDate });
console.warn(`Date d'enchantement modifiée ${jour}/${mois.heure}: ${indexDate}`) console.warn(`Date d'enchantement modifiée ${jour}/${mois.heure}: ${indexDate}`)
}); });
@ -212,6 +212,11 @@ export class RdDItemSheet extends ItemSheet {
this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente()); this.html.find('.item-vendre').click(async event => RdDSheetUtility.getItem(event, this.actor)?.proposerVente());
this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItemToChat()); this.html.find('.item-montrer').click(async event => RdDSheetUtility.getItem(event, this.actor)?.postItemToChat());
this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => this.render(true))); this.html.find('.item-action').click(async event => RdDSheetUtility.getItem(event, this.actor)?.actionPrincipale(this.actor, async () => this.render(true)));
const updateItemTimestamp = (path, timestamp) => this.item.update({ [path]: duplicate(timestamp) })
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.debut', updateItemTimestamp);
RdDTimestamp.handleTimestampEditor(this.html, 'system.temporel.fin', updateItemTimestamp);
} }
_getEventActor(event) { _getEventActor(event) {
@ -220,6 +225,7 @@ export class RdDItemSheet extends ItemSheet {
return actor; return actor;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
async _onSelectCategorie(event) { async _onSelectCategorie(event) {
event.preventDefault(); event.preventDefault();

View File

@ -86,6 +86,7 @@ export class RdDTimestamp {
static formulesDuree() { static formulesDuree() {
return FORMULES_DUREE return FORMULES_DUREE
} }
static formulesPeriode() { static formulesPeriode() {
return FORMULES_PERIODE return FORMULES_PERIODE
} }
@ -98,6 +99,32 @@ export class RdDTimestamp {
return `<img class="img-signe-heure" src="${signe.webp}" alt="${signe.label}"/>` return `<img class="img-signe-heure" src="${signe.webp}" alt="${signe.label}"/>`
} }
static handleTimestampEditor(html, path, consumeTimestamp = async (path, timestamp) => {}) {
const fields = {
annee: html.find(`input[name="${path}.annee"]`),
mois: html.find(`select[name="${path}.mois"]`),
jourDuMois: html.find(`input[name="${path}.jourDuMois"]`),
heure: html.find(`select[name="${path}.heure"]`),
minute: html.find(`input[name="${path}.minute"]`)
};
async function onChangeTimestamp(fields, path) {
const annee = Number(fields.annee.val());
const mois = fields.mois.val();
const jour = Number(fields.jourDuMois.val());
const heure = fields.heure.val();
const minute = Number(fields.minute.val());
await consumeTimestamp(path, RdDTimestamp.timestamp(annee, mois, jour, heure, minute));
}
fields.annee.change(async (event) => await onChangeTimestamp(fields, path));
fields.mois.change(async (event) => await onChangeTimestamp(fields, path));
fields.jourDuMois.change(async (event) => await onChangeTimestamp(fields, path));
fields.heure.change(async (event) => await onChangeTimestamp(fields, path));
fields.minute.change(async (event) => await onChangeTimestamp(fields, path));
}
static findHeure(heure) { static findHeure(heure) {
heure = Grammar.toLowerCaseNoAccentNoSpace(heure); heure = Grammar.toLowerCaseNoAccentNoSpace(heure);
let parHeureOuLabel = DEFINITION_HEURES.filter(it => (it.heure) == parseInt(heure) % RDD_HEURES_PAR_JOUR || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure); let parHeureOuLabel = DEFINITION_HEURES.filter(it => (it.heure) == parseInt(heure) % RDD_HEURES_PAR_JOUR || Grammar.toLowerCaseNoAccentNoSpace(it.label) == heure);