drag controller and directive