Widget:PlaceNamesCharts: Difference between revisions
From International Robin Hood Bibliography
mNo edit summary |
mNo edit summary |
||
(9 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<noinclude><div class="no-img">This widget generates charts on landing pages. It takes no parameters.</div></noinclude><includeonly> | <noinclude><div class="no-img">This widget generates charts on landing pages. It takes no parameters.</div></noinclude><includeonly><script> | ||
<script> | |||
//Timeline widget | //Timeline widget | ||
(function() { | (function() { | ||
Line 7: | Line 6: | ||
window.IRHB.timeline = {}; | window.IRHB.timeline = {}; | ||
var t = window.IRHB.timeline; | var t = window.IRHB.timeline; | ||
window.IRHB.get = window.IRHB.get || function get (elem) { | |||
if (typeof elem === "string") { | |||
elem = document.getElementById(elem); | |||
} | |||
return elem; | |||
}; | |||
var get = window.IRHB.get; | |||
Line 34: | Line 41: | ||
} | } | ||
var pText = "<div class='chrtHead'>Timeline</div>"; | var pText = "<div class='chrtHead'>Timeline</div>"; | ||
var curCentury = 0, cText = "", cTotal; | |||
for (var prop in pages) { | for (var prop in pages) { | ||
if (pages.hasOwnProperty(prop)) { | if (pages.hasOwnProperty(prop)) { | ||
var | var century = getCentury(prop); | ||
if (century !== curCentury) { | |||
if (curCentury !== 0) { | |||
var cntStr = curCentury + (curCentury !== "21" ? "th" : "st") + " Cent."; | |||
var cHead = "<div class='tLnCnt' id='c" + curCentury + "'><div>" + cntStr + " (" + cTotal + ")</div>"; | |||
pText += cHead + "<div>" + cText + "</div></div>"; | |||
} | |||
cTotal = 0; | |||
curCentury = century; | |||
cText = ""; | |||
} | |||
var nPages = pages[prop].length; | var nPages = pages[prop].length; | ||
cTotal += nPages; | |||
var decStr = prop + "–" + String((parseInt(prop) + 9)).substring(2) + " (" + nPages + ")"; | |||
cText += "<div class='tLnDec' id='i" + prop + "'><div>" + decStr + "</div><ul>"; | |||
for (var i = 0; i < nPages; i++) { | for (var i = 0; i < nPages; i++) { | ||
cText += "<li class='tLnItem'><span>" + pages[prop][i].year + " – " + pages[prop][i].page + "</span><div></div></li>"; | |||
} | } | ||
cText += "</ul></div>" | |||
} | } | ||
} | } | ||
var cntStr = curCentury + (curCentury !== "21" ? "th" : "st") + " Cent."; | |||
var cHead = "<div class='tLnCnt' id='c" + curCentury + "'><div>" + cntStr + " (" + cTotal + ")</div>"; | |||
pText += cHead + "<div>" + cText + "</div></div>"; | |||
elem.innerHTML = pText; | elem.innerHTML = pText; | ||
var centuries = get("tline").getElementsByClassName("tLnCnt"); | |||
var nCnts = centuries.length; | |||
for (var i = 0; i < nCnts; i++) { | |||
initDiv(centuries[i]); | |||
} | |||
var decades = get("tline").getElementsByClassName("tLnDec"); | var decades = get("tline").getElementsByClassName("tLnDec"); | ||
var nDecs = decades.length; | var nDecs = decades.length; | ||
Line 68: | Line 97: | ||
}; | }; | ||
var getDecade = t.getDecade; | var getDecade = t.getDecade; | ||
t.getCentury = function(decade) { | |||
var century = parseInt(decade / 100) + 1; | |||
return century; | |||
}; | |||
var getCentury = t.getCentury; | |||
Line 110: | Line 146: | ||
var t = window.IRHB.timeline; | var t = window.IRHB.timeline; | ||
var get = window.IRHB.get; | |||
var chartOptions = { | var chartOptions = { | ||
Line 160: | Line 197: | ||
}; | }; | ||
function replaceAll (str, find, replacement) { | |||
return str.replace(new RegExp(escapeRegEx(find), 'g'), replacement); | return str.replace(new RegExp(escapeRegEx(find), 'g'), replacement); | ||
}; | }; | ||
escapeRegEx | function escapeRegEx (str) { | ||
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); | return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"); | ||
}; | }; | ||
Line 335: | Line 365: | ||
res = res[Object.keys(res)[0]];//First property in "res.query.results" | res = res[Object.keys(res)[0]];//First property in "res.query.results" | ||
var page = res.fulltext; | var page = res.fulltext; | ||
var firstRec = res.printouts.Pnfirstrecord; | var firstRec = res.printouts.Pnfirstrecord; | ||
var dec = t.getDecade(firstRec); | var dec = t.getDecade(firstRec); | ||
Line 350: | Line 379: | ||
var txt = "<div class='cardText'><table>"; | var txt = "<div class='cardText'><table>"; | ||
var safePage = page.replace("'", "%27"); | var safePage = page.replace("'", "%27"); | ||
txt += "<tr><td>Page</td><td><a href='https://www.irhb.org/wiki/index.php/" + | txt += "<tr><td>Page</td><td><a href='https://www.irhb.org/wiki/index.php/" + safePage + "'>" + page + "</a></td></tr>"; | ||
var lt = res.printouts.Geopoint[0] ? res.printouts.Geopoint[0].lat : "?"; | var lt = res.printouts.Geopoint[0] ? res.printouts.Geopoint[0].lat : "?"; | ||
var ln = res.printouts.Geopoint[0] ? res.printouts.Geopoint[0].lon : "?"; | var ln = res.printouts.Geopoint[0] ? res.printouts.Geopoint[0].lon : "?"; | ||
Line 425: | Line 454: | ||
})(); | })(); | ||
</script> | </script></includeonly> | ||
</includeonly> |
Revision as of 10:40, 6 June 2019
This widget generates charts on landing pages. It takes no parameters.