816 lines
34 KiB
Plaintext
816 lines
34 KiB
Plaintext
<%@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>
|