Browse Source

use both dates to determine level

subDesTagesMitExtraKaese 1 year ago
parent
commit
43bb86c5a5
1 changed files with 11 additions and 7 deletions
  1. 11 7
      static/stammbaum/main.js

+ 11 - 7
static/stammbaum/main.js

@@ -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;
       }