const api = foundry.applications.api; const sheets = foundry.applications.sheets; export default class pokemonCharacterSheet extends api.HandlebarsApplicationMixin(sheets.ActorSheetV2) { sheetContext = {}; tab = "tab2"; static DEFAULT_OPTIONS = { tag: "form", classes: ["pokemon", "sheet", "characterSheet"], tabs: [ {navSelector: ".tabs", contentSelector: ".content", initial: this.tab} ], form: { submitOnChange: true, closeOnSubmit: false }, position: { width: 650 } } static PARTS = { header: { template: "systems/pokemon/templates/sheets/character/header.hbs" }, sidebar: { template: "systems/pokemon/templates/sheets/character/sidebar.hbs" } } get title() { return this.actor.name; } /** @override */ _configureRenderOptions(options) { super._configureRenderOptions(options); if (this.document.limited) options.parts = ["header"] else options.parts = ["header", "sidebar"]; } /** @override */ async _prepareContext(options) { // ################################################################################################# // ################################################################################################# // ## ## // ## Creates Basic Datamodel, which is used to fill the HTML together with Handelbars with Data. ## // ## ## // ################################################################################################# // ################################################################################################# const baseData = await super._prepareContext(); let context = { // Set General Values owner: baseData.document.isOwner, editable: baseData.editable, actor: baseData.document, system: baseData.document.system, items: baseData.document.items, config: CONFIG.POKEMON, isGM: baseData.user.isGM, effects: baseData.document.effects }; context = this.calculateDerivated(context) this.sheetContext = context; context.tab = "tab2" return context; } calculateDerivated(context) { context.system.armorClass = 10+context.system.stats.defense; context.system.speed = 30+5*context.system.stats.speed; return context; } /** @override */ _onRender(context, options) { // this.tab = context.system.tab; const tabs = new foundry.applications.ux.Tabs({navSelector: ".tabs", contentSelector: ".content", initial: this.tab}); tabs.bind(this.element); console.log("Rendering with "+this.tab+" open"); tabs.activate(this.tab); tabs.callback = () => { console.log("Switching to "+tabs.active); this.tab = tabs.active; context.system.tab = tabs.active; this.submit(); } } }