This commit is contained in:
freedakgmail
2025-12-10 15:21:27 +08:00
parent e7167f4340
commit 1ae59960e8
148 changed files with 681 additions and 477 deletions
+5 -13
View File
@@ -38,33 +38,25 @@ interface PlaceholderMember {
type MemberOrPlaceholder = FamilyMember | PlaceholderMember
// 提取占位符生成逻辑为独立函数
function addPlaceholdersToFamilyUnit(
// 提取配偶添加逻辑为独立函数(移除占位符,让卡片自然流动排列)
function addSpousesToFamilyUnit(
member: FamilyMember,
spouses: FamilyMember[],
processedSpouses: Set<string>
): MemberOrPlaceholder[] {
const result: MemberOrPlaceholder[] = [member]
let familyUnitSize = 1 // 主成员自己
// 添加配偶
// 添加配偶(紧跟在主成员后面)
if (member.spouseIds && member.spouseIds.length > 0) {
member.spouseIds.forEach(spouseId => {
const spouse = spouses.find(m => m.id === spouseId)
if (spouse && !processedSpouses.has(spouseId)) {
result.push(spouse)
processedSpouses.add(spouseId)
familyUnitSize++
}
})
}
// 计算需要添加的占位符数量,确保填满4的倍数
const placeholdersNeeded = (4 - (familyUnitSize % 4)) % 4
for (let i = 0; i < placeholdersNeeded; i++) {
result.push({ id: `placeholder-${member.id}-${i}`, isPlaceholder: true })
}
return result
}
@@ -679,12 +671,12 @@ export default function MembersPage() {
return aDate.localeCompare(bDate)
})
// 使用优化后的函数添加配偶和占位符
// 添加配偶(紧跟在主成员后面,不使用占位符
const result: MemberOrPlaceholder[] = []
const processedSpouses = new Set<string>()
sortedFamilyMembers.forEach(member => {
const familyUnit = addPlaceholdersToFamilyUnit(member, members, processedSpouses)
const familyUnit = addSpousesToFamilyUnit(member, members, processedSpouses)
result.push(...familyUnit)
})