Files
Facilitor/APPL/PDA/reservering_new.asp
2017-07-17 14:36:24 +00:00

816 lines
34 KiB
Plaintext
Raw Blame History

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: pda/reservering_new.asp
Description: Add reservering (Mobile version)
Parameters: rsv_ruimte_key voor bestaande deelreservering
rsv_ruimte_key=-1 voor nieuwe (deel)reservering
Note:
*/ %>
<% REGISTERMENU_Disable = true; %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/calendar.inc" -->
<!-- #include file="../Shared/selector.inc" -->
<!-- #include file="../Shared/Suggest/plaatsFilter.inc" -->
<!-- #include file="../Shared/discxalg3d.inc" -->
<!-- #include file="../RES/res.inc" -->
<!-- #include file="../RES/res_plan_room.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="../shared/data_recordset.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../shared/rater.inc" -->
<%
FCLTHeader.Requires({ js: ["./modernizr-3.3.0.custom.min.js"] });
FCLTHeader.Requires({ js: ["jquery.timepicker-table.js"],
css: ["timePicker-table.css"] });
var urole = "fe";
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1);
var restype = (getQParam("restype", "R").toUpperCase() == "CV" ? "CV" : "R"); // Default gaan we een ruimte reserveren
var date_from = getQParamDate("date_from", null);
var date_to = getQParamDate("date_to", null);
var act_key = getQParamInt("act_key", -1);
var disc_key = getQParamInt("disc", -1);
var res_deel_key = getQParamInt("res_deel", -1);
var bez_cnt = getQParamInt("bez_cnt", null);
var loc_key = getQParamInt("loc_key", -1);
var bld_key = getQParamInt("bld_key", -1);
var flr_key = getQParamInt("flr_key", -1);
var roo_key = getQParamInt("roo_key", -1);
var res_ruimte_key = getQParamInt("res_ruimte_key", -1);
var qrc = getQParamInt("qrc", 0) != 0;
var cvab = S("res_default_cvab_mode");
var ab_mode = getQParamInt("cvab", -1);
autfunction = "WEB_RESUSE";
var authparams = user.checkAutorisation(autfunction);
var transitParam = buildTransitParam(["restype", "act_key", "date_from", "date_to", "bez_cnt", "cvab",
"loc_key", "bld_key", "flr_key", "roo_key", "disc", "res_deel", "loc_plaats", "res_ruimte_key"]);
var transitParamPlaats = buildTransitParam(["loc_key", "bld_key", "flr_key", "roo_key"]);
var transitParamExtern = buildTransitParam(["date_from", "date_to", "bez_cnt", "loc_plaats"]);
var sql = "SELECT COALESCE(MIN(fac_gebruiker_alg_level_write), 9) writelevel"
+ " FROM fac_v_webgebruiker g, fac_functie f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND g.prs_perslid_key = " + user_key;
var oRs = Oracle.Execute(sql);
var autlevel = oRs("writelevel").Value; // Pas op: kan ook '0' zijn (regio)
oRs.Close();
var subject = L("lcl_mobile_newreservering");
var curPage = 0;
if (rsv_ruimte_key == -1)
{
if (act_key < 0)
{
curPage = 1;
subject = L("lcl_ins_controle_choose_srt");
var srtact_key = getQParamInt("srtact_key", -1);
if (srtact_key > 0)
{
// Bepaal restype uit srtactiviteit.
var sql = "SELECT res_srtactiviteit_soort"
+ " FROM res_srtactiviteit"
+ " WHERE res_srtactiviteit_key = " + srtact_key;
var oRs = Oracle.Execute(sql);
if (!oRs.EoF)
restype = oRs("res_srtactiviteit_soort").value == 0 ? "R" : "CV"; // srtact_key 'sterker' dan restype
oRs.Close();
}
// Activiteiten
var sql_a = "SELECT a.res_activiteit_key"
+ " , " + "CASE WHEN sa.res_srtactiviteit_prefix IS NULL"
+ " THEN ''"
+ " ELSE sa.res_srtactiviteit_prefix || '-'"
+ " END"
+ " || "+ lcl.xsqla("a.res_activiteit_omschrijving", "a.res_activiteit_key")
+ " , a.res_activiteit_duur"
+ " , a.res_activiteit_omsverplicht"
+ " , a.res_activiteit_aantalverplicht"
+ " FROM res_activiteit a"
+ " , res_srtactiviteit sa"
+ " WHERE res_activiteit_verwijder IS NULL"
+ " AND a.res_srtactiviteit_key = sa.res_srtactiviteit_key"
+ (srtact_key > 0
? " AND sa.res_srtactiviteit_key = " + srtact_key
: " AND sa.res_srtactiviteit_soort = " + (restype == "R" ? "0" : "1"))
+ " AND EXISTS (SELECT res_activiteit_key"
+ " FROM res_activiteitdiscipline rad,"
+ " ins_tab_discipline disc"
+ " , fac_v_my_disciplines md"
+ " WHERE rad.res_discipline_key = md.ins_discipline_key"
+ " AND md.prs_perslid_key = " + user_key
+ " AND md.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND fac_gebruiker_alg_level_write < 9"
+ " AND fac_gebruiker_prs_level_write < 9"
+ " AND rad.res_discipline_key = disc.ins_discipline_key"
+ " AND rad.res_activiteit_key = a.res_activiteit_key"
+ " AND ins_discipline_verwijder IS NULL"
+ " AND ins_discipline_min_level = " + (restype == "R" ? "3" : "1") // 1; Reserveerbaar object; 2; Verbruiksartikel; 3; Ruimte
+ " )"
+ " ORDER BY res_activiteit_volgnr"
+ " , sa.res_srtactiviteit_prefix"
+ " , UPPER(" + lcl.xsql('a.res_activiteit_omschrijving', 'a.res_activiteit_key') +")";
}
else if (!date_from)
{
// act_key bekend
curPage = 2;
var sql_b = "SELECT sa.res_srtactiviteit_metaantal"
+ " , ra.res_activiteit_duur"
+ " , ra.res_activiteit_aantalverplicht"
+ " FROM res_activiteit ra"
+ " , res_srtactiviteit sa"
+ " WHERE ra.res_srtactiviteit_key = sa.res_srtactiviteit_key"
+ " AND ra.res_activiteit_key = " + act_key;
var oRs = Oracle.Execute(sql_b);
var toonBez = oRs("res_srtactiviteit_metaantal").Value;
var res_duur = oRs("res_activiteit_duur").Value;
var res_verp = oRs("res_activiteit_aantalverplicht").Value;
oRs.Close();
// default begin en eindtijd
var res_van = new Date().setFloatHours(S("res_t1") + 24, S("res_h")); // default morgen
var res_tot = res_van.addFloatHours(S("res_dur"), S("res_h"));
// Locaties (waar reserveerbare ruimten zijn binnen de scope van de user)
var params = {};
var filtClause = getFiltClauseLocatie("RES");
var sql_l = "SELECT l.alg_locatie_key"
+ ", " + S("alg_loc_string") + " naam"
+ ", alg_locatie_plaats"
+ " FROM alg_v_aanweziglocatie l"
+ filtClause.from
+ " WHERE 1=1"
+ filtClause.where
+ " ORDER BY 2";
}
else if (ab_mode < 0) // Ruimte Reservering
{
curPage = 3;
// verplicht: date_from: begin van reservering
// loc_key: locatie key
// act_key: activiteit
// optioneel: bez_cnt: aantal bezoekers
// res_tot: einde van reservering (niet meerdaags)
var params = { loc: loc_key,
loc_plaats: getQParam("loc_plaats", ""),
forSelectRoom: true,
res_van: date_from,
res_tot: date_to,
vis: bez_cnt,
activiteit_key: act_key,
with_satisfaction: true,
authparams: user.checkAutorisation("WEB_RESUSE", null, null, true), // urole == "fe" en pessimistisch.
ruimtecat: []
};
}
else if (res_deel_key < 0) // Voorziening Reservering
{
if (disc_key < 0)
{ // Kies Discipline
curPage = 4;
subject = L("lcl_res_objects");
var params = { loc_key : loc_key,
geb_key : bld_key,
ver_key : flr_key,
rui_key : roo_key,
select_fields : " count(*) ",
sdisc : "dis.ins_discipline_key",
autfunction : autfunction,
res_tot : date_to
};
var sql_aantal = " ( " + getScopedResDeelSql(params) + ") aantal ";
var sql_d = "SELECT dis.ins_discipline_key, "
+ " " + lcl.xsqla('dis.ins_discipline_omschrijving','dis.ins_discipline_key')
+ ", " + sql_aantal
+ " FROM res_v_aanwezigdiscipline dis"
+ " WHERE ins_discipline_min_level = 1"
+ " AND dis.ins_discipline_key IN("
+ " SELECT g.ins_discipline_key FROM fac_v_webgebruiker g, fac_functie f "
+ " WHERE g.fac_functie_key = f.fac_functie_key "
+ " AND f.fac_functie_code = " + safe.quoted_sql(autfunction)
+ " AND g.fac_gebruiker_alg_level_write < 9"
+ " AND g.fac_gebruiker_prs_level_write < 9"
+ " AND g.prs_perslid_key = " + user_key
+ " )"
+ " AND dis.ins_discipline_key IN"
+ " (SELECT res_discipline_key" /* DISTINCT */
+ " FROM res_deel r, ins_deel d"
+ " WHERE r.res_deel_verwijder IS NULL"
+ " AND r.res_ins_deel_key = d.ins_deel_key)"
+ " AND EXISTS (SELECT res_activiteit_key"
+ " FROM res_activiteitdiscipline rad"
+ " WHERE rad.res_discipline_key = dis.ins_discipline_key"
+ " AND rad.res_activiteit_key = " + act_key
+ " )";
if (S("vis_parking_key") != -1) sql_d += " AND dis.ins_discipline_key != " + S("vis_parking_key");
if (S("res_fe_discs_only_in_res") != -1 && !fronto && !backo && restype == 'CV')
sql_d += " AND dis.ins_discipline_key NOT IN (" + S("res_fe_discs_only_in_res") + ") ";
sql_d += " ORDER BY ins_discipline_volgnr";
}
else
{ // Kies Object
curPage = 5;
var sql_disc = "SELECT ins_discipline_omschrijving "
+ " FROM res_v_aanwezigdiscipline "
+ " WHERE ins_discipline_key = " + disc_key;
var oRs_disc = Oracle.Execute(sql_disc);
subject = oRs_disc("ins_discipline_omschrijving").Value;
oRs_disc.Close();
// Starting res_deel sql
var select_fields = " r.res_deel_key"
+ ", " + lcl.xsqla('r.res_deel_opmerking', 'r.res_deel_key')
+ ", " + lcl.xsql('r.res_deel_omschrijving', 'r.res_deel_key')
+ " || CASE"
+ " WHEN (r.res_deel_vervaldatum IS NULL OR r.res_deel_vervaldatum > SYSDATE)"
+ " THEN ''"
+ " ELSE " + safe.quoted_sql(L("lcl_inactive_data_suffix"))
+ " END res_deel_omschrijving"
+ ", COALESCE(d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key) ins_alg_ruimte_key"
+ (ab_mode & 1 ?
""
: ", aogg.alg_plaatsaanduiding || ' (' || aogg.alg_onroerendgoed_omschrijving || ')' plaats"
)
+ ", r.res_deel_image"
+ ", res_disc_params_preposttime"
+ ", d.ins_deel_key";
var sql_r = getScopedResDeelSql({ select_fields : select_fields,
extra_from : (ab_mode & 1 ? "" : "alg_v_allonrgoed_gegevens aogg"),
loc_key : loc_key,
geb_key : bld_key,
ver_key : flr_key,
rui_key : roo_key,
sdisc : disc_key,
autfunction : autfunction,
res_tot : date_to
});
if (!(ab_mode & 1)) // Voorziening afhalen
sql_r += " AND d.ins_alg_locatie_key = " + loc_key
+ " AND aogg.alg_onroerendgoed_keys = COALESCE(d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)";
sql_r += " GROUP BY "
+ " r.res_deel_key"
+ ", " + lcl.xsql('r.res_deel_opmerking', 'r.res_deel_key')
+ ", " + lcl.xsql('r.res_deel_omschrijving', 'r.res_deel_key')
+ ", r.res_deel_vervaldatum"
+ ", COALESCE (d.ins_alg_ruimte_key_org, d.ins_alg_ruimte_key)"
+ (ab_mode & 1 ?
""
: ", aogg.alg_plaatsaanduiding || ' (' || aogg.alg_onroerendgoed_omschrijving || ')'"
)
+ ", r.res_deel_image"
+ ", res_disc_params_preposttime"
+ ", d.ins_deel_key"
+ " ORDER BY 6, 3 ";
var dparams = { res_van: date_from,
res_tot: date_to,
disc_key: disc_key };
var existing_res = res.plan_deel_bezet_info(dparams);
var date_time_from = date_from.getTime(); // E<>n keer uitrekenen
var date_time_to = date_to.getTime();
}
}
}
// Ik wil een reservering maken. Ik zie het volgende voor me:
//
// 1. Vraag een DATUM. Een datum is de minimale vereiste om te weten
// 2. Optioneel kunnen er nog waarden opgegeven worden die van invloed zijn op de mogelijkheden. Deze zijn:
// - capaciteit (hoeveel mensen moet er passen)
// - locatie/regio (waar precies/ongeveer)
// - begintijdstip (omstreeks)
//
// > Met die datum + filters vragen we kandidaatruimtes op aan de database (of via API)
//
// 3. De kandidaatruimtes worden getoond met voldoende info om een keuze te maken. Bijvoorbeeld
// - gegroepeerd per locaties (indien meer dan 1/niet opgegeven)
// - dan per ruimte een (1) vermelding rond het genoemde tijdstip
// - met vermelding Beschikbaar van X to Y
// ** indien Share&Meet: optie om het verzoek aan externe FACILITORs te vragen.
// 4. Met een keuze uit deze opties is veel bepaald:
// - ruimte
// - datum (was al)
// - aantal mensen (was al capaciteit, anders obv de default opstelling)
// en kan nog aangefpast worden:
// - tijd (de hele beschikbare periode)
// en is nog nodig en in te vullen:
// - een omschrijving en evt opmerking
// - [later?] flexkenmerken
// 5. Deze gegevens worden gesubmit tot een nieuwe reservering (via service)
%>
<html>
<head>
<% FCLTMHeader.Generate({title: subject });
if (curPage == 2)
{ %>
<script type="text/javascript">
function fn_res_next1()
{
if (!validateForm("res_new_1"))
return false;
var activiteit = <%=act_key%>;
var datum = $("#date_from").val();
var bezoekers = $("#bez_cnt").val();
<% if (!(cvab & 2))
{
%>var cvab = $("#cvab_mode").val() || -1; <%
}
else if (restype == "CV")
{
%>var cvab = <%= cvab %>; <%
} %>
var purl = "?rsv_ruimte_key=-1"
+ "&date_from=" + datum
+ "&date_to=" + $("#date_to").val()
+ (typeof cvab != 'undefined' && (cvab % 1) === 0 ? "&cvab=" + cvab : "")
+ (bezoekers ? "&bez_cnt=" + bezoekers : "")
+ "<%=safe.jsstring(transitParam)%>";
purl = "plaatsselector.asp"
+ "?act_key=" + activiteit
+ "<%=safe.jsstring(transitParamPlaats)%>"
+ "&filtCode="+<%=(restype == "R" ? "\"RES\"" : "(cvab & 1 ? \"RESB\" : \"RESA\")")%>
+ "&autlevel=<%=autlevel%>"
+ "&eindlevel="+<%=(restype == "R" ? "\"2\"" : "(cvab & 1 ? \"5\" : \"2\")")%>
+ "&return_to=<%=safe.url("reservering_new.asp")%>" + encodeURIComponent(purl);
window.location.href = purl;
}
function autosetEindtijd()
{
var opt = $("#act_key").find("option:selected");
// De extraParamValue is opgeslagen als text. De res_activiteit_duur is een float met mogelijk een komma i.p.v. een punt als decemaal scheidingsteken.
var res_duur = parseFloat((String(<%=res_duur%>)).replace(',','.'));
if (res_duur)
{
var startDate = new Date(parseInt($('#date_from').val()));
var endDate = new Date(parseInt($('#date_to').val()));
var estEndDate = startDate.addFloatHours(res_duur, <%=safe.jsfloat(S("res_h"))%>);
if (!isNaN(startDate) && endDate.getTime() != estEndDate.getTime())
{
$("#show_date_to").datepicker('setDate',new Date(estEndDate));
$("#date_to").val(estEndDate.getTime());
$("#time_from_date_to").val(toTimeString(estEndDate)).css("color", "red");
}
}
}
function checkVeldenVerplicht()
{
// Afhankelijk van de geselecteerde waarde voor activiteit
// moet het veld aantalbezoekers verplicht worden gemaakt.
var bez_verplicht = "<%=res_verp%>";
$("#bez_cnt").toggleClass("required", bez_verplicht == 1);
}
function updateCvab(cvab)
{
$("#cvab_mode").val(cvab);
}
</script>
<% } %>
</head>
<body>
<div>
<%
PAGE_START({id: "page-"+curPage});
HEADER({title: subject, back:!qrc, home:!qrc, datatheme: (urole=='fe' ? jQFrontEndTheme : null) });
CONTENT_START();
if (curPage == 0)
{
ROFIELD("fld", "AiAi", "Verkeerde pagina");
}
if (curPage == 1)
{
function fnSubmit(oRs)
{
return "?act_key=" + oRs("res_activiteit_key").Value + safe.jsstring(transitParam);
}
var rst = new ResultsetTable({ sql: sql_a
, keyColumn: "res_activiteit_key"
, linkColumn: fnSubmit
, headerColumn: "res_activiteit_omschrijving"
, ID: "acttable"
, showAll: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
}
if (curPage == 2)
{
%>
<form name="res_new_1" id="res_new_1">
<%
FCLTcalendar("date_from",
{ label : L("lcl_from"),
datum: res_van,
maxPast: 0,
maxFuture: (S("res_fe_reservering_limiet") > 0? S("res_fe_reservering_limiet") : S("res_reservering_limiet")),
timeField: true,
timeStep: S("res_h") * 60,
startTime: S("res_t1"),
endTime: S("res_t2"),
res_dur: S("res_dur"),
required: true,
volgnr: 1,
mobile: true,
onChange : "autosetEindtijd()"
}
);
FCLTcalendar("date_to",
{ label : L("lcl_to"),
datum: res_tot,
maxFuture: (S("res_fe_reservering_limiet") > 0? S("res_fe_reservering_limiet") : S("res_reservering_limiet")),
timeField: true,
timeStep: S("res_h") * 60,
startTime: S("res_t1"),
endTime: S("res_t2"),
hidden: restype == "R", // Meerdaags ruimte ondersteunen we nog niet echt
required: true,
volgnr: 2,
mobile: true
}
);
if (toonBez)
RWFIELD("bez_cnt", L("lcl_visitors") , bez_cnt, {datatype: "number", required: false});
if (restype == "CV")
{
if (cvab & 2) // dan vast
{ %>
<label><%=(cvab & 1)? L("lcl_res_bezorgen") : L("lcl_res_afhalen")%></label>
<% }
else // toggle bezorg/afhaal
{
CONTROLGROUP_START({ horizontal: true }); %>
<input type="radio" name="ab_mode" id="cvab-a" value="0" onChange="updateCvab(0)" <%=cvab & 1? "" : "checked"%>>
<label for="cvab-a"><%=L("lcl_res_afhalen")%></label>
<input type="radio" name="ab_mode" id="cvab-b" value="1" onChange="updateCvab(1)" <%=cvab & 1? "checked" : ""%>>
<label for="cvab-b"><%=L("lcl_res_bezorgen")%></label>
<% CONTROLGROUP_END();
} %>
<input type="hidden" id="cvab_mode" name="cvab_mode" value="<%=cvab%>">
<% }
CONTROLGROUP_START();
BUTTON(L("lcl_next"), {click: "fn_res_next1()", dataicon: "arrow-r", dataajax: "false"});
CONTROLGROUP_END();
%>
</form>
<%}
if (curPage == 3) // Lijst met geschikte ruimtes
{
function fnDataFilter(oRs)
{
return oRs.Fields("will_fit").Value;
}
function fncolIcon(oRs)
{
var icon = "fa-home";
if (oRs.Fields("image_url").Value != null)
{
icon = oRs.Fields("image_url").Value;
//if (!icon.match(/^http/))
// icon = S("res_image_path") + icon;
}
return icon;
}
function fncol1Link(oRs, processParams)
{
if (processParams && processParams.disc_key)
{
var deepurl = oRs.Fields("deepurl").Value;
deepurl += "&res_ruimte_key=" + oRs.Fields("res_ruimte_key").Value
+ "&bez_omschr=" + "Vanuit+extern+systeem" // TODO
//+ "&flex_defaults=" + escape(extern_flex);
var orghome = HTTP.urlzelf() + "/appl/pda/facilitor.asp";
var nurl = "../res/res_goto_extern.asp?res_disc_key=" + processParams.disc_key
+ "&deepurl=" + escape(deepurl + transitParamExtern + "&orghome=" + orghome); // extern kan niets met onze act_key
}
else
{
var nurl = "reservering.asp?rsv_ruimte_key=-1"
+ "&res_ruimte_key=" + oRs.Fields("res_ruimte_key").Value
+ transitParam;
}
return nurl;
};
function fnDetail(oRs)
{
// return toTimeString(dataregel.begintijd);
}
function fnHeader(oRs)
{
var txt = safe.html(oRs.Fields("res_ruimte_nr").Value);
if (oRs.Fields("satisfaction").Value)
{
var likesymbol = rater(oRs.Fields("satisfaction").Value, { readonly: true } );
txt += "<br>" + likesymbol;
}
return txt;
}
function fnSubheader(oRs)
{
// Toon extra gegevens over deze ruimte.
var bMin = oRs.Fields("bMin").Value;
var bMax = oRs.Fields("bMax").Value;
var capc_txt = String(bMin) + ((bMin!=bMax)?"-"+bMax:"") + " pers.";
if (oRs.Fields("prijs").Value)
capc_txt += ", " + S("currency_pref") + safe.curr(oRs.Fields("prijs").Value)
var txt = "<div class='listbodytext'>" + safe.html(capc_txt) + "</div>";
txt += "<div class='listbodytext'>" + safe.html(oRs.Fields("omschrijving").Value) + "</div>";
return txt;
/* // Voorlopig nog niet de beschikbare tijden laten zien.
var vrij = "";
var res_arr = dataregel.existing_res;
if (res_arr != null)
{
res_arr.sort(dynamicSort({col: "res_van", desc: false}));
var t1 = new Date(dataregel.begintijd);
var t2 = t1;
for (var ci=0; res_arr != null && ci < res_arr.length; ci++)
{
t2 = res_arr[ci].res_van;
if (ci==0)
{
t1 = new Date(t2.getTime());
t1.setHours(dataregel.begintijd,0,0,0);
}
if (t1 < t2)
{
vrij += toTimeString(t1) + " - " + toTimeString(t2) + "<br>";
t1 = res_arr[ci].res_tot;
}
}
t2 = new Date(t1.getTime());
t2.setHours(dataregel.eindtijd,0,0,0);
if (t1 < t2)
{
vrij += toTimeString(t1) + " - " + toTimeString(t2);
}
}
else
{
vrij = toTimeString(dataregel.begintijd) + " - " + toTimeString(dataregel.eindtijd);
}
return vrij;
*/
}
function dynamicSort(params)
{
params = params || {};
var sortOrder = (params.desc ? -1 : 1);
return function (a,b)
{
var result = (a[params.col] < b[params.col]) ? -1 : (a[params.col] > b[params.col]) ? 1 : 0;
return result * sortOrder;
}
}
var plan_rooms_info = res.plan_rooms_info(params);
var plan_bezet_info = res.plan_bezet_info(params);
set_will_fit(plan_rooms_info, plan_bezet_info, params);
var rst = new ResultsetTable({ dataset: plan_rooms_info
, fnDataFilter: fnDataFilter
, keyColumn: "res_ruimte_key"
, iconColumn: fncolIcon
, linkColumn: fncol1Link
, headerColumn: fnHeader
//, detailColumn: fnDetail
, subheaderColumn: fnSubheader
, dividerColumn: (loc_key == -1 ? "locatie" : "")
, ID: "restable"
, showAll: true
, noSearch: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
// En nu de externen
var autfunction = "WEB_RESUSE";
// Overzicht externe ruimtes
var sql = res.getremotes_sql(autfunction);
var oRs = Oracle.Execute(sql);
while( !oRs.eof )
{
var disc_key = oRs.Fields("ins_discipline_key").Value;
%>
<div class="resprodextern">
<%= L("lcl_res_extern_prefix") + Server.HTMLencode(oRs.Fields("ins_discipline_omschrijving").Value)%>
</div>
<%
var url = oRs.Fields("res_disc_params_remoteurl").Value + "&API=RESINFO";
var resparams = {
res_van: params.res_van,
res_tot: params.res_tot,
reg: -1,
dist: -1,
loc: -1,
bld: -1,
ver: -1,
rui: -1,
ruimtecat: []
};
resparams.alg_locatie_plaats = params.loc_plaats;// Aan de andere kant kennen we onze key niet, daarom via plaats.
resparams.request = "plan_rooms_info";
resparams.mobile = true;
/*global*/ plan_rooms_info = HTTP.getJSON(url, { data: resparams }).plan_rooms_info;
if (plan_rooms_info.length)
{
resparams.request = "plan_bezet_info";
/*global*/ plan_bezet_info = HTTP.getJSON(url, { data: resparams }).plan_bezet_info;
}
else
plan_bezet_info = {};
set_will_fit(plan_rooms_info, plan_bezet_info, resparams)
__Log("plan_rooms_info:")
__Log(plan_rooms_info)
rst.dataset = plan_rooms_info;
rst.sql = null;
rst.ID = "prodtable2";
var histogram = rst.processResultset({ disc_key: disc_key });
var allEmpty = allEmpty && (histogram == -1);
oRs.MoveNext();
}
oRs.close();
}
if (curPage == 4)
{
function fnDiscLink(oRs)
{
var disc_key = oRs("ins_discipline_key").Value;
return "?disc=" + disc_key + safe.jsstring(transitParam);
}
function fnDiscFilter(oRs)
{
return oRs("aantal").Value > 0;
}
function fnDiscHeader(oRs)
{
return oRs("ins_discipline_omschrijving").Value + " (" + oRs("aantal").Value + ")";
}
var rst = new ResultsetTable({ sql: sql_d
, keyColumn: "ins_discipline_key"
, fnDataFilter: fnDiscFilter
, linkColumn: fnDiscLink
, headerColumn: fnDiscHeader
, ID: "disctable"
, showAll: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
}
if (curPage == 5)
{
function fnResCV(oRs)
{
res_deel_key = oRs("res_deel_key").Value;
var alg_ruimte_key = oRs("ins_alg_ruimte_key").Value;
return "reservering.asp?res_deel=" + res_deel_key
+ (ab_mode & 1 ? "" : "&roo_key=" + alg_ruimte_key)
+ transitParam;
}
function fnObjFilter(oRs)
{
var ins_deel_key = oRs("ins_deel_key").Value;
var prepost_time = oRs("res_disc_params_preposttime").Value||0;
var ar = existing_res[ins_deel_key]; // Bestaande reserveringen op dit deel
for (var ci = 0; ar && ci < ar.length; ci++)
{
if (date_time_from - prepost_time*60*60*1000 < ar[ci].res_tot.getTime()
&& date_time_to + prepost_time*60*60*1000 > ar[ci].res_van.getTime())
return false; // Overlap!
}
return true;
}
function fnResDeelIcon(oRs)
{
var icon = "";
if (oRs.Fields("res_deel_image").Value != null)
{
icon = oRs.Fields("res_deel_image").Value;
if (!icon.match(/^http/))
icon = safe.htmlattr(S("res_image_path") + "deel/" + icon);
}
return icon;
}
function fncolSubHeader(oRs)
{
var txt = "";
if (!(ab_mode & 1)) // afhalen
{
txt = "<div class='listbodytext'>" + L("lcl_res_afhalen_fixed") + ":</div>"
+ "<div class='listbodytext'>" + safe.html(oRs("plaats").Value) + "</div>";
}
return txt;
}
var rst = new ResultsetTable({ sql: sql_r
, keyColumn: "res_deel_key"
, fnDataFilter: fnObjFilter
, linkColumn: fnResCV
, iconColumn: fnResDeelIcon
, headerColumn: "res_deel_omschrijving"
// ? , extraFilterColumn: "mld_stdmelding_hint"
, subheaderColumn: fncolSubHeader
, ID: "restable"
, showAll: true
, emptySetString: L("lcl_empty")
});
var cnt = rst.processResultset();
}
CONTENT_END();
FOOTER();
PAGE_END();
%>
</div>
</body>
</html>