diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod index 6a063fff6d8fbac0eac4b1b9f3ab4191700793b1..fb534bb2230cbabc8c0b07a686721ce633bddd47 100644 --- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod +++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod @@ -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> diff --git a/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/stateProcess.js b/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6433e03a88183a5ff939685851cbf58ca0009af4 --- /dev/null +++ b/entity/ObjectRelationType_entity/entityfields/type2enabled_proxy/stateProcess.js @@ -0,0 +1,12 @@ +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 diff --git a/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js b/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js index 7525fe76f2df12e405ead17d477fdfce4b3062cc..7aa7d08ec6109e974c25affc8bbce14a74cc0f2c 100644 --- a/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/ObjectRelationType_entity/recordcontainers/jdito/onUpdate.js @@ -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);