<%@ LANGUAGE="javascript" %>

<% /*
    $Revision$
    $Id$

    File:               Legenda.asp
    Description:        Generate an legend
    Parameters:
        parentKey       required: ALG_VERDIEPING_KEY of ALG_TERREINSECTOR_KEY
        Thema           optional: THM_THEMA.THEM_THEMA_KEY
        mode            required: MODE_IN or MODE_OUT (hoewel tegenwoordig afleidbaar uit CAD_THEMA_TYPE)
        forPrint        optional: 0 of 1. Bij printen iets compacter
    Context:            CAD/Default.asp bij wisseling van verdieping of thema
                        Let wel: standaard is het frame dichtgeklapt. Het wordt wel
                        altijd uitgevoerd!
    Note:               Alle(en) waarden die echt alfanumeriek voorkomen op de verdieping
                        worden in de  legenda getoond. Het kan dus voorkomen (als een ruimte
                        niet op de tekening gevonden wordt) dat de kleur niet in de tekening
                        terugkomt
*/

    var pThema    = getQParamInt("thema");
    var pvKey     = getQParamInt("parentKey");
    var inoutMode = getQParamInt("mode");
    var scenario_key = getQParamInt("scenario_key");   // current scenario, 0 voor geen
    var LegendaFilter = getQParam("LegendaFilter", "V");   // "V"/"L"/"*"
    var forPrint  = getQParamInt("forPrint", 0);
    var outputmode = (forPrint == 0 ? 0 : 1);
%>

<!--#include file='../Shared/common.inc'-->
<!--#include file='../CAD/FGII.inc'-->

<% if (forPrint) { %>
<head>
    <%  FCLTHeader.Generate({ outputmode: outputmode }); %>
</head>
<body>
<% } %>
<TABLE>
<%
    sql = "SELECT ts.CAD_LEGENDA_KEY,"
        + lcl.xsqla('ts.cad_legenda_omschrijving','ts.cad_legenda_key')+","
        + "       ts.CAD_LEGENDA_DISCREET, "
        + "       tt.CAD_THEMA_VIEW, tt.CAD_THEMA_TYPE, tt.FAC_FUNCTIE_KEY"
        + "  FROM CAD_LEGENDA ts, CAD_THEMA tt"
        + " WHERE tt.CAD_THEMA_KEY = " + pThema
        + "   AND tt.CAD_LEGENDA_KEY = ts.CAD_LEGENDA_KEY";
    oRs = Oracle.Execute(sql)

    if (oRs.EOF) Response.end; // Is wel heel vreemd, een lege legenda
    var themaType = oRs("CAD_THEMA_TYPE").Value;
    var legendaOmschrijving=oRs("CAD_LEGENDA_OMSCHRIJVING").value;
    var discreet=oRs("CAD_LEGENDA_DISCREET").value==1;
    var legenda_key=oRs("CAD_LEGENDA_KEY").value;
    var viewName = oRs("CAD_THEMA_VIEW").value;

    var isUpdatable = (themaType & 0x80) == 0x80;

    // TODO: als updatable dan ook testen of FAC_FUNCTIE_KEY wel schrijfrechten heeft en of het locatiegebonden rechten zijn

    if (isUpdatable)
        var wkveld = "waarde_key" // veld  moet er dan ook zijn!
    else
        var wkveld = "null waarde_key";

    if (inoutMode == MODE_IN)
    {
        if (scenario_key==0)
        {
            if ((themaType & 0x18) == 0x10) // Objecten
            {
                // Toon legendawaarden die bij *een* object voorkomen, anders te ingewikkeld met disc en zo
                var waardenSQL = "select distinct waarde, null waarde_key"
                               + "  from " + viewName + " th";
            }
            else if ((themaType & 0x18) != 0x08) // ruimtes
            {
                if (isUpdatable && LegendaFilter=="L") // alles op locatie
                {
                    var waardenSQL = "select waarde, "+wkveld
                                   + "  from " + viewName + " th, alg_ruimte ar, "
                                   + "       alg_verdieping av, alg_gebouw ab,"
                                   + "       alg_verdieping av1, alg_gebouw ab1" // 1 versies 'zoeken' locatie
                                   + " where th.alg_ruimte_key = ar.alg_ruimte_key"
                                   + "   and ar.alg_verdieping_key = av.alg_verdieping_key"
                                   + "   and av.alg_gebouw_key = ab.alg_gebouw_key"
                                   + "   and av1.alg_verdieping_key = " + pvKey
                                   + "   and ab1.alg_gebouw_key = av1.alg_gebouw_key"
                                   + "   and ab.alg_locatie_key = ab1.alg_locatie_key"
                }
                else
                {
                    var waardenSQL = "select waarde, "+wkveld
                                   + "  from " + viewName + " th"
                    if (!isUpdatable || LegendaFilter=="V")
                    waardenSQL = "select waarde, "+wkveld
                               + "  from " + viewName + " th, alg_ruimte ar "
                               + " where th.alg_ruimte_key = ar.alg_ruimte_key"
                               + "   and alg_verdieping_key = " + pvKey;
                }
            }
            else // werkplekken
            {
                var waardenSQL = "select waarde, null waarde_key"
                               + "  from " + viewName + " th, prs_werkplek pw, alg_ruimte ar "
                               + " where th.prs_werkplek_key = pw.prs_werkplek_key"
                               + "   and pw.prs_alg_ruimte_key = ar.alg_ruimte_key"
                               + "   and alg_verdieping_key = " + pvKey;
            }
        }
        else // projectmode
        {
            if ((themaType & 0x18) != 0x08) // prj ruimtes
            {
                var waardenSQL = "select waarde, "+wkveld
                               + "  from " + viewName + " th, prj_ruimte pr "
                               + " where th.prj_ruimte_key = pr.prj_ruimte_key"
                               + "   and alg_verdieping_key = " + pvKey
                               + "   and prj_scenario_key = " + scenario_key;
                if (isUpdatable && LegendaFilter=="L") // alles op locatie
                {
                    var waardenSQL = "select waarde, "+wkveld
                                   + "  from " + viewName + " th, prj_ruimte pr, "
                                   + "       alg_verdieping av, alg_gebouw ab,"
                                   + "       alg_verdieping av1, alg_gebouw ab1" // 1 versies 'zoeken' locatie
                                   + " where th.prj_ruimte_key = pr.prj_ruimte_key"
                                   + "   and pr.alg_verdieping_key = av.alg_verdieping_key"
                                   + "   and av.alg_gebouw_key = ab.alg_gebouw_key"
                                   + "   and av1.alg_verdieping_key = " + pvKey
                                   + "   and ab1.alg_gebouw_key = av1.alg_gebouw_key"
                                   + "   and ab.alg_locatie_key = ab1.alg_locatie_key"
                }
                else
                {
                    if (!isUpdatable || LegendaFilter=="V") // Verdieping
                    {
                        var waardenSQL = "select waarde, "+wkveld
                                       + "  from " + viewName + " th, prj_ruimte pr "
                                       + " where th.prj_ruimte_key = pr.prj_ruimte_key"
                                       + "   and alg_verdieping_key = " + pvKey;
                    }
                    else // Alle variant
                    {
                        var waardenSQL = "select waarde, "+wkveld
                                       + "  from " + viewName + " th"
                    }
                }
            }
            else // prj werkplekken
            {
                var waardenSQL = "select waarde, null waarde_key"
                               + "  from " + viewName + " th, prj_werkplek pw, prj_ruimte pr "
                               + " where th.prj_werkplek_key = pw.prj_werkplek_key"
                               + "   and pw.prj_ruimte_key = pr.prj_ruimte_key"
                               + "   and alg_verdieping_key = " + pvKey
                               + "   and prj_scenario_key = " + scenario_key;
            }
        }
    }
    else
    {
        var waardenSQL = "select waarde, null waarde_key"
                       + "  from " + viewName + " th, alg_terreinsector ar "
                       + " where th.alg_terreinsector_key = ar.alg_terreinsector_key"
                       + "   and alg_locatie_key = " + pvKey;
    }


    oRs.close();

    if (discreet)
        sql = "SELECT "+ lcl.xsqla('ti.CAD_LEGENDAWAARDE_OMSCHR','ti.cad_legendawaarde_key')
            + ", ti.CAD_LEGENDAWAARDE_RGB, TH2.WAARDE_KEY, COUNT(*) aantal"
            + "  FROM CAD_LEGENDAWAARDE ti, (" + waardenSQL + ") TH2 "
            + " WHERE TI.CAD_LEGENDAWAARDE_VALUE = TH2.WAARDE "
            + "   AND ti.CAD_LEGENDA_KEY = " + legenda_key
            + " GROUP BY "+lcl.xsql('ti.CAD_LEGENDAWAARDE_OMSCHR','ti.cad_legendawaarde_key')+", ti.CAD_LEGENDAWAARDE_RGB, TH2.WAARDE_KEY"
            + " ORDER BY CAD_LEGENDAWAARDE_OMSCHR";
    else // Niet discreet-->alle waarden ongeacht voorkomen
        sql = "SELECT DISTINCT "+ lcl.xsqla('ti.CAD_LEGENDAWAARDE_OMSCHR','ti.cad_legendawaarde_key')
            + ", ti.CAD_LEGENDAWAARDE_RGB, "
            + "                fac.safe_to_number(CAD_LEGENDAWAARDE_VALUE)"
            + "  FROM CAD_LEGENDAWAARDE ti"
            + " WHERE ti.CAD_LEGENDA_KEY = " + legenda_key
            + " ORDER BY fac.safe_to_number(CAD_LEGENDAWAARDE_VALUE)" // Numeriek sorteren!
    oRs = Oracle.Execute(sql)
%>
    <TR>
        <td colspan='2'><span class='legendatitel'><%=legendaOmschrijving%></span>
<% if (!forPrint && isUpdatable) { %>
            <select onChange="onLegendaFilterChange(this.value)">
                    <option value="V"><%=L("lcl_floor")%></option>
                    <option value="L" <%=LegendaFilter=="L"?"selected":""%>><%=L("lcl_location")%></option>
                    <option value="*" <%=LegendaFilter=="*"?"selected":""%>><%=L("lcl_all")%></option></input>
<% } %>
        </td>
    </TR>
<%
      v_count   = "";
      while (!oRs.EOF)
      {
            v_waarde_key = null;
            v_waarde  = oRs.Fields("CAD_LEGENDAWAARDE_OMSCHR").value;
            v_kleur   = oRs.Fields("CAD_LEGENDAWAARDE_RGB").value.replace(/ /g,'');
            if (discreet) {
                v_count = " (" + oRs.Fields("aantal").value + "x)";
                v_waarde_key  = oRs.Fields("waarde_key").value;
            }
%>
      <TR style="cursor:pointer"
<% if (isUpdatable && v_waarde_key != null) { %>
            onmousedown='mydragstartLegenda(event, "<%=v_kleur%>", "<%=v_waarde_key%>");'
<% } else { %>
            onclick='if (window.selectfromLegenda) selectfromLegenda(event, "<%=safe.jsstring(v_waarde)%>");'
<% } %>
        >
        <TD class='legendaregel'>
            <div class='legendakleur'>
                <div style="border:8px solid #<%=v_kleur%>;line-height:0px;font-size:0px;">&nbsp;</div>
            </div>
         </TD>
        <TD class='legendatekst' title="<%=safe.htmlattr(v_waarde)%><%=v_count%>"><%=safe.html(v_waarde)%></TD>
      </TR>
<%
      oRs.MoveNext();
      }
      oRs.Close();
%>
</TABLE>
<% if (forPrint) { %>
</body>
<% } %>
