Compare commits

..

No commits in common. "3ea4597622c185db73d6c6e1d0cf79f0f60c12f8" and "1abaa799d0a80b60dcebe22a18f7ead90a14d203" have entirely different histories.

3 changed files with 130 additions and 360 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,192 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mapping Movements - Alternative map of movements</title>
<style>
:root{
--marker-size: 20px;
}
body {
background: linear-gradient(#e66465, #9198e5);
height: 100vh;
color: white;
font-family: sans-serif;
}
.about {
position: absolute;
bottom: 20px;
right: 20px;
width: 400px;
z-index: 10;
}
#map {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
.initiative::before {
position: absolute;
top: 0;
left: 0;
width: var(--marker-size);
height: var(--marker-size);
/* background: black; */
border: solid 2px black;
/* border-style: dotted; */
border-radius: 0 7px 0 7px;
content: ' ';
}
.initiative.selected::before, .initiative:hover::before {
background: black;
}
.initiative {
position: absolute;
top: calc(50% - 50px);
left: 0;
/* height: 100px;
width: 100px; */
/* overflow: hidden; */
height: var(--marker-size);
width: var(--marker-size);
transition: left 2s, top 2s;
cursor: pointer;
}
.initiative h2 {
position: absolute;
width: 250px;
font-size: 100%;
margin: 0;
/* opacity: .1; */
display: none;
top: calc(var(--marker-size) - 5px);
left: calc(var(--marker-size) + 10px);
}
.initiative .organisation {
position: absolute;
width: 250px;
/* opacity: .1; */
display: none;
bottom: calc(var(--marker-size) - 5px);
left: calc(var(--marker-size) + 10px);
}
.initiative:hover .organisation,
.initiative:hover h2,
.initiative.selected .organisation,
.initiative.selected h2 {
opacity: 1;
display: block;
}
</style>
<script>
class Map {
constructor(mapEl) {
this.margin = 60;
this.mapEl = mapEl;
this.initiatives = []
this.similarities = {}
this.offsets = []
}
_load() {
return fetch("similarities.json")
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.json();
})
.then((response) => {
this.initiatives = response.initiatives
this.similarities = response.similarities
this.offsets = response.pca_1
});
}
init() {
this._load()
.then(() => {
this._createElements()
this.selectInitiative(0)
window.addEventListener('resize', (e) => this.selectInitiative(this.selectedIndex))
});
}
_createElements() {
this.mapEl.innerHMTL = "";
this.initiatives.forEach((initiative, initiative_idx) => {
const el = document.createElement('div')
el.classList.add('initiative')
el.innerHTML = `
<h2>${initiative.Title}</h2>
<div class='organisation'>${initiative.Organisation}</div>
`;
el.addEventListener('click', (e) => this.selectInitiative(initiative_idx));
initiative['el'] = el;
this.mapEl.appendChild(el);
})
}
selectInitiative(nr) {
this.selectedIndex = nr;
this.selectedInitiative = this.initiatives[nr];
const radius = Math.min(window.innerWidth, window.innerHeight / 2) - 2 * this.margin;
const centerY = window.innerHeight / 2 - this.margin;
const centerX = this.margin;
this.similarities[this.selectedIndex].forEach((similarity, initiative_idx) => {
const offset = this.offsets[initiative_idx] // initiative_idx / (this.initiatives.length - 1);
const el = this.initiatives[initiative_idx]['el'];
const r = (similarity - 1) * radius;
const x = Math.cos(offset * Math.PI + Math.PI * .5) * r
const y = Math.sin(offset * Math.PI + Math.PI * .5) * r
el.style.left = `${centerX + x}px`;
el.style.top = `${centerY + y}px`;
if (this.selectedIndex == initiative_idx) {
el.classList.add('selected');
} else {
el.classList.remove('selected')
}
});
}
}
var map;
document.addEventListener("DOMContentLoaded", (event) => {
map = new Map(document.getElementById('map'));
map.init()
});
</script>
</head>
<body>
<div class="about">This map was created by Ruben van de Ven for the <em>Mapping Movements</em> pressure cooker,
organised by Creative Coding Utrecht for the Copernicus Institute of the Utrecht University.</div>
<div id="map"></div>
</body>
</html>