From 9b4abbd338901dd42f74d360ba67c564b930b2a1 Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Wed, 6 Feb 2019 20:09:40 +0100 Subject: [PATCH] [Projekt: Entwicklung - Neon][TicketNr.: 1030337][Umsetzung Keywordlogik] --- .../_____SYSTEM_APPLICATION_NEON.aod | 1 + entity/Keyword_entity/Keyword_entity.aod | 29 +++++++++ entity/Keyword_entity/documentation.adoc | 2 +- .../entityfields/container/documentation.adoc | 1 + .../container/possibleItemsProcess.js | 6 ++ .../generic_dfi/children/onlyactives/code.js | 2 + .../entityfields/isactive/valueProcess.js | 7 +++ .../isessential/documentation.adoc | 7 +++ .../entityfields/keyid/valueProcess.js | 7 +++ .../entityfields/onlyactives/code.js | 2 + .../entityfields/sorting/documentation.adoc | 6 ++ entity/Keyword_entity/iconIdProcess.js | 7 +++ entity/Keyword_entity/onValidation.js | 21 +++++++ .../recordcontainers/db/conditionProcess.js | 10 ++- .../recordcontainers/db/onDBUpdate.js | 29 +++++++++ .../recordcontainers/db/orderClauseProcess.js | 7 +++ entity/Task_entity/onValidation.js | 1 + .../_____LANGUAGE_EXTRA.aod | 56 +++++++++++++---- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 61 ++++++++++++++----- .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 55 +++++++++++++---- .../Keyword_context/Keyword_context.aod | 10 +++ .../KeywordEdit_view/KeywordEdit_view.aod | 31 ++++++++++ .../KeywordFilter_view/KeywordFilter_view.aod | 17 +++++- .../KeywordPreview_view.aod | 39 ++++++++++++ process/Sql_lib/process.js | 2 +- 25 files changed, 367 insertions(+), 49 deletions(-) create mode 100644 entity/Keyword_entity/entityfields/container/documentation.adoc create mode 100644 entity/Keyword_entity/entityfields/container/possibleItemsProcess.js create mode 100644 entity/Keyword_entity/entityfields/generic_dfi/children/onlyactives/code.js create mode 100644 entity/Keyword_entity/entityfields/isactive/valueProcess.js create mode 100644 entity/Keyword_entity/entityfields/isessential/documentation.adoc create mode 100644 entity/Keyword_entity/entityfields/keyid/valueProcess.js create mode 100644 entity/Keyword_entity/entityfields/onlyactives/code.js create mode 100644 entity/Keyword_entity/entityfields/sorting/documentation.adoc create mode 100644 entity/Keyword_entity/iconIdProcess.js create mode 100644 entity/Keyword_entity/onValidation.js create mode 100644 entity/Keyword_entity/recordcontainers/db/onDBUpdate.js create mode 100644 entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js create mode 100644 neonView/KeywordEdit_view/KeywordEdit_view.aod create mode 100644 neonView/KeywordPreview_view/KeywordPreview_view.aod diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 7d24b524c3c..a6d7ef27929 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -30,6 +30,7 @@ <icon>VAADIN:CONTROLLER</icon> <node name="Group3" kind="123" title=""> <node name="Attribute_context" kind="10077" /> + <node name="Keyword_context" kind="10077" /> <node name="INTERNAL_ADMINISTRATOR" kind="159" /> </node> </node> diff --git a/entity/Keyword_entity/Keyword_entity.aod b/entity/Keyword_entity/Keyword_entity.aod index 54279835d5f..4d093b1cd29 100644 --- a/entity/Keyword_entity/Keyword_entity.aod +++ b/entity/Keyword_entity/Keyword_entity.aod @@ -4,7 +4,9 @@ <title>Keyword</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Keyword_entity/documentation.adoc</documentation> + <onValidation>%aditoprj%/entity/Keyword_entity/onValidation.js</onValidation> <iconId>VAADIN:KEY</iconId> + <iconIdProcess>%aditoprj%/entity/Keyword_entity/iconIdProcess.js</iconIdProcess> <titleProcess>%aditoprj%/entity/Keyword_entity/titleProcess.js</titleProcess> <recordContainer>db</recordContainer> <entityFields> @@ -15,7 +17,10 @@ </entityProvider> <entityField> <name>CONTAINER</name> + <documentation>%aditoprj%/entity/Keyword_entity/entityfields/container/documentation.adoc</documentation> <title>Container</title> + <mandatory v="true" /> + <possibleItemsProcess>%aditoprj%/entity/Keyword_entity/entityfields/container/possibleItemsProcess.js</possibleItemsProcess> <groupable v="true" /> </entityField> <entityField> @@ -41,26 +46,34 @@ <entityField> <name>KEYID</name> <title>Key</title> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/keyid/valueProcess.js</valueProcess> </entityField> <entityField> <name>TITLE</name> <title>Title (original language)</title> + <mandatory v="true" /> </entityField> <entityField> <name>SORTING</name> + <documentation>%aditoprj%/entity/Keyword_entity/entityfields/sorting/documentation.adoc</documentation> <title>Sorting</title> + <state>READONLY</state> </entityField> <entityField> <name>ISACTIVE</name> <title>Active</title> <contentType>BOOLEAN</contentType> <possibleItemsProcess>%aditoprj%/entity/Keyword_entity/entityfields/isactive/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/isactive/valueProcess.js</valueProcess> </entityField> <entityField> <name>ISESSENTIAL</name> + <documentation>%aditoprj%/entity/Keyword_entity/entityfields/isessential/documentation.adoc</documentation> <title>Essential</title> <contentType>BOOLEAN</contentType> <possibleItemsProcess>%aditoprj%/entity/Keyword_entity/entityfields/isessential/possibleItemsProcess.js</possibleItemsProcess> + <state>READONLY</state> </entityField> <entityParameter> <name>containerName_param</name> @@ -86,17 +99,33 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + <children> + <entityParameter> + <name>onlyActives</name> + <code>%aditoprj%/entity/Keyword_entity/entityfields/generic_dfi/children/onlyactives/code.js</code> + <expose v="true" /> + </entityParameter> + </children> </entityProvider> <entityField> <name>TITLE_TRANSLATED</name> <valueProcess>%aditoprj%/entity/Keyword_entity/entityfields/title_translated/valueProcess.js</valueProcess> </entityField> + <entityParameter> + <name>onlyActives</name> + <code>%aditoprj%/entity/Keyword_entity/entityfields/onlyactives/code.js</code> + <expose v="true" /> + <triggerRecalculation v="true" /> + <description>PARAMETER</description> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> <conditionProcess>%aditoprj%/entity/Keyword_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBUpdate>%aditoprj%/entity/Keyword_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <linkInformation> <linkInformation> <name>52acbfe0-57f4-4614-83af-9882e168f431</name> diff --git a/entity/Keyword_entity/documentation.adoc b/entity/Keyword_entity/documentation.adoc index bd1db753b16..85315315fa2 100644 --- a/entity/Keyword_entity/documentation.adoc +++ b/entity/Keyword_entity/documentation.adoc @@ -12,7 +12,7 @@ Glossary [glossary] Keyword Container:: - A keyword container is the element that keeps several entries of Keywords together. That could be for example something like "Contact-Status". + A keyword container is the element that keeps several entries of Keywords together. That could be for example something like "Contact-Status". Keep in mind that this done virtually and not in the actual way of storage. Keyword Entry:: A keyword entry is a specific child-element of a keyword container. For the upper example "Contact-Status" this could be "Active", "Inactive", etc. diff --git a/entity/Keyword_entity/entityfields/container/documentation.adoc b/entity/Keyword_entity/entityfields/container/documentation.adoc new file mode 100644 index 00000000000..b46aaac93ed --- /dev/null +++ b/entity/Keyword_entity/entityfields/container/documentation.adoc @@ -0,0 +1 @@ + `CONTAINER` is the a name and used for grouping keyword-entries. This is was a keyword-container essentially is. \ No newline at end of file diff --git a/entity/Keyword_entity/entityfields/container/possibleItemsProcess.js b/entity/Keyword_entity/entityfields/container/possibleItemsProcess.js new file mode 100644 index 00000000000..6d8037350d9 --- /dev/null +++ b/entity/Keyword_entity/entityfields/container/possibleItemsProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.db"); + +//TODO: move into UEM +//first column is ID, second view value - which is the same because there is no ID for keyword-containers +result.object(db.table("select distinct AB_KEYWORD_ENTRY.CONTAINER, AB_KEYWORD_ENTRY.CONTAINER from AB_KEYWORD_ENTRY order by 1 asc")); \ No newline at end of file diff --git a/entity/Keyword_entity/entityfields/generic_dfi/children/onlyactives/code.js b/entity/Keyword_entity/entityfields/generic_dfi/children/onlyactives/code.js new file mode 100644 index 00000000000..0e7522714af --- /dev/null +++ b/entity/Keyword_entity/entityfields/generic_dfi/children/onlyactives/code.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("true");//TODO: provider-code is not executed correct (did not receive the value from here) \ No newline at end of file diff --git a/entity/Keyword_entity/entityfields/isactive/valueProcess.js b/entity/Keyword_entity/entityfields/isactive/valueProcess.js new file mode 100644 index 00000000000..95f59e0c071 --- /dev/null +++ b/entity/Keyword_entity/entityfields/isactive/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string("1"); \ No newline at end of file diff --git a/entity/Keyword_entity/entityfields/isessential/documentation.adoc b/entity/Keyword_entity/entityfields/isessential/documentation.adoc new file mode 100644 index 00000000000..a8ed78817f0 --- /dev/null +++ b/entity/Keyword_entity/entityfields/isessential/documentation.adoc @@ -0,0 +1,7 @@ +Specifies if a keyword-entry is essential. An essential keyword-entry is protected an must not be deleted because the `KEYID` is used within JDito-Code and there is functionality behind that keyword-entry. + + +[NOTE] +==== +Therefore this field cannot be set (it's *READONLY*) - a `true`-value makes only sense if the developer decides to use it which is why he has to care that the field is marked as essential. +==== diff --git a/entity/Keyword_entity/entityfields/keyid/valueProcess.js b/entity/Keyword_entity/entityfields/keyid/valueProcess.js new file mode 100644 index 00000000000..4af99287f59 --- /dev/null +++ b/entity/Keyword_entity/entityfields/keyid/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/Keyword_entity/entityfields/onlyactives/code.js b/entity/Keyword_entity/entityfields/onlyactives/code.js new file mode 100644 index 00000000000..3504e763747 --- /dev/null +++ b/entity/Keyword_entity/entityfields/onlyactives/code.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("false"); \ No newline at end of file diff --git a/entity/Keyword_entity/entityfields/sorting/documentation.adoc b/entity/Keyword_entity/entityfields/sorting/documentation.adoc new file mode 100644 index 00000000000..d999d0a3d25 --- /dev/null +++ b/entity/Keyword_entity/entityfields/sorting/documentation.adoc @@ -0,0 +1,6 @@ +Used for sorting keyword-entries within a keyword-container. + +[NOTE] +==== +Currently this cannot be set (it's *READONLY*) - the value is generated automatically. Reserved for future use. +==== diff --git a/entity/Keyword_entity/iconIdProcess.js b/entity/Keyword_entity/iconIdProcess.js new file mode 100644 index 00000000000..ef0457e7805 --- /dev/null +++ b/entity/Keyword_entity/iconIdProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +var container = vars.get("$field.CONTAINER"); + +if (container) + result.string("TEXT:" + container); \ No newline at end of file diff --git a/entity/Keyword_entity/onValidation.js b/entity/Keyword_entity/onValidation.js new file mode 100644 index 00000000000..ae813d01884 --- /dev/null +++ b/entity/Keyword_entity/onValidation.js @@ -0,0 +1,21 @@ +import("system.db"); +import("system.vars"); +import("system.text"); +import("system.neon"); +import("Sql_lib"); + +//TODO: this should no happen in onValidation; waiting for #1032668 +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + var keyContainer = vars.get("$field.CONTAINER"); + if (keyContainer) + { + var cond = SqlCondition.begin().andPrepare("AB_KEYWORD_ENTRY.CONTAINER", keyContainer); + var maskingHelper = new SqlMaskingUtils(); + var newCodeNumber = db.cell(cond.buildSql("select " + maskingHelper.max("AB_KEYWORD_ENTRY.SORTING") + " from AB_KEYWORD_ENTRY", "1 = 2")); + newCodeNumber = Number(newCodeNumber);//if no number exists till no, start value will be 1 (due to: ++0) + if (isNaN(newCodeNumber)) + throw new TypeError();//TODO:add Message + neon.setFieldValue("$field.SORTING", ++newCodeNumber); + } +} \ No newline at end of file diff --git a/entity/Keyword_entity/recordcontainers/db/conditionProcess.js b/entity/Keyword_entity/recordcontainers/db/conditionProcess.js index b581f2d83f5..7b0650f1d33 100644 --- a/entity/Keyword_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Keyword_entity/recordcontainers/db/conditionProcess.js @@ -1,10 +1,14 @@ +import("system.vars"); import("system.db"); import("system.result"); import("Sql_lib"); var cond = SqlCondition.begin().andPrepareVars("AB_KEYWORD_ENTRY.CONTAINER", "$param.containerName_param"); -if (!cond.isSet()) - throw new Error("keyword containerName has to be set");//at the moment throw an error since there is no list of "all keywords" -var condStr = db.translateCondition(cond.build()); +if (vars.get("$param.onlyActives") == "true") +{ + cond.andPrepare("AB_KEYWORD_ENTRY.ISACTIVE", "1"); +} + +var condStr = db.translateCondition(cond.build("1 = 1")); result.string(condStr); \ No newline at end of file diff --git a/entity/Keyword_entity/recordcontainers/db/onDBUpdate.js b/entity/Keyword_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 00000000000..a1e6133b613 --- /dev/null +++ b/entity/Keyword_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,29 @@ +import("system.logging"); +import("system.db"); +import("system.vars"); +import("system.text"); +import("system.neon"); +import("Sql_lib"); + +var changedFields = vars.get("$local.changed"); +//whenever the container is changed data that depends on the keyword-container has be "fixed" to keep consistency +//this could be information like Keyword-attributes or the sorting-position +//maybe it'd be better to lock KeywordContainer as read-only after creation +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && changedFields.indexOf("AB_KEYWORD_ENTRY.CONTAINER") > -1) +{ + var keyContainer = vars.get("$field.CONTAINER"); + if (keyContainer) + { + var cond = SqlCondition.begin().andPrepare("AB_KEYWORD_ENTRY.CONTAINER", keyContainer); + var maskingHelper = new SqlMaskingUtils(); + var newCodeNumber = db.cell(cond.buildSql("select " + maskingHelper.max("AB_KEYWORD_ENTRY.SORTING") + " from AB_KEYWORD_ENTRY", "1 = 2")); + newCodeNumber = Number(newCodeNumber);//if no number exists till no, start value will be 1 (due to: ++0) + if (isNaN(newCodeNumber)) + throw new TypeError();//TODO:add Message + + var cols = ["SORTING"]; + var vals = [++newCodeNumber]; + cond.clear().andPrepare("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", vars.get("$sys.uid")); + db.updateData("AB_KEYWORD_ENTRY", cols, null, vals, cond.build("1 = 2")); + } +} \ No newline at end of file diff --git a/entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js b/entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 00000000000..b8dafebb3d1 --- /dev/null +++ b/entity/Keyword_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,7 @@ +import("system.db"); +import("system.result"); + +result.object({ + "AB_KEYWORD_ENTRY.CONTAINER": db.ASCENDING + ,"AB_KEYWORD_ENTRY.SORTING": db.ASCENDING +}); \ No newline at end of file diff --git a/entity/Task_entity/onValidation.js b/entity/Task_entity/onValidation.js index 9d163bb6d1d..f0f501340bd 100644 --- a/entity/Task_entity/onValidation.js +++ b/entity/Task_entity/onValidation.js @@ -4,6 +4,7 @@ import("system.text"); import("system.neon"); import("Sql_lib"); +//TODO: this should no happen in onValidation; waiting for #1032668 if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { var maskingHelper = new SqlMaskingUtils(); diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index a34ffa05391..ab1d0a6e88c 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -783,9 +783,6 @@ <entry> <key>Dateigröße</key> </entry> - <entry> - <key>Member</key> - </entry> <entry> <key>A reason is only possible if a date is given.</key> </entry> @@ -1005,9 +1002,6 @@ <entry> <key>Social</key> </entry> - <entry> - <key>Dataset</key> - </entry> <entry> <key>Facebook Feed</key> </entry> @@ -1371,9 +1365,6 @@ <entry> <key>absagen</key> </entry> - <entry> - <key>asdfasdf</key> - </entry> <entry> <key>type</key> </entry> @@ -1488,9 +1479,6 @@ <entry> <key>${FORECAST_ENGLISH}</key> </entry> - <entry> - <key>${NUMBER}</key> - </entry> <entry> <key>Usage</key> </entry> @@ -1503,6 +1491,48 @@ <entry> <key>${ADDRESS_STATE}</key> </entry> + <entry> + <key>Title (original language)</key> + </entry> + <entry> + <key>Parent Attribute</key> + </entry> + <entry> + <key>Attribute Relation</key> + </entry> + <entry> + <key>Essential</key> + </entry> + <entry> + <key>Attribute Usage</key> + </entry> + <entry> + <key>Beziehung</key> + </entry> + <entry> + <key>Key</key> + </entry> + <entry> + <key>Attribute</key> + </entry> + <entry> + <key>Context</key> + </entry> + <entry> + <key>Container</key> + </entry> + <entry> + <key>Beziehungen</key> + </entry> + <entry> + <key>Administration</key> + </entry> + <entry> + <key>Keyword</key> + </entry> + <entry> + <key>Sorting</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> @@ -1510,7 +1540,7 @@ <name>Data_alias</name> <alias>Data_alias</alias> <statements> - <element></element> + <element>select AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY</element> </statements> </languageSql> </sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 7a997ae4307..69a1c029028 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -122,10 +122,6 @@ <key>Online-Meeting</key> <value>Online-Meeting</value> </entry> - <entry> - <key>${NUMBER}</key> - <value>Zahl</value> - </entry> <entry> <key>Choose address</key> <value>Adresse auswählen</value> @@ -1160,10 +1156,6 @@ <key>Forecast</key> <value>Forecast</value> </entry> - <entry> - <key>Member</key> - <value>Teammitglied</value> - </entry> <entry> <key>A reason is only possible if a date is given.</key> <value>Begründung nur bei Ausgeschiedenen Mitbewerbern erlaubt.</value> @@ -1552,10 +1544,6 @@ <entry> <key>Social</key> </entry> - <entry> - <key>Dataset</key> - <value>Datensatz</value> - </entry> <entry> <key>Facebook Feed</key> </entry> @@ -1778,6 +1766,7 @@ </entry> <entry> <key>title</key> + <value>Titel</value> </entry> <entry> <key>von</key> @@ -1812,9 +1801,6 @@ <entry> <key>absagen</key> </entry> - <entry> - <key>asdfasdf</key> - </entry> <entry> <key>type</key> <value>Typ</value> @@ -1910,6 +1896,51 @@ <key>${FORECAST_ENGLISH}</key> <value>Forecast</value> </entry> + <entry> + <key>Title (original language)</key> + <value>Titel (ursprüngliche Sprache)</value> + </entry> + <entry> + <key>Parent Attribute</key> + </entry> + <entry> + <key>Attribute Relation</key> + </entry> + <entry> + <key>Essential</key> + <value>Essenziell</value> + </entry> + <entry> + <key>Attribute Usage</key> + </entry> + <entry> + <key>Beziehung</key> + </entry> + <entry> + <key>Key</key> + </entry> + <entry> + <key>Attribute</key> + </entry> + <entry> + <key>Context</key> + </entry> + <entry> + <key>Container</key> + </entry> + <entry> + <key>Beziehungen</key> + </entry> + <entry> + <key>Administration</key> + </entry> + <entry> + <key>Keyword</key> + </entry> + <entry> + <key>Sorting</key> + <value>Sortierung</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index ac6c84f0a03..1c112c9978d 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -797,9 +797,6 @@ <entry> <key>Dateigröße</key> </entry> - <entry> - <key>Member</key> - </entry> <entry> <key>A reason is only possible if a date is given.</key> </entry> @@ -1022,9 +1019,6 @@ <entry> <key>Social</key> </entry> - <entry> - <key>Dataset</key> - </entry> <entry> <key>Facebook Feed</key> </entry> @@ -1394,9 +1388,6 @@ <entry> <key>absagen</key> </entry> - <entry> - <key>asdfasdf</key> - </entry> <entry> <key>type</key> </entry> @@ -1518,10 +1509,6 @@ <key>${FORECAST_ENGLISH}</key> <value>Forecast</value> </entry> - <entry> - <key>${NUMBER}</key> - <value>Number</value> - </entry> <entry> <key>Usage</key> </entry> @@ -1534,6 +1521,48 @@ <entry> <key>${ADDRESS_STATE}</key> </entry> + <entry> + <key>Title (original language)</key> + </entry> + <entry> + <key>Parent Attribute</key> + </entry> + <entry> + <key>Attribute Relation</key> + </entry> + <entry> + <key>Essential</key> + </entry> + <entry> + <key>Attribute Usage</key> + </entry> + <entry> + <key>Beziehung</key> + </entry> + <entry> + <key>Key</key> + </entry> + <entry> + <key>Attribute</key> + </entry> + <entry> + <key>Context</key> + </entry> + <entry> + <key>Container</key> + </entry> + <entry> + <key>Beziehungen</key> + </entry> + <entry> + <key>Administration</key> + </entry> + <entry> + <key>Keyword</key> + </entry> + <entry> + <key>Sorting</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Keyword_context/Keyword_context.aod b/neonContext/Keyword_context/Keyword_context.aod index f9ee88b7b16..916d5158321 100644 --- a/neonContext/Keyword_context/Keyword_context.aod +++ b/neonContext/Keyword_context/Keyword_context.aod @@ -5,11 +5,21 @@ <description>&lt;null value&gt;</description> <majorModelMode>DISTRIBUTED</majorModelMode> <filterview>KeywordFilter_view</filterview> + <editview>KeywordEdit_view</editview> + <preview>KeywordPreview_view</preview> <entity>Keyword_entity</entity> <references> <neonViewReference> <name>75271eb0-8ddf-4b02-a943-01f589df1b20</name> <view>KeywordFilter_view</view> </neonViewReference> + <neonViewReference> + <name>e73f8fa3-3538-4af5-8116-84358b3254fa</name> + <view>KeywordEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>9bb352b9-5a8c-41ac-9c42-7f4f7f4827f3</name> + <view>KeywordPreview_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/KeywordEdit_view/KeywordEdit_view.aod b/neonView/KeywordEdit_view/KeywordEdit_view.aod new file mode 100644 index 00000000000..3275db9f41f --- /dev/null +++ b/neonView/KeywordEdit_view/KeywordEdit_view.aod @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> + <name>KeywordEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>mainData</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>236c9d71-a619-47b5-b5a0-8d4e5bc45903</name> + <entityField>CONTAINER</entityField> + </entityFieldLink> + <entityFieldLink> + <name>f7f66b08-521c-46bf-b6e9-3c3f130648bc</name> + <entityField>TITLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>3fb4b999-853a-407e-b928-8f5e633c1dc5</name> + <entityField>ISACTIVE</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KeywordFilter_view/KeywordFilter_view.aod b/neonView/KeywordFilter_view/KeywordFilter_view.aod index 2d416b5a5fb..c69a8a6af1a 100644 --- a/neonView/KeywordFilter_view/KeywordFilter_view.aod +++ b/neonView/KeywordFilter_view/KeywordFilter_view.aod @@ -2,17 +2,22 @@ <neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> <name>KeywordFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> <layout> - <boxLayout> + <groupLayout> <name>layout</name> - </boxLayout> + </groupLayout> </layout> <children> <tableViewTemplate> - <name>mainTable</name> + <name>table</name> <entityField>#ENTITY</entityField> <title></title> <columns> + <neonTableColumn> + <name>0e85b64c-6ce8-4221-8544-b8b5152a1292</name> + <entityField>#ICON</entityField> + </neonTableColumn> <neonTableColumn> <name>4dc50d75-d856-4fca-bd4d-d79eb3c8769f</name> <entityField>KEYID</entityField> @@ -31,5 +36,11 @@ </neonTableColumn> </columns> </tableViewTemplate> + <treetableViewTemplate> + <name>treeTable</name> + <titleField>TITLE</titleField> + <descriptionField>KEYID</descriptionField> + <entityField>#ENTITY</entityField> + </treetableViewTemplate> </children> </neonView> diff --git a/neonView/KeywordPreview_view/KeywordPreview_view.aod b/neonView/KeywordPreview_view/KeywordPreview_view.aod new file mode 100644 index 00000000000..0dc50a66f5d --- /dev/null +++ b/neonView/KeywordPreview_view/KeywordPreview_view.aod @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.0.1"> + <name>KeywordPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <cardViewTemplate> + <name>card</name> + <titleField>TITLE</titleField> + <subtitleField>CONTAINER</subtitleField> + <descriptionField>KEYID</descriptionField> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + <genericViewTemplate> + <name>data</name> + <showDrawer v="true" /> + <entityField>#ENTITY</entityField> + <title></title> + <fields> + <entityFieldLink> + <name>8455ebce-3bc2-4b0c-8e80-ec3795202d0e</name> + <entityField>ISACTIVE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>4b0bb3a6-5457-4eee-b0d8-6ec4b23c0aa7</name> + <entityField>ISESSENTIAL</entityField> + </entityFieldLink> + <entityFieldLink> + <name>30d80ba1-235e-4b4a-9e9c-2b63f70f87b5</name> + <entityField>SORTING</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 88d620b126d..787e301de57 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -384,7 +384,7 @@ SqlCondition.prototype._prepare = function(field, value, cond, fieldType) { SqlCondition.prototype.clear = function() { this._sqlStorage = ""; this.preparedValues = []; - return null; + return this; } /** -- GitLab