-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathturtlepods.js
More file actions
81 lines (62 loc) · 2.39 KB
/
turtlepods.js
File metadata and controls
81 lines (62 loc) · 2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const DATA_FILE = 'https://dcooke28.github.io/tbots/turtlepods.json';
let allData = [];
let currentId = 1;
async function load() {
const response = await fetch(DATA_FILE);
allData = await response.json();
const params = new URLSearchParams(window.location.search);
const queryId = params.get('id');
if (queryId) {
currentId = parseInt(queryId, 10);
if (isNaN(currentId) || currentId < 1) {
currentId = 1;
}
}
// Clamp query id to a valid range
currentId = Math.max(1, Math.min(currentId, allData.length));
document.querySelector('.loading').style.display = 'none';
displayData(currentId);
updateNavigation();
}
function displayData(id) {
const index = id - 1;
const data = allData[index];
currentId = id;
window.history.replaceState({}, '', `?id=${id}`);
document.getElementById('dataDescription').textContent = data.description || '';
document.getElementById('dataSiteNumber').textContent = data['site number'] || '';
document.getElementById('dataTransect').textContent = data.transect || '';
document.getElementById('dataShovelTestNumber').textContent = data['shovel test number'] || '';
document.getElementById('dataDepth').textContent = data.depth || '';
document.getElementById('dataUtm').textContent = data.utm || '';
const imageElement = document.getElementById('artifactImage');
const imagePath = `imgs/${id}.jpg`;
imageElement.src = imagePath;
imageElement.alt = `Artifact ${id}`;
imageElement.onerror = () => {
imageElement.classList.add('placeholder');
imageElement.style.display = 'flex';
imageElement.textContent = 'No image available';
};
document.getElementById('currentId').textContent = id;
document.getElementById('totalCount').textContent = allData.length;
}
function updateNavigation() {
const prevBtn = document.getElementById('prevBtn');
const nextBtn = document.getElementById('nextBtn');
prevBtn.disabled = currentId <= 1;
nextBtn.disabled = currentId >= allData.length;
}
document.getElementById('prevBtn').addEventListener('click', () => {
if (currentId > 1) {
displayData(currentId - 1);
updateNavigation();
}
});
document.getElementById('nextBtn').addEventListener('click', () => {
if (currentId < allData.length) {
displayData(currentId + 1);
updateNavigation();
}
});
load();