230 lines
10 KiB
Plaintext
230 lines
10 KiB
Plaintext
<%@ language="javascript"%>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: CAD/rap_thema.asp
|
|
Description: Inhoud van de thema/label-tabbladen van FG. Toont een lijst met de waarden zoals die ook gekleurd of getoond zijn in de tekening
|
|
Werkt voor de verschillende type themas, binnen en buiten wat mij betreft
|
|
// 00 = contouren (ruimte(01) of terrein(02))
|
|
// &01 = binnen
|
|
// &02 = buiten
|
|
// &04 = scenario
|
|
// &08 = werkplek
|
|
// &16 = object
|
|
// &128 = sleepbaar
|
|
Parameters: floorKey (required)
|
|
thema of label
|
|
highlight (optional list of room-keys/ins-keys/wp-keys/terrein-keys to filter)
|
|
dolabels=1 voor de labelversie.
|
|
|
|
Note: UIT TE BREIDEN. BEPERKINGEN NU:
|
|
- werkplekthemas (op prs_werkplek) niet ondersteund
|
|
- de buitensituatie voor terreinen moet nog worden toegevoegd
|
|
- de ruwe waarde uit de view wordt getoond, niet de vertaling volgens de legenda. Vooralsnog ook ok
|
|
- voor prj is deze nog niet goed genoeg, dus daarvoor gebruiken we hem ook (nog) niet.
|
|
*/%>
|
|
|
|
<!-- #include file="../Shared/common.inc" -->
|
|
<!-- #include file="../Shared/resultset_table_v2.inc" -->
|
|
|
|
<%
|
|
var floorKey = getQParamInt("vKey", -1);
|
|
var highlight_arr = getQParamIntArray("highlight", []); // Comma-separated room_key_list (terrains). Optional
|
|
var datumfilter = getQParamDate("datumfilter", null);
|
|
var disc_arr = getQParamIntArray("discs", []);
|
|
|
|
var thema_key = getQParamInt("thema", -1);
|
|
var label_key = getQParamInt("label", -1);
|
|
var dolabels = getQParamInt("listlabels", 0) == 1; // aanduiding of labelthema of kleurthema te tonen (beide keys zijn gegeven), default is kleur
|
|
var lthema_key = (dolabels ? label_key : thema_key); // intern gaan we hiermee uniform verder
|
|
|
|
var outputmode = getQParam("outputmode", 0);
|
|
var showall = getQParam("showall", 0) == 1;
|
|
|
|
var sql = "";
|
|
|
|
if (floorKey > 0 && lthema_key > 0)
|
|
{
|
|
if (dolabels)
|
|
{
|
|
sql = "SELECT "
|
|
+ lcl.xsql('cad_label_omschrijving', 'cad_label_key') + " omschrijving, "
|
|
+ lcl.xsql('cad_label_opmerking', 'cad_label_key') + " opmerking, "
|
|
+ " cad_label_view tview,"
|
|
+ " cad_label_type ttype,"
|
|
+ " fac_functie_key"
|
|
+ " FROM cad_label"
|
|
+ " WHERE cad_label_key = " + label_key;
|
|
}
|
|
else
|
|
{
|
|
sql = "SELECT "
|
|
+ lcl.xsql('cad_thema_omschrijving', 'cad_thema_key') + " omschrijving, "
|
|
+ lcl.xsql('cad_thema_opmerking', 'cad_thema_key') + " opmerking, "
|
|
+ " cad_thema_view tview,"
|
|
+ " cad_thema_type ttype,"
|
|
+ " fac_functie_key"
|
|
+ " FROM cad_thema"
|
|
+ " WHERE cad_thema_key = " + thema_key;
|
|
}
|
|
oRs = Oracle.Execute(sql);
|
|
var thema_omschrijving = oRs("omschrijving").value;
|
|
var thema_view = oRs("tview").value;
|
|
var thema_type = oRs("ttype").value;
|
|
var thema_opmerking = oRs("opmerking").value;
|
|
var functie_key = oRs("fac_functie_key").value;
|
|
oRs.close();
|
|
sql="";
|
|
|
|
if (functie_key) user.checkAutorisation(functie_key); // als een autorisatie gedefinieerd is, controleren we die
|
|
|
|
// sleepbaar of scenario niet maakt niet uit
|
|
var isruimtethema = (thema_type&25)==1;
|
|
var isterreinthema = (thema_type&25)==2;
|
|
var isobjectthema = (thema_type&17)==17;
|
|
var iswpthema = (thema_type&9)==9;
|
|
var isprjthema = (thema_type&4)==4;
|
|
|
|
var withdatefilter = datumfilter && hasColumn(thema_view, 'fclt_f_datum', 'DATE');
|
|
|
|
if (isruimtethema) // ruimte-binnen
|
|
{
|
|
sql = " SELECT r.alg_ruimte_key, r.alg_ruimte_nr,"
|
|
+ lcl.xsqla("sr.alg_srtruimte_omschrijving", "sr.alg_srtruimte_key")+","
|
|
+ " r.alg_ruimte_bruto_vloeropp, r.alg_ruimte_omschrijving,"
|
|
+ " r.alg_ruimte_opp_alt1, r.alg_ruimte_opp_alt2, th.waarde"
|
|
+ " FROM alg_v_aanwezigruimte r,"
|
|
+ " alg_srtruimte sr,"
|
|
+ thema_view + " th"
|
|
+ " WHERE r.alg_verdieping_key = " + floorKey
|
|
+ " AND r.alg_ruimte_nr NOT LIKE '\\_%' ESCAPE '\\' " // suppress virtual rooms
|
|
+ " AND r.alg_srtruimte_key = sr.alg_srtruimte_key(+)"
|
|
+ " AND r.alg_ruimte_key = "+(isprjthema ? "th.prj_ruimte_key" : "th.alg_ruimte_key") // niet genoeg; moet dan denk ik ook prj_ruimte enzo
|
|
+ (hasColumn(thema_view, 'fclt_f_3d_user_key', 'NUMBER') ? " AND th.fclt_f_3d_user_key = " + user_key:"")
|
|
+ (withdatefilter
|
|
? " AND th.fclt_f_datum = " + datumfilter.toSQL()
|
|
: ""
|
|
)
|
|
+ (highlight_arr.length > 0 && highlight_arr.join(",").indexOf("-1") == -1
|
|
? " AND r.alg_ruimte_key IN (" + highlight_arr.join(",") + ")"
|
|
: ""
|
|
)
|
|
+ " ORDER BY r.alg_ruimte_nr";
|
|
}
|
|
else if (isobjectthema) // objecten binnen
|
|
{
|
|
sql = "SELECT id.ins_deel_key, ins_deel_omschrijving, waarde,"
|
|
+ " r.alg_ruimte_nr, " + lcl.xsqla('isd.ins_srtdeel_omschrijving', 'isd.ins_srtdeel_key')
|
|
+ " FROM ins_deel id, alg_ruimte r, ins_srtdeel isd,"
|
|
+ thema_view + " th"
|
|
+ " WHERE id.ins_srtdeel_key = isd.ins_srtdeel_key"
|
|
+ " AND ins_deel_verwijder IS NULL"
|
|
+ " AND id.ins_alg_ruimte_key = r.alg_ruimte_key" // zijn zo dus alleen ruimtegebonden objecten. Voorstelbaar dat wp-gebonden objecten erbij mogen
|
|
+ " AND r.alg_verdieping_key = " + floorKey
|
|
+ " AND id.ins_deel_key = " + (isprjthema ? "th.prj_deel_key" : "th.ins_deel_key") // niet genoeg; moet dan denk ik ook prj_deel enzo
|
|
+ (hasColumn(thema_view, 'fclt_f_3d_user_key', 'NUMBER') ? " AND th.fclt_f_3d_user_key = " + user_key:"")
|
|
+ (withdatefilter
|
|
? " AND th.fclt_f_datum = " + datumfilter.toSQL()
|
|
: ""
|
|
)
|
|
+ (disc_arr.length > 0 && disc_arr.join(",").indexOf("-1") == -1
|
|
? " AND ins_discipline_key in (" + disc_arr.join(",") + ")"
|
|
: ""
|
|
)
|
|
+ (highlight_arr.length > 0 && highlight_arr.join(",").indexOf("-1") == -1
|
|
? " AND r.alg_ruimte_key IN (" + highlight_arr.join(",") + ")"
|
|
: ""
|
|
)
|
|
+ " ORDER BY r.alg_ruimte_nr, ins_deel_omschrijving";
|
|
}
|
|
else if (iswpthema) // werkplekken binnen
|
|
{
|
|
sql = "SELECT pw.prs_werkplek_key, ar.alg_ruimte_nr, prs_werkplek_volgnr, pw.prs_werkplek_omschrijving, prs_werkplek_type, waarde"
|
|
+ " FROM " + thema_view + " 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 pw.prs_werkplek_virtueel = 0"
|
|
+ " AND alg_verdieping_key = " + floorKey
|
|
+ (highlight_arr.length > 0 && highlight_arr.join(",").indexOf("-1") == -1
|
|
? " AND ar.alg_ruimte_key IN (" + highlight_arr.join(",") + ")"
|
|
: ""
|
|
)
|
|
+ (hasColumn(thema_view, 'fclt_f_3d_user_key', 'NUMBER') ? " AND th.fclt_f_3d_user_key = " + user_key:"")
|
|
+ (withdatefilter
|
|
? " AND th.fclt_f_datum = " + datumfilter.toSQL()
|
|
: ""
|
|
)
|
|
+ " ORDER BY 2,3";
|
|
}
|
|
else if (isterreinthema) // TODO
|
|
{
|
|
sql = "SELECT * FROM DUAL WHERE 1 = 0";
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// Er is (nog) geen verdieping (of thema) bekend: no result
|
|
sql = "SELECT * FROM DUAL WHERE 1 = 0";
|
|
}
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate({outputmode: outputmode}); %>
|
|
<script type="text/javascript">
|
|
function onClickRow(row)
|
|
{
|
|
<% if (isruimtethema) { %>
|
|
FcltMgr.openDetail("appl/alg/alg_ruimte.asp?key=" + row.getAttribute("ROWKEY"));
|
|
<% } else if (isobjectthema) { %>
|
|
FcltMgr.openDetail("appl/ins/ins_deel.asp?urole=bo&ins_key=" + row.getAttribute("ROWKEY"));
|
|
<% } else if (iswpthema) {
|
|
if (S("prs_werkplek_implicit") == 1) { %>
|
|
FcltMgr.openModalDetail("../prs/prs_edit_perslidwerkplek.asp?wp_key=" + row.getAttribute("ROWKEY"));
|
|
<% } else { %>
|
|
FcltMgr.openDetail("appl/alg/alg_wp.asp?mode=viewUpdate&key=" + row.getAttribute("ROWKEY"));
|
|
<% }
|
|
} %>
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body class="tabpage">
|
|
<%
|
|
var rst = new ResultsetTable({ ID : "cadthematable",
|
|
keyColumn: (isruimtethema ? "alg_ruimte_key" : (isobjectthema ? "ins_deel_key" : (iswpthema ? "prs_werkplek_key" : (isterreinthema ? "alg_terreinsector_key" : "")))),
|
|
title: thema_omschrijving ? thema_omschrijving + (withdatefilter ? " " + toDateString(datumfilter, true, true) : "") : "",
|
|
sql: sql,
|
|
outputmode: outputmode,
|
|
showAll: showall
|
|
});
|
|
|
|
if (isruimtethema)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_obj_inf_room"), content: "alg_ruimte_nr"}));
|
|
rst.addColumn(new Column({caption: L("lcl_descr"), content: "alg_ruimte_omschrijving"}));
|
|
rst.addColumn(new Column({caption: L("alg_srtruimte"), content: "alg_srtruimte_omschrijving"})); // ook een beetje voor de vulling
|
|
}
|
|
else if (isobjectthema)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_obj_inf_room"), content: "alg_ruimte_nr"}));
|
|
rst.addColumn(new Column({caption: L("lcl_ins_object"), content: "ins_deel_omschrijving"}));
|
|
rst.addColumn(new Column({caption: L("lcl_descr"), content: "ins_srtdeel_omschrijving"}));
|
|
}
|
|
else if (iswpthema)
|
|
{
|
|
rst.addColumn(new Column({caption: L("lcl_obj_inf_room"), content: "alg_ruimte_nr"}));
|
|
rst.addColumn(new Column({caption: L("lcl_estate_wp_seq"), content: "prs_werkplek_volgnr"}));
|
|
rst.addColumn(new Column({caption: L("lcl_workplace"), content: "prs_werkplek_omschrijving"}));
|
|
}
|
|
// TODO terrein
|
|
|
|
rst.addColumn(new Column({caption: thema_omschrijving, content: "waarde"}));
|
|
|
|
rst.addAction({ action: "onClickRow", caption: L("lcl_edit"), isDefault: true } );
|
|
var cnt = rst.processResultset();
|
|
%>
|
|
</body>
|
|
</html>
|
|
<% ASPPAGE_END(); %>
|