update
This commit is contained in:
parent
d8194a2aa4
commit
2d1e2a32af
3 changed files with 146 additions and 154 deletions
96
public/index.html
Normal file → Executable file
96
public/index.html
Normal file → Executable file
File diff suppressed because one or more lines are too long
189
public/scripts.js → public/script.js
Normal file → Executable file
189
public/scripts.js → public/script.js
Normal file → Executable file
|
@ -1,109 +1,119 @@
|
||||||
// <CRYPTO_DONATION>
|
// <CRYPTO_DONATION>
|
||||||
|
|
||||||
var donateButton = document.getElementById('donateButton');
|
var donateButton = document.getElementById("donateButton");
|
||||||
var card = document.getElementById('card');
|
var card = document.getElementById("card");
|
||||||
|
|
||||||
donateButton.addEventListener('click', function(event) {
|
donateButton.addEventListener("click", function (event) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
if (card.classList.contains('card-out')) {
|
if (card.classList.contains("card-out")) {
|
||||||
card.classList.remove('card-out');
|
card.classList.remove("card-out");
|
||||||
card.classList.add('card-in');
|
card.classList.add("card-in");
|
||||||
} else {
|
} else {
|
||||||
card.classList.remove('card-in');
|
card.classList.remove("card-in");
|
||||||
card.classList.add('card-out');
|
card.classList.add("card-out");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('click', function(event) {
|
window.addEventListener("click", function (event) {
|
||||||
if(event.target === card || card.contains(event.target)) {
|
if (event.target === card || card.contains(event.target)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (card.classList.contains('card-in')) {
|
if (card.classList.contains("card-in")) {
|
||||||
card.classList.remove('card-in');
|
card.classList.remove("card-in");
|
||||||
card.classList.add('card-out');
|
card.classList.add("card-out");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var cryptoWallets = [
|
var cryptoWallets = [
|
||||||
{
|
{
|
||||||
symbol: 'XMR',
|
symbol: "XMR",
|
||||||
name: 'Monero',
|
name: "Monero",
|
||||||
address: '49r2aeun8DtV5VqZpZSwRpS83WfUWEaLt4NG8HJwwVkbiT1vSsXTXrPFKkKTdc6MPX9iezbTidNPvhGZKCnM1338TfK6Hgi',
|
address:
|
||||||
},
|
"49r2aeun8DtV5VqZpZSwRpS83WfUWEaLt4NG8HJwwVkbiT1vSsXTXrPFKkKTdc6MPX9iezbTidNPvhGZKCnM1338TfK6Hgi"
|
||||||
{
|
},
|
||||||
symbol: 'LTC',
|
{
|
||||||
name: 'Litecoin',
|
symbol: "LTC",
|
||||||
address: 'LRAm7h5XENknfYEpbdVsvyGY8D6MiXGTDV',
|
name: "Litecoin",
|
||||||
},
|
address: "LRAm7h5XENknfYEpbdVsvyGY8D6MiXGTDV"
|
||||||
{
|
},
|
||||||
symbol: 'BTC',
|
{
|
||||||
name: 'Bitcoin',
|
symbol: "BTC",
|
||||||
address: 'bc1qkv97ajh7f0a72l9rsjd3fmmly5q5uywr06q3x0',
|
name: "Bitcoin",
|
||||||
}
|
address: "bc1qkv97ajh7f0a72l9rsjd3fmmly5q5uywr06q3x0"
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
var walletsContainer = document.getElementById('wallets');
|
var walletsContainer = document.getElementById("wallets");
|
||||||
var qrImage = document.getElementById('qrImage');
|
var qrImage = document.getElementById("qrImage");
|
||||||
var donateTitle = document.getElementById('donateTitle');
|
var donateTitle = document.getElementById("donateTitle");
|
||||||
var donateWarn = document.getElementById('donateWarn');
|
var donateWarn = document.getElementById("donateWarn");
|
||||||
var walletAddress = document.getElementById('walletAddress');
|
var walletAddress = document.getElementById("walletAddress");
|
||||||
var copyButton = document.getElementById('copyButton');
|
var copyButton = document.getElementById("copyButton");
|
||||||
|
|
||||||
function selectWallet(symbol) {
|
function selectWallet(symbol) {
|
||||||
var wallet = cryptoWallets.find(function (w) {
|
var wallet = cryptoWallets.find(function (w) {
|
||||||
return w.symbol === symbol;
|
return w.symbol === symbol;
|
||||||
});
|
});
|
||||||
if (!wallet) return;
|
if (!wallet) return;
|
||||||
|
|
||||||
var buttons = Array.from(walletsContainer.children);
|
var buttons = Array.from(walletsContainer.children);
|
||||||
buttons.forEach(function (button) {
|
buttons.forEach(function (button) {
|
||||||
button.classList.remove('active');
|
button.classList.remove("active");
|
||||||
if (button.textContent === symbol) {
|
if (button.textContent === symbol) {
|
||||||
button.classList.add('active');
|
button.classList.add("active");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
qrImage.src = 'https://api.qrserver.com/v1/create-qr-code/?size=180x180&data=' + wallet.address;
|
qrImage.src =
|
||||||
donateTitle.textContent = 'Donate ' + wallet.name;
|
"https://api.qrserver.com/v1/create-qr-code/?size=180x180&data=" +
|
||||||
donateWarn.textContent = 'Send only ' + wallet.name + ' (' + wallet.symbol + ') to this deposit address. Sending any other coin or token to this address may result in the loss of your donation. Thanks!';
|
wallet.address;
|
||||||
walletAddress.value = wallet.address;
|
donateTitle.textContent = "Donate " + wallet.name;
|
||||||
copyButton.textContent = '✚ Copy';
|
donateWarn.textContent =
|
||||||
|
"Send only " +
|
||||||
|
wallet.name +
|
||||||
|
" (" +
|
||||||
|
wallet.symbol +
|
||||||
|
") to this deposit address. Sending any other coin or token to this address may result in the loss of your donation. Thanks!";
|
||||||
|
walletAddress.value = wallet.address;
|
||||||
|
copyButton.textContent = "✚ Copy";
|
||||||
}
|
}
|
||||||
|
|
||||||
function copyText() {
|
function copyText() {
|
||||||
var input = document.createElement('input');
|
var input = document.createElement("input");
|
||||||
document.body.appendChild(input);
|
document.body.appendChild(input);
|
||||||
input.value = walletAddress.value;
|
input.value = walletAddress.value;
|
||||||
input.select();
|
input.select();
|
||||||
document.execCommand('copy');
|
document.execCommand("copy");
|
||||||
document.body.removeChild(input);
|
document.body.removeChild(input);
|
||||||
copyButton.textContent = '✔ Copied';
|
copyButton.textContent = "✔ Copied";
|
||||||
}
|
}
|
||||||
|
|
||||||
cryptoWallets.forEach(function (wallet) {
|
cryptoWallets.forEach(function (wallet) {
|
||||||
var button = document.createElement('button');
|
var button = document.createElement("button");
|
||||||
button.textContent = wallet.symbol;
|
button.textContent = wallet.symbol;
|
||||||
button.addEventListener('click', function () {
|
button.addEventListener("click", function () {
|
||||||
selectWallet(wallet.symbol);
|
selectWallet(wallet.symbol);
|
||||||
});
|
});
|
||||||
walletsContainer.appendChild(button);
|
walletsContainer.appendChild(button);
|
||||||
});
|
});
|
||||||
|
|
||||||
copyButton.addEventListener('click', copyText);
|
copyButton.addEventListener("click", copyText);
|
||||||
|
|
||||||
selectWallet(cryptoWallets[0].symbol);
|
selectWallet(cryptoWallets[0].symbol);
|
||||||
|
|
||||||
// </CRYPTO_DONATION>
|
// </CRYPTO_DONATION>
|
||||||
|
|
||||||
|
|
||||||
let globalUniforms = {
|
let globalUniforms = {
|
||||||
time: { value: 0 }
|
time: { value: 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
import * as THREE from "https://cdn.skypack.dev/three@0.136.0";
|
import * as THREE from "https://cdn.skypack.dev/three@0.136.0";
|
||||||
import { OrbitControls } from "https://cdn.skypack.dev/three@0.136.0/examples/jsm/controls/OrbitControls";
|
import { OrbitControls } from "https://cdn.skypack.dev/three@0.136.0/examples/jsm/controls/OrbitControls";
|
||||||
import { CSS2DRenderer, CSS2DObject } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/renderers/CSS2DRenderer.js';
|
import {
|
||||||
|
CSS2DRenderer,
|
||||||
|
CSS2DObject
|
||||||
|
} from "https://cdn.skypack.dev/three@0.136.0/examples/jsm/renderers/CSS2DRenderer.js";
|
||||||
|
|
||||||
let scene = new THREE.Scene();
|
let scene = new THREE.Scene();
|
||||||
let camera = new THREE.PerspectiveCamera(45, innerWidth / innerHeight, 1, 2000);
|
let camera = new THREE.PerspectiveCamera(45, innerWidth / innerHeight, 1, 2000);
|
||||||
|
@ -117,8 +127,8 @@ document.body.appendChild(renderer.domElement);
|
||||||
|
|
||||||
let labelRenderer = new CSS2DRenderer();
|
let labelRenderer = new CSS2DRenderer();
|
||||||
labelRenderer.setSize(window.innerWidth, window.innerHeight);
|
labelRenderer.setSize(window.innerWidth, window.innerHeight);
|
||||||
labelRenderer.domElement.style.position = 'absolute';
|
labelRenderer.domElement.style.position = "absolute";
|
||||||
labelRenderer.domElement.style.top = '0px';
|
labelRenderer.domElement.style.top = "0px";
|
||||||
document.body.appendChild(labelRenderer.domElement);
|
document.body.appendChild(labelRenderer.domElement);
|
||||||
|
|
||||||
window.addEventListener("resize", onWindowResize);
|
window.addEventListener("resize", onWindowResize);
|
||||||
|
@ -220,13 +230,13 @@ const pinGeometryAtlanta = new THREE.SphereGeometry(0.05, 32, 32);
|
||||||
const pinMaterialAtlanta = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
const pinMaterialAtlanta = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
||||||
const pinMeshAtlanta = new THREE.Mesh(pinGeometryAtlanta, pinMaterialAtlanta);
|
const pinMeshAtlanta = new THREE.Mesh(pinGeometryAtlanta, pinMaterialAtlanta);
|
||||||
|
|
||||||
const labelDivAtlanta = document.createElement('div');
|
const labelDivAtlanta = document.createElement("div");
|
||||||
labelDivAtlanta.className = 'label-atl';
|
labelDivAtlanta.className = "label-atl";
|
||||||
labelDivAtlanta.textContent = 'Atlanta';
|
labelDivAtlanta.textContent = "Atlanta";
|
||||||
|
|
||||||
const labelObjectAtlanta = new CSS2DObject(labelDivAtlanta);
|
const labelObjectAtlanta = new CSS2DObject(labelDivAtlanta);
|
||||||
|
|
||||||
const pinLatitudeAtlanta = 33.74932660;
|
const pinLatitudeAtlanta = 33.7493266;
|
||||||
const pinLongitudeAtlanta = -95.39035664;
|
const pinLongitudeAtlanta = -95.39035664;
|
||||||
|
|
||||||
const sphericalAtlanta = new THREE.Spherical();
|
const sphericalAtlanta = new THREE.Spherical();
|
||||||
|
@ -249,9 +259,9 @@ const pinGeometrySanJose = new THREE.SphereGeometry(0.05, 32, 32);
|
||||||
const pinMaterialSanJose = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
const pinMaterialSanJose = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
||||||
const pinMeshSanJose = new THREE.Mesh(pinGeometrySanJose, pinMaterialSanJose);
|
const pinMeshSanJose = new THREE.Mesh(pinGeometrySanJose, pinMaterialSanJose);
|
||||||
|
|
||||||
const labelDivSanJose = document.createElement('div');
|
const labelDivSanJose = document.createElement("div");
|
||||||
labelDivSanJose.className = 'label-san';
|
labelDivSanJose.className = "label-san";
|
||||||
labelDivSanJose.textContent = 'San Jose';
|
labelDivSanJose.textContent = "San Jose";
|
||||||
|
|
||||||
const labelObjectSanJose = new CSS2DObject(labelDivSanJose);
|
const labelObjectSanJose = new CSS2DObject(labelDivSanJose);
|
||||||
|
|
||||||
|
@ -276,11 +286,14 @@ scene.add(labelObjectSanJose);
|
||||||
|
|
||||||
const pinGeometryVintHill = new THREE.SphereGeometry(0.05, 32, 32);
|
const pinGeometryVintHill = new THREE.SphereGeometry(0.05, 32, 32);
|
||||||
const pinMaterialVintHill = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
const pinMaterialVintHill = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
||||||
const pinMeshVintHill = new THREE.Mesh(pinGeometryVintHill, pinMaterialVintHill);
|
const pinMeshVintHill = new THREE.Mesh(
|
||||||
|
pinGeometryVintHill,
|
||||||
|
pinMaterialVintHill
|
||||||
|
);
|
||||||
|
|
||||||
const labelDivVintHill = document.createElement('div');
|
const labelDivVintHill = document.createElement("div");
|
||||||
labelDivVintHill.className = 'label-vint';
|
labelDivVintHill.className = "label-vint";
|
||||||
labelDivVintHill.textContent = 'Vint Hill';
|
labelDivVintHill.textContent = "Vint Hill";
|
||||||
|
|
||||||
const labelObjectVintHill = new CSS2DObject(labelDivVintHill);
|
const labelObjectVintHill = new CSS2DObject(labelDivVintHill);
|
||||||
|
|
||||||
|
@ -306,9 +319,9 @@ const pinGeometryChicago = new THREE.SphereGeometry(0.05, 32, 32);
|
||||||
const pinMaterialChicago = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
const pinMaterialChicago = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
||||||
const pinMeshChicago = new THREE.Mesh(pinGeometryChicago, pinMaterialChicago);
|
const pinMeshChicago = new THREE.Mesh(pinGeometryChicago, pinMaterialChicago);
|
||||||
|
|
||||||
const labelDivChicago = document.createElement('div');
|
const labelDivChicago = document.createElement("div");
|
||||||
labelDivChicago.className = 'label-cha';
|
labelDivChicago.className = "label-cha";
|
||||||
labelDivChicago.textContent = 'Chicago';
|
labelDivChicago.textContent = "Chicago";
|
||||||
|
|
||||||
const labelObjectChicago = new CSS2DObject(labelDivChicago);
|
const labelObjectChicago = new CSS2DObject(labelDivChicago);
|
||||||
|
|
||||||
|
@ -334,9 +347,9 @@ const pinGeometryNewYork = new THREE.SphereGeometry(0.05, 32, 32);
|
||||||
const pinMaterialNewYork = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
const pinMaterialNewYork = new THREE.MeshBasicMaterial({ color: 0x31302c });
|
||||||
const pinMeshNewYork = new THREE.Mesh(pinGeometryNewYork, pinMaterialNewYork);
|
const pinMeshNewYork = new THREE.Mesh(pinGeometryNewYork, pinMaterialNewYork);
|
||||||
|
|
||||||
const labelDivNewYork = document.createElement('div');
|
const labelDivNewYork = document.createElement("div");
|
||||||
labelDivNewYork.className = 'label-york';
|
labelDivNewYork.className = "label-york";
|
||||||
labelDivNewYork.textContent = 'New York';
|
labelDivNewYork.textContent = "New York";
|
||||||
|
|
||||||
const labelObjectNewYork = new CSS2DObject(labelDivNewYork);
|
const labelObjectNewYork = new CSS2DObject(labelDivNewYork);
|
||||||
|
|
||||||
|
@ -357,8 +370,6 @@ labelObjectNewYork.position.copy(positionNewYork);
|
||||||
scene.add(pinMeshNewYork);
|
scene.add(pinMeshNewYork);
|
||||||
scene.add(labelObjectNewYork);
|
scene.add(labelObjectNewYork);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ARCS
|
// ARCS
|
||||||
|
|
||||||
function renderArc(startPosition, endPosition) {
|
function renderArc(startPosition, endPosition) {
|
||||||
|
@ -407,4 +418,4 @@ function onWindowResize() {
|
||||||
camera.updateProjectionMatrix();
|
camera.updateProjectionMatrix();
|
||||||
renderer.setSize(innerWidth, innerHeight);
|
renderer.setSize(innerWidth, innerHeight);
|
||||||
labelRenderer.setSize(innerWidth, innerHeight);
|
labelRenderer.setSize(innerWidth, innerHeight);
|
||||||
}
|
}
|
15
public/styles.css → public/style.css
Normal file → Executable file
15
public/styles.css → public/style.css
Normal file → Executable file
|
@ -1,7 +1,7 @@
|
||||||
body {
|
body {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: 'Open Sans', sans-serif;
|
font-family: "Open Sans", sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-container {
|
.header-container {
|
||||||
|
@ -25,7 +25,7 @@ body {
|
||||||
|
|
||||||
.header-container h1 {
|
.header-container h1 {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-family: 'Open Sans', sans-serif;
|
font-family: "Open Sans", sans-serif;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,8 @@ body {
|
||||||
border: 0;
|
border: 0;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
transition: color 300ms ease-out, background 300ms ease-out, border 300ms ease-out, transform 300ms ease-out, opacity 300ms ease-out;
|
transition: color 300ms ease-out, background 300ms ease-out,
|
||||||
|
border 300ms ease-out, transform 300ms ease-out, opacity 300ms ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
input,
|
input,
|
||||||
|
@ -265,10 +266,14 @@ button {
|
||||||
font-size: 1em;
|
font-size: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.label-york, .label-atl, .label-cha, .label-vint, .label-san {
|
.label-york,
|
||||||
|
.label-atl,
|
||||||
|
.label-cha,
|
||||||
|
.label-vint,
|
||||||
|
.label-san {
|
||||||
color: white;
|
color: white;
|
||||||
background-color: rgba(0, 0, 0, 0.7);
|
background-color: rgba(0, 0, 0, 0.7);
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue