李勇

1.修改白板模块的对外接口,简化外部事件的监听

此 diff 太大无法显示。
... ... @@ -115,6 +115,7 @@ export default class MessageEntrance extends Emiter {
this.sendInsertAnnotaion=this._sendInsertAnnotaion;
this.sendDeleteAnnotaion=this._sendDeleteAnnotaion;
this.sendDeleteAllAnnotation=this._sendDeleteAllAnnotation;
this.sendGotoPrev=this._sendGotoPrev;
//DocApe
this.sendDocumentUpload= this._sendDocumentUpload;//上传文档
... ... @@ -475,6 +476,13 @@ export default class MessageEntrance extends Emiter {
_whiteboard_ape.sendDeleteAllAnnotation(_param);
}
}
//返回上一步标注
_sendGotoPrev(_param){
if(_whiteboard_ape){
_whiteboard_ape.gotoPrev(_param);
}
}
//DocApe
//上传文档
... ...
... ... @@ -47,10 +47,11 @@ MessageTypes.DOC_UPDATE = 'document.update';//更新文档
MessageTypes.DOC_DELETE='document.delete';//删除文档
MessageTypes.DOC_ANNOTATION = 'document.annotation';//笔记
//笔记事件定义
//白板笔记事件定义
MessageTypes.WHITEBOARD_ANNOTATION_UPDATE = 'whiteboard.annotation.update';
MessageTypes.WHITEBOARD_ANNOTAION_INSERT = 'whiteboard.annotation.insert';
MessageTypes.WHITEBOARD_ANNOTAION_DELETE = 'whiteboard.annotation.delete';
//MessageTypes.WHITEBOARD_ANNOTAION_INSERT = 'whiteboard.annotation.insert';
//MessageTypes.WHITEBOARD_ANNOTAION_DELETE = 'whiteboard.annotation.delete';
//MessageTypes.WHITEBOARD_ANNOTATION_CLEAR = 'whiteboard.annotation.clear';
//音频
... ...
... ... @@ -160,7 +160,7 @@ export default class Ape extends Emiter {
let tableInsertItemsLen = tableInsertItems.length;
for (let i = 0; i < tableInsertItemsLen; ++i) {
let insertItem = tableInsertItems[i];
console.log("insertItem",insertItem);
loger.log("insertItem",insertItem);
this.tableInsertHandler(insertItem.owner, insertItem.itemIdx, insertItem.itemData);
}
break;
... ... @@ -173,7 +173,7 @@ export default class Ape extends Emiter {
let tableUpdateData = pdu['RCRegistryTableUpdateItemPdu'].decode(user_data);
let tableUpdateItems = tableUpdateData.items;
let tableUpdateItemsLen= tableUpdateItems.length;
console.log("RCRegistryTableUpdateItemPdu "+tableUpdateItemsLen);
loger.log("RCRegistryTableUpdateItemPdu "+tableUpdateItemsLen);
console.log(tableUpdateData);
for (let i = 0; i < tableUpdateItemsLen; ++i) {
... ... @@ -209,7 +209,6 @@ export default class Ape extends Emiter {
tableDeleteHandler(tableId, record) {
loger.warn(this._session_name + ' tableDelHandler 应有子类具体覆盖处理.');
}
onJoinChannelHandlerSuccess(){
loger.warn(this._session_name + ' onJoinChannelHandlerSuccess 应有子类具体覆盖处理.');
}
... ...
... ... @@ -40,7 +40,8 @@ class WhiteBoardApe extends Ape {
ApeConsts.WHITEBOARD_SESSION_TAG
);
// properties
this.annoInfos = {};
this.annoInfos = {};//储存所有的标注数据
this.insertHistory=[];//添加的白板记录,用于撤回操作
// 白板延迟
// this._apeDelayed = true;
... ... @@ -56,27 +57,12 @@ class WhiteBoardApe extends Ape {
_joinSessionHandler(_data) {
loger.log("RCPDU_SESSION_JOIN_RESPONSE");
this.insertHistory=[];
}
/////////////发送数据操作//////////////////////////////////////////////////////
// 添加标注,发送信息
sendInsetAnnotaion(_param){
/* itemIdx=parseInt(Date.now()/1000);
let whiteBoardModelPdu =new pdu['RCWhiteBoardDataModel'];
whiteBoardModelPdu.id =itemIdx;
whiteBoardModelPdu.initiator =GlobalConfig.nodeId;
whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString([{"w":10,"h":20},{"w":10,"h":20},{"w":10,"h":20},{"w":10,"h":20}]);
whiteBoardModelPdu.type = 3;
*/
/* let whiteBoardModelPdu =new pdu['RCWhiteBoardDataModel'];
whiteBoardModelPdu.id =ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
whiteBoardModelPdu.initiator =GlobalConfig.nodeId;
whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString([{"w":133,"h":20},{"w":1313,"h":20},{"w":313,"h":20},{"w":10,"h":20}]);
whiteBoardModelPdu.type = 3;
*/
if(_param==null||EngineUtils.isEmptyObject(_param)){
loger.log('sendInsetAnnotaion失败,参数错误');
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
... ... @@ -92,6 +78,9 @@ class WhiteBoardApe extends Ape {
}
console.log(whiteBoardModelPdu);
//储存记录,用于返回上一步操作
this.insertHistory.push(whiteBoardModelPdu);
let tableItemPdu = new pdu['RCRegistryTableItemPdu'];
tableItemPdu.itemIdx=itemIdx;//直接用时间戳作为id
tableItemPdu.registerObjId=ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
... ... @@ -122,6 +111,16 @@ class WhiteBoardApe extends Ape {
console.log("添加白板数据=====itemIdx="+tableItemPdu.itemIdx);
this.sendUniform(adapterPdu,true);
}
//撤销上一步
gotoPrev(){
loger.log("白板返回上一步");
if(this.insertHistory==null||this.insertHistory.length<1){
loger.warn("无法继续上一步操作,已经没有可以撤销的数据");
return;
}
console.log(this.insertHistory);
this.sendDeleteAnnotaion(this.insertHistory.pop());
}
//删除所有标注
sendDeleteAllAnnotation(_param){
for (let key in this.annoInfos){
... ... @@ -130,8 +129,13 @@ class WhiteBoardApe extends Ape {
this.sendDeleteAnnotaion({"itemIdx":key});
}
}
//删除标注,发送信息
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];
... ... @@ -165,14 +169,6 @@ class WhiteBoardApe extends Ape {
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG);
return ;
}
/* let whiteBoardModelPdu =new pdu['RCWhiteBoardDataModel'];
whiteBoardModelPdu.id =ApeConsts.WHITEBOARD_OBJ_TABLE_ID;
whiteBoardModelPdu.initiator =GlobalConfig.nodeId;
whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString([{"w":133,"h":20},{"w":1313,"h":20},{"w":313,"h":20},{"w":10,"h":20}]);
whiteBoardModelPdu.type = 3;
*/
itemIdx=_param.itemIdx;
let whiteBoardModelPdu = this.packPdu(_param,itemIdx);
//console.log(whiteBoardModelPdu);
... ... @@ -216,6 +212,93 @@ class WhiteBoardApe extends Ape {
this.sendUniform(adapterPdu,true);
}
/////收到消息处理/////////////////////////////////////////////////////////////////////////////////
/* whiteboardMsgComingHandler(_data) {
//flash RCConferenceSendDataRequestPdu
//loger.warn('whiteboardMsgComingHandler needs to be handled.');
//const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(pdu);
//loger.log("whiteboardMsgComingHandler",recordInfo);
let receiveInfo = pdu['RCConferenceSendDataRequestPdu'].decode(_data);
loger.log("whiteboardMsgComingHandler",receiveInfo);
}*/
tableInsertHandler(owner, itemIdx,itemData) {
let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData);
loger.log('tableInsertHandler',whiteBoardModel);
if(whiteBoardModel){
if(GlobalConfig.activeDocId==whiteBoardModel.parentId&&GlobalConfig.activeDocCurPage==whiteBoardModel.curPageNo){
loger.log('WHITEBOARD_ANNOTAION_INSERT 显示到界面上',whiteBoardModel);
//this._emit(MessageTypes.WHITEBOARD_ANNOTAION_INSERT,whiteBoardModel);
this.insertAandShowAnnotaion(whiteBoardModel);
}
}
}
tableUpdateHandler(owner, itemIdx, itemData) {
let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData);
loger.log('tableUpdateHandler',whiteBoardModel);
this.updateAandShowAnnotaion();
}
tableDeleteHandler(object_id, tableDeleteData){
// console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649
loger.log('tableDeleteHandler',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]);
//this._emit(MessageTypes.WHITEBOARD_ANNOTAION_DELETE,{ "itemIdx":itemIdxs[i]});
delete this.annoInfos[itemIdxs[i]];
}
}
}
this.updateAandShowAnnotaion();
}
//文档更新,白板也要更新
docUpdateHandler(_data){
loger.log("白板收到文档更新的消息docUpdateHandler",_data);
this.updateAandShowAnnotaion();
}
//删除白板数据
docDeleteHandler(_parentId){
loger.log("白板收到文档删除的消息docDeleteHandler",_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
}
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("显示和文档对应的白板数据docUpdateHandler",item);
}else{
loger.log("不显示白板数据docUpdateHandler",item);
}
}
var updateObj={
"isFresh":true,
"annotaionItems":annotaionItems
}
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,updateObj);
}
///////白板数据的封包和解包/////////////////////////////////////////
packPdu(_param,_itemIdx){
/* required uint32 type= 1;//白板类型
... ... @@ -288,124 +371,6 @@ class WhiteBoardApe extends Ape {
return null;
}
/////收到消息处理/////////////////////////////////////////////////////////////////////////////////
/* whiteboardMsgComingHandler(_data) {
//flash RCConferenceSendDataRequestPdu
//loger.warn('whiteboardMsgComingHandler needs to be handled.');
//const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(pdu);
//loger.log("whiteboardMsgComingHandler",recordInfo);
let receiveInfo = pdu['RCConferenceSendDataRequestPdu'].decode(_data);
loger.log("whiteboardMsgComingHandler",receiveInfo);
}*/
tableInsertHandler(owner, itemIdx,itemData) {
/* try{
console.log("白板收到数据===tableInsertHandler ");
let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData);
this.annoInfos[itemIdx] = itemData;
console.log(whiteBoardModelPdu);
}catch (err){
console.log("tableInsertHandler Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message);
}*/
let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData);
loger.log('tableInsertHandler',whiteBoardModel);
if(whiteBoardModel){
if(GlobalConfig.activeDocId==whiteBoardModel.parentId&&GlobalConfig.activeDocCurPage==whiteBoardModel.curPageNo){
loger.log('WHITEBOARD_ANNOTAION_INSERT 显示到界面上',whiteBoardModel);
this._emit(MessageTypes.WHITEBOARD_ANNOTAION_INSERT,whiteBoardModel);
}
}
}
tableUpdateHandler(owner, itemIdx, itemData) {
let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData);
loger.log('tableUpdateHandler',whiteBoardModel);
if(whiteBoardModel){
if(GlobalConfig.activeDocId==whiteBoardModel.parentId&&GlobalConfig.activeDocCurPage==whiteBoardModel.curPageNo){
loger.log('WHITEBOARD_ANNOTATION_UPDATE 显示到界面上',whiteBoardModel);
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,whiteBoardModel);
}
}
/* try{
console.log("白板收到数据===tableUpdateHandler ");
let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData);
this.annoInfos[itemIdx] = itemData;
console.log(whiteBoardModelPdu);
loger.log(whiteBoardModelPdu)
}catch (err){
console.log("tableUpdateHandler Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message);
}*/
/*const recordInfo = pdu['RCWhiteboardDataRequestPdu'].decode(recordData);
console.log("recordInfo");
loger.log(recordInfo);
// 目前只处理 文档标注
if (recordInfo.type == ApeConsts.WBA_DOC_ANNOTATION) {
const uncompressedBytes = new Zlib.Inflate(recordInfo.action.compact().view).decompress();
const annoInfo = {
id: recordId,
svg: UTF8.getStringFromBytes(uncompressedBytes)
};
loger.log(annoInfo);
this.annoInfos[recordId] = annoInfo;
this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE, annoInfo);
} else {
loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type));
}*/
}
tableDeleteHandler(object_id, tableDeleteData){
// console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649
loger.log('tableDeleteHandler',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],"当前剩余的白板数据");
console.log(this.annoInfos); this._emit(MessageTypes.WHITEBOARD_ANNOTAION_DELETE,{ "itemIdx":itemIdxs[i]});
this._emit(MessageTypes.WHITEBOARD_ANNOTAION_DELETE,{ "itemIdx":itemIdxs[i]});
delete this.annoInfos[itemIdxs[i]];
}
}
}
}
//文档更新,白板也要更新
docUpdateHandler(_data){
loger.log("白板收到文档更新的消息docUpdateHandler",_data);
for (let key in this.annoInfos){
let item=this.annoInfos[key];
if(item&&item.parentId==GlobalConfig.activeDocId&&item.curPageNo==GlobalConfig.activeDocCurPage){
loger.log("显示和文档对应的白板数据docUpdateHandler",item);
}else{
loger.log("不显示白板数据docUpdateHandler",item);
}
}
/* let docItem=_data;
for (let key in this.annoInfos){
let item=this.annoInfos[key];
if(item&&docItem.visible==true&&item.parentId==docItem.itemIdx&&item.curPageNo==docItem.curPageNo){
loger.log("显示和文档对应的白板数据docUpdateHandler",item);
}else{
loger.log("不显示白板数据docUpdateHandler",item);
}
}*/
}
//删除白板数据
docDeleteHandler(_parentId){
loger.log("白板收到文档删除的消息docDeleteHandler",_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});
}
}
}
}
export default WhiteBoardApe;
... ...