From 22656f2ad9c69091bba813622aa612725e3f7f20 Mon Sep 17 00:00:00 2001 From: Curry141 <135717077+Daniongithub@users.noreply.github.com> Date: Mon, 21 Jul 2025 19:27:38 +0200 Subject: [PATCH] Add files --- css/style.css | 121 +++++++++++++++++++++++++++++++++++++++++++++ img/favicon.ico | Bin 0 -> 1150 bytes js/cercafermata.js | 72 +++++++++++++++++++++++++++ js/fermata.js | 70 ++++++++++++++++++++++++++ 4 files changed, 263 insertions(+) create mode 100644 css/style.css create mode 100644 img/favicon.ico create mode 100644 js/cercafermata.js create mode 100644 js/fermata.js diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..6799b4b --- /dev/null +++ b/css/style.css @@ -0,0 +1,121 @@ +:root { + --primary-color: #afafaf; + --accent-color: #0074d9; + --bg-color: #2e2d2d; + --white: #ffffff; + --light-gray: #848991; + --border-color: #727070; + --text-color: #ffffff; + --black: #000000; +} +body { + background-color: #282828; + text-align: center; + color: white; + font-family: Titillium Web; +} + +.search-result { + border: 2px solid white; + border-radius: 8px; + width: 15%; + margin: auto; + margin-left: 5px; + margin-right: 5px; + margin-top: 10px; + cursor: pointer; + display: inline-block; +} + +table { + border-collapse: collapse; + border-radius: 8px; + width: 85%; + margin: auto; + margin-top: 1rem; +} + +th { + background-color: lightslategray; +} + +th, +td { + border: 2px solid #444; + padding: 8px; + text-align: left; +} + +tr:nth-child(even) { + background-color: dimgray; +} + +.bus-card-red { + background-color: rgb(241, 120, 120) !important; +} + +header { + font-size: 67%; + background-color: #333; + height: auto; + padding: 0px 0px; + align-items: start; + width: 100%; + border-radius: 10px; +} + +nav ul { + list-style-type: none; + margin: 0; + padding: 0; + display: flex; + justify-content: left; +} + +nav { + text-align: center; + flex-shrink: 0; +} + +nav.index { + display: flex; + min-height: 51px; +} + +nav ul li { + margin-left: 20px; + margin-right: 20px; +} + +nav ul li a { + color: #fff; + text-decoration: none; + font-size: 16px; +} + +nav ul li a:hover { + text-decoration: underline; +} + +a { + color: orange; +} + +@media (max-width: 768px) { + .search-result { + display: block; + } +} +#bacino, +#searchBar { + padding: 10px; + font-size: 16px; + border-radius: 6px; + border: 1px solid var(--border-color); +} + +footer { + position: fixed; + bottom: 0px; + width: 100%; +} \ No newline at end of file diff --git a/img/favicon.ico b/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..95b83b1d326fa1ca4a1ca954f48a659513e6cd24 GIT binary patch literal 1150 zcmaiyc}P@I6o*e61r-%UM3(Il27=`hPPSo2(k7Ov(QaX8xlB1pn_AX1&ZJF~qh)9_ zn!7XORyJzmgq9XKNM^gHX3R-0sWfEO7wRuJX_c`Ba#>Jxsb;&&zx<2w z!O^;_%I_^r6=;8KgVlN$6=fC3D>OivuEX(!1SpOMEB{tQeeydZUS9oU&;gn6IZ1o++#Sd zxe-!a35TW=&O~m2`g##cuS9v7joM?@CL2OM2)o&L_UHZ@b`zNs%t6M#7jC?+b4v)h z3khf42`Y6Oa&+ls4c4+MO`;5b69}iK5*BSb1X8hcmJuzd)`vku9#3B?CS zqoDF`*KM<@D`txq0>%*({H_)Uuz!Jb&oRPHX4K4iCWZ-OJoO0Nc>s;o`EQM;+>U5J zSL~QfP&*MMfxmq@=ZQMPO<|P3N#%GNSR~EIi@J=Lrm}qV@m)R$;cu1ZOjx@0;IDNL z^e?lM%@hC*>PEzEoQax9!sBOcugif^incdGD2wHmbwUsR`TMx8bcE%$2C`wc(ZJ3HkAox#_SDwD?bwBFkL=EHlPz5n|I x`=_tA?!K=jov)uoG+T0K4bK0ujHquUk!2V&geXohIEnAYoOmX3M6Pgz`xARL5x)Qc literal 0 HcmV?d00001 diff --git a/js/cercafermata.js b/js/cercafermata.js new file mode 100644 index 0000000..28d6005 --- /dev/null +++ b/js/cercafermata.js @@ -0,0 +1,72 @@ +function populateSearchResults(results, selectedOption) { + const searchResultsContainer = document.getElementById('searchResults'); + searchResultsContainer.innerHTML = ''; + + if (results.length === 0) { + searchResultsContainer.innerHTML = '

Nessun risultato trovato

'; + return; + } + + results.forEach(item => { + const div = document.createElement('div'); + div.className = 'search-result'; + div.innerHTML = ` +
+

${item.nome}

+

Palina: ${item.palina}, Target ID: ${item.targetID}

+
+ `; + + div.addEventListener('click', () => { + const url = `fermata.html?palina=${encodeURIComponent(item.palina)}&targetID=${encodeURIComponent(item.targetID)}&selectedOption=${encodeURIComponent(selectedOption)}`; + window.location.href = url; + }); + + searchResultsContainer.appendChild(div); + }); +} + +function filterOptions(query, data) { + const q = query.toLowerCase(); + return data.filter(item => + (item.nome || '').toLowerCase().includes(q) || + (item.palina || '').toLowerCase().includes(q) || + (item.targetID || '').toLowerCase().includes(q) + ); +} + + +let allOptions = []; +let currentSelectedOption = ''; + +const searchBar = document.getElementById('searchBar'); +searchBar.addEventListener('input', function() { + const query = searchBar.value; + const filteredOptions = filterOptions(query, allOptions); + populateSearchResults(filteredOptions, currentSelectedOption); +}); + +document.getElementById('bacino').addEventListener('change', function(event) { + const selectedOption = event.target.value; + currentSelectedOption = selectedOption; + + if (!selectedOption) { + allOptions = []; + document.getElementById('searchResults').innerHTML = ''; + return; + } + + const resultsContainer = document.getElementById('searchResults'); + resultsContainer.innerHTML = '

Caricamento lista fermate in corso...

'; + + fetch(`http://localhost:3005/bacino?selectedOption=${selectedOption}`) + .then(res => res.json()) + .then(data => { + allOptions = data; + populateSearchResults(allOptions, selectedOption); + }) + .catch(err => { + resultsContainer.innerHTML = '

Errore nel caricamento delle fermate.

'; + console.error('Errore:', err); + }); +}); \ No newline at end of file diff --git a/js/fermata.js b/js/fermata.js new file mode 100644 index 0000000..d5f4892 --- /dev/null +++ b/js/fermata.js @@ -0,0 +1,70 @@ +const params = new URLSearchParams(window.location.search); +const palina = params.get('palina'); +const targetID = params.get('targetID'); +const selectedOption = params.get('selectedOption'); + +//const urlBackend = `https://api.vichingo455.freeddns.org/start-fermatebus.json/w?param=${targetID}¶m2=${selectedOption}&palina=${palina}`; +const urlBackend = `http://localhost:3005/fermata?param=${targetID}¶m2=${selectedOption}&palina=${palina}`; +function caricadati(){ + fetch(urlBackend) + .then(res => res.json()) + .then(data => { + const fermata_span = document.getElementById('fermata-span'); + if (data[0] && data[0].fermata !== undefined) { + fermata_span.innerHTML = `"${data[0].fermata}"`; + } + const container = document.getElementById('tabella-container'); + container.innerHTML = ''; + + if (!data || data.length === 0) { + container.innerHTML = '

Nessuna linea in arrivo.

'; + return; + } + + // Creo tabella + const table = document.createElement('table'); + + // Intestazione + const thead = document.createElement('thead'); + thead.innerHTML = ` + + Linea + Destinazione + Orario + Stato attuale + Veicolo + Soppressa + + `; + table.appendChild(thead); + + // Corpo tabella + const tbody = document.createElement('tbody'); + data.slice(1).forEach(item => { + const tr = document.createElement('tr'); + if (item.soppressa) { + tr.classList.add('bus-card-red'); + } + tr.innerHTML = ` + ${item.linea} + ${item.destinazione} + ${item.orario} + ${item.stato} + ${item.mezzo} + ${item.soppressa ? 'Sì' : 'No'} + `; + tbody.appendChild(tr); + }); + table.appendChild(tbody); + + container.appendChild(table); + }) + .catch(err => { + console.error('Errore nel caricamento dati:', err); + document.getElementById('tabella-container').textContent = 'Errore nel caricamento dati.'; + }); +} + +caricadati(); + +setInterval(caricadati, 60000); \ No newline at end of file