From 14d0cbef4837c4f34123a6bd70a8156ff6aef8dc Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Fri, 15 Feb 2019 11:00:18 +0100 Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?= =?UTF-8?q?=201034159][Komplexe=20Keywords=20=C3=BCber=20Keywordattribute]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aliasDefinition/Data_alias/Data_alias.aod | 8 +-- .../KeywordAttributeRelation_entity.aod | 1 + .../ab_keyword_attribute_id/onValueChange.js | 11 ++- .../KeywordAttribute_entity.aod | 1 + .../KeywordEntry_entity.aod | 7 ++ .../Salesproject_entity.aod | 21 +++++- .../children/containername_param/code.js | 4 ++ .../probability/possibleItemsProcess.js | 4 -- .../probability.displayvalue/expression.js | 5 ++ .../data/AditoBasic/ab_keyword_attribute.xml | 2 +- ...t_SalesprojectProbability_percentValue.xml | 41 +++++++++++ .../init_SalesprojectProbability_points.xml | 11 --- .../example_salesproject/SALESPROJECT_gfk.xml | 4 +- .../example_salesproject/SALESPROJECT_jkl.xml | 2 +- .../create_ab_keyword_attribute.xml | 4 +- .../data_alias/struct/create_salesproject.xml | 2 +- process/Keyword_lib/process.js | 68 ++++++++++++++----- 17 files changed, 150 insertions(+), 46 deletions(-) create mode 100644 entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js delete mode 100644 entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js create mode 100644 entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js create mode 100644 others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml delete mode 100644 others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 9285b2f33d..eb36678450 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -4416,8 +4416,8 @@ <name>TYPE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> + <columnType v="1" /> + <size v="36" /> <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> @@ -4430,8 +4430,8 @@ <name>NAME</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> + <columnType v="12" /> + <size v="100" /> <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod index e9462ab5b4..ea8395fd37 100644 --- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod +++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod @@ -89,6 +89,7 @@ <documentation>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/documentation.adoc</documentation> <title>Value</title> <contentTypeProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/contentTypeProcess.js</contentTypeProcess> + <mandatory v="true" /> <valueProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/valueProcess.js</valueProcess> <onValueChange>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/onValueChange.js</onValueChange> </entityField> diff --git a/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js b/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js index a26f98d314..15f4a12ff8 100644 --- a/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js +++ b/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js @@ -1,5 +1,10 @@ import("system.vars"); +import("system.neon"); -vars.set("$field.CHAR_VALUE", ""); -vars.set("$field.BOOL_VALUE", ""); -vars.set("$field.NUMBER_VALUE", ""); \ No newline at end of file +var recordState = vars.get("$sys.recordstate"); +if (recordState == neon.OPERATINGSTATE_NEW || recordState == neon.OPERATINGSTATE_EDIT) +{ + vars.set("$field.CHAR_VALUE", null); + vars.set("$field.BOOL_VALUE", null); + vars.set("$field.NUMBER_VALUE", null); +} \ No newline at end of file diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod index 4061a215b2..e0ef67c552 100644 --- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod +++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod @@ -13,6 +13,7 @@ </entityProvider> <entityField> <name>AB_KEYWORD_ATTRIBUTEID</name> + <searchable v="false" /> <valueProcess>%aditoprj%/entity/KeywordAttribute_entity/entityfields/ab_keyword_attributeid/valueProcess.js</valueProcess> </entityField> <entityField> diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 0c83ef04ae..0956d55dd0 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -25,6 +25,7 @@ </entityField> <entityField> <name>AB_KEYWORD_ENTRYID</name> + <searchable v="false" /> <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/ab_keyword_entryid/valueProcess.js</valueProcess> </entityField> <entityField> @@ -238,6 +239,12 @@ <fieldName>KeywordAttributeType</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>718fe5a2-c75f-49ed-b67e-fc4fbf63ff1d</name> + <entityName>Salesproject_entity</entityName> + <fieldName>KeywordProbabilties</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index d37f3e61bf..3d5f6662a1 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -107,7 +107,7 @@ <entityField> <name>PROBABILITY</name> <title>Probability</title> - <possibleItemsProcess>%aditoprj%/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js</possibleItemsProcess> + <consumer>KeywordProbabilties</consumer> </entityField> <entityConsumer> <name>SalesprojectSources</name> @@ -372,6 +372,21 @@ <description>Opens the time tracking context in new-mode for the selected salesproject</description> <onActionProcess>%aditoprj%/entity/Salesproject_entity/entityfields/newtimetracking/onActionProcess.js</onActionProcess> </entityActionField> + <entityConsumer> + <name>KeywordProbabilties</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>containerName_param</name> + <code>%aditoprj%/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js</code> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> @@ -458,6 +473,10 @@ <name>VOLUME.displayValue</name> <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/volume.displayvalue/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PROBABILITY.displayValue</name> + <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js b/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js new file mode 100644 index 0000000000..4eecf47c8c --- /dev/null +++ b/entity/Salesproject_entity/entityfields/keywordprobabilties/children/containername_param/code.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Keyword_lib"); + +result.string($KeywordRegistry.get.SalesprojectProbability); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js b/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js deleted file mode 100644 index bea9f367e4..0000000000 --- a/entity/Salesproject_entity/entityfields/probability/possibleItemsProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Keyword_lib"); - -result.object(LegacyKeywordUtils.getStandardArray("SALESPROJECT.PROBABILITY")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js new file mode 100644 index 0000000000..a5769eccec --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/probability.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Keyword_lib"); + +var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.get.SalesprojectProbability, "SALESPROJECT.PROBABILITY"); +result.string(sql); diff --git a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml index c3c086c020..f16b870ba5 100644 --- a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml +++ b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute.xml @@ -1,4 +1,4 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <include relativeToChangelogFile="true" file="ab_keyword_attribute/init_SalesprojectProbability_points.xml"/> + <include relativeToChangelogFile="true" file="ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml"/> </databaseChangeLog> diff --git a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml new file mode 100644 index 0000000000..e7425b24dc --- /dev/null +++ b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_percentValue.xml @@ -0,0 +1,41 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="j.goderbauer" id="a2375d469a-1eda-4b40-802b-312323d9f2e7"> + <insert tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_ATTRIBUTEID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> + <column name="NAME" value="percentValue"/> + <column name="TYPE" value="NUMBER_VALUE"/> + <column name="CONTAINER" value="SalesprojectProbability"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="8b719177-b9a1-44f8-bfba-34b678d84daa"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> + <column name="AB_KEYWORD_ENTRY_ID" value="ab44bd2c-dffa-4731-8a24-fad31f069c46"/> + <column name="NUMBER_VALUE" valueNumeric="0"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="1a233346-a284-49a8-ac51-c3a214474e88"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> + <column name="AB_KEYWORD_ENTRY_ID" value="e59169d3-c0d9-4718-b8b6-e315857948a0"/> + <column name="NUMBER_VALUE" valueNumeric="25"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="2d8b8da4-1241-4094-abf5-54d8cacadcaf"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> + <column name="AB_KEYWORD_ENTRY_ID" value="415f1cf0-8c5b-4b6e-9900-0d0d6d72381c"/> + <column name="NUMBER_VALUE" valueNumeric="50"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d02adcf4-fdc0-4614-ad44-88fa9de77a37"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> + <column name="AB_KEYWORD_ENTRY_ID" value="6182cc48-df2b-4ba9-893a-bcedfd0e1e4b"/> + <column name="NUMBER_VALUE" valueNumeric="75"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="f25f0406-998b-4b29-9432-4dafa378f1eb"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> + <column name="AB_KEYWORD_ENTRY_ID" value="f5b601a5-451b-4ab6-9167-b95077e90c62"/> + <column name="NUMBER_VALUE" valueNumeric="100"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml b/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml deleted file mode 100644 index 4f02637575..0000000000 --- a/others/db_changes/data_alias/data/AditoBasic/ab_keyword_attribute/init_SalesprojectProbability_points.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.1" encoding="UTF-8" standalone="no"?> -<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="j.goderbauer" id="a2375d469a-1eda-4b40-802b-312323d9f2e7"> - <insert tableName="AB_KEYWORD_ATTRIBUTE"> - <column name="AB_KEYWORD_ATTRIBUTEID" value="2fabbd9a-89d2-49e3-b3aa-1dcbc77252c7"/> - <column name="NAME" value="points"/> - <column name="TYPE" value="NUMBER_VALUE"/> - <column name="CONTAINER" value="SalesprojectProbability"/> - </insert> - </changeSet> -</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml index d179bd5681..f2451e2af2 100644 --- a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml +++ b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_gfk.xml @@ -1,4 +1,4 @@ -<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="j.hoermanns" id="76912d9-ced7-4626-a031-d7138dfc948e"> <insert tableName="SALESPROJECT"> @@ -15,7 +15,7 @@ <column name="ENDDATE" valueDate="2017-10-14T09:03:43"/> <column name="ESTIMATION" value="; 2; 4; 11; "/> <column name="ESTIMATIONVALUE" valueNumeric="2"/> - <column name="PROBABILITY" valueNumeric="30"/> + <column name="PROBABILITY" value="b981a107-7e20-42a6-baf4-3fc09a939cd7"/> </insert> <insert tableName="AB_OBJECTRELATION"> <column name="AB_OBJECTRELATIONID" value="6dd516b2-7887-4a17-930a-d39607c8b626"/> diff --git a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml index 6f5ae0997e..530eacad23 100644 --- a/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml +++ b/others/db_changes/data_alias/data/example_salesproject/SALESPROJECT_jkl.xml @@ -15,7 +15,7 @@ <column name="ENDDATE" valueDate="2017-10-14T09:03:43"/> <column name="ESTIMATION" value="; 2; 4; 11; "/> <column name="ESTIMATIONVALUE" valueNumeric="2"/> - <column name="PROBABILITY" valueNumeric="30"/> + <column name="PROBABILITY" value="b981a107-7e20-42a6-baf4-3fc09a939cd7"/> </insert> <rollback> diff --git a/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml b/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml index baffb14652..a39bf989d4 100644 --- a/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml +++ b/others/db_changes/data_alias/struct/AditoBasic/create_ab_keyword_attribute.xml @@ -6,10 +6,10 @@ <constraints primaryKey="true" primaryKeyName="PK_AB_KEYWORD_ATTRIBUTEID"/> </column> - <column name="NAME" type="CHAR(36)"> + <column name="NAME" type="VARCHAR(100)"> <constraints nullable="false"/> </column> - <column name="TYPE" type="NVARCHAR(100)"> + <column name="TYPE" type="CHAR(36)"> <constraints nullable="false"/> </column> <column name="CONTAINER" type="VARCHAR(80)"> diff --git a/others/db_changes/data_alias/struct/create_salesproject.xml b/others/db_changes/data_alias/struct/create_salesproject.xml index 6fc8e7ce27..1a18e81400 100644 --- a/others/db_changes/data_alias/struct/create_salesproject.xml +++ b/others/db_changes/data_alias/struct/create_salesproject.xml @@ -18,7 +18,7 @@ <column name="ENDDATE" type="DATETIME"/> <column name="ESTIMATION" type="NVARCHAR(50)"/> <column name="ESTIMATIONVALUE" type="INTEGER"/> - <column name="PROBABILITY" type="INTEGER"/> + <column name="PROBABILITY" type="CHAR(36)"/> <column name="SALESPROJECTID" type="CHAR(36)"> <constraints primaryKey="true" primaryKeyName="PK_SALESPROJECT_SALESPROJECTID"/> diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index b043f2597c..4827e4fa1a 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -77,7 +77,7 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL /** * returns a specific name (translated) - this is normally the view-value - of a given keyword; * <br/>if the key could not be found an empty string "" is returned - * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" + * @param {String} keywordContainer specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" * @param {String} key id value of the keyword where the view-value shall be searched * @return {String} representation of the translated name of the keyword-key * @example @@ -87,13 +87,10 @@ KeywordUtils.getResolvedTitleSqlPart = function(pContainerName, pDbFieldName, pL * result.string(vars.get("$field.SUBJECT") + " (" + LegacyKeywordUtils.getViewValue("ACTIVITY.MEDIUM", histMedium) + ")"); * } */ -KeywordUtils.getViewValue = function(keywordType, key) +KeywordUtils.getViewValue = function(keywordContainer, key) { - if (!$KeywordRegistry.get[keywordType]) - return ""; - var sql = SqlCondition.begin() - .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", keywordType) + .andPrepare("AB_KEYWORD_ENTRY.CONTAINER", keywordContainer) .andPrepare("AB_KEYWORD_ENTRY.KEYID", key) .buildSql("select AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY"); var originalTitle = db.cell(sql); @@ -101,7 +98,55 @@ KeywordUtils.getViewValue = function(keywordType, key) return ""; var translatedTitle = translate.text(originalTitle); return translatedTitle; -} +}; + +/** + * collects possible and defined keyword-attributes per keyword entry and returns them + * + * @param {String} pEntryId id that identifies the keyword-entry whoes attributes are collected + * @return {Object} key-value-pair of the keyword-attributes; contains all attribute-keys for the keywords-entries container; + * if there is no value set for a key the null-value is given + */ +KeywordUtils.getKeywordAttributeRelations = function (pEntryId) +{ + var sql = SqlCondition.begin() + .andPrepare("AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", pEntryId) + .buildSql("select AB_KEYWORD_ATTRIBUTE.NAME, AB_KEYWORD_ATTRIBUTE.TYPE, \n\ + AB_KEYWORD_ATTRIBUTERELATION.CHAR_VALUE, AB_KEYWORD_ATTRIBUTERELATION.NUMBER_VALUE, AB_KEYWORD_ATTRIBUTERELATION.BOOL_VALUE \n\ + from AB_KEYWORD_ENTRY \n\ + left join AB_KEYWORD_ATTRIBUTE on (AB_KEYWORD_ATTRIBUTE.CONTAINER = AB_KEYWORD_ENTRY.CONTAINER) \n\ + left join AB_KEYWORD_ATTRIBUTERELATION \n\ + on (AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID = AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID\n\ + and AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID = AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID)"); + + var data = db.table(sql); + var res = {}; + var name, type, charVal, numVal, boolVal; + + for (var i = 0, l = data.length; i < l; i++) + { + [name, type, charVal, numVal, boolVal] = data[i]; + name = name.trim(); + type = type.trim(); + var parsedValue = null; + switch(type) + { + case "NUMBER_VALUE": + parsedValue = numVal == "" ? null : Number(numVal); + break; + case "BOOL_VALUE": + parsedValue = boolVal == "" ? null : (boolVal == "1"); + break; + case "CHAR_VALUE": + parsedValue = charVal == "" ? null : charVal; + break; + } + + res[name] = parsedValue; + } + return res; +}; + /** * provides a distinctive list of all keyword-container-names in the system @@ -347,15 +392,6 @@ function LegacyKeywordUtils(){} }) ]); break; - case "SALESPROJECT.PROBABILITY": - valueContainer = _createKeywordEntriesContainer([ - _createKeywordEntry("1", translate.text("0 %", locale), null, {percentValue: 0}) - ,_createKeywordEntry("2", translate.text("25 %", locale), null, {percentValue: 25}) - ,_createKeywordEntry("3", translate.text("50 %", locale), null, {percentValue: 50}) - ,_createKeywordEntry("4", translate.text("75 %", locale), null, {percentValue: 75}) - ,_createKeywordEntry("5", translate.text("100 %", locale), null, {percentValue: 100}) - ]); - break; case "CLASS.BRANCHE": valueContainer = _createKeywordEntriesContainer([ _createKeywordEntry("1", translate.text("Industry 1", locale), null, {points: 50}) -- GitLab