Skip to content
Snippets Groups Projects
Commit 10954966 authored by Johannes Goderbauer's avatar Johannes Goderbauer
Browse files

added comments to Keyword_lib

[Projekt: Entwicklung - Neon][TicketNr.: 1022526][Bereitstellung erste Version 5.1 Customizing für Gremium]
parent 0bee6d51
No related branches found
No related tags found
No related merge requests found
import("system.logging"); import("system.logging");
import("system.translate"); import("system.translate");
/** /**
* provides methods for interactions with keywords * provides methods for interactions with keywords
*/ */
function KeywordUtils(){ function KeywordUtils(){
/** /**
* returns the default case for keyword-arrays (id and translated name) * 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" * @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"]] * @return {Array} a 2D array in form of [["id1", "name1"], ["idN", "nameN"]]
* @example * @example
* var kwdUtils, items; * var kwdUtils, items;
* *
* kwdUtils = new KeywordUtils(); * kwdUtils = new KeywordUtils();
* items = kwdUtils.getStandardArray("ADDRESS.TYPE"); * items = kwdUtils.getStandardArray("ADDRESS.TYPE");
* result.object(items); * result.object(items);
*/ */
this.getStandardArray = function(keywordType){ this.getStandardArray = function(keywordType){
return this.createKeyword(keywordType).toArray(["id", "name"]); return this.createKeyword(keywordType).toArray(["id", "name"]);
} }
/** /**
* returns a specific name (translated) - this is normally the view-value - of a given keyword; * 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 * <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} 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 * @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 * @return {String} representation of the translated name of the keyword-key
* @example * @example
* var kwdUtils, histMedium; * var kwdUtils, histMedium;
* histMedium = vars.get("$field.MEDIUM"); * histMedium = vars.get("$field.MEDIUM");
* if (histMedium){ * if (histMedium){
* kwdUtils = new KeywordUtils(); * kwdUtils = new KeywordUtils();
* result.string(vars.get("$field.SUBJECT") + " (" + kwdUtils.getViewValue("HISTORY.MEDIUM", histMedium) + ")"); * result.string(vars.get("$field.SUBJECT") + " (" + kwdUtils.getViewValue("HISTORY.MEDIUM", histMedium) + ")");
* } * }
*/ */
this.getViewValue = function(keywordType, key){ this.getViewValue = function(keywordType, key){
var k = this.createKeyword(keywordType); var k = this.createKeyword(keywordType);
return k.getPropForKey(key, "name") || ""; return k.getPropForKey(key, "name") || "";
} }
/** /**
* creates an object with methods for interacting with an specific keyword * 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" * @param {String} keywordType specifies the type of the keyword and therefore the list elements; e.g. "COUNTRY"
* @return {Object} object with the following methods: * @return {Object} object with the following methods:
* <br/>- toArray * <br/>- toArray
* <br/>- getPropForKey * <br/>- getPropForKey
* <br/>- getPropsForKey * <br/>- getPropsForKey
*/ */
this.createKeyword = function(keywordType){ this.createKeyword = function(keywordType){
var valueContainer, _toArrayFn, _getPropForKeyFn, _getPropsForKeyFn; var valueContainer, _toArrayFn, _getPropForKeyFn, _getPropsForKeyFn;
switch (keywordType){ switch (keywordType){
case "RELATION.STATUS": case "RELATION.STATUS":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("0", translate.text("Inactive")) createKeywordEntry("0", translate.text("Inactive"))
,createKeywordEntry("1", translate.text("Active")) ,createKeywordEntry("1", translate.text("Active"))
,createKeywordEntry("2", translate.text("In review")) ,createKeywordEntry("2", translate.text("In review"))
]); ]);
break; break;
case "COUNTRY": case "COUNTRY":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("DE", translate.text("Germany")) createKeywordEntry("DE", translate.text("Germany"))
,createKeywordEntry("AT", translate.text("Austria")) ,createKeywordEntry("AT", translate.text("Austria"))
,createKeywordEntry("CH", translate.text("Switzerland")) ,createKeywordEntry("CH", translate.text("Switzerland"))
,createKeywordEntry("GB", translate.text("United Kingdom")) ,createKeywordEntry("GB", translate.text("United Kingdom"))
,createKeywordEntry("NO", translate.text("Norway")) ,createKeywordEntry("NO", translate.text("Norway"))
]); ]);
break; break;
case "LANGUAGE": case "LANGUAGE":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("de", translate.text("German")) createKeywordEntry("de", translate.text("German"))
,createKeywordEntry("de-DE", translate.text("German (Germany)")) ,createKeywordEntry("de-DE", translate.text("German (Germany)"))
,createKeywordEntry("de-AT", translate.text("German (Austria)")) ,createKeywordEntry("de-AT", translate.text("German (Austria)"))
,createKeywordEntry("en", translate.text("English")) ,createKeywordEntry("en", translate.text("English"))
,createKeywordEntry("en-GB", translate.text("English (United Kingdom)")) ,createKeywordEntry("en-GB", translate.text("English (United Kingdom)"))
,createKeywordEntry("no-NO", translate.text("Norwegian")) ,createKeywordEntry("no-NO", translate.text("Norwegian"))
]); ]);
break; break;
case "HISTORY.DIRECTION": case "HISTORY.DIRECTION":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("i", translate.text("Incoming")) createKeywordEntry("i", translate.text("Incoming"))
,createKeywordEntry("o", translate.text("Outgoing")) ,createKeywordEntry("o", translate.text("Outgoing"))
]); ]);
break; break;
case "HISTORY.MEDIUM": case "HISTORY.MEDIUM":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("0", translate.text("Visit")) createKeywordEntry("0", translate.text("Visit"))
,createKeywordEntry("1", translate.text("E-Mail")) ,createKeywordEntry("1", translate.text("E-Mail"))
,createKeywordEntry("2", translate.text("Phone")) ,createKeywordEntry("2", translate.text("Phone"))
,createKeywordEntry("3", translate.text("Internal")) ,createKeywordEntry("3", translate.text("Internal"))
,createKeywordEntry("4", translate.text("Online-Meeting")) ,createKeywordEntry("4", translate.text("Online-Meeting"))
]); ]);
case "COMM.MEDIUM": case "COMM.MEDIUM":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("0", translate.text("Mobile")) createKeywordEntry("0", translate.text("Mobile"))
,createKeywordEntry("1", translate.text("E-Mail")) ,createKeywordEntry("1", translate.text("E-Mail"))
,createKeywordEntry("2", translate.text("Phone")) ,createKeywordEntry("2", translate.text("Phone"))
,createKeywordEntry("3", translate.text("Internet")) ,createKeywordEntry("3", translate.text("Internet"))
]); ]);
break; break;
case "ADDRESS.TYPE": case "ADDRESS.TYPE":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("1", translate.text("Office address")) createKeywordEntry("1", translate.text("Office address"))
,createKeywordEntry("2", translate.text("Home address")) ,createKeywordEntry("2", translate.text("Home address"))
,createKeywordEntry("3", translate.text("Delivery address")) ,createKeywordEntry("3", translate.text("Delivery address"))
,createKeywordEntry("4", translate.text("Post office box")) ,createKeywordEntry("4", translate.text("Post office box"))
]); ]);
break; break;
case "ORG.TYPE": case "ORG.TYPE":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("0", translate.text("Customer")) createKeywordEntry("0", translate.text("Customer"))
,createKeywordEntry("1", translate.text("Prospect")) ,createKeywordEntry("1", translate.text("Prospect"))
,createKeywordEntry("2", translate.text("Supplier")) ,createKeywordEntry("2", translate.text("Supplier"))
,createKeywordEntry("3", translate.text("Other")) ,createKeywordEntry("3", translate.text("Other"))
]); ]);
break; break;
case "PERS.GENDER": case "PERS.GENDER":
valueContainer = createKeywordEntriesContainer([ valueContainer = createKeywordEntriesContainer([
createKeywordEntry("f", translate.text("Female")) createKeywordEntry("f", translate.text("Female"))
,createKeywordEntry("m", translate.text("Male")) ,createKeywordEntry("m", translate.text("Male"))
,createKeywordEntry("o", translate.text("${GENDER_OTHER}")) ,createKeywordEntry("o", translate.text("${GENDER_OTHER}"))
]); ]);
break; break;
default: default:
throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [ throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [
arguments.callee.name, keywordType arguments.callee.name, keywordType
])); ]));
break; break;
} }
_getPropForKeyFn = function(key, field) { _getPropForKeyFn = function(key, field) {
var keyObject = valueContainer[key]; var keyObject = valueContainer[key];
if (keyObject == undefined) if (keyObject == undefined)
return undefined; return undefined;
return keyObject[field]; return keyObject[field];
}; };
_getPropsForKeyFn = function(key, fields) { _getPropsForKeyFn = function(key, fields) {
var keyObject, i, l, currentRow, currentField; var keyObject, i, l, currentRow, currentField;
keyObject = valueContainer[key]; keyObject = valueContainer[key];
if (keyObject == undefined) if (keyObject == undefined)
return [];//TODO: throw error instead? return [];//TODO: throw error instead?
l = fields.length; l = fields.length;
currentRow = []; currentRow = [];
for (i = 0; i < l; i++){ for (i = 0; i < l; i++){
currentField = fields[i]; currentField = fields[i];
//check if the passed fieldnames match the existing fieldnames (<=> properties in the object) //check if the passed fieldnames match the existing fieldnames (<=> properties in the object)
//to prevent errors and unexpected behaviour //to prevent errors and unexpected behaviour
if (keyObject[currentField]) if (keyObject[currentField])
currentRow.push(keyObject[currentField]); currentRow.push(keyObject[currentField]);
else else
currentRow.push(""); currentRow.push("");
} }
return currentRow; return currentRow;
}; };
_toArrayFn = function(fields){ _toArrayFn = function(fields){
var res, id, currentRow; var res, id, currentRow;
res = []; res = [];
if (!fields) if (!fields)
fields = ["id", "name"]; fields = ["id", "name"];
l = fields.length; l = fields.length;
for (id in valueContainer){ for (id in valueContainer){
currentRow = _getPropsForKeyFn(id, fields); currentRow = _getPropsForKeyFn(id, fields);
res.push(currentRow); res.push(currentRow);
} }
return res; return res;
}; };
return { return {
/** /**
* toArray * toArray
*/ */
toArray: _toArrayFn toArray: _toArrayFn
,getPropForKey: _getPropForKeyFn ,getPropForKey: _getPropForKeyFn
,getPropsForKey: _getPropsForKeyFn ,getPropsForKey: _getPropsForKeyFn
}; };
}; };
/**
function createKeywordEntry(id, name, description){ * internal function for creating an object that represents a keyword entry
//TODO: verify if mandatory-checks are really that usefull or can at least be made easier * @param {String} id represents the key of an entry; a KeywordEntriesContainer can contain the same key only once
if (!id) * @param {String} name represents the translated name of an entry; this is in most cases the view-value
throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [ * @param {String} [description=""] description text for describing the keyword
"id", arguments.callee.name * @return {Object} object that represents a single keyword entry; normally severel entries are cumulated in a "keywordEntriesContainer"
])); */
if (!name) function createKeywordEntry(id, name, description){
throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [ //TODO: verify if mandatory-checks are really that usefull or can at least be made easier
"name", arguments.callee.name if (!id)
])); throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [
"id", arguments.callee.name
return { ]));
id: id if (!name)
,name: name throw new Error(translate.withArguments("the param \"%0\" in \"%1\" is mandatory and has to be set", [
,description: description || "" "name", arguments.callee.name
}; ]));
}
return {
function createKeywordEntriesContainer(keywordEntries){ id: id
var res, i, l, id; ,name: name
,description: description || ""
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"); * 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"
res[id] = keywordEntries[i]; * @return {Object} object that contains several keywordEntries
} */
return res; 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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment