division in parties and flexbox for each party-rack

master
grgr 2 years ago
parent 25776eb1a7
commit 3146ec57fa

@ -9,10 +9,13 @@
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>The Parliament</h1>
<div class="hemicycle">
<div class="seat" id="seatRef">
<button class="mic">Loading...</button>
<div class="label">name</div>
<div class="party"id="partyRef">
<div class="seat" id="seatRef">
<button class="mic">Loading...</button>
<div class="label">name</div>
</div>
</div>
</div>

@ -1,44 +1,63 @@
let source_url = ""
let seatRef = document.getElementById("seatRef")
let partyRef = document.getElementById("partyRef")
let seatRef = document.querySelector(".seat")
let hemicycle = document.getElementsByClassName("hemicycle")[0]
let row = 5
fetch("https://hub.xpub.nl/soupboat/the-parliament/")
.then((response) => response.json())
.then((data) => {
source_url = data.base_url;
populateSeats(data.files)
populateSeats(data.parliament)
});
function populateSeats(representatives) {
for (const representative of representatives){
let seat = seatRef.cloneNode(true);
seat.querySelector(".label").innerHTML = representative.who;
seat.id = representative.who;
let filename = source_url + representative.filename;
let audio = new Audio(filename)
audio.addEventListener("canplaythrough", (e) => {
console.log(filename);
let mic = seat.querySelector(".mic");
mic.innerHTML = "Talk";
mic.addEventListener("click", () => {
function populateSeats(parliament) {
for (const group of Object.keys(parliament)){ //gets the parent's keys
let party = partyRef.cloneNode(true);
party.id = group
for (representative of parliament[group]){
let seat = seatRef.cloneNode(true);
seat.querySelector(".label").innerHTML = representative.who;
seat.id = representative.who;
let filename = source_url + group + '/' + representative.filename;
let audio = new Audio(filename)
audio.addEventListener("canplaythrough", (e) => {
console.log(filename);
if (audio.paused) {
audio.play();
mic.innerHTML="Pause";
mic.style.color ="red";
} else {
let mic = seat.querySelector(".mic");
mic.innerHTML = "Talk";
mic.addEventListener("click", () => {
console.log(filename);
if (audio.paused) {
audio.play();
mic.innerHTML="Pause";
mic.style.color ="red";
} else {
audio.pause();
mic.innerHTML="Talk"
}
});
audio.addEventListener("ended", () => {
audio.pause();
mic.innerHTML="Talk"
}
});
audio.addEventListener("ended", () => {
audio.pause();
audio.currentTime = 0;
mic.innerHTML = "Talk Again"
audio.currentTime = 0;
mic.innerHTML = "Talk Again"
});
});
});
hemicycle.appendChild(seat);
party.appendChild(seat);
}
hemicycle.appendChild(party);
}
}
/*
TODO
- upload svg
- loop through the elements to associate seat to each of them
- create label
- rotation?
*/

@ -16,20 +16,32 @@ body, html{
.hemicycle{
display: flex;
flex-wrap: wrap;
align-content: space-between;
width: 80vw;
width: 100vw;
margin: 0 auto;
}
h1{
font-size: 60px;
text-align: center;
}
#partyRef,
#seatRef{
display: none;
}
.party{
border: solid 1px black;
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-content: flex-start;
width: 20vw;
}
.seat{
display: flex;
flex-direction: column;
align-items: center;
margin: 4px 4px;
align-content: center;
margin: 4px 1px;
width: 100px;
}
@ -41,3 +53,6 @@ body, html{
background-color: white;
color: currentColor;
}
.label{
width: 80px;
}

Loading…
Cancel
Save