add function to save the whiteboard to a file
This commit is contained in:
parent
e516a24426
commit
1c23b8fc6a
1
.gitignore
vendored
1
.gitignore
vendored
@ -66,3 +66,4 @@ typings/
|
|||||||
.env
|
.env
|
||||||
|
|
||||||
/public/apidoc
|
/public/apidoc
|
||||||
|
/savedBoards.json
|
||||||
|
@ -165,7 +165,7 @@ Many more settings can be tweaked. All of them are described in the [default con
|
|||||||
|
|
||||||
## Things you may want to know
|
## Things you may want to know
|
||||||
|
|
||||||
- Whiteboards are gone if you restart the Server, so keep that in mind (or save your whiteboard)
|
- Whiteboards are gone if you restart the Server enable "enableFileDatabase" in the config file or export the board to prevent that.
|
||||||
- You should be able to customize the layout without ever touching the whiteboard.js (take a look at index.html & main.js)
|
- You should be able to customize the layout without ever touching the whiteboard.js (take a look at index.html & main.js)
|
||||||
|
|
||||||
## ToDo
|
## ToDo
|
||||||
|
@ -6,6 +6,9 @@ backend:
|
|||||||
# Enable the function to save to a webdav-server (check README for more info) -- boolean
|
# Enable the function to save to a webdav-server (check README for more info) -- boolean
|
||||||
enableWebdav: false
|
enableWebdav: false
|
||||||
|
|
||||||
|
# Enable the function to save the whiteboard to a file so you save the state even on server restarts -- boolean
|
||||||
|
enableFileDatabase: true
|
||||||
|
|
||||||
# Backend performance tweaks
|
# Backend performance tweaks
|
||||||
performance:
|
performance:
|
||||||
# Whiteboard information broadcasting frequency (in Hz i.e. /s) -- number
|
# Whiteboard information broadcasting frequency (in Hz i.e. /s) -- number
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
"enableWebdav": {
|
"enableWebdav": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
"enableFileDatabase": {
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
"performance": {
|
"performance": {
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -1,7 +1,23 @@
|
|||||||
//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.
|
||||||
|
const fs = require("fs");
|
||||||
|
const config = require("./config/config");
|
||||||
|
|
||||||
var savedBoards = {};
|
var savedBoards = {};
|
||||||
var savedUndos = {};
|
var savedUndos = {};
|
||||||
|
var saveDelay = false;
|
||||||
|
|
||||||
|
if (config.backend.enableFileDatabase) {
|
||||||
|
//read saved boards from file
|
||||||
|
fs.readFile("savedBoards.json", (err, data) => {
|
||||||
|
if (err) {
|
||||||
|
return console.log(
|
||||||
|
"Not persistend Whiteboard Datafile found... this is not a problem on the first start!"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
savedBoards = JSON.parse(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
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
|
||||||
@ -77,9 +93,7 @@ module.exports = {
|
|||||||
].includes(tool)
|
].includes(tool)
|
||||||
) {
|
) {
|
||||||
//Save all this actions
|
//Save all this actions
|
||||||
if (!savedBoards[wid]) {
|
savedBoards[wid] = savedBoards[wid] ? savedBoards[wid] : [];
|
||||||
savedBoards[wid] = [];
|
|
||||||
}
|
|
||||||
delete content["wid"]; //Delete id from content so we don't store it twice
|
delete content["wid"]; //Delete id from content so we don't store it twice
|
||||||
if (tool === "setTextboxText") {
|
if (tool === "setTextboxText") {
|
||||||
for (var i = savedBoards[wid].length - 1; i >= 0; i--) {
|
for (var i = savedBoards[wid].length - 1; i >= 0; i--) {
|
||||||
@ -94,6 +108,21 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
savedBoards[wid].push(content);
|
savedBoards[wid].push(content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.backend.enableFileDatabase) {
|
||||||
|
//Save whiteboard to file
|
||||||
|
if (!saveDelay) {
|
||||||
|
saveDelay = true;
|
||||||
|
setTimeout(function () {
|
||||||
|
saveDelay = false;
|
||||||
|
fs.writeFile("savedBoards.json", JSON.stringify(savedBoards), (err) => {
|
||||||
|
if (err) {
|
||||||
|
return console.log(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}, 1000 * 10); //Save after 10 sec
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
loadStoredData: function (wid) {
|
loadStoredData: function (wid) {
|
||||||
//Load saved whiteboard
|
//Load saved whiteboard
|
||||||
|
Loading…
x
Reference in New Issue
Block a user