mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-13 07:45:26 +00:00
FS-8546 #resolve [Make original video demo back-compat with livearray-json-status]
This commit is contained in:
parent
a754c686d8
commit
8293dd03d0
@ -1075,6 +1075,27 @@
|
||||
console.error("Error: ", obj, args);
|
||||
};
|
||||
|
||||
/* back compat so jsonstatus can always be enabled */
|
||||
function genRow(data) {
|
||||
if (typeof(data[4]) === "string" && data[4].indexOf("{") > -1) {
|
||||
var tmp = $.parseJSON(data[4]);
|
||||
data[4] = tmp.oldStatus;
|
||||
data[5] = null;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
function genArray(obj) {
|
||||
var data = obj.asArray();
|
||||
|
||||
for (var i in data) {
|
||||
data[i] = genRow(data[i]);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
la.onChange = function(obj, args) {
|
||||
var index = 0;
|
||||
var iserr = 0;
|
||||
@ -1122,7 +1143,7 @@
|
||||
return;
|
||||
}
|
||||
dt.fnClearTable();
|
||||
dt.fnAddData(obj.asArray());
|
||||
dt.fnAddData(genArray(obj));
|
||||
dt.fnAdjustColumnSizing();
|
||||
break;
|
||||
case "add":
|
||||
@ -1133,9 +1154,9 @@
|
||||
if (args.redraw > -1) {
|
||||
// specific position, more costly
|
||||
dt.fnClearTable();
|
||||
dt.fnAddData(obj.asArray());
|
||||
dt.fnAddData(genArray(obj));
|
||||
} else {
|
||||
dt.fnAddData(args.data);
|
||||
dt.fnAddData(genRow(args.data));
|
||||
}
|
||||
dt.fnAdjustColumnSizing();
|
||||
break;
|
||||
@ -1144,7 +1165,7 @@
|
||||
return;
|
||||
}
|
||||
//console.debug(args, index);
|
||||
dt.fnUpdate(args.data, index);
|
||||
dt.fnUpdate(genRow(args.data), index);
|
||||
dt.fnAdjustColumnSizing();
|
||||
break;
|
||||
case "del":
|
||||
@ -1157,7 +1178,7 @@
|
||||
case "reorder":
|
||||
// specific position, more costly
|
||||
dt.fnClearTable();
|
||||
dt.fnAddData(obj.asArray());
|
||||
dt.fnAddData(genArray(obj));
|
||||
break;
|
||||
case "hide":
|
||||
jq.hide();
|
||||
|
12
html5/verto/video_demo/js/verto-min.js
vendored
12
html5/verto/video_demo/js/verto-min.js
vendored
@ -201,17 +201,21 @@ break;case"clear":la.clear();break;case"reorder":la.reorder(packet.wireSerno,pac
|
||||
break;}};if(la.context){binding=la.verto.subscribe(la.context,{handler:eventHandler,userData:la,subParams:config.subParams});}
|
||||
la.destroy=function(){la._clear();la.verto.unsubscribe(binding);};la.sendCommand=function(cmd,obj){var self=la;self.broadcast(self.context,{liveArray:{command:cmd,context:self.context,name:self.name,obj:obj}});};la.bootstrap=function(obj){var self=la;la.sendCommand("bootstrap",obj);};la.changepage=function(obj){var self=la;self.clear();self.broadcast(self.context,{liveArray:{command:"changepage",context:la.context,name:la.name,obj:obj}});};la.heartbeat=function(obj){var self=la;var callback=function(){self.heartbeat.call(self,obj);};self.broadcast(self.context,{liveArray:{command:"heartbeat",context:self.context,name:self.name,obj:obj}});self.hb_pid=setTimeout(callback,30000);};la.bootstrap(la.user_obj);};$.verto.liveTable=function(verto,context,name,jq,config){var dt;var la=new $.verto.liveArray(verto,context,name,{subParams:config.subParams});var lt=this;lt.liveArray=la;lt.dataTable=dt;lt.verto=verto;lt.destroy=function(){if(dt){dt.fnDestroy();}
|
||||
if(la){la.destroy();}
|
||||
dt=null;la=null;};la.onErr=function(obj,args){console.error("Error: ",obj,args);};la.onChange=function(obj,args){var index=0;var iserr=0;if(!dt){if(!config.aoColumns){if(args.action!="init"){return;}
|
||||
dt=null;la=null;};la.onErr=function(obj,args){console.error("Error: ",obj,args);};function genRow(data){if(typeof(data[4])==="string"&&data[4].indexOf("{")>-1){var tmp=$.parseJSON(data[4]);data[4]=tmp.oldStatus;data[5]=null;}
|
||||
return data;}
|
||||
function genArray(obj){var data=obj.asArray();for(var i in data){data[i]=genRow(data[i]);}
|
||||
return data;}
|
||||
la.onChange=function(obj,args){var index=0;var iserr=0;if(!dt){if(!config.aoColumns){if(args.action!="init"){return;}
|
||||
config.aoColumns=[];for(var i in args.data){config.aoColumns.push({"sTitle":args.data[i]});}}
|
||||
dt=jq.dataTable(config);}
|
||||
if(dt&&(args.action=="del"||args.action=="modify")){index=args.index;if(index===undefined&&args.key){index=la.indexOf(args.key);}
|
||||
if(index===undefined){console.error("INVALID PACKET Missing INDEX\n",args);return;}}
|
||||
if(config.onChange){config.onChange(obj,args);}
|
||||
try{switch(args.action){case"bootObj":if(!args.data){console.error("missing data");return;}
|
||||
dt.fnClearTable();dt.fnAddData(obj.asArray());dt.fnAdjustColumnSizing();break;case"add":if(!args.data){console.error("missing data");return;}
|
||||
if(args.redraw>-1){dt.fnClearTable();dt.fnAddData(obj.asArray());}else{dt.fnAddData(args.data);}
|
||||
dt.fnClearTable();dt.fnAddData(genArray(obj));dt.fnAdjustColumnSizing();break;case"add":if(!args.data){console.error("missing data");return;}
|
||||
if(args.redraw>-1){dt.fnClearTable();dt.fnAddData(genArray(obj));}else{dt.fnAddData(genRow(args.data));}
|
||||
dt.fnAdjustColumnSizing();break;case"modify":if(!args.data){return;}
|
||||
dt.fnUpdate(args.data,index);dt.fnAdjustColumnSizing();break;case"del":dt.fnDeleteRow(index);dt.fnAdjustColumnSizing();break;case"clear":dt.fnClearTable();break;case"reorder":dt.fnClearTable();dt.fnAddData(obj.asArray());break;case"hide":jq.hide();break;case"show":jq.show();break;}}catch(err){console.error("ERROR: "+err);iserr++;}
|
||||
dt.fnUpdate(genRow(args.data),index);dt.fnAdjustColumnSizing();break;case"del":dt.fnDeleteRow(index);dt.fnAdjustColumnSizing();break;case"clear":dt.fnClearTable();break;case"reorder":dt.fnClearTable();dt.fnAddData(genArray(obj));break;case"hide":jq.hide();break;case"show":jq.show();break;}}catch(err){console.error("ERROR: "+err);iserr++;}
|
||||
if(iserr){obj.errs++;if(obj.errs<3){obj.bootstrap(obj.user_obj);}}else{obj.errs=0;}};la.onChange(la,{action:"init"});};var CONFMAN_SERNO=1;$.verto.conf=function(verto,params){var conf=this;conf.params=$.extend({dialog:null,hasVid:false,laData:null,onBroadcast:null,onLaChange:null,onLaRow:null},params);conf.verto=verto;conf.serno=CONFMAN_SERNO++;createMainModeratorMethods();verto.subscribe(conf.params.laData.modChannel,{handler:function(v,e){if(conf.params.onBroadcast){conf.params.onBroadcast(verto,conf,e.data);}}});verto.subscribe(conf.params.laData.chatChannel,{handler:function(v,e){if(typeof(conf.params.chatCallback)==="function"){conf.params.chatCallback(v,e);}}});};$.verto.conf.prototype.modCommand=function(cmd,id,value){var conf=this;conf.verto.rpcClient.call("verto.broadcast",{"eventChannel":conf.params.laData.modChannel,"data":{"application":"conf-control","command":cmd,"id":id,"value":value}});};$.verto.conf.prototype.destroy=function(){var conf=this;conf.destroyed=true;conf.params.onBroadcast(conf.verto,conf,'destroy');if(conf.params.laData.modChannel){conf.verto.unsubscribe(conf.params.laData.modChannel);}
|
||||
if(conf.params.laData.chatChannel){conf.verto.unsubscribe(conf.params.laData.chatChannel);}};function createMainModeratorMethods(){$.verto.conf.prototype.listVideoLayouts=function(){this.modCommand("list-videoLayouts",null,null);};$.verto.conf.prototype.play=function(file){this.modCommand("play",null,file);};$.verto.conf.prototype.stop=function(){this.modCommand("stop",null,"all");};$.verto.conf.prototype.record=function(file){this.modCommand("recording",null,["start",file]);};$.verto.conf.prototype.stopRecord=function(){this.modCommand("recording",null,["stop","all"]);};$.verto.conf.prototype.snapshot=function(file){if(!this.params.hasVid){throw'Conference has no video';}
|
||||
this.modCommand("vid-write-png",null,file);};$.verto.conf.prototype.setVideoLayout=function(layout){if(!this.params.hasVid){throw'Conference has no video';}
|
||||
|
@ -156,6 +156,35 @@ void conference_member_update_status_field(conference_member_t *member)
|
||||
|
||||
switch_live_array_lock(member->conference->la);
|
||||
|
||||
if (!conference_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
|
||||
str = "MUTE";
|
||||
} else if (switch_channel_test_flag(member->channel, CF_HOLD)) {
|
||||
str = "HOLD";
|
||||
} else if (member == member->conference->floor_holder) {
|
||||
if (conference_utils_member_test_flag(member, MFLAG_TALKING)) {
|
||||
str = "TALKING (FLOOR)";
|
||||
} else {
|
||||
str = "FLOOR";
|
||||
}
|
||||
} else if (conference_utils_member_test_flag(member, MFLAG_TALKING)) {
|
||||
str = "TALKING";
|
||||
} else {
|
||||
str = "ACTIVE";
|
||||
}
|
||||
|
||||
if (switch_channel_test_flag(member->channel, CF_VIDEO)) {
|
||||
if (!conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
|
||||
vstr = " VIDEO (BLIND)";
|
||||
} else {
|
||||
vstr = " VIDEO";
|
||||
if (member && member->id == member->conference->video_floor_holder) {
|
||||
vstr = " VIDEO (FLOOR)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch_snprintf(display, sizeof(display), "%s%s", str, vstr);
|
||||
|
||||
if (conference_utils_test_flag(member->conference, CFLAG_JSON_STATUS)) {
|
||||
json = cJSON_CreateObject();
|
||||
audio = cJSON_CreateObject();
|
||||
@ -198,43 +227,19 @@ void conference_member_update_status_field(conference_member_t *member)
|
||||
cJSON_AddItemToObject(json, "video", cJSON_CreateFalse());
|
||||
}
|
||||
|
||||
if (conference_utils_test_flag(member->conference, CFLAG_JSON_STATUS)) {
|
||||
cJSON_AddItemToObject(json, "oldStatus", cJSON_CreateString(display));
|
||||
}
|
||||
|
||||
json_display = cJSON_PrintUnformatted(json);
|
||||
cJSON_Delete(json);
|
||||
} else {
|
||||
if (!conference_utils_member_test_flag(member, MFLAG_CAN_SPEAK)) {
|
||||
str = "MUTE";
|
||||
} else if (switch_channel_test_flag(member->channel, CF_HOLD)) {
|
||||
str = "HOLD";
|
||||
} else if (member == member->conference->floor_holder) {
|
||||
if (conference_utils_member_test_flag(member, MFLAG_TALKING)) {
|
||||
str = "TALKING (FLOOR)";
|
||||
} else {
|
||||
str = "FLOOR";
|
||||
}
|
||||
} else if (conference_utils_member_test_flag(member, MFLAG_TALKING)) {
|
||||
str = "TALKING";
|
||||
} else {
|
||||
str = "ACTIVE";
|
||||
}
|
||||
|
||||
if (switch_channel_test_flag(member->channel, CF_VIDEO)) {
|
||||
if (!conference_utils_member_test_flag(member, MFLAG_CAN_BE_SEEN)) {
|
||||
vstr = " VIDEO (BLIND)";
|
||||
} else {
|
||||
vstr = " VIDEO";
|
||||
if (member && member->id == member->conference->video_floor_holder) {
|
||||
vstr = " VIDEO (FLOOR)";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
switch_snprintf(display, sizeof(display), "%s%s", str, vstr);
|
||||
}
|
||||
|
||||
switch_safe_free(member->status_field->valuestring);
|
||||
|
||||
if (json_display) {
|
||||
member->status_field->valuestring = json_display;
|
||||
} else {
|
||||
free(member->status_field->valuestring);
|
||||
member->status_field->valuestring = strdup(display);
|
||||
}
|
||||
|
||||
|
@ -1800,6 +1800,7 @@ SWITCH_STANDARD_APP(conference_function)
|
||||
goto done;
|
||||
}
|
||||
|
||||
conference->flags[CFLAG_JSON_STATUS] = 1;
|
||||
conference_utils_set_cflags(cflags_str, conference->flags);
|
||||
|
||||
if (locked) {
|
||||
@ -1884,6 +1885,7 @@ SWITCH_STANDARD_APP(conference_function)
|
||||
goto done;
|
||||
}
|
||||
|
||||
conference->flags[CFLAG_JSON_STATUS] = 1;
|
||||
conference_utils_set_cflags(cflags_str, conference->flags);
|
||||
|
||||
if (locked) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user