class (exports ? this).DragAndDropOrClickToVisualize
  constructor: (@originViz) ->class (exports ? this).DragAndDropOrClickToVisualize
  constructor: (@originViz) ->@originViz has .formurlaManager and .noodb and .rootPanel properties
    @rootPanel = @originViz.formurlaManager.rootPanel
  click: (evt, ui) =>@draggeeDescription = @originViz.describeDraggable(evt.toElement)
    @gatherDescription(evt)
    @originViz.noodb.log.info "KWARGS:",@originViz.kwargs,"\nDESC:",@draggeeDescription
    @showThingAtFracEdge(@draggeeDescription)
  drag: (evt, ui) =>
    @gatherDescription(evt)
    @originViz.noodb.log.info "KWARGS:",@originViz.kwargs,"DESC:",@draggeeDescription
    @rootPanel.show_drop_zones
      drop_handler: @drop
  drop: (evt, ui) =>
    evt.stopPropagation()
    if evt.target?
      handle_elem = evt.target
      edge_id = handle_elem.dataset.edge # might be empty
      frac_id = handle_elem.parentElement.getAttribute('id')
      if ui.helper?
        $(ui.helper).remove()
      @showThingAtFracEdge(@draggeeDescription, frac_id, edge_id)
  gatherDescription: (evt) ->
    sourceElem = evt.toElement
    if evt.type is 'click'
      sourceElem = evt.target
    else
      sourceElem = evt.originalEvent.target
    @draggeeDescription = @originViz.describeDraggable(sourceElem)
  showThingAtFracEdge: (desc, frac_id, edge_id) ->
    @rootPanel.hide_drop_zones()
    @originViz.formurlaManager.visualizeDescriptionAtFracSide(desc, frac_id, edge_id)