function freshView(){
// 目前顯示有資料時
if(GlobalDataLength>0){
// 這裡為了防止并發采用副本形式進行資料查找
var dataList = GlobalData.concat();
//重新整理顯示位置到目前時間最近的一條資料
if(StopPushtoNow)
return;
// 此方法實作的是定位到離目前utc時間最近的資料,可根據需要自行調整
currentdate = new Date();
nowdate=currentdate.getTime()+currentdate.getTimezoneOffset()*60000;
if(dataList != null && dataList != undefined && dataList.length > 1) {
var copyGlo = dataList.concat();
if (copyGlo != null && copyGlo != undefined && copyGlo.length > 1) {
// 對數組進行排序
copyGlo.sort(comparedate);
// 擷取最近的時間并指定到該行上
//擷取table序号
var mytable = document.getElementById("tableList");
var nowRow = new Date(copyGlo[0].scheduledTime);
for (var i = 0; i < mytable.rows.length; i++) {
//console.log(mytable.rows[i].cells[4].innerHTML);
var date = new Date(mytable.rows[i].cells[3].innerHTML);
if (date.getTime() == nowRow.getTime()) {
// 根據行高進行滑塊移動位置計算
var heightpx=$("#tableList tr").height();
$("#initDataTable").scrollTop((i - 1) * heightpx);
break;
}
}
}
}
}
}
時間對比排序算法
// 計算兩個時間的內插補點找到離目前時間最近的時間
var comparedate = function (obj1, obj2) {
var val1 = new Date(obj1.scheduledTime);
var val2 = new Date(obj2.scheduledTime);
var dc1 = Math.abs((parseInt(nowdate - val1)/1000));
var dc2 = Math.abs((parseInt(nowdate - val2)/1000));
if (dc1 < dc2) {
return -1;
} else if (dc1 > dc2) {
return 1;
} else {
return 0;
}
}