From 431f0e76d6d1a14b17773b1d0ca3abac82739669 Mon Sep 17 00:00:00 2001 From: Ali Asaria Date: Fri, 27 May 2011 01:08:25 -0400 Subject: [PATCH] allow board resizing --- client/script.js | 33 ++++++++++++++++++++++++++++++++- lib/data/redis.js | 11 +++++++++++ server.js | 25 +++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 1 deletion(-) diff --git a/client/script.js b/client/script.js index 7b9469a..6ec5c1d 100644 --- a/client/script.js +++ b/client/script.js @@ -119,6 +119,10 @@ function getMessage( m ) addSticker( message.data.cardId, message.data.stickerId ); break; + case 'setBoardSize': + resizeBoard( message.data ); + break; + default: //unknown message alert('unknown action: ' + JSON.stringify(message)); @@ -533,6 +537,23 @@ function updateName ( sid, name ) $('#names-ul').children(id).text( name ); } + +////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////// + +function boardResizeHappened(event, ui) +{ + var newsize = ui.size + + sendAction( 'setBoardSize', newsize); +} + +function resizeBoard (size) { + $( ".board-outline" ).animate( { + height: size.height, + width: size.width + } ); +} ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// @@ -661,7 +682,17 @@ $( ".sticker" ).draggable({ }); -$( ".board-outline" ).resizable( { ghost: false, minWidth: 700, minHeight: 400 , maxWidth: 3200, maxHeight: 1800} ); +$( ".board-outline" ).resizable( { + ghost: false, + minWidth: 700, + minHeight: 400 , + maxWidth: 3200, + maxHeight: 1800, + stop: function(event, ui) { + boardResizeHappened(event, ui); + } +} ); + }); diff --git a/lib/data/redis.js b/lib/data/redis.js index e3a1943..b0a1069 100644 --- a/lib/data/redis.js +++ b/lib/data/redis.js @@ -146,6 +146,17 @@ db.prototype = { redisClient.hset(REDIS_PREFIX + '-room:' + room + '-cards', cardId, JSON.stringify(card)); } }); + }, + + setBoardSize: function(room, size) { + redisClient.set(REDIS_PREFIX + '-room:' + room + '-size', JSON.stringify(size)); + }, + + getBoardSize: function(room, callback) { + redisClient.get(REDIS_PREFIX + '-room:' + room + '-size', function (err, res) { + callback(JSON.parse(res)); + }); } + }; exports.db = db; diff --git a/server.js b/server.js index 87f4a92..bb968a4 100644 --- a/server.js +++ b/server.js @@ -287,6 +287,19 @@ function scrub( text ) { broadcastToRoom( client, { action: 'addSticker', data: { cardId: cardId, stickerId: stickerId }}); break; + + case 'setBoardSize': + + var size = {}; + size.width = scrub(message.data.width);; + size.height = scrub(message.data.height); + + getRoom(client, function(room) { + db.setBoardSize( room, size ); + }); + + broadcastToRoom( client, { action: 'setBoardSize', data: size } ); + break; default: console.log('unknown action'); @@ -346,6 +359,18 @@ function initClient ( client ) } ); }); + + db.getBoardSize( room, function(size) { + + if (size != null) { + client.send( + { + action: 'setBoardSize', + data: size + } + ); + } + }); roommates_clients = rooms.room_clients(room); roommates = [];