<%@ 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: - */%> <% 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"; } %>
<% FCLTHeader.Generate({outputmode: outputmode}); %>
<% 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 = "" + L("lcl_estate_totaal_opp") + " " + "" + L("lcl_estate_ruimte_bruto_vloeropp") + ": " + summaryParams.selectedopp.toFixed(2) + " " + L("lcl_estate_ruimte_opp_m2"); if (S("fg_contourlayers_alt1") != "" && S("fg_labellayers_alt1") != "") status_row += ", " + L("lcl_estate_ruimte_opp_alt1") + ": " + summaryParams.selectedoppAlt1.toFixed(2) + " " + L("lcl_estate_ruimte_opp_m2"); if (S("fg_contourlayers_alt2") != "" && S("fg_labellayers_alt2") != "") status_row += ", " + L("lcl_estate_ruimte_opp_alt2") + ": " + 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(); %>