var JV = require('./jpc_value_define');
var JpcField = {
    createNew: function(rptTpl) {
        var JpcFieldResult = {};
        var me = this;
        JpcFieldResult[JV.NODE_DISCRETE_FIELDS] = {};
        if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS]) {
            for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS].length; i++) {
                me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DISCRETE_FIELDS][i], JpcFieldResult[JV.NODE_DISCRETE_FIELDS], rptTpl, JV.DATA_DISCRETE_DATA, i);
            }
        }
        JpcFieldResult[JV.NODE_MASTER_FIELDS] = {};
        if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS]) {
            for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS].length; i++) {
                me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_MASTER_FIELDS][i], JpcFieldResult[JV.NODE_MASTER_FIELDS], rptTpl, JV.DATA_MASTER_DATA, i);
            }
        }
        JpcFieldResult[JV.NODE_DETAIL_FIELDS] = {};
        if (rptTpl[JV.NODE_FIELD_MAP] && rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS]) {
            for (var i = 0; i < rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS].length; i++) {
                me.createSingle(rptTpl[JV.NODE_FIELD_MAP][JV.NODE_DETAIL_FIELDS][i], JpcFieldResult[JV.NODE_DETAIL_FIELDS], rptTpl, JV.DATA_DETAIL_DATA, i);
            }
        }
        JpcFieldResult[JV.NODE_NO_MAPPING_FIELDS] = {};
        if (rptTpl[JV.NODE_NO_MAPPING_FIELDS]) {
            for (var i = 0; i < rptTpl[JV.NODE_NO_MAPPING_FIELDS].length; i++) {
                me.createSingle(rptTpl[JV.NODE_NO_MAPPING_FIELDS][i], JpcFieldResult[JV.NODE_NO_MAPPING_FIELDS], rptTpl, "NA", JV.BLANK_FIELD_INDEX);
            }
        }
        //
        return JpcFieldResult;
    },
    createSingle: function(fieldNode, parentObj, rptTpl, dataNodeName, sequence) {
        var me = this;
        if (fieldNode && fieldNode[JV.PROP_ID]) {
            var item = {};
            item[JV.PROP_ID] = fieldNode[JV.PROP_ID];
            item[JV.PROP_NAME] = fieldNode[JV.PROP_NAME];
            item[JV.PROP_DATA_TYPE] = fieldNode[JV.PROP_DATA_TYPE];
            item.DataNodeName = dataNodeName;
            item.DataSeq = sequence;
            parentObj[JV.PROP_ID + "_" + fieldNode[JV.PROP_ID]] = item;
        }
    }
}

module.exports = JpcField;