1060 lines
46 KiB
C++
1060 lines
46 KiB
C++
<% /*
|
||
$Revision$
|
||
$Id$
|
||
|
||
File: res_plan_obj_v2.inc
|
||
Description: Het echte genereren van het planbordje voor objecten
|
||
via functie make_plan_obj() die een grid oplevert
|
||
Parameters: params: hour_px
|
||
reg_key
|
||
dist_key
|
||
loc_key
|
||
geb_key
|
||
ver_key
|
||
rui_key
|
||
rsv_ruimte_key: als meegegeven dan 'edit-mode'
|
||
res_deel_key: default keuze voor nieuwe reservering
|
||
|
||
Context: Indirect ajax in res_load_plan_obj.asp
|
||
of rechtstreeks in res_search_plan_obj_v2.asp
|
||
Notes: Zie res_load_cat.asp voor de catering en res_plan_room_v2.inc voor ruimtes
|
||
|
||
*/
|
||
|
||
FCLTHeader.Requires({ js: [rooturl+"/appl/res/res_plan.js", "date.js"] });
|
||
|
||
function empty_grid_line(row, deel, nr_days)
|
||
{
|
||
var index;
|
||
var tb_index;
|
||
var html = '';
|
||
|
||
for (tb_index = 0; tb_index < tijdbalken_kop.tijdbalk_arr().length; tb_index++)
|
||
{
|
||
if (nr_days < S('res_plantable_condensed_from')) // >= S('res_plantable_condensed_from') is compact view
|
||
{
|
||
for (index = tijdbalken_kop.tijdbalk_arr()[tb_index].start_column() + 1; index <= tijdbalken_kop.tijdbalk_arr()[tb_index].end_column(); index++)
|
||
{
|
||
// column 3 is empty
|
||
if (index != 3)
|
||
{
|
||
// first row is location
|
||
html += '<div class="rc hidden" data-row="' + row + '" style="grid-area: ' + row + '/' + index + ';"></div>';
|
||
}
|
||
}
|
||
html += '<div class="hidden" style="grid-area: ' + row + '/' + index + ';"' + ' data-row="' + row + '"></div>';
|
||
}
|
||
else
|
||
{
|
||
html += '<div class="rc-compact hidden" data-row="' + row + '" style="grid-area: ' + row + '/' + Number(tijdbalken_kop.tijdbalk_arr()[tb_index].start_column() + 1) + '/' + row + '/' + tijdbalken_kop.tijdbalk_arr()[tb_index].end_column() + ';"></div>';
|
||
}
|
||
}
|
||
return html;
|
||
}
|
||
|
||
function res_load_title_obj(ar, pparams)
|
||
{
|
||
var rsv_deel_key = ar.rsv_deel_key
|
||
var title_obj = {};
|
||
res.res_set_dialect(ar.rsv_ruimte_key);
|
||
|
||
// reserveringsperiode
|
||
if (ar.res_van.getFullYear() == ar.res_tot.getFullYear() &&
|
||
ar.res_van.getMonth() == ar.res_tot.getMonth() &&
|
||
ar.res_van.getDate() == ar.res_tot.getDate()
|
||
)
|
||
{
|
||
var speriod = toTimeString(ar.res_van) + "-" + toTimeString(ar.res_tot);
|
||
}
|
||
else
|
||
{
|
||
var speriod = toDateTimeString(ar.res_van)+ "-" + toDateTimeString(ar.res_tot);
|
||
}
|
||
|
||
// plaats reservering
|
||
var rsv_ruimte_key = ar.rsv_ruimte_key;
|
||
var sruimte_icon = "";
|
||
var sruimte_srt = "";
|
||
var sruimte_nr = "";
|
||
if (ar.ruimte_opstel_key)
|
||
{
|
||
sql = "SELECT "+lcl.xsqla('rr.res_ruimte_nr', 'rr.res_ruimte_key')
|
||
+ " FROM res_ruimte rr"
|
||
+ " , res_ruimte_opstelling ro"
|
||
+ " WHERE res_ruimte_opstel_key = " + ar.ruimte_opstel_key
|
||
+ " AND rr.res_ruimte_key = ro.res_ruimte_key"
|
||
var oRs2 = Oracle.Execute(sql);
|
||
sruimte_icon = I("fa-map-marker") + " ";
|
||
sruimte_nr = oRs2("res_ruimte_nr").Value;
|
||
oRs2.Close();
|
||
}
|
||
else if (ar.alg_ruimte_key)
|
||
{
|
||
sql = "SELECT alg_plaatsaanduiding"
|
||
+ " , alg_plaatsomschrijving"
|
||
+ " FROM alg_v_onroerendgoed_gegevens"
|
||
+ " WHERE alg_ruimte_key = " + ar.alg_ruimte_key
|
||
var oRs2 = Oracle.Execute(sql);
|
||
sruimte_icon = I("fa-map-marker-alt") + " ";
|
||
sruimte_srt = oRs2("alg_plaatsomschrijving").Value;
|
||
sruimte_nr = oRs2("alg_plaatsaanduiding").Value;
|
||
oRs2.Close();
|
||
}
|
||
else // opdracht
|
||
{
|
||
sql = "SELECT COALESCE (o.mld_opdr_id, o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr) mld_opdr_id" // goedkoop zonder de prefix
|
||
+ " , mto.mld_typeopdr_image"
|
||
+ " FROM mld_opdr o"
|
||
+ " , mld_typeopdr mto"
|
||
+ " WHERE o.mld_typeopdr_key = mto.mld_typeopdr_key"
|
||
+ " AND o.mld_opdr_key = " + ar.mld_opdr_key
|
||
var oRs2 = Oracle.Execute(sql);
|
||
//opdrachticonregel is: this_opdr.mld_opdr.typeopdr_image ? this_opdr.mld_opdr.typeopdr_image : "fa-file-signature";
|
||
sruimte_icon = (oRs2("mld_typeopdr_image").Value ? I(oRs2("mld_typeopdr_image").Value) : I("fa-file-signature")) + " ";
|
||
sruimte_nr = oRs2("mld_opdr_id").Value;
|
||
oRs2.Close();
|
||
}
|
||
|
||
var sflag = (ar.res_flag > 0 ? ar.res_flag : "");
|
||
var sreservering = L("lcl_reservation") + " " + ar.res_key + "/" + ar.res_volgnr;
|
||
var sstatus = (ar.status_fo_key == 3 ? L("lcl_blokkade") : ar.activiteit);
|
||
var scontact = ar.contact + (ar.contact != ar.host ? " (" + ar.host + ")" : "");
|
||
var sbezoekers = (ar.ruimte_bezoekers > 0 ? ar.ruimte_bezoekers + " " + L("lcl_res_visitors") : "");
|
||
|
||
|
||
var showTooltip = planbordTooltipShowing(ar.rsv_ruimte_key);
|
||
switch (showTooltip)
|
||
{
|
||
case 0: // geen geheim!
|
||
title_obj.info = [ { t: 1, tclass: "ric", tval: sflag }
|
||
, { t: 1, tclass: "rdk", tval: sstatus }
|
||
, { t: 2, tclass: "", tval: sreservering }
|
||
, { t: 3, tclass: "time-from-to", tval: speriod }
|
||
, { t: 3, tclass: "rdt", tval: ar.ruimte_omschrijving }
|
||
, { t: 3, tclass: "rdn", tval: scontact }
|
||
, { t: 1, tclass: "rdp", tval: sruimte_nr + " " + sruimte_srt, ticon: sruimte_icon }
|
||
, { t: 2, tclass: "", tval: L("lcl_room_n") + ": " + sruimte_nr }
|
||
, { t: 2, tclass: "", tval: sbezoekers }
|
||
];
|
||
break;
|
||
case 1: // details geheim voor FE!
|
||
title_obj.info = [ { t: 1, tclass: "ric", tval: sflag }
|
||
, { t: 3, tclass: "time-from-to", tval: L("lcl_reservation") + " " + speriod }
|
||
];
|
||
break;
|
||
case 2: // geheim voor tooltip FE!
|
||
title_obj.info = [ { t: 1, tclass: "ric", tval: sflag }
|
||
, { t: 1, tclass: "rdk", tval: sstatus }
|
||
, { t: 2, tclass: "", tval: sreservering }
|
||
, { t: 3, tclass: "time-from-to", tval: speriod }
|
||
, { t: 3, tclass: "rdn", tval: scontact }
|
||
, { t: 1, tclass: "rdp", tval: sruimte_nr + " " + sruimte_srt, ticon: sruimte_icon }
|
||
, { t: 2, tclass: "", tval: L("lcl_room_n") + ": " + sruimte_nr }
|
||
, { t: 2, tclass: "", tval: sbezoekers }
|
||
];
|
||
break;
|
||
}
|
||
|
||
// Maak de inline en tooltip.
|
||
var safe_obj_inline = "";
|
||
var safe_obj_tooltip = "";
|
||
if (title_obj && title_obj.info)
|
||
{
|
||
for (var i=0; i<title_obj.info.length; i++)
|
||
{
|
||
if (title_obj.info[i].tval != "")
|
||
{
|
||
if ((title_obj.info[i].t & 1) == 1)
|
||
{
|
||
if (title_obj.info[i].tclass == "ric")
|
||
{
|
||
var flagnr = title_obj.info[i].tval;
|
||
safe_obj_inline += "<div class='ric'>"
|
||
+ "<span title='" + safe.htmlattr(L("lcl_res_flag" + flagnr)) +"'"
|
||
+ " class='respl resflag" + flagnr + " ress'>"
|
||
+ "<i class='fas fa-fw fa-square'></i>"
|
||
+ "</span>"
|
||
+ "</div>"
|
||
}
|
||
else
|
||
{
|
||
safe_obj_inline += "<span class='" + title_obj.info[i].tclass + "'>"
|
||
+ (title_obj.info[i].ticon ? title_obj.info[i].ticon: "")
|
||
+ safe.html(title_obj.info[i].tval)
|
||
+ "</span>"
|
||
}
|
||
}
|
||
|
||
if ((title_obj.info[i].t & 2) == 2)
|
||
{
|
||
safe_obj_tooltip += (safe_obj_tooltip != "" ? "\n" : "") + safe.htmlattr(title_obj.info[i].tval);
|
||
}
|
||
}
|
||
}
|
||
safe_obj_inline = "<div class='rd'>" + safe_obj_inline + "</div>"
|
||
safe_obj_tooltip = " title='" + safe_obj_tooltip + "'";
|
||
}
|
||
|
||
var hasTooltip = select_and_planbord_options(pparams, 2);
|
||
var noInline = select_and_planbord_options(pparams, 8);
|
||
return { safe_inline: (noInline ? "" : safe_obj_inline)
|
||
, safe_tooltip: (hasTooltip ? safe_obj_tooltip : "")
|
||
};
|
||
}
|
||
|
||
function res_load_title_bez(ar, pparams)
|
||
{
|
||
var bez_key = ar.bez_key;
|
||
var title_bez = {};
|
||
var sql = "SELECT b.bez_afspraak_naam"
|
||
+ " , b.bez_afspraak_bedrijf"
|
||
+ " , p.prs_perslid_naam_friendly naam"
|
||
+ " , COALESCE (a.bez_afspraak_telefoonnr, pp.prs_perslid_mobiel,pp.prs_perslid_telefoonnr) bez_afspraak_telefoonnr"
|
||
+ " , a.bez_afspraak_key"
|
||
+ " , a.res_rsv_ruimte_key"
|
||
+ " , a.bez_afspraak_datum"
|
||
+ " , a.bez_afspraak_eind"
|
||
+ " FROM prs_v_perslid_fullnames_all p"
|
||
+ " , bez_bezoekers b"
|
||
+ " , prs_perslid pp"
|
||
+ " , bez_afspraak a"
|
||
+ " WHERE p.prs_perslid_key = a.bez_afspraak_host_key"
|
||
+ " AND pp.prs_perslid_key = a.bez_afspraak_host_key"
|
||
+ " AND b.bez_afspraak_key = a.bez_afspraak_key"
|
||
+ " AND b.bez_bezoekers_key = " + bez_key;
|
||
|
||
var oRs = Oracle.Execute(sql);
|
||
if (!oRs.Eof)
|
||
{
|
||
var speriod = toTimeString(ar.res_van) + "-" + toTimeString(ar.res_tot);
|
||
var afspraak = oRs("bez_afspraak_naam").Value;
|
||
var bedrijf = oRs("bez_afspraak_bedrijf").Value;
|
||
var naam = oRs("naam").Value;
|
||
var telefoon = oRs("bez_afspraak_telefoonnr").Value;
|
||
|
||
var showTooltip = planbordTooltipShowing(ar.rsv_ruimte_key);
|
||
switch (showTooltip)
|
||
{
|
||
case 0: // geen geheim!
|
||
title_bez.info = [ { tclass: "rdk", tval: afspraak + (bedrijf ? "(" + bedrijf + ")" : "") } ];
|
||
if (naam || telefoon)
|
||
{
|
||
title_bez.info.push( {tclass: "rdn", tval: (naam ? naam + " " : "") + (telefoon ? telefoon : "") } );
|
||
}
|
||
break;
|
||
case 1: // details geheim voor FE!
|
||
case 2: // geheim voor tooltip FE!
|
||
title_bez.info = [ { tclass: "rdk", tval: L("lcl_vis_appointment") }
|
||
, { tclass: "time-from-to", tval: speriod }
|
||
];
|
||
break;
|
||
}
|
||
}
|
||
oRs.Close();
|
||
|
||
// Maak de inline en tooltip.
|
||
var safe_bez_inline = "";
|
||
var safe_bez_tooltip = "";
|
||
if (title_bez && title_bez.info)
|
||
{
|
||
for (var i=0; i<title_bez.info.length; i++)
|
||
{
|
||
safe_bez_inline += "<span class='" + title_bez.info[i].tclass + "'>" + safe.html(title_bez.info[i].tval) + "</span>"
|
||
safe_bez_tooltip += (safe_bez_tooltip != "" ? "\n" : "") + safe.htmlattr(title_bez.info[i].tval);
|
||
}
|
||
safe_bez_inline = "<div class='rd'>" + safe_bez_inline + "</div>"
|
||
safe_bez_tooltip = " title='" + safe_bez_tooltip + "'";
|
||
}
|
||
var hasTooltip = select_and_planbord_options(pparams, 2);
|
||
var noInline = select_and_planbord_options(pparams, 8);
|
||
return { safe_inline: (noInline ? "" : safe_bez_inline)
|
||
, safe_tooltip: (hasTooltip ? safe_bez_tooltip : "")
|
||
};
|
||
}
|
||
|
||
function select_and_planbord_options(par, opt)
|
||
{ // Voor reserveren/bekijken objecten op planbord.
|
||
var forSelectObj = par.forSelectobj || false;
|
||
var res = ( (!forSelectObj && (S("res_planbord_options") & opt) == opt)
|
||
|| (forSelectObj && (S("res_forselect_options") & opt) == opt)
|
||
);
|
||
return res;
|
||
}
|
||
|
||
|
||
function make_plan_cell(params, theClass, h_start, h_end, tijdbalk, row, titleinfo, theClick, theMouse, theOther, prepost_time)
|
||
{
|
||
var div;
|
||
var overleft="";
|
||
var overright="";
|
||
if (h_start<S("res_t1"))
|
||
{
|
||
h_start = S("res_t1")-S("res_h");
|
||
if (dagen > 0)
|
||
overleft = " continueleft";
|
||
else
|
||
overleft = " overflowleft";
|
||
}
|
||
|
||
if (h_end>S("res_t2"))
|
||
{
|
||
h_end = S("res_t2")+S("res_h");
|
||
if (dagen < params.nr_days-1)
|
||
overright = " continueright";
|
||
else
|
||
overright = " overflowright";
|
||
}
|
||
var px_start = Math.round((h_start-S("res_t1"))*params.hour_px + 1); // 1 px speling
|
||
var px_end = Math.round((h_end-S("res_t1"))*params.hour_px);
|
||
var startplanblok = h_start;
|
||
var endplanblok = h_end;
|
||
|
||
var px_width = px_end - px_start;
|
||
|
||
var theStyleLeft = "";
|
||
var theStyleRight = "";
|
||
|
||
var preclean = 0;
|
||
var postclean = 0;
|
||
var gridcolumns = tijdbalk.gridtimecolumns(startplanblok, endplanblok);
|
||
var unitLength = tijdbalk.unit_length();
|
||
|
||
// Perhaps cleaning time, (TODO delen? alleen optie en definitief)
|
||
if (prepost_time > 0) // && (ar[ci].fo_status == 1 || ar[ci].fo_status == 2))
|
||
{
|
||
theClass += " res_cleaning";
|
||
// maximaal kwartier 'doorschieten' links/rechts
|
||
preclean = Math.min(prepost_time, h_start - S("res_t1") + 0.25);
|
||
postclean = Math.min(prepost_time, S("res_t2") - h_end + 0.25);
|
||
|
||
if ( Math.round(hour_px * postclean - 1) > 0 )
|
||
{
|
||
theClass += " poc";
|
||
// widen reservation with whole postclean time units
|
||
gridcolumns.indexend += Math.ceil(postclean / unitLength);
|
||
gridcolumns.indexdiff += Math.ceil(postclean / unitLength);
|
||
theStyleRight = "border-right-width:"+Math.round(hour_px * postclean - 1)+"px;"
|
||
}
|
||
if ( preclean > 0 )
|
||
{
|
||
var precleanpx = Math.round(hour_px * preclean - 1);
|
||
if (precleanpx > 0)
|
||
theClass += " prc";
|
||
// widen reservation with whole preclean time units
|
||
gridcolumns.indexstart -= Math.ceil(preclean / unitLength);
|
||
gridcolumns.indexdiff += Math.ceil(preclean / unitLength);
|
||
theStyleLeft = "border-left-width:"+precleanpx+"px;"
|
||
if (px_start >= 0)
|
||
{
|
||
px_start -= precleanpx; // border is 1px minder, maar wel altijd een kwartier
|
||
px_width += 1; // border is 1px minder
|
||
}
|
||
}
|
||
|
||
if ( postclean > 0 && overright == "")
|
||
theStyleRight = "border-right-width:"+Math.round(params.hour_px * postclean - 1)+"px;"
|
||
if ( preclean > 0 && overleft == "")
|
||
{
|
||
var precleanpx = Math.round(params.hour_px * preclean - 1);
|
||
theStyleLeft = "border-left-width:"+precleanpx+"px;"
|
||
if (px_start >= 0)
|
||
{
|
||
px_start -= precleanpx; // border is 1px minder, maar wel altijd een kwartier
|
||
px_width += 1; // border is 1px minder
|
||
}
|
||
}
|
||
}
|
||
|
||
var postcleanAttr = (postclean ? " poc=" + postclean : "");
|
||
var rowAttr = ' data-row="' + row + '" data-disc="' + disc_key + '"';
|
||
var precleanAttr = (preclean ? " prc=" + preclean : "");
|
||
var styleAttr = ' style="' + tijdbalk.gridtimeposition(startplanblok, endplanblok, gridcolumns) + ' grid-row: ' + row + ' ; overflow:hidden;"';
|
||
var div_attr = (theMouse||"")
|
||
+ (theClick||"")
|
||
+ (theOther||"")
|
||
+ postcleanAttr
|
||
+ rowAttr
|
||
+ precleanAttr
|
||
+ styleAttr
|
||
+ titleinfo.safe_tooltip;
|
||
var div_cont = titleinfo.safe_inline;
|
||
|
||
if (overleft!=""&&overright!="")
|
||
{ // Maak twee divjes, eentje links en eentje rechts.
|
||
// HTML kan maar <20><>n background image tegelijk aan
|
||
div = "<div class='" + theClass+overleft + " hidden'" + div_attr + ">" + div_cont + " </div>";
|
||
div += "<div class='" + theClass+overright + " hidden'" + div_attr + ">" + div_cont + " </div>";
|
||
}
|
||
else
|
||
{
|
||
div = "<div class='" + theClass+overleft+overright + " hidden'" + div_attr + ">" + div_cont + " </div>";
|
||
}
|
||
return { div: div, overleft: overleft, overright: overright };
|
||
}
|
||
|
||
|
||
function make_plan_obj(disc_key, res_van, res_tot, params)
|
||
{
|
||
if (typeof width_px == "undefined")
|
||
{
|
||
width_px = getQParamInt("width_px", 1024);
|
||
}
|
||
var hour_px = res.hour_px(width_px - 400, nr_days);
|
||
|
||
params = params || {};
|
||
params.hour_px = params.hour_px || 48;
|
||
params.rsv_ruimte_key = params.rsv_ruimte_key || -1;
|
||
var res_h_px = params.hour_px * S("res_h");
|
||
|
||
if (params.srtact)
|
||
lcl.set_dialect(params.srtact, "RES_SRTACTIVITEIT_KEY");
|
||
|
||
var authparams = user.checkAutorisation(autfunction, true, disc_key);
|
||
var canRead = authparams && authparams.PRSreadlevel < 9 && authparams.ALGreadlevel < 9;
|
||
var canWrite = authparams && authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9; // Ondersteun (FE) gebruikers met *alleen* FO-leesrechten: kijken planbord
|
||
|
||
if (params.rsv_ruimte_key>0) // single-reservering mode
|
||
{
|
||
sql = "SELECT ru.res_ruimte_begintijd"
|
||
+ ", ru.res_ruimte_eindtijd"
|
||
+ ", rr.alg_ruimte_key"
|
||
+ ", ro.res_ruimte_key"
|
||
+ " FROM res_v_aanwezigruimte ru"
|
||
+ ", res_rsv_ruimte rr"
|
||
+ ", res_ruimte_opstelling ro"
|
||
+ " WHERE ru.res_ruimte_key = ro.res_ruimte_key"
|
||
+ " AND ro.res_ruimte_opstel_key = rr.res_ruimte_opstel_key"
|
||
+ " AND rr.res_rsv_ruimte_key = " + params.rsv_ruimte_key;
|
||
oRs = Oracle.Execute(sql);
|
||
if (!oRs.eof)
|
||
{
|
||
var alg_ruimte_key = oRs("alg_ruimte_key").value; // de eerste
|
||
var res_ruimte_key = oRs("res_ruimte_key").value;
|
||
// Als de ruimte maar beperkt open is gaan we rekenen met een krappere S("res_t1")/res_t2
|
||
var res_ruimte_begintijd = oRs("res_ruimte_begintijd").Value||S("res_t1");
|
||
var res_ruimte_eindtijd = oRs("res_ruimte_eindtijd").Value||S("res_t2");
|
||
if (res_ruimte_begintijd > res_ruimte_eindtijd) res_ruimte_begintijd = res_ruimte_eindtijd;
|
||
if (res_ruimte_begintijd > S("res_t1")) settings.overrule_setting("res_t1", res_ruimte_begintijd);
|
||
if (res_ruimte_eindtijd > S("res_t2")) settings.overrule_setting("res_t2", res_ruimte_eindtijd);
|
||
}
|
||
else // CV reserverering, altijd S("res_t1")-res_t2
|
||
{
|
||
res_ruimte_key = -1;
|
||
sql = "SELECT alg_ruimte_key,"
|
||
+ " mld_opdr_key"
|
||
+ " FROM res_rsv_ruimte"
|
||
+ " WHERE res_rsv_ruimte_key = " + params.rsv_ruimte_key;
|
||
var oRs2 = Oracle.Execute(sql);
|
||
var alg_ruimte_key = oRs2("alg_ruimte_key").value;
|
||
var mld_opdr_key = oRs2("mld_opdr_key").value;
|
||
oRs2.Close();
|
||
}
|
||
oRs.Close();
|
||
}
|
||
|
||
var sql;
|
||
|
||
var dparams = { res_van: res_van,
|
||
res_tot: res_tot,
|
||
disc_key: disc_key
|
||
}
|
||
var existing_res = res.plan_deel_bezet_info(dparams);
|
||
|
||
var nr_days = Math.round(1+(res_tot.midnight() - res_van.midnight())/24/60/60/1000);
|
||
params.nr_days = nr_days;
|
||
|
||
%>
|
||
<div id='timetip'></div>
|
||
<div id="table_dis<%=disc_key%>"
|
||
class="compressed tab_obj_sched planbord planbord<%=params.hour_px%> <%=nr_days>1?" multiday":""%>"
|
||
<% if (params.rsv_ruimte_key<0) { // Click om een nieuwe deelreservering aan te maken
|
||
var dt = res_van.getTime();
|
||
%>
|
||
<% } %>
|
||
>
|
||
<div class="grid" data-disc="<%=disc_key%>" data-writable="<%=canWrite ? "true" : "false"%>">
|
||
<div class="header deel">
|
||
<div id="<%=disc_key%>-header" cellspacing="0" class="planbordgrid deel compressed planbord multiday">
|
||
<%
|
||
if ("suppressHeader" in params == false || params.suppressHeader == false) {
|
||
tijdbalken_kop = new Tijdbalken(res_van, nr_days, S("res_t1"), S("res_t2"), params.fnStep);
|
||
Response.Write(tijdbalken_kop.render());
|
||
}
|
||
%>
|
||
</div>
|
||
</div>
|
||
<div class="body">
|
||
<div id="<%=disc_key%>-body" cellspacing="0" class="planbordgrid deel compressed planbord multiday">
|
||
<%
|
||
|
||
// Nogal suf concept zo: er is een deel (d) en een perslid (p) mogelijkheid
|
||
// dus wordt er hier nogal situationeel geknutseld. Eerst maar eens laten werken
|
||
// wordt alleen hier (en in het oude unsupported planbord) gebruikt) dus toe maar even.
|
||
// Is nog wel erg traaag.
|
||
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"
|
||
+ ", r.res_deel_prijs"
|
||
+ ", r.res_deel_image"
|
||
+ ", " + lcl.xsqla('r.res_deel_eenheid', 'r.res_deel_key')
|
||
+ ", res_disc_params_preposttime"
|
||
+ ", 0 isbulk"
|
||
+ ", 0 total"
|
||
+ ", 0 selected";
|
||
|
||
var select_fields_p = select_fields + ", to_number(null) ins_alg_ruimte_key_org"
|
||
+ ", to_number(null) ins_discipline_key"
|
||
+ ", TO_CHAR(NULL) ins_deel_state"
|
||
+ ", to_number(null) ins_deel_key"
|
||
+ ", res_prs_perslid_key prs_perslid_key";
|
||
|
||
var select_fields_d = select_fields + ", d.ins_alg_ruimte_key_org"
|
||
+ ", d.ins_discipline_key"
|
||
+ ", d.ins_deel_state"
|
||
+ ", d.ins_deel_key"
|
||
+ ", to_number(NULL) prs_perslid_key";
|
||
|
||
var select_bulkfields = " distinct cnt.res_deel_key"
|
||
+ ", res_deel_opmerking"
|
||
+ ", " + lcl.xsql('r.res_deel_omschrijving', 'cnt.res_deel_key') + " || ' (' || cnt.total || ')'" + " res_deel_omschrijving"
|
||
+ ", r.res_deel_prijs"
|
||
+ ", r.res_deel_image"
|
||
+ ", " + lcl.xsqla('r.res_deel_eenheid', 'cnt.res_deel_key')
|
||
+ ", res_disc_params_preposttime"
|
||
+ ", 1 isbulk"
|
||
+ ", cnt.total"
|
||
+ ", sel.selected"
|
||
+ ", d.ins_alg_ruimte_key_org"
|
||
+ ", d.ins_discipline_key"
|
||
+ ", d.ins_deel_state"
|
||
+ ", cnt.ins_deel_key"
|
||
+ ", to_number(NULL) prs_perslid_key";
|
||
|
||
var group_by = " GROUP BY "
|
||
+ " r.res_deel_key"
|
||
+ ", res_prs_perslid_key"
|
||
+ ", r.res_deel_opmerking"
|
||
+ ", r.res_deel_omschrijving"
|
||
+ ", r.res_deel_vervaldatum"
|
||
+ ", r.res_deel_prijs"
|
||
+ ", r.res_deel_image"
|
||
+ ", r.res_deel_eenheid"
|
||
+ ", res_disc_params_preposttime"
|
||
+ ", d.ins_alg_ruimte_key_org"
|
||
+ ", d.ins_discipline_key"
|
||
+ ", d.ins_deel_state"
|
||
+ ", d.ins_deel_key";
|
||
|
||
var bulk_group_by = " GROUP BY cnt.res_deel_key"
|
||
+ ", res_prs_perslid_key"
|
||
+ ", r.res_deel_opmerking"
|
||
+ ", r.res_deel_omschrijving"
|
||
+ ", r.res_deel_vervaldatum"
|
||
+ ", r.res_deel_prijs"
|
||
+ ", r.res_deel_image"
|
||
+ ", r.res_deel_eenheid"
|
||
+ ", res_disc_params_preposttime"
|
||
+ ", d.ins_alg_ruimte_key_org"
|
||
+ ", d.ins_discipline_key"
|
||
+ ", d.ins_deel_state"
|
||
+ ", cnt.ins_deel_key"
|
||
+ ", cnt.total"
|
||
+ ", sel.selected";
|
||
|
||
|
||
if (!params.isload)
|
||
{
|
||
group_by += " ORDER BY 3 "; // r.res_deel_omschrijving: Don't use column alias with UNION ...
|
||
}
|
||
else
|
||
{
|
||
bulk_group_by += " ORDER BY 3 ";
|
||
}
|
||
|
||
// Iterate through all reservable objects (vertically) and show schedule for them (horizontally)
|
||
var maxrec = (params.loadmore ? S("qp_maxgridrows2") : S("qp_maxgridrows")) + 1;
|
||
var sql1 = get_res_deel_sql(
|
||
{ rsv_ruimte_key: params.rsv_ruimte_key,
|
||
alg_ruimte_key: alg_ruimte_key,
|
||
res_ruimte_key: res_ruimte_key,
|
||
mld_opdr_key: params.mld_opdr_key,
|
||
select_fields_p : select_fields_p,
|
||
select_fields_d : select_fields_d,
|
||
select_bulkfields : select_bulkfields,
|
||
reg_key : params.reg_key,
|
||
dist_key : params.dist_key,
|
||
loc_key : params.loc_key,
|
||
loc_key_arr : params.loc_key_arr,
|
||
geb_key : params.geb_key,
|
||
geb_key_arr : params.geb_key_arr,
|
||
ver_key : params.ver_key,
|
||
ver_key_arr : params.ver_key_arr,
|
||
rui_key : params.rui_key,
|
||
act_key : params.act_key,
|
||
sdisc : disc_key,
|
||
group_by: group_by,
|
||
bulk_group_by: bulk_group_by,
|
||
autfunction : autfunction,
|
||
res_tot: res_tot,
|
||
maxrec: maxrec,
|
||
withbulk: !!params.isload,
|
||
res_van: res_van
|
||
});
|
||
|
||
oRs = Oracle.Execute(sql1);
|
||
var cnt = 0;
|
||
var any_nofit = false;
|
||
var row = 1;
|
||
// no description means description is outside of grid (load_plan)
|
||
if (params.ins_discipline_omschrijving)
|
||
{
|
||
row = 2;
|
||
}
|
||
while (!oRs.eof && (row -1) < maxrec)
|
||
{ // Doorloop reserveerbare delen binnen filter
|
||
res_deel_key = oRs("res_deel_key").value;
|
||
res_deel_omschrijving = oRs("res_deel_omschrijving").value;
|
||
res_deel_prijs = oRs("res_deel_prijs").Value;
|
||
res_deel_eenheid = oRs("res_deel_eenheid").Value;
|
||
res_deel_image = oRs("res_deel_image").Value;
|
||
ins_deel_state = oRs("ins_deel_state").Value; // POC. ins_deel_statedate doet denk ik ook mee
|
||
|
||
var res_deel_opm2 = oRs("res_deel_opmerking").value;
|
||
var prepost_time = oRs("res_disc_params_preposttime").Value||0;
|
||
var ins_deel_key = oRs("ins_deel_key").value;
|
||
var prs_perslid_key = oRs("prs_perslid_key").value;
|
||
Response.Write(empty_grid_line(row, { res_deel_key: res_deel_key, disc_key: disc_key }, nr_days));
|
||
|
||
var showLendOut = false;
|
||
if (oRs("ins_alg_ruimte_key_org").value != null)
|
||
{
|
||
var authparamsINSFOF = user.checkAutorisation("WEB_INSFOF", true, + oRs("ins_discipline_key").Value); // cache't wel
|
||
if (authparamsINSFOF)
|
||
showLendOut = true;
|
||
}
|
||
|
||
if (res_deel_eenheid == null) res_deel_eenheid='';
|
||
else res_deel_eenheid='/'+res_deel_eenheid;
|
||
|
||
if( res_deel_prijs && res_deel_prijs != 0)
|
||
{
|
||
prijs_text = S("currency_pref") + safe.curr(res_deel_prijs)+S("currency_suff")+res_deel_eenheid;
|
||
}
|
||
else
|
||
{
|
||
prijs_text = '';
|
||
res_deel_prijs = 0.0;
|
||
}
|
||
|
||
var ar = existing_res[prs_perslid_key?prs_perslid_key:ins_deel_key]; // Bestaande reserveringen op dit deel
|
||
|
||
var ro = " readonly ", st = false;
|
||
|
||
// bulk item handling
|
||
if (oRs("isbulk").Value == 1 && oRs("total").Value > 0)
|
||
{
|
||
is_selected = (oRs("selected").Value > 0);
|
||
is_nofit = false;
|
||
// no competing reservation as long as there are bulk objects available
|
||
arSelf = [];
|
||
// preserve [this] reservation in ar, the rest is removed from the array
|
||
var arIndex;
|
||
for (arIndex in ar)
|
||
{
|
||
if (ar[arIndex].rsv_ruimte_key == params.rsv_ruimte_key)
|
||
{
|
||
// not dirty as long as there are bulk items available
|
||
ar[arIndex].dirtlevel = 0;
|
||
arSelf.push(ar[arIndex]);
|
||
break;
|
||
}
|
||
}
|
||
|
||
ar = (params.isload ? arSelf : ar);
|
||
}
|
||
// non-bulk itam handling
|
||
else if (params.rsv_ruimte_key>0) {
|
||
// check whether the current resource is reserved for the current reservation
|
||
var is_selected = false;
|
||
var is_nofit = false; // zouden we hier passen?
|
||
|
||
if (res_deel_key==params.res_deel_key) // default keuze
|
||
{
|
||
is_selected = true;
|
||
ro = "";
|
||
st = false;
|
||
};
|
||
for (ci=0; ar != null && ci<ar.length; ci++)
|
||
{
|
||
if (ar[ci].rsv_ruimte_key == params.rsv_ruimte_key)
|
||
{ // we zijn het zelf
|
||
is_selected = true;
|
||
// Indien het hetzelfde object (ins_deel_key) betreft maar niet hetzelfde reserverbaar deel (res_deel_key), dan disabled weergeven
|
||
ro = (ar[ci].res_status==6 || res_deel_key != ar[ci].res_deel_key? " disabled " : "");
|
||
st = (ar[ci].res_status==6 || res_deel_key != ar[ci].res_deel_key);
|
||
}
|
||
else
|
||
{
|
||
if (res_van.getTime() - prepost_time*60*60*1000 < ar[ci].res_tot.getTime()
|
||
&& res_tot.getTime() + prepost_time*60*60*1000 > ar[ci].res_van.getTime())
|
||
is_nofit = true; // Overlap!
|
||
}
|
||
}
|
||
any_nofit |= is_nofit;
|
||
}
|
||
%>
|
||
<div class="labelgrid hidden<%=is_selected?' selected':''%><%=is_nofit?' res_nofit':''%>" id="<%=res_deel_key%>"
|
||
data-disc="<%=disc_key%>" data-row="<%=row%>" style="grid-column: 1; grid-row: <%=row%>"
|
||
<%
|
||
if (select_and_planbord_options(params, 4) && nr_days < S("res_plantable_condensed_from") && res_deel_opm2) //Anders is het #remark2_xx veld er niet
|
||
{ %>
|
||
OnMouseOver="showOpmerking('#remark2_<%=res_deel_key%>', event, true);"
|
||
OnMouseOut="$('#remark2_<%=res_deel_key%>').hide();"
|
||
<% } %>
|
||
>
|
||
<% if (is_selected && res_deel_key!=params.res_deel_key ) // Als res_deel_key==params.res_deel_key komen we uit het
|
||
// planbord en hebben we hem nog niet echt
|
||
{ %>
|
||
<input name='has_<%=res_deel_key%>' type='hidden'>
|
||
<% } %>
|
||
<% if (params.rsv_ruimte_key>0) { %>
|
||
<input id='chk_<%=res_deel_key%>' name='chk_<%=res_deel_key%>'
|
||
type='checkbox' <%=is_selected?'checked':''%> <%=ro%>
|
||
<% if (!st) { %>
|
||
onClick="res_deel_grid_click('<%=res_deel_key%>')"
|
||
<% } %>>
|
||
<% }
|
||
txt = res_deel_omschrijving + (params.rsv_ruimte_key>0 ? '':(prijs_text?' ('+prijs_text+')':''))
|
||
var safe_state = "";
|
||
var safe_txt = safe.html(txt);
|
||
//- zeker/daadwerkelijk bezet (&1)
|
||
//- zeker/daadwerkelijk vrij (&0)
|
||
//- functioneel bezet (bv &3 (met &2 = onzeker)), optioneel bv iemand is even weg maar nog binnen de toleranties (handdoekje leggen)
|
||
//- geblokkeerd (bv &5 bv moet schoongemaakt worden)
|
||
//- error (&128?)
|
||
|
||
var stateicon ="";
|
||
var statecolorclass ="";
|
||
if (ins_deel_state&128)
|
||
{
|
||
stateicon = "fa-exclamation-triangle";
|
||
statecolorclass = "sens-fatal";
|
||
}
|
||
else if (ins_deel_state&1)
|
||
{
|
||
stateicon = "fa-do-not-enter";
|
||
if (ins_deel_state&4)
|
||
{
|
||
statecolorclass = "sens-blocked";
|
||
stateicon = "fa-times-circle";
|
||
}
|
||
else if (ins_deel_state&2)
|
||
{
|
||
statecolorclass = "sens-uncertain";
|
||
stateicon = "fa-question-circle";
|
||
}
|
||
else
|
||
statecolorclass = "sens-occupied";
|
||
|
||
}
|
||
else if (ins_deel_state == 0)
|
||
{
|
||
stateicon = "fa-circle";
|
||
statecolorclass = "sens-free";
|
||
}
|
||
|
||
if (ins_deel_state || showLendOut) // POC
|
||
safe_state = "<div "+(statecolorclass ? "class='statusgrid sens-status "+statecolorclass+"' " :"")
|
||
+ "title='"+(ins_deel_state ? (L("lcl_deel_state")+" "+safe.htmlattr(ins_deel_state)) : L("lcl_ins_islent_res"))+"'>"
|
||
+ I(stateicon, {fastyle: "fas"})
|
||
+ (showLendOut ? I("fa-thumbtack respl", {fastyle: "fal"}) : "")
|
||
+ "</div>"; // de absolute voorkomt invloed op layout
|
||
|
||
var safe_oms = "";
|
||
var imageClass = "";
|
||
var imageStyle = "";
|
||
var res_deel_image = "";
|
||
if (nr_days < S('res_plantable_condensed_from')) // >= S('res_plantable_condensed_from') is compact view
|
||
{
|
||
var this_photoinfo = res.photoinfo(res_deel_key, ins_deel_key, prs_perslid_key);
|
||
res_deel_image = (this_photoinfo.isDefault ? "" : safe.htmlattr(this_photoinfo.photopaththumb));
|
||
|
||
if (res_deel_image && (!select_and_planbord_options(params, 1) || params.isload))
|
||
{
|
||
imageClass = " rrphoto";
|
||
imageStyle = " style='background-image: url(\"" + res_deel_image + "\");'";
|
||
}
|
||
if (res_deel_opm2)
|
||
safe_oms += safe.html(res_deel_opm2);
|
||
}
|
||
%>
|
||
<label title='<%=safe.htmlattr(txt)%>' for='chk_<%=res_deel_key%>'><%=safe_txt%></label>
|
||
<div class="rrdet<%=imageClass%>"<%=imageStyle%> style="z-index:2">
|
||
<% if (safe_oms)
|
||
{
|
||
if (select_and_planbord_options(params, 4))
|
||
{ %>
|
||
<div class="res_remark" style='text-align:center' id="remark2_<%=res_deel_key%>">
|
||
<%=safe_oms%>
|
||
</div>
|
||
<% } else { %>
|
||
<div class="rrdesc-wrapper">
|
||
<div class="rrdesc">
|
||
<%=safe_oms%>
|
||
</div>
|
||
</div>
|
||
<% } %>
|
||
<% } %>
|
||
</div>
|
||
</div>
|
||
<div class="icongrid hidden" style="grid-column: 2; grid-row: <%=row%>" data-disc="<%=disc_key%>" data-row="<%=row%>">
|
||
<%=safe_state%>
|
||
</div>
|
||
<%
|
||
if (oRs("isbulk").value == 1 && params.isload)
|
||
{
|
||
%>
|
||
<div class="bulkamountwrap" style="grid-area: <%=row%>/2/auto/4; justify-self: end;" data-disc="<%=disc_key%>" data-row="<%=row%>">
|
||
<input class="bulkamount number<%=(oRs("selected").value > 0 ? ' required' : '')%>" type="number" name="amt_<%=res_deel_key%>" min="0" max="<%=oRs("total").value%>" value="<%=oRs("selected").value%>" onchange="res_deel_grid_change('<%=res_deel_key%>')">
|
||
</div>
|
||
<%
|
||
}
|
||
%>
|
||
<%
|
||
divver = { overleft: "", overright: "" };
|
||
|
||
var vanmidnight = res_van.midnight().getTime(); // E<>n keer uitrekenen
|
||
var totmidnight = res_tot.midnight().getTime();
|
||
var rsv_key = 0;
|
||
var res_flag = 0;
|
||
var tijdbalk;
|
||
|
||
for (dagen=0; dagen<nr_days; dagen++)
|
||
{
|
||
tijdbalk = tijdbalken_kop.tijdbalk_arr()[dagen];
|
||
// Maak een dummy res_nieuw aan die we eenvoudig aan kunnen zetten als we in selectie-mode zitten
|
||
// (niet voor planbord)
|
||
if (!params.planbord && !is_selected || res_deel_key==params.res_deel_key)
|
||
{
|
||
var h_start = (res_van - vanmidnight) /1000/60/60 - 24*dagen;
|
||
var h_end = (res_tot - totmidnight) /1000/60/60 + 24*(nr_days-1-dagen);
|
||
var safe_titleinfo = {safe_inline: "", safe_tooltip: ""};
|
||
var new_divver = make_plan_cell(params, "gepland res_nieuw", h_start, h_end, tijdbalk, row, safe_titleinfo);
|
||
Response.Write("\n"+new_divver.div);
|
||
}
|
||
|
||
for (ci=0; ar && ci<ar.length; ci++)
|
||
{
|
||
var h_start = (ar[ci].res_van - vanmidnight) /1000/60/60 - 24*dagen;
|
||
var h_end = (ar[ci].res_tot - totmidnight) /1000/60/60 + 24*(nr_days-1-dagen);
|
||
if (h_start>24 || h_end < 0)
|
||
continue;
|
||
|
||
var not_available = (urole == "fe" // FE mag niet op een reservering klikken, tenzij;
|
||
&& !user.isCollega(ar[ci].contact_key) // Ik ben de contactpersoon vd reservering
|
||
&& !(ar[ci].mld_opdr_key > 0 && user.isCollega(prs_perslid_key))); // Ik ben de gereserveerde persoon
|
||
|
||
if (res_deel_key != ar[ci].res_deel_key || ar[ci].dirtlevel > 0 || not_available)
|
||
statClass = "res_nietvrij";
|
||
else
|
||
{
|
||
statClass = { 1 : "res_optie",
|
||
2 : "res_definitief",
|
||
3 : "res_blok",
|
||
4 : "res_vervallen"}[ar[ci].status_fo_key ];
|
||
statClass = (ar[ci].res_status == 5 ? "res_afgemeld" : statClass);
|
||
}
|
||
|
||
if (ar[ci].rsv_ruimte_key == params.rsv_ruimte_key && res_deel_key == ar[ci].res_deel_key)
|
||
statClass += " res_current";
|
||
|
||
if (ar[ci].dirtlevel & (res.dirtlevel.deel.notavailable | res.dirtlevel.deel.notallowed))
|
||
statClass += " res_fatal";
|
||
|
||
var theClass = statClass + " gepland";
|
||
|
||
if (ar[ci].dirtlevel & res.dirtlevel.ruimte.notavailable)
|
||
theClass += " res_fatal";
|
||
|
||
var rsv_ruimte_key = ar[ci].rsv_ruimte_key;
|
||
var rsv_deel_key = ar[ci].rsv_deel_key;
|
||
var alg_ruimte_key = isNaN(ar[ci].alg_ruimte_key) ? -1 :ar[ci].alg_ruimte_key;
|
||
var bez_key = ar[ci].bez_key;
|
||
|
||
res_flag = 0;
|
||
if (rsv_key != rsv_ruimte_key)
|
||
{
|
||
res_flag = ar[ci].res_flag;
|
||
rsv_key = rsv_ruimte_key;
|
||
}
|
||
|
||
var theClick = "";
|
||
var theMouse="";
|
||
var titleinfo = {};
|
||
|
||
if (nr_days < S('res_plantable_condensed_from')) // >= S('res_plantable_condensed_from') is compact view
|
||
{
|
||
if (bez_key > 0)
|
||
{
|
||
safe_titleinfo = res_load_title_bez(ar[ci], params);
|
||
}
|
||
else
|
||
{
|
||
safe_titleinfo = res_load_title_obj(ar[ci], params);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
safe_titleinfo = { safe_inline: "", safe_tooltip: ""};
|
||
}
|
||
|
||
if (canRead && !not_available && bez_key == -1 && params.rsv_ruimte_key < 0)
|
||
{
|
||
theClick = ' onClick="rsv_click(this,\''+urole+'\');"'
|
||
theClass += " click";
|
||
}
|
||
|
||
divver = make_plan_cell(params, theClass, h_start, h_end, tijdbalk, row, safe_titleinfo, theClick, theMouse,
|
||
" rsv_key='" + rsv_ruimte_key +"' rsv_deel_key='" + rsv_deel_key + "'", prepost_time);
|
||
Response.Write("\n"+divver.div);
|
||
}
|
||
} // dagen
|
||
row++;
|
||
oRs.MoveNext();
|
||
} //end while
|
||
if (params.ins_discipline_omschrijving)
|
||
{
|
||
%>
|
||
<div class="insdiscgrid collapsed" data-disc="<%=disc_key%>" data-row="1" style="grid-column: 1 / <%=tijdbalken_kop.end_column()+1%>;grid-row: 1;">
|
||
<%=safe.html(params.ins_discipline_omschrijving)%><span class="badge"><%=row - 2%></span> <span class="maxgridrows"><%=row > S("qp_maxgridrows") ? L("lcl_qp_maxrows2").format(S("qp_maxgridrows")) : ""%></span>
|
||
</div>
|
||
<div data-row="<%=row%>" style="grid-column: <%=tijdbalken_kop.end_column()+1%>;grid-row: 1;"></div>
|
||
<%
|
||
}
|
||
oRs.close();
|
||
%>
|
||
</div>
|
||
</div>
|
||
<div class="footer"></div>
|
||
</div>
|
||
</div>
|
||
<script>
|
||
<%
|
||
if (any_nofit)
|
||
{
|
||
%>
|
||
function toggleNoFit<%=disc_key%>(visible)
|
||
{
|
||
return $("div.grid > div.body div.labelgrid[data-disc=<%=disc_key%>].res_nofit").filter(":" + (visible ? "visible":"hidden")).each(function() {
|
||
var $this = $(this);
|
||
var show = $this.is(":visible") == false;
|
||
$("div[data-row=" + $this.attr("data-row") + "]").toggle(show);
|
||
});
|
||
}
|
||
toggleNoFit<%=disc_key%>(true);
|
||
<%
|
||
}
|
||
if (params.isload)
|
||
{
|
||
if (row > maxrec)
|
||
{ // Zet bij overschrijden van het maximaal aantal regels dat getoond wordt een waarschuwing hiervan
|
||
if (row >= S("qp_maxgridrows2"))
|
||
{
|
||
var maxrows_msg = "<a class='resplanbordlimited'>" + L("lcl_qp_maxrows2a").format(maxrec-1) + "</a>";
|
||
var maxrow_click = "";
|
||
}
|
||
else
|
||
{
|
||
var maxrows_msg = "<a class='resplanbordlimited'>" + L("lcl_qp_maxrows1a").format(maxrec-1) + "</a>";
|
||
var maxrow_click = "ItemChoosed_obj(this, 'div_dis" + disc_key + "', " + disc_key + ", " + params.hour_px + ", '&more=1')";
|
||
}
|
||
%>
|
||
var $maxrows_msgTable = $("#table_dis<%=disc_key%>");
|
||
|
||
var $maxrows_msgHead<%-disc_key%> = $("<div id='<%=disc_key%>-maxrows' onclick=\"<%=maxrow_click%>\"><%=maxrows_msg%></div>");
|
||
$maxrows_msgTable.before($maxrows_msgHead<%-disc_key%>);
|
||
|
||
var $maxrows_msgFoot<%-disc_key%> = $("<div id='<%=disc_key%>-maxrows' onclick=\"<%=maxrow_click%>\"><%=maxrows_msg%></div>");
|
||
$maxrows_msgTable.find(".grid .footer").html($maxrows_msgFoot<%-disc_key%>);
|
||
<%
|
||
}
|
||
%>
|
||
var $autofilterAfter = $("div.grid[data-disc=<%=disc_key%>] > div.header div.planbordgrid");
|
||
var $autofilter<%=disc_key%> = $("<input id='autofilter-<%=disc_key%>' type='text' placeholder='" + L("lcl_autofilter") + "'" + (<%=params.hidefilter == 1? 1 : 0%> == 0? "" : " style='display: none;'") + ">");
|
||
$autofilterAfter.append($autofilter<%=disc_key%>);
|
||
function doFilter<%=disc_key%>(event)
|
||
{
|
||
var valThis = $autofilter<%=disc_key%>.val().toLowerCase();
|
||
if (valThis != window.lastFilter<%=disc_key%>) {
|
||
delayed(100, _doFilter<%=disc_key%>);
|
||
}
|
||
function _doFilter<%=disc_key%>() {
|
||
function textFromCollection(collection)
|
||
{
|
||
var _text = "";
|
||
collection.each(function () { _text += $(this).text().trim(); });
|
||
return _text.toLowerCase();
|
||
}
|
||
var $more = $("div.resplanbordlimited > a");
|
||
var $gridrows;
|
||
if ($more.length > 0 && $more.first().is(":visible"))
|
||
{
|
||
$gridrows = $("div.grid[data-disc=<%=disc_key%>] > div.body div.labelgrid").not(".res_nofit");
|
||
}
|
||
else
|
||
{
|
||
$gridrows = $("div.grid[data-disc=<%=disc_key%>] > div.body div.labelgrid");
|
||
}
|
||
var valThis = $autofilter<%=disc_key%>.val().toLowerCase();
|
||
$gridrows.each(function() {
|
||
var $this = $(this);
|
||
var found = (valThis.trim().length == 0 || textFromCollection($("div[data-disc=" + $this.attr("data-disc") + "][data-row=" + $this.attr("data-row") + "]").not(".rc")).indexOf(valThis) > -1);
|
||
$("div[data-row=" + $this.attr("data-row") + "][data-disc=" + $this.attr("data-disc") + "]").toggle(found);
|
||
});
|
||
FcltMgr.resized();
|
||
window.lastFilter<%=disc_key%> = valThis;
|
||
}
|
||
}
|
||
$autofilter<%=disc_key%>.click(function (e) { e.stopPropagation() })
|
||
.keyup(function (e) {
|
||
if (e.which == 27) {
|
||
$autofilter<%=disc_key%>.val("");
|
||
}
|
||
doFilter<%=disc_key%>();
|
||
});
|
||
|
||
var tijdbalken = [<%=tijdbalken_kop.tijdbalk_arr()[0].render_object()%>];
|
||
|
||
$("div.grid[data-disc=<%=disc_key%>]").css("grid-template-rows", "60px 1fr");
|
||
$("div.grid[data-disc=<%=disc_key%>] .hidden").removeClass("hidden");
|
||
if (typeof toggleNoFit<%=disc_key%> != "undefined")
|
||
{
|
||
toggleNoFit<%=disc_key%>(true);
|
||
}
|
||
if (window.frameElement && window.frameElement.parentElement && window.frameElement.parentElement.id == "result") /* Niet in het catering overzicht bijv. */
|
||
root.style.overflow = 'hidden';
|
||
|
||
setTimeout(function() { $(window).on("resize", resize_borders_margins).trigger("resize"); }, 500);
|
||
function resize_borders_margins()
|
||
{
|
||
set_borders_margins(tijdbalken[0]);
|
||
}
|
||
<%
|
||
}
|
||
%>
|
||
</script>
|
||
<%
|
||
if (any_nofit)
|
||
{
|
||
%><div class="resplanbordlimited" onclick="$('#table_dis<%=disc_key%>').toggleClass('compressed');$(this).toggle();$(this).next().toggle();toggleNoFit<%=disc_key%>(false);FcltMgr.resized(window);">
|
||
<a><%=L("lcl_res_show_full_obj_catalogus")%></a></div>
|
||
<div class="resplanbordlimited" style='display:none' onclick="$('#table_dis<%=disc_key%>').toggleClass('compressed');$(this).toggle();$(this).prev().toggle();toggleNoFit<%=disc_key%>(true);FcltMgr.resized(window);">
|
||
<a><%=L("lcl_res_show_half_obj_catalogus")%></a></div><%
|
||
}
|
||
}
|
||
%> |