listojs
Version:
a package for restaurant management
277 lines (250 loc) • 8.06 kB
JavaScript
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}" > ${lang.name}</a> `;
});
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);
});