Widget:PlaceNamesCharts: Difference between revisions

From International Robin Hood Bibliography
mNo edit summary
mNo edit summary
(37 intermediate revisions by the same user not shown)
Line 1: Line 1:
<noinclude><div class="no-img">This widget generates the Google charts on landing pages in the Place-names and Festivals sections of IRHB. 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 type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
//Timeline widget
<script>
(function() {
(function() {
window.IRHB = window.IRHB || {};
window.IRHB = window.IRHB || {};
window.IRHB.charts = window.IRHB.charts || {};
window.IRHB.timeline = {};
window.IRHB.charts.datedItem = false;
var t = window.IRHB.timeline;
window.IRHB.charts.itemWithCentury = false;
 
window.IRHB.charts.container = false;
window.IRHB.get = window.IRHB.get || function get (elem) {
window.IRHB.charts.numCharts = 0;
if (typeof elem === "string") {
window.IRHB.charts.chartData = window.IRHB.charts.chartData || {};
elem = document.getElementById(elem);
window.IRHB.charts.widgets = window.IRHB.charts.widgets || {};
}
window.IRHB.charts.googleVersion = "45";
return elem;
};
var get = window.IRHB.get;
 
function resizeChart () {
t.create = function(elem, callback) {
var nCharts = window.IRHB.charts.numCharts;
var values = elem.firstElementChild.innerHTML.trim();
var cData = window.IRHB.charts.chartData;
values = values.substr(0, values.length - 1);// Remove final comma
for (var i = 0; i < nCharts; i++) {
values = values.replace('"', "").replace('"', "");
var elemId = window.IRHB.charts.container[i].id;
var valuesAr = values.split("|");
if (elemId !== "centuryChart" || window.IRHB.charts.itemWithCentury) {
var nVals = valuesAr.length;
if (document.getElementById(elemId) && cData[elemId]) {
var pages = {};
window.IRHB.charts.widgets[elemId].draw(
if (nVals != 0) {
cData[elemId],
for (var i = 0; i < nVals; i++) {
window.IRHB.charts.options[elemId]
var ar = valuesAr[i].split("¤");
);
var year = ar[1];
if (year != "") {
var decade = getDecade(year);
if (!pages.hasOwnProperty(decade)) {
pages[decade] = [];
}
pages[decade].push(
{
"year": year,
"page": ar[0]
}
)
}
}
}
}
}
var pText = "<div class='chrtHead'>Timeline</div>";
if (window.IRHB.charts.datedItem) {
var curCentury = 0, cText = "", cTotal;
if (document.getElementById("timeline")) {
for (var prop in pages) {
window.IRHB.charts.widgets["timeline"].draw(
if (pages.hasOwnProperty(prop)) {
cData["timeline"],
var century = getCentury(prop);
window.IRHB.charts.options["timeline"]
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;
cTotal += nPages;
var decStr = prop + "&ndash;" + 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++) {
cText += "<li class='tLnItem'><span>" + pages[prop][i].year + " &ndash; " + 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;
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 nDecs = decades.length;
for (var i = 0; i < nDecs; i++) {
initDiv(decades[i]);
}
var items = get("tline").getElementsByClassName("tLnItem");
var nItems = items.length;
for (var i = 0; i < nItems; i++) {
items[i].onclick = callback;
}
}
elem.style.display = "block";
}
}
}
}
if (document.addEventListener) {
window.addEventListener('resize', resizeChart);
}
else if (document.attachEvent) {
window.attachEvent('onresize', resizeChart);
}
else {
window.resize = resizeChart;
}
window.IRHB.charts.options = {
t.getDecade = function(year) {
"centuryChart": {
var decade = year % 10 !== 0 ? year : year - 1;
"title": "Century",
decade = (Math.floor(decade / 10) * 10) + 1;
"xLabel": "Century",
return decade;
"yLabel": "Number",
"height": 500,
"width": "38%",
"chartArea": {'width': '100%', 'height': '63%'},
"vAxis": {minValue: 0},
"bar": {groupWidth: "100%"}
},
"typesChart": {
"title": "Types",
"xLabel": "Category",
"yLabel": "Number",
"height": 500,
"width": "38%",
"chartArea": {'width': '100%', 'height': '60%'},
"vAxis": {minValue: 0},
"bar": {groupWidth: "100%"}
},
"interestChart": {
"title": "Interest",
"xLabel": "Interest",
"yLabel": "Number",
"height": 510,
"width": "38%",
"chartArea": {'width': '100%', 'height': '55%'},
"vAxis": {minValue: 0},
"bar": {groupWidth: "100%"}
},
"statusChart": {
"chartType": "PieChart",
"height": 370,
"width": "38%",
"chartArea": {'width': '100%', 'height': '80%'},
"vAxis": {minValue: 0},
"bar": {groupWidth: "100%"},
"title": "Status"
},
"timeline" : {
"width": "38%",
"height": "1200",
"chartArea": {
'width': '92%',
'height': '95%',
'left': '35'
},
"title": "Timeline",
"colors": null,
"titleTextStyle": {
"color": "#000000",
"fontName": "inherit",
"fontSize": 20,
"bold": false,
"italic": false
},
"hAxis": {
"title": "",
"minValue": 0,
"format": "####"
},
"vAxis": {
"title": "",
"viewWindowMode":'explicit',
"viewWindow": {
"max": null,
"min": null
},
"ticks": null,
"format": "####"
},
"legend": "none",
"fontSize": "12",
"axisTitlesPosition": "none"
}
};
};
var getDecade = t.getDecade;
window.IRHB.charts.columnColors = [ "#4d8375", "#82a89e" ];
var getOptions = function(elemId) {
t.getCentury = function(decade) {
var opt = window.IRHB.charts.options[elemId];
var century = parseInt(decade / 100) + 1;
opt.width = opt.width || "";
return century;
opt.height = opt.height || "";
};
opt.chartType = opt.chartType || "ColumnChart";
var getCentury = t.getCentury;
opt.chartArea = opt.chartArea || {'width': '88%', 'height': '60%'};
if (opt.chartType == "ColumnChart") {
opt.bar = { "groupWidth": "95%" };
opt.legend = { "position": "none" };
}
opt.titleTextStyle = opt.titleTextStyle ||
{
color: "#000000", fontName: "inherit",
fontSize: 20, bold: false, italic: false
}
opt.hAxis = { direction: 1, slantedText: true, slantedTextAngle: 90,
textStyle: { fontSize: 11.5 }
};
opt.colors = window.IRHB.charts.columnColors;
return opt;
}
var showChart = function(elem, data, options) {
var elemId = elem.id;
var chartData = new google.visualization.DataTable();
chartData.addColumn("string", options.xLabel);
chartData.addColumn("number", options.yLabel);
chartData.addRows(data);
window.IRHB.charts.chartData[elemId] = chartData;
var chart = new google.visualization [
options.chartType == "ColumnChart" ? "ColumnChart" : "PieChart"
] (elem);
window.IRHB.charts.widgets[elemId] = chart;
chart.draw(chartData, options);
}
var aggregateData = function(resultAr, elemId) {
var divClickHandler = function () {
var aggregate;
var delay = 25;
if (elemId == "centuryChart") {
var p = this.nextElementSibling.firstElementChild;
aggregate = [
if (p) {
["14th", 0],
var disp = window.getComputedStyle(p, null).getPropertyValue("display");
["15th", 0],
disp = disp == "block" ? "none" : "block";
["16th", 0],
if (disp == "none") {
["17th", 0],
p = this.nextElementSibling.lastElementChild;
["18th", 0],
}
["19th", 0],
while (true) {
["20th", 0],
setTimeout(toggleRow, delay, p, disp);
["21st", 0]
p = disp == "block" ? p.nextElementSibling : p.previousElementSibling;
];
if (!p) {
} else if (elemId == "typesChart") {
aggregate = [
["Public house", 0],
["Monument", 0],
["Building", 0],
["Church", 0],
["Prehistoric site", 0],
["Natural feature", 0],
["Settlement", 0],
["Area", 0],
["Thoroughfare", 0],
["Transport", 0],
["Establishment", 0],
["Association", 0],
["Artifact", 0],
["Miscellaneous", 0]
];
} else if (elemId == "interestChart") {
aggregate = [
["Robin Hood name", 0],
["Local tradition", 0],
["Literary locale", 0],
["Artifacts", 0],
["Miscellaneous", 0]
];
} else if (elemId == "statusChart") {
aggregate = [
["Extant", 0],  
["Defunct", 0]
];
}
var lResultAr = resultAr.length;
if (elemId === "centuryChart") {
for (var i = 0; i < lResultAr; i++) {
if (resultAr[i] !== "") {
window.IRHB.charts.itemWithCentury = true;
break;
break;
} else {
delay += 25;
}
}
}
}
}
}
};
for (var i = 0; i < lResultAr; i++) {
var elemresultAr = resultAr[i];
var lAggregate = aggregate.length;
for (var j = 0; j < lAggregate; j++) {
if (aggregate[j][0] == elemresultAr) {
aggregate[j][1]++;
continue;
}
}
}
return aggregate;
}
var prepareContainer = function(elem) {
function initDiv(eDiv) {
elem.style.display = "block";
var heading = eDiv.firstElementChild;
heading.addEventListener("click", divClickHandler);
}
}
var getData = function(elem) {
var txt = elem.innerHTML;
txt = txt.trim();
var startTagLgth = "<p>".length;
var endTagPos = txt.indexOf("</p>");
txt = txt.substring(startTagLgth, endTagPos - 2);
txt = txt.trim();
txt = "[" + txt + "]";
var resultAr = JSON.parse(txt);
resultAr = resultAr.sort();
return resultAr;
}
showTimeline = function() {
var toggleRow = function(s, state) {
var t = document.getElementById("timeline");
s.style.display = state;
if (t) {
};
var txt = t.innerText || t.textContent;
 
txt = txt.trim();
})();
//"¤" and "|" are separators in Template:timeline
 
var itms = txt.split("|");
 
itms.pop(); //Remove empty item after last pipe


var itemsObj = {};
//Charts
var numItms = itms.length;
(function() {
var minYear = 0;
var maxYear = 0;
var t = window.IRHB.timeline;
for (var i = 0; i < numItms; i++) {
var get = window.IRHB.get;
var itemAr = itms[i].split("¤");
var years = itemAr[1];
var chartOptions = {
var yearsAr = years.split(", ");
"scales": {
var numYears = yearsAr.length;
"xAxes": [
for (var j = 0; j < numYears; j++) {
{
//When #ask returns " JL" after the year (e.g.: "1560 JL"), this must be removed:
"barPercentage": 1.0,
var yearSanitized = yearsAr[j].split(" ");
"barThickness": "flex",  
year = yearSanitized[0];
"gridLines": {
if (year !== "") {
"offsetGridLines": true,
var placeName = itemAr[0];
"drawBorder": false,  
var festivals = placeName.indexOf(" festivals");
"display": false
if (festivals > -1) {
},
placeName = placeName.substring(0, festivals);
"ticks": {
}
"autoSkip": false,
var yearNum = year * 1;
"maxRotation": 90,
if (yearNum < minYear || minYear === 0) {
"minRotation": 90
minYear = yearNum
}
if (yearNum > maxYear) {
maxYear = yearNum
}
if (!itemsObj.hasOwnProperty(year)) {
itemsObj[year] = [];
}
var numItemsYear = itemsObj[year].length;
var curNum = ++numItemsYear;
var bubbleText = year + ". " + placeName;
itemsObj[year].push([ curNum, yearNum, bubbleText ]);
}
}
}
}
}
],
"yAxes": [
if (minYear !== 0) {//Only display timeline if dated items found
{  
window.IRHB.charts.datedItem = true;
"gridLines": {
var data = new google.visualization.DataTable();
"drawBorder": false
data.addColumn("number", "Number");
data.addColumn("number", "Year");
data.addColumn({type:"string", role:"tooltip"});
var dataRowsAr = [];
for (var key in itemsObj) {
  if (itemsObj.hasOwnProperty(key)) {
  dataRowsAr = dataRowsAr.concat(itemsObj[key]);
  }
}
var numDataRowsAr = dataRowsAr.length;
var decade = 0;
var xValue = 0;
for (var i = 0; i < numDataRowsAr; i++) {
var yr = dataRowsAr[i][1];
var yrsAfterDecadeTurn = yr % 10;
var newDecade = yr - yrsAfterDecadeTurn;
if (newDecade !== decade) {
decade = newDecade;
xValue = 1;
} else {
xValue++;
}
}
dataRowsAr[i][0] = xValue;
}
}
]
var lowerMod = minYear % 100;
},
var lowerCentury = minYear - lowerMod;
"legend": {
var lowerYearsToAdd;
"display":false
if (lowerMod < 51) {
},
lowerYearsToAdd = 0;
"title": {
} else {
"display": true,
lowerYearsToAdd = 50;
"fontSize": 28,
"fontFamily": "'Open Sans Condensed', Helvetica, Arial, sans-serif",
"fontColor": '#964d4d',
"fontStyle": "bold",
"padding": 20
},
"tooltips": {
"backgroundColor": "#ffffff",
"titleFontColor": "#000000",
"bodyFontColor": "#000000",
"borderColor": "#bdbdbd",
"borderWidth": 1,
"titleFontStyle": "normal"
},
"responsive": true,
"maintainAspectRatio": false
};
 
 
function replaceAll (str, find, replacement) {
return str.replace(new RegExp(escapeRegEx(find), 'g'), replacement);
};
function escapeRegEx (str) {
return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
};
 
function prepareCharts() {
var tc = get("tChart");
var cType = "bar";
if (tc) {
makeChart(
tc, "typeCvs", cType, "Type",
{"Public house": 0, "Monument": 0, "Building": 0, "Church": 0,
"Prehistoric site": 0, "Natural feature": 0, "Settlement": 0, "Area": 0,
"Thoroughfare": 0, "Transport": 0, "Establishment": 0, "Association": 0,
"Artifact": 0, "Miscellaneous": 0
}
}
var lowerYear = lowerCentury + lowerYearsToAdd;
);
}
var upperMod = maxYear % 100;
tc = get("cChart");
var upperCentury = maxYear - upperMod;
if (tc) {
var upperYearsToAdd;
makeChart(
if (upperMod <= 50) {
tc, "cCvs", cType, "Century",
upperYearsToAdd = 50;
{
} else {
"14th": 0, "15th": 0, "16th": 0, "17th": 0, "18th": 0, "19th": 0,
upperYearsToAdd = 100;
"20th": 0, "21st": 0, "Unknown": 0
}
}
var upperYear = upperCentury + upperYearsToAdd;
);
}
var explicitTicks = [];
tc = get("iChart");
var ctr = lowerYear;
if (tc) {
explicitTicks.push(ctr);
makeChart(
while (true) {
tc, "iCvs", cType, "Interest",
ctr += 50;
{
if (ctr <= upperYear) {
"Robin Hood name": 0, "Local tradition": 0, "Literary locale": 0,
explicitTicks.push(ctr);
"Artifacts": 0, "Miscellaneous": 0
} else {
break;
}
}
}
);
var options = window.IRHB.charts.options["timeline"];
}
options.colors = window.IRHB.charts.columnColors;
tc = get("sChart");
options.vAxis.viewWindow.max = lowerYear;
if (tc) {
options.vAxis.viewWindow.min = upperYear;
makeChart(tc, "sCvs", "doughnut", "Status", {"Extant": 0, "Defunct": 0});
options.vAxis.ticks = explicitTicks;
}
data.addRows(dataRowsAr);
tc = get("tline");
if (tc) {
var chart = new google.visualization.ScatterChart(t);
//Non-empty query result in paragraph, if no paragraph, no timeline:
chart.draw(data, options);
if (tc.firstElementChild) {
window.IRHB.charts.widgets["timeline"] = chart;
window.IRHB.timeline.create(tc, prepareItemCard);
window.IRHB.charts.chartData["timeline"] = data;
t.style.display = "block";
} else {
} else {
t.innerHTML = "";
get("sChart").style.paddingBottom = "6em";
}
}
}
var setZIndex = false;
}
var pn = mw.config.get("wgPageName");
 
var pnLower = pn.toLowerCase();
if (pnLower.indexOf("festivals")>-1) {
function makeChart(elem, cvsId, cType, lbl, cats) {
setZIndex = true;
var values = elem.firstElementChild.innerHTML.trim();
values = values.substr(0, values.length - 1);// Remove final comma
values = replaceAll(values, '""', "Unknown");
values = replaceAll(values, '"', "");
var valuesAr = values.split(",");
var nVals = valuesAr.length;
if (nVals != 0) {
var lbls = Object.getOwnPropertyNames(cats);
var nLbls = lbls.length;
elem.innerHTML = "<canvas id='" + cvsId + "'></canvas>";
var maxBar = 0;
for (var i = 0; i < nVals; i++) {
var v = valuesAr[i];
cats[v]++;
v = cats[v];
if (v > maxBar) {
maxBar = v;
}
}
var cData = [], cColrs = [];
for (var i = 0; i < nLbls; i++) {
cData.push(cats[lbls[i]]);
cColrs.push("#4d8375");
}
if (lbl === "Status") {
cColrs[1] = "#82a89e";
}
var chrt = new Chart( get(cvsId), {
type: cType,
data: {
labels: lbls,
datasets: [{label: lbl, backgroundColor: cColrs, data: cData}]
},
options: chartOptions
});
if (lbl === "Status") {
chrt.options.scales.xAxes = [
{"gridLines": {"drawBorder": false, "display": false},
"ticks": { "display": false}
}
];
chrt.options.scales.yAxes = [
{"gridLines": {"drawBorder": false, "display": false},
"ticks": { "display": false}
}
];
chrt.options.legend.display = true;
} else {
} else {
var cats = mw.config.get("wgCategories");
chrt.options.tooltips.callbacks = {
var numCats = cats.length;
"label": function(tooltipItem, data) {
for (var i = 0; i < numCats; i++) {
var label = data.datasets[tooltipItem.datasetIndex].label || '';
if (cats[i] === "English counties with festivals") {
if (label) {
setZIndex = true;
label = "Count: ";
break;
}
label += tooltipItem.yLabel;
return label;
}
}
}
}
}
}
if (setZIndex) {
var step;
var d = document.getElementById("timeline");
if (maxBar < 6) {
d.style.zIndex = 980;
step = 1;
d = document.getElementById("centuryChart");
} else if (maxBar < 11) {
d.style.marginTop = "10px";
step = 2;
d.style.marginBottom = "10px";
} else if (maxBar < 26) {
step = 5;
} else if (maxBar < 101) {
step = 10;
} else if (maxBar < 501) {
step = 25;
} else {
step = 50;
}
}
chrt.options.scales.yAxes[0].ticks.stepSize = step;
chrt.options.title.text = lbl;
elem.style.display = "block";
}
}
}
}
window.IRHB.charts.show = function() {
var charts = window.IRHB.charts.container;
function prepareItemCard(event) {
var numCharts = window.IRHB.charts.numCharts;
var t = event.target;
for (var i = 0; i < numCharts; i++) {
if (t.tagName != "A") {
var data = getData(charts[i]);
var tc = event.currentTarget;
var elemId = charts[i].id;
var item = tc.firstChild.innerHTML;
//prepareContainer(charts[i]);
var card = tc.firstChild.nextSibling;
data = aggregateData(data, elemId);
if (card.innerHTML == "") {
if (elemId !== "centuryChart" || window.IRHB.charts.itemWithCentury) {
var start = item.indexOf(" – ") + " – ".length;
var options = getOptions(elemId);
item = encodeURIComponent(item.substring(start));
showChart(charts[i], data, options);
var qry = "https://www.irhb.org/wiki/api.php?action=ask&query=[[" + item + "]]|?Geopoint|?Pnadmdiv|?Pnfirstrecord|?Pnimage|?Pninterest|?Pnstatus|?Pntype|?Pnvicinity|?Century|?Pnaka&format=json";
prepareContainer(charts[i]);
query(qry, "POST", makeItemCard);
} else {
card.innerHTML = "";
card.style.display = "none";
}
}
} else {
event.stopPropagation();
}
}
}
if (!window.IRHB.charts.itemWithCentury) {
var d = document.getElementById("centuryChart");
if (d) {
function makeItemCard(resp) {
d.style.display = "none";
var res = JSON.parse(resp);
}
res = res.query.results;
d = document.getElementById("interestChart");
res = res[Object.keys(res)[0]];//First property in "res.query.results"
if (d) {
var page = res.fulltext;
d.style.marginTop = "5px";
var firstRec = res.printouts.Pnfirstrecord;
var dec = t.getDecade(firstRec);
var itemName = firstRec + " – " + page;
var decadeDiv = get("i" + dec);
var lst = decadeDiv.firstChild.nextSibling;
var lstItems = lst.children;
var nItems = lstItems.length;
for (var i = 0; i < nItems; i++) {
if (lstItems[i].firstChild.innerHTML == itemName) {
var card = lstItems[i].firstChild.nextSibling;
var imgId = "img" + dec + "_" + i;
card.innerHTML = "<img class='cardImg' id='" + imgId + "'></img>";
var txt = "<div class='cardText'><table>";
var safePage = page.replace("'", "%27");
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 ln = res.printouts.Geopoint[0] ? res.printouts.Geopoint[0].lon : "?";
txt += "<tr><td>Lat.</td><td>" + lt + "</td></tr>";
txt += "<tr><td>Lon.</td><td>" + ln + "</td></tr>";
txt += "<tr><td>Adm. div.</td><td>" + res.printouts.Pnadmdiv[0] + "</td></tr>";
var vic = res.printouts.Pnvicinity[0];
vic = vic.replace("''", "<i>").replace("''", "</i>");
txt += "<tr><td>Vicinity</td><td>" + vic + "</td></tr>";
txt += "<tr><td>Type</td><td>" + res.printouts.Pntype[0] + "</td></tr>";
txt += "<tr><td>Interest</td><td>" + res.printouts.Pninterest[0] + "</td></tr>";
txt += "<tr><td>Status</td><td>" + res.printouts.Pnstatus[0] + "</td></tr>";
txt += "<tr><td>First rec.</td><td>" + res.printouts.Pnfirstrecord[0] + "</td></tr>";
var century = res.printouts.Century[0];
if (century) {
txt += "<tr><td>Century</td><td>" + res.printouts.Century[0] + "</td></tr>";
}
var aka = res.printouts.Pnaka;
var akaTxt = "";
var nAka = aka.length;
for (var i = 0; i < nAka; i++) {
akaTxt += "; " + aka[i];
}
akaTxt = akaTxt.replace("; ", "");
if (akaTxt !== "") {
txt += "<tr><td>A.k.a.</td><td>" + akaTxt + "</td></tr></table>";
}
card.innerHTML += txt;
var imgName = res.printouts.Pnimage;
var img = get(imgId);
if (imgName != "") {
var tempImg = new Image();
tempImg.onload = function() {
img.src = this.src
card.style.display = "block";
};
tempImg.src = "https://www.irhb.org/wiki/thumb.php?f=" + encodeURIComponent(res.printouts.Pnimage) + "&w=195";
img.style.display = "block";
} else {
img.style.display = "none";
card.style.display = "block";
}
break;
}
}
}
}
showTimeline();
}
if (window.IRHB.charts.datedItem) {
var tl = window.IRHB.charts.widgets["timeline"];
if (tl) {
function query(qry, method, callBack) {
google.visualization.events.addListener(tl, 'select', function() {
var xmlhttp = new XMLHttpRequest();
var selectedItem = tl.getSelection()[0];
xmlhttp.onreadystatechange = function() {
if (selectedItem) {
if (xmlhttp.readyState == XMLHttpRequest.DONE ) {
var yearFullStopSpace = 6;
  if (xmlhttp.status == 200) {
var placeName = window.IRHB.charts.chartData.timeline.lc[selectedItem.row][2].Df.substring(yearFullStopSpace);
  callBack(xmlhttp.responseText);
var pathLower = window.location.pathname.toLowerCase();
  } else if (xmlhttp.status == 400) {
if (pathLower.indexOf("festivals") > -1) {
say("An error occurred; closing down!");
placeName += " festivals";
  }
}
  else {
var newURL = window.location.protocol + "//" +
  callBack(xmlhttp.responseText);
window.location.host + "/wiki/index.php/" +
  }
encodeURIComponent(placeName);
}
window.location = newURL;
};
}
xmlhttp.open(method, qry, true);
});
xmlhttp.send();
resizeChart();
}
}
}
}
window.IRHB.charts.init = function() {
google.charts.load(window.IRHB.charts.googleVersion, {'packages':['corechart']});
    var script = document.createElement('script');
google.charts.setOnLoadCallback(window.IRHB.charts.show);
    script.type = 'text/javascript';
}
    script.src = "https://www.irhb.org/wiki/js/Chart.js";
    script.onreadystatechange = prepareCharts;
    script.onload = prepareCharts;
    document.head.appendChild(script);


var charts = document.getElementsByClassName("irhbCharts");
window.IRHB.charts.numCharts = charts.length;
if (window.IRHB.charts.numCharts > 0) {
window.IRHB.charts.container = charts;
google.charts.load(window.IRHB.charts.googleVersion, {packages: ['corechart']});
google.charts.setOnLoadCallback(window.IRHB.charts.show);
}
})();
})();
</script>
</script></includeonly>
</includeonly>

Revision as of 10:40, 6 June 2019

This widget generates charts on landing pages. It takes no parameters.