UNPKG

listojs

Version:

a package for restaurant management

277 lines (250 loc) 8.06 kB
release = "d1a6f_5"; function setElemValue(id) { try { document.getElementById('text' + id).value = getTextById(id); } catch (err) { console.warn("Could not set text" + id); } } function setElemTextIgnoreErrors(id) { //console.log('Setting text for element with id "text' + id + '" '); try { document.getElementById('text' + id).innerText = getTextById(id); console.log("... text" + id + " was set."); } catch (err) { console.log("--- Could not set text" + id); } } function setElemText(id) { let elem; try { elem = document.getElementById('text' + id); } catch (error) { } if (elem) { try { elem.innerText = getTextById(id); ; } catch (err2) { try { console.error("Inner text for id 'text" + id + "'+could not be set. Try to set text-value for element with id 'text" + id + "': " + JSON.stringify(err2)); setElemValue(id); } catch (err3) { console.error("Could not set text for id 'text" + id + "': " + JSON.stringify(err3)); } } } else { console.error("Localization-ERROR: id 'text" + id + "' does not exist in this document."); } } $(document) .on( 'click', '.set-language', function () { var rowDiv = languageSelect.pre; $ .each( languageSelect.languages, function (key, lang) { rowDiv += `<a href="javascript:void(0)" name="language" class="selectTheLanguage ${languageSelect.styleClass}" data-lang="${lang.id}" data-callback="${languageSelect.callback}" >&nbsp;${lang.name}</a>&nbsp;`; }); rowDiv += languageSelect.suf; $('#' + languageSelect.targetDiv).html(rowDiv); }); /*$(document).on('change', '#langSelect', function () { const radios = document.getElementsByName('language'); let i = 0; const length = radios.length; for (; i < length; i++) { if (radios[i].checked) { // do whatever you want with the checked radio const href = new URL(location.href); href.searchParams.set('lang', radios[i].id); location.href = href.toString(); // only one radio can be logically checked, don't check the rest break; } } });*/ function getUrlVars() { const vars = {}; window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) { vars[key] = value; }); return vars; } function languageIsAvailable(lan) { let found = false; for (let i = 0; i < languageSelect.languages.length; i++) { if (languageSelect.languages[i].id == lan) { found = true; break; } } if (found) return true; else return false; } function getLocale() { const theLanguage = getUrlVars()["lang"]; if ((theLanguage) && (theLanguage.length > 1) && languageIsAvailable(theLanguage)) { locale = theLanguage; console.log("Switched locale via url parameter to '" + locale + "'"); return locale; } if (locale && languageIsAvailable(locale)) { console.log("Locale is already set to: '" + locale + "'"); return locale; } if (navigator.languages !== undefined) { locale = navigator.languages[0].substring(0, 2); console.log("Default locale selected from first element in browser-list: '" + locale + "'"); } else if (navigator.language !== undefined) { console.log("Default browser-locale selected: '" + locale + "'"); locale = navigator.language.substring(0, 2); } if (languageIsAvailable(locale)) return locale; else { console .log("Locale '" + locale + "' is not available for this application. Returning default-locale: 'en'"); locale = "en"; return locale; } } var locale = getLocale(); function getCurrency() { switch (locale) { case ("de"): return " €"; case ("en"): return " €"; case ("it"): return " €"; case ("us"): return " $"; case ("uk"): return " £"; default: return " "; } } function getTextById(id) { const theText = getLocaleTextById(id); if (theText === null) return "ERROR_NLV_" + locale + "_id_" + id; return theText; } function getLocaleTextById(id) { switch (locale) { case ("de"): if (typeof texts_de !== 'undefined') return texts_de["text" + id]; else return null; break; case ("it"): if (typeof texts_it !== 'undefined') return texts_it["text" + id]; else return null; break; case ("us"): if (typeof texts_us !== 'undefined') return texts_us["text" + id]; else return null; break; case ("en"): if (typeof texts_en !== 'undefined') return texts_en["text" + id]; else return null; break; case ("uk"): if (typeof texts_uk !== 'undefined') return texts_uk["text" + id]; else return null; break; default: return "ERROR: NOLOC_" + locale; } } function getText(mnemonic) { const theText = getLocaleTextByMnemonic(mnemonic); if (theText === null) return "ERROR_NLV_" + locale + "_m_" + mnemonic; return theText; } function getLocaleTextByMnemonic(mnemonic) { switch (locale) { case ("de"): if (typeof mnemonics_de !== 'undefined') return mnemonics_de[mnemonic]; else return null; break; case ("it"): if (typeof mnemonics_it !== 'undefined') return mnemonics_it[mnemonic]; else return null; break; case ("us"): if (typeof mnemonics_us !== 'undefined') return mnemonics_us[mnemonic]; else return null; break; case ("en"): if (typeof mnemonics_en !== 'undefined') return mnemonics_en[mnemonic]; else return null; break; case ("uk"): if (typeof mnemonics_uk !== 'undefined') return mnemonics_uk[mnemonic]; else return null; break; default: return "ERROR: NOLOC_" + locale; } }; function setLanguage(id) { locale = id; apiCall_listorante_public_assignedtexts(getLayoutId(), function (data) { for (let k = 0; k < data.count; k++) { let languageElement = document.getElementById(data.rows[k].s[0]); if (languageElement) languageElement.innerText = data.rows[k].s[3]; } if (languageSelect.preCallback) { languageSelect.preCallback(); } setTexts(); if (getUrlVars()['lang']) { const href = new URL(location.href); href.searchParams.set('lang', id); location.href = href.toString(); } if (languageSelect.postCallback) { languageSelect.postCallback(); } }, function (err) { showHttpErrorMessage("main-content", err); }); } jQuery(document) .on( 'click', '.selectTheLanguage', function () { const id = $(this).attr('data-lang'); const func = $(this).attr('data-languageCallBackFunction'); setLanguage(id, func); });