FSN#31698 Rapportgenerator filter velden

svn path=/Website/trunk/; revision=24448
This commit is contained in:
Jos Groot Lipman
2015-03-14 22:07:22 +00:00
parent 9e44a3ea98
commit 6e8fc9b106
10 changed files with 107 additions and 19 deletions

View File

@@ -516,6 +516,9 @@ api2 = {
if (fld.substring(0,1) == "_")
continue;
var field = model.fields[fld];
if (field.hidden)
continue;
var dbs = field.dbs;
if (field.sql)
{
@@ -847,6 +850,9 @@ api2 = {
if (fld.substring(0,1) == "_")
continue;
var field = model.fields[fld];
if (field.hidden)
continue;
var val = api2.sql2jsonval(oRs, fld, model);
//waarom was dit aanwezig?
//if (field.readonly && !val.id)
@@ -907,6 +913,9 @@ api2 = {
if (fld.substring(0,1) == "_")
continue;
var field = model.fields[fld];
if (field.hidden)
continue;
var val = api2.sql2jsonval(oRs, fld, model)
//waarom was dit aanwezig?
//if (field.readonly && !val.id)
@@ -1365,14 +1374,14 @@ function generic_REST_GET(model)
if (model.soft_delete && params.filter.show_deleted != "on")
query.wheres.push(model.soft_delete + " IS NULL");
var maxcnt = getQParamInt("showall", 0) == 1?S("qp_maxrows2"):S("qp_maxrows");
query.wheres.push("ROWNUM <= " + (maxcnt + 1)); // Eentje extra om overflow-melding te triggeren in resultsettable
var sql = "SELECT " + query.selects.join(", ")
+ " FROM " + query.tables.join(", ")
+ (query.wheres.length ? " WHERE " + query.wheres.join(" AND " ) : "")
+ " ORDER BY " + (model.fields.name?model.fields.name.dbs:model.fields.id.dbs);
var maxcnt = getQParamInt("showall", 0) == 1?S("qp_maxrows2"):S("qp_maxrows");
var sql = "SELECT * FROM (" + sql + ") WHERE ROWNUM <= " + (maxcnt + 1); // Eentje extra om overflow-melding te triggeren in resultsettable
var json = api2.sql2json (params, sql, model);
return json;
}

View File

@@ -59,7 +59,7 @@ model_apis =
{
},
search: { autosubmit: true },
search: { autosearch: true },
list: { default_url: "api2/{0}.scf" }
// list: { default_url: "api2/{0}.api?pretty=1" }
}

View File

@@ -12,7 +12,6 @@
Notes:
*/
%>
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="./model_reportsx.inc" -->
<!-- #include file="../fac/fac_usrrap.inc" -->
<%
@@ -52,7 +51,7 @@ function model_reports_template()
if (this.list && this.list.default_url && fld == "id")
groupbys.push(this.fields["id"].dbs);
else
delete this.fields[fld]; // Onnodige velden niet ophalen
this.fields[fld].hidden = true; // Onnodige velden niet ophalen
}
}
@@ -66,6 +65,9 @@ function model_reports_template()
case "G":
groupbys.push(field.dbs);
break;
case "U":
field.sql = "DISTINCT(" + field.dbs + ")";
break;
case "S":
field.sql = "SUM(" + field.dbs + ")";
field.label = L("lcl_usrrap_label_SUM").format(field.label);
@@ -135,9 +137,6 @@ function model_reports_template()
}
}
var maxcnt = getQParamInt("showall", 0) == 1?S("qp_maxrows2"):S("qp_maxrows");
query.wheres.push("ROWNUM <= " + (maxcnt + 1)); // Eentje extra om overflow-melding te triggeren in resultsettable
var sql = "SELECT " + query.selects.join(", ")
+ " FROM " + query.tables.join(", ")
+ (query.wheres.length ? " WHERE " + query.wheres.join(" AND " ) : "")
@@ -151,6 +150,9 @@ function model_reports_template()
order.push(i+1)
sql += " ORDER BY " + order.join(", ");
var maxcnt = getQParamInt("showall", 0) == 1?S("qp_maxrows2"):S("qp_maxrows");
var sql = "SELECT * FROM (" + sql + ") WHERE ROWNUM <= " + (maxcnt + 1); // Eentje extra om overflow-melding te triggeren in resultsettable
for (var fld in this.fields)
{ // Overrules voor groeperingen
this.fields[fld].typ = this.fields[fld].newtyp || this.fields[fld].typ;

View File

@@ -38,9 +38,11 @@
else
__Log("Existing report {0}: {1}".format(usrrap_key, rapport.table));
var params = { transit: { name: "usrrap_key", val: usrrap_key }};
var params = { transit: { name: "usrrap_key", val: usrrap_key },
search: { requires: { js: ["./fac_report.js"] }}
};
if ("estimated_rows" in rapport && rapport.estimated_rows < 250)
params.search = { autosubmit: true };
params.search.autosearch = true;
shared.registeraction("report", {refkey: usrrap_key, daily: true});

42
APPL/FAC/fac_report.js Normal file
View File

@@ -0,0 +1,42 @@
/*
$Revision$
$Id$
File: fac_repor.js
*/
function toggleInputSelect()
{
var inp = $(this).prev()[0];
if (inp.tagName == 'INPUT')
{
$(inp).show().val("Please wait");
$(inp).prop('disabled', true);
$.getJSON("fac_report_worker.asp", $("[name=u2]").serialize() + "&distinct=" + inp.name, process_worker_info);
}
else
$(inp).replaceWith('<input class="fld" id="' + inp.name +'" name="' + inp.name +'">');
}
function process_worker_info(data)
{
var inp = $("#" + data.distinct); // we krijgen de naam terug in data.distinct
inp.replaceWith('<select size=5 multiple="on" id="' + data.distinct +'" name="' + data.distinct +'"></select>');
var sel = $("#" + data.distinct);
if(data.values.length > 1)
sel.append($('<option></option>').val("").html(L("lcl_shared_alle") + " " + data.values.length));
for (var i = 0; i < data.values.length; i++)
{
var v = data.values[i][data.distinct];
sel.append($('<option></option>').val(v).html(v));
}
}
$(function ()
{
$("input.fld").after($("<img class='autoreport' src='../Pictures/comment.png'>")
.css('cursor', 'pointer')
.attr('title', L("lcl_usrrap_beware"))
.click(toggleInputSelect)
);
});

View File

@@ -0,0 +1,31 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
File fac_report_worker.asp
Description: Haal unieke waarden voor een listbox op
Parameters: usrrap_key: van een rapport
distinct: name van het veld wat we zoeken
xxx overige filtervelden
Note:
*/
JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="../Shared/json2.js" -->
<!-- #include file="../api2/api2.inc" -->
<!-- #include file="../api2/model_reports.inc" -->
<!-- #include file="../api2/model_reportsx.inc" -->
<%
var usrrap_key = getQParamInt("usrrap_key");
var rapport = model_reports(usrrap_key);
var filter = api2.qs2json();
var columns = [getQParam("distinct")];
var xxx_params = { filter : api2.qs2json(), columns: columns, groupby: ["U"] }; // U=distinct
var result = { distinct: columns[0], values: rapport.REST_GET(xxx_params) };
Response.Write(JSON.stringify(result));
%>

View File

@@ -12,10 +12,10 @@
scaffolding(reportsx,
{
"search": {
autosubmit: true
autosearch: true
},
"show": {
js: ["./fac_reportx.js"],
requires: { js: ["./fac_reportx.js"] },
buttons: [{ title: L("lcl_usrrap_show"), action: "show_report", icon: "doc_text_image.png" },
{ title: L("lcl_usrrap_clone"), action: "clone_report", icon: "copy.png" }]
}

View File

@@ -177,7 +177,7 @@ function scf_RWFIELDTR(field, fld, val, key)
departmentKey: val?val.id:null
});
}
else if (fupper.match(/ALG_RUIMTE|ALG_VERDIEPING|RES_RSV_RUIMTE|MLD_UITVOERENDE|CNT_CONTRACT/) || !foreign)
else if (fupper.match(/ALG_RUIMTE|ALG_VERDIEPING|RES_RSV_RUIMTE|MLD_UITVOERENDE|MLD_OPDR|MLD_MELDING|CNT_CONTRACT/) || !foreign)
{
ROFIELDTR("fldtxt", field.label, "TODO: suggest met " + field.foreign);
}

View File

@@ -22,11 +22,13 @@ function scaffolding_search(model, scf_params)
FCLTHeader.Requires({plugins:[],
js: ["jquery-ui.js", "jquery.timepicker-table.js"],
css: ["timePicker-table.css"]});
if ("requires" in scf_params.search)
FCLTHeader.Requires(scf_params.search.requires);
if (model.autfunction)
var authparams = user.checkAutorisation(model.autfunction);
scf_params.search.autosubmit |= getQParamInt("autosearch", 0) == 1;
scf_params.search.autosearch |= getQParamInt("autosearch", 0) == 1;
%>
<html>
@@ -69,8 +71,8 @@ function scaffolding_search(model, scf_params)
$("#groups").val(groups.join(","));
document.forms.u2.submit();
}
<% if (scf_params.search.autosubmit) { %>
$(doSubmit); // Autosubmit
<% if (scf_params.search.autosearch) { %>
$(doSubmit);
<% } %>
</script>
</head>

View File

@@ -19,8 +19,8 @@ function scaffolding_show(model, scf_params)
FCLTHeader.Requires({ plugins: ["jQuery"],
js: ["jquery-ui.js"]
})
if ("js" in scf_params.show)
FCLTHeader.Requires({ js: scf_params.show.js });
if ("requires" in scf_params.show)
FCLTHeader.Requires(scf_params.show.requires);
var transit = "";
if ("transit" in scf_params)