Skip to content
Snippets Groups Projects
Commit 766895f7 authored by S.Listl's avatar S.Listl
Browse files

Attribute types MEMO and VOID

parent 9d1adce5
No related branches found
No related tags found
No related merge requests found
Showing
with 176 additions and 131 deletions
......@@ -17,6 +17,24 @@
<column name="ISACTIVE" valueNumeric="1"/>
<column name="ISESSENTIAL" valueNumeric="1"/>
</insert>
<insert tableName="AB_KEYWORD_ENTRY">
<column name="AB_KEYWORD_ENTRYID" value="ee893a1c-d007-46fe-a190-727124c4467b"/>
<column name="KEYID" value="MEMO"/>
<column name="TITLE" value="Memo"/>
<column name="CONTAINER" value="AttributeType"/>
<column name="SORTING" valueNumeric="8"/>
<column name="ISACTIVE" valueNumeric="1"/>
<column name="ISESSENTIAL" valueNumeric="1"/>
</insert>
<insert tableName="AB_KEYWORD_ENTRY">
<column name="AB_KEYWORD_ENTRYID" value="191d7293-3b3f-4dc7-bbe2-9da1a897f7df"/>
<column name="KEYID" value="VOID"/>
<column name="TITLE" value="Void"/>
<column name="CONTAINER" value="AttributeType"/>
<column name="SORTING" valueNumeric="9"/>
<column name="ISACTIVE" valueNumeric="1"/>
<column name="ISESSENTIAL" valueNumeric="1"/>
</insert>
<rollback>
<delete tableName="AB_KEYWORD_ENTRY">
<where>AB_KEYWORD_ENTRYID = ?</where>
......@@ -24,6 +42,18 @@
<param value="9d2f9605-1a5e-47d3-8920-168f5637e37f"/>
</whereParams>
</delete>
<delete tableName="AB_KEYWORD_ENTRY">
<where>AB_KEYWORD_ENTRYID = ?</where>
<whereParams>
<param value="ee893a1c-d007-46fe-a190-727124c4467b"/>
</whereParams>
</delete>
<delete tableName="AB_KEYWORD_ENTRY">
<where>AB_KEYWORD_ENTRYID = ?</where>
<whereParams>
<param value="191d7293-3b3f-4dc7-bbe2-9da1a897f7df"/>
</whereParams>
</delete>
</rollback>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
......@@ -82,8 +82,9 @@
<title>Value</title>
<contentTypeProcess>%aditoprj%/entity/AttributeRelationTree_entity/entityfields/value/contentTypeProcess.js</contentTypeProcess>
<resolution>DAY</resolution>
<mandatory v="true" />
<mandatoryProcess>%aditoprj%/entity/AttributeRelationTree_entity/entityfields/value/mandatoryProcess.js</mandatoryProcess>
<possibleItemsProcess>%aditoprj%/entity/AttributeRelationTree_entity/entityfields/value/possibleItemsProcess.js</possibleItemsProcess>
<stateProcess>%aditoprj%/entity/AttributeRelationTree_entity/entityfields/value/stateProcess.js</stateProcess>
</entityField>
<entityConsumer>
<name>SpecificAttribute</name>
......
import("system.vars");
import("system.result");
import("Attribute_lib");
var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID"));
result.string(AttributeTypeUtil.getContentType(attributeType) != null);
\ No newline at end of file
......@@ -42,5 +42,6 @@ else if (attrType == $AttributeTypes.KEYWORD)
{
return [row[0], translate.text(row[1])];
});
result.object(keywords);
}
\ No newline at end of file
import("system.neon");
import("system.vars");
import("system.result");
import("Attribute_lib");
var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID"));
result.string(AttributeTypeUtil.getContentType(attributeType));
var fieldState;
if (AttributeTypeUtil.getContentType(attributeType) != null)
fieldState = neon.COMPONENTSTATE_EDITABLE;
else
fieldState = neon.COMPONENTSTATE_READONLY;
result.string(fieldState);
\ No newline at end of file
......@@ -8,9 +8,7 @@ var objectType = vars.get("$param.ObjectType_param");
var rowId = vars.get("$param.ObjectRowId_param");
var attributeObj = {};
var allAttributes = [];
var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME, ATTRIBUTE_NAME, ATTRIBUTE_NAME, ATTRIBUTE_NAME, ATTRIBUTE_TYPE from AB_ATTRIBUTE";
var sqlSelect = "select AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, '', '', AB_ATTRIBUTEID, ATTRIBUTE_NAME, ATTRIBUTE_TYPE from AB_ATTRIBUTE";
var attrCond = SqlCondition.begin()
.andPrepare("AB_ATTRIBUTERELATION.OBJECT_ROWID", rowId);
......@@ -19,8 +17,10 @@ if (objectType != null)
var defaultFields = [
"AB_ATTRIBUTERELATIONID",
"AB_ATTRIBUTE_ID",
"AB_ATTRIBUTE.AB_ATTRIBUTEID",
"AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID",
"AB_ATTRIBUTE.ATTRIBUTE_TYPE",
"AB_ATTRIBUTE.ATTRIBUTE_NAME",
"AB_ATTRIBUTE.KEYWORD_CONTAINER",
"COMBOVAL.ATTRIBUTE_NAME"
];
......@@ -33,15 +33,15 @@ var attributeNameMap = {};
var attributeValues = db.table(attributeSql).map(function (row)
{
let attributeId = row[1];
let attributeName = "";
let value = row[AttributeTypeUtil.getTypeColumnIndex(row[2]) + defaultFields.length];
let attributeName = row[4];
let value = row[AttributeTypeUtil.getTypeColumnIndex(row[3]) + defaultFields.length];
let viewValue;
if (row[2].trim() == $AttributeTypes.COMBO)
viewValue = row[4];
if (row[3].trim() == $AttributeTypes.COMBO)
viewValue = row[6];
else
viewValue = AttributeTypeUtil.getAttributeViewValue(row[2].trim(), value, row[3]);
viewValue = AttributeTypeUtil.getAttributeViewValue(row[3].trim(), value, row[5]);
return [row[0], attributeId, value, viewValue, attributeId, attributeName, row[2]];
return [row[0], row[2], value, viewValue, attributeId, attributeName, row[3]];
});
......
......@@ -4,7 +4,6 @@
<title>Attribute Relation</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/AttributeRelation_entity/documentation.adoc</documentation>
<afterOperatingState>%aditoprj%/entity/AttributeRelation_entity/afterOperatingState.js</afterOperatingState>
<recordContainer>db</recordContainer>
<entityFields>
<entityProvider>
......@@ -41,8 +40,10 @@
<title>Value</title>
<contentTypeProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/contentTypeProcess.js</contentTypeProcess>
<resolution>DAY</resolution>
<mandatory v="true" />
<mandatory v="false" />
<mandatoryProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/mandatoryProcess.js</mandatoryProcess>
<possibleItemsProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/possibleItemsProcess.js</possibleItemsProcess>
<stateProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/stateProcess.js</stateProcess>
<valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/valueProcess.js</valueProcess>
<displayValueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/displayValueProcess.js</displayValueProcess>
<onValueChange>%aditoprj%/entity/AttributeRelation_entity/entityfields/valueproxy/onValueChange.js</onValueChange>
......
import("system.vars");
import("system.neon");
if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW)
neon.refresh();
\ No newline at end of file
import("system.vars");
import("system.result");
import("Attribute_lib");
var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID"));
result.string(AttributeTypeUtil.getContentType(attributeType) != null);
\ No newline at end of file
......@@ -9,25 +9,27 @@ attrValue = ProcessHandlingUtils.getOnValidationValue(attrValue);
if (attrValue != null)
{
var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID"));
var attrField = (function ()
var attrField = (function (pType)
{
switch (this)
switch (pType)
{
case $AttributeTypes.TEXT:
case $AttributeTypes.TEXT.toString():
case $AttributeTypes.MEMO.toString():
return "$field.CHAR_VALUE";
case $AttributeTypes.DATE:
case $AttributeTypes.DATE.toString():
return "$field.DATE_VALUE";
case $AttributeTypes.NUMBER:
case $AttributeTypes.NUMBER.toString():
return "$field.NUMBER_VALUE";
case $AttributeTypes.BOOLEAN:
case $AttributeTypes.BOOLEAN.toString():
return "$field.INT_VALUE";
case $AttributeTypes.COMBO:
case $AttributeTypes.KEYWORD:
case $AttributeTypes.COMBO.toString():
case $AttributeTypes.KEYWORD.toString():
return "$field.ID_VALUE";
default:
return null;
}
}).call(attributeType);
}).call(null, attributeType);
if (attrField)
neon.setFieldValue(attrField, attrValue);
}
\ No newline at end of file
import("system.neon");
import("system.vars");
import("system.result");
import("Attribute_lib");
var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID"));
result.string(AttributeTypeUtil.getContentType(attributeType));
var fieldState;
if (AttributeTypeUtil.getContentType(attributeType) != null)
fieldState = neon.COMPONENTSTATE_EDITABLE;
else
fieldState = neon.COMPONENTSTATE_READONLY;
result.string(fieldState);
\ No newline at end of file
import("system.logging");
import("system.neon");
import("system.result");
import("system.vars");
......@@ -9,33 +8,33 @@ if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW)
var rowId = vars.get("$param.ObjectRowId_param");
var objectType = vars.get("$param.ObjectType_param");
var attributeId = vars.get("$field.AB_ATTRIBUTE_ID");
logging.log(AttributeRelationUtils.getAttribute(attributeId, rowId, objectType))
logging.log(AttributeRelationUtils.getAttribute(attributeId, rowId, objectType, true))
var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID"));
var attrField = (function ()
var attrField = (function (type)
{
switch (this)
switch (type)
{
case $AttributeTypes.TEXT:
case $AttributeTypes.TEXT.toString():
case $AttributeTypes.MEMO.toString():
return "$field.CHAR_VALUE";
case $AttributeTypes.DATE:
case $AttributeTypes.DATE.toString():
return "$field.DATE_VALUE";
case $AttributeTypes.NUMBER:
case $AttributeTypes.NUMBER.toString():
return "$field.NUMBER_VALUE";
case $AttributeTypes.BOOLEAN:
case $AttributeTypes.BOOLEAN.toString():
return "$field.INT_VALUE";
case $AttributeTypes.COMBO:
case $AttributeTypes.KEYWORD:
case $AttributeTypes.COMBO.toString():
case $AttributeTypes.KEYWORD.toString():
return "$field.ID_VALUE";
}
}).call(attributeType);
}).call(null, attributeType);
var value = null;
if (attrField != null) //load the value from the correct field for the type
value = vars.get(attrField);
if(value != null && value != "")
result.string(value);
result.string(value);
else if (attributeType == $AttributeTypes.VOID)
result.string("");
}
......@@ -28,11 +28,6 @@
<displayValueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_type/displayValueProcess.js</displayValueProcess>
<onValueChange>%aditoprj%/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js</onValueChange>
</entityField>
<entityField>
<name>AB_ATTRIBUTEID</name>
<searchable v="false" />
<valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/ab_attributeid/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>ATTRIBUTE_PARENT_ID</name>
<title>Superordinate Attribute</title>
......@@ -93,9 +88,6 @@
<name>AttrParentId_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>GetGroups_param</name>
</entityParameter>
</children>
</entityProvider>
<entityParameter>
......@@ -146,14 +138,6 @@
</entityParameter>
</children>
</entityConsumer>
<entityField>
<name>ATTRIBUTE_LEVEL</name>
<title>Level</title>
<description>The level is required in the order-by to make sure that superordinate attributes come before their subordinates for the tree</description>
<contentType>NUMBER</contentType>
<state>INVISIBLE</state>
<valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attribute_level/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>KEYWORD_CONTAINER</name>
<title>Keyword</title>
......@@ -175,7 +159,7 @@
<entityProvider>
<name>SpecificAttribute</name>
<fieldType>DEPENDENCY_IN</fieldType>
<lookupIdfield>AB_ATTRIBUTEID</lookupIdfield>
<lookupIdfield>UID</lookupIdfield>
<dependencies>
<entityDependency>
<name>342e8ba6-db61-411b-9f79-e9271335b00f</name>
......@@ -309,7 +293,6 @@
<onDelete>%aditoprj%/entity/Attribute_entity/recordcontainers/jdito/onDelete.js</onDelete>
<recordFields>
<element>UID.value</element>
<element>AB_ATTRIBUTEID.value</element>
<element>ATTRIBUTE_ACTIVE.value</element>
<element>ATTRIBUTE_NAME.value</element>
<element>ATTRIBUTE_PARENT_ID.value</element>
......
import("system.util");
import("system.db");
import("system.neon");
import("system.vars");
import("Context_lib");
import("Attribute_lib");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW
&& vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE
&& vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param"))
{
var parentId = vars.get("$param.AttrParentId_param");
var attributeId = vars.get("$field.AB_ATTRIBUTEID");
var usageSql = SqlCondition.begin()
.andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", parentId)
.buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE", "1=0");
var usages = db.array(db.COLUMN, usageSql);
//preset the usages with the ones from the parent
usages.forEach(function (usage)
{
neon.addRecord(null, "AttributeUsages", {
"OBJECT_TYPE" : usage
});
});
import("system.util");
import("system.db");
import("system.neon");
import("system.vars");
import("Context_lib");
import("Attribute_lib");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW
&& vars.get("$field.ATTRIBUTE_TYPE").trim() != $AttributeTypes.COMBOVALUE
&& vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param"))
{
var parentId = vars.get("$param.AttrParentId_param");
var attributeId = vars.get("$field.UID");
var usageSql = SqlCondition.begin()
.andPrepare("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", parentId)
.buildSql("select OBJECT_TYPE from AB_ATTRIBUTEUSAGE", "1=0");
var usages = db.array(db.COLUMN, usageSql);
//preset the usages with the ones from the parent
usages.forEach(function (usage)
{
neon.addRecord(null, "AttributeUsages", {
"OBJECT_TYPE" : usage
});
});
}
\ No newline at end of file
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
import("system.db");
import("system.neon");
import("system.result");
import("system.vars");
import("Attribute_lib");
import("Sql_lib");
var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
var state = neon.COMPONENTSTATE_AUTO
if (type == $AttributeTypes.COMBOVALUE)
{
state = neon.COMPONENTSTATE_READONLY;
}
else if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
{
var hasSubordinate = db.cell(SqlCondition.begin()
.andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.AB_ATTRIBUTEID")
.buildSql(
"select exists ("
+ "select SUB.AB_ATTRIBUTEID from AB_ATTRIBUTE SUB "
+ "where SUB.ATTRIBUTE_PARENT_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"
+ ") from AB_ATTRIBUTE", "1=2"
)
) == "true";
if (hasSubordinate)
state = neon.COMPONENTSTATE_READONLY;
}
else if (AttributeUtil.hasRelations(vars.get("$field.AB_ATTRIBUTEID")))
state = neon.COMPONENTSTATE_READONLY;
import("system.db");
import("system.neon");
import("system.result");
import("system.vars");
import("Attribute_lib");
import("Sql_lib");
var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
var state = neon.COMPONENTSTATE_AUTO
if (type == $AttributeTypes.COMBOVALUE)
{
state = neon.COMPONENTSTATE_READONLY;
}
else if (AttributeTypeUtil.isGroupType(type))
{
var hasSubordinate = db.cell(SqlCondition.begin()
.andPrepareVars("AB_ATTRIBUTE.AB_ATTRIBUTEID", "$field.UID")
.buildSql(
"select exists ("
+ "select SUB.AB_ATTRIBUTEID from AB_ATTRIBUTE SUB "
+ "where SUB.ATTRIBUTE_PARENT_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"
+ ") from AB_ATTRIBUTE", "1=2"
)
) == "true";
if (hasSubordinate)
state = neon.COMPONENTSTATE_READONLY;
}
else if (AttributeUtil.hasRelations(vars.get("$field.UID")))
state = neon.COMPONENTSTATE_READONLY;
result.string(state)
\ No newline at end of file
......@@ -8,8 +8,8 @@ if (vars.exists("$local.rows"))
var row = JSON.parse(vars.get("$local.rows"));
var type = row[0].ATTRIBUTE_TYPE.trim();
if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
params["AttrParentId_param"] = row[0].AB_ATTRIBUTEID;
if (AttributeTypeUtil.isGroupType(type))
params["AttrParentId_param"] = row[0].UID;
else if (row[0].ATTRIBUTE_PARENT_ID)
params["AttrParentId_param"] = row[0].ATTRIBUTE_PARENT_ID;
}
......
......@@ -3,5 +3,5 @@ import("system.result");
import("Attribute_lib");
var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
result.string(vars.getString("$field.AB_ATTRIBUTEID"));
if (AttributeTypeUtil.isGroupType(type))
result.string(vars.getString("$field.UID"));
......@@ -4,7 +4,7 @@ import("system.vars");
import("Attribute_lib");
var type = vars.get("$field.ATTRIBUTE_TYPE").trim();
if (type == $AttributeTypes.GROUP || type == $AttributeTypes.COMBO)
if (AttributeTypeUtil.isGroupType(type))
result.string(neon.COMPONENTSTATE_EDITABLE);
else
result.string(neon.COMPONENTSTATE_INVISIBLE);
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.AB_ATTRIBUTEID"));
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.UID"));
\ 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