58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
|
import { Misc } from "../misc.js";
|
||
|
import { RdDCalendrier } from "../rdd-calendrier.js";
|
||
|
import { RdDTimestamp } from "../rdd-timestamp.js";
|
||
|
|
||
|
export class ThemeAstral extends Application {
|
||
|
static get defaultOptions() {
|
||
|
return mergeObject(super.defaultOptions, {
|
||
|
template: "systems/foundryvtt-reve-de-dragon/templates/sommeil/theme-astral.hbs",
|
||
|
title: "Thème astral",
|
||
|
width: 'fit-content',
|
||
|
height: 'fit-content',
|
||
|
popOut: true,
|
||
|
resizable: false
|
||
|
});
|
||
|
}
|
||
|
|
||
|
static async create() {
|
||
|
new ThemeAstral().render(true);
|
||
|
}
|
||
|
constructor() {
|
||
|
super({});
|
||
|
}
|
||
|
|
||
|
activateListeners(html) {
|
||
|
super.activateListeners(html);
|
||
|
this.html = html;
|
||
|
this.html.find('select[name="signe-astral"]').change(event => {
|
||
|
this.onCalculThemeAstral();
|
||
|
})
|
||
|
this.html.find('select[name="signe-naissance"]').change(event => {
|
||
|
this.onCalculThemeAstral();
|
||
|
})
|
||
|
this.onCalculThemeAstral();
|
||
|
}
|
||
|
|
||
|
onCalculThemeAstral() {
|
||
|
const signeAstral = RdDTimestamp.definition(this.html.find('select[name="signe-astral"]').val())
|
||
|
const chiffreAstral = signeAstral.heure + 1;
|
||
|
const signeNaissance = RdDTimestamp.definition(this.html.find('select[name="signe-naissance"]').val())
|
||
|
const heureNaissance = signeNaissance.heure + 1;
|
||
|
const heureChance = (chiffreAstral + heureNaissance) % 12 + 1
|
||
|
RdDTimestamp.definitions().forEach(dh => {
|
||
|
const ajustement = RdDCalendrier.ajustementAstrologiqueHeure(heureNaissance, chiffreAstral, dh.heure + 1);
|
||
|
const txtAjustement = ajustement == 0 ? '' : Misc.toSignedString(ajustement);
|
||
|
this.html.find(`div.astro-ajustement.ajustement-${dh.hh}`).text(txtAjustement)
|
||
|
});
|
||
|
|
||
|
const angle = (heureChance * 30 + 330) % 360;
|
||
|
const rotation = `rotate(${angle}deg)`;
|
||
|
this.html.find(`div.astro-roue div.astro-disque img`).css({
|
||
|
'transform': rotation,
|
||
|
'-ms-transform': rotation,
|
||
|
'-moz-transform': rotation,
|
||
|
'-webkit-transform': rotation,
|
||
|
'-o-transform': rotation
|
||
|
});
|
||
|
}
|
||
|
}
|