|
@@ -119,15 +119,16 @@ window.onload = function() {
|
|
|
// define levels by the maximum birth date in that level
|
|
|
function calculateLevels(personList) {
|
|
|
personList = personList.concat().sort((a, b) => {
|
|
|
- const dateA = a.birth_date || a.death_date
|
|
|
- const dateB = b.birth_date || b.death_date
|
|
|
+ const dateA = +a.birth_date || a.death_date - 3600000 * 24 * 365 * 80
|
|
|
+ const dateB = +b.birth_date || b.death_date - 3600000 * 24 * 365 * 80
|
|
|
return dateA - dateB
|
|
|
})
|
|
|
let levels = []
|
|
|
let currentPersons = []
|
|
|
+ let date
|
|
|
for(const person of personList) {
|
|
|
- const date = person.birth_date || person.death_date
|
|
|
- if(!date || !person.hasCard)
|
|
|
+ date = +person.birth_date || person.death_date - 3600000 * 24 * 365 * 80
|
|
|
+ if((!person.birth_date && !person.death_date) || !person.hasCard)
|
|
|
continue
|
|
|
if(person.parent && currentPersons.find(p => person.parent.id === p.id)) {
|
|
|
levels.push(date - 1)
|
|
@@ -136,7 +137,7 @@ window.onload = function() {
|
|
|
currentPersons.push(person)
|
|
|
}
|
|
|
}
|
|
|
- levels.push(+personList[personList.length - 1].birth_date || +personList[personList.length - 1].death_date)
|
|
|
+ levels.push(date)
|
|
|
return levels
|
|
|
}
|
|
|
const levels = calculateLevels(persons)
|
|
@@ -159,8 +160,11 @@ window.onload = function() {
|
|
|
const person = personList[j];
|
|
|
|
|
|
// set y
|
|
|
- const date = person.birth_date || person.death_date
|
|
|
- person.level = Math.max(level, levels.findIndex(l => l >= +date && date != null));
|
|
|
+ const date = +person.birth_date || person.death_date - 3600000 * 24 * 365 * 80
|
|
|
+ if(person.birth_date == null && person.death_date == null)
|
|
|
+ person.level = level
|
|
|
+ else
|
|
|
+ person.level = Math.max(level, levels.findIndex(l => l >= date));
|
|
|
if(person.partner && person.partner.level > person.level) {
|
|
|
person.level = person.partner.level;
|
|
|
}
|