FSN#31698 Rapportgenerator beter default filterwaarden

Ook: generiek na opslaan nieuw record terugkomen in showmode

svn path=/Website/trunk/; revision=24509
This commit is contained in:
Jos Groot Lipman
2015-03-19 10:53:40 +00:00
parent 137f408a0c
commit 12b7b338f8
6 changed files with 150 additions and 61 deletions

View File

@@ -14,6 +14,7 @@ if (mode == "save" || mode == "delete")
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<!-- #include file="./scaffolding_common.inc" -->
<% if (mode != "save" && mode != "delete") { %>
<% if (mode != "list") { %>
<!-- #include file="../Shared/iface.inc" -->
@@ -113,9 +114,13 @@ function scaffolding(model, scf_params)
function scf_ROFIELDTR(model, fld, val, key)
{
var field = model.fields[fld];
if (!field)
{ // Vanuit scaffolding_search
field = model.fields[fld.replace(/^(start_|end_)/,"")];
}
var txt = val;
if (txt === null)
if (txt === null || typeof txt === "undefined")
{
if (field.typ == "check")
txt = "0";
@@ -195,7 +200,7 @@ function scf_RWFIELDTR(model, fld, val, key)
show_expired: true
});
}
else if (fupper = "MLD_DISCIPLINE")
else if (fupper == "MLD_DISCIPLINE")
{
FCLTdisciplineselector(fld,
"sg" + fld,

View File

@@ -2,15 +2,133 @@
$Revision$
$Id$
File: scaffolding_common.inc
File: scaffolding_common.inc
Description:
Description: Common voor gewone GUI en mobiel
Parameters:
Context:
*/
var scf =
{
getMonday: function (d)
{
d = new Date(d);
var day = d.getDay(),
diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
return new Date(d.setDate(diff));
},
defaultDate: function (code)
{
var dt = null;
var pn = code.substr(1,1); // p is dag terug, n is dag vooruit
var pnnum = (pn=='p'?-1:pn=='n'?1:0);
switch (code.substr(0,1).toLowerCase())
{
case "n":
dt = new Date();
break;
case "d":
dt = new Date();
dt.setHours(0,0,0,0);
dt.setDate(dt.getDate() + pnnum);
break;
case "w":
dt = scf.getMonday(new Date());
dt.setHours(0,0,0,0);
dt.setDate(dt.getDate() + pnnum * 7);
break;
case "m":
dt = new Date();
dt.setDate(1);
dt.setHours(0,0,0,0);
dt.setMonth(dt.getMonth() + pnnum);
break;
case "q":
dt = new Date();
dt.setDate(1);
dt.setHours(0,0,0,0);
dt.setMonth(3 * Math.floor(dt.getMonth() / 3));
dt.setMonth(dt.getMonth() + pnnum * 3);
break;
case "y":
dt = new Date();
dt.setDate(1);
dt.setMonth(0);
dt.setHours(0,0,0,0);
dt.setYear(dt.getYear() + pnnum);
break;
}
// Nu correctie naar einde periode voor hoofdletter
if (code.substr(0,1) != code.substr(0,1).toLowerCase())
dt.setHours(0,0,-1,0); // Einde dag ervoor
switch (code.substr(0,1))
{
case "N":
break;
case "D":
dt.setDate(1 + dt.getDate());
break;
case "W":
dt.setDate(7 + dt.getDate());
break;
case "M":
dt.setMonth(1 + dt.getMonth());
break;
case "Q":
dt.setMonth(3 + dt.getMonth());
break;
case "Y":
dt.setYear(1 + dt.getYear());
break;
}
return dt;
},
parseDefault: function (def, field)
{
var result = { fixed: false, vmin: null, vmax: null };
if (!def || def.substr(0,1) != ":")
{
result.vmin = def;
return result;
}
def = def.substr(1);
if (def.substr(0,1) == "!") // ':!' bevriest waarde
{
result.fixed = true;
def = def.substr(1);
}
result.vmin = def;
if (field.filter == "range")
{
result.vmin = def.split('-')[0];
result.vmax = def.split('-')[1];
}
switch (field.typ)
{
case "key":
switch (result.vmin.toLowerCase())
{
case "self":
result.vmin = user_key;
break;
case "location":
result.vmin = user.alg_locatie_key({withcurrent:true});
break;
case "building":
result.vmin = user.alg_gebouw_key({withcurrent:true});
break;
}
break;
case "date":
case "datetime":
result.vmin = scf.defaultDate(result.vmin);
result.vmax = scf.defaultDate(result.vmax);
break;
}
return result;
}
}
%>

View File

@@ -63,6 +63,11 @@ function scaffolding_edit(model, scf_params)
{
FcltMgr.closeDetail(window, { cancel: true } );
}
jQuery(function()
{
$('textarea').resize(function () { FcltMgr.resized(window) });
$('textarea').autogrow();
});
</script>
</head>
<body id="<%=modal?"mod_scaffolding":"editbody"%>" <%=modal?"class='modal scaffolding'":""%>>

View File

@@ -102,7 +102,7 @@ function scaffolding_list(model, scf_params)
buttons.push({ icon: "page_refresh.png", title: L("lcl_refresh"), action: "FcltMgr.reload()" });
if (model["REST_POST"] && authparams.PRSwritelevel < 9 && authparams.ALGwritelevel < 9)
{
var addurl = scf_params.this_path + "?mode=edit" + transit;
var addurl = scf_params.this_path + "?mode=wrap" + transit;
buttons.push({ icon: "plus.png", title: L("lcl_add"), action: "FcltMgr.openDetail('" + addurl + "', '" + L("lcl_add") + " " + model.record_name + "')" });
}

View File

@@ -36,13 +36,14 @@ function scaffolding_save(model, scf_params)
{
if ("hook_pre_put" in model)
model.hook_pre_put(params, jsondata, key);
var xxx_array = model.REST_PUT(params, jsondata, key);
var restresult = model.REST_PUT(params, jsondata, key);
}
else
{
var xxx_array = model.REST_POST(params, jsondata);
var restresult = model.REST_POST(params, jsondata);
key = restresult.key;
}
var warning = xxx_array.warning;
var warning = restresult.warning;
var result = { key: key,
warning: warning,

View File

@@ -52,7 +52,7 @@ function scaffolding_search(model, scf_params)
$("#scfcolpicker").css("left", window.fcltevent.clientX - $("#scfcolpicker").width() - 50);
}
function doSubmit()
function doSubmit(graph)
{
$("#scfcolpicker").hide();
var cols = [];
@@ -71,6 +71,7 @@ function scaffolding_search(model, scf_params)
);
$("#columns").val(cols.join(","));
$("#groups").val(groups.join(","));
$("#graph").val(graph||"");
document.forms.u2.submit();
}
<% if (scf_params.search.autosearch) { %>
@@ -85,6 +86,7 @@ function scaffolding_search(model, scf_params)
<input type='hidden' name='mode' value='list'>
<input type='hidden' name='columns' id='columns'>
<input type='hidden' name='groups' id='groups'>
<input type='hidden' name='graph' id='graph'>
<%
var defaults = api2.qs2json(); // TODO: Ook via scf_params
@@ -109,66 +111,23 @@ function scaffolding_search(model, scf_params)
{
var fld = scf_params.search.filters[i];
var field = model.fields[fld];
var def = field.filterdefault || defaults[fld];
if (field.hidden)
continue;
var def = field.filterdefault || defaults[fld];
var defs = scf.parseDefault(def, field);
if (field.filter == 'like' || field.filter == 'exact' || !("filter" in field))
scf_RWFIELDTR(model, fld, def);
{
(defs.fixed?scf_ROFIELDTR:scf_RWFIELDTR)(model, fld, defs.vmin);
}
else if (field.filter == "range")
{
var from = null;
var to = null;
if (def && def.substr(0,1) == ":")
{
// Formaat ':d-d', ':d', ':-d' voor dagen en m, y voor maand/jaar
// De eerste letter geldt voor 'van', de eventuele tweede voor 'tot'
// Van is altijd begin van dag/maand/jaar, tot is altijd einde van dag/maand/jaar
switch (def.substr(1, 1))
{
case "d":
from = new Date();
from.setHours(0,0,0,0);
break;
case "m":
from = new Date();
from.setDate(1);
from.setHours(0,0,0,0);
break;
case "y":
from = new Date();
from.setDate(1);
from.setMonth(0);
from.setHours(0,0,0,0);
break;
}
if (def.indexOf('-') > -1) // Einddatum
switch (def.substr(def.length - 1, 1))
{
case "d":
to = new Date();
to.setHours(23,59,59,00);
break;
case "m":
to = new Date();
to.setDate(1);
to.setMonth(to.getMonth() + 1);
to.setHours(0,0,-1,0);
break;
case "y":
to = new Date();
to.setYear(to.getYear() + 1);
to.setDate(1);
to.setMonth(0);
to.setHours(0,0,-1,0);
break;
}
}
var org_label = field.label;
field.label = org_label + " " + L("lcl_from");
scf_RWFIELDTR(model, "start_" + fld, from);
(defs.fixed?scf_ROFIELDTR:scf_RWFIELDTR)(model, "start_" + fld, defs.vmin);
field.label = org_label + " " + L("lcl_to");
scf_RWFIELDTR(model, "end_" + fld, to);
(defs.fixed?scf_ROFIELDTR:scf_RWFIELDTR)(model, "end_" + fld, defs.vmax);
field.label = org_label;
}
}
@@ -177,6 +136,7 @@ function scaffolding_search(model, scf_params)
BLOCK_END();
var buttons = [];
// buttons.push({title: L("lcl_menu_fac_graphs"), action: "doSubmit('G')" });
buttons.push({title: L("lcl_search"), action: "doSubmit()" });
buttons.push({title: L("lcl_scf_columns"), action: "pick_columns(this)" });
CreateButtons(buttons, { entersubmit: true });
@@ -202,7 +162,7 @@ function scaffolding_search(model, scf_params)
if (model.list && model.list.canGroup && field.typ != "varchar" && !field.dbs.match(/_key$/i))
{
if (field.typ == "date" || field.typ == "datetime")
grp = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G,D,W,M,Y,H");
grp = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G,D,W,M,Q,Y,H");
else if (field.typ == "time")
grp = api2.filterLOV(L("lcl_rap_groupbyLOV"), "G,H");
else if (field.typ == 'varchar')