home.js 2.89 KB
var _home = (function() {
	var gpsOff = 1000 * 60 * 5;
	
	var homeObject = {
		init : function() {
			// 初始化主页
			var lineArray = _data.getLines();

			// 3条线路1 tab 拆分
			var tabData = [], len = lineArray.length;

			var ids, names, subArray;
			for (var i = 0; i < len;) {
				subArray = lineArray.slice(i, i += 3);
				ids = '';
				names = '';
				$.each(subArray, function(j, op) {
					ids += op.id + '_';
					names += op.name + ',';
				});
				tabData.push({
					id : ids,
					name : names,
					array : subArray
				});
			}

			var homeHtmlStr = template('line_control_home_temp', {
				tabList : tabData
			});

			$('#tab_home').html(homeHtmlStr);
			// 计算高度 40 页脚
			var ah = $('#top-tabs-wrap .tab-content').height() - 40 - 5;
			$('.card_wrap').css('height', ah / 3);

			// 滚动条
			$('.card_wrap .table_wrap').slimscroll({
				height : '187px',
				alwaysVisible : true,
				opacity : .8
			});

			// SVG线路图
			$.each(lineArray, function(i, obj) {
				_data.queryStationRoute(obj.lineCode, 'line_chart_'
						+ obj.lineCode, drawSvg.initHomeSvg);
			});

			$('.line_chart .top .top-remark').slimscroll({
				height : '47px'
			});

			// 模拟图GPS刷新事件
			$('#tab_home').on(
					'gps_refresh',
					function(e, add, up) {
						// 现在先每次全量画
						var list = _data.findAllGps();
						_data.attachSchedulInfo(list);

						// drawSvg.drawVehicle(list);
						// 按线路分组
						var listMap = groupByLine(list);

						for ( var key in listMap) {
							var htmlStr = template('home_table_temp', {
								list : listMap[key]
							});
							$('#tab_' + key).find('tbody').html(htmlStr);
							// 更新badge
							$('#' + key + '_badge').text(
									'( ' + listMap[key].length + ' )');

							drawSvg.clear();
							drawSvg.drawVehicle(listMap[key]);
						}
					});

			setTimeout(function() {
				// 打开GPS定时刷新
				_data.startRefreshGpsTimer();
				// 去掉loading
				$('.load-anim').fadeOut(800);
				$('menu.menu').show();
			}, 400);

			setTimeout(function() {
				// 提示文本
				var promptFlag = storage.getItem('promptFlag_0810');
				if (!promptFlag) {
					layer.alert('1、取消的下发调度指令的时间限制<br>2、驾驶员收到的指令显示为待发时间', {
						title: '更新信息',
						shift : 5
					});
					storage.setItem('promptFlag_0810', 1);
				}
			}, 1500);

		}
	}
	
	function gpslistToMap(gpslist){
		var map = {}
		for(var i = 0, gps; gps = gpslist[i++];){
			map[gps.deviceId] = gps;
		}
		return map;
	}
	
	function groupByLine(gpsArray){
		var rs = {}, gps;
		$.each(gpsArray, function(){
			key = this.lineId + '_' + this.upDown;
			if(!rs[key])
				rs[key] = [];
		
			rs[key].push(this);
		});
		return rs;
	}


	countDown('home.js');
	return homeObject;
})();