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

    File:               mld_load_obj_info.asp
    Description:        Genereer HTML info voor een object bij melding
    Parameters:         ins_key
                        aantal_kenmerken
    Context:            asynchrone aanroep vanuit mld_object.asp
    Notes:

*/ %>
<%
DOCTYPE_Disable = 1;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../Shared/get_objecten_sql.inc" -->
<%

function kenmerkTR(label, waarde)
{
  var txt = '<tr>'
          + '<td class="label"><label>'+safe.html(label)+':</label></td>'
          + '<td style="word-wrap:break-word">' +safe.html(waarde)+'</td>'
          + '</tr>';
  return txt;
}
var ins_key    = getQParamInt("ins_key");
var max_rows   = getQParamInt("max_rows",1);

var sql = "SELECT s.ins_srtdeel_key"
        + "  FROM ins_deel d"
        + ", ins_srtdeel s"
        + " WHERE d.ins_srtdeel_key = s.ins_srtdeel_key"
        + " AND ins_deel_key = " + ins_key;
var oRs = Oracle.Execute(sql);
var srtdeel_key = oRs("ins_srtdeel_key").value;
oRs.close();

var txt = '<table style="table-layout:fixed; width:100%">';

var sql = "SELECT d.ins_deel_key"
        + "     , d.ins_deel_omschrijving||' ('||" + lcl.xsql('dg.ins_srtdeel_omschrijving', 'dg.ins_srtdeel_key') + "||')' deel"
        + "     , d.ins_deel_opmerking"
        + "     , d.ins_alg_ruimte_type"
        + "     , dg.alg_plaatsaanduiding"
        + "  FROM ins_v_aanwezigdeel d"
        + "     , alg_v_aanwezigruimte a"
        + "     , ins_v_deel_gegevens dg"
        + " WHERE d.ins_alg_ruimte_key = a.alg_ruimte_key(+)"  // Outer join nodig om ook de persoonsgebonden en afdelingsgebonden objecten te tonen.
        + "   AND d.ins_deel_key = dg.ins_deel_key"
        + "   AND d.ins_deel_key = " + ins_key;

var oRs = Oracle.Execute(sql);
if (!oRs.eof)
{
  switch (oRs("ins_alg_ruimte_type").Value)
  {
    case 'P':  { var lbl = L("lcl_obj_owner"); break; }       // Persoon(P)
    case 'A':  { var lbl = L("lcl_obj_department"); break; }  // Afdeling (A)
    default:   { var lbl = L("lcl_obj_position"); break; }    // Plaats: Ruimte(R), Terrein(T) of Werkplek(W)
  }
  txt += kenmerkTR(lbl, oRs("alg_plaatsaanduiding").value);
  txt += kenmerkTR(L("lcl_obj_identification"), oRs("deel").value);
  if (oRs("ins_deel_opmerking").Value)
      txt += kenmerkTR(L("lcl_ins_opmerking"), oRs("ins_deel_opmerking").value);
}

oRs.close();

var sqlwaarde = " k.ins_kenmerk_default";
if (srtdeel_key > 0)
  sqlwaarde = "(SELECT (CASE WHEN sk.fac_kenmerkdomein_key IS NULL"
                         + " THEN v.ins_kenmerkdeel_waarde"
                         + " ELSE fac.getdomeinwaarde(sk.fac_kenmerkdomein_key, v.ins_kenmerkdeel_waarde)"
                         + " END) ins_kenmerkdeel_waarde"
            + "   FROM ins_kenmerkdeel v"
            +       ", ins_srtkenmerk sk"
            + "  WHERE sk.ins_srtkenmerk_key = k.ins_srtkenmerk_key"
            +    " AND sk.ins_srtkenmerk_kenmerktype NOT IN ('L','M')"
            +    " AND v.ins_kenmerk_key = k.ins_kenmerk_key"
            +    " AND v.ins_kenmerkdeel_verwijder IS NULL"
            +    " AND (  k.ins_kenmerk_bewerkniveau = 'D' AND v.ins_deel_key = " + ins_key
            +        " OR k.ins_kenmerk_bewerkniveau = 'S' AND v.ins_deel_key = " + srtdeel_key
            +        " )"
            + ")";

var sqlt = "SELECT k.ins_kenmerk_volgnummer kenmerk_volgnr"
         +     "," + lcl.xsql('t.ins_srtkenmerk_omschrijving', 't.ins_srtkenmerk_key') +" kenmerk_omschrijving"
         +     "," + sqlwaarde + " kenmerk_waarde"
         + " FROM ins_srtkenmerk t"
         +     ", ins_kenmerk k"
         +     ", ins_srtdeel s"
         +     ", ins_srtgroep g"
         + " WHERE s.ins_srtdeel_key = " + srtdeel_key
         +   " AND k.ins_srtkenmerk_key = t.ins_srtkenmerk_key"
         +   " AND g.ins_srtgroep_key = s.ins_srtgroep_key"
         +   " AND k.ins_kenmerk_verwijder IS NULL"
         +   " AND t.ins_srtkenmerk_verwijder IS NULL"
         +   " AND (  (k.ins_srtinstallatie_key = s.ins_srtdeel_key"
               +    " AND k.ins_kenmerk_niveau = 'S')"
               + " OR (k.ins_srtinstallatie_key = s.ins_srtgroep_key"
               +    " AND k.ins_kenmerk_niveau = 'G')"
               + " OR (k.ins_srtinstallatie_key = g.ins_discipline_key"
               +    " AND k.ins_kenmerk_niveau = 'D')"
               + " )"
         + " ORDER BY 1,2";
var sql = "SELECT * FROM ("+ sqlt +")"
        + " WHERE rownum <= " + max_rows;
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{ // elk gevonden record op een nieuwe regel
  txt += kenmerkTR(oRs(1).value, oRs(2).value);
  oRs.MoveNext();
}
oRs.close();
txt += '</table>';

var result = txt;

Response.Write(result);
%>