Ugrás a tartalomhoz

Szerkesztő:Bean49/nepessegdiagram.js

A Wikipédiából, a szabad enciklopédiából

Megjegyzés: közzététel után frissítened kell a böngésződ gyorsítótárát, hogy lásd a változásokat.

  • Firefox / Safari: tartsd lenyomva a Shift gombot és kattints a Frissítés gombra a címsorban, vagy használd a Ctrl–F5 vagy Ctrl–R (Macen ⌘–R) billentyűkombinációt
  • Google Chrome: használd a Ctrl–Shift–R (Macen ⌘–Shift–R) billentyűkombinációt
  • Internet Explorer / Edge: tartsd nyomva a Ctrl-t, és kattints a Frissítés gombra, vagy nyomj Ctrl–F5-öt
  • Opera: Nyomj Ctrl–F5-öt
/*
 * Teszt
 */
mw.hook('wikipage.content').add(function ($content) {
	$content.find(".nepessegdiagram").each(function () {
		var szoveg = this.querySelector("p").textContent;
		var chart = JSON.parse(szoveg);
		var div = $(this);
		div.html('<canvas width="' + (div.width() - 20) + '" height="' + (div.height() - 20) + '" style="padding:10px">Oszlopdiagram</canvas>');
		var c = this.querySelector("canvas");
		var ctx = c.getContext("2d");
		
		ctx.translate(0, c.height);
		ctx.scale(1, -1);
		
		var n = chart.data[0].values.length;
		var m = 20;
		var t = 20;
		var f = 0.2;
		var o = Math.floor((c.width - m * 2) / (n - f));
		var h = Math.floor(o * (1 - f));
		var max = chart.data[0].values.reduce(function (a, b) {
			return Math.max(a, b.amount);
		}, 0);
		
		ctx.save();
		ctx.fillStyle = "steelblue";
		ctx.translate(m, t);
		ctx.scale(1, (c.height - t * 2) / max);
		chart.data[0].values.forEach(function (item, i) {
			ctx.fillRect(o * i, 0, h, item.amount);
		});
		ctx.restore();
		
		ctx.save();
		ctx.fillStyle = "black";
		ctx.textAlign = "center";
		ctx.translate(m, 0);
		ctx.scale(1, -1);
		chart.data[0].values.forEach(function (item, i) {
			ctx.fillText(item.category, o * i + h / 2, 0);
			ctx.fillText(item.amount, o * i + h / 2, -1 * (t + item.amount * (c.height - t * 2) / max + 5));
		});
		ctx.restore();
		
		div.css("visibility", "visible");
	});
});