template_widget.js.coffee 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. $ = jQuery.sub()
  2. class App.TemplateUI extends App.Controller
  3. events:
  4. 'click [data-type=template_save]': 'create',
  5. 'click [data-type=template_select]': 'select',
  6. 'click [data-type=template_delete]': 'delete',
  7. constructor: ->
  8. super
  9. # fetch item on demand
  10. fetch_needed = 1
  11. if App.Collection.count( 'Template' ) > 0
  12. fetch_needed = 0
  13. @render()
  14. if fetch_needed
  15. @reload()
  16. reload: =>
  17. App.Template.bind 'refresh', =>
  18. @log 'loading....'
  19. @render()
  20. App.Template.unbind 'refresh'
  21. App.Collection.fetch( 'Template' )
  22. render: =>
  23. @configure_attributes = [
  24. { name: 'template_id', display: '', tag: 'select', multiple: false, null: true, nulloption: true, relation: 'Template', class: 'span2', default: @template_id },
  25. ]
  26. template = {}
  27. if @template_id
  28. template = App.Collection.find( 'Template', @template_id )
  29. # insert data
  30. @html App.view('template_widget')(
  31. template: template,
  32. )
  33. new App.ControllerForm(
  34. el: @el.find('#form-template'),
  35. model: { configure_attributes: @configure_attributes, className: '' },
  36. autofocus: false,
  37. )
  38. delete: (e) =>
  39. e.preventDefault()
  40. # get params
  41. params = @formParam(e.target)
  42. template = App.Collection.find( 'Template', params['template_id'] )
  43. if confirm('Sure?')
  44. template.destroy()
  45. @template_id = undefined
  46. @render()
  47. select: (e) =>
  48. e.preventDefault()
  49. # get params
  50. params = @formParam(e.target)
  51. template = App.Collection.find( 'Template', params['template_id'] )
  52. App.Event.trigger 'ticket_create_rerender', template.attributes()
  53. create: (e) =>
  54. e.preventDefault()
  55. # get params
  56. params = @formParam(e.target)
  57. name = params['template_name']
  58. # delete params['template_name']
  59. template = App.Collection.findByAttribute( 'Template', 'name', name )
  60. if !template
  61. template = new App.Template
  62. options = params
  63. template.load(
  64. name: params['template_name']
  65. options: options
  66. )
  67. # validate form
  68. errors = template.validate()
  69. # show errors in form
  70. if errors
  71. @log 'error new', errors
  72. else
  73. ui = @
  74. template.save(
  75. success: ->
  76. ui.template_id = @.id
  77. ui.render()
  78. error: =>
  79. @log 'save failed!'
  80. )