settings.coffee 1.2 KB

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