FCLT#55623 Bij impliciet opslaan van rapport filters worden nu wat velden buiten beschouwing gelaten die andere rapporten ongewenst beinvloeden (columns, scf_pivot etc..). Adhoc-, en normale rapport filters worden niet meer door elkaar gebruikt.

De Setting 'fac_usrrap_keepfilter' werkt nu ook in de .asp code

svn path=/Website/branches/v2018.2/; revision=40204
This commit is contained in:
2018-12-12 14:54:42 +00:00
parent 30a4f22f47
commit a1ef6e56e5
6 changed files with 64 additions and 32 deletions

View File

@@ -22,7 +22,8 @@ function toggleInputSelect()
else // het is een DIV die er door de multiSelectToggle omheen is gezet
{
var inp = $(this).prev().find("select")[0];
$(this).prev().replaceWith('<input class="fld" id="' + inp.name +'" name="' + inp.name +'">');
var inpClass = "fld" + ($(inp).hasClass("adhoc") ? " adhoc" : "");
$(this).prev().replaceWith('<input class="' + inpClass + '" id="' + inp.name +'" name="' + inp.name +'">');
}
}
@@ -30,7 +31,8 @@ function process_worker_info(data)
{
var isReeks = data.distinct === "start_" + data.colname || data.distinct === "end_" + data.colname;
var inp = $("#" + data.distinct); // we krijgen de naam terug in data.distinct
inp.replaceWith('<select id="{0}" class="reportmulti" name="{0}"></select>'.format(data.distinct));
var selClass = "reportmulti" + ($(inp).hasClass("adhoc") ? " adhoc" : "");
inp.replaceWith('<select id="{0}" class="{1}" name="{0}"></select>'.format(data.distinct, selClass));
var sel = $("#" + data.distinct);
var l = data.values.length;
if (l > 0 && data.values[l-1][data.colname] === null)

View File

@@ -48,8 +48,10 @@ var fac_usrrap = usrrap.fac_usrrap_info(usrrap_key);
<head>
<% FCLTHeader.Generate() %>
<script>
if (!window.fcltfilters)
window.fcltfilters = FcltMgr.getData("filters_report");
<% if (S("fac_usrrap_keepfilter") == 1) { %>
if (!window.fcltfilters)
window.fcltfilters = FcltMgr.getData("filters_report");
<% } %>
// Button 'Uitvoeren' has been pressed
function startSearch()
@@ -57,8 +59,10 @@ var fac_usrrap = usrrap.fac_usrrap_info(usrrap_key);
if (!validateForm("u2"))
return false;
var filters = iface.formToString($("form[name=u2]"));
FcltMgr.setData("filters_report", filters);
<% if (S("fac_usrrap_keepfilter") == 1) { %>
var filters = iface.formToString($("form[name=u2]"), false);
FcltMgr.setData("filters_report", filters);
<% } %>
document.forms.u2.submit();
}

View File

@@ -498,11 +498,16 @@ function do_fcltfilters()
{
$.each(formObject, function(key, val) {
$("div#search>div>select>option[value="+key+"]").eq(0).each(function () {
// key kan iets zijn als "veldnaam" of "veldnaam.adhoc" (indien adhoc filter)
var key_split = key.split(".");
if (key_split.length > 1 && key_split[1] == "adhoc")
{
$("div#search>div>select>option[value="+key_split[0]+"]").eq(0).each(function () {
$(this).prop("selected", true);
addFilter($(this).parent("select"));
});
$(this).prop("selected", true);
addFilter($(this).parent("select"));
});
}
});
}

View File

@@ -200,7 +200,7 @@ var FcltMgr =
url = frm.location.href; // bij een *net* aangemaakte melding is deze anders
if (frm.iface && frm.$("form[name=u2]").length)
{
filters = frm.iface.formToString(frm.$("form[name=u2]"));
filters = frm.iface.formToString(frm.$("form[name=u2]"), true);
}
if (typeof frm.getAdvFlexValues === "function")
{
@@ -1177,10 +1177,14 @@ var FcltMgr =
},
setData: function (code, data)
{
console.log("setData:");
console.log(data);
this.topmanager().globalData[code] = data;
},
getData: function (code)
{
console.log("getData:");
console.log(this.topmanager().globalData[code]);
return this.topmanager().globalData[code];
},

View File

@@ -104,18 +104,30 @@ var iface =
FcltMgr.openModalDetail(url, L("lcl_lcl_vertaling"), {xheight: 200, width: 600 } );
},
formToString: function (stringForm)
formToString: function (stringForm, explicit)
{
// explicit: expliciet = bewust opgeslagen pagina's (tot nu toe alleen pinnen van tabs)
// !explicit: impliciet = onbewust opgeslagen pagina's (tot nu toe alleen het impliciet onthouden van rapport filters bij S(fac_usrrap_keepfilter) == 1)
var notFilter = "";
if (explicit)
notFilter = "[name^='fclt_f_colname']";
else // Bij impliciet opslaan, deze filters negeren;
notFilter = "[name='mode'], [name='columns'], [name='groupby'], "
+ "[name='scf_pivot'], [name='usrrap_key'], [name^='fclt_f_colname']";
var formObject = {};
stringForm.find("input, select").not("[name='usrrap_key'], [name^='fclt_f_colname']").each(function()
stringForm.find("input, select").not(notFilter).each(function()
{
var nm = $(this).attr("colname") || this.id || this.name || null;
if (!nm)
return;
// Sla adhoc filters op als "veldnaam.adhoc"
var objName = $(this).hasClass("adhoc") ? nm + ".adhoc" : nm;
if ($(this).attr("type") == "checkbox" || $(this).attr("type") == "radio")
{
formObject[nm] = $(this).prop("checked");
formObject[objName] = $(this).prop("checked");
}
else
{
@@ -131,12 +143,12 @@ var iface =
return;
//if (val === $(this).prop( 'defaultValue' ))
// return;
formObject[nm] = val;
formObject[objName] = val;
if ($(this).hasClass("suggest"))
{
if (!("suggestattr" in formObject))
formObject.suggestattr = {};
formObject.suggestattr[nm] =
formObject.suggestattr[objName] =
{ // Ook deze 'hidden' suggest attributen meenemen
sgKey: $(this).attr("sgKey"),
sgCurrentValue: $(this).attr("sgCurrentValue"),
@@ -155,7 +167,11 @@ var iface =
{
var nm = $(this).attr("colname") || this.id || this.name || null;
if (!nm || !(nm in formObject))
// Adhoc filters zijn in het formObject opgeslagen als "veldnaam.adhoc"
var isAdhoc = $(this).hasClass("adhoc");
var objName = isAdhoc ? nm + ".adhoc" : nm;
if (!nm || !(objName in formObject))
return;
if ($(this).attr("colname"))
@@ -167,24 +183,23 @@ var iface =
if (!input.length)
return;
var multiple = formObject[nm] instanceof Array && formObject[nm].length > 1;
var multiple = formObject[objName] instanceof Array && formObject[objName].length > 1;
if (input.attr("type") == "checkbox" || input.attr("type") == "radio")
{
input.prop("checked", !!formObject[nm])
input.prop("checked", !!formObject[objName])
}
else if (input.prop("tagName") == "SELECT")
{
// This fills out the filters as saved from a (multi)select into the input field (so we dont have to perform any FillListbox()'s)
if (input.is(":hidden") && nm.length > 2 && stringForm.find("input#" + nm.slice(0, -2)).length > 0)
{
// Not supported; Could take too long to open the list, so just take the first value
if (multiple)
formObject[nm] = formObject[nm][0];
formObject[objName] = formObject[objName][0];
stringForm.find("input#" + nm.slice(0, -2)).val(formObject[nm])
.prop('defaultValue', formObject[nm]);
stringForm.find("input#" + nm.slice(0, -2)).val(formObject[objName])
.prop('defaultValue', formObject[objName]);
}
else
{
@@ -192,21 +207,23 @@ var iface =
{
input.attr('multiple', 1);
input.attr('size', Math.min(input.find("option").length, 8));
input.val(formObject[nm]); // gewoon
input.val(formObject[objName]); // gewoon
input.prev().html('&laquo;')
}
else
input.val(formObject[nm]); // gewoon
input.val(formObject[objName]); // gewoon
}
}
else if (!input.hasClass("final")) // Final's niet opslaan als filter
else if (!input.hasClass("final") && // Final's niet opslaan als filter
((isAdhoc && input.hasClass("adhoc")) || // Adhoc filters alleen invullen bij adhoc filters
(!isAdhoc && !input.hasClass("adhoc")))) // Normale filters alleen invullen bij normale filters
{
// Meerdere waarden alleen supported bij multiSuggest's
if (multiple && !$(input).hasClass("multiSuggest"))
formObject[nm] = formObject[nm][0];
formObject[objName] = formObject[objName][0];
input.val(formObject[nm]);
input.prop('defaultValue', formObject[nm]);
input.val(formObject[objName]);
input.prop('defaultValue', formObject[objName]);
// multiSuggests met meerdere waarden vast openklappen
if (input.hasClass("multiSuggest") && multiple)

View File

@@ -146,7 +146,7 @@ function scaffolding_search(model, scf_params)
FcltMgr.setTitle("<%=safe.jsstring(scf_params.search.title)%>");
<% } %>
<% if ("keepfilter" in scf_params.search) { %>
<% if (S("fac_usrrap_keepfilter") == 1 && "keepfilter" in scf_params.search) { %>
if (!window.fcltfilters)
window.fcltfilters = FcltMgr.getData("filters_<%=safe.jsstring(scf_params.search.keepfilter)%>");
<% } %>
@@ -239,8 +239,8 @@ function scaffolding_search(model, scf_params)
$("#workFrame").width($(window).width()); // grafieken 'krimpen' slecht
<% if ("keepfilter" in scf_params.search) { %>
var filters = iface.formToString($("form[name=u2]"));
<% if (S("fac_usrrap_keepfilter") == 1 && "keepfilter" in scf_params.search) { %>
var filters = iface.formToString($("form[name=u2]"), false);
FcltMgr.setData("filters_<%=safe.jsstring(scf_params.search.keepfilter)%>", filters);
<% } %>