// ***************************************************************************** // 文 件 名: jmonitor.js // 作 者: wsj // 版 本: 1.0.0.0 // 日 期: 2014-07-15 // 文件描述: // 监控控件 // 说 明: // 支持Silverlight下带界面的质检和监控,同时支持非界面的监控数据接口 // 修改说明: // ***************************************************************************** var G_oMonitorCtrl = null; function JMonitorCtrl(nLeft,nTop,nWidth,nHeight,relationPath,oContentWindow,oWindow) { //########################// // 属性 // //########################// //公共属性 this.left = nLeft; this.top = nTop; this.width = nWidth; this.height = nHeight; oWindow = (typeof(oWindow) == "undefined")?null:oWindow; this._window = (oWindow==null)?window:oWindow; this._contentWindow = (oContentWindow==null)?window:oContentWindow; this.id = "oMonitor_" + Math.ceil(Math.random() * 100); this.name = this.id + "_Ctrl"; this.oMonitorShow = null; this.oSL_MonShow = null; this.oSilverlight = null; G_oMonitorCtrl = this; //电话条对象 this.oJVccBar = null; this._relationPath = (typeof(relationPath) == "undefined")?"":relationPath; this._createObject = function(){ this.oMonitorShow = this._window.document.createElement("DIV"); this.oMonitorShow.style.cursor = "move"; this.oMonitorShow.style.position = "absolute"; this.oMonitorShow.style.border = "1px solid #828282"; this.oMonitorShow.style.left = this.left+"px"; this.oMonitorShow.style.top = this.top+"px"; this.oMonitorShow.style.width = this.width+"px"; this.oMonitorShow.style.height = this.height+"px"; this.oMonitorShow.style.textAlign = "center"; this.oMonitorShow.id = "silverlightControlHost"; if(this._contentWindow == this._window) this._contentWindow.document.body.appendChild(this.oMonitorShow); else this._contentWindow.appendChild(this.oMonitorShow); this.oMonitorShow.innerHTML = this._getMSLHtml(); this.oSL_MonShow = this.oMonitorShow.firstChild; } this._getMSLHtml = function(){ var sText = ""; sText = sText + ""; sText = sText + ""; sText = sText + ""; sText = sText + ""; sText = sText + ""; sText = sText + ""; sText = sText + ""; // sText = sText + ""; sText = sText + ""; sText = sText + "\"Get"; sText = sText + ""; sText = sText + ""; return sText; } this._createObject(); this._ExecuteCmd = function(cmdType,param,mType) { if(this.oJVccBar == null) { alert("电话条对象为空,不能执行质检命令!"); return; } if(cmdType == "listen") { this.oJVccBar.Listen(param,mType); } else if(cmdType == "help"){ this.oJVccBar.Help(param,mType); } else if(cmdType == "insert"){ this.oJVccBar.Insert(param,mType); } else if(cmdType == "intercept"){ this.oJVccBar.Intercept(param,mType); } else if(cmdType == "forcerelease"){ this.oJVccBar.ForeReleaseCall(param,mType); } else if(cmdType == "disconnect"){ this.oJVccBar.Disconnect(); } else if (cmdType == "forceidle") { this.oJVccBar.ForceIdle(param); } else if (cmdType == "forcebusy") { this.oJVccBar.ForceBusy(param); } else if (cmdType == "forceout") { this.oJVccBar.ForceOut(param); } } this._GetAppMainPage = function(){ if(this.oSL_MonShow != null){ if(this.oSilverlight == null) { this.oSilverlight = this.oSL_MonShow.Content.MainApp; this.oSilverlight.RegisterAPIEvent("","MonintorCallBack"); this.OnMonitorControlLoad(); } } } //-------------------------------------------------------------------------------------------------- // 公用函数 //-------------------------------------------------------------------------------------------------- this.Destory = function(){ if(this._contentWindow == this._window) this._contentWindow.document.body.removeChild(this.oMonitorShow); else this._contentWindow.removeChild(this.oMonitorShow); } this.SetVccBarCtrl = function(oVccBar){ this.oJVccBar = oVccBar; } this.Intial = function(ip,port,vccid,agentId,passWord) { if(this.oSilverlight != null) { this.oSilverlight.Initial(ip,port,vccid,agentId,passWord); } } this.SetWallBoardServer = function (ip, port) { if (this.oSilverlight != null) { this.oSilverlight.SetReportServer(ip, port); } } this.SetFunctionPage = function (pages) { if(this.oSilverlight != null) { this.oSilverlight.SetFunctionPage(pages); } } //1:display 2:API this.SetAppMode = function(mode) { if(this.oSilverlight != null) { this.oSilverlight.SetAppMode(mode); } } this.ChangeMode = function(index) { if(this.oSilverlight != null) { this.oSilverlight.ChangeMode(index); } } this.GetVersion = function () { if (this.oSilverlight != null) { return this.oSilverlight.GetVersion(); } } this.SetReportBtnStatus = function(btnIds,agentStatus) { if(this.oSilverlight != null) this.oSilverlight.SetEableBtns(btnIds,agentStatus); } this.SetAgentWorkReport = function(agentID,agentStatus,workStatus) { if(this.oSilverlight != null) this.oSilverlight.SetAgentStatus(agentID,agentStatus,workStatus); } //方法 //2.3.5 监控命令 41 //2.3.5.1 InitialState(查询监控信息) 41 this.InitialState = function InitialState() { if(this.oSilverlight != null) return this.oSilverlight.InitialState(); return -1; } //2.3.5.2 AgentQuery(查询座席信息) 42 this.AgentQuery = function AgentQuery(monitorid,curpos) { if(this.oSilverlight != null) return this.oSilverlight.AgentQuery(monitorid,curpos); return -1; } //2.3.5.3 TelQuery(电话信息查询) 43 this.TelQuery = function TelQuery(monitorid,curpos) { if(this.oSilverlight != null) return this.oSilverlight.TelQuery(monitorid,curpos) ; return -1; } //2.3.5.4 IvrQuery(IVR信息查询) 43 this.IvrQuery = function IvrQuery(monitorid,curpos) { if(this.oSilverlight != null) return this.oSilverlight.IvrQuery(monitorid,curpos); return -1; } //2.3.5.5 ServiceQuery(服务器信息查询) 44 this.ServiceQuery = function ServiceQuery(monitorid,curpos) { if(this.oSilverlight != null) return this.oSilverlight.ServiceQuery(monitorid,curpos); return -1; } //2.3.5.6 TaskQuery(任务信息查询) 46 this.TaskQuery = function TaskQuery(monitorid,curpos) { if(this.oSilverlight != null) return this.oSilverlight.TaskQuery(monitorid,curpos); return -1; } //2.3.5.7 CallReportQuery(呼叫统计信息查询) 47 this.CallReportQuery = function CallReportQuery(monitorid,curpos) { if(this.oSilverlight != null) return this.oSilverlight.CallReportQuery(monitorid,curpos); return -1; } //2.3.5.8 GetTaskSummary(得到具体Task概述信息) 49 this.GetTaskSummary = function GetTaskSummary(monitorid,taskid) { if(this.oSilverlight != null) return this.oSilverlight.GetTaskSummary(monitorid,taskid); return -1; } //2.3.5.9 QueryMonitorSumInfo(查询指定参数的统计信息) 23 this.QueryMonitorSumInfo = function QueryMonitorSumInfo(cmdName,amdParam){ if(this.oSilverlight != null) return this.oSilverlight.QueryMonitorSumInfo(cmdName,amdParam); return -1; } //2.3.5.10 StartNotification(开始监控) 50 this.StartNotification = function StartNotification(id,type,flag) { if(this.oSilverlight != null) return this.oSilverlight.StartNotification(id,type,flag); return -1; } //2.3.5.11 EndNotification(结束监控) 51 this.EndNotification = function EndNotification(id) { if(this.oSilverlight != null) return this.oSilverlight.EndNotification(id); return -1; } //事件 this.OnMonitorControlLoad = function(){} this.OnMethodResponseEvent = function(key,vReturn){ } //电话条 this.OnAgentReport = function (AgentReportInfo){} this.OnTelReport = function (TelReportInfo){} this.OnServiceReport = function (ServiceReportInfo){} this.OnIvrReport = function (IvrReportInfo){} this.OnTaskReport = function (TaskReportInfo){} this.OnOutboundReport = function (TaskInfo){} this.OnCallReportInfo = function (CallInfo){} this.OnQueryMonitorSumReport = function (cmdName,reportInfo){} this.OnWallServiceReport = function (serviceReportInfo){} this.OnWallQueueReport = function (queueInfo){} this.OnServiceStaticReport = function (staticInfo){} this.OnAgentStaticReport = function (staticInfo){} this.logMsg = function (obj, name) {} //显示函数 this.Display = function (flag) { if(flag == 1) { //this.oMonitorShow.style.display = "block"; this.Refresh(); } else { // this.oMonitorShow.style.display = "none"; this.oMonitorShow.style.left = "0px"; this.oMonitorShow.style.top = "0px"; this.oMonitorShow.style.width = "0px"; this.oMonitorShow.style.height = "0px"; } } this.Refresh = function () { if( this.oSL_MonShow != null) { this.oSL_MonShow.style.left = this.left; this.oSL_MonShow.style.top = this.top; this.oSL_MonShow.style.width = this.width; this.oSL_MonShow.style.height = this.height; } this.Resize(this.left,this.top,this.width,this.height); } this.Resize = function (nLeft,nTop,nWidth,nHeight) { this.left = (typeof(nLeft)=="number")?nLeft:0; this.top = (typeof(nTop)=="number")?nTop:0; this.width = (nWidth>=0)?nWidth:100; this.height = (nHeight>=0)?nHeight:100; this.oMonitorShow.style.left = this.left+"px"; this.oMonitorShow.style.top = this.top+"px"; this.oMonitorShow.style.width = this.width+"px"; this.oMonitorShow.style.height = this.height+"px"; //this.oSL_MonShow.style.width = this.width; //this.oSL_MonShow.style.height = this.height; } return this; } function onSilverlightError(sender, args) { var appSource = ""; if (sender != null && sender != 0) { appSource = sender.getHost().Source; } var errorType = args.ErrorType; var iErrorCode = args.ErrorCode; if (errorType == "ImageError" || errorType == "MediaError") { return; } var errMsg = "Unhandled Error in Silverlight Application " + appSource + "\n" ; errMsg += "Code: "+ iErrorCode + " \n"; errMsg += "Category: " + errorType + " \n"; errMsg += "Message: " + args.ErrorMessage + " \n"; if (errorType == "ParserError") { errMsg += "File: " + args.xamlFile + " \n"; errMsg += "Line: " + args.lineNumber + " \n"; errMsg += "Position: " + args.charPosition + " \n"; } else if (errorType == "RuntimeError") { if (args.lineNumber != 0) { errMsg += "Line: " + args.lineNumber + " \n"; errMsg += "Position: " + args.charPosition + " \n"; } errMsg += "MethodName: " + args.methodName + " \n"; } throw new Error(errMsg); } function SilverlightPluginLoaded() { if(G_oMonitorCtrl != null) { G_oMonitorCtrl._GetAppMainPage(); } } function MonitorFromSL(cmdType,destNum,mType) { if(G_oMonitorCtrl != null) G_oMonitorCtrl._ExecuteCmd(cmdType,destNum,mType); } function MonintorCallBack(key,param1,param2) { if(G_oMonitorCtrl != null) { if( key == "InitialState" || key == "AgentQuery" || key == "TelQuery" || key == "IvrQuery" || key == "ServiceQuery" || key == "TaskQuery" || key == "CallReportQuery" || key == "GetTaskSummary" || key == "QueryMonitorSumInfo" ||key == "StartNotification" || key == "EndNotification") { G_oMonitorCtrl.OnMethodResponseEvent(key,param1); } else if(key == "OnAgentReport"){ G_oMonitorCtrl.OnAgentReport(param1);} else if(key == "OnTelReport"){ G_oMonitorCtrl.OnTelReport(param1);} else if(key == "OnServiceReport"){ G_oMonitorCtrl.OnServiceReport(param1);} else if(key == "OnIvrReport"){ G_oMonitorCtrl.OnIvrReport(param1);} else if(key == "OnTaskReport"){ G_oMonitorCtrl.OnTaskReport(param1);} else if(key == "OnOutboundReport"){ G_oMonitorCtrl.OnOutboundReport(param1);} else if(key == "OnCallReportInfo"){ G_oMonitorCtrl.OnCallReportInfo(param1);} else if(key == "OnQueryMonitorSumReport"){ G_oMonitorCtrl.OnQueryMonitorSumReport(param1,param2);} else if(key == "OnWallServiceReport"){ G_oMonitorCtrl.OnWallServiceReport(param1);} else if(key == "OnWallQueueReport"){ G_oMonitorCtrl.OnWallQueueReport(param1);} else if(key == "OnServiceStaticReport"){ G_oMonitorCtrl.OnServiceStaticReport(param1);} else if(key == "OnAgentStaticReport"){ G_oMonitorCtrl.OnAgentStaticReport(param1);} } }