Compare commits

...

2 Commits

Author SHA1 Message Date
DebaucheryLibrarian c530751a70 0.41.13 2025-11-18 00:41:43 +01:00
DebaucheryLibrarian f4acee53c4 Added details prop to summary actors. 2025-11-18 00:41:41 +01:00
4 changed files with 63 additions and 10 deletions

View File

@ -16,12 +16,14 @@ export default {
gender: 'female', gender: 'female',
ageThen: 26, ageThen: 26,
ageFromBirth: 31, ageFromBirth: 31,
dateOfBirth: new Date(1999, 2, 2),
}, },
{ {
name: 'Mo The Fucker', name: 'Mo The Fucker',
gender: 'male', gender: 'male',
ageThen: 32, ageThen: 32,
ageFromBirth: 37, ageFromBirth: 37,
dateOfBirth: new Date(1988, 5, 12),
}, },
], ],
tags: [ tags: [

4
package-lock.json generated
View File

@ -1,11 +1,11 @@
{ {
"name": "traxxx-web", "name": "traxxx-web",
"version": "0.41.12", "version": "0.41.13",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"version": "0.41.12", "version": "0.41.13",
"dependencies": { "dependencies": {
"@brillout/json-serializer": "^0.5.8", "@brillout/json-serializer": "^0.5.8",
"@dicebear/collection": "^7.0.5", "@dicebear/collection": "^7.0.5",

View File

@ -87,7 +87,7 @@
"overrides": { "overrides": {
"vite": "$vite" "vite": "$vite"
}, },
"version": "0.41.12", "version": "0.41.13",
"imports": { "imports": {
"#/*": "./*.js" "#/*": "./*.js"
} }

View File

@ -27,14 +27,65 @@ const propProcessors = {
return sceneInfo.actors return sceneInfo.actors
.filter((actor) => genders.includes(actor.gender)) .filter((actor) => genders.includes(actor.gender))
.map((actor) => { .map((actor) => {
const curatedActor = {
...actor,
age: actor.ageThen,
ageNow: actor.age,
g: actor.gender?.charAt(0),
G: actor.gender?.charAt(0).toUpperCase(),
dateOfBirth: actor.dateOfBirth && format(actor.dateOfBirth, 'yyyy-MM-dd'),
};
if (options.format) { if (options.format) {
return formatTemplate(options.format, Object.fromEntries(Object.entries({ return formatTemplate(options.format, Object.fromEntries(Object.entries(curatedActor).map(([key, value]) => [key, value ?? '']))); // don't render `null`
...actor, }
age: actor.ageThen,
ageNow: actor.age, if (options.details) {
g: actor.gender?.charAt(0), return options.details
G: actor.gender?.charAt(0).toUpperCase(), .map((parentDetail) => {
}).map(([key, value]) => [key, value ?? '']))); // don't render `null` if (parentDetail.details) { // already nested
return {
...parentDetail,
details: parentDetail.details.map((detail) => {
if (detail.key) {
return detail;
}
return { key: detail };
}),
};
}
if (parentDetail.key) {
return {
details: [parentDetail],
};
}
return {
details: [{ key: parentDetail }],
};
})
.map((parentDetail) => {
const curatedDetails = parentDetail.details
.filter((detail) => !!curatedActor[detail.key])
.map((detail) => {
if (detail.wrap) {
return `${detail.wrap[0]}${curatedActor[detail.key]}${detail.wrap[1]}`;
}
return curatedActor[detail.key];
})
.join(parentDetail.delimiter ?? ' ');
if (parentDetail.wrap) {
return `${parentDetail.wrap[0]}${curatedDetails}${parentDetail.wrap[1]}`;
}
return curatedDetails;
})
.filter((parentDetail) => !!parentDetail)
.join(options.detailDelimiter ?? ' ');
} }
return actor.name; return actor.name;