import React, { Component } from 'react';
import { SingleSelectGroupForm } from '@beisen/chaos-ui';
export default class extends Component {
    constructor(props) {
        super(props);
        this.handleChange = this.handleChange.bind(this);
    }

    //是数组切不为空的判断
    isArrayNotEmpty(arr) {
        return arr && Array.isArray && arr.length > 0;
    }
    getSource(datasource, depDataSource) {
        return (
            (depDataSource ? depDataSource.dataSourceResults : datasource) || []
        );
    }
    //处理change变化
    handleChange(checkedValue) {
        const { onChange, cmp_data, onFocus } = this.props;
        const { datasource, depDataSource } = cmp_data;
        let obj = {
            text: '',
            value: ''
        };
        //先判断datasource是否为空
        if (!!depDataSource || this.isArrayNotEmpty(datasource)) {
            //判断是否依赖字段
            let source = this.getSource(datasource, depDataSource);
            source.forEach(item => {
                if (item.value === checkedValue) {
                    obj.text = item.text;
                    obj.value = item.value;
                    return;
                }
            });
        }

        onChange && onChange(obj);
        onFocus && onFocus();
    }

    render() {
        const {
            cmp_data,
            isReadOnly,
            desc,
            required,
            errorMessage,
            value
        } = this.props;
        const { datasource, title, depDataSource } = cmp_data;
        const errorMsg = errorMessage && errorMessage.message;
        const dataResult =
            (!!depDataSource ? depDataSource.dataSourceResults : datasource) ||
            [];
        const TiledProps = {
            required,
            label: title,
            desc,
            readonly: isReadOnly,
            data: dataResult,
            errorMsg,
            checkedValue: value,
            onChange: this.handleChange
        };
        return <SingleSelectGroupForm {...TiledProps} />;
    }
}
