pageHeader() ->addExternalJavascript(WT_STATIC_URL . 'js/autocomplete.js') ->addInlineJavascript('autocomplete();'); ?>

getPageTitle(); ?>

PEDIGREE_GENERATIONS, 3, $MAX_PEDIGREE_GENERATIONS); ?> WT_I18N::translate('Portrait'), 1=>WT_I18N::translate('Landscape'), 2=>WT_I18N::translate('Oldest at top'), 3=>WT_I18N::translate('Oldest at bottom')), null, $talloffset); ?> ">
error_message) { echo '

', $controller->error_message, '

'; exit; } echo '
'; //-- echo the boxes $curgen = 1; $xoffset = 0; $yoffset = 0; // -- used to offset the position of each box as it is generated $prevxoffset = 0; // -- used to track the horizontal x position of the previous box $prevyoffset = 0; // -- used to track the vertical y position of the previous box $maxyoffset = 0; $lineDrawx = array(); // -- used to position joining lines on $lineDrawy = array(); // -- used to position joining lines on for ($i=($controller->treesize-1); $i>=0; $i--) { // set positions for joining lines $lineDrawx[$i] = $xoffset; $lineDrawy[$i] = $yoffset-200; //200 adjustment necessary to move canvas below menus and options. Matched to similar amount on canvas style. // -- check to see if we have moved to the next generation if ($i < (int)($controller->treesize / (pow(2, $curgen)))) { $curgen++; } $prevxoffset = $xoffset; $prevyoffset = $yoffset; if ($talloffset < 2) { // Portrate 0 Landscape 1 top 2 bottom 3 $xoffset = $controller->offsetarray[$i]["x"]; $yoffset = $controller->offsetarray[$i]["y"]; } else { $xoffset = $controller->offsetarray[$i]["y"]; $yoffset = $controller->offsetarray[$i]["x"]; } // -- draw the box if ($yoffset>$maxyoffset) { $maxyoffset=$yoffset; } if ($i==0) { $iref = rand(); } else { $iref = $i; } // Can we go back to an earlier generation? $can_go_back=$curgen==1 && WT_Individual::getInstance($controller->treeid[$i]) && WT_Individual::getInstance($controller->treeid[$i])->getChildFamilies(); if ($talloffset == 2) { // oldest at top echo '
'; if ($can_go_back) { $did = 1; if ($i > (int)($controller->treesize/2) + (int)($controller->treesize/4)) { $did++; } echo 'PEDIGREE_GENERATIONS, '&rootid=', $controller->treeid[$did], '&show_full=', $controller->show_full, '&talloffset=', $controller->talloffset, ' class="icon-uarrow noprint">'; } echo '
'; } // beginning of box setup and display echo '
treeid[$i]; } echo '.1'.$iref; if ($TEXT_DIRECTION=="rtl") {echo '" style="right:';} else {echo '" style="left:';} //Correct box spacing for different layouts if ($talloffset == 2) {$zindex = $PEDIGREE_GENERATIONS-$curgen;} else {$zindex = 0;} if (($talloffset == 3) && ($curgen ==1)) {$yoffset +=25;} if (($talloffset == 3) && ($curgen ==2)) {$yoffset +=10;} echo $xoffset, "px; top:", $yoffset, "px; width:", ($controller->pbwidth), "px; height:", $controller->pbheight, "px; z-index:", $zindex, ";\">"; if (!isset($controller->treeid[$i])) {$controller->treeid[$i] = false;} print_pedigree_person(WT_Individual::getInstance($controller->treeid[$i])); if ($can_go_back) { $did = 1; if ($i > (int)($controller->treesize/2) + (int)($controller->treesize/4)) { $did++; } if ($TEXT_DIRECTION=="rtl") {$posn = 'right'; $arrow = 'icon-larrow';} else {$posn = 'left'; $arrow = 'icon-rarrow'; } if ($talloffset==3) { echo '
'; echo ''; echo '
'; } elseif ($talloffset < 2) { echo '
'; echo ''; echo '
'; } } echo '
'; } // -- echo left arrow for decendants so that we can move down the tree $yoffset += ($controller->pbheight / 2)-10; $famids = $controller->root->getSpouseFamilies(); //-- make sure there is more than 1 child in the family with parents $cfamids = $controller->root->getChildFamilies(); if (count($famids)>0) { echo '
'; echo ''; break; case 1: if ($PEDIGREE_GENERATIONS<4) $basexoffset += 60; echo $basexoffset, 'px; top:', $yoffset, 'px;">'; echo ''; break; case 2: echo ($xoffset-10+$controller->pbwidth/2), 'px; top:', ($yoffset+$controller->pbheight/2+10), 'px;">'; echo ''; break; case 3: echo ($xoffset-10+$controller->pbwidth/2), 'px; top:', ($yoffset-$controller->pbheight/2-10), 'px;">'; echo ''; break; } echo '
'; $yoffset += ($controller->pbheight / 2)+10; echo '
'; foreach ($famids as $family) { $spouse=$family->getSpouse($controller->root); if ($spouse) { echo ''; echo $spouse->getFullName(); echo '
'; } $children = $family->getChildren(); foreach ($children as $child) { echo '  '; echo $child->getFullName(); echo '
'; } } //-- echo the siblings foreach ($cfamids as $family) { if ($family!=null) { $children = $family->getChildren(); if (count($children)>2) { echo '
', WT_I18N::translate('Siblings'), '
'; } if (count($children)==2) { echo '
', WT_I18N::translate('Sibling'), '
'; } foreach ($children as $child) { if ($controller->root !== $child) { echo "  PEDIGREE_GENERATIONS}&rootid=".$child->getXref()."&show_full={$controller->show_full}&talloffset={$talloffset}\">getFullName(); echo 'class="name1"> '; echo $name; echo '
'; } } } } echo '
'; } // calculate canvas width if ($talloffset < 2) { $canvaswidth = $PEDIGREE_GENERATIONS*($controller->pbwidth+20); } else { $canvaswidth = pow(2,$PEDIGREE_GENERATIONS-1)*($controller->pbwidth+20); } echo '

No lines between boxes? Unfortunately your browser does not support he HTML5 canvas feature.

'; echo '
'; //close #pedigree_chart echo '
'; //close #pedigree-page // Expand
to include the absolutely-positioned elements. $controller->addInlineJavascript(' var WT_PEDIGREE_CHART = (function() { jQuery("html").css("overflow","visible"); // workaround for chrome v37 canvas bugs jQuery("#content").css("height", "' . ($maxyoffset+30) . '"); jQuery("#childarrow").on("click", "a", function(e) { e.preventDefault(); jQuery("#childbox").toggle(); }); // Draw joining lines in // Set variables var textdirection = "'.$TEXT_DIRECTION.'", talloffset = '.$talloffset.', canvaswidth = '.($canvaswidth).', offset_x = 20, offset_y = '.$controller->pbheight.'/2+'.$controller->linewidth.', lineDrawx = new Array("'. join(array_reverse ($lineDrawx),'","'). '"), lineDrawy = new Array("'. join(array_reverse ($lineDrawy),'","'). '"), offset_x2 = '.$controller->pbwidth.'/2+'.$controller->linewidth.', offset_y2 = '.$controller->pbheight.'*2, lineDrawx2 = new Array("'. join($lineDrawx,'","'). '"), lineDrawy2 = new Array("'. join($lineDrawy,'","'). '"), maxjoins = Math.pow(2,'.$PEDIGREE_GENERATIONS.'), ctx = jQuery("#pedigree_canvas")[0].getContext("2d"); // Set line styles ctx.strokeStyle = jQuery("#pedigree_canvas").css("color"); ctx.lineWidth = '.$controller->linewidth.'; ctx.shadowColor = "'.$controller->shadowcolor.'"; ctx.shadowBlur = '.$controller->shadowblur.'; ctx.shadowOffsetX = '.$controller->shadowoffsetX.'; ctx.shadowOffsetY = '.$controller->shadowoffsetY.'; //Draw the lines switch (talloffset) { case 0: // portrait // drop through case 1: // landscape for (var i = 0; i <= maxjoins-3; i+=2) { if (textdirection == "rtl") { ctx.moveTo(canvaswidth-lineDrawx[i],lineDrawy[i]-0+offset_y+offset_x/2); ctx.lineTo(canvaswidth-lineDrawx[i]+offset_x,lineDrawy[i]-0+offset_y+offset_x/2); ctx.lineTo(canvaswidth-lineDrawx[i+1]+offset_x,lineDrawy[i+1]-0+offset_y-offset_x/2); ctx.lineTo(canvaswidth-lineDrawx[i+1],lineDrawy[i+1]-0+offset_y-offset_x/2); } else { ctx.moveTo(lineDrawx[i],lineDrawy[i]-0+offset_y+offset_x/2); ctx.lineTo(lineDrawx[i]-offset_x,lineDrawy[i]-0+offset_y+offset_x/2); ctx.lineTo(lineDrawx[i+1]-offset_x,lineDrawy[i+1]-0+offset_y-offset_x/2); ctx.lineTo(lineDrawx[i+1],lineDrawy[i+1]-0+offset_y-offset_x/2); } } break; case 2: // oldest at top for (var i = 1; i <= maxjoins; i+=2) { if (textdirection == "rtl") { ctx.moveTo(lineDrawx2[i]-0+offset_x2-offset_x,lineDrawy2[i]); ctx.lineTo(lineDrawx2[i]-0+offset_x2-offset_x,lineDrawy2[i]-0+offset_y2); ctx.lineTo(lineDrawx2[i+1]-0+offset_x2+offset_x/2,lineDrawy2[i]-0+offset_y2); ctx.lineTo(lineDrawx2[i+1]-0+offset_x2+offset_x/2,lineDrawy2[i]); } else { ctx.moveTo(lineDrawx2[i]-0+offset_x2-offset_x/2,lineDrawy2[i]); ctx.lineTo(lineDrawx2[i]-0+offset_x2-offset_x/2,lineDrawy2[i]-0+offset_y2); ctx.lineTo(lineDrawx2[i+1]-0+offset_x2+offset_x/2,lineDrawy2[i]-0+offset_y2); ctx.lineTo(lineDrawx2[i+1]-0+offset_x2+offset_x/2,lineDrawy2[i]); } } break; case 3: // oldest at bottom // drop through default: // anything else for (var i = 1; i <= maxjoins; i+=2) { ctx.moveTo(lineDrawx2[i]-0+offset_x2-offset_x,lineDrawy2[i]); ctx.lineTo(lineDrawx2[i]-0+offset_x2-offset_x,lineDrawy2[i]-offset_y2/2); ctx.lineTo(lineDrawx2[i+1]-0+offset_x2+offset_x/2,lineDrawy2[i]-offset_y2/2); ctx.lineTo(lineDrawx2[i+1]-0+offset_x2+offset_x/2,lineDrawy2[i]); } } ctx.stroke(); return "' . strip_tags($controller->root->getFullName()) . '"; })(); ');