Skip to content
Snippets Groups Projects
Commit c8d60e84 authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

fix objectrelation: edit of relations in use

parent 57c2ec74
No related branches found
No related tags found
No related merge requests found
......@@ -114,6 +114,7 @@
<title>Enable relation type 2</title>
<contentType>BOOLEAN</contentType>
<dropDownProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/dropDownProcess.js</dropDownProcess>
<stateProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/stateProcess.js</stateProcess>
<valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/valueProcess.js</valueProcess>
</entityField>
<entityField>
......
import("system.vars");
import("system.result");
import("system.neon");
if (vars.getString("$param.UsageCount_param") > 0)
{
result.string(neon.COMPONENTSTATE_DISABLED);
}
else
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
......@@ -4,94 +4,80 @@ import("Sql_lib");
import("system.db");
import("system.vars");
var usageCount = db.cell(SqlCondition.begin()
.andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", "$field.UID")
.andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", "$field.DEST_OBJECTRELATIONTYPEID")
.buildSql("select count(*) from AB_OBJECTRELATION", "1=2"))
var type1Fields = {};
var type2Fields = {};
if (usageCount <= 0)
vars.get("local.changed").forEach(function(pChange)
{
var type1Fields = {};
var type2Fields = {};
var fieldName = pChange.split(".")[0];
vars.get("local.changed").forEach(function(pChange)
switch (pChange.split("_")[0])
{
var fieldName = pChange.split(".")[0];
case "SOURCE":
type1Fields[fieldName.replace("SOURCE_", "")] = vars.get("$field." + fieldName);
break;
case "DEST":
type2Fields[fieldName.replace("DEST_", "")] = vars.get("$field." + fieldName);
break;
case "Type2Enabled":
break;
case "ICON":
type1Fields[fieldName] = vars.get("$field." + fieldName);
default:
type1Fields[fieldName] = vars.get("$field." + fieldName);
type2Fields[fieldName] = vars.get("$field." + fieldName);
}
});
switch (pChange.split("_")[0])
{
case "SOURCE":
type1Fields[fieldName.replace("SOURCE_", "")] = vars.get("$field." + fieldName);
break;
case "DEST":
type2Fields[fieldName.replace("DEST_", "")] = vars.get("$field." + fieldName);
break;
case "Type2Enabled":
break;
case "ICON":
type1Fields[fieldName] = vars.get("$field." + fieldName);
default:
type1Fields[fieldName] = vars.get("$field." + fieldName);
type2Fields[fieldName] = vars.get("$field." + fieldName);
}
});
var updates = [];
var type1Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE"))
.andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "1").build("1=2");
var type2Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE"))
.andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "2").build("1=2");
var updates = [];
var type1Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE"))
.andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "1").build("1=2");
var type2Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE"))
.andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "2").build("1=2");
for (let field in type1Fields) {
updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type1Fields[field]], type1Cond]);
}
for (let field in type1Fields) {
updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type1Fields[field]], type1Cond]);
}
var type2Enabled = vars.getString("$field.Type2Enabled_proxy");
var type2Enabled = vars.getString("$field.Type2Enabled_proxy");
// delete, if type2 is empty -> convert it to a "same"-type
if (type2Enabled == "0" || ((vars.get("$field.SOURCE_RELATION_TITLE") == vars.get("$field.DEST_RELATION_TITLE") && vars.get("$field.SOURCE_OBJECT_TYPE") == vars.get("$field.DEST_OBJECT_TYPE"))
|| !vars.get("$field.DEST_OBJECT_TYPE") && !vars.get("$field.DEST_RELATION_TITLE")))
{
db.deleteData("AB_OBJECTRELATIONTYPE", type2Cond);
// delete, if type2 is empty -> convert it to a "same"-type
if (type2Enabled == "0" || ((vars.get("$field.SOURCE_RELATION_TITLE") == vars.get("$field.DEST_RELATION_TITLE") && vars.get("$field.SOURCE_OBJECT_TYPE") == vars.get("$field.DEST_OBJECT_TYPE"))
|| !vars.get("$field.DEST_OBJECT_TYPE") && !vars.get("$field.DEST_RELATION_TITLE")))
{
db.deleteData("AB_OBJECTRELATIONTYPE", type2Cond);
}
else
{ // update if already existing
if (vars.get("$field.DIRECTION") != "same")
{
for (let field in type2Fields) {
updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type2Fields[field]], type2Cond]);
}
}
else
{ // update if already existing
if (vars.get("$field.DIRECTION") != "same")
{
for (let field in type2Fields) {
updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type2Fields[field]], type2Cond]);
}
}
else
{ // insert if it was "same" before
if ((vars.get("$field.SOURCE_RELATION_TITLE") != vars.get("$field.DEST_RELATION_TITLE") || vars.get("$field.SOURCE_OBJECT_TYPE") != vars.get("$field.DEST_OBJECT_TYPE"))
&& vars.get("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_RELATION_TITLE"))
{
db.insertData("AB_OBJECTRELATIONTYPE", [
"AB_OBJECTRELATIONTYPEID",
"OBJECT_TYPE",
"RELATION_TITLE",
"RELATION_TYPE",
"SIDE",
"HIERARCHY"
], null, [
util.getNewUUID(),
vars.get("$field.DEST_OBJECT_TYPE"),
vars.get("$field.DEST_RELATION_TITLE"),
vars.get("$field.RELATION_TYPE"),
2,
vars.get("$field.HIERARCHY")
]);
{ // insert if it was "same" before
if ((vars.get("$field.SOURCE_RELATION_TITLE") != vars.get("$field.DEST_RELATION_TITLE") || vars.get("$field.SOURCE_OBJECT_TYPE") != vars.get("$field.DEST_OBJECT_TYPE"))
&& vars.get("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_RELATION_TITLE"))
{
db.insertData("AB_OBJECTRELATIONTYPE", [
"AB_OBJECTRELATIONTYPEID",
"OBJECT_TYPE",
"RELATION_TITLE",
"RELATION_TYPE",
"SIDE",
"HIERARCHY"
], null, [
util.getNewUUID(),
vars.get("$field.DEST_OBJECT_TYPE"),
vars.get("$field.DEST_RELATION_TITLE"),
vars.get("$field.RELATION_TYPE"),
2,
vars.get("$field.HIERARCHY")
]);
}
}
}
db.updates(updates);
}
else
{
// TODO: Show message hier nicht möglich: mit Grant-Prozess ausführung komplett verhindern, wenn es diese gibt.
//question.showMessage(translate.withArguments("There are still %0 relations using the type %1.", [usageCount, translate.text(vars.get("$field.SOURCE_RELATION_TITLE")) + " -> " + translate.text(vars.get("$field.DEST_RELATION_TITLE"))]), question.WARNING, translate.text("Cannot remove relation type"))
}
db.updates(updates);
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