Files
Facilitor/APPL/CAD/rap_alg.asp
Peter Feij a09eec13fd FSN#32141 virtuele ruimtes met een underscore
svn path=/Website/trunk/; revision=24688
2015-04-03 12:59:49 +00:00

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>