// This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. // // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // the compiled file. // // WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD // GO AFTER THE REQUIRES BELOW. // //= require jquery //= require jquery_ujs // require bootstrap-transition // require bootstrap-affix // require bootstrap-alert // require bootstrap-button // require bootstrap-carousel // require bootstrap-collapse // require bootstrap-dropdown // require bootstrap-modal // require bootstrap-scrollspy // require bootstrap-tab // require bootstrap-tooltip // require bootstrap-popover // require bootstrap-typeahead //= require bootstrap //= require qwaiter //= require supplier/order //= require mustache //= require faye //= require_directory . //= require_self var path_mapping = { user_root: '/index', join_occupied_table: '/join_occupied_table', list_products_for_table: '/list_products_for_table', list_products: '/list_products', active_list: '/active_list', history_list: '/history_list', obtain_token: '/obtain_token', lists_history: '/list_history' } var $translations = { en: { messages: <%= I18n.t('messages', locale: :en).to_json %>, confirmations: { }, list_needs_help: { help_is_on_its_way: 'Help is already on its way', title: 'Request a waiter', content: 'Request a waiter to your table' }, list_needs_payment: { payment_already_requested: 'You already asked for the bill', title: 'Ask for the check', content: 'Do you want to pay?' }, selected_products: { order: 'Order', clear: 'Clear' }, join_request: { title: 'Join request', body: '%{email} wants to join the table', reject: 'Reject', approve: 'Approve', waiting_for_confirmation: 'Waiting for approval of the person on this table...' }, move_table: { cannot_move_to_occupied_table: 'You cannot move to an occupied table', moved_to_another_table: 'The table is changed.', confirmation_title: 'Move to another table?', confirmation_body: 'Are you sure you want to move to another table?' }, models: <%= I18n.t('activemodel.models', locale: :en).to_json %>, attributes: <%= I18n.t('activemodel.attributes', locale: :en).to_json %>, <%= I18n.t('user', locale: :en).to_json[1..-2] %> }, nl: { messages: <%= I18n.t('messages', locale: :nl).to_json %>, confirmations: { }, list_needs_help: { help_is_on_its_way: 'Er wordt al iemand naar je tafel gestuurd', title: 'Ik heb een vraag', content: 'Wil je een vraag stellen?' }, list_needs_payment: { payment_already_requested: 'De rekening is reeds gevraagd', title: 'Vraag om de rekening', content: 'Wil je betalen?' }, selected_products: { order: 'Bestellen', clear: 'Leegmaken' }, join_request: { title: 'Lijst deling', body: '%{email} wil ook op jouw lijst bestellen', reject: 'Afwijzen', approve: 'Toestaan', waiting_for_confirmation: 'Wachten op toestemming van huidige gebruikers om hier te kunnen bestellen...' }, move_table: { cannot_move_to_occupied_table: 'Je kan niet verhuizen naar een tafel die reeds gebruikt wordt.', moved_to_another_table: 'De tafel is gewijzigd.', confirmation_title: 'Naar een andere tafel verhuizen?', confirmation_body: 'Ben je aan een andere tafel gaan zitten?' }, models: <%= I18n.t('activemodel.models', locale: :nl).to_json %>, attributes: <%= I18n.t('activemodel.attributes', locale: :nl).to_json %>, <%= I18n.t('user', locale: :nl).to_json[1..-2] %> } } function redirect_to(mapping, variables){ variables || (variables = {}); var vars = []; for(var name in variables){ vars.push(name + '=' +variables[name]); Qstorage.setItem(name, variables[name]); } window.location = QMobile.root_url() + path_mapping[mapping] + '.html' } function direct_to_site(mapping, variables){ variables || (variables = {}); var vars = [] for(var name in variables){ vars.push(name + '=' +variables[name]) } window.location = data_host + path_mapping[mapping] + '.html?' + vars.join('&') } function currency(num) { return Qwaiter.currency(num); } String.prototype.capitalize = function() { return this.charAt(0).toUpperCase() + this.slice(1); } function t(path, vars){ vars || (vars = {}); var parts = path.split('.'); var accessor = '$translations.'+$locale+'["' + parts.join('"]["')+ '"]'; var result; try{ result = eval(accessor); } catch(err){ result = parts[parts.length - 1].capitalize(); } if(!result) return parts[parts.length - 1].capitalize(); $.each(vars, function(v, value){ result = result.replace('%{'+v+'}', value)}); return result; } $.ajaxSetup({ error: function(xhr, ajaxOptions, error, another){ if(xhr.status == 401){ redirect_to('obtain_token'); }else if(xhr.status == 0){ QMobile.connection_problem(); } } }); $(function(){ $locale = Qstorage.getItem('locale') || 'en'; if(Qstorage.getItem('message')){ var container = $('.alert-success'); container.find('div').text($translations[$locale]['messages'][Qstorage.getItem('message')]); container.show(); Qstorage.removeItem('message'); } if(Qstorage.getItem('list_closed')){ var container = $('.alert-error'); container.find('div').text($translations[$locale]['messages']['the_list_has_been_closed']); container.show(); Qstorage.removeItem('list_closed'); } setTranslations(); }); function setLocale(locale){ Qstorage.setItem('locale', locale); $locale = locale; setTranslations(); } function Qupdate(selector){ setTranslations(selector); } function setTranslations(selector){ if(selector){ $(selector).find('[data-t]').each(function(){$(this).text(t($(this).attr('data-t')))}) }else{ $('[data-t]').each(function(){$(this).text(t($(this).attr('data-t')))}) } }