FAILED EXPERIMENT!!!!!
Post mortem:
A simplified version of DragAndDropThing (dnd.coffee) was used instead.
It turned out this DCI version was hard to make work because there
was a need for methods which accepted parameters which weren’t actors
eg DragAndDropThing.drag(evt, ui) and .drop(evt, ui)
and eunomia (upon which dci.coffee was based) had no facility for that.
Another problem was that the dnd use case looked like it needed to
fill the roles with actors in a gradual way, first in the drag and then
with the drop – and it was unclear how to do that with eunomia.
This is how DCI is interpreted in this Interaction
- The Data is the ontology of the situation.
- The Context is the knowledge object which is the subject of the interaction.
eg
the dragged node
the visualization it is dropped in
the user doing the dropping
- The Roles are things like
eg
Dragee (the resource or value – represented by an on-screen node – being dragged)
Dropper (the User dropping something)
RecievingVisualization (a visualization having a node dropped in it)
- The Interaction
(exports ? this).makeContext = (formurlaManager) ->
dci = require('dci')
roles =
nodeToVisualize: dci.role
toString: () -> this.toString()
nodePlayedPart: dci.role
toString: () -> this.toString()
startDraggingEvent: dci.role
getNodeId: () -> this.target.innerText
dropEvent: dci.role
getEdgeId: () ->
debugger
handle_elem = $(this.toElement)
edge_id = handle_elem.data('edge')
if edge_id?
frac_id = handle_elem.parent().attr('id')
else
console.debug "not dropped on an edge handle"
useCases =
startDragging: (evt, ui) ->
console.log "within startDragging(evt, ui)"
debugger
dropNode: (evt, ui) ->
console.log "within dropNode(evt, ui)"
debugger
return dci.context(roles, useCases, formurlaManager)