Commit 34e08373 authored by yanglingling's avatar yanglingling
Browse files

webrtc支持

parent 68d45cd9
......@@ -14,7 +14,7 @@
"demo/questionAnswer/questionAnswer"
],
"window": {
"backgroundTextStyle": "white",
"backgroundTextStyle": "light",
"navigationBarTextStyle": "white",
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#292929",
......
......@@ -5,7 +5,7 @@ function init(str) {
sign: 'test12345678',
hasDefaultTip: true,
class: {
id: 18072433219098,
id: 19021995816986,
name: '123',
startTime: 1517969460000,
endTime: 1833502260000
......
var store=require("./store"),config=require("./config"),userData=require("./data/user"),is=require("./is");function isTeacher(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_TEACHER}function isPresenter(e){return store.get("presenterId")===e}function isAssistant(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_ASSISTANT}function isStudent(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_STUDENT}function isGuest(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_GUEST}function isSelf(e){return store.get("user.id")===e}function isSelfAssist(e){return store.get("user.id2")===e}function isVisible(e){var t;return e&&(t=userData.find(e)),t||(t=store.get("user")),t.status===config.USER_STATUS_ONLINE}function canStudentuUseBrush(){return!0===store.get("user.audioOn")&&1!=store.get("partner.liveHideStudentBrush")}function isSpeakingDisabled(){return!!store.get("partner")&&store.get("partner").disableSpeakingRequest}function hasSpeakingDisabledReason(){return!!store.get("partner")&&store.get("partner.disableSpeakingRequestReason")}exports.isTeacher=isTeacher,exports.isPresenter=isPresenter,exports.isStudent=isStudent,exports.isAssistant=isAssistant,exports.isGuest=isGuest,exports.isSelf=isSelf,exports.isSelfAssist=isSelfAssist,exports.isVisible=isVisible,exports.canPaint=function(){return(isTeacher()||isAssistant()||canStudentuUseBrush())&&isVisible()},exports.canServerPage=function(){return(isTeacher()||isAssistant())&&isVisible()},exports.canPage=function(){return!isStudent()&&!isGuest()||!canStudentuUseBrush()},exports.canUseUdpPush=function(){return!1},exports.canUseUdpPull=function(){return!1},exports.canForbidAllUserSendMessage=function(){return!1},exports.canSendMessage=function(){var e=0<store.get("userState.forbidSendMessage.duration");return isVisible()&&!e},exports.canChangePresenter=function(){return store.get("user.id")===store.get("presenterId")||isTeacher()},exports.canCloseUserMedia=function(){return(isTeacher()||isAssistant())&&isVisible()},exports.canUseDoubleCamera=function(){return!1},exports.canPublishMixedAudioStream=function(){return!1},exports.isNameMobileNumber=function(){return"mobile"==store.get("partner.liveInvitationNameTip")},exports.canSetTouchEnable=function(){return!1},exports.canManageSpeak=function(){return(exports.isTeacher()||exports.isAssistant())&&exports.isVisible()},exports.canKickOut=function(){return(exports.isTeacher()||exports.isAssistant())&&store.get("partner.enableKickOut",!0)},exports.canSelectSpeaker=function(){return!!store.get("cefApiVersion")},exports.isTeacher=function(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_TEACHER},exports.isNameMobileNumber=function(){return"mobile"==store.get("partner.liveInvitationNameTip")},exports.isSpeakingDisabled=function(){return isSpeakingDisabled()},exports.canApplySpeak=function(){return!!is.oneToMany()&&(1!=store.get("partner.disableLiveSpeakRequest")&&(isSpeakingDisabled()&&hasSpeakingDisabledReason()||!isSpeakingDisabled()))},exports.canOpenCameraWhenSpeaking=function(e){return null==e&&(e=store.get("user.type")),!!exports.canUseCamera()&&(exports.isStudent(e)?store.get("class.speakCameraTurnon")?+store.get("class.speakCameraTurnon"):null:void 0)},exports.canUseCamera=function(){return!(exports.isStudent()&&exports.isOneToMany()&&store.get("partner.liveHideStudentCamera"))},exports.isOneToMany=function(){return is.oneToMany()},exports.canSpeakFree=function(){var e=is.oneToOne()||is.miniClass()||exports.isTeacher()||exports.isAssistant();return exports.isOneOneTemplate()&&exports.isAssistant()&&(e=!1),e&&exports.isVisible()},exports.canPushStream=function(){return!!store.get("partner.liveEnableMiniprogramPushStream","")},exports.canUseQuestionAnswer=function(){return!is.oneToOne()&&!store.get("class.isRtmpPush")&&store.get("partner.enableLiveQuestionAnswer")};
\ No newline at end of file
var store=require("./store"),config=require("./config"),userData=require("./data/user"),is=require("./is");function isTeacher(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_TEACHER}function isPresenter(e){return store.get("presenterId")===e}function isAssistant(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_ASSISTANT}function isStudent(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_STUDENT}function isGuest(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_GUEST}function isSelf(e){return store.get("user.id")===e}function isSelfAssist(e){return store.get("user.id2")===e}function isVisible(e){var t;return e&&(t=userData.find(e)),t||(t=store.get("user")),t.status===config.USER_STATUS_ONLINE}function canStudentuUseBrush(){return!0===store.get("user.audioOn")&&1!=store.get("partner.liveHideStudentBrush")}function isSpeakingDisabled(){return!!store.get("partner")&&store.get("partner").disableSpeakingRequest}function hasSpeakingDisabledReason(){return!!store.get("partner")&&store.get("partner.disableSpeakingRequestReason")}exports.isTeacher=isTeacher,exports.isPresenter=isPresenter,exports.isStudent=isStudent,exports.isAssistant=isAssistant,exports.isGuest=isGuest,exports.isSelf=isSelf,exports.isSelfAssist=isSelfAssist,exports.isVisible=isVisible,exports.canPaint=function(){return(isTeacher()||isAssistant()||canStudentuUseBrush())&&isVisible()},exports.canServerPage=function(){return(isTeacher()||isAssistant())&&isVisible()},exports.canPage=function(){return!isStudent()&&!isGuest()||!canStudentuUseBrush()},exports.canUseUdpPush=function(){return!1},exports.canUseUdpPull=function(){return!1},exports.canForbidAllUserSendMessage=function(){return!1},exports.canSendMessage=function(){var e=0<store.get("userState.forbidSendMessage.duration");return isVisible()&&!e},exports.canChangePresenter=function(){return store.get("user.id")===store.get("presenterId")||isTeacher()},exports.canCloseUserMedia=function(){return(isTeacher()||isAssistant())&&isVisible()},exports.canUseDoubleCamera=function(){return!1},exports.canPublishMixedAudioStream=function(){return!1},exports.isNameMobileNumber=function(){return"mobile"==store.get("partner.liveInvitationNameTip")},exports.canSetTouchEnable=function(){return!1},exports.canManageSpeak=function(){return(exports.isTeacher()||exports.isAssistant())&&exports.isVisible()},exports.canKickOut=function(){return(exports.isTeacher()||exports.isAssistant())&&store.get("partner.enableKickOut",!0)},exports.canSelectSpeaker=function(){return!!store.get("cefApiVersion")},exports.isTeacher=function(e){return null==e&&(e=store.get("user").type),e===config.ROLE_TYPE_TEACHER},exports.isNameMobileNumber=function(){return"mobile"==store.get("partner.liveInvitationNameTip")},exports.isSpeakingDisabled=function(){return isSpeakingDisabled()},exports.canApplySpeak=function(){return!!is.oneToMany()&&(1!=store.get("partner.disableLiveSpeakRequest")&&(isSpeakingDisabled()&&hasSpeakingDisabledReason()||!isSpeakingDisabled()))},exports.canOpenCameraWhenSpeaking=function(e){return null==e&&(e=store.get("user.type")),!!exports.canUseCamera()&&(exports.isStudent(e)?store.get("class.speakCameraTurnon")?+store.get("class.speakCameraTurnon"):null:void 0)},exports.canUseCamera=function(){return!(exports.isStudent()&&exports.isOneToMany()&&store.get("partner.liveHideStudentCamera"))},exports.isOneToMany=function(){return is.oneToMany()},exports.canSpeakFree=function(){var e=is.oneToOne()||is.miniClass()||exports.isTeacher()||exports.isAssistant();return exports.isOneOneTemplate()&&exports.isAssistant()&&(e=!1),e&&exports.isVisible()},exports.canPushStream=function(){return!!store.get("partner.liveEnableMiniprogramPushStream","")},exports.canUseQuestionAnswer=function(){return!is.oneToOne()&&!store.get("class.isRtmpPush")&&store.get("partner.enableLiveQuestionAnswer")},exports.isWebRTC=function(){return 0<store.get("class.webrtcType")};
\ No newline at end of file
This diff is collapsed.
/**
* @file dialog
* 可覆盖在canvas和video上的通用dialog,支持slot自定义内容(slot内容必须为cover-view支持的tag),dialog的显隐由外界控制
* !!!注意:当前时间点(2018-12-05)小程序iOS不支持component的cover-view内嵌slot
* @author dujianhao
*/
// sdk/component/dialog/dialog.js
var appLanguage = require('../../language/main')();
Component({
/**
* Component properties
*/
properties: {
showTitle: {
type: 'boolean',
value: false,
},
title: {
type: 'string',
value: appLanguage.DIALOG_TITLE,
},
contentStyle: {
type: 'string',
},
content: {
type: 'string',
},
showConfirmBtn: {
type: 'boolean',
value: true,
},
confirmText: {
type: 'string',
value: appLanguage.CONFIRM,
observer: function(v) {
this.setData({
confirmBtnText: v || appLanguage.CONFIRM,
});
}
},
showCancelBtn: {
type: 'boolean',
value: true,
},
cancelText: {
type: 'string',
value: appLanguage.CANCEL,
observer: function(v) {
this.setData({
cancelBtnText: v || appLanguage.CANCEL,
});
}
},
/**
* 点击mask等同cancel
*/
maskClickAsCancel: {
type: 'boolean',
value: false,
},
},
/**
* Component initial data
*/
data: {
confirmBtnText: appLanguage.CONFIRM,
cancelBtnText: appLanguage.CANCEL,
},
/**
* Component methods
*/
methods: {
confirm: function() {
this.triggerEvent('confirm');
},
cancel: function() {
this.triggerEvent('cancel');
},
maskClick: function() {
if (this.data.maskClickCancel) {
this.triggerEvent('cancel');
}
},
}
});
\ No newline at end of file
var appLanguage=require("../../language/main")();Component({properties:{showTitle:{type:"boolean",value:!1},title:{type:"string",value:appLanguage.DIALOG_TITLE},contentStyle:{type:"string"},content:{type:"string"},showConfirmBtn:{type:"boolean",value:!0},confirmText:{type:"string",value:appLanguage.CONFIRM,observer:function(e){this.setData({confirmBtnText:e||appLanguage.CONFIRM})}},showCancelBtn:{type:"boolean",value:!0},cancelText:{type:"string",value:appLanguage.CANCEL,observer:function(e){this.setData({cancelBtnText:e||appLanguage.CANCEL})}},maskClickAsCancel:{type:"boolean",value:!1}},data:{confirmBtnText:appLanguage.CONFIRM,cancelBtnText:appLanguage.CANCEL},methods:{confirm:function(){this.triggerEvent("confirm")},cancel:function(){this.triggerEvent("cancel")},maskClick:function(){this.data.maskClickCancel&&this.triggerEvent("cancel")}}});
\ No newline at end of file
......@@ -23,10 +23,10 @@
</cover-view>
</canvas>
<canvas wx:if='{{showBox}}' canvas-id='canvasLotteryBox' class='bjy-lottery-box-canvas'>
<canvas wx:if='{{!forceHideBox && showBox}}' canvas-id='canvasLotteryBox' class='bjy-lottery-box-canvas'>
<cover-image animation='{{zoomAnimation}}' class='bjy-lottery-box-image' src='./img/lottery-hint@3x.png'></cover-image>
</canvas>
<!-- iOSbug,开启动画后点击事件无效 -->
<canvas wx:if='{{showBox}}' canvas-id='canvasLotteryBox1' class='bjy-lottery-box-canvas' bindtouchstart='onLotteryBoxTap'>
<canvas wx:if='{{!forceHideBox && showBox}}' canvas-id='canvasLotteryBox1' class='bjy-lottery-box-canvas' bindtouchstart='onLotteryBoxTap'>
</canvas>
</view>
\ No newline at end of file
var config=require("../../config"),info=require("../../info"),eventEmitter=require("../../eventEmitter"),auth=require("../../auth"),$=require("../../jquery"),emotionData=require("../../data/emotion"),appLanguage=require("../../language/main")(),pageLanguage=require("./language/main")();function isReservedWord(e){for(var t,n=[config.DEBUG_KEY,config.OPEN_VCONSOLE],a=0;t=n[a++];)if(t==e)return!0;return!1}Object.assign(pageLanguage,appLanguage),Component({properties:{placeholder:{type:"String",value:""},messageMaxLength:{type:"Number",value:140},focus:{type:"Boolean",value:!1},isBJY:{type:"Boolean",value:!1},confirmHold:{type:"Boolean",value:!1}},data:{forbidden:!1,allForbidden:!1,language:pageLanguage,content:"",messageValue:"",emotionList:[],messageCommand:"",isCommandInputError:!1},methods:{triggerEmotionToggle:function(){var t=this,e=wx.createSelectorQuery().in(t);e.select("#bjy-message-sender").boundingClientRect(),e.exec(function(e){t.triggerEvent("heightChange",{height:e[0].height,top:e[0].top,showEmotion:t.data.showEmotion})})},iconTap:function(e){var t=this,n=e.target.dataset.name;"emotion"==n?t.setData({showEmotion:!0}):"inEmotion"==n&&t.setData({showEmotion:!1,focus:!0}),t.triggerEmotionToggle()},emotionTap:function(e){var t=this;t.sendEmoji(e.detail),t.setData({showEmotion:!1}),t.triggerEmotionToggle()},sendEmoji:function(e){eventEmitter.trigger(eventEmitter.MESSAGE_SEND,{content:e.stringify,data:{type:"emoji",key:e.key,url:e.url}}),this.triggerEvent("sendMessage",{content:e.stringify})},validate:function(){var e=this,t=e.data,n=t.content,a=t.messageCommand,o=t.messageMaxLength;t.language;if(!(0<o&&n.length>o))return a&&a!==n&&(this.setData({isCommandInputError:!0}),setTimeout(function(){e.data.isCommandInputError&&e.setData({isCommandInputError:!1})},1e3)),this.setData({confirmHold:!1}),!0;info.alert(getLanguage().ERROR_TOO_LONG)},sendMessage:function(e){var t=this,n=$.trim(e.detail.value);t.setData({content:n}),n&&t.validate()&&(t.setData({messageValue:""}),t.data.isBJY&&isReservedWord(n)||eventEmitter.trigger(eventEmitter.MESSAGE_SEND,{content:n}),t.triggerEvent("sendMessage",{content:n,command:t.data.messageCommand}))}},ready:function(){var n=this;n.namespace=".message_sender",0!=emotionData.all().length?n.setData({emotionList:emotionData.all()}):eventEmitter.on(eventEmitter.INTERFACE_FETCH_SUCCESS,function(){n.setData({emotionList:emotionData.all()})}),eventEmitter.on(eventEmitter.STANDARD_LOTTERY_END+n.namespace,function(){n.setData({focus:!1})}).on(eventEmitter.COMMAND_LOTTERY_ABORT+n.namespace,function(e,t){n.setData({messageCommand:"",focus:!1})}).on(eventEmitter.LOTTERY_BOX_CLICKED+n.namespace,function(e,t){n.setData({content:"",messageCommand:t.command})}).on(eventEmitter.COMMAND_LOTTERY_HIT_RES+n.namespace,function(e,t){console.log(111),n.setData({isCommandInputError:!1,messageCommand:""})})}});
\ No newline at end of file
var config=require("../../config"),info=require("../../info"),eventEmitter=require("../../eventEmitter"),auth=require("../../auth"),$=require("../../jquery"),emotionData=require("../../data/emotion"),appLanguage=require("../../language/main")(),pageLanguage=require("./language/main")();function isReservedWord(e){for(var t,n=[config.DEBUG_KEY,config.OPEN_VCONSOLE],a=0;t=n[a++];)if(t==e)return!0;return!1}Object.assign(pageLanguage,appLanguage),Component({properties:{placeholder:{type:"String",value:""},messageMaxLength:{type:"Number",value:140},focus:{type:"Boolean",value:!1},isBJY:{type:"Boolean",value:!1},confirmHold:{type:"Boolean",value:!1}},data:{forbidden:!1,allForbidden:!1,language:pageLanguage,content:"",messageValue:"",emotionList:[],messageCommand:"",isCommandInputError:!1},methods:{triggerEmotionToggle:function(){var t=this,e=wx.createSelectorQuery().in(t);e.select("#bjy-message-sender").boundingClientRect(),e.exec(function(e){t.triggerEvent("heightChange",{height:e[0].height,top:e[0].top,showEmotion:t.data.showEmotion})})},iconTap:function(e){var t=this,n=e.target.dataset.name;"emotion"==n?t.setData({showEmotion:!0}):"inEmotion"==n&&t.setData({showEmotion:!1,focus:!0}),t.triggerEmotionToggle()},emotionTap:function(e){var t=this;t.sendEmoji(e.detail),t.setData({showEmotion:!1}),t.triggerEmotionToggle()},sendEmoji:function(e){eventEmitter.trigger(eventEmitter.MESSAGE_SEND,{content:e.stringify,data:{type:"emoji",key:e.key,url:e.url}}),this.triggerEvent("sendMessage",{content:e.stringify})},validate:function(){var e=this,t=e.data,n=t.content,a=t.messageCommand,o=t.messageMaxLength;t.language;if(!(0<o&&n.length>o))return a&&a!==n&&(this.setData({isCommandInputError:!0}),setTimeout(function(){e.data.isCommandInputError&&e.setData({isCommandInputError:!1})},1e3)),this.setData({confirmHold:!1}),!0;info.alert(getLanguage().ERROR_TOO_LONG)},inputFocus:function(){this.triggerEvent("inputFocus")},inputBlur:function(){this.triggerEvent("inputBlur")},sendMessage:function(e){var t=this,n=$.trim(e.detail.value);t.setData({content:n}),n&&t.validate()&&(t.setData({messageValue:""}),t.data.isBJY&&isReservedWord(n)||eventEmitter.trigger(eventEmitter.MESSAGE_SEND,{content:n}),t.triggerEvent("sendMessage",{content:n,command:t.data.messageCommand}))}},ready:function(){var n=this;n.namespace=".message_sender",0!=emotionData.all().length?n.setData({emotionList:emotionData.all()}):eventEmitter.on(eventEmitter.INTERFACE_FETCH_SUCCESS,function(){n.setData({emotionList:emotionData.all()})}),eventEmitter.on(eventEmitter.STANDARD_LOTTERY_END+n.namespace,function(){n.setData({focus:!1})}).on(eventEmitter.COMMAND_LOTTERY_ABORT+n.namespace,function(e,t){n.setData({messageCommand:"",focus:!1})}).on(eventEmitter.LOTTERY_BOX_CLICKED+n.namespace,function(e,t){n.setData({content:"",messageCommand:t.command})}).on(eventEmitter.COMMAND_LOTTERY_HIT_RES+n.namespace,function(e,t){n.setData({isCommandInputError:!1,messageCommand:""})})}});
\ No newline at end of file
......@@ -6,7 +6,7 @@
<image class='emotion-icon' hidden="{{!showEmotion}}" mode="scaleToFill" data-name="inEmotion" src="./img/bjl_ic_keybord@3x.png" bindtap="iconTap"></image>
</view>
<!-- 小程序组件bug存在输入内容时placeholder有时候仍然存在,此处多加一下content判断 -->
<input type="text" confirm-type='send' maxlength="{{messageMaxLength}}" model="content" value="{{messageValue}}" confirm-hold='{{messageCommand || confirmHold}}' bindconfirm="sendMessage" placeholder="{{content ? '' : (isCommandInputError? language.LOTTERY_COMMAND_ERROR : (messageCommand ? (language.LOTTERY_MESSAGE_TIP_BEFORE + ' ' + messageCommand + ' ' + language.LOTTERY_MESSAGE_TIP_AFTER) : placeholder))}}"
<input type="text" confirm-type='send' maxlength="{{messageMaxLength}}" model="content" value="{{messageValue}}" confirm-hold='{{messageCommand || confirmHold}}' bindconfirm="sendMessage" bindfocus='inputFocus' bindblur='inputBlur' placeholder="{{content ? '' : (isCommandInputError? language.LOTTERY_COMMAND_ERROR : (messageCommand ? (language.LOTTERY_MESSAGE_TIP_BEFORE + ' ' + messageCommand + ' ' + language.LOTTERY_MESSAGE_TIP_AFTER) : placeholder))}}"
placeholder-class="{{isCommandInputError ? 'bjy-placeholder-error':''}}" focus="{{messageCommand || focus}}">
</input>
</view>
......
var streamNameForResume,$=require("../../jquery"),info=require("../../info"),eventEmitter=require("../../eventEmitter"),userData=require("../../data/user"),language=require("../../language/main")(),getStreamName=require("../../function/getStreamName");function getChangeType(e,t){var a={};return e.videoOn&&!t.videoOn&&(a.videoTo=!1),!e.videoOn&&t.videoOn&&(a.videoTo=!0),e.audioOn&&!t.audioOn&&(a.audioTo=!1),!e.audioOn&&t.audioOn&&(a.audioTo=!0),a}Component({properties:{showName:{type:Boolean,value:!0},styleInfo:{type:Object,value:{fontSize:12}},coverImage:{type:String,value:"/sdk/component/player/image/closeCamera.png"},fullScreen:{type:Boolean,value:!1,observer:function(e,t){console.log("fullScreen");var a="player"+this.data.userInfo.id,o=wx.createLivePlayerContext(a,this);console.log(a),console.log(o),!0===e?o.requestFullScreen():o.exitFullScreen()}},stopPlay:{type:Boolean,value:!1,observer:function(e,t){console.log("stopPlay change");var a=this,o="player-"+a.data.userInfo.id;console.log(o);wx.createLivePlayerContext(o,a);!0===e?(streamNameForResume=a.data.streamName,a.setData({streamName:"rtmp://a"})):!0===t&&!1===e&&a.setData({streamName:streamNameForResume})}},userInfo:{type:Object,value:{videoOn:!1},observer:function(e,t){var a=this;if(!$.isEmptyObject(e)){var o=!e.canPlay;console.log("streamName:"),console.log(getStreamName(e)),a.setData({streamName:""}),a.setData({notSupported:o,streamName:getStreamName(e)}),a.triggerEvent("isSupportedChanged",{user:e,support:!o})}var n={};$.isEmptyObject(e)||(n=getChangeType(t,e)),$.isEmptyObject(n)||a.triggerEvent("AVStatusChange",{user:e,support:!a.data.notSupported,changeInfo:n})}}},data:{language:language,notSupported:!1,streamName:""},ready:function(){var t=this;eventEmitter.on(eventEmitter.DOWNLINK_SERVER_CHANGE_TRIGGER,function(){var e=t.data.userInfo;$.isEmptyObject(e)||(t.setData({streamName:""}),t.setData({streamName:getStreamName(e)}))}).on(eventEmitter.NETWORK_RECONNECT,function(){var e=t.data.streamName;t.setData({streamName:""}),t.setData({streamName:e})})},methods:{onStateChange:function(e){var t=e.detail.code;2001==t||2002==t||2007==t?this.setData({showLoading:!0}):this.setData({showLoading:!1})},onError:function(e){console.log("live-player code:",e.detail.code)},onNetStatus:function(e){console.log("on Ne tStatus"),console.log(e.detail),this.triggerEvent("netStatus",e.detail)},onItemTap:function(e){this.triggerEvent("optTap",e.detail)},onPlayerLongTap:function(){"longTap"==this.data.optTriggerType&&this.showOptBar()},onFullscreenChange:function(e){info.tip("onFullscreenChange")},onPlayerTap:function(){var e=this;console.log("onPlayerTap"),e.triggerEvent("playerTap",{user:e.data.userInfo,support:!e.data.notSupported})}}});
\ No newline at end of file
var streamNameForResume,$=require("../../jquery"),info=require("../../info"),eventEmitter=require("../../eventEmitter"),userData=require("../../data/user"),language=require("../../language/main")(),getStreamName=require("../../function/getStreamName");function getChangeType(e,t){var a={};return e.videoOn&&!t.videoOn&&(a.videoTo=!1),!e.videoOn&&t.videoOn&&(a.videoTo=!0),e.audioOn&&!t.audioOn&&(a.audioTo=!1),!e.audioOn&&t.audioOn&&(a.audioTo=!0),a}Component({properties:{showName:{type:Boolean,value:!0},styleInfo:{type:Object,value:{fontSize:12}},coverImage:{type:String,value:"/sdk/component/player/image/closeCamera.png"},fullScreen:{type:Boolean,value:!1,observer:function(e,t){console.log("fullScreen");var a="player"+this.data.userInfo.id,o=wx.createLivePlayerContext(a,this);console.log(a),console.log(o),!0===e?o.requestFullScreen():o.exitFullScreen()}},stopPlay:{type:Boolean,value:!1,observer:function(e,t){console.log("stopPlay change");var a=this,o="player-"+a.data.userInfo.id;console.log(o);wx.createLivePlayerContext(o,a);!0===e?(streamNameForResume=a.data.streamName,a.setData({streamName:"rtmp://a"})):!0===t&&!1===e&&a.setData({streamName:streamNameForResume})}},userInfo:{type:Object,value:{videoOn:!1},observer:function(e,t){var a=this;if(!$.isEmptyObject(e)){var o=!e.canPlay;console.log("streamName:"),console.log(getStreamName(e)),a.setData({streamName:""}),a.setData({notSupported:o,streamName:getStreamName(e)}),a.triggerEvent("isSupportedChanged",{user:e,support:!o})}var n={};$.isEmptyObject(e)||(n=getChangeType(t,e)),$.isEmptyObject(n)||a.triggerEvent("AVStatusChange",{user:e,support:!a.data.notSupported,changeInfo:n})}}},data:{language:language,notSupported:!1,streamName:""},ready:function(){var t=this;eventEmitter.on(eventEmitter.DOWNLINK_SERVER_CHANGE_TRIGGER,function(){var e=t.data.userInfo;$.isEmptyObject(e)||(t.setData({streamName:""}),t.setData({streamName:getStreamName(e)}))}).on(eventEmitter.NETWORK_RECONNECT,function(){var e=t.data.streamName;t.setData({streamName:""}),t.setData({streamName:e})})},methods:{onStateChange:function(e){var t=e.detail.code;2001==t||2002==t||2007==t?this.setData({showLoading:!0}):this.setData({showLoading:!1})},onError:function(e){console.log("live-player code:",e.detail.code)},onNetStatus:function(e){console.log(e.detail),this.triggerEvent("netStatus",e.detail),e.detail.info&&0<e.detail.info.netSpeed&&this.setData({showLoading:!1})},onItemTap:function(e){this.triggerEvent("optTap",e.detail)},onPlayerLongTap:function(){"longTap"==this.data.optTriggerType&&this.showOptBar()},onFullscreenChange:function(e){info.tip("onFullscreenChange")},onPlayerTap:function(){var e=this;console.log("onPlayerTap"),e.triggerEvent("playerTap",{user:e.data.userInfo,support:!e.data.notSupported})}}});
\ No newline at end of file
......@@ -4,7 +4,7 @@
bindfullscreenchange="onFullscreenChange"
bindnetstatus="onNetStatus" class="player"
bindstatechange="onStateChange" binderror="onError"
src="{{streamName}}" mode="RTC"
src="{{streamName}}" mode="live"
style="width: 100%;height:100%;">
<cover-view class="cover-image-wrapper" hidden="{{!(!userInfo.videoOn || notSupported)}}">
</cover-view>
......
var $=require("../../jquery"),store=require("../../store"),config=require("../../config"),roomServer=require("../../server/room"),eventEmitter=require("../../eventEmitter");Component({properties:{answerDisplayTime:{type:Number,value:0}},data:{showQuiz:!1,url:""},methods:{msgHandler:function(e){roomServer.submitQuiz(e.detail.data[0])},getUrl:function(e,t){var n=[];return $.each(t,function(e,t){n.push(e+"="+t)}),encodeURI(e+"?"+n.join("&"))}},ready:function(){var r,o=this,e=getCurrentPages()[0],t="/"+o.getUrl(e.route,e.options);o.namespace=".quiz"+Math.random(),eventEmitter.on(eventEmitter.CLASSROOM_CONNECT_SUCCESS+o.namespace,function(){var e=store.get("env","");r=o.getUrl(config["QUIZ_PATH"+e],{env:e.replace("_",""),token:store.get("token"),room_id:store.get("class.id"),user_number:store.get("user.number"),user_name:store.get("user.name"),from_page:encodeURIComponent(t)}),roomServer.getQuiz()}).on(eventEmitter.QUIZ_START+o.namespace,function(e,t){o.setData({url:r+"&quiz_id="+t.quizId+"#"+encodeURIComponent(JSON.stringify(t))})}).on(eventEmitter.QUIZ_END+o.namespace,function(){o.setData({url:""})}).on(eventEmitter.QUIZ_RES+o.namespace,function(e,t){t.forceJoin&&t.quizId&&!t.endFlag&&$.isEmptyObject(t.solution)&&o.setData({url:r+"&quiz_id="+t.quizId+"#"+encodeURIComponent(JSON.stringify(t))})}).on(eventEmitter.QUIZ_SOLUTION+o.namespace,function(e,t){var n=o.data.answerDisplayTime;0<n&&(o.setData({url:r+"&quiz_id="+t.quizId+"#"+encodeURIComponent(JSON.stringify(t))}),setTimeout(function(){o.setData({url:""})},n))})},beforeDestroy:function(){eventEmitter.off(this.namespace)}});
\ No newline at end of file
var $=require("../../jquery"),store=require("../../store"),config=require("../../config"),roomServer=require("../../server/room"),eventEmitter=require("../../eventEmitter");Component({properties:{answerDisplayTime:{type:Number,value:3e4}},data:{showQuiz:!1,url:""},methods:{msgHandler:function(e){roomServer.submitQuiz(e.detail.data[0])},getUrl:function(e,t){var n=[];return $.each(t,function(e,t){n.push(e+"="+t)}),encodeURI(e+"?"+n.join("&"))}},ready:function(){var r,o=this,e=getCurrentPages()[0],t="/"+o.getUrl(e.route,e.options);o.namespace=".quiz"+Math.random(),eventEmitter.on(eventEmitter.CLASSROOM_CONNECT_SUCCESS+o.namespace,function(){var e=store.get("env","");r=o.getUrl(config["QUIZ_PATH"+e],{env:e.replace("_",""),token:store.get("token"),room_id:store.get("class.id"),user_number:store.get("user.number"),user_name:store.get("user.name"),from_page:encodeURIComponent(t)}),roomServer.getQuiz()}).on(eventEmitter.QUIZ_START+o.namespace,function(e,t){o.setData({url:r+"&quiz_id="+t.quizId+"#"+encodeURIComponent(JSON.stringify(t))})}).on(eventEmitter.QUIZ_END+o.namespace,function(){o.setData({url:""})}).on(eventEmitter.QUIZ_RES+o.namespace,function(e,t){t.forceJoin&&t.quizId&&!t.endFlag&&$.isEmptyObject(t.solution)&&o.setData({url:r+"&quiz_id="+t.quizId+"#"+encodeURIComponent(JSON.stringify(t))})}).on(eventEmitter.QUIZ_SOLUTION+o.namespace,function(e,t){var n=o.data.answerDisplayTime;0<n&&(t.answerDisplayTime=n/1e3,o.setData({url:r+"&quiz_id="+t.quizId+"#"+encodeURIComponent(JSON.stringify(t))}),setTimeout(function(){o.setData({url:""})},n))})},beforeDestroy:function(){eventEmitter.off(this.namespace)}});
\ No newline at end of file
/**
* @file 语言包
* @author dujianhao
*/
'use strict';
exports.CALL_THE_ROOL_TITLE = '点名';
exports.CALL_THE_ROOL_REQUIREMENTS_BEFORE = '老师要求您在';
exports.CALL_THE_ROOL_REQUIREMENTS_AFTER = '内响应点名';
exports.CALL_THE_ROOL_RESPOND = '答到';
exports.CALL_THE_ROOL_RESPOND_SUCCESS = '答到成功';
"use strict";exports.CALL_THE_ROOL_TITLE="点名",exports.CALL_THE_ROOL_REQUIREMENTS_BEFORE="老师要求您在",exports.CALL_THE_ROOL_REQUIREMENTS_AFTER="内响应点名",exports.CALL_THE_ROOL_RESPOND="答到",exports.CALL_THE_ROOL_RESPOND_SUCCESS="答到成功";
\ No newline at end of file
/**
* @file 语言包
* @author dujianhao
*/
'use strict';
exports.CALL_THE_ROOL_TITLE = '点名';
exports.CALL_THE_ROOL_REQUIREMENTS_BEFORE = '主讲要求您在';
exports.CALL_THE_ROOL_REQUIREMENTS_AFTER = '内响应点名';
exports.CALL_THE_ROOL_RESPOND = '答到';
exports.CALL_THE_ROOL_RESPOND_SUCCESS = '答到成功';
"use strict";exports.CALL_THE_ROOL_TITLE="点名",exports.CALL_THE_ROOL_REQUIREMENTS_BEFORE="主讲要求您在",exports.CALL_THE_ROOL_REQUIREMENTS_AFTER="内响应点名",exports.CALL_THE_ROOL_RESPOND="答到",exports.CALL_THE_ROOL_RESPOND_SUCCESS="答到成功";
\ No newline at end of file
/**
* @file 语言包
* @author dujianhao
*/
'use strict';
exports.CALL_THE_ROOL_TITLE = 'Roll Call';
exports.CALL_THE_ROOL_REQUIREMENTS_BEFORE = 'The presenter request you respond the roll call in';
exports.CALL_THE_ROOL_REQUIREMENTS_AFTER = '';
exports.CALL_THE_ROOL_RESPOND = 'Respond';
exports.CALL_THE_ROOL_RESPOND_SUCCESS = 'Respond success';
"use strict";exports.CALL_THE_ROOL_TITLE="Roll Call",exports.CALL_THE_ROOL_REQUIREMENTS_BEFORE="The presenter request you respond the roll call in",exports.CALL_THE_ROOL_REQUIREMENTS_AFTER="",exports.CALL_THE_ROOL_RESPOND="Respond",exports.CALL_THE_ROOL_RESPOND_SUCCESS="Respond success";
\ No newline at end of file
/**
* @file 话术入口
* @author dujianhao
*/
const getLanguage = require('../../../function/getLanguage').getLanguage;
module.exports = function () {
return getLanguage({
english: require('./english'),
chineseLive: require('./chineseLive'),
chineseClassroom: require('./chineseClassroom')
});
};
undefined
\ No newline at end of file
// sdk/component/rollCall/rollCall.js
var device = require('../../device');
var eventEmitter = require('../../eventEmitter');
var language = require('./language/main')();
var rollCallInterval = null;
Component({
/**
* Component initial data
*/
data: {
isAndroid: device.isAndroid(),
language: language,
// 是否显示dialog
showDialog: false,
duration: 0,
content: '',
confirmText: language.CALL_THE_ROOL_RESPOND,
showCancelBtn: false,
},
/**
* Component methods
*/
methods: {
onDialogConfirm: function() {
console.log(11)
this.setData({
showDialog: false,
duration: 0,
content: '',
});
rollCallInterval = clearInterval(rollCallInterval);
wx.showToast({
title: language.CALL_THE_ROOL_RESPOND_SUCCESS,
});
eventEmitter.trigger(eventEmitter.ROLL_CALL_RES);
},
},
ready: function() {
eventEmitter
.on(
eventEmitter.ROLL_CALL,
(event, data) => {
var isAndroid = device.isAndroid();
var duration = data.duration;
this.setData({
showDialog: true,
duration: duration,
});
if (!isAndroid) {
this.setData({
content: `${language.CALL_THE_ROOL_REQUIREMENTS_BEFORE} ${duration}s ${language.CALL_THE_ROOL_REQUIREMENTS_AFTER}`,
});
}
duration--;
rollCallInterval = setInterval(() => {
if (duration <= 0) {
this.setData({
showDialog: false,
duration: 0,
});
rollCallInterval = clearInterval(rollCallInterval);
return;
}
this.setData({
duration: duration,
});
if (!isAndroid) {
this.setData({
content: `${language.CALL_THE_ROOL_REQUIREMENTS_BEFORE} ${duration}s ${language.CALL_THE_ROOL_REQUIREMENTS_AFTER}`,
});
}
duration--;
}, 1000);
}
);
}
})
\ No newline at end of file
undefined
\ No newline at end of file
var eventEmitter=require("../../eventEmitter"),userData=require("../../data/user"),store=require("../../store"),info=require("../../info"),$=require("../../jquery"),auth=require("../../auth"),language=require("../../language/main")(),hasTiped=!1;$.extend(language,require("./language/main")()),Component({properties:{showName:{type:Boolean,value:!0},styleInfo:{type:Object,value:{fontSize:12}},stopPlay:{type:Boolean,value:!1},fullScreen:{type:Boolean,value:!1},coverImage:{type:String,value:"/sdk/component/player/image/closeCamera.png"}},data:{userInfo:{}},ready:function(){var n=this;hasTiped=!1,eventEmitter.on(eventEmitter.MEDIA_PUBLISH,function(e,t){var a=t.user;auth.isTeacher(a.type)&&(n.setData({userInfo:a}),n.triggerEvent("setUserInfo",{user:a}))}).on(eventEmitter.MEDIA_REPUBLISH,function(e,t){var a=t.user;auth.isTeacher(a.type)&&(n.setData({userInfo:a}),n.triggerEvent("setUserInfo",{user:a}))}).on(eventEmitter.USER_OUT,function(e,t){var a=t.user;auth.isTeacher(a.type)&&(a.audioOn=!1,a.videoOn=!1,a.name="",a.canPlay=!userData.isAudioSpeex(a),n.setData({userInfo:a}),n.triggerEvent("setUserInfo",{user:a}))})},methods:{onPlayerTap:function(e){console.log("on teacher player tap");this.triggerEvent("teacherPlayerTap",e.detail)},onPlayerAVStatusChange:function(e){var t=e.detail.changeInfo,a="";console.log("onPlayerAVStatusChange"),console.log(t),!0===t.audioTo&&hasTiped&&(a=language.TEACHER_OPEN_AUDIO),!1===t.audioTo&&(a=language.TEACHER_CLOSE_AUDIO),!1===t.videoTo&&hasTiped&&(a=language.TEACHER_CLOSE_VIDEO),!0===t.videoTo&&(a=language.TEACHER_OPEN_VIDEO),a&&info.tip(a),hasTiped||(hasTiped=!0),this.triggerEvent("AVStatusChange",e.detail)},onSupportedChanged:function(e){this.triggerEvent("isSupportedChanged",e.detail)},onNetStatus:function(e){this.triggerEvent("netStatus",e.detail)}}});
\ No newline at end of file
var eventEmitter=require("../../eventEmitter"),userData=require("../../data/user"),store=require("../../store"),info=require("../../info"),$=require("../../jquery"),auth=require("../../auth"),webrtcMixMediaPublish=require("../../function/webrtcMixMediaPublish"),language=require("../../language/main")(),hasTiped=!1;$.extend(language,require("./language/main")()),Component({properties:{showName:{type:Boolean,value:!0},styleInfo:{type:Object,value:{fontSize:12}},stopPlay:{type:Boolean,value:!1},fullScreen:{type:Boolean,value:!1},coverImage:{type:String,value:"/sdk/component/player/image/closeCamera.png"}},data:{userInfo:{}},ready:function(){var a=this;hasTiped=!1,eventEmitter.on(eventEmitter.VIEW_RENDER_TRIGGER,function(){auth.isWebRTC()?(eventEmitter.on(eventEmitter.WEBRTC_MIX_MEDIA_PUBLISH,function(e,t){a.setUser(t.user)}).on(eventEmitter.CLASS_START,function(){webrtcMixMediaPublish()}).on(eventEmitter.CLASS_END,function(){webrtcMixMediaPublish()}).on(eventEmitter.PRESENTER_CHANGE,function(){webrtcMixMediaPublish()}).on(eventEmitter.VIEW_RENDER_TRIGGER,function(){webrtcMixMediaPublish()}),store.set("webrtcMixUser.name",language.USER_ROLE_TEACHER)):eventEmitter.on(eventEmitter.MEDIA_PUBLISH,function(e,t){var n=t.user;auth.isTeacher(n.type)&&a.setUser(n)}).on(eventEmitter.MEDIA_REPUBLISH,function(e,t){var n=t.user;auth.isTeacher(n.type)&&a.setUser(n)}).on(eventEmitter.USER_OUT,function(e,t){var n=t.user;auth.isTeacher(n.type)&&(n.audioOn=!1,n.videoOn=!1,n.name="",n.canPlay=!userData.isAudioSpeex(n),a.setUser(n))})})},methods:{onPlayerTap:function(e){console.log("on teacher player tap");this.triggerEvent("teacherPlayerTap",e.detail)},onPlayerAVStatusChange:function(e){var t=e.detail.changeInfo,n="";console.log("onPlayerAVStatusChange"),console.log(t),!0===t.audioTo&&hasTiped&&(n=language.TEACHER_OPEN_AUDIO),!1===t.audioTo&&(n=language.TEACHER_CLOSE_AUDIO),!1===t.videoTo&&hasTiped&&(n=language.TEACHER_CLOSE_VIDEO),!0===t.videoTo&&(n=language.TEACHER_OPEN_VIDEO),n&&info.tip(n),hasTiped||(hasTiped=!0),this.triggerEvent("AVStatusChange",e.detail)},onSupportedChanged:function(e){this.triggerEvent("isSupportedChanged",e.detail)},onNetStatus:function(e){this.triggerEvent("netStatus",e.detail)},setUser:function(e){this.setData({userInfo:e}),this.triggerEvent("setUserInfo",{user:e})}}});
\ No newline at end of file
<!--common/component/whiteboard/canvasLayer/canvasLayer.wxml-->
<view class="doc-canvas"
style="width: {{pageInfo.width}}px;height:{{pageInfo.height}}px">
<canvas wx:if="{{canDraw}}" canvas-id='doc-canvas'
class="canvas"
disable-scroll="true"
style="width: {{pageInfo.width}}px;height:{{pageInfo.height}}px"
bindtouchstart="onCanvasTouchStart"
bindtouchmove="onCanvasTouchMove"
bindtouchend="onCanvasTouchEnd"
>
<template is="opt"
data="{{pageCount: pageCount,drawing: drawing,showClear:showClear,showPageCount:showPageCount,finished: finished,styleInfo: styleInfo}}"/>
</canvas>
<canvas wx:else canvas-id='doc-canvas'
disable-scroll="true"
style="width: {{pageInfo.width}}px;height:{{pageInfo.height}}px">
</canvas>
<cover-view class="laser"
hidden="{{!showLaser}}"
style="left: {{laserStyle.left}}px;top:{{laserStyle.top}}px">
<view class="doc-canvas" style="width: {{pageInfo.width}}px;height:{{pageInfo.height}}px">
<canvas wx:if="{{canDraw}}" canvas-id='doc-canvas' class="canvas" disable-scroll="true" style="width: {{pageInfo.width}}px;height:{{pageInfo.height}}px" bindtouchstart="onCanvasTouchStart" bindtouchmove="onCanvasTouchMove" bindtouchend="onCanvasTouchEnd">
<template is="opt" data="{{pageCount: pageCount,drawing: drawing,showClear:showClear,showPageCount:showPageCount,finished: finished,styleInfo: styleInfo}}" />
<cover-view class="clear" bindtap="onClearTap" hidden="{{!drawing || !showClear}}">
<cover-image class="clear-icon" src="/sdk/component/whiteboard/image/bjl_ic_clearall@2x.png">
</cover-image>
<cover-view>
{{language.CLEAR}}
</cover-view>
</cover-view>
</canvas>
<canvas wx:else canvas-id='doc-canvas' disable-scroll="true" style="width: {{pageInfo.width}}px;height:{{pageInfo.height}}px">
</canvas>
<cover-view class="laser" hidden="{{!showLaser}}" style="left: {{laserStyle.left}}px;top:{{laserStyle.top}}px">
</cover-view>
</view>
<template name="opt">
<cover-view class="whiteboard-mask" hidden="{{drawing}}"
bindtap="onMaskTap">
</cover-view>
<cover-view class="page-count-wrapper">
<cover-view bindtap="onPageCountTap"
hidden="{{!showPageCount || (!finished)}}"
class="page-count"
style="color: {{styleInfo.pageCountColor}};background:{{styleInfo.pageCountBackground}}">
<cover-view class="empty"></cover-view>
{{pageCount}}
<cover-view class="empty"></cover-view>
</cover-view>
<cover-view class="whiteboard-mask" hidden="{{drawing}}" bindtap="onMaskTap">
</cover-view>
<cover-view class="page-count-wrapper">
<cover-view bindtap="onPageCountTap" hidden="{{!showPageCount || (!finished)}}" class="page-count" style="color: {{styleInfo.pageCountColor}};background:{{styleInfo.pageCountBackground}}">
<cover-view class="empty"></cover-view>
{{pageCount}}
<cover-view class="empty"></cover-view>
</cover-view>
</template>
</cover-view>
</template>
\ No newline at end of file
......@@ -19,6 +19,30 @@
z-index: 3;
opacity: 0.5;
}
.clear {
position: absolute;
height: 20px;
bottom: 10px;
left: 10px;
background: black;
opacity: 0.5;
display: flex;
color: white;
font-size: 12px;
padding: 3px;
align-items: center;
border-radius: 5px;
z-index: 12;
}
.clear-icon {
width: 20px;
height: 20px;
margin-right: 5px;
}
.whiteboard-mask {
position: absolute;
top: 0px;
......@@ -30,11 +54,12 @@
.page-count-wrapper {
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
z-index: 10;
display: block;
text-align: center;
opacity: 0.5;
width: 100%;
}
.page-count {
background: #C2C0C1;
......
var canvasWidth,canvasHeight,painter,context,doodle,tabletCursorActive,tabletCursorActiveTimer,Timer=require("../../../Timer"),serial=require("../../../function/serial"),debounce=require("../../../function/debounce"),Canvas=require("../../../painter/dist/painter"),Doodle=Canvas.shapes.Doodle,$=require("../../../jquery"),eventEmitter=require("../../../eventEmitter"),auth=require("../../../auth"),docData=require("../../../data/doc"),pageData=require("../../../data/page"),roomServer=require("../../../server/room"),painterConfig=require("./config"),util=require("../../../util"),store=require("../../../store"),drawing=!1;$.extend(eventEmitter,require("../eventEmitter"));var resizeTask,drawTimer,numberToIdMap={},shapeMap={};function formatDecimal(e){return(e=""+e).slice(0,6)}function object2Shape(e){return new Canvas.shapes[e.name](e)}function getPainterConfig(){return{fillStyle:"transparent",strokeStyle:"red",lineWidth:1,strokePosition:2,shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,shadowColor:"#8f8f8f",radius:0,hasShadow:!0,thickness:6,fontFamily:"sans-serif",caretColor:"#fff",hoverColor:"#fff000"}}function serializeShape(e){var a=e.toJSON();if(a.id=e.id,a.fillAlpha=0,a.strokeAlpha=0,"Oval"!==a.name&&"Text"!==a.name&&(a.autoClosePath="Doodle"!==a.name,a.smooth="Doodle"===a.name,a.name="Doodle"),e.x)if("Oval"===a.name){var t=e.x-e.width/2;a.x=formatDecimal(t/canvasWidth)}else a.x=formatDecimal(e.x/canvasWidth);if(e.y)if("Oval"===a.name){var r=e.y-e.height/2;a.y=formatDecimal(r/canvasHeight)}else a.y=formatDecimal(e.y/canvasHeight);var i=null;return a.points&&(i=[],util.array.each(e.points,function(e){i.push({x:formatDecimal(e.x/canvasWidth),y:formatDecimal(e.y/canvasHeight)})}),(a.points=i).length&&(a.x=i[0].x,a.y=i[0].y)),e.width&&(a.width=formatDecimal(e.width/canvasWidth)),e.height&&(a.height=formatDecimal(e.height/canvasHeight)),"transparent"===e.strokeStyle&&(a.strokeStyle="#000000"),"transparent"===e.fillStyle&&(a.fillStyle="#000000"),e.fontSize&&(a.fontSize=formatDecimal(e.fontSize/canvas.clientWidth)),"transparent"!=e.fillStyle&&(a.fillAlpha=1),"transparent"!=e.strokeStyle&&(a.strokeAlpha=1),"Oval"===a.name||"Text"===a.name||a.autoClosePath||(a.fillAlpha=0,a.fillStyle="#000000"),a}function unserializeShape(e){var a="Doodle"==e.name?e.autoClosePath?"Polygon":"Doodle":e.name,t={points:[],lineWidth:e.lineWidth,strokeStyle:e.strokeStyle,fillStyle:e.fillStyle,name:a,id:e.id,number:e.number,text:e.text,x:e.x,y:e.y,width:e.width,height:e.height,fontSize:e.fontSize,fontWeight:e.fontWeight,fontItalic:e.fontItalic,fontFamily:e.fontFamily};0==e.strokeAlpha&&(t.strokeStyle="transparent"),0==e.fillAlpha&&(t.fillStyle="transparent");var r=[];if(e.points&&util.array.each(e.points,function(e){r.push({x:Math.floor(e.x*canvasWidth),y:Math.floor(e.y*canvasHeight)})}),t.points=r,e.width&&(t.width=Math.floor(e.width*canvasWidth)),e.height&&(t.height=Math.floor(e.height*canvasHeight)),e.x){var i=e.x*canvasWidth;"Oval"==t.name&&(i+=t.width/2),t.x=Math.floor(i)}if(e.y){var n=e.y*canvasHeight;"Oval"==t.name&&(n+=t.height/2),t.y=Math.floor(n)}return e.fontSize&&(t.computeFontSize=Math.floor(e.fontSize*canvasWidth),t.fontSize=t.computeFontSize<1.5?1.5:t.computeFontSize),t}function addShape(e){painter.addShape(unserializeShape(e))}function stopDrawTimer(){drawTimer&&(drawTimer(),drawTimer=null)}function addShapes(e){var r=[];util.array.each(e,function(e){numberToIdMap[e.number]=e.id;var a=unserializeShape(e),t=a.name?a.name.toLowerCase():painterConfig.toolDoodle;r.push(new shapeMap[t](a))}),painter.addShapes(r)}shapeMap[painterConfig.toolLine]=Canvas.shapes.Line,shapeMap[painterConfig.toolRect]=Canvas.shapes.Rect,shapeMap[painterConfig.toolOval]=Canvas.shapes.Oval,shapeMap[painterConfig.toolDoodle]=Canvas.shapes.Doodle,shapeMap[painterConfig.toolPolygon]=Canvas.shapes.Polygon,shapeMap[painterConfig.toolArrow]=Canvas.shapes.Arrow,shapeMap[painterConfig.toolText]=Canvas.shapes.Text,shapeMap[painterConfig.toolStar]=Canvas.shapes.Star,shapeMap[painterConfig.toolHeart]=Canvas.shapes.Heart,shapeMap[painterConfig.toolArrows]=function(e){return e.double=!0,new Canvas.shapes.Arrow(e)},shapeMap[painterConfig.toolTriangle]=Canvas.shapes.Polygon,exports.init=function(e,a,t){drawing=!1,(painter=new Canvas(context=e,canvasWidth=a,canvasHeight=t)).apply(getPainterConfig()),eventEmitter.on(eventEmitter.SERVER_PAGE_CHANGE,function(){painter.clear()}).on(eventEmitter.CLIENT_PAGE_CHANGE,function(){painter.clear()}).on(eventEmitter.SHAPE_ADD,function(e,a){a.shape;if(auth.isSelf(a.fromId))util.array.each(painter.getShapes(),function(e){if(!e.id&&e.number===a.shape.number)return e.id=a.shape.id,painter.refresh(),!1},!0);else{var t=pageData.getClientPage(),r=docData.getComplexPage(t);a.docId===r.docId&&a.page===r.page&&addShapes([a.shape])}}).on(eventEmitter.SHAPE_REMOVE,function(e,a){if(store.get("user.id")!=a.fromId)if(""!=a.shapeId){var t=a.shapeId.split(",");util.array.each(painter.getShapes(),function(e){e.id&&util.array.has(t,e.id)&&(painter.removeShape(e),delete numberToIdMap[e.number])},!0)}else painter.clear()}).on(eventEmitter.SHAPE_UPDATE,function(e,a){var t=a.shapeList;if(store.get("user.id")!=a.fromId){var r={};util.array.each(t,function(e){r[e.id]=e}),util.array.each(painter.getShapes(),function(e){var a=r[e.id];e.id&&r[e.id]&&(a=unserializeShape(a),$.extend(e,a),painter.refresh())})}})},exports.draw=function(e){1==e?painter.drawing(Doodle):painter.drawing(!1),drawing=!!e},exports.create=function(e){if(stopDrawTimer(),e.length)if(100<e.length){var a=[];util.array.each(e,function(e){a.push(function(){addShapes([e])})}),this.stopDrawTimer=serial(a,20)}else addShapes(e)};var realX,realY,cursorX,cursorY,pageX,pageY,inCanvas,canvasOffset={},containerOffset={};function updatePosition(e){wx.getSystemInfoSync().pixelRatio;var a=e.changedTouches[0];realX=a.x,realY=a.y,cursorX=realX,cursorY=realY}function updateOffset(){}exports.onCanvasTouchStart=function(e){if(drawing){var a=painter.emitter;updatePosition(e),a.on(Canvas.Emitter.SHAPE_ADD,function(e){if(drawing){var a=e.shapes[0];if(!a.id){a=serializeShape(a);var t=docData.getComplexPage(pageData.getClientPage());console.log(t),eventEmitter.trigger(eventEmitter.SHAPE_ADD_TRIGGER,{shape:a,page:t.page,docId:t.docId})}}}),a.fire(Canvas.Emitter.MOUSE_DOWN,{x:cursorX,y:cursorY,realX:realX,realY:realY,target:e.target,inCanvas:!0})}},exports.onCanvasTouchMove=function(e){if(drawing){var a=painter.emitter;updatePosition(e),a.fire(Canvas.Emitter.MOUSE_MOVE,{x:cursorX,y:cursorY,realX:realX,realY:realY,target:e.target,inCanvas:!0})}},exports.onCanvasTouchEnd=function(e){var a=painter.emitter;updatePosition(e),a.fire(Canvas.Emitter.MOUSE_UP,{x:cursorX,y:cursorY,realX:realX,realY:realY,target:e.target,inCanvas:!0})},exports.onClearTap=function(){painter.clear()},exports.resize=function(e,a){if(canvasHeight=a,0<(canvasWidth=e)&&0<a){var t=function(){painter&&painter.resize(e,a)};painter?t():resizeTask=t}};
\ No newline at end of file
undefined
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment