<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags"%>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<%@ taglib prefix="tags" tagdir="/WEB-INF/tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<title>全网监控智能分析平台</title>
<style>
.table-null .table{
	margin-bottom: 0px;
}
.table-null .table > tbody > tr > td, .table-null .table > thead > tr > th{
	text-align: center;
 	width: 25%;
}
.table-null td:first-child{	
 	text-align: right;
 	width: 36%;
}
.table-null tr td:last-child .form-control,.table-null tr td:last-child table{
	width: 400px;
}

</style>
<script type="text/javascript" src="${ctx}/static/js/validation.js"></script>
<script language="javascript" type="text/javascript">
var sandboxOptions = new Array();
var recoverOptions = new Array();
var dataModelOptions = new Array();

var minuteOption = new Array();
var hourOption = new Array();
var dayOption = new Array();
var monthOption = new Array();
var provinceOptions = new Array();
var datasourceOptions = new Array();
var channelOptions = new Array();
var businessOptions = new Array();
var kpiOptions = new Array();

	$(document).ready(function() {
		changeInputStatus('parallelFlg', 'parallelNums');
		changeInputStatus('sendmailFlg', 'mailAddress');
		 <c:forEach items="${sanboxList}" var="taskDetail">
			var option = new Option('${taskDetail.name}','${taskDetail.taskInfoId}');
			sandboxOptions.push(option);
		</c:forEach>
		
		<c:forEach items="${recoverList}" var="taskDetail">
			var option = new Option('${taskDetail.name}','${taskDetail.taskInfoId}');
			recoverOptions.push(option);
		</c:forEach> 
		
		<c:forEach items="${dataModelList}" var="dataModel">
			<c:if test="${dataModel.modelStatus != 0}">
				var option = new Option('${dataModel.dataModelName}','${dataModel.dataModelId}');
				dataModelOptions.push(option);
			</c:if>
		</c:forEach>
        $('#modelId').append(dataModelOptions);

        <c:forEach items="${provinceList}" var="province">
			var option = new Option('${province.provinceName}','${province.provinceId}');
        	provinceOptions.push(option);
        </c:forEach>
        $('#provinceId').append(provinceOptions);

        <c:forEach items="${datasourceList}" var="datasource" varStatus="status">
			var option = new Option('${datasource.dataSourceName}','${datasource.dataSourceId}');
			datasourceOptions.push(option);
			<c:if test ="${status.first}">
				<c:forEach items="${channelDataSourceMapList}" var="channelDataSourceMap" >
					<c:if test ="${channelDataSourceMap.dataSourceId == datasource.dataSourceId}">
						var channelName = "";
						<c:forEach items="${channelList}" var="channel" varStatus="channelStatus">
							<c:if test="${channel.channelId == channelDataSourceMap.channelId}" >
								var channelOption = new Option('${channel.channelName}','${channel.channelId}');
								channelOptions.push(channelOption);
							</c:if>

						</c:forEach>

					</c:if>
				</c:forEach>
			</c:if>
		</c:forEach>
        $('#datasourceViewId').append(datasourceOptions);
        $('#channelId').append(channelOptions);

		function changeBusinessData(){
            $('#businessId').empty();
            businessOptions=[];
            <c:forEach items="${channelDataSourceMapList}" var="channelDataSourceMap">
				if('${channelDataSourceMap.channelId}' == $("#channelId").val() && '${channelDataSourceMap.dataSourceId}' == $("#datasourceViewId").val()){
					<c:forEach items="${businessList}" var="business">
						<c:if test="${business.channelDataSourceMapId == channelDataSourceMap.channelDataSourceMapId && business.isActive =='Y' }">
							var option = new Option('${business.businessName}','${business.businessId}');
							businessOptions.push(option);
						</c:if>
					</c:forEach>
				}
            </c:forEach>

            $('#businessId').append(businessOptions);
        }
        changeBusinessData();
        function changeKPIData(){
           	var businessId =  $("#businessId").val();

            $.ajax({
                type : 'GET',
                contentType : 'application/json',
                url: "${ctx}/BaseManage/TaskManage/findKpiByBusiness?businessId="+businessId,
                dataType : 'text',
                beforeSend: function(data) {},
                success: function(data) {
                    $('#KPIViewId').empty();
                    data = JSON.parse(data);
                    data.forEach(function(t){
                        var option = new Option(t.name,t.kpiId);
                        $('#KPIViewId').append(option);
                    })
                }
            });

        }
        changeKPIData();
		<c:forEach items="${dataModelParameterList}" var="dataModelParameter">
			var tr = "<tr id='${dataModelParameter.parameterId}'><td>${dataModelParameter.parameterName}</td><td><input type='text' class='parameterValue' name='parameterValue' value='${dataModelParameter.parameterValue}'/></td><td>${dataModelParameter.parameterDataType}</td></tr>";
			$('#addTr').append(tr);
		</c:forEach>
		changeTaskType();
		$('#modelId').val('${runTask.dataModelView.dataModelId}');
		$('#detailSelect').val('${runTask.taskDetail.taskInfoId}');
		
		for(var i=1;i<=60;i++) {
			var option = new Option(i,i);
			minuteOption.push(option);
		}
		
		for(var i=1;i<=12;i++) {
			var option = new Option(i,i);
			hourOption.push(option);
		}
		
		for(var i=1;i<=31;i++) {
			var option = new Option(i,i);
			dayOption.push(option);
		}
		
		for(var i=1;i<=12;i++) {
			var option = new Option(i,i);
			monthOption.push(option);
		}
		changeFrequencyType();
		if($('#frequencyValueHidden').val()) {
			$('#frequencyValue').val($('#frequencyValueHidden').val());
		}

        $('#modelId').change(function(){
            var modelId = $('#modelId').val();
            $.ajax({
                type : 'GET',
                contentType : 'application/json',
                url: "${ctx}/BaseManage/TaskManage/getModelParameterList?modelId="+modelId,
                dataType : 'text',
                beforeSend: function(data) {},
                success: function(data) {
                    $('#addTr').empty();
                    data = JSON.parse(data)
                    data.forEach(function(t){
                        var tr = "<tr id='"+t.parameterId+"'><td>"+t.parameterName+"</td><td><input type='text' class='parameterValue' value='"+t.parameterValue+"'/></td><td>"+t.parameterDataType+"</td></tr>";
                        $('#addTr').append(tr);
					})
                }
            });
        });

		$('#datasourceViewId').change(function(){
		    $("#channelId").empty();
            channelOptions =[];
            <c:forEach items="${channelDataSourceMapList}" var="channelDataSourceMap" >
				if('${channelDataSourceMap.dataSourceId}'==$("#datasourceViewId").val()){
                    var channelName = "";
                    <c:forEach items="${channelList}" var="channel" >
						<c:if test="${channel.channelId == channelDataSourceMap.channelId}" >
							var channelOption = new Option('${channel.channelName}','${channel.channelId}');
							channelOptions.push(channelOption);
						</c:if>
                    </c:forEach>

                }
            </c:forEach>
            $('#channelId').append(channelOptions);
            changeBusinessData();
            changeKPIData()
		});
        $('#channelId').change(function(){
            changeBusinessData();
            changeKPIData()
		})
        $('#businessId').change(function(){

            changeKPIData()
        })


	});

	function changeInputStatus(eleId, objId) {
		$('#' + objId).attr('disabled', !$('#' + eleId).attr('checked'));
	}


	function submitForm() {
		var url = '${ctx}/BaseManage/TaskManage/checkNameAndCode';
		var data = 'name=' + $('#name').val() + "&code=" + $('#code').val() + "&id=" + $('#taskId').val() + "&defaultTaskType=" + $('#defaultTaskType').val() ;
		/* if(!checkFrequency()) {
			alert("运行频率允许的值为整数、小数、分数和格式为ADD_MONTHS(x)的字符串,其中x可以为整数、小数、分数");
			$('#frequency').focus();
			return;
		} */
        if (validate()) {
            var i = $("#addTr").find("tr").size();
            if(i==0){
                checkAndSubmit(url, encodeURI(encodeURI(data)));
            }else {
                $("#addTr").find("tr").each(function () {
                    //alert($(this).find("td").eq(0).html());
					var paramId = $(this).context.id;
                    var modelId =  $('#modelId').val();
                    var paramName = $(this).find("td").eq(0).html();
                    var paramValue = $(this).find("td").eq(1).find("input").val();
                    var paramType = $(this).find("td").eq(2).html();
                    var taskId = $('#taskId').val();

                    $.ajax({
                        type: "GET",
                        contentType: "application/json",
                        url: "${ctx}/BaseManage/TaskManage/createModelParam?useType="+$("#useType").val()+"&paramId="+paramId+"&modelId="+encodeURIComponent(modelId)+"&paramName=" + encodeURIComponent(paramName) + "&paramValue=" + encodeURIComponent(paramValue) + "&paramType=" + paramType + "&taskId=" + taskId,
                        dataType: "text",
                        async: false,
                        beforeSend: function (data) {
                        },
                        success: function () {
                            i--;
                            if (i == 0) {
                                checkAndSubmit(url, encodeURI(encodeURI(data)));
                            }
                        }
                    });
                });
            }
        }
	}
	
	function checkFrequency() {
		if($('#frequency').val()) {
			var frequency = $('#frequency').val().toLowerCase();
			if(frequency.indexOf("add_months(") == 0 && frequency.indexOf(")") >0) {
				frequency = frequency.substring('add_months('.length, frequency.indexOf(")"));
			}
			return checkNumber(frequency);
		}
		return true;
	}
	
	function checkNumber(value) {
		if(value.indexOf("/") > 0) {
			var numerator = value.substring(0, value.indexOf("/"));
			var denominator = value.substring(value.indexOf("/") + 1, value.length);
			if(denominator + 0 == 0 ) {
				return false;
			}
			return checkNumberAndFloat(numerator) && checkNumberAndFloat(denominator);
		} else {
			return checkNumberAndFloat(value);
		}
		return true;
	}
	
	function checkNumberAndFloat(value) {
		var reg1 = new RegExp("([0-9]+\.?[0-9])[0-9]*");
		var reg2 = new RegExp("^(0|[1-9][0-9]*)$");
		if(!reg1.test(value) && !reg2.test(value)) {
			return false;
		}
		return true;
	}
	
	function changeTaskType() {
		if($('#taskType').val() == '1') { //模型任务
			showModel();
		} else if($('#taskType').val() == '2') {//数据恢复任务
			showDetail();
			showRecover();
			$('#taskContextArea').attr('disabled',true);
			$('#taskContext').val('ds_datarecovery.pl');
			$('#taskContextArea').val('ds_datarecovery.pl');
			$('#taskContext').attr('name', 'taskContext');
			$('#taskContextArea').attr('name', '');
			$('#frequencyRow').css("display", "none");
			$('#taskMaxTimesRow').css("display", "none");
			$('#detailRow').css("display", "");
		} else if($('#taskType').val() == '3'){ //沙盒任务
			showDetail();
			showSanbox();
			$('#taskContextArea').attr('disabled',true);
			$('#taskContext').val('ds_datarecovery_shahe.pl');
			$('#taskContextArea').val('ds_datarecovery_shahe.pl');
			$('#taskContext').attr('name', 'taskContext');
			$('#taskContextArea').attr('name', '');
		} else {
			showDetail();
			showSanbox();
			if($('#taskContextArea').attr('disabled')) {
				$('#taskContextArea').attr('disabled',false);
				$('#taskContext').val('');
				$('#taskContextArea').val('');
			}
			
			$('#taskContext').attr('name', '');
			$('#taskContextArea').attr('name', 'taskContext');
			
			$('#frequencyRow').css("display", "");
			$('#taskMaxTimesRow').css("display", "");
			$('#detailRow').css("display", "none");
			
		}
	}
	
	function showModel() {
		$('#detailLabel').addClass("hidden");
		$('#detailDiv').addClass("hidden");
		
		$('#modelLabel').removeClass("hidden");
		$('#modelDiv').removeClass("hidden");
	}
	
	function showDetail() {
		$('#detailDiv').removeClass("hidden");
        $('#detailLabel').removeClass("hidden");
		
		$('#modelLabel').addClass("hidden");
		$('#modelDiv').addClass("hidden");
	}
	
	function showSanbox() {
		$('#detailSelect').empty();
		$('#detailSelect').append(sandboxOptions);
	}
	
	function showRecover() {
		$('#detailSelect').empty();
		$('#detailSelect').append(recoverOptions);
	}

	function validate() {
		if(!checkNameAndCode()) {
			return false;
		}
		if(!$('#taskNextrunTime').val()) {
			alert("请填写下次运行时间");
			return false;
		}
		if(!isNumber($('#frequency'))) {
			return false;
		}
		if(!isNumber($('#taskMaxTimes'))) {
			return false;
		}
		return true;
	}
	
	function changeFrequencyType()  {
		var frequencyType = $("#frequencyType option:selected").val();
		$('#frequencyValue').empty();
		
		if(frequencyType == 1) {
			$('#frequencyValue').append(minuteOption);
			$('#frequencyValue').val('15')
		} else if(frequencyType == 2) {
			$('#frequencyValue').append(hourOption);
		} else if(frequencyType == 3) {
			$('#frequencyValue').append(dayOption);
		} else if(frequencyType == 4) {
			$('#frequencyValue').append(monthOption);
		}
	}
	function abandonTask(){
        $.ajax({
            type: "GET",
            contentType: "application/json",
            url: "${ctx}/BaseManage/TaskManage/taskDeleteFrame?taskId="+$('#taskId').val(),
            dataType: "text",
            async: false,
            beforeSend: function (data) {
            },
            success: function () {
                window.location.href='${ctx}/BaseManage/TaskManage/taskListFrame?defaultTaskType=${runTask.defaultTaskType}'
            }
        });
	}
</script>
</head>
<body>
	<div id="main-tab-container">
		<div id="content">
			<div class="section">
				<div class="tab-content">
					<div class="row me-row">
						<!-- this is for emulating position fixed of the nav -->
						<!-- /scroller-inner -->
						<!-- Top Navigation -->
						<div class="content clearfix">
							<div class="row">
								<div class="col-xs-12">
									<form id="detailForm" class="form-horizontal" role="form"
										action="${ctx}/BaseManage/TaskManage/submitTaskFrame" method="post">
										<input type="hidden" id="taskId" name="taskId" value="${runTask.taskId}">
										<input type="hidden" id="useType" value="${useType}">
										<input type="hidden" id="defaultTaskType" name="defaultTaskType" value="${runTask.defaultTaskType}">
										<c:if test="${empty runTask.taskId}">
											<input type="hidden" name="taskStatus" value="1">
											<input type="hidden" name="taskRunStatus" value="2">
										</c:if>
										<c:if test="${not empty runTask.taskId}">
											<input type="hidden" name="taskStatus" value="${runTask.taskStatus}">
											<input type="hidden" name="taskRunStatus" value="${runTask.taskStatus}">
										</c:if>
										<table class="table-null">
											<tr>
												<td>任务名称(<font color="red">必填</font>):</td>
												<td><input class="form-control input-sm" id="name" name="name" value="${runTask.name}"></td>
											</tr>
											
											<tr>
												<td>任务代码(<font color="red">必填</font>):</td>
												<td><input type="input" class="form-control input-sm" id="code" name="code" value="${runTask.code}"></td>
											</tr>
											<c:if test="${runTask.defaultTaskType == 1 || runTask.defaultTaskType == 5 }">
												<tr>
													<td id="provinceLabel">省份:</td>
													<td id="provinceDiv">
														<select class="form-control input-sm" id="provinceId" name="provinceView.provinceId">
														</select>
													</td>
												</tr>

												<tr>
													<td id="dataSourceLabel">数据来源:</td>
													<td id="dataSourceDiv">
														<select class="form-control input-sm" id="datasourceViewId" name="dataSourceView.dataSourceId" >
														</select>
													</td>
												</tr>

												<tr>
													<td id="channelLabel">渠道:</td>
													<td id="channelDiv">
														<select class="form-control input-sm" id="channelId" name="channelView.channelId" >
														</select>
													</td>
												</tr>

												<tr>
													<td id="businessLabel">业务:</td>
													<td id="businessDiv">
														<select class="form-control input-sm" id="businessId" name="businessView.businessId" >
														</select>
													</td>
												</tr>

												<tr>
													<td id="KPILabel">指标:</td>
													<td id="KPIDiv">
														<select class="form-control input-sm" id="KPIViewId" name="dimKpiView.kpiId" >
														</select>
													</td>
												</tr>
											</c:if >
											<tr>
												<td>任务组:</td>
												<td>
													<select class="form-control input-sm" id="taskGroup" name="taskGroup.taskgroupId">
														<c:forEach items="${taskGroupList}" var="taskGroup">
															<option value="${taskGroup.taskgroupId}" <c:if test="${taskGroup.taskgroupId == runTask.taskGroup.taskgroupId}">selected</c:if> >
																${taskGroup.name}
															</option>
														</c:forEach>
													</select>
												</td>
											</tr>
											
											<tr>
												<td>任务优先级:</td>
												<td>
													<select class="form-control input-sm" id="taskPriority" name="taskPriority">
														<option value="1" <c:if test="${runTask.taskPriority == '1'}">selected</c:if> >1</option>
														<option value="2" <c:if test="${runTask.taskPriority == '2'}">selected</c:if> >2</option>
														<option value="3" <c:if test="${runTask.taskPriority == '3'}">selected</c:if> >3</option>
														<option value="4" <c:if test="${runTask.taskPriority == '4'}">selected</c:if> >4</option>
														<option value="5" <c:if test="${runTask.taskPriority == '5'}">selected</c:if> >5</option>
														<option value="6" <c:if test="${runTask.taskPriority == '6'}">selected</c:if> >6</option>
														<option value="7" <c:if test="${runTask.taskPriority == '7'}">selected</c:if> >7</option>
														<option value="8" <c:if test="${runTask.taskPriority == '8'}">selected</c:if> >8</option>
														<option value="9" <c:if test="${runTask.taskPriority == '9'}">selected</c:if> >9</option>
														<option value="10" <c:if test="${runTask.taskPriority == '10'}">selected</c:if> >10</option>
													</select>
												</td>
											</tr>
											
											<tr>
												<td>任务类型:</td>
												<td>
													<select class="form-control input-sm" id="taskType" name="taskType.tasktypeId" onchange="changeTaskType();">
														<c:if test="${runTask.defaultTaskType == 1 }">
															<c:forEach items="${taskTypeList}" var="taskType">
																<c:if test="${taskType.tasktypeId == '1' }">
																<option value="${taskType.tasktypeId}" <c:if test="${taskType.tasktypeId == runTask.taskType.tasktypeId}">selected</c:if> >
																	${taskType.name}
																</option>
																</c:if>
															</c:forEach>
														</c:if>
														
														<c:if test="${runTask.defaultTaskType == 3 }">
															<c:forEach items="${taskTypeList}" var="taskType">
																<c:if test="${taskType.tasktypeId == '3' }">
																<option value="${taskType.tasktypeId}" <c:if test="${taskType.tasktypeId == runTask.taskType.tasktypeId}">selected</c:if> >
																	${taskType.name}
																</option>
																</c:if>
															</c:forEach>
														</c:if>
														
														<c:if test="${runTask.defaultTaskType != 1 && runTask.defaultTaskType != 3 }">
															<c:forEach items="${taskTypeList}" var="taskType">
																<c:if test="${taskType.tasktypeId != '1' && taskType.tasktypeId != '3'}">
																<option value="${taskType.tasktypeId}" <c:if test="${taskType.tasktypeId == runTask.taskType.tasktypeId}">selected</c:if> >
																	${taskType.name}
																</option>
																</c:if>
															</c:forEach>
														</c:if>
													</select>
												</td>
											</tr>
											
											<tr>
												<td id="modelLabel">关联模型:</td>
												<td id="modelDiv">
													<select class="form-control input-sm" id="modelId" name="dataModelView.dataModelId">
													</select>
												</td>
											</tr>
											<tr id="detailRow">
												<td id="detailLabel">数据维护任务信息:</td>
												<td id="detailDiv">
													<select class="form-control input-sm" id="detailSelect" name="taskDetail.taskInfoId">
													</select>
												</td>
											</tr>
											<tr>
												<td>下次运行时间(<font color="red">必填</font>):</td>
												<td>
													<input type="input" class="form-control  input-sm  Wdate" id="taskNextrunTime" name="taskNextrunTimeStr" value="${runTask.taskNextrunTime}"
													onClick="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss',readOnly:false,minDate:'%y-%M-%d'})">
												</td>
											</tr>
											<c:if test="${runTask.defaultTaskType != 3 }">
												<tr id="frequencyRow">
													<td valign="top">运行频率:</td>
													<td>
														<%-- <input type="input" class="form-control input-sm " id="frequency" name="frequency" value="${runTask.frequency}" maxlength="100"> --%>
														<select class="form-control input-sm" id="frequencyType" name="frequencyType" onchange="changeFrequencyType()">
															<option value="1" <c:if test="${runTask.frequencyType == '1' }">selected</c:if> >分钟</option>
															<option value="2" <c:if test="${runTask.frequencyType == '2' }">selected</c:if> >小时</option>
															<option value="3" <c:if test="${runTask.frequencyType == '3' }">selected</c:if> >日</option>
															<option value="4" <c:if test="${runTask.frequencyType == '4' }">selected</c:if> >月</option>
														</select>
														<select class="form-control input-sm" id="frequencyValue" name="frequencyValue">
														</select>
														<input type="hidden" id="frequencyValueHidden" value="${runTask.frequencyValue }">
													</td>
												</tr>
											</c:if>
											<c:if test="${runTask.defaultTaskType == 1 || runTask.defaultTaskType == 5}">
												<tr>
													<td>模型参数:</td>
													<td>
														<div  style="width:420px;height: 130px;overflow: auto">
															<table class="table table-hover table-striped" id="displayParam" >
																<thead>
																<tr><th>参数名</th><th>参数值</th><th>参数类型</th></tr>
																</thead>
																<tbody id="addTr">

																</tbody>
															</table>
														</div>
													</td>
												</tr>
											</c:if>
												<tr>
													<td>任务内容:</td>
													<td>
														<c:if test="${runTask.defaultTaskType == 1 }">
															<textarea class="form-control input-sm" rows="6" maxlength="666" disabled>r_model_task_agent.pl</textarea>
															<input type="hidden" name="taskContext" value="r_model_task_agent.pl">
														</c:if>

														<c:if test="${runTask.defaultTaskType != 1 }">
															<textarea class="form-control input-sm" rows="6" id="taskContextArea" maxlength="666">${runTask.taskContext}</textarea>
															<input type="hidden" name="taskContext" id="taskContext" value="{runTask.taskContext}">
														</c:if>
													</td>
												</tr>


											<c:if test="${runTask.defaultTaskType != 3 }">
												<tr id="taskMaxTimesRow">
													<td>最大运行次数:</td>
													<td>
														<input type="input" class="form-control input-sm" id="taskMaxTimes" name="taskMaxTimes" value="${runTask.taskMaxTimes}" maxlength="10">
													</td>
												</tr>
											</c:if>
											<tr>
												<td></td>
												<td>
													<button type="button" id="modelSubmit" class="btn btn-primary" onclick="saveForm('taskId');">确定</button>
													<!-- <button type="reset" class="btn btn-default" id="modelReset">清空</button> -->
													<c:if test="${useType =='new'}">
														<button type="reset" class="btn btn-warning" id="modelBack" onclick="abandonTask()">返回</button>
													</c:if>
													<c:if test="${useType =='modify'}">
														<button type="reset" class="btn btn-warning" id="modelBack" onclick="window.location.href='${ctx}/BaseManage/TaskManage/taskListFrame?defaultTaskType=${runTask.defaultTaskType}'">返回</button>
													</c:if>
												</td>
											</tr>
										</table>
									</form>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</body>
</html>