diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 9b6b3552fc21d4878115882b5b0dbf086cf72315..2a88ca454c0fbc38c18b09456a82417dca830e50 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -543,7 +543,7 @@ <columnType v="93" /> <size v="29" /> <scale v="9" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <title></title> @@ -556,7 +556,7 @@ <columnType v="12" /> <size v="50" /> <scale v="0" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <title></title> @@ -4859,6 +4859,249 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>TASK</name> + <dbName></dbName> + <idColumn>TASKID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>DATE_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>PRIORITY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MATURITY_DATE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_EDIT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>EDITOR_RELATION_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TASKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CODE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>STATUS</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DESCRIPTION</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="2005" /> + <size v="2147483647" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>REQUESTOR_RELATION_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SUBJECT</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="254" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>PROTECTIONLEVEL</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="50" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>START_DATE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="93" /> + <size v="29" /> + <scale v="9" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 37a5f73266e20b057f57430514c211b340205136..1991fe78ecbd39bf8d2705bf172f5355ce0942d4 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -9,6 +9,7 @@ <node name="Pers_context" kind="10077" /> <node name="Org_context" kind="10077" /> <node name="Activity_context" kind="10077" /> + <node name="Task_context" kind="10077" /> <node name="INTERNAL_ADMINISTRATOR" kind="159" /> </node> </node> diff --git a/entity/Pers_entity/Pers_entity.aod b/entity/Pers_entity/Pers_entity.aod index 80f2d63c7f1888ca75d20086372a0660b96e9107..2f11cd9cc86a1ad85016e03c4e1fb25573e5996c 100644 --- a/entity/Pers_entity/Pers_entity.aod +++ b/entity/Pers_entity/Pers_entity.aod @@ -283,6 +283,20 @@ </entityOutgoingField> <entityIncomingField> <name>#INCOMING</name> + <dependencies> + <entityDependency> + <name>799de3aa-657c-4bc1-a41e-10dc1687ca75</name> + <entityName>Task_entity</entityName> + <fieldName>PersRequestor_dfo</fieldName> + <isOutgoing v="false" /> + </entityDependency> + <entityDependency> + <name>3e467178-bc3b-40b5-9fd3-af27bc3ba476</name> + <entityName>Task_entity</entityName> + <fieldName>PersEditor_dfo</fieldName> + <isOutgoing v="false" /> + </entityDependency> + </dependencies> </entityIncomingField> <entityField> <name>LANGUAGE</name> diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..539ef213f4cea01b7e51d77dc56497748075d080 --- /dev/null +++ b/entity/Task_entity/Task_entity.aod @@ -0,0 +1,219 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.1.1"> + <name>Task_entity</name> + <title>Task</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/Task_entity/documentation.adoc</documentation> + <icon>VAADIN:TASKS</icon> + <iconId>VAADIN:TASKS</iconId> + <recordContainer>db</recordContainer> + <entityFields> + <entityIncomingField> + <name>#INCOMING</name> + </entityIncomingField> + <entityField> + <name>CODE</name> + <title>task number</title> + <contentType>NUMBER</contentType> + <outputFormat>0000000</outputFormat> + <state>READONLY</state> + <stateProcess>%aditoprj%/entity/Task_entity/entityfields/code/stateProcess.js</stateProcess> + </entityField> + <entityField> + <name>SUBJECT</name> + <title>subject</title> + <mandatory v="true" /> + </entityField> + <entityField> + <name>STATUS</name> + <title>{$TASK_STATUS}</title> + <mandatory v="true" /> + <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/status/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/status/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PRIORITY</name> + <title>priority</title> + <mandatory v="true" /> + <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/priority/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/priority/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>REQUESTOR_RELATION_ID</name> + <title>{$TASK_REQUESTOR}</title> + <linkedContext>Pers_context</linkedContext> + <mandatory v="true" /> + <outgoingField>PersRequestor_dfo</outgoingField> + </entityField> + <entityField> + <name>EDITOR_RELATION_ID</name> + <title>{$TASK_EDITOR}</title> + <linkedContext>Pers_context</linkedContext> + <outgoingField>EditorPers_dfo</outgoingField> + </entityField> + <entityField> + <name>START_DATE</name> + <title>start date</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/start_date/valueProcess.js</valueProcess> + <onValidation>%aditoprj%/entity/Task_entity/entityfields/start_date/onValidation.js</onValidation> + </entityField> + <entityField> + <name>MATURITY_DATE</name> + <title>maturity date</title> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maturity_date/valueProcess.js</valueProcess> + <onValidation>%aditoprj%/entity/Task_entity/entityfields/maturity_date/onValidation.js</onValidation> + </entityField> + <entityField> + <name>TYPE</name> + <title>type</title> + <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/type/possibleItemsProcess.js</possibleItemsProcess> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>description</title> + <contentType>HTML</contentType> + </entityField> + <entityField> + <name>PROTECTIONLEVEL</name> + <title>private</title> + <contentType>BOOLEAN</contentType> + <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess> + <possibleItemsProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/possibleItemsProcess.js</possibleItemsProcess> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TASKID</name> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/Task_entity/entityfields/taskid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_NEW</name> + <contentType>DATE</contentType> + <resolution>SECOND</resolution> + <mandatory v="true" /> + </entityField> + <entityField> + <name>USER_NEW</name> + <mandatory v="true" /> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <contentType>DATE</contentType> + <resolution>SECOND</resolution> + </entityField> + <entityField> + <name>USER_EDIT</name> + </entityField> + <entityOutgoingField> + <name>PersEditor_dfo</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>Pers_entity</entityName> + <fieldName>#INCOMING</fieldName> + </dependency> + </entityOutgoingField> + <entityOutgoingField> + <name>PersRequestor_dfo</name> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>Pers_entity</entityName> + <fieldName>#INCOMING</fieldName> + </dependency> + </entityOutgoingField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <linkInformation> + <linkInformation> + <name>47e1b4a5-6901-48b0-85ba-bec39b86a2d7</name> + <tableName>TASK</tableName> + <primaryKey>TASKID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>CODE.value</name> + <recordfield>TASK.CODE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DESCRIPTION.value</name> + <recordfield>TASK.DESCRIPTION</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>EDITOR_RELATION_ID.value</name> + <recordfield>TASK.EDITOR_RELATION_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MATURITY_DATE.value</name> + <recordfield>TASK.MATURITY_DATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PRIORITY.value</name> + <recordfield>TASK.PRIORITY</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PROTECTIONLEVEL.value</name> + <recordfield>TASK.PROTECTIONLEVEL</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>REQUESTOR_RELATION_ID.value</name> + <recordfield>TASK.REQUESTOR_RELATION_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>START_DATE.value</name> + <recordfield>TASK.START_DATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STATUS.value</name> + <recordfield>TASK.STATUS</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBJECT.value</name> + <recordfield>TASK.SUBJECT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TASKID.value</name> + <recordfield>TASK.TASKID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TYPE.value</name> + <recordfield>TASK.TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>TASK.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>TASK.USER_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>TASK.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>TASK.DATE_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>EDITOR_RELATION_ID.displayValue</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_relation_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>REQUESTOR_RELATION_ID.displayValue</name> + <expression>%aditoprj%/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_relation_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/Task_entity/documentation.adoc b/entity/Task_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..39ff16934ddd9a2959f4dcfeb34a6210d3472acc --- /dev/null +++ b/entity/Task_entity/documentation.adoc @@ -0,0 +1 @@ +CAUTION: Do not confuse these tasks with calendar-tasks(=todos). The `Task_context` tasks are not syncable to a groupware system. \ No newline at end of file diff --git a/entity/Task_entity/entityfields/code/stateProcess.js b/entity/Task_entity/entityfields/code/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3104b5b489485ec14165fc219df0850b233f9827 --- /dev/null +++ b/entity/Task_entity/entityfields/code/stateProcess.js @@ -0,0 +1,11 @@ +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +//the code (tasknumber) value is genereated before save to prevent duplicate numbers +//so: no need to display it on new +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(neon.COMPONENTSTATE_INVISIBLE); +else + result.string(neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/maturity_date/onValidation.js b/entity/Task_entity/entityfields/maturity_date/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..bb062404491c5fdbd934a7e23caf370b5c250d6e --- /dev/null +++ b/entity/Task_entity/entityfields/maturity_date/onValidation.js @@ -0,0 +1 @@ +//TODO: add validation for start-date and maturity-date \ No newline at end of file diff --git a/entity/Task_entity/entityfields/maturity_date/valueProcess.js b/entity/Task_entity/entityfields/maturity_date/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..033144177b08bda5223b19f104b5fdbebf1a7569 --- /dev/null +++ b/entity/Task_entity/entityfields/maturity_date/valueProcess.js @@ -0,0 +1,13 @@ +import("system.eMath"); +import("system.datetime"); +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + var startDate = vars.get("$field.START_DATE"); + var presetVal = eMath.addInt(startDate, datetime.ONE_WEEK); + result.string(presetVal); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/priority/possibleItemsProcess.js b/entity/Task_entity/entityfields/priority/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..745b8655027dd65e8f516cfa9f7b2e75cdaffc8a --- /dev/null +++ b/entity/Task_entity/entityfields/priority/possibleItemsProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Keyword_lib"); + +var items; + +items = KeywordUtils.getStandardArray("TASK.PRIORITY"); +result.object(items); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f6d5ec3fa8f24bbb18e03b535d9dece488186913 --- /dev/null +++ b/entity/Task_entity/entityfields/priority/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("2");//TODO: do not use int-keys for this; use from keyword \ No newline at end of file diff --git a/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js b/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1a161e39b9678bcf5133cd21574dadc8be7d9bbe --- /dev/null +++ b/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js @@ -0,0 +1 @@ +//this field is currently a BOOLEAN field; reserved for future that there can be more values (e.g. teams, groups, privatem, public) \ No newline at end of file diff --git a/entity/Task_entity/entityfields/protectionlevel/possibleItemsProcess.js b/entity/Task_entity/entityfields/protectionlevel/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d1e073b04225f1399a3243e951d4f7d81937ec4e --- /dev/null +++ b/entity/Task_entity/entityfields/protectionlevel/possibleItemsProcess.js @@ -0,0 +1,7 @@ +import("system.translate"); +import("system.result"); + +result.object([ + ["1", translate.text("Yes")] + ,["0", translate.text("No")] + ]); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/protectionlevel/valueProcess.js b/entity/Task_entity/entityfields/protectionlevel/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2080ca4fd3985740c4dab03d53fab5fa48203732 --- /dev/null +++ b/entity/Task_entity/entityfields/protectionlevel/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("0"); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/start_date/onValidation.js b/entity/Task_entity/entityfields/start_date/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..bb062404491c5fdbd934a7e23caf370b5c250d6e --- /dev/null +++ b/entity/Task_entity/entityfields/start_date/onValidation.js @@ -0,0 +1 @@ +//TODO: add validation for start-date and maturity-date \ No newline at end of file diff --git a/entity/Task_entity/entityfields/start_date/valueProcess.js b/entity/Task_entity/entityfields/start_date/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2e53ba813c3d8aa3facad3c028b720b7088bfdb0 --- /dev/null +++ b/entity/Task_entity/entityfields/start_date/valueProcess.js @@ -0,0 +1,13 @@ +import("system.datetime"); +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + var presetVal = datetime.date(); + //TODO: depending on what happens in #1032274 we need to manually set the resolution to MINUTES or not (which means we've to set everything smaller than MINUTES (Seconds, etc.) to zero) + presetVal = datetime.toLong(datetime.toDate(presetVal, "yyyy-MM-dd hh:mm"), "yyyy-MM-dd hh:mm"); + result.string(presetVal); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/status/possibleItemsProcess.js b/entity/Task_entity/entityfields/status/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c954aedab3cf2702fd535445681b9e61db55a6e1 --- /dev/null +++ b/entity/Task_entity/entityfields/status/possibleItemsProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Keyword_lib"); + +var items; + +items = KeywordUtils.getStandardArray("TASK.STATUS"); +result.object(items); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/status/valueProcess.js b/entity/Task_entity/entityfields/status/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8d9f96e0992902ef55f290f83b4df79c0197c897 --- /dev/null +++ b/entity/Task_entity/entityfields/status/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("0");//TODO: do not use int-keys for this; use from keyword \ No newline at end of file diff --git a/entity/Task_entity/entityfields/taskid/valueProcess.js b/entity/Task_entity/entityfields/taskid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4af99287f59a86e98d9b4c552c010fe13c106cc7 --- /dev/null +++ b/entity/Task_entity/entityfields/taskid/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/Task_entity/entityfields/type/possibleItemsProcess.js b/entity/Task_entity/entityfields/type/possibleItemsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ff1398053b4ebab0c4eff6a66cf31f075faa3e3e --- /dev/null +++ b/entity/Task_entity/entityfields/type/possibleItemsProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Keyword_lib"); + +var items; + +items = KeywordUtils.getStandardArray("TASK.TYPE"); +result.object(items); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_relation_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_relation_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..a4f559ec522ca79834fcd95d1270165827d74352 --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_relation_id.displayvalue/expression.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Pers_lib"); + +//TODO: try to find a better solution for this +var subSql = PersUtils.getResolvingDisplaySubSql("TASK.EDITOR_RELATION_ID"); +result.string(subSql); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_relation_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_relation_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..dcbdb3df7f18e9c7c17ad99735c20fb675ef6511 --- /dev/null +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/requestor_relation_id.displayvalue/expression.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Pers_lib"); + +//TODO: try to find a better solution for this +var subSql = PersUtils.getResolvingDisplaySubSql("TASK.REQUESTOR_RELATION_ID"); +result.string(subSql); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 81e9b341fc68304ce4b3bf799c5cbb98e7838594..f65f9bc5d3010d1e3d7871ccbdf7f7505fd58d39 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -1278,6 +1278,141 @@ <entry> <key>Plus Salestax</key> </entry> + <entry> + <key>maturity date</key> + </entry> + <entry> + <key>{$TASK_STATUS}</key> + </entry> + <entry> + <key>Task</key> + </entry> + <entry> + <key>subject</key> + </entry> + <entry> + <key>{$TASK_REQUESTOR}</key> + </entry> + <entry> + <key>start date</key> + </entry> + <entry> + <key>task number</key> + </entry> + <entry> + <key>{$TASK_EDITOR}</key> + </entry> + <entry> + <key>description</key> + </entry> + <entry> + <key>priority</key> + </entry> + <entry> + <key>Choose address</key> + </entry> + <entry> + <key>zusagen</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_HIGH}</key> + </entry> + <entry> + <key>Seite</key> + </entry> + <entry> + <key>Note</key> + </entry> + <entry> + <key>Senden per E-Mail</key> + </entry> + <entry> + <key>Hauptdokument</key> + </entry> + <entry> + <key>Betreff</key> + </entry> + <entry> + <key>private</key> + </entry> + <entry> + <key>waiting</key> + </entry> + <entry> + <key>title</key> + </entry> + <entry> + <key>von</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_LOW}</key> + </entry> + <entry> + <key>Nur Eigene anzeigen</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_NORMAL}</key> + </entry> + <entry> + <key>new</key> + </entry> + <entry> + <key>Beschreibung</key> + </entry> + <entry> + <key>Unit price</key> + </entry> + <entry> + <key>Firma</key> + </entry> + <entry> + <key>adsfadsfyxcv</key> + </entry> + <entry> + <key>absagen</key> + </entry> + <entry> + <key>asdfasdf</key> + </entry> + <entry> + <key>type</key> + </entry> + <entry> + <key>Benutzer</key> + </entry> + <entry> + <key>Schlüsselwort</key> + </entry> + <entry> + <key>in process</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_NONE}</key> + </entry> + <entry> + <key>vielleicht</key> + </entry> + <entry> + <key>ended</key> + </entry> + <entry> + <key>Ihr zuständiger Betreuer:</key> + </entry> + <entry> + <key>Datum</key> + </entry> + <entry> + <key>Termin</key> + </entry> + <entry> + <key>Vorschau</key> + </entry> + <entry> + <key>weitere Informationen</key> + </entry> + <entry> + <key>Angebot</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 384f13de462f790ebdee3d0c6808245f92e84481..2198463d021e0835b7773d3f4d5a12808599223e 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -1641,6 +1641,157 @@ <entry> <key>Dateigröße</key> </entry> + <entry> + <key>maturity date</key> + <value>Fälligkeitsdatum</value> + </entry> + <entry> + <key>{$TASK_STATUS}</key> + <value>Status</value> + </entry> + <entry> + <key>Task</key> + <value>Aufgabe</value> + </entry> + <entry> + <key>subject</key> + <value>Betreff</value> + </entry> + <entry> + <key>{$TASK_REQUESTOR}</key> + <value>Anforderer</value> + </entry> + <entry> + <key>start date</key> + <value>Beginndatum</value> + </entry> + <entry> + <key>task number</key> + <value>Aufgabennummer</value> + </entry> + <entry> + <key>description</key> + <value>Beschreibung</value> + </entry> + <entry> + <key>priority</key> + <value>Piorität</value> + </entry> + <entry> + <key>{$TASK_EDITOR}</key> + <value>Bearbeiter</value> + </entry> + <entry> + <key>zusagen</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_HIGH}</key> + <value>hoch</value> + </entry> + <entry> + <key>Seite</key> + </entry> + <entry> + <key>Note</key> + </entry> + <entry> + <key>Senden per E-Mail</key> + </entry> + <entry> + <key>Hauptdokument</key> + </entry> + <entry> + <key>Betreff</key> + </entry> + <entry> + <key>private</key> + </entry> + <entry> + <key>waiting</key> + <value>wartend</value> + </entry> + <entry> + <key>title</key> + </entry> + <entry> + <key>von</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_LOW}</key> + <value>niedrig</value> + </entry> + <entry> + <key>Nur Eigene anzeigen</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_NORMAL}</key> + <value>normal</value> + </entry> + <entry> + <key>new</key> + <value>neu</value> + </entry> + <entry> + <key>Beschreibung</key> + </entry> + <entry> + <key>Unit price</key> + </entry> + <entry> + <key>Firma</key> + </entry> + <entry> + <key>adsfadsfyxcv</key> + </entry> + <entry> + <key>absagen</key> + </entry> + <entry> + <key>asdfasdf</key> + </entry> + <entry> + <key>type</key> + <value>Typ</value> + </entry> + <entry> + <key>Benutzer</key> + </entry> + <entry> + <key>Schlüsselwort</key> + </entry> + <entry> + <key>in process</key> + <value>in Bearbeitung</value> + </entry> + <entry> + <key>{$TASK_PRIORITY_NONE}</key> + <value>keine</value> + </entry> + <entry> + <key>vielleicht</key> + </entry> + <entry> + <key>ended</key> + <value>beendet</value> + </entry> + <entry> + <key>Ihr zuständiger Betreuer:</key> + </entry> + <entry> + <key>Datum</key> + </entry> + <entry> + <key>Termin</key> + </entry> + <entry> + <key>Vorschau</key> + </entry> + <entry> + <key>weitere Informationen</key> + </entry> + <entry> + <key>Angebot</key> + </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 ced24c245fdb7ecf480f9a0c6799820af9e0f32b..5ccb7ed13ceb02b7e5aa165a8d8135cf17508b57 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -1295,6 +1295,141 @@ <entry> <key>Plus Salestax</key> </entry> + <entry> + <key>maturity date</key> + </entry> + <entry> + <key>{$TASK_STATUS}</key> + </entry> + <entry> + <key>Task</key> + </entry> + <entry> + <key>subject</key> + </entry> + <entry> + <key>{$TASK_REQUESTOR}</key> + </entry> + <entry> + <key>start date</key> + </entry> + <entry> + <key>task number</key> + </entry> + <entry> + <key>{$TASK_EDITOR}</key> + </entry> + <entry> + <key>description</key> + </entry> + <entry> + <key>priority</key> + </entry> + <entry> + <key>Choose address</key> + </entry> + <entry> + <key>zusagen</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_HIGH}</key> + </entry> + <entry> + <key>Seite</key> + </entry> + <entry> + <key>Note</key> + </entry> + <entry> + <key>Senden per E-Mail</key> + </entry> + <entry> + <key>Hauptdokument</key> + </entry> + <entry> + <key>Betreff</key> + </entry> + <entry> + <key>private</key> + </entry> + <entry> + <key>waiting</key> + </entry> + <entry> + <key>title</key> + </entry> + <entry> + <key>von</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_LOW}</key> + </entry> + <entry> + <key>Nur Eigene anzeigen</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_NORMAL}</key> + </entry> + <entry> + <key>new</key> + </entry> + <entry> + <key>Beschreibung</key> + </entry> + <entry> + <key>Unit price</key> + </entry> + <entry> + <key>Firma</key> + </entry> + <entry> + <key>adsfadsfyxcv</key> + </entry> + <entry> + <key>absagen</key> + </entry> + <entry> + <key>asdfasdf</key> + </entry> + <entry> + <key>type</key> + </entry> + <entry> + <key>Benutzer</key> + </entry> + <entry> + <key>Schlüsselwort</key> + </entry> + <entry> + <key>in process</key> + </entry> + <entry> + <key>{$TASK_PRIORITY_NONE}</key> + </entry> + <entry> + <key>vielleicht</key> + </entry> + <entry> + <key>ended</key> + </entry> + <entry> + <key>Ihr zuständiger Betreuer:</key> + </entry> + <entry> + <key>Datum</key> + </entry> + <entry> + <key>Termin</key> + </entry> + <entry> + <key>Vorschau</key> + </entry> + <entry> + <key>weitere Informationen</key> + </entry> + <entry> + <key>Angebot</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Task_context/Task_context.aod b/neonContext/Task_context/Task_context.aod new file mode 100644 index 0000000000000000000000000000000000000000..42222db092821cf3ca3ee3f8586eb4618a58c824 --- /dev/null +++ b/neonContext/Task_context/Task_context.aod @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.0.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.0.0"> + <name>Task_context</name> + <title>Task</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/neonContext/Task_context/documentation.adoc</documentation> + <icon>VAADIN:TASKS</icon> + <filterview>TaskFilter_view</filterview> + <editview>TaskEdit_view</editview> + <preview>TaskPreview_view</preview> + <entity>Task_entity</entity> + <references> + <neonViewReference> + <name>5e6fdab4-8781-4e2d-af7a-755d834b631d</name> + <view>TaskFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>7a4bcf0f-2861-4400-8fab-152c6a9ecb9b</name> + <view>TaskPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>b9bd19b5-2a67-47a4-83cd-41ba30e81888</name> + <view>TaskEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/Task_context/documentation.adoc b/neonContext/Task_context/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e6a998df6826aaaf8d7683c657fc1511f164295e --- /dev/null +++ b/neonContext/Task_context/documentation.adoc @@ -0,0 +1,3 @@ +A task describes a need for action (something to be done) by one or more responsible person(s). + +CAUTION: Do not confuse these tasks with calendar-tasks(=todos). The `Task_context` tasks are not syncable to a groupware system. \ No newline at end of file diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod index 7035162a841ddbe4608dc6c0ed80ae0748568d1d..b0b20b24fc91fb3fb71c30a2fcec7109f21de7e1 100644 --- a/neonView/DocumentFilter_view/DocumentFilter_view.aod +++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod @@ -4,9 +4,9 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <groupLayout> + <boxLayout> <name>layout</name> - </groupLayout> + </boxLayout> </layout> <children> <tableViewTemplate> diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..3c8995af34a80b7816234bd7fd35b01853d89ca4 --- /dev/null +++ b/neonView/TaskEdit_view/TaskEdit_view.aod @@ -0,0 +1,63 @@ +<?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>TaskEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>main</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>bc1d5872-58e5-4799-a382-79e74945cc75</name> + <entityField>CODE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>fb5768fe-2dd2-45cd-8d21-f20af279f409</name> + <entityField>SUBJECT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>b5d6e9ea-355f-49f8-bcc2-f3efd44adb19</name> + <entityField>START_DATE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>511acbd5-4ab6-44a9-932d-df4f201896a5</name> + <entityField>MATURITY_DATE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>05c54fab-56b8-4cea-8b66-ba26e5dd16cd</name> + <entityField>STATUS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>0f600024-eb83-445c-8eb9-62bcf9e95313</name> + <entityField>PRIORITY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>8173056f-fac6-4ee0-a8ff-c27c8184e6e9</name> + <entityField>TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>71d2b122-1687-454a-ae60-7e68aa83106c</name> + <entityField>PROTECTIONLEVEL</entityField> + </entityFieldLink> + <entityFieldLink> + <name>fd41b0ee-cae4-40b5-8aad-45740f4d6268</name> + <entityField>REQUESTOR_RELATION_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>8428cbf6-7df0-4f7e-b6d6-5ab17e266028</name> + <entityField>EDITOR_RELATION_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>b31bb2ab-22a6-4bc6-8b6c-d73a1c43283f</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..941e4f7a9b2219e13cf1a97abbae476cd544875b --- /dev/null +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -0,0 +1,44 @@ +<?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>TaskFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>mainTable</name> + <entityField>#ENTITY</entityField> + <title></title> + <columns> + <neonTableColumn> + <name>c60f59e5-f56b-4d13-87fc-e8c8e65bebd7</name> + <entityField>CODE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>591cd079-a8e9-49aa-8a2d-afb643aef079</name> + <entityField>SUBJECT</entityField> + <expandRatio v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>b92dba41-58a2-4c95-aeb4-235c5eaffad7</name> + <entityField>STATUS</entityField> + </neonTableColumn> + <neonTableColumn> + <name>5d11add4-d939-4c8e-9633-efd0c2991837</name> + <entityField>PRIORITY</entityField> + </neonTableColumn> + <neonTableColumn> + <name>154182d8-bc66-4901-a423-7d3a375d4154</name> + <entityField>MATURITY_DATE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>51190c85-fa03-4022-bc72-063d4b895d5b</name> + <entityField>EDITOR_RELATION_ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..78d974291b0b0523e98d0bf0e208eef485466942 --- /dev/null +++ b/neonView/TaskPreview_view/TaskPreview_view.aod @@ -0,0 +1,61 @@ +<?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>TaskPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <cardViewTemplate> + <name>head</name> + <iconField>#ICON</iconField> + <titleField>SUBJECT</titleField> + <descriptionField>STATUS</descriptionField> + <entityField>#ENTITY</entityField> + </cardViewTemplate> + <genericViewTemplate> + <name>extendedData</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>0bfb984a-1a1b-404d-beb9-a1b8002ebed2</name> + <entityField>CODE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>f988850e-53ed-443d-bd3d-16946eba656e</name> + <entityField>START_DATE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>dda6aefc-9d4f-4d93-9a45-bc97a278c050</name> + <entityField>MATURITY_DATE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>95c12be2-3cbe-4bc6-8879-91fad6916dad</name> + <entityField>STATUS</entityField> + </entityFieldLink> + <entityFieldLink> + <name>ebdffed8-4999-4ec1-ac4d-c22514dfed0c</name> + <entityField>PRIORITY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>5bcbaa89-0826-4ef8-872d-bd68dbd8ef77</name> + <entityField>TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>05de9afc-429e-46a8-8e3b-2ff689ed090e</name> + <entityField>REQUESTOR_RELATION_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>bbf1a736-acf9-4b41-9df9-5675fc6d8943</name> + <entityField>EDITOR_RELATION_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>590d0c95-9cc6-44f7-9b64-37a3990531d2</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/others/db_changes/data_alias/data/example_task/base.xml b/others/db_changes/data_alias/data/example_task/base.xml new file mode 100644 index 0000000000000000000000000000000000000000..2f992f964951776d7907d1f28329d6c8492e09a5 --- /dev/null +++ b/others/db_changes/data_alias/data/example_task/base.xml @@ -0,0 +1,86 @@ +<?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="aac6bb04-cca6-4c88-a4ad-8d9d972f915c"> + <insert tableName="TASK"> + <column name="TASKID" value="e9cb198d-c420-4192-9c29-b23682457d8e"> + <constraints primaryKey="true" primaryKeyName="PK_TASK_TASKID"/> + </column> + <column name="DATE_NEW" valueDate="2018-09-16T09:04:55"> + <constraints nullable="false"/> + </column> + <column name="USER_NEW" value="admin"> + <constraints nullable="false"/> + </column> + <column name="REQUESTOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="EDITOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + + <column name="CODE" valueNumeric="10000"/> + <column name="SUBJECT" value="effiziente Wertschöpfungsketten bündeln und anlaysieren"/> + <column name="STATUS" valueNumeric="1"/> + <column name="PRIORITY" valueNumeric="2"/> + <column name="PROTECTIONLEVEL" valueNumeric="0"/> + <column name="START_DATE" valueDate="2019-01-20T14:00:00"/> + <column name="MATURITY_DATE" valueDate="2019-01-20T16:00:00"/> + <column name="DESCRIPTION" value="Es sollen die effizienten Wertschöpfungsketten der Prozessdefinitionseinheiten im primären Schritt gebündelt und sekundär analysiert und verifiziert werden."/> + </insert> + <rollback> + <delete tableName="TASK"> + <where>TASKID = 'e9cb198d-c420-4192-9c29-b23682457d8e'</where> + </delete> + </rollback> + <insert tableName="TASK"> + <column name="TASKID" value="b18558aa-6853-446a-940e-d2f100e21c6d"> + <constraints primaryKey="true" primaryKeyName="PK_TASK_TASKID"/> + </column> + <column name="DATE_NEW" valueDate="2018-09-15T09:04:55"> + <constraints nullable="false"/> + </column> + <column name="USER_NEW" value="admin"> + <constraints nullable="false"/> + </column> + <column name="REQUESTOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="EDITOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + + <column name="CODE" valueNumeric="10001"/> + <column name="SUBJECT" value="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."/> + <column name="STATUS" valueNumeric="2"/> + <column name="PRIORITY" valueNumeric="1"/> + <column name="PROTECTIONLEVEL" valueNumeric="1"/> + <column name="START_DATE" valueDate="2019-01-20T11:30:00"/> + <column name="MATURITY_DATE" valueDate="2019-01-20T19:00:00"/> + <column name="DESCRIPTION" value="Spriti introduced new capabilities of the FirstSpriti Digital Experience Platform powers enterprise-class. Spriti today introduced new capabilities of the FirstSpriti Digital Experience Platform (DXP). These innovations help CMOs challenged with the delivery of omnichannel digital experiences for some of the FirstSpriti Digital Experience Platform powers enterprise-class. These innovations help CMOs challenged with the delivery of omnichannel digital experiences for some of the FirstSpriti Digital Experience Platform. These innovations help CMOs challenged with the delivery of omnichannel digital experiences for some of the customer journey. These innovations help CMOs challenged with the delivery of omnichannel digital experiences for some of the FirstSpriti Digital Experience Platform powers enterprise-class. Helping marketers serve unmatched cross-phase personalized experiences at every step of the FirstSpriti Digital Experience Platform. These innovations help CMOs challenged with the delivery of omnichannel digital experiences for some of the FirstSpriti Digital Experience Platform. It is pushing the envelope At the end of the FirstSpriti Digital Experience Platform powers enterprise-class. Spriti introduced new capabilities to the awards page of the FirstSpriti Digital Experience Platform powers enterprise-class. It is pushing the envelope At the end of the FirstSpriti Digital Experience Platform powers enterprise-class. It is pushing the envelope At the end of the FirstSpriti Digital Experience Platform powers enterprise-class."/> + </insert> + <rollback> + <delete tableName="TASK"> + <where>TASKID = 'b18558aa-6853-446a-940e-d2f100e21c6d'</where> + </delete> + </rollback> + <insert tableName="TASK"> + <column name="TASKID" value="ee6e7a9c-233b-4ddd-a5f2-00163657a2a6"> + <constraints primaryKey="true" primaryKeyName="PK_TASK_TASKID"/> + </column> + <column name="DATE_NEW" valueDate="2018-09-16T09:04:55"> + <constraints nullable="false"/> + </column> + <column name="USER_NEW" value="admin"> + <constraints nullable="false"/> + </column> + <column name="REQUESTOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + <column name="EDITOR_RELATION_ID" value="56e084e2-d68a-4f1e-a1bb-f8d46ad6293d"/> + + <column name="CODE" valueNumeric="10002"/> + <column name="SUBJECT" value="Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris"/> + <column name="STATUS" valueNumeric="1"/> + <column name="PRIORITY" valueNumeric="3"/> + <column name="PROTECTIONLEVEL" valueNumeric="0"/> + <column name="START_DATE" valueDate="2019-01-09T08:00:00"/> + <column name="MATURITY_DATE" valueDate="2019-01-22T19:30:00"/> + <column name="DESCRIPTION" value="Ich bin von je der Ordnung Freund gewesen. Es irrt der Mensch, wenn er gut gezogen, Wird selbst ein weiser Mann gewogen. Ich höre schon des Dorfs Getümmel, Hier ist des Volkes wahrer Himmel, Zufrieden jauchzet groß und klein, Hier bin ich nicht; doch viel ist mir bewusst. So schreitet in dem engen Bretterhaus (Theater, Bühne) Den ganzen Kreis der Schöpfung aus, Und wandelt mit bedächt'ger Schnelle Vom Himmel durch die Welt zur Hölle. Ich bin von je der Ordnung Freund gewesen. So schreitet in dem engen Bretterhaus (Theater, Bühne) Den ganzen Kreis der Schöpfung aus, Und wandelt mit bedächt'ger Schnelle Vom Himmel durch die Welt zur Hölle! Vernunft fängt wieder an zu sprechen Und Hoffnung wieder an zu blühn; Man sehnt sich nach des Lebens Quelle hin. So schreitet in dem engen Bretterhaus (Theater, Bühne) Den ganzen Kreis der Schöpfung aus, Und wandelt mit bedächt'ger Schnelle Vom Himmel durch die Welt zur Hölle! Es irrt der Mensch, wenn er sie beim Kragen hätte. Vernunft fängt wieder an zu sprechen Und Hoffnung wieder an zu sprechen Und Hoffnung wieder an zu sprechen Und Hoffnung wieder an zu blühn; Man sehnt sich nach des Lebens Quelle hin. Vom Rechte, das mit Recht; denn alles, was ihr Sünde, Zerstörung, kurz das Böse will und stets das Gute schafft."/> + </insert> + <rollback> + <delete tableName="TASK"> + <where>TASKID = 'ee6e7a9c-233b-4ddd-a5f2-00163657a2a6'</where> + </delete> + </rollback> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/data_alias/struct/create_task.xml b/others/db_changes/data_alias/struct/create_task.xml new file mode 100644 index 0000000000000000000000000000000000000000..33a67f5b0c71ed9f112b3e31b68b269411a335fe --- /dev/null +++ b/others/db_changes/data_alias/struct/create_task.xml @@ -0,0 +1,32 @@ +<?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="7f9d208b-2375-48e0-a852-26eadfa8238f"> + <createTable tableName="TASK"> + <column name="TASKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_TASK_TASKID"/> + </column> + <column name="USER_NEW" type="NVARCHAR(50)"> + <constraints nullable="false"/> + </column> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + <column name="DATE_NEW" type="TIMESTAMP"> + <constraints nullable="false"/> + </column> + <column name="DATE_EDIT" type="TIMESTAMP"/> + + <column name="CODE" type="INTEGER"> + <constraints nullable="false" unique="true"/> + </column> + <column name="SUBJECT" type="NVARCHAR(254)"/> + <column name="STATUS" type="SMALLINT"/> + <column name="PRIORITY" type="SMALLINT"/> + <column name="REQUESTOR_RELATION_ID" type="CHAR(36)"/> + <column name="EDITOR_RELATION_ID" type="CHAR(36)"/> + <column name="START_DATE" type="TIMESTAMP"/> + <column name="MATURITY_DATE" type="TIMESTAMP"/> + <column name="TYPE" type="SMALLINT"/> + <column name="DESCRIPTION" type="NCLOB"/> + <column name="PROTECTIONLEVEL" type="SMALLINT"/> + </createTable> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/others/db_changes/masterChangelog.xml b/others/db_changes/masterChangelog.xml index d59f8431bbcb23c4314e31f90c58b72b1949e3dc..5615befbc5f6dc50b31fb675231e1610c029d277 100644 --- a/others/db_changes/masterChangelog.xml +++ b/others/db_changes/masterChangelog.xml @@ -25,6 +25,7 @@ <include file="data_alias/struct/create_salesorderitem.xml"/> <include file="data_alias/struct/create_countryinfo.xml"/> <include file="data_alias/struct/create_timetracking.xml"/> + <include file="data_alias/struct/create_task.xml"/> <include file="data_alias/data/example_org/ORG_privat.xml"/> <include file="data_alias/data/example_org/ORG_gfk.xml"/> <include file="data_alias/data/example_org/ORG_mnf.xml"/> @@ -60,4 +61,5 @@ <include file="data_alias/data/example_salesorder/SALESORDER_1003.xml"/> <include file="data_alias/data/example_salesorder/SALESORDER_1004.xml"/> <include file="data_alias/data/countryinfo_full/countryinfo_main.xml"/> + <include file="data_alias/data/example_task/base.xml"/> </databaseChangeLog> diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index 02fb36b1b072da474b245657493dd7e046357874..9f343c7ebcf372ca3007a01e80c696e30e1c8922 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -397,6 +397,33 @@ function KeywordUtils(){ ,_createKeywordEntry("4", translate.text("Lost")) ]); break; + case "TASK.PRIORITY": + valueContainer = _createKeywordEntriesContainer([ + _createKeywordEntry("0", translate.text("{$TASK_PRIORITY_NONE}"), null, {defaultAvatarRepresentation: null}) + ,_createKeywordEntry("1", translate.text("{$TASK_PRIORITY_LOW}"), null, {defaultAvatarRepresentation: "VAADIN:ARROW_DOWN"}) + ,_createKeywordEntry("2", translate.text("{$TASK_PRIORITY_NORMAL}"), null, {defaultAvatarRepresentation: null}) + ,_createKeywordEntry("3", translate.text("{$TASK_PRIORITY_HIGH}"), null, {defaultAvatarRepresentation: "VAADIN:EXCLAMATION"}) + ]); + break; + case "TASK.TYPE": + //even this keyword may look like the same as the "ACTIVITY.CATEGORY" keyword: + //these are *not* categories since task-categories are reservated for future implementation + //the TASK.TYPE is more like an type of source for example + valueContainer = _createKeywordEntriesContainer([ + _createKeywordEntry("0", translate.text("Visit")) + ,_createKeywordEntry("1", translate.text("E-Mail")) + ,_createKeywordEntry("2", translate.text("Phone")) + ,_createKeywordEntry("3", translate.text("Online-Meeting")) + ]); + break; + case "TASK.STATUS": + valueContainer = _createKeywordEntriesContainer([ + _createKeywordEntry("0", translate.text("new")) + ,_createKeywordEntry("1", translate.text("in process")) + ,_createKeywordEntry("2", translate.text("waiting")) + ,_createKeywordEntry("3", translate.text("ended")) + ]); + break; default: throw new Error(translate.withArguments("[%0]the given keyword \"%1\" has no match with the possible keywordlist", [ arguments.callee.name, keywordType diff --git a/process/Pers_lib/process.js b/process/Pers_lib/process.js index 4a825bc3cef5f0caf685b30a6ff24cdf36933535..4f303c61be5c4e4c234a1d17390c989dfc1e56ec 100644 --- a/process/Pers_lib/process.js +++ b/process/Pers_lib/process.js @@ -1,4 +1,6 @@ +import("system.result"); import("Binary_lib"); +import("Sql_lib"); /** * a static Utility class for the Pers context. @@ -42,3 +44,20 @@ PersUtils.removeImage = function(pPersId) { return ImageUtils.remove("PERS", "IMAGE", pPersId); } + +/** + * creates an subSql for resolving a person into one string of text (for example the name of a person) + * useful for example in an displayValue-expression to resolave a references (which is chosen by Lookups) + * does not validate if pRelationIdField exists or is a valid or harmful value + * + * @param {String} pRelationIdField fieldname for the RELATIONID-condition as TABLEALIAS.COLUMNALIAS; e.g. TASK.EDITOR_RELATION_ID + * @return {String} a subsql (without bracets) that can be played within an SQL + */ +PersUtils.getResolvingDisplaySubSql = function(pRelationIdField) +{ + var maskingHelper = new SqlMaskingUtils(); + //TODO: verify if there is a better solution for the usage of this as a displayValueExpression + return "select " + maskingHelper.concat(["PERS.FIRSTNAME", "PERS.LASTNAME"]) + "from PERS \n\ + join RELATION on (PERS.PERSID = RELATION.PERS_ID) \n\ + where RELATION.RELATIONID = " + pRelationIdField; +} \ No newline at end of file diff --git a/process/Relation_lib/process.js b/process/Relation_lib/process.js index 1a1bf02b0b206f203610cc9a2bb2b305950ec881..1fcb6da82b10ccc39eb639eaa3cdaae63236e6bc 100644 --- a/process/Relation_lib/process.js +++ b/process/Relation_lib/process.js @@ -124,7 +124,7 @@ RelationUtils.getContextByPersOrg = function(pPersId, pOrgId) RelationUtils.getContextByRelationId = function(pRelationId) { var relationData = RelationUtils.getPersOrgIds(pRelationId); - return RelationUtils.getContextByPersOrg(relationData[0], relationData[1]) + return RelationUtils.getContextByPersOrg(relationData[1], relationData[2]) } /**