|
|
|
@@ -33,55 +33,33 @@ root.Qsupplier=
|
|
|
|
|
# table.set 'active_list', list if table_list isnt list
|
|
|
|
|
# , 200
|
|
|
|
|
if(e.event == 'list_needs_help')
|
|
|
|
|
if App and list = App.List.findCached(e.data.id)
|
|
|
|
|
list.markNeedsHelp()
|
|
|
|
|
# old stuff
|
|
|
|
|
# $('#list-needs-help-indicator-'+e.data.id).removeClass('hide')
|
|
|
|
|
# $('#list-is-helped-button-'+e.data.id).removeClass('hide')
|
|
|
|
|
# $('.section-table-list-'+e.data.id).addClass('needs_help')
|
|
|
|
|
list.markNeedsHelp() if list = App.List.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
else if(e.event == 'list_needs_payment')
|
|
|
|
|
if App and list = App.List.findCached(e.data.id)
|
|
|
|
|
list.markNeedsPayment()
|
|
|
|
|
# old stuff
|
|
|
|
|
$('#list-needs-payment-indicator-'+e.data.id).removeClass('hide')
|
|
|
|
|
$('.section-table-list-'+e.data.id).addClass('needs_payment')
|
|
|
|
|
list.markNeedsPayment() if list = App.List.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
else if(e.event == 'list_is_paid')
|
|
|
|
|
if list = App.List.findCached(e.data.id)
|
|
|
|
|
list.markIsPaid()
|
|
|
|
|
list.markIsPaid() if list = App.List.findCached(e.data.id)
|
|
|
|
|
else if e.event == 'list_update'
|
|
|
|
|
App.store().pushPayload('list', e.data)
|
|
|
|
|
App.store().findById('list', e.data.list.id).then (list)->
|
|
|
|
|
list.get('table').then (table)->table.set('active_list', list)
|
|
|
|
|
|
|
|
|
|
# if App
|
|
|
|
|
# list = App.List.updateOrAdd(e.data.list)
|
|
|
|
|
else if e.event == 'list_closed'
|
|
|
|
|
if App and list = App.List.findCached(e.data.id)
|
|
|
|
|
list.markClosed()
|
|
|
|
|
$('.list-row-'+e.data.id).remove()
|
|
|
|
|
$('.of-list-'+e.data.id).remove()
|
|
|
|
|
table_list_class = 'section-table-list-'+e.data.id
|
|
|
|
|
$('.'+table_list_class).removeClass('occupied needs_help needs_payment active_order').removeClass(table_list_class)
|
|
|
|
|
else if e.event == 'order_closed'
|
|
|
|
|
order.markClosed() if App and order = App.Order.findCached(e.data.id)
|
|
|
|
|
else if e.event == 'list_helped'
|
|
|
|
|
if App and list = App.List.findCached(e.data.id)
|
|
|
|
|
list.markHelped()
|
|
|
|
|
list.markClosed() if list = App.List.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
else if e.event == 'order_closed'
|
|
|
|
|
order.markClosed() if order = App.Order.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
else if e.event == 'list_helped'
|
|
|
|
|
list.markHelped() if list = App.List.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
# list_id = e.data.id
|
|
|
|
|
# $('#list-needs-help-indicator-'+list_id).addClass('hide')
|
|
|
|
|
# $('#list-is-helped-button-'+list_id).addClass('hide')
|
|
|
|
|
# $('.section-table-list-'+list_id).removeClass('needs_help')
|
|
|
|
|
else if e.event == 'order_being_processed'
|
|
|
|
|
if App and order = App.Order.findCached(e.data.id)
|
|
|
|
|
order.markActive()
|
|
|
|
|
# $('#order-in-process-button-'+e.data.id).hide()
|
|
|
|
|
# $('.order-row-'+e.data.id).removeClass('placed').addClass('active')
|
|
|
|
|
order.markActive() if order = App.Order.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
else if e.event == 'order_being_delivered'
|
|
|
|
|
if App and order = App.Order.findCached(e.data.id)
|
|
|
|
|
order.markDelivered()
|
|
|
|
|
# $('.order-row-'+e.data.id).remove()
|
|
|
|
|
# $('.section-table-list-'+e.data.list_id).removeClass('active_order')
|
|
|
|
|
order.markDelivered() if order = App.Order.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
else if e.event == 'orders_in_process_count'
|
|
|
|
|
$('.supplier-orders-in-process-count-number').text e.data.count
|
|
|
|
|
else if e.event == 'orders_placed_count'
|
|
|
|
@@ -97,166 +75,145 @@ root.Qsupplier=
|
|
|
|
|
new_table.set('active_list', list) # making reverse association
|
|
|
|
|
|
|
|
|
|
else if e.event == 'order_cancelled'
|
|
|
|
|
if App and order = App.Order.findCached(e.data.id)
|
|
|
|
|
order.markCancelled()
|
|
|
|
|
order.markCancelled() if order = App.Order.findCached(e.data.id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# old stuff
|
|
|
|
|
#list = new List(e.data.list)
|
|
|
|
|
#list_row = $('.list-row-'+list.id())
|
|
|
|
|
#list_row.find('.table_number').text(list.table_number()).addClass('changed')
|
|
|
|
|
#list_row.find('.section_title').text(e.data.section_title)
|
|
|
|
|
#order_rows = $('.of-list-'+list.id())
|
|
|
|
|
#order_rows.find('.table_number').text(list.table_number()).addClass('changed')
|
|
|
|
|
#order_rows.find('.section_title').text(e.data.section_title)
|
|
|
|
|
## Move properties from table in section tables view
|
|
|
|
|
#window.last_data = e.data
|
|
|
|
|
#from_table = $('#section-table-'+e.data.from_table_id)
|
|
|
|
|
#to_table = $('#section-table-'+list.table_id())
|
|
|
|
|
#if to_table.length
|
|
|
|
|
#to_table.addClass('section-table-list-'+list.id())
|
|
|
|
|
#to_table.addClass('occupied')
|
|
|
|
|
#to_table.addClass('needs_help') if list.needs_help()
|
|
|
|
|
#to_table.addClass('needs_payment') if list.needs_payment()
|
|
|
|
|
#to_table.addClass('active_order') if list.has_active_orders()
|
|
|
|
|
#from_table.removeClass('occupied needs_help needs_payment active_order section-table-list-'+list.id())
|
|
|
|
|
false
|
|
|
|
|
move_table_to_active_section: (table_id)->
|
|
|
|
|
table_container = $('#section-table-'+table_id)
|
|
|
|
|
section_container = $('.section-tables-active')
|
|
|
|
|
section_container.append(table_container)
|
|
|
|
|
Qsupplier.position_table_in_active_section(section_container, table_container, true)
|
|
|
|
|
|
|
|
|
|
# Set the section id of the table in the database
|
|
|
|
|
$.ajax(
|
|
|
|
|
type: 'PUT',
|
|
|
|
|
url: '/supplier/tables/'+table_container.data('table-id'),
|
|
|
|
|
data: {table: {section_id: current_section_id}},
|
|
|
|
|
dataType: 'json'
|
|
|
|
|
)
|
|
|
|
|
position_table_in_active_section: (section_container, table_container, make_draggable)->
|
|
|
|
|
make_draggable ||= false
|
|
|
|
|
button_container = table_container.find('.action-button-container')
|
|
|
|
|
button_container.html('')
|
|
|
|
|
button_container.append($('<button class="btn btn-warning btn-mini">x</button>').click( -> Qsupplier.move_table_to_inactive_section(table_container.data('table-id')) ))
|
|
|
|
|
position_x = parseFloat(table_container.data('position-x'))
|
|
|
|
|
position_y = parseFloat(table_container.data('position-y'))
|
|
|
|
|
table_container.css('left', section_container.width()*position_x/current_section_width)
|
|
|
|
|
table_container.css('top', section_container.height()*position_y/current_section_height)
|
|
|
|
|
#TODO place element at 0.0 if it happens to be outside the region
|
|
|
|
|
table_container.show()
|
|
|
|
|
table_container.draggable(
|
|
|
|
|
containment: section_container,
|
|
|
|
|
stop: ->
|
|
|
|
|
position_x = current_section_width * $(this).position().left / section_container.width()
|
|
|
|
|
position_y = current_section_height * $(this).position().top / section_container.height()
|
|
|
|
|
table_container.data('position-x', position_x)
|
|
|
|
|
table_container.data('position-y', position_y)
|
|
|
|
|
$.ajax(
|
|
|
|
|
type: 'PUT',
|
|
|
|
|
url: '/supplier/tables/'+table_container.data('table-id'),
|
|
|
|
|
data: {table: {position_x: position_x, position_y: position_y}},
|
|
|
|
|
dataType: 'json'
|
|
|
|
|
)
|
|
|
|
|
) if make_draggable
|
|
|
|
|
move_table_to_inactive_section: (table_id)->
|
|
|
|
|
table_container = $('#section-table-'+table_id)
|
|
|
|
|
table_container.css('left', 'auto')
|
|
|
|
|
table_container.css('top', 'auto')
|
|
|
|
|
section_container = $('.section-tables-inactive')
|
|
|
|
|
section_container.prepend(table_container)
|
|
|
|
|
button_container = table_container.find('.action-button-container')
|
|
|
|
|
button_container.html('')
|
|
|
|
|
button_container.append($('<button class="btn btn-primary btn-mini">+</button>').click( -> Qsupplier.move_table_to_active_section(table_container.data('table-id')) ))
|
|
|
|
|
#TODO make ajax call safe
|
|
|
|
|
$.ajax(
|
|
|
|
|
type: 'PUT',
|
|
|
|
|
url: '/supplier/tables/'+table_container.data('table-id'),
|
|
|
|
|
data: {table: {section_id: ''}},
|
|
|
|
|
dataType: 'json'
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
load_active_lists: () ->
|
|
|
|
|
$.get('/supplier/active_lists.json?section_id='+($('.section_selector').val() || ''), (res) =>
|
|
|
|
|
body = $('#active-lists-table tbody')
|
|
|
|
|
body.find('tr').remove()
|
|
|
|
|
foot = $('#active-lists-table tfoot')
|
|
|
|
|
for list in res.lists
|
|
|
|
|
body.append @mustache('#active-list-template', new List(list))
|
|
|
|
|
)
|
|
|
|
|
mark_list_as_helped: (list_id)->
|
|
|
|
|
$.post('/supplier/mark_list_as_helped', {list_id: list_id}, (res)->
|
|
|
|
|
)
|
|
|
|
|
close_list: (list_id)->
|
|
|
|
|
$.post('/supplier/close_list', {list_id: list_id}, (res)->
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
load_active_orders: () ->
|
|
|
|
|
$.get('/supplier/active_orders.json?section_id='+($('.section_selector').val() || ''), (res) =>
|
|
|
|
|
body = $('#active-orders-table tbody')
|
|
|
|
|
body.html('')
|
|
|
|
|
foot = $('#active-orders-table tfoot')
|
|
|
|
|
return unless res.orders
|
|
|
|
|
for order in res.orders
|
|
|
|
|
ord = new Order(order)
|
|
|
|
|
body.append @mustache('#active-order-template', ord)
|
|
|
|
|
)
|
|
|
|
|
mark_order_in_process: (order_id)->
|
|
|
|
|
$.post('/supplier/mark_order_in_process', {order_id: order_id})
|
|
|
|
|
mark_order_delivered: (order_id)->
|
|
|
|
|
$.post('/supplier/order_is_delivered', {order_id: order_id})
|
|
|
|
|
|
|
|
|
|
load_list: (list_id) ->
|
|
|
|
|
$.get(data_host + '/supplier/lists/'+list_id+'.json?old_style=1', (res) ->
|
|
|
|
|
body = $('#list-table tbody')
|
|
|
|
|
foot = $('#list-table tfoot')
|
|
|
|
|
Qsupplier.build_list_table(body, foot, res)
|
|
|
|
|
)
|
|
|
|
|
build_list_table: (body, foot, res) ->
|
|
|
|
|
body.html('')
|
|
|
|
|
return unless res.orders
|
|
|
|
|
for order in res.orders
|
|
|
|
|
body.append @mustache('#list-order-template', new Order(order))
|
|
|
|
|
foot.find('.list-total').html(currency(res.total_amount))
|
|
|
|
|
update_section_tables_view: (section_id)->
|
|
|
|
|
$.get(data_host + '/supplier/sections/'+section_id+'/tables_view.json', (res)->
|
|
|
|
|
for table in res.tables
|
|
|
|
|
to = $('#section-table-'+table._id)
|
|
|
|
|
if table.occupied then to.addClass('occupied') else to.removeClass('occupied')
|
|
|
|
|
if table.needs_help then to.addClass('needs_help') else to.removeClass('needs_help')
|
|
|
|
|
if table.needs_payment then to.addClass('needs_payment') else to.removeClass('needs_payment')
|
|
|
|
|
if table.active_order then to.addClass('active_order') else to.removeClass('active_order')
|
|
|
|
|
|
|
|
|
|
)
|
|
|
|
|
add_tables_to_active_section: ->
|
|
|
|
|
number_start = $('#add-tables-number-start').val()
|
|
|
|
|
number_end = $('#add-tables-number-end').val()
|
|
|
|
|
$.post('/supplier/sections/'+current_section_id+'/add_tables', {number_start: number_start, number_end: number_end}, -> window.location.reload())
|
|
|
|
|
#$('#add-tables-modal').modal('hide')
|
|
|
|
|
false
|
|
|
|
|
arrange_tables_of_active_section: ->
|
|
|
|
|
option = $('input[name=arrange-table-option]:checked').val()
|
|
|
|
|
by_row_count = parseInt($('#arrange-tables-by-row-count').val())
|
|
|
|
|
by_column_count = parseInt($('#arrange-tables-by-column-count').val())
|
|
|
|
|
if(option == "by_row")
|
|
|
|
|
return @alert(t('section.arrange_tables.by_row_no_row_count')) unless by_row_count && by_row_count > 0
|
|
|
|
|
if(option == "by_column")
|
|
|
|
|
return @alert(t('section.arrange_tables.by_column_no_column_count')) unless by_column_count && by_column_count > 0
|
|
|
|
|
$.post '/supplier/sections/'+current_section_id+'/arrange_tables', {option: option, row_count: by_row_count, column_count: by_column_count}, (response)=>
|
|
|
|
|
if response.ok then window.location.reload() else @alert(t(response.message))
|
|
|
|
|
false
|
|
|
|
|
mustache: (selector, locals)->
|
|
|
|
|
html = $(selector).html()
|
|
|
|
|
return '' unless html
|
|
|
|
|
template = Handlebars.compile(html)
|
|
|
|
|
container = $('<div></div>')
|
|
|
|
|
container.html(template(locals))
|
|
|
|
|
setTranslations(container)
|
|
|
|
|
return container.html()
|
|
|
|
|
locs = $.extend(locals,
|
|
|
|
|
currency: ->
|
|
|
|
|
(val)->
|
|
|
|
|
currency(Mustache.render(val, this))
|
|
|
|
|
)
|
|
|
|
|
Mustache.to_html(html, locs)
|
|
|
|
|
alert: Qwaiter.alert
|
|
|
|
|
# move_table_to_active_section: (table_id)->
|
|
|
|
|
# table_container = $('#section-table-'+table_id)
|
|
|
|
|
# section_container = $('.section-tables-active')
|
|
|
|
|
# section_container.append(table_container)
|
|
|
|
|
# Qsupplier.position_table_in_active_section(section_container, table_container, true)
|
|
|
|
|
#
|
|
|
|
|
# # Set the section id of the table in the database
|
|
|
|
|
# $.ajax(
|
|
|
|
|
# type: 'PUT',
|
|
|
|
|
# url: '/supplier/tables/'+table_container.data('table-id'),
|
|
|
|
|
# data: {table: {section_id: current_section_id}},
|
|
|
|
|
# dataType: 'json'
|
|
|
|
|
# )
|
|
|
|
|
# position_table_in_active_section: (section_container, table_container, make_draggable)->
|
|
|
|
|
# make_draggable ||= false
|
|
|
|
|
# button_container = table_container.find('.action-button-container')
|
|
|
|
|
# button_container.html('')
|
|
|
|
|
# button_container.append($('<button class="btn btn-warning btn-mini">x</button>').click( -> Qsupplier.move_table_to_inactive_section(table_container.data('table-id')) ))
|
|
|
|
|
# position_x = parseFloat(table_container.data('position-x'))
|
|
|
|
|
# position_y = parseFloat(table_container.data('position-y'))
|
|
|
|
|
# table_container.css('left', section_container.width()*position_x/current_section_width)
|
|
|
|
|
# table_container.css('top', section_container.height()*position_y/current_section_height)
|
|
|
|
|
# #TODO place element at 0.0 if it happens to be outside the region
|
|
|
|
|
# table_container.show()
|
|
|
|
|
# table_container.draggable(
|
|
|
|
|
# containment: section_container,
|
|
|
|
|
# stop: ->
|
|
|
|
|
# position_x = current_section_width * $(this).position().left / section_container.width()
|
|
|
|
|
# position_y = current_section_height * $(this).position().top / section_container.height()
|
|
|
|
|
# table_container.data('position-x', position_x)
|
|
|
|
|
# table_container.data('position-y', position_y)
|
|
|
|
|
# $.ajax(
|
|
|
|
|
# type: 'PUT',
|
|
|
|
|
# url: '/supplier/tables/'+table_container.data('table-id'),
|
|
|
|
|
# data: {table: {position_x: position_x, position_y: position_y}},
|
|
|
|
|
# dataType: 'json'
|
|
|
|
|
# )
|
|
|
|
|
# ) if make_draggable
|
|
|
|
|
# move_table_to_inactive_section: (table_id)->
|
|
|
|
|
# table_container = $('#section-table-'+table_id)
|
|
|
|
|
# table_container.css('left', 'auto')
|
|
|
|
|
# table_container.css('top', 'auto')
|
|
|
|
|
# section_container = $('.section-tables-inactive')
|
|
|
|
|
# section_container.prepend(table_container)
|
|
|
|
|
# button_container = table_container.find('.action-button-container')
|
|
|
|
|
# button_container.html('')
|
|
|
|
|
# button_container.append($('<button class="btn btn-primary btn-mini">+</button>').click( -> Qsupplier.move_table_to_active_section(table_container.data('table-id')) ))
|
|
|
|
|
# #TODO make ajax call safe
|
|
|
|
|
# $.ajax(
|
|
|
|
|
# type: 'PUT',
|
|
|
|
|
# url: '/supplier/tables/'+table_container.data('table-id'),
|
|
|
|
|
# data: {table: {section_id: ''}},
|
|
|
|
|
# dataType: 'json'
|
|
|
|
|
# )
|
|
|
|
|
#
|
|
|
|
|
# load_active_lists: () ->
|
|
|
|
|
# $.get('/supplier/active_lists.json?section_id='+($('.section_selector').val() || ''), (res) =>
|
|
|
|
|
# body = $('#active-lists-table tbody')
|
|
|
|
|
# body.find('tr').remove()
|
|
|
|
|
# foot = $('#active-lists-table tfoot')
|
|
|
|
|
# for list in res.lists
|
|
|
|
|
# body.append @mustache('#active-list-template', new List(list))
|
|
|
|
|
# )
|
|
|
|
|
# mark_list_as_helped: (list_id)->
|
|
|
|
|
# $.post('/supplier/mark_list_as_helped', {list_id: list_id}, (res)->
|
|
|
|
|
# )
|
|
|
|
|
# close_list: (list_id)->
|
|
|
|
|
# $.post('/supplier/close_list', {list_id: list_id}, (res)->
|
|
|
|
|
# )
|
|
|
|
|
#
|
|
|
|
|
# load_active_orders: () ->
|
|
|
|
|
# $.get('/supplier/active_orders.json?section_id='+($('.section_selector').val() || ''), (res) =>
|
|
|
|
|
# body = $('#active-orders-table tbody')
|
|
|
|
|
# body.html('')
|
|
|
|
|
# foot = $('#active-orders-table tfoot')
|
|
|
|
|
# return unless res.orders
|
|
|
|
|
# for order in res.orders
|
|
|
|
|
# ord = new Order(order)
|
|
|
|
|
# body.append @mustache('#active-order-template', ord)
|
|
|
|
|
# )
|
|
|
|
|
# mark_order_in_process: (order_id)->
|
|
|
|
|
# $.post('/supplier/mark_order_in_process', {order_id: order_id})
|
|
|
|
|
# mark_order_delivered: (order_id)->
|
|
|
|
|
# $.post('/supplier/order_is_delivered', {order_id: order_id})
|
|
|
|
|
#
|
|
|
|
|
# load_list: (list_id) ->
|
|
|
|
|
# $.get(data_host + '/supplier/lists/'+list_id+'.json?old_style=1', (res) ->
|
|
|
|
|
# body = $('#list-table tbody')
|
|
|
|
|
# foot = $('#list-table tfoot')
|
|
|
|
|
# Qsupplier.build_list_table(body, foot, res)
|
|
|
|
|
# )
|
|
|
|
|
# build_list_table: (body, foot, res) ->
|
|
|
|
|
# body.html('')
|
|
|
|
|
# return unless res.orders
|
|
|
|
|
# for order in res.orders
|
|
|
|
|
# body.append @mustache('#list-order-template', new Order(order))
|
|
|
|
|
# foot.find('.list-total').html(currency(res.total_amount))
|
|
|
|
|
# update_section_tables_view: (section_id)->
|
|
|
|
|
# $.get(data_host + '/supplier/sections/'+section_id+'/tables_view.json', (res)->
|
|
|
|
|
# for table in res.tables
|
|
|
|
|
# to = $('#section-table-'+table._id)
|
|
|
|
|
# if table.occupied then to.addClass('occupied') else to.removeClass('occupied')
|
|
|
|
|
# if table.needs_help then to.addClass('needs_help') else to.removeClass('needs_help')
|
|
|
|
|
# if table.needs_payment then to.addClass('needs_payment') else to.removeClass('needs_payment')
|
|
|
|
|
# if table.active_order then to.addClass('active_order') else to.removeClass('active_order')
|
|
|
|
|
#
|
|
|
|
|
# )
|
|
|
|
|
# add_tables_to_active_section: ->
|
|
|
|
|
# number_start = $('#add-tables-number-start').val()
|
|
|
|
|
# number_end = $('#add-tables-number-end').val()
|
|
|
|
|
# $.post('/supplier/sections/'+current_section_id+'/add_tables', {number_start: number_start, number_end: number_end}, -> window.location.reload())
|
|
|
|
|
# #$('#add-tables-modal').modal('hide')
|
|
|
|
|
# false
|
|
|
|
|
# arrange_tables_of_active_section: ->
|
|
|
|
|
# option = $('input[name=arrange-table-option]:checked').val()
|
|
|
|
|
# by_row_count = parseInt($('#arrange-tables-by-row-count').val())
|
|
|
|
|
# by_column_count = parseInt($('#arrange-tables-by-column-count').val())
|
|
|
|
|
# if(option == "by_row")
|
|
|
|
|
# return @alert(t('section.arrange_tables.by_row_no_row_count')) unless by_row_count && by_row_count > 0
|
|
|
|
|
# if(option == "by_column")
|
|
|
|
|
# return @alert(t('section.arrange_tables.by_column_no_column_count')) unless by_column_count && by_column_count > 0
|
|
|
|
|
# $.post '/supplier/sections/'+current_section_id+'/arrange_tables', {option: option, row_count: by_row_count, column_count: by_column_count}, (response)=>
|
|
|
|
|
# if response.ok then window.location.reload() else @alert(t(response.message))
|
|
|
|
|
# false
|
|
|
|
|
# mustache: (selector, locals)->
|
|
|
|
|
# html = $(selector).html()
|
|
|
|
|
# return '' unless html
|
|
|
|
|
# template = Handlebars.compile(html)
|
|
|
|
|
# container = $('<div></div>')
|
|
|
|
|
# container.html(template(locals))
|
|
|
|
|
# setTranslations(container)
|
|
|
|
|
# return container.html()
|
|
|
|
|
# locs = $.extend(locals,
|
|
|
|
|
# currency: ->
|
|
|
|
|
# (val)->
|
|
|
|
|
# currency(Mustache.render(val, this))
|
|
|
|
|
# )
|
|
|
|
|
# Mustache.to_html(html, locs)
|
|
|
|
|
# alert: Qwaiter.alert
|
|
|
|
|