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 @@ ...@@ -114,6 +114,7 @@
<title>Enable relation type 2</title> <title>Enable relation type 2</title>
<contentType>BOOLEAN</contentType> <contentType>BOOLEAN</contentType>
<dropDownProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/dropDownProcess.js</dropDownProcess> <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> <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/valueProcess.js</valueProcess>
</entityField> </entityField>
<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"); ...@@ -4,94 +4,80 @@ import("Sql_lib");
import("system.db"); import("system.db");
import("system.vars"); import("system.vars");
var usageCount = db.cell(SqlCondition.begin() var type1Fields = {};
.andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", "$field.UID") var type2Fields = {};
.andPrepareVars("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE2", "$field.DEST_OBJECTRELATIONTYPEID")
.buildSql("select count(*) from AB_OBJECTRELATION", "1=2"))
if (usageCount <= 0) vars.get("local.changed").forEach(function(pChange)
{ {
var type1Fields = {}; var fieldName = pChange.split(".")[0];
var type2Fields = {};
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]) var updates = [];
{ var type1Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE"))
case "SOURCE": .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "1").build("1=2");
type1Fields[fieldName.replace("SOURCE_", "")] = vars.get("$field." + fieldName); var type2Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE"))
break; .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", "2").build("1=2");
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 = []; for (let field in type1Fields) {
var type1Cond = SqlCondition.begin().andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", vars.get("$field.RELATION_TYPE")) updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type1Fields[field]], type1Cond]);
.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) { var type2Enabled = vars.getString("$field.Type2Enabled_proxy");
updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type1Fields[field]], type1Cond]);
}
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"))
// delete, if type2 is empty -> convert it to a "same"-type || !vars.get("$field.DEST_OBJECT_TYPE") && !vars.get("$field.DEST_RELATION_TITLE")))
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);
{ }
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 else
{ // update if already existing { // insert if it was "same" before
if (vars.get("$field.DIRECTION") != "same") 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"))
for (let field in type2Fields) { {
updates.push(["AB_OBJECTRELATIONTYPE", [field], null, [type2Fields[field]], type2Cond]); db.insertData("AB_OBJECTRELATIONTYPE", [
} "AB_OBJECTRELATIONTYPEID",
} "OBJECT_TYPE",
else "RELATION_TITLE",
{ // insert if it was "same" before "RELATION_TYPE",
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")) "SIDE",
&& vars.get("$field.DEST_OBJECT_TYPE") && vars.get("$field.DEST_RELATION_TITLE")) "HIERARCHY"
{ ], null, [
db.insertData("AB_OBJECTRELATIONTYPE", [ util.getNewUUID(),
"AB_OBJECTRELATIONTYPEID", vars.get("$field.DEST_OBJECT_TYPE"),
"OBJECT_TYPE", vars.get("$field.DEST_RELATION_TITLE"),
"RELATION_TITLE", vars.get("$field.RELATION_TYPE"),
"RELATION_TYPE", 2,
"SIDE", vars.get("$field.HIERARCHY")
"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