y","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":69,"airbourne":21,"location":"Germany","phone":"+1-866-960-7915","url":"https:\/\/www.condor.com","wiki_url":"https:\/\/en.wikipedia.org\/wiki\/Condor_Flugdienst","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:28:49.000000Z","updated_at":"2023-06-28T11:05:43.000000Z"}},{"id":197598,"route_id":96361,"carrier":"DL","carrier_name":"Delta","lcc":0,"iata_from":"OLB","iata_to":"JFK","day1":"upcoming","day2":"upcoming","day3":"no","day4":"upcoming","day5":"no","day6":"upcoming","day7":"no","aircraft_codes":"767","first_flight":"2026-05-21","last_flight":"2026-10-15","class_first":0,"class_business":1,"class_economy":1,"common_duration":575,"min_duration":575,"max_duration":575,"is_new":1,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2025-10-15T10:55:15.000000Z","updated_at":"2025-10-27T11:48:34.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:34","flights_per_week":null,"flights_per_day":null,"airline":{"id":482,"callsign":"Delta","ICAO":"DAL","IATA":"DL","name":"Delta Air Lines","fs_id":"DL","shortname":"Delta","fullname":null,"country":"United States","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":2937,"airbourne":311,"location":"","phone":"+1-800-221-1212","url":"http:\/\/www.delta.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Delta_Air_Lines","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":1,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":1,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":"#ad1933","color2":"#003366","textcolor":"#fff","kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:28:53.000000Z","updated_at":"2018-01-16T12:28:51.000000Z"}},{"id":53080,"route_id":33893,"carrier":"U2","carrier_name":"easyJet","lcc":0,"iata_from":"OLB","iata_to":"AMS","day1":"upcoming","day2":"yes","day3":"no","day4":"no","day5":"upcoming","day6":"yes","day7":"upcoming","aircraft_codes":"32S","first_flight":null,"last_flight":"2026-09-19","class_first":0,"class_business":0,"class_economy":1,"common_duration":145,"min_duration":145,"max_duration":150,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:28.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":1300,"callsign":"EASY","ICAO":"EZY","IATA":"U2","name":"easyJet","fs_id":"U2","shortname":"easyJet","fullname":null,"country":"United Kingdom","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":933,"airbourne":96,"location":"United Kingdom","phone":"","url":"http:\/\/www.easyjet.com\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:34:48.000000Z","updated_at":"2023-06-28T11:05:50.000000Z"}},{"id":53161,"route_id":33947,"carrier":"WK","carrier_name":"Edelweiss","lcc":0,"iata_from":"OLB","iata_to":"ZRH","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"upcoming","day5":"upcoming","day6":"upcoming","day7":"upcoming","aircraft_codes":"32S","first_flight":"2025-10-17","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":90,"min_duration":80,"max_duration":95,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:31.000000Z","updated_at":"2025-10-27T11:48:35.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:35","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":520,"callsign":"EDELWEISS","ICAO":"EDW","IATA":"WK","name":"Edelweiss Air","fs_id":"EDW","shortname":"Edelweiss","fullname":null,"country":"Switzerland","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":25,"airbourne":8,"location":"","phone":"","url":"https:\/\/www.flyedelweiss.com","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":1,"is_skyteam":0,"is_allianceaffiliate":1,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:29:09.000000Z","updated_at":"2023-06-28T11:05:43.000000Z"}},{"id":53099,"route_id":33907,"carrier":"EW","carrier_name":"Eurowings","lcc":0,"iata_from":"OLB","iata_to":"CGN","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"upcoming","day5":"upcoming","day6":"upcoming","day7":"upcoming","aircraft_codes":"32S","first_flight":"2025-10-15","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":115,"min_duration":115,"max_duration":120,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:29.000000Z","updated_at":"2025-10-27T11:48:33.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:33","flights_per_week":6,"flights_per_day":"0-1 flights","airline":{"id":551,"callsign":"EUROWINGS","ICAO":"EWG","IATA":"EW","name":"Eurowings","fs_id":"EW","shortname":"Eurowings","fullname":null,"country":"Germany","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":221,"airbourne":29,"location":"D\u00fcsseldorf","phone":"+1-845-709-8332","url":"http:\/\/www.germanwings.com","wiki_url":"https:\/\/en.wikipedia.org\/wiki\/Eurowings","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:29:22.000000Z","updated_at":"2023-06-28T11:05:44.000000Z"}},{"id":165168,"route_id":85255,"carrier":"FZ","carrier_name":"flydubai","lcc":0,"iata_from":"OLB","iata_to":"DXB","day1":"no","day2":"upcoming","day3":"no","day4":"no","day5":"no","day6":"upcoming","day7":"no","aircraft_codes":"737","first_flight":"2026-06-06","last_flight":"2026-08-29","class_first":0,"class_business":1,"class_economy":1,"common_duration":370,"min_duration":370,"max_duration":370,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2023-06-15T09:46:39.000000Z","updated_at":"2025-10-27T11:48:34.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:34","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":613,"callsign":"SKYDUBAI","ICAO":"FDB","IATA":"FZ","name":"flydubai","fs_id":"FZ","shortname":"flydubai","fullname":null,"country":"United Arab Emirates","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":237,"airbourne":43,"location":"United Arab Emirates","phone":"","url":"https:\/\/www.flydubai.com\/en\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:29:48.000000Z","updated_at":"2023-06-28T11:05:44.000000Z"}},{"id":53125,"route_id":33925,"carrier":"IB","carrier_name":"Iberia","lcc":0,"iata_from":"OLB","iata_to":"MAD","day1":"no","day2":"upcoming","day3":"upcoming","day4":"upcoming","day5":"no","day6":"upcoming","day7":"upcoming","aircraft_codes":"32S","first_flight":"2026-06-03","last_flight":"2026-09-30","class_first":0,"class_business":0,"class_economy":1,"common_duration":135,"min_duration":135,"max_duration":135,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:30.000000Z","updated_at":"2025-10-27T11:48:34.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:34","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":711,"callsign":"IBERIA","ICAO":"IBE","IATA":"IB","name":"Iberia","fs_id":"IB","shortname":"Iberia","fullname":null,"country":"Spain","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":202,"airbourne":30,"location":"Espana","phone":"+1-800-772-4642","url":"http:\/\/www.iberia.com\/us\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":1,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":"#d41e2c","color2":"#f8c209","textcolor":"#fff","kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:30:32.000000Z","updated_at":"2023-06-28T11:05:45.000000Z"}},{"id":138170,"route_id":75751,"carrier":"LS","carrier_name":"Jet2","lcc":0,"iata_from":"OLB","iata_to":"BHX","day1":"no","day2":"no","day3":"upcoming","day4":"no","day5":"no","day6":"no","day7":"yes","aircraft_codes":"737","first_flight":null,"last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":150,"min_duration":150,"max_duration":155,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2021-12-17T13:06:24.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":1,"flights_per_day":"0-1 flights","airline":{"id":884,"callsign":"Channex","ICAO":"EXS","IATA":"LS","name":"Jet2","fs_id":"LS","shortname":"Jet2","fullname":null,"country":"United Kingdom","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":49,"airbourne":14,"location":"Leeds\/Bradford","phone":"","url":"http:\/\/www.jet2.com\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":1,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:31:46.000000Z","updated_at":"2018-01-16T12:37:17.000000Z"}},{"id":53108,"route_id":33913,"carrier":"LH","carrier_name":"Lufthansa","lcc":0,"iata_from":"OLB","iata_to":"FRA","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"yes","day5":"yes","day6":"upcoming","day7":"yes","aircraft_codes":"32S","first_flight":null,"last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":115,"min_duration":115,"max_duration":115,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:29.000000Z","updated_at":"2025-10-27T11:48:34.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:34","flights_per_week":3,"flights_per_day":"0-1 flights","airline":{"id":865,"callsign":"Lufthansa","ICAO":"DLH","IATA":"LH","name":"Lufthansa","fs_id":"LH","shortname":"Lufthansa","fullname":null,"country":"Germany","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":1045,"airbourne":112,"location":"Germany","phone":"+1-800-645-3880","url":"http:\/\/www.lufthansa.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Lufthansa","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":1,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":1,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":"#00235f","color2":"#fabf15","textcolor":"#fabf15","kayak_api_lastseen":null,"kayak_api_isactive":1,"created_at":"2018-01-03T06:31:39.000000Z","updated_at":"2018-01-16T12:36:51.000000Z"}},{"id":53122,"route_id":33923,"carrier":"LG","carrier_name":"Luxair","lcc":0,"iata_from":"OLB","iata_to":"LUX","day1":"no","day2":"no","day3":"upcoming","day4":"no","day5":"no","day6":"no","day7":"upcoming","aircraft_codes":"DH8, EMJ, 737","first_flight":"2026-05-03","last_flight":"2026-10-11","class_first":0,"class_business":0,"class_economy":1,"common_duration":115,"min_duration":115,"max_duration":130,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:30.000000Z","updated_at":"2025-10-27T11:48:34.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:34","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":863,"callsign":"LUXAIR","ICAO":"LGL","IATA":"LG","name":"Luxair","fs_id":"LG","shortname":"Luxair","fullname":null,"country":"Luxembourg","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":73,"airbourne":5,"location":"Luxembourg","phone":"","url":"https:\/\/www.luxair.lu\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:31:38.000000Z","updated_at":"2023-06-28T11:05:46.000000Z"}},{"id":195057,"route_id":33910,"carrier":"DI","carrier_name":"Marabu","lcc":0,"iata_from":"OLB","iata_to":"DUS","day1":"no","day2":"no","day3":"upcoming","day4":"upcoming","day5":"no","day6":"no","day7":"no","aircraft_codes":"32S","first_flight":"2026-05-06","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":120,"min_duration":120,"max_duration":120,"is_new":1,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2025-08-15T12:47:58.000000Z","updated_at":"2025-10-27T11:48:33.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:33","flights_per_week":null,"flights_per_day":null,"airline":{"id":477,"callsign":"MARABU","ICAO":"MBU","IATA":"DI","name":"Marabu Airlines","fs_id":"ZZV","shortname":"Marabu","fullname":null,"country":"Estonia","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":null,"airbourne":null,"location":null,"phone":null,"url":"https:\/\/flymarabu.com\/en","wiki_url":null,"is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:28:51.000000Z","updated_at":"2023-05-20T22:00:52.000000Z"}},{"id":53141,"route_id":33933,"carrier":"DY","carrier_name":"Norwegian","lcc":0,"iata_from":"OLB","iata_to":"OSL","day1":"no","day2":"no","day3":"upcoming","day4":"no","day5":"no","day6":"upcoming","day7":"no","aircraft_codes":"737","first_flight":"2026-06-20","last_flight":"2026-08-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":193,"min_duration":190,"max_duration":195,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:30.000000Z","updated_at":"2025-10-27T11:48:35.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:35","flights_per_week":1,"flights_per_day":"0-1 flights","airline":{"id":499,"callsign":"NORDIC","ICAO":"NOZ","IATA":"DY","name":"Norwegian Air Shuttle","fs_id":"DY","shortname":"Norwegian","fullname":null,"country":"Norway","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":306,"airbourne":26,"location":"","phone":"","url":"http:\/\/www.norwegian.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Norwegian_Air_Shuttle","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:29:00.000000Z","updated_at":"2023-06-28T11:05:43.000000Z"}},{"id":138168,"route_id":33894,"carrier":"D8","carrier_name":"Norwegian Air Sweden","lcc":0,"iata_from":"OLB","iata_to":"ARN","day1":"no","day2":"upcoming","day3":"no","day4":"no","day5":"no","day6":"upcoming","day7":"no","aircraft_codes":"737","first_flight":"2025-10-18","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":190,"min_duration":190,"max_duration":190,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2021-12-17T13:06:24.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":1,"flights_per_day":"0-1 flights","airline":{"id":459,"callsign":"REDNOSE","ICAO":"NSZ","IATA":"D8","name":"Norwegian Air Sweden","fs_id":"ZZV","shortname":"Norwegian Air Sweden","fullname":null,"country":"Sweden","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":212,"airbourne":36,"location":"Ireland","phone":"","url":"norwegian.com","wiki_url":"https:\/\/en.wikipedia.org\/wiki\/Norwegian_Air_International","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:28:45.000000Z","updated_at":"2023-02-23T12:12:01.000000Z"}},{"id":175250,"route_id":33896,"carrier":"FR","carrier_name":"Ryanair","lcc":0,"iata_from":"OLB","iata_to":"BGY","day1":"yes","day2":"upcoming","day3":"yes","day4":"upcoming","day5":"yes","day6":"yes","day7":"upcoming","aircraft_codes":"737","first_flight":null,"last_flight":"2026-10-15","class_first":0,"class_business":1,"class_economy":1,"common_duration":75,"min_duration":75,"max_duration":75,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2024-03-15T23:30:21.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":4,"flights_per_day":"0-1 flights","airline":{"id":600,"callsign":"RYANAIR","ICAO":"RYR","IATA":"FR","name":"Ryanair","fs_id":"FR","shortname":"Ryanair","fullname":null,"country":"Ireland","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":1671,"airbourne":164,"location":"Ireland","phone":"0871 246 0000","url":"http:\/\/www.ryanair.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Ryanair","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":"#2b4779","color2":"#f3c832","textcolor":"#fff","kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:29:42.000000Z","updated_at":"2023-06-28T11:05:44.000000Z"}},{"id":53101,"route_id":33908,"carrier":"SK","carrier_name":"SAS","lcc":0,"iata_from":"OLB","iata_to":"CPH","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"no","day5":"upcoming","day6":"upcoming","day7":"no","aircraft_codes":"32S","first_flight":"2026-03-28","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":160,"min_duration":160,"max_duration":160,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:29.000000Z","updated_at":"2025-10-27T11:48:33.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:33","flights_per_week":3,"flights_per_day":"0-1 flights","airline":{"id":1200,"callsign":"SCANDINAVIAN","ICAO":"SAS","IATA":"SK","name":"Scandinavian Airlines","fs_id":"ZZV","shortname":"SAS","fullname":null,"country":"Sweden","flag_carrier":"SE,DK,NO","languages_primary":null,"languages_secondary":null,"flights_last_24_hours":527,"airbourne":35,"location":"Sweden","phone":"+1-800-221-2350","url":"https:\/\/www.flysas.com\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":1,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":"#00009a","color2":null,"textcolor":"#ffffff","kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:34:03.000000Z","updated_at":"2023-05-06T22:00:53.000000Z"}},{"id":165166,"route_id":75753,"carrier":"BQ","carrier_name":"Sky Alps","lcc":0,"iata_from":"OLB","iata_to":"BZO","day1":"no","day2":"upcoming","day3":"upcoming","day4":"no","day5":"upcoming","day6":"upcoming","day7":"upcoming","aircraft_codes":"DH8","first_flight":"2026-05-16","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":95,"min_duration":90,"max_duration":95,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2023-06-15T09:46:39.000000Z","updated_at":"2025-10-27T11:48:33.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:33","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":365,"callsign":"SKYALPS","ICAO":"SWU","IATA":"BQ","name":"Sky Alps","fs_id":"BQ*","shortname":"Sky Alps","fullname":null,"country":"Italy","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":null,"airbourne":null,"location":null,"phone":null,"url":"skyalps.com","wiki_url":null,"is_scheduled_passenger":0,"is_nonscheduled_passenger":1,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:28:09.000000Z","updated_at":"2023-06-28T11:05:42.000000Z"}},{"id":53144,"route_id":33935,"carrier":"QS","carrier_name":"SmartWings","lcc":0,"iata_from":"OLB","iata_to":"PRG","day1":"no","day2":"no","day3":"upcoming","day4":"no","day5":"no","day6":"upcoming","day7":"upcoming","aircraft_codes":"220","first_flight":"2025-10-15","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":125,"min_duration":125,"max_duration":125,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:30.000000Z","updated_at":"2025-10-27T11:48:35.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:35","flights_per_week":3,"flights_per_day":"0-1 flights","airline":{"id":1108,"callsign":"Skytravel","ICAO":"TVS","IATA":"QS","name":"SmartWings","fs_id":"QS","shortname":"SmartWings","fullname":null,"country":"Czech Republic","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":9,"airbourne":4,"location":"","phone":"","url":"https:\/\/www.smartwings.com\/en\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:33:23.000000Z","updated_at":"2018-01-16T12:42:20.000000Z"}},{"id":53111,"route_id":33915,"carrier":"LX","carrier_name":"SWISS","lcc":0,"iata_from":"OLB","iata_to":"GVA","day1":"no","day2":"no","day3":"upcoming","day4":"no","day5":"no","day6":"upcoming","day7":"no","aircraft_codes":"220","first_flight":"2026-06-27","last_flight":"2026-08-29","class_first":0,"class_business":0,"class_economy":1,"common_duration":90,"min_duration":90,"max_duration":90,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:29.000000Z","updated_at":"2025-10-27T11:48:34.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:34","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":889,"callsign":"SWISS","ICAO":"SWR","IATA":"LX","name":"SWISS","fs_id":"LX","shortname":"SWISS","fullname":null,"country":"Switzerland","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":259,"airbourne":31,"location":"Suisse","phone":"+1-877-359-7947","url":"https:\/\/www.swiss.com","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":1,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":"#e60104","color2":null,"textcolor":"#fff","kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:31:49.000000Z","updated_at":"2023-06-28T11:05:46.000000Z"}},{"id":53079,"route_id":33893,"carrier":"HV","carrier_name":"Transavia","lcc":0,"iata_from":"OLB","iata_to":"AMS","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"upcoming","day5":"upcoming","day6":"upcoming","day7":"upcoming","aircraft_codes":"32S, 737","first_flight":"2025-10-15","last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":145,"min_duration":140,"max_duration":150,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:28.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":5,"flights_per_day":"0-1 flights","airline":{"id":700,"callsign":"TRANSAVIA","ICAO":"TRA","IATA":"HV","name":"Transavia","fs_id":"HV","shortname":"Transavia","fullname":null,"country":"Netherlands","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":70,"airbourne":8,"location":"Netherlands","phone":"","url":"http:\/\/transavia.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Transavia","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:30:26.000000Z","updated_at":"2023-06-28T11:05:45.000000Z"}},{"id":53139,"route_id":33932,"carrier":"TO","carrier_name":"Transavia France","lcc":0,"iata_from":"OLB","iata_to":"ORY","day1":"yes","day2":"no","day3":"no","day4":"upcoming","day5":"yes","day6":"upcoming","day7":"yes","aircraft_codes":"737, 32S","first_flight":null,"last_flight":"2026-10-15","class_first":0,"class_business":0,"class_economy":1,"common_duration":120,"min_duration":120,"max_duration":120,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:30.000000Z","updated_at":"2025-10-27T11:48:35.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:35","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":1275,"callsign":"FRANCE SOLEIL","ICAO":"TVF","IATA":"TO","name":"Transavia France","fs_id":"TO","shortname":"Transavia France","fullname":null,"country":"France","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":49,"airbourne":4,"location":"","phone":"","url":"https:\/\/www.transavia.com\/en-UK\/home\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:34:36.000000Z","updated_at":"2023-06-28T11:05:50.000000Z"}},{"id":115579,"route_id":67530,"carrier":"V7","carrier_name":"Volotea","lcc":0,"iata_from":"OLB","iata_to":"AOI","day1":"no","day2":"upcoming","day3":"no","day4":"no","day5":"upcoming","day6":"upcoming","day7":"no","aircraft_codes":"32S","first_flight":"2026-05-30","last_flight":"2026-10-10","class_first":0,"class_business":0,"class_economy":1,"common_duration":70,"min_duration":65,"max_duration":70,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2019-12-16T12:35:00.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":1,"flights_per_day":"0-1 flights","airline":{"id":1340,"callsign":"VOLOTEA","ICAO":"VOE","IATA":"V7","name":"Volotea","fs_id":"VOE","shortname":"Volotea","fullname":null,"country":"Spain","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":15,"airbourne":0,"location":"","phone":"","url":"http:\/\/www.volotea.com\/en\/","wiki_url":"","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:35:07.000000Z","updated_at":"2023-06-28T11:05:51.000000Z"}},{"id":53083,"route_id":33895,"carrier":"VY","carrier_name":"Vueling","lcc":0,"iata_from":"OLB","iata_to":"BCN","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"upcoming","day5":"upcoming","day6":"upcoming","day7":"upcoming","aircraft_codes":"32S","first_flight":"2026-06-15","last_flight":"2026-09-13","class_first":0,"class_business":0,"class_economy":1,"common_duration":90,"min_duration":85,"max_duration":95,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2017-12-20T10:14:28.000000Z","updated_at":"2025-10-27T11:48:32.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:32","flights_per_week":7,"flights_per_day":"1 flight","airline":{"id":1377,"callsign":"VUELING","ICAO":"VLG","IATA":"VY","name":"Vueling","fs_id":"VY","shortname":"Vueling","fullname":null,"country":"Spain","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":386,"airbourne":22,"location":"Spain","phone":"","url":"http:\/\/www.vueling.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Vueling","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:35:26.000000Z","updated_at":"2023-06-28T11:05:51.000000Z"}},{"id":146856,"route_id":71981,"carrier":"W6","carrier_name":"Wizz Air","lcc":0,"iata_from":"OLB","iata_to":"WAW","day1":"no","day2":"upcoming","day3":"no","day4":"upcoming","day5":"no","day6":"no","day7":"upcoming","aircraft_codes":"32S","first_flight":"2026-06-07","last_flight":"2026-09-17","class_first":0,"class_business":0,"class_economy":1,"common_duration":150,"min_duration":150,"max_duration":150,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2022-05-03T06:04:33.000000Z","updated_at":"2025-10-27T11:48:35.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:35","flights_per_week":2,"flights_per_day":"0-1 flights","airline":{"id":1381,"callsign":"WIZZ AIR","ICAO":"WZZ","IATA":"W6","name":"Wizz Air","fs_id":"W6","shortname":"Wizz Air","fullname":null,"country":"Hungary","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":362,"airbourne":58,"location":"Hungary","phone":"","url":"https:\/\/wizzair.com\/","wiki_url":"http:\/\/en.wikipedia.org\/wiki\/Wizz_Air","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":1,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:35:29.000000Z","updated_at":"2023-06-28T11:05:51.000000Z"}},{"id":165167,"route_id":78934,"carrier":"W4","carrier_name":"Wizz Air Malta","lcc":0,"iata_from":"OLB","iata_to":"CIA","day1":"upcoming","day2":"upcoming","day3":"upcoming","day4":"upcoming","day5":"upcoming","day6":"upcoming","day7":"upcoming","aircraft_codes":"32S","first_flight":"2026-06-28","last_flight":"2026-09-05","class_first":0,"class_business":0,"class_economy":1,"common_duration":55,"min_duration":55,"max_duration":55,"is_new":0,"is_active":1,"is_layover":0,"passengers_per_day":0,"created_at":"2023-06-15T09:46:39.000000Z","updated_at":"2025-10-27T11:48:33.000000Z","deleted_at":null,"last_found":"2025-10-27 12:48:33","flights_per_week":7,"flights_per_day":"1 flight","airline":{"id":338,"callsign":"WIZZ MALTA","ICAO":"WMT","IATA":"W4","name":"Wizz Air Malta","fs_id":"W4","shortname":"Wizz Air Malta","fullname":null,"country":"Malta","flag_carrier":null,"languages_primary":null,"languages_secondary":null,"flights_last_24_hours":null,"airbourne":null,"location":null,"phone":null,"url":"https:\/\/www.wizzair.com","wiki_url":"https:\/\/en.wikipedia.org\/wiki\/Wizz_Air_Malta","is_scheduled_passenger":1,"is_nonscheduled_passenger":0,"is_cargo":0,"is_railway":null,"is_lowcost":0,"active":1,"is_oneworld":0,"is_staralliance":0,"is_skyteam":0,"is_allianceaffiliate":0,"rating_iosapp":null,"rating_androidapp":null,"rating_skytrax_reviews":null,"rating_skytrax_stars":null,"rating_tripadvisor":null,"rating_trustpilot":null,"rating_flightradar24":null,"color1":null,"color2":null,"textcolor":null,"kayak_api_lastseen":null,"kayak_api_isactive":0,"created_at":"2018-01-03T06:26:32.000000Z","updated_at":"2023-06-28T11:05:51.000000Z"}}], airlinesToShow: 0, airlinesToShowCount: 5, countriesToShowCount: 5, days: {}, countries: [{"country":"Austria","country_code":"AT"},{"country":"Belgium","country_code":"BE"},{"country":"Czech Republic","country_code":"CZ"},{"country":"Denmark","country_code":"DK"},{"country":"France","country_code":"FR"},{"country":"Germany","country_code":"DE"},{"country":"Greece","country_code":"GR"},{"country":"Ireland","country_code":"IE"},{"country":"Italy","country_code":"IT"},{"country":"Latvia","country_code":"LV"},{"country":"Luxembourg","country_code":"LU"},{"country":"Netherlands","country_code":"NL"},{"country":"Norway","country_code":"NO"},{"country":"Poland","country_code":"PL"},{"country":"Spain","country_code":"ES"},{"country":"Sweden","country_code":"SE"},{"country":"Switzerland","country_code":"CH"},{"country":"USA","country_code":"US"},{"country":"United Arab Emirates","country_code":"AE"},{"country":"United Kingdom","country_code":"GB"}], countriesToShow: 0, sortBy: "Popularity", classes: {}, destinationCountrySorting: 'asc', priceSorting: '', mostFlightsSorting: 'desc', airportNameSorting: '', airportSorting: '', destinationTo: '', calendar: null, selectedDate: '', airportRequest: null, selectedFlight: null, showInfoBox: false, iframeUrl: '/content/cCompare?from=OLB&to=' + this.destinationTo + '}&width=300&height=600&preview=1', } }, mounted() { //console.log(this.$refs); /* this.$nextTick(() => { this.frameHeight = this.$refs.iframe.contentWindow.document.body.scrollHeight + 'px'; }); */ }, watch: { durationFrom() { this.updateFilter() }, lowcost() { if (this.lowcost === true) { delete this.classes['business'] this.businessOnly = 0 } this.configureLowcost() this.updateFilter() }, businessOnly() { if (this.businessOnly === true) { this.lowcost = 0 this.classes['business'] = true } else delete this.classes['business'] this.updateFilter() }, durationTo() { this.updateFilter() }, departureFrom() { this.updateFilter() }, departureTo() { this.updateFilter() }, arrivalFrom() { this.updateFilter() }, arrivalTo() { this.updateFilter() }, distanceFrom() { this.updateFilter() }, distanceTo() { this.updateFilter() }, priceFrom() { this.updateFilter() }, priceTo() { this.updateFilter() } }, methods: { setEntityType(entityType) { this.entityType = entityType; this.schedulesOffset = 50; if(entityType === 'destinations') { this.sortingType = 'most-flights'; this.mostFlightsSorting = 'desc' this.changeSorting('most-flights'); } else if( entityType === 'arrivals') { this.sortingType = 'arrival-time'; } else if( entityType === 'departures') { this.sortingType = 'departure-time'; } if(this.calendar) this.calendar.close(); this.calendar = null this.updateFilter(); }, showAllDestinations() { if (this.showAll) { this.isLoading = true; this.$nextTick(() => { this.destinations = this.allDestinations; this.isLoading = false; this.showAll = false; }); } }, openInfoBox(selectedFlight) { this.selectedFlight = selectedFlight; this.showInfoBox = true }, mapExplorerUrl() { const carrierString = Object.keys(this.carrier) .map(key => `${this.carrier[key]}`) .join(',') const aircraftsString = Object.keys(this.selectedaircrafts) .map(key => `${key}`) .join(',') const countryString = Object.keys(this.selectedCountries) .map(key => `${this.selectedCountries[key]}`) .join(',') let alliance = [] if (this.staralliance) alliance.push('SA') if (this.skyteam) alliance.push('ST') if (this.oneworld) alliance.push('OW') let url = 'explorer/' + this.from + '?mapview'; if (!!this.durationFrom) url += '&durationFrom=' + this.durationFrom if (!!this.durationTo) url += '&durationTo=' + this.durationTo if (!!this.departureFrom) url += '&timeFrom=' + this.timeToMinutes(this.departureFrom) if (!!this.departureTo) url += '&timeTo=' + this.timeToMinutes(this.departureTo) if(alliance.length > 0) url += '&alliance=' + alliance.join(',') if (!!this.lowcost) url += '&lowcost=1' if (!!carrierString) url += '&airlines=' + carrierString if (!!aircraftsString) url += '&aircrafts=' + this.selectedaircrafts if (!!countryString) url += '&countries=' + countryString //url += '&mapview'; return url }, closeAirlinePopup() { let popup = document.getElementById('ff-list-info'); popup.style.display = 'none'; let parent = document.getElementById('ff-li-active'); parent.style.backgroundColor = 'white'; }, initDatePlugin(from, to, label, firstFlight, lastFlight, days) { initDatePlugin(from, to, '', label, firstFlight, lastFlight, days); }, openAirlinePopup(event, from, to) { let popup = document.getElementById('ff-list-info'); let $target = event.currentTarget; var infoplace = document.getElementById('ff-list-info-inner'); let parent = $target.closest('.ff-li-list'); let parents = document.getElementsByClassName('ff-li-list'); popup.style.display = 'none'; for (var i = 0; i < parents.length; i++) { if (typeof parents[i].id != 'undefined') { parents[i].removeAttribute('id'); } } parent.setAttribute('id', 'ff-li-active'); that = this; // this.destinationTo = to; let boxheight = 140; infoplace.innerHTML = '
'; // Hämtar in data const xhttp = new XMLHttpRequest(); xhttp.onload = function () { if (this.responseText == 'Error') { infoplace.innerHTML = 'An error accored. Please try again'; } else { infoplace.innerHTML = this.responseText; } that.setPopupPosition(popup, $target, parent); } xhttp.open("GET", "/api/routepop/" + from + '/' + to + '', true); xhttp.send(); }, setPopupPosition(popup, target, parent) { popup.style.display = 'block'; popup.style.left = 'auto'; popup.style.right = '0px'; popup.style.width = '70%'; popup.style.top = target.offsetTop - 20 + "px"; popup.style.height = 'auto'; let boxsize = popup.getBoundingClientRect(); popup.style.top = (parent.offsetTop - boxsize.height) - 50 + "px"; let screenwidth = screen.width; if (screenwidth < 641) { //if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){ popup.style.width = 'calc(100% - 40px)'; popup.style.left = '0px'; popup.style.right = '0px'; popup.style.top = '0px'; popup.style.bottom = '0px'; popup.style.position = 'fixed'; popup.style.overflowY = 'auto'; popup.style.zIndex = '999'; popup.style.paddingTop = '40px'; // Mobile, sätt fullbredd. } else { // Istället för att scrolla, lägger vi boxen under istället om den inte får plats uppåt if (!isInViewport(popup)) { popup.style.top = parent.offsetTop + 60 + 'px'; //popup.scrollIntoView({behavior: "smooth", block: "start", inline: "nearest"}); } } }, /* Aircrafts filtering */ deleteAircrafts() { this.selectedaircrafts = []; this.updateFilter() }, moreAircrafts() { this.aircraftsToShow = this.activeaircrafts; }, changeAircraftCode(code) { name = ''; this.aircrafts.forEach(aircraft => { if (code == aircraft.IATA) { name = aircraft.name; } }); return name; }, setAircraft(code) { if (!this.selectedaircrafts.includes(code)) { this.selectedaircrafts.push(code); } else { this.selectedaircrafts.splice(this.selectedaircrafts.indexOf(code), 1); } this.updateFilter(); }, /* /Aircrafts filtering */ isInViewport(element) { const rect = element.getBoundingClientRect(); return ( rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth) ); }, getframeheightFirst(iframe, thisframe) { this.$nextTick(() => { var frame = document.getElementById('ad-compare-header'); var adcontainer = document.getElementById('container-ad-compare-1'); adcontainer.style.display = 'block'; var ad = document.getElementById('ad-compare-1'); var iheight = this.$refs.rightiframe.contentWindow.document.body.scrollHeight; ad.style.height = iheight + "px"; frame.style.height = iheight + "px"; adcontainer.style.height = iheight + "px"; }); /* if( iframe.contentWindow !== null ) { var ad = document.getElementById('container-ad-compare-1'); ad.style.display = 'block'; } */ }, getframeheight(iframe) { this.$nextTick(() => { var frame = document.getElementById('ad-compare-header-2'); var adcontainer = document.getElementById('container-ad-compare-2'); adcontainer.style.display = 'block'; var ad = document.getElementById('ad-compare-2'); var iheight = this.$refs.rightiframe.contentWindow.document.body.scrollHeight; adcontainer.style.height = iheight + "px"; ad.style.height = iheight + "px"; frame.style.height = iheight + "px"; }); /* if( iframe.contentWindow !== null ) { var ad = document.getElementById('container-ad-compare-2'); ad.style.display = 'block'; } */ }, dayName(number) { if (number === 'day1') return 'Monday ' if (number === 'day2') return 'Tuesday' if (number === 'day3') return 'Wednesday' if (number === 'day4') return 'Thursday' if (number === 'day5') return 'Friday' if (number === 'day6') return 'Saturday' if (number === 'day7') return 'Sunday' }, clearDeparture() { this.departureTo = 0 this.departureFrom = 0 departure.noUiSlider.updateOptions({ range: { min: this.filters.timeofday.min_time, max: this.filters.timeofday.max_time }, start: [this.filters.timeofday.min_time, this.filters.timeofday.max_time] }) mobdeparture.noUiSlider.updateOptions({ range: { min: this.filters.timeofday.min_time, max: this.filters.timeofday.max_time }, start: [this.filters.timeofday.min_time, this.filters.timeofday.max_time] }) }, clearArrival() { this.arrivalTo = 0 this.arrivalFrom = 0 arrival.noUiSlider.updateOptions({ range: { min: this.filters.arrival.min_time, max: this.filters.arrival.max_time }, start: [this.filters.arrival.min_time, this.filters.arrival.max_time] }) mobarrival.noUiSlider.updateOptions({ range: { min: this.filters.arrival.min_time, max: this.filters.arrival.max_time }, start: [this.filters.arrival.min_time, this.filters.arrival.max_time] }) }, clearPrice() { this.priceTo = 0 this.priceFrom = 0 mobpriceslider.noUiSlider.updateOptions({ range: { min: 0, max: 620 }, start: [0, 620] }) }, clearDistance() { this.distanceFrom = 0 this.distanceTo = 0 mobdistance.noUiSlider.updateOptions({ range: { min: 0, max: 963 }, start: [0, 963] }) }, clearDuration() { this.durationFrom = 0 this.durationTo = 0 timeslider.noUiSlider.updateOptions({ range: { min: this.filters.duration.min_duration, max: this.filters.duration.max_duration }, start: [this.filters.duration.min_duration, this.filters.duration.max_duration] }) mobtimeslider.noUiSlider.updateOptions({ range: { min: this.filters.duration.min_duration, max: this.filters.duration.max_duration }, start: [this.filters.duration.min_duration, this.filters.duration.max_duration] }) }, resetAll() { location.href = '/' + this.from + '?entityType=' + this.entityType + 'state=1'; }, clearDays() { this.days = {} this.updateFilter() }, clearCountries() { this.selectedCountries = {} this.updateFilter() }, clearAirlines() { this.carrier = {} this.lowcost = 0 this.updateFilter() }, minutesToTime(time, withoutLetters = false) { let hours = Math.floor(time / 60) let minutes = time % 60 if (withoutLetters) { if (minutes < 10) minutes = '0' + minutes; return hours + ':' + minutes } return hours + "h " + minutes + "m" }, moment: function (date) { return moment(date); }, changeDurationSorting() { this.showAllDestinations(); if (this.durationSorting === 'asc') { this.durationSorting = 'desc' this.destinations.sort((a, b) => (parseInt(a.common_duration) < parseInt(b.common_duration)) ? 1 : -1) if(this.entityType === 'departures' || this.entityType === 'arrivals') this.schedules.sort((a, b) => (parseInt(a.elapsed_time) < parseInt(b.elapsed_time) ? 1 : -1)); } else { this.durationSorting = 'asc' this.destinations.sort((a, b) => (parseInt(a.common_duration) > parseInt(b.common_duration)) ? 1 : -1) if(this.entityType === 'departures' || this.entityType === 'arrivals') this.schedules.sort((a, b) => (parseInt(a.elapsed_time) > parseInt(b.elapsed_time) ? 1 : -1)); } this.sortBy = 'Duration' }, changePriceSorting() { this.showAllDestinations(); if (this.priceSorting === 'asc') { this.priceSorting = 'desc' this.destinations.sort((a, b) => (parseInt(a.price) < parseInt(b.price)) ? 1 : -1) } else { this.priceSorting = 'asc' this.destinations.sort((a, b) => (parseInt(a.price) > parseInt(b.price)) ? 1 : -1) } this.sortBy = 'Price' }, changeDestinationSorting() { this.showAllDestinations(); if (this.destinationSorting === 'asc') { this.destinationSorting = 'desc' this.destinations.sort((a, b) => (a.airport.city_name_en < b.airport.city_name_en) ? 1 : -1) if(this.entityType === 'departures') { this.schedules.sort((a, b) => (a.airport.city_name_en < b.airport.city_name_en ? 1 : -1)); } else if(this.entityType === 'arrivals') { this.schedules.sort((a, b) => (a.departure_airport.city_name_en < b.departure_airport.city_name_en) ? 1 : -1); } } else { this.destinationSorting = 'asc' this.destinations.sort((a, b) => (a.airport.city_name_en > b.airport.city_name_en) ? 1 : -1) if(this.entityType === 'departures') { this.schedules.sort((a, b) => (a.airport.city_name_en > b.airport.city_name_en ? 1 : -1)); } else if(this.entityType === 'arrivals') { this.schedules.sort((a, b) => (a.departure_airport.city_name_en > b.departure_airport.city_name_en ? 1 : -1)); } } this.sortBy = 'City name' }, changeAirportNameSorting() { this.showAllDestinations(); if (this.airportNameSorting === 'asc') { this.airportNameSorting = 'desc' this.sortingDirection = 'desc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (a.airport.name < b.airport.name) ? 1 : -1) if(this.entityType === 'departures') { this.schedules.sort((a, b) => (a.airport.name < b.airport.name ? 1 : -1)); } else if(this.entityType === 'arrivals') { this.schedules.sort((a, b) => (a.departure_airport.name < b.departure_airport.name) ? 1 : -1); } } } else { this.airportNameSorting = 'asc' this.sortingDirection = 'asc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (a.airport.name > b.airport.name) ? 1 : -1) if(this.entityType === 'departures') { this.schedules.sort((a, b) => (a.airport.name > b.airport.name ? 1 : -1)); } else if(this.entityType === 'arrivals') { this.schedules.sort((a, b) => (a.departure_airport.name > b.departure_airport.name) ? 1 : -1); } } } this.sortBy = 'Airport name' }, changeDestinationCountrySorting() { this.showAllDestinations(); if (this.destinationCountrySorting === 'asc') { this.destinationCountrySorting = 'desc' this.sortingDirection = 'desc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (a.airport.country < b.airport.country) ? 1 : -1) if(this.entityType === 'departures') { this.schedules.sort((a, b) => (a.airport.country < b.airport.country ? 1 : -1)); } else if(this.entityType === 'arrivals') { this.schedules.sort((a, b) => (a.departure_airport.country < b.departure_airport.country) ? 1 : -1); } } } else { this.destinationCountrySorting = 'asc' this.sortingDirection = 'asc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (a.airport.country > b.airport.country) ? 1 : -1) if (this.entityType === 'departures') { this.schedules.sort((a, b) => (a.airport.country > b.airport.country ? 1 : -1)); } else if (this.entityType === 'arrivals') { this.schedules.sort((a, b) => (a.departure_airport.country > b.departure_airport.country) ? 1 : -1); } } } this.sortBy = 'Country' }, changeArrivalTimeSorting() { this.schedules.sort((a, b) => (a.arrival_time > b.arrival_time ? 1 : -1)); }, changeDepartureTimeSorting() { this.schedules.sort((a, b) => (a.departure_time > b.departure_time ? 1 : -1)); }, changeSorting(type) { this.showAllDestinations(); this.sortingType = type if (type === 'most-flights') { if (this.mostFlightsSorting !== 'asc') { this.mostFlightsSorting = 'asc' this.sortingDirection = 'asc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (a.flights_per_wek < b.flights_per_wek) ? 1 : -1) } } else { this.mostFlightsSorting = 'desc' this.sortingDirection = 'desc' this.destinations.sort((a, b) => (a.flights_per_wek > b.flights_per_wek) ? 1 : -1) } this.sortBy = 'Popularity' } if(type === 'departure-time') { this.sortingDirection = 'asc' this.sortBy = 'Departure time' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else this.changeDepartureTimeSorting(); } if(type === 'arrival-time') { this.sortingDirection = 'asc' this.sortBy = 'Arrival time' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else this.changeArrivalTimeSorting(); } if (type === 'name') { this.changeAirportNameSorting() } if (type === 'country') { this.changeDestinationCountrySorting() } if (type === 'price') { this.changePriceSorting() } if (type === 'flight-low') { if (this.sortBy !== 'Flight time (Low-High)') { this.sortingDirection = 'asc' this.sortBy = 'Flight time (Low-High)' this.sortingDirection = 'desc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (parseInt(a.common_duration) > parseInt(b.common_duration)) ? 1 : -1) } // if(this.entityType === 'departures' || this.entityType === 'arrivals') this.schedules.sort((a, b) => (parseInt(a.elapsed_time) > parseInt(b.elapsed_time) ? 1 : -1)); } } if (type === 'flight-high') { if (this.sortBy !== 'Flight time (High-Low)') { this.sortingDirection = 'desc' this.sortBy = 'Flight time (High-Low)' this.sortingDirection = 'asc' if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (parseInt(a.common_duration) < parseInt(b.common_duration)) ? 1 : -1) } // if(this.entityType === 'departures' || this.entityType === 'arrivals') this.schedules.sort((a, b) => (parseInt(a.elapsed_time) < parseInt(b.elapsed_time) ? 1 : -1)); } } if (type === 'biggest') { this.changeBiggestSorting() } if (type === 'recent') { this.changeRecentSorting() } }, changeRecentSorting() { // Temporarily set to something different to force reactivity this.sortBy = ''; // Use Vue's nextTick to ensure the DOM has updated before changing back this.$nextTick(() => { this.sortBy = 'Recently added'; this.sortDirection = 'desc'; if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { // Create a stable sort by first making a copy of the array with indexes const indexedArray = this.destinations.map((item, index) => ({item, index})); // Sort the indexed array indexedArray.sort((a, b) => { const itemA = a.item; const itemB = b.item; const getHighestId = (dest) => { if (!dest.airlineroutes || dest.airlineroutes.length === 0) { return 0; } return dest.airlineroutes.reduce((highestId, route) => { const routeId = parseInt(route.id) || 0; return routeId > highestId ? routeId : highestId; }, 0); }; const aHighestId = getHighestId(itemA); const bHighestId = getHighestId(itemB); if (aHighestId !== bHighestId) { return bHighestId - aHighestId; // Descending order (higher ID first) } return a.index - b.index; }); // Assign the sorted array back to destinations to trigger reactivity this.destinations = [...indexedArray.map(indexed => indexed.item)]; this.schedules.sort((a, b) => (a.id < b.id) ? 1 : -1) } }); }, changeBiggestSorting() { if (this.airportSorting === 'asc') { this.airportSorting = 'desc' this.sortingDirection = 'asc'; if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (parseInt(a.airport.no_routes) > parseInt(b.airport.no_routes)) ? 1 : -1) } } else { this.airportSorting = 'asc' this.sortingDirection = 'desc'; if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.updateFilter(false); } else { this.destinations.sort((a, b) => (parseInt(a.airport.no_routes) < parseInt(b.airport.no_routes)) ? 1 : -1) } } this.sortBy = 'Airport size' }, updateDurationFrom(value) { this.durationFrom = value.target.value }, updateDurationTo(value) { this.durationTo = value.target.value }, updatePriceFrom(value) { this.priceFrom = value.target.value }, updatePriceTo(value) { this.priceTo = value.target.value }, updateDepartureFrom(value) { this.departureFrom = value.target.value }, updateDepartureTo(value) { this.departureTo = value.target.value }, updateArrivalFrom(value) { this.arrivalFrom = value.target.value }, updateArrivalTo(value) { this.arrivalTo = value.target.value }, updateDistanceFrom(value) { this.distanceFrom = value.target.value }, updateDistanceTo(value) { this.distanceTo = value.target.value }, moreAirlines() { this.airlinesToShowCount += 10 this.airlinesToShow = this.airlines.slice(0, this.airlinesToShowCount) }, moreCountries() { this.countriesToShowCount += 10 this.countriesToShow = this.countries.slice(0, this.countriesToShowCount) }, setDays(day) { if (this.days['day' + day]) delete this.days['day' + day] else this.days['day' + day] = true this.updateFilter() }, clearFilters() { location.reload() }, setClass(className) { if (this.classes[className]) delete this.classes[className] else this.classes[className] = true this.updateFilter() }, isAllianceSet(alliance) { let is = true let isAlliance = false if (alliance === 'staralliance') { this.airlines.forEach(airline => { if (parseInt(airline.SA) === 1 || (airline.airline && parseInt(airline.airline.is_staralliance) == 1)) { if (!this.carrier[airline.carrier]) { is = false return false } isAlliance = true } }) if (is) this.staralliance = 1 } if (alliance === 'oneworld') { this.airlines.forEach(airline => { if (parseInt(airline.OW) === 1 || (airline.airline && parseInt(airline.airline.is_oneworld) == 1)) { if (!this.carrier[airline.carrier]) { is = false return false } isAlliance = true } }) if (is) this.oneworld = 1 } if (alliance === 'skyteam') { this.airlines.forEach(airline => { if (parseInt(airline.ST) === 1 || (airline.airline && parseInt(airline.airline.is_skyteam) == 1)) { if (!this.carrier[airline.carrier]) { is = false return false } isAlliance = true } }) if (is) this.skyteam = 1 } if (is && isAlliance) return true }, configureLowcost() { if (!!this.lowcost) { this.airlines.forEach(airline => { if ((airline.airline && parseInt(airline.airline.is_lowcost) === 1) || parseInt(airline.LOWCOST) === 1) { if (!this.carrier[airline.carrier]) { this.carrier[airline.carrier] = airline.carrier } } }) } else { this.airlines.forEach(airline => { if (this.carrier[airline.carrier]) { delete this.carrier[airline.carrier] } }) } }, checkAlliance(alliance) { if (alliance === 'staralliance') { this.staralliance = !this.staralliance ? 1 : 0 if (this.staralliance === 1) { //console.log(this.airlines) this.airlines.forEach(airline => { if (parseInt(airline.SA) === 1 || (!!airline.airline && parseInt(airline.airline.is_staralliance) === 1)) { if (!this.carrier[airline.carrier]) { this.carrier[airline.carrier] = airline.carrier } } }) } else { this.airlines.forEach(airline => { if (parseInt(airline.SA) === 1 || (!!airline.airline && parseInt(airline.airline.is_staralliance) === 1)) { if (this.carrier[airline.carrier]) { delete this.carrier[airline.carrier] } } }) } } if (alliance === 'oneworld') { this.oneworld = !this.oneworld ? 1 : 0 if (this.oneworld === 1) { this.airlines.forEach(airline => { if (parseInt(airline.OW) === 1 || (!!airline.airline && parseInt(airline.airline.is_oneworld) === 1)) { if (!this.carrier[airline.carrier]) { this.carrier[airline.carrier] = airline.carrier } } }) } else { this.airlines.forEach(airline => { if (parseInt(airline.OW) === 1 || (!!airline.airline && parseInt(airline.airline.is_oneworld) === 1)) { if (this.carrier[airline.carrier]) { delete this.carrier[airline.carrier] } } }) } } if (alliance === 'skyteam') { this.skyteam = !this.skyteam ? 1 : 0 if (this.skyteam === 1) { this.airlines.forEach(airline => { if (parseInt(airline.ST) === 1 || (!!airline.airline && parseInt(airline.airline.is_skyteam) === 1)) { if (!this.carrier[airline.carrier]) { this.carrier[airline.carrier] = airline.carrier } } }) } else { this.airlines.forEach(airline => { if (parseInt(airline.ST) === 1 || (!!airline.airline && parseInt(airline.airline.is_skyteam) === 1)) { if (this.carrier[airline.carrier]) { delete this.carrier[airline.carrier] } } }) } } this.updateFilter() }, setAirlines(index, iata) { if (!!this.carrier[index]) delete this.carrier[index] else { this.carrier[index] = iata } this.updateFilter() }, setCountries(countryCode) { if (!!this.selectedCountries[countryCode]) delete this.selectedCountries[countryCode] else { this.selectedCountries[countryCode] = countryCode } this.updateFilter() }, timeToMinutes(time) { if (time) { const timeArr = time.split(':'); // split it at the colons return (+timeArr[0]) * 60 + (+timeArr[1]); } else return '' }, convertMin(minutes) { var num = minutes; var hours = (num / 60); var rhours = Math.floor(hours); var minutes = (hours - rhours) * 60; var rminutes = Math.round(minutes); if (rminutes == '0' || rminutes == 0) { return rhours + ":0" + rminutes; } else { return rhours + ":" + rminutes; } }, reloadAds() { if (this.refreshAds) { if (window.googletag && googletag.pubadsReady) { setTimeout(() => { googletag.pubads().refresh() }, "50"); } this.refreshAds = false setTimeout(() => { this.refreshAds = true }, "250"); } }, computeGridRangeForMonth(targetMonth, todayStr) { // 1) Если targetMonth пустой — берём текущий год/месяц из todayStr let year, monthIndex; const [y, m, d] = todayStr.split('-').map(Number); const today = new Date(y, m - 1, d, 0,0,0,0); if (targetMonth) { [year, monthIndex] = targetMonth.split('-').map((v,i) => i===0 ? Number(v) : Number(v)-1); } else { year = today.getFullYear(); monthIndex = today.getMonth(); } // 2) Начало 6-недельной сетки const firstOfMonth = new Date(year, monthIndex, 1); const startGrid = new Date(year, monthIndex, 1 - firstOfMonth.getDay()); // 3) Конец 6-недельной сетки: +41 день const endGrid = new Date(startGrid); endGrid.setDate(startGrid.getDate() + 41); // 4) dateFrom: если current month — от today, иначе от startGrid const isCurrent = !targetMonth || ( today.getFullYear() === year && today.getMonth() === monthIndex ); const fromDate = isCurrent ? today : startGrid; // 5) Локальное форматирование const fmt = D => { const Y = D.getFullYear(); const M = String(D.getMonth()+1).padStart(2,'0'); const DD = String(D.getDate()).padStart(2,'0'); return `${Y}-${M}-${DD}`; }; return { dateFrom: fmt(fromDate), dateTo: fmt(endGrid) }; }, handleMonthChange(selectedDates, dateStr, instance) { const year = instance.currentYear; const month = instance.currentMonth + 1; // 1–12 this.selectedMonth = `${year}-${String(month).padStart(2,'0')}`; const data = this.collectFilters(); let queryString = Object.keys(data).map(key => key + '=' + data[key]).join('&'); document.querySelector('.flatpickr-innerContainer').style.opacity = '0.3'; document.getElementById('calendar-loading').style.display = 'block'; axios.get('api/schedulelist/' + this.from + '?' + queryString) .then((res) => { this.updateDatepicker(res); document.getElementById('calendar-loading').style.display = 'none'; document.querySelector('.flatpickr-innerContainer').style.opacity = '1'; }) }, updateDatepicker(res, type) { let _this = this; if(this.entityType === 'departures' || this.entityType === 'arrivals') { // this.$nextTick(() => { let scheduleDays; if(type === 'updateFilter') { scheduleDays = res.data.response.schedule.sheduledays; } else { scheduleDays = res.data.response.sheduledays; } const allowed = scheduleDays.filter(d => d.count > 0).map(d => { const year = '20' + d.year; const month = d.monthnum.padStart(2, '0'); const day = String(d.date).padStart(2, '0'); return `${year}-${month}-${day}`; }); console.log("Test") if(!this.calendar) { this.calendar = flatpickr(document.getElementById('calendar-date'), { dateFormat: "Y-m-d", enable: allowed, clickOpens: true, closeOnSelect: true, onMonthChange: _this.handleMonthChange, defaultDate: this.selectedDate || (new Date()).toISOString().slice(0,10), onYearChange: _this.handleMonthChange, onChange(selectedDates, dateStr) { _this.selectedDate = dateStr; _this.updateFilter(); } }); document.addEventListener('click', function (e) { const calendarContainer = document.querySelector('.flatpickr-calendar'); const calendarInput = document.getElementById('calendar-date'); if ( _this.calendar && calendarContainer && !calendarContainer.contains(e.target) && !calendarInput.contains(e.target) ) { _this.calendar.close(); } }); let calendarLoading = document.createElement('div'); calendarLoading.id = 'calendar-loading'; calendarLoading.style.position = 'absolute'; calendarLoading.style.top = '50%'; calendarLoading.style.display = 'none'; calendarLoading.style.left = '50%'; calendarLoading.style.transform = 'translate(-50%, -50%)'; calendarLoading.innerHTML = ` `; document.querySelector('.flatpickr-calendar').append(calendarLoading); } else { this.calendar.set('enable', allowed); this.calendar.redraw(); } // }) } }, collectFilters() { let alliance = [] if (this.staralliance) alliance.push('SA') if (this.skyteam) alliance.push('ST') if (this.oneworld) alliance.push('OW') const carrierString = Object.keys(this.carrier) .map(key => `${this.carrier[key]}`) .join(',') const countryString = Object.keys(this.selectedCountries) .map(key => `${this.selectedCountries[key]}`) .join(',') const daysString = Object.keys(this.days) .map(key => `${key}`) .join(',') const classesString = Object.keys(this.classes) .map(key => `${key}`) .join(',') const aircraftsString = Object.keys(this.selectedaircrafts) .map(key => `${key}`) .join(',') let data = {} if (!!this.durationFrom) data.durationFrom = this.durationFrom if (!!this.durationTo) data.durationTo = this.durationTo if (!!this.priceFrom) data.priceFrom = this.priceFrom if (!!this.priceTo) data.priceTo = this.priceTo if (!!this.departureFrom) data.timeFrom = this.timeToMinutes(this.departureFrom) if (!!this.departureTo) data.timeTo = this.timeToMinutes(this.departureTo) if (!!this.arrivalFrom) data.arrivalFrom = this.timeToMinutes(this.arrivalFrom) if (!!this.arrivalTo) data.arrivalTo = this.timeToMinutes(this.arrivalTo) if (!!this.lowcost) data.lowcost = 1 if (!!this.businessOnly) data.business_only = 1 if (!!this.from) data.from = this.from if (!!carrierString) data.airlines = carrierString if (!!daysString) data.days = daysString if (!!classesString) data.classes = classesString if (!!countryString) data.countries = countryString if (!!this.distanceFrom) data.distanceFrom = this.distanceFrom if (!!this.distanceTo) data.distanceTo = this.distanceTo // Aircrafts if (!!aircraftsString) data.aircrafts = this.selectedaircrafts data.entityType = this.entityType data.take = this.schedulesOffset; data.selectedDate = this.selectedDate ?? null data.dateMethod = 'month'; data.sorting = this.sortingType console.log(this.sortingDirection) data.sortingDirection = this.sortingDirection if(!this.selectedMonth) { const todayStr = (new Date()).toISOString().slice(0,10); const { dateFrom, dateTo } = this.computeGridRangeForMonth(null, todayStr); data.dateFrom = dateFrom; data.dateTo = dateTo; } else { const todayStr = (new Date()).toISOString().slice(0,10); const { dateFrom, dateTo } = this.computeGridRangeForMonth(this.selectedMonth, todayStr); data.dateFrom = dateFrom; data.dateTo = dateTo; } return data }, showMoreSchedules() { this.schedulesOffset += 50; this.updateFilter(); }, updateFilter(sortAfter = true) { if (!this.isInit) return false const data = this.collectFilters(); let queryString = Object.keys(data).map(key => key + '=' + data[key]).join('&'); this.isLoading = true if (queryString === 'from=' + this.from) this.showAll = true else this.showAll = false if (this.airportRequest) { this.airportRequest.cancel('canceled by new request') } // создаём новый источник отмены this.airportRequest = axios.CancelToken.source() axios.get('/api/airport/' + this.from + '?' + queryString + '&rand=' + Math.random(), { cancelToken: this.airportRequest.token }).then((res) => { this.isLoading = false if (res.data.response) { console.log('updated filter'); this.destinations = Object.values(res.data.response.routes) if(this.entityType === 'departures' || this.entityType === 'arrivals') { this.schedules = res.data.response.schedule.result this.schedulesCount = res.data.response.schedule.total this.updateDatepicker(res, 'updateFilter'); this.date = res.data.response.schedule.firstdate } this.airlines = res.data.response.filters.airlines.result this.countries = res.data.response.filters.countries.result this.airlines.sort((a, b) => (Object.values(this.carrier).includes(a.carrier)) ? -1 : 1) this.countries.sort((a, b) => (Object.values(this.selectedCountries).includes(a.country_code)) ? -1 : 1) this.airlinesToShow = this.airlines.slice(0, this.airlinesToShowCount) this.countriesToShow = this.countries.slice(0, this.countriesToShowCount) this.destCount = Object.values(this.destinations).length window.history.pushState({}, "", this.from + '?' + queryString + '&state=1') this.filters = res.data.response.filters if (parseInt(this.durationFrom) > 0 || parseInt(this.durationTo) > 0) { timeslider.noUiSlider.updateOptions({ range: { min: res.data.response.filters.duration.min_duration, max: res.data.response.filters.duration.max_duration }, start: [this.durationFrom, this.durationTo] }) mobtimeslider.noUiSlider.updateOptions({ range: { min: res.data.response.filters.duration.min_duration, max: res.data.response.filters.duration.max_duration }, start: [this.durationFrom, this.durationTo] }) } if (parseInt(this.distanceFrom) > 0 || parseInt(this.distanceTo) > 0) { mobdistance.noUiSlider.updateOptions({ range: { min: res.data.response.filters.distance.min_distance, max: res.data.response.filters.distance.max_distance }, start: [this.distanceFrom, this.distanceTo] }) } if (parseInt(this.departureFrom) > 0 || parseInt(this.departureTo) > 0) { departure.noUiSlider.updateOptions({ range: { min: res.data.response.filters.timeofday.min_time, max: res.data.response.filters.timeofday.max_time }, start: [this.timeToMinutes(this.departureFrom), this.timeToMinutes(this.departureTo)] }) mobdeparture.noUiSlider.updateOptions({ range: { min: res.data.response.filters.timeofday.min_time, max: res.data.response.filters.timeofday.max_time }, start: [this.timeToMinutes(this.departureFrom), this.timeToMinutes(this.departureTo)] }) } if (parseInt(this.arrivalFrom) > 0 || parseInt(this.arrivalTo) > 0) { mobarrival.noUiSlider.updateOptions({ range: { min: res.data.response.filters.arrival.min_time, max: res.data.response.filters.arrival.max_time }, start: [this.timeToMinutes(this.arrivalFrom), this.timeToMinutes(this.arrivalTo)] }) mobarrival.noUiSlider.updateOptions({ range: { min: res.data.response.filters.arrival.min_time, max: res.data.response.filters.arrival.max_time }, start: [this.timeToMinutes(this.arrivalFrom), this.timeToMinutes(this.arrivalTo)] }) } if (parseInt(this.priceFrom) > 0 || parseInt(this.priceTo) > 0) { mobpriceslider.noUiSlider.updateOptions({ range: { min: 0, max: 620 }, start: [this.priceFrom, this.priceTo] }) } // Aircrafts let ac = res.data.response.filters.aircrafts.result; let acs = []; for (let i = 0; i < ac.length; i++) { acs.push(ac[i].filterValue); } this.activeaircrafts = acs; this.aircraftsToShow = acs; if(sortAfter) this.changeSorting(this.sortingType) // console.log(Object.keys(this.carrier).length) if (Object.keys(this.carrier).length == 0 && this.lowcost) this.destinations = [] } }).catch((error) => { if (axios.isCancel(error)) { console.log('Request canceled', error.message); } else { console.error('Error fetching data:', error); } }); } } }).mount('#vue-app')
Copyright 2018- - Airtickets.Click
Direct flight tickets from Olbia Costa Smeralda Airport (OLB) - airtickets.click

All scheduled Direct flight tickets from Olbia (OLB)

Olbia Costa Smeralda Airport (OLB) is a smaller airport in Italy. You can fly to 74 destinations with 32 airlines in scheduled passenger traffic.

OLB
> VIEW LARGER MAP
Duration: -
Departure: -
Low-cost only
Business only

Filter routes & destinations

By using our smart filters you can find flights and destinations matching your requirements.

FLIGHT DURATION
Duration: -
DEPARTURE TIME
Departure: -
ARRIVAL TIME
Arrival: -
FLIGHT DISTANCE
Distance: -
SPECIFIC WEEKDAYS
SU
MO
TU
WE
TH
FR
SA
ALLIANCES
Star alliance
One World
Sky Team
AIRLINES
{{ airline.carrier_name }}
Show more
DESTINATION COUNTRY
{{ country.country }}
Show more
CLASSES
Economy
Business
First
AIRCRAFT TYPE
{{ changeAircraftCode(code) }}
Show more
Found {{ destCount }} routes with direct flights from Olbia
Found {{ schedulesCount }} flight departures from Olbia
Found {{ schedulesCount }} flight arrivals to Olbia
{{ date }} Select date
{{ selectedFlight.selected_date }}
{{ selectedFlight.departure_time }} - {{ selectedFlight.arrival_time.slice(0,-3) }}
{{ selectedFlight.airline.shortname }}, {{ selectedFlight.carrier }}{{ selectedFlight.flightnumber }}
Distance
{{ selectedFlight.flight_distance_mi }} miles, {{ selectedFlight.flight_distance_km }} km
Flight time
{{ minutesToTime(selectedFlight.elapsed_time) }}
Departure terminal
{{ selectedFlight.departure_terminal }}
Arrival terminal
{{ selectedFlight.arrival_terminal }}
Aircraft
{{ selectedFlight.aircraft.name }}
Seats
{{ selectedFlight.seats_total }}
Codeshare
{{ selectedFlight.codeshare_info }}
Entertainment
Meals
Meal (none specific)
CHECK AVAILABILITY
{{ airlines.find(airline => airline.carrier == Object.keys(carrier)[0] ).carrier_name }} AIRLINES: {{ Object.keys(carrier).length }} SELECTED
{{ countries.find(country => country.country_code == Object.keys(selectedCountries)[0] ).country }} COUNTRIES: {{ Object.keys(selectedCountries).length }} SELECTED
{{ dayName(Object.keys(days)[0]) }} DAYS: {{ Object.keys(days).length }} SELECTED
DEPARTURE: {{ departureFrom }} to {{ departureTo }}
ARRIVAL: {{ arrivalFrom }} to {{ arrivalTo }}
DURATION: {{ convertMin(durationFrom) }} to {{ convertMin(durationTo) }}
DISTANCE: {{ distanceFrom }} to {{ distanceTo }} miles
ESTIMATED PRICE: {{ priceFrom }} to {{ priceTo }}
BUSINESS CLASS
FIRST CLASS
{{selectedaircrafts.length}} AIRCRAFTS
RESET FILTERS
Loading destinations Loading departures Loading arrivals
Your search did not find any routes/destinations. You can try clear all filters.
Show all destinations
Your search did not find any departures. You can try clear all filters.

Olbia (OLB), Italy

Olbia Costa Smeralda Airport (OLB) is a smaller airport in Italy. You can fly to 74 destinations with 32 airlines in scheduled passenger traffic.

Recently added routes (in the last 3 months)

Destinations & flights

The route with the most departures is the route to Rome (FCO) with an average of 25 flights from Olbia Costa Smeralda Airport every week which is 29% of all weekly departures. The top international destinations from here are Paris (ORY) and Munich (MUC).

Popular airlines

AeroItalia is the largest airline here by counting the number of departures with around 36 scheduled take-offs every week. The second largest operator from Olbia Costa Smeralda Airport is Volotea. The aircraft types with most scheduled flights are the Boeing 737 and the Airbus A31X/32X.

Longest flight

The route with the longest flighttime from Olbia (OLB) is to New York (JFK) and takes about 9h 35min with a Boeing 767-300 (winglets) Passenger

Most popular destinations from Olbia (OLB)

Based on number of scheduled departures next month.

Biggest airlines from Olbia (OLB)

Based on number of scheduled departures next month