From 0ddb762e56a1b1ff7bac26356adfea009b6b2438 Mon Sep 17 00:00:00 2001 From: Anthony Edmonds Date: Mon, 25 Nov 2024 20:55:44 +0000 Subject: [PATCH] Removed for ... in index loops, corrected API ID management --- AuraRingApi.js | 137 ++++++++++++++++++++----------------- AuraRingFormApplication.js | 12 +--- GridBased.js | 4 +- README.md | 24 +++---- module.json | 6 +- 5 files changed, 92 insertions(+), 91 deletions(-) diff --git a/AuraRingApi.js b/AuraRingApi.js index bc48288..f165b70 100644 --- a/AuraRingApi.js +++ b/AuraRingApi.js @@ -24,13 +24,13 @@ export class AuraRingApi /** * Retrieve all Aura Rings * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument * * @returns {Array[AuraRing]} */ - static all(simpleTokenDocument) + static all(tokenDocument) { - return AuraRingFlags.getAuraRings(simpleTokenDocument); + return AuraRingFlags.getAuraRings(tokenDocument); } /** @@ -46,55 +46,94 @@ export class AuraRingApi /** * Remove an Aura Ring * - * @param {SimpleTokenDocument*} simpleTokenDocument + * @param {TokenDocument*} tokenDocument * @param {number} id */ - static delete(simpleTokenDocument, id) + static delete(tokenDocument, id) { - const auraRings = AuraRingFlags.getAuraRings(simpleTokenDocument); - const index = AuraRingApi.getAuraRingIndex(id); + const auraRings = AuraRingFlags.getAuraRings(tokenDocument); + const index = AuraRingApi.getAuraRingIndex(auraRings, id); if (index !== false) { auraRings.splice(index, 1); - AuraRingFlags.setAuraRings(simpleTokenDocument, auraRings); + AuraRingFlags.setAuraRings(tokenDocument, auraRings); } } /** * Remove all Aura Rings * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument */ - static deleteAll(simpleTokenDocument) + static deleteAll(tokenDocument) { - AuraRingFlags.setAuraRings(simpleTokenDocument, []); + AuraRingFlags.setAuraRings(tokenDocument, []); } /** * Retrieve a specific Aura Ring * - * @param {SimpleTokenDocument} simpleTokenDocument - * @param {number} id + * @param {TokenDocument} tokenDocument + * @param {number|string} term + * @param {string} field + * + * @returns {AuraRing|false} + */ + static get(tokenDocument, term, field = 'id') + { + const auraRings = AuraRingFlags.getAuraRings(tokenDocument); + + return AuraRingApi.getAuraRing(auraRings, term, field); + } + + /** + * Retrieve an Aura Ring by any field * + * @param {AuraRing[]} auraRings + * @param {number|string} term + * @param {string} field * @returns {AuraRing|false} */ - static get(simpleTokenDocument, id) + static getAuraRing(auraRings, term, field = 'id') { - const auraRings = AuraRingFlags.getAuraRings(simpleTokenDocument); + for (const auraRing of auraRings) { + if (auraRing[field] === term) { + return auraRing; + } + } - return AuraRingApi.getAuraRing(auraRings, id); + return false; + } + + /** + * Retrieve the index of an Aura Ring by any field + * + * @param {AuraRing[]} auraRings + * @param {number|string} term + * @param {string} field + * @returns {AuraRing|false} + */ + static getAuraRingIndex(auraRings, term, field = 'id') + { + for (let index = 0; index < auraRings.length; ++index) { + if (auraRings[index][field] === term) { + return index; + } + } + + return false; } /** * Retrieve a list of Aura Ring names keyed by their ID * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument * * @returns {Object} */ - static index(simpleTokenDocument) + static index(tokenDocument) { - const auraRings = AuraRingFlags.getAuraRings(simpleTokenDocument); + const auraRings = AuraRingFlags.getAuraRings(tokenDocument); const index = {}; for (const auraRing of auraRings) { @@ -108,18 +147,18 @@ export class AuraRingApi * Create a new Aura Ring from the default settings * The ID of the Aura Ring will be set to the next available * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument * * @returns {AuraRing} As given, but with the new ID */ - static new(simpleTokenDocument) + static new(tokenDocument) { - const auraRings = AuraRingFlags.getAuraRings(simpleTokenDocument); + const auraRings = AuraRingFlags.getAuraRings(tokenDocument); const auraRing = AuraRingDataModel.defaultSettings(); auraRing.id = AuraRingFlags.nextAvailableId(auraRings); auraRings.push(auraRing); - AuraRingFlags.setAuraRings(simpleTokenDocument, auraRings); + AuraRingFlags.setAuraRings(tokenDocument, auraRings); return auraRing; } @@ -127,12 +166,12 @@ export class AuraRingApi /** * Overwrite an Aura Ring with new settings * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument * @param {AuraRing} auraRing */ - static set(simpleTokenDocument, auraRing) + static set(tokenDocument, auraRing) { - const auraRings = AuraRingFlags.getAuraRings(simpleTokenDocument); + const auraRings = AuraRingFlags.getAuraRings(tokenDocument); const index = AuraRingApi.getAuraRingIndex(auraRings, auraRing.id); if (index !== false) { @@ -140,63 +179,33 @@ export class AuraRingApi } auraRings.push(auraRing); - AuraRingFlags.setAuraRings(simpleTokenDocument, auraRings); + AuraRingFlags.setAuraRings(tokenDocument, auraRings); } /** * Overwrite all Aura Rings with a new set * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument * @param {Array[AuraRing]} auraRings */ - static setAll(simpleTokenDocument, auraRings) + static setAll(tokenDocument, auraRings) { - AuraRingFlags.setAuraRings(simpleTokenDocument, auraRings); + AuraRingFlags.setAuraRings(tokenDocument, auraRings); } /** * Update a specific Aura Ring value directly * - * @param {SimpleTokenDocument} simpleTokenDocument + * @param {TokenDocument} tokenDocument * @param {number} id * @param {string} key * @param {number|string|boolean} value */ - static setValue(simpleTokenDocument, id, key, value) + static setValue(tokenDocument, id, key, value) { - const auraRings = AuraRingFlags.getAuraRings(simpleTokenDocument); + const auraRings = AuraRingFlags.getAuraRings(tokenDocument); const index = this.getAuraRingIndex(auraRings, id); auraRings[index][key] = value; - AuraRingFlags.setAuraRings(simpleTokenDocument, auraRings); - } - - static getAuraRing(auraRings, id) - { - if (typeof id === 'number') { - id = `${id}`; - } - - for (const auraRing of auraRings) { - if (auraRing.id === id) { - return auraRing; - } - } - - return false; - } - - static getAuraRingIndex(auraRings, id) - { - if (typeof id === 'number') { - id = `${id}`; - } - - for (const index in auraRings) { - if (auraRings[index].id === id) { - return index; - } - } - - return false; + AuraRingFlags.setAuraRings(tokenDocument, auraRings); } } diff --git a/AuraRingFormApplication.js b/AuraRingFormApplication.js index 345a3ad..ee9c31b 100644 --- a/AuraRingFormApplication.js +++ b/AuraRingFormApplication.js @@ -167,10 +167,6 @@ export class AuraRingFormApplication extends HandlebarsApplicationMixin(Applicat getAuraRing(id) { - if (typeof id === 'number') { - id = `${id}`; - } - for (const auraRing of this.auraRings) { if (auraRing.id === id) { return auraRing; @@ -182,11 +178,7 @@ export class AuraRingFormApplication extends HandlebarsApplicationMixin(Applicat getAuraRingIndex(id) { - if (typeof id === 'number') { - id = `${id}`; - } - - for (const index in this.auraRings) { + for (let index = 0; index < this.auraRings.length; ++index) { if (this.auraRings[index].id === id) { return index; } @@ -305,7 +297,7 @@ export class AuraRingFormApplication extends HandlebarsApplicationMixin(Applicat const formData = new FormDataExtended(form); const newAuraRings = this.gatherFormData(formData); - for (const index in newAuraRings) { + for (let index = 0; index < newAuraRings.length; ++index) { this.auraRings[index] = newAuraRings[index]; } diff --git a/GridBased.js b/GridBased.js index 619ab26..a9c61c2 100644 --- a/GridBased.js +++ b/GridBased.js @@ -529,7 +529,7 @@ export class GridBased let inverse = false; let startIndex = null; - for (const index in points) { + for (let index = 0; index < points.length; ++index) { const point = points[index]; if ( @@ -558,7 +558,7 @@ export class GridBased endIndex = swap; } - for (const index in points) { + for (let index = 0; index < points.length; ++index) { if (inverse === true) { if (index < startIndex || index > endIndex) { continue; diff --git a/README.md b/README.md index 91c55fc..04f47c4 100644 --- a/README.md +++ b/README.md @@ -106,18 +106,18 @@ Module developers can control Aura Rings using the `AuraRingApi` class. Macro developers can control Aura Rings using the `TokenAuraRing` global variable. -| Function | Parameters | Returns | Description | -| --------- | ------------------------------------ | ---------------- | ----------- | -| all | SimpleTokenDocument | Array[AuraRing] | Retrieve all Aura Rings | -| blank | | AuraRing | Get an unsaved empty Aura Ring without an ID | -| delete | SimpleTokenDocument, id | | Remove an Aura Ring | -| deleteAll | SimpleTokenDocument | | Remove all Aura Rings | -| get | SimpleTokenDocument, id | AuraRing|false | Retrieve a specific Aura Ring | -| index | SimpleTokenDocument | Object{id: name} | Retrieve a list of Aura Ring names keyed by their ID | -| new | SimpleTokenDocument | AuraRing | Create a new Aura Ring from the default settings | -| set | SimpleTokenDocument, AuraRing | | Overwrite an Aura Ring with new settings | -| setAll | SimpleTokenDocument, Array[AuraRing] | | Overwrite all Aura Rings with a new set | -| setValue | simpleTokenDocument, id, key, value | | Update a specific Aura Ring value directly | +| Function | Parameters | Returns | Description | +|-----------|-----------------------------------|------------------|-------------| +| all | TokenDocument | Array[AuraRing] | Retrieve all Aura Rings | +| blank | | AuraRing | Get an unsaved empty Aura Ring without an ID | +| delete | TokenDocument, id | | Remove an Aura Ring | +| deleteAll | TokenDocument | | Remove all Aura Rings | +| get | TokenDocument, term, field = 'id' | AuraRing|false | Retrieve a specific Aura Ring by a field, ID by default | +| index | TokenDocument | Object{id: name} | Retrieve a list of Aura Ring names keyed by their ID | +| new | TokenDocument | AuraRing | Create a new Aura Ring from the default settings | +| set | TokenDocument, AuraRing | | Overwrite an Aura Ring with new settings | +| setAll | TokenDocument, Array[AuraRing] | | Overwrite all Aura Rings with a new set | +| setValue | TokenDocument, id, key, value | | Update a specific Aura Ring value directly | All changes will trigger flag updates on the SimpleTokenDocument, and can be edited in the normal UI. diff --git a/module.json b/module.json index 9b3b000..791a328 100644 --- a/module.json +++ b/module.json @@ -3,8 +3,8 @@ "title": "Token Aura Ring", "description": "A simple module for Foundry VTT which adds an outlined ring aura to a token.", "url": "https://github.com/AnthonyEdmonds/token-aura-ring", - "manifest": "https://raw.githubusercontent.com/AnthonyEdmonds/token-aura-ring/2.1.2/module.json", - "download": "https://github.com/AnthonyEdmonds/token-aura-ring/archive/refs/tags/2.1.2.zip", + "manifest": "https://raw.githubusercontent.com/AnthonyEdmonds/token-aura-ring/2.1.3/module.json", + "download": "https://github.com/AnthonyEdmonds/token-aura-ring/archive/refs/tags/2.1.3.zip", "authors": [ { "name": "Anthony Edmonds", @@ -12,7 +12,7 @@ "flags": {} } ], - "version": "2.1.2", + "version": "2.1.3", "compatibility": { "minimum": "12", "verified": "12"