indexSocket.js 4.25 KB
/**
 * 首页推送
 */
var EntrustInfo = function() {
	var _sock = null;
	var _lastEntrustRow = 0, _lastBarginRow = 0;

	return {
		init : function() {
			EntrustInfo.connect();
		},

		/** 连接 */
		connect : function() {
			_sock = new SockJS("/sockjs/ec/entrust");

			_sock.onopen = function() {
				//console.log('open');
			};

			_sock.onmessage = function(event) {
				var data = $.parseJSON(event.data);
				if (data.flag == 'entrust') {
					EntrustInfo.lastEntrust(data.data);
				} else if (data.flag == 'bargin') {
					EntrustInfo.lastBargin(data.data);
				}
				EntrustInfo.fillTab();
			};

			_sock.onclose = function() {
				EntrustInfo.reconnect();
			}
		},

		/** 发送消息 */
		send : function() {
			if (_sock != null) {
				_sock.send($('#txtMessage').val());
			}
		},

		/** 断开连接 */
		disconnect : function() {
			if (_sock != null) {
				_sock.close();
				_sock = null;
			}
		},

		/** 断线重连 */
		reconnect : function() {
			// console.log('reconnect');
			setTimeout("EntrustInfo.connect()", 5000);
		},

		/**最新发布*/
		lastEntrust : function(entrusts) {
			$('#tabLastEntrust').html('');
			if (entrusts == null) {
				return;
			}
			var text = new Array();
			
			_lastEntrustRow = entrusts.length;
			for (var i = 0; i < entrusts.length; i++) {
				var entrust =  entrusts[i];
				var otcProp;
				text.push('<tr>');
				text.push('<td class="right-font"><a href="/ec/entrust/detail/' 
						+ entrust.otcCode + '" target="_blank">' + entrust.otcCode + '</td>');
				text.push('<td class="left-font" style="padding-left:10px"><a href="/ec/entrust/detail/' 
						+ entrust.otcCode + '" target="_blank">' + entrust.otcName + '</td>');
				switch (entrust.otcProp) {
					case '0S0' :
						otcProp = '<span class="green-font">卖出</span>';
						break;
					case '0B0' :
						otcProp = '<span class="red-font">买入</span>';
						break;
					default:
						otcProp = '';
				}
				text.push('<td class="left-font ">' + otcProp + '</td>');
				text.push('<td class="right-font">' + entrust.entrustPrice.toMoney(2, "", ",") + '</td>');
				text.push('<td class="right-font">' + entrust.entrustAmount + '</td>');
				text.push('</tr>');
			}
			$('#tabLastEntrust').html(text.join(''));
		},
		
		/**最新成交*/
		lastBargin : function(bargins) {
			$('#tabLastBargin').html('');
			if (bargins == null) {
				return;
			}
			var text = new Array();
			
			_lastBarginRow = bargins.length;
			for (var i = 0; i < bargins.length; i++) {
				var bargin =  bargins[i];
				text.push('<tr>');
				text.push('<td class="right-font"><a href="/ec/entrust/detail/' 
						+ bargin.otcCode + '" target="_blank">' + bargin.otcCode + '</td>');
				text.push('<td class="left-font" style="padding-left:10px"><a href="/ec/entrust/detail/' 
						+ bargin.otcCode + '" target="_blank">' + bargin.otcName + '</td>');
				text.push('<td class=" right-font">' + bargin.businessPrice.toMoney(2, "", ",") + '</td>');
				text.push('<td class=" right-font">' + bargin.businessAmount + '</td>');
				text.push('<td class=" right-font">' + bargin.currTime + '</td>');
				text.push('</tr>');
			}
			$('#tabLastBargin').html(text.join(''));
		},
		
		/**补齐表格:最少5行,并时最新发布和最新成交行数相同*/
		fillTab : function() {
			var fillRow = 0;
			var tabLastEntrust, tabLastBargin;
			
			if (_lastEntrustRow == _lastBarginRow && _lastEntrustRow >= 5) {
				return;
			}
			if (_lastEntrustRow < 5 && _lastBarginRow < 5) {
				EntrustInfo.fillingTab($('#tabLastEntrust'), 5 - _lastEntrustRow);
				EntrustInfo.fillingTab($('#tabLastBargin'), 5 - _lastBarginRow);
				_lastEntrustRow = 5;
				_lastBarginRow = 5;
			} else if (_lastEntrustRow < _lastBarginRow) {
				EntrustInfo.fillingTab($('#tabLastEntrust'), _lastBarginRow - _lastEntrustRow);
				_lastEntrustRow = _lastBarginRow;
			} else if (_lastBarginRow < _lastEntrustRow){
				EntrustInfo.fillingTab($('#tabLastBargin'), _lastEntrustRow - _lastBarginRow);
				_lastBarginRow = _lastEntrustRow;
			}
		},
		
		fillingTab : function(tab, row) {
			var text = new Array();
			for (var i = 0; i < row; i++) {
				text.push('<tr>');
				for (var j = 0; j < 5; j++) {
					text.push('<td >--</td>');
				}
				text.push('</tr>');
			}
			tab.append(text.join(''));
		}
		
	}
}();

$(function() {
	EntrustInfo.init();
})