Source: control/GridToolBar.js

/**
 * Created by seeker910 on 2017/7/11.
 *
 * @description
 */
Rsd.define('Rsd.control.GridToolBar', {
    extend: 'Rsd.container.Component',
    requires:[
        'Rsd.form.Button',
        'Rsd.form.Text',
        'Rsd.form.ComboBox'
    ],
    xtype:'grid-tool-bar',
    layout:{type:'hbox',align:'left'},
    bodyStyle:{display:"flex"},
    //margin: '5 5 5 0',
    height: 'auto',
    header:{visible:false}, 
    items:[],
    
    /**
    * */
    constructor: function GridToolBar(config) {
        this.header.visible = false;
        config = config || {};
        this.apply(config);
    },
     
    /**
     *@description 设置查询字段
     * */
    setSearchColumns:function () {

        var me = this;
        var columns = me.searchColumns||[];
        if(Rsd.isArray(columns))
        {
            setTimeout(function () {
                me.body.element.style.visibility = 'hidden';
                for(var i in columns)
                {
                    var _c = columns[i]; 
                    _c.xtype = _c.xtype ||'text';
                    if(Rsd.isEmpty(_c.label)||Rsd.isString(_c.label))
                    { 
                        _c.label = {content:_c.label || _c.text,height:30}; 
                    } 
                    _c.dataIndex = _c.dataIndex||_c.name;
                    _c.name = _c.name || _c.dataIndex ;
                    _c.height= _c.height||30;
                    _c.margin = _c.margin || "0 0 0 20";

                    me.insertItem(i,_c); 

                }
                setTimeout(function () {
                    me.body.element.style.visibility = 'visible';
                },50);

            },0);
        }

    },

    /**
     * @description 设置添加到按钮
     * */
    setNewButtons:function () {

        var me = this;
        var _buttons = this.newButtons||[];
        for (var i in _buttons) {
            var _btn = _buttons[i];
            var _item = {
                xtype: 'button',
                text:  '---',
                align: 'left',
                style: {display: _btn.hasOwnProperty('visible')?(_btn.visible ? 'display' : 'none'):'display'},
                margin:'2 10 2 10',
                height:35,
                width: 120,
                index: i,
                handler: function () {
                    me.funApplyByIOC(_buttons[this.index].handler,arguments);
                }
            };
            this.add(Rsd.apply(_item,_btn));

        }
    },
    /**
    * @param ignoreNone 忽略op=='none'的条件
    * */
    getWhere:function getWhere(ignoreNone){

        //debugger;
        var _c =[];
        var _default = this;
        for(var i in this.searchColumns){

            var _item = this.searchColumns[i];
            var _name = _item.name||_item.dataIndex||_item.dataindex||_item.id||_item.key;
            var _ctrl = _default.getItemByName(_name);
            if(_ctrl == null)
            {
                console.error('筛选条件,未找到'+_name+'控件');
                continue;
            }
            var _value = _ctrl.getValue();
            if ( Rsd.isEmpty(_value)) {
                continue;
            }
            if(Rsd.isArray(_value))
            {
                var _str = '';
                for(var i in _value)
                { 
                    _str += (_value[i]['value']+',')
                }
                _value = _str;
            }

            if(Rsd.isString(_value))
            {
                _value = _value.trim();
            }
            
            var _op =  _item.op;
            if(ignoreNone==true && _op == 'none')
            {
                continue;
            }
            if (Rsd.isEmpty(_item.op) ) {

                _op =  'like';
            }
            if(_value.lastIndexOf(',')>0)
            {
                _value = _value.split(',');
            }
            if( _op == 'like')
            {
                if(Rsd.isArray(_value))
                {
                    var _temp = [];
                    for(var i in _value)
                    {
                        var v = _value[i];
                        if(Rsd.isEmpty(v))
                        {
                            continue;
                        }
                        _temp.push('%25' + v.trim() + '%25');
                    }
                    _value = _temp;
                }
                else
                {
                    _value = '%25' + _value.trim() + '%25';
                }

            }

            if(_ctrl instanceof Rsd.form.CheckBox )
            {
                if(!_ctrl.isChecked())
                {
                    continue;
                }
            }


            var _dataIndex = _item.dataIndex || _item.name ||_item.id || _item.key;
            if (Rsd.isArray(_dataIndex))
            {
                for(var i in _dataIndex)
                {
                    if(Rsd.isEmpty(_dataIndex[i]))
                    {
                        continue;
                    }
                    _c.push({group:_item.group||_item.name||'defualt',name:_dataIndex[i],value:_value,op:_op,logic:(i==0)?'none':'or'});
                }
            }
            else
            {
                if (_op.toLowerCase() == 'isnull' || _op.toLowerCase()  == 'isnotnull' ) {

                    _c.push({name:_dataIndex,op:_op});
                }
                else
                {
                    _c.push({name:_dataIndex,value:_value + '',op:_op});
                }


            }
        } 

        return _c;

    }

},function (type) {
    //
    var _newButtonsGetter = function () {

        return this.__newButtons;
    };

    var _newButtonsSetter = function (value) {
        this.__newButtons = value;
        this.setNewButtons();

    }

    this.defineProperty(type,"newButtons", _newButtonsGetter, _newButtonsSetter,true);
    //
    var _searchColumnsGetter = function () {

        return this.__searchColumns;
    };

    var _searchColumnsSetter = function (value) {
        this.__searchColumns = value; 
        this.setSearchColumns();
    }

    this.defineProperty(type,"searchColumns", _searchColumnsGetter, _searchColumnsSetter,true);

});