Open main menu

Changes

MediaWiki:Common.js

2,443 bytes removed, 19:44, 8 March 2021
no edit summary
$(function () {
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } // =====================JAVASCRIPT AREA=====================// configuration var let colorForSpecialElements = '#933221' ; // can be one of: <ro> <hu> <en> var let configuredFor = 'ro'; var let roNWTURL = 'http://localhost:3001/ro/'; var let huNWTURL = 'http://localhost:3001/hu/'; var let enNWTURL = 'http://localhost:3001/en/' ; // DOM side effects var verses = Array.prototype.slice.call( document.getElementsByClassName("bible-verse"), 0 ); verses.forEach(verse => { verse.addEventListener("mouseover", () => { verse.style.cursor = "pointer"; }); }); verses.forEach(verse => { verse.addEventListener("click", /*#__PURE__*/_asyncToGenerator(function* () { toggleState(verse) ;  if (areVersesAlreadyFetched(verse)) { return; } else { verse.setAttribute('loaded', true); let newLis = yield createDinamicLis(verse); clearAllChildrenAndAddElementsToParrent(verse.children[2].children[1], newLis); } }));}); function clearAllChildrenAndAddElementsToParrent(parrent, children) { parrent.innerHTML = ''; children.forEach(child => parrent.appendChild(child));} function areVersesAlreadyFetched(verse) { return verse.addEventListenergetAttribute('loaded') == 'true';} function createDinamicLis(_x) { return _createDinamicLis.apply(this, arguments);} function _createDinamicLis() { _createDinamicLis = _asyncToGenerator(function* (verse) { let parsedVerse = verse.children[0].innerText; //let parsedVerse = verse.getAttribute("clickverse")  let ulElement = verse.children[2].children[1]; fetchedVerses = yield fetchNWTVerses(parseVerseAttribute(parsedVerse)); return createLiElements(fetchedVerses, async ulElement); }); return _createDinamicLis.apply(this, arguments);} function createLiElements(fetchedVerses, ul) { let result = []; fetchedVerses.forEach(versesGroup => { let li = document.createElement('li'); li.style.color = colorForSpecialElements; li.style.fontSize = '1.5em'; li.style.textTransform = 'capitalize'; li.style.paddingBottom = '0.3em'; li.innerHTML = versesGroup.book + ' ' + versesGroup.chapter; result.push(li) ; versesGroup.verseElements.forEach(verse => { let li = document.createElement('li'); let hr = document.createElement('hr'); hr.style.borderStyle = 'ridge'; let liContent = ""; verse.forEach(el => { liContent = liContent + el + '<br>'; }); li.innerHTML = liContent; result.push(li); result.push(hr); }); }); return result;} function toggleState(verse){ let verseDisplay = verse.getElementsByClassName("translations-container")[0].style.display; hideAllVerses(verses); verse.getElementsByClassName("translations-container")[0].style.display = renderState(verseDisplay, "block");}
if function hideAllVerses(areVersesAlreadyFetched(verse)elements) { return } else elements.forEach(element => { verse element.setAttributegetElementsByClassName('loaded', true"translations-container"); let newLis = await createDinamicLis(verse) clearAllChildrenAndAddElementsToParrent( verse.children[20].children[1], newLisstyle.display = "none"; ) } }); })
function clearAllChildrenAndAddElementsToParrentrenderState(parrentcurrentState, childrentoggledState) { parrent.innerHTML if (currentState == '' children.forEach(child => parrent.appendChild(child)"none"){ return toggledState; }
function areVersesAlreadyFetched(verse) { return verse.getAttribute('loaded') == 'true'"none"; }
async function createDinamicLisgetVersesFromMainBlock(versemainBlock) { var parsedVerse let result = verse.children[0].innerText; //let parsedVerse = verse.getAttribute changeNumberOfTheFirstVerseWithNumberOne("verse"mainBlock); var ulElement = verse Array.from(mainBlock.children[2]).childrenforEach(verse => { let verseContent = [1];
fetchedVerses if (verse.classList.contains('verse')) { Array.from(verse.children).forEach(child => { if (child.innerText != await fetchNWTVerses'') { verseContent.push(parseVerseAttributestripSymbols(parsedVerse['+', '*'], child.innerText)); } }); changeColorOfVerseNumber(verseContent); return createLiElements result.push(fetchedVerses, ulElementverseContent); } }); return result;}
function createLiElementschangeColorOfVerseNumber(fetchedVerses, ulverseContent) { var result let re = []; fetchedVerses.forEachnew RegExp(versesGroup=> { var li = document.createElement('li') li.style.color = colorForSpecialElements li.style.fontSize = '1.5em' li.style.textTransform = 'capitalize' li.style.paddingBottom = '0.3em' li.innerHTML = versesGroup.book /^\d+|\d+ ' ' \b|\d+ versesGroup.chapter result.push(li) versesGroup.verseElements.forEach(verse => { var li = document.createElement('li') var hr = document.createElement('hr') hr.style.borderStyle = 'ridge' var liContent = "" verse.forEach(el => { liContent = liContent + el + '<br>' }) li.innerHTML ?= liContent result.push(li\w) result.push(hr) }) }/g); return result }//starts with digit, one or more
function toggleState(verse) { var verseDisplay let m = versere.getElementsByClassNameexec("translations-container")verseContent[0].style.display; hideAllVerses(verses); verse.getElementsByClassName("translations-container")[0].style.display = renderState(verseDisplay, "block"); }
function hideAllVerses if (elementsm != null) { elements.forEach((element) verseContent[0] => { elementverseContent[0].getElementsByClassNamereplace("translations-container")m[0]., '<strong style.display = "nonecolor: ' + colorForSpecialElements + '"' + '>' + m[0] + '</strong>'); }) }
function renderStatechangeNumberOfTheFirstVerseWithNumberOne(currentState, toggledStatemainBlock) { if let re = new RegExp(/^\d+|\d+\b|\d+(currentState ?=== "none"\w)/g) { return toggledState } return "none" }; //starts with digit, one or more
function getVersesFromMainBlock let m = re.exec(mainBlock.getElementsByClassName('verse')[0].children[0].innerText) {; var result mainBlock.getElementsByClassName('verse')[0].children[0].innerText = '&nbsp' + mainBlock.getElementsByClassName('verse')[0].children[0].innerText.replace(m[0], 1);}
changeNumberOfTheFirstVerseWithNumberOnefunction getSpecificVerses(mainBlockversesList, arrayOfSpecificVerses){ let result = []; arrayOfSpecificVerses.forEach(verseNumber => { result.push(versesList[verseNumber - 1]); }); return result;} // Bussiness logic
Array.from(mainBlock.children).forEach(verse => {
var verseContent = []
if (verse.classList.contains('verse')) {
Array.fromfunction parseVerseAttribute(verse.childrenverseString).forEach(child => { if (child.innerText ! // 21:1;22:2 let arrayOfGroupsDelimiter = ';' ) { verseContent.push(stripSymbols(['+'; // 21:1-7,'*'], child.innerText)) } })9
changeColorOfVerseNumber let versesGroupsDelimiter = ','; let book = verseString.replace(verseContent/ .*/, ''); let stringWithoutBook = verseString.replace(book, ''); let result = { book: book, groups: processChaptersAndVerses(stringWithoutBook) }; return result;
function processChaptersAndVerses(stringWithoutBook) { let groups = stringWithoutBook.split(arrayOfGroupsDelimiter); let result = []; groups.forEach(group => { result.push(verseContentprocessGroup(group)); } }); return result; }
function changeColorOfVerseNumber if (verseContentverseString.includes(";")) { var re let book = new RegExpverseString.replace(/^\d+|\d+\b|\d+(?=\w).*/g, ''); //starts with digit, one or more var m let stringWithoutBook = reverseString.execreplace(verseContent[0]book, ''); if let groups = stringWithoutBook.split(m != null';') {; verseContent[0] let parsedGroups = verseContent[0]; groups.replaceforEach(m[0], '<strong stylegroup ="color: ' + colorForSpecialElements + '"' + '>' + m[0] + '</strong>'{ parsedGroups.push(createObjectForStringGroup(group)); }); }
function changeNumberOfTheFirstVerseWithNumberOneprocessGroup(mainBlockgroup) { var re let chapter = new RegExp(/^\d+|\d+\b|\d+(?=\w)/g); //starts with digit, one or more var m = re.exec(mainBlockgroup.getElementsByClassNamesplit('verse:')[0].children[0].innerText); mainBlock let verses = group.getElementsByClassNamesplit('verse:')[01].children[0].innerText = '&nbsp' + mainBlock.getElementsByClassName; return { chapter: parseInt('verse'chapter)[0].children[0].innerText.replace, verses: processVersesGroups(m[0], 1verses) }; }
function getSpecificVersesprocessVersesGroups(versesListverses) { let versesGroups = verses.split(', arrayOfSpecificVerses') {; var let result = []; arrayOfSpecificVerses versesGroups.forEach(verseNumber verseGroup => { if (isRangeVerseGroup(verseGroup)) { Array.prototype.push.apply(result, processVerseGroup(verseGroup)); } else { result.push(versesList[verseNumber - 1]processVerseGroup(verseGroup)); } }); return result; }
function processVerseGroup(group) {
if (isSimpleVerseGroup(group)) {
return Number(group);
}
// Bussiness logic function parseVerseAttribute if (isMultipleVerseGroup(verseStringgroup)) { // 21 console.log("Range verse group:1" + group);22:2 var arrayOfGroupsDelimiter = ';' // 21:1-7,9 var versesGroupsDelimiter = ',' }
var book = verseString.replace if (isRangeVerseGroup(/ .*/,''group)){ var stringWithoutBook let parsed = verseStringgroup.replacesplit(book, '-'); let result = [];
var result for (let i = Number(parsed[0]); i <= Number(parsed[1]); i++) { book: book, groups: processChaptersAndVerses result.push(Number(stringWithoutBooki)); } return result
function processChaptersAndVerses(stringWithoutBook) { var groups = stringWithoutBook.split(arrayOfGroupsDelimiter) return result; var esult = [] groups.forEach(group => { result.push(processGroup(group)) }) return result }
if function createObjectForStringGroup(verseStringgroup) { let chapter = Number(group.includessplit(";:")[0]) {; var book let verses = verseStringgroup.replacesplit(/ .*/,''":")[1]; var tringWithoutBook let parsedVerses = verseStringparseVerses(verses); console.replacelog(book, ''); }}
var groups = stringWithoutBook.splitfunction fetchNWTVerses(';'_x2); var parsedGroups = []; groups.forEach(group => { parsedGroups return _fetchNWTVerses.push(createObjectForStringGroupapply(group)this, arguments); }) }
function processGroup_fetchNWTVerses(group) { var chapter _fetchNWTVerses = group.split_asyncToGenerator(function* (verses) { // let roBaseURL = 'https://www.jw.org/ro/biblioteca/biblia/nwt/carti/')[0] var verses if (configuredFor === group.split(':ro')[1]{ URL = roNWTURL; }
return {chapter: parseInt if (chapterconfiguredFor === 'hu'), verses: processVersesGroups(verses)}{ URL = huNWTURL; }
function processVersesGroups if (verses) { var versesGroups configuredFor === verses.split(',en'){ var result URL = []; versesGroups.forEach(verseGroup => { if (isRangeVerseGroup(verseGroup)) { Array.prototype.push.apply(result, processVerseGroup(verseGroup)); } else { result.push(processVerseGroup(verseGroup)) } }) return resultenNWTURL; }
function processVerseGroup(group) { if(isSimpleVerseGroup(group)) { return Number(group) } if(isMultipleVerseGroup(group)) { console let book = verses.log("Range verse group: " + group)book; } if return new Promise(isRangeVerseGroup(group)resolve, reject) => { var parsed = group.split('-') var let result = []; for (var i = Number(parsed[0]); i <= Number(parsed[1]); i++) { result.push(Number(i)) } return result } }
for (let i = 0; i < verses.groups.length; i++) {
let url = URL + book + "/" + verses.groups[i].chapter;
fetch(url).then(response => response.text()).then(data => {
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(data, 'text/html');
return htmlDoc;
}).then(parser => {
let mainBlock = parser.getElementById('bibleText');
function createObjectForStringGroup if (groupverses.groups.length - 1 == i) { var result.push({ book: clearDashSimbolFromInputString(book), chapter = Number: verses.groups[i].chapter, verseElements: getSpecificVerses(group.splitgetVersesFromMainBlock(":"mainBlock), verses.groups[0i].verses) }); resolve(result); var verses = group } else { result.splitpush("{ book:"clearDashSimbolFromInputString(book), chapter: verses.groups[1i].chapter, var parsedVerses = parseVerses verseElements: getSpecificVerses(getVersesFromMainBlock(mainBlock), verses.groups[i].verses) }); } }).catch(error => { console.log(''error); reject(); }); } }); }); return _fetchNWTVerses.apply(this, arguments);}
async function fetchNWTVersesclearDashSimbolFromInputString(versesstring) { // let roBaseURL = 'https://www return string.jw.org/ro/biblioteca/biblia/nwt/carti/' if (configuredFor === 'ro') { URL = roNWTURL } if replaceAll(configuredFor === 'hu-') { URL = huNWTURL } if (configuredFor === , 'en') { URL = enNWTURL; } var book = verses.book
return new Promise(function stripSymbols(resolvesymbolsToBeRemoved, rejectverseElement) { symbolsToBeRemoved.forEach(symbol => { var result verseElement = []verseElement.replaceAll(symbol, ''); }); return verseElement;}
for function isSimpleVerseGroup(let i = 0; i < verses.groups.length; i++group) { if (Number(group)) { var url = URL + book + "/" + verses.groups[i].chapter return true; }
fetch(url) .then(response => response.text()) .then(data => { var parser = new DOMParser() return false; var htmlDoc = parser.parseFromString(data, 'text/html'); return htmlDoc }) .then(parser => { var mainBlock = parser.getElementById('bibleText') if((verses.groups.length -1) == i) { result.push({book: clearDashSimbolFromInputString(book), chapter: verses.groups[i].chapter, verseElements:getSpecificVerses(getVersesFromMainBlock(mainBlock), verses.groups[i].verses)}) resolve(result) } else { result.push({book: clearDashSimbolFromInputString(book), chapter: verses.groups[i].chapter, verseElements:getSpecificVerses(getVersesFromMainBlock(mainBlock), verses.groups[i].verses)}) } }) .catch(error => { console.log(error) reject();
}function isMultipleVerseGroup(group){ } if (group.includes(',')) { }) return true; }
function clearDashSimbolFromInputString(string) { return string.replaceAll('-', ' ')false; }
function stripSymbolsisRangeVerseGroup(symbolsToBeRemoved, verseElementgroup) { symbolsToBeRemoved.forEach if (symbol => { verseElement = verseElementgroup.replaceAllincludes(symbol, '-') }){ return verseElementtrue; }
function isSimpleVerseGroup(group) { if (Number(group)) { return true } return false } function isMultipleVerseGroup(group) { if (group.includes(',')) { return true } return false } function isRangeVerseGroup(group) { if (group.includes('-')) { return true } return false; }//=====================TESTING AREA=====
}());