Files
Facilitor/APPL/PDA/mld_list.asp
Ruud Lipper 6aedf8158c AAIT#53891 nieuwe meldingen met behandelaar beter tonen als filter = self
svn path=/Website/branches/v2018.1/; revision=38483
2018-07-12 11:41:51 +00:00

539 lines
21 KiB
Plaintext

<%@ language = "JavaScript" %>
<% /*
$Revision$
$Id$
File: pda/mld_list.asp
Description: Toont een beknopte meldingenlijst voor mobile, dat zijn de aan mij
geautoriseerde actieve meldingen op de plaats waar ik ben plus die zonder plaatsgegevens
Parameters: -
Context: -
Note: Gestripte versie van mld/mld_list.inc
*/
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/discx3d.inc" -->
<!-- #include file="./resultset_table.inc" -->
<!-- #include file="../Shared/getkenmerksql.inc" -->
<!-- #include file="./mobile.inc" -->
<!-- #include file="./iface.inc" -->
<!-- #include file="../mld/mld.inc" -->
<%
perform=false; // ???? JGL: MLD.INC gebruikt deze illegaal globaal TODO!
frontend=false;
var ruimte_key = getQParamInt("ruimte_key", -1);
var res_ruimte_key = getQParamInt("res_ruimte_key", -1);
var rsv_ruimte_key = getQParamInt("rsv_ruimte_key", -1); // Lijst tonen van alle meldingen met dezelfde rsv_ruimte_key (reservering).
var ins_key = getQParamInt("ins_key", -1);
var self = getQParamInt("self", -1);
var status = getQParamIntArray("status", []);
var behandel_key = getQParamInt("behandel", -1);
// &1 = Pending(0),Ingevoerd(2),Ingezien(3)
// &2 = Geaccepteerd(4), Uitgegeven(7)
// &4 = Afgemeld
// De submit van deze pagina krijgt de individuele checkboxen mee
// maar je mag ook direct fase meegeven, defaul 0x011
var fase1 = getQParamInt("fase1", 0); // 0 of 1
var fase2 = getQParamInt("fase2", 0); // 0 of 2
var fase4 = getQParamInt("fase4", 0); // 0 of 4
if (fase1 == 0 && fase2 == 0 && fase4 == 0) {
fase1 = 1;
fase2 = 2;
// fase4 blijft 0
}
var fase = getQParamInt("fase", fase1 + fase2 + fase4);
var locatie_key = getQParamInt("locatie_key", user.alg_locatie_key({withcurrent:true})); // Locatie
var gebouw_key = getQParamInt("gebouw_key", user.alg_gebouw_key({withcurrent:true})); // Gebouw, kan -1 zijn, dan niet gebruiken
var verdieping_key = getQParamInt("verdieping_key", user.alg_verdieping_key({withcurrent:true}));
var qrc = getQParamInt("qrc", 0) != 0;
var meldbron_key = getQParamInt("meldbronkey", 7);
var deelsrtcont_key = getQParamInt("deelsrtcont_key", -1); // nieuwe melding vanuit een controletaak
var grp_sel = getQParam("grp", "");
var subject = L("lcl_mobile_meldingen");
var ruimteKeyArr = [];
// Reserveerbare ruimte: bepaal de alg_ruimte(s) en omschrijving
if (res_ruimte_key > -1 && ruimte_key == -1)
{
var sql = "SELECT res_ruimte_nr plaats "
+ " FROM res_ruimte"
+ " WHERE res_ruimte_key = " + res_ruimte_key
var oRs = Oracle.Execute(sql);
subject += " " + oRs("plaats").Value;
oRs.Close();
var sql = "SELECT alg_ruimte_key "
+ " FROM res_alg_ruimte rag"
+ " WHERE rag.res_ruimte_key = " + res_ruimte_key
+ " AND rag.res_alg_ruimte_verwijder IS NULL";
var oRs = Oracle.Execute(sql);
while (!oRs.eof) {
ruimte_key = oRs("alg_ruimte_key").value; // pak er maar eentje, meestal is het er maar een
ruimteKeyArr.push(oRs("alg_ruimte_key").value);
oRs.MoveNext();
}
oRs.Close();
}
// Gewone ruimte: bepaal de omschrijving
if (ruimte_key > -1 && res_ruimte_key == -1)
{
var sql = "SELECT aog.alg_plaatsaanduiding"
+ " FROM alg_v_onroerendgoed_gegevens aog"
+ " WHERE aog.alg_ruimte_key = " + ruimte_key;
var oRs = Oracle.Execute(sql);
subject += " " + oRs("alg_plaatsaanduiding").Value;
oRs.Close();
}
// Object: bepaal de omschrijving
if (ins_key > -1)
{
var sql = " SELECT ins_deel_omschrijving"
+ " FROM ins_deel id"
+ " WHERE id.ins_deel_key = " + ins_key;
var oRs = Oracle.Execute(sql);
subject += " " + oRs("ins_deel_omschrijving").Value;
oRs.Close();
}
// Wat zijn de criteria voor de meldingslijst?
// Standaard lopende meldingen (0,2,3,4,7)
var urole = getQParamSafe("urole", "bo");
var params = { urole: urole };
params.flags = [];
var checkboxParams = [];
var hasParamFlag = false;
// in tegenstelling tot desktop zijn hier de flags default on
// en kun je dus expliciet zaken wegfilteren met &flagN=off
for (flagkey=0; flagkey < S("mld_melding_flags"); flagkey++)
{
if (getQParam("flag" + flagkey, "off") == "on")
{
hasParamFlag = true;
checkboxParams[flagkey] = "on";
params.flags.push(flagkey);
}
else
{
checkboxParams[flagkey] = "false";
}
}
if (!hasParamFlag)
{
for (flagkey=0; flagkey < S("mld_melding_flags"); flagkey++)
{
if (getQParam("flag" + flagkey, "on") == "off")
{
checkboxParams[flagkey] = "off";
}
else
{
params.flags.push(flagkey);
checkboxParams[flagkey] = "on";
}
}
}
params.behandel_key = behandel_key;
__Log("status length = " + status.length);
if (status.length > 0)
{ // Er is/zijn (een) status(sen) meegegeven.
if (status.join(",").indexOf("0") >= 0) params.mldstpen = true; // Status "Pending(0)".
if (status.join(",").indexOf("2") >= 0) params.mldstnew = true; // Status "Ingevoerd(2)".
if (status.join(",").indexOf("3") >= 0) params.mldsting = true; // Status "Ingezien(3)".
if (status.join(",").indexOf("4") >= 0) params.mldstacc = true; // Status "Geaccepteerd(4)".
if (status.join(",").indexOf("7") >= 0) params.mldstuit = true; // Status "Uitgegeven(7)".
}
else
{
if ((S("mld_restrict_mobile_to_me") != 1 || ruimte_key != -1 || ins_key != -1 || rsv_ruimte_key != -1) && (fase & 1))
{
params.mldstpen = true; // Status "Pending(0)".
params.mldstnew = true; // Status "Ingevoerd(2)".
params.mldsting = true; // Status "Ingezien(3)".
}
if (fase & 2)
{
params.mldstacc = true; // Status "Geaccepteerd(4)".
params.mldstuit = true; // Status "Uitgegeven(7)".
}
}
if ((self > 0 || S("mld_restrict_mobile_to_me") == 1) && ruimte_key == -1 && ins_key == -1 && rsv_ruimte_key == -1)
{
params.behandel_key = user_key;
}
autfunction = ["WEB_MLDBOF", "WEB_MLDBO2"];
// De functie checkAutorisation(autfunction) geeft een Response.End indien er geen autorisatie voor autfunction wordt gevonden
var authparams = user.checkAutorisation(autfunction);
%>
<html>
<head>
<% FCLTMHeader.Generate({}); %>
</head>
<body>
<%
var sqln = "SELECT m.mld_melding_key"
+ " , m.mld_melding_einddatum"
+ " , mld_melding_status"
+ " , mld_melding_spoed"
+ " , mld_melding_omschrijving"
+ " , mld_melding_onderwerp"
+ " , mld_melding_flag"
+ " , DECODE(v.alg_plaatsaanduiding, '', DECODE (l.alg_locatie_omschrijving, '','',' ('||l.alg_locatie_omschrijving||')'), v.alg_plaatsaanduiding || DECODE(v.alg_plaatsomschrijving, '','' ,' (' || v.alg_plaatsomschrijving || ')'))"
+ " plaatsmelding"
+ " , CASE "
+ " WHEN COALESCE(sd.ins_srtdiscipline_prefix, '@') = '@'"
+ " THEN ''"
+ " ELSE sd.ins_srtdiscipline_prefix END ins_srtdiscipline_prefix"
+ " , " + lcl.xsqla('md.ins_discipline_omschrijving', 'md.ins_discipline_key')
+ " , " + lcl.xsqla('std.mld_stdmelding_omschrijving', 'std.mld_stdmelding_key');
if (S("mld_num_prefix_mode") == 1) // kostenplaats of afdeling
{
sqln += ", COALESCE((SELECT prs_kostenplaats_nr"
+ " FROM prs_kostenplaats k"
+ " WHERE m.prs_kostenplaats_key = k.prs_kostenplaats_key),"
+ " (SELECT prs_afdeling_naam"
+ " FROM prs_afdeling d"
+ " WHERE p.prs_afdeling_key = d.prs_afdeling_key)) mld_prefix";
}
// Voeg aan de sql het FROM en WHERE gedeelte toe
params.track_mldnew = false; // fac_tracking op MLDNEW niet gebruiken
sqln += mld.getfromwherelist_sql(autfunction, params);
sqln += " AND mld_melding_parentkey IS NULL"; // child-meldingen hoef ik mobiel niet te zien.
if (ruimte_key > -1 && ruimteKeyArr.length <= 1)
{
sqln += " AND (l.alg_locatie_key IS NULL OR v.alg_ruimte_key = " + ruimte_key + ")"; // PF: ik denk dat plaatsloze meldingen niet getoond hoeven worden als ruimtekey is gegeven, maar het staat er vast niet voor niks
}
if (ruimteKeyArr.length > 1)
{
sqln += " AND v.alg_ruimte_key IN (" + ruimteKeyArr.join(',') + ")";
}
if (ins_key > -1)
{
sqln += " AND m.mld_melding_key IN"
+ " (SELECT mld_melding_key FROM mld_melding_object WHERE mld_melding_object_verwijder IS NULL AND ins_deel_key = " + ins_key + ")";
}
if (rsv_ruimte_key > -1)
{
sqln += " AND m.mld_melding_key IN"
+ " (SELECT mld_melding_key FROM mld_melding WHERE res_rsv_ruimte_key = " + rsv_ruimte_key + ")";
}
if (ins_key == -1 && rsv_ruimte_key == -1 && ruimte_key == -1 && ruimteKeyArr.length == 0) { // die lagere keys zijn sterker, ook als ik evt niet ter plaatse ben
if (gebouw_key > -1)
{
sqln += " AND (l.alg_locatie_key IS NULL OR v.alg_gebouw_key = " + gebouw_key + ")";
}
if (locatie_key > -1)
{
sqln += " AND (l.alg_locatie_key IS NULL OR l.alg_locatie_key = " + locatie_key + ")";
}
if (verdieping_key > -1)
{
sqln += " AND (l.alg_locatie_key IS NULL OR v.alg_verdieping_key = " + verdieping_key + ")";
}
}
// apply 3D authorization to the locations and to the organisations (both ALG and PRS)
sqln = "("
+ discx3d (sqln,
"md.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"v.alg_gebouw_key",
"v.alg_verdieping_key",
"v.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
autfunction[0],
"",
2)
+ ") UNION ("
+ discx3d (sqln,
"md.ins_discipline_key",
"di.alg_regio_key",
"l.alg_district_key",
"l.alg_locatie_key",
"v.alg_gebouw_key",
"v.alg_verdieping_key",
"v.alg_ruimte_key",
"b.prs_bedrijf_key",
"b.prs_afdeling_key",
autfunction[1],
"",
2)
+ ")";
// Alleen groepering toepassen indien er 3 of meer vakgroepen zijn en meer dan 10 meldingen.
// Bepaal aantal vakgroepen en aantal meldingen.
var cnt_vakgr = 0; // Aantal vakgroepen.
var cnt_mld = 0; // Aantal meldingen.
var vakgroep = "";
var show_vakgroepen = false;
// PF: Dit is wel een hele dure query (net zo als de echte) die je wilt voorkomen wanneer het kan zeg!
// Bijvoorbeeld niet als ik specifieke parameters gebruik, maar liever nog minder vaak
if (ruimte_key == -1 && ins_key == -1) {
var sqln_count = "SELECT COUNT(ins_discipline_omschrijving) nr_vakgr"
+ " , ins_discipline_omschrijving vakgroep"
+ " FROM (" + sqln + ") rec2"
+ " GROUP BY ins_discipline_omschrijving";
var oRs = Oracle.Execute(sqln_count);
while (!oRs.eof)
{
if (!cnt_vakgr) // alleen de eerste
vakgroep = oRs("vakgroep").Value;
cnt_vakgr++;
cnt_mld += oRs("nr_vakgr").Value;
oRs.MoveNext();
}
oRs.Close();
if (cnt_vakgr > 2 && cnt_mld > 10)
show_vakgroepen = true;
if (res_ruimte_key == -1) // Anders zit de plaats al in de titel
{
if (cnt_vakgr == 1)
subject += " " + vakgroep;
else if (grp_sel != "")
subject += " " + grp_sel;
}
}
// PF: lijkt me ook niet altijd goed: wat is nou mogelijk zinvol?
sqln = "SELECT * FROM (" + sqln + ") rec2"
+ (grp_sel == ""
? ""
: " WHERE ins_discipline_omschrijving = " + safe.quoted_sql(grp_sel))
+ " ORDER BY"
+ (grp_sel == ""
? " ins_discipline_omschrijving,"
: "") // is dus al vertaald
+ (S("mld_bo_sort_descending") == 0
? " mld_melding_einddatum"
: " mld_melding_key DESC"); //ORDER BY mld_melding_key
function fnUrgentie(oRs)
{
var displ = "";
switch (oRs("mld_melding_spoed").Value)
{
case 1 : displ = "<i class='fa fa-fw fa-lg fa-exclamation-triangle' id='urg_kritiek1'>&nbsp;</i>"; break;
case 2: displ = "<i class='fa fa-fw fa-lg fa-exclamation-triangle' id='urg_hoog1'>&nbsp;</i>"; break;
//case 3: Normaal heeft geen plaatje.
case 4: displ = "<i class='fa fa-fw fa-lg fa-arrow-circle-o-down' id='urg_laag1'>&nbsp;</i>"; break;
case 5: displ = "<i class='fa fa-fw fa-lg fa-pause-circle-o' id='urg_hold1'>&nbsp;</i>"; break;
}
displ = (oRs("mld_melding_status").Value == 2? L("lcl_new") : "") + displ;
return displ;
}
function fncolLink(oRs)
{
var url = "";
if (show_vakgroepen && grp_sel == "")
{
url = rooturl + "/appl/pda/mld_list.asp?grp=" + safe.url(oRs("ins_discipline_omschrijving").Value)
+ (self > -1? "&self=" + self : "")
+ (behandel_key != -1? "&behandel=" + behandel_key : "")
+ (status.length > 0? "&status=" + status.join(",") : "")
+ (ruimte_key > -1? "&ruimte_key=" + ruimte_key : "")
+ (ins_key > -1? "&ins_key=" + ins_key : "")
+ "&fase=" + fase;
for (flagkey=0; flagkey < S("mld_melding_flags"); flagkey++)
{
url += ((getQParam("flag" + flagkey, "off") == "on") ? "&flag" + flagkey + "=on" : "");
}
}
else
{
url = rooturl + "/appl/pda/melding.asp?mld_key=" + oRs("mld_melding_key").Value;
}
return url;
};
function fncolGroup(oRs)
{
return safe.html(oRs("ins_discipline_omschrijving").Value);
};
function fncolHeader(oRs)
{
var tekst = (oRs("ins_srtdiscipline_prefix").Value || "") + oRs("mld_melding_key").Value;
if (S("mld_num_prefix_mode") > 0 && oRs("mld_prefix").Value)
tekst = oRs("mld_prefix").Value + "#" + tekst;
return tekst;
};
function fnDetailColumn(oRs)
{
var tekst = oRs("mld_stdmelding_omschrijving").Value;
if (ruimte_key > -1 || ins_key > -1 || (cnt_vakgr > 1 && grp_sel == ""))
tekst += " (" + oRs("ins_discipline_omschrijving").Value + ")";
return tekst;
}
function fncolSubHeader(oRs)
{
var flagkey = (S("mld_melding_flags") > 0 && urole!="fe" && oRs("mld_melding_flag").Value)||0;
return "<div class='listbodykop'>" + (oRs("plaatsmelding").Value? "<i class='fa fa-map-marker'></i>&nbsp;" + safe.html(oRs("plaatsmelding").Value) + "<br>" : "")
+ "<i class='fa fa-clock-o'></i>&nbsp;" + toDateTimeString(oRs("mld_melding_einddatum").Value, false, false, true)
+ (flagkey ? "<br><i class='fa fa-circle mldflag"+flagkey+"'></i>&nbsp;" + L("lcl_mld_flag" + flagkey) : "")
+ "</div>"
+ (oRs("mld_melding_onderwerp").Value != null ? "<span class='subject'><i class='fa fa-chevron-right'></i>&nbsp;"+safe.html(oRs("mld_melding_onderwerp").Value) + "</span><br>" : "")
+ (oRs("mld_melding_omschrijving").Value? "<div class='listbodytext'>" + safe.html(shorttxt(oRs("mld_melding_omschrijving").Value, S("rs_mobile_maxchar"))) + "</div>" : "");
};
function fncolStatus(oRs)
{
var mldStatus = parseInt(oRs("mld_melding_status").Value);
var mld_status = mld.getmldstatustext(mldStatus);
return mld_status;
}
PAGE_START({datacache:false});
%>
<script type="text/javascript" >
function openFilterPanel()
{
$(function ()
{
$('.mldFilterPanel:visible').panel('open');
});
}
function mld_filter()
{
document.forms.mld_filter_list.submit();
}
function mld_home()
{
window.location.href = rooturl + "/appl/pda/Facilitor.asp";
}
</script>
<div data-role="panel" data-display="overlay" id="mldFilterP" class="mldFilterPanel">
<form name="u2" id="mld_filter_list" action="<%=rooturl%>/appl/pda/mld_list.asp" method="get">
<input type="hidden" name="grp" id="grp" value="<%=grp_sel%>">
<input type="hidden" name="qrc" id="qrc" value="<%=(qrc ? 1 : 0)%>">
<input type="hidden" name="deelsrtcont_key" id="deelsrtcont_key" value="<%=deelsrtcont_key%>">
<input type="hidden" name="meldbron_key" id="meldbron_key" value="<%=meldbron_key%>">
<%
if (S('mld_melding_flags') > 1)
{
CONTROLGROUP_START();
for (flagkey=0; flagkey < S("mld_melding_flags"); flagkey++)
{ %>
<label for="flag<%=flagkey%>"><input type="checkbox" name="flag<%=flagkey%>" data-mini="true" id="flag<%=flagkey%>" <%=((checkboxParams[flagkey] == "on") ? "checked" : "")%>><i class="fa <%=flagkey==0?"fa-circle-o":"fa-circle"%> mldflag<%=flagkey%> mlds"></i>&nbsp;<%=safe.html(L("lcl_mld_flag"+flagkey))%></label><%
}
CONTROLGROUP_END();
}
if (S("mld_restrict_mobile_to_me") == 1 && self == -1)
{
%>
<input type="hidden" name="self" id="mldbehall" value="-1">
<% }
else
{
CONTROLGROUP_START();
%>
<input type="radio" name="self" id="mldbehall" data-mini="true" value="-1" <%=((self<=0) ? "checked" : "")%> />
<label for="mldbehall"><%=safe.html(L("lcl_mld_melding_all"))%></label>
<input type="radio" name="self" id="mldbehown" data-mini="true" value="1" <%=((self > 0) ? "checked" : "")%> />
<label for="mldbehown"><%=safe.html(L("lcl_mld_melding_own"))%></label>
<%
CONTROLGROUP_END();
}
CONTROLGROUP_START();
if (status.length == 0)
{
%>
<input type="checkbox" name="fase1" id="mldtebeh" value="1" <%=((fase & 1) ? "checked" : "")%> />
<label for="mldtebeh"><%=safe.html(L("lcl_mld_chk_bo_mldNew"))%></label>
<input type="checkbox" name="fase2" id="mldinbeh" value="2" <%=((fase & 2) ? "checked" : "")%> />
<label for="mldinbeh"><%=safe.html(L("lcl_mld_chk_bo_mldSelf"))%></label>
<input type="checkbox" name="fase4" id="mldafm" value="4" <%=((fase & 4) ? "checked" : "")%> />
<label for="mldafm"><%=safe.html(L("lcl_mld_chk_bo_mldAfm"))%></label>
<%
}
CONTROLGROUP_END();
CONTROLGROUP_START();
if (behandel_key < 0 && !(S("mld_restrict_mobile_to_me") == 1 && self == -1))
{
%>
<div>
<label style="float: left;" for="behandel"><%=safe.html(L("lcl_mld_no_handler"))%></label>
<select name="behandel" style="float: left;" id="behandel" data-role="slider" data-mini="true">
<option value="-2" <%=((behandel_key == -2) ? "selected" : "")%> ><%=safe.html(L("lcl_Yes"))%></option>
<option value="-1" <%=((behandel_key == -1) ? "selected" : "")%> ><%=safe.html(L("lcl_No"))%></option>
</select>
</div>
<% }
CONTROLGROUP_END();
CONTROLGROUP_START({ horizontal: true });
BUTTON(L("lcl_mld_filter"), {id: "search_submit", click: "mld_filter()", dataicon: "refresh", datarel: "close", dataajax: "true"});
BUTTON(L("lcl_home"), {id: "home", click: "mld_home()", dataicon: "home", datarel: "close"});
CONTROLGROUP_END();
%>
</form>
</div>
<%
var withContext = (ruimte_key > -1 || ins_key > -1 || rsv_ruimte_key > -1);
var p_useraction = {icon: "bars", action: "openFilterPanel()", label: L("lcl_back")};
HEADER({title: subject,
back: (!qrc && withContext),
useraction: (!withContext ? p_useraction : null),
addaction: rooturl + "/appl/pda/melding.asp?mld_key=-1" + (ins_key > -1? "&ins_key=" + ins_key : "") + (ruimte_key > -1? "&ruimte_key=" + ruimte_key : "") + "&meldbronkey=" + meldbron_key + (deelsrtcont_key>-1 ? "&deelsrtcont_key=" + deelsrtcont_key : "")});
CONTENT_START();
var rst = new ResultsetTable({sql: sqln,
keyColumn: "mld_melding_key",
groupColumn: (grp_sel == ""? fncolGroup : null),
groupSelect: show_vakgroepen? grp_sel : null,
linkColumn: fncolLink,
headerColumn: fncolHeader,
detailColumn: fnDetailColumn,
asideColumn: fnUrgentie,
subheaderColumn: fncolSubHeader,
ID: "complainstable",
showAll: true
});
var cnt = rst.processResultset();
CONTENT_END();
FOOTER();
PAGE_END();
%>
</body>
</html>