engine/app/assets/javascripts/locomotive/views/sites/domains_view.js.coffee

72 lines
1.6 KiB
CoffeeScript
Raw Normal View History

2011-11-28 21:50:24 +00:00
Locomotive.Views.Site ||= {}
class Locomotive.Views.Site.DomainsView extends Backbone.View
tagName: 'div'
className: 'list'
_entry_views = []
events:
'click .new-entry a.add': 'add_entry'
'keypress .new-entry input[type=text]': 'add_on_entry_from_enter'
2011-11-28 21:50:24 +00:00
render: ->
$(@el).html(ich.domains_list(@model.toJSON()))
@render_entries()
return @
add_entry: (event) ->
event.stopPropagation() & event.preventDefault()
input = @$('.new-entry input[name=domain]')
if input.val() != ''
domain = new Locomotive.Models.Domain name: input.val()
@model.get('domains').push(domain)
@_insert_entry(domain)
@$('ul li.domain:last input[type=text]').editableField()
@$('.empty').hide()
2011-11-28 21:50:24 +00:00
input.val('') # reset for further entries
add_on_entry_from_enter: (event) ->
return if event.keyCode != 13
@add_entry(event)
2011-11-28 21:50:24 +00:00
change_entry: (domain, value) ->
domain.set name: value
remove_entry: (domain) ->
list = _.reject @model.get('domains'), (_domain) => _domain == domain
@model.set domains: list
@$('.empty').show() if @model.get('domains').length == 0
2011-11-28 21:50:24 +00:00
render_entries: ->
if @model.get('domains').length == 0
@$('.empty').show()
else
_.each @model.get('domains'), (domain) =>
_.each @options.errors.domain || [], (message) =>
domain.error = message if message.test /^#{domain.get('name')} /
2011-11-28 21:50:24 +00:00
@_insert_entry(domain)
2011-11-28 21:50:24 +00:00
_insert_entry: (domain) ->
view = new Locomotive.Views.Site.DomainEntryView model: domain, parent_view: @
(@_entry_views ||= []).push(view)
@$('ul').append(view.render().el)