Merge pull request #653 from gthacoder/meteor-client-whiteboard-slowdown
HTML5 client: merging the whiteboard optimizations.
This commit is contained in:
commit
101e44c8fe
@ -351,6 +351,7 @@ Handlebars.registerHelper 'whiteboardSize', (section) ->
|
||||
else
|
||||
setInSession 'display_usersList', false
|
||||
setInSession 'display_menu', false
|
||||
TimeSync.loggingEnabled = false # suppresses the log messages from timesync
|
||||
|
||||
@onLoadComplete = ->
|
||||
document.title = "BigBlueButton #{BBB.getMeetingName() ? 'HTML5'}"
|
||||
|
@ -29,6 +29,9 @@ Template.slide.rendered = ->
|
||||
wpm.scale(adjustedDimensions.width, adjustedDimensions.height)
|
||||
|
||||
@manuallyDisplayShapes = ->
|
||||
|
||||
return if Meteor.WhiteboardCleanStatus.findOne({in_progress: true})?
|
||||
|
||||
currentSlide = getCurrentSlideDoc()
|
||||
wpm = @whiteboardPaperModel
|
||||
shapes = Meteor.Shapes.find({whiteboardId: currentSlide?.slide?.id}).fetch()
|
||||
|
@ -4,3 +4,5 @@ Meteor.Meetings = new Meteor.Collection("meetings")
|
||||
Meteor.Presentations = new Meteor.Collection("presentations")
|
||||
Meteor.Shapes = new Meteor.Collection("shapes")
|
||||
Meteor.Slides = new Meteor.Collection("slides")
|
||||
|
||||
Meteor.WhiteboardCleanStatus = new Meteor.Collection("whiteboard-clean-status")
|
@ -55,6 +55,7 @@
|
||||
Meteor.subscribe 'meetings', meetingId, onReady: =>
|
||||
Meteor.subscribe 'presentations', meetingId, onReady: =>
|
||||
Meteor.subscribe 'users', meetingId, userId, authToken, onError: onErrorFunction, onReady: =>
|
||||
Meteor.subscribe 'whiteboard-clean-status', meetingId, onReady: =>
|
||||
# done subscribing
|
||||
onLoadComplete()
|
||||
|
||||
|
@ -67,15 +67,13 @@
|
||||
@removeAllShapesFromSlide = (meetingId, whiteboardId) ->
|
||||
Meteor.log.info "removeAllShapesFromSlide__" + whiteboardId
|
||||
if meetingId? and whiteboardId? and Meteor.Shapes.find({meetingId: meetingId, whiteboardId: whiteboardId})?
|
||||
shapesOnSlide = Meteor.Shapes.find({meetingId: meetingId, whiteboardId: whiteboardId}).fetch()
|
||||
Meteor.log.info "number of shapes:" + shapesOnSlide.length
|
||||
for s in shapesOnSlide
|
||||
Meteor.log.info "shape=" + s.shape.id
|
||||
id = Meteor.Shapes.findOne({meetingId: meetingId, whiteboardId: whiteboardId, "shape.id": s.shape.id})
|
||||
if id?
|
||||
Meteor.Shapes.remove(id._id)
|
||||
Meteor.log.info "----removed shape[" + s.shape.id + "] from " + whiteboardId
|
||||
Meteor.log.info "remaining shapes on the slide:" + Meteor.Shapes.find({meetingId: meetingId, whiteboardId: whiteboardId}).fetch().length
|
||||
Meteor.Shapes.remove {meetingId: meetingId, whiteboardId: whiteboardId}, ->
|
||||
Meteor.log.info "clearing all shapes from slide"
|
||||
|
||||
# After shapes are cleared, wait 1 second and set cleaning off
|
||||
Meteor.setTimeout ->
|
||||
Meteor.WhiteboardCleanStatus.update({meetingId: meetingId}, {$set: {in_progress: false}})
|
||||
, 1000
|
||||
|
||||
@removeShapeFromSlide = (meetingId, whiteboardId, shapeId) ->
|
||||
shapeToRemove = Meteor.Shapes.findOne({meetingId: meetingId, whiteboardId: whiteboardId, "shape.id": shapeId})
|
||||
@ -88,9 +86,13 @@
|
||||
# called on server start and meeting end
|
||||
@clearShapesCollection = (meetingId) ->
|
||||
if meetingId?
|
||||
Meteor.Shapes.remove({meetingId: meetingId}, Meteor.log.info "cleared Shapes Collection (meetingId: #{meetingId}!")
|
||||
Meteor.Shapes.remove {}, ->
|
||||
Meteor.log.info "cleared Shapes Collection (meetingId: #{meetingId}!"
|
||||
Meteor.WhiteboardCleanStatus.update({meetingId: meetingId}, {$set: {in_progress: false}})
|
||||
else
|
||||
Meteor.Shapes.remove({}, Meteor.log.info "cleared Shapes Collection (all meetings)!")
|
||||
Meteor.Shapes.remove {}, ->
|
||||
Meteor.log.info "cleared Shapes Collection (all meetings)!"
|
||||
Meteor.WhiteboardCleanStatus.update({meetingId: meetingId}, {$set: {in_progress: false}})
|
||||
|
||||
# --------------------------------------------------------------------------------------------
|
||||
# end Private methods on server
|
||||
|
@ -70,3 +70,7 @@ Meteor.publish 'meetings', (meetingId) ->
|
||||
Meteor.publish 'presentations', (meetingId) ->
|
||||
Meteor.log.info "publishing presentations for #{meetingId}"
|
||||
Meteor.Presentations.find({meetingId: meetingId})
|
||||
|
||||
Meteor.publish 'whiteboard-clean-status', (meetingId) ->
|
||||
Meteor.log.info "whiteboard clean status #{meetingId}"
|
||||
Meteor.WhiteboardCleanStatus.find({meetingId: meetingId})
|
||||
|
@ -219,6 +219,11 @@ class Meteor.RedisPubSub
|
||||
return
|
||||
|
||||
if message.header.name is "get_whiteboard_shapes_reply" and message.payload.requester_id is "nodeJSapp"
|
||||
|
||||
# Create a whiteboard clean status or find one for the current meeting
|
||||
if not Meteor.WhiteboardCleanStatus.findOne({meetingId: meetingId})?
|
||||
Meteor.WhiteboardCleanStatus.insert({meetingId: meetingId, in_progress: false})
|
||||
|
||||
for shape in message.payload.shapes
|
||||
whiteboardId = shape.wb_id
|
||||
addShapeToCollection meetingId, whiteboardId, shape
|
||||
@ -238,6 +243,7 @@ class Meteor.RedisPubSub
|
||||
|
||||
if message.header.name is "whiteboard_cleared_message"
|
||||
whiteboardId = message.payload.whiteboard_id
|
||||
Meteor.WhiteboardCleanStatus.update({meetingId: meetingId}, {$set: {'in_progress': true}})
|
||||
removeAllShapesFromSlide meetingId, whiteboardId
|
||||
return
|
||||
|
||||
|
@ -2,6 +2,7 @@ Meteor.startup ->
|
||||
Meteor.log.info "server start"
|
||||
|
||||
#remove all data
|
||||
Meteor.WhiteboardCleanStatus.remove({})
|
||||
clearUsersCollection()
|
||||
clearChatCollection()
|
||||
clearMeetingsCollection()
|
||||
|
Loading…
Reference in New Issue
Block a user