/*****************************************************
Copyright 2007-2011 Hikvision Digital Technology Co., Ltd.
FileName: timebar
Description: 时间条 不兼容IE浏览器
Author: Chenxiangzhen
Date: 2011.04.18
*****************************************************/
/*************************************************
Function: bindAsEventListener
Description: 绑定对象到函数
Input: object 对象, fun 函数
Output: 无
return: 关联后的函数
*************************************************/
var bindAsEventListener = function (object, fun) {
var args = Array.prototype.slice.call(arguments).slice(2);
return function (event) {
return fun.apply(object, [event || window.event].concat(args));
}
};
/*************************************************
Function: bind
Description: 绑定对象到函数
Input: object 对象, fun 函数
Output: 无
return: 关联后的函数
*************************************************/
var bind = function (object, fun) {
return function () {
return fun.apply(object, arguments);
}
};
/*************************************************
Function: addEventHandler
Description: 添加事件
Input: oTarget 目标对象, sEventType 事件, fnHandler 函数
Output: 无
return: 无
*************************************************/
var addEventHandler = function (oTarget, sEventType, fnHandler) {
oTarget["on" + sEventType] = fnHandler;
};
var removeEventHandler = function (oTarget, sEventType, fnHandler) {
oTarget["on" + sEventType] = null;
};
/*************************************************
Function: getObjLeft
Description: 获取对象相对网页的左上角坐标
Input: obj 对象
Output: 无
return: 坐标
*************************************************/
function getObjLeft(obj) {
var x = obj.offsetLeft;
while (obj = obj.offsetParent) {
x += obj.offsetLeft;
}
return x;
}
/*************************************************
Function: getObjTop
Description: 获取对象相对网页的左上角坐标
Input: obj 对象
Output: 无
return: 坐标
*************************************************/
function getObjTop(obj) {
var y = obj.offsetTop;
while (obj = obj.offsetParent) {
y += obj.offsetTop;
}
return y;
}
/*************************************************
* Copyright 2007-2011 Hikvision Digital Technology Co., Ltd.
* Class ScaleInfo
* @author chenxiangzhen
* @created 2011-04-06
* @version v1.0
* @function 工具类,时间刻度信息
*************************************************/
function ScaleInfo(x, y, iSeconds) {
this.m_ix = x;
this.m_iy = y;
this.m_ixMin;
this.m_ixMax;
this.m_iHour = parseInt(iSeconds / 3600, 10);
this.m_iMinute = parseInt(iSeconds % 3600 / 60, 10);
this.m_iSecond = parseInt(iSeconds % 3600 % 60, 10);
this.m_szTime = "";
if (this.m_iHour < 10 && this.m_iMinute < 10) {
this.m_szTime = "0" + this.m_iHour + ":0" + this.m_iMinute;
} else if (this.m_iHour < 10 && this.m_iMinute >= 10) {
this.m_szTime = "0" + this.m_iHour + ":" + this.m_iMinute;
} else if (this.m_iHour >= 10 && this.m_iMinute >= 10) {
this.m_szTime = "" + this.m_iHour + ":" + this.m_iMinute;
} else {
this.m_szTime = "" + this.m_iHour + ":0" + this.m_iMinute;
}
}
/*************************************************
Function: setPos
Description: 设置刻度的位置
Input: x 横坐标, y 纵坐标
Output: 无
return: 无
*************************************************/
ScaleInfo.prototype.setPos = function (x, y) {
// this.x = x;
if (x < this.m_ixMin) {
x = this.m_ixMax - (this.m_ixMin - x);
} else if (x > this.m_ixMax) {
x = this.m_ixMin + (x - this.m_ixMax);
}
this.m_ix = x;
this.m_iy = y;
}
/*************************************************
Function: setPosRange
Description: 设置刻度显示的范围
Input: ixMin 最小横坐标, ixMax 最大横坐标
Output: 无
return: 无
*************************************************/
ScaleInfo.prototype.setPosRange = function (ixMin, ixMax) {
this.m_ixMin = ixMin;
this.m_ixMax = ixMax;
}
/*************************************************
Function: isInRange
Description: 是否在范围内
Input: ixMin 最小横坐标, ixMax 最大横坐标
Output: 无
return: bool
*************************************************/
ScaleInfo.prototype.isInRange = function (iMin, iMax) {
if (this.m_ix >= iMin && this.m_ix <= iMax) {
return true;
} else {
return false;
}
}
/*************************************************
Function: update
Description: 更新刻度时间
Input: iSeconds
Output: 无
return: 无
*************************************************/
ScaleInfo.prototype.update = function (iSeconds) {
this.m_iHour = parseInt(iSeconds / 3600, 10);
this.m_iMinute = parseInt(iSeconds % 3600 / 60, 10);
this.m_iSecond = parseInt(iSeconds % 3600 % 60, 10);
if (this.m_iHour < 10 && this.m_iMinute < 10) {
this.m_szTime = "0" + this.m_iHour + ":0" + this.m_iMinute;
} else if (this.m_iHour < 10 && this.m_iMinute >= 10) {
this.m_szTime = "0" + this.m_iHour + ":" + this.m_iMinute;
} else if (this.m_iHour >= 10 && this.m_iMinute >= 10) {
this.m_szTime = "" + this.m_iHour + ":" + this.m_iMinute;
} else {
this.m_szTime = "" + this.m_iHour + ":0" + this.m_iMinute;
}
}
/*************************************************
* Copyright 2007-2011 Hikvision Digital Technology Co., Ltd.
* Class Time
* @author chenxiangzhen
* @created 2011-04-06
* @version v1.0
* @function 工具类,时间相关信息
*************************************************/
function Time() {
var initDate = new Date();
var initYear = initDate.getFullYear();
var initMonth = initDate.getMonth();
var initDay = initDate.getDate();
var tCurrentTime = new Date(initYear, initMonth, initDay, 0, 0, 0);
this.m_iYear = initYear;
this.m_iMonth = initMonth;
this.m_iDay = initDay;
this.m_iHour = tCurrentTime.getHours();
this.m_iMinute = tCurrentTime.getMinutes();
this.m_iSecond = tCurrentTime.getSeconds();
this.m_iMilliseconds = tCurrentTime.getTime(); //返回 1970 年 1 月 1 日至今的毫秒数
}
/*************************************************
Function: setTimeByMis
Description: 设置时间
Input: iMilliseconds: 1970 年 1 月 1 日至今的毫秒数
Output: 无
return: 无
*************************************************/
Time.prototype.setTimeByMis = function (iMilliseconds) {
var tSetTime = new Date(iMilliseconds);
this.m_iYear = tSetTime.getFullYear();
this.m_iMonth = tSetTime.getMonth() + 1;
this.m_iDay = tSetTime.getDate();
this.m_iHour = tSetTime.getHours();
this.m_iMinute = tSetTime.getMinutes();
this.m_iSecond = tSetTime.getSeconds();
this.m_iMilliseconds = iMilliseconds;
};
/*************************************************
Function: getStringTime
Description: 获取时间字符串
Input: 无
Output: 无
return: string yyyy-MM-dd HH:mm:ss
*************************************************/
Time.prototype.getStringTime = function () {
var szYear = "" + this.m_iYear;
var szMonth;
if (this.m_iMonth < 10) {
szMonth = "0" + this.m_iMonth;
} else {
szMonth = "" + this.m_iMonth;
}
var szDay;
if (this.m_iDay < 10) {
szDay = "0" + this.m_iDay;
} else {
szDay = "" + this.m_iDay;
}
var szHour;
if (this.m_iHour < 10) {
szHour = "0" + this.m_iHour;
} else {
szHour = "" + this.m_iHour;
}
var szMinute;
if (this.m_iMinute < 10) {
szMinute = "0" + this.m_iMinute;
} else {
szMinute = "" + this.m_iMinute;
}
var szSecond;
if (this.m_iSecond < 10) {
szSecond = "0" + this.m_iSecond;
} else {
szSecond = "" + this.m_iSecond;
}
var szCurrentTime = szYear + "-" + szMonth + "-" + szDay + " " + szHour + ":" + szMinute + ":" + szSecond;
return szCurrentTime;
}
/*************************************************
Function: parseTime
Description: 通过时间字符串设置时间
Input: szTime 时间 yyyy-MM-dd HH:mm:ss
Output: 无
return: 无
*************************************************/
Time.prototype.parseTime = function (szTime) {
var aDate = szTime.split(' ')[0].split('-');
var aTime = szTime.split(' ')[1].split(':');
this.m_iYear = parseInt(aDate[0], 10);
this.m_iMonth = parseInt(aDate[1], 10);
this.m_iDay = parseInt(aDate[2], 10);
this.m_iHour = parseInt(aTime[0], 10);
this.m_iMinute = parseInt(aTime[1], 10);
this.m_iSecond = parseInt(aTime[2], 10);
var tTime = new Date();
tTime.setFullYear(this.m_iYear);
tTime.setMonth(this.m_iMonth - 1, this.m_iDay);
tTime.setHours(this.m_iHour);
tTime.setMinutes(this.m_iMinute);
tTime.setSeconds(this.m_iSecond);
this.m_iMilliseconds = tTime.getTime();
}
/*************************************************
* Copyright 2007-2011 Hikvision Digital Technology Co., Ltd.
* Class FileInfo
* @author chenxiangzhen
* @created 2011-04-06
* @version v1.0
* @function 工具类,录像文件相关信息
*************************************************/
function FileInfo(iX, iY, iWidth, iHeight, iType, cColor, tStartTime, tStopTime) {
this.m_iX = iX;
this.m_ixMin = 0;
this.m_ixMax = 0;
this.m_iY = iY;
this.m_iWidth = iWidth;
this.m_iHeight = iHeight;
this.m_cColor = cColor;
this.m_iType = iType;
this.m_tStartTime = tStartTime;
this.m_tStopTime = tStopTime;
}
/*************************************************
Function: isInRange
Description: 是否在范围之内
Input: left 左起始点 right 右终点
Output: 无
return: 无
*************************************************/
FileInfo.prototype.isInRange = function (left, right) {
if ((this.m_iX + this.m_iWidth) <= left || this.m_iX >= right) {
return false;
} else {
return true;
}
}
/*************************************************
Function: setPos
Description: 设置位置内
Input: iX iY左起始点坐标 iWidth 宽度 iHeight高度
Output: 无
return: 无
*************************************************/
FileInfo.prototype.setPos = function (iX, iY, iWidth, iHeight) {
this.m_iX = iX;
this.m_iWidth = iWidth;
this.m_iY = iY;
this.m_iHeight = iHeight;
}
/*************************************************
Function: setPosRange
Description: 设置范围
Input: ixMin, ixMax
Output: 无
return: 无
*************************************************/
FileInfo.prototype.setPosRange = function (ixMin, ixMax) {
this.m_ixMin = ixMin;
this.m_ixMax = ixMax;
}
/*************************************************
Function: draw
Description: 画文件信息
Input: g 设备资源
Output: 无
return: 无
*************************************************/
FileInfo.prototype.draw = function (g) {
if (this.isInRange(this.m_ixMin, this.m_ixMax)) {
var colorOld = g.fillStyle;
g.fillStyle = this.m_cColor;
if ((this.m_iX >= this.m_ixMin) && (this.m_iX + this.m_iWidth) <= this.m_ixMax) {
g.fillRect(this.m_iX, this.m_iY, this.m_iWidth, this.m_iHeight);
} else if ((this.m_iX < this.m_ixMax) && ((this.m_iX + this.m_iWidth) > this.m_ixMax)) {
g.fillRect(this.m_iX, this.m_iY, this.m_ixMax - this.m_iX, this.m_iHeight);
} else {
g.fillRect(this.m_ixMin, this.m_iY, (this.m_iX + this.m_iWidth) - this.m_ixMin, this.m_iHeight);
}
g.fillStyle = colorOld;
}
}
/*************************************************
* Copyright 2007-2011 Hikvision Digital Technology Co., Ltd.
* Class TimeBar
* @author chenxiangzhen
* @created 2011-04-06
* @version v1.0
* @function 工具类,时间条
*************************************************/
function TimeBar(canvas /*, iWidth, iHeight*/ ) {
if (arguments.length >= 3) {
canvas.width = arguments[1];
canvas.height = arguments[2];
} else {
canvas.width = 300;
canvas.height = 300;
}
this.m_canvas = canvas;
this.m_ctx = canvas.getContext("2d");
this.m_iMinFileWidth = 1; //文件的最小宽度
this.backgroundColor = 'rgb(0, 0, 0)'; //时间条背景颜色
this.partLineColor = 'rgb(48,48,48)'; //分割线颜色
this.channelNameColor = 'rgb(150, 150, 150)'; //通道名称颜色
this.timeScaleColor = 'rgb(150, 150, 150)'; //时间条刻度颜色
this.middleLineColor = 'rgb(255, 204, 0)'; //中轴线颜色
this.middleLineTimeColor = 'rgb(255, 255, 255)'; //中轴时间颜色
this.curLineTimeColor = 'rgb(255,0,0)';
this.defaultFileColor = 'rgb(0, 191, 255)'; //默认录像类型颜色
this.manualFileColor = 'rgb(0, 255, 0)'; //手动录像颜色
this.alarmFileColor = 'rgb(255, 0, 0)'; //警告录像颜色
this.motionFileColor = 'rgb(255, 255, 0)' //移動錄像顏色
this.intelligentFileColor = 'rgb(127, 0, 255)' //智能录像颜色
this.m_fMidTimeFont = '14px Verdana'; //中线时间字体及大小
this.m_fCurTimeFont = '12px Verdana'; //鼠标当前时间字体及大小
this.m_fScaleFont = '10px Verdana'; //刻度字体及大小 sans-serif
this.m_fChannelNameFont = '14px Verdana'; //通道名称字体
canvas.style.backgroundColor = this.backgroundColor;
this.m_szCurChannelName = ''; //当前通道名称
this.m_fCellTime = parseFloat(2.0); //每个代表几个小时
this.ScaleInfo = new Array();
this.ScaleInfoNum = parseInt(24 / this.m_fCellTime, 10); //总的刻度数量
this.ScaleInfoDisNum = 12; //显示的刻度数量
//初始化刻度
for (var i = 0; i <= this.ScaleInfoNum; i++) {
this.ScaleInfo.push(new ScaleInfo(0, 0, parseInt(i * 3600 * this.m_fCellTime)));
}
this.ScaleInfo.push(new ScaleInfo(0, 0, parseInt(this.ScaleInfoNum * 3600 * this.m_fCellTime)));
this.m_iMaxWndNum = 16; //最大窗口数
this.m_iSelWnd = 0; //选中的窗口号
this.m_iSpanType = 6;
this.FileInfoSet = new Array(this.m_iMaxWndNum); //文件信息集合
//初始化文件信息集合
for (i = 0; i < this.m_iMaxWndNum; i++) {
this.FileInfoSet[i] = new Array();
}
this.m_iHeight = parseInt(canvas.height, 10);
this.m_iWidth = parseInt(canvas.width, 10);
this.m_iFileListStartPos = 0; // 文件列表起始位置
this.m_iBlankHeight = 4; // 中间及底边空白宽度
this.m_iTimeRectHeight = 40; //parseInt(this.m_iHeight * 4 / 7) 时间块的高度
this.m_iFileRectHeight = this.m_iHeight - this.m_iTimeRectHeight - this.m_iBlankHeight * 2; //文件块的高度
// this.m_iMiddleLinePos = parseInt((this.m_iFileListStartPos + this.m_iWidth) / 2, 10); //中轴线的位置
this.m_iMiddleLinePos = parseInt((this.m_iFileListStartPos) / 2, 10);
this.m_iCellWidth = Math.floor((this.m_iWidth - this.m_iFileListStartPos) / this.ScaleInfoDisNum); //每个刻度的宽度
this.m_iCellMilliseconds = parseInt((3600 * this.m_fCellTime * 1000) / this.m_iCellWidth, 10); //每个像素的毫秒数
this.m_tCurrentMidTime = new Time(); //时间轴起始时间 00:00:00
// this.m_ctx.font = this.m_fMidTimeFont;
// this.m_iTextWidth = this.m_ctx.measureText(this.m_tCurrentMidTime.getStringTime()).width;
this.m_tMouseCurTime = new Time(); //当前鼠标点的时间
this.m_ctx.font = this.m_fCurTimeFont;
this.m_iCurTextWidth = this.m_ctx.measureText(this.m_tMouseCurTime.getStringTime()).width;
this.m_iCanvasLeft = getObjLeft(this.m_canvas);
this.m_iCanvasTop = getObjTop(this.m_canvas);
//初始化时间刻度信息
for (i = 0; i <= this.ScaleInfoNum; i++) {
// 计算与中轴线的时间差(只计算时分秒)
var seconds = (this.ScaleInfo[i].m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (this.ScaleInfo[i].m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (this.ScaleInfo[i].m_iSecond - this.m_tCurrentMidTime.m_iSecond);
var iScalePos = this.m_iMiddleLinePos + parseInt(parseFloat(seconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
// 设置刻度位置范围
this.ScaleInfo[i].setPosRange(this.m_iFileListStartPos, this.m_iFileListStartPos + parseInt(this.m_iCellWidth * this.ScaleInfoNum));
this.ScaleInfo[i].setPos(iScalePos, this.m_iTimeRectHeight);
}
//注册消息响应
this.m_ieventX = 0;
this.m_iMousePosX = 0;
this.m_iClickPosX = 0;
this.m_tClickCurTime = 0;
this.m_tClickPreTime = 0;
this.m_bMOuseDown = false;
this.m_bMouseOver = false;
this.m_iMove = 0;
this.m_iMiddleLineTime = 0;
this.Start = function (oEvent) {
this.m_ieventX = oEvent.clientX;
this.m_iMiddleLineTime = this.m_tCurrentMidTime.m_iMilliseconds;
this.m_bMOuseDown = true;
addEventHandler(document, 'mousemove', bindAsEventListener(this, this.Move));
addEventHandler(document, 'mouseup', bind(this, this.Stop));
//焦点丢失
addEventHandler(window, "blur", bindAsEventListener(this, bindAsEventListener(this, this.Stop)));
//阻止默认动作
if (oEvent.preventDefault) {
oEvent.preventDefault();
} else {
oEvent.returnValue = false;
}
removeEventHandler(canvas, 'mousemove', bindAsEventListener(this, this.onMouseMove));
};
this.mouseUpCallbackFunc = function () {};
this.Stop = function () {
document.body.style.cursor = 'default';
this.m_canvas.style.cursor = "url(../images/playback/H_point1.cur),pointer";
this.m_bMOuseDown = false;
this.mouseUpCallbackFunc();
removeEventHandler(document, 'mousemove', bindAsEventListener(this, this.Move));
removeEventHandler(document, 'mouseup', bindAsEventListener(this, this.Stop));
removeEventHandler(window, "blur", bindAsEventListener(this, this.Stop));
addEventHandler(canvas, 'mousemove', bindAsEventListener(this, this.onMouseMove));
};
this.onMouseMoveIn = true;
this.Move = function (oEvent) {
this.m_iMove = oEvent.clientX - this.m_ieventX;
if (this.m_bMOuseDown) {
if (this.m_iSpanType != 6) {
//清除选择
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
var initDate;
var newm_iMiddleLineTime = this.m_iMiddleLineTime - this.m_iMove * this.m_iCellMilliseconds;
if (!SelDate) {
initDate = new Date();
} else {
initDate = new Date(SelDate);
}
var initYear = initDate.getFullYear();
var initMonth = initDate.getMonth();
var initDay = initDate.getDate();
var tsCurrentTime = new Date(initYear, initMonth, initDay, 0, 0, 0);
var teCurrentTime = new Date(initYear, initMonth, initDay, 23, 59, 59).getTime() - this.m_iWidth * this.m_iCellMilliseconds;
if (newm_iMiddleLineTime < tsCurrentTime.getTime()) {
this.m_tCurrentMidTime.setTimeByMis(tsCurrentTime.getTime());
} else if (newm_iMiddleLineTime > teCurrentTime) {
this.m_tCurrentMidTime.setTimeByMis(teCurrentTime);
} else {
this.m_tCurrentMidTime.setTimeByMis(this.m_iMiddleLineTime - this.m_iMove * this.m_iCellMilliseconds);
}
this.repaint();
}
}
};
this.m_canvas.style.cursor = "url(../images/playback/H_point1.cur),pointer";
this.onMouseMove = function (oEvent) {
this.m_iMousePosX = oEvent.clientX - this.m_iCanvasLeft;
// this.m_tMouseCurTime.setTimeByMis((this.m_iMousePosX - this.m_iMiddleLinePos) * this.m_iCellMilliseconds + this.m_tCurrentMidTime.m_iMilliseconds);
this.m_tMouseCurTime.setTimeByMis(this.m_iMousePosX * this.m_iCellMilliseconds + this.m_tCurrentMidTime.m_iMilliseconds);
this.repaint();
var szCurMouseTime = this.m_tMouseCurTime.getStringTime();
// this.m_ctx.fillStyle = this.middleLineTimeColor;
// this.m_ctx.font = this.m_fCurTimeFont;
// this.m_ctx.fillText(szCurMouseTime, (this.m_iMousePosX - parseInt(this.m_iCurTextWidth / 2)), parseInt(this.m_iTimeRectHeight / 4));
this.m_ctx.strokeStyle = this.middleLineColor;
this.m_ctx.lineWidth = 2;
this.m_ctx.beginPath();
this.m_ctx.moveTo(this.m_iMousePosX, 0);
this.m_ctx.lineTo(this.m_iMousePosX, this.m_iHeight);
this.m_ctx.stroke();
};
this.ondbClick = function (oEvent) {
var strRemotePlaybackRequest, strRemotePlaybackSetPos, szCurMouseTime;
this.m_iClickPosX = oEvent.clientX - this.m_iCanvasLeft;
this.m_tClickPreTime = this.m_iClickPosX * this.m_iCellMilliseconds + this.m_tCurrentMidTime.m_iMilliseconds;
if (m_bIsPlaying) {
if (this.m_tClickPreTime < m_szStartTimeSeconds) {
this.m_tClickCurTime = m_szStartTimeSeconds;
selclkTime = m_szStartTimeSeconds;
this.m_tMouseCurTime.setTimeByMis(m_szStartTimeSeconds);
this.repaint();
szCurMouseTime = this.m_tMouseCurTime.getStringTime();
strRemotePlaybackSetPos = "" + szCurMouseTime.substr(0, 4) + "" + szCurMouseTime.substr(5, 2) + "" + szCurMouseTime.substr(8, 2) + "" + szCurMouseTime.substr(11, 2) + "" + szCurMouseTime.substr(14, 2) + "" + szCurMouseTime.substr(17, 2) + "";
gDvr.RemotePlaybackSetPos(plkSelChn - 1, strRemotePlaybackSetPos);
if (m_bWndPause) {
gDvr.RemotePlaybackSuspend(0, plkSelChn - 1);
}
} else if (this.m_tClickPreTime > m_szEndTimeSeconds) {
return
} else {
for (var m = 0; m < m_szStartTimeSet.length; m++) {
var startPreTime = new Date(m_szTime[m].start.substr(0, 4), m_szTime[m].start.substr(5, 2) - 1, m_szTime[m].start.substr(8, 2), m_szTime[m].start.substr(11, 2), m_szTime[m].start.substr(14, 2), m_szTime[m].start.substr(17, 2)).getTime();
var startNextTime = new Date(m_szTime[m].end.substr(0, 4), m_szTime[m].end.substr(5, 2) - 1, m_szTime[m].end.substr(8, 2), m_szTime[m].end.substr(11, 2), m_szTime[m].end.substr(14, 2), m_szTime[m].end.substr(17, 2)).getTime();
if (m + 1 <= m_szStartTimeSet.length - 1) {
var nextTime = new Date(m_szTime[m + 1].start.substr(0, 4), m_szTime[m + 1].start.substr(5, 2) - 1, m_szTime[m + 1].start.substr(8, 2), m_szTime[m + 1].start.substr(11, 2), m_szTime[m + 1].start.substr(14, 2), m_szTime[m + 1].start.substr(17, 2)).getTime();
}
if (this.m_tClickPreTime >= startPreTime && this.m_tClickPreTime <= startNextTime) {
this.m_tClickCurTime = this.m_tClickPreTime;
selclkTime = this.m_tClickCurTime;
this.repaint();
this.m_tMouseCurTime.setTimeByMis(this.m_tClickCurTime);
szCurMouseTime = this.m_tMouseCurTime.getStringTime();
strRemotePlaybackSetPos = "" + szCurMouseTime.substr(0, 4) + "" + szCurMouseTime.substr(5, 2) + "" + szCurMouseTime.substr(8, 2) + "" + szCurMouseTime.substr(11, 2) + "" + szCurMouseTime.substr(14, 2) + "" + szCurMouseTime.substr(17, 2) + "";
gDvr.RemotePlaybackSetPos(plkSelChn - 1, strRemotePlaybackSetPos);
if (m_bWndPause) {
gDvr.RemotePlaybackSuspend(0, plkSelChn - 1);
}
return
} else if (this.m_tClickPreTime > startNextTime && this.m_tClickPreTime < nextTime) {
this.m_tClickCurTime = nextTime;
selclkTime = this.m_tClickCurTime;
this.repaint();
this.m_tMouseCurTime.setTimeByMis(this.m_tClickCurTime);
szCurMouseTime = this.m_tMouseCurTime.getStringTime();
strRemotePlaybackSetPos = "" + szCurMouseTime.substr(0, 4) + "" + szCurMouseTime.substr(5, 2) + "" + szCurMouseTime.substr(8, 2) + "" + szCurMouseTime.substr(11, 2) + "" + szCurMouseTime.substr(14, 2) + "" + szCurMouseTime.substr(17, 2) + "";
gDvr.RemotePlaybackSetPos(plkSelChn - 1, strRemotePlaybackSetPos);
if (m_bWndPause) {
gDvr.RemotePlaybackSuspend(0, plkSelChn - 1);
}
return
}
}
}
} else {
if (m_szStartTimeSet.length == 0) {
return
}
for (var m = 0; m < m_szStartTimeSet.length; m++) {
var startPreTime = new Date(m_szTime[m].start.substr(0, 4), m_szTime[m].start.substr(5, 2) - 1, m_szTime[m].start.substr(8, 2), m_szTime[m].start.substr(11, 2), m_szTime[m].start.substr(14, 2), m_szTime[m].start.substr(17, 2)).getTime();
var startNextTime = new Date(m_szTime[m].end.substr(0, 4), m_szTime[m].end.substr(5, 2) - 1, m_szTime[m].end.substr(8, 2), m_szTime[m].end.substr(11, 2), m_szTime[m].end.substr(14, 2), m_szTime[m].end.substr(17, 2)).getTime();
if (this.m_tClickPreTime >= startPreTime && this.m_tClickPreTime <= startNextTime) {
var date = new Date(this.m_tClickPreTime);
var date1 = new Date(startPreTime);
var date2 = new Date(startNextTime);
playFlag = true;
// strRemotePlaybackRequest = "" + (plkSelChn-1) + "0false" + date1.getFullYear() + "" + (date1.getMonth() + 1) + "" + date1.getDate() + "" + date1.getHours() + "" + date1.getMinutes() + "" + date1.getSeconds() + "" + date2.getFullYear() + "" + (date2.getMonth() + 1) + "" + date2.getDate() + "" + date2.getHours() + "" + date2.getMinutes() + "" + date2.getSeconds() + "";
strRemotePlaybackRequest = "" + (plkSelChn - 1) + "0false" + date1.getFullYear() + "" + (date1.getMonth() + 1) + "" + date1.getDate() + "000" + date2.getFullYear() + "" + (date2.getMonth() + 1) + "" + date2.getDate() + "235959";
gDvr.StartRemotePlayback(strRemotePlaybackRequest);
strRemotePlaybackSetPos = "" + date.getFullYear() + "" + (date.getMonth() + 1) + "" + date.getDate() + "" + date.getHours() + "" + date.getMinutes() + "" + date.getSeconds() + "";
gDvr.RemotePlaybackSetPos(plkSelChn - 1, strRemotePlaybackSetPos);
this.m_tClickCurTime = this.m_tClickPreTime;
selclkTime = this.m_tClickPreTime;
this.repaint();
$("#playdisable").attr("title", lg.get("IDS_PLAYBACK_PAUSE"));
$("#playdisable").removeClass().addClass("pause");
$("#stop").removeClass().addClass("stop");
$("#SlowlyForward").removeClass().addClass("slowlyforward");
$("#FastForward").removeClass().addClass("fastforward");
$("#SingleFrame").removeClass().addClass("singleframe");
$("#capture").removeClass().addClass("capture");
$("#playbackBtn_7").removeClass().addClass("closesound");
$(".toolright").show();
$("#speedLogo").text("1X");
m_bIsPlaying = true;
m_bWndPause = false;
return
}
}
}
};
this.onMouseWheel = function (oEvent) {
if (oEvent.preventDefault) {
oEvent.preventDefault();
} else {
oEvent.returnValue = false;
}
oEvent.wheelDelta > 0 ? this.m_iSpanType++ : this.m_iSpanType--;
if (this.m_iSpanType >= 12) {
this.m_iSpanType = 12;
}
if (this.m_iSpanType <= 6) {
this.m_iSpanType = 6;
}
tTimeBar.SetSpantype(this.m_iSpanType);
};
this.onMouseOut = function (oEvent) {
this.repaint();
};
addEventHandler(canvas, 'mousedown', bindAsEventListener(this, this.Start));
addEventHandler(canvas, 'mousemove', bindAsEventListener(this, this.onMouseMove));
addEventHandler(canvas, 'mouseout', bindAsEventListener(this, this.onMouseOut));
addEventHandler(canvas, 'dblclick', bindAsEventListener(this, this.ondbClick));
addEventHandler(canvas, 'mousewheel', bindAsEventListener(this, this.onMouseWheel));
this.repaint();
}
/*************************************************
Function: repaint
Description: 重绘
Input: 无
Output: 无
return: 无
*************************************************/
TimeBar.prototype.repaint = function () {
this.updateScalePos();
this.updateFileListPos();
this.m_ctx.clearRect(0, 0, this.m_iWidth, this.m_iHeight);
//画中轴时间
// this.m_ctx.fillStyle = this.middleLineTimeColor;
// this.m_ctx.font = this.m_fMidTimeFont;
// this.m_iTextWidth = this.m_ctx.measureText(szCurrentTime).width;
// this.m_ctx.fillText(szCurrentTime, (this.m_iMiddleLinePos - parseInt(this.m_iTextWidth / 2)), parseInt(this.m_iTimeRectHeight / 2) + 5);
//画通道名称分割线
this.m_ctx.strokeStyle = this.partLineColor;
this.m_ctx.lineWidth = 1;
this.m_ctx.beginPath();
this.m_ctx.moveTo(this.m_iFileListStartPos, this.m_iTimeRectHeight);
this.m_ctx.lineTo(this.m_iFileListStartPos, this.m_iHeight);
this.m_ctx.stroke();
//画文件两条横轴和纵轴
this.m_ctx.lineWidth = this.m_iBlankHeight;
this.m_ctx.beginPath();
this.m_ctx.moveTo(0, this.m_iTimeRectHeight);
this.m_ctx.lineTo(this.m_iWidth, this.m_iTimeRectHeight);
this.m_ctx.stroke();
this.m_ctx.beginPath();
this.m_ctx.moveTo(0, this.m_iHeight - this.m_iBlankHeight / 2);
this.m_ctx.lineTo(this.m_iWidth, this.m_iHeight - this.m_iBlankHeight / 2);
this.m_ctx.stroke();
//显示通道名称
this.m_ctx.fillStyle = this.channelNameColor;
this.m_ctx.font = this.m_fChannelNameFont;
this.m_ctx.fillText(this.m_szCurChannelName, 0, this.m_iTimeRectHeight + this.m_iBlankHeight + parseInt(this.m_iFileRectHeight / 2) + 5, 90);
this.m_ctx.strokeStyle = this.timeScaleColor;
this.m_ctx.font = this.m_fScaleFont;
this.m_ctx.lineWidth = 1;
//画时间刻度
for (i = 0; i < this.ScaleInfoNum; i++) {
if (this.ScaleInfo[i].isInRange(this.m_iFileListStartPos, this.m_iWidth)) {
this.m_ctx.beginPath();
this.m_ctx.moveTo(this.ScaleInfo[i].m_ix, this.m_iTimeRectHeight);
this.m_ctx.lineTo(this.ScaleInfo[i].m_ix, this.m_iHeight);
this.m_ctx.stroke();
this.m_ctx.fillText(this.ScaleInfo[i].m_szTime, this.ScaleInfo[i].m_ix - 15, this.m_iTimeRectHeight - 5);
}
}
this.m_ctx.beginPath();
this.m_ctx.moveTo(this.ScaleInfo[this.ScaleInfoNum].m_ix, this.m_iTimeRectHeight);
this.m_ctx.lineTo(this.ScaleInfo[this.ScaleInfoNum].m_ix, this.m_iHeight);
this.m_ctx.stroke();
this.m_ctx.fillText(this.ScaleInfo[this.ScaleInfoNum].m_szTime, this.ScaleInfo[this.ScaleInfoNum].m_ix - 15, this.m_iTimeRectHeight - 5);
//画文件信息区域
for (i = 0; i < this.FileInfoSet[this.m_iSelWnd].length; i++) {
this.FileInfoSet[this.m_iSelWnd][i].draw(this.m_ctx);
}
//画中轴线
this.m_ctx.strokeStyle = this.middleLineColor;
this.m_ctx.lineWidth = 2;
this.m_ctx.beginPath();
this.m_ctx.moveTo(0, 0);
this.m_ctx.lineTo(this.m_iMiddleLinePos, this.m_iHeight);
this.m_ctx.stroke();
//画播放线
var m_iClickPosX = parseInt((this.m_tClickCurTime - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
this.m_iClickPosX = this.m_iMiddleLinePos + parseInt(parseFloat(m_iClickPosX / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
this.m_ctx.strokeStyle = this.curLineTimeColor;
this.m_ctx.lineWidth = 2;
this.m_ctx.beginPath();
this.m_ctx.moveTo(this.m_iClickPosX, 0);
this.m_ctx.lineTo(this.m_iClickPosX, this.m_iHeight);
this.m_ctx.stroke();
};
/*************************************************
Function: updateScalePos
Description: 更新刻度
Input: 无
Output: 无
return: 无
*************************************************/
TimeBar.prototype.updateScalePos = function () {
if (this.ScaleInfo.length == 0) {
return;
}
// 以00:00移动的距离为准
var seconds = (this.ScaleInfo[0].m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (this.ScaleInfo[0].m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (this.ScaleInfo[0].m_iSecond - this.m_tCurrentMidTime.m_iSecond);
var iPos0 = this.m_iMiddleLinePos + parseInt(parseFloat(seconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
if (iPos0 < this.ScaleInfo[0].m_ixMin) {
iPos0 = this.ScaleInfo[0].m_ixMax - (this.ScaleInfo[0].m_ixMin - iPos0);
} else if (iPos0 > this.ScaleInfo[0].m_ixMax) {
iPos0 = this.ScaleInfo[0].m_ixMin + (iPos0 - this.ScaleInfo[0].m_ixMax);
}
var iMoved = iPos0 - this.ScaleInfo[0].m_ix;
//没有移动直接返回
if (iMoved == 0) {
return;
}
// 更新所有的刻度
for (var i = 0; i <= this.ScaleInfoNum; i++) {
var iScalePos = this.ScaleInfo[i].m_ix + iMoved;
// 设置刻度位置范围
this.ScaleInfo[i].setPosRange(this.m_iFileListStartPos, this.m_iFileListStartPos + parseInt(this.m_iCellWidth * this.ScaleInfoNum));
this.ScaleInfo[i].setPos(iScalePos, this.m_iTimeRectHeight);
}
};
/*************************************************
Function: updateFileListPos
Description: 更新文件
Input: 无
Output: 无
return: 无
*************************************************/
TimeBar.prototype.updateFileListPos = function () {
var iFileLength = this.FileInfoSet[this.m_iSelWnd].length;
if (iFileLength == 0) {
return;
}
var tStartTime = this.FileInfoSet[this.m_iSelWnd][0].m_tStartTime;
var seconds = parseInt((tStartTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
var iFile0Pos = this.m_iMiddleLinePos + parseInt(parseFloat(seconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
var iMoved = iFile0Pos - this.FileInfoSet[this.m_iSelWnd][0].m_iX;
//没有移动直接返回
if (iMoved == 0) {
return;
}
// 更新所有
for (i = 0; i < iFileLength; i++) {
var iX = this.FileInfoSet[this.m_iSelWnd][i].m_iX + iMoved;
var iY = this.FileInfoSet[this.m_iSelWnd][i].m_iY;
var iWidth = this.FileInfoSet[this.m_iSelWnd][i].m_iWidth;
var iHeight = this.FileInfoSet[this.m_iSelWnd][i].m_iHeight;
this.FileInfoSet[this.m_iSelWnd][i].setPos(iX, iY, iWidth, iHeight);
}
}
/*************************************************
Function: resize
Description: 重置大小
Input: iWidth宽度, iHeight高度
Output: 无
return: 无
*************************************************/
TimeBar.prototype.resize = function (iWidth, iHeight) {
this.m_canvas.height = iHeight;
this.m_canvas.width = iWidth;
this.m_iHeight = iHeight;
this.m_iWidth = iWidth;
this.m_iTimeRectHeight = parseInt(this.m_iHeight * 4 / 7);
this.m_iFileRectHeight = this.m_iHeight - this.m_iTimeRectHeight - this.m_iBlankHeight * 2;
this.m_iMiddleLinePos = parseInt((this.m_iFileListStartPos + this.m_iWidth) / 2);
this.m_iCellWidth = Math.floor((this.m_iWidth - this.m_iFileListStartPos) / this.ScaleInfoDisNum);
this.m_iCellMilliseconds = parseInt((3600 * this.m_fCellTime * 1000) / this.m_iCellWidth, 10);
//初始化时间刻度信息
for (i = 0; i < this.ScaleInfoNum; i++) {
// 计算与中轴线的时间差(只计算时分秒)
var seconds = (this.ScaleInfo[i].m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (this.ScaleInfo[i].m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (this.ScaleInfo[i].m_iSecond - this.m_tCurrentMidTime.m_iSecond);
var iScalePos = this.m_iMiddleLinePos + parseInt(parseFloat(seconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
// 设置刻度位置范围
this.ScaleInfo[i].setPosRange(this.m_iFileListStartPos, this.m_iFileListStartPos + parseInt(this.m_iCellWidth * this.ScaleInfoNum));
this.ScaleInfo[i].setPos(iScalePos, this.m_iTimeRectHeight);
}
//初始化文件列表信息
for (i = 0; i < this.FileInfoSet[this.m_iSelWnd].length; i++) {
var FileInfoSetSel = this.FileInfoSet[this.m_iSelWnd][i];
var iXLeftSeconds = parseInt((FileInfoSetSel.m_tStartTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
var iFilePosLeft = this.m_iMiddleLinePos + parseInt(parseFloat(iXLeftSeconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
/*var iXRightSeconds = (tStopTime.m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (tStopTime.m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (tStopTime.m_iSecond - this.m_tCurrentMidTime.m_iSecond);*/
var iXRightSeconds = parseInt((FileInfoSetSel.m_tStopTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
var iFilePosRight = this.m_iMiddleLinePos + parseInt(parseFloat(iXRightSeconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
if ((iFilePosRight - iFilePosLeft) < this.m_iMinFileWidth) {
iFilePosRight = iFilePosLeft + this.m_iMinFileWidth;
}
FileInfoSetSel.setPos(iFilePosLeft, this.m_iTimeRectHeight + parseInt(this.m_iBlankHeight / 2), iFilePosRight - iFilePosLeft, this.m_iFileRectHeight + 2);
}
this.repaint();
}
/*************************************************
Function: SetSpantype
Description: 设置时间条的显示样式
Input: 无
Output: 无
return: 无
*************************************************/
TimeBar.prototype.SetSpantype = function (iSpanType) {
switch (iSpanType) {
case 6: //每2小时一格
this.ScaleInfoDisNum = 12;
this.m_fCellTime = parseFloat(2.0);
// this.m_tCurrentMidTime = new Time();
var tCurTime = new Time();
tCurTime.parseTime(m_year + '-' + m_month + '-' + m_day + ' ' + '00:00:00');
this.m_tCurrentMidTime.setTimeByMis(tCurTime.m_iMilliseconds);
break;
case 7: //每小时一格
this.ScaleInfoDisNum = 12;
this.m_fCellTime = parseFloat(1.0);
break;
case 8: //每半小时一格
this.ScaleInfoDisNum = 12;
this.m_fCellTime = parseFloat(0.5);
break;
case 9: //每半小时一格
this.ScaleInfoDisNum = 8;
this.m_fCellTime = parseFloat(0.5);
break;
case 10: //每10分钟一格
this.ScaleInfoDisNum = 12;
this.m_fCellTime = parseFloat(1 / 6);
break;
case 11: //每5分钟一格
this.ScaleInfoDisNum = 12;
this.m_fCellTime = parseFloat(1 / 12);
break;
case 12: //每5分钟一格
this.ScaleInfoDisNum = 6;
this.m_fCellTime = parseFloat(1 / 12);
break;
default:
this.ScaleInfoDisNum = 12;
this.m_fCellTime = parseFloat(1.0);
return;
}
this.ScaleInfoNum = parseInt(24 / this.m_fCellTime, 10);
this.m_iCellWidth = Math.floor((this.m_iWidth - this.m_iFileListStartPos) / this.ScaleInfoDisNum);
this.m_iCellMilliseconds = parseInt((3600 * this.m_fCellTime * 1000) / this.m_iCellWidth, 10);
if (iSpanType != 6) {
this.m_tCurrentMidTime.setTimeByMis(this.m_tMouseCurTime.m_iMilliseconds - this.m_iMousePosX * this.m_iCellMilliseconds);
var limitTime = this.m_tMouseCurTime.m_iMilliseconds - this.m_tMouseCurTime.m_iHour * 3600 * 1000 - this.m_tMouseCurTime.m_iMinute * 60 * 1000 - this.m_tMouseCurTime.m_iSecond * 1000;
if (this.m_tCurrentMidTime.m_iMilliseconds < limitTime) {
this.m_tCurrentMidTime.setTimeByMis(limitTime);
}
}
//初始化刻度
this.ScaleInfo.length = 0;
for (var i = 0; i < this.ScaleInfoNum; i++) {
this.ScaleInfo.push(new ScaleInfo(0, 0, parseInt(i * 3600 * this.m_fCellTime)));
}
this.ScaleInfo.push(new ScaleInfo(0, 0, parseInt(this.ScaleInfoNum * 3600 * this.m_fCellTime)));
//初始化时间刻度信息
for (i = 0; i <= this.ScaleInfoNum; i++) {
// 计算与中轴线的时间差(只计算时分秒)
var seconds = (this.ScaleInfo[i].m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (this.ScaleInfo[i].m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (this.ScaleInfo[i].m_iSecond - this.m_tCurrentMidTime.m_iSecond);
var iScalePos = this.m_iMiddleLinePos + parseInt(parseFloat(seconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
// 设置刻度位置范围
this.ScaleInfo[i].setPosRange(this.m_iFileListStartPos, this.m_iFileListStartPos + parseInt(this.m_iCellWidth * this.ScaleInfoNum));
this.ScaleInfo[i].setPos(iScalePos, this.m_iTimeRectHeight);
}
//初始化文件列表信息
for (i = 0; i < this.FileInfoSet[this.m_iSelWnd].length; i++) {
var FileInfoSetSel = this.FileInfoSet[this.m_iSelWnd][i];
var iXLeftSeconds = parseInt((FileInfoSetSel.m_tStartTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
var iFilePosLeft = this.m_iMiddleLinePos + parseInt(parseFloat(iXLeftSeconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
/*var iXRightSeconds = (tStopTime.m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (tStopTime.m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (tStopTime.m_iSecond - this.m_tCurrentMidTime.m_iSecond);*/
var iXRightSeconds = parseInt((FileInfoSetSel.m_tStopTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
var iFilePosRight = this.m_iMiddleLinePos + parseInt(parseFloat(iXRightSeconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
if ((iFilePosRight - iFilePosLeft) < this.m_iMinFileWidth) {
iFilePosRight = iFilePosLeft + this.m_iMinFileWidth;
}
FileInfoSetSel.setPos(iFilePosLeft, this.m_iTimeRectHeight + parseInt(this.m_iBlankHeight / 2), iFilePosRight - iFilePosLeft, this.m_iFileRectHeight + 2);
}
this.repaint();
};
/*************************************************
Function: addFile
Description: 添加文件
Input: StartTime 开始时间, StopTime 结束时间, iType 类型, iWndNum 默认当前窗口 添加到某个窗口
Output: 无
return: 无
*************************************************/
TimeBar.prototype.addFile = function (StartTime, StopTime, iType /*, iWndNum*/ ) {
var tStartTime = new Time();
var tStopTime = new Time();
tStartTime.parseTime(StartTime);
tStopTime.parseTime(StopTime);
var fileColor;
switch (iType) {
case '1':
fileColor = this.defaultFileColor;
break;
case '2':
fileColor = this.manualFileColor;
break;
case '3':
fileColor = this.alarmFileColor;
break;
case '4':
fileColor = this.motionFileColor;
break;
case '5':
fileColor = this.intelligentFileColor;
break;
default:
//fileColor = this.defaultFileColor;
//默认录像类型修改为报警类型
fileColor = this.defaultFileColor;
break;
}
/*var iXLeftSeconds = (tStartTime.m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (tStartTime.m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (tStartTime.m_iSecond - this.m_tCurrentMidTime.m_iSecond);*/
var iXLeftSeconds = parseInt((tStartTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
// var iFilePosLeft = this.m_iMiddleLinePos + parseInt(parseFloat(iXLeftSeconds / (7200 * this.m_fCellTime)) * this.m_iCellWidth);
var iFilePosLeft = parseInt(parseFloat(iXLeftSeconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth); //中轴线的横坐标为0
/*var iXRightSeconds = (tStopTime.m_iHour - this.m_tCurrentMidTime.m_iHour) * 3600 + (tStopTime.m_iMinute - this.m_tCurrentMidTime.m_iMinute) * 60 + (tStopTime.m_iSecond - this.m_tCurrentMidTime.m_iSecond);*/
var iXRightSeconds = parseInt((tStopTime.m_iMilliseconds - this.m_tCurrentMidTime.m_iMilliseconds) / 1000);
// var iFilePosRight = this.m_iMiddleLinePos + parseInt(parseFloat(iXRightSeconds / (7200 * this.m_fCellTime)) * this.m_iCellWidth);
var iFilePosRight = parseInt(parseFloat(iXRightSeconds / (3600 * this.m_fCellTime)) * this.m_iCellWidth);
var fileInfo = new FileInfo(iFilePosLeft, this.m_iTimeRectHeight + parseInt(this.m_iBlankHeight / 2), iFilePosRight - iFilePosLeft, this.m_iFileRectHeight + 2, iType, fileColor, tStartTime, tStopTime);
fileInfo.setPosRange(this.m_iFileListStartPos, this.m_iFileListStartPos + parseInt(this.m_iCellWidth * this.ScaleInfoNum));
if (arguments.length >= 4) {
this.FileInfoSet[arguments[3]].push(fileInfo);
} else {
this.FileInfoSet[this.m_iSelWnd].push(fileInfo);
}
};
/*************************************************
Function: clearWndFileList
Description: 清空某个窗口的文件信息
Input: iWndNum 窗口号 0-15 默认当前选中窗口
Output: 无
return: 无
*************************************************/
TimeBar.prototype.clearWndFileList = function () /*iWndNum*/ {
var iWndParam;
if (arguments.length == 0) {
iWndParam = this.m_iSelWnd;
} else {
iWndParam = arguments[0];
}
if (iWndParam < 0) {
iWndParam = 0;
}
if (iWndParam >= 16) {
iWndParam = 15
}
this.FileInfoSet[iWndParam].length = 0;
}
/*************************************************
Function: setMidLineTime
Description: 设置中轴线时间
Input: szTime yyyy-MM-dd HH:mm:ss
Output: 无
return: 无
*************************************************/
TimeBar.prototype.setMidLineTime = function (szTime) {
var tCurTime = new Time();
tCurTime.parseTime(szTime);
this.m_tCurrentMidTime.setTimeByMis(tCurTime.m_iMilliseconds);
/*this.updateScalePos();
this.updateFileListPos();*/
this.repaint();
}
/*************************************************
Function: setMouseUpCallback
Description: 设置鼠标弹起回调函数
Input: func 回调函数 function(tStartTime, tStopTime)
Output: 无
return: 无
*************************************************/
TimeBar.prototype.setMouseUpCallback = function (callbackFunc) {
this.mouseUpCallbackFunc = callbackFunc;
}