|
#= require ../tree_search |
|
|
|
using 'Targetings.MobileOperators' |
|
class Targetings.MobileOperators.Google extends Targetings.TreeSearch |
|
initialize: (@model_name, @button_selector, @regions_selector) -> |
|
@checkbox = $("input[type='checkbox']", @button_selector) |
|
@buttons = $('.radio', @button_selector) |
|
@any = @buttons.first() |
|
@defined = @buttons.last() |
|
@$selector = $('.operators', @button_selector) |
|
|
|
@checkbox.on 'change', (e) => |
|
if $(e.target).is ':checked' |
|
@_unstash_operators() |
|
else |
|
@_stash_operators() |
|
|
|
@any.on 'click', (e) => |
|
unless $(e.target).is('.active') |
|
$(e.target).addClass 'active' |
|
@_stash_operators() |
|
|
|
@defined.on 'click', (e) => |
|
unless $(e.target).is('.active') |
|
$(e.target).addClass 'active' |
|
@_unstash_operators() |
|
|
|
@$('ul').on 'click', @_filter_operators_by_regions |
|
super |
|
|
|
@$('.operators-country').on 'click', -> |
|
$(@).prev().click() |
|
|
|
@$('.operator').on 'click', (e) => |
|
return if $(e.target).is '.toggle-subitems, .country' |
|
@_toggle_operator $(e.currentTarget) |
|
|
|
# по клику на пункт 'Определённый' в 'Канал доступа в интернет' |
|
# раскрываем dropdown |
|
$('.radio:last-child', @button_selector).on 'click', => |
|
$('.token-input-list-umka', @button_selector).click() |
|
|
|
clear_operators: => |
|
@_stash_operators() |
|
@checkbox.prop 'checked', false |
|
|
|
_stash_operators: (e) => |
|
@defined.removeClass 'active' |
|
@$selector.removeClass 'active' |
|
@_stash_checked() |
|
|
|
_unstash_operators: (e) => |
|
@any.removeClass 'active' |
|
@$selector.addClass 'active' |
|
|
|
if @$selector.data('operators_chosen') |
|
@$selector.data('operators_chosen').each (_, operator) => |
|
@_add_token operator |
|
|
|
_stash_checked: => |
|
@$selector.data operators_chosen: @_operators_chosen() |
|
|
|
@_operators_chosen().each (_, operator) => |
|
@_remove operator |
|
|
|
_operators_chosen: => |
|
@$('.operator.active').map -> $(@).data('object') |
|
|
|
_toggle_operator: (operator) => |
|
if operator.is('.active') |
|
@_remove operator.data('object') |
|
else |
|
@_add_token operator.data('object') |
|
|
|
_remove: (operator) -> |
|
@$(".operator.#{operator.id}").removeClass 'active' |
|
@$("#hidden_item_#{operator.id}").remove() |
|
@$("#ul_item_#{operator.id}").remove() |
|
@_check_placeholder() |
|
@$root.trigger 'control:update' |
|
|
|
_add: (operator) -> return |
|
|
|
_regions: => |
|
$(@regions_selector).map -> $(@).data('country') |
|
|
|
_filter_operators_by_regions: => |
|
regions = @_regions() |
|
if regions.length > 0 |
|
@$('.subitems .operator').each -> |
|
if $(@).data('country') in regions |
|
$(@).closest('.operator-item').removeClass 'blocked' |
|
else |
|
$(@).closest('.operator-item').addClass 'blocked' |
|
|
|
_add_token: (operator) => |
|
@$(".operator.#{operator.id}").addClass 'active' |
|
@$('.hidden-inputs').append( |
|
"<input class='tracked-input' type='hidden' |
|
name='#{@model_name}[#{@field_name}][]' |
|
value='#{operator.id}' id='hidden_item_#{operator.id}'>" |
|
) |
|
@$('ul').append( |
|
"<li class='token-input-token-umka' id='ul_item_#{operator.id}'> |
|
<p>#{operator.name} #{operator.country || '' }</p> |
|
<span class='token-input-delete-token-umka remove' |
|
data-item-id='#{operator.id}'>×</span> |
|
</li>" |
|
) |
|
@_check_placeholder() |
|
@$root.trigger 'control:update' |