171 lines
7.9 KiB
Plaintext
171 lines
7.9 KiB
Plaintext
<%@ language="javascript"%>
|
|
<% /*
|
|
$Revision$
|
|
$Id$
|
|
|
|
File: 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="../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 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, r.alg_srtruimte_omschrijving,"
|
|
+ " r.alg_ruimte_bruto_vloeropp, r.alg_ruimte_omschrijving,"
|
|
+ " 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"
|
|
+ " WHERE d.prs_afdeling_key = ra.prs_afdeling_key) afdeling"
|
|
+ " FROM (SELECT alg_r.alg_ruimte_key alg_ruimte_key,"
|
|
+ " alg_r.alg_ruimte_omschrijving alg_ruimte_omschrijving,"
|
|
+ lcl.xsqla("alg_s.alg_srtruimte_omschrijving", "alg_s.alg_srtruimte_key")+","
|
|
+ " 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_ruimte_nr NOT LIKE '\\_%' ESCAPE '\\' " // suppress virtual rooms
|
|
+ " AND alg_r.alg_srtruimte_key = alg_s.alg_srtruimte_key(+)) r,"
|
|
+ " prs_ruimteafdeling ra"
|
|
+ " WHERE ra.alg_ruimte_key(+) = r.alg_ruimte_key"
|
|
+ " AND ra.prs_ruimteafdeling_verwijder IS NULL"
|
|
+ (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, afdeling";
|
|
}
|
|
else
|
|
{ // Er is (nog) geen verdieping bekend
|
|
sql = "SELECT * FROM DUAL WHERE 1 = 0";
|
|
}
|
|
%>
|
|
<html>
|
|
<head>
|
|
<% FCLTHeader.Generate({outputmode: outputmode}); %>
|
|
<script type="text/javascript">
|
|
function onClickRuimte(row)
|
|
{
|
|
FcltMgr.openDetail("appl/alg/alg_ruimte.asp?key=" + row.getAttribute("ROWKEY"));
|
|
}
|
|
</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;
|
|
}
|
|
|
|
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: L("lcl_fg_func_names"), content: "alg_srtruimte_omschrijving"}));
|
|
rst.addColumn(new Column({caption: L("lcl_descr"), content: "alg_ruimte_omschrijving"}));
|
|
rst.addColumn(new Column({caption: L("lcl_department"), content: "afdeling"}));
|
|
rst.addColumn(new Column({caption: L("lcl_procent"), content: "bezetting", datatype: "float"}));
|
|
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: L("lcl_estate_ruimte_opp_alt1"), 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.addAction({ action: "onClickRuimte", caption: L("lcl_edit"), isDefault: true } );
|
|
|
|
var cnt = rst.processResultset();
|
|
%>
|
|
</body>
|
|
</html>
|
|
|