refactor(MemberService, MemberGalleryDialog): update image selection logic and enhance participant styling
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 43s
- Refactored image selection logic in MemberService to prioritize primary images based on sortOrder. - Updated MemberGalleryDialog styles for participant items, adding visual indicators and improved background colors for better user experience.
This commit is contained in:
@@ -363,10 +363,10 @@ class MemberService {
|
||||
}
|
||||
|
||||
if (!imageRecord) {
|
||||
// Get latest image (highest sortOrder, then highest id)
|
||||
// Ohne explizite imageId immer das Primärbild liefern (kleinste sortOrder).
|
||||
imageRecord = await MemberImage.findOne({
|
||||
where: { memberId },
|
||||
order: [['sortOrder', 'DESC'], ['id', 'DESC']]
|
||||
order: [['sortOrder', 'ASC'], ['id', 'ASC']]
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1666,12 +1666,12 @@ class MemberService {
|
||||
continue;
|
||||
}
|
||||
|
||||
const latestImage = this._selectLatestImage(images);
|
||||
if (!latestImage) {
|
||||
const primaryImage = this._selectPrimaryImage(images);
|
||||
if (!primaryImage) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const fileName = latestImage.fileName || `${latestImage.id}.jpg`;
|
||||
const fileName = primaryImage.fileName || `${primaryImage.id}.jpg`;
|
||||
const filePath = path.join('images', 'members', String(member.id), fileName);
|
||||
if (!fs.existsSync(filePath)) {
|
||||
continue;
|
||||
@@ -1847,24 +1847,19 @@ class MemberService {
|
||||
};
|
||||
}
|
||||
|
||||
_selectLatestImage(images) {
|
||||
_selectPrimaryImage(images) {
|
||||
if (!Array.isArray(images) || images.length === 0) {
|
||||
return null;
|
||||
}
|
||||
return images
|
||||
.slice()
|
||||
.sort((a, b) => {
|
||||
const updatedA = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;
|
||||
const updatedB = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;
|
||||
if (updatedA !== updatedB) {
|
||||
return updatedB - updatedA;
|
||||
}
|
||||
const sortA = Number.isFinite(a.sortOrder) ? a.sortOrder : parseInt(a.sortOrder || '0', 10);
|
||||
const sortB = Number.isFinite(b.sortOrder) ? b.sortOrder : parseInt(b.sortOrder || '0', 10);
|
||||
if (sortA !== sortB) {
|
||||
return sortB - sortA;
|
||||
return sortA - sortB;
|
||||
}
|
||||
return (b.id || 0) - (a.id || 0);
|
||||
return (a.id || 0) - (b.id || 0);
|
||||
})[0];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user