main.html 10.1 KB
<link href="/pages/forecast/sample/css/main.css" rel="stylesheet" type="text/css" />
<div id="forecastSamplePanel">
	<div class="line_config_tree" >
		<h1 >线路</h1>
		<ul></ul>
	</div>
	
	<div class="line_config_content">
		<div class="body ">
			<div class="left_station_route">
				<div class="tabbable-line" style="height: 100%;">
					<ul class="nav nav-tabs ">
						<li class="active"><a href="#tab_up" data-toggle="tab"
							aria-expanded="true">&nbsp;</a></li>
						<li class=""><a href="#tab_down" data-toggle="tab"
							aria-expanded="false">&nbsp;</a></li>
					</ul>
					<div class="tab-content" >
						<div class="tab-pane active" id="tab_up">
							<ul class="list">
							</ul>
						</div>
						<div class="tab-pane" id="tab_down">
							<ul class="list">
							</ul>
						</div>
					</div>
				</div>
			</div>
			
			<div id="trafficChart" >
				<div class="sample_tags">
					<a href="javascript:;" class="inline-link" id="gpsCreateDataLink"><i class="fa fa-sign-in"> </i> GPS生成数据</a>
				</div>
				<div id="svgWrap" >
					
				</div>
			</div>
		</div>
	</div>
</div>

<script id="forecast_sample_tree_item_temp" type="text/html">
{{each array as line }}
<li data-code={{line.lineCode}}>
	<button>{{line.name}}</button>
</li>
{{/each}}
</script>

<script id="forecast_sample_route_temp" type="text/html">
{{each list as route i}}
<li>
		<div> <a class="sample_route_item" data-id="{{route.stationCode}}">{{route.stationName}}</a><div>
</li>
{{/each}}
</script>

<script id="forecast_gps_create_temp" type="text/html">
<form class="form-horizontal" role="form" id="forecastPopForm">
    <div class="form-body">
        <div class="form-group">
            <label class="col-md-3 control-label">线路</label>
            <div class="col-md-9">
				<input type="hidden" name="lineCode" value="{{line.code}}">
                <input type="text" class="form-control" value="{{line.name}}" style="width: 180px;" readonly>
            </div>
        </div>
		<div class="form-group">
		     <label class="col-md-3 control-label">走向</label>
		     <div class="col-md-9">
				 <input type="hidden" name="updown" value={{updown}}>
				 <input type="text" class="form-control" value='{{updown == 0?"上行":"下行"}}' style="width: 180px;" readonly>
		     </div>
		 </div>

		 <h6><i class="fa fa-question-circle"></i> 使用哪些天的GPS数据</h6>
		 <div class="form-group">
            <label class="col-md-3 control-label">起始日期</label>
            <div class="col-md-9">
                <input type="date" class="form-control" style="width: 180px;" name="startDate" value="{{sdate}}" required>
            </div>
        </div>
		<div class="form-group">
            <label class="col-md-3 control-label">截止日期</label>
            <div class="col-md-9">
                <input type="date" class="form-control" style="width: 180px;" name="endDate" value="{{cdate}}" required>
            </div>
        </div>


		 <h6><i class="fa fa-question-circle"></i> 你想怎么划分时区</h6>
		 <div class="form-group" id="sptItems">
			{{each drs as dr i }}
			<div class="forecast-spt-item row">
				<div class="forecast-item-close"><i class="fa fa-times-circle" ></i></div>
				<div class="col-md-offset-1 col-md-4">
					<input type="text" class="form-control" name="dr_name[]" placeholder="时区名称"  value="{{dr.name}}" required>
				</div>
				<div class="col-md-3 s-date">
					<input type="time" class="form-control" name="dr_stime[]" placeholder="开始时间"  value="{{dr.s}}" required> 
				</div>
				<div class="col-md-1" style="padding-top: 10px;"></div>
				<div class="col-md-3 e-date">
					<input type="time" class="form-control" name="dr_etime[]" placeholder="结束时间"  value="{{dr.e}}" required>
				</div>
			</div>
			{{/each}}
         </div>

			<div class="footer">
				<a href="javascript:;" style="text-indent: 28px;" class="add-item"><i class="fa fa-plus"></i> 添加项</a>
			</div>

			<div class="form-actions">
			    <div class="row">
			        <div class="col-md-12" style="">
			            <button type="submit" class="btn green">开始生成数据</button>
			            <button type="button" class="btn default">取消</button>
			        </div>
			    </div>
			</div>
     </div>
</form>
</script>

<script src="/pages/forecast/sample/js/svg.js"></script>
<script>
!function(){
	//站点路由信息
	var routes = {};
	
	var $panel = $('#forecastSamplePanel')
		,$body = $('.line_config_content .body');
	var h = $('.page-container>.page-sidebar-wrapper>.page-sidebar').height();
	$panel.css('height', h - 18);
	
 	//线路滚动条
	$('.line_config_tree ul').slimscroll({
		height : 'calc(100% - 68px)',
		alwaysVisible : true,
		opacity : .8
	});
	
	//上下行切换事件 
	$('.left_station_route .tabbable-line ul li').on('click', function(){setTimeout(drawSvg, 300);});
	
	$get('/line/all', {destroy_eq:0}, function(rs){
		var itemsHtml = template('forecast_sample_tree_item_temp', {array: rs});
		$('.line_config_tree ul').html(itemsHtml)
			.find('li:eq(0)').click();
	});
	
	$panel.on('click', '.line_config_tree li', function(){
		$('.line_config_tree li.selected').removeClass('selected');
		$(this).addClass('selected');
		
		//显示路由信息
		showRouteInfo();
	});
	
	function showRouteInfo(){
		$.get('/stationroute/all', {'line.lineCode_eq': getLineCode(), 'destroy_eq': 0}
		,function(rs){
			rs.sort(function(a, b){
				return a.stationRouteCode - b.stationRouteCode;
			});
			var temp = 'forecast_sample_route_temp';
			//上下行分组
			var ups = [],downs = [];
			$.each(rs, function(){
				if(this.directions == 0)
					ups.push(this);
				else
					downs.push(this);
			});
			
			$('#tab_up ul').html(template(temp, {list: ups}));
			$('#tab_down ul').html(template(temp, {list: downs}));
			
			routes.ups = ups;
			routes.downs = downs;
			
			drawSvg();
		});
	}
	
	function showLoad(text){
		return layer.msg(text, {icon: 16, time: 0, shade: 0.3});
	}
	
	function getUpdown(){
		var activePanel = $('.left_station_route .tab-content .tab-pane.active')
			,updown = -1
			,id = activePanel.attr('id');
		
		if(id == 'tab_up')
			updown = 0;
		else if(id == 'tab_down')
			updown = 1;
		
		return updown;
	}
	
	function getLineCode(){
		return $('.line_config_tree li.selected').data('code');
	}
	
	function getLineName(){
		return $.trim($('.line_config_tree li.selected').text());
	}
	
	function drawSvg(){
		//绘制svg
		var rts = [], updown = getUpdown();
		if(updown === 0)
			rts = routes.ups;
		else if(updown === 1)
			rts = routes.downs;
		sampleSvg.draw({lineCode: getLineCode(), rts: rts, updown: getUpdown()});
	}
	
	$('#forecastSamplePanel').on('click', '.sample_route_item', function(){
		sampleSvg.popAddModal($(this).data('id'));
	})
	
	
	$('#gpsCreateDataLink').on('click', function(){
		var drs = [{name: '早低谷', s: '00:00', e: '07:00'},{name: '早高峰', s: '07:01', e: '09:00'},{name: '平峰', s: '09:01', e: '16:00'},{name: '晚高峰', s: '16:01', e: '20:00'},{name: '晚低谷', s: '20:01', e: '23:59'}];
		var line = {code: getLineCode(), name: getLineName()};
		
		var cdate = moment().format('YYYY-MM-DD')
			,sdate = moment().subtract(14, 'days').format('YYYY-MM-DD');
		layer.open({
		  type: 1,
		  area: '580px',
		 // maxmin: true,
		  content: template('forecast_gps_create_temp', {updown: getUpdown(), line: line, drs: drs, cdate: cdate, sdate: sdate}),
		  shift: 5,
		  title: '根据历史轨迹生成数据',
		  success: function(layero){
			  var f = $('#forecastPopForm');
			  
			  f.on('click', '.forecast-item-close' , function(){
				   $(this).parent('.forecast-spt-item').remove();
			   });
			   $('.add-item', f).on('click', function(){
				    var item = '<div class="forecast-spt-item row"><div class="forecast-item-close"><i class="fa fa-times-circle" ></i></div><div class="col-md-offset-1 col-md-4"><input type="text" class="form-control" name="dr_name[]" placeholder="时区名称"   required></div><div class="col-md-3 s-date"><input type="time" class="form-control" name="dr_stime[]" placeholder="开始时间"   required> </div><div class="col-md-1" style="padding-top: 10px;">至</div><div class="col-md-3 e-date"><input type="time" class="form-control" name="dr_etime[]" placeholder="结束时间"   required></div></div>';
					$('#sptItems').append(item);
					$('#sptItems').scrollTop( $('#sptItems')[0].scrollHeight );
			   });
			   
			   f.on('submit', function(){
				  try{
					  if(customFormValidate(f)){
						  var param = f.serializeJSON()
						  		,timeRange = []
						  		,size = param.dr_name.length;
						  for(var i = 0; i < size; i ++)
							  timeRange.push({tag: param.dr_name[i], s: param.dr_stime[i], e: param.dr_etime[i]});
						  
						  delete param.dr_name;
						  delete param.dr_stime;
						  delete param.dr_etime;
						  param.timeRange = timeRange;
						  
						  $.post('/sample/create/gps', {data: encodeURI(JSON.stringify(param))}, function(rs){
							 console.log(rs); 
						  });
					  }
				  }catch (e){
					  console.log(e);
				  }
				  
				  return false;
			   });
		  }
		});
	});
	
	
	/**
	 * 自定义表单校验
	 */
	function customFormValidate(f){
		var rs = true;
		//所有可见的项
		var es = $('input,select', f);
		
		for(var i = 0, e; e = es[i++];){
			if($(e).attr('required') && ( $(e).val() == null || $(e).val() == '')){
				if($(e).hasClass('select2-hidden-accessible'))
					$(e).next().find('.select2-selection').addClass('custom-val-error');
				else
					$(e).addClass('custom-val-error');
				rs = false;
			}
			else{
				if($(e).hasClass('select2-hidden-accessible'))
					$(e).next().find('.select2-selection').removeClass('custom-val-error');
				else
					$(e).removeClass('custom-val-error');
			}
		}
		
		if(!rs){
			layer.alert('数据完整性校验失败,请检查输入项', {icon: 2, title: '操作失败',  shift: 5});    
		}
		return rs;
	}
}();
</script>