$(function() {

	// base init
	$(".select2").select2();
	$(".select2_tag").select2({tags: true});

	/**
	 * 请求参数，新增一行
	 */
	$('#queryParams_add').click(function () {
		var html = $('#queryParams_example').html();
		$('#queryParams_parent').append(html);

		$("#queryParams_parent .select2_tag_new").each(function () {
			var $select2 = $(this);
			$($select2).removeClass('select2_tag_new');
			$($select2).addClass('select2_tag');

			if ($select2.hasClass("fieldDatatypeId")) {
				// 数据类型 ajax 加载
				$($select2).select2({
					ajax: {
						type:'GET',
						url: base_url + "/datatype/pageList",
						dataType: 'json',
						delay: 250,
						data: function (params) {
							return {
								bizId: -1,
								start:0,
								length:100,
								name: params.term, // search term
								page: params.page
							};
						},
						processResults: function (data, params) {
							params.page = params.page || 1;

							var itemList = [];//当数据对象不是{id:0,text:'ANTS'}这种形式的时候，可以使用类似此方法创建新的数组对象
							var arr = data.data;
							for(i in arr){
								itemList.push({id: arr[i].id, text: arr[i].name})
							}
							return {
								results: itemList,	//data.items
								pagination: {
									more: (params.page * 30) < data.total_count
								}
							};
						},
						cache: true
					},
					placeholder:'请选择数据类型',//默认文字提示
					language: "zh-CN",
					tags: false,//允许手动添加
					allowClear: true,//允许清空
					escapeMarkup: function (markup) { return markup; }, // 自定义格式化防止xss注入
					minimumInputLength: 1,//最少输入多少个字符后开始查询
					formatResult: function formatRepo(repo){return repo.text;}, // 函数用来渲染结果
					formatSelection: function formatRepoSelection(repo){return repo.text;} // 函数用于呈现当前的选择
				});
			} else {
				$($select2).select2();
			}

		});
	});
	/**
	 * 请求参数，删除一行
	 */
	$('#queryParams_parent').on('click', '.delete',function () {
		$(this).parents('.queryParams_item').remove();
	});

	// jquery.validate 自定义校验 “长度1-100位的大小写字母、数字”
	jQuery.validator.addMethod("dataTypeName", function(value, element) {
		var length = value.length;
		var valid = /^[a-zA-Z0-9]{1,100}$/;
		return this.optional(element) || valid.test(value);
	}, "正确格式为：长度1-100位的大小写字母和数字组成");

	/**
	 * 保存接口
	 */
	var addModalValidate = $("#datatypeForm").validate({
		errorElement : 'span',
		errorClass : 'help-block',
		focusInvalid : true,
		rules : {
			name : {
				required : true,
				maxlength: 100,
				dataTypeName:true
			},
			about : {
				required : true,
				maxlength: 200
			}
		},
		messages : {
			name : {
				required :"请输入数据类型名称",
				maxlength: "长度不可多余100"
			},
			about : {
				required :"请输入数据类型描述",
				maxlength: "长度不可多余200"
			}
		},
		highlight : function(element) {
			$(element).closest('.form-group').addClass('has-error');
		},
		success : function(label) {
			label.closest('.form-group').removeClass('has-error');
			label.remove();
		},
		errorPlacement : function(error, element) {
			element.parent('div').append(error);
		},
		submitHandler : function(form) {

			// query params
			var ifError;
			var queryParamList = new Array();
			if ($('#queryParams_parent').find('.queryParams_item').length > 0) {
				$('#queryParams_parent').find('.queryParams_item').each(function () {
					var fieldName = $(this).find('.fieldName').val();
					var fieldAbout = $(this).find('.fieldAbout').val();
					var fieldDatatypeId = $(this).find('.fieldDatatypeId').val();
					var fieldType = $(this).find('.fieldType').val();

					// valid
					if (!fieldName) {
						ifError = true;
                        layer.open({
                            icon: '2',
                            content: '字段名称不可为空'
                        });
						return;
					}
					if (!fieldAbout) {
						ifError = true;
                        layer.open({
                            icon: '2',
                            content: '字段描述不可为空'
                        });
						return;
					}
					if (!fieldDatatypeId) {
						ifError = true;
                        layer.open({
                            icon: '2',
                            content: '字段数据类型不可为空'
                        });
						return;
					}

					queryParamList.push({
						'fieldName':fieldName,
						'fieldAbout':fieldAbout,
						'fieldDatatypeId':fieldDatatypeId,
						'fieldType':fieldType
					});

				});
			}
			var fieldTypeJson = JSON.stringify(queryParamList);
			if (ifError) return;

			// final params
			var data = {
				"bizId": $("#datatypeForm select[name=bizId]").val(),
				"name": $("#datatypeForm input[name=name]").val(),
				"about": $("#datatypeForm input[name=about]").val(),
				"fieldTypeJson":fieldTypeJson
			}

			$.post(base_url + "/datatype/addDataType", data, function(data, status) {
				if (data.code == "200") {
					$('#addModal').modal('hide');
					setTimeout(function () {
                        layer.open({
                            icon: '1',
                            content: "新增成功" ,
                            end: function(layero, index){
                                window.location.href  = base_url + '/datatype/dataTypeDetail?dataTypeId=' + data.content;
                            }
                        });
					}, 315);
				} else {
                    layer.open({
                        icon: '2',
                        content: (data.msg||'新增失败')
                    });
				}
			});
		}
	});


});
