From 1d2d6edf16e6f78e9832511db525ae037afa2090 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Thu, 25 Jul 2019 08:45:36 +0200 Subject: [PATCH] improve filter for Attributes --- .../filterConditionProcess.js | 4 ++-- .../attribute_filter/filterFieldsProcess.js | 10 +++++---- .../attribute_filter/filterValuesProcess.js | 6 +++-- .../AttributeFilter_lib.aod | 9 ++++++++ process/AttributeFilter_lib/process.js | 22 +++++++++++++++++++ 5 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 process/AttributeFilter_lib/AttributeFilter_lib.aod create mode 100644 process/AttributeFilter_lib/process.js diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js index eb15ffb9a9..e207f370e7 100644 --- a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js +++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js @@ -1,3 +1,4 @@ +import("AttributeFilter_lib"); import("system.db"); import("Context_lib"); import("Sql_lib"); @@ -7,8 +8,7 @@ import("system.vars"); import("system.result"); var name = vars.get("$local.name"); -name = name.substr(name.lastIndexOf(".")+1); -name = JSON.parse(name); +name = AttributeSearchNameCoder.decode(name); var attributeId = name.id; var dbField = AttributeTypeUtil.getDatabaseField(name.type); diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js index 9568f5e590..8dfefc2b1b 100644 --- a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js +++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js @@ -1,3 +1,5 @@ +import("AttributeFilter_lib"); +import("system.util"); import("Context_lib"); import("Attribute_lib"); import("system.entities"); @@ -18,10 +20,9 @@ attributeRows.forEach(function(row){ if (contentType) { - var id = {id: row["UID"], type: attributeType}; - id = JSON.stringify(id); + var name = AttributeSearchNameCoder.encode(row["UID"], attributeType); res.push({ - name: id, + name: name, title: row["FULL_ATTRIBUTE_NAME"], contentType: contentType == "UNKNOWN" ? "TEXT" : contentType, //TODO: temporary test hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN" ? true : false//TODO: temporary test @@ -30,4 +31,5 @@ attributeRows.forEach(function(row){ }); res = JSON.stringify(res); -result.string(res); \ No newline at end of file +result.string(res); + diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js index 91a48d820e..32fa052604 100644 --- a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js +++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js @@ -1,3 +1,4 @@ +import("AttributeFilter_lib"); import("Context_lib"); import("system.translate"); import("system.db"); @@ -7,9 +8,10 @@ import("Attribute_lib"); import("Sql_lib"); var filter = JSON.parse(vars.getString("$local.filter")); -var name = JSON.parse(filter.name); +var name = name = AttributeSearchNameCoder.decode(filter.name); + var attributeId = name.id; -var attrType = name.type.trim(); +var attrType = name.type; if (attrType == $AttributeTypes.COMBO.toString()) { diff --git a/process/AttributeFilter_lib/AttributeFilter_lib.aod b/process/AttributeFilter_lib/AttributeFilter_lib.aod new file mode 100644 index 0000000000..57e3edcba2 --- /dev/null +++ b/process/AttributeFilter_lib/AttributeFilter_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>AttributeFilter_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/AttributeFilter_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js new file mode 100644 index 0000000000..51cfbb2887 --- /dev/null +++ b/process/AttributeFilter_lib/process.js @@ -0,0 +1,22 @@ +import("system.util"); + +function AttributeSearchNameCoder(){} + +AttributeSearchNameCoder.encode = function (pUid, pAttributeType) +{ + var res = { + id: pUid, + type: pAttributeType.trim() + }; + res = JSON.stringify(res); + res = util.encodeBase64String(res); + return res +}; + +AttributeSearchNameCoder.decode = function (pEncodedString) +{ + var res = pEncodedString.substr(pEncodedString.lastIndexOf(".") + 1); + res = util.decodeBase64String(res); + res = JSON.parse(res); + return res +}; -- GitLab