Apache
tcp/443
Open service 13.48.79.255:443 ยท www.grisar.devdev3.se
2026-01-10 11:37
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 11:37:50 GMT
Server: Apache
Upgrade: h2,h2c
Connection: Upgrade, close
Last-Modified: Sun, 16 Feb 2025 09:22:20 GMT
ETag: "18d6-62e3ef1cf2b00"
Accept-Ranges: bytes
Content-Length: 6358
Vary: Accept-Encoding
Content-Type: text/html
Page title: SL Bus Departures
<!DOCTYPE html>
<html>
<head>
<title>SL Bus Departures</title>
<style>
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
margin: 0;
padding: 15px;
min-height: 120vh;
box-sizing: border-box;
background-color: #f5f5f5;
font-size: 35px;
}
.departures {
display: flex;
gap: 12px;
flex-wrap: nowrap;
overflow-x: auto;
width: calc(100% + 30px);
margin: 0 -15px;
padding: 0 15px;
-webkit-overflow-scrolling: touch;
scrollbar-width: none;
-ms-overflow-style: none;
}
.departures::-webkit-scrollbar {
display: none;
}
.departure-item {
display: flex;
align-items: center;
gap: 6px;
background: white;
padding: 8px 12px;
border-radius: 30px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
flex: 0 0 auto;
}
.bus-number {
font-size: 20px;
background: #005C97;
color: white;
padding: 4px 10px;
border-radius: 20px;
font-weight: bold;
min-width: 24px;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
}
.time-container {
display: flex;
flex-direction: column;
align-items: center;
}
.time {
background: #E8E8E8;
color: #333;
padding: 4px 10px;
border-radius: 20px;
min-width: 44px;
text-align: center;
}
.departure-clock {
font-size: 12px;
color: #666;
margin-top: 2px;
}
.bus-clock {
font-size: 12px;
opacity: 0.8;
margin-top: 2px;
}
</style>
</head>
<body>
<div class="departures" id="departures"></div>
<div id="debug-info" style="display: none; position: fixed; top: 10px; left: 10px; background: rgba(255, 255, 255, 0.8); padding: 10px; border: 1px solid #ccc; border-radius: 5px; z-index: 1000;"></div>
<script>
async function fetchDepartures() {
try {
const response = await fetch('https://transport.integration.sl.se/v1/sites/1385/departures?forecast=60');
const data = await response.json();
displayDepartures(data.departures);
} catch (error) {
console.error('Error fetching departures:', error);
}
}
function displayDepartures(departures) {
const container = document.getElementById('departures');
container.innerHTML = '';
departures.forEach(departure => {
const div = document.createElement('div');
div.className = 'departure-item';
const timeValue = departure.expected || departure.scheduled;
if (!timeValue) {
console.error('No valid time found for departure:', departure);
return;
}
const departureTime = new Date(timeValue);
if (isNaN(departureTime.getTime())) {
console.error('Invalid date:', timeValue);
return;
}
const minutesElement = document.createElement('span');
minutesElement.className = 'time';
minutesElement.dataset.departureTime = departureTime.getTime();
const clockTime = departureTime.toLocaleTimeString('sv-SE', {
hour: '2-digit',
minute: '2-digit'
});
div.innerHTML = `
<span class="bus-number">
${departure.line.designation