// This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // a // 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 twitter/bootstrap //= require twitter/bootstrap/bootstrap-transition //= require twitter/bootstrap/bootstrap-alert //= require twitter/bootstrap/bootstrap-modal //= require twitter/bootstrap/bootstrap-dropdown //= require twitter/bootstrap/bootstrap-scrollspy //= require twitter/bootstrap/bootstrap-tab //= require twitter/bootstrap/bootstrap-tooltip //= require twitter/bootstrap/bootstrap-popover //= require twitter/bootstrap/bootstrap-button //= require twitter/bootstrap/bootstrap-collapse // require twitter/bootstrap/bootstrap-carousel //= require twitter/bootstrap/bootstrap-typeahead //= require twitter/bootstrap/bootstrap-affix //= require qwaiter //= require supplier/order //= require mustache //= require faye //= require_directory . //= require_self var path_mapping = { user_root: '/user/home', join_occupied_table: '/user/join_occupied_table', list_products_for_table: '/user/list_products_for_table', list_products: '/user/list_products', active_list: '/user/active_list', history_list: '/user/history_list', obtain_user_token: '/user/obtain_token' } 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 check', 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' }, 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' }, 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]) } window.location = QMobile.root_url() + path_mapping[mapping] + '.html?' + vars.join('&') } 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){ direct_to_site('obtain_user_token'); }else if(xhr.status == 0){ QMobile.connection_problem(); } } }); function getUrlVars() { if($url_vars) return $url_vars; $url_vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { $url_vars[key] = value; }); return $url_vars; } $(function(){ $locale = QMobile.locale(); if(getUrlVars().message){ var container = $('.alert-success'); // Prepend messages. if there is no path/period specified var message = t((getUrlVars().message.indexOf('.') > -1 ? '' : 'messages.' ) + getUrlVars().message ) container.find('div').text(message); container.show(); } if(getUrlVars().list_closed){ var container = $('.alert-error'); container.find('div').text($translations[$locale]['messages']['the_list_has_been_closed']); container.show(); } $('[data-t]').each(function(){$(this).text(t($(this).attr('data-t')))}) setTranslations(); }); function setLocale(locale){ QMobile.setLocale(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')))}) } }