settings.coffee 1.0 KB

123456789101112131415161718192021222324252627
  1. STORAGE_NAME = 'tvgids-channels'
  2. visible = if localStorage.hasOwnProperty(STORAGE_NAME) \
  3. then localStorage.getItem(STORAGE_NAME).split(',') \
  4. else _.pluck(CHANNELS, 'id')
  5. _.each CHANNELS, (channel) ->
  6. is_visible = _.contains(visible, channel.id)
  7. input = $('<input type="checkbox" name="channels[]" value="' + channel.id + '">')
  8. input.attr('checked', is_visible)
  9. input.change(-> $(@).parent().toggleClass('disabled', not $(@).is(':checked')))
  10. input.change(-> $('#select-channels').submit())
  11. elem = $('<label/>').html(channel.name)
  12. elem.prepend(input)
  13. elem.toggleClass('disabled', not is_visible)
  14. elem.appendTo('#select-channels .options')
  15. $('#select-channels').submit (e) ->
  16. e.preventDefault()
  17. selected = ($(i).val() for i in $('input', @) when $(i).is(':checked'))
  18. localStorage.setItem(STORAGE_NAME, selected.join(','))
  19. setall = (c) -> $('#select-channels input').prop('checked', c).change()
  20. $('#select-all').click -> setall(true)
  21. $('#select-none').click -> setall(false)