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',
ageThen: 26,
ageFromBirth: 31,
dateOfBirth: new Date(1999, 2, 2),
},
{
name: 'Mo The Fucker',
gender: 'male',
ageThen: 32,
ageFromBirth: 37,
dateOfBirth: new Date(1988, 5, 12),
},
],
tags: [

4
package-lock.json generated
View File

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

View File

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

View File

@ -27,14 +27,65 @@ const propProcessors = {
return sceneInfo.actors
.filter((actor) => genders.includes(actor.gender))
.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) {
return formatTemplate(options.format, Object.fromEntries(Object.entries({
...actor,
age: actor.ageThen,
ageNow: actor.age,
g: actor.gender?.charAt(0),
G: actor.gender?.charAt(0).toUpperCase(),
}).map(([key, value]) => [key, value ?? '']))); // don't render `null`
return formatTemplate(options.format, Object.fromEntries(Object.entries(curatedActor).map(([key, value]) => [key, value ?? '']))); // don't render `null`
}
if (options.details) {
return options.details
.map((parentDetail) => {
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;