李勇

1.修改白板标注模块的删除逻辑,批量删除;2.全局替换http为https的逻辑

... ... @@ -58,9 +58,17 @@ export default class MessageEntrance extends Emiter {
constructor() {
super();
//sdk 信息
GlobalConfig.sdkVersion = "v1.67.2.20170811";
GlobalConfig.sdkVersion = "v1.68.2.20170812";
loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
//设置
let locationProtocol= location.protocol;
if(locationProtocol!="https:"){
GlobalConfig.locationProtocol="http://";
}else {
GlobalConfig.locationProtocol="https://";
}
loger.warn("protocol:" + GlobalConfig.locationProtocol);
//获取设备和系统信息
SystemConfig.getSystemInfo();
... ...
... ... @@ -517,7 +517,7 @@ GlobalConfig.classDetail = {}; //Sass直接返回的当前课堂基本信息
GlobalConfig.isRecordPlayBack = false; //是否是录制回放,默认是否
GlobalConfig.allowRecordMaxTime = 14400; //(秒)允许录制的最长时间,默认是4小时
GlobalConfig.allowRecordMaxTime = 24*60*60; //(秒)允许录制的最长时间
GlobalConfig.siteId_letv = 'shchuanbao'; //乐视,MS不需要动态选点的站点
GlobalConfig.ssTunnelAppURL = ''; //屏幕共享插件的地址
... ... @@ -533,5 +533,7 @@ GlobalConfig.platform="pc";//平台 IOS/ANDROID/PC
GlobalConfig.explorer="未知";//浏览器
GlobalConfig.explorerVersion="未知";//浏览器版本
GlobalConfig.os="未知";//系统
GlobalConfig.locationProtocol="http://";//https;或http:
export default GlobalConfig;
... ...
... ... @@ -9,7 +9,7 @@ import MD5 from "md5";
import iphunter from 'iphunter';
import fetchJsonp from 'fetch-jsonp';
import ServerConfig from "config/ServerConfig";
import GlobalConfig from "GlobalConfig";
// 日志对象
const loger = Loger.getLoger('IpManager');
... ... @@ -80,7 +80,8 @@ class IpManager extends Emiter {
// //("addr=" + ip + "&token=b657c3507b324353e09c1958ee956a98efceb3e3"),转成MD5
let md5Str = MD5("addr=" + userIp + "&token=b657c3507b324353e09c1958ee956a98efceb3e3");
let timestamp = new Date().getTime();
let url = `http://ipapi.ipip.net/find?addr=${userIp}&sid=14&uid=5237&sig=${md5Str}&_=${timestamp}`;
//let url = `http://ipapi.ipip.net/find?addr=${userIp}&sid=14&uid=5237&sig=${md5Str}&_=${timestamp}`;
let url = `${GlobalConfig.locationProtocol}ipapi.ipip.net/find?addr=${userIp}&sid=14&uid=5237&sig=${md5Str}&_=${timestamp}`;
loger.log("获取IP信息->", url);
let _this = this;
fetchJsonp(url, {
... ...
... ... @@ -246,7 +246,8 @@ class RecordPlayBackParse extends Emiter {
this.initReplay();
loger.log("读取回放数据");
//let url = `http://123.56.73.119:80/h5dev/20170306/1357644520_20170306.rec`;
let url = `http://${ GlobalConfig.RecordServerIP}:${ GlobalConfig.RecordServerPort}/${GlobalConfig.recordFileName}`;
//let url = `http://${ GlobalConfig.RecordServerIP}:${ GlobalConfig.RecordServerPort}/${GlobalConfig.recordFileName}`;
let url = `${GlobalConfig.locationProtocol+ GlobalConfig.RecordServerIP}:${ GlobalConfig.RecordServerPort}/${GlobalConfig.recordFileName}`;
loger.log(url);
fetch(url, {
timeout: 180000 //加载文件超时时间3分
... ...
... ... @@ -38,7 +38,8 @@ class Sass extends Emiter {
msType int 媒体服务器类型
classType 课堂类型
*/
let url = `http://${_initInfo.portal}/3m/api/meeting/joinParams.do?meetingNumber=${_initInfo.classId}&userID=${_initInfo.userId}`;
//let url = `http://${_initInfo.portal}/3m/api/meeting/joinParams.do?meetingNumber=${_initInfo.classId}&userID=${_initInfo.userId}`;
let url = `${GlobalConfig.locationProtocol+_initInfo.portal}/3m/api/meeting/joinParams.do?meetingNumber=${_initInfo.classId}&userID=${_initInfo.userId}`;
loger.log('1.初始化init获取课堂校验信息.');
loger.log(url);
loger.log(_initInfo);
... ... @@ -117,7 +118,9 @@ class Sass extends Emiter {
isTeacher = 1
}
let url = `http://${confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`;
//let url = `http://${confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`;
let url = `${GlobalConfig.locationProtocol+confInfo.portal}/3m/api/meeting/signIn.do?siteId=${confInfo.siteId}&classId=${confInfo.classId}&isTeacher=${isTeacher}&password=${confInfo.password}`;
loger.log('3.课堂密码校验', url);
fetch(url, {
timeout: 5000
... ... @@ -154,7 +157,9 @@ class Sass extends Emiter {
//MD5校验-----------------------------------------------------------------------------------------
sendMD5Checking() {
let url = `http://${confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`;
// let url = `http://${confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`;
let url = `${GlobalConfig.locationProtocol+confInfo.portal}/3m/meeting/md5CheckMeeting.do?siteId=${confInfo.siteId}&meetingNumber=${confInfo.classId}&userId=${confInfo.userId}&userName=${confInfo.userName}&userType=${confInfo.userType}&nopassword=${confInfo.passwordRequired}&md5=${confInfo.md5}`;
loger.log('4.MD5校验', url);
fetch(url, {
timeout: 5000
... ... @@ -187,7 +192,9 @@ class Sass extends Emiter {
// 获取课堂基本详情------------------------------------------------------------------------------------
getClassDetail() {
let url = `http://${GlobalConfig.portal}/3m/meeting/getClassH5.do?classNumber=${GlobalConfig.classId}`;
// let url = `http://${GlobalConfig.portal}/3m/meeting/getClassH5.do?classNumber=${GlobalConfig.classId}`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/meeting/getClassH5.do?classNumber=${GlobalConfig.classId}`;
loger.log('获取Class详情.', url);
fetch(url, {
timeout: 5000
... ... @@ -236,7 +243,9 @@ class Sass extends Emiter {
*/
var timestamp = new Date().getTime();
var authId = MD5(GlobalConfig.classId + "" + timestamp); //课堂号+时间戳 的字符串,转成MD5
let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
//let url = `http://${GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/meeting/detail.do?meetingNumber=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('5.获取课堂课堂的完整信息 ');
loger.log(url);
fetch(url, {
... ... @@ -286,8 +295,10 @@ class Sass extends Emiter {
}
var timestamp = new Date().getTime();
var authId = MD5(_param.docId + "" + _param.classId + "" + timestamp); // docId+classId+timestamp的字符串,转成MD5
let url = `http://${GlobalConfig.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('sassDeleteDocument', url);
//let url = `http://${GlobalConfig.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/document/deleteRelation.do?docId=${_param.docId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('删除文档', url);
fetch(url, {
timeout: 5000
... ... @@ -326,7 +337,9 @@ class Sass extends Emiter {
console.warn('删除Music共享实现...');
var timestamp = new Date().getTime();
var authId = MD5(_param.fileId + "" + _param.classId + "" + timestamp); // docId+classId+timestamp的字符串,转成MD5
let url = `http://${GlobalConfig.portal}/3m/api/media/deleteRelation.do?mediaId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
//let url = `http://${GlobalConfig.portal}/3m/api/media/deleteRelation.do?mediaId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/media/deleteRelation.do?mediaId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('删除媒体共享文件', url);
fetch(url, {
... ... @@ -366,7 +379,9 @@ class Sass extends Emiter {
}
var timestamp = new Date().getTime();
var authId = MD5(_param.fileId + "" + _param.classId + "" + timestamp); // docId+classId+timestamp的字符串,转成MD5
let url = `http://${GlobalConfig.portal}/3m/api/sharedMedia/deleteRelation.do?fileId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
//let url = `http://${GlobalConfig.portal}/3m/api/sharedMedia/deleteRelation.do?fileId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/sharedMedia/deleteRelation.do?fileId=${_param.fileId}&classId=${GlobalConfig.classId}&timestamp=${timestamp}&authId=${authId}`;
loger.log('删除媒体共享文件', url);
fetch(url, {
... ... @@ -419,7 +434,9 @@ class Sass extends Emiter {
var timestamp = new Date().getTime();
var authId = MD5(GlobalConfig.classId + "" + timestamp); // (classId+timestamp)的字符串,转成MD5
let classStatusInfo = JSON.stringify(_param.classStatusInfo);
let url = `http://${GlobalConfig.portal}/3m/api/meeting/saveInfo.do`;
//let url = `http://${GlobalConfig.portal}/3m/api/meeting/saveInfo.do`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/meeting/saveInfo.do`;
loger.log('saveClassStatusInfo', url);
fetch(url, {
method: 'POST',
... ... @@ -483,7 +500,9 @@ class Sass extends Emiter {
let timestamp = new Date().getTime();
let authId = MD5(key + siteID + meetingID + timestamp);
let url = `http://${GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`;
//let url = `http://${GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/recordingMeeting/insertRecordingMeeting.do`;
loger.log('saveClassRecordContrlInfo', url);
fetch(encodeURI(url), {
... ... @@ -546,7 +565,8 @@ class Sass extends Emiter {
let correct = _param.correct.toString();
let options = JSON.stringify(_param.options);
let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`;
//let url = `http://${GlobalConfig.portal}/3m/api/question/add.do`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/question/add.do`;
loger.log('创建答题数据', url);
fetch(encodeURI(url), {
... ... @@ -622,7 +642,8 @@ class Sass extends Emiter {
let userId = _param.userId;
let userName = _param.userName;
let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`;
// let url = `http://${GlobalConfig.portal}/3m/api/question/answer.do`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/question/answer.do`;
loger.log('保存答题数据', url);
fetch(encodeURI(url), {
... ... @@ -675,8 +696,9 @@ class Sass extends Emiter {
//questionId long 题目id
let questionId = parseInt(_param.questionId); //题目id
let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`;
loger.log('查询题目数据', url);
// let url = `http://${GlobalConfig.portal}/3m/api/question/get.do`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/question/get.do`;
loger.log('查询题目数据', url);
//接口中用的是GET
fetch(encodeURI(url), {
method: 'POST',
... ... @@ -733,7 +755,8 @@ class Sass extends Emiter {
//questionId long 题目id
let questionId = parseInt(_param.questionId); //题目id
let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`;
//let url = `http://${GlobalConfig.portal}/3m/api/question/results.do`;
let url = `${GlobalConfig.locationProtocol+GlobalConfig.portal}/3m/api/question/results.do`;
loger.log('查询答题结果数据', url);
fetch(encodeURI(url), {
... ...
... ... @@ -46,7 +46,8 @@ class MediaModule {
fileName = 'playlist.m3u8';
}
port = (GlobalConfig.MS_PLAY_HLS_PORT == "" || GlobalConfig.MS_PLAY_HLS_PORT == null) ? "" : ":" + GlobalConfig.MS_PLAY_HLS_PORT;
path = "http://" + GlobalConfig.MS_PLAY_HLS_IP
//path = "http://" + GlobalConfig.MS_PLAY_HLS_IP
path =GlobalConfig.locationProtocol + GlobalConfig.MS_PLAY_HLS_IP
+ port + "/live/"
+ _param.streamId
+ ".m3u8";//
... ... @@ -79,7 +80,8 @@ class MediaModule {
}
//M3U8 http://123.56.73.119:6001/live/h5dev_2106728010_8ab3b0ed5a3a9220015a3a958f0d0003_983041_1489113860/total.m3u8
let port = (GlobalConfig.RS_RECORD_PLAY_PORT == "" || GlobalConfig.RS_RECORD_PLAY_PORT == null) ? "" : ":" + GlobalConfig.RS_RECORD_PLAY_PORT;
let path = "http://" + GlobalConfig.RS_RECORD_PLAY_IP
//let path = "http://" + GlobalConfig.RS_RECORD_PLAY_IP
let path =GlobalConfig.locationProtocol + GlobalConfig.RS_RECORD_PLAY_IP
+ port + "/live/"
+ _param.streamId
+ "/total.m3u8";
... ...
... ... @@ -33,434 +33,451 @@ const TYPE_CIRCLE = 3;//圆形
const TYPE_TEXT = 4;//文本
class WhiteBoardApe extends Ape {
constructor() {
super(
ApeConsts.WHITEBOARD_SESSION_ID,
ApeConsts.WHITEBOARD_SESSION_NAME,
ApeConsts.WHITEBOARD_SESSION_TAG
);
// properties
this.annoInfos = {};//储存所有的标注数据
this.insertHistory = [];//添加的白板记录,用于撤回操作
// 白板延迟
//Ape Models
this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
this.registerObj(pdu.RCPDU_REG_REGISTER_TABLE, ApeConsts.WHITEBOARD_OBJ_TABLE_ID,
ApeConsts.WHITEBOARD_OBJ_TABLE_NAME, ApeConsts.WHITEBOARD_OBJ_TABLE_TAG, 0, new ArrayBuffer);
// ape listeners
this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this));
//this.on(pdu.RCPDU_CONFERENCE_SEND_DATA_REQUEST, this.whiteboardMsgComingHandler.bind(this));//这个是课堂消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理
constructor() {
super(
ApeConsts.WHITEBOARD_SESSION_ID,
ApeConsts.WHITEBOARD_SESSION_NAME,
ApeConsts.WHITEBOARD_SESSION_TAG
);
// properties
this.annoInfos = {};//储存所有的标注数据
this.insertHistory = [];//添加的白板记录,用于撤回操作
// 白板延迟
//Ape Models
this.registerKey(this._session_id, this._session_name, this._session_tag, new ArrayBuffer);
this.registerObj(pdu.RCPDU_REG_REGISTER_TABLE, ApeConsts.WHITEBOARD_OBJ_TABLE_ID,
ApeConsts.WHITEBOARD_OBJ_TABLE_NAME, ApeConsts.WHITEBOARD_OBJ_TABLE_TAG, 0, new ArrayBuffer);
// ape listeners
this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this));
//this.on(pdu.RCPDU_CONFERENCE_SEND_DATA_REQUEST, this.whiteboardMsgComingHandler.bind(this));//这个是课堂消息类型,flash里在使用这里不再使用,各个模块的消息由模块自己来处理
}
_joinSessionHandler(_data) {
//loger.log("RCPDU_SESSION_JOIN_RESPONSE");
this.insertHistory = [];
}
//清除当前模块的数据
clearData() {
loger.log("clearData->")
this.annoInfos = {};//储存所有的标注数据
this.insertHistory = [];//添加的白板记录,用于撤回操作
}
//更新文档模块的录制信息,每次开启录制的时候需要把当前文档的信息更新一次
updaterRecordApeStatus(_param) {
/* if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack){
let curPageAnnos={};
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
curPageAnnos[key]=item;
}
}
if(Object.keys(curPageAnnos).length>0){
loger.log("开启录制成功->更新当前的标注数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
this.sendUpdaterAnnotaion({"itemIdxArr":curPageAnnos});
}else {
loger.log("开启录制成功->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
}
}*/
let curPageAnnos = {};
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
curPageAnnos[key] = item;
}
}
_joinSessionHandler(_data) {
//loger.log("RCPDU_SESSION_JOIN_RESPONSE");
this.insertHistory = [];
if (Object.keys(curPageAnnos).length > 0) {
loger.warn("录制状态发送改变->更新当前的标注数据->docId:", GlobalConfig.activeDocId, 'page:', GlobalConfig.activeDocCurPage);
this.sendUpdaterAnnotaion({"itemIdxArr": curPageAnnos});
} else {
loger.warn("录制状态发送改变->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:', GlobalConfig.activeDocCurPage);
}
}
/////////////发送数据操作//////////////////////////////////////////////////////
// 添加标注,发送信息
sendInsetAnnotaion(_param) {
if (_param == null || EngineUtils.isEmptyObject(_param)) {
loger.warn('添加标注失败->参数错误->', _param);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//清除当前模块的数据
clearData(){
loger.log("clearData->")
this.annoInfos = {};//储存所有的标注数据
this.insertHistory = [];//添加的白板记录,用于撤回操作
let itemIdx = EngineUtils.creatSoleNumberFromTimestamp();//创建时间戳,保证每条数据的唯一
let whiteBoardModelPdu = this.packPdu(_param, itemIdx);
if (whiteBoardModelPdu == null) {
loger.warn('添加标注失败-->参数错误->', _param);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//更新文档模块的录制信息,每次开启录制的时候需要把当前文档的信息更新一次
updaterRecordApeStatus(_param){
/* if(GlobalConfig.isHost&&!GlobalConfig.isRecordPlayBack){
let curPageAnnos={};
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
curPageAnnos[key]=item;
}
}
if(Object.keys(curPageAnnos).length>0){
loger.log("开启录制成功->更新当前的标注数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
this.sendUpdaterAnnotaion({"itemIdxArr":curPageAnnos});
}else {
loger.log("开启录制成功->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
}
}*/
let curPageAnnos={};
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
curPageAnnos[key]=item;
}
}
if(Object.keys(curPageAnnos).length>0){
loger.warn("录制状态发送改变->更新当前的标注数据->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
this.sendUpdaterAnnotaion({"itemIdxArr":curPageAnnos});
}else {
loger.warn("录制状态发送改变->当前没有标注数据需要更新->docId:", GlobalConfig.activeDocId, 'page:',GlobalConfig.activeDocCurPage);
}
//储存记录,用于返回上一步操作
this.insertHistory.push(whiteBoardModelPdu);
let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
tableItemPdu.itemIdx = itemIdx;//直接用时间戳作为id
tableItemPdu.registerObjId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定
tableItemPdu.itemData = whiteBoardModelPdu.toArrayBuffer();
//insert
let tableInsertItemPdu = new pdu['RCRegistryTableInsertItemPdu'];
tableInsertItemPdu.type = pdu.RCPDU_REG_TABLE_INSERT_PDU;//
tableInsertItemPdu.items.push(tableItemPdu);
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableInsertItemPdu.type;
updateObjPdu.userData = tableInsertItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
//loger.log("添加标注->itemIdx=" + tableItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
}
//撤销上一步
sendGotoPrev() {
loger.log("撤销上一步");
if (this.insertHistory == null || this.insertHistory.length < 1) {
loger.warn("无法继续上一步操作,已经没有可以撤销的数据");
return;
}
/////////////发送数据操作//////////////////////////////////////////////////////
// 添加标注,发送信息
sendInsetAnnotaion(_param) {
if (_param == null || EngineUtils.isEmptyObject(_param)) {
loger.warn('添加标注失败->参数错误->',_param);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
let itemIdx = EngineUtils.creatSoleNumberFromTimestamp();//创建时间戳,保证每条数据的唯一
let whiteBoardModelPdu = this.packPdu(_param, itemIdx);
if (whiteBoardModelPdu == null) {
loger.warn('添加标注失败-->参数错误->',_param);
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
//储存记录,用于返回上一步操作
this.insertHistory.push(whiteBoardModelPdu);
let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
tableItemPdu.itemIdx = itemIdx;//直接用时间戳作为id
tableItemPdu.registerObjId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定
tableItemPdu.itemData = whiteBoardModelPdu.toArrayBuffer();
//insert
let tableInsertItemPdu = new pdu['RCRegistryTableInsertItemPdu'];
tableInsertItemPdu.type = pdu.RCPDU_REG_TABLE_INSERT_PDU;//
tableInsertItemPdu.items.push(tableItemPdu);
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableInsertItemPdu.type;
updateObjPdu.userData = tableInsertItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
loger.log("添加标注->itemIdx=" + tableItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
let annoItem = this.insertHistory.pop();
if (annoItem) {
let temAnnos = {};
temAnnos[annoItem.itemIdx] = annoItem;
this.sendDeleteAnnotaion({"itemIdxArr": temAnnos});
}
//撤销上一步
sendGotoPrev() {
loger.log("撤销上一步");
if (this.insertHistory == null || this.insertHistory.length < 1) {
loger.warn("无法继续上一步操作,已经没有可以撤销的数据");
return;
}
let annoItem=this.insertHistory.pop();
if(annoItem){
let temAnnos={};
temAnnos[annoItem.itemIdx]=annoItem;
this.sendDeleteAnnotaion({"itemIdxArr":temAnnos});
}
}
//删除当前页码的所有标注
sendDeleteCurPageAnnotation(_param) {
this.insertHistory = [];
let curPageAnnos = {};
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
//loger.log("sendDeleteCurPageAnnotation 删除当前页面上的标注", key);
//this.sendDeleteAnnotaion({"itemIdx": key});
curPageAnnos[key] = item;
}
}
//删除当前页码的所有标注
sendDeleteCurPageAnnotation(_param) {
this.insertHistory=[];
let curPageAnnos={};
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
//loger.log("sendDeleteCurPageAnnotation 删除当前页面上的标注", key);
//this.sendDeleteAnnotaion({"itemIdx": key});
curPageAnnos[key]=item;
}
}
this.sendDeleteAnnotaion({"itemIdxArr":curPageAnnos});
this.sendDeleteAnnotaion({"itemIdxArr": curPageAnnos});
}
//删除所有标注
sendDeleteAllAnnotation(_param) {
this.insertHistory = [];
/* for (let key in this.annoInfos) {
this.sendDeleteAnnotaion({"itemIdx": key});
}*/
this.sendDeleteAnnotaion({"itemIdxArr": this.annoInfos});
}
//删除标注,发送信息 {"itemIdxArr":{}}
sendDeleteAnnotaion(_param) {
if (_param == null || _param.itemIdxArr == null) {
loger.warn("要删除的数据不存在->", _param);
return;
}
//删除所有标注
sendDeleteAllAnnotation(_param) {
this.insertHistory=[];
/* for (let key in this.annoInfos) {
this.sendDeleteAnnotaion({"itemIdx": key});
}*/
this.sendDeleteAnnotaion({"itemIdxArr":this.annoInfos});
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
/*for (let key in _param.itemIdxArr) {
let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu'];
tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU;//
tableDeleteItemPdu.itemIdx = parseInt(key);//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableDeleteItemPdu.type;
updateObjPdu.userData = tableDeleteItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
adapterPdu.item.push(adapterItemPdu);
}*/
let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu'];
tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU;//
for (let key in _param.itemIdxArr) {
tableDeleteItemPdu.itemIdx.push(parseInt(key));//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样
}
//删除标注,发送信息 {"itemIdxArr":{}}
sendDeleteAnnotaion(_param) {
if (_param == null||_param.itemIdxArr==null) {
loger.warn("要删除的数据不存在->",_param);
return;
}
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
for (let key in _param.itemIdxArr) {
let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu'];
tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU;//
tableDeleteItemPdu.itemIdx = parseInt(key);//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableDeleteItemPdu.type;
updateObjPdu.userData = tableDeleteItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
adapterPdu.item.push(adapterItemPdu);
}
loger.log("发送删除白板标注数据->长度:" + adapterPdu.item.length);
this.sendUniform(adapterPdu, true);
loger.log("发送删除白板标注数据->数量:" + tableDeleteItemPdu.itemIdx.length);
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableDeleteItemPdu.type;
updateObjPdu.userData = tableDeleteItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
adapterPdu.item.push(adapterItemPdu);
//loger.log("发送删除白板标注数据->长度:" + tableDeleteItemPdu.itemIdx.length);
this.sendUniform(adapterPdu, true);
}
/*sendDeleteAnnotaion(_param) {
if (_param == null) {
loger.warn("要删除的数据不存在");
return;
}
//{"itemIdx":itemIdx}
let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu'];
//optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_DELETE_PDU];
// repeated uint32 item_idx = 2;
tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU;//
tableDeleteItemPdu.itemIdx = parseInt(_param.itemIdx);//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableDeleteItemPdu.type;
updateObjPdu.userData = tableDeleteItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
loger.log("白板发送删除数据->" + tableDeleteItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
}*/
//更新标注
sendUpdaterAnnotaion(_param) {
if (_param == null || _param.itemIdxArr == null) {
loger.log('更新标注数据->失败->参数错误');
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
/*sendDeleteAnnotaion(_param) {
if (_param == null) {
loger.warn("要删除的数据不存在");
return;
}
//{"itemIdx":itemIdx}
let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu'];
//optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_DELETE_PDU];
// repeated uint32 item_idx = 2;
tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU;//
tableDeleteItemPdu.itemIdx = parseInt(_param.itemIdx);//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = tableDeleteItemPdu.type;
updateObjPdu.userData = tableDeleteItemPdu.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
adapterPdu.item.push(adapterItemPdu);
loger.log("白板发送删除数据->" + tableDeleteItemPdu.itemIdx);
this.sendUniform(adapterPdu, true);
}*/
//更新标注
sendUpdaterAnnotaion(_param) {
if (_param == null ||_param.itemIdxArr==null) {
loger.log('更新标注数据->失败->参数错误');
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return;
}
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
for (let key in _param.itemIdxArr) {
let itemIdx =parseInt(key);
let item= _param.itemIdxArr[key];
let whiteBoardModelPdu = this.packPdu(item, itemIdx);
if (whiteBoardModelPdu == null) {
loger.log('更新标注数据->失败->数据无效');
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
continue;
}
let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
tableItemPdu.itemIdx = itemIdx;
tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定
tableItemPdu.registerObjId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
tableItemPdu.itemData = whiteBoardModelPdu.toArrayBuffer();
//updater
let whiteBoardUpdateItem = new pdu['RCRegistryTableUpdateItemPdu'];
whiteBoardUpdateItem.type = pdu.RCPDU_REG_TABLE_UPDATE_PDU;//
whiteBoardUpdateItem.items.push(tableItemPdu);
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = whiteBoardUpdateItem.type;
updateObjPdu.userData = whiteBoardUpdateItem.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
adapterPdu.item.push(adapterItemPdu);
}
let len=adapterPdu.item.length
if(len>0){
loger.log("更新标注数据->发送数量->",adapterPdu.item.length);
this.sendUniform(adapterPdu, true);
}else {
loger.log("更新标注数据->没有可更新的数据");
}
let adapterPdu = new pdu['RCAdapterPdu'];
adapterPdu.type = pdu.RCPDU_REG_ADAPTER;
for (let key in _param.itemIdxArr) {
let itemIdx = parseInt(key);
let item = _param.itemIdxArr[key];
let whiteBoardModelPdu = this.packPdu(item, itemIdx);
if (whiteBoardModelPdu == null) {
loger.log('更新标注数据->失败->数据无效');
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
continue;
}
let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
tableItemPdu.itemIdx = itemIdx;
tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定
tableItemPdu.registerObjId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
tableItemPdu.itemData = whiteBoardModelPdu.toArrayBuffer();
//updater
let whiteBoardUpdateItem = new pdu['RCRegistryTableUpdateItemPdu'];
whiteBoardUpdateItem.type = pdu.RCPDU_REG_TABLE_UPDATE_PDU;//
whiteBoardUpdateItem.items.push(tableItemPdu);
let updateObjPdu = new pdu['RCRegistryUpdateObjPdu'];
updateObjPdu.objId = ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
updateObjPdu.subType = whiteBoardUpdateItem.type;
updateObjPdu.userData = whiteBoardUpdateItem.toArrayBuffer();
//同步
let adapterItemPdu = new pdu['RCAdapterItemPdu'];
adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ;
adapterItemPdu.itemData = updateObjPdu.toArrayBuffer();
adapterPdu.item.push(adapterItemPdu);
}
/////收到消息处理/////////////////////////////////////////////////////////////////////////////////
tableInsertHandler(owner, itemIdx, itemData) {
let whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData);
loger.log('tableInsertHandler',"activeDocId->",GlobalConfig.activeDocId ,"parentId->", whiteBoardModel.parentId);
//loger.log(whiteBoardModel);
if (whiteBoardModel) {
if (GlobalConfig.activeDocId == whiteBoardModel.parentId && GlobalConfig.activeDocCurPage == whiteBoardModel.curPageNo) {
//loger.log('显示新增的标注->');
this.insertAandShowAnnotaion(whiteBoardModel);
}
}
let len = adapterPdu.item.length
if (len > 0) {
loger.log("更新标注数据->发送数量->", adapterPdu.item.length);
this.sendUniform(adapterPdu, true);
} else {
loger.log("更新标注数据->没有可更新的数据");
}
tableUpdateHandler(owner, itemIdx, itemData) {
//白板标注数据不在这个函数中处理,在tableUpdateApeHandler中处理
/*let whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData);
loger.log('tableUpdateHandler',"activeDocId->",GlobalConfig.activeDocId ,"parentId->", whiteBoardModel.parentId);
loger.log(whiteBoardModel);
if (whiteBoardModel && whiteBoardModel.parentId == GlobalConfig.activeDocId && whiteBoardModel.curPageNo == GlobalConfig.activeDocCurPage) {
this.updateAandShowAnnotaion();
}*/
}
/////收到消息处理/////////////////////////////////////////////////////////////////////////////////
tableInsertHandler(owner, itemIdx, itemData) {
let whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData);
loger.log('新增标注', "activeDocId->", GlobalConfig.activeDocId, "parentId->", whiteBoardModel.parentId);
//loger.log(whiteBoardModel);
if (whiteBoardModel) {
if (GlobalConfig.activeDocId == whiteBoardModel.parentId && GlobalConfig.activeDocCurPage == whiteBoardModel.curPageNo) {
//loger.log('显示新增的标注->');
this.insertAandShowAnnotaion(whiteBoardModel);
}
}
tableUpdateApeHandler(_tableUpdateItems,_seekTime){
let tableUpdateItemsLen = _tableUpdateItems.length;
loger.log('白板标注更新->',"activeDocId->",GlobalConfig.activeDocId ,"数量->", tableUpdateItemsLen);
for (let i = 0; i < tableUpdateItemsLen; ++i) {
let tableItem = _tableUpdateItems[i];
let whiteBoardModel = this.unPackPdu(tableItem.owner, tableItem.itemIdx, tableItem.itemData);
}
this.updateAandShowAnnotaion();
}
tableUpdateHandler(owner, itemIdx, itemData) {
//白板标注数据不在这个函数中处理,在tableUpdateApeHandler中处理
/*let whiteBoardModel = this.unPackPdu(owner, itemIdx, itemData);
loger.log('tableUpdateHandler',"activeDocId->",GlobalConfig.activeDocId ,"parentId->", whiteBoardModel.parentId);
loger.log(whiteBoardModel);
if (whiteBoardModel && whiteBoardModel.parentId == GlobalConfig.activeDocId && whiteBoardModel.curPageNo == GlobalConfig.activeDocCurPage) {
this.updateAandShowAnnotaion();
}*/
}
tableUpdateApeHandler(_tableUpdateItems, _seekTime) {
let tableUpdateItemsLen = _tableUpdateItems.length;
loger.log('白板标注更新->', "activeDocId->", GlobalConfig.activeDocId, "数量->", tableUpdateItemsLen);
for (let i = 0; i < tableUpdateItemsLen; ++i) {
let tableItem = _tableUpdateItems[i];
let whiteBoardModel = this.unPackPdu(tableItem.owner, tableItem.itemIdx, tableItem.itemData);
}
tableDeleteHandler(object_id, tableDeleteData) {
// console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649
loger.log('删除白板数据->', object_id, tableDeleteData);//["tableDeleteHandler",1179649,{"type":231,"itemIdx":[1486301768]}]
if (tableDeleteData && tableDeleteData.itemIdx) {
let len = tableDeleteData.itemIdx.length;
let itemIdxs = tableDeleteData.itemIdx;
for (let i = 0; i < len; i++) {
if (this.annoInfos[itemIdxs[i]]) {
loger.log("删除白板数据:", itemIdxs[i]);
delete this.annoInfos[itemIdxs[i]];
}
}
this.updateAandShowAnnotaion();
}
tableDeleteHandler(object_id, tableDeleteData) {
// console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649
loger.log('删除白板数据->', object_id, tableDeleteData);//["tableDeleteHandler",1179649,{"type":231,"itemIdx":[1486301768]}]
if (tableDeleteData && tableDeleteData.itemIdx) {
let len = tableDeleteData.itemIdx.length;
let itemIdxs = tableDeleteData.itemIdx;
for (let i = 0; i < len; i++) {
if (this.annoInfos[itemIdxs[i]]) {
//loger.log("删除白板数据:", itemIdxs[i]);
delete this.annoInfos[itemIdxs[i]];
}
this.updateAandShowAnnotaion();
}
}
this.updateAandShowAnnotaion();
}
//文档更新,白板也要更新
docUpdateHandler(_data) {
//loger.log("白板收到文档更新的消息");
//loger.log(_data);
//文档更新,白板也要更新
docUpdateHandler(_data) {
//loger.log("白板收到文档更新的消息");
//loger.log(_data);
//如果切换了文档或翻页,清除之前的添加步骤记录
if (_data.action == ApeConsts.DOC_ACTION_SWITCH_DOC || _data.action == ApeConsts.DOC_ACTION_SWITCH_PAGE) {
this.insertHistory = [];
}
this.updateAandShowAnnotaion();
//如果切换了文档或翻页,清除之前的添加步骤记录
if (_data.action == ApeConsts.DOC_ACTION_SWITCH_DOC || _data.action == ApeConsts.DOC_ACTION_SWITCH_PAGE) {
this.insertHistory = [];
}
//删除白板数据
docDeleteHandler(_parentId) {
loger.log("白板收到文档删除的消息->", _parentId);
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == _parentId) {
loger.log("文档删除->白板数据也删除,itemIdx:" + key, "_parentId:", _parentId);
this.sendDeleteAnnotaion({"itemIdx": key});
}
}
//判断当前是否有文档在显示,如果文档没有显示就显示默认的白板数据
if(GlobalConfig.activeDocId==0){
this.insertHistory=[];
this.updateAandShowAnnotaion();
}
this.updateAandShowAnnotaion();
}
//删除白板数据
docDeleteHandler(_parentId) {
loger.log("白板收到文档删除的消息->", _parentId);
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == _parentId) {
loger.log("文档删除->白板数据也删除,itemIdx:" + key, "_parentId:", _parentId);
this.sendDeleteAnnotaion({"itemIdx": key});
}
}
//增量添加标注
insertAandShowAnnotaion(_item) {
let annotaionItems = [_item];
var updateObj = {
"isFresh": false,
"annotaionItems": annotaionItems
};
//loger.log("新增一条标注数据->显示到界面");
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, updateObj);
//判断当前是否有文档在显示,如果文档没有显示就显示默认的白板数据
if (GlobalConfig.activeDocId == 0) {
this.insertHistory = [];
this.updateAandShowAnnotaion();
}
//整体更新并且显示标注
updateAandShowAnnotaion() {
let annotaionItems = [];
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
annotaionItems.push(item);
//loger.log("显示和文档对应的白板数据->:", item.itemIdx, "doc->itemIdx:", GlobalConfig.activeDocId, "curPageNo:", GlobalConfig.activeDocCurPage);
} else {
//loger.log("不显示白板数据docUpdateHandler->",item.itemIdx);
}
}
var updateObj = {
"isFresh": true,//清除现有显示的数据
"annotaionItems": annotaionItems //最新需要显示的数据
};
//loger.log("清除当前显示的标注---->重绘标注数量--->", annotaionItems.length,"当前文档信息--->DocId->",GlobalConfig.activeDocId,"curPageNo->",GlobalConfig.activeDocCurPage);
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, updateObj);
}
//增量添加标注
insertAandShowAnnotaion(_item) {
let annotaionItems = [_item];
var updateObj = {
"isFresh": false,
"annotaionItems": annotaionItems
};
//loger.log("新增一条标注数据->显示到界面");
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, updateObj);
}
//整体更新并且显示标注
updateAandShowAnnotaion() {
let annotaionItems = [];
for (let key in this.annoInfos) {
let item = this.annoInfos[key];
if (item && item.parentId == GlobalConfig.activeDocId && item.curPageNo == GlobalConfig.activeDocCurPage) {
annotaionItems.push(item);
//loger.log("显示和文档对应的白板数据->:", item.itemIdx, "doc->itemIdx:", GlobalConfig.activeDocId, "curPageNo:", GlobalConfig.activeDocCurPage);
} else {
//loger.log("不显示白板数据docUpdateHandler->",item.itemIdx);
}
}
///////白板数据的封包和解包/////////////////////////////////////////
packPdu(_param, _itemIdx) {
//验证坐标点集合数组是否合法
if (_param.pointGroup == null || _param.pointGroup.length < 1) {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return null;
}
//判断type类型,根据type设置不同的参数
let whiteBoardModelPdu = new pdu['RCWhiteBoardDataModelPdu'];
switch (_param.type) {
case TYPE_BIGHT:
break;
case TYPE_LINE:
break;
case TYPE_RECT:
break;
case TYPE_CIRCLE:
whiteBoardModelPdu.radius = parseInt(_param.radius);
break;
case TYPE_TEXT:
whiteBoardModelPdu.fontSize = parseInt(_param.fontSize);
whiteBoardModelPdu.fontName = _param.fontName || null;
whiteBoardModelPdu.text = _param.text || null;
break;
default:
//其它类型不做处理
return null;
break;
}
//下面4个是必须的参数
whiteBoardModelPdu.type = _param.type;
whiteBoardModelPdu.itemIdx = _itemIdx;
whiteBoardModelPdu.initiator = GlobalConfig.nodeId;
whiteBoardModelPdu.parentId = GlobalConfig.activeDocId;//当前激活的文档id
whiteBoardModelPdu.curPageNo = GlobalConfig.activeDocCurPage;//当前激活的文档页码
whiteBoardModelPdu.pointGroup = EngineUtils.arrayToJsonString(_param.pointGroup);
whiteBoardModelPdu.color = _param.color || "#000000";
whiteBoardModelPdu.thickness = _param.thickness ||1;
return whiteBoardModelPdu;
var updateObj = {
"isFresh": true,//清除现有显示的数据
"annotaionItems": annotaionItems //最新需要显示的数据
};
//loger.log("清除当前显示的标注---->重绘标注数量--->", annotaionItems.length,"当前文档信息--->DocId->",GlobalConfig.activeDocId,"curPageNo->",GlobalConfig.activeDocCurPage);
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, updateObj);
}
///////白板数据的封包和解包/////////////////////////////////////////
packPdu(_param, _itemIdx) {
//验证坐标点集合数组是否合法
if (_param.pointGroup == null || _param.pointGroup.length < 1) {
this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return null;
}
unPackPdu(owner, itemIdx, itemData) {
try {
//loger.log("白板标注数据->unPackPdu");
let whiteBoardModelPdu = pdu['RCWhiteBoardDataModelPdu'].decode(itemData);
let _pointGroup = EngineUtils.arrayFromJsonString(whiteBoardModelPdu.pointGroup);
whiteBoardModelPdu.pointGroup = _pointGroup;
this.annoInfos[itemIdx] = whiteBoardModelPdu;
return whiteBoardModelPdu;
} catch (err) {
loger.log("白板标注数据->unPackPdu->Pdu解析错误,itemIdx=" + itemIdx + " err:" + err.message);
}
//判断type类型,根据type设置不同的参数
let whiteBoardModelPdu = new pdu['RCWhiteBoardDataModelPdu'];
switch (_param.type) {
case TYPE_BIGHT:
break;
case TYPE_LINE:
break;
case TYPE_RECT:
break;
case TYPE_CIRCLE:
whiteBoardModelPdu.radius = parseInt(_param.radius);
break;
case TYPE_TEXT:
whiteBoardModelPdu.fontSize = parseInt(_param.fontSize);
whiteBoardModelPdu.fontName = _param.fontName || null;
whiteBoardModelPdu.text = _param.text || null;
break;
default:
//其它类型不做处理
return null;
break;
}
//下面4个是必须的参数
whiteBoardModelPdu.type = _param.type;
whiteBoardModelPdu.itemIdx = _itemIdx;
whiteBoardModelPdu.initiator = GlobalConfig.nodeId;
whiteBoardModelPdu.parentId = GlobalConfig.activeDocId;//当前激活的文档id
whiteBoardModelPdu.curPageNo = GlobalConfig.activeDocCurPage;//当前激活的文档页码
whiteBoardModelPdu.pointGroup = EngineUtils.arrayToJsonString(_param.pointGroup);
whiteBoardModelPdu.color = _param.color || "#000000";
whiteBoardModelPdu.thickness = _param.thickness || 1;
return whiteBoardModelPdu;
}
unPackPdu(owner, itemIdx, itemData) {
try {
//loger.log("白板标注数据->unPackPdu");
let whiteBoardModelPdu = pdu['RCWhiteBoardDataModelPdu'].decode(itemData);
let _pointGroup = EngineUtils.arrayFromJsonString(whiteBoardModelPdu.pointGroup);
whiteBoardModelPdu.pointGroup = _pointGroup;
this.annoInfos[itemIdx] = whiteBoardModelPdu;
return whiteBoardModelPdu;
} catch (err) {
loger.log("白板标注数据->unPackPdu->Pdu解析错误,itemIdx=" + itemIdx + " err:" + err.message);
}
return null;
}
}
... ...