LOGC#90742: Rapportagekolommen verslepen in plaats van volgnummer invoeren.

svn path=/Website/trunk/; revision=71053
This commit is contained in:
Maykel Geerdink
2025-11-25 15:17:50 +00:00
parent f356b4b9fb
commit 646d29e229
3 changed files with 183 additions and 24 deletions

View File

@@ -107,9 +107,8 @@
"columns": {
"list": {
"requires": { js: ["./fac_reportx.js"] },
"sortable": { params: {"fac_usrrap_key": getQParamInt("fac_usrrap_key", -1) /*, test: 54321*/},
"file": "fac_sort_reportx_save.asp"
},
"sortable": { "dragparams": {"fac_usrrap_key": getQParamInt("fac_usrrap_key", -1) /*, test: 54321*/},
"dragfile": "fac_sort_reportx_save.asp" },
// da werkt hier niet "orderby": ["visible", "sequence"],
"buttons": [{
"title": L("lcl_usrrap_show"),

View File

@@ -0,0 +1,159 @@
<%@language = "javascript" %>
<% /*
$Revision$
$Id$
*/ %>
<%
var JSON_Result = true;
%>
<!-- #include file="../Shared/common.inc" -->
<%
protectRequest.validateToken();
var fac_usrrap_key = getFParamInt('fac_usrrap_key', -1);
user.checkAutorisation("WEB_PRSSYS");
var rowKey = getFParamInt('row_key');
var previousRowKey = getFParamInt('previous_row_key');
var nextRowKey = getFParamInt('next_row_key');
var sql = "SELECT fac_usrrap_cols_key"
+ " , fac_usrrap_cols_volgnr"
+ " FROM fac_usrrap"
+ " , fac_usrrap_cols"
+ " WHERE fac_usrrap.fac_usrrap_key = fac_usrrap_cols.fac_usrrap_key"
+ " AND fac_usrrap_cols.fac_usrrap_key = " + fac_usrrap_key
+ " AND DECODE(fac_usrrap_cols_visible, 'H', 9, 'I', 5, 1) = 1"
+ " AND (fac_functie_key IS NULL"
+ " OR fac_functie_key IN (SELECT w.fac_functie_key"
+ " FROM fac_v_webgebruiker W"
+ " WHERE w.prs_perslid_key = " + user_key + ")"
+ " OR fac_functie_key NOT IN"
+ " (SELECT fac_functie_key"
+ " FROM fac_functie"
+ " WHERE fac_functie_code IN ('WEB_FACFAC', 'WEB_FACTAB')))"
+ " AND fac_usrrap_cols_key IN (" + rowKey + ", " + previousRowKey + ", " + nextRowKey + ")"
+ " ORDER BY fac_usrrap_volgnr NULLS LAST"
+ " , fac_usrrap_omschrijving"
+ " , DECODE(fac_usrrap_cols_visible, 'H', 9, 'I', 5, 1)"
+ " , fac_usrrap_cols_volgnr";
var oRs = Oracle.Execute(sql);
var data = { previousRow: {},
oldRow: {},
nextRow: {}
};
while(!oRs.eof)
{
switch(oRs("fac_usrrap_cols_key").Value)
{
case rowKey: data.oldRow = { rowKey: oRs("fac_usrrap_cols_key").Value,
volgNr: oRs("fac_usrrap_cols_volgnr").Value };
break;
case previousRowKey: data.previousRow = { rowKey: oRs("fac_usrrap_cols_key").Value,
volgNr: oRs("fac_usrrap_cols_volgnr").Value };
break;
case nextRowKey: data.nextRow = { rowKey: oRs("fac_usrrap_cols_key").Value,
volgNr: oRs("fac_usrrap_cols_volgnr").Value };
break;
}
oRs.MoveNext();
}
oRs.Close();
if (data.previousRow.volgNr > data.oldRow.volgNr ||
data.nextRow.volgNr < data.oldRow.volgNr )
{
var hasPrevious = (previousRowKey && previousRowKey != -1);
var hasNext = (nextRowKey && nextRowKey != -1);
var movedUp;
var newVolgNr;
if (hasPrevious && hasNext)
{ // Between rows.
if (data.oldRow.volgNr > data.nextRow.volgNr )
{ // Moved up.
newVolgNr = data.nextRow.volgNr;
movedUp = true;
}
else if (data.oldRow.volgNr < data.previousRow.volgNr)
{ // Moved down.
newVolgNr = data.previousRow.volgNr;
movedUp = false;
}
else
{
// All volgNrs are equal, check volgnrs before previous/next - TODO
newVolgNr = data.nextRow.volgNr;
movedUp = true;
}
}
else if (hasPrevious)
{ // Moved to the end.
movedUp = false;
newVolgNr = data.previousRow.volgNr;
}
else if (hasNext)
{ // Moved to the start.
movedUp = true;
newVolgNr = data.nextRow.volgNr;
}
// Get volgnrs between old and new volgNr.
var sql2 = "SELECT fac_usrrap_cols_key"
+ " , fac_usrrap_cols_volgnr"
+ " FROM fac_usrrap"
+ " , fac_usrrap_cols"
+ " WHERE fac_usrrap.fac_usrrap_key = fac_usrrap_cols.fac_usrrap_key"
+ " AND fac_usrrap_cols.fac_usrrap_key = " + fac_usrrap_key
+ " AND DECODE(fac_usrrap_cols_visible, 'H', 9, 'I', 5, 1) = 1" // Alleen de zichtbare kolommen.
+ " AND (fac_functie_key IS NULL"
+ " OR fac_functie_key IN (SELECT w.fac_functie_key"
+ " FROM fac_v_webgebruiker W"
+ " WHERE w.prs_perslid_key = " + user_key + ")"
+ " OR fac_functie_key NOT IN"
+ " (SELECT fac_functie_key"
+ " FROM fac_functie"
+ " WHERE fac_functie_code IN ('WEB_FACFAC', 'WEB_FACTAB')))"
+ " AND fac_usrrap_cols_volgnr BETWEEN LEAST(" + newVolgNr + ", " + data.oldRow.volgNr + ")"
+ " AND GREATEST(" + newVolgNr + ", " + data.oldRow.volgNr + ")"
+ " ORDER BY fac_usrrap_volgnr NULLS LAST"
+ " , fac_usrrap_omschrijving"
+ " , DECODE(fac_usrrap_cols_visible, 'H', 9, 'I', 5, 1)"
+ " , fac_usrrap_cols_volgnr";
oRs = Oracle.Execute(sql2);
var colsKeys = [];
var volgNrs = [];
while (!oRs.eof)
{
colsKeys.push(oRs("fac_usrrap_cols_key").Value);
volgNrs.push(oRs("fac_usrrap_cols_volgnr").Value);
oRs.MoveNext();
}
oRs.Close();
if (movedUp)
{
var lastKey = colsKeys.pop();
colsKeys.unshift(lastKey);
}
else
{
var firstKey = colsKeys.shift();
colsKeys.push(firstKey);
}
var sql3 = "BEGIN";
for (var i = 0; i < colsKeys.length; i++)
{
sql3 += " UPDATE fac_usrrap_cols SET fac_usrrap_cols_volgNr = " + volgNrs[i]
+ " WHERE fac_usrrap_cols_key = " + colsKeys[i] + ";";
}
sql3 += " END;";
Oracle.Execute(sql3);
}
Response.Write(JSON.stringify({success:true}));
%>
<% ASPPAGE_END(); %>

View File

@@ -219,13 +219,13 @@ function scaffolding_list(model, scf_params)
// Als er clientside op een (andere) kolom gesorteerd wordt, wordt het verplaatsen van regels uitgeschakel in de functie "doSort2" van bestand "sorttable.js".
// Sortable moet daarbij op de tbody van een tabel gezet worden.
// Daarnaast moet in het model in de columns.list de parameter sortable meegegeven worden die de volgende parameters moet bevatten:
// 1) params: met een keys die nodig zijn voor de file.
// 2) file: met een bestand die de verschovenn volgnummers aanpast aan de nieuwe volgorde.
// 1) dragparams: met keys die nodig zijn voor de file.
// 2) dragfile: met een bestand die de volgnummers van de verschoven regels aanpast aan de nieuwe volgorde.
// Een voorbeeld hiervan zie je in bestand "fac_reportx.asp".
// Daarin is het volgende toegevoegd:
// "sortable": { params: {"fac_usrrap_key": getQParamInt("fac_usrrap_key", -1) /*, test: 54321*/},
// "file": "fac_sort_reportx_save.asp"
// Aan de parameter params kunnen meerdere parameters meegegeven worden als dat nodig is.
// "sortable": { "dragparams": {"fac_usrrap_key": getQParamInt("fac_usrrap_key", -1) /*, test: 54321*/},
// "dragfile": "fac_sort_reportx_save.asp" }
// Aan de parameter dragparams kunnen meerdere parameters meegegeven worden als dat nodig is.
// Alle parameters worden doorgegeven aan de file als die wordt aangeroepen.
$("#<%=model.table%> tbody").sortable({
items: "tr",
@@ -269,8 +269,6 @@ function scaffolding_list(model, scf_params)
{
scrollMode = 0;
parentScroll(scrollMode);
e.currentTarget.removeEventListener("touchmove", touchmoveHandler);
element.addEventListener("click", handler, false);
if (document.off)
(document).off('mousemove.helperFollow'); // opruimen
},
@@ -286,28 +284,31 @@ function scaffolding_list(model, scf_params)
};
<% // In de list.sortable parameter zijn de volgende twee parameters meegegeven:
// 1) params: met een keys die nodig zijn voor de file.
// 2) file: met een bestand die de verschovenn volgnummers aanpast aan de nieuwe volgorde.
// Aan de parameter params kunnen meerdere parameters meegegeven worden als dat nodig is.
// Alle parameters worden doorgegeven aan de file als die wordt aangeroepen.
if (scf_params.list.sortable && scf_params.list.sortable.params)
// 1) dragparams: met keys die nodig zijn voor de file.
// 2) dragfile: met een bestand die de volgnummers van de verschoven regels aanpast aan de nieuwe volgorde.
// Aan de parameter dragparams kunnen meerdere parameters meegegeven worden als dat nodig is.
// Alle parameters worden doorgegeven aan de dragfile als die wordt aangeroepen.
if (scf_params.list.sortable && scf_params.list.sortable.dragparams)
{
var sortParams = scf_params.list.sortable.params;
var sortFile = scf_params.list.sortable.file;
for (var keyName in sortParams)
var dragParams = scf_params.list.sortable.dragparams;
for (var keyName in dragParams)
{
if (sortParams.hasOwnProperty(keyName))
if (dragParams.hasOwnProperty(keyName))
{ %>
data["<%=keyName%>"] = <%=sortParams[keyName]%>;
data["<%=keyName%>"] = <%=dragParams[keyName]%>;
<% }
}
} %>
<% protectRequest.dataToken("data"); %>
$.post("<%=sortFile%>",
data,
FcltCallbackRefresh,
"json");
<% if (scf_params.list.sortable && scf_params.list.sortable.dragfile)
{
var dragFile = scf_params.list.sortable.dragfile; %>
$.post("<%=dragFile%>",
data,
FcltCallbackRefresh,
"json");
<% } %>
}
})
});