From 87ce956368a79e6aa1a23ab10eb685728fc60891 Mon Sep 17 00:00:00 2001 From: Oliver-Akins Date: Mon, 21 Apr 2025 01:48:55 -0600 Subject: [PATCH] Add support for the user data filter that defaults to only the user's data --- module/Apps/StatsViewer.mjs | 27 ++++++++++++++----- module/handlebarsHelpers/options.mjs | 9 ++++--- public/styles/Apps/StatsViewer.css | 5 ++++ .../Apps/StatsViewer/dataFilters.hbs | 10 ++++++- 4 files changed, 41 insertions(+), 10 deletions(-) diff --git a/module/Apps/StatsViewer.mjs b/module/Apps/StatsViewer.mjs index 6d3ea46..78f5be4 100644 --- a/module/Apps/StatsViewer.mjs +++ b/module/Apps/StatsViewer.mjs @@ -43,12 +43,10 @@ export class StatsViewer extends HandlebarsApplicationMixin(ApplicationV2) { async _onRender(context, options) { await super._onRender(context, options); - const { parts } = options; - - if (parts.includes(`tableSelect`)) { - this.element - .querySelector(`[data-application-part="tableSelect"] [data-bind]`) - ?.addEventListener(`change`, this.#bindListener.bind(this)); + const elements = this.element + .querySelectorAll(`[data-bind]`); + for (const input of elements) { + input.addEventListener(`change`, this.#bindListener.bind(this)); }; }; @@ -60,6 +58,10 @@ export class StatsViewer extends HandlebarsApplicationMixin(ApplicationV2) { this.#prepareTableSelectContext(ctx); break; }; + case `dataFilters`: { + this.#prepareDataFiltersContext(ctx); + break; + }; }; if (import.meta.env.DEV) { @@ -99,6 +101,18 @@ export class StatsViewer extends HandlebarsApplicationMixin(ApplicationV2) { ctx.subtables = subtableList; }; + _selectedUsers = [game.user.id]; + async #prepareDataFiltersContext(ctx) { + ctx.users = []; + ctx.selectedUsers = this._selectedUsers; + for (const user of game.users) { + ctx.users.push({ + label: user.name, + value: user.id, + }); + }; + }; + /** * @param {Event} event */ @@ -108,6 +122,7 @@ export class StatsViewer extends HandlebarsApplicationMixin(ApplicationV2) { const binding = data.bind; if (!binding || !Object.hasOwn(this, binding)) { + Logger.debug(`Skipping change for element with binding "${binding}"`); return; }; diff --git a/module/handlebarsHelpers/options.mjs b/module/handlebarsHelpers/options.mjs index a7e68a8..72b04a8 100644 --- a/module/handlebarsHelpers/options.mjs +++ b/module/handlebarsHelpers/options.mjs @@ -6,12 +6,15 @@ */ /** - * @param {string | number} selected + * @param {string | number | string[] | number[]} selected * @param {Array