From 10954966790e924a98d1bbb6b934b39a8c53cf1f Mon Sep 17 00:00:00 2001 From: "j.goderbauer" <j.goderbauer@adito.de> Date: Mon, 3 Sep 2018 11:36:36 +0200 Subject: [PATCH] =?UTF-8?q?added=20comments=20to=20Keyword=5Flib=20[Projek?= =?UTF-8?q?t:=20Entwicklung=20-=20Neon][TicketNr.:=201022526][Bereitstellu?= =?UTF-8?q?ng=20erste=20Version=205.1=20Customizing=20f=C3=BCr=20Gremium]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- process/Keyword_lib/process.js | 441 +++++++++++++++++---------------- 1 file changed, 226 insertions(+), 215 deletions(-) diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index d482b4501e..dd956b2c17 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -1,216 +1,227 @@ -import("system.logging"); -import("system.translate"); - -/** - * provides methods for interactions with keywords - */ -function KeywordUtils(){ - /** - * returns the default case for keyword-arrays (id and translated name) - * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" - * @return {Array} a 2D array in form of [["id1", "name1"], ["idN", "nameN"]] - * @example - * var kwdUtils, items; - * - * kwdUtils = new KeywordUtils(); - * items = kwdUtils.getStandardArray("ADDRESS.TYPE"); - * result.object(items); - */ - this.getStandardArray = function(keywordType){ - return this.createKeyword(keywordType).toArray(["id", "name"]); - } - - /** - * 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} 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 - * var kwdUtils, histMedium; - * histMedium = vars.get("$field.MEDIUM"); - * if (histMedium){ - * kwdUtils = new KeywordUtils(); - * result.string(vars.get("$field.SUBJECT") + " (" + kwdUtils.getViewValue("HISTORY.MEDIUM", histMedium) + ")"); - * } - */ - this.getViewValue = function(keywordType, key){ - var k = this.createKeyword(keywordType); - return k.getPropForKey(key, "name") || ""; - } - - /** - * creates an object with methods for interacting with an specific keyword - * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" - * @return {Object} object with the following methods: - * <br/>- toArray - * <br/>- getPropForKey - * <br/>- getPropsForKey - */ - this.createKeyword = function(keywordType){ - var valueContainer, _toArrayFn, _getPropForKeyFn, _getPropsForKeyFn; - - switch (keywordType){ - case "RELATION.STATUS": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("0", translate.text("Inactive")) - ,createKeywordEntry("1", translate.text("Active")) - ,createKeywordEntry("2", translate.text("In review")) - ]); - break; - case "COUNTRY": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("DE", translate.text("Germany")) - ,createKeywordEntry("AT", translate.text("Austria")) - ,createKeywordEntry("CH", translate.text("Switzerland")) - ,createKeywordEntry("GB", translate.text("United Kingdom")) - ,createKeywordEntry("NO", translate.text("Norway")) - ]); - break; - case "LANGUAGE": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("de", translate.text("German")) - ,createKeywordEntry("de-DE", translate.text("German (Germany)")) - ,createKeywordEntry("de-AT", translate.text("German (Austria)")) - ,createKeywordEntry("en", translate.text("English")) - ,createKeywordEntry("en-GB", translate.text("English (United Kingdom)")) - ,createKeywordEntry("no-NO", translate.text("Norwegian")) - ]); - break; - case "HISTORY.DIRECTION": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("i", translate.text("Incoming")) - ,createKeywordEntry("o", translate.text("Outgoing")) - ]); - break; - case "HISTORY.MEDIUM": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("0", translate.text("Visit")) - ,createKeywordEntry("1", translate.text("E-Mail")) - ,createKeywordEntry("2", translate.text("Phone")) - ,createKeywordEntry("3", translate.text("Internal")) - ,createKeywordEntry("4", translate.text("Online-Meeting")) - ]); - case "COMM.MEDIUM": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("0", translate.text("Mobile")) - ,createKeywordEntry("1", translate.text("E-Mail")) - ,createKeywordEntry("2", translate.text("Phone")) - ,createKeywordEntry("3", translate.text("Internet")) - ]); - break; - case "ADDRESS.TYPE": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("1", translate.text("Office address")) - ,createKeywordEntry("2", translate.text("Home address")) - ,createKeywordEntry("3", translate.text("Delivery address")) - ,createKeywordEntry("4", translate.text("Post office box")) - ]); - break; - case "ORG.TYPE": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("0", translate.text("Customer")) - ,createKeywordEntry("1", translate.text("Prospect")) - ,createKeywordEntry("2", translate.text("Supplier")) - ,createKeywordEntry("3", translate.text("Other")) - ]); - break; - case "PERS.GENDER": - valueContainer = createKeywordEntriesContainer([ - createKeywordEntry("f", translate.text("Female")) - ,createKeywordEntry("m", translate.text("Male")) - ,createKeywordEntry("o", translate.text("${GENDER_OTHER}")) - ]); - break; - default: - throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [ - arguments.callee.name, keywordType - ])); - break; - } - - - _getPropForKeyFn = function(key, field) { - var keyObject = valueContainer[key]; - if (keyObject == undefined) - return undefined; - return keyObject[field]; - }; - - _getPropsForKeyFn = function(key, fields) { - var keyObject, i, l, currentRow, currentField; - - keyObject = valueContainer[key]; - if (keyObject == undefined) - return [];//TODO: throw error instead? - l = fields.length; - currentRow = []; - for (i = 0; i < l; i++){ - currentField = fields[i]; - //check if the passed fieldnames match the existing fieldnames (<=> properties in the object) - //to prevent errors and unexpected behaviour - if (keyObject[currentField]) - currentRow.push(keyObject[currentField]); - else - currentRow.push(""); - } - return currentRow; - }; - - _toArrayFn = function(fields){ - var res, id, currentRow; - - res = []; - if (!fields) - fields = ["id", "name"]; - l = fields.length; - for (id in valueContainer){ - currentRow = _getPropsForKeyFn(id, fields); - res.push(currentRow); - } - return res; - }; - - return { - /** - * toArray - */ - toArray: _toArrayFn - ,getPropForKey: _getPropForKeyFn - ,getPropsForKey: _getPropsForKeyFn - }; - }; - - - function createKeywordEntry(id, name, description){ - //TODO: verify if mandatory-checks are really that usefull or can at least be made easier - if (!id) - throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [ - "id", arguments.callee.name - ])); - if (!name) - throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [ - "name", arguments.callee.name - ])); - - return { - id: id - ,name: name - ,description: description || "" - }; - } - - function createKeywordEntriesContainer(keywordEntries){ - var res, i, l, id; - - res = {}; - for (i = 0, l = keywordEntries.length; i < l; i++){ - id = keywordEntries[i].id; - if (res[id] != undefined){ - throw new Error("the given id is not unique since it already exists"); - } - res[id] = keywordEntries[i]; - } - return res; - } +import("system.logging"); +import("system.translate"); + +/** + * provides methods for interactions with keywords + */ +function KeywordUtils(){ + /** + * returns the default case for keyword-arrays (id and translated name) + * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" + * @return {Array} a 2D array in form of [["id1", "name1"], ["idN", "nameN"]] + * @example + * var kwdUtils, items; + * + * kwdUtils = new KeywordUtils(); + * items = kwdUtils.getStandardArray("ADDRESS.TYPE"); + * result.object(items); + */ + this.getStandardArray = function(keywordType){ + return this.createKeyword(keywordType).toArray(["id", "name"]); + } + + /** + * 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} 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 + * var kwdUtils, histMedium; + * histMedium = vars.get("$field.MEDIUM"); + * if (histMedium){ + * kwdUtils = new KeywordUtils(); + * result.string(vars.get("$field.SUBJECT") + " (" + kwdUtils.getViewValue("HISTORY.MEDIUM", histMedium) + ")"); + * } + */ + this.getViewValue = function(keywordType, key){ + var k = this.createKeyword(keywordType); + return k.getPropForKey(key, "name") || ""; + } + + /** + * creates an object with methods for interacting with an specific keyword + * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY" + * @return {Object} object with the following methods: + * <br/>- toArray + * <br/>- getPropForKey + * <br/>- getPropsForKey + */ + this.createKeyword = function(keywordType){ + var valueContainer, _toArrayFn, _getPropForKeyFn, _getPropsForKeyFn; + + switch (keywordType){ + case "RELATION.STATUS": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("0", translate.text("Inactive")) + ,createKeywordEntry("1", translate.text("Active")) + ,createKeywordEntry("2", translate.text("In review")) + ]); + break; + case "COUNTRY": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("DE", translate.text("Germany")) + ,createKeywordEntry("AT", translate.text("Austria")) + ,createKeywordEntry("CH", translate.text("Switzerland")) + ,createKeywordEntry("GB", translate.text("United Kingdom")) + ,createKeywordEntry("NO", translate.text("Norway")) + ]); + break; + case "LANGUAGE": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("de", translate.text("German")) + ,createKeywordEntry("de-DE", translate.text("German (Germany)")) + ,createKeywordEntry("de-AT", translate.text("German (Austria)")) + ,createKeywordEntry("en", translate.text("English")) + ,createKeywordEntry("en-GB", translate.text("English (United Kingdom)")) + ,createKeywordEntry("no-NO", translate.text("Norwegian")) + ]); + break; + case "HISTORY.DIRECTION": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("i", translate.text("Incoming")) + ,createKeywordEntry("o", translate.text("Outgoing")) + ]); + break; + case "HISTORY.MEDIUM": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("0", translate.text("Visit")) + ,createKeywordEntry("1", translate.text("E-Mail")) + ,createKeywordEntry("2", translate.text("Phone")) + ,createKeywordEntry("3", translate.text("Internal")) + ,createKeywordEntry("4", translate.text("Online-Meeting")) + ]); + case "COMM.MEDIUM": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("0", translate.text("Mobile")) + ,createKeywordEntry("1", translate.text("E-Mail")) + ,createKeywordEntry("2", translate.text("Phone")) + ,createKeywordEntry("3", translate.text("Internet")) + ]); + break; + case "ADDRESS.TYPE": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("1", translate.text("Office address")) + ,createKeywordEntry("2", translate.text("Home address")) + ,createKeywordEntry("3", translate.text("Delivery address")) + ,createKeywordEntry("4", translate.text("Post office box")) + ]); + break; + case "ORG.TYPE": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("0", translate.text("Customer")) + ,createKeywordEntry("1", translate.text("Prospect")) + ,createKeywordEntry("2", translate.text("Supplier")) + ,createKeywordEntry("3", translate.text("Other")) + ]); + break; + case "PERS.GENDER": + valueContainer = createKeywordEntriesContainer([ + createKeywordEntry("f", translate.text("Female")) + ,createKeywordEntry("m", translate.text("Male")) + ,createKeywordEntry("o", translate.text("${GENDER_OTHER}")) + ]); + break; + default: + throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [ + arguments.callee.name, keywordType + ])); + break; + } + + + _getPropForKeyFn = function(key, field) { + var keyObject = valueContainer[key]; + if (keyObject == undefined) + return undefined; + return keyObject[field]; + }; + + _getPropsForKeyFn = function(key, fields) { + var keyObject, i, l, currentRow, currentField; + + keyObject = valueContainer[key]; + if (keyObject == undefined) + return [];//TODO: throw error instead? + l = fields.length; + currentRow = []; + for (i = 0; i < l; i++){ + currentField = fields[i]; + //check if the passed fieldnames match the existing fieldnames (<=> properties in the object) + //to prevent errors and unexpected behaviour + if (keyObject[currentField]) + currentRow.push(keyObject[currentField]); + else + currentRow.push(""); + } + return currentRow; + }; + + _toArrayFn = function(fields){ + var res, id, currentRow; + + res = []; + if (!fields) + fields = ["id", "name"]; + l = fields.length; + for (id in valueContainer){ + currentRow = _getPropsForKeyFn(id, fields); + res.push(currentRow); + } + return res; + }; + + return { + /** + * toArray + */ + toArray: _toArrayFn + ,getPropForKey: _getPropForKeyFn + ,getPropsForKey: _getPropsForKeyFn + }; + }; + + /** + * internal function for creating an object that represents a keyword entry + * @param {String} id represents the key of an entry; a KeywordEntriesContainer can contain the same key only once + * @param {String} name represents the translated name of an entry; this is in most cases the view-value + * @param {String} [description=""] description text for describing the keyword + * @return {Object} object that represents a single keyword entry; normally severel entries are cumulated in a "keywordEntriesContainer" + */ + function createKeywordEntry(id, name, description){ + //TODO: verify if mandatory-checks are really that usefull or can at least be made easier + if (!id) + throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [ + "id", arguments.callee.name + ])); + if (!name) + throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [ + "name", arguments.callee.name + ])); + + return { + id: id + ,name: name + ,description: description || "" + }; + } + + /** + * internal function for creating an object that represents a container of several keywordEntries + * @param {Array} keywordEntries an Array of keywordEntry-objects (as they are created by "createKeywordEntry" + * @return {Object} object that contains several keywordEntries + */ + function createKeywordEntriesContainer(keywordEntries){ + var res, i, l, id; + + res = {}; + for (i = 0, l = keywordEntries.length; i < l; i++){ + id = keywordEntries[i].id; + if (res[id] != undefined){ + throw new Error("the given id is not unique since it already exists"); + } + res[id] = keywordEntries[i]; + } + return res; + } } \ No newline at end of file -- GitLab