55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
|
|
/**
|
||
|
|
* The singleton collection of Folder documents which exist within the active World.
|
||
|
|
* This Collection is accessible within the Game object as game.folders.
|
||
|
|
* @extends {WorldCollection}
|
||
|
|
*
|
||
|
|
* @see {@link Folder} The Folder document
|
||
|
|
*/
|
||
|
|
class Folders extends WorldCollection {
|
||
|
|
|
||
|
|
/** @override */
|
||
|
|
static documentName = "Folder";
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Track which Folders are currently expanded in the UI
|
||
|
|
*/
|
||
|
|
_expanded = {};
|
||
|
|
|
||
|
|
/* -------------------------------------------- */
|
||
|
|
|
||
|
|
/** @override */
|
||
|
|
_onModifyContents(action, documents, result, operation, user) {
|
||
|
|
if ( operation.render ) {
|
||
|
|
const folderTypes = new Set(documents.map(f => f.type));
|
||
|
|
for ( const type of folderTypes ) {
|
||
|
|
if ( type === "Compendium" ) ui.sidebar.tabs.compendium.render(false);
|
||
|
|
else {
|
||
|
|
const collection = game.collections.get(type);
|
||
|
|
collection.render(false, {renderContext: `${action}${this.documentName}`, renderData: result});
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if ( folderTypes.has("JournalEntry") ) this._refreshJournalEntrySheets();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* -------------------------------------------- */
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Refresh the display of any active JournalSheet instances where the folder list will change.
|
||
|
|
* @private
|
||
|
|
*/
|
||
|
|
_refreshJournalEntrySheets() {
|
||
|
|
for ( let app of Object.values(ui.windows) ) {
|
||
|
|
if ( !(app instanceof JournalSheet) ) continue;
|
||
|
|
app.submit();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* -------------------------------------------- */
|
||
|
|
|
||
|
|
/** @override */
|
||
|
|
render(force, options={}) {
|
||
|
|
console.warn("The Folders collection is not directly rendered");
|
||
|
|
}
|
||
|
|
}
|