3

We need to find or build from scratch a tool, that will collect users' feedback on graphs they look at. Scientists commenting some obtained distributions is a typical example. Generally speaking, this should be some kind of collective discussion layer for d3js

I guess, that this idea is not new, and I even saw kind of prototype a couple of years ago. Can anyone point to possible existing solutions or maybe frameworks that might be helpful?

Simplest use case - Bob sees d3js scatterplot and observes the strange outlier A on the upper left corner. He clicks on it and writes a comment - 'Was all conditions normal for this observation?'. When John enters the system and clicks on A, he can read the comment and reply smth like 'That's just my cat who ran over keyboard'.

This logic can have lots of extensions, so it's better to use an existing tool.

Kaval Patel
  • 670
  • 4
  • 20
RInatM
  • 1,208
  • 1
  • 17
  • 39
  • This is a pretty big task, involving both server and client functionality and lots of decision making along the way. I sort of doubt there's a tool that does exactly what you want. Here's [a jQuery plugin for photo tagging](https://github.com/kmendes/Jquery-Photo-Tag) that is obviously not aware of chart semantics, so it would be a very limited solution to what you describe. I think anything custom-tailored would require, at minimum, to extend an existing library (like [vida.io](https://vida.io/), [Lyra](http://idl.cs.washington.edu/projects/lyra/), [nvd3](http://nvd3.org/)). – meetamit May 01 '14 at 22:13
  • @meetamit thanks for sharing the links. Yep, I'm very aware, that's a huge task, just hoping someone's already implemented it. – RInatM May 03 '14 at 07:54

2 Answers2

3

If the comment have to be done ON a point, you could think to organize data in a json such as

{
  "x":10, 
  "y":20, 
  "comments":[
               {
               "name":"Bob", 
               "content":"Was all conditions normal for this observation?",
               "replies":[
                           {
                            "name":"John",
                            "content":"That's just my cat who ran over keyboard",
                            "replies":null
                            }
                         ]
               },
               {
               "name":"indy", 
               "content":"ok for me",
               "replies":null
               }
             ]
}

so that the "comments" section can be filled by clicking the point (let's say a circle), in a way like

d3.selectAll("circle") // data are already bind here providing the d.x and d.y values
  .on("click",funtion(d){
      d3.select("#node_where_I_want_the_comment_form")
        .append("form") //... the user sets name and content
})

and then setting d.comment= with the name and the contents. It is not straightforward, but I suggest to use https://www.mongodb.org/ to store this kind of schemaless data. Look:

http://docs.mongodb.org/ecosystem/use-cases/storing-comments/

leonard vertighel
  • 1,058
  • 1
  • 18
  • 37
2

For those interested, I finally found what I've been looking for -

This is the concept - http://courses.cs.washington.edu/courses/cse512/14wi/lectures/CSE512-Collaboration.pdf and here is prototype - sense.us

RInatM
  • 1,208
  • 1
  • 17
  • 39