123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844 |
- "use strict";
- var urlToCopy = document.getElementById("urlToCopy");
- if (urlToCopy) {
- urlToCopy.innerHTML = location.href;
- }
- function shareLink() {
- var urlToCopy = document.getElementById("urlToCopy");
- var urlToCopyContainer = document.getElementById("urlToCopyContainer");
- try {
- if (document.body.createTextRange) {
- // for Internet Explorer
- var range = document.body.createTextRange();
- range.moveToElementText(urlToCopy);
- range.select();
- document.execCommand("Copy");
- } else if (window.getSelection) {
- // other browsers
- var selection = window.getSelection();
- var range = document.createRange();
- range.selectNodeContents(urlToCopy);
- selection.removeAllRanges();
- selection.addRange(range);
- document.execCommand("Copy");
- }
- var button = document.getElementById("buttonLink");
- if (button) {
- button.className = "button buttonLinkGood";
- setTimeout(function() {
- var buttonTimeout = document.getElementById("buttonLink");
- if (buttonTimeout) button.className = "button buttonLink";
- }, 2000);
- }
- } catch (err) {}
- }
- function getQueryVariable(variable) {
- var query = window.atob(window.location.search.substring(1));
- var vars = query.split("&");
- for (var i = 0; i < vars.length; i++) {
- var pair = vars[i].split("=");
- if (pair[0] == variable) {
- if (pair[1] == "NaN") {
- return 0;
- } else {
- return pair[1] / 100;
- }
- }
- }
- return 0;
- }
- function setAxisValue(name, value) {
- var axis = document.getElementById(name);
- if (!axis) return;
- var text = document.getElementById(name + "Text");
- if (!text) return;
- axis.style.width = (100 * value).toFixed(1) + "%";
- text.innerHTML = (100 * value).toFixed(0) + "%";
- if (text.offsetWidth > axis.offsetWidth - 5) text.style.display = "none";
- else text.style.display = "";
- }
- function setBonus(name, value, limit) {
- var axis = document.getElementById(name);
- if (!axis) return;
- if (value > limit) {
- axis.style.display = "flex";
- axis.style.opacity = value * value;
- } else {
- axis.style.display = "none";
- }
- }
- var axes = ["c", "b", "p", "m", "s", "j", "e", "t"];
- var bonus = {
- anar: 0.9,
- prag: 0.5,
- femi: 0.9,
- vega: 0.5,
- reli: 0.5,
- mona: 0.5
- };
- var characteristics = [];
- var axesValues = {
- c: 0,
- b: 0,
- p: 0,
- m: 0,
- s: 0,
- j: 0,
- e: 0,
- t: 0
- };
- var left = 0;
- var right = 0;
- for (var i = 0; i < axes.length; i++) {
- var negativeValue = getQueryVariable(axes[i] + "0");
- var positiveValue = getQueryVariable(axes[i] + "1");
- setAxisValue(axes[i] + "AxisNeg", negativeValue);
- setAxisValue(axes[i] + "AxisPos", positiveValue);
- setAxisValue(axes[i] + "AxisMid", 1 - negativeValue - positiveValue);
- left += negativeValue;
- right += positiveValue;
- if (negativeValue > positiveValue) {
- characteristics.push({ name: axes[i] + "0", value: negativeValue });
- } else {
- characteristics.push({ name: axes[i] + "1", value: positiveValue });
- }
- axesValues[axes[i]] = positiveValue - negativeValue;
- }
- var bonusEnabled = 0;
- for (var b in bonus) {
- var value = getQueryVariable(b);
- setBonus(b + "Bonus", value, bonus[b]);
- if (value > bonus[b]) {
- bonusEnabled = 1;
- characteristics.push({ name: b, value: value });
- }
- }
- characteristics.sort(function(a, b) {
- return a.value < b.value;
- });
- var charSlogan = {
- b0: "Humanity",
- b1: "Fatherland",
- c0: "Equality",
- e0: "Ecology",
- j0: "Justice",
- j1: "Order",
- m1: "Liberty",
- p0: "Socialism",
- p1: "Work",
- s1: "Family",
- t0: "Revolution"
- };
- function findFlagColors() {
- var colors = [];
- for (var i = 0; i < flagColors.length; i++) {
- var accepted = 1;
- var mainValue = 0;
- var mainValueFound = 0;
- for (var j = 0; j < flagColors[i].cond.length; j++) {
- var charFound = 0;
- for (var k = 0; k < characteristics.length; k++) {
- if (characteristics[k].name == flagColors[i].cond[j].name) {
- charFound = 1;
- if (
- characteristics[k].value < flagColors[i].cond[j].vmin ||
- characteristics[k].value > flagColors[i].cond[j].vmax
- )
- accepted = 0;
- else if (!mainValueFound) {
- mainValueFound = 1;
- mainValue = characteristics[k].value;
- }
- break;
- }
- }
- if (!charFound) accepted = 0;
- if (!accepted) break;
- }
- if (accepted) {
- colors.push({
- bgColor: flagColors[i].bgColor,
- fgColor: flagColors[i].fgColor,
- value: mainValue
- });
- }
- }
- colors.sort(function(a, b) {
- return b.value - a.value;
- });
- return colors;
- }
- function findFlagShape(numColors) {
- var flagFound = -1;
- var flagValue = [0, 0, 0];
- var flagColor = 0;
- for (var i = 0; i < flagShapes.length; i++) {
- if (flagShapes[i].numColors > numColors) continue;
- var condValue = [0, 0];
- var accepted = 1;
- if (flagShapes[i].cond.length > 0) {
- for (var j = 0; j < flagShapes[i].cond.length; j++) {
- var value = axesValues[flagShapes[i].cond[j].name];
- if (
- value < flagShapes[i].cond[j].vmin ||
- value > flagShapes[i].cond[j].vmax
- ) {
- accepted = 0;
- }
- if (j < 3) condValue[j] = Math.abs(value);
- if (!accepted) break;
- }
- } else {
- var condValue = [0, 0];
- }
- if (accepted && flagColor <= flagShapes[i].numColors) {
- if (flagShapes[i].numColors > flagColor) {
- flagColor = flagShapes[i].numColors;
- flagValue[0] = condValue[0];
- flagValue[1] = condValue[1];
- flagValue[2] = condValue[2];
- flagFound = i;
- } else if (condValue[0] > flagValue[0]) {
- flagColor = flagShapes[i].numColors;
- flagValue[0] = condValue[0];
- flagValue[1] = condValue[1];
- flagValue[2] = condValue[2];
- flagFound = i;
- } else if (condValue[0] == flagValue[0]) {
- if (condValue[1] > flagValue[1]) {
- flagColor = flagShapes[i].numColors;
- flagValue[0] = condValue[0];
- flagValue[1] = condValue[1];
- flagValue[2] = condValue[2];
- flagFound = i;
- } else if (condValue[1] == flagValue[1]) {
- if (condValue[2] > flagValue[2]) {
- flagColor = flagShapes[i].numColors;
- flagValue[0] = condValue[0];
- flagValue[1] = condValue[1];
- flagValue[2] = condValue[2];
- flagFound = i;
- }
- }
- }
- }
- }
- return flagFound;
- }
- function getCharacteristic(name, vmin, vmax) {
- for (var k = 0; k < characteristics.length; k++) {
- if (characteristics[k].name != name) continue;
- if (characteristics[k].value >= vmin && characteristics[k].value <= vmax)
- return characteristics[k].value;
- else return -1.0;
- }
- return -1.0;
- }
- function findFlagSymbol(numColors) {
- var symbol0 = {
- parent_type: "none",
- transform: {}
- };
- var symbol1 = {
- parent_type: "none",
- transform: {}
- };
- var valueMax = 0;
- if (numColors == 0) {
- symbol0.parent_type = "dot";
- symbol0.transform = {
- child_type: "none",
- x: 3,
- y: 3,
- main: true,
- parent_tx: 0,
- parent_ty: 0,
- parent_sx: 1,
- parent_sy: 1,
- parent_r: 0,
- child_tx: 0,
- child_ty: 0,
- child_sx: 1,
- child_sy: 1,
- child_r: 0
- };
- }
- for (var s0 = 0; s0 < flagSymbols.length; s0++) {
- var charVal0 = getCharacteristic(
- flagSymbols[s0].cond.name,
- flagSymbols[s0].cond.vmin,
- flagSymbols[s0].cond.vmax
- );
- if (charVal0 > 0) {
- var value = charVal0 * 1.5;
- var transform0 = -1;
- if (value > valueMax) {
- for (k0 = 0; k0 < flagSymbols[s0].data.transforms.length; k0++) {
- if (flagSymbols[s0].data.transforms[k0].child_type == "none") {
- transform0 = k0;
- }
- }
- if (transform0 >= 0) {
- symbol0.parent_type = flagSymbols[s0].data.parent_type;
- symbol0.transform = flagSymbols[s0].data.transforms[transform0];
- symbol1.parent_type = "none";
- valueMax = value;
- }
- }
- for (var s1 = s0 + 1; s1 < flagSymbols.length; s1++) {
- transform0 = -1;
- var transform1 = -1;
- var k0 = -1;
- for (k0 = 0; k0 < flagSymbols[s0].data.transforms.length; k0++) {
- for (var k1 = 0; k1 < flagSymbols[s1].data.transforms.length; k1++) {
- if (
- flagSymbols[s0].data.parent_type ==
- flagSymbols[s1].data.transforms[k1].child_type &&
- flagSymbols[s1].data.parent_type ==
- flagSymbols[s0].data.transforms[k0].child_type
- ) {
- transform0 = k0;
- transform1 = k1;
- }
- }
- }
- if (transform1 < 0 || transform0 < 0) continue;
- var charVal1 = getCharacteristic(
- flagSymbols[s1].cond.name,
- flagSymbols[s1].cond.vmin,
- flagSymbols[s1].cond.vmax
- );
- if (charVal1 > 0) {
- value = charVal0 + charVal1;
- if (value > valueMax) {
- symbol0.parent_type = flagSymbols[s0].data.parent_type;
- symbol0.transform = flagSymbols[s0].data.transforms[transform0];
- symbol1.parent_type = flagSymbols[s1].data.parent_type;
- symbol1.transform = flagSymbols[s1].data.transforms[transform1];
- valueMax = value;
- }
- }
- }
- }
- }
- if (
- symbol0.parent_type != "none" &&
- symbol1.parent_type != "none" &&
- symbol1.transform.main &&
- !symbol0.transform.main
- )
- return [symbol1, symbol0];
- else return [symbol0, symbol1];
- }
- var generatedSlogan = "";
- var sloganDiv = document.getElementById("slogan");
- if (sloganDiv) {
- var selectedSlogan = [];
- for (var i = 0; i < characteristics.length; i++) {
- if (
- characteristics[i].value > 0 &&
- charSlogan.hasOwnProperty(characteristics[i].name)
- ) {
- selectedSlogan.push({
- text: charSlogan[characteristics[i].name],
- value: characteristics[i].value
- });
- }
- }
- selectedSlogan.sort(function(a, b) {
- return a.value < b.value;
- });
- var counter = 0;
- for (var i = 0; i < selectedSlogan.length; i++) {
- if (generatedSlogan != "") generatedSlogan += " · ";
- generatedSlogan += selectedSlogan[i].text;
- counter++;
- if (counter >= 3) break;
- }
- sloganDiv.innerHTML = generatedSlogan;
- }
- if (!bonusEnabled) {
- var bonusBox = document.getElementById("bonusBox");
- bonusBox.style.display = "none";
- }
- var images = {
- sprites: "/images/flag_sprites.png",
- c0: "/images/constructivism_small.png",
- c1: "/images/essentialism_small.png",
- j0: "/images/justice_soft_small.png",
- j1: "/images/justice_hard_small.png",
- s0: "/images/progressism_small.png",
- s1: "/images/conservatism_small.png",
- b0: "/images/internationalism_small.png",
- b1: "/images/nationalism_small.png",
- p0: "/images/communism_small.png",
- p1: "/images/capitalism_small.png",
- m0: "/images/regulation_small.png",
- m1: "/images/laissezfaire_small.png",
- e0: "/images/ecology_small.png",
- e1: "/images/productivism_small.png",
- t0: "/images/revolution_small.png",
- t1: "/images/reformism_small.png",
- anar: "/images/anarchism_small.png",
- prag: "/images/pragmatism_small.png",
- femi: "/images/feminism_small.png",
- vega: "/images/veganism_small.png",
- mona: "/images/monarchism_small.png",
- reli: "/images/religion_small.png"
- };
- var numImageLoaded = 0;
- function onImageLoaded() {
- numImageLoaded++;
- if (numImageLoaded < images.length) {
- return;
- }
- var flag = document.getElementById("generatedFlag");
- if (flag) {
- var ctx = flag.getContext("2d");
- var spriteX = 256;
- var spriteY = 128;
- var spriteS = 1.0;
- var colors = findFlagColors();
- var symbolData = findFlagSymbol(colors.length);
- var flagId = findFlagShape(colors.length);
- if (colors.length <= 0)
- colors.push({ bgColor: "#ffffff", fgColor: "#000000" });
- if (flagId < 0) {
- ctx.beginPath();
- ctx.rect(0, 0, 512, 256);
- ctx.fillStyle = "#ffffff";
- ctx.fill();
- } else {
- for (var i = 0; i < flagShapes[flagId].shapes.length; i++) {
- var path = flagShapes[flagId].shapes[i];
- var numPoints = path.length / 2;
- ctx.beginPath();
- ctx.moveTo(path[1] * 512, path[2] * 256);
- if (path[1] == "circle") {
- ctx.arc(
- path[2] * 512,
- path[3] * 256,
- path[4] * 256,
- 0,
- 2 * Math.PI,
- false
- );
- } else if (
- path[1] == "circleSymbol" &&
- symbolData[0].parent_type != "none"
- ) {
- ctx.arc(
- path[2] * 512,
- path[3] * 256,
- path[4] * 256,
- 0,
- 2 * Math.PI,
- false
- );
- } else {
- for (var j = 1; j < numPoints; j++) {
- ctx.lineTo(path[1 + j * 2 + 0] * 512, path[1 + j * 2 + 1] * 256);
- }
- }
- ctx.fillStyle = colors[path[0]].bgColor;
- ctx.fill();
- }
- spriteX = flagShapes[flagId].symbol[0] * 512;
- spriteY = flagShapes[flagId].symbol[1] * 256;
- spriteS = flagShapes[flagId].symbol[2];
- }
- if (symbolData[0].parent_type != "none") {
- var tmpC = document.createElement("canvas");
- tmpC.width = images["sprites"].width;
- tmpC.height = images["sprites"].height;
- var tmpCtx = tmpC.getContext("2d");
- var coloredSprites = tmpCtx.getImageData(0, 0, tmpC.width, tmpC.height);
- tmpCtx.beginPath();
- tmpCtx.rect(0, 0, tmpC.width, tmpC.height);
- tmpCtx.fillStyle = colors[0].fgColor;
- tmpCtx.fill();
- tmpCtx.globalCompositeOperation = "destination-in";
- tmpCtx.drawImage(images["sprites"], 0, 0);
- ctx.save();
- ctx.translate(spriteX, spriteY);
- ctx.scale(spriteS, spriteS);
- var sx = symbolData[0].transform.x;
- var sy = symbolData[0].transform.y;
- ctx.save();
- ctx.translate(
- symbolData[0].transform.parent_tx,
- -symbolData[0].transform.parent_ty
- );
- ctx.rotate((symbolData[0].transform.parent_r * Math.PI) / 180);
- ctx.scale(
- symbolData[0].transform.parent_sx,
- symbolData[0].transform.parent_sy
- );
- ctx.drawImage(tmpC, sx * 128, sy * 128, 128, 128, -64, -64, 128, 128);
- ctx.restore();
- if (symbolData[1].parent_type != "none") {
- var sx = symbolData[1].transform.x;
- var sy = symbolData[1].transform.y;
- ctx.translate(
- symbolData[0].transform.child_tx,
- -symbolData[0].transform.child_ty
- );
- ctx.rotate((symbolData[0].transform.child_r * Math.PI) / 180);
- ctx.scale(
- symbolData[0].transform.child_sx,
- symbolData[0].transform.child_sy
- );
- ctx.translate(
- symbolData[1].transform.parent_tx,
- -symbolData[1].transform.parent_ty
- );
- ctx.rotate((symbolData[1].transform.parent_r * Math.PI) / 180);
- ctx.scale(
- symbolData[1].transform.parent_sx,
- symbolData[1].transform.parent_sy
- );
- ctx.drawImage(tmpC, sx * 128, sy * 128, 128, 128, -64, -64, 128, 128);
- ctx.restore();
- }
- ctx.restore();
- }
- }
- var rPreview = document.getElementById("generatedResults");
- if (rPreview) {
- var ctx = rPreview.getContext("2d");
- ctx.beginPath();
- ctx.rect(0, 0, rPreview.width, rPreview.height);
- ctx.fillStyle = "#ebebeb";
- ctx.fill();
- var yPos = 20;
- if (flag) {
- var flagCtx = flag.getContext("2d");
- var flagSize = 160;
- //Logo
- ctx.beginPath();
- ctx.rect(0, 0, rPreview.width, 42);
- ctx.fillStyle = "#500076";
- ctx.fill();
- ctx.fillStyle = "#ffffff";
- ctx.font = "bold 25px sans-serif";
- ctx.textAlign = "left";
- ctx.fillText("P️olitiScales, DBHQ Edition", 10, 30);
- ctx.fillStyle = "#ffffff";
- ctx.font = "bold 15px sans-serif";
- ctx.textAlign = "right";
- ctx.fillText("DBHQ.github.io", rPreview.width - 10, 27);
- yPos += 48;
- //Flag
- ctx.drawImage(
- flag,
- 0,
- 0,
- flag.width,
- flag.height,
- rPreview.width / 2.0 - flagSize,
- yPos,
- flagSize * 2,
- flagSize
- );
- yPos += flagSize + 10;
- //Slogan
- ctx.fillStyle = "#000000";
- ctx.font = "25px sans-serif";
- ctx.textAlign = "center";
- ctx.fillText(generatedSlogan, rPreview.width / 2.0, yPos + 30);
- yPos += 70;
- // Totals
- ctx.fillStyle = "#777";
- ctx.font = "16px sans-serif";
- ctx.textAlign = "right";
- ctx.fillText(
- `${Math.round(left * 100)}–${Math.round(right * 100)}`,
- rPreview.width - 7,
- rPreview.height - 10
- );
- //Axes
- var axesDrawInfo = [
- {
- key: "c",
- color0: "#a425b6",
- color1: "#34b634",
- name0: "Constructivism",
- name1: "Essentialism"
- },
- {
- key: "j",
- color0: "#14bee1",
- color1: "#e6cc27",
- name0: "Rehabilitative justice",
- name1: "Punitive justice"
- },
- {
- key: "s",
- color0: "#850083",
- color1: "#970000",
- name0: "Progressive",
- name1: "Conservative"
- },
- {
- key: "b",
- color0: "#3e6ffd",
- color1: "#ff8500",
- name0: "Internationalism",
- name1: "Nationalism"
- },
- {
- key: "p",
- color0: "#cc0000",
- color1: "#ffb800",
- name0: "Communism",
- name1: "Capitalism"
- },
- {
- key: "m",
- color0: "#269B32",
- color1: "#6608C0",
- name0: "Regulation",
- name1: "Laissez-faire"
- },
- {
- key: "e",
- color0: "#a0e90d",
- color1: "#4deae9",
- name0: "Ecology",
- name1: "Production"
- },
- {
- key: "t",
- color0: "#eb1a66",
- color1: "#0ee4c8",
- name0: "Revolution",
- name1: "Reform"
- }
- ];
- var axeMargin = 100;
- var axeWidth = rPreview.width - axeMargin * 2;
- ctx.strokeStyle = "#888888";
- for (var i = 0; i < axesDrawInfo.length; i++) {
- var negativeValue = getQueryVariable(axesDrawInfo[i]["key"] + "0");
- var positiveValue = getQueryVariable(axesDrawInfo[i]["key"] + "1");
- var neutralValue = 1 - negativeValue - positiveValue;
- var negSize = axeWidth * negativeValue;
- var posSize = axeWidth * positiveValue;
- var ntrSize = axeWidth * neutralValue;
- ctx.beginPath();
- ctx.rect(0.5 + axeMargin + negSize, 0.5 + yPos, ntrSize, 30);
- ctx.stroke();
- ctx.beginPath();
- ctx.rect(0.5 + axeMargin, 0.5 + yPos, negSize, 30);
- ctx.fillStyle = axesDrawInfo[i]["color0"];
- ctx.fill();
- ctx.stroke();
- ctx.beginPath();
- ctx.rect(
- 0.5 + rPreview.width - axeMargin - posSize,
- 0.5 + yPos,
- posSize,
- 30
- );
- ctx.fillStyle = axesDrawInfo[i]["color1"];
- ctx.fill();
- ctx.stroke();
- if (negSize > 40) {
- ctx.fillStyle = "#ffffff";
- ctx.font = "20px sans-serif";
- ctx.textAlign = "right";
- ctx.fillText(
- Math.round(negativeValue * 100) + "%",
- axeMargin + negSize - 5,
- yPos + 23
- );
- }
- if (posSize > 40) {
- ctx.fillStyle = "#ffffff";
- ctx.font = "20px sans-serif";
- ctx.textAlign = "left";
- ctx.fillText(
- Math.round(positiveValue * 100) + "%",
- axeMargin + negSize + ntrSize + 5,
- yPos + 23
- );
- }
- if (ntrSize > 40) {
- ctx.fillStyle = "#888888";
- ctx.font = "20px sans-serif";
- ctx.textAlign = "center";
- ctx.fillText(
- Math.round(neutralValue * 100) + "%",
- axeMargin + negSize + ntrSize / 2,
- yPos + 23
- );
- }
- ctx.drawImage(
- images[axesDrawInfo[i]["key"] + "0"],
- axeMargin - 73,
- yPos - 27
- );
- ctx.drawImage(
- images[axesDrawInfo[i]["key"] + "1"],
- rPreview.width - axeMargin + 73 - 86,
- yPos - 27
- );
- ctx.fillStyle = "#000000";
- ctx.font = "16px sans-serif";
- ctx.textAlign = "left";
- ctx.fillText(axesDrawInfo[i]["name0"], axeMargin + 8, yPos - 6);
- ctx.textAlign = "right";
- ctx.fillText(
- axesDrawInfo[i]["name1"],
- rPreview.width - axeMargin - 8,
- yPos - 6
- );
- yPos += 100;
- }
- var xShift = 0;
- var numBonus = 0;
- for (var b in bonus) {
- value = getQueryVariable(b);
- if (value > bonus[b]) {
- numBonus++;
- }
- }
- for (var b in bonus) {
- value = getQueryVariable(b);
- if (value > bonus[b]) {
- ctx.drawImage(
- images[b],
- rPreview.width / 2 - ((numBonus - 1) * 100) / 2 + xShift - 43,
- yPos - 27
- );
- xShift += 100;
- }
- }
- }
- }
- }
- for (var b in images) {
- var src = images[b];
- images[b] = new Image();
- images[b].src = src;
- images[b].onload = onImageLoaded;
- }
- function download_image() {
- var canvas = document.getElementById("generatedResults");
- var link = document.createElement("a");
- link.href = canvas.toDataURL();
- link.download = `PolitiScales_Results_${+new Date()}.png`;
- document.body.appendChild(link);
- link.click();
- document.body.removeChild(link);
- }
|