From 56d5ac33ffe71c837dcf12ce1d769c834775b498 Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Thu, 3 Aug 2017 16:40:41 +0200 Subject: [PATCH 001/111] Added first (non working) version of webrtc presentations --- components/DefaultHTMLLayout.js | 2 + components/webrtc/presentationBroadcast.js | 664 +++++++++++++++++++++ configs/routes.js | 6 + package.json | 1 + 4 files changed, 673 insertions(+) create mode 100644 components/webrtc/presentationBroadcast.js diff --git a/components/DefaultHTMLLayout.js b/components/DefaultHTMLLayout.js index 2d9d5f258..8a34309e5 100644 --- a/components/DefaultHTMLLayout.js +++ b/components/DefaultHTMLLayout.js @@ -80,6 +80,8 @@ class DefaultHTMLLayout extends React.Component { : '' } + + {/* Adding for dependency loading with reveal.js*/} diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js new file mode 100644 index 000000000..3cf7dd0df --- /dev/null +++ b/components/webrtc/presentationBroadcast.js @@ -0,0 +1,664 @@ +import React from 'react'; + +class presentationBroadcast extends React.Component { + + constructor(props) { + super(props); + this.isInitiator = false; + this.localStream = undefined; + this.myID = undefined; + this.presenterID = undefined; + this.pcs = {}; // {: {RTCConnection: RPC, dataChannel: dataChannel}, : {RTCConnection: RPC, dataChannel: dataChannel}} + this.remoteStreams = []; + this.turnReady = undefined; + + this.pcConfig = { + 'iceServers': [{ + 'urls': 'stun:stun.l.google.com:19302' //TODO host own STUN (and TURN?) Server? + }] + }; + + // Set up audio and video regardless of what devices are present. + this.sdpConstraints = { + offerToReceiveAudio: true, + offerToReceiveVideo: true + }; + + this.room = 'foo';//TODO get it from the URL + this.socket = undefined; + } + componentDidMount() { + $('.menu:first').remove(); + $('.footer:first').remove(); + let that = this; + + that.socket = io('http://localhost:8080'); + + if (that.room !== '') { + that.socket.emit('create or join', that.room); + console.log('Attempted to create or join that.room', that.room); + } + + function setmyID() { + if (that.myID === undefined) + that.myID = that.socket.id; + return that.myID; + } + + that.socket.on('created', (room, socketID) => { //only initiator recieves this + console.log('Created room ' + that.room); + that.isInitiator = true; + $('#roleText') + .text('You are the presenter, other poeple will hear your voice and reflect your presentation progress.'); + $('#peerCounterText') + .text('Peers currently listening: '); + $('#peerCounter') + .text('0'); + setmyID(); + $('#slidewikiPresentation') + .on('load', activateIframeListeners); + requestStreams({ + audio: true, + // video: { + // width: { min: 480, ideal: 720, max: 1920 }, + // height: { min: 360, ideal: 540, max: 1080 }, + // facingMode: "user" + // } + }); + swal({ + title: '

that.room ' + that.room + ' successfully created!

', + html: '

Other people are free to join it. At the bottom of the page is a peer counter. The current limit is 10 people.

', + type: 'info', + confirmButtonColor: '#3085d6', + confirmButtonText: 'Check' + }) + .then(() => { activateSpeechRecognition(); }); + }); + + that.socket.on('join', (room, socketID) => { //whole that.room recieves this, except for the peer that tries to join + // a listener will join the that.room + console.log('Another peer made a request to join room ' + that.room); + if (that.isInitiator) { + console.log('This peer is the initiator of room ' + that.room + '!'); + that.socket.emit('ID of presenter', that.room, that.myID); + } + }); + + that.socket.on('joined', (room) => { //only recieved by peer that tries to join + // a listener has joined the that.room + console.log('joined: ' + that.room); + setmyID(); + $('#roleText') + .text('You are now listening to the presenter. The presentation you see will reflect his progress.'); + $('#slidewikiPresentation') + .on('load', activateIframeListeners); + requestStreams({ + audio: false, + video: false + }); + }); + + that.socket.on('full', (room) => { //only recieved by peer that tries to join + console.log('that.room ' + that.room + ' is full'); + that.socket.close(); + swal({ + title: 'that.room full', + html: 'This that.room is already full - sorry!', + type: 'warning', + confirmButtonColor: '#3085d6', + confirmButtonText: 'Okay' + }); + }); + + that.socket.on('ID of presenter', (id) => { + console.log('Received ID of presenter: ', id); + that.presenterID = id; + }); + + that.socket.on('log', (array) => { + setmyID(); + }); + + //////////////////////////////////////////////// + + function sendMessage(cmd, data = undefined, receiver = undefined) { + console.log('Sending message: ', cmd, data, receiver); + that.socket.emit('message', { 'cmd': cmd, 'data': data, 'sender': that.myID, 'receiver': receiver }, that.room); + } + + function sendRTCMessage(cmd, data = undefined, receiver = undefined) { + let message = JSON.stringify({ 'cmd': cmd, 'data': data }); + if (receiver) { //send to one peer only + that.pcs[receiver].dataChannel.send(message); + } else { //broadcast from initiator + for (var i in that.pcs) { + if (that.pcs[i].dataChannel) { + console.log('Sending Message to peer: ', i); + that.pcs[i].dataChannel.send(message); + } + } + } + } + + // This client receives a message + that.socket.on('message', (message) => { + if (message.sender === that.myID) { //Filter for messages from myself + if (message.cmd === 'peer wants to connect' && Object.keys(that.pcs) + .length === 0) { //peer triggers itself + start(that.presenterID); + } + } else if (message.receiver === that.myID) { //adressed to me + console.log('Recieved message from peer: ', message); + if (message.cmd === 'peer wants to connect' && that.isInitiator) { //Everyone recieves this, except for the peer itself, as soon as a peer joins, only from peer + start(message.sender); + } else if (message.cmd === 'offer' || (message.cmd === 'answer' && that.isInitiator)) { //offer by initiator, answer by peer + that.pcs[message.sender].RTCconnection.setRemoteDescription(new RTCSessionDescription(message.data)); + if (message.cmd === 'offer') // führt nur der peer aus + doAnswer(message.sender); + } + if (message.cmd === 'candidate') { + try { //Catch defective candidates + var candidate = new RTCIceCandidate({ + sdpMLineIndex: message.data.label, + candidate: message.data.candidate + }); + that.pcs[message.sender].RTCconnection.addIceCandidate(candidate) + .catch((e) => {}); //Catch defective candidates + } catch (e) {} + } + } + }); + + //////////////////////////////////////////////////// + + function requestStreams(options) { + navigator.mediaDevices.getUserMedia(options) + .then(gotStream) + .catch((e) => { + gotStream(''); + console.log('getUserMedia() error: ' + e.name); + }); + } + + function gotStream(stream) { + console.log('Adding local stream.'); + if (that.isInitiator) { + //$('#videos').append(''); + //let localVideo = document.querySelector('#localVideo'); + //localVideo.srcObject = stream; + $('#videos') + .remove(); + } + that.localStream = stream; + + function sendASAP() { + if (that.presenterID) + sendMessage('peer wants to connect', undefined, that.presenterID); + else + setTimeout(() => { sendASAP(); }, 10); + } + if (!that.isInitiator) { + sendASAP(); + } + } + + // if (location.hostname !== 'localhost') { + // requestTurn( + // 'https://computeengineondemand.appspot.com/turn?username=41784574&key=4080218913' + // ); + // } + + function start(peerID) { + if (typeof that.localStream !== 'undefined') { + console.log('creating RTCPeerConnnection for', (that.isInitiator) ? 'initiator' : 'peer'); + createPeerConnection(peerID); + if (that.isInitiator) + that.pcs[peerID].RTCconnection.addStream(that.localStream); + if (that.isInitiator) + doCall(peerID); + } + } + + window.onbeforeunload = function() { + hangup(); + }; + + ///////////////////////////////////////////////////////// + + function createPeerConnection(peerID) { + try { + that.pcs[peerID] = {}; + that.pcs[peerID].RTCconnection = new RTCPeerConnection(null); + that.pcs[peerID].RTCconnection.onicecandidate = handleIceCandidate.bind(that, peerID); + that.pcs[peerID].RTCconnection.onaddstream = handleRemoteStreamAdded; + that.pcs[peerID].RTCconnection.onremovestream = handleRemoteStreamRemoved; + if (that.isInitiator) { + that.pcs[peerID].dataChannel = that.pcs[peerID].RTCconnection.createDataChannel('messages', { + ordered: true + }); + onDataChannelCreated(that.pcs[peerID].dataChannel, peerID); + } else { + that.pcs[peerID].RTCconnection.ondatachannel = handleDataChannelEvent.bind(that, peerID); + } + console.log('Created RTCPeerConnnection'); + if (that.isInitiator) + $('#peerCounter') + .text(Object.keys(that.pcs) + .length); + } catch (e) { + console.log('Failed to create PeerConnection, exception: ' + e.message); + console.log('Cannot create RTCPeerConnection object.'); + return; + } + } + + function handleDataChannelEvent(peerID, event) { //called by peer + console.log('ondatachannel:', event.channel); + that.pcs[peerID].dataChannel = event.channel; + that.pcs[peerID].dataChannel.onclose = handleRPCClose; //NOTE dirty workaround as browser are currently not implementing RPC.onconnectionstatechange + onDataChannelCreated(that.pcs[peerID].dataChannel, peerID); + } + + function handleRPCClose() { + if (!that.isInitiator) { + swal({ + title: '

The presenter closed the session!

', + html: '

This presentation has ended. Feel free to look at the deck as long as you want.

', + type: 'warning', + confirmButtonColor: '#3085d6', + confirmButtonText: 'Check' + }); + $('#roleText') + .text('This presentation has ended. Feel free to look at the deck as long as you want.'); + handleRemoteHangup(that.presenterID); + } + } + + function onDataChannelCreated(channel, peerID) { //called by peer and by initiatior + console.log('Created data channel: ', channel, 'for ', peerID); + /*NOTE + * Browsers do currenty not support events that indicate whether ICE exchange has finished or not and the RPC connection has been fully established. Thus, I'm waiting for latest event onDataChannelCreated in order to close the that.socket after some time. This should be relativly safe. + */ + if (!that.isInitiator && that.socket.disconnected === false) { + setTimeout(() => { that.socket.close(); }, 5000); //close that.socket after 5 secs + } + + channel.onopen = function() { + console.log('Data Channel opened'); + if (that.isInitiator) + sendRTCMessage('gotoslide', currentSlide, peerID); + }; + + channel.onmessage = handleMessage.bind(that, channel); + } + + function handleMessage(channel, event) { + let data = JSON.parse(event.data); + switch (data.cmd) { + case 'gotoslide': + if (!that.isInitiator) + changeSlide(data.data); + break; + case 'log': + console.log('Recieved message from peer: ', data.data); + break; + case 'bye': + handleRemoteHangup(data.data); + break; + default: + + } + } + + function handleIceCandidate(peerID, event) { + if (event && ((event.target && event.target.iceGatheringState !== 'complete') || event.candidate !== null)) { + sendMessage('candidate', { + type: 'candidate', + label: event.candidate.sdpMLineIndex, + id: event.candidate.sdpMid, + candidate: event.candidate.candidate + }, peerID); + } else { + console.log('End of candidates.'); + } + } + + function handleRemoteStreamAdded(event) { + if (that.isInitiator === false) { + $('#videos') + .append(''); + let remoteVideos = $('.remoteVideos'); + remoteVideos[remoteVideos.length - 1].srcObject = event.stream; + that.remoteStreams[remoteVideos.length - 1] = event.stream; + } + } + + function handleCreateOfferError(event) { + console.log('createOffer() error: ', event); + } + + function doCall(peerID) { //calledy by initiatior + that.pcs[peerID].RTCconnection.createOffer(setLocalAndSendMessage.bind(that, peerID), handleCreateOfferError); + } + + function doAnswer(peerID) { + that.pcs[peerID].RTCconnection.createAnswer() + .then( + setLocalAndSendMessage.bind(that, peerID), + onCreateSessionDescriptionError + ); + } + + function setLocalAndSendMessage(peerID, sessionDescription) { + // Set Opus as the preferred codec in SDP if Opus is present. + sessionDescription.sdp = preferOpus(sessionDescription.sdp); + that.pcs[peerID].RTCconnection.setLocalDescription(sessionDescription); + sendMessage(sessionDescription.type, sessionDescription, peerID); + } + + function onCreateSessionDescriptionError(error) { + trace('Failed to create session description: ' + error.toString()); + } + + function requestTurn(turnURL) { + var turnExists = false; + for (var i in that.pcConfig.iceServers) { + if (that.pcConfig.iceServers[i].url.substr(0, 5) === 'turn:') { + turnExists = true; + that.turnReady = true; + break; + } + } + if (!turnExists) { + console.log('Getting TURN server from ', turnURL); + // No TURN server. Get one from computeengineondemand.appspot.com: + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4 && xhr.status === 200) { + var turnServer = JSON.parse(xhr.responseText); + console.log('Got TURN server: ', turnServer); + that.pcConfig.iceServers.push({ + 'url': 'turn:' + turnServer.username + '@' + turnServer.turn, + 'credential': turnServer.password + }); + that.turnReady = true; + } + }; + xhr.open('GET', turnURL, true); + xhr.send(); + } + } + + function handleRemoteStreamRemoved(event) { + console.log('Remote stream removed. Event: ', event); + } + + function hangup() { //calledy by peer and by initiatior + console.log('Hanging up.'); + if (that.isInitiator) { + stop(undefined, true); + } else { + sendRTCMessage('bye', that.myID, that.presenterID); + stop(that.presenterID); + } + //NOTE Don't need to close the that.socket, as the browser does this automatically if the window closes + } + + function handleRemoteHangup(peerID) { //called by initiator + console.log('Terminating session for ', peerID); + stop(peerID); + } + + function stop(peerID, presenter = false) { + if (presenter) { + for (var i in that.pcs) { + that.pcs[i].dataChannel.close(); + that.pcs[i].RTCconnection.close(); + delete that.pcs[i]; + } + } else { + that.pcs[peerID].dataChannel.close(); + that.pcs[peerID].RTCconnection.close(); + delete that.pcs[peerID]; + } + if (that.isInitiator) + $('#peerCounter') + .text(Object.keys(that.pcs) + .length); + } + + /////////////////////////////////////////// Codec specific stuff + + // Set Opus as the default audio codec if it's present. + function preferOpus(sdp) { + var sdpLines = sdp.split('\r\n'); + var mLineIndex; + // Search for m line. + for (var i = 0; i < sdpLines.length; i++) { + if (sdpLines[i].search('m=audio') !== -1) { + mLineIndex = i; + break; + } + } + if (mLineIndex === null) { + return sdp; + } + + // If Opus is available, set it as the default in m line. + for (i = 0; i < sdpLines.length; i++) { + if (sdpLines[i].search('opus/48000') !== -1) { + var opusPayload = extractSdp(sdpLines[i], /:(\d+) opus\/48000/i); + if (opusPayload) { + sdpLines[mLineIndex] = setDefaultCodec(sdpLines[mLineIndex], + opusPayload); + } + break; + } + } + + // Remove CN in m line and sdp. + sdpLines = removeCN(sdpLines, mLineIndex); + + sdp = sdpLines.join('\r\n'); + return sdp; + } + + function extractSdp(sdpLine, pattern) { + var result = sdpLine.match(pattern); + return result && result.length === 2 ? result[1] : null; + } + + // Set the selected codec to the first in m line. + function setDefaultCodec(mLine, payload) { + var elements = mLine.split(' '); + var newLine = []; + var index = 0; + for (var i = 0; i < elements.length; i++) { + if (index === 3) { // Format of media starts from the fourth. + newLine[index++] = payload; // Put target payload to the first. + } + if (elements[i] !== payload) { + newLine[index++] = elements[i]; + } + } + return newLine.join(' '); + } + + // Strip CN from sdp before CN constraints is ready. + function removeCN(sdpLines, mLineIndex) { + var mLineElements = sdpLines[mLineIndex].split(' '); + // Scan from end for the convenience of removing an item. + for (var i = sdpLines.length - 1; i >= 0; i--) { + var payload = extractSdp(sdpLines[i], /a=rtpmap:(\d+) CN\/\d+/i); + if (payload) { + var cnPos = mLineElements.indexOf(payload); + if (cnPos !== -1) { + // Remove CN payload from m line. + mLineElements.splice(cnPos, 1); + } + // Remove CN line in sdp + sdpLines.splice(i, 1); + } + } + + sdpLines[mLineIndex] = mLineElements.join(' '); + return sdpLines; + } + + + /////////////////////////////////////////// SlideWiki specific stuff + + let lastRemoteSlide = document.getElementById('slidewikiPresentation') + .src; + let paused = false; //user has manually paused slide transitions + let currentSlide = document.getElementById('slidewikiPresentation') + .src; + + $('#resumeRemoteControl') + .click(() => { + resumeRemoteControl(); + }); + + function resumeRemoteControl() { + paused = false; + $('#resumeRemoteControl') + .hide(); + changeSlide(lastRemoteSlide); + } + + function activateIframeListeners() { + console.log('Adding iframe listeners'); + let iframe = $('#slidewikiPresentation') + .contents(); + /* Currently doesn't work - Stackoverflow Question: + * https://stackoverflow.com/questions/45457271/forward-a-keydown-event-from-the-parent-window-to-an-iframe + */ + // $(document).keydown((event) => { + // console.log(event, event.keyCode); + // var newEvent = new KeyboardEvent("keydown", {key: event.originalEvent.key, code: event.originalEvent.code, charCode: event.originalEvent.charCode, keyCode: event.originalEvent.keyCode, which: event.originalEvent.which}); + // //frames['slidewikiPresentation'].document.dispatchEvent(newEvent); + // document.getElementById("slidewikiPresentation").contentWindow.document.dispatchEvent(newEvent); + // //elem.dispatchEvent(event); + // //var e = jQuery.Event( "keydown", { keyCode: event.keyCode } ); + // //$('#slidewikiPresentation')[0].contentWindow.$('body').trigger(e); + // }); + if (that.isInitiator) { + iframe.on('slidechanged', () => { + currentSlide = document.getElementById('slidewikiPresentation') + .contentWindow.location.href; + sendRTCMessage('gotoslide', currentSlide); + }); + } else { + iframe.on('slidechanged', () => { + if (document.getElementById('slidewikiPresentation') + .contentWindow.location.href !== lastRemoteSlide) { + paused = true; + $('#resumeRemoteControl') + .show(); + } + }); + } + } + + function changeSlide(slideID) { // called by peers + lastRemoteSlide = slideID; + if (!paused) { + console.log('Changing to slide: ', slideID); + $('#slidewikiPresentation') + .attr('src', slideID); + } + } + + function activateSpeechRecognition() { + var recognition; + + // if (window.hasOwnProperty('webkitSpeechRecognition')) { + // recognition = new webkitSpeechRecognition(); + // } else if (window.hasOwnProperty('SpeechRecognition')) { + // recognition = new SpeechRecognition(); + // } + // + // if (recognition) { + // $('body') + // .append('

Alpha Feature: Speech Recognition is enabled. Peers will recieve a transcoded version of your voice as a subtitle

'); + // recognition.continuous = true; + // recognition.interimResults = true; + // recognition.lang = navigator.language || navigator.userLanguage; + // recognition.maxAlternatives = 0; + // recognition.start(); + // + // recognition.onresult = function(e) { + // if (e.results[e.results.length - 1][0].confidence >= 0.01) { + // console.log(e.results[e.results.length - 1][0].transcript); + // console.log('Confidence: ', e.results[e.results.length - 1][0].confidence); + // } + // if (Object.keys(that.pcs) + // .length > 0) + // sendRTCMessage('log', e.results[e.results.length - 1][0].transcript); + // }; + // + // recognition.onerror = function(e) { + // console.log('Recognition error:('); + // recognition.stop(); + // }; + // + // recognition.onend = function(e) { + // console.log('Recognition ended itself - stupid thing! Restarting ....'); + // recognition.start(); + // }; + // + // swal({ + // title: 'Speech recognition enabled', + // html: '

Speech recognition is an experimental feature. If enabled, your voice will be transcoded and displayed at all peers as a subtitle.

', + // type: 'info', + // showCancelButton: true, + // confirmButtonColor: '#3085d6', + // cancelButtonColor: '#d33', + // confirmButtonText: 'Okay', + // cancelButtonText: 'Disable' + // }) + // .then(() => {}, (dismiss) => { + // if (dismiss === 'cancel') { + // recognition.stop(); + // console.log('Recognition disabled'); + // $('#recognitionText') + // .remove(); + // } + // }); + // } else { + // swal({ + // title: 'Speech recognition disabled', + // html: '

Your browser is not able to transcode speech to text. Thus, your peers will not recieve a subtitle. Google Chrome is currently the only browser that support speech recognition.

', + // type: 'error', + // confirmButtonColor: '#3085d6', + // confirmButtonText: 'Okay', + // }); + // } + } + + } + + componentDidUpdate() {} + + render() { + return ( +
+ +

+ +
+
+ ); + } +} + +presentationBroadcast.contextTypes = { + executeAction: React.PropTypes.func.isRequired +}; + +export default presentationBroadcast; diff --git a/configs/routes.js b/configs/routes.js index ee1fd4117..b22d15cb7 100644 --- a/configs/routes.js +++ b/configs/routes.js @@ -469,6 +469,12 @@ export default { context.executeAction(loadDeckFamily, payload, done); } }, + webrtc: { + path: '/presentationbroadcast/:room', + method: 'get', + page: 'presentationBroadcast', + handler: require('../components/webrtc/presentationBroadcast') + }, /* This should be the last route in routes.js */ notfound: { path: '*', diff --git a/package.json b/package.json index 757d62501..f1b328917 100644 --- a/package.json +++ b/package.json @@ -122,6 +122,7 @@ "semantic-ui-react": "^0.68.5", "serialize-javascript": "^1.3.0", "serve-favicon": "^2.4.1", + "socket.io": "^2.0.3", "striptags": "^2.1.1", "style-loader": "^0.18.2", "superagent": "^3.5.0", From 75ca572ea5b2e6c7a7279431dace13c9da8e457f Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Fri, 4 Aug 2017 11:25:01 +0200 Subject: [PATCH 002/111] Improved the code to better match the react lifecycle --- components/webrtc/presentationBroadcast.js | 259 +++++++-------------- 1 file changed, 86 insertions(+), 173 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 3cf7dd0df..3b742655d 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -4,12 +4,12 @@ class presentationBroadcast extends React.Component { constructor(props) { super(props); + this.texts = {roleText: '', peerCountText: '', peerCount: ''}; this.isInitiator = false; this.localStream = undefined; this.myID = undefined; this.presenterID = undefined; - this.pcs = {}; // {: {RTCConnection: RPC, dataChannel: dataChannel}, : {RTCConnection: RPC, dataChannel: dataChannel}} - this.remoteStreams = []; + this.pcs = {}; // {: {RTCConnection: RPC, dataChannel: dataChannel}, : {RTCConnection: RPC, dataChannel: dataChannel}} this.turnReady = undefined; this.pcConfig = { @@ -26,17 +26,24 @@ class presentationBroadcast extends React.Component { this.room = 'foo';//TODO get it from the URL this.socket = undefined; + + ////////////////////////////////////////////////////// SlideWiki specific stuff + this.iframesrc = '/Presentation/3-1/#/slide-36-2-0';//TODO get it from the URL + this.lastRemoteSlide = this.iframesrc; + this.paused = false; //user has manually paused slide transitions + this.currentSlide = this.iframesrc; } componentDidMount() { + //Remove menus as they shouldn't appear $('.menu:first').remove(); $('.footer:first').remove(); - let that = this; + let that = this; that.socket = io('http://localhost:8080'); if (that.room !== '') { that.socket.emit('create or join', that.room); - console.log('Attempted to create or join that.room', that.room); + console.log('Attempted to create or join room', that.room); } function setmyID() { @@ -48,15 +55,12 @@ class presentationBroadcast extends React.Component { that.socket.on('created', (room, socketID) => { //only initiator recieves this console.log('Created room ' + that.room); that.isInitiator = true; - $('#roleText') - .text('You are the presenter, other poeple will hear your voice and reflect your presentation progress.'); - $('#peerCounterText') - .text('Peers currently listening: '); - $('#peerCounter') - .text('0'); + that.texts.roleText = 'You are the presenter, other poeple will hear your voice and reflect your presentation progress. '; + that.texts.peerCountText = 'Peers currently listening: '; + that.texts.peerCount = 0; + that.forceUpdate(); setmyID(); - $('#slidewikiPresentation') - .on('load', activateIframeListeners); + $('#slidewikiPresentation').on('load', activateIframeListeners); requestStreams({ audio: true, // video: { @@ -66,17 +70,16 @@ class presentationBroadcast extends React.Component { // } }); swal({ - title: '

that.room ' + that.room + ' successfully created!

', + title: '

Room ' + that.room + ' successfully created!

', html: '

Other people are free to join it. At the bottom of the page is a peer counter. The current limit is 10 people.

', type: 'info', confirmButtonColor: '#3085d6', confirmButtonText: 'Check' - }) - .then(() => { activateSpeechRecognition(); }); + }).then(() => { activateSpeechRecognition(); $('body>a#atlwdg-trigger').remove();}); }); - that.socket.on('join', (room, socketID) => { //whole that.room recieves this, except for the peer that tries to join - // a listener will join the that.room + that.socket.on('join', (room, socketID) => { //whole room recieves this, except for the peer that tries to join + // a listener will join the room console.log('Another peer made a request to join room ' + that.room); if (that.isInitiator) { console.log('This peer is the initiator of room ' + that.room + '!'); @@ -85,13 +88,12 @@ class presentationBroadcast extends React.Component { }); that.socket.on('joined', (room) => { //only recieved by peer that tries to join - // a listener has joined the that.room + // a listener has joined the room console.log('joined: ' + that.room); setmyID(); - $('#roleText') - .text('You are now listening to the presenter. The presentation you see will reflect his progress.'); - $('#slidewikiPresentation') - .on('load', activateIframeListeners); + that.texts.roleText = 'You are now listening to the presenter. The presentation you see will reflect his progress.'; + that.forceUpdate(); + $('#slidewikiPresentation').on('load', activateIframeListeners); requestStreams({ audio: false, video: false @@ -99,11 +101,11 @@ class presentationBroadcast extends React.Component { }); that.socket.on('full', (room) => { //only recieved by peer that tries to join - console.log('that.room ' + that.room + ' is full'); + console.log('Room ' + that.room + ' is full'); that.socket.close(); swal({ - title: 'that.room full', - html: 'This that.room is already full - sorry!', + title: 'Room full', + html: 'This room is already full - sorry!', type: 'warning', confirmButtonColor: '#3085d6', confirmButtonText: 'Okay' @@ -131,7 +133,7 @@ class presentationBroadcast extends React.Component { if (receiver) { //send to one peer only that.pcs[receiver].dataChannel.send(message); } else { //broadcast from initiator - for (var i in that.pcs) { + for (let i in that.pcs) { if (that.pcs[i].dataChannel) { console.log('Sending Message to peer: ', i); that.pcs[i].dataChannel.send(message); @@ -143,8 +145,7 @@ class presentationBroadcast extends React.Component { // This client receives a message that.socket.on('message', (message) => { if (message.sender === that.myID) { //Filter for messages from myself - if (message.cmd === 'peer wants to connect' && Object.keys(that.pcs) - .length === 0) { //peer triggers itself + if (message.cmd === 'peer wants to connect' && Object.keys(that.pcs).length === 0) { //peer triggers itself start(that.presenterID); } } else if (message.receiver === that.myID) { //adressed to me @@ -158,12 +159,11 @@ class presentationBroadcast extends React.Component { } if (message.cmd === 'candidate') { try { //Catch defective candidates - var candidate = new RTCIceCandidate({ + let candidate = new RTCIceCandidate({ sdpMLineIndex: message.data.label, candidate: message.data.candidate }); - that.pcs[message.sender].RTCconnection.addIceCandidate(candidate) - .catch((e) => {}); //Catch defective candidates + that.pcs[message.sender].RTCconnection.addIceCandidate(candidate).catch((e) => {}); //Catch defective candidates } catch (e) {} } } @@ -186,8 +186,7 @@ class presentationBroadcast extends React.Component { //$('#videos').append(''); //let localVideo = document.querySelector('#localVideo'); //localVideo.srcObject = stream; - $('#videos') - .remove(); + $('#videos').remove(); } that.localStream = stream; @@ -241,10 +240,10 @@ class presentationBroadcast extends React.Component { that.pcs[peerID].RTCconnection.ondatachannel = handleDataChannelEvent.bind(that, peerID); } console.log('Created RTCPeerConnnection'); - if (that.isInitiator) - $('#peerCounter') - .text(Object.keys(that.pcs) - .length); + if (that.isInitiator){ + that.texts.peerCount = Object.keys(that.pcs).length; + that.forceUpdate(); + } } catch (e) { console.log('Failed to create PeerConnection, exception: ' + e.message); console.log('Cannot create RTCPeerConnection object.'); @@ -268,8 +267,10 @@ class presentationBroadcast extends React.Component { confirmButtonColor: '#3085d6', confirmButtonText: 'Check' }); - $('#roleText') - .text('This presentation has ended. Feel free to look at the deck as long as you want.'); + that.texts.roleText = 'This presentation has ended. Feel free to look at the deck as long as you want.'; + that.texts.peerCountText = ''; + that.texts.peerCount = ''; + that.forceUpdate(); handleRemoteHangup(that.presenterID); } } @@ -286,7 +287,7 @@ class presentationBroadcast extends React.Component { channel.onopen = function() { console.log('Data Channel opened'); if (that.isInitiator) - sendRTCMessage('gotoslide', currentSlide, peerID); + sendRTCMessage('gotoslide', that.currentSlide, peerID); }; channel.onmessage = handleMessage.bind(that, channel); @@ -325,11 +326,9 @@ class presentationBroadcast extends React.Component { function handleRemoteStreamAdded(event) { if (that.isInitiator === false) { - $('#videos') - .append(''); + $('#videos').append(''); let remoteVideos = $('.remoteVideos'); remoteVideos[remoteVideos.length - 1].srcObject = event.stream; - that.remoteStreams[remoteVideos.length - 1] = event.stream; } } @@ -361,8 +360,8 @@ class presentationBroadcast extends React.Component { } function requestTurn(turnURL) { - var turnExists = false; - for (var i in that.pcConfig.iceServers) { + let turnExists = false; + for (let i in that.pcConfig.iceServers) { if (that.pcConfig.iceServers[i].url.substr(0, 5) === 'turn:') { turnExists = true; that.turnReady = true; @@ -372,10 +371,10 @@ class presentationBroadcast extends React.Component { if (!turnExists) { console.log('Getting TURN server from ', turnURL); // No TURN server. Get one from computeengineondemand.appspot.com: - var xhr = new XMLHttpRequest(); + let xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { - var turnServer = JSON.parse(xhr.responseText); + let turnServer = JSON.parse(xhr.responseText); console.log('Got TURN server: ', turnServer); that.pcConfig.iceServers.push({ 'url': 'turn:' + turnServer.username + '@' + turnServer.turn, @@ -401,7 +400,7 @@ class presentationBroadcast extends React.Component { sendRTCMessage('bye', that.myID, that.presenterID); stop(that.presenterID); } - //NOTE Don't need to close the that.socket, as the browser does this automatically if the window closes + //NOTE Don't need to close the socket, as the browser does this automatically if the window closes } function handleRemoteHangup(peerID) { //called by initiator @@ -411,7 +410,7 @@ class presentationBroadcast extends React.Component { function stop(peerID, presenter = false) { if (presenter) { - for (var i in that.pcs) { + for (let i in that.pcs) { that.pcs[i].dataChannel.close(); that.pcs[i].RTCconnection.close(); delete that.pcs[i]; @@ -421,20 +420,20 @@ class presentationBroadcast extends React.Component { that.pcs[peerID].RTCconnection.close(); delete that.pcs[peerID]; } - if (that.isInitiator) - $('#peerCounter') - .text(Object.keys(that.pcs) - .length); + if (that.isInitiator){ + that.texts.peerCount = Object.keys(that.pcs).length; + that.forceUpdate(); + } } /////////////////////////////////////////// Codec specific stuff // Set Opus as the default audio codec if it's present. function preferOpus(sdp) { - var sdpLines = sdp.split('\r\n'); - var mLineIndex; + let sdpLines = sdp.split('\r\n'); + let mLineIndex; // Search for m line. - for (var i = 0; i < sdpLines.length; i++) { + for (let i = 0; i < sdpLines.length; i++) { if (sdpLines[i].search('m=audio') !== -1) { mLineIndex = i; break; @@ -445,9 +444,9 @@ class presentationBroadcast extends React.Component { } // If Opus is available, set it as the default in m line. - for (i = 0; i < sdpLines.length; i++) { + for (let i = 0; i < sdpLines.length; i++) { if (sdpLines[i].search('opus/48000') !== -1) { - var opusPayload = extractSdp(sdpLines[i], /:(\d+) opus\/48000/i); + let opusPayload = extractSdp(sdpLines[i], /:(\d+) opus\/48000/i); if (opusPayload) { sdpLines[mLineIndex] = setDefaultCodec(sdpLines[mLineIndex], opusPayload); @@ -464,16 +463,16 @@ class presentationBroadcast extends React.Component { } function extractSdp(sdpLine, pattern) { - var result = sdpLine.match(pattern); + let result = sdpLine.match(pattern); return result && result.length === 2 ? result[1] : null; } // Set the selected codec to the first in m line. function setDefaultCodec(mLine, payload) { - var elements = mLine.split(' '); - var newLine = []; - var index = 0; - for (var i = 0; i < elements.length; i++) { + let elements = mLine.split(' '); + let newLine = []; + let index = 0; + for (let i = 0; i < elements.length; i++) { if (index === 3) { // Format of media starts from the fourth. newLine[index++] = payload; // Put target payload to the first. } @@ -486,12 +485,12 @@ class presentationBroadcast extends React.Component { // Strip CN from sdp before CN constraints is ready. function removeCN(sdpLines, mLineIndex) { - var mLineElements = sdpLines[mLineIndex].split(' '); + let mLineElements = sdpLines[mLineIndex].split(' '); // Scan from end for the convenience of removing an item. - for (var i = sdpLines.length - 1; i >= 0; i--) { - var payload = extractSdp(sdpLines[i], /a=rtpmap:(\d+) CN\/\d+/i); + for (let i = sdpLines.length - 1; i >= 0; i--) { + let payload = extractSdp(sdpLines[i], /a=rtpmap:(\d+) CN\/\d+/i); if (payload) { - var cnPos = mLineElements.indexOf(payload); + let cnPos = mLineElements.indexOf(payload); if (cnPos !== -1) { // Remove CN payload from m line. mLineElements.splice(cnPos, 1); @@ -508,28 +507,15 @@ class presentationBroadcast extends React.Component { /////////////////////////////////////////// SlideWiki specific stuff - let lastRemoteSlide = document.getElementById('slidewikiPresentation') - .src; - let paused = false; //user has manually paused slide transitions - let currentSlide = document.getElementById('slidewikiPresentation') - .src; - - $('#resumeRemoteControl') - .click(() => { - resumeRemoteControl(); - }); - - function resumeRemoteControl() { - paused = false; - $('#resumeRemoteControl') - .hide(); - changeSlide(lastRemoteSlide); - } + $('#resumeRemoteControl').click(() => { + that.paused = false; + that.forceUpdate(); + changeSlide(that.lastRemoteSlide); + }); function activateIframeListeners() { console.log('Adding iframe listeners'); - let iframe = $('#slidewikiPresentation') - .contents(); + let iframe = $('#slidewikiPresentation').contents(); /* Currently doesn't work - Stackoverflow Question: * https://stackoverflow.com/questions/45457271/forward-a-keydown-event-from-the-parent-window-to-an-iframe */ @@ -544,98 +530,29 @@ class presentationBroadcast extends React.Component { // }); if (that.isInitiator) { iframe.on('slidechanged', () => { - currentSlide = document.getElementById('slidewikiPresentation') - .contentWindow.location.href; - sendRTCMessage('gotoslide', currentSlide); + that.currentSlide = document.getElementById('slidewikiPresentation').contentWindow.location.href; + sendRTCMessage('gotoslide', that.currentSlide); }); } else { iframe.on('slidechanged', () => { - if (document.getElementById('slidewikiPresentation') - .contentWindow.location.href !== lastRemoteSlide) { - paused = true; - $('#resumeRemoteControl') - .show(); + if (document.getElementById('slidewikiPresentation').contentWindow.location.href !== that.lastRemoteSlide) { + that.paused = true; + that.forceUpdate(); } }); } } function changeSlide(slideID) { // called by peers - lastRemoteSlide = slideID; - if (!paused) { + that.lastRemoteSlide = slideID; + if (!that.paused) { console.log('Changing to slide: ', slideID); - $('#slidewikiPresentation') - .attr('src', slideID); + that.iframesrc = slideID; + that.forceUpdate(); } } - function activateSpeechRecognition() { - var recognition; - - // if (window.hasOwnProperty('webkitSpeechRecognition')) { - // recognition = new webkitSpeechRecognition(); - // } else if (window.hasOwnProperty('SpeechRecognition')) { - // recognition = new SpeechRecognition(); - // } - // - // if (recognition) { - // $('body') - // .append('

Alpha Feature: Speech Recognition is enabled. Peers will recieve a transcoded version of your voice as a subtitle

'); - // recognition.continuous = true; - // recognition.interimResults = true; - // recognition.lang = navigator.language || navigator.userLanguage; - // recognition.maxAlternatives = 0; - // recognition.start(); - // - // recognition.onresult = function(e) { - // if (e.results[e.results.length - 1][0].confidence >= 0.01) { - // console.log(e.results[e.results.length - 1][0].transcript); - // console.log('Confidence: ', e.results[e.results.length - 1][0].confidence); - // } - // if (Object.keys(that.pcs) - // .length > 0) - // sendRTCMessage('log', e.results[e.results.length - 1][0].transcript); - // }; - // - // recognition.onerror = function(e) { - // console.log('Recognition error:('); - // recognition.stop(); - // }; - // - // recognition.onend = function(e) { - // console.log('Recognition ended itself - stupid thing! Restarting ....'); - // recognition.start(); - // }; - // - // swal({ - // title: 'Speech recognition enabled', - // html: '

Speech recognition is an experimental feature. If enabled, your voice will be transcoded and displayed at all peers as a subtitle.

', - // type: 'info', - // showCancelButton: true, - // confirmButtonColor: '#3085d6', - // cancelButtonColor: '#d33', - // confirmButtonText: 'Okay', - // cancelButtonText: 'Disable' - // }) - // .then(() => {}, (dismiss) => { - // if (dismiss === 'cancel') { - // recognition.stop(); - // console.log('Recognition disabled'); - // $('#recognitionText') - // .remove(); - // } - // }); - // } else { - // swal({ - // title: 'Speech recognition disabled', - // html: '

Your browser is not able to transcode speech to text. Thus, your peers will not recieve a subtitle. Google Chrome is currently the only browser that support speech recognition.

', - // type: 'error', - // confirmButtonColor: '#3085d6', - // confirmButtonText: 'Okay', - // }); - // } - } - + function activateSpeechRecognition() {} } componentDidUpdate() {} @@ -643,14 +560,10 @@ class presentationBroadcast extends React.Component { render() { return (
- -

- + +

{this.texts.roleText}{this.texts.peerCountText}{this.texts.peerCount}

+
); From 3084faac933b44e2aa2cec1eb0ae7e681fbba531 Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Fri, 4 Aug 2017 12:59:16 +0200 Subject: [PATCH 003/111] Exchanged local STUN Service to SlideWiki STUN Service --- components/DefaultHTMLLayout.js | 2 +- components/webrtc/presentationBroadcast.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/DefaultHTMLLayout.js b/components/DefaultHTMLLayout.js index 8a34309e5..d1a34b2c4 100644 --- a/components/DefaultHTMLLayout.js +++ b/components/DefaultHTMLLayout.js @@ -80,7 +80,7 @@ class DefaultHTMLLayout extends React.Component { : '' } - + {/* Adding for dependency loading with reveal.js*/} diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 3b742655d..61a42914c 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -39,7 +39,7 @@ class presentationBroadcast extends React.Component { $('.footer:first').remove(); let that = this; - that.socket = io('http://localhost:8080'); + that.socket = io('https://stunservice.experimental.slidewiki.org'); if (that.room !== '') { that.socket.emit('create or join', that.room); From d683797eaea214f5ff4ddb3ecbd1c575ab5f53cd Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Fri, 4 Aug 2017 16:01:25 +0200 Subject: [PATCH 004/111] Added a messaging system in a dirty way --- components/webrtc/presentationBroadcast.js | 91 ++++++++++++++++++++-- 1 file changed, 83 insertions(+), 8 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 61a42914c..06f266291 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -1,4 +1,5 @@ import React from 'react'; +import { Grid, Message, Comment, Input, Button, Form, Divider } from 'semantic-ui-react'; class presentationBroadcast extends React.Component { @@ -32,7 +33,9 @@ class presentationBroadcast extends React.Component { this.lastRemoteSlide = this.iframesrc; this.paused = false; //user has manually paused slide transitions this.currentSlide = this.iframesrc; + this.commentList = {};//{timestamp: {peer: username, message: text},timestamp: {peer: username, message: text}} } + componentDidMount() { //Remove menus as they shouldn't appear $('.menu:first').remove(); @@ -129,7 +132,7 @@ class presentationBroadcast extends React.Component { } function sendRTCMessage(cmd, data = undefined, receiver = undefined) { - let message = JSON.stringify({ 'cmd': cmd, 'data': data }); + let message = JSON.stringify({ 'cmd': cmd, 'data': data, sender: that.myID }); if (receiver) { //send to one peer only that.pcs[receiver].dataChannel.send(message); } else { //broadcast from initiator @@ -142,6 +145,8 @@ class presentationBroadcast extends React.Component { } } + that.sendRTCMessage = sendRTCMessage; + // This client receives a message that.socket.on('message', (message) => { if (message.sender === that.myID) { //Filter for messages from myself @@ -300,6 +305,10 @@ class presentationBroadcast extends React.Component { if (!that.isInitiator) changeSlide(data.data); break; + case 'message': + if (that.isInitiator) + addMessage(data); + break; case 'log': console.log('Recieved message from peer: ', data.data); break; @@ -553,19 +562,85 @@ class presentationBroadcast extends React.Component { } function activateSpeechRecognition() {} + + function addMessage(data, fromMyself = false) { + let currentTime = new Date().getTime(); + that.commentList[currentTime] = {}; + if(!fromMyself) + that.commentList[currentTime].peer = Object.keys(that.pcs).indexOf(data.sender); + else + that.commentList[currentTime].peer = 'Me'; + that.commentList[currentTime].message = data.data; + that.forceUpdate(); + //sendRTCMessage('message', 'Blubb', that.presenterID); + } + + that.addMessage = addMessage; } componentDidUpdate() {} + sendMessage(event) { + event.preventDefault(); + this.sendRTCMessage('message', $('#messageToSend:first').val(), this.presenterID); + this.addMessage({sender: this.myID, data: $('#messageToSend:first').val()}, true); + return false; + } + render() { + let messages = []; + let messageArea = ''; + for(let i in this.commentList) { + messages.push( + + + + + {this.commentList[i].peer.toString() === 'Me' ? '' : 'Peer'} {this.commentList[i].peer.toString()}, {new Date(parseInt(i)).toLocaleTimeString('en-GB', { hour12: false, hour: 'numeric', minute: 'numeric'})} + + {this.commentList[i].message} + + + + + ); + } + if(!this.isInitiator){ + messageArea = + + {messages} + + + +
+ + -
- + + + + {/*TODO Get window height for size*/} + + + {messageArea} + + + + + +

{this.texts.roleText}{this.texts.peerCountText}{this.texts.peerCount}

+ +
+
+
+
); } } From e7ecb4b240c6e420209f91ec75f4bfd0356c5800 Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Fri, 4 Aug 2017 16:08:07 +0200 Subject: [PATCH 005/111] UI improvements --- components/webrtc/presentationBroadcast.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 06f266291..9b773af4b 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -608,19 +608,20 @@ class presentationBroadcast extends React.Component { if(!this.isInitiator){ messageArea = +

Your Questions:

{messages}
- +
From ab5a8b54b084709b64de162dcdfd45e63e5e168c Mon Sep 17 00:00:00 2001 From: Kurt Junghanns Date: Fri, 4 Aug 2017 16:48:24 +0200 Subject: [PATCH 006/111] Added very basic speech recognition --- components/webrtc/presentationBroadcast.js | 81 +++++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 06f266291..34661ca6d 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -34,6 +34,8 @@ class presentationBroadcast extends React.Component { this.paused = false; //user has manually paused slide transitions this.currentSlide = this.iframesrc; this.commentList = {};//{timestamp: {peer: username, message: text},timestamp: {peer: username, message: text}} + + this.subtitle = ''; } componentDidMount() { @@ -315,11 +317,19 @@ class presentationBroadcast extends React.Component { case 'bye': handleRemoteHangup(data.data); break; + case 'subtitle': + handleSubtitle(data.data); + break; default: } } + function handleSubtitle(subtitle) { + that.subtitle = subtitle; + that.forceUpdate(); + } + function handleIceCandidate(peerID, event) { if (event && ((event.target && event.target.iceGatheringState !== 'complete') || event.candidate !== null)) { sendMessage('candidate', { @@ -561,7 +571,75 @@ class presentationBroadcast extends React.Component { } } - function activateSpeechRecognition() {} + function activateSpeechRecognition() { + var recognition; + let final_transcript = ''; + + var first_char = /\S/; + + function capitalize(s) { + return s.replace(first_char, (m) => { + return m.toUpperCase(); + }); + } + + if (window.hasOwnProperty('webkitSpeechRecognition')) { + recognition = new webkitSpeechRecognition(); + } else if (window.hasOwnProperty('SpeechRecognition')) { + recognition = new SpeechRecognition(); + } + + if (recognition) { + recognition.continuous = true; + recognition.interimResults = true; + recognition.lang = 'de-DE'; + recognition.maxAlternatives = 0; + recognition.start(); + + recognition.onresult = function (e) { + // if(e.results[e.results.length - 1][0].confidence >= 0.01){ + // console.log(e.results[e.results.length - 1][0].transcript); + // console.log("Confidence: ", e.results[e.results.length - 1][0].confidence); + // } + + var interim_transcript = ''; + let event = e; + if (typeof (event.results) == 'undefined') { + recognition.onend = null; + recognition.stop(); + console.warn('error:', e); + alert('disabled recognition'); + return; + } + for (var i = event.resultIndex; i < event.results.length; ++i) { + if (event.results[i].isFinal) { + final_transcript += event.results[i][0].transcript; + } else { + interim_transcript += event.results[i][0].transcript; + } + } + final_transcript = capitalize(final_transcript); + console.log('Final text: ', final_transcript); + console.log('Interim text: ', interim_transcript); + + sendRTCMessage('subtitle', (final_transcript || interim_transcript).substr(0, 300)); + }; + + recognition.onerror = function (e) { + console.warn('Recognition error:', e); + recognition.stop(); + }; + + recognition.onend = function (e) { + console.warn('Recognition ended itself - stupid thing! Restarting ....', e); + recognition.start(); + }; + + alert('Speech recognition enabled!'); + } else { + alert('No Speech recognition available'); + } + } function addMessage(data, fromMyself = false) { let currentTime = new Date().getTime(); @@ -638,6 +716,7 @@ class presentationBroadcast extends React.Component {

{this.texts.roleText}{this.texts.peerCountText}{this.texts.peerCount}

+
{this.subtitle}
From 1613c92da14c7cd2557e2a1f213208d83f649e0b Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Mon, 7 Aug 2017 11:02:59 +0200 Subject: [PATCH 007/111] Added route query parameters for rooms and presentations --- components/webrtc/presentationBroadcast.js | 9 ++++++--- configs/routes.js | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 9b773af4b..da8eddb2b 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -1,4 +1,5 @@ import React from 'react'; +import { handleRoute } from 'fluxible-router'; import { Grid, Message, Comment, Input, Button, Form, Divider } from 'semantic-ui-react'; class presentationBroadcast extends React.Component { @@ -25,11 +26,11 @@ class presentationBroadcast extends React.Component { offerToReceiveVideo: true }; - this.room = 'foo';//TODO get it from the URL + this.room = this.props.currentRoute.query.room;//TODO Navigate away if not provided this.socket = undefined; ////////////////////////////////////////////////////// SlideWiki specific stuff - this.iframesrc = '/Presentation/3-1/#/slide-36-2-0';//TODO get it from the URL + this.iframesrc = this.props.currentRoute.query.presentation;//TODO Navigate away if not provided this.lastRemoteSlide = this.iframesrc; this.paused = false; //user has manually paused slide transitions this.currentSlide = this.iframesrc; @@ -607,7 +608,7 @@ class presentationBroadcast extends React.Component { } if(!this.isInitiator){ messageArea = - +

Your Questions:

{messages}
@@ -650,4 +651,6 @@ presentationBroadcast.contextTypes = { executeAction: React.PropTypes.func.isRequired }; +presentationBroadcast = handleRoute(presentationBroadcast); + export default presentationBroadcast; diff --git a/configs/routes.js b/configs/routes.js index b22d15cb7..933d47685 100644 --- a/configs/routes.js +++ b/configs/routes.js @@ -470,7 +470,7 @@ export default { } }, webrtc: { - path: '/presentationbroadcast/:room', + path: '/presentationbroadcast',//Example: ...broadcast?room=foo&presentation=/Presentation/386-1/ method: 'get', page: 'presentationBroadcast', handler: require('../components/webrtc/presentationBroadcast') From 88b20f368297b0e912ebcc6bafd8d104fe3a8bb9 Mon Sep 17 00:00:00 2001 From: Kurt Junghanns Date: Mon, 7 Aug 2017 11:06:43 +0200 Subject: [PATCH 008/111] Improved readability of speech recognition text --- components/webrtc/presentationBroadcast.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index c0cb85291..c178d0126 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -326,8 +326,10 @@ class presentationBroadcast extends React.Component { } function handleSubtitle(subtitle) { - that.subtitle = subtitle; - that.forceUpdate(); + $('#input_subtitle').val(subtitle); + $('#input_subtitle').animate({ + scrollLeft: $('#input_subtitle')[0].scrollLeft+1000 + }, 1000); } function handleIceCandidate(peerID, event) { @@ -592,7 +594,7 @@ class presentationBroadcast extends React.Component { if (recognition) { recognition.continuous = true; recognition.interimResults = true; - recognition.lang = 'de-DE'; + recognition.lang = 'en-US'; recognition.maxAlternatives = 0; recognition.start(); @@ -622,7 +624,8 @@ class presentationBroadcast extends React.Component { console.log('Final text: ', final_transcript); console.log('Interim text: ', interim_transcript); - sendRTCMessage('subtitle', (final_transcript || interim_transcript).substr(0, 300)); + let m = (final_transcript || interim_transcript); + sendRTCMessage('subtitle', m.substr((m.length-300) > 0 ? m.length-300 : 0, 300)); }; recognition.onerror = function (e) { @@ -717,7 +720,12 @@ class presentationBroadcast extends React.Component {

{this.texts.roleText}{this.texts.peerCountText}{this.texts.peerCount}

-
{this.subtitle}
+ {(!this.isInitiator) ? ( +
+ Speech recognition: + +
+ ) : ''}
From 1fbd6e8bd917df7c0948c6979329c5cc0c0db535 Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Mon, 7 Aug 2017 11:29:27 +0200 Subject: [PATCH 009/111] Addded swal messages to recognition code and improved it a bit --- components/webrtc/presentationBroadcast.js | 54 +++++++++++++++------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 8c27b844b..b2435214d 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -575,10 +575,11 @@ class presentationBroadcast extends React.Component { } function activateSpeechRecognition() { - var recognition; + let recognition; + let disabled = false; let final_transcript = ''; - var first_char = /\S/; + let first_char = /\S/; function capitalize(s) { return s.replace(first_char, (m) => { @@ -595,26 +596,21 @@ class presentationBroadcast extends React.Component { if (recognition) { recognition.continuous = true; recognition.interimResults = true; - recognition.lang = 'en-US'; + recognition.lang = navigator.language || navigator.userLanguage; recognition.maxAlternatives = 0; recognition.start(); - recognition.onresult = function (e) { - // if(e.results[e.results.length - 1][0].confidence >= 0.01){ - // console.log(e.results[e.results.length - 1][0].transcript); - // console.log("Confidence: ", e.results[e.results.length - 1][0].confidence); - // } + recognition.onresult = function (event) { - var interim_transcript = ''; - let event = e; + let interim_transcript = ''; if (typeof (event.results) == 'undefined') { recognition.onend = null; recognition.stop(); console.warn('error:', e); - alert('disabled recognition'); + //TODO implement error handling return; } - for (var i = event.resultIndex; i < event.results.length; ++i) { + for (let i = event.resultIndex; i < event.results.length; ++i) { if (event.results[i].isFinal) { final_transcript += event.results[i][0].transcript; } else { @@ -635,13 +631,38 @@ class presentationBroadcast extends React.Component { }; recognition.onend = function (e) { - console.warn('Recognition ended itself - stupid thing! Restarting ....', e); - recognition.start(); + if(!disabled){ + console.warn('Recognition ended itself - stupid thing! Restarting ....', e); + recognition.start(); + } }; - alert('Speech recognition enabled!'); + swal({ + title: 'Speech recognition enabled', + html: '

Speech recognition is an experimental feature. If enabled, your voice will be transcoded and displayed at all peers as a subtitle.

', + type: 'info', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Okay', + cancelButtonText: 'Disable' + }).then(() => {}, (dismiss) => { + if (dismiss === 'cancel') { + disabled = true; + recognition.stop(); + console.log('Recognition disabled'); + } + }); + + //TODO implement error handling } else { - alert('No Speech recognition available'); + swal({ + title: 'Speech recognition disabled', + html: '

Your browser isn\'t able to transcode speech to text. Thus, your peers will not recieve a subtitle. Google Chrome is currently the only browser that support speech recognition.

', + type: 'error', + confirmButtonColor: '#3085d6', + confirmButtonText: 'Okay', + }); } } @@ -654,7 +675,6 @@ class presentationBroadcast extends React.Component { that.commentList[currentTime].peer = 'Me'; that.commentList[currentTime].message = data.data; that.forceUpdate(); - //sendRTCMessage('message', 'Blubb', that.presenterID); } that.addMessage = addMessage; From 7bd044872f5c38360b8a9ad5e6c975ba3e4eecf9 Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Mon, 7 Aug 2017 15:28:49 +0200 Subject: [PATCH 010/111] Added event propagation to the iframe --- components/webrtc/presentationBroadcast.js | 32 ++++++++++------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index b2435214d..64ac91ddb 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -26,14 +26,14 @@ class presentationBroadcast extends React.Component { offerToReceiveVideo: true }; - this.room = this.props.currentRoute.query.room;//TODO Navigate away if not provided + this.room = this.props.currentRoute.query.room + '';//TODO Navigate away if not provided this.socket = undefined; ////////////////////////////////////////////////////// SlideWiki specific stuff - this.iframesrc = this.props.currentRoute.query.presentation;//TODO Navigate away if not provided - this.lastRemoteSlide = this.iframesrc; + this.iframesrc = this.props.currentRoute.query.presentation + '';//TODO Navigate away if not provided + this.lastRemoteSlide = this.iframesrc + ''; this.paused = false; //user has manually paused slide transitions - this.currentSlide = this.iframesrc; + this.currentSlide = this.iframesrc + ''; this.commentList = {};//{timestamp: {peer: username, message: text},timestamp: {peer: username, message: text}} this.subtitle = ''; @@ -529,27 +529,23 @@ class presentationBroadcast extends React.Component { /////////////////////////////////////////// SlideWiki specific stuff - $('#resumeRemoteControl').click(() => { + $('#resumeRemoteControl').click(() => {//TODO fkt. nicht richtig that.paused = false; - that.forceUpdate(); changeSlide(that.lastRemoteSlide); }); function activateIframeListeners() { console.log('Adding iframe listeners'); let iframe = $('#slidewikiPresentation').contents(); - /* Currently doesn't work - Stackoverflow Question: - * https://stackoverflow.com/questions/45457271/forward-a-keydown-event-from-the-parent-window-to-an-iframe - */ - // $(document).keydown((event) => { - // console.log(event, event.keyCode); - // var newEvent = new KeyboardEvent("keydown", {key: event.originalEvent.key, code: event.originalEvent.code, charCode: event.originalEvent.charCode, keyCode: event.originalEvent.keyCode, which: event.originalEvent.which}); - // //frames['slidewikiPresentation'].document.dispatchEvent(newEvent); - // document.getElementById("slidewikiPresentation").contentWindow.document.dispatchEvent(newEvent); - // //elem.dispatchEvent(event); - // //var e = jQuery.Event( "keydown", { keyCode: event.keyCode } ); - // //$('#slidewikiPresentation')[0].contentWindow.$('body').trigger(e); - // }); + + document.addEventListener('keydown', (e) => { + let frame = document.getElementById('slidewikiPresentation').contentDocument; + let newEvent = new Event('keydown', {key: e.key, code: e.code, composed: true, charCode: e.charCode, keyCode: e.keyCode, which: e.which, bubbles: true, cancelable: true, which: e.keyCode}); + newEvent.keyCode = e.keyCode; + newEvent.which = e.keyCode; + frame.dispatchEvent(newEvent); + }); + if (that.isInitiator) { iframe.on('slidechanged', () => { that.currentSlide = document.getElementById('slidewikiPresentation').contentWindow.location.href; From 33e136fb6609c7d9e32198185be99e87203955ec Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Mon, 7 Aug 2017 16:29:48 +0200 Subject: [PATCH 011/111] Added button to launch the view + todo + improved swal messages --- .../ContentActions/ContentActionsFooter.js | 19 +++++++++ components/webrtc/presentationBroadcast.js | 41 +++++++++++++++---- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/components/Deck/ContentPanel/ContentActions/ContentActionsFooter.js b/components/Deck/ContentPanel/ContentActions/ContentActionsFooter.js index c268547fa..dc99e3380 100644 --- a/components/Deck/ContentPanel/ContentActions/ContentActionsFooter.js +++ b/components/Deck/ContentPanel/ContentActions/ContentActionsFooter.js @@ -48,6 +48,20 @@ class ContentActionsFooter extends React.Component { window.open(this.getPresentationHref()); } } + handlePresentationRoomClick(e){ + if(process.env.BROWSER){ + e.preventDefault(); + swal({ + title: 'Please enter a room name', + input: 'text', + showCancelButton: true, + confirmButtonText: 'Next', + allowOutsideClick: false + }).then((roomName) => { + window.open('/presentationbroadcast?room=' + roomName + '&presentation=' + this.getPresentationHref()); + }).catch(); + } + } /* getPrintHref(){ return '/PresentationPrint/' + this.props.ContentStore.selector.id + '/?print-pdf'; @@ -158,6 +172,11 @@ class ContentActionsFooter extends React.Component { + + + - - - + -
+
{(!this.isInitiator) ? (
Speech recognition:{/*TODO Find a better heading and add a boarder to the input*/} From 6af1fd5c906c522cd4aa31aa96d001d77a766343 Mon Sep 17 00:00:00 2001 From: Kurt Junghanns Date: Tue, 8 Aug 2017 13:37:14 +0200 Subject: [PATCH 018/111] Fixed resume btn --- components/webrtc/presentationBroadcast.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 4bdba7d3f..bf888c710 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -298,7 +298,7 @@ class presentationBroadcast extends React.Component { channel.onopen = function() { console.log('Data Channel opened'); if (that.isInitiator) - sendRTCMessage('gotoslide', that.currentSlide, peerID); + sendRTCMessage('gotoslide', document.getElementById('slidewikiPresentation').contentWindow.location.href, peerID);// using href instead of currentSlide because it could be bad initialized }; channel.onmessage = handleMessage.bind(that, channel); @@ -526,7 +526,7 @@ class presentationBroadcast extends React.Component { //******** SlideWiki specific methods ******** - $('#resumeRemoteControl').click(() => {//TODO does not correctly work + $('#resumeRemoteControl').click(() => { that.paused = false; changeSlide(that.lastRemoteSlide); }); @@ -564,6 +564,7 @@ class presentationBroadcast extends React.Component { if (!that.paused) { console.log('Changing to slide: ', slideID); that.iframesrc = slideID; + document.getElementById('slidewikiPresentation').contentWindow.location.assign(slideID); that.forceUpdate(); } } From 50efad235740cd40f143f9870d0b08d14cb44834 Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Tue, 8 Aug 2017 13:46:06 +0200 Subject: [PATCH 019/111] Added a char count to the textarea --- components/webrtc/presentationBroadcast.js | 31 +++++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index 1b4f05414..e34408959 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -1,7 +1,7 @@ import React from 'react'; import { handleRoute, navigateAction} from 'fluxible-router'; import { isEmpty } from '../../common'; -import { Grid, Message, Comment, Input, Button, Form, Divider } from 'semantic-ui-react'; +import { Grid, Message, Comment, Input, Button, Form, Divider, Label } from 'semantic-ui-react'; class presentationBroadcast extends React.Component { @@ -15,6 +15,7 @@ class presentationBroadcast extends React.Component { constructor(props) { super(props); this.texts = {roleText: '', peerCountText: '', peerCount: ''}; + this.textInputLength = 300; this.isInitiator = false; this.localStream = undefined; this.myID = undefined; @@ -659,8 +660,19 @@ class presentationBroadcast extends React.Component { }; recognition.onerror = function (e) { - console.warn('Recognition error:', e); - recognition.stop();//TODO Really stop recognition in case of a fatal error. Pay attention to not restarting it via the onend listener + if(e.type === 'error' && e.error !== 'no-speech'){ + disabled = true; + recognition.stop(); + swal({ + title: 'Speech recognition disabled', + html: 'An error occured and we had to disable speech recognition. We are sorry about it, but speech recognition is a highly experimental feature. Your listeners will not recieve any subtitles anymore.', + type: 'error', + confirmButtonColor: '#3085d6', + confirmButtonText: 'Okay', + allowOutsideClick: false + }); + } else + recognition.stop(); }; recognition.onend = function (e) { @@ -697,7 +709,6 @@ class presentationBroadcast extends React.Component { }); }); - //TODO implement proper error handling } else { swal({ title: 'Speech recognition disabled', @@ -739,6 +750,10 @@ class presentationBroadcast extends React.Component { return false; } + updateCharCount(){ + $('#textCharCount').text($('#messageToSend').val().length + '/' + this.textInputLength); + } + render() { let messages = []; for(let i in this.commentList) { @@ -774,14 +789,16 @@ class presentationBroadcast extends React.Component {
- + {/* - * TODO Add a visible char counter,e .g. 234/300 next to the send button * TODO Don't send empty messages or those with too few words (and show notification about it) * TODO move the input box to the bottom of the element (so it doesn't move) * TODO disable keydown listener if textarea is focused */} -
From 105187d5b5309f63d0d6e70c00ba3b8af5d2790b Mon Sep 17 00:00:00 2001 From: Roy Meissner Date: Tue, 8 Aug 2017 14:41:46 +0200 Subject: [PATCH 022/111] Added a control box for several actions --- components/webrtc/presentationBroadcast.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/components/webrtc/presentationBroadcast.js b/components/webrtc/presentationBroadcast.js index f60e488ed..be6edea93 100644 --- a/components/webrtc/presentationBroadcast.js +++ b/components/webrtc/presentationBroadcast.js @@ -813,7 +813,7 @@ class presentationBroadcast extends React.Component {
-
@@ -827,9 +827,8 @@ class presentationBroadcast extends React.Component { - +

{this.texts.roleText}{this.texts.peerCountText}{this.texts.peerCount}

-
{(!this.isInitiator) ? (
@@ -838,6 +837,13 @@ class presentationBroadcast extends React.Component {
) : ''}
+ + + + - @@ -229,7 +242,8 @@ class Home extends React.Component { Home.contextTypes = { intl: React.PropTypes.object.isRequired, - getUser: React.PropTypes.func + getUser: React.PropTypes.func.isRequired, + executeAction: React.PropTypes.func.isRequired }; diff --git a/components/Home/Home_OLD.js b/components/Home/Home_OLD.js index da43669a5..5294b40e1 100644 --- a/components/Home/Home_OLD.js +++ b/components/Home/Home_OLD.js @@ -86,7 +86,7 @@ class Home extends React.Component {

- +
diff --git a/components/Home/Recent.js b/components/Home/Recent.js index bd034818d..93bb74c9c 100644 --- a/components/Home/Recent.js +++ b/components/Home/Recent.js @@ -1,29 +1,15 @@ import React from 'react'; import DeckList from './DeckList'; -import { NavLink } from 'fluxible-router'; +import {Container, Header} from 'semantic-ui-react'; +import { FormattedMessage, defineMessages} from 'react-intl'; class Recent extends React.Component { render() { - - return ( -
-
-
-

Recent decks added by users

- - {/* -
- Try Sample Deck Imported from SlideWiki.org » - Deck created from scratch » - TODO:See documentation deck» -
*/} -
-
-
+ +
+ +
); } } diff --git a/configs/routes.js b/configs/routes.js index 1a16a190d..7db699461 100644 --- a/configs/routes.js +++ b/configs/routes.js @@ -64,7 +64,7 @@ export default { recentDecks: { path: '/recent/:limit?/:offset?', method: 'get', - page: 'featuredDecks', + page: 'recentDecks', title: 'Slidewiki -- recent decks', handler: require('../components/Home/Recent'), action: (context, payload, done) => { @@ -86,6 +86,31 @@ export default { } }, + featuredDecks: { + path: '/recommended/:limit?/:offset?', + method: 'get', + page: 'featuredDecks', + title: 'Slidewiki -- top decks', + handler: require('../components/Home/Featured'), + action: (context, payload, done) => { + async.series([ + (callback) => { + context.dispatch('UPDATE_PAGE_TITLE', { + pageTitle: shortTitle + ' | Recommended Decks' + }); + callback(); + }, + (callback) => { + context.executeAction(loadFeatured, {params: {limit: 100, offset: 0}}, callback); //for now limit 100, can change this later to infinite scroll + } + ], + (err, result) => { + if(err) console.log(err); + done(); + }); + } + }, + about: { path: '/about', method: 'get', From 04eac9c5588a47f7e5b909f70e77c37d0eb89ec6 Mon Sep 17 00:00:00 2001 From: DaryaTarasowa Date: Fri, 27 Oct 2017 15:50:04 +0200 Subject: [PATCH 072/111] minor --- components/Home/Home.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Home/Home.js b/components/Home/Home.js index 7a98c9b79..f28330cd6 100644 --- a/components/Home/Home.js +++ b/components/Home/Home.js @@ -224,7 +224,7 @@ class Home extends React.Component {
- +
From 122b880e96fa6b15a51b073e530afecf0c851dff Mon Sep 17 00:00:00 2001 From: DaryaTarasowa Date: Fri, 27 Oct 2017 18:04:04 +0200 Subject: [PATCH 073/111] switched back to featured --- components/Home/Featured.js | 2 +- components/Home/Home.js | 4 ++-- configs/routes.js | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/Home/Featured.js b/components/Home/Featured.js index fd1cfd3e5..f8f48025f 100644 --- a/components/Home/Featured.js +++ b/components/Home/Featured.js @@ -8,7 +8,7 @@ class Featured extends React.Component { return ( -
+
); diff --git a/components/Home/Home.js b/components/Home/Home.js index f28330cd6..8e767c25e 100644 --- a/components/Home/Home.js +++ b/components/Home/Home.js @@ -10,7 +10,7 @@ class Home extends React.Component { openFeatured(e){ this.context.executeAction(navigateAction, { - url: '/recommended' + url: '/featured' }); }; render() { @@ -220,7 +220,7 @@ class Home extends React.Component {
-

+

diff --git a/configs/routes.js b/configs/routes.js index 7db699461..56e5c37b5 100644 --- a/configs/routes.js +++ b/configs/routes.js @@ -87,16 +87,16 @@ export default { }, featuredDecks: { - path: '/recommended/:limit?/:offset?', + path: '/featured/:limit?/:offset?', method: 'get', page: 'featuredDecks', - title: 'Slidewiki -- top decks', + title: 'Slidewiki -- featured decks', handler: require('../components/Home/Featured'), action: (context, payload, done) => { async.series([ (callback) => { context.dispatch('UPDATE_PAGE_TITLE', { - pageTitle: shortTitle + ' | Recommended Decks' + pageTitle: shortTitle + ' | Featured Decks' }); callback(); }, From fb4fd950e60bf5a3ce3d8c4c5f2f903a64dace3c Mon Sep 17 00:00:00 2001 From: kadevgraaf Date: Mon, 30 Oct 2017 13:27:47 +0100 Subject: [PATCH 074/111] Added more image previous --- assets/images/templates/11.png | Bin 0 -> 6762 bytes assets/images/templates/12.png | Bin 0 -> 61128 bytes assets/images/templates/2.png | Bin 0 -> 2629 bytes assets/images/templates/22.png | Bin 0 -> 62323 bytes .../SlideEditPanel/SlideContentEditor.js | 8 ++++---- 5 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 assets/images/templates/11.png create mode 100644 assets/images/templates/12.png create mode 100644 assets/images/templates/2.png create mode 100644 assets/images/templates/22.png diff --git a/assets/images/templates/11.png b/assets/images/templates/11.png new file mode 100644 index 0000000000000000000000000000000000000000..530ad8f90fec83f7de6eb07198612d95cdd3cff8 GIT binary patch literal 6762 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 literal 0 HcmV?d00001 diff --git a/assets/images/templates/12.png b/assets/images/templates/12.png new file mode 100644 index 0000000000000000000000000000000000000000..22aeb129b18d1b1397513221a35e1b6396242936 GIT binary patch literal 61128 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 literal 0 HcmV?d00001 diff --git a/assets/images/templates/2.png b/assets/images/templates/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6d06be1461b6f108f86d1f94b9a117152afa46 GIT binary patch literal 2629 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!PjIjS$)NjpLKzrXcr%@y13aCb6#|O#(=u~X z85k^jdqZP0WI{#kb{D5BtDFnYF=;JXVb80|J2}i`;g((Xcki0zP4hInrSu}@+q-i! zPM)(c-u-u>ziU8^;j7sqNA_=TP|*0wf7@=0{!}j2TUQh`?6&-94tUYM?Db4*53aYDsJ!Zu+^T>(!M~PZDDwztaj{5 zA0{(@?((hC_ni+_$KSkq_uu@r+udYE6$<5(Ha}az-OQm;fQ|Kj)%$D4;S0j^=76$(Rp;agEcfbt7E!A|Cysd+<1N)Znze|z&Gplsuxce zCCx6qyI^C%`^10qa}Q>;e$G9-{QS)Mb}jD{V}5I!sy=@hc*J|vr1@@tI38u^)^3w| zaC_S9iGucQ6YkubwSJl4dzY9sx7kgd7qv?ePuf9bakc6pI>__J-*cz&9{8}vgXC- zmT9`|f0j<4(kyzUxubreo8!0VkN$1E<0Zf>nI-kqvtDn~V!mko$FaG~UYz&l5jVdg z?=ANFS7XqE|1O)miyGEPvaJs6>Gi**yYtoSpMgiuiPy}pX*FBjSig^VGbgLY41@N) zT)q*^f+-pfZ1=@(WUOrFV>1$2D?9hF6YjoQ?Ulzk7O&gO<&9y=%E;_kx7~##%lx!PnR5@NH{TKCStiHFocxWAPhf zUh0?!ZhIs-cUSnipYcCm|1tWe{U>Y5gZd}oAGa4Bk2p;EbQkHtP* zoO!hKsO;y$k59t+-Rh>DocVnHmsp#~d_6w5HPcytW&I43^y_t5^QHMq`xc$O>a`kw zkL^8Md#d(q?YY{6u}l-KPtSe4@1b6Sd~y7-Z&{zEqV89VRZ476e>p9CjhCWwj;Nei z(IK;kfr&<+)Ok3PodRz(PFwr>x7d9BdA72A$@0&Z|Bl(G7slB6dn3~q-+!T@AukK2 zXv&7=`&#UC6z)-RPU)Fq7V>>Z_~(U6Q~jR?WeNma2Me#zht@2*;o)s! zUuGNa<`<6EbD#5@=fFPuk8ghKJ?h)SFiobR@wjrH#Q9U~_gF1Hx7^xv`=IPZj~ea= zSH8dbw*Qw=Mcv;kFYg>FUh`bHVXL|I-2M08mt3=R_`jMVy|0n|M;|QCGYH_&GdrWb<4kFVdQ&MBb@019L3>;M1& literal 0 HcmV?d00001 diff --git a/assets/images/templates/22.png b/assets/images/templates/22.png new file mode 100644 index 0000000000000000000000000000000000000000..90a85a66a43c74f3d805eace7ff6c1a583b8e1fc GIT binary patch literal 62323 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 q>8k;3?kK_aZ literal 0 HcmV?d00001 diff --git a/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js b/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js index 551f5cd90..d422ec5f5 100644 --- a/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js +++ b/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js @@ -1554,18 +1554,19 @@ class SlideContentEditor extends React.Component {

Empty document

- template - Title and bullets + template - Empty document
1 row 1 column

- template - Title and bullets + template - 1 row 1 column
- {/*
1 row 2 columns + template - 1 row 2 columns
2 rows 2 columns + template - 2 rows 2 columns
2 rows 1 column @@ -1594,7 +1595,6 @@ class SlideContentEditor extends React.Component {
EKDDA template - English no footer
- */}
; const headerStyle = { //minWidth: '100%', From e745f968303b10e5ec2c4dda5da2f1666fe08733 Mon Sep 17 00:00:00 2001 From: kadevgraaf Date: Mon, 30 Oct 2017 16:57:24 +0100 Subject: [PATCH 075/111] Added pictures + HTML for preview --- assets/images/templates/11img.png | Bin 0 -> 18159 bytes assets/images/templates/12.png | Bin 61128 -> 7671 bytes assets/images/templates/21.png | Bin 0 -> 7698 bytes assets/images/templates/22.png | Bin 62323 -> 7453 bytes assets/images/templates/3.png | Bin 0 -> 6128 bytes assets/images/templates/EKDDA.png | Bin 0 -> 16883 bytes assets/images/templates/EKDDAeng.png | Bin 0 -> 27047 bytes assets/images/templates/EKDDAengNofooter.png | Bin 0 -> 27630 bytes assets/images/templates/oegtitleslide.png | Bin 0 -> 5502 bytes assets/images/templates/outitleslide.png | Bin 0 -> 37551 bytes assets/images/templates/slidewikislide.png | Bin 0 -> 13926 bytes .../SlideEditPanel/SlideContentEditor.js | 31 +++++++++++------- 12 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 assets/images/templates/11img.png create mode 100644 assets/images/templates/21.png create mode 100644 assets/images/templates/3.png create mode 100644 assets/images/templates/EKDDA.png create mode 100644 assets/images/templates/EKDDAeng.png create mode 100644 assets/images/templates/EKDDAengNofooter.png create mode 100644 assets/images/templates/oegtitleslide.png create mode 100644 assets/images/templates/outitleslide.png create mode 100644 assets/images/templates/slidewikislide.png diff --git a/assets/images/templates/11img.png b/assets/images/templates/11img.png new file mode 100644 index 0000000000000000000000000000000000000000..0b9646a107eb0554ab39b35fa14e2a403008b614 GIT binary patch literal 18159 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 literal 0 HcmV?d00001 diff --git a/assets/images/templates/12.png b/assets/images/templates/12.png index 22aeb129b18d1b1397513221a35e1b6396242936..e464d41c03f4826f75f22b8169caf27cd146f5ee 100644 GIT binary patch literal 7671 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 literal 61128 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 diff --git a/assets/images/templates/21.png b/assets/images/templates/21.png new file mode 100644 index 0000000000000000000000000000000000000000..768543a1d314f2e519966deaec08048b700ae0fb GIT binary patch literal 7698 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
f{{561!DHC7L-= z_@Ha)US79N<&j)T6N=J|!p)X|2Oo*Qi_nOem{0m4Rzta!K+uSYjy^Z-wc)1kEETll zD!D()6Zs$u*46bNNT_hz8XAhRe#5xU1dfpS_Qheg3J%A_$5+Z0a(eYpUspF#V<`u| z^eTLV@ZjuGwjLXt-mIl%H>l8Np7|aa2#!^;+1}aloPX4{ci)|m!8N4yJCXT#v}gqO z#0!_B(Tp*;O5SeaAkEdcvC4`j=kCjw33*k*uDDOBy6nA^18Kh?oosJ-_)Y!0*#E|e z8>OP=;@5tiosCBUstyf z6m9QqMxAh2HBN*m&)WgjeX*sz;dm$-FV=`VhQHum>KpeVZZ>slKj-E0xhW>)Pcomd z&GlBy9O;cFpVoFjOqbaP6{7xvu=NpHZnS>4gOthh-%Y55LYYh%96yFSaDh&YKE z9ItQ1Y4S~fIs=Ecx6M=oM=i`72<>`MEh{X(#0Q7Ns|6RsFb1f#6(6u71>nr3s`%gj zDczH>%B7>D8-nTT>HTc?^&CK5uvTV~YwL@pVoy%J&K9sQbQ>5Q1$WDo?O7XzMe4>X zC@Ga=;}T`-!!R*1*(7)+DKON~ci~*wf(};>1<-6Rw2C~atqd3KYH74tOfs4}bLX?` z%nA^c1z7{r6;DlX?S&9#hBDx$g?l5JXaY=to9c^%X`nC@0dD$L49X1D0is13XPFF( z1Z0sJKK5BfS`TnjjnH>-ITfI+zR?;NMr2z; z<`~-OgGG9@6zncyEj%T4`5RpZSF-JQ=W$DRE3NKj{>?#X0r<$2Gsgw*=RjkHDAae4 z0%rI9R9^`;pGle1`U%{v%(RkR_|!;23}Smr&!u`E8CXuGj{^oozM+131mTXyXTr!X z;Z|3lTfUmsgM2)mxEZ<3BVDv|dfMA>8MxrVmW-K4v`n3JYqU&uosUA{G&iE6UVkfv zPv@iLIWncF_P^1{ZisId^BT+U^yZB*u3ev5$>&`PDRaTvjmDe;aC2-H%{)ajGd%b#JlaCaT)%7u z$=}yQ&eZ}&o@Avun~fCyX*Rn?n0n>Ur=|X9oC^&Kb}$;JEW!S8+Oaf{Nh z(&*$}h6vvlN#vQKIeLf}viH(+36bF;a0T}S!H=H-W_b>TfC%t@0 z?8Act`^Vq`p|JX|1id?YH?&LDJnPK=@LCa;>P&#vvMZjd2|)%@TVf?si=a{Fj5IqM#{X IC2JA&2(l!!OiA0BLtz8M@L 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 WuV~)&Yrt;}DkFV!y*eGYr~d_cJa&x$ literal 62323 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 q>8k;3?kK_aZ diff --git a/assets/images/templates/3.png b/assets/images/templates/3.png new file mode 100644 index 0000000000000000000000000000000000000000..883e4d8d9035aa3d0c2b2b1102f874d839914ce7 GIT binary patch literal 6128 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 RzlXH}#D!&qY6SEG{vQ?@jgtTX literal 0 HcmV?d00001 diff --git a/assets/images/templates/EKDDAeng.png b/assets/images/templates/EKDDAeng.png new file mode 100644 index 0000000000000000000000000000000000000000..038c7fc17737006da6a4caf23648a50e316bba9d GIT binary patch literal 27047 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 literal 0 HcmV?d00001 diff --git a/assets/images/templates/EKDDAengNofooter.png b/assets/images/templates/EKDDAengNofooter.png new file mode 100644 index 0000000000000000000000000000000000000000..a61014007296e4b3110efea88d6ccd948f10a304 GIT binary patch literal 27630 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 literal 0 HcmV?d00001 diff --git a/assets/images/templates/oegtitleslide.png b/assets/images/templates/oegtitleslide.png new file mode 100644 index 0000000000000000000000000000000000000000..3d136e06343d80e2d33c39f0bc4f0095f8049f13 GIT binary patch literal 5502 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 literal 0 HcmV?d00001 diff --git a/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js b/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js index d422ec5f5..a58a3f9f1 100644 --- a/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js +++ b/components/Deck/ContentPanel/SlideModes/SlideEditPanel/SlideContentEditor.js @@ -1561,39 +1561,48 @@ class SlideContentEditor extends React.Component { template - 1 row 1 column

- 1 row 2 columns + 1 row 2 columns

template - 1 row 2 columns
- 2 rows 2 columns + 2 rows 2 columns

template - 2 rows 2 columns
- 2 rows 1 column + 2 rows 1 column

+ template - 2 rows 1 column
- 1 row 1 column image + 1 row 1 column image

+ template - 1 row 1 column image
- Document with title + Document with title

+ template - Document with title
- Open University Theme Title Page + Open University Theme Title Page

+ template - Open University Theme Title Page
- OEG Theme Title Page + OEG Theme Title Page

+ template - OEG Theme Title Page
- SlideWiki template + SlideWiki template

+ template - SlideWiki template
- EKDDA template + EKDDA template

+ template - EKDDA template
- EKDDA template - English + EKDDA template - English

+ template - EKDDA template - English
- EKDDA template - English no footer + EKDDA template - English no footer

+ template - EKDDA template - English no footer
; const headerStyle = { From 902128168251d4e40ec0db87c4f1ae6a3c920330 Mon Sep 17 00:00:00 2001 From: Todor Tsankov Date: Fri, 20 Oct 2017 16:36:00 +0200 Subject: [PATCH 076/111] update ui styling --- assets/css/custom.css | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/assets/css/custom.css b/assets/css/custom.css index 79b3b2f77..b2093b255 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -120,12 +120,21 @@ } /* HTML DOM Node related */ -.diff-view .added, .modified, .deleted { +.diff-view .added, .diff-view .modified, .diff-view .deleted { padding: 5px; margin: 0px -10px; display: inline-block; } +.diff-view ul, .diff-view ol { + display: flex; + flex-direction: column; +} + +.diff-view ul .added, .diff-view ul .modified, .diff-view ul .deleted { + display: inline-table !important; +} + .diff-view p { margin: 1em; } From aeec1ccf0bdd0b137bed9ee191810ed35afca4ac Mon Sep 17 00:00:00 2001 From: Todor Tsankov Date: Fri, 20 Oct 2017 17:48:33 +0200 Subject: [PATCH 077/111] diff-view simplify texts --- components/Deck/Diffview/Diffview.js | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/components/Deck/Diffview/Diffview.js b/components/Deck/Diffview/Diffview.js index 7e29dfeee..69480e291 100644 --- a/components/Deck/Diffview/Diffview.js +++ b/components/Deck/Diffview/Diffview.js @@ -123,16 +123,16 @@ class DiffView extends Component { return (
-
- Settings -
-
- - this.toggleVisibleChanges('add')} /> - this.toggleVisibleChanges('mod')} /> - this.toggleVisibleChanges('del')} /> - this.toggleVisibleChanges('text')} /> -
+
+ Settings +
+
+ + this.toggleVisibleChanges('add')} /> + this.toggleVisibleChanges('mod')} /> + this.toggleVisibleChanges('del')} /> + this.toggleVisibleChanges('text')} /> +
@@ -145,14 +145,14 @@ class DiffView extends Component { ${!show.text && 'hide-text'} `}>
-
- Revision [ {base.id} ] -
-
+
+ Revision [ {base.id} ] +
+
-
- Diff view changes between [ {base.id} ] and [ {diff.id} ] +
+ Diff View Changes Between Revisions [ {base.id} ] and [ {diff.id} ]
From 768ade04b9f3311be08d4b478e9dbeeb4ea63c4f Mon Sep 17 00:00:00 2001 From: Todor Tsankov Date: Fri, 20 Oct 2017 17:51:25 +0200 Subject: [PATCH 078/111] diff-view modify state colors - Change 'addition' state color to blue from green, tackling the accessibility for color-blind users - Add small text-icons in the right top corner for extra way of conveying information - Minor block widths changes --- assets/css/custom.css | 66 +++++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/assets/css/custom.css b/assets/css/custom.css index b2093b255..8cd575710 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -40,7 +40,7 @@ font-size: 20px; position: absolute; right: 0; - width: 200px; + width: 150px; height: 100vh; } @@ -50,7 +50,7 @@ .top-diff .reveal { position: relative; - width: calc(100% - 200px); + width: calc(100% - 150px); } .top-diff .reveal .slides { @@ -84,6 +84,8 @@ .top-diff .inlineContent { padding: 2%; + display: flex; + flex-direction: column; } @media screen and (max-width: 900px) { @@ -100,38 +102,39 @@ .top-diff .helpers { width: 100vw; position: relative; - height: 180px; - background-color: rgba(255,153,0,0.2); - } - - .top-diff .helpers .inlineContent { - display: flex; - flex-direction: column; - } - - .top-diff .helpers .checkbox { - flex: 1; - } - - .top-diff .helpers .diff-header { - display: none + height: 240px; } } /* HTML DOM Node related */ -.diff-view .added, .diff-view .modified, .diff-view .deleted { - padding: 5px; +.diff-view .added, +.diff-view .modified, +.diff-view .deleted { + padding: 15px 5px 5px 5px; margin: 0px -10px; display: inline-block; } +.diff-view .added::before, +.diff-view .modified::before, +.diff-view .deleted::before { + color: rgba(0,0,0,0.7); + position: absolute; + font-size: 20px; + right: 5px; + top: -3px; + font-weight: 700; +} + .diff-view ul, .diff-view ol { display: flex; flex-direction: column; } -.diff-view ul .added, .diff-view ul .modified, .diff-view ul .deleted { +.diff-view ul .added, +.diff-view ul .modified, +.diff-view ul .deleted { display: inline-table !important; } @@ -140,17 +143,22 @@ } .diff-view .added { - border: 5px solid #93ca3b; - background-color: rgba(147,202,59,0.2); + border: 5px solid #2196F3; + background-color: rgba(0, 188, 212,0.2); } +.diff-view .added::before { content: "+" } + .diff-view .modified { border: 5px solid #FFCC00; background-color: rgba(255,204,0,0.1); } +.diff-view .modified::before { content: "+/-" } + .diff-view .deleted { border: 5px solid #ff0030; background-color: rgba(255,0,48,0.1); } +.diff-view .deleted::before { content: "x" } .diff-view.inverse .added { border: 5px solid #2ecc71; @@ -180,12 +188,22 @@ line-height: 32px; } -.diff-view.hide-add .added, .diff-view.hide-mod .modified, .diff-view.hide-del .deleted { +.diff-view.hide-add .added, +.diff-view.hide-mod .modified, +.diff-view.hide-del .deleted { border: 5px solid transparent; background-color: transparent; } +.diff-view.hide-add .added::before, +.diff-view.hide-mod .modified::before, +.diff-view.hide-del .deleted::before { + display: none; +} + + -.diff-view.hide-text .ins, .diff-view.hide-text .del{ +.diff-view.hide-text .ins, +.diff-view.hide-text .del{ color: #333; background-color: transparent; text-decoration: none; From c1416c06661e7ac959bd9bbb7f0b883b50d2fca1 Mon Sep 17 00:00:00 2001 From: Todor Tsankov Date: Tue, 31 Oct 2017 13:29:43 +0100 Subject: [PATCH 079/111] diff-view minor changes --- assets/css/custom.css | 29 +++++++++++++------------- components/Deck/Diffview/Diffview.js | 2 +- components/Deck/Diffview/diff_funcs.js | 1 - 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/assets/css/custom.css b/assets/css/custom.css index 8cd575710..e0e02c6f3 100644 --- a/assets/css/custom.css +++ b/assets/css/custom.css @@ -111,15 +111,16 @@ .diff-view .added, .diff-view .modified, .diff-view .deleted { - padding: 15px 5px 5px 5px; + padding: 5px 5px 5px 5px; margin: 0px -10px; display: inline-block; + position: relative; } .diff-view .added::before, .diff-view .modified::before, .diff-view .deleted::before { - color: rgba(0,0,0,0.7); + color: rgba(0,0,0,0.8); position: absolute; font-size: 20px; right: 5px; @@ -143,34 +144,34 @@ } .diff-view .added { - border: 5px solid #2196F3; + border: 2px solid #2196F3; background-color: rgba(0, 188, 212,0.2); } .diff-view .added::before { content: "+" } .diff-view .modified { - border: 5px solid #FFCC00; - background-color: rgba(255,204,0,0.1); + border: 2px solid #FFCC00; + background-color: rgba(255,204,0,0.2); } .diff-view .modified::before { content: "+/-" } .diff-view .deleted { - border: 5px solid #ff0030; - background-color: rgba(255,0,48,0.1); + border: 2px solid #ff0030; + background-color: rgba(255,0,48,0.2); } .diff-view .deleted::before { content: "x" } .diff-view.inverse .added { - border: 5px solid #2ecc71; + border: 2px solid #2ecc71; background-color: rgba(46,204,113,0.2); } .diff-view.inverse .modified { - border: 5px solid #FF9800; - background-color: rgba(255,152,0,0.1); + border: 2px solid #FF9800; + background-color: rgba(255,152,0,0.2); } .diff-view.inverse .deleted { - border: 5px solid #9C27B0; - background-color: rgba(156,39,176,0.1); + border: 2px solid #9C27B0; + background-color: rgba(156,39,176,0.2); } /* Text related */ @@ -191,7 +192,7 @@ .diff-view.hide-add .added, .diff-view.hide-mod .modified, .diff-view.hide-del .deleted { - border: 5px solid transparent; + border: 2px solid transparent; background-color: transparent; } .diff-view.hide-add .added::before, @@ -200,8 +201,6 @@ display: none; } - - .diff-view.hide-text .ins, .diff-view.hide-text .del{ color: #333; diff --git a/components/Deck/Diffview/Diffview.js b/components/Deck/Diffview/Diffview.js index 69480e291..a1e806413 100644 --- a/components/Deck/Diffview/Diffview.js +++ b/components/Deck/Diffview/Diffview.js @@ -99,7 +99,7 @@ class DiffView extends Component { //REDUCE complex Object into flat Array const elements = Object.keys(diff_results).reduce((arr, key) => arr.concat(diff_results[key]), []); - console.log(elements); + // console.log(elements); //LOG // console.group(); diff --git a/components/Deck/Diffview/diff_funcs.js b/components/Deck/Diffview/diff_funcs.js index b2abbc749..0df7c0be6 100644 --- a/components/Deck/Diffview/diff_funcs.js +++ b/components/Deck/Diffview/diff_funcs.js @@ -125,7 +125,6 @@ const handleREMOVE = (el, source, finalsource) => { } else { if(_id){ let targetElement = $(root).find(`#${_id}`); - console.log(targetElement); targetElement.addClass('deleted'); } } From 24e574ed7c346b43667ac1dc91b81e156997bbc3 Mon Sep 17 00:00:00 2001 From: Todor Tsankov Date: Tue, 31 Oct 2017 13:31:01 +0100 Subject: [PATCH 080/111] SWAQ-529 fix missing spaces --- components/Deck/Diffview/diff_funcs.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/Deck/Diffview/diff_funcs.js b/components/Deck/Diffview/diff_funcs.js index 0df7c0be6..8b8c290d4 100644 --- a/components/Deck/Diffview/diff_funcs.js +++ b/components/Deck/Diffview/diff_funcs.js @@ -175,7 +175,6 @@ const handlePROPS = (node, patch, source, finalsource, vnode) => { const preprocessSrc = (source, mode) => { source = source - .replace(/ /g, '') .replace(/(?:\r\n|\r|\n)/g, '') .replace(/​/g, ''); @@ -186,7 +185,7 @@ const preprocessSrc = (source, mode) => { vTreeObject.length > 1 ? root = createElement(vTreeObject[0]) : root = createElement(vTreeObject); - $(root).find('br').remove(); + // $(root).find('br').remove(); $(root).find('.drawing-container').remove(); $(root).find('p:empty').remove(); $(root).find('span:empty').remove(); From 002810517f887fca3a4054cf5072687003e27a11 Mon Sep 17 00:00:00 2001 From: dpaun Date: Tue, 31 Oct 2017 14:48:44 +0100 Subject: [PATCH 081/111] SWIK-1607 Moved explanation to the question level --- .../ContentQuestionAnswersList.js | 53 ++++++++++--------- .../ContentQuestionsItem.js | 2 +- services/questions.js | 27 ++++++---- 3 files changed, 45 insertions(+), 37 deletions(-) diff --git a/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionAnswersList.js b/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionAnswersList.js index ac9ff7b7d..9d576f7c0 100644 --- a/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionAnswersList.js +++ b/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionAnswersList.js @@ -51,40 +51,43 @@ class ContentQuestionAnswersList extends React.Component { let correctAnswers = this.props.items.filter((item) => item.correct).map((node, index) => { return (
- - {node.answer} - -
-

- {node.explanation} -

-
+ + {node.answer} +
); }); + let explanation = ( +
+

+ {this.props.explanation} +

+
+ ); let answers = ( -
+
-
-
- {list} -
-
+
+
+ {list} +
+
- - {/*showEditButton()*/} -
-
- {this.state.showCorrect ? correctAnswers : null} + + {/*showEditButton()*/} +
+
+ {this.state.showCorrect ? correctAnswers : null} + {this.state.showCorrect ? explanation : null} +
-
-
+
); return ( @@ -92,7 +95,7 @@ class ContentQuestionAnswersList extends React.Component {
{answers}
-
+
); } } diff --git a/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionsItem.js b/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionsItem.js index f6f478a80..4faf55245 100644 --- a/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionsItem.js +++ b/components/Deck/ContentModulesPanel/ContentQuestionsPanel/ContentQuestionsItem.js @@ -16,7 +16,7 @@ class ContentQuestionsItem extends React.Component { render() { const question = this.props.question; const answers = ( - + ); // const editIcon = ( diff --git a/services/questions.js b/services/questions.js index 393cfce29..7ce7a9a42 100644 --- a/services/questions.js +++ b/services/questions.js @@ -16,34 +16,39 @@ export default { } if(resource === 'questions.list') { - rp.get({ - uri: 'https://questionservice.experimental.slidewiki.org/questions', - //uri: Microservices.questions.uri + '/' + args.stype + '/' + args.sid + '/' + 'questions', - }).then((res) => { + // rp.get({ + // uri: 'https://questionservice.experimental.slidewiki.org/questions', + // //uri: Microservices.questions.uri + '/' + args.stype + '/' + args.sid + '/' + 'questions', + // }).then((res) => { /* This is what we get from microservice */ /* [{"related_object":"slide","related_object_id":"10678","question":"string","user_id":"17","difficulty":1,"choices":[{"choice":"string","is_correct":true,"explanation":"string"}],"id":10}, {"related_object":"slide","related_object_id":"1141","question":"question 2","user_id":"17","difficulty":2,"choices":[{"choice":"string","is_correct":true,"explanation":"string"}, {"choice":"string","is_correct":true,"explanation":"string"}],"id":11}] */ - let questions = JSON.parse(res) + let q = [{"related_object":"slide","related_object_id":"10678","question":"string","user_id":"17","difficulty":1,"choices":[{"choice":"string","is_correct":true}],"explanation":"string explanation","id":10}, + {"related_object":"slide","related_object_id":"1141","question":"question 2","user_id":"17","difficulty":2,"choices":[{"choice":"string1","is_correct":true}, + {"choice":"string2","is_correct":true},{"choice":"string3","is_correct":false}],"explanation":"string1 string2 explanation","id":11}]; + // let questions = JSON.parse(res) + let questions = q .map((item, index) => { return { id: item.id, title: item.question, difficulty: item.difficulty, relatedObject: item.related_object, relatedObjectId: item.related_object_id, answers: item.choices .map((ans, ansIndex) => { - return {answer: ans.choice, correct: ans.is_correct, explanation: ans.explanation}; + return {answer: ans.choice, correct: ans.is_correct}; }), + explanation: item.explanation, userId: item.user_id, }; } ); callback(null, {questions: questions, totalLength: 2, selector: selector}); - }).catch((err) => { - console.log('Questions get errored. Check via swagger for following object and id:', args.stype, args.sid); - console.log(err); - callback(err, {}); - }); + // }).catch((err) => { + // console.log('Questions get errored. Check via swagger for following object and id:', args.stype, args.sid); + // console.log(err); + // callback(err, {}); + // }); } /* Hard coded sample work follows */ From dfc4641923dc598227c8246b7d0de9bf3a8e85ff Mon Sep 17 00:00:00 2001 From: dpaun Date: Tue, 31 Oct 2017 14:55:49 +0100 Subject: [PATCH 082/111] SWIK-1607 Corrected lint issues --- services/questions.js | 47 +++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/services/questions.js b/services/questions.js index 7ce7a9a42..d880f354f 100644 --- a/services/questions.js +++ b/services/questions.js @@ -20,30 +20,29 @@ export default { // uri: 'https://questionservice.experimental.slidewiki.org/questions', // //uri: Microservices.questions.uri + '/' + args.stype + '/' + args.sid + '/' + 'questions', // }).then((res) => { - /* This is what we get from microservice */ - /* - [{"related_object":"slide","related_object_id":"10678","question":"string","user_id":"17","difficulty":1,"choices":[{"choice":"string","is_correct":true,"explanation":"string"}],"id":10}, - {"related_object":"slide","related_object_id":"1141","question":"question 2","user_id":"17","difficulty":2,"choices":[{"choice":"string","is_correct":true,"explanation":"string"}, - {"choice":"string","is_correct":true,"explanation":"string"}],"id":11}] - */ - let q = [{"related_object":"slide","related_object_id":"10678","question":"string","user_id":"17","difficulty":1,"choices":[{"choice":"string","is_correct":true}],"explanation":"string explanation","id":10}, - {"related_object":"slide","related_object_id":"1141","question":"question 2","user_id":"17","difficulty":2,"choices":[{"choice":"string1","is_correct":true}, - {"choice":"string2","is_correct":true},{"choice":"string3","is_correct":false}],"explanation":"string1 string2 explanation","id":11}]; - // let questions = JSON.parse(res) - let questions = q - .map((item, index) => { - return { - id: item.id, title: item.question, difficulty: item.difficulty, relatedObject: item.related_object, relatedObjectId: item.related_object_id, - answers: item.choices - .map((ans, ansIndex) => { - return {answer: ans.choice, correct: ans.is_correct}; - }), - explanation: item.explanation, - userId: item.user_id, - }; - } - ); - callback(null, {questions: questions, totalLength: 2, selector: selector}); + /* This is what we get from microservice */ + /* + [{'related_object':'slide','related_object_id':'10678','question':'string','user_id':'17','difficulty':1,'choices':[{'choice':'string','is_correct':true,'explanation':'string'}],'id':10}, + {'related_object':'slide','related_object_id':'1141','question':'question 2','user_id':'17','difficulty':2,'choices':[{'choice':'string','is_correct':true,'explanation':'string'}, + {'choice':'string','is_correct':true,'explanation':'string'}],'id':11}] + */ + let q = [{'related_object':'slide','related_object_id':'10678','question':'string','user_id':'17','difficulty':1,'choices':[{'choice':'string','is_correct':true}],'explanation':'string explanation','id':10}, + {'related_object':'slide','related_object_id':'1141','question':'question 2','user_id':'17','difficulty':2,'choices':[{'choice':'string1','is_correct':true},{'choice':'string2','is_correct':true},{'choice':'string3','is_correct':false}],'explanation':'string1 string2 explanation','id':11}]; + // let questions = JSON.parse(res) + let questions = q + .map((item, index) => { + return { + id: item.id, title: item.question, difficulty: item.difficulty, relatedObject: item.related_object, relatedObjectId: item.related_object_id, + answers: item.choices + .map((ans, ansIndex) => { + return {answer: ans.choice, correct: ans.is_correct}; + }), + explanation: item.explanation, + userId: item.user_id, + }; + } + ); + callback(null, {questions: questions, totalLength: 2, selector: selector}); // }).catch((err) => { // console.log('Questions get errored. Check via swagger for following object and id:', args.stype, args.sid); // console.log(err); From 6374a2400cddcb81d210bbe163da7162265557e9 Mon Sep 17 00:00:00 2001 From: kadevgraaf Date: Thu, 2 Nov 2017 17:10:51 +0100 Subject: [PATCH 083/111] Loading indicator - via react states store and dispatch --- actions/slide/loadSlideView.js | 4 + .../SlideViewPanel/SlideContentView.js | 190 ++++++++++-------- .../SlideViewPanel/SlideViewPanel.js | 1 + stores/SlideViewStore.js | 12 +- 4 files changed, 117 insertions(+), 90 deletions(-) diff --git a/actions/slide/loadSlideView.js b/actions/slide/loadSlideView.js index 758557d17..41ccdb1d6 100644 --- a/actions/slide/loadSlideView.js +++ b/actions/slide/loadSlideView.js @@ -10,6 +10,10 @@ export default function loadSlideView(context, payload, done) { context.executeAction(slideIdTypeError, payload, done); return; } + console.log('send to load'); + context.dispatch('LOAD_SLIDE_CONTENT_LOAD', {loadingIndicator: 'true'}); + //context.dispatch('LOAD_SLIDE_CONTENT_LOAD'); + //console.log('get content'); context.service.read('slide.content', payload, {timeout: 20 * 1000}, (err, res) => { if (err) { diff --git a/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideContentView.js b/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideContentView.js index 79e49a90b..2d89ed663 100644 --- a/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideContentView.js +++ b/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideContentView.js @@ -4,93 +4,29 @@ import {findDOMNode} from 'react-dom'; const ReactDOM = require('react-dom'); class SlideContentView extends React.Component { + constructor(props) { + super(props); + this.loading = 'loading'; + } + componentWillReceiveProps(nextProps){ + // alert('styleName in componentWillReceiveProps: ' + styleName); + // console.log(this.props.PresentationStore); + if (nextProps.theme === this.props.theme){ - render() { - //styles should match slideContentEditor for consistency - const compHeaderStyle = { - minWidth: '100%', - overflowY: 'auto', - position: 'relative' - }; - const compStyle = { - //minWidth: '100%', - // maxHeight: 450, - minHeight: 600, - //minHeight: '100%', - overflowY: 'auto', - overflowX: 'auto', - //overflowY: 'visible', - //overflow: 'hidden,' - position: 'relative' - }; - const sectionElementStyle = { - overflowY: 'hidden', - overflowX: 'auto', - //paddingTop: 40, - height: '100%' - }; - const contentStyle = { - minWidth: '100%', - // maxHeight: 450, - minHeight: 610, - overflowY: 'auto', - overflowX: 'auto', - //borderStyle: 'dashed', - //borderColor: '#e7e7e7', - }; - const compSpeakerStyle = { - maxHeight: 50, - minHeight: 50, - overflowY: 'auto', - position: 'relative' - }; - - const containerMinHeight = { - - }; - - // Add the CSS dependency for the theme - // Get the theme information, and download the stylesheet - let styleName = 'default'; - if(this.props.theme && typeof this.props.theme !== 'undefined'){ - styleName = this.props.theme; } - if (styleName === '' || typeof styleName === 'undefined' || styleName === 'undefined') + console.log('componentWillReceiveProps ' + this.props.loadingIndicator + nextProps.loadingIndicator); + if (nextProps.loadingIndicator !== this.props.loadingIndicator) { - //if none of above yield a theme: - styleName = 'white'; + if (nextProps.loadingIndicator === 'true') + this.loading = 'loading'; + if(nextProps.loadingIndicator === 'false') + this.loading = ''; } - let style = require('../../../../../custom_modules/reveal.js/css/theme/' + styleName + '.css'); - //console.log(style); - //console.log(style.reveal); - //console.log(style.slides); - - return ( - -
-
-
-
-
-
-
-
-
-
-
- {this.props.speakernotes ? Speaker notes: : ''} -
-
- - ); } - + componentWillMount(){ + } componentDidMount(){ - if(process.env.BROWSER){ - - //Function toi fit contents in edit and view component //$(".pptx2html").addClass('schaal'); //$(".pptx2html [style*='absolute']").addClass('schaal'); @@ -113,24 +49,18 @@ class SlideContentView extends React.Component { //console.log('resize'); this.resize(); }); + this.loading = ''; } this.forceUpdate(); } - componentDidUpdate() { // update mathjax rendering // add to the mathjax rendering queue the command to type-set the inlineContent MathJax.Hub.Queue(['Typeset',MathJax.Hub,'inlineContent']); - this.resize(); - } - - componentWillReceiveProps(nextProps){ - // alert('styleName in componentWillReceiveProps: ' + styleName); - // console.log(this.props.PresentationStore); - if (nextProps.theme === this.props.theme){ - } + //this.loading = ''; + //console.log('componentDidUpdate'); } resize() @@ -175,6 +105,88 @@ class SlideContentView extends React.Component { //$(".pptx2html").css({'borderStyle': 'double double double double ', 'borderColor': '#3366ff', 'box-shadow': '0px 100px 1000px #ff8787'}); } } + + render() { + //styles should match slideContentEditor for consistency + const compHeaderStyle = { + minWidth: '100%', + overflowY: 'auto', + position: 'relative' + }; + const compStyle = { + //minWidth: '100%', + // maxHeight: 450, + minHeight: 600, + //minHeight: '100%', + overflowY: 'auto', + overflowX: 'auto', + //overflowY: 'visible', + //overflow: 'hidden,' + position: 'relative' + }; + const sectionElementStyle = { + overflowY: 'hidden', + overflowX: 'auto', + //paddingTop: 40, + height: '100%' + }; + const contentStyle = { + minWidth: '100%', + // maxHeight: 450, + minHeight: 610, + overflowY: 'auto', + overflowX: 'auto', + //borderStyle: 'dashed', + //borderColor: '#e7e7e7', + }; + const compSpeakerStyle = { + maxHeight: 50, + minHeight: 50, + overflowY: 'auto', + position: 'relative' + }; + + const containerMinHeight = { + + }; + + // Add the CSS dependency for the theme + // Get the theme information, and download the stylesheet + let styleName = 'default'; + if(this.props.theme && typeof this.props.theme !== 'undefined'){ + styleName = this.props.theme; + } + if (styleName === '' || typeof styleName === 'undefined' || styleName === 'undefined') + { + //if none of above yield a theme: + styleName = 'white'; + } + let style = require('../../../../../custom_modules/reveal.js/css/theme/' + styleName + '.css'); + //console.log(style); + //console.log(style.reveal); + //console.log(style.slides); + + return ( + + {(this.loading === 'loading') ?
Loading
: ''} +
+
+
+
+
+
+
+
+
+
+
+ {this.props.speakernotes ? Speaker notes: : ''} +
+
+ + ); + } } SlideContentView.contextTypes = { diff --git a/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideViewPanel.js b/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideViewPanel.js index 6bbcd933b..9abfa147e 100644 --- a/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideViewPanel.js +++ b/components/Deck/ContentPanel/SlideModes/SlideViewPanel/SlideViewPanel.js @@ -11,6 +11,7 @@ class SlideViewPanel extends React.Component { {(this.props.SlideViewStore.content === undefined) ?
Loading
: ''}
); diff --git a/stores/SlideViewStore.js b/stores/SlideViewStore.js index af4ba11e2..73bbf95df 100644 --- a/stores/SlideViewStore.js +++ b/stores/SlideViewStore.js @@ -9,6 +9,11 @@ class SlideViewStore extends BaseStore { this.content = ''; this.speakernotes = ''; this.tags = []; + this.loadingIndicator = ''; + } + loading(payload){ + this.loadingIndicator = payload.loadingIndicator; + this.emitChange(); } updateContent(payload) { if (payload.slide.revisions !== undefined) @@ -19,6 +24,7 @@ class SlideViewStore extends BaseStore { this.content = lastRevision.content; this.speakernotes = lastRevision.speakernotes; this.tags = lastRevision.tags? lastRevision.tags: []; + this.loadingIndicator = 'false'; this.emitChange(); } else @@ -26,6 +32,7 @@ class SlideViewStore extends BaseStore { this.title = 'title not found'; this.content = 'content not found'; this.tags = []; + this.loadingIndicator = 'false'; this.emitChange(); } } @@ -36,6 +43,7 @@ class SlideViewStore extends BaseStore { content: this.content, tags: this.tags, speakernotes: this.speakernotes, + loadingIndicator: this.loadingIndicator }; } dehydrate() { @@ -47,12 +55,14 @@ class SlideViewStore extends BaseStore { this.content = state.content; this.tags = state.tags; this.speakernotes = state.speakernotes; + this.loadingIndicator = state.loadingIndicator; } } SlideViewStore.storeName = 'SlideViewStore'; SlideViewStore.handlers = { - 'LOAD_SLIDE_CONTENT_SUCCESS': 'updateContent' + 'LOAD_SLIDE_CONTENT_SUCCESS': 'updateContent', + 'LOAD_SLIDE_CONTENT_LOAD': 'loading' }; export default SlideViewStore; From 503565a5cde51a926dddbdaa3c3c1fb83a0ee6bf Mon Sep 17 00:00:00 2001 From: kadevgraaf Date: Thu, 2 Nov 2017 19:52:34 +0100 Subject: [PATCH 084/111] Initial version - deck/subdeck/titles are stacked vertically, but need to be horizontally --- components/Deck/Deck.js | 5 ++--- components/Deck/NavigationPanel/Breadcrumb.js | 13 +++++++++++++ components/Deck/NavigationPanel/NavigationPanel.js | 6 +----- components/Deck/TreePanel/TreePanel.js | 3 ++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/components/Deck/Deck.js b/components/Deck/Deck.js index f8b878d60..f9cd63082 100644 --- a/components/Deck/Deck.js +++ b/components/Deck/Deck.js @@ -5,7 +5,6 @@ import DeckPageStore from '../../stores/DeckPageStore'; import ServiceErrorStore from '../../stores/ServiceErrorStore'; import hideLeftColumn from '../../actions/deckpagelayout/hideLeftColumn'; import restoreDeckPageLayout from '../../actions/deckpagelayout/restoreDeckPageLayout'; -import NavigationPanel from './NavigationPanel/NavigationPanel'; import TreePanel from './TreePanel/TreePanel'; import ContentPanel from './ContentPanel/ContentPanel'; import ContentModulesPanel from './ContentModulesPanel/ContentModulesPanel'; @@ -94,9 +93,9 @@ class Deck extends React.Component {
{error.hasOwnProperty('statusCode') ? : ''}
-
+ {/*}
-
+
*/}
diff --git a/components/Deck/NavigationPanel/Breadcrumb.js b/components/Deck/NavigationPanel/Breadcrumb.js index 66fa665d4..cdd227e1c 100644 --- a/components/Deck/NavigationPanel/Breadcrumb.js +++ b/components/Deck/NavigationPanel/Breadcrumb.js @@ -27,7 +27,9 @@ class Breadcrumb extends React.Component { }); } + /* return ( +
@@ -38,6 +40,17 @@ class Breadcrumb extends React.Component {
); + */ + return ( +
+

+ + {this.props.rootDeckName} + + {list} +

+
+ ); } } diff --git a/components/Deck/NavigationPanel/NavigationPanel.js b/components/Deck/NavigationPanel/NavigationPanel.js index c876cf78c..a86029180 100644 --- a/components/Deck/NavigationPanel/NavigationPanel.js +++ b/components/Deck/NavigationPanel/NavigationPanel.js @@ -26,11 +26,7 @@ class NavigationPanel extends React.Component { let deckTree = this.props.DeckTreeStore.deckTree; let selector = this.props.DeckTreeStore.selector; return ( -
-
- -
-
+ ); } } diff --git a/components/Deck/TreePanel/TreePanel.js b/components/Deck/TreePanel/TreePanel.js index 503189cc8..d5a2da67b 100644 --- a/components/Deck/TreePanel/TreePanel.js +++ b/components/Deck/TreePanel/TreePanel.js @@ -15,6 +15,7 @@ import addTreeNodeAndNavigate from '../../../actions/decktree/addTreeNodeAndNavi import moveTreeNodeAndNavigate from '../../../actions/decktree/moveTreeNodeAndNavigate'; import PermissionsStore from '../../../stores/PermissionsStore'; import ForkModal from './ForkModal'; +import NavigationPanel from './../NavigationPanel/NavigationPanel'; class TreePanel extends React.Component { @@ -129,7 +130,6 @@ class TreePanel extends React.Component { 'disabled': (!this.props.PermissionsStore.permissions.fork), 'button': true }); - let deckTree = this.props.DeckTreeStore.deckTree; let selector = this.props.DeckTreeStore.selector; let prevSelector = this.props.DeckTreeStore.prevSelector; @@ -144,6 +144,7 @@ class TreePanel extends React.Component { Deck Explorer
+
{/*

Deck: {rootNodeTitle}

*/} From f071420273021cc394dd857197267ad4b5acad57 Mon Sep 17 00:00:00 2001 From: kadevgraaf Date: Thu, 2 Nov 2017 20:00:38 +0100 Subject: [PATCH 085/111] Fix by Abi --- components/Deck/NavigationPanel/Breadcrumb.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Deck/NavigationPanel/Breadcrumb.js b/components/Deck/NavigationPanel/Breadcrumb.js index cdd227e1c..f7c777ddc 100644 --- a/components/Deck/NavigationPanel/Breadcrumb.js +++ b/components/Deck/NavigationPanel/Breadcrumb.js @@ -43,7 +43,7 @@ class Breadcrumb extends React.Component { */ return (
-

+

{this.props.rootDeckName} From 7e91d20f54c0e2099e7bade0bfc6a39183a11c0f Mon Sep 17 00:00:00 2001 From: abijames Date: Fri, 3 Nov 2017 08:46:38 +0000 Subject: [PATCH 086/111] renamed themes in ui --- components/AddDeck/AddDeck.js | 204 ++++++------ .../DeckEditPanel/DeckPropertiesEditor.js | 296 +++++++++--------- 2 files changed, 250 insertions(+), 250 deletions(-) diff --git a/components/AddDeck/AddDeck.js b/components/AddDeck/AddDeck.js index e26fa9e60..06cd61fd7 100644 --- a/components/AddDeck/AddDeck.js +++ b/components/AddDeck/AddDeck.js @@ -167,10 +167,10 @@ class AddDeck extends React.Component { let noOfSlides = String(this.props.ImportStore.noOfSlides); let totalNoOfSlides = String(this.props.ImportStore.totalNoOfSlides); let progressLabel = (totalNoOfSlides === '0' && this.props.ImportStore.uploadProgress < 65) ? 'Uploading file' : - (this.props.ImportStore.uploadProgress === 65) ? 'Converting file' : - (this.props.ImportStore.uploadProgress !== 100) ? 'Importing slide ' + noOfSlides + ' of ' + totalNoOfSlides : - (noOfSlides === totalNoOfSlides) ? 'Slides uploaded!' : - 'Imported ' + noOfSlides + ' of ' + totalNoOfSlides + ' slides';//this should not happen, but user should know in case it does + (this.props.ImportStore.uploadProgress === 65) ? 'Converting file' : + (this.props.ImportStore.uploadProgress !== 100) ? 'Importing slide ' + noOfSlides + ' of ' + totalNoOfSlides : + (noOfSlides === totalNoOfSlides) ? 'Slides uploaded!' : + 'Imported ' + noOfSlides + ' of ' + totalNoOfSlides + ' slides';//this should not happen, but user should know in case it does $('#progresslabel_addDeck_upload').text(parseInt(this.props.ImportStore.uploadProgress) + '% - ' + progressLabel); if (this.props.ImportStore.uploadProgress === 100) { @@ -194,13 +194,13 @@ class AddDeck extends React.Component { confirmButtonClass: 'positive ui button', buttonsStyling: false }) - .then((dismiss) => { - this.handleImportRedirect(); - return true; - }) - .catch(() => { - return true; - }); + .then((dismiss) => { + this.handleImportRedirect(); + return true; + }) + .catch(() => { + return true; + }); } else { swal({ title: 'Error', @@ -210,12 +210,12 @@ class AddDeck extends React.Component { confirmButtonClass: 'negative ui button', buttonsStyling: false }) - .then(() => { - return true; - }) - .catch(() => { - return true; - }); + .then(() => { + return true; + }) + .catch(() => { + return true; + }); } } } @@ -321,7 +321,7 @@ class AddDeck extends React.Component { if (filename.length > 40) filename = filename.substr(0, 40) + ' ...'; - /* let themeOptions = @@ -336,21 +336,21 @@ class AddDeck extends React.Component { ; */ let themeOptions = ; + + + + + + + + + + + + + + + ; // let licenseOptions = -

-
- - +
+
+

Add a deck to SlideWiki

+
+
+
+
+
+ + +
+
+ + +
-
-
- - -
-
-
- - {themeOptions} -
+
+ + +
+
+
+ + {themeOptions} +
-
+
-

You can upload existing slides to your new deck. Currently only PowerPoint pptx and OpenOffice odp files are supported.

-
-
-
-
-
- Select file -
- -
-
- {filename ? '"Selected for upload: '+filename+'"' : ''} -
-
-
-
-
-
-
-
-
- - -
-
-
-
- - -
-
- -
-
- Create deck +

You can upload existing slides to your new deck. Currently only PowerPoint pptx and OpenOffice odp files are supported.

+
+
+
+
+
+ Select file +
+ +
+
+ {filename ? '"Selected for upload: '+filename+'"' : ''} +
+
+
+
+
+
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+
+ Create deck +
-
- -
+ +
); } diff --git a/components/Deck/ContentPanel/DeckModes/DeckEditPanel/DeckPropertiesEditor.js b/components/Deck/ContentPanel/DeckModes/DeckEditPanel/DeckPropertiesEditor.js index ef081d3b8..c8445ea41 100644 --- a/components/Deck/ContentPanel/DeckModes/DeckEditPanel/DeckPropertiesEditor.js +++ b/components/Deck/ContentPanel/DeckModes/DeckEditPanel/DeckPropertiesEditor.js @@ -65,10 +65,10 @@ class DeckPropertiesEditor extends React.Component { allowOutsideClick: true, buttonsStyling: false }) - .then(() => { - return true; - }) - .catch(); + .then(() => { + return true; + }) + .catch(); } else if (newProps.DeckEditStore.viewstate === 'success') { swal({ @@ -81,10 +81,10 @@ class DeckPropertiesEditor extends React.Component { allowOutsideClick: true, buttonsStyling: false }) - .then(() => { - return true; - }) - .catch(); + .then(() => { + return true; + }) + .catch(); } } } @@ -105,7 +105,7 @@ class DeckPropertiesEditor extends React.Component { $(ReactDOM.findDOMNode(this.refs.AddGroups)) .dropdown({ action: (someText, dataValue, source) => { - // console.log('group dropdown select', dataValue); + // console.log('group dropdown select', dataValue); $(ReactDOM.findDOMNode(this.refs.AddGroups)).dropdown('clear'); $(ReactDOM.findDOMNode(this.refs.AddGroups)).dropdown('hide'); @@ -140,7 +140,7 @@ class DeckPropertiesEditor extends React.Component { saveRemoteData: false, action: (name, value, source) => { let data = JSON.parse(decodeURIComponent(value)); - // console.log('user dropdown select', name, value, data); + // console.log('user dropdown select', name, value, data); $(ReactDOM.findDOMNode(this.refs.AddUser)).dropdown('clear'); $(ReactDOM.findDOMNode(this.refs.AddUser)).dropdown('hide'); @@ -149,7 +149,7 @@ class DeckPropertiesEditor extends React.Component { if (users === undefined || users === null) users = []; - // console.log('trying to add', name, 'to', users); + // console.log('trying to add', name, 'to', users); if (users.findIndex((member) => { return member.id === parseInt(data.userid); }) === -1 && parseInt(data.userid) !== this.props.userid) { @@ -278,39 +278,39 @@ class DeckPropertiesEditor extends React.Component { this.handleClickRemoveUser(user, event); }; let optionalElement = (user.organization || user.country) ? ( -
- {user.organization || 'Unknown organization'} ({user.country || 'unknown country'}) -
-
+
+ {user.organization || 'Unknown organization'} ({user.country || 'unknown country'}) +
+
) : ''; let optionalText = (user.joined) ? ('Access granted '+timeSince((new Date(user.joined)))+' ago') : ''; const key = 'user_' + counter + user.username + user.id; // console.log('new authorized user:', user); // console.log('New key for authorized user:', key, user); list_authorized.push( - ( -
-
-
- -
-
-
-