km0 2 years ago
commit 3afc1d026b

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

File diff suppressed because one or more lines are too long

@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Parliament</title>
<script src="script.js" defer></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>The Jingle Board Parliament</h1>
<div class="btn" id="info-btn" >?</div>
<div class="info" id="info">
<h2>SI18 - Weekly Release #4</h2>
<p>17—05—2022</p>
<br />
<p>The format of this week's release is a jingle board arranged in the layout of a parliament! Each seat is a button that plays an audio snippet when pressed. There is no linear or predefined outcome but the listener can create a unique parliament conference themselves. Therefore, the meaning of the audio contributions can be changed and recontextualised. The contributions include a range from self-made recordings, movie quotes, excerpts and re-enactments of political speeches, sound effects, audio snippets from well-known videos on the internet and covers of European anthems.</p>
<p>Our take on this idea of the parliament is rooted in the influence that elements of pop-culture have on politics, and more precisely on shaping the characters and the voices that then inhabit a parliament. While much of the politics happens outside of official institutional buildings, yet the idea of the parliament remains a pure symbol of the place in which democracy is being performed. Let's renew the voices that are usually heard in political discourses!</p>
<dl>
<dt>Contribution by:</dt>
<dd>Supisara Burapachaisri, Kimberley Cosmilla, Francesco Luzzana, Miriam Schöb, Mitsa Chaida-Michelakou, Ål Nik (Alexandra Nikolova), Gersande Schellinx, Jian Haake, Emma Prato, Carmen, Erica Gargaglione</dd>
<br>
<dt>Caretakers:</dt>
<dd>Erica Gargaglione, Miriam Schöb, Mitsa Chaida-Michelakou</dd>
</dl>
</div>
<div class="hemicycle">
<div class="party"id="partyRef">
<h4 id="partyName"></h4>
<div class="seats">
<div class="seat" id="seatRef">
<button class="mic">Loading...</button>
<div class="label">name</div>
</div>
</div>
</div>
</div>
</body>
</html>l

@ -0,0 +1,84 @@
let source_url = ""
let partyRef = document.getElementById("partyRef")
let seatRef = document.querySelector(".seat")
let hemicycle = document.getElementsByClassName("hemicycle")[0]
let row = 5
let btn = document.getElementById("info-btn")
let info = document.getElementById("info")
fetch("https://hub.xpub.nl/soupboat/the-parliament/")
.then((response) => response.json())
.then((data) => {
source_url = data.base_url;
populateSeats(data.parliament)
});
function populateSeats(parliament) {
for (const group of Object.keys(parliament)){ //gets the parent's keys
let party = partyRef.cloneNode(true);
let partyName = party.querySelector("h4")
party.id = group;
partyName.innerHTML = 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);
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 ="white";
mic.style.background = "red"
} else {
audio.pause();
mic.innerHTML="Talk"
}
});
audio.addEventListener("ended", () => {
audio.pause();
audio.currentTime = 0;
mic.style.background = "white"
mic.style.color ="red";
});
});
party.appendChild(seat);
}
hemicycle.appendChild(party);
}
}
// info
btn.addEventListener("click", showInfo)
function showInfo(){
if (info.style.display === "none"){
btn.innerHTML = "X";
console.log("click");
info.style.display = "block";
} else {
btn.innerHTML = "?";
info.style.display = "none";
}
}
/*
TODO
- upload svg
- loop through the elements to associate seat to each of them
- create label
- rotation?
*/

@ -0,0 +1,109 @@
:root{
--color1: rgb(105, 105, 255);
}
* {
box-sizing: border-box;
}
body, html{
margin: 0;
padding: 0;
color: var(--color1);
font-family: sans-serif;
}
.btn{
position: fixed;
z-index: 99;
top: 16px;
left: 16px;
font-size: 36px;
font-family: sans-serif;
text-align: center;
border: solid 2px var(--color1);
width: 48px;
height: 48px;
border-radius: 50%;
background-color: white;
padding: 2px 0;
}
.btn:hover{
cursor: pointer;
}
.info{
display: none;
font-size: 2.5ch;
position: fixed;
top: 0;
left: 0;
z-index: 1;
width: 50vw;
height: 100vh;
background-color: white;
border: solid 2px var(--color1);
overflow: auto;
padding-left: 16px;
}
h2{
margin: 0;
margin-top: 96px;
font-weight: normal;
}
dt {
font-style: italic;
}
.hemicycle{
display: flex;
flex-flow: column wrap;
align-content: stretch;
justify-content: right;
/* 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;
justify-content: center;
margin: 8px 0;
}
h4{
width: 160px;
}
.seats{
display: flex;
flex-direction: row;
align-content: center;
margin: 4px 4px;
}
.seat .mic{
width: 80px;
height: 80px;
border-radius: 10%;
border: solid 3px var(--color1);
background-color: white;
color: currentColor;
}
.label{
width: 90px;
overflow-wrap: break-word;
font-size: 1.5ch;
}

File diff suppressed because one or more lines are too long

Binary file not shown.
Loading…
Cancel
Save