geodan / cow Goto Github PK
View Code? Open in Web Editor NEWConcurrent Online Workspace
License: Other
Concurrent Online Workspace
License: Other
Herd -> Project
Store -> Project (only in the messaging)
feature -> Item
This is a big one.
Start by designing a role/permission system.
Ultimately roles can be defined by any peer and propagated to other peers.
For a start roles can be baked into the code. An owner starts by selecting a role and is consequently presented with an interface with some functionality enabled based on the permissions for that role.
Opanlayers is able to do this with indexeddb. This could dramatically increase map update speed and enhances offline use.
Some fields are not filled on first creation of record (notably created and owner)
Groups will get a seperate table per project (formerly Herd)
Syncing like herd syncing
Groups are an object per project
Add methods to set/retrieve groups
At the moment any code can be inserted into the text fields and executed upon parsing. That is NO good.
The itemStore.loadItemsFromDb sets the item type always as 'feature' this way we cannot load items with another type and get those back
There seems to be a lot more code going on than needed for adminstering the extent of the peer.
At the moment positions are only updated/redrawn when someones else's position changes.
Text messages should be shared. This means a core update.
Make links between messages and map-features. That could be done in the clients via tagging.
Create GUI for sharing text (kind of chat interface)
Waiting for the peerjs library to deliver a more stable version with AV support.
Nils is working on this, should be ready for DLG demo.
Do for:
projectDB
groupDB
itemDB
Make sure ownership is stored in the feature.
Update map/feature widgets accordingly.
Make a more robustly configurable maplayer.
Certainly fix the weird envelope folding behaviour of the extent.
Functionality:
Features that haven't been updated for xx ms. should not be showing up or be distributed anymore.
libs like jquery, openlayers etc. should be included minified
me().location() is not available when disconnected. Therefore it should be (like username) be added to the core.
Interface needs some new design, especially on the level of menus.
item.permissions = {read: [groupids],write: [groupids], share: [groupids]}
and method to set them?
Peers should only broadcast 'answers' when they know they are the alpha peer.
With COW2 it is no longer needed for alpha to be inside the same project so we might be able to implement the old findalpha routine again in the websocket.js
The map is in fact nothing more than a replaceable screenwidget that displays the data that goes around in COW. Therefore all references to the map (e.g. OpenLayers lib) could be better put into the widget.
To keep in mind: some COW functionality depends on the map, for instance your viewextent that is being sent to other peers.
Stresstest automates processes like adding/remove features, updating location, extent name etc...
Also usefull as a DEMO
Not a must-have:
Features should be in a list, default ordered by time but other orders possible.
Add an identification parameter to cow
Currently we have
CID which is the websocket ID, changes very often
UID which is the client ID, changes upon page reloa
add:
PID will be any string that identifies the person behind the client. Only changes on user request.
At the moment is is good enough to use the owner().name parameter as PID. It is not a big problem when people have the same PID but should be avoided in the future.
Objects that will make use of PID:
project.groups().members[pid list]
item.creator() -> pid
item.owner() -> pid
core.pid() -> pid
After a disconnect the websocket object is gone. Needs to be recreated somehow with options earlier given.
Update the code to JQuery standards.
Involves new messagetype in cow and interface implementation.
How should messages be stored?
Should there be a link between messages and features?
Is a message very different from a feature anyway?
Needs to be implemented for IPO demo
The correct text is only prolongated after the peer moves the extent. This should be done when the d3 layer is initialized the first time.
Source and doc:
https://github.com/peers/peerjs-server
When map is programmatically ceneterd (like after clicking on center to peers location) the d3 layers are not updated.
Add options:
poll continuously/in intervals/no polling
Button to zoom to own location (also when no websocket available)
After the mapwidget is loaded, update the me() peer with the extent
Best would be when directly accessible from any polygon on the map.
Result should give an indication on the map of how many people are inside that polygon
Localdbase is more often than not empty where it should have records.
Not sure what causes this but quite a showstopper.
Based on the deltas.
Mind: we cannot change the data object since that would be changing the recent status.
For lines the touchable area is very small. Set this to more pixels.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.