<!-- $Id: modules/arbre_vertical v7.00 18/11/2017 20:02:08 Arbre ascendant (vertical) -->

%define;a_tree_line()
  %if;(not is_first)
    <tr>
    %foreach;cell;
      %if;(not is_first)
        <td class="text-center"><samp>&nbsp;</samp></td>
      %end;
      <td colspan="%cell.colspan;" class="text-center py-0 mx-0">%nn;
        %if;(cell.is_empty or cell.is_top)<samp>&nbsp;</samp>%else;│%end;
      </td>
    %end;
    </tr>
  %end;
  <tr>

  %foreach;cell;
    %if;(not is_first)
      <td class="text-center"><samp>&nbsp;</samp></td>
    %end;
    <td colspan="%cell.colspan;" class="text-center align-bottom py-0">%nn;
      %if;(cell.is_empty)<samp>&nbsp;</samp>%nn;
      %else;
        %if;(evar.image!="off" and cell.person.has_image)
          %if;(evar.cgl != "on")<a href="%cell.person.image_html_url;">%end;
          <img class="rounded mb-1" src="%cell.person.image_url;"%cell.person.image_small_size;%sp;%nn;
           alt="[image/images]0" title="[image/images]0"%/>%nn;
          %if;(evar.cgl != "on")</a>%end;<br>
        %end;
        %apply;short_display_person_tree("cell.person")%nn;
        %if;cell.person.has_nobility_titles;<br>%cell.person.title;%end;
      %end;
    </td>
  %end;
  </tr>
  %if;(not is_last)
    <tr>
    %foreach;cell;
      %if;(not is_first)
        <td class="text-center py-0">%nn;
        %if;cell.is_right;
          %if;(evar.marriage = "on")
            %if;(wizard and not cancel_links)<a class="small font-weight-italic text-center text-nowrap" href="%prefix_base_password;m=MOD_FAM;i=%cell.family.index;;ip=%index;" title="%if;(cell.family.marriage_date.year="")[*add::marriage/marriages]0%else;[*update::family/families]0%end; %cell.family.father; [and] %cell.family.mother;">%end;
              %if;(cell.family.marriage_date.year!= "")
                %if;(cell.family.marriage_date.prec = "&lt;")
                  /%cell.family.marriage_date.year;%nn;
                %elseif;(cell.family.marriage_date.prec = "&gt;")
                  %cell.family.marriage_date.year;/%nn;
                %elseif;(cell.family.marriage_date.prec = "│" or cell.family.marriage_date.prec = "..")
                  %cell.family.marriage_date.year;%nn;
                %else;
                  %cell.family.marriage_date.prec;%cell.family.marriage_date.year;%nn;
                %end;
              %elseif;(wizard and not cancel_links)-%nn;
              %end;
            %if;(wizard and not cancel_links)</a>%end;
          %else;<samp>&nbsp;</samp>
          %end;
        %else;<samp>&nbsp;</samp>
        %end;
        </td>
      %end;
      <td colspan="%cell.colspan;" class="text-center py-0">%nn;
        %if;cell.is_empty;<samp>&nbsp;</samp>%nn;
        %elseif;(cancel_links)│%nn;
        %else;
          <a href="%cell.person.bname_prefix;%cell.person.access;%nn;
            ;m=%if;(evar.m!="")%evar.m;%else;A%end;%nn;
            ;t=%if;(evar.t!="")%evar.t;%else;T%end;%nn;
            ;v=%if;(evar.v!="")%evar.v;%else;3%end;%nn;
            %if;(evar.image!="off");image=on%end;%nn;
            %if;(evar.marriage = "on");marriage=on%end;"
            title="%if;(evar.m="")[*tree][:] [full width/columns]0%end;">│</a>%nn;
        %end;
      </td>
    %end;
    </tr>
    <tr>
      %foreach;cell;
        %if;(not is_first)
          <td colspan="1" class="text-center px-0 py-0">%nn;
          %if;(cell.is_right)<hr class="full;"%/>%nn;
          %else;%(<samp>&nbsp;</samp>%)%end;
          </td>
        %end;
        <td colspan="%cell.colspan;" class="px-0 py-0 text-%nn;
           %if;cell.is_left;%right;
           %elseif;cell.is_right;%left;
           %else;center%end;">%nn;
          %if;cell.is_empty;%(<samp>&nbsp;</samp>%)%nn;
          %elseif;cell.is_left;<hr class="%right;"%/>%nn;
          %elseif;cell.is_right;<hr class="%left;"%/>%nn;
          %else;%(│%)%end;
        </td>
      %end;
    </tr>
  %end;
%end;

%define;male_line(xx, yy)
  %if;(yy > 0)
    %if;(xx.has_parents)%apply;male_line("xx.father", yy - 1)%end;
    <a href="%xx.bname_prefix;%xx.access">%xx;</a>%xx.title;%xx.dates;
    %if;(evar.image!="off" and xx.has_image)
      <br>
      %if;(evar.cgl != "on")<a href="%xx.image_html_url;">%end;
      <img class="rounded" src="%xx.image_url;"%xx.image_small_size;%sp;%nn;
       alt="[image/images]0" title="[image/images]0"%/>
      %if;(evar.cgl != "on")</a>%end;
    %end;
    %if;("xx" != "self")<br>│<br>%end;
  %end;%nl;
%end;

%define;female_line(xx, yy)
  %if;(yy > 0)
    %if;(xx.has_parents)%apply;female_line("xx.mother", yy - 1)%end;
    <a href="%xx.bname_prefix;%xx.access">%xx;</a>%xx.title;%xx.dates;
    %if;(evar.image!="off" and xx.has_image)
      <br>
      %if;(evar.cgl != "on")<a href="%xx.image_html_url;">%end;
      <img class="rounded" src="%xx.image_url;"%xx.image_small_size;%sp;%nn;
       alt="[image/images]0" title="[image/images]0"%/>%nn;
      %if;(evar.cgl != "on")</a>%end;
    %end;
    %if;("xx" != "self")<br>│<br>%end;
  %end;%nl;
%end;

%if;(evar.t = "T")%nn;
  <div class="text-%right">%nn;
  <a href="%prefix_base_password;%foreach;env_binding;%env.key=%env.val;;%end;%nn;
  dag=on;notab=on;slices=on" title="[*display by slices/slice width/overlap/total width]0"><samp>//</samp></a></div>
%end;

%define;tree(xx)
  %foreach;ancestor_tree_line(xx)
    %apply;a_tree_line()
  %end;
%end;

%if;has_parents;
  %let;evarv;%if;(evar.v!="")%evar.v;%else;3%end;%in;
  %let;maxlev;%apply;min%with;
    %if;(bvar.max_anc_tree!="")%bvar.max_anc_tree;%else;120%end;%and;
    %if;(bvar.max_anc_level!="")%bvar.max_anc_level;%else;120%end;%and;
    %expr(static_max_anc_level)%end;%in;
  %let;maxv;%if;(maxlev<10 or maxlev<evarv+5)%expr(maxlev+1)
            %elseif;(maxlev>=evarv+5 and evarv>5)%expr(evarv+5)
            %else;10%end;%in;
  %let;minv;%if;(maxlev>9 and maxlev<evarv+5)%expr(maxv-9)
            %elseif;(maxlev>9 and evarv>5)%expr(evarv-4)
            %else;1%end;%in;
  %(minv %minv; < evarv %evarv; < maxv %maxv; (maxlev %maxlev;)%)
  <div class="d-flex justify-content-between">
    <h2 id="a">%if;(evar.t="A")[*male line/female line]0%nn;
    %elseif;(evar.t="C")[*male line/female line]1%nn;
    %else[*ascendants tree]%end;</h2>
    %if;not cancel_links;
      <div class="form-inline">
        <div class="btn-group mx-2">
          %if;(maxlev>9 and evarv>5)
            <a href="%prefix_base_password;%nn;
                %foreach;env_binding;%if;(env.key!="v")%env.key=%env.val;;%else;v=%expr(evarv-5);%end;%end;"
              class="btn btn-outline-secondary btn-sm border-0 px-0 small"
              title="(-5) [visualize/show/hide/summary]1 %expr(evarv-5) [generation/generations]1 (max %maxlev;)">&nbsp;-⁵</a>
            <a href="%prefix_base_password;%nn;
                %foreach;env_binding;%if;(env.key!="v")%env.key=%env.val;;%else;v=%expr(evarv-1);%end;%end;%if;(evar.v="")v=2;%end;"
              class="btn btn-outline-secondary btn-sm border-0 px-0 small"
              title="(-1) [visualize/show/hide/summary]1 %expr(evarv-1) [generation/generations]1 (max %maxlev;)">&nbsp;-</a>
          %end;
          %for;i;minv;maxv;
            <a id="v%i;" class="btn btn-outline-%if;(evarv=i)dark font-weight-bold disabled%else;secondary%end; btn-sm border-0 px-1"
              href="%prefix_base_password;%nn;
                %foreach;env_binding;%if;(env.key!="v")%env.key=%env.val;;%else;v=%i;;%end;%end;%if;(evar.v="")v=%i;;%end;"
              title="%if;(evarv!=i)[*visualize/show/hide/summary]1 %i; %if;(i=1)[generation/generations]0%else;[generation/generations]1%end;
              %end; %if;(i=maxlev)(max)%end;">%i;</a>
          %end;
          %if;(maxlev>9 and maxlev-evarv>=5)
            <a href="%prefix_base_password;%nn;
                %foreach;env_binding;
                %if;(env.key!="v")%env.key=%env.val;;%else;v=%expr(evarv+1);%end;%end;%if;(evar.v="")v=4;%end;"
              class="btn btn-outline-secondary btn-sm border-0 px-0 small"
              title="(+1) [visualize/show/hide/summary]1 %expr(evarv+1) [generation/generations]1 (max %maxlev;)">&nbsp;+</a>
            <a href="%prefix_base_password;%nn;
                %foreach;env_binding;%if;(env.key!="v")%env.key=%env.val;;%else;v=%expr(evarv+5);%end;%end;%if;(evar.v="")v=8;%end;"
              class="btn btn-outline-secondary btn-sm border-0 px-0 small"
              title="(+5) [visualize/show/hide/summary]1 %expr(evarv+5) [generation/generations]1 (max %maxlev;)">&nbsp;+⁵</a>
          %end;
        </div>
        %if;(evarv>1)
          <div class="btn-group mx-2">
            <a href="%prefix_base_password;%foreach;env_binding;%if;(env.key!="t")%env.key=%env.val;;%end;%end;t=A;"
              class="btn btn-outline-%if;(evar.t="A")dark disabled font-weight-bold%else;secondary%end; btn-sm border-0 px-0"
              title="[*male line/female line]1">A</a>
            <a href="%prefix_base_password;%foreach;env_binding;%if;(env.key!="t")%env.key=%env.val;;%end;%end;t=C;"
              class="btn btn-outline-%if;(evar.t="C")dark disabled font-weight-bold%else;secondary%end; btn-sm border-0 px-0 ml-2"
              title="[*male line/female line]1">C</a>
            <a href="%prefix_base_password;%foreach;env_binding;%if;(env.key!="t")%env.key=%env.val;;%end;%end;"
              class="btn btn-outline-%if;(evar.t="T" or evar.t="")dark disabled font-weight-bold%else;secondary%end; btn-sm border-0 px-0 ml-2"
              title="[*male line/female line]1">T</a>
          </div>
        %end;
        <div class="mx-2">
          <a href="%prefix_base_password;%nn;
            %foreach;env_binding;%if;(env.key != "image")%env.key=%env.val;;%end;%end;%nn;
            %if;(evar.image!="off")image=off;%end;"
            class="btn btn-outline-secondary btn-sm border-0 px-0"
            title="%if;(evar.image="off")[*visualize/show/hide/summary]1%else;%nn;
              [*visualize/show/hide/summary]2%end; [image/images]1">
            <i class="fa fa-image fa-fw"></i>
            <i class="fa fa-toggle-%if;(evar.image="off")off%else;on%end; text-muted"></i>
          </a>
        </div>
        %if;(evarv>1 and evar.t="T")
          <div class="mx-2">
            <a href="%prefix_base_password;%nn;
              %foreach;env_binding;%if;(env.key!="marriage")%env.key=%env.val;;%end;%end;%nn;
              %if;(evar.marriage!="on")marriage=on;%end;"
              class="btn btn-outline-secondary btn-sm border-0 px-0%evar.dag; %evar.n;%if;(evar.dag="on") disabled%end;"
              title="%if;(evar.marriage!="on")[*visualize/show/hide/summary]1%else;
                  [*visualize/show/hide/summary]2%end; [date of marriage]"
            ><i class="fa fa-random fa-fw"></i>
              <i class="fa fa-toggle-%if;(evar.marriage!="on")on%else;off%end; text-muted%(success ?%)"></i>
            </a>
          </div>
        %end;
        <div class="mx-2">
          <a href="%prefix_base_password;%nn;
              %foreach;env_binding;%if;(env.key!="dag")%env.key=%env.val;;%end;%end;%nn;
              %if;(evar.dag!="on")dag=on;%end;"
            class="btn btn-outline-secondary btn-sm border-0 px-0"
            title="%if;(evar.dag="on")[*dag on/dag off]1%else;[*dag on/dag off]0%end;"
          ><i class="fa fa-%if;(evar.dag="on")minus%else;plus%end; fa-fw"></i>
          </a>
        </div>
      </div>
    %end;
  </div>
  <table class="tree-vert mx-auto my-3" style="border-width:%border;">
    %if;(evar.t="T" and evar.t1="m")
      %include;modules/arbre_9gen
    %elseif(evar.t = "A" or evar.t = "C")
      %if;(evar.t = "A")
        <tr>
          <td class="text-center">
            %apply;male_line("self", evarv)
          </td>
        </tr>
      %elseif;(evar.t = "C")
        <tr>
          <td class="text-center">
            %apply;female_line("self", evarv)
          </td>
        </tr>
      %end;
    %else;
      %apply;tree(evarv)
    %end;
  </table>
%end;
