32 lines
1 KiB
JavaScript
32 lines
1 KiB
JavaScript
/*
|
|
This file contains utility methods used by Applications in order to be
|
|
DRYer
|
|
*/
|
|
|
|
/**
|
|
* Updates a document using the UUID, this is most useful for editing
|
|
* documents from a sheet of another document (e.g. an Item embedded
|
|
* in an Actor). This requires the dataset of the element to have a
|
|
* "data-foreign-name" which is the data path of the property being
|
|
* edited. As well as the input, or a parent of it, to have the
|
|
* "data-foreign-uuid" attribute, representing the UUID of the document
|
|
* to edit.
|
|
*/
|
|
export async function updateForeignDocumentFromEvent(event) {
|
|
const target = event.currentTarget;
|
|
const name = target.dataset.foreignName;
|
|
let uuid = target.dataset.foreignUuid;
|
|
uuid ??= target.closest(`[data-foreign-uuid]`)?.dataset.foreignUuid;
|
|
|
|
if (!name || !uuid) {
|
|
throw `Cannot edit foreign document with the name and UUID`;
|
|
};
|
|
|
|
let value = target.value;
|
|
switch (target.type) {
|
|
case `checkbox`: value = target.checked; break;
|
|
};
|
|
|
|
let doc = await fromUuid(uuid);
|
|
await doc?.update({ [name]: value });
|
|
};
|