layui.define(['jquery', 'formUtils', 'formField'], function (exports) {
    var $ = layui.jquery;
    var utils = layui.formUtils;
    var formField = layui.formField;

    var grid = {
        /**
         * 根据json对象生成html对象
         * @param {object} json
         * @param {boolean} selected true 表示选择当前
         * */
        render: function (json, selected) {
            if (selected === undefined) {
                selected = false;
            }
            var _html = '<div id="{0}Box" class="layui-form-item layui-row grid {2}" data-id="{0}" data-tag="{1}" data-index="{3}">'.format(json.id, json.tag, selected ? 'active' : '', json.index);

            var colClass = 'layui-col-md6 layui-col-xs6';
            if (json.columns.length == 3) {
                colClass = 'layui-col-md4 layui-col-xs4';
            } else if (json.columns.length == 4) {
                colClass = 'layui-col-md3 layui-col-xs3';
            } else if (json.columns.length == 6) {
                colClass = 'layui-col-md2 layui-col-xs2';
            }
            for (var i = 0; i < json.columns.length; i++) {
                _html += '<div id="{3}_column_{0}" class="{2} widget-col-list column{0}" data-index="{0}" data-parentindex="{1}">'.format(i, json.index, colClass, json.id);
                //some html
                _html += '</div>';
            }
            _html += '</div>';
            return _html;
        },
        /* 获取对象 */
        jsonData: function (id, index, columncount) {
            //分配一个新的ID 默认是一个一行两列的布局对象
            var _json = JSON.parse(JSON.stringify(formField.grid));
            _json.id = id == undefined ? utils.autoId(_json.tag) : id;
            _json.index = index;
            if (columncount > 2) {
                var _col = {
                    span: 12,
                    list: [],
                };
                for (var i = _json.columns.length; i < columncount; i++) {
                    _json.columns.splice(i, 0, _col);
                }
            }
            return _json;
        },
        /* 根据 json 对象显示对应的属性 */
        property: function (json) {
            $('#columnProperty').empty();
            var _html = '';
            _html = utils.renderCommonProperty(json); //获取通用属性HTML字符串
            //处理特殊字符串
            for (var key in json) {
                if (key === 'index') {
                    continue;
                }
            }
            $('#columnProperty').append(_html);
            //如果存在 option 那么向 .option .layui-inline 添加drag事件并且必须设在 select-option-drag 中才能拖动
        }
    };

    exports('grid', grid);
});