Files
Facilitor/APPL/MGT/workflow_overview.asp
Koen Reefman eaee78e673 FCLT#71204 fa-sync naar alias; fa-fclt-refresh
svn path=/Website/trunk/; revision=55739
2022-05-02 11:01:42 +00:00

227 lines
9.6 KiB
Plaintext

<%@language = "javascript" %>
<%
/* $Revision$
$Id$
File: workflow_overview.asp
Description: Toont een workflow met flexkenmerken wat overzichtelijker
Parameters: start_key (REQUIRED)
Context:
Note: as-is
*/ %>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/iface.inc" -->
<head>
<%
var start_key = getQParamInt("start_key");
var colorise = getQParam("color", 1);
var authparams = user.checkAutorisation("WEB_PRSSYS");
%>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function mld_refresh()
{
if (!validateForm("wf"))
return false;
FcltMgr.reload();
}
function mld_cancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
$(function()
{
$(".sk").hover(function(){
$("."+this.className.split(' ').join('.')).toggleClass('border');
});$(".sk").click(function(){
$("."+this.className.split(' ').join('.')).toggleClass('border');
});
});
</script>
<style>
tr.sk { border-left: 5px solid #fafafa; border-right: 5px solid #fafafa; }
tr.border td { border-left: 2px solid #f00; border-right: 2px solid #f00; }
tr.hdr { border-left: 5px solid #fff; border-right: 5px solid #fff; }
tr.hdr th {border-right: 1px solid #ddd}
tr.sk td { color: #ffffff; padding: 3px 6px; border-right: 1px solid #ddd; }
td.nr { text-align: center;}
</style>
</head>
<body>
<%SUBFRAME_START();
var buttons = []
buttons.push({ icon: "fa-fclt-refresh", title: L("lcl_refresh"), action: "FcltMgr.reload()", id: "btn_scf_refresh" });
IFRAMER_HEADER(L("lcl_mld_workflow_overview") , buttons);
BLOCK_START("mldWFOverview", L("lcl_mld_workflow_overview"), {wide: true, icon: "fa-th"});
//RWCHECKBOXTR("color", "fldcheck", "Kleurtjes", (colorise == 1? " checked" : ""))
makeOverview();
BLOCK_END();
SUBFRAME_END();
%>
</body>
</html>
<%
function makeOverview()
{
var keys = [];
var desc;
var allkenmerken = {}; // een rule condition heeft altijd betrekking op de kenmerken van de
// vorige step. Die onthouden we in allkenmerken
// start_key wordt verondersteld een root_key te zijn
var desc = buildStepHTML(start_key, allkenmerken);
Response.Write("<tr><td>" + desc + "</td></tr>");
keys.push(start_key);
for (i = 0; i < 10 && keys.length; i++) // Maximaal 10 stappen?
{
var isMerge = keys.length > 1;
var sql = "SELECT DISTINCT ws.mld_workflowstep_key,"
+ " wr.mld_workflowrule_condition"
+ " FROM mld_workflowrule wr,"
+ " mld_workflowstep ws"
+ " WHERE wr.mld_workflowstep_key IN (" + keys.join(",") + ")"
+ " AND wr.mld_workflowstep_next_key NOT IN (" + keys.join(",") + ")"
+ " AND ws.mld_workflowstep_key = wr.mld_workflowstep_next_key";
var oRs = Oracle.Execute(sql);
Response.Write("<tr>");
keys.length = 0; // Opnieuw opbouwen voor volgende niveau
while (!oRs.Eof)
{
step_key = oRs("mld_workflowstep_key").Value;
keys.push(oRs("mld_workflowstep_key").Value );
desc = buildStepHTML(step_key, allkenmerken, isMerge)
var condition = oRs("mld_workflowrule_condition").Value;
var condition_friendly_safe = condition || "";
if (condition)
{
for (var key in allkenmerken)
condition_friendly_safe = condition_friendly_safe.replace(new RegExp(":flex" + key, 'g'), "<em>" + safe.html(allkenmerken[key]) + "</em>");
desc = "<strong>WHEN:</strong> " + safe.html(condition) + "<br><strong>FRIENDLY:</strong> " + condition_friendly_safe + "<br>" + desc;
}
Response.Write("<td style='vertical-align:top;border:1px solid grey;'>" + desc + "</td>");
oRs.MoveNext();
}
Response.Write("</tr>");
}
}
function buildStepHTML(step_key, allkenmerken, isMerge)
{
var pad = 'ffffff';
var sql = "SELECT mld_workflowstep_jointype,"
+ " ms.mld_stdmelding_omschrijving,"
+ " ms.mld_stdmelding_key,"
+ " md.ins_discipline_key,"
+ " md.ins_srtdiscipline_key"
+ " FROM mld_workflowstep ws,"
+ " mld_stdmelding ms,"
+ " mld_discipline md"
+ " WHERE ws.mld_stdmelding_key = ms.mld_stdmelding_key"
+ " AND md.ins_discipline_key = ms.mld_ins_discipline_key"
+ " AND ws.mld_workflowstep_key = " + step_key;
var oRs = Oracle.Execute(sql);
var desc = ("<p>{0}: <b>" + oRs("mld_stdmelding_omschrijving").Value + "</b>").format(L("mld_workflowstep"))
if (isMerge)
{
var jointype = oRs("mld_workflowstep_jointype").Value;
desc += "<br>JOIN: " + (jointype? "OR" : "AND");
}
desc += "</p>";
var sql1 = "SELECT mkm.mld_kenmerk_key"
+ " , mkm.mld_kenmerk_niveau"
+ " , mkm.mld_kenmerk_verplicht"
+ " , mkm.mld_kenmerk_groep"
+ " , mld_kenmerk_volgnummer"
+ " , mld_kenmerk_toonbaar"
+ " , COALESCE (" + lcl.xsql("mkm.mld_kenmerk_omschrijving", "mkm.mld_kenmerk_key")
+ " , " + lcl.xsql("msk.mld_srtkenmerk_omschrijving", "msk.mld_srtkenmerk_key") + ") kenmerk_omschrijving"
+ " , mld_srtkenmerk_kenmerktype"
+ " , mkm.mld_srtkenmerk_key"
+ " , TO_CHAR(dbms_utility.get_hash_value(mkm.mld_srtkenmerk_key,0,power(2,24)), '0XXXXXX') clr"
+ " FROM mld_kenmerk mkm,"
+ " mld_srtkenmerk msk,"
+ " (SELECT 'S' mld_kenmerk_niveau"
+ " , mld_stdmelding_key ref_mld_stdmelding_key"
+ " , mld_stdmelding_key"
+ " , ins_discipline_key"
+ " , m2.ins_srtdiscipline_key"
+ " FROM mld_stdmelding md, mld_discipline m2"
+ " WHERE md.mld_ins_discipline_key = m2.ins_discipline_key"
+ " UNION ALL"
+ " SELECT 'D' mld_kenmerk_niveau"
+ " , ins_discipline_key ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , ins_discipline_key ins_discipline_key"
+ " , ins_srtdiscipline_key"
+ " FROM mld_discipline m2"
+ " UNION ALL"
+ " SELECT 'T' mld_kenmerk_niveau"
+ " , ins_srtdiscipline_key ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL ins_discipline_key"
+ " , ins_srtdiscipline_key"
+ " FROM ins_srtdiscipline m2"
+ " UNION"
+ " SELECT 'A' mld_kenmerk_niveau"
+ " , NULL ref_mld_stdmelding_key"
+ " , NULL mld_stdmelding_key"
+ " , NULL ins_discipline_key"
+ " , NULL ins_srtdiscipline_key"
+ " FROM DUAL) s"
+ " WHERE mkm.mld_kenmerk_verwijder IS NULL"
+ " AND (mkm.mld_stdmelding_key = ref_mld_stdmelding_key OR mkm.mld_stdmelding_key IS NULL)"
+ " AND mkm.mld_kenmerk_niveau = s.mld_kenmerk_niveau"
+ " AND mkm.mld_srtkenmerk_key = msk.mld_srtkenmerk_key"
+ " AND (('A' = mkm.mld_kenmerk_niveau AND mkm.mld_stdmelding_key IS NULL)"
+ " OR (s.ins_srtdiscipline_key = " + oRs("ins_srtdiscipline_key").Value
+ " AND (s.ins_discipline_key = " + oRs("ins_discipline_key").Value
+ " OR ('T' = mkm.mld_kenmerk_niveau AND s.ins_srtdiscipline_key = " + oRs("ins_srtdiscipline_key").Value + "))"
+ " AND (s.mld_stdmelding_key = " + oRs("mld_stdmelding_key").Value
+ " OR ('D' = mkm.mld_kenmerk_niveau AND s.ins_discipline_key = " + oRs("ins_discipline_key").Value + ")"
+ " OR ('T' = mkm.mld_kenmerk_niveau AND s.ins_srtdiscipline_key = " + oRs("ins_srtdiscipline_key").Value + "))"
+ " )"
+ " )"
+ " ORDER BY mld_kenmerk_volgnummer";
var oRs1 = Oracle.Execute(sql1);
desc += "<table><tr class='hdr'><th>key</th><th>nr</th><th>kenmerk</th><th>grp</th><th>verpl</th><th>ntw</th><th>niv</th></tr>";
while (!oRs1.Eof) // over alle kenmerken van deze melding
{
allkenmerken[oRs1("mld_kenmerk_key").value] = oRs1("kenmerk_omschrijving").Value;
if (colorise != -1) {
clr = oRs1("clr").Value.substr(2);
}
desc += "<tr class='sk sk" + oRs1("mld_srtkenmerk_key").value + "' style='background-color: #" + clr + ";'>"
+ "<td class='nr'>" + oRs1("mld_kenmerk_key").Value + "</td>"
+ "<td class='nr'>" + oRs1("mld_kenmerk_volgnummer").Value + "</td>"
+ "<td>" + oRs1("kenmerk_omschrijving").Value + "</td>"
+ "<td class='nr'>" + (oRs1("mld_kenmerk_groep").Value >= 1? oRs1("mld_kenmerk_groep").Value : "") + "</td>"
+ "<td class='nr'>" + (oRs1("mld_kenmerk_verplicht").Value>=1? oRs1("mld_kenmerk_verplicht").Value : "") + "</td>"
+ "<td class='nr'>" + (oRs1("mld_kenmerk_toonbaar").Value == 1? "1" : "") + "</td>"
+ "<td class='nr'>" + oRs1("mld_kenmerk_niveau").Value + "</td>"
+ "</tr>";
oRs1.MoveNext();
}
desc +="</table>";
oRs.Close();
return desc;
}
%><% ASPPAGE_END(); %>