Skip to content
Snippets Groups Projects
onValueChange.js 3.79 KiB
Newer Older
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"])
    {
        let arrayAtPosition = _checkIfInAttributeArray(ClassificationUtils.getEntityAttributes(objectType), field)["attributeArrayAtPosition"];
        neon.setFieldValue("$field.INDICATORTYPE", $ClassificationIndicatorTypes.ATTRIBUTE());
        if ((arrayAtPosition["contentType"] == AttributeTypes.TEXT() && arrayAtPosition["hasDropDownValues"] === true)
                || attributeArray[position]["contentType"] == AttributeTypes.BOOLEAN()
                || attributeArray[position]["contentType"] == AttributeTypes.COMBO()
                || attributeArray[position]["contentType"] == AttributeTypes.KEYWORD())
        {
            neon.setFieldValue("$field.FIELDTYPE", $ClassificationFieldTypes.DROPDOWN());
        }
        else if (arrayAtPosition["contentType"] == AttributeTypes.NUMBER())
        {
            neon.setFieldValue("$field.FIELDTYPE", $ClassificationFieldTypes.NUMBER());
        }
        else if (arrayAtPosition["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()
                            });
    }
}