Open main menu

Changes

MediaWiki:Common.js

2,496 bytes removed, 19:54, 8 March 2021
no edit summary
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 let colorForSpecialElements = '#933221' ; // can be one of: <ro> <hu> <en> let configuredFor = 'ro'; let roNWTURL = 'http://localhost:3001/ro/'; let huNWTURL = 'http://localhost:3001/hu/'; 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.getAttribute('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.addEventListenergetAttribute("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) { let parsedVerse result = verse.children[0]; changeNumberOfTheFirstVerseWithNumberOne(mainBlock); Array.from(mainBlock.innerText //let parsedVerse = versechildren).getAttributeforEach("verse")=> { let ulElement verseContent = verse.children[2].children[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) { let result re = []; fetchedVerses.forEachnew RegExp(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 /^\d+|\d+ ' ' \b|\d+ 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) }\w) }/g); return result }//starts with digit, one or more
function toggleState(verse) { let verseDisplay 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); let 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 => {
let 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(";")) { let re book = new RegExpverseString.replace(/^\d+|\d+\b|\d+(?=\w).*/g, ''); //starts with digit, one or more let m 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) { let re chapter = new RegExp(/^\d+|\d+\b|\d+(?=\w)/g); //starts with digit, one or more let m = regroup.exec(mainBlock.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') {; 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 let arrayOfGroupsDelimiter = ';' // 21:1-7,9 let versesGroupsDelimiter = ',' }
if (isRangeVerseGroup(group)) { let book parsed = verseStringgroup.replacesplit(/ .*/,'-'); let stringWithoutBook result = verseString.replace(book, '')[];
for (let result i = Number(parsed[0]); i <= Number(parsed[1]); i++) { book: book, groups: processChaptersAndVerses result.push(Number(stringWithoutBooki)); } return result
function processChaptersAndVerses(stringWithoutBook) { let groups = stringWithoutBook.split(arrayOfGroupsDelimiter) return result; let result = [] groups.forEach(group => { result.push(processGroup(group)) }) return result }
if function createObjectForStringGroup(verseStringgroup) { let chapter = Number(group.includessplit(";:")[0]) {; let book verses = verseStringgroup.replacesplit(/ .*/,''":")[1]; let stringWithoutBook parsedVerses = verseStringparseVerses(verses); console.replacelog(book, ''); }}
let groups = stringWithoutBook.splitfunction fetchNWTVerses(';'_x2); let parsedGroups = []; groups.forEach(group => { parsedGroups return _fetchNWTVerses.push(createObjectForStringGroupapply(group)this, arguments); }) }
function processGroup_fetchNWTVerses(group) { let chapter _fetchNWTVerses = group.split_asyncToGenerator(function* (':'verses)[0]{ // let verses roBaseURL = group'https://www.splitjw.org/ro/biblioteca/biblia/nwt/carti/' if (configuredFor === ':ro')[1]{ URL = roNWTURL; }
return {chapter: parseInt if (chapterconfiguredFor === 'hu'), verses: processVersesGroups(verses)}{ URL = huNWTURL; }
function processVersesGroups if (verses) { let versesGroups configuredFor === verses.split(',en'){ let 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) => { let parsed = group.split('-') let result = []; for (let 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) { let result.push({ book: clearDashSimbolFromInputString(book), chapter = Number: verses.groups[i].chapter, verseElements: getSpecificVerses(group.splitgetVersesFromMainBlock(":"mainBlock), verses.groups[0i].verses) }); resolve(result); let verses = group } else { result.splitpush("{ book:"clearDashSimbolFromInputString(book), chapter: verses.groups[1i].chapter, let 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; } let book = verses.book
return new Promise(function stripSymbols(resolvesymbolsToBeRemoved, rejectverseElement) { symbolsToBeRemoved.forEach(symbol => { let result verseElement = []verseElement.replaceAll(symbol, ''); }); return verseElement;}
for function isSimpleVerseGroup(let i = 0; i < verses.groups.length; i++group) { if (Number(group)) { let 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 => { let 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; }