<%@ language="javascript"%>
<% /*
     $Revision$
     $Id$

     File:        UWVA/rap_alg.asp (based on: CAD/rap_alg.asp)
     Description: Inhoud van het ALG-tabblad van FG
     Parameters:  floorKey (required)
                  highlight (optional list of room-keys to filter)
     Context:     -

*/%>

<!-- #include file="../../appl/Shared/common.inc" -->
<!-- #include file="../../appl/Shared/resultset_table_v2.inc" -->

<%
var floorKey   = getQParamInt("vKey", -1);
var highlight_arr = getQParamIntArray("highlight", []); // Comma-separated room_key_list (terrains). Optional

var outputmode = getQParam("outputmode" ,0);
var showall    = getQParam("showall", 0) == 1;

var sql = "";
if (floorKey != -1)
{
  sql = " SELECT   r.alg_ruimte_key, r.alg_ruimte_aanduiding, COALESCE (r.alg_srtruimte_omschrijving, 'ONGEDEFINIEERD') ruimtesoort,"
      + "                         r.alg_ruimte_bruto_vloeropp, rg.waarde ruimtegebruik,"
      + "                         r.alg_ruimte_opp_alt1, r.alg_ruimte_opp_alt2,"
      + " (SELECT ROUND(100 * ra.prs_ruimteafdeling_bezetting / DECODE(SUM(ra2.prs_ruimteafdeling_bezetting),0,1,SUM(ra2.prs_ruimteafdeling_bezetting)))"
      + "	FROM prs_ruimteafdeling ra2"
      + "	WHERE ra.alg_ruimte_key = ra2.alg_ruimte_key"
      + "	GROUP BY ra.alg_ruimte_key) bezetting"
      + ", (SELECT " + S("prs_dep_string")
        + " FROM prs_v_afdeling d, prs_v_afdeling_boom b"
        + " WHERE ra.prs_afdeling_key = b.prs_afdeling_key"
        + " AND   d.prs_afdeling_key = b.prs_afdeling_key1) divisie"
      + ", (SELECT " + S("prs_dep_string")
      + " FROM prs_v_afdeling d"
      + " WHERE d.prs_afdeling_key = ra.prs_afdeling_key"
      + " AND   d.prs_afdeling_parentkey is not null) afdeling"
      + "     FROM (SELECT alg_r.alg_ruimte_key alg_ruimte_key,"
      + "                  alg_r.alg_ruimte_omschrijving alg_ruimte_omschrijving,"
      + "                  alg_s.alg_srtruimte_omschrijving alg_srtruimte_omschrijving,"
      + "                  alg_r.alg_ruimte_bruto_vloeropp,"
      + "                  alg_r.alg_ruimte_opp_alt1,"
      + "                  alg_r.alg_ruimte_opp_alt2,"
      + "                     alg_g.alg_gebouw_code"
      + "                  || '-'"
      + "                  || TO_CHAR (alg_v.alg_verdieping_code)"
      + "                  || '-'"
      + "                  || alg_r.alg_ruimte_nr alg_ruimte_aanduiding"
      + "             FROM alg_gebouw alg_g,"
      + "                  alg_verdieping alg_v,"
      + "                  alg_v_aanwezigruimte alg_r,"
      + "                  alg_srtruimte alg_s"
      + "            WHERE alg_v.alg_verdieping_key = " + floorKey
      + "              AND alg_v.alg_verdieping_key = alg_r.alg_verdieping_key"
      + "              AND alg_g.alg_gebouw_key = alg_v.alg_gebouw_key"
      + "              AND alg_r.alg_srtruimte_key = alg_s.alg_srtruimte_key(+)) r,"
      + "          prs_ruimteafdeling ra, "
      + " (SELECT   ok.alg_onrgoed_key alg_ruimte_key, COALESCE (ud.fac_usrdata_omschr, 'ONGEDEFINIEERD') waarde "
      + "  FROM   alg_kenmerk k, alg_onrgoedkenmerk ok, fac_usrdata ud "
      + " WHERE       k.alg_kenmerk_omschrijving = 'Ruimtegebruik' "
      + "         AND k.alg_kenmerk_key = ok.alg_kenmerk_key "
      + "         AND fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key) rg "
      + " WHERE ra.alg_ruimte_key(+) = r.alg_ruimte_key"
      + " AND   rg.alg_ruimte_key(+) = r.alg_ruimte_key"
      + (highlight_arr.length > 0 && highlight_arr.join(",").indexOf("-1") == -1
        ? " AND r.alg_ruimte_key IN (" + highlight_arr.join(",") + ")"
        : "")
      + " ORDER BY r.alg_ruimte_aanduiding, divisie, afdeling";
}
else
{ // Er is (nog) geen verdieping bekend
  sql = "SELECT * FROM DUAL WHERE 1 = 0";
}
%>

<html>
  <head>
<%  FCLTHeader.Generate({root: "../../appl/", outputmode: outputmode}); %>
    <script type="text/javascript">
      function onClickRuimteAlternatief(room_key)
      {
        sl = parent.parent.document.getElementById("rooms");
        if( sl.selectedIndex == -1 || sl.options[sl.selectedIndex].value != room_key )
        {
          for (i = 0; i < sl.length; i++)
          {
            if (sl.options[i].value == room_key)
            {
              sl.selectedIndex = i;
              parent.parent.OnRoomChanged(sl);
            }
          }
        }
      }

      function onClickRuimte(row)
      {
        FcltMgr.openDetail("appl/ALG/alg_ruimte.asp?key=" +  row.getAttribute("ROWKEY"), "<%=L("lcl_estate_ruimte_title")%>");
      }
    </script>
  </head>

  <body class="tabpage">
<%
    var summaryParams = {selectedopp: 0, selectedoppAlt1: 0, selectedoppAlt2: 0}
    function fnsummaryCalc(oRs)
    {
      with (summaryParams)
      {
        // oRs("bezetting").value is null of heeft een waarde van 0 t/m 100
        if (oRs("bezetting").value || oRs("bezetting").value == 0)
        { // Voor de ruimte is er ten minste 1 bezetting gedefinineerd (prs_ruimteafdeling)
          // Totale bezetting per ruimte opgeteld is 100%
          // Bezetting is in procenten.
          var bezetting = oRs("bezetting").value / 100;
        }
        else
        { // Voor de ruimte is er geen bezetting gedefinineerd (prs_ruimteafdeling)
          // Dan telt deze voor 100% mee voor de berekening van het totale oppervalk.
          var bezetting = 1;
        }
        // Totaal oppervlak is de som van de bezetting van de devisie maal het oppervlak.
        selectedopp = selectedopp + (oRs("alg_ruimte_bruto_vloeropp").value != null? oRs("alg_ruimte_bruto_vloeropp").value * bezetting : 0);
        selectedoppAlt1 = selectedoppAlt1 + (oRs("alg_ruimte_opp_alt1").value != null? oRs("alg_ruimte_opp_alt1").value * bezetting : 0);
        selectedoppAlt2 = selectedoppAlt2 + (oRs("alg_ruimte_opp_alt2").value != null? oRs("alg_ruimte_opp_alt2").value * bezetting : 0);
      }
      return;
    }

    function fnsummaryShow()
    {
      var status_row = "<label>" + L("lcl_estate_totaal_opp") + "</label> "
                     + "<label>" + L("lcl_estate_ruimte_bruto_vloeropp") + "</label>: " + summaryParams.selectedopp.toFixed(2) + " " + L("lcl_estate_ruimte_opp_m2");
      if (S("fg_contourlayers_alt1") != "" && S("fg_labellayers_alt1") != "")
        status_row += ", <label>" + L("lcl_estate_ruimte_opp_alt1") + "</label>: " + summaryParams.selectedoppAlt1.toFixed(2) + " " + L("lcl_estate_ruimte_opp_m2");
      if (S("fg_contourlayers_alt2") != "" && S("fg_labellayers_alt2") != "")
        status_row += ", <label>" + L("lcl_estate_ruimte_opp_alt2") + "</label>: " + summaryParams.selectedoppAlt2.toFixed(2) + " " + L("lcl_estate_ruimte_opp_m2");
      return status_row;
    }

    var lastValue = null;
    function showRoomDesc(oRs)
    { // leek leuk om herhalingen te onderdrukken, maar sorteren maakt het waardeloos
      if (false && outputmode == 0 && safe.htmlattr(oRs("alg_ruimte_aanduiding").value) == lastValue)
      var result = null;
      else
        var result = safe.htmlattr(oRs("alg_ruimte_aanduiding").value);
      lastValue = result;
      return result;
    }

    function fnOpp(oRs)
    {
      return (oRs("alg_ruimte_bruto_vloeropp").value != null? safe.displayfloat(oRs("alg_ruimte_bruto_vloeropp").value, 2) : "-");
    }

    function fnOppAlt1(oRs)
    {
      return (oRs("alg_ruimte_opp_alt1").value != null? safe.displayfloat(oRs("alg_ruimte_opp_alt1").value, 2) : "-");
    }

    function fnOppAlt2(oRs)
    {
      return (oRs("alg_ruimte_opp_alt2").value != null? safe.displayfloat(oRs("alg_ruimte_opp_alt2").value, 2) : "-");
    }

    var rst = new ResultsetTable({ ID: "cadalgtable",
                                   keyColumn: "alg_ruimte_key",
                                   title: L("lcl_space_manage_h"),
                                   sql: sql,
                                   outputmode: outputmode,
                                   showAll: showall,
                                   summaryCalc: fnsummaryCalc,
                                   summaryShow: fnsummaryShow
                                 }
                                );

    rst.addColumn(new Column({caption: L("lcl_obj_inf_room"), content: showRoomDesc}));
    rst.addColumn(new Column({caption: "Ruimtesoort", content: "ruimtesoort"}));
    rst.addColumn(new Column({caption: "Ruimtegebruik", content: "ruimtegebruik"}));
    rst.addColumn(new Column({caption: L("lcl_estate_ruimte_bruto_vloeropp"), content: fnOpp, datatype: "float"}));
    if (S("fg_contourlayers_alt1") != "" && S("fg_labellayers_alt1") != "")
      rst.addColumn(new Column({caption: "VVO (m2)", content: fnOppAlt1, datatype: "float"}));
    if (S("fg_contourlayers_alt2") != "" && S("fg_labellayers_alt2") != "")
      rst.addColumn(new Column({caption: L("lcl_estate_ruimte_opp_alt2"), content: fnOppAlt2, datatype: "float"}));
    rst.addColumn(new Column({caption: L("lcl_dep_name_level1"), content: "divisie"}));
    rst.addColumn(new Column({caption: L("lcl_obj_inf_room"), content: "afdeling"}));
    rst.addColumn(new Column({caption: L("lcl_procent"), content: "bezetting", datatype: "float"}));

    rst.addAction({action: "onClickRuimte", caption: L("lcl_edit"), isDefault: true});

    var cnt = rst.processResultset();
%>
  </body>
</html>

