thedod / cableweaver Goto Github PK
View Code? Open in Web Editor NEWInteractively examine Cable2Graph cablegate reference culsters using D3
Home Page: http://thedod.github.io/cableweaver/
Interactively examine Cable2Graph cablegate reference culsters using D3
Home Page: http://thedod.github.io/cableweaver/
For a while, the CableWeaving archive was codepen based. There was no real integration (no create pen
button - only copy/paste), but it worked. Then there was a change at codepen that created a problem for our pens, so we've moved the whole thing to gist+bl.ocks. This time, we've also added a create gist
button.
Now codepen has fixed the problem, and we can once again save story-lines there. Although it seems like gist would remain the "official" platform for CableWeaving for various reasons (merges and diffs are easier, maintains history, allows additional assets - e.g. PDF, etc.), codepen has its merits (e.g. the wysiwyg editor), and nobody says the "official" CableWeaving archive should be the only CableWeaver story-line repository out there.
True. One can still copy/paste the html into a new pen (to do: add a sentence+link about this to the export
dialog), but it could be cool to have a create pen
button alongside the create gist
one (here's how).
It is important to be able to share a state of CableWeaver:
1. Search for graphs
section[[MRN,x,y],...]
)All except for 4.
should be small enough to fit into the URL's hash.
Not sure whether 3.
is important. Perhaps we can use the data from 2.
as the 1. Search for graphs
list. Comments regarding this are welcome.
The hash could be:
#90fb78c3b7e1df6720a13ff31981f9dc,09BANGKOK3145,09BANGKOK3248
4.
) this way Need to check how big this can get with real-life data):
(Either tweak the compressor to produce url-safe output, or escape the result)
At the moment, we generate the entire index as a huge file that takes ages to load.
Instead, makemrn2graph.py
could generate a folder of year+mtn prefix chunks (e.g.06JERUSALEM.json
) and browser can keep them cached as a 2-level object.
In order to know what is a valid prefix (and avoid unnecessary http requests), the initial cache will be an object (also generated by makemrn2graph.py
) mapping each existing prefix to null or somesuch. This should be way faster to load than the monstrosity we currently have.
GUI-wise, this would require temporarily turning the 2. select a graph
section into a "loading" strip as long as there are pending mrn2graph fetches (could be more than one, since the search is multiline).
The json files are pre-generated a simple run of cable2graph's splitgraph
, and a second phase of splitting "too big to handle" clusters (which is - I admit - a bit barbaric).
I'm sure there are better ways to split the full graph. Maybe use splitgraph
with different command line options, maybe use the igraph library in new ways (this page may give some insight about stuff that can be done).
I guess this is a job for someone who know more graph theory than me :)
The minimum functionality of the 3. Timeline
section should be (of course - more is better):
.selected
class (larger circle)Manual layout information is either:
[[MRN,x,y],...]
for all nodes with manual layout (the .pinned
class)[[MRN,x,y,is_pinned],...]
for all nodes1.
is a lot more compact, but won't necessarily produce the same layout (free nodes might get entangled during the force layout and would need some jangling in order to settle down correctly).
Not sure how big this can get, and maybe this (especially option 1.
) can fit into the URL hash as compressed json (see #3), but if not - perhaps we could add 2 functions:
We can even have a variant of permalink that imports raw json from a url. E.g. #!http%3A//pastebin.com/raw.php%3Fi%3D4bAEiLSn
- this way sharing CableWeaver state would still be a bit unfriendly, but reading such a shared URL would be a 1-click thing.
Ctrl+click (or something) on a graph node should toggle whether cable is selected, i.e. has the .selected
class (circle is larger). Indication at timeline should be in sync.
Similar functionality should be available from the timeline (and the corresponding node's .selected
class should be in sync).
One's for the Bootstrap experts:
For some reason, unfolding #sidebar-timeline
doesn't fold #sidebar-select
(like an accordion should), and this is done explicitly.
This in itself is not a major issue, but sometimes (yet not always), trying to unfold some other accordion item afterwards doesn't collapse #sidebar-timeline
.
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.