Merge pull request #36 from jb-leger/undo_in_server_part
undo buffer also in server part for redo
This commit is contained in:
commit
0debc482f4
@ -43,7 +43,7 @@ Result | Windows and Linux | macOS
|
|||||||
------ | -------------------- | -------
|
------ | -------------------- | -------
|
||||||
Clear the whiteboard | Ctrl + Shift + Z | Command + Shift + Z
|
Clear the whiteboard | Ctrl + Shift + Z | Command + Shift + Z
|
||||||
Undo your last step | Ctrl + Z | Command + Z
|
Undo your last step | Ctrl + Z | Command + Z
|
||||||
Redo your last undo | Ctrl + Shift + Z | Command + + Shift + Z
|
Redo your last undo | Ctrl + Shift + Z | Command + Shift + Z
|
||||||
Select an area | Ctrl + X | Command + X
|
Select an area | Ctrl + X | Command + X
|
||||||
Take the mouse | Ctrl + M | Command + M
|
Take the mouse | Ctrl + M | Command + M
|
||||||
Take the pen | Ctrl + P | Command + P
|
Take the pen | Ctrl + P | Command + P
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
//This file is only for saving the whiteboard. (Not to a file, only to RAM atm. Whiteboard is gone after server restart)
|
//This file is only for saving the whiteboard. (Not to a file, only to RAM atm. Whiteboard is gone after server restart)
|
||||||
|
|
||||||
var savedBoards = {};
|
var savedBoards = {};
|
||||||
|
var savedUndos = {};
|
||||||
module.exports = {
|
module.exports = {
|
||||||
handleEventsAndData: function (content) {
|
handleEventsAndData: function (content) {
|
||||||
var tool = content["t"]; //Tool witch is used
|
var tool = content["t"]; //Tool witch is used
|
||||||
@ -8,19 +9,46 @@ module.exports = {
|
|||||||
var username = content["username"];
|
var username = content["username"];
|
||||||
if (tool === "clear") { //Clear the whiteboard
|
if (tool === "clear") { //Clear the whiteboard
|
||||||
delete savedBoards[wid];
|
delete savedBoards[wid];
|
||||||
|
delete savedUndos[wid];
|
||||||
} else if (tool === "undo") { //Undo an action
|
} else if (tool === "undo") { //Undo an action
|
||||||
|
if (!savedUndos[wid]) {
|
||||||
|
savedUndos[wid] = [];
|
||||||
|
}
|
||||||
if (savedBoards[wid]) {
|
if (savedBoards[wid]) {
|
||||||
for (var i = savedBoards[wid].length - 1; i >= 0; i--) {
|
for (var i = savedBoards[wid].length - 1; i >= 0; i--) {
|
||||||
if (savedBoards[wid][i]["username"] == username) {
|
if (savedBoards[wid][i]["username"] == username) {
|
||||||
var drawId = savedBoards[wid][i]["drawId"];
|
var drawId = savedBoards[wid][i]["drawId"];
|
||||||
for (var i = savedBoards[wid].length - 1; i >= 0; i--) {
|
for (var i = savedBoards[wid].length - 1; i >= 0; i--) {
|
||||||
if (savedBoards[wid][i]["drawId"] == drawId && savedBoards[wid][i]["username"] == username) {
|
if (savedBoards[wid][i]["drawId"] == drawId && savedBoards[wid][i]["username"] == username) {
|
||||||
|
savedUndos[wid].push(savedBoards[wid][i]);
|
||||||
savedBoards[wid].splice(i, 1);
|
savedBoards[wid].splice(i, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(savedUndos[wid].length > 1000) {
|
||||||
|
savedUndos[wid].splice(0, savedUndos[wid].length - 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (tool === "redo") {
|
||||||
|
if (!savedUndos[wid]) {
|
||||||
|
savedUndos[wid] = [];
|
||||||
|
}
|
||||||
|
if (!savedBoards[wid]) {
|
||||||
|
savedBoards[wid] = [];
|
||||||
|
}
|
||||||
|
for (var i = savedUndos[wid].length - 1; i >= 0; i--) {
|
||||||
|
if (savedUndos[wid][i]["username"] == username) {
|
||||||
|
var drawId = savedUndos[wid][i]["drawId"];
|
||||||
|
for (var i = savedUndos[wid].length - 1; i >= 0; i--) {
|
||||||
|
if (savedUndos[wid][i]["drawId"] == drawId && savedUndos[wid][i]["username"] == username) {
|
||||||
|
savedBoards[wid].push(savedUndos[wid][i]);
|
||||||
|
savedUndos[wid].splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else if (["line", "pen", "rect", "circle", "eraser", "addImgBG", "recSelect", "eraseRec", "addTextBox", "setTextboxText", "removeTextbox", "setTextboxPosition", "setTextboxFontSize", "setTextboxFontColor"].includes(tool)) { //Save all this actions
|
} else if (["line", "pen", "rect", "circle", "eraser", "addImgBG", "recSelect", "eraseRec", "addTextBox", "setTextboxText", "removeTextbox", "setTextboxPosition", "setTextboxFontSize", "setTextboxFontColor"].includes(tool)) { //Save all this actions
|
||||||
if (!savedBoards[wid]) {
|
if (!savedBoards[wid]) {
|
||||||
|
Loading…
Reference in New Issue
Block a user