From f5445c73c5ed4fe2e777dd2770548f70345d0575 Mon Sep 17 00:00:00 2001
From: "S.Leipold" <S.Leipold@sleipold.aditosoftware.local>
Date: Wed, 4 Dec 2019 14:02:15 +0100
Subject: [PATCH] =?UTF-8?q?1048336=20Sortieren=20in=20Permission=20Tabelle?=
 =?UTF-8?q?n=20nicht=20m=C3=B6glich=20-=20fixed,=20sorting=20is=20now=20wo?=
 =?UTF-8?q?rking?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../PermissionMetaData_entity.aod             |  1 +
 .../recordcontainers/jdito/contentProcess.js  | 22 +++++++++++++++-
 .../PermissionOverview_entity.aod             |  1 +
 .../recordcontainers/jdito/contentProcess.js  | 26 ++++++++++++++++++-
 entity/Role_entity/Role_entity.aod            |  1 +
 .../recordcontainers/jdito/contentProcess.js  | 24 ++++++++++++++++-
 6 files changed, 72 insertions(+), 3 deletions(-)

diff --git a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod
index 3632b9d776b..e623beadccb 100644
--- a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod
+++ b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod
@@ -92,6 +92,7 @@
       <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
       <isPageable v="false" />
       <isFilterable v="true" />
+      <isSortable v="true" />
       <contentProcess>%aditoprj%/entity/PermissionMetaData_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <recordFieldMappings>
         <jDitoRecordFieldMapping>
diff --git a/entity/PermissionMetaData_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionMetaData_entity/recordcontainers/jdito/contentProcess.js
index 88ebe719130..0b415b767e2 100644
--- a/entity/PermissionMetaData_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionMetaData_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("system.vars");
 import("system.result");
 import("system.project");
@@ -17,4 +18,23 @@ if (selectedEntity == null) {
     res.push([entity[0], entity[1], entity[2], entity[6]]);
 }
 
-result.object(res.sort());
\ No newline at end of file
+var order = vars.get("$local.order");
+var columnOrder = {
+    "UID.value" : 1,
+    "TITLE.value" : 2
+};
+var sortOrder = [];
+for (let field in order)
+{
+    if (field in columnOrder)
+    {
+        sortOrder.push(columnOrder[field]);
+        sortOrder.push(order[field] == "DOWN");
+    }
+}
+if (!sortOrder.length) //sort by entity name by default
+    sortOrder = [1, false];
+
+ArrayUtils.sortMulti(res, sortOrder);
+
+result.object(res);
\ No newline at end of file
diff --git a/entity/PermissionOverview_entity/PermissionOverview_entity.aod b/entity/PermissionOverview_entity/PermissionOverview_entity.aod
index 7e36c18e23e..e2166430192 100644
--- a/entity/PermissionOverview_entity/PermissionOverview_entity.aod
+++ b/entity/PermissionOverview_entity/PermissionOverview_entity.aod
@@ -86,6 +86,7 @@
       <name>jDito</name>
       <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
       <isFilterable v="false" />
+      <isSortable v="true" />
       <contentProcess>%aditoprj%/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <recordFieldMappings>
         <jDitoRecordFieldMapping>
diff --git a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
index b5e82bed169..0a21aef128b 100644
--- a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js
@@ -1,4 +1,4 @@
-import("system.logging");
+import("Util_lib");
 import("Sql_lib");
 import("system.project");
 import("system.vars");
@@ -91,6 +91,30 @@ for each (var entry in rolesOrEntities) { // entry contains either a role or an
         res.push(currOverview);
     }
 }
+
+var order = vars.get("$local.order");
+var columnOrder = {
+    "ENTITY.value" : 1,
+    "ACTION_VIEW.value" : 2,
+    "ACTION_CREATE.value" : 3,
+    "ACTION_READ.value" : 4,
+    "ACTION_UPDATE.value" : 5,
+    "ACTION_DELETE.value" : 6
+};
+var sortOrder = [];
+for (let field in order)
+{
+    if (field in columnOrder)
+    {
+        sortOrder.push(columnOrder[field]);
+        sortOrder.push(order[field] == "DOWN");
+    }
+}
+if (!sortOrder.length) //sort by entity or role by default
+    sortOrder = [1, false];
+
+ArrayUtils.sortMulti(res, sortOrder);
+
 result.object(res);
 
 function prepareOverview(pPermSetId, pCurrOverview, pMode) {
diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod
index 57a20f63477..4454af9e841 100644
--- a/entity/Role_entity/Role_entity.aod
+++ b/entity/Role_entity/Role_entity.aod
@@ -176,6 +176,7 @@
       <name>jDito</name>
       <jDitoRecordAlias>_____SYSTEMALIAS</jDitoRecordAlias>
       <isFilterable v="true" />
+      <isSortable v="true" />
       <contentProcess>%aditoprj%/entity/Role_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
       <onInsert>%aditoprj%/entity/Role_entity/recordcontainers/jdito/onInsert.js</onInsert>
       <onUpdate>%aditoprj%/entity/Role_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
diff --git a/entity/Role_entity/recordcontainers/jdito/contentProcess.js b/entity/Role_entity/recordcontainers/jdito/contentProcess.js
index 9ebefcd2429..0f67d474c58 100644
--- a/entity/Role_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Role_entity/recordcontainers/jdito/contentProcess.js
@@ -1,3 +1,4 @@
+import("Util_lib");
 import("system.translate");
 import("system.vars");
 import("system.result");
@@ -38,4 +39,25 @@ if (selectedRole != null) {
     });
 }
 
-result.object(res.sort());
\ No newline at end of file
+var order = vars.get("$local.order");
+var columnOrder = {
+    "ROLENAME.value" : 1,
+    "ROLETITLE.value" : 2,
+    "ROLETYPE.value" : 3,
+    "USERCOUNT.value" : 5
+};
+var sortOrder = [];
+for (let field in order)
+{
+    if (field in columnOrder)
+    {
+        sortOrder.push(columnOrder[field]);
+        sortOrder.push(order[field] == "DOWN");
+    }
+}
+if (!sortOrder.length) //sort by role name by default
+    sortOrder = [1, false];
+
+ArrayUtils.sortMulti(res, sortOrder);
+
+result.object(res);
\ No newline at end of file
-- 
GitLab