356 lines
16 KiB
PHP
Executable File
356 lines
16 KiB
PHP
Executable File
<?php
|
|
$thisPage="nachkommen";
|
|
include __DIR__ . "./../layout/header.php";
|
|
include __DIR__ . "./../layout/navigation.php";
|
|
include __DIR__ . "./../layout/css/navi.css";
|
|
include __DIR__ . "./../layout/css/box_tafel.css"; ?>
|
|
</head>
|
|
|
|
<body><?php
|
|
//die();
|
|
global $box, $col, $col_1, $top, $delta_l, $delta_h, $h_box_halbe, $delta_sp, $ladezeit;
|
|
// *********** difine boxes **************************************************
|
|
// eine box ist 200 breit und 60 hoch
|
|
$b = 0; // Rückgabe von display_data (anzahl boxes)
|
|
$top = 120; // Anfangshöhe
|
|
$top_max = $top; // Bestimmt den Anfang des footers
|
|
$t_p = 0; // Abstand zu zweiter Box
|
|
$delta_l = 270; // Abstand Spalte zu Spalte
|
|
$delta_sp = 10; // space between boxes
|
|
$h_box_halbe = 30; // halbe Boxhöhe
|
|
$h_box = 2 * $h_box_halbe; // Boxhöhe
|
|
$delta_h = $h_box + $delta_sp; // Abstand (Höhe) zur Partnerbox
|
|
$t_arr = $top + $h_box_halbe; // arrow left
|
|
$col_1 = 60; // Abstand links zur ersten Spalte
|
|
$col_2 = $col_1 + (1 * $delta_l);
|
|
$col_3 = $col_1 + (2 * $delta_l);
|
|
$col_4 = $col_1 + (3 * $delta_l);
|
|
|
|
// ***************** functions *************************************************?><?php
|
|
// ************************** fill the box *************************************
|
|
function fill($person, $info) {
|
|
$info = "";
|
|
//$bol_druck = False;
|
|
if (isset($person->member_id)) {
|
|
$id = $person->member_id;
|
|
$info = ""; //$id;
|
|
if ($person->gender == 1){$g = "m";$img ="male.jpg";} else {$g = "f";$img ="female.jpg";}
|
|
if ($person->member_img != "") { $img = $person->member_img;}
|
|
$period = periode($person);?>
|
|
<div class='basic "<?php echo $g?>box"'> <!--// m- oder fbox -->
|
|
<table><tbody><tr>
|
|
<td>
|
|
<a href='familienblatt?id=<?php echo $id?>'/>
|
|
<span class="info"><img src="../../photos/<?php echo $img;?>"
|
|
title='Familienblatt anzeigen' border='0' alt='Foto Person' width='40' height='50' /></span></a></td>
|
|
<td>
|
|
<a href='nachkommen?id=<?php echo $person->member_id?>' title='neue Person' <?php
|
|
echo "<b>".($info)."</b>".$person->first_name." ".$person->last_name."</a></b><br>";?>
|
|
<b><img src="../../img/<?php echo $g.".jpg";?>" /></b> <?php
|
|
echo periode($person)." => ".alter($person). "J.";?></td></tr>
|
|
</table>
|
|
</div><?php
|
|
return true;
|
|
} else {
|
|
return false;}
|
|
} ?>
|
|
<!--*************************************************************************-->
|
|
|
|
<!--***************** zeichne Box *******************************************
|
|
$box: Box-Nr. von oben gezählt
|
|
$box_before: Anzahl Boxes vor
|
|
$bol_f: Ist es der erste Durchlauf? -->
|
|
<?php
|
|
function display_box ($data_0, $data_1, $col, $box, $box_before, $bol_f) {
|
|
global $col, $col_1, $top, $delta_l, $delta_h, $h_box_halbe, $delta_sp;
|
|
$anzahl = $anz_partner = 0; // returnwert anzahl boxes
|
|
|
|
$h_box = 2 * $h_box_halbe; // Boxhöhe
|
|
$delta_h = $h_box + $delta_sp; // Abstand zur Partnerbox
|
|
|
|
$boxes = $box - $box_before;
|
|
if ($boxes != 0){$boxes--;}
|
|
$t_up = $boxes * $delta_h; // Länge Verbindung zur vorherigen Box
|
|
|
|
$t = $top + ($box * $delta_h); // $top = absolute oberste Position
|
|
$t0 = $t + $h_box_halbe + $delta_h; // Partnerbox von oben (110)
|
|
$t1 = $t + $h_box; // Ende Personenbox unten (beginn Linie zum Partner)
|
|
$t2 = $t + $h_box_halbe; // Mitte Box child
|
|
$t3 = $t - $h_box_halbe - 20; // Senkrechte zur Box (Bruder/Schwester)
|
|
$t4 = $t3 - $t_up; // Senkrechte zur Box (Bruder/Schwester)
|
|
$t_p = $t + $delta_h; // top der Partnerbox (80)
|
|
|
|
$left = $col_1 + ($col * $delta_l); // Anfangsabstand links + 3 Spalten mit je delta_l (230)
|
|
$left0 = $left - 40;
|
|
$left1 = $left + 20; // senkrechte Linie zum Partner
|
|
$left2 = $left + 40; // Partnerbox von links
|
|
$left3 = $left - 20; // senkrechte Verbindungslinie Kinder
|
|
$left4 = $left0 + $delta_l; //
|
|
|
|
$verh = "⚭";
|
|
$gesch = "⚯";
|
|
$info = "";
|
|
|
|
if ($bol_f == true){ $bol_first = true; } else { $bol_first = false; } // erster Durchlauf
|
|
if (!empty($data_0)) { $bol_d0 = true;} else {$bol_d0 = false;} // data_0 nicht leer
|
|
if (!empty($data_1)) { $bol_d1 = true;} else {$bol_d1 = false;} // data_1 nicht leer
|
|
if (!$col==0){$anz_partner = count($data_1);}else {$anz_partner = 1;}
|
|
|
|
if ($col != 0) { //linke waagerechte Anknüpfung an Box (nict für Generation 0)?>
|
|
<div class="line_v" style="top:<?php echo $t2;?>px;left:<?php echo $left3;?>px;"></div><?php
|
|
if ($bol_first == true){ // Verbindungslinie von waagerechter Anknüpfung nach oben?>
|
|
<div class="line_h1" style="top:<?php echo $t2;?>px;left:<?php echo $left3;?>px;"></div>
|
|
<div class="line_v" style="top:<?php echo $t0;?>px;left:<?php echo $left0;?>px;"></div><?php
|
|
}
|
|
}
|
|
if ($bol_first == false) { // Senkrechre zur nächsten Box (Bruder/Schwester)?>
|
|
<div class="line_h1" style="top:<?php echo $t3+10;?>px;left:<?php echo $left3;?>px;"></div>
|
|
<div class="line_h" style="top:<?php echo $t4+10;?>px;left:<?php echo $left3;?>px;
|
|
height:<?php echo $t_up;?>px;">
|
|
</div><?php
|
|
}?>
|
|
<div class "sib_box" style="position:absolute; top:<?php echo $t;?>px; left:<?php echo $left;?>px;
|
|
box-shadow:4px 4px 4px #999999;"><?php
|
|
$status = $verh;
|
|
//fill($data_0, $box); // Box für Person
|
|
if (isset($data_0['member_id'])) { fill($data_0, $box);
|
|
} else {$gen = "m";
|
|
leereBox($gen);
|
|
$anz_partner = 1;}
|
|
$anzahl ++; // anzahl boxes + 1 ?>
|
|
</div><?php
|
|
|
|
// ************************* Partnerbox ****************************************
|
|
$t_part = 0; // Differenz zwischen Partnerboxen
|
|
if ($anz_partner == 0) { $bol_d1 = false;
|
|
} else {
|
|
for ($b = 0; $b < $anz_partner; $b++){
|
|
// senkrechte Verbindungslinien Partner an die Box der Person?>
|
|
<div class="line_h0" style="top:<?php echo $t1+$t_part;?>px;left:<?php echo $left1;?>px;"></div>
|
|
<div class="line_v" style="top:<?php echo $t0+$t_part;?>px;left:<?php echo $left1;?>px;"><?php
|
|
echo "<b>".$status."</b>"; ?></div>
|
|
|
|
<div class "sib_box" style="position:absolute;top:<?php echo $t_p+$t_part;?>px;
|
|
left:<?php echo $left2;?>px; box-shadow:4px 4px 4px #999999;"><?php
|
|
if (isset($data_1[$b]['member_id'])) { fill($data_1[$b], $box+1); } else { $gen = "f"; leereBox($gen); }
|
|
$anzahl ++;
|
|
$t_part = $t_part + 70; // neue Differenz zwischen Partnerboxen
|
|
$status = $gesch;?>
|
|
</div><?php
|
|
}
|
|
}
|
|
return $anzahl; // Anzahl der gezeichneten Boxes
|
|
}
|
|
|
|
// ****************** create an empty box with gender picture ******************
|
|
function leereBox($g) {
|
|
global $col;
|
|
echo "<div class='basic ".$g."box"."'>";
|
|
echo "<center><b><img src='../../img/".$g.".jpg'></b> ";
|
|
if ($col==0){echo "Großeltern<br>";}
|
|
if ($col==1){echo "Eltern<br>";}
|
|
echo "unbekannt</center></div>";
|
|
}?>
|
|
<!--*********** end functions *************************************************-->
|
|
<!-- <div class="d-flex align-items-center">
|
|
<strong>Loading...</strong>
|
|
<div class="spinner-border ml-auto" role="status" aria-hidden="true"></div>
|
|
</div> -->
|
|
<?php
|
|
$strHeader = "Vorfahren und Nachkommen einer ausgewählten Person: ";
|
|
$l = strlen($strHeader)*12; // Position des Headers berechnen
|
|
$t = 60; ?>
|
|
<div class="container" id="myTable">
|
|
<div class="starter-template" >
|
|
<!-- **************** Auswahl der Person ************************************-->
|
|
<form action="<?php echo "?id=".$person->member_id; ?>">
|
|
<div style="z-index:2;left:<?php echo $l;?>px;top:<?php echo $t;?>px;height:30px;">
|
|
<p><strong><?php echo $strHeader." ";?></strong>
|
|
<select name="id" onchange="submit()" style="background-color:lightyellow;">
|
|
<option value="null"> Bitte Person auswählen<?php
|
|
foreach ($persons as $pers) {
|
|
if ($pers->member_id == $person->member_id) { ?>">
|
|
<option selected value="<?php echo $pers->member_id; ?>"> <?php
|
|
} else { ?>
|
|
<option value="<?php echo $pers->member_id;?>"> <?php
|
|
}
|
|
echo jahr($pers->day_of_birth)." ".$pers->last_name.", ".$pers->first_name;?>
|
|
</option><?php
|
|
} ?>
|
|
</select>
|
|
</p>
|
|
</div>
|
|
</form>
|
|
|
|
<?php
|
|
// ********************************** Überschriften ****************************
|
|
// $len_h = strlen($strHeader);
|
|
$ueberschrift = array("Großeltern", "Eltern", "Person", "Kinder");
|
|
$l = $col_1 + 40; // Abstand zur ersten Spalte + 40
|
|
$str_div = "<div style='position:fixed;z-index:2; top:";
|
|
$top_1 = $top-25;
|
|
//$i = 0;
|
|
$str_p0 = "<p><strong>";
|
|
$str_p1 = "</strong></p></div>";
|
|
// Überschriften
|
|
/* keine fixe Position?>
|
|
<div style="position:fixed;z-index:2;top:<?php echo $top-60;?>px; left:<?php echo $l;?>px;">
|
|
*/?>
|
|
<div style="position:fixed;z-index:2;top:<?php echo $top-60;?>px; left:<?php echo $l;?>px;">
|
|
</div><?php
|
|
for ($i=0; $i < 4; $i++) {
|
|
echo $str_div.$top_1."px;"."left:".$l."px;';>".$str_p0.$ueberschrift[$i].$str_p1; //die();
|
|
$l = $l + $delta_l;
|
|
} ?>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ********** linker Block zur Erklärung ********************************* -->
|
|
<div id="leftarrow" style="position:absolute; top:<?php echo $top+160;?>px;
|
|
left:<?php echo $col_1;?>px;z-index:5;">
|
|
<strong> Weitere Vorfahren:</strong></br>
|
|
<!-- ********** sowie gelber Pfeil nach links ****************************** -->
|
|
<img border="0" src="../../img/ArrowLeft.gif" width="10" height="15" align="left"
|
|
title=" => Vorfahr" alt=" => Vorfahr" style="margin-right:5px"/><?php
|
|
// ********** Vorfahren väterlich ****************************************
|
|
if (isset($gen_00[0]->member_id)){
|
|
echo "<a href='nachkommen?id=".$gen_20[0]->member_id."'><strong>"
|
|
.$gen_00[0]->first_name." ".$gen_00[0]->last_name
|
|
."</a></strong></br> * ".date_german($gen_00[0]->day_of_birth)."</br>";
|
|
} else { echo "keine Daten</br>"; }?>
|
|
<!-- ********** zweiter gelber Pfeil nach links **************************** -->
|
|
<img border="0" src="../../img/ArrowLeft.gif" width="10" height="15" align="left"
|
|
title=" => Vorfahr" alt=" => Vorfahr" style="margin-right:5px"/><?php
|
|
// ********** Vorfahren mütterlich ***************************************
|
|
if (isset($gen_01[0]->member_id)){
|
|
echo "<a href='nachkommen?mid=".$gen_01[0]->member_id."'><strong>"
|
|
.$gen_01[0]->first_name." ".$gen_01[0]->last_name
|
|
."</a></strong></br> * ".date_german($gen_01[0]->day_of_birth)."</br></br>";
|
|
} else { echo "keine Daten</br></br></br>"; } ?>
|
|
|
|
<!-- ********** Hinweise zur Webseite ************************************** -->
|
|
<div class="box" style='left:0px; width:250px; top:110px;'>
|
|
<p><strong><font color=blue>Hinweise zu dieser Webseite <br></font></strong></p>
|
|
<li>
|
|
Ein Click auf das <strong>Bild</strong> einer Person ruft das Familienblatt auf</br>
|
|
</li> <br>
|
|
<li>
|
|
Ein Click auf den <strong>Namen</strong> erzeugt eine neue Ausgangsbasis<br>
|
|
</li> <br>
|
|
<li>
|
|
Die <span style="background-color:lightyellow;
|
|
border:1px; border-style:solid; border-color:lightgrey;"> Auswahlliste</span> im Seitenkopf
|
|
erzeugt neue Ausgangsbasis
|
|
</li> <br>
|
|
<li>
|
|
Familienstand:
|
|
<ul>
|
|
<li>
|
|
verheiratet: <b> ⚭</b>
|
|
</li>
|
|
<li>
|
|
geschieden: <b>⚯</b><br>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</div>
|
|
</div><?php
|
|
|
|
//************************************************************************
|
|
$i = 0; // index arrays
|
|
$j = 0; // onkel & tanten
|
|
$k = 0; // kinder
|
|
$l = 0; // Position des Headers
|
|
$box = $row = $col = 0;
|
|
$b1 = $b2 = $b3 = $b4 = 0;
|
|
// ******************* Grandfather gen_10; Grandmother_11 **********************
|
|
$box_before_0 = $box; // first loop: Startbox = 0
|
|
$bol_f0 = true; //
|
|
$b1 = display_box($gen_10[0], $gen_11, $col=0, $box, $box_before_0, $bol_f0);
|
|
$bol_f0 = false;
|
|
$box_before_0 = $box; // aktuelle Box-Position
|
|
$box_before_1 = $box; // Startbedingungen neuer Zweig
|
|
$first_loop = true; // erster Gesamt-Durchlauf (steuert $box Position)
|
|
$i=0; // Zähler für Personen und Partner
|
|
$bol_f1 = true; // erster Durchlauf
|
|
foreach ($gen_20 as $g2) {
|
|
if (!empty($g2)){
|
|
$b2 = display_box($g2, $gen_21[$i], $col=1, $box, $box_before_1, $bol_f1);
|
|
} else {
|
|
$b2 = display_box($g2, $gen_21, $col=1, $box, $box_before_1, $bol_f1);
|
|
}
|
|
$bol_f1 = false; // erster DL vorbei
|
|
$box_before_1 = $box; // aktuelle Box-Position
|
|
$box_before_2 = $box;
|
|
$j=0;
|
|
$bol_f2 = True; // erster Durchlauf
|
|
foreach ($gen_30[$i] as $g3) {
|
|
$b3 = display_box($g3, $gen_301[$i][$j], $col=2, $box, $box_before_2, $bol_f2);
|
|
$bol_f2 = false; //erster DL vorbei - echo "Anzahl ".$b."</br>";
|
|
$box_before_2 = $box;
|
|
$box_before_3 = $box; // schon gezeichnete Boxes
|
|
$k=0; // Anzahl Kinder 0 0
|
|
$bol_f3 = true; // true für erster Aufruf
|
|
foreach ($gen_40[$i][$j] as $g4) {
|
|
$b4 = display_box($g4, $gen_401[$i][$j][$k], $col=3, $box, $box_before_3, $bol_f3);
|
|
$bol_f3 = false; // erster Durchlauf vorbei
|
|
$box_before_3 = $box;
|
|
$box = $box + $b4; // + anzahl (Rückgabewert)
|
|
$k++; // nächstes Kind
|
|
}
|
|
if ($b4 <= $b3){ $korr = $b3;} else { $korr = $b4;}
|
|
if ($k == 0){$box = $box + $b3;} // wenn Kinder = 0:
|
|
if (($k == 1) && ($b4 == 1)){$box = $box + $korr - 1;}// - $korrektur;} // bei einem kind
|
|
if (($k == 1) &&( $b4 == 2)){$box = $box + $korr - 2; }// - $korrektur;} // bei einem kind
|
|
$j++;
|
|
}
|
|
if ($b3 <= $b2){ $korr_1 = $b2;} else { $korr_1 = $b3;}
|
|
if (($j == 0)){$box = $box + $b2;} // wenn Kinder = 0:
|
|
if (($j == 1) && ($b3 == 0)){$box = $box + $korr_1 - 1;}
|
|
if (($j == 1) && ($b3 == 1)){$box = $box + $korr_1 - 1;}// - $korrektur;} // bei einem kind
|
|
if (($j == 1) &&( $b3 == 2)){$box = $box + $korr_1 - 2; }// - $korrektur;}
|
|
|
|
if ($first_loop == true) {$box = $box + $b2 - 2;} // beim ersten Durchlauf
|
|
$first_loop = false;
|
|
$i++;
|
|
}
|
|
$top_max = (($box + 1) * $delta_h) + 100;?>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
if ($top_max <= 800) {$top_max = 800; }//1600;
|
|
?>
|
|
<!-- **** Beim runterscrollen verschwindet Kopfzeile **** -->
|
|
<script
|
|
src="https://code.jquery.com/jquery-1.12.4.min.js"
|
|
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
|
|
crossorigin="anonymous">
|
|
</script>
|
|
|
|
<script>
|
|
var lastScrollTop = 0;
|
|
$(window).scroll(function(event){
|
|
var st = $(this).scrollTop();
|
|
if (st > lastScrollTop){
|
|
if (!$('body').hasClass('down')) {
|
|
$('body').addClass('down');
|
|
}
|
|
} else {
|
|
$('body').removeClass('down');
|
|
}
|
|
lastScrollTop = st;
|
|
if ($(this).scrollTop() <= 0) {
|
|
$('body').removeClass('down');
|
|
};
|
|
});
|
|
</script>
|
|
|
|
<!-- ************************* footer choose a person ************************-->
|
|
<?php
|
|
$t_footer = $top_max;
|
|
include __DIR__ . "/../layout/footer_e.php";
|
|
?>
|
|
|
|
</div>
|