import("ClassificationComplexIndicatorRegistry_basic"); import("ClassificationIndicatorFieldRegistry_basic"); import("Attribute_lib"); import("Classification_lib"); import("system.neon"); import("system.vars"); //We have different fieldTypes and indicatorTypes, depending on the field. //So we have to determine the correct ones everytime the field changes. if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") && vars.get("$field.OBJECT_TYPE")) { var field = vars.get("$this.value"); var objectType = vars.get("$field.OBJECT_TYPE"); //helper function to check if the pString is included in pArray function _checkIfInArrays(pArray, pString) { var inArray = false; inArray = pArray.some(function (attr){ if (attr.includes(pString)) { return true; } else { return false; } }); return inArray; } //helper function to check if the pString is included in pArray function _checkIfInAttributeArray (pArray, pString) { for (var i = 0; i < pArray.length; i++) { if (pArray[i]["name"] == pString) { return {"inArray": true , "attributeArrayAtPosition": pArray[i]}; } } return {"inArray": false , "attributeArrayAtPosition": null}; } var position; var attributeArray; if (_checkIfInArrays($ClassificationIndicatorRegistry.getEntityNumberFields(objectType), field)) { neon.setFieldValues({ "$field.FIELDTYPE": $ClassificationFieldTypes.NUMBER(), "$field.INDICATORTYPE": $ClassificationIndicatorTypes.ENTITYFIELD() }); } else if (_checkIfInArrays($ClassificationIndicatorRegistry.getEntityDropDownFields(objectType), field)) { neon.setFieldValues({ "$field.FIELDTYPE": $ClassificationFieldTypes.DROPDOWN(), "$field.INDICATORTYPE": $ClassificationIndicatorTypes.ENTITYFIELD() }); } else if (_checkIfInAttributeArray(ClassificationUtils.getEntityAttributes(objectType), field)["inArray"]) { var attribute = _checkIfInAttributeArray(ClassificationUtils.getEntityAttributes(objectType), field)["attributeArrayAtPosition"]; neon.setFieldValue("$field.INDICATORTYPE", $ClassificationIndicatorTypes.ATTRIBUTE()); if ((attribute["contentType"] == AttributeTypes.TEXT() && attribute["hasDropDownValues"] === true) || attribute["contentType"] == AttributeTypes.BOOLEAN() || attribute["contentType"] == AttributeTypes.COMBO() || attribute["contentType"] == AttributeTypes.KEYWORD()) { neon.setFieldValue("$field.FIELDTYPE", $ClassificationFieldTypes.DROPDOWN()); } else if (attribute["contentType"] == AttributeTypes.NUMBER()) { neon.setFieldValue("$field.FIELDTYPE", $ClassificationFieldTypes.NUMBER()); } else if (attribute["contentType"] == AttributeTypes.INTEGER()) { neon.setFieldValue("$field.FIELDTYPE", $ClassificationFieldTypes.INTEGER()); } } else if (_checkIfInArrays(ClassificationComplexIndicatorRegistryUtils.getComplexIndicatorArray(objectType), field)) { neon.setFieldValues({ "$field.FIELDTYPE": $ClassificationComplexIndicatorRegistry[field]()["type"], "$field.INDICATORTYPE": $ClassificationIndicatorTypes.COMPLEX() }); } }