NYBU#52809 Filters bij bezettingsgraden

svn path=/Website/trunk/; revision=38869
This commit is contained in:
Alex Tiehuis
2018-08-20 14:47:12 +00:00
parent db0f8ba846
commit 839817045a
3 changed files with 81 additions and 66 deletions

View File

@@ -11,12 +11,12 @@
showall show all orders which meets with the given requirements
datefrom search for reservations at the selected date-month-year
dateto search for reservations at the selected date-month-year
dist_key search for reservations for the selected district
loc_key search for reservations for the selected location
bld_key search for reservations for the selected building
flr_key search for reservations for the selected floor
room_key search for reservations for the selected room
room_key_arr search for reservations with the selected room categories/types
dist_key_arr search for reservations for the selected district
loc_key_arr search for reservations for the selected location
bld_key_arr search for reservations for the selected building
flr_key_arr search for reservations for the selected floor
room_key_arr search for reservations for the selected room
roomcat_key_arr search for reservations with the selected room categories/types
dayschedule give an overview at day schedule level
groupres groupres the reservations by
Context: Search action from res_search_ppi.asp form
@@ -49,12 +49,12 @@ function res_list_ppi(pautfunction, params)
// params.showall : boolean (true | false)
// params.datefrom : date
// params.dateto : date
// params.dist_key : key
// params.loc_key : key
// params.bld_key : key
// params.flr_key : key
// params.room_key : key
// params.room_key_arr : array met keys
// params.dist_key_arr : key
// params.loc_key_arr : key
// params.bld_key_arr : key
// params.flr_key_arr : key
// params.room_key_arr : key
// params.roomcat_key_arr : array met keys
// params.dayschedule : boolean (true | false)
// params.groupres : key
@@ -79,12 +79,14 @@ function res_list_ppi(pautfunction, params)
var datefrom = params.datefrom; // Periode van
var dateto = params.dateto; // Periode tot
var dist_key = params.dist_key; // District
var loc_key = params.loc_key; // Locatie
var bld_key = params.bld_key; // Gebouw
var flr_key = params.flr_key; // Verdieping
var room_key = params.room_key; // Ruimte
var room_key_arr = params.room_key_arr; // Ruimte categorie array
var timefrom = datefrom ? params.datefrom.getHours() : S("res_rap_t1") == -1 ? S("res_t1") : S("res_rap_t1"); // Tijd van
var timeto = dateto ? params.dateto.getHours() : S("res_rap_t2") == -1 ? S("res_t2") : S("res_rap_t2"); // Tijd tot
var dist_key_arr = params.dist_key_arr; // District
var loc_key_arr = params.loc_key_arr; // Locatie
var bld_key_arr = params.bld_key_arr; // Gebouw
var flr_key_arr = params.flr_key_arr; // Verdieping
var room_key_arr = params.room_key_arr; // Ruimte
var roomcat_key_arr = params.roomcat_key_arr; // Ruimte categorie array
var dayschedule = params.dayschedule; // Dagverdeling
var groupres = params.groupres; // Groepering
@@ -114,7 +116,7 @@ function res_list_ppi(pautfunction, params)
var sql_rooms = "";
var sql_dept = "";
var sql_account = "";
var sql_room_key = "";
var sql_roomcat_key = "";
// If from and to are given both are used
// If only one of from and to are give, this is used as a (1) day, not an half open interval
@@ -137,33 +139,26 @@ function res_list_ppi(pautfunction, params)
//date_sql = " AND beschik.res_reservering_van BETWEEN " + ora_date1 + " AND " + ora_date2;
if (room_key)
sql_rooms = " AND ruimte_geg.alg_ruimte_key = " + room_key;
else if (flr_key)
sql_floor = " AND ruimte_geg.alg_verdieping_key = " + flr_key;
else if (bld_key)
sql_bld = " AND ruimte_geg.alg_gebouw_key = " + bld_key;
else if (loc_key)
sql_loc = " AND ruimte_geg.alg_locatie_key = " + loc_key;
else if (dist_key)
sql_dis = " AND ruimte_geg.alg_district_key = " + dist_key;
if (room_key_arr)
sql_room_key = " AND beschik.res_discipline_key IN (" + room_key_arr.join(",") + ")";
sql_rooms = " AND ruimte_geg.alg_ruimte_key IN (" + room_key_arr.join(",") + ")";
else if (flr_key_arr)
sql_floor = " AND ruimte_geg.alg_verdieping_key IN (" + flr_key_arr.join(",") + ")";
else if (bld_key_arr)
sql_bld = " AND ruimte_geg.alg_gebouw_key IN (" + bld_key_arr.join(",") + ")";
else if (loc_key_arr)
sql_loc = " AND ruimte_geg.alg_locatie_key IN (" + loc_key_arr.join(",") + ")";
else if (dist_key_arr)
sql_dis = " AND ruimte_geg.alg_district_key IN (" + dist_key_arr.join(",") + ")";
// Leuke functie om voor alle uren een resultaat op te leveren.
// Zie res_list_ppi.inc;7 voor wat er gegenereerd wordt.
var rap_t1_overruled = S("res_rap_t1") < 0;
var rap_t2_overruled = S("res_rap_t2") < 0;
settings.overrule_setting("res_rap_t1", rap_t1_overruled? S("res_t1") : S("res_rap_t1"));
settings.overrule_setting("res_rap_t2", rap_t2_overruled? S("res_t2") : S("res_rap_t2"));
if (roomcat_key_arr)
sql_roomcat_key = " AND beschik.res_discipline_key IN (" + roomcat_key_arr.join(",") + ")";
function forhours(fn)
{
var i;
var res = []
// Wel met hele uren rekenen, anders geeft dat hier problemen.
for (i = Math.floor(S("res_rap_t1")); i < Math.floor(S("res_rap_t2") + 0.6); i++)
for (i = timefrom; i < timeto; i++)
{
var h = getServerHour(i)
res.push(fn.call(null, h, i));
@@ -216,15 +211,15 @@ function calcTotals(sql)
? (" ," + forhours(function (h) { return " SUM(n" + String(h) + ") b" + String(h); }))
: " , SUM(GREATEST(0, GREATEST(LEAST(to_number(TO_CHAR(res_rsv_ruimte_tot_tz, 'SSSSS')) / 3600"
+ " , COALESCE(res_ruimte_eindtijd, " + S("res_t2") + ")"
+ " ," + (rap_t2_overruled? 24 : S("res_rap_t2")) // Als res_rap_t2 overruled is (geen waarde had) dan LEAST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timeto)
+ " )"
+ " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timefrom)
+ " )"
+ " - LEAST(GREATEST(to_number(TO_CHAR(res_rsv_ruimte_van_tz, 'SSSSS')) / 3600"
+ " , COALESCE(res_ruimte_begintijd, " + S("res_t1") + ")"
+ " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timefrom)
+ " )"
+ " ," + (rap_t2_overruled? 24 : S("res_rap_t2")) // Als res_rap_t2 overruled is (geen waarde had) dan LEAST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timeto)
+ " ))"
+ " ) bezetting")
+ " FROM (SELECT r.res_rsv_ruimte_key"
@@ -269,10 +264,10 @@ function calcTotals(sql)
+ (dayschedule
? ""
: " * (GREATEST(0, LEAST(COALESCE(rr1.res_ruimte_eindtijd, " + S("res_t2") + ")"
+ " ," + (rap_t2_overruled? 24 : S("res_rap_t2")) // Als res_rap_t2 overruled is (geen waarde had) dan LEAST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timeto)
+ " )"
+ " - GREATEST(COALESCE(rr1.res_ruimte_begintijd, " + S("res_t1") + ")"
+ " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timefrom)
+ " )"
+ " - (COALESCE(rr1.res_ruimte_eindtijdblok, 12)"
+ " - COALESCE(rr1.res_ruimte_begintijdblok, 12)))"
@@ -293,7 +288,7 @@ function calcTotals(sql)
+ " AND beschik.alg_ruimte_key = ruimte_geg.alg_ruimte_key"
+ " AND ruimte_geg.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ sql_room_key
+ sql_roomcat_key
+ sql_dis
+ sql_loc
+ sql_bld
@@ -369,7 +364,7 @@ function calcTotals(sql)
+ " / 3600, "
+ " COALESCE (rarg.res_ruimte_begintijd, " + S("res_t1") +")), "
+ " COALESCE (rarg.res_ruimte_eindtijd, " + S("res_t2") +"), "
+ " " + (rap_t2_overruled ? 24 : S("res_rap_t2")) + ") "
+ " " + (timeto) + ") "
+ " - GREATEST ( "
+ " LEAST ( "
+ " TO_NUMBER ( "
@@ -377,7 +372,7 @@ function calcTotals(sql)
+ " / 3600, "
+ " COALESCE (rarg.res_ruimte_eindtijd, " + S("res_t2") +")), "
+ " COALESCE (rarg.res_ruimte_begintijd, " + S("res_t1") +"), "
+ " " + (rap_t1_overruled? 0 : S("res_rap_t1")) + "))"
+ " " + (timefrom) + "))"
+ " ) bezetting")
+ " FROM ("+ sql_reservering + ") rarg"
+ " WHERE rarg.res_rsv_ruimte_van BETWEEN " + ora_date3 + " AND " + ora_date4;
@@ -416,10 +411,10 @@ function calcTotals(sql)
+ (dayschedule
? ""
: " * (GREATEST(0, LEAST(COALESCE(rr1.res_ruimte_eindtijd, " + S("res_t2") + ")"
+ " ," + (rap_t2_overruled ? 24 : S("res_rap_t2")) // Als res_rap_t2 overruled is (geen waarde had) dan LEAST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timeto)
+ " )"
+ " - GREATEST(COALESCE(rr1.res_ruimte_begintijd, " + S("res_t1") + ")"
+ " ," + (rap_t1_overruled? 0 : S("res_rap_t1")) // Als res_rap_t1 overruled is (geen waarde had) dan GREATEST automatisch 1-ste waarde te laten kiezen.
+ " ," + (timefrom)
+ " )"
+ " - (COALESCE(rr1.res_ruimte_eindtijdblok, 12) - COALESCE(rr1.res_ruimte_begintijdblok, 12)))"
+ " )")
@@ -456,7 +451,7 @@ function calcTotals(sql)
+ " AND beschik.alg_ruimte_key = ruimte_geg.alg_ruimte_key"
+ " AND ruimte_geg.alg_locatie_key = l.alg_locatie_key"
+ " AND l.alg_district_key = di.alg_district_key"
+ sql_room_key
+ sql_roomcat_key
+ sql_dis
+ sql_loc
+ sql_bld

View File

@@ -36,13 +36,13 @@ var datefrom = getFParamDate("date_from", null);
var dateto = getFParamDate("date_to", null);
// Voor velden die de user in kan typen valideren we zodanig dat we er tegen kunnen
var dist_key = getFParamInt("districtkey", -1);
var loc_key = getFParamInt("locatiekey", -1);
var bld_key = getFParamInt("gebouwkey", -1);
var flr_key = getFParamInt("verdiepingkey", -1);
var room_key = getFParamInt("ruimtekey", -1);
var dist_key_arr = getFParamIntArray("districtkey", -1);
var loc_key_arr = getFParamIntArray("locatiekey", -1);
var bld_key_arr = getFParamIntArray("gebouwkey", -1);
var flr_key_arr = getFParamIntArray("verdiepingkey", -1);
var room_key_arr = getFParamIntArray("ruimtekey", -1);
var room_key_arr = getFParamIntArray("roomcatmulti", []); // Ruimte soort catalogus
var roomcat_key_arr = getFParamIntArray("roomcatmulti", []); // Ruimte soort catalogus
var dayschedule = getFParamInt("dayschedule", 0) == 1; // Dagverdeling standaard niet aangevinkt indien niet meegegeven
var groupres = getFParamInt("groupby", -1); // Groepering
// ** de velden van de form zijn nu allemaal bekend **
@@ -62,12 +62,12 @@ res_list_ppi( autfunction,
showall: showall,
datefrom: datefrom,
dateto: dateto,
dist_key: (dist_key != -1? dist_key : null),
loc_key: (loc_key != -1? loc_key : null),
bld_key: (bld_key != -1? bld_key : null),
flr_key: (flr_key != -1? flr_key : null),
room_key: (room_key != -1? room_key : null),
room_key_arr: (room_key_arr.length != 0 ? room_key_arr : null),
dist_key_arr: (dist_key_arr != -1? dist_key_arr : null),
loc_key_arr: (loc_key_arr!= -1? loc_key_arr : null),
bld_key_arr: (bld_key_arr!= -1? bld_key_arr : null),
flr_key_arr: (flr_key_arr!= -1? flr_key_arr : null),
room_key_arr: (room_key_arr != -1? room_key_arr : null),
roomcat_key_arr: (roomcat_key_arr.length != 0 ? roomcat_key_arr : null),
dayschedule: dayschedule,
groupres: (groupres != -1? groupres : null)
}

View File

@@ -17,7 +17,8 @@
<%
FCLTHeader.Requires({ plugins: ["jQuery", "kenmerk"],
js: ["../res/res_search.js"]
js: ["../res/res_search.js", "jquery.timepicker-table.js"],
css: ["timePicker-table.css"]
});
/***** Get webform parameters *****/
@@ -26,6 +27,8 @@ var urole = "mi";
var cal_intv = 0; // default date offset (in workdays?!) for calendar 2
var date_from = getQParamDate("date_from", null);
var date_to = getQParamDate("date_to", null);
var time_from = getQParamDate("time_from", null);
var time_to = getQParamDate("time_to", null);
var dis_key = getQParamInt("district_key", -1); // District
var loc_key = getQParamInt("locatie_key", -1); // Locatie
var bld_key = getQParamInt("gebouw_key", -1); // Gebouw
@@ -34,19 +37,26 @@ var room_key = getQParamInt("ruimte_key", -1); // Ruimte
var room_key_arr = getQParamIntArray("roomcatmulti", [-1]); // Ruimte soort catalogus
var group = getQParamInt("groupby", -1); // Groepering
var dayschedule = getQParamInt("dayschedule", 0) == 1; // Dagverdeling standaard niet aangevinkt indien niet meegegeven
var start_time = S("res_rap_t1") == -1 ? S("res_t1") : S("res_rap_t1");
var end_time = S("res_rap_t2") == -1 ? S("res_t2") : S("res_rap_t2");
if (!date_from && date_to)
if (!date_from && date_to) {
date_from = date_to;
else if (date_from && !date_to)
}
else if (date_from && !date_to) {
date_to = date_from;
}
else if (!date_from && !date_to)
{
var dt = new Date(); // Vandaag
dt = new Date(dt.getFullYear(), dt.getMonth(), 1); // Eerste dag van de huidige maand
date_to = new Date(dt.setDate(0)); // Laatste dag van de vorige maand
date_from = new Date(dt.setDate(1)); // Eerste dag van de vorige maand
date_from.setHours( start_time, 0, 0, 0 );
date_to.setHours( end_time, 0, 0, 0 );
}
__DoLog(date_from);
__DoLog(date_to);
/***** End get webform parameters *****/
var autfunction = "WEB_RESBAC";
@@ -82,6 +92,10 @@ var authparams = user.checkAutorisation(autfunction);
FCLTcalendar("date_from",
{ label : L("lcl_period_from"),
datum: date_from,
timeField: true,
timeStep: 60,
startTime: start_time,
endTime : end_time,
trclass: "primsearch",
required: true,
volgnr: 1
@@ -90,6 +104,10 @@ var authparams = user.checkAutorisation(autfunction);
FCLTcalendar("date_to",
{ label: L("lcl_period_to"),
datum: date_to,
timeField: true,
timeStep: 60,
startTime: start_time,
endTime : end_time,
trclass: "primsearch",
required: true,
volgnr: 2
@@ -100,7 +118,9 @@ var authparams = user.checkAutorisation(autfunction);
locatiekey: loc_key,
gebouwkey: bld_key,
verdiepingkey: floor_key,
verdiepingkey: floor_key,
ruimtekey: room_key,
multitoggle: 5,
startlevel: 1, // District
eindlevel: 5, // Ruimte
secsearch: 3, // gebouw en hoger