Vis4Sense / HistoryMap

http://sensemap.io
60 stars 7 forks source link

Save, Pause, and Load Sessions #92

Closed kaidatavis closed 6 months ago

kaidatavis commented 7 years ago

For the discussions related to the development of the Save, Pause, and Load Sessions in SeneseMap.

RedayY commented 7 years ago

So I would like to bring to attention to start a discussion when we would like to save information for the session.

Personally I think we should make SenseMap save the entire session information upon closing SenseMap as Data at that point is the most complete.

kaidatavis commented 7 years ago

The potential problem is that SenseMap may not get a chance to save the data, which will then be lost.

For example, if user closes/quits chrome, which also closes SenseMap, is it always guaranteed that SenseMap has the chance to save all the data before it gets shut down? In a less likely event when Chrome or the OS freezes, all the data will be lost.

I don't see any particular benefit to wait until there is more data. Instead, this can cause an user delay as he/she needs to wait for a relatively larger amount of data being sent to the server. Whereas when data is saved as they generate, user probably won't notice any delay because of the small amount each time.

RedayY commented 7 years ago

True, I understand your point, I was thinking how do we deal with incomplete nodes, what if the node is still loading as it shows at times in the console.

But it just occurred to me that we don't really care whether nodes are loading or not when getting their information. The Loading aspect was only important for history map.

RedayY commented 7 years ago

Update:

Points of Discussion:

kaidatavis commented 7 years ago

True, I understand your point, I was thinking how do we deal with incomplete nodes, what if the node is still loading as it shows at times in the console. But it just occurred to me that we don't really care whether nodes are loading or not when getting their information. The Loading aspect was only important for history map.

This is a good point. It is probably better to wait until a page is fully loaded before sending the information to server. Currently, a node can be updated a few times, for title, favcon, redirection, etc. It will be too many server communications if each of these update is sent separately.

kaidatavis commented 7 years ago

I commented line 18 in rest api sensemap model to make the api work again.

Need to find what the error is and fix it. Just removing this line may cause problem for API uses it.

RedayY commented 7 years ago

Currently, a node can be updated a few times, for title, favcon, redirection, etc.

That is why I was thinking sending all at the end would be a better solution. Currently I am sending nodes to the DB every time a node gets pushed to the Node array.

RedayY commented 7 years ago

Need to find what the error is and fix it. Just removing this line may cause problem for API uses it.

Remember when you asked shaz in the meeting last few minutes to add "visibility" ? thats why it had an error. I think it is just a syntax issue.

RedayY commented 7 years ago

I currently stumbled upon a minor issue. Every time i push a node to a session ID it does not add it to the session with the corespondig session id, but rather to the first session. I do believe this is an API related mistake. Could anyone look into this with me.

Also @kaimdx , How exactly do i manipulate the fields of future nodes. In example adding "visibility" to them ?

RedayY commented 7 years ago

@kaimdx I also talked to Professor Dr Jaap Boeender, is there any chance we could put SenseMap public ally on GitHub ?

I think this would finally qualify @HumzahJavid and myself to use it for one of our modules (which means we having more time to work on it)

kaidatavis commented 7 years ago

That is why I was thinking sending all at the end would be a better solution. Currently I am sending nodes to the DB every time a node gets pushed to the Node array.

I misunderstood that you meant saving the nodes when a whole session is complete. Yes, it will be a good time to send a node to server when the node's loading is complete. Currently in browserProvenance line 124 sets the 'complete' status for a tab/node. You can trigger a new event/message there to invoke the node saving, such as dispatch.tabCompleted(node)

kaidatavis commented 7 years ago

How exactly do i manipulate the fields of future nodes. In example adding "visibility" to them ?

by adding a new attribute/field visibility to the node object and set its value as true or false?

kaidatavis commented 7 years ago

is there any chance we could put SenseMap public ally on GitHub ?

I have been thinking about this as well, and it is possible. Let's discuss this at the meeting on Monday.

RedayY commented 7 years ago

Update:

Points of Discussion:

I would really appreciate any help given with me solving the "user interactivity" issue for loading, as I am clueless right now

kaidatavis commented 7 years ago

@RedayY Thanks for the update. Let's discuss these at the meeting today. I added the discussion points to today's meeting wiki page.

Can you create such meeting from next week on? Just copy the template from Meeting Minutes template https://github.com/Vis4Sense/SenseMapExtension/wiki/Meeting-Minutes-template and add anything you want to discuss.

And then add a link on the sidebar https://github.com/Vis4Sense/SenseMapExtension/wiki/_Sidebar/_edit

RedayY commented 7 years ago

Update:

PS: No API key in code 👍

kaidatavis commented 6 years ago

Still need to decide what happens to the tabs that are already open when a session is loaded. Currently this causes a conflict because 1) nodes for such tabs can have the same nodeID as the nodes from the saved session, and 2) SenseMap is not aware which node has its URL open in a tab and which doesn't.

kaidatavis commented 6 years ago

Commit 630e88e92f4ca9482b6611849ada709b1abb0126 now uses UUID for node id (https://www.npmjs.com/package/uuid), so it is very unlikely that two nodes will have the same Id.

kaidatavis commented 6 years ago

Save the historyMap.model to the database instead of nodes and tree.