Git Product home page Git Product logo

cableweaver's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

rowilsonh

cableweaver's Issues

Permalinks

It is important to be able to share a state of CableWeaver:

  1. Which graph (json file) is presented
  2. What cables are selected
  3. [maybe] List of cables in the 1. Search for graphs section
  4. [maybe] Manual layout information ([[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:

(Either tweak the compressor to produce url-safe output, or escape the result)

Split mrn2graph.json

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).

Bootstrap accordion sometimes buggy

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.

Export/Import manual layout information

Manual layout information is either:

  1. Either [[MRN,x,y],...] for all nodes with manual layout (the .pinned class)
  2. Or [[MRN,x,y,is_pinned],...] for all nodes

1. 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:

  • Export - pops up a text area with json you can copy and save to a file, pastebin, etc.
    This information can also contain all "permalinkable" information mentioned at #3
  • Import - either lets you paste json or enter a url of a raw pastebin/etc.

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.

Better clusters

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 :)

Timeline

The minimum functionality of the 3. Timeline section should be (of course - more is better):

  • List of item per cable
  • Item shows date and MRN, the rest of the metadata appears as a tooltip
    (similar to graph nodes)
  • Indication of classification (probably background color similar to node stoke colors)
  • Enable the following functionality
    • Open the cable in a new tab
    • Indicate whether the cable is selected - i.e. corresponding graph node has the .selected class (larger circle)

Toggle whether node is selected

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).

Codepen integration

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).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.