From 19b9760d4c8abf42939f9c9052a5adc37ab93cc2 Mon Sep 17 00:00:00 2001 From: Mohamed Mansour <m.mansour@adito.de> Date: Fri, 9 Aug 2019 11:39:44 +0200 Subject: [PATCH] Merged master --- .../KeywordEntry_entity.aod | 398 +++++++----------- .../keywordattributerelations/onValidation.js | 82 ---- .../keywordentryid_param/valueProcess.js | 4 + .../documentation.adoc | 2 + entity/KeywordEntry_entity/onValidation.js | 2 +- 5 files changed, 159 insertions(+), 329 deletions(-) delete mode 100644 entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js create mode 100644 entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js create mode 100644 entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index de54de3a12a..c407f92b638 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -453,274 +453,180 @@ </entityDependency> <entityDependency> <name>d8c587cc-47db-4e08-a6ac-92ec1d91acb5</name> - <entityDependency> - <name>2694515c-eda4-44aa-9826-d430aa8a8089</name> - <entityName>Order_entity</entityName> - <fieldName>KeywordOrderTypes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>72ae7a5c-acc9-4e59-8110-f5b544f47f15</name> - <entityName>Order_entity</entityName> - <fieldName>KeywordDunningLevels</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>ea9260e9-b5e8-457c-ae84-45c4692348ce</name> - <entityName>Order_entity</entityName> - <fieldName>KeywordPaymentTerms</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>5d296f68-0a8f-429c-b630-e3ca88874945</name> - <entityName>Order_entity</entityName> - <fieldName>KeywordDeliveryTerms</fieldName> + <entityName>BulkMail_entity</entityName> + <fieldName>StatusKeyword</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>2712e2b3-f17f-4a9c-9752-2383f62eb2b8</name> - <entityName>Contract_entity</entityName> - <fieldName>ContractStates</fieldName> + <name>41fd8fd4-7285-4493-9a56-cc0c44353057</name> + <entityName>DSGVOInfo_entity</entityName> + <fieldName>KeywordDeadline</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>bd68f269-457c-487d-a1b2-e045d98f74b7</name> - <entityName>Contract_entity</entityName> - <fieldName>ContractTypes</fieldName> + <name>1cbfe51f-43c3-4e99-895f-673097915249</name> + <entityName>DSGVOInfo_entity</entityName> + <fieldName>KeywordTransmission</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>b88b5cc8-c29e-4110-b86e-d1d0050460e5</name> - <entityName>Offer_entity</entityName> - <fieldName>KeywordCurrencies</fieldName> + <name>718da6a7-229b-4075-a8ff-b0458c770e7b</name> + <entityName>DSGVOInfo_entity</entityName> + <fieldName>KeywordGuarantee</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>57c746ee-a8c0-484a-8c73-6301609b76b1</name> + <name>2694515c-eda4-44aa-9826-d430aa8a8089</name> <entityName>Order_entity</entityName> - <fieldName>KeywordCurrencies</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>bf014596-954b-4c7d-9304-8283c9bcc7ae</name> - <entityName>Productprice_entity</entityName> - <fieldName>KeywordCurrencies</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f5dcbf08-3765-4a9d-8b42-cb1219c87f57</name> - <entityName>Offeritem_entity</entityName> - <fieldName>KeywordProductGroupcodes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>53bcaa07-94eb-4e81-9e9e-c5748156dad5</name> - <entityName>Orderitem_entity</entityName> - <fieldName>KeywordProductGroupcodes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>c404b010-1634-4160-adca-7edf1535ee26</name> - <entityName>Product_entity</entityName> - <fieldName>KeywordProductGroupcodes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>3575fdd7-3dd6-4318-b0d2-32d1df821076</name> - <entityName>Forecast_entity</entityName> - <fieldName>KeywordProductGroupcodes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>5a21cbe2-4eb0-4968-80fa-b98a64599230</name> - <entityName>Offer_entity</entityName> - <fieldName>KeywordOfferStates</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>8696e561-b263-4c7c-b753-c5da44b48055</name> - <entityName>Organisation_entity</entityName> - <fieldName>KeywordOrganisationTypes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>0d54d283-f158-4b91-8f6d-026954ed9c50</name> - <entityName>Person_entity</entityName> - <fieldName>KeywordGenders</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>8d28f08b-675d-4bcf-9318-a508d45ca69e</name> - <entityName>Task_entity</entityName> - <fieldName>KeywordStates</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>b069ef7d-07a0-460c-a8e7-cde5861c96c2</name> - <entityName>Productprice_entity</entityName> - <fieldName>KeywordPricelists</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>7f134ef1-cff5-4cf4-9d2a-e288c7904c28</name> - <entityName>Offeritem_entity</entityName> - <fieldName>KeywordQuantityUnits</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>c3c3b430-a14f-46b4-909a-9b53cef35413</name> - <entityName>Orderitem_entity</entityName> - <fieldName>KeywordQuantityUnits</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a1983efd-92f9-4a6b-8805-d2977fcde0c8</name> - <entityName>Product_entity</entityName> - <fieldName>KeywordQuantityUnits</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>026021cd-cd64-400d-8bd5-f6d044af1ad8</name> - <entityName>Member_entity</entityName> - <fieldName>KeywordMemberRoles</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>356e23f9-eb05-4e18-b0b5-cbc7c8716dba</name> - <entityName>SalesprojectSource_entity</entityName> - <fieldName>KeywordSources</fieldName> + <fieldName>KeywordOrderTypes</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>36a72192-902f-431b-8f43-0bef311678f7</name> + <name>72ae7a5c-acc9-4e59-8110-f5b544f47f15</name> <entityName>Order_entity</entityName> - <fieldName>KeywordStates</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>e2041dea-8647-49e9-aacf-4481b75b76ff</name> - <entityName>Stock_entity</entityName> - <fieldName>KeywordWarehouses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>403c40a4-f747-4e47-ad60-07334724d6fb</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>KeywordAttributeTypes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>078bbd52-87fa-44cc-9902-04af935b5fbc</name> - <entityName>Attribute_entity</entityName> - <fieldName>KeywordAttributeTypes</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>718fe5a2-c75f-49ed-b67e-fc4fbf63ff1d</name> - <entityName>Salesproject_entity</entityName> - <fieldName>KeywordProbabilties</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a44375e9-917c-4db8-9aa8-de0625caf78f</name> - <entityName>Activity_entity</entityName> - <fieldName>KeywordCategories</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f442a641-4dff-4860-bf4c-cfddc054e075</name> - <entityName>Offer_entity</entityName> - <fieldName>KeywordProbabilities</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>fa831dac-3287-422a-8f28-504fc525876a</name> - <entityName>Communication_entity</entityName> - <fieldName>KeywordMediums</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>04b28ce6-a144-4c19-ac2d-4cfbc3568700</name> - <entityName>Organisation_entity</entityName> - <fieldName>KeywordPricePolitics</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f024df05-2faf-4447-9eed-ae31b329d542</name> - <entityName>Competition_entity</entityName> - <fieldName>KeywordPricePolitics</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>60840c28-9875-4e3e-8099-5ca208d58bbe</name> - <entityName>Organisation_entity</entityName> - <fieldName>KeywordWeaknesses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>854148e2-2532-4562-b393-832819e8d462</name> - <entityName>Organisation_entity</entityName> - <fieldName>KeywordStrenghts</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>613d5861-0494-45f9-a839-a705347a68da</name> - <entityName>Competition_entity</entityName> - <fieldName>KeywordWeaknesses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>119d79d0-9e04-4dd0-80bb-0bc32eaae775</name> - <entityName>Competition_entity</entityName> - <fieldName>KeywordStrenghts</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>6e2d164c-1ac7-4ed0-ad8f-7bfda1328493</name> - <entityName>Salesproject_entity</entityName> - <fieldName>KeywordStates</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>3ca6d3c7-83d2-4761-bab4-50d2baecdbd6</name> - <entityName>Competition_entity</entityName> - <fieldName>KeywordPhases</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>1053a90d-574a-4ca2-b41d-42b513db0fd2</name> - <entityName>Task_entity</entityName> - <fieldName>KeywordPriorities</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>bf9f7a07-dfb9-44d0-8f9b-d3814053683e</name> - <entityName>Competition_entity</entityName> - <fieldName>KeywordStates</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>ef8b9397-6292-42de-806e-5aaf3e3db5f3</name> - <entityName>Salesproject_entity</entityName> - <fieldName>KeywordWonLost</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>5d9e0e48-ece8-4b8e-ab72-beef77b5dcc3</name> - <entityName>Task_entity</entityName> - <fieldName>KeywordProgress</fieldName> + <fieldName>KeywordDunningLevels</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>36aa04c1-5361-4e40-a036-0546db596973</name> - <entityName>Offer_entity</entityName> - <fieldName>KeywordDeliveryTerm</fieldName> + <name>ea9260e9-b5e8-457c-ae84-45c4692348ce</name> + <entityName>Order_entity</entityName> + <fieldName>KeywordPaymentTerms</fieldName> <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>7e12cbd6-3a2c-4bd8-bc66-5001c282b690</name> - <entityName>Offer_entity</entityName> - <fieldName>KeywordPaymentTerm</fieldName> + <name>5d296f68-0a8f-429c-b630-e3ca88874945</name> + <entityName>Order_entity</entityName> + <fieldName>KeywordDeliveryTerms</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> + </dependencies> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ContainerName_param</name> + <expose v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityField> + <name>TITLE_TRANSLATED</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/title_translated/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/onlyactives_param/valueProcess.js</valueProcess> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityConsumer> + <name>KeywordAttributeRelations</name> + <dependency> + <name>dependency</name> + <entityName>KeywordAttributeRelation_entity</entityName> + <fieldName>AttributesForKeywordEntry</fieldName> + </dependency> + <children> + <entityParameter> + <name>KeywordEntryId_param</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelations/children/keywordentryid_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>KeywordAttributeRelationsReadOnly</name> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc</documentation> + <state>READONLY</state> + <dependency> + <name>dependency</name> + <entityName>KeywordAttributeRelation_entity</entityName> + <fieldName>AttributesForKeywordEntry</fieldName> + </dependency> + <children> + <entityParameter> + <name>KeywordEntryId_param</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>ExcludedKeyIdsSubquery_param</name> + <expose v="true" /> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/excludedkeyidssubquery_param/documentation.adoc</documentation> + <description>PARAMETER</description> + </entityParameter> + <entityParameter> + <name>WhitelistIds_param</name> + <expose v="true" /> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/whitelistids_param/documentation.adoc</documentation> + </entityParameter> + <entityField> + <name>expanded</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js</valueProcess> + </entityField> + <entityActionField> + <name>openAdminView</name> + <title>Open admin view</title> + <onActionProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CURLY_BRACKETS</iconId> + <stateProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/openadminview/stateProcess.js</stateProcess> + </entityActionField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <isPageable v="false" /> + <conditionProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBDelete>%aditoprj%/entity/KeywordEntry_entity/recordcontainers/db/onDBDelete.js</onDBDelete> + <linkInformation> + <linkInformation> + <name>52acbfe0-57f4-4614-83af-9882e168f431</name> + <tableName>AB_KEYWORD_ENTRY</tableName> + <primaryKey>AB_KEYWORD_ENTRYID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>TITLE.value</name> + <recordfield>AB_KEYWORD_ENTRY.TITLE</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SORTING.value</name> + <recordfield>AB_KEYWORD_ENTRY.SORTING</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ISESSENTIAL.value</name> + <recordfield>AB_KEYWORD_ENTRY.ISESSENTIAL</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ISACTIVE.value</name> + <recordfield>AB_KEYWORD_ENTRY.ISACTIVE</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AB_KEYWORD_ENTRYID.value</name> + <recordfield>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KEYID.value</name> + <recordfield>AB_KEYWORD_ENTRY.KEYID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTAINER.value</name> + <recordfield>AB_KEYWORD_ENTRY.CONTAINER</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js deleted file mode 100644 index e2a0b150abd..00000000000 --- a/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js +++ /dev/null @@ -1,82 +0,0 @@ -import("system.translate"); -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("system.db"); - -if (!_areUnique()) - result.string(translate.text("Attributes must be unique!")); - -function _areUnique () -{ - var insertedRows = vars.get("$field.KeywordAttributeRelations.insertedRows"); - var changedRows = vars.get("$field.KeywordAttributeRelations.changedRows"); - var deletedRows = vars.get("$field.KeywordAttributeRelations.deletedRows"); - - var storedRows = db.table(SqlCondition.begin() - .andPrepare("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", vars.get("$field.AB_KEYWORD_ENTRYID")) - .buildSql("select AB_KEYWORD_ATTRIBUTERELATIONID, AB_KEYWORD_ATTRIBUTE_ID from AB_KEYWORD_ATTRIBUTERELATION")); - - var attributeChanges = {}; - - if (deletedRows) - deletedRows.forEach(function (row) - { - this[row.AB_KEYWORD_ATTRIBUTERELATIONID] = ""; - }, attributeChanges); - - if (changedRows) - changedRows.forEach(function (row) - { - this[row.AB_KEYWORD_ATTRIBUTERELATIONID] = row.AB_KEYWORD_ATTRIBUTE_ID; - }, attributeChanges); - - var countObj = {}; - - storedRows.forEach(function ([storedAttrRelationId, storedAttributeId]) { - var currentAttributeId = storedAttributeId; - //merging the data that is stored in the DB and the provided changes - if (attributeChanges && storedAttrRelationId in attributeChanges) - currentAttributeId = attributeChanges[storedAttrRelationId]; - - // it doesn't matter if a row has been deleted or if the attribute has been set to "nothing" - if (currentAttributeId == "") - _decrCount(storedAttributeId); - else - { - _incrCount(currentAttributeId); - if (currentAttributeId != storedAttributeId) - _decrCount(storedAttributeId); - } - }); - - if (insertedRows) //append the new rows - { - insertedRows.forEach(function (row) - { - this[row.AB_KEYWORD_ATTRIBUTE_ID] = (this[row.AB_KEYWORD_ATTRIBUTE_ID] || 0) + 1; - }, countObj); - } - - for (let id in countObj) - if (countObj[id] > 1) - return false; - - return true; - - function _incrCount (pAttributeId) - { - if (countObj[pAttributeId]) - countObj[pAttributeId]++; - else - countObj[pAttributeId] = 1; - } - - function _decrCount (pAttributeId) - { - if (countObj[pAttributeId]) - countObj[pAttributeId]--; - else - countObj[pAttributeId] = 0; - } -} \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js new file mode 100644 index 00000000000..53afbdfbbfe --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/children/keywordentryid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.AB_KEYWORD_ENTRYID")); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc new file mode 100644 index 00000000000..99874edc30d --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/keywordattributerelationsreadonly/documentation.adoc @@ -0,0 +1,2 @@ +Since it's not possible to limit the keywordAttributeRelation to a distinctive list (use a KeywordAttributeRelation "category" only once per keyowrd-entry) within the generic-multiple-template / titledList-template use this readonly consumer there. +For editing use the not-read-only consumer in a list-template. In a list-template only one row can be changed (and stored) which means we can exlucde already stored entries. \ No newline at end of file diff --git a/entity/KeywordEntry_entity/onValidation.js b/entity/KeywordEntry_entity/onValidation.js index c2eb1f2b717..f771dd78447 100644 --- a/entity/KeywordEntry_entity/onValidation.js +++ b/entity/KeywordEntry_entity/onValidation.js @@ -19,4 +19,4 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) throw new TypeError(translate.text("The code number is not a valid number.")); neon.setFieldValue("$field.SORTING", ++newCodeNumber); } -} +} \ No newline at end of file -- GitLab