Begin working on the QueryStatus application for the requestor to monitor user responses
This commit is contained in:
parent
47b68621c1
commit
a242101b5b
6 changed files with 154 additions and 0 deletions
|
|
@ -2,6 +2,7 @@
|
|||
import { Ask } from "./apps/Ask.mjs";
|
||||
import { AttributeManager } from "./apps/AttributeManager.mjs";
|
||||
import { PlayerSheet } from "./apps/PlayerSheet.mjs";
|
||||
import { QueryStatus } from "./apps/QueryStatus.mjs";
|
||||
|
||||
// Utils
|
||||
import { attributeSorter } from "./utils/attributeSort.mjs";
|
||||
|
|
@ -22,6 +23,7 @@ Object.defineProperty(
|
|||
Ask,
|
||||
AttributeManager,
|
||||
PlayerSheet,
|
||||
QueryStatus,
|
||||
},
|
||||
utils: {
|
||||
attributeSorter,
|
||||
|
|
|
|||
75
module/apps/QueryStatus.mjs
Normal file
75
module/apps/QueryStatus.mjs
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
import { __ID__, filePath } from "../consts.mjs";
|
||||
import { QueryManager } from "../utils/QueryManager.mjs";
|
||||
|
||||
const { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;
|
||||
|
||||
export class QueryStatus extends HandlebarsApplicationMixin(ApplicationV2) {
|
||||
// #region Options
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: [
|
||||
__ID__,
|
||||
`QueryStatus`,
|
||||
],
|
||||
};
|
||||
|
||||
static PARTS = {
|
||||
users: {
|
||||
template: filePath(`templates/QueryStatus/users.hbs`),
|
||||
},
|
||||
// controls: {
|
||||
// template: filePath(`templates/QueryStatus/controls.hbs`),
|
||||
// },
|
||||
};
|
||||
// #endregion Options
|
||||
|
||||
// #region Instance
|
||||
constructor({
|
||||
requestID,
|
||||
...opts
|
||||
}) {
|
||||
super(opts);
|
||||
this.requestID = requestID;
|
||||
};
|
||||
// #endregion Instance
|
||||
|
||||
// #region Lifecycle
|
||||
async _preparePartContext(partID) {
|
||||
const ctx = {};
|
||||
|
||||
switch (partID) {
|
||||
case `users`: {
|
||||
this._prepareUsers(ctx);
|
||||
break;
|
||||
};
|
||||
case `controls`: {
|
||||
this._prepareControls(ctx);
|
||||
break;
|
||||
};
|
||||
};
|
||||
|
||||
return ctx;
|
||||
};
|
||||
|
||||
async _prepareUsers(ctx) {
|
||||
const query = QueryManager.get(this.requestID);
|
||||
if (!query) { return };
|
||||
|
||||
const users = [];
|
||||
for (const userID of query.users) {
|
||||
const user = game.users.get(userID);
|
||||
users.push({
|
||||
id: userID,
|
||||
name: user.name,
|
||||
colour: user.color,
|
||||
answers: query.responses[userID] ?? null,
|
||||
});
|
||||
};
|
||||
ctx.users = users;
|
||||
};
|
||||
|
||||
async _prepareControls(ctx) {};
|
||||
// #endregion Lifecycle
|
||||
|
||||
// #region Actions
|
||||
// #endregion Actions
|
||||
};
|
||||
|
|
@ -26,6 +26,17 @@ export class QueryManager {
|
|||
return this.#queries.has(requestID);
|
||||
};
|
||||
|
||||
static get(requestID) {
|
||||
if (!this.#queries.has(requestID)) { return null };
|
||||
const query = this.#queries.get(requestID);
|
||||
const cloned = foundry.utils.deepClone(query);
|
||||
|
||||
delete cloned.onSubmit;
|
||||
delete cloned.resolve;
|
||||
|
||||
return cloned;
|
||||
};
|
||||
|
||||
static async query(
|
||||
request,
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue