Ported Whiteboard template to React
This commit is contained in:
parent
3c3a7d061f
commit
f5b3ffbaa3
99
bigbluebutton-html5/app/client/views/whiteboard/Whiteboard.jsx
Executable file
99
bigbluebutton-html5/app/client/views/whiteboard/Whiteboard.jsx
Executable file
@ -0,0 +1,99 @@
|
||||
Whiteboard = React.createClass({
|
||||
mixins: [ReactMeteorData],
|
||||
getMeteorData() {
|
||||
let poll_started, is_presenter, is_mobile;
|
||||
if(BBB.isPollGoing(getInSession('userId'))) {
|
||||
poll_started = true;
|
||||
} else {
|
||||
poll_started = false;
|
||||
}
|
||||
|
||||
if(BBB.isUserPresenter(getInSession('userId'))) {
|
||||
is_presenter = true;
|
||||
} else {
|
||||
is_presenter = false;
|
||||
}
|
||||
|
||||
is_mobile = isMobile();
|
||||
|
||||
return {
|
||||
is_mobile: is_mobile,
|
||||
is_presenter: is_presenter,
|
||||
poll_started: poll_started,
|
||||
};
|
||||
},
|
||||
|
||||
isPollStarted() {
|
||||
if(BBB.isPollGoing(getInSession('userId'))) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
componentDidMount() {
|
||||
$('#whiteboard').resizable({
|
||||
handles: 'e',
|
||||
minWidth: 150,
|
||||
resize() {
|
||||
return adjustChatInputHeight();
|
||||
},
|
||||
start() {
|
||||
if($('#chat').width() / $('#panels').width() > 0.2) { // chat shrinking can't make it smaller than one fifth of the whiteboard-chat area
|
||||
return $('#whiteboard').resizable('option', 'maxWidth', $('#panels').width() - 200); // gives the chat enough space (200px)
|
||||
} else {
|
||||
return $('#whiteboard').resizable('option', 'maxWidth', $('#whiteboard').width());
|
||||
}
|
||||
},
|
||||
stop() {
|
||||
$('#whiteboard').css('width', `${100 * $('#whiteboard').width() / $('#panels').width()}%`); // transforms width to %
|
||||
return $('#whiteboard').resizable('option', 'maxWidth', null);
|
||||
}
|
||||
});
|
||||
|
||||
// whiteboard element needs to be available
|
||||
Meteor.NotificationControl = new NotificationControl('notificationArea');
|
||||
|
||||
return $(document).foundation(); // initialize foundation javascript
|
||||
},
|
||||
|
||||
handleWhiteboardFullScreen() {
|
||||
return enterWhiteboardFullscreen();
|
||||
},
|
||||
|
||||
handleExitFullScreen() {
|
||||
if(document.exitFullscreen) {
|
||||
return document.exitFullscreen();
|
||||
} else if(document.mozCancelFullScreen) {
|
||||
return document.mozCancelFullScreen();
|
||||
} else if(document.webkitExitFullscreen) {
|
||||
return document.webkitExitFullscreen();
|
||||
}
|
||||
},
|
||||
|
||||
isFullScreen() {
|
||||
if($( ".fullscreenButton" ).hasClass( "exitFullscreenButton" )) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
render() {
|
||||
<div id="whiteboard" class="component">
|
||||
<div id="whiteboard-container" class="{{whiteboardSize}}">
|
||||
<Slide />
|
||||
<EmojiContainer />
|
||||
{this.data.is_mobile ?
|
||||
<Button onClick={this.isFullScreen() ? this.handleExitFullScreen : this.handleWhiteboardFullScreen} btn_class=" soaringButton fullscreenButton whiteboardFullscreenButton" i_class="ion-arrow-expand" />
|
||||
: null }
|
||||
</div>
|
||||
{this.data.is_presenter ?
|
||||
<WhiteboardControls />
|
||||
: null }
|
||||
{this.data.poll_started ?
|
||||
<Polling/>
|
||||
: null }
|
||||
</div>
|
||||
}
|
||||
});
|
Loading…
Reference in New Issue
Block a user