FSN#33170 KPI module versie 1 savepoint

svn path=/Website/trunk/; revision=26389
This commit is contained in:
Peter Feij
2015-09-17 15:28:20 +00:00
parent 72db995651
commit dac733ad1a
5 changed files with 530 additions and 0 deletions

View File

@@ -37,6 +37,9 @@ model_companies =
"code" : { dbs: "prs_leverancier_nr" , typ: "varchar", filter: "like" },
"agreement" : { dbs: "prs_overeenkomst_nr" , typ: "varchar", filter: "like" },
"agreementdate": { dbs: "prs_overeenkomst_datum" , typ: "date", filter: "range" },
"service" : { dbs: "prs_bedrijfdienstlocatie.prs_dienst_key", typ: "key", filter: "like", foreign: "prs_dienst", track: true, label: L("lcl_prs_companies_dienst")},
"location" : { dbs: "prs_bedrijfdienstlocatie.alg_locatie_key", typ: "key", foreign: "alg_locatie", label: L("lcl_location"), track: true, filter: "exact" },
"building" : { dbs: "prs_bedrijfdienstlocatie.alg_gebouw_key", typ: "key", foreign: "alg_gebouw", label: L("lcl_building"), track: true, filter: "exact" },
"isinternal" : { dbs: "prs_bedrijf_intern" , typ: "varchar", filter: "exact" },
"issupplier" : { dbs: "prs_bedrijf_leverancier" , typ: "varchar", filter: "exact" },
"isexecutor" : { dbs: "prs_bedrijf_uitvoerende" , typ: "varchar", filter: "exact" }, /*naam?*/
@@ -51,6 +54,14 @@ model_companies =
// TODO: Add authorization
var query = api2.sqlfields(params, model_companies);
// TODO: dit zijn er mogelijk meerdere dus moet dit via een INCLUDE constructie
query.tables.push("prs_dienst");
query.tables.push("prs_bedrijfdienstlocatie");
query.wheres.push("prs_bedrijfdienstlocatie.prs_bedrijf_key(+) = prs_bedrijf.prs_bedrijf_key");
query.wheres.push("prs_dienst.prs_dienst_key(+) = prs_bedrijfdienstlocatie.prs_dienst_key");
query.wheres.push("prs_bedrijf_verwijder IS NULL");
var wheres = api2.sqlfilter(params, model_companies)

0
APPL/KPI/.gitignore vendored
View File

201
APPL/KPI/kpi_detail.asp Normal file
View File

@@ -0,0 +1,201 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mld/kpi_detail.asp
*/ %>
<!-- #include file="../../appl/Shared/common.inc" -->
<!-- #include file="../../appl/Shared/iface.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"] });
/***** Get webform parameters *****/
var fclt_key = getQParamInt("fclt_key", -1);
var periode = getQParam("periode", "");
var proces = getQParam("fclt_f_kpi_definitie_categorie1", "");
var onderdeel = getQParam("fclt_f_kpi_definitie_categorie2", "");
var barselect = getQParam("_titel_", "");
var locatie = "Alle";
if (fclt_key > 0)
{
var sql_l = "SELECT fac_usrdata_code"
+ " FROM fac_usrtab t"
+ " , fac_usrdata d"
+ " WHERE t.fac_usrtab_key = d.fac_usrtab_key"
+ " AND t.fac_usrtab_object = 'USR_KPI INSTELLINGEN'"
+ " AND d.fac_usrdata_volgnr = " + fclt_key;
var oRs_l = Oracle.Execute(sql_l);
if (!oRs_l.eof)
locatie = oRs_l("fac_usrdata_code").Value;
oRs_l.Close();
}
if (periode == "")
{
// Neem de laatste periode als er geen periode is opgegeven.
var sql_p = "SELECT MAX(TO_DATE(d.fac_usrdata_code, 'yyyymm')) periode"
+ " FROM fac_usrtab t"
+ " , fac_usrdata d"
+ " WHERE t.fac_usrtab_key = d.fac_usrtab_key"
+ " AND t.fac_usrtab_object = 'USR_KPI PERIODE'";
var oRs_p = Oracle.Execute(sql_p);
user.anything_todo_or_abort(oRs_p.eof);
periode = oRs_p("periode").Value;
oRs_p.Close();
}
if (proces != "")
{
v_head = proces;
v_col1 = "kpi_definitie_categorie1";
v_col2 = "kpi_definitie_categorie2";
lbl_header = "KPI: Onderdelen van proces " + proces;
}
else
{
v_head = onderdeel;
v_col1 = "kpi_definitie_categorie2";
v_col2 = "kpi_definitie_categorie1";
lbl_header = "KPI: Processen van onderdeel " + onderdeel;
}
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function doCancel()
{
FcltMgr.closeDetail(window, { cancel: true } );
}
</script>
</head>
<body id="showbody">
<div id="show">
<form name="u2">
<style>
table {
border: none;
width: 100%;
margin: 0;
padding: 0;
}
td {
font-family: Verdana;
font-style: normal;
font-size: 8pt;
font-weight: normal;
color: #000000;
text-align: left;
vertical-align: top;
}
span.prim_header {
font-style: normal;
font-size: 18pt;
float:left;
}
td.sec_heading {
background-color: #eee;
color: #000;
font-size: 18pt;
text-align: left;
vertical-align: bottom;
padding: 5px;
}
td.avg {
color: #fff;
font-size: 2em;
text-align: center;
vertical-align: middle;
width: 100px;
height: 80px;
}
td.score {
width: 50px;
}
</style>
<div class="fcltframeheader">
<span class="prim_header"><nobr><%=safe.html(lbl_header)%>&nbsp;<span id="iframerextratitle"></span></nobr></span>
</div>
<table>
<%
var sql_h = "SELECT DISTINCT " + v_col2 + " totaalnaam"
+ " , totaalscore"
+ " , totaalkleur"
+ " FROM akza_v_kpi_proc_ond_detail"
+ " WHERE locatie = " + safe.quoted_sql(locatie)
+ " AND TO_CHAR(periode, 'yyyymm') = " + safe.quoted_sql(periode)
+ " AND " + v_col1 + " = " + safe.quoted_sql(v_head)
+ " ORDER BY totaalscore";
var oRs_h = Oracle.Execute(sql_h);
while (!oRs_h.eof)
{
h_head_naam = oRs_h("totaalnaam").Value;
h_head_score = oRs_h("totaalscore").Value;
h_head_kleur = oRs_h("totaalkleur").Value;
%>
<tr>
<td colspan="2" class="sec_heading"><%=safe.html(h_head_naam)%></td>
</tr>
<tr>
<td class="avg" style="background-color: <%=h_head_kleur%>"><%=h_head_score%></td>
<td>
<table>
<%
var sql_s = "SELECT kpi_omschrijving"
+ " , kpi_uitleg"
+ " , score"
+ " , kleur"
+ " FROM kpi_v_cat1_cat2_detail"
+ " WHERE locatie = " + safe.quoted_sql(locatie)
+ " AND TO_CHAR(periode, 'yyyymm') = " + safe.quoted_sql(periode)
+ " AND " + v_col1 + " = " + safe.quoted_sql(v_head)
+ " AND " + v_col2 + " = " + safe.quoted_sql(h_head_naam)
+ " ORDER BY score";
var oRs_s = Oracle.Execute(sql_s);
while (!oRs_s.eof)
{
s_omsch = oRs_s("kpi_omschrijving").Value;
s_uitlg = oRs_s("kpi_uitleg").Value;
s_score = oRs_s("score").Value;
s_kleur = oRs_s("kleur").Value;
%>
<tr>
<td title="<%=safe.html(s_uitlg)%>"><%=safe.html(s_omsch)%></td>
<td title="<%=safe.html(s_uitlg)%>" class="score"><%=safe.html(s_score)%></td>
</tr>
<%
oRs_s.MoveNext();
}
oRs_s.Close();
%>
</table>
</td>
</tr>
<%
oRs_h.MoveNext();
}
oRs_h.Close();
%>
</table>
<%
var buttons = [{ title: L("lcl_cancel"), action: "doCancel();"}];
CreateButtons(buttons, { entersubmit: true });
%>
</form>
</div>
</body>
</html>

138
APPL/KPI/kpi_search.asp Normal file
View File

@@ -0,0 +1,138 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mld/kpi_search.asp
Noot: vereist een storedprocedure cust.refreshscore(userkey) om de kpi_score tabel te verversen
*/ %>
<!-- #include file="../../appl/Shared/common.inc" -->
<!-- #include file="../../appl/Shared/iface.inc" -->
<!-- #include file="../../appl/Shared/selector.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"] });
/***** Get webform parameters *****/
var fclt_key = getQParamInt("fclt_key", -1);
var periode = getQParam("periode", "");
var toon = getQParam("toon", 0);
var freeze = getQParamInt("freeze", 0);
if (freeze == 1)
{ // TODO: tikje robuuster
var sql = "BEGIN " + customerId + ".refreshscore("+user_key+"); END;";
Oracle.Execute(sql);
}
/***** Selector sql *****/
var sql_l = " SELECT DISTINCT l.alg_locatie_key"
+ " , " + S("alg_loc_string")
+ " FROM alg_v_my_location ml"
+ " , alg_locatie l"
+ " WHERE ml.alg_locatie_key = l.alg_locatie_key" // moet hier een functie bij?
+ " AND ml.prs_perslid_key = " + user_key
+ " ORDER BY 2";
// TODO zoiets maar dan anders
var sql_p = "SELECT DISTINCT to_char(kpi_score_datum, 'YYYYMM'), to_char(kpi_score_datum, 'YYYYMM')"
+ " FROM kpi_score"
+ " ORDER BY 1 DESC";
%>
<html>
<head>
<% FCLTHeader.Generate(); %>
<script type="text/javascript">
function doSubmit()
{
document.forms.u2.submit();
}
function doBijwerken()
{
var url = "./kpi_search.asp?freeze=1&" + $("[name=u2]").serialize();
window.location.href = url;
}
</script>
</head>
<body id="searchbody">
<div id="search">
<form name="u2" target="workFrame" action="./kpi_search_list.asp" method="get">
<input type="hidden" id="widget_height" name="widget_height" value="200">
<% BLOCK_START("searchtable", L("lcl_filterblok"));%>
<tr>
<td class="searchkolom1"><!-- start column 1 -->
<table><!-- x rijen, 2 kolommen: label + veld -->
<tr class="primsearch">
<% // gewoon plaatsselector met filtercode KPI = komt voor in kpi_score
FCLTselector("fclt_key",
sql_l,
{ trclass: "primsearch",
label: L("lcl_location"),
initKey: fclt_key,
emptyKey: "-1",
emptyOption: ""
});
%>
</tr>
<tr class="primsearch">
<td class="label">
<label><%=L("lcl_kpi_toon")%>:</label>
</td>
<td>
<label for="mld_opdr_p"><input type="radio" name="toon" id="mld_opdr_p" value="0" <%=toon==0?"checked":""%>><%=L("lcl_kpi_cat2_per_cat1")%>
<label for="mld_opdr_o"><input type="radio" name="toon" id="mld_opdr_o" value="1" <%=toon==1?"checked":""%>><%=L("lcl_kpi_cat1_per_cat2")%>
</td>
</tr>
</table>
</td><!-- end column 1 -->
<!-- Second column -->
<td valign=top>
<table>
<tr>
<%
FCLTselector("periode",
sql_p,
{ trclass: "primsearch",
label: L("lcl_ins_controle_period"),
initKey: periode
});
%>
</tr>
</table>
</td><!-- end column 2-->
</tr>
<tr class="primsearch">
<td colspan="2">
</td>
</tr>
</table>
<% BLOCK_END()
var buttons = [{ title: L("lcl_search"), action: "doSubmit();"},
{ title: L("lcl_kpi_bijwerken"), action: "doBijwerken();"}
];
CreateButtons(buttons, { entersubmit: true });
%>
</form>
</div> <!-- search -->
<div id="result">
<iframe width="100%" height="100%"
src="../../appl/Shared/empty.asp"
name="workFrame" id="workFrame"
onload='FcltMgr.iframeLoaded(this)'
frameborder="0" scrolling="no">
</iframe>
</div>
</body>
</html>

View File

@@ -0,0 +1,180 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File: mld/kpi_search_list.asp
*/ %>
<!-- #include file="../../appl/Shared/common.inc" -->
<!-- #include file="../../appl/Shared/iface.inc" -->
<!-- #include file="../../appl/fac/fac_usrgraph.inc" -->
<%
FCLTHeader.Requires({ plugins:["jQuery"],
js: ["jquery-ui.js"]
});
/***** Constants *****/
var init_height = "450px";
// dit moet dus ergens uit de definities komen
var graph_view_names = [ {name: "kpi_v_graph_tot_tot", hastext1: 1, hastext2: 0},
{name: "kpi_v_graph_tot_trend", hastext1: 0, hastext2: 0},
{name: "kpi_v_graph_proc_tot", hastext1: 1, hastext2: 1},
{name: "kpi_v_graph_proc_ond", hastext1: 1, hastext2: 1},
{name: "kpi_v_graph_proc_trend", hastext1: 0, hastext2: 1},
{name: "kpi_v_graph_ond_tot", hastext1: 1, hastext2: 1},
{name: "kpi_v_graph_ond_proc", hastext1: 1, hastext2: 1},
{name: "kpi_v_graph_ond_trend", hastext1: 0, hastext2: 1}
];
/***** Get webform parameters *****/
var fclt_key = getQParamInt("fclt_key", -1);
var widget_height = getQParamInt("widget_height", 100);
var periode = getQParam("periode", "");
var toon = getQParamInt("toon", 0);
var locatie = "Alle";
if (fclt_key > 0) // TODO wat is dit en hoe doen we dat nu?
{
var sql_l = "SELECT fac_usrdata_code"
+ " FROM fac_usrtab t"
+ " , fac_usrdata d"
+ " WHERE t.fac_usrtab_key = d.fac_usrtab_key"
+ " AND t.fac_usrtab_object = 'USR_KPI INSTELLINGEN'"
+ " AND d.fac_usrdata_volgnr = " + fclt_key;
var oRs_l = Oracle.Execute(sql_l);
if (!oRs_l.eof)
locatie = oRs_l("fac_usrdata_code").Value;
oRs_l.Close();
}
if (periode == "")
{
// Neem de laatste periode als er geen periode is opgegeven.
var sql_p = "SELECT TO_DATE(MAX(kpi_score_datum), 'yyyymm') periode"
+ " FROM kpi_score";
var oRs_p = Oracle.Execute(sql_p);
user.anything_todo_or_abort(oRs_p.eof);
periode = oRs_p("periode").Value;
oRs_p.Close();
}
var params = { initHeight: init_height,
widget_height: widget_height,
view_names: graph_view_names,
//fclt_key: fclt_key,
fclt_text: [locatie, periode, "", ""] // locatie, periode, kpi_definitie_categorie1 of kpi_definitie_categorie2, ?
};
for (var i=0; i<8; i++)
{
// Voeg aan de view namen de keys toe.
var graphId = -1;
var name = graph_view_names[i].name;
if (name != "")
{
var sql = "SELECT fac_usrgraph_key"
+ " FROM fac_usrgraph"
+ " WHERE fac_usrgraph_view_name = " + safe.quoted_sql(name);
var oRs = Oracle.Execute(sql);
if (!oRs.eof)
graphId = oRs("fac_usrgraph_key").Value;
oRs.Close();
//user.anything_todo_or_abort(graphId > 0);
}
params.view_names[i].graph_key = graphId;
}
function loadGraph(nr, params)
{
var fclt_text = (JSON.parse(JSON.stringify(params.fclt_text)));
if (params.view_names[nr].hastext1 == 0)
fclt_text[1] = "";
if (params.view_names[nr].hastext2 == 0)
fclt_text[2] = "";
var url = "../../appl/fac/fac_usrgraph.asp"
+ "?usrgraph_key=" + params.view_names[nr].graph_key
+ "&fclt_text=" + fclt_text.join(",")
+ "&widget_height=" + params.widget_height;
var id = "kpiGraph";
// ***** IFRAMER zonder scrollbars.
%>
<div id="frm_<%=id%>" class="fcltframe">
<div class="inside">
<iframe id="<%=id%>" name="<%=id%>" frameborder="0" width="100%" height="<%=params.initHeight||'20px'%>"
src="<%=url%>" scrolling="no"
onload="FcltMgr.iframeLoaded(this);">
</iframe>
</div>
</div>
<%
// ***** IFRAMER END.
}
%>
<html>
<head>
<% FCLTHeader.Generate() %>
<script type="text/javascript">
</script>
</head>
<body id="listbody">
<div id="searchlist">
<%
%>
<input type="hidden" id="fclt_key" name="fclt_key" value="<%=fclt_key%>">
<input type="hidden" id="widget_height" name="widget_height" value="<%=widget_height%>">
<table class="fcltblocktab" cols="3" width="100%">
<tr onclick="$(this).next().toggle();$(this).toggleClass('collapsed');FcltMgr.resized(window)">
<td colspan="3">
<div class="fcltframeheader">
<span style="float:left"><nobr>Totaal&nbsp;<span id="extratitle_0"></span></nobr></span>
</div>
</td>
</tr>
<tr>
<td colspan="1"><% loadGraph(0, params); %></td>
<td colspan="2"><% loadGraph(1, params); %></td>
</tr>
<%
var sql = "SELECT DISTINCT " + (toon==0 ? "kpi_definitie_categorie1" : "kpi_definitie_categorie2") + " fclt_text2"
+ " FROM kpi_v_kpi_scores"
var oRs = Oracle.Execute(sql);
while (!oRs.eof)
{
var proces = oRs("fclt_text2").Value;
params.fclt_text[2] = proces;
%>
<tr onclick="$(this).next().toggle();$(this).toggleClass('collapsed');FcltMgr.resized(window)">
<td colspan="3">
<div class="fcltframeheader">
<span style="float:left"><nobr><%=proces %>&nbsp;<span id="extratitle"></span></nobr></span>
</div>
</td>
</tr>
<tr>
<td><% loadGraph( (toon==0?2:5), params); %></td>
<td><% loadGraph( (toon==0?3:6), params); %></td>
<td><% loadGraph( (toon==0?4:7), params); %></td>
</tr>
<%
oRs.MoveNext();
}
oRs.Close();
%>
</table>
</div>
</body>
</html>