class Tawork.Views.TicketView extends Backbone.View events: "click .trigger-event": "trigger_event" "dblclick .ticket-details .panel-heading": "show_edit_form" "click .cancel-edit-form": "cancel_edit_form" initialize: (options = {}) -> @ticket_id = @$el.data("ticket-id") @initialize_user_assignment() @initialize_sortable_tree() @$('textarea').autosize() show_edit_form: -> @$(".ticket-details").hide() @$(".edit-ticket-details").show() cancel_edit_form: -> @$(".edit-ticket-details").hide() @$(".ticket-details").show() false trigger_event: (event) -> # FIXME: this is using a hack right now event_name = $(event.target).data("event") console.log "even here?" closest_ticket_id = $(event.target).closest(".ticket").data("ticket-id") return if @ticket_id != closest_ticket_id event.preventDefault() $.ajax method: "POST" url: "/tickets/#{@ticket_id}/trigger_event" data: event: event_name initialize_user_assignment: -> $input = @$('.user-assignment-tags') return if $input.length == 0 $input.tagsinput( itemText: "name" itemValue: "id" ) $input.tagsinput("input").typeahead source: (query, process) -> processItems = (items) -> texts = [] i = 0 while i < items.length text = items[i].value map[text] = items[i] texts.push text i++ process texts @map = {} map = @map # data = typeahead.source(query) data = $.get('/tickets/user_search', {query: query}, (data) -> processItems(data) ) updater: (text) -> $input.tagsinput('add', @map[text]); matcher: (text) -> text.toLowerCase().indexOf(@query.trim().toLowerCase()) isnt -1 sorter: (texts) -> texts.sort() highlighter: (text) -> regex = new RegExp("(" + @query + ")", "gi") text.replace regex, "$1" assignments = @$el.data("assignments") $.each assignments, (_, assignment) -> $input.tagsinput('add', assignment) $input.on("change", (event) -> $element = $(event.target) return unless $element.data("tagsinput") # $element.tagsinput("items") val = $element.val() val = "" if val is null $input.closest("form").submit() ) initialize_sortable_tree: -> $( "#sortable_#{@ticket_id}" ).nestedSortable handle: ".node-handle" items: "li" start: (e, ui) -> ui.placeholder.height ui.item.height() placeholder: 'ticket-placeholder' isTree: true startCollapsed: false update: (e, ui) -> ticket_id = ui.item.data("ticket-id") $parent = ui.item.parent() parent_id = $parent.closest(".ticket").data("ticket-id") position = $parent.find("> li").index(ui.item.get(0)) $.ajax method: "POST" url: "/tickets/#{ticket_id}/reorder" data: parent_id: parent_id position: position