layui.define(['form'], function (exports) {
|
|
var form = layui.form,
|
$ = layui.jquery,
|
layer = layui.layer,
|
index = 0,
|
oldId,
|
MOD_NAME = 'labelGeneration',
|
formField = {
|
label: {
|
id: '-1',
|
tag: "label",
|
},
|
},
|
labelGeneration = {
|
set: function (options) {
|
var that = this;
|
that.config = $.extend({}
|
, that.config
|
, options);
|
return that;
|
}
|
//事件监听
|
, on: function (events
|
, callback) {
|
return layui.onevent.call(this
|
, MOD_NAME
|
, events
|
, callback);
|
}
|
},
|
Class = function (options) {
|
var that = this;
|
that.config = $.extend({}
|
, that.config
|
, labelGeneration.config
|
, options);
|
that.render();
|
},
|
thisIns = function () {
|
var that = this
|
, options = that.config;
|
return {
|
reload: function (options) {
|
that.reload.call(that
|
, options);
|
}, getOptions: function () {
|
return options || null;
|
}, getData: function () {
|
return options.data || null;
|
}
|
}
|
}
|
|
Class.prototype.config = {
|
version: "1.0.0"
|
, Author: "谁家没一个小强"
|
, generateId: 0
|
, data: []
|
, isEnter: false
|
};
|
|
/* 自动生成ID 当前页面自动排序*/
|
Class.prototype.autoId = function (tag) {
|
var that = this,
|
options = that.config;
|
options.generateId = options.generateId + 1;
|
return tag + '_' + options.generateId;
|
}
|
|
Class.prototype.components = {
|
label: {
|
render: function (json,options) {
|
var _html = '<blockquote class="layui-elem-quote">';
|
_html += '<div class="layui-form layui-form-pane layui-form-item">';
|
_html += '<label class="layui-form-label">输入标签</label>';
|
_html += '<div class="layui-input-inline">';
|
if (options.isEnter) {
|
_html += '<input type="text" id="{0}" placeholder="按回车生成标签" autocomplete="off" class="layui-input">'
|
.format(json.id);
|
} else {
|
_html += '<input type="text" id="{0}" placeholder="通过按钮生成标签" autocomplete="off" class="layui-input">'
|
.format(json.id);
|
}
|
_html += '</div>';
|
if (!options.isEnter) {
|
_html += '<button type="button" id="{0}-button" class="layui-btn layui-btn-normal">确定</button>'.format(json.id);
|
}
|
_html += '<label class="layui-form-label">颜色选择</label>';
|
_html += '<div class="layui-input-inline">';
|
_html += '<select lay-filter="{0}-switchTest">'.format(json.id);
|
_html += '<option value="" selected>墨绿色</option>';
|
_html += '<option value="layui-btn-primary">原始色</option>';
|
_html += '<option value="layui-btn-normal">天蓝色</option>';
|
_html += '<option value="layui-btn-warm">暖黄色</option>';
|
_html += '<option value="layui-btn-danger">红色</option>';
|
_html += '</select>';
|
_html += '</div>';
|
_html += '</div>';
|
_html += '<div id="{0}-content" class="layui-btn-container"></div>'.format(json.id);
|
_html += '</blockquote>';
|
return _html;
|
},
|
update: function (json) {
|
|
},
|
/* 获取对象 */
|
jsonData: function (id, that) {
|
//分配一个新的ID
|
var _json = JSON.parse(JSON.stringify(formField.label));
|
_json.id = id == undefined ? that.autoId(_json.tag) : id;
|
that.checkId(_json,that);
|
return _json;
|
}
|
}
|
};
|
|
/* 判定id是否重复*/
|
Class.prototype.checkId = function (json,that) {
|
if ($("#" + json.id + "-content").length != 0) {
|
json.id = that.autoId(json.tag);
|
that.checkId(json);
|
} else {
|
return;
|
}
|
}
|
|
Class.prototype.bindGridSortEvent = function (json) {
|
var that = this
|
, options = that.config;
|
var formItemSort = Sortable.create(document.getElementById(json.id + "-content"), {
|
group: {
|
name: 'group' + json.id
|
},
|
animation: 1000,
|
onEnd: function (evt) {
|
var _values = $("#" + json.id + "-content").find("div");
|
var ops = [];
|
for (var i = 0; i < _values.length; i++) {
|
ops.push({"ngColor": $(_values[i]).attr("ng-color"), "value": $(_values[i]).text()});
|
}
|
options.data = ops;
|
}
|
});
|
}
|
|
/* 绑定事件*/
|
Class.prototype.deleteValue = function (value, ngValue) {
|
var that = this
|
, options = that.config;
|
for (var i = 0; i < options.data.length; i++) {
|
if (options.data[i].value === value && options.data[i].ngColor === ngValue) {
|
options.data.splice(i, 1);
|
break;
|
}
|
}
|
}
|
|
/* 绑定事件*/
|
Class.prototype.bindPropertyEvent = function (_json) {
|
var that = this
|
, options = that.config;
|
var colorClass = "";
|
if (options.isEnter) {
|
$("#" + _json.id).keypress(function (event) {
|
if (event.which === 13) {
|
var _value = $(this).val();
|
if (_value === "") {
|
layer.msg('标签值不能为空');
|
return;
|
}
|
index = index + 1;
|
var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>'
|
.format(colorClass, _value, _json.id + index, index);
|
$("#" + _json.id + "-content").append(_html);
|
options.data.push({"ngColor": colorClass, "value": _value});
|
$("#" + _json.id + index + " .layui-icon-close").click(function () {
|
that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color"));
|
$(this).parent().remove();
|
});
|
return false;
|
}
|
});
|
} else {
|
$("#" + _json.id + "-button").click(function (event) {
|
var _value = $("#" + _json.id).val();
|
if (_value === "") {
|
layer.msg('标签值不能为空');
|
return;
|
}
|
index = index + 1;
|
var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>'
|
.format(colorClass, _value, _json.id + index, index);
|
$("#" + _json.id + "-content").append(_html);
|
options.data.push({"ngColor": colorClass, "value": _value});
|
$("#" + _json.id + index + " .layui-icon-close").click(function () {
|
that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color"));
|
$(this).parent().remove();
|
});
|
});
|
}
|
|
form.on('select(' + _json.id + '-switchTest)', function (data) {
|
colorClass = data.value;
|
});
|
for (var i = 0; i < options.data.length; i++) {
|
index = index + 1;
|
var _html = '<div class="layui-btn {0} none-transition" id="{2}" ng-index="{3}" ng-color="{0}">{1}<i class="layui-icon layui-icon-close"></i></div>'
|
.format(options.data[i].ngColor, options.data[i].value, _json.id + index, index);
|
$("#" + _json.id + "-content").append(_html);
|
$("#" + _json.id + index + " .layui-icon-close").click(function () {
|
that.deleteValue($(this).parent().text(), $(this).parent().attr("ng-color"));
|
$(this).parent().remove();
|
});
|
}
|
}
|
|
/* 渲染组件 */
|
Class.prototype.renderComponents = function () {
|
var that = this
|
, options = that.config;
|
var elem = $(options.elem);
|
elem.empty();
|
var jsonData = that.components['label'].jsonData(undefined, that);
|
elem.append(that.components['label'].render(jsonData,options));
|
that.bindPropertyEvent(jsonData);
|
that.bindGridSortEvent(jsonData);
|
form.render();
|
}
|
|
Class.prototype.reload = function (options) {
|
var that = this;
|
options = options || {};//如果是空的话,就赋值 {}
|
that.config = $.extend({}
|
, that.config
|
, labelGeneration.config
|
, options);
|
that.render(options);
|
}
|
|
//核心入口 初始化一个 regionSelect 类
|
labelGeneration.render = function (options) {
|
var ins = new Class(options);
|
return thisIns.call(ins);
|
}
|
/**
|
* 渲染组件
|
*/
|
Class.prototype.render = function (options) {
|
var that = this
|
, options = that.config;
|
that.renderComponents();
|
}
|
|
String.prototype.format = function (args) {
|
var result = this;
|
if (arguments.length > 0) {
|
if (arguments.length == 1 && typeof (args) == "object") {
|
for (var key in args) {
|
if (args[key] != undefined) {
|
var reg = new RegExp("({" + key + "})"
|
, "g");
|
result = result.replace(reg
|
, args[key]);
|
}
|
}
|
} else {
|
for (var i = 0; i < arguments.length; i++) {
|
if (arguments[i] != undefined) {
|
var reg = new RegExp("({[" + i + "]})"
|
, "g");
|
result = result.replace(reg
|
, arguments[i]);
|
}
|
}
|
}
|
}
|
return result;
|
}
|
|
exports(MOD_NAME, labelGeneration);
|
});
|