如何给FineReport设置自定义消息提醒工具
2017-02-20 · 上BI选帆软,专注BI十三年!
关注
展开全部
;
(function($){
/*定义一个工具对象,所有的工具以后都放进去*/
HG = {};
/*定义我们第一个基础类OBJ*/
HG.OBJ = function(options){
//保证子类能够继承父类的默认成员变量
this.options = $.extend(this._defaultOptions(), options);
//初始化对象
this._init();
};
$.extend(HG.OBJ.prototype, {
_defaultOptions: function () {
return {classType:"OBJ"};
},
_init:function(){}
});
/*定义用于生成子类的方法*/
HG.extend=function(parent,options){
var son = $.extend(parent,{});
son.prototype = $.extend(parent.prototype,options);
return son;
};
/*第一个就是要构建我们的通讯对象*/
/****定义一些通讯用的私有成员和方法*****/
//发送通道的状态,为了减轻服务器压力,采取单通道发送
var status = true;
var sendMsgList = [];
var receiveMsgList = [];
var server = null;
var sendType = null;
var dataType = null;
//最终发送消息的方法
var send=function(msg,onReceive,onComplete,onFailed){
if(!msg.inList){
msg.inList = true;
sendMsgList.push(msg);
}
if(status){
status = false;
var tempSendMsgList = sendMsgList;
sendMsgList = [];
FR.ajax({
url: server,
type: sendType,
dataType:dataType,
data:{msgList:tempSendMsgList},
success : function(receiveMsgList){
status = true;
onReceive(receiveMsgList);
},
complete: function(XMLHttpRequest,textStatus){
status = true;
onComplete(XMLHttpRequest,textStatus);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
status = true;
onFailed(XMLHttpRequest, textStatus, errorThrown);
}
});
}else{
setTimeout(function(){
send(msg,onReceive,onComplete,onFailed);
},1000);
}
};
var formatDate = function(date){
var d = new Date(date);
return d.getFullYear()+"-"+d.getMonth()+"-"+d.getDate()+" "+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds();
};
//通讯类,可以自己重写onReceive的方法来实现自己的消息工具,消息的内容为JSON格式,自己定义就好了
HG.CommunicationClient = HG.extend(HG.OBJ,{
_defaultOptions: function () {
return {
classType:"CommunicationClient",
//默认只跟当前的服务器进行联络
server:FR.servletURL+"?op=msgserver",
sendType:"POST",
dataType:"JSON",
//轮询的频率,默认3秒1次,越快服务器和客户端压力越大
pollingRate:3000
};
},
_init:function(){
server = this.options.server;
sendType = this.options.sendType;
dataType = this.options.dataType;
this.polling4Receive();
},
send:function(msg){
var self = this;
send(msg,self.onReceive, self.onComplete, self.onFailed);
},
//给某个用户发文本消息
sendText:function(toUserId,text){
this.send({action:"send",userId:toUserId,time:new Date().getTime(),content:{text:text}})
},
onReceive:function(msg){
if(msg.length>0){
for( var i=0; i<msg.length; i++ ){
console.info(formatDate(msg[i].time)+" "+msg[i].name+" "+decodeURI("%E8%AF%B4%EF%BC%9A")+" "+msg[i].content.text);
}
}
},
onFailed:function(XMLHttpRequest, textStatus, errorThrown){
},
onComplete:function(XMLHttpRequest, textStatus){
},
/*向服务器轮询,检查是否有自己的消息*/
polling4Receive:function(){
var self = this;
self.send({action:"findMessage",inList:false});
setTimeout(function(){
self.polling4Receive();
},self.options.pollingRate);
}
});
//先生成一个对话工具
HG.Talk = new HG.CommunicationClient();
})(jQuery);
在任意一个你需要的系统或者界面引入这段JS,
然后最基本的文本消息发送HG.Talk.sendText(接收者的用户名,文本消息的内容);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询