Files
Facilitor/APPL/MJB/mjb_search_list.asp
Maykel Geerdink 244a9c2a0a FSN#51437: Gereedmelden van periodieke taak geeft Javascript fout - groupby is not defined.
svn path=/Website/branches/v2017.2/; revision=36193
2017-12-04 12:19:09 +00:00

870 lines
37 KiB
Plaintext

<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mjb_search_list.asp
Description:
Parameters:
Context:
Note:
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/resultset_table_v2.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../ins/ins.inc" -->
<%
FCLTHeader.Requires({plugins: ["jQuery"],
js : ["jquery-ui.js", "../ins/ins_list.js"]}); // Voor slepen en acties.
var urole = getQParamSafe("urole", ""); // Indien niet meegegeven, veronderstel dan frontend gebruik
// FORM parameters: de waarde indien aanwezig, anders null
// Vaak is een lege selectie ook een -1, dus dan is-ie wel aanwezig, maar hoeft niet
// als filter te worden toegepast. Dan is null dus gelijk aan -1, qua betekenis,
// Vandaar dat een default van -1 ipv null ook mag
// In eerste instantie identificeren we elk veld gewoon 1-op-1.
var outputmode = getQParamInt("outputmode", 0); // 0 = screen, 1 = print, 2 = excel etc
var print = (outputmode == 1 || outputmode == 5);
var excel = (outputmode == 2 || outputmode == 6);
var showall = getQParamInt("showall", 0) == 1;
// Er zijn zeker enkele INSUSE én CTRUSE rechten nodig.
var authparamsINSUSE = user.checkAutorisation("WEB_INSUSE");
var authparamsCTRUSE = user.checkAutorisation("WEB_CTRUSE");
var hasWriteCTRUSE = authparamsCTRUSE.ALGwritelevel < 9 && authparamsCTRUSE.PRSwritelevel < 9;
// Rechten om exception (xcp) waarden van de inspectie/taak te kunnen zien en om details van het object te kunnen zien.
var authparamsINSMAN = user.checkAutorisation("WEB_INSMAN", true);
var hasReadINSMAN = authparamsINSMAN && authparamsINSMAN.ALGreadlevel < 9 && authparamsINSMAN.PRSreadlevel < 9;
var hasWriteINSMAN = authparamsINSMAN && authparamsINSMAN.ALGwritelevel < 9 && authparamsINSMAN.PRSwritelevel < 9;
// Rechten om alg (locatie) details te kunnen zien.
var authparamsALGUSE = user.checkAutorisation("WEB_ALGUSE", true);
var hasReadALGUSE = authparamsALGUSE && authparamsALGUSE.ALGreadlevel < 9 && authparamsALGUSE.PRSreadlevel < 9;
var authparamsALGMAN = user.checkAutorisation("WEB_ALGMAN", true);
var hasReadALGMAN = authparamsALGMAN && authparamsALGMAN.ALGreadlevel < 9 && authparamsALGMAN.PRSreadlevel < 9;
var mjb_start_year = S("mjb_start_year");
var mjb_freeze_year = S("mjb_freeze_year");
var groupby = getQParamInt("groupby");
var fulldetails = (groupby == 7); // Geen aggregate, dan kun je van alles manipuleren
var fromyear = getQParamInt("fromyear", mjb_freeze_year);
var toyear = getQParamInt("toyear");
var deel = getQParam("deel", ""); // Identieficatie
var groep = getQParam("groep", ""); // Groep
if (groep == -1) groep = "";
var categorie_key = getQParamInt("categorie_key", -1); // Categorie
//var reg_key = getQParamInt("regiokey", -1); // Regio
var dist_key = getQParamInt("districtkey", -1); // District
var loc_key = getQParamInt("locatiekey", -1); // Locatie
var bld_key = getQParamInt("gebouwkey", -1); // Gebouw
var disc_key = getQParamInt("disc", -1);
var srtgroep_key = getQParamInt("srtgroep", -1);
var srtdeel_key = getQParamInt("srtdeel", -1);
var srtcontrole = getQParamIntArray("srtcontrole", []); // Taak
var inflatiepct = S("mjb_inflation");
var inflatiefactor = 1 + (inflatiepct / 100);
var frequentie = getQParamIntArray("frequentie", []); // Array met frequenties.
var incbtw = getQParamInt("incbtw", 0) == 1; // Lijst inclusief BTW weergeven.
var scenario = getQParamInt("scenario", 1); // Scenario
var actsit = getQParamInt("actsit", 0) == 1; // Ook actuele situatie.
var mjbshowempty = getQParamInt("mjbshowempty", 0) == 1; // Ook lege regels.
// FORM status checkboxes
var mjbMoved = getQParamInt("mjbMoved", 0) == 1; // Verschoven.
var mjbFreezed = getQParamInt("mjbFreezed", 0) == 1; // In behandeling.
var mjbXcped = getQParamInt("mjbXcped", 0) == 1; // Aangepast.
var ctrdisc_key = getQParamInt("ctrdisc_key", -1); // Ctrdiscipline
if (ctrdisc_key > 0)
lcl.set_dialect(ctrdisc_key, "INS_TAB_DISCIPLINE_KEY");
var filterParams = { deel: (deel != ""? deel : null),
groep: (groep != ""? groep : null),
categorie_key: categorie_key,
dist_key: dist_key,
loc_key: loc_key,
bld_key: bld_key,
disc_key: disc_key,
insgroup_key: srtgroep_key,
objsrt_key_arr: srtdeel_key,
mjbgroup: groupby,
mjbtoyear: toyear,
mjbsrtcontr: srtcontrole.join(","),
mjbinfl_pct: inflatiepct,
mjbfreq: frequentie.join(","),
mjbincbtw: incbtw
};
var transitParam = buildTransitParam(["disc", "srtgroep", "srtdeel", "srtcontrole", "inflatie",
"frequentie", "incbtw", "toyear", "alg_startlevel", "alg_endlevel",
"deel", "groep", "categorie_key", "scenario", "actsit",
"mjbMoved", "mjbFreezed", "mjbXcped"]);
%>
<html>
<head>
<style>
div#timetip {position:absolute;border:1px solid #666;background-color:#fff;padding:2px;z-index:999;display:none;}
</style>
<%
FCLTHeader.Generate({ outputmode: outputmode });
if (outputmode == 0) {
%>
<script type="text/javascript">
var urole = "<%=urole%>";
var fulldetails = <%=fulldetails? 1 : 0%> == 1;
var dist_key = <%=dist_key%>;
var loc_key = <%=loc_key%>;
var bld_key = <%=bld_key%>;
var disc_key = <%=disc_key%>;
var srtgroep_key = <%=srtgroep_key%>;
var srtdeel_key = <%=srtdeel_key%>;
var groep = "<%=groep%>";
var categorie_key = <%=categorie_key%>;
var srtcontrole = "<%=srtcontrole.join(",")%>";
var frequentie = "<%=frequentie.join(",")%>";
var incbtw = <%=incbtw? 1 : 0%>;
var groupby = <%=groupby%>;
var deel = "<%=deel%>";
var mjbMoved = <%=mjbMoved? 1 : 0%>;
var mjbFreezed = <%=mjbFreezed? 1 : 0%>;
var mjbXcped = <%=mjbXcped? 1 : 0%>;
function naargebouw(bld_key, deze)
{
if (fulldetails)
var url = "appl/alg/alg_gebouw.asp?key=" + bld_key;
else
var url = "appl/mjb/mjb_search.asp?autosearch=1&groupby=7<%=transitParam%>&gebouw_key=" + bld_key;
FcltMgr.openDetail(url, $(deze).text());
}
function naardeel(ins_key, deze)
{
var url = "appl/ins/ins_deel.asp?ins_key=" + ins_key + "&urole=bo";
FcltMgr.openDetail(url, $(deze).text());
}
function exception(ins_key, srtcont_key, scen_key, ttl)
{
var url = "../ins/ins_xcp.asp?ins_key=" + ins_key + "&srtcont_key=" + srtcont_key + "&scen_key=" + scen_key + "&urole=bo";
FcltMgr.openModalDetail(url, { titel: L("lcl_ins_change_xcp")+" "+ttl, callback: <%=bld_key > 0? "FcltMgr.reload ": "null"%> });
}
function moveplan(evt, ins_key, srtcont_key, scen_key, dlsrtcont_key, startdatum, hascontrole, jaar)
{
FcltMgr.stopPropagation(evt);
// Als er al een inspectie is geweest dan niet meer naar startdatum kijken.
// Situatie als het jaar gelijk is aan de startdatum:
// Geplande inspectie record aanwezig: Nee: (dlsrtcont_key < 0) Niets doen => refresh en return.
// Ja: (dlsrtcont_key < 0) Door naar ins_inspect_save.asp op record te verwijderen.
if (!jaar || (!hascontrole && (startdatum > 0 && ((dlsrtcont_key < 0 && jaar <= new Date(startdatum).getFullYear()) || (dlsrtcont_key > 0 && jaar < new Date(startdatum).getFullYear())))))
{
FcltCallbackRefresh({success: true});
return;
}
var minjaar = <%=S("mjb_freeze_year")%> || (new Date()).getFullYear();
var savemode, plandatum;
if (jaar >= minjaar && jaar < (minjaar + <%=S("mjb_show_years")%>))
{
savemode = "P"; // (absolute) plan-mode
plandatum = new Date(jaar, 11, 31).getTime();
}
else if (jaar > -<%=S("mjb_show_years")%> && jaar < <%=S("mjb_show_years")%>)
{
savemode = "R" // relative plan-mode
plandatum = jaar;
}
else
{
FcltCallbackRefresh({success: true});
return;
}
var data = { savemode : savemode,
ins_keys : ins_key,
srtcont_key_arr : srtcont_key,
deelsrtcont_key : dlsrtcont_key,
scen_key_arr : scen_key,
plandatum : plandatum,
mjob : 1
};
protectRequest.dataToken(data);
$.post("../ins/ins_inspect_save.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
$(function ()
{
$('td.mjbjaar').droppable(
{ drop: function(event, ui)
{
$td = $(this);
$td.css('border', '3px solid grey');
// Zoek de TH erbij. Daarin staat het drop-jaartal
var $th = $td.closest('table').find('th').eq($td.index()); // werkt omdat we geen colspan's hebben
var row = $td.closest('tr')[0];
var insData = eval("(" + row.getAttribute("ROWDATA") + ")");
moveplan(null, insData.insKey, insData.insSrtControleKey, insData.insScenKey, insData.insDeelSrtContrKey, insData.insStartDatum, insData.insHasControle, $th.text());
}
});
$('span.draggable').each(function ()
{
var element = $(this);
element.draggable(
{
scroll: false,
axis: "x",
revert: "invalid"
});
});
$("#mjobtable").mousemove(function (event)
{
$('#timetip').show();
$td = $(event.target).closest("td");
$tr = $(event.target).closest("tr");
if (!$td.hasClass('mjbjaar'))
{
$('#timetip').hide();
return;
}
// Zoek de TH erbij. Daarin staat het drop-jaartal
var $th = $td.closest('table').find('th').eq($td.index()); // werkt omdat we geen colspan's hebben
var jaar = $th.text();
// Als de inspectie gepland is (tr heeft class "mjbplanned") dan de oorspronkelijke datum tonen.
// Oorspronkelijke datum alleen tonen op het schuifbare bedrag, anders gewoon jaar van de kolom.
if ($tr.hasClass("mjbplanned") && $td.find("span").hasClass("draggable"))
{ // Inspectie is gepland.
var data = eval('(' + $tr[0].getAttribute("ROWDATA") + ')');
if (data.insCtrControleType == 1)
// Oorspronkelijke jaar is onbepaald.
jaar = L("lcl_mjb_original").format(L("lcl_ins_controle_first").toLowerCase());
else
// Oorspronkelijke jaar weergeven.
jaar = L("lcl_mjb_original").format(data.org_nextdate);
}
$("#timetip").html(jaar)
.css({ left: parseInt(event.pageX, 10) + 30 + "px",
top: parseInt(event.pageY, 10) - 30 + "px"
})
.show();
});
$("#mjobtable").mouseout(function ()
{
$('#timetip').hide();
});
})
var mjbDeelKeyArray = [];
var mjbSrtContrKeyArray = [];
var mjbDlSrtContKeyArr = [];
var mjbScenKeyArray = [];
var mjbStartDatumKeyArray = [];
var mjbHasControleArray = [];
function dragDropCallback(json, textStatus, tweede)
{
for (var i = 0; i < mjbDeelKeyArray.length; i++)
{
moveplan(null, mjbDeelKeyArray[i], mjbSrtContrKeyArray[i], mjbScenKeyArray[i], mjbDlSrtContKeyArr[i], mjbStartDatumKeyArray[i], mjbHasControleArray[i], json.year);
}
FcltCallbackRefresh(json, textStatus);
}
function mjb_dragdrop(rowArray, isMulti)
{
mjbDeelKeyArray = [];
mjbSrtContrKeyArray = [];
mjbDlSrtContKeyArr = [];
mjbScenKeyArray = [];
mjbStartDatumKeyArray = [];
mjbHasControleArray = [];
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
mjbDeelKeyArray.push(rowdata.insKey);
mjbSrtContrKeyArray.push(rowdata.insSrtControleKey);
mjbDlSrtContKeyArr.push(rowdata.insDeelSrtContrKey);
mjbScenKeyArray.push(rowdata.insScenKey);
mjbStartDatumKeyArray.push(rowdata.insStartDatum);
mjbHasControleArray.push(rowdata.insHasControle);
}
url = "../mjb/mjb_dragdropyear.asp?ctrdisc_key=<%=ctrdisc_key%>&ins_keys=" + mjbDeelKeyArray.join(",");
FcltMgr.openModalDetail(url, L("lcl_mjb_dragdrop"), {callback: dragDropCallback});
}
function mjb_moveYearBack(rowArray, isMulti)
{
var ins_key_arr = [];
var srtcont_key_arr = [];
var dlsrtcont_key_arr = [];
var scen_key_arr = [];
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
// Delete the following ins_deelsrtcontrole records
if (rowdata.insDeelSrtContrKey != null && rowdata.insDeelSrtContrKey > -1 &&
rowdata.insDeelSrtContrStatus != null && rowdata.insDeelSrtContrStatus == 0) // Ingepland (0)
{
ins_key_arr.push(rowdata.insKey);
srtcont_key_arr.push(rowdata.insSrtControleKey);
dlsrtcont_key_arr.push(rowdata.insDeelSrtContrKey);
scen_key_arr.push(rowdata.insScenKey);
}
}
if (ins_key_arr.length)
{
var data = { savemode : "D", // delete-mode
ins_keys : ins_key_arr.join(","),
srtcont_key_arr : srtcont_key_arr.join(","),
dlsrtcont_key_arr: dlsrtcont_key_arr.join(","),
scen_key_arr : scen_key_arr.join(","),
mjob : 1
};
protectRequest.dataToken(data);
$.post("../ins/ins_inspect_save.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
// else: er hoeven geen taken worden teruggezet
}
// Nu in "MJOP Scenario's" aan te roepen.
//function insInstituteScen()
//{
// var subject = L("lcl_mjb_inst_scen");
// var url = "../mjb/mjb_institute_scen.asp";
// FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
//}
//function insAddTCScen()
//{
// var subject = L("lcl_mjb_incl_scen");
// var url = "../mjb/mjb_incl_scen.asp?totalcopy=1";
// FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
//}
function insAddScen(rowArray)
{
var insKeyString = getKeyString(rowArray);
var srtcontrolekeyArray = new Array();
var deleted = 0;
for (var i = 0; i < rowArray.length; i++)
{
rowdata = eval('(' + rowArray[i].getAttribute("ROWDATA") + ')');
// Scenario's kunnen niet opgenomen worden in een scenario. Hier de scenario's er al uit filteren.
if (!rowdata.insScenKey || rowdata.insScenKey == 1)
{ // Het is geen scenario. De periodieke taak kan in een scenario worden opgenomen. De inspectie aan het array toevoegen.
srtcontrolekeyArray[i] = rowdata.insSrtControleKey;
}
else
{ // Het is een scenario. De ins_key verwijderen uit de lijst.
var insKeyString_arr = insKeyString.split(",");
insKeyString_arr.splice(i - deleted, 1);
insKeyString = insKeyString_arr.join(",");
deleted++;
}
}
if (insKeyString.length > 0)
{
if (<%=scenario%> > 1)
{
var data = { ins_keys: insKeyString,
srtcont_keys: srtcontrolekeyArray.join(","),
scen_key: <%=scenario%>
};
protectRequest.dataToken(data);
$.post("../mjb/mjb_incl_scen_save.asp"
, data
, FcltCallbackRefresh
, "json"
);
}
else
{
var subject = L("lcl_mjb_incl_scen");
var url = "../mjb/mjb_incl_scen.asp?ins_keys=" + insKeyString + "&srtcont_keys=" + srtcontrolekeyArray.join(",");
FcltMgr.openModalDetail(url, subject, {callback: FcltCallbackRefresh});
}
}
// else: alle taken zitten al in het scenario.
}
</script>
<%
} //if (outputmode == 0)
%>
</head>
<body id="listbody">
<div id='timetip'></div>
<%
var jaren = [];
for (var i = fromyear; i <= toyear; i++)
jaren.push(i);
// Start building the query to fetch all objects satisfying
var mjbparams = { scenario: scenario,
fulldetails: fulldetails,
actsit: actsit,
dist_key: dist_key,
loc_key: loc_key,
bld_key: bld_key,
disc_key: disc_key,
srtgroep_key: srtgroep_key,
srtdeel_key: srtdeel_key,
groep: groep,
categorie_key: categorie_key,
srtcontrole: srtcontrole,
frequentie: frequentie,
incbtw: incbtw,
inflatiefactor: inflatiefactor,
toyear: toyear,
groupby: groupby,
deel: deel,
mjbMoved: mjbMoved,
mjbFreezed: mjbFreezed,
mjbXcped: mjbXcped,
jaren: jaren
};
var sql = ins.getmjblist_sql(mjbparams);
// ========== now 'sql' holds the main SQL-statement voor de mjbsearchlist.
///////////////////////////////////////////////////////////
//
// Now let's present the results:
//
//////////////////////////////////////////////////////////
/***********************************************
* Callback functions ResultsetTable
**********************************************/
function fnkeyFunction(oRs)
{
if (fulldetails)
return oRs("ins_deel_key").Value; // + "-" + oRs("ins_srtcontrole_key").Value;
else
return oRs("keyColumn").Value;
}
function fnrowData(oRs)
{
var data = {};
if (fulldetails)
{
data.insKey = oRs("ins_deel_key").Value;
data.insSrtControleKey = oRs("ins_srtcontrole_key").Value;
data.insDeelSrtContrKey = oRs("ins_deelsrtcontrole_key").Value? oRs("ins_deelsrtcontrole_key").Value : -1;
data.insDeelSrtContrStatus = oRs("ins_deelsrtcontrole_status").Value == null? -1 : oRs("ins_deelsrtcontrole_status").Value;
data.org_nextdate = oRs("org_nextdate").Value; // Eerstaankomende inspectie vandaag of in de toekomst.
data.insCtrControleType = oRs("ctr_controle_type").Value;
data.insScenKey = oRs("ins_scenario_key").Value;
data.insStartDatum = oRs("startdatum").Value != null? new Date(oRs("startdatum").Value).getTime() : -1;
data.insHasControle = oRs("hascontroles").Value? oRs("hascontroles").Value : -1;
}
else
{
data.keyColumn = oRs("keyColumn").Value;
}
return JSON.stringify(data);
}
function fnrowClass(oRs)
{
if (!fulldetails)
return "";
var scen_key = oRs("ins_scenario_key").Value;
var lclass = scen_key == 1 && oRs("ins_srtcontroledl_xcp_key").Value != null? "mjbxcp" : "mjbstd";
if (scen_key > 1)
lclass += " scenerized1";
if (oRs("isPlanned").Value == 1)
lclass += " mjbplanned";
return lclass;
}
// true als er *ergens* een bedrag is ingevuld
function fnrowFilter(oRs)
{
if (mjbshowempty)
return true;
for (var j = 0; j < jaren.length; j++)
{
if (oRs(String(jaren[j])).Value != null) // Wel regels met een bedrag van 0 i.p.v. null tonen. Die moeten wel geaccodeerd worden ook al kosten deze niets.
return true;
}
return false;
}
function fnrowActionEnabler(oRs)
{
var data = {};
var eFinishMjb = false;
var eFreeze = false;
var eAddScen = false;
if (fulldetails)
{ // Functie ins.func_enabled_deel kost tijd om voor elke regel uit te voeren.
// Query uit ins.func_enabled_deel samenvoegen met query van dit overzicht is bijna niet te doen.
// Inspectie acties alleen zichtbaar in het overzicht gegroepeerd naar Taken. Het gebouw filter is dan al vaak ingevuld.
var this_ins = ins.func_enabled_deel(oRs("ins_deel_key").Value,
{ srtcont_key: oRs("ins_srtcontrole_key").Value,
deelsrtcont_key: oRs("ins_deelsrtcontrole_key").Value? oRs("ins_deelsrtcontrole_key").Value : -1,
scen_key: oRs("ins_scenario_key").Value
});
eFinishMjb = this_ins.canInspFinishMjb;
eFreeze = this_ins.canInspFreeze;
eAddScen = true;
}
var data = {eFinishMjb: eFinishMjb, eFreeze: eFreeze, eAddScen: eAddScen};
return data;
}
function fnHasScenario(oRs)
{
if (oRs("scenario_aantal").Value > 0)
{
return "<nobr>" + (oRs("scenario_aantal").Value > 1? "*" : "") + "<i class='fa fa-fw fa-clone' title='" + safe.htmlattr(oRs("scenario_oms").Value) + "'></i>" + "</nobr>"
}
else
return "";
}
function fnGebouw(oRs)
{
var isSenario = oRs("ins_scenario_key").Value > 1;
if ((hasReadALGUSE || hasReadALGMAN) && !isSenario)
{
return "<span class='details' title='{2}' onclick='naargebouw({0}, this)'>{1}</span>".format(oRs("alg_gebouw_key").Value, safe.htmlattr(oRs("alg_gebouw_omschrijving").Value), (fulldetails ? safe.htmlattr(L("lcl_estate_gebouw_title")): L("ins_srtcontrole_m")));
}
else
return safe.html(oRs("alg_gebouw_omschrijving").Value);
}
function fnDeel(oRs)
{ // Alleen voor groupby Element(6) en Taak(7)
var isSenario = oRs("ins_scenario_key").Value > 1;
if (hasReadINSMAN && !isSenario)
{
return "<span class='details' title='{2}' onclick='naardeel({0}, this)'>{1}</span>".format(oRs("keyColumn").Value, safe.html(oRs("ins_deel_omschrijving").Value), (oRs("ins_deel_opmerking").Value == null ? safe.htmlattr(L("lcl_mld_deel_details")) : safe.htmlattr(oRs("ins_deel_opmerking").Value)));
}
else
return "<span title='{2}'>{1}</span>".format(oRs("keyColumn").Value, safe.htmlattr(oRs("ins_deel_omschrijving").Value), safe.htmlattr(oRs("ins_deel_opmerking").Value));
}
function fnSrtcontrole(oRs)
{
var hasXcp = oRs("ins_srtcontroledl_xcp_key").Value != null;
if ((hasXcp && hasReadINSMAN) || (hasWriteCTRUSE && hasWriteINSMAN))
{
var fncall = "exception({0}, {1}, '{2}', '{3}')"
.format(oRs("ins_deel_key").Value,
oRs("ins_srtcontrole_key").Value,
oRs("ins_scenario_key").Value,
safe.jsstring(oRs("ins_deel_omschrijving").Value));
return "<span class='details' onclick='{0}'>{1}</span>"
.format(safe.htmlattr(fncall),
safe.html(oRs("ins_srtcontrole_omschrijving").Value));
}
else
return safe.html(oRs("ins_srtcontrole_omschrijving").Value);
}
function fnfnBedrag(jaar) // altijd afronden
{
return function (oRs)
{
if (oRs(jaar).Value == null)
return "";
var v = safe.curr(Math.round(oRs(jaar).Value), true);
return v;
}
}
function fnfnBedragNumber(jaar) // Voor optellen
{
return function (oRs)
{
return Math.round(oRs(jaar).Value);
}
}
function totalShow(column, rowNum)
{
return safe.curr(column.totalsum, true);
}
// Voor de laatste kolom
function fnTotal(oRs)
{
var s = 0;
for (var j = 0; j < jaren.length; j++)
{
s = s + Math.round(oRs(String(jaren[j])).Value);
}
return s;
}
function fnTotalText(oRs)
{
return safe.curr(fnTotal(oRs), true);
}
var doneclik = {}; // Altijd alleen de eerste klikken
function fnfnClickBedrag(jaar) // altijd afronden
{
return function (oRs)
{
if (oRs(jaar).Value == null)
return "";
var v = Math.round(oRs(jaar).Value);
var org_v = Math.round(oRs(jaar + "_ORGBEDRAG").Value);
if (v == 0) // (jaar >= vervaljaar) //
{
var vervaljaar = oRs("vervaljaar").Value;
var afbouwtijd = oRs("afbouwtijd").Value || 0;
if (vervaljaar != null && jaar > vervaljaar - afbouwtijd) // Als 2022 vervaljaar is en afbouwtijd is 2 jaar, dan 2020 nog 0 tonen.
return "";
}
if (v != org_v) {
if (outputmode == 0) {
v = "<span class='mjborgbedrag' title='{1}'>{0}</span>".format(safe.curr(v, true), L('lcl_valutasign') + safe.curr(org_v, true));
} else {
v = "{0}".format(safe.curr(v, true));
}
}
var deel_key = oRs("ins_deel_key").Value;
var srtcont_key = oRs("ins_srtcontrole_key").Value;
if ((deel_key + ":" + srtcont_key) in doneclik )
return safe.curr(v, true);
doneclik[deel_key + ":" + srtcont_key] = 1;
var scen_key = oRs("ins_scenario_key").Value;
// INSUSE read rechten heb je al nodig om dit overzicht te zien.
// Inspecties in de status gestart(2) of gereedgemeld(5) mogen niet drag en drop zijn. Planningsdatum is daarvan niet aan te passen.
return "<span" + (hasWriteCTRUSE? " class='" + (oRs("canBePlanned").Value == 1 && (scenario == 1 || scen_key > 1 || oRs("hasscenario2").Value == 1)? "details draggable" : "") + "'" : "") + ">{0}</span>".format(safe.curr(v, true))
}
}
function fnfncolClass(jaar)
{
return function (oRs)
{
var freezeclass = "";
if (fulldetails)
{
var vervaljaar = oRs("vervaljaar").Value;
var afbouwtijd = oRs("afbouwtijd").Value || 0;
if (vervaljaar != null && jaar > vervaljaar - afbouwtijd) // Afzien van taken/vervanging/inspecties. Geen kosten meer.
{
if (vervaljaar != null && afbouwtijd != null && jaar > vervaljaar - afbouwtijd && jaar <= vervaljaar)
return "mjbjaar mjbafbouw" + freezeclass;
else if (vervaljaar != null && jaar > vervaljaar)
return "mjbjaar mjbverval";
}
else
{
if (jaar == mjb_freeze_year && oRs("ins_deelsrtcontrole_status").Value == 2)
freezeclass = " mjbfreezed";
}
}
return "mjbjaar" + freezeclass;
}
}
function fncolCloneClass()
{
return function (oRs)
{
if (oRs("scenario_aantal").Value > 0)
{
return "mjbcloned"
}
else
return "";
}
}
var buttons = [];
//buttons.push({ icon: "plus.png", title: L("lcl_mjb_incl_scen"), action: 'insAddTCScen()' });
//buttons.push({ icon: "plus.png", title: L("lcl_mjb_inst_scen"), action: 'insInstituteScen()' });
buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" });
buttons.push({ icon: "legenda.png", title: L("lcl_ins_controle_legenda"), action: 'openLegenda()' });
var rst = new ResultsetTable({ keyColumn: fnkeyFunction,
sql: sql,
ID: "mjobtable",
rowData: fnrowData,
rowClass: fnrowClass,
rowFilter: fnrowFilter,
//suppressKeyRepeat: "alg_locatie_omschrijving",
rowActionEnabler: fnrowActionEnabler,
totalShow: totalShow,
flexModule: "INS",
multiple: true,
filterParams: filterParams,
outputmode: outputmode,
title: L("lcl_mjb_begroting") + (inflatiepct != 0 ? " "+L("lcl_mjb_inflation").format(safe.curr(inflatiepct)): ""),
showAll: showall,
buttons: buttons
});
//rst.addColumn(new Column({caption: L("level"), content: "ins_srtcontrole_level" /*, hasActions: true*/}));
if (fulldetails && scenario == 1)
rst.addColumn(new Column({caption: "<span title='{0}'>".format(safe.htmlattr(L("lcl_mjb_scenarios"))) + I("fa-clone") + "</span>", content: fnHasScenario }));
if (groupby == 1 || groupby == 2)
rst.addColumn(new Column({caption: L("lcl_district"), content: "alg_district_omschrijving"/*, purpose: (dist_key > -1 ? PRINTING_ONLY : PRINT_AND_VIEW)*/}));
if (fulldetails || groupby == 2)
rst.addColumn(new Column({caption: L("lcl_building"), content: fnGebouw }));
if (!fulldetails)
{
if (groupby > 2) rst.addColumn(new Column({caption: L("lcl_discipline"), content: "ins_discipline_omschrijving"}));
if (groupby > 3) rst.addColumn(new Column({caption: L("lcl_obj_group"), content: "ins_srtgroep_omschrijving"}));
if (groupby > 4) rst.addColumn(new Column({caption: L("lcl_obj_sort"), content: "ins_srtdeel_omschrijving"}));
}
if (groupby > 5)
{
rst.addColumn(new Column({caption: L("lcl_ins_object"), content: fnDeel}));
rst.addColumn(new Column({caption: L("lcl_amount"), content: "ins_deel_aantal", datatype: "float"}));
rst.addColumn(new Column({caption: L("lcl_obj_unit"), content: "ins_srtdeel_eenheid"}));
}
if (fulldetails)
{
rst.addColumn(new Column({caption: L("lcl_ins_controle_srt"), content: fnSrtcontrole, tooltip: "ins_srtcontrole_opmerking"}));
}
for (var j = 0; j < jaren.length; j++)
{
if (fulldetails)
var content = fnfnClickBedrag(String(jaren[j]));
else
var content = fnfnBedrag(String(jaren[j]));
rst.addColumn(new Column({caption: String(jaren[j]), datatype: "number",
content: content,
columnClass: fnfncolClass(String(jaren[j])), // tdClass dan niet meer nodig.
total: true,
fnAmount: fnfnBedragNumber(String(jaren[j]))
}));
}
rst.addColumn(new Column({caption: L("lcl_Total"), datatype: "number",
tdClass: "mjbtotal",
content: fnTotalText,
fnAmount: fnTotal,
total: true
}));
/* de mogelijke acties */
if (fulldetails)
{
rst.addAction({ action: "mjb_dragdrop", caption: L("lcl_mjb_dragdrop"), multi: true, multiOnce: true, onlyMulti: true });
rst.addAction({ action: "mjb_moveYearBack", caption: L("lcl_mjb_move_back"), multi: true, multiOnce: true, onlyMulti: true });
}
if (scenario == 1)
{
rst.addAction({ action: "insFreeze", caption: L("lcl_mjb_freeze"), multi: true, multiOnce: true, enabler: "eFreeze", onlyMulti: true });
rst.addAction({ action: "insFinishMJOB", caption: L("lcl_ins_finish"), multi: true, multiOnce: true, enabler: "eFinishMjb", onlyMulti: true });
if (fulldetails)
rst.addAction({ action: "insAddScen", caption: L("lcl_mjb_incl_scen"), multi: true, multiOnce: true, enabler: "eAddScen", onlyMulti: true });
}
else if (fulldetails && scenario > 1 && actsit)
{
var oRs = Oracle.Execute("SELECT ins_scenario_omschrijving FROM ins_scenario WHERE ins_scenario_key = " + scenario);
var scen_oms = oRs("ins_scenario_omschrijving").Value;
oRs.Close();
rst.addAction({ action: "insAddScen", caption: L("lcl_mjb_incl_scen0").format(scen_oms), multi: true, multiOnce: true, enabler: "eAddScen", onlyMulti: true });
}
var count = rst.processResultset();
if (!excel && !print)
{
%>
<!-- LEGENDA -->
<script type="text/javascript">
function openLegenda()
{
params = { width: 500,
minWidth: 250,
minHeight: 10,
resizable: false,
position: {my: "right top", at: "right top + 30"},
title: "<%=L("lcl_ins_controle_legenda")%>"
}
$('div#legenda').dialog(params).dialog('open');
FcltMgr.resized();
}
</script>
<div id="legenda" style="display:none; line-height: 30px;">
<table id="inslegenda">
<tr class="mjbfreezed">
<td title="<%= L("lcl_mjb_started") %>"><%= L("lcl_ins_controle_gestart") %></td>
</tr>
<tr class="mjbplanned">
<td title="<%= L("lcl_mjb_moved") %>"><%= L("lcl_mjb_moved") %></td>
</tr>
<tr class="mjbxcp">
<td title="<%= L("lcl_mjb_overruled_xcp") %>"><%= L("lcl_mjb_overruled_xcp") %></td>
</tr>
<tr class="scenerized1">
<td title="<%= L("lcl_mjb_scenario") %>"><%= L("lcl_mjb_scenario") %></td>
</tr>
<tr>
<td class="mjbfreezed" title="<%= L("lcl_mjb_started") %>"><%= L("lcl_mjb_started") %></td>
</tr>
<tr class="mjbafbouw">
<td title="<%= L("lcl_mjb_phasingout") %>"><%= L("lcl_mjb_phasingout") %></td>
</tr>
<tr class="mjbverval">
<td title="<%= L("lcl_mjb_becancelled") %>"><%= L("lcl_mjb_becancelled") %></td>
</tr>
<tr class="mjbcloned">
<td title="<%= L("lcl_mjb_part_scenario") %>">
<span style="z-index:-1;"><%= L("lcl_mjb_part_scenario") %></span>
<span style="position:absolute; left:242px;"><%= I("fa-clone") %></span>
</td>
</tr>
<tr class="mjbcloned">
<td title="<%= L("lcl_mjb_part_scenario_m") %>">
<span style="z-index:-1;"><%= L("lcl_mjb_part_scenario_m") %></span>
<span style="position:absolute; left:242px;">*<%= I("fa-clone") %></span>
</td>
</tr>
</table>
</div>
<%
}
%>
</body>
</html>