exports.id = 'handledepartures'; exports.title = 'Handle departures'; exports.group = 'Worksys'; exports.color = '#5D9CEC'; exports.version = '0.0.1'; exports.output = ['white']; exports.input = 2; exports.author = 'Rastislav Kovac'; exports.icon = 'cloud-upload'; exports.readme = `Handle bus departures responses from service-prod01.worksys.io`; const { execSync } = require('child_process'); const fs = require('fs'); /** * Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar * based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php * @returns {array} [int month, int day] */ function getEaster(year) { var f = Math.floor, // Golden Number - 1 G = year % 19, C = f(year / 100), // related to Epact H = (C - f(C / 4) - f((8 * C + 13) / 25) + 19 * G + 15) % 30, // number of days from 21 March to the Paschal full moon I = H - f(H / 28) * (1 - f(29 / (H + 1)) * f((21 - G) / 11)), // weekday for the Paschal full moon J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7, // number of days from 21 March to the Sunday on or before the Paschal full moon L = I - J, month = 3 + f((L + 40) / 44), day = L + 28 - 31 * f(month / 4); return [month, day]; } const pracovneDni = ['Pondeli', 'Uteri', 'Streda', 'Ctvrtek', 'Patek']; const statneSviatky = [ '1.1', '7.4', //velky piatok '10.4', // Veľkonočný pondelok - deň pracovného pokoja '1.5', '8.5', '5.7', '6.7', '28.9', '28.10', '17.11', '24.12', '25.12', '26.12' ]; const v32_42 = [ '23.12', '24.12', '25.12', '26.12', '27.12', '28.12', '29.12', '30.12', '31.12', '1.1', '2.1', '6.2', '7.2', '8.2', '9.2', '10.2', '11.2', '12.2', '6.4', '1.9' ]; exports.install = function(instance) { let departures = []; let firstDepartureTime = "00:00"; instance.on('0', function(flowdata) { firstDepartureTime = "00:00"; departures = flowdata.data; //console.log("^^^^^^^^^^^^", departures); return; const dnesnyDatum = flowdata.data; // ['22.12', 'streda'] console.log('++++++++++ densnyDatum', dnesnyDatum) let vysvetlivky = new Set(); if (statneSviatky.includes(dnesnyDatum[0])) { vysvetlivky.add('6+'); if (dnesnyDatum[0] == '17.11') { vysvetlivky.add('17'); // ide iba 17.11, vysvetlivky = ['6+', '17'] } else if (dnesnyDatum[0] == '25.12' || dnesnyDatum[0] == '1.1') { vysvetlivky.add('25'); // nejede 25.12.2022,1.1.2023,25.12.2023 ['6+', '25'] } else if (dnesnyDatum[0] == '31.12') { vysvetlivky.add('31'); // nejede 31.12 ['6+', '31'] } else if (dnesnyDatum[0] == '24.12') { vysvetlivky.add('24'); // nejede 24.12 ['6+', '24'] } } else if (pracovneDni.includes(dnesnyDatum[1])) { vysvetlivky.add('X'); } else if (dnesnyDatum[1] == 'Sobota' || dnesnyDatum[1] === 'Nedele') { vysvetlivky.add('6+') } const d = new Date(); const month = d.getMonth(); if (v32_42.includes(dnesnyDatum[0])) { vysvetlivky.add('32'); vysvetlivky.add('42'); } else if (month == 6 || month == 7) //ked je mesiac jul august { vysvetlivky.add('32'); vysvetlivky.add('42'); vysvetlivky.add('33'); } console.log('', vysvetlivky); // X jede v pracovních dnech // 6 jede v sobotu // + jede v neděli a ve státem uznané svátky // 17 jede jen 17.11.2023 // 32 jede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 // 42 nejede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 // 24 nejede 24.12.2022,24.12.2023 // 31 nejede 31.12.2022,31.12.2023 // 25 nejede 25.12.2022,1.1.2023,25.12.2023 // 33 jede od 1.7.2023 do 1.9.2023 departures = []; for (let i = 0; i < allDepartures.length; i++) { departure = allDepartures[i]; const params = departure[3].length; if (params == 1) { v = departure[3][0] if (v == 'X' && vysvetlivky.has('X')) departures.push(departure); else if (v == '6+' && vysvetlivky.has('6+')) departures.push(departure); else if (v == '25' && vysvetlivky.has('25')) continue; else if (v == '17' && vysvetlivky.has('17')) departures.push(departure); else if (v == '24' && vysvetlivky.has('24')) continue; } else if (params == 2) { v1 = departure[3][0]; v2 = departure[3][1]; if (v1 == "X" && vysvetlivky.has('X')) { if (v2 == "42" && vysvetlivky.has('42')) continue; if (v2 == "42" && !vysvetlivky.has('42')) departures.push(departure); if (v2 == "32" && vysvetlivky.has('32')) departures.push(departure); if (v2 == "32" && !vysvetlivky.has('32')) departures.push(departure); if (v2 == "31" && vysvetlivky.has('31')) continue; if (v2 == "31" && !vysvetlivky.has('31')) departures.push(departure); } else if (v1 == "6+" && vysvetlivky.has('6+')) { if (v2 == "25" && vysvetlivky.has('25')) continue; if (v2 == "24" && vysvetlivky.has('24')) continue; if (v2 == "25" && !vysvetlivky.has('25')) departures.push(departure); if (v2 == "24" && !vysvetlivky.has('24')) departures.push(departure); if (v2 == "33" && vysvetlivky.has('33')) departures.push(departure); } } } console.log(departures); fs.writeFileSync('dayDepartures.txt', JSON.stringify(dnesnyDatum) + '\n', { flag: "a" }); departures.map(departure => { fs.writeFileSync('dayDepartures.txt', JSON.stringify(departure) + '\n', { flag: "a" }); }) fs.writeFileSync('dayDepartures.txt', "\n", { flag: "a" }); }) instance.on('1', function(flowdata) { // for some reason new Date() function does not set month and year in local timezone, so we use "timedatectl" command // let dateFromCommand = execSync("timedatectl", {}).toString(); // let first = dateFromCommand.search("time:"); // let last = dateFromCommand.search(" CE"); // dateFromCommand = dateFromCommand.slice(first, last); //Thu 2022-04-07 13:38:03 // const d = new Date(dateFromCommand); const d = new Date(); let hour = d.getHours(); let minute = d.getMinutes(); //console.log('******hour, minute', hour, minute) if (minute < 10) minute = `0${minute}`; if (hour < 10) hour = `0${hour}`; const now = `${hour}:${minute}`; //console.log('******--------', firstDepartureTime, now); //console.log('******--------', firstDepartureTime < now); if (firstDepartureTime < now) { departures = departures.filter(departure => { const timeOfDeparture = departure[1]; if (now < timeOfDeparture) return true; return false; }) if (departures.length > 0) firstDepartureTime = departures[0][1]; else firstDepartureTime = "00:00"; instance.send(0, departures.slice(0, 10)); } }) } // exports.id = 'handledepartures'; // exports.title = 'Handle departures'; // exports.group = 'Worksys'; // exports.color = '#5D9CEC'; // exports.version = '0.0.1'; // exports.output = ['white']; // exports.input = 2; // exports.author = 'Rastislav Kovac'; // exports.icon = 'cloud-upload'; // exports.readme = `Handle bus departures responses from service-prod01.worksys.io`; // const { execSync } = require('child_process'); // /** // * Calculates Easter in the Gregorian/Western (Catholic and Protestant) calendar // * based on the algorithm by Oudin (1940) from http://www.tondering.dk/claus/cal/easter.php // * @returns {array} [int month, int day] // */ // function getEaster(year) { // var f = Math.floor, // // Golden Number - 1 // G = year % 19, // C = f(year / 100), // // related to Epact // H = (C - f(C / 4) - f((8 * C + 13)/25) + 19 * G + 15) % 30, // // number of days from 21 March to the Paschal full moon // I = H - f(H/28) * (1 - f(29/(H + 1)) * f((21-G)/11)), // // weekday for the Paschal full moon // J = (year + f(year / 4) + I + 2 - C + f(C / 4)) % 7, // // number of days from 21 March to the Sunday on or before the Paschal full moon // L = I - J, // month = 3 + f((L + 40)/44), // day = L + 28 - 31 * f(month / 4); // return [month,day]; // } // const pracovneDni = ['Pondeli', 'Uteri', 'Streda', 'Ctvrtek', 'Patek']; // const statneSviatky = [ // '1.1', // '7.4', //velky piatok // '10.4', // Veľkonočný pondelok - deň pracovného pokoja // '1.5','8.5','5.7','6.7','28.9','28.10','17.11','24.12','25.12','26.12' // ]; // const v32_42 = [ // '23.12','24.12','25.12','26.12','27.12','28.12','29.12','30.12','31.12', // '1.1','2.1','6.2','7.2','8.2','9.2','10.2','11.2','12.2','6.4','1.9' // ]; // exports.install = function(instance) { // let departures = []; // let departuresToDisplay = []; // let firstTimeInDisplayedDepartures = "00:00"; // instance.on('0', function(flowdata) { // firstTimeInDisplayedDepartures = "00:00"; // const dnesnyDatum = flowdata.data; // ['22.12', 'streda'] // console.log('++++++++++ densnyDatum', dnesnyDatum) // let vysvetlivky = new Set(); // const d = new Date(); // const month = d.getMonth(); // if(statneSviatky.includes(dnesnyDatum[0])) // { // vysvetlivky.add('6+'); // if(dnesnyDatum[0] == '17.11') // { // vysvetlivky.add('17'); // ide iba 17.11, vysvetlivky = ['6+', '17'] // } // else if(dnesnyDatum[0] == '25.12' || dnesnyDatum[0] == '1.1') // { // vysvetlivky.add('25'); // nejede 25.12.2022,1.1.2023,25.12.2023 ['6+', '25'] // } // else if(dnesnyDatum[0] == '31.12') // { // vysvetlivky.add('31'); // nejede 31.12 ['6+', '31'] // } // else if(dnesnyDatum[0] == '24.12') // { // vysvetlivky.add('24'); // nejede 24.12 ['6+', '24'] // } // } // else if(pracovneDni.includes(dnesnyDatum[1])) // { // vysvetlivky.add('X'); // } // else if(dnesnyDatum[1] == 'Sobota' || dnesnyDatum[1] === 'Nedele') // { // vysvetlivky.add('6+') // } // if(v32_42.includes(dnesnyDatum[0]) || month == 6 || month == 7) //ked je mesiac jul august // { // vysvetlivky.add('32'); // vysvetlivky.add('42'); // } // console.log('', vysvetlivky); // // X jede v pracovních dnech // // 6 jede v sobotu // // + jede v neděli a ve státem uznané svátky // // 17 jede jen 17.11.2023 // // 32 jede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 // // 42 nejede od 23.12.2022 do 2.1.2023,3.2.2023, od 6.2.2023 do 12.2.2023,6.4.2023, od 1.7.2023 do 1.9.2023, od 26.10.2023 do 27.10.2023, od 23.12.2023 do 31.12.2023 // // 24 nejede 24.12.2022,24.12.2023 // // 31 nejede 31.12.2022,31.12.2023 // // 25 nejede 25.12.2022,1.1.2023,25.12.2023 // departures = []; // for(let i = 0; i < allDepartures.length; i++) // { // departure = allDepartures[i]; // const params = departure[3].length; // if(params == 1) // { // v = departure[3][0] // if(v == 'X' && vysvetlivky.has('X')) departures.push(departure); // else if(v == '6+' && vysvetlivky.has('6+')) departures.push(departure); // else if(v == '25' && vysvetlivky.has('25')) continue; // else if(v == '17' && vysvetlivky.has('17')) departures.push(departure); // else if(v == '24' && vysvetlivky.has('24')) continue; // } // else if(params == 2) // { // v1 = departure[3][0]; // v2 = departure[3][1]; // if(v1 == "X" && vysvetlivky.has('X')) // { // if(v2 == "42" && vysvetlivky.has('42')) continue; // if(v2 == "42" && !vysvetlivky.has('42')) departures.push(departure); // if(v2 == "32" && vysvetlivky.has('32')) departures.push(departure); // if(v2 == "32" && !vysvetlivky.has('32')) departures.push(departure); // if(v2 == "31" && vysvetlivky.has('31')) continue; // if(v2 == "31" && !vysvetlivky.has('31')) departures.push(departure); // } // else if(v1 == "6+" && vysvetlivky.has('6+')) // { // if(v2 == "25" && vysvetlivky.has('25')) continue; // if(v2 == "24" && vysvetlivky.has('24')) continue; // if(v2 == "25" && !vysvetlivky.has('25')) departures.push(departure);; // if(v2 == "24" && !vysvetlivky.has('24')) departures.push(departure);; // } // } // } // console.log(departures); // departuresToDisplay = [...departures]; // to make sure, "departuresToDisplay" is not an empty array after script start // }) // instance.on('1', function(flowdata) { // // for some reason new Date() function does not set month and year in local timezone, so we use "timedatectl" command // let dateFromCommand = execSync("timedatectl", {}).toString(); // let first = dateFromCommand.search("time:"); // let last = dateFromCommand.search(" CE"); // dateFromCommand = dateFromCommand.slice(first, last); //Thu 2022-04-07 13:38:03 // const d = new Date(dateFromCommand); // let hour = d.getHours(); // let minute = d.getMinutes(); // console.log('******hour, minute',hour, minute) // if(minute < 10) minute = `0${minute}`; // if(hour < 10) hour = `0${hour}`; // const now = `${hour}:${minute}`; // console.log('******--------', firstTimeInDisplayedDepartures, now); // console.log('******--------', firstTimeInDisplayedDepartures < now); // console.log('******-------- if', firstTimeInDisplayedDepartures < now && departuresToDisplay.length > 0); // if(firstTimeInDisplayedDepartures < now && departuresToDisplay.length > 0) // { // //after all buses have departed, "departuresToDisplay" will stay an empty array till the next day // //so we do not have to repeat iteration through "departures" every minute // departuresToDisplay = []; // departures.map(departure => { // const timeOfDep = departure[1]; // if(now < timeOfDep && departuresToDisplay.length < 10) // { // departuresToDisplay.push(departure); // } // }) // if(departuresToDisplay.length > 0) firstTimeInDisplayedDepartures = departuresToDisplay[0][1]; // console.log(departuresToDisplay); // instance.send(0, departuresToDisplay); // } // }) // } const allDepartures = [ ["3", "04:09", "Závodu míru", ["X", "25"]], ["3", "04:29", "Závodu míru", ["X"]], ["1", "04:50", "Březová, aut. st.", ["X"]], ["3", "04:52", "Závodu míru", ["X"]], ["3", "04:56", "Závodu míru", ["6+", "25"]], ["3", "05:02", "Závodu míru", ["X"]], ["4", "05:05", "Závodu míru", ["X"]], ["6", "05:07", "Sídl. Michal škola", ["X", "42"]], ["6", "05:07", "Závodu míru", ["X", "32"]], ["3", "05:09", "Závodu míru", ["X", "42"]], ["3", "05:22", "Závodu míru", ["X"]], ["1", "05:23", "Březová, aut. st.", ["X"]], ["6", "05:34", "Sídl. Michal škola", ["X", "42"]], ["4", "05:35", "Stará Ovčárna", ["X"]], ["3", "05:36", "Sídl. Michal škola", ["X", "42"]], ["3", "05:38", "Sídliště Michal", ["X", "32"]], ["1", "05:47", "Březová, aut. st.", ["6+", "25"]], ["1", "05:51", "Březová, aut. st.", ["X"]], ["3", "05:57", "Závodu míru", ["6+", "25"]], ["3", "05:58", "Závodu míru", ["X"]], ["6", "06:04", "Sídl. Michal škola", ["X", "42"]], ["1", "06:13", "Březová, aut. st.", ["X"]], ["3", "06:16", "Závodu míru", ["X", "42"]], ["3", "06:19", "Závodu míru", ["X", "32"]], ["3", "06:24", "Sídliště Michal", ["X"]], ["3", "06:24", "Závodu míru", ["6+", "25"]], ["4", "06:31", "Závodu míru", ["X", "42"]], ["6", "06:32", "Sídl. Michal škola", ["X", "32"]], ["3", "06:34", "Závodu míru", ["X"]], ["6", "06:34", "Sídl. Michal škola", ["X", "42"]], ["1", "06:46", "Březová, aut. st.", ["X"]], ["33", "06:49", "Sídl. Michal škola", ["X", "42"]], ["3", "06:56", "Závodu míru", ["X", "32"]], ["3", "06:56", "Závodu míru", ["X", "42"]], ["3", "06:56", "Závodu míru", ["6+"]], ["1", "06:57", "Březová, aut. st.", ["6+", "25"]], ["3", "07:04", "Závodu míru", ["X"]], ["1", "07:05", "Březová, aut. st.", ["X"]], ["3", "07:14", "Závodu míru", ["X"]], ["3", "07:19", "Závodu míru", ["6+"]], ["6", "07:23", "Sídl. Michal škola", ["X", "42"]], ["33", "07:27", "Sídl. Michal škola", ["17"]], ["3", "07:27", "Sídliště Michal", ["X", "32"]], ["3", "07:27", "Sídl. Michal škola", ["17"]], ["2", "07:31", "Sídliště Michal", ["X", "42"]], ["3", "07:34", "Závodu míru", ["X", "42"]], ["4", "07:34", "Závodu míru", ["X"]], ["1", "07:35", "Březová, aut. st.", ["X"]], ["3", "07:45", "Sídliště Michal", ["X"]], ["3", "07:51", "Závodu míru", ["6+"]], ["33", "07:54", "Sídl. Michal škola", ["X", "42"]], ["3", "07:54", "Závodu míru", ["17"]], ["1", "07:55", "Březová, aut. st.", ["X"]], ["1", "07:57", "Březová, aut. st.", ["6+"]], ["3", "07:58", "Závodu míru", ["X", "42"]], ["3", "08:10", "Závodu míru", ["X", "32"]], ["3", "08:15", "Závodu míru", ["X", "42"]], ["3", "08:15", "Závodu míru", ["6+"]], ["1", "08:18", "Březová, aut. st.", ["X"]], ["33", "08:29", "Sídl. Michal škola", ["X"]], ["3", "08:34", "Závodu míru", ["X"]], ["3", "08:50", "Stará Ovčárna", ["X"]], ["3", "08:51", "Závodu míru", ["6+"]], ["33", "08:54", "Sídl. Michal škola", ["X"]], ["1", "08:57", "Březová, aut. st.", ["6+"]], ["3", "09:04", "Závodu míru", ["X"]], ["1", "09:09", "Březová, aut. st.", ["X"]], ["3", "09:20", "Závodu míru", ["6+"]], ["3", "09:24", "Závodu míru", ["X"]], ["33", "09:34", "Sídl. Michal škola", ["X"]], ["3", "09:38", "Jezero Michal", ["6+", "33"]], ["4", "09:41", "Sídliště Michal", ["X"]], ["1", "09:44", "Březová, aut. st.", ["6+"]], ["3", "09:45", "Závodu míru", ["X"]], ["3", "09:51", "Závodu míru", ["6+"]], ["1", "09:58", "Březová, aut. st.", ["X"]], ["3", "09:59", "Jezero Michal", ["X"]], ["7", "10:14", "Březová, aut.st.", ["X"]], ["3", "10:19", "Závodu míru", ["6+"]], ["33", "10:24", "Sídl. Michal škola", ["X"]], ["3", "10:40", "Závodu míru", ["X"]], ["3", "10:43", "Jezero Michal", ["6+", "33"]], ["1", "10:55", "Březová, aut. st.", ["X"]], ["3", "10:55", "Závodu míru", ["X"]], ["1", "10:57", "Březová, aut. st.", ["6+"]], ["3", "11:02", "Závodu míru", ["6+"]], ["3", "11:17", "Závodu míru", ["X"]], ["33", "11:29", "Sídl. Michal škola", ["X"]], ["3", "11:29", "Závodu míru", ["6+"]], ["3", "11:44", "Závodu míru", ["X"]], ["1", "11:46", "Březová, aut. st.", ["X"]], ["1", "11:49", "Březová, aut. st.", ["6+"]], ["3", "11:51", "Závodu míru", ["6+"]], ["33", "11:56", "Sídl. Michal škola", ["X"]], ["3", "12:05", "Závodu míru", ["X"]], ["3", "12:19", "Závodu míru", ["6+"]], ["3", "12:24", "Jezero Michal", ["X"]], ["1", "12:33", "Březová, aut. st.", ["X"]], ["3", "12:38", "Jezero Michal", ["6+", "33"]], ["3", "12:44", "Závodu míru", ["X"]], ["3", "12:51", "Závodu míru", ["6+"]], ["1", "12:57", "Březová, aut. st.", ["6+"]], ["3", "12:59", "Závodu míru", ["X"]], ["6", "12:59", "Sídl. Michal škola", ["X", "42"]], ["33", "13:04", "Sídl. Michal škola", ["X"]], ["1", "13:06", "Březová, aut. st.", ["X"]], ["3", "13:15", "Závodu míru", ["X"]], ["2", "13:17", "Sídliště Michal", ["X"]], ["1", "13:22", "Březová, aut. st.", ["X"]], ["3", "13:24", "Stará Ovčárna", ["X"]], ["3", "13:28", "Závodu míru", ["6+"]], ["33", "13:39", "Sídl. Michal škola", ["X"]], ["1", "13:48", "Březová, aut. st.", ["X"]], ["3", "13:51", "Závodu míru", ["6+"]], ["1", "13:57", "Březová, aut. st.", ["6+"]], ["33", "14:04", "Sídl. Michal škola", ["X"]], ["6", "14:04", "Sídl. Michal škola", ["X"]], ["4", "14:06", "Stará Ovčárna", ["X"]], ["3", "14:09", "Závodu míru", ["X"]], ["1", "14:10", "Březová, aut. st.", ["X"]], ["3", "14:19", "Závodu míru", ["6+"]], ["3", "14:21", "Závodu míru", ["X"]], ["1", "14:34", "Březová, aut. st.", ["X"]], ["6", "14:34", "Sídl. Michal škola", ["X"]], ["4", "14:42", "Závodu míru", ["X"]], ["3", "14:43", "Závodu míru", ["X"]], ["33", "14:46", "Sídl. Michal škola", ["X"]], ["1", "14:49", "Březová, aut. st.", ["6+"]], ["3", "14:51", "Závodu míru", ["6+"]], ["3", "14:52", "Závodu míru", ["X"]], ["1", "15:09", "Březová, aut. st.", ["X"]], ["33", "15:09", "Sídl. Michal škola", ["X"]], ["3", "15:13", "Závodu míru", ["X"]], ["6", "15:14", "Sídl. Michal škola", ["X"]], ["3", "15:19", "Závodu míru", ["6+"]], ["3", "15:23", "Sokolov, Hrušková", ["X", "42"]], ["3", "15:30", "Závodu míru", ["X"]], ["1", "15:31", "Březová, aut. st.", ["X"]], ["3", "15:38", "Jezero Michal", ["6+", "33"]], ["33", "15:39", "Sídl. Michal škola", ["X"]], ["3", "15:39", "Jezero Michal", ["X"]], ["3", "15:51", "Závodu míru", ["6+"]], ["7", "15:54", "Březová, aut.st.", ["X"]], ["1", "15:57", "Březová, aut. st.", ["6+"]], ["3", "16:00", "Sídl. Michal škola", ["X", "42"]], ["4", "16:06", "Závodu míru", ["X"]], ["33", "16:14", "Sídl. Michal škola", ["X"]], ["3", "16:14", "Závodu míru", ["X"]], ["1", "16:21", "Březová, aut. st.", ["X"]], ["3", "16:28", "Závodu míru", ["6+"]], ["7", "16:29", "Březová, aut.st.", ["X"]], ["3", "16:35", "Závodu míru", ["X"]], ["6", "16:44", "Sídl. Michal škola", ["X", "42"]], ["3", "16:48", "Závodu míru", ["X"]], ["4", "16:51", "Závodu míru", ["X", "42"]], ["3", "16:53", "Závodu míru", ["6+"]], ["1", "16:57", "Březová, aut. st.", ["6+"]], ["7", "16:59", "Březová, aut.st.", ["X"]], ["3", "17:09", "Jezero Michal", ["X"]], ["3", "17:14", "Závodu míru", ["6+"]], ["3", "17:18", "Závodu míru", ["X"]], ["3", "17:34", "Závodu míru", ["X"]], ["1", "17:38", "Březová, aut. st.", ["X"]], ["3", "17:38", "Jezero Michal", ["6+", "33"]], ["3", "17:51", "Závodu míru", ["6+"]], ["3", "17:57", "Závodu míru", ["X"]], ["3", "18:14", "Závodu míru", ["X"]], ["3", "18:21", "Závodu míru", ["X"]], ["3", "18:21", "Stará Ovčárna", ["6+"]], ["1", "18:24", "Březová, aut. st.", ["6+"]], ["1", "18:26", "Březová, aut. st.", ["X"]], ["3", "18:34", "Závodu míru", ["X"]], ["3", "18:51", "Závodu míru", ["6+"]], ["3", "18:54", "Závodu míru", ["X"]], ["1", "19:08", "Březová, aut. st.", ["X"]], ["3", "19:14", "Závodu míru", ["6+", "24"]], ["3", "19:19", "Závodu míru", ["X", "31"]], ["3", "19:34", "Závodu míru", ["X", "31"]], ["1", "19:53", "Březová, aut. st.", ["X", "31"]], ["3", "19:54", "Závodu míru", ["X", "31"]], ["3", "19:54", "Závodu míru", ["6+", "24"]], ["1", "19:57", "Březová, aut. st.", ["6+", "24"]], ["3", "20:19", "Závodu míru", ["X", "31"]], ["1", "20:28", "Březová, aut. st.", ["6+", "24"]], ["3", "20:49", "Závodu míru", ["X", "31"]], ["3", "20:49", "Závodu míru", ["6+", "24"]], ["1", "20:55", "Březová, aut. st.", ["X", "31"]], ["3", "21:09", "Závodu míru", ["X", "31"]], ["1", "21:23", "Březová, aut. st.", ["6+", "24"]], ["3", "21:24", "Stará Ovčárna", ["X", "31"]], ["3", "21:24", "Závodu míru", ["6+", "24"]], ["1", "21:38", "Březová, aut. st.", ["X", "31"]], ["3", "22:04", "Závodu míru", ["6+", "24"]], ["3", "22:12", "Stará Ovčárna", ["X", "31"]], ["1", "22:28", "Březová, aut. st.", ["X", "31"]], ["3", "22:41", "Závodu míru", ["X", "31"]], ]; const allDepartures_24_5_2023 = [ ["3", "04:09", "Závodu míru", ["25"]], ["3", "04:29", "Závodu míru", ["X"]], ["1", "04:50", "Březová, aut. st.", ["X"]], ["3", "04:52", "Závodu míru", ["X"]], ["3", "04:56", "Závodu míru", ["6+", "25"]], ["3", "05:02", "Závodu míru", ["X"]], ["4", "05:05", "Závodu míru", ["X"]], ["6", "05:07", "Sídl. Michal škola", ["X", "42"]], ["6", "05:07", "Závodu míru", ["X", "32"]], ["3", "05:09", "Závodu míru", ["X", "42"]], ["3", "05:22", "Závodu míru", ["X"]], ["1", "05:23", "Březová, aut. st.", ["X"]], ["6", "05:34", "Sídl. Michal škola", ["X", "42"]], ["4", "05:35", "Stará Ovčárna", ["X"]], ["3", "05:36", "Sídl. Michal škola", ["X", "42"]], ["3", "05:38", "Sídliště Michal", ["X", "32"]], ["1", "05:47", "Březová, aut. st.", ["6+", "25"]], ["1", "05:51", "Březová, aut. st.", ["X"]], ["3", "05:57", "Závodu míru", ["6+", "25"]], ["3", "05:58", "Závodu míru", ["X"]], ["6", "06:04", "Sídl. Michal škola", ["X", "42"]], ["1", "06:13", "Březová, aut. st.", ["X"]], ["3", "06:16", "Závodu míru", ["X", "42"]], ["3", "06:19", "Závodu míru", ["X", "32"]], ["3", "06:24", "Sídliště Michal", ["X"]], ["3", "06:24", "Závodu míru", ["6+", "25"]], ["4", "06:31", "Závodu míru", ["X", "42"]], ["6", "06:32", "Sídl. Michal škola", ["X", "32"]], ["3", "06:34", "Závodu míru", ["X"]], ["6", "06:34", "Sídl. Michal škola", ["X", "42"]], ["1", "06:46", "Březová, aut. st.", ["X"]], ["33", "06:49", "Sídl. Michal škola", ["X", "42"]], ["3", "06:56", "Závodu míru", ["X", "32"]], ["3", "06:56", "Závodu míru", ["X", "42"]], ["3", "06:56", "Závodu míru", ["6+"]], ["1", "06:57", "Březová, aut. st.", ["6+", "25"]], ["3", "07:04", "Závodu míru", ["X"]], ["1", "07:05", "Březová, aut. st.", ["X"]], ["3", "07:14", "Závodu míru", ["X"]], ["3", "07:19", "Závodu míru", ["6+"]], ["6", "07:23", "Sídl. Michal škola", ["X", "42"]], ["33", "07:27", "Sídl. Michal škola", ["17"]], ["3", "07:27", "Sídliště Michal", ["X", "32"]], ["2", "07:31", "Sídliště Michal", ["X", "42"]], ["3", "07:34", "Závodu míru", ["X", "42"]], ["4", "07:34", "Závodu míru", ["X"]], ["1", "07:35", "Březová, aut. st.", ["X"]], ["3", "07:45", "Sídliště Michal", ["X"]], ["3", "07:51", "Závodu míru", ["6+"]], ["33", "07:54", "Sídl. Michal škola", ["X", "42"]], ["3", "07:54", "Závodu míru", ["17"]], ["1", "07:55", "Březová, aut. st.", ["X"]], ["1", "07:57", "Březová, aut. st.", ["6+"]], ["3", "07:58", "Závodu míru", ["X", "42"]], ["3", "08:10", "Závodu míru", ["X", "32"]], ["3", "08:15", "Závodu míru", ["X", "42"]], ["3", "08:15", "Závodu míru", ["6+"]], ["1", "08:18", "Březová, aut. st.", ["X"]], ["33", "08:29", "Sídl. Michal škola", ["X"]], ["3", "08:34", "Závodu míru", ["X"]], ["3", "08:50", "Stará Ovčárna", ["X"]], ["3", "08:51", "Závodu míru", ["6+"]], ["33", "08:54", "Sídl. Michal škola", ["X"]], ["1", "08:57", "Březová, aut. st.", ["6+"]], ["3", "09:04", "Závodu míru", ["X"]], ["1", "09:09", "Březová, aut. st.", ["X"]], ["3", "09:20", "Závodu míru", ["6+"]], ["3", "09:24", "Závodu míru", ["X"]], ["33", "09:34", "Sídl. Michal škola", ["X"]], ["4", "09:41", "Sídliště Michal", ["X"]], ["1", "09:44", "Březová, aut. st.", ["6+"]], ["3", "09:45", "Závodu míru", ["X"]], ["3", "09:51", "Závodu míru", ["6+"]], ["1", "09:58", "Březová, aut. st.", ["X"]], ["3", "09:59", "Jezero Michal", ["X"]], ["7", "10:14", "Březová, aut.st.", ["X"]], ["3", "10:19", "Závodu míru", ["6+"]], ["33", "10:24", "Sídl. Michal škola", ["X"]], ["3", "10:40", "Závodu míru", ["X"]], ["1", "10:55", "Březová, aut. st.", ["X"]], ["3", "10:55", "Závodu míru", ["X"]], ["1", "10:57", "Březová, aut. st.", ["6+"]], ["3", "11:02", "Závodu míru", ["6+"]], ["3", "11:17", "Závodu míru", ["X"]], ["33", "11:29", "Sídl. Michal škola", ["X"]], ["3", "11:29", "Závodu míru", ["6+"]], ["3", "11:44", "Závodu míru", ["X"]], ["1", "11:46", "Březová, aut. st.", ["X"]], ["1", "11:49", "Březová, aut. st.", ["6+"]], ["3", "11:51", "Závodu míru", ["6+"]], ["33", "11:56", "Sídl. Michal škola", ["X"]], ["3", "12:05", "Závodu míru", ["X"]], ["3", "12:19", "Závodu míru", ["6+"]], ["3", "12:24", "Jezero Michal", ["X"]], ["1", "12:33", "Březová, aut. st.", ["X"]], ["3", "12:44", "Závodu míru", ["X"]], ["3", "12:51", "Závodu míru", ["6+"]], ["1", "12:57", "Březová, aut. st.", ["6+"]], ["3", "12:59", "Závodu míru", ["X"]], ["6", "12:59", "Sídl. Michal škola", ["X", "42"]], ["33", "13:04", "Sídl. Michal škola", ["X"]], ["1", "13:06", "Březová, aut. st.", ["X"]], ["3", "13:15", "Závodu míru", ["X"]], ["2", "13:17", "Sídliště Michal", ["X"]], ["1", "13:22", "Březová, aut. st.", ["X"]], ["3", "13:24", "Stará Ovčárna", ["X"]], ["3", "13:28", "Závodu míru", ["6+"]], ["33", "13:39", "Sídl. Michal škola", ["X"]], ["1", "13:48", "Březová, aut. st.", ["X"]], ["3", "13:51", "Závodu míru", ["6+"]], ["1", "13:57", "Březová, aut. st.", ["6+"]], ["33", "14:04", "Sídl. Michal škola", ["X"]], ["6", "14:04", "Sídl. Michal škola", ["X"]], ["4", "14:06", "Stará Ovčárna", ["X"]], ["3", "14:09", "Závodu míru", ["X"]], ["1", "14:10", "Březová, aut. st.", ["X"]], ["3", "14:19", "Závodu míru", ["6+"]], ["3", "14:21", "Závodu míru", ["X"]], ["1", "14:34", "Březová, aut. st.", ["X"]], ["6", "14:34", "Sídl. Michal škola", ["X"]], ["4", "14:42", "Závodu míru", ["X"]], ["3", "14:43", "Závodu míru", ["X"]], ["33", "14:46", "Sídl. Michal škola", ["X"]], ["1", "14:49", "Březová, aut. st.", ["6+"]], ["3", "14:51", "Závodu míru", ["6+"]], ["3", "14:52", "Závodu míru", ["X"]], ["1", "15:09", "Březová, aut. st.", ["X"]], ["33", "15:09", "Sídl. Michal škola", ["X"]], ["3", "15:13", "Závodu míru", ["X"]], ["6", "15:14", "Sídl. Michal škola", ["X"]], ["3", "15:19", "Závodu míru", ["6+"]], ["3", "15:23", "Sokolov, Hrušková", ["X", "42"]], ["3", "15:30", "Závodu míru", ["X"]], ["1", "15:31", "Březová, aut. st.", ["X"]], ["33", "15:39", "Sídl. Michal škola", ["X"]], ["3", "15:39", "Jezero Michal", ["X"]], ["3", "15:51", "Závodu míru", ["6+"]], ["7", "15:54", "Březová, aut.st.", ["X"]], ["1", "15:57", "Březová, aut. st.", ["6+"]], ["3", "16:00", "Sídl. Michal škola", ["X", "42"]], ["4", "16:06", "Závodu míru", ["X"]], ["33", "16:14", "Sídl. Michal škola", ["X"]], ["3", "16:14", "Závodu míru", ["X"]], ["1", "16:21", "Březová, aut. st.", ["X"]], ["3", "16:28", "Závodu míru", ["6+"]], ["7", "16:29", "Březová, aut.st.", ["X"]], ["3", "16:35", "Závodu míru", ["X"]], ["6", "16:44", "Sídl. Michal škola", ["X", "42"]], ["3", "16:48", "Závodu míru", ["X"]], ["4", "16:51", "Závodu míru", ["X", "42"]], ["3", "16:53", "Závodu míru", ["6+"]], ["1", "16:57", "Březová, aut. st.", ["6+"]], ["7", "16:59", "Březová, aut.st.", ["X"]], ["3", "17:09", "Jezero Michal", ["X"]], ["3", "17:14", "Závodu míru", ["6+"]], ["3", "17:18", "Závodu míru", ["X"]], ["3", "17:34", "Závodu míru", ["X"]], ["1", "17:38", "Březová, aut. st.", ["X"]], ["3", "17:51", "Závodu míru", ["6+"]], ["3", "17:57", "Závodu míru", ["X"]], ["3", "18:14", "Závodu míru", ["X"]], ["3", "18:21", "Závodu míru", ["X"]], ["3", "18:21", "Stará Ovčárna", ["6+"]], ["1", "18:24", "Březová, aut. st.", ["6+"]], ["1", "18:26", "Březová, aut. st.", ["X"]], ["3", "18:34", "Závodu míru", ["X"]], ["3", "18:51", "Závodu míru", ["6+"]], ["3", "18:54", "Závodu míru", ["X"]], ["1", "19:08", "Březová, aut. st.", ["X"]], ["3", "19:14", "Závodu míru", ["6+", "24"]], ["3", "19:19", "Závodu míru", ["X", "31"]], ["3", "19:34", "Závodu míru", ["X", "31"]], ["1", "19:53", "Březová, aut. st.", ["X", "31"]], ["3", "19:54", "Závodu míru", ["X", "31"]], ["3", "19:54", "Závodu míru", ["6+", "24"]], ["1", "19:57", "Březová, aut. st.", ["6+", "24"]], ["3", "20:19", "Závodu míru", ["X", "31"]], ["1", "20:28", "Březová, aut. st.", ["6+", "24"]], ["3", "20:49", "Závodu míru", ["X", "31"]], ["3", "20:49", "Závodu míru", ["6+", "24"]], ["1", "20:55", "Březová, aut. st.", ["X", "31"]], ["3", "21:09", "Závodu míru", ["X", "31"]], ["1", "21:23", "Březová, aut. st.", ["6+", "24"]], ["3", "21:24", "Stará Ovčárna", ["X", "31"]], ["3", "21:24", "Závodu míru", ["6+", "24"]], ["1", "21:38", "Březová, aut. st.", ["X", "31"]], ["3", "22:04", "Závodu míru", ["6+", "24"]], ["3", "22:12", "Stará Ovčárna", ["X", "31"]], ["1", "22:28", "Březová, aut. st.", ["X", "31"]], ["3", "22:41", "Závodu míru", ["X", "31"]], ]; // const departures_all = [ // ["3","04:09","Závodu míru",["25"]], // ["3","04:29","Závodu míru",["X"]], // ["1","04:50","Březová, aut. st.",["X"]], // ["3","04:52","Závodu míru",["X"]], // ["3","04:56","Závodu míru",["6+","25"]], // ["3","05:02","Závodu míru",["X"]], // ["4","05:05","Závodu míru",["X"]], // ["6","05:07","Sídl. Michal škola",["X","42"]], // ["6","05:07","Závodu míru",["X","32"]], // ["3","05:09","Závodu míru",["X","42"]], // ["3","05:22","Závodu míru",["X"]], // ["1","05:23","Březová, aut. st.",["X"]], // ["6","05:34","Sídl.Michal škola",["X","42"]], // ["4","05:35","Stará Ovčárna",["X"]], // ["3","05:36","Sídl. Michal škola",["X","42"]], // ["3","05:38","Sídliště Michal",["X","32"]], // ["1","05:47","Březová, aut. st.",["6+","25"]], // ["1","05:51","Březová, aut. st.",["X"]], // ["3","05:57","Závodu míru",["6+","25"]], // ["3","05:58","Závodu míru",["X"]], // ["6","06:04","Sídl.Michal škola",["X","42"]], // ["1","06:13","Březová, aut. st.",["X"]], // ["3","06:16","Závodu míru",["X","42"]], // ["3","06:19","Závodu míru",["X","32"]], // ["3","06:24","Sídliště Michal",["X"]], // ["3","06:24","Závodu míru",["6+","25"]], // ["4","06:31","Závodu míru",["X","42"]], // ["6","06:32","Sídl.Michal škola",["X","32"]], // ["3","06:34","Závodu míru",["X"]], // ["6","06:34","Sídl.Michal škola",["X","42"]], // ["1","06:46","Březová, aut. st.",["X"]], // ["33","06:49","sídl.Michal škola",["X","42"]], // ["3","06:56","Závodu míru",["X","32"]], // ["3","06:56","Závodu míru",["X","42"]], // ["3","06:56","Závodu míru",["6+"]], // ["1","06:57","Březová, aut. st.",["6+","25"]], // ["3","07:04","Závodu míru",["X"]], // ["1","07:05","Březová, aut. st.",["X"]], // ["3","07:14","Závodu míru",["X"]], // ["3","07:19","Závodu míru",["6+"]], // ["6","07:23","Sídl.Michal škola",["X","42"]], // ["33","07:27","sídl.Michal škola",["17"]], // ["3","07:27","Sídliště Michal",["X","32"]], // ["2","07:31","Sídliště Michal",["X","42"]], // ["3","07:34","Závodu míru",["X","42"]], // ["4","07:34","Závodu míru",["X"]], // ["1","07:35","Březová, aut. st.",["X"]], // ["3","07:45","Sídliště Michal",["X"]], // ["3","07:51","Závodu míru",["6+"]], // ["33","07:54","sídl.Michal škola",["X","42"]], // ["3","07:54","Závodu míru",["17"]], // ["1","07:55","Březová, aut. st.",["X"]], // ["1","07:57","Březová, aut. st.",["6+"]], // ["3","07:58","Závodu míru",["X","42"]], // ["3","08:10","Závodu míru",["X","32"]], // ["3","08:15","Závodu míru",["X","42"]], // ["3","08:15","Závodu míru",["6+"]], // ["1","08:18","Březová, aut. st.",["X"]], // ["33","08:29","sídl.Michal škola",["X"]], // ["3","08:34","Závodu míru",["X"]], // ["3","08:50","Stará Ovčárna",["X"]], // ["3","08:51","Závodu míru",["6+"]], // ["33","08:54","sídl.Michal škola",["X"]], // ["1","08:57","Březová, aut. st.",["6+"]], // ["3","09:04","Závodu míru",["X"]], // ["1","09:09","Březová, aut. st.",["X"]], // ["3","09:20","Závodu míru",["6+"]], // ["3","09:24","Závodu míru",["X"]], // ["33","09:34","sídl.Michal škola",["X"]], // ["4","09:41","Sídliště Michal",["X"]], // ["1","09:44","Březová, aut. st.",["6+"]], // ["3","09:45","Závodu míru",["X"]], // ["3","09:51","Závodu míru",["6+"]], // ["1","09:58","Březová, aut. st.",["X"]], // ["3","09:59","Jezero Michal",["X"]], // ["7","10:14","Březová, aut.st.",["X"]], // ["3","10:19","Závodu míru",["6+"]], // ["33","10:24","sídl.Michal škola",["X"]], // ["3","10:40","Závodu míru",["X"]], // ["1","10:55","Březová, aut. st.",["X"]], // ["3","10:55","Závodu míru",["X"]], // ["1","10:57","Březová, aut. st.",["6+"]], // ["3","11:02","Závodu míru",["6+"]], // ["3","11:17","Závodu míru",["X"]], // ["33","11:29","sídl.Michal škola",["X"]], // ["3","11:29","Závodu míru",["6+"]], // ["3","11:44","Závodu míru",["X"]], // ["1","11:46","Březová, aut. st.",["X"]], // ["1","11:49","Březová, aut. st.",["6+"]], // ["3","11:51","Závodu míru",["6+"]], // ["33","11:56","sídl.Michal škola",["X"]], // ["3","12:05","Závodu míru",["X"]], // ["3","12:19","Závodu míru",["6+"]], // ["3","12:24","Jezero Michal",["X"]], // ["1","12:33","Březová, aut. st.",["X"]], // ["3","12:44","Závodu míru",["X"]], // ["3","12:51","Závodu míru",["6+"]], // ["1","12:57","Březová, aut. st.",["6+"]], // ["3","12:59","Závodu míru",["X"]], // ["6","12:59","Sídl.Michal škola",["X","42"]], // ["33","13:04","sídl.Michal škola",["X"]], // ["1","13:06","Březová, aut. st.",["X"]], // ["3","13:15","Závodu míru",["X"]], // ["2","13:17","Sídliště Michal",["X"]], // ["1","13:22","Březová, aut. st.",["X"]], // ["3","13:24","Stará Ovčárna",["X"]], // ["3","13:28","Závodu míru",["6+"]], // ["33","13:39","sídl.Michal škola",["X"]], // ["1","13:48","Březová, aut. st.",["X"]], // ["3","13:51","Závodu míru",["6+"]], // ["1","13:57","Březová, aut. st.",["6+"]], // ["33","14:04","sídl.Michal škola",["X"]], // ["6","14:04","Sídl.Michal škola",["X"]], // ["4","14:06","Stará Ovčárna",["X"]], // ["3","14:09","Závodu míru",["X"]], // ["1","14:10","Březová, aut. st.",["X"]], // ["3","14:19","Závodu míru",["6+"]], // ["3","14:21","Závodu míru",["X"]], // ["1","14:34","Březová, aut. st.",["X"]], // ["6","14:34","Sídl.Michal škola",["X"]], // ["4","14:42","Závodu míru",["X"]], // ["3","14:43","Závodu míru",["X"]], // ["33","14:46","sídl.Michal škola",["X"]], // ["1","14:49","Březová, aut. st.",["6+"]], // ["3","14:51","Závodu míru",["6+"]], // ["3","14:52","Závodu míru",["X"]], // ["1","15:09","Březová, aut. st.",["X"]], // ["33","15:09","sídl.Michal škola",["X"]], // ["3","15:13","Závodu míru",["X"]], // ["6","15:14","Sídl.Michal škola",["X"]], // ["3","15:19","Závodu míru",["6+"]], // ["3","15:23","Sokolov, Hrušková",["X","42"]], // ["3","15:30","Závodu míru",["X"]], // ["1","15:31","Březová, aut. st.",["X"]], // ["33","15:39","sídl.Michal škola",["X"]], // ["3","15:39","Jezero Michal",["X"]], // ["3","15:51","Závodu míru",["6+"]], // ["7","15:54","Březová, aut.st.",["X"]], // ["1","15:57","Březová, aut. st.",["6+"]], // ["3","16:00","sídl.Michal škola",["X","42"]], // ["4","16:06","Závodu míru",["X"]], // ["33","16:14","sídl.Michal škola",["X"]], // ["3","16:14","Závodu míru",["X"]], // ["1","16:21","Březová, aut. st.",["X"]], // ["3","16:28","Závodu míru",["6+"]], // ["7","16:29","Březová, aut.st.",["X"]], // ["3","16:35","Závodu míru",["X"]], // ["6","16:44","Sídl.Michal škola",["X","42"]], // ["3","16:48","Závodu míru",["X"]], // ["4","16:51","Závodu míru",["X","42"]], // ["3","16:53","Závodu míru",["6+"]], // ["1","16:57","Březová, aut. st.",["6+"]], // ["7","16:59","Březová, aut.st.",["X"]], // ["3","17:09","Jezero Michal",["X"]], // ["3","17:14","Závodu míru",["6+"]], // ["3","17:18","Závodu míru",["X"]], // ["3","17:34","Závodu míru",["X"]], // ["1","17:38","Březová, aut. st.",["X"]], // ["3","17:51","Závodu míru",["6+"]], // ["3","17:57","Závodu míru",["X"]], // ["3","18:14","Závodu míru",["X"]], // ["3","18:21","Závodu míru",["X"]], // ["3","18:21","Stará Ovčárna",["6+"]], // ["1","18:24","Březová, aut. st.",["6+"]], // ["1","18:26","Březová, aut. st.",["X"]], // ["3","18:34","Závodu míru",["X"]], // ["3","18:51","Závodu míru",["6+"]], // ["3","18:54","Závodu míru",["X"]], // ["1","19:08","Březová, aut. st.",["X"]], // ["3","19:14","Závodu míru",["6+","24"]], // ["3","19:19","Závodu míru",["X","31"]], // ["3","19:34","Závodu míru",["X","31"]], // ["1","19:53","Březová, aut. st.",["X","31"]], // ["3","19:54","Závodu míru",["X","31"]], // ["3","19:54","Závodu míru",["6+","24"]], // ["1","19:57","Březová, aut. st.",["6+","24"]], // ["3","20:19","Závodu míru",["X","31"]], // ["1","20:28","Březová, aut. st.",["6+","24"]], // ["3","20:49","Závodu míru",["X","31","6+","24"]], // ["1","20:55","Březová, aut. st.",["X","31"]], // ["3","21:09","Závodu míru",["X","31"]], // ["1","21:23","Březová, aut. st.",["6+","24"]], // ["3","21:24","Stará Ovčárna",["X","31"]], // ["3","21:24","Závodu míru",["6+","24"]], // ["1","21:38","Březová, aut. st.",["X","31"]], // ["3","22:04","Závodu míru",["6+","24"]], // ["3","22:12","Stará Ovčárna",["X","31"]], // ["1","22:28","Březová, aut. st.",["X","31"]], // ["3","22:41","Závodu míru",["X","31"]], // ]; /* exports.id = 'handledepartures'; exports.title = 'Handle departures'; exports.group = 'Worksys'; exports.color = '#5D9CEC'; exports.version = '0.0.1'; exports.output = ['red', 'white']; exports.input = true; exports.author = 'Rastislav Kovac'; exports.icon = 'cloud-upload'; exports.readme = `Handle bus departures responses from service-prod01.worksys.io`; const instanceSendTo = { sendToExpress: 0, } const timeZoneOffsets = { '-60': 1, '-120': 2 } exports.install = function(instance) { let departures = []; let departureIds = []; let departuresToDisplay = []; instance.on('data', function(flowdata) { if(!typeof flowdata.data === 'object') return; console.log('flowdata.data', flowdata.data) let response = flowdata.data; // if(response.indexOf('"query":{') > -1) // { // instance.send(instanceSendTo.repeatRequest, 'repeatDepartureRequest'); // return; // } //console.log('dep, del ----', response.hasOwnProperty('departures'), response.hasOwnProperty('delays')) if(response.hasOwnProperty('departures')) { departures = response['departures']; departureIds = []; for (let i = 0; i < departures.length; i++) { departureIds.push(departures[i][0]); } } else if(response.hasOwnProperty('delays')) { if(departures.length == 0) return; const delays = response['delays']; departuresToDisplay = []; if(delays.length == 0) { instance.send(instanceSendTo.sendToExpress, departuresToDisplay); departures = []; departureIds = []; return; } console.log('delays', delays) const date = new Date(); const diff = date.getTimezoneOffset(); for (let i = 0; i < delays.length; i++) { const delayIdInList = departureIds.indexOf(delays[i][0]); //console.log('id in list ------', delayIdInList) if(delayIdInList == -1) continue; if(delays[i][1]) // if equals to date string e.g. "2022-11-25T14:04:57" or it is 0 { let currentDeparture = departures[delayIdInList][2].split(':'); //[ '15', '35' ]; let updatedDeparture = delays[i][1]; // "2022-11-25T14:04:57" let temp = [...updatedDeparture.matchAll(/\d\d/g)].map(a => a[0]); //[ '20', '22', '11', '25', '14', '04', '57'] currentDeparture = new Date(Date.UTC(parseInt(`20${temp[1]}`), temp[2],temp[3], currentDeparture[0], currentDeparture[1], 0)) updatedDeparture = new Date(Date.UTC(parseInt(`20${temp[1]}`), temp[2],temp[3], +temp[4] + timeZoneOffsets[diff], temp[5], 0)) if(currentDeparture < updatedDeparture) { console.log('zmenit cas v odchodoch') updatedDeparture = new Date(Date.UTC(parseInt(`20${temp[1]}`), temp[2],temp[3], temp[4], temp[5], 0)) updatedDeparture = updatedDeparture.toLocaleTimeString('sk-SK', { timeZone: 'Europe/Bratislava' }) console.log('odchod s meskaniim ++++++++',updatedDeparture) departures[delayIdInList][2] = updatedDeparture.slice(0,5); } } departuresToDisplay.push(departures[delayIdInList]) // [ '140', '3', '22:08', 'Stará ovčárna' ] } // sometimes delays.length is less than 10 (sometimes even 6). in that case we display some more scheduled departures if(departuresToDisplay.length < 9) { let lastDelay = delays[delays.length - 1][0]; lastDelay = departureIds.indexOf(lastDelay); l = departuresToDisplay.length // we start from 1 and continue until departuresToDisplay length is nine for (let i = 1; i < (10 - l); i++) { if(departures[lastDelay + i]) departuresToDisplay.push(departures[lastDelay + i]) } } instance.send(instanceSendTo.sendToExpress, departuresToDisplay) //console.log('-----',departures) //console.log(delays) console.log('to display ++++++',departuresToDisplay) } }) } // { // "data": "{\"delays\":[[\"25\",0],[\"94\",0],[\"27\",0],[\"106\",0],[\"84\",0],[\"29\",0],[\"6\",0],[\"96\",0],[\"31\",0],[\"4\",0]]}", // "status": 200, // "headers": { // "cache-control": "private, no-cache, no-store, max-age=0", // "vary": "Accept-Encoding, Last-Modified, User-Agent", // "expires": "-1", // "x-powered-by": "Total.js", // "content-type": "application/json; charset=utf-8", // "date": "Mon, 21 Nov 2022 13:23:51 GMT", // "connection": "close", // "transfer-encoding": "chunked" // }, // "host": "192.168.252.2:8004" // } // { // "data": "{\"departures\":[[\"2\",\"3\",\"22.11.22 04:05\",\"Závodu míru\"],[\"290\",\"3\",\"22.11.22 04:25\",\"Závodu míru\"],[\"292\",\"3\",\"22.11.22 04:48\",\"Závodu míru\"],[\"296\",\"3\",\"22.11.22 04:58\",\"Závodu míru\"],[\"6\",\"3\",\"22.11.22 05:05\",\"Závodu míru\"],[\"300\",\"3\",\"22.11.22 05:18\",\"Závodu míru\"],[\"8\",\"3\",\"22.11.22 05:55\",\"Závodu míru\"],[\"16\",\"3\",\"22.11.22 06:30\",\"Závodu míru\"],[\"1\",\"33\",\"22.11.22 06:45\",\"sídl. Michal škola\"],[\"18\",\"3\",\"22.11.22 06:52\",\"Hrušková\"],[\"310\",\"3\",\"22.11.22 07:00\",\"Závodu míru\"],[\"22\",\"3\",\"22.11.22 07:10\",\"Závodu míru\"],[\"5\",\"33\",\"22.11.22 07:50\",\"sídl. Michal škola\"],[\"32\",\"3\",\"22.11.22 08:10\",\"Závodu míru\"],[\"7\",\"33\",\"22.11.22 08:25\",\"sídl. Michal škola\"],[\"100\",\"3\",\"22.11.22 08:30\",\"Závodu míru\"],[\"9\",\"33\",\"22.11.22 08:50\",\"sídl. Michal škola\"],[\"34\",\"3\",\"22.11.22 09:00\",\"Závodu míru\"],[\"38\",\"3\",\"22.11.22 09:20\",\"Závodu míru\"],[\"11\",\"33\",\"22.11.22 09:30\",\"sídl. Michal škola\"],[\"298\",\"3\",\"22.11.22 09:55\",\"Závodu míru\"],[\"2\",\"7\",\"22.11.22 10:10\",\"Březová, aut. st.\"],[\"13\",\"33\",\"22.11.22 10:20\",\"sídl. Michal škola\"],[\"48\",\"3\",\"22.11.22 10:50\",\"Závodu míru\"],[\"50\",\"3\",\"22.11.22 11:13\",\"Závodu míru\"],[\"15\",\"33\",\"22.11.22 11:25\",\"sídl. Michal škola\"],[\"52\",\"3\",\"22.11.22 11:40\",\"Závodu míru\"],[\"17\",\"33\",\"22.11.22 11:52\",\"sídl. Michal škola\"],[\"56\",\"3\",\"22.11.22 12:20\",\"Závodu míru\"],[\"62\",\"3\",\"22.11.22 12:40\",\"Závodu míru\"],[\"64\",\"3\",\"22.11.22 12:55\",\"Závodu míru\"],[\"19\",\"33\",\"22.11.22 13:00\",\"sídl. Michal škola\"],[\"66\",\"3\",\"22.11.22 13:20\",\"Stará ovčárna\"],[\"21\",\"33\",\"22.11.22 13:35\",\"sídl. Michal škola\"],[\"23\",\"33\",\"22.11.22 14:00\",\"sídl. Michal škola\"],[\"72\",\"3\",\"22.11.22 14:05\",\"Závodu míru\"],[\"25\",\"33\",\"22.11.22 14:42\",\"sídl. Michal škola\"],[\"94\",\"3\",\"22.11.22 14:48\",\"Závodu míru\"],[\"27\",\"33\",\"22.11.22 15:05\",\"sídl. Michal škola\"],[\"106\",\"3\",\"22.11.22 15:09\",\"Závodu míru\"],[\"84\",\"3\",\"22.11.22 15:35\",\"Závodu míru\"],[\"29\",\"33\",\"22.11.22 15:35\",\"sídl. Michal škola\"],[\"6\",\"7\",\"22.11.22 15:50\",\"Březová, aut. st.\"],[\"96\",\"3\",\"22.11.22 16:10\",\"Závodu míru\"],[\"31\",\"33\",\"22.11.22 16:10\",\"sídl. Michal škola\"],[\"4\",\"7\",\"22.11.22 16:25\",\"Březová, aut. st.\"],[\"102\",\"3\",\"22.11.22 16:30\",\"Závodu míru\"],[\"302\",\"3\",\"22.11.22 16:44\",\"Závodu míru\"],[\"8\",\"7\",\"22.11.22 16:55\",\"Březová, aut. st.\"],[\"108\",\"3\",\"22.11.22 17:05\",\"Stará ovčárna\"],[\"112\",\"3\",\"22.11.22 17:30\",\"Závodu míru\"],[\"114\",\"3\",\"22.11.22 17:53\",\"Závodu míru\"],[\"118\",\"3\",\"22.11.22 18:10\",\"Závodu míru\"],[\"120\",\"3\",\"22.11.22 18:30\",\"Závodu míru\"],[\"122\",\"3\",\"22.11.22 18:50\",\"Závodu míru\"],[\"124\",\"3\",\"22.11.22 19:15\",\"Závodu míru\"],[\"126\",\"3\",\"22.11.22 19:30\",\"Závodu míru\"],[\"130\",\"3\",\"22.11.22 19:50\",\"Závodu míru\"],[\"132\",\"3\",\"22.11.22 20:15\",\"Závodu míru\"],[\"134\",\"3\",\"22.11.22 20:45\",\"Závodu míru\"],[\"136\",\"3\",\"22.11.22 21:05\",\"Závodu míru\"],[\"256\",\"3\",\"22.11.22 21:20\",\"Stará ovčárna\"],[\"140\",\"3\",\"22.11.22 22:08\",\"Stará ovčárna\"]]}", // "status": 200, // "headers": { // "cache-control": "private, no-cache, no-store, max-age=0", // "vary": "Accept-Encoding, Last-Modified, User-Agent", // "expires": "-1", // "x-powered-by": "Total.js", // "content-type": "application/json; charset=utf-8", // "date": "Mon, 21 Nov 2022 13:23:51 GMT", // "connection": "close", // "transfer-encoding": "chunked" // }, // "host": "192.168.252.2:8004" // } // flowdata.data // ~~~~~~~~ z cloudu { // data: '{"delays":[["13",0],["48",0],["50",0],["15",0],["52",0],["17",0],["56",0],["62",0],["64",0],["19",0]]}', // status: 200, // headers: { // 'cache-control': 'private, no-cache, no-store, max-age=0', // vary: 'Accept-Encoding, Last-Modified, User-Agent', // expires: '-1', // 'x-powered-by': 'Total.js', // 'content-type': 'application/json; charset=utf-8', // date: 'Tue, 29 Nov 2022 09:16:14 GMT', // connection: 'close', // 'transfer-encoding': 'chunked' // }, // host: '192.168.252.2:8004', // cookies: undefined // } // ~~~~~~~~ z cloudu { // data: `503: Service Unavailable
503
Service Unavailable
`, // status: 503, // headers: { // 'cache-control': 'private, no-cache, no-store, max-age=0', // vary: 'Accept-Encoding, Last-Modified, User-Agent', // expires: '-1', // 'x-powered-by': 'Total.js', // 'content-type': 'text/html; charset=utf-8', // date: 'Tue, 29 Nov 2022 09:17:19 GMT', // connection: 'close', // 'transfer-encoding': 'chunked' // }, // host: '192.168.252.2:8004', // cookies: undefined // } // { // "data": "{\"query\":{\"project_id\":\"30\"},\"body\":{\"departures\":[]},\"session\":null,\"user\":null,\"files\":[],\"headers\":{\"content-type\":\"application/json\",\"content-length\":\"17\",\"host\":\"192.168.252.2:8004\",\"connection\":\"close\"},\"url\":\"/getdepartures/\",\"params\":{},\"mobile\":false,\"robot\":false,\"referrer\":\"\"}", // "status": 200, // "headers": { // "cache-control": "private, no-cache, no-store, max-age=0", // "vary": "Accept-Encoding, Last-Modified, User-Agent", // "expires": "-1", // "x-powered-by": "Total.js", // "content-type": "application/json; charset=utf-8", // "date": "Tue, 29 Nov 2022 13:38:12 GMT", // "connection": "close", // "transfer-encoding": "chunked" // }, // "host": "192.168.252.2:8004" // } const odchody = [ [ '140', '3', '22:08', 'Stará ovčárna' ] ] */